From eed9d2ea5deebfb59b96039df7455419c52cd2df Mon Sep 17 00:00:00 2001 From: Lesserkuma Date: Fri, 25 Sep 2020 11:47:20 +0200 Subject: [PATCH] =?UTF-8?q?v0.7=CE=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/FlashGBX_Ubuntu.png | Bin 0 -> 67858 bytes .github/FlashGBX_Windows.png | Bin 0 -> 17443 bytes README.md | 140 +++ src/DataTransfer.py | 42 + src/FlashGBX.py | 1248 ++++++++++++++++++++++ src/RomFileAGB.py | 71 ++ src/RomFileDMG.py | 93 ++ src/config/db_AGB.json | 1 + src/config/fc_AGB_256L30B.txt | 77 ++ src/config/fc_AGB_Flash2Advance.txt | 74 ++ src/config/fc_AGB_M36L0R705.txt | 68 ++ src/config/fc_AGB_MSP55LV128.txt | 67 ++ src/config/fc_AGB_MSP55LV128M.txt | 69 ++ src/config/fc_AGB_Nintendo_E201850.txt | 62 ++ src/config/fc_AGB_Nintendo_E201868.txt | 57 + src/config/fc_DMG_29DL161TD-90.txt | 55 + src/config/fc_DMG_29DL32TF-70.txt | 53 + src/config/fc_DMG_36VF3204.txt | 53 + src/config/fc_DMG_AM29F016.txt | 53 + src/config/fc_DMG_AM29LV160MB.txt | 53 + src/config/fc_DMG_Doctor_GB_Card_64M.txt | 43 + src/config/fc_DMG_GB_Smart_32M.txt | 43 + src/config/fc_DMG_HY29LV160TT.txt | 53 + src/config/fc_DMG_M29W160EB.txt | 53 + src/config/fc_DMG_M29W640.txt | 53 + src/config/fc_DMG_MX29LV320ABTC.txt | 53 + src/config/fc_DMG_MX29LV320BTC.txt | 53 + src/config/fc_DMG_S29GL032.txt | 55 + src/config/fc_DMG_iG_1MB.txt | 53 + src/config/fc_DMG_iG_2MB.txt | 55 + src/config/fc_DMG_iG_32KB.txt | 53 + src/config/fc_DMG_iG_4MB.txt | 53 + src/config/fc_DMG_iG_4MB_MBC3_RTC.txt | 53 + src/config/fc_DMG_iG_512KB.txt | 53 + src/hw_GBxCartRW.py | 1234 +++++++++++++++++++++ src/res/icon.ico | Bin 0 -> 129959 bytes src/res/icon.png | Bin 0 -> 19286 bytes 37 files changed, 4296 insertions(+) create mode 100644 .github/FlashGBX_Ubuntu.png create mode 100644 .github/FlashGBX_Windows.png create mode 100644 README.md create mode 100644 src/DataTransfer.py create mode 100644 src/FlashGBX.py create mode 100644 src/RomFileAGB.py create mode 100644 src/RomFileDMG.py create mode 100644 src/config/db_AGB.json create mode 100644 src/config/fc_AGB_256L30B.txt create mode 100644 src/config/fc_AGB_Flash2Advance.txt create mode 100644 src/config/fc_AGB_M36L0R705.txt create mode 100644 src/config/fc_AGB_MSP55LV128.txt create mode 100644 src/config/fc_AGB_MSP55LV128M.txt create mode 100644 src/config/fc_AGB_Nintendo_E201850.txt create mode 100644 src/config/fc_AGB_Nintendo_E201868.txt create mode 100644 src/config/fc_DMG_29DL161TD-90.txt create mode 100644 src/config/fc_DMG_29DL32TF-70.txt create mode 100644 src/config/fc_DMG_36VF3204.txt create mode 100644 src/config/fc_DMG_AM29F016.txt create mode 100644 src/config/fc_DMG_AM29LV160MB.txt create mode 100644 src/config/fc_DMG_Doctor_GB_Card_64M.txt create mode 100644 src/config/fc_DMG_GB_Smart_32M.txt create mode 100644 src/config/fc_DMG_HY29LV160TT.txt create mode 100644 src/config/fc_DMG_M29W160EB.txt create mode 100644 src/config/fc_DMG_M29W640.txt create mode 100644 src/config/fc_DMG_MX29LV320ABTC.txt create mode 100644 src/config/fc_DMG_MX29LV320BTC.txt create mode 100644 src/config/fc_DMG_S29GL032.txt create mode 100644 src/config/fc_DMG_iG_1MB.txt create mode 100644 src/config/fc_DMG_iG_2MB.txt create mode 100644 src/config/fc_DMG_iG_32KB.txt create mode 100644 src/config/fc_DMG_iG_4MB.txt create mode 100644 src/config/fc_DMG_iG_4MB_MBC3_RTC.txt create mode 100644 src/config/fc_DMG_iG_512KB.txt create mode 100644 src/hw_GBxCartRW.py create mode 100644 src/res/icon.ico create mode 100644 src/res/icon.png diff --git a/.github/FlashGBX_Ubuntu.png b/.github/FlashGBX_Ubuntu.png new file mode 100644 index 0000000000000000000000000000000000000000..b77d35a4a0e84d5c255e894da735e9213538757a GIT binary patch literal 67858 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 HUw{4|=bi;R literal 0 HcmV?d00001 diff --git a/.github/FlashGBX_Windows.png b/.github/FlashGBX_Windows.png new file mode 100644 index 0000000000000000000000000000000000000000..f9bbf43ef3e43edc4c04420f33b10c5d1d650ebe GIT binary patch literal 17443 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 +Screenshot + +## Introduction + +### Software features + +- Backup and restore save data from Game Boy and Game Boy Advance game cartridges +- Backup ROM data from Game Boy and Game Boy Advance game cartridges +- Flash new ROMs to a wide variety of Game Boy and Game Boy Advance flash cartridges +- Many flash cartridges can be auto-detected +- A Flash ID check can be performed for unsupported flash cartridges + +### Confirmed working reader/writer hardware + +- [insideGadgets GBxCart RW v1.3 and v1.3 Pro](https://www.gbxcart.com/) with firmware versions from R17 up to R19 (other hardware revisions and firmware versions may also work, but are untested) + +### Currently supported flash cartridges + +- Game Boy + + - insideGadgets 32 KB *(thanks AlexiG)* + - insideGadgets 512 KB *(thanks AlexiG)* + - insideGadgets 1 MB, 128 KB SRAM *(thanks AlexiG)* + - insideGadgets 2 MB, 128 KB SRAM/32 KB FRAM *(thanks AlexiG)* + - insideGadgets 4 MB, 128 KB SRAM/FRAM *(thanks AlexiG)* + - insideGadgets 4 MB, 32 KB FRAM, MBC3+RTC *(thanks AlexiG)* + - BUNG Doctor GB Card 64M + - GB Smart 32M + +- Game Boy Advance + + - Flash2Advance 256M (non-ultra variant) + - Nintendo AGB Cartridge 128M Flash S, E201850 + - Nintendo AGB Cartridge 256M Flash S, E201868 + +### Currently supported bootleg cartridges + +- Game Boy + + - DIY cart with AM29F016/AM29F016B *(thanks RevZ)* + - ES29LV160_DRV with 29DL32TF-70 + - GB-M968 with M29W160EB *(thanks RevZ)* + - GB-M968 with MX29LV320ABTC + - S29GL032 (no PCB text) + - SD007_48BALL_64M with GL032M11BAIR4 *(thanks RevZ)* + - SD007_48BALL_64M with M29W640 + - SD007_48BALL_64M_V3 with 29DL161TD-90 + - SD007_48BALL_64M_V5 with 36VF3204 + - SD007_48BALL_64M_V6 with 29DL163BD-90 *(thanks LovelyA72)* + - SD007_BV5_V2 with HY29LV160TT *(thanks RevZ)* + - SD007_BV5_V2 with MX29LV320BTC *(thanks RevZ)* + - SD007_BV5_V3 with AM29LV160MB *(thanks RevZ)* + +- Game Boy Advance + + - 28F256L03B-DRV with 256L30B + - 4455_4400_4000_4350_36L0R_V3 with M36L0R705 + - AGB-E05-01 with MSP55LV128M + - AGB-SD-E05 with MSP55LV128 *(thanks RevZ)* + - BX2006_0106_NEW with S29GL128N10TFI01 *(thanks litlemoran)* + +Many different bootleg cartridges share their command set, so even if yours is not on this list, it may still work fine or even be detected as another one. Support for more cartridges can also be added by creating external config files that include the necessary flash chip commands. + +## DISCLAIMER + +This software is provided as-is and the developer is not responsible for any damage that is caused by the use of it. Use at your own risk! + +## System Requirements and Setup Instructions + +Requires [Python 3.8+](https://www.python.org/downloads/) with [PySide2](https://pypi.org/project/PySide2/) and [pyserial](https://pypi.org/project/pyserial/) packages. If these are available for your Operating System, it should be compatible. + +Developed and tested using the *insideGadgets GBxCart RW v1.3 Pro* hardware device on Windows 10. Also confirmed working on most Debian-based Linux distributions including Ubuntu. + +### Windows + +There are multiple options to run this application on Windows: + +* You can install the app with the Setup program. This will add the app to the start menu and optionally create a desktop icon. +* Or, you can extract the Portable package and run the precompiled `FlashGBX.exe` file (created with *PyInstaller*) which includes the Python interpreter, required packages and libraries. +* Or, you can install Python and run the app directly from source code: + 1. Install [Python 3.8+](https://www.python.org/downloads/) + 2. Open a Command Prompt window and install PySide2 and pyserial like so:
`pip install PySide2 pyserial` + 3. Run `FlashGBX.py` + +### Linux + +#### Manual setup procedure tested on Ubuntu 20.04.1 LTS + +1. Update the package list:
`sudo apt update` +2. Install Python3, pip for Python 3 and the XCB library package (required by PySide2/Qt5):
`sudo apt install python3 python3-pip libxcb-xinerama0`
If it says “Package 'python3-pip' has no installation candidate”, you may need to run this command first and then try again:
`sudo add-apt-repository universe` +3. Install PySide2 and pyserial using pip:
`sudo pip3 install PySide2 pyserial` +4. At this point you could run the app with `sudo` privileges, but to avoid that you will need access permissions for your cart reader/writer hardware. Here are some ways to do that: + * Add yourself to the *dialout* usergroup and then reboot the system:
`sudo adduser $USER dialout`
`sudo reboot` + * Or, add permanent user permissions to your device. (No reboot required.) + 1. Create a udev rules file:
`sudoedit /etc/udev/rules.d/50-ttyusb.rules` + 2. Add the following line to this file (GBxCart RW uses Vendor ID *1a86* and Product ID *7523*):
`KERNEL=="ttyUSB[0-9]*",ATTRS{idVendor}=="1a86",ATTRS{idProduct}=="7523",MODE="0666"` + 3. Reload your udev configuration:
`sudo udevadm control --reload` + 4. Connect your cart reader/writer to a USB port. (If it was already connected, unplug and reconnect it.) +6. Run the app:
`python3 FlashGBX.py` + +#### Automated install script for Debian-based distributions + +A third-party install script contributed by *RevZ* for your convenience is also available. This is not maintained by me, but this should take care of installing all the prerequisites and copy everything to a subdirectory in your home directory. It also adds a shortcut to your desktop. + +After extracting all FlashGBX files into a temporary directory, get the installer [here](https://pastebin.com/fDsYh1Eb), place it into the same directory, adjust permissions (`chmod +x installer.sh`) and run it (`./installer.sh`). After the install is complete you may still have to reboot, and right click the Desktop icon to “Allow Launching”. + +## Contributions + +The author would like to thank the following kind people for their help and contributions: + +- AlexiG (GBxCart RW hardware, bug reports, flash chip info) +- RevZ (install script for Linux, testing, bug reports, flash chip info) +- AndehX (app icon) +- LovelyA72 (flash chip info) +- litlemoran (flash chip info) + +## Changes + +### v0.7β + +- First started tracking changes +- Added a way to launch the flash cartridge type auto-detection process from the type list +- Added support for SD007_48BALL_64M_V6 with 29DL163BD-90 *(thanks LovelyA72)* +- Confirmed support for BX2006_0106_NEW with S29GL128N10TFI01 (same as AGB-E05-01 with MSP55LV128M) *(thanks litlemoran)* +- Fixed config file for 4455_4400_4000_4350_36L0R_V3 with M36L0R705 (sector size map was incomplete) +- Renamed some labels of flash cartridge types +- Made config files UTF-8 compatible +- File open and save dialogs will now remember the last used directory for ROM files and save data files respectively (stored in config.ini in AppData/Roaming), clearable with the `--resetconfig` switch +- Added CRC32 checksum comparison for Game Boy Advance games by using a database based on header SHA1 hashes +- Fixed a bug with save data restore and improved save data backup speed +- Fixed a few status message errors +- Added a warning when changing platforms +- Made some messages suppressible (stored in config.ini) +- Added detection of ungraceful device disconnects when starting a new task, with optional automatic reconnect +- First public beta release diff --git a/src/DataTransfer.py b/src/DataTransfer.py new file mode 100644 index 0000000..0aee9d1 --- /dev/null +++ b/src/DataTransfer.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# UTF-8 +import sys +from PySide2.QtCore import QThread, Signal + +class DataTransfer(QThread): + CONFIG = None + RUNNING = False + + updateProgress = Signal(object, int, int, float, float, float) + + def __init__(self, config=None): + QThread.__init__(self) + self.CONFIG = config + + def isRunning(self): + return self.RUNNING + + def run(self): + try: + if self.CONFIG == None: + pass + elif self.CONFIG['mode'] == 1: + self.RUNNING = True + self.CONFIG['port']._TransferData(1, self.updateProgress, [ self.CONFIG['path'], self.CONFIG['mbc'], self.CONFIG['rom_banks'], self.CONFIG['agb_rom_size'] ]) + self.RUNNING = False + elif self.CONFIG['mode'] == 2: + self.RUNNING = True + self.CONFIG['port']._TransferData(2, self.updateProgress, [ self.CONFIG['path'], self.CONFIG['mbc'], self.CONFIG['save_type'] ]) + self.RUNNING = False + elif self.CONFIG['mode'] == 3: + self.RUNNING = True + self.CONFIG['port']._TransferData(3, self.updateProgress, [ self.CONFIG['path'], self.CONFIG['mbc'], self.CONFIG['save_type'] ]) + self.RUNNING = False + elif self.CONFIG['mode'] == 4: + self.RUNNING = True + self.CONFIG['port']._TransferData(4, self.updateProgress, [ self.CONFIG['path'], self.CONFIG['cart_type'] ]) + self.RUNNING = False + + except Exception as e: + self.updateProgress.emit({"action":"ABORT", "info_type":"msgbox_critical", "info_msg":"An error has occured!\nPlease try to reconnect the hardware and restart the application.\n\n" + str(e), "abortable":False}, 0, 0, 0, 0, 0) + self.RUNNING = False diff --git a/src/FlashGBX.py b/src/FlashGBX.py new file mode 100644 index 0000000..29edb85 --- /dev/null +++ b/src/FlashGBX.py @@ -0,0 +1,1248 @@ +# -*- coding: utf-8 -*- +# UTF-8 +import sys, threading, os, glob, importlib, time, re, json, platform +from PySide2 import QtCore +from PySide2.QtCore import Qt, QSettings, QStandardPaths +from PySide2.QtWidgets import * +from PySide2.QtGui import QIcon, QGuiApplication + +VERSION = "0.7β" +print("FlashGBX v" + VERSION + " by Lesserkuma") +print("\nDISCLAIMER: This software is provided as-is and the developer is not responsible for any damage that is caused by the use of it. Use at your own risk!\n") + +class FlashGBX(QWidget): + AGB_Header_ROM_Sizes = [ "4 MB", "8 MB", "16 MB", "32 MB" ] + AGB_Header_ROM_Sizes_Map = [ 0x400000, 0x800000, 0x1000000, 0x2000000 ] + AGB_Header_Save_Types = [ "None", "4K EEPROM (512 Bytes)", "64K EEPROM (8 KB)", "256K SRAM (32 KB)", "512K SRAM (64 KB)", "512K FLASH (64 KB)", "1M FLASH (128 KB)" ] + AGB_Global_CRC32 = 0 + + DMG_Header_Features = { 0x00:'ROM ONLY', 0x01:'MBC1', 0x02:'MBC1+RAM', 0x03:'MBC1+RAM+BATTERY', 0x05:'MBC2', 0x06:'MBC2+BATTERY', 0x08:'ROM+RAM', 0x09:'ROM+RAM+BATTERY', 0x0B:'MMM01', 0x0C:'MMM01+RAM', 0x0D:'MMM01+RAM+BATTERY', 0x0F:'MBC3+TIMER+BATTERY', 0x10:'MBC3+TIMER+RAM+BATTERY', 0x11:'MBC3', 0x12:'MBC3+RAM', 0x13:'MBC3+RAM+BATTERY', 0x15:'MBC4', 0x16:'MBC4+RAM', 0x17:'MBC4+RAM+BATTERY', 0x19:'MBC5', 0x1A:'MBC5+RAM', 0x1B:'MBC5+RAM+BATTERY', 0x1C:'MBC5+RUMBLE', 0x1D:'MBC5+RUMBLE+RAM', 0x1E:'MBC5+RUMBLE+RAM+BATTERY', 0x20:'MBC6', 0x22:'MBC7+RAM+BATTERY', 0x55:'Game Genie', 0x56:'Game Genie v3.0', 0xFC:'POCKET CAMERA', 0xFD:'BANDAI TAMA5', 0xFE:'HuC3', 0xFF:'HuC1+RAM+BATTERY' } + DMG_Header_Features_MBC = [ 0, 1, 1, 1, 2, 2, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 7, 0, 0, 0, 0, 0, 0 ] + DMG_Header_ROM_Sizes = [ "32 KB", "64 KB", "128 KB", "256 KB", "512 KB", "1 MB", "1.1 MB", "1.2 MB", "1.5 MB", "2 MB", "4 MB", "8 MB" ] + DMG_Header_ROM_Sizes_Map = [ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x52, 0x53, 0x54, 0x06, 0x07, 0x08 ] + DMG_Header_ROM_Sizes_Flasher_Map = [ 2, 4, 8, 16, 32, 64, 72, 80, 96, 128, 256, 512 ] # Number of ROM banks + DMG_Header_RAM_Sizes = [ "None", "4K SRAM (512 Bytes)", "16K SRAM (2 KB)", "64K SRAM (8 KB)", "256K SRAM (32 KB)", "512K SRAM (64 KB)", "1M SRAM (128 KB)" ] + DMG_Header_RAM_Sizes_Map = [ 0x00, 0x01, 0x01, 0x02, 0x03, 0x05, 0x04 ] + DMG_Header_RAM_Sizes_Flasher_Map = [ 0, 0x200, 0x800, 0x2000, 0x8000, 0x10000, 0x20000 ] # RAM size in bytes + DMG_Header_SGB = { 0x00:'No support', 0x03:'Supported' } + DMG_Header_CGB = { 0x00:'No support', 0x80:'Supported', 0xC0:'Required' } + + CONN = None + SETTINGS = None + DEVICES = {} + + def resource_path(self, relative_path): + """ Get absolute path to resource, works for dev and for PyInstaller """ + base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__))) + return os.path.join(base_path, relative_path) + + def __init__(self, argv): + QWidget.__init__(self) + self.setStyleSheet("QMessageBox { messagebox-text-interaction-flags: 5; }") + self.setWindowIcon(QIcon(self.resource_path("res/icon.ico"))) + self.setWindowTitle("FlashGBX v" + VERSION) + self.setWindowFlags(self.windowFlags() | Qt.MSWindowsFixedSizeDialogHint); + self.SETTINGS = QSettings(QStandardPaths.writableLocation(QStandardPaths.AppDataLocation) + "/config.ini", QSettings.IniFormat) + if "--resetconfig" in argv: self.SETTINGS.clear() + + # Create the QVBoxLayout that lays out the whole form + self.layout = QGridLayout() + self.layout.setSizeConstraint(QLayout.SetFixedSize) + self.layout_left = QVBoxLayout() + self.layout_right = QVBoxLayout() + self.layout.setContentsMargins(-1, 8, -1, 8) + + # Cartridge Information GroupBox + self.grpDMGCartridgeInfo = self.GuiCreateGroupBoxDMGCartInfo() + self.grpAGBCartridgeInfo = self.GuiCreateGroupBoxAGBCartInfo() + self.grpAGBCartridgeInfo.setVisible(False) + self.layout_left.addWidget(self.grpDMGCartridgeInfo) + self.layout_left.addWidget(self.grpAGBCartridgeInfo) + + # Actions + self.grpActions = QGroupBox("Options") + self.grpActionsLayout = QVBoxLayout() + self.grpActionsLayout.setContentsMargins(-1, 3, -1, -1) + + rowActionsMode = QHBoxLayout() + self.lblMode = QLabel("Mode: ") + rowActionsMode.addWidget(self.lblMode) + self.optDMG = QRadioButton("&Game Boy") + self.connect(self.optDMG, QtCore.SIGNAL("clicked()"), self.SetMode) + self.optAGB = QRadioButton("Game Boy &Advance") + self.connect(self.optAGB, QtCore.SIGNAL("clicked()"), self.SetMode) + rowActionsMode.addWidget(self.optDMG) + rowActionsMode.addWidget(self.optAGB) + + rowActionsGeneral1 = QHBoxLayout() + self.btnHeaderRefresh = QPushButton("&Read Information") + self.btnHeaderRefresh.setStyleSheet("min-height: 17px;") + self.connect(self.btnHeaderRefresh, QtCore.SIGNAL("clicked()"), self.ReadCartridge) + rowActionsGeneral1.addWidget(self.btnHeaderRefresh) + + rowActionsGeneral2 = QHBoxLayout() + self.btnBackupROM = QPushButton("&Backup ROM") + self.btnBackupROM.setStyleSheet("min-height: 17px;") + self.connect(self.btnBackupROM, QtCore.SIGNAL("clicked()"), self.BackupROM) + rowActionsGeneral2.addWidget(self.btnBackupROM) + self.btnFlashROM = QPushButton("&Flash ROM") + self.btnFlashROM.setStyleSheet("min-height: 17px;") + self.connect(self.btnFlashROM, QtCore.SIGNAL("clicked()"), self.FlashROM) + self.cmbDMGCartridgeTypeResult.currentIndexChanged.connect(self.CartridgeTypeChanged) + rowActionsGeneral2.addWidget(self.btnFlashROM) + + rowActionsGeneral3 = QHBoxLayout() + self.btnBackupRAM = QPushButton("Backup &Save Data") + self.btnBackupRAM.setStyleSheet("min-height: 17px;") + self.connect(self.btnBackupRAM, QtCore.SIGNAL("clicked()"), self.BackupRAM) + rowActionsGeneral3.addWidget(self.btnBackupRAM) + self.btnRestoreRAM = QPushButton("R&estore Save Data") + self.btnRestoreRAM.setStyleSheet("min-height: 17px;") + self.connect(self.btnRestoreRAM, QtCore.SIGNAL("clicked()"), self.RestoreRAM) + rowActionsGeneral3.addWidget(self.btnRestoreRAM) + + self.grpActionsLayout.setSpacing(4) + self.grpActionsLayout.addLayout(rowActionsMode) + self.grpActionsLayout.addLayout(rowActionsGeneral1) + self.grpActionsLayout.addLayout(rowActionsGeneral2) + self.grpActionsLayout.addLayout(rowActionsGeneral3) + self.grpActions.setLayout(self.grpActionsLayout) + + self.layout_right.addWidget(self.grpActions) + + # Transfer Status + grpStatus = QGroupBox("Transfer Status") + grpStatusLayout = QVBoxLayout() + grpStatusLayout.setContentsMargins(-1, 3, -1, -1) + + rowStatus1a = QHBoxLayout() + self.lblStatus1a = QLabel("Data transferred:") + rowStatus1a.addWidget(self.lblStatus1a) + self.lblStatus1aResult = QLabel("–") + rowStatus1a.addWidget(self.lblStatus1aResult) + grpStatusLayout.addLayout(rowStatus1a) + rowStatus2a = QHBoxLayout() + self.lblStatus2a = QLabel("Speed:") + rowStatus2a.addWidget(self.lblStatus2a) + self.lblStatus2aResult = QLabel("–") + rowStatus2a.addWidget(self.lblStatus2aResult) + grpStatusLayout.addLayout(rowStatus2a) + rowStatus3a = QHBoxLayout() + self.lblStatus3a = QLabel("Time elapsed:") + rowStatus3a.addWidget(self.lblStatus3a) + self.lblStatus3aResult = QLabel("–") + rowStatus3a.addWidget(self.lblStatus3aResult) + grpStatusLayout.addLayout(rowStatus3a) + rowStatus4a = QHBoxLayout() + self.lblStatus4a = QLabel("Ready.") + rowStatus4a.addWidget(self.lblStatus4a) + self.lblStatus4aResult = QLabel("") + rowStatus4a.addWidget(self.lblStatus4aResult) + grpStatusLayout.addLayout(rowStatus4a) + + rowStatus2 = QHBoxLayout() + self.prgStatus = QProgressBar() + self.prgStatus.setMinimum(0) + self.prgStatus.setMaximum(1) + self.prgStatus.setValue(0) + rowStatus2.addWidget(self.prgStatus) + self.btnCancel = QPushButton("&Abort") + self.btnCancel.setEnabled(False) + self.btnCancel.setStyleSheet("max-width: 50px;") + self.connect(self.btnCancel, QtCore.SIGNAL("clicked()"), self.AbortOperation) + rowStatus2.addWidget(self.btnCancel) + + grpStatusLayout.addLayout(rowStatus2) + grpStatus.setLayout(grpStatusLayout) + + self.layout_right.addWidget(grpStatus) + + self.layout.addLayout(self.layout_left, 0, 0) + self.layout.addLayout(self.layout_right, 0, 1) + + # List devices + self.layout_devices = QHBoxLayout() + self.lblDevice = QLabel() + self.cmbDevice = QComboBox() + self.layout_devices.addWidget(self.lblDevice) + self.layout_devices.addWidget(self.cmbDevice) + self.layout_devices.addStretch() + + self.btnScan = QPushButton("&Device Scan") + self.connect(self.btnScan, QtCore.SIGNAL("clicked()"), self.FindDevices) + self.btnConnect = QPushButton("&Connect") + self.connect(self.btnConnect, QtCore.SIGNAL("clicked()"), self.ConnectDevice) + self.layout_devices.addWidget(self.btnScan) + self.layout_devices.addWidget(self.btnConnect) + + self.layout.addLayout(self.layout_devices, 1, 0, 1, 0) + + # Disable widgets + self.optAGB.setEnabled(False) + self.optDMG.setEnabled(False) + self.btnHeaderRefresh.setEnabled(False) + self.btnBackupROM.setEnabled(False) + self.btnFlashROM.setEnabled(False) + self.btnBackupRAM.setEnabled(False) + self.btnRestoreRAM.setEnabled(False) + + # Scan for devices + self.FindDevices() + + # Set the VBox layout as the window's main layout + self.setLayout(self.layout) + + def GuiCreateGroupBoxDMGCartInfo(self): + self.grpDMGCartridgeInfo = QGroupBox("Game Boy Cartridge Information") + self.grpDMGCartridgeInfo.setMinimumWidth(280) + group_layout = QVBoxLayout() + group_layout.setContentsMargins(-1, 5, -1, -1) + + rowHeaderTitle = QHBoxLayout() + lblHeaderTitle = QLabel("Game Title/Code:") + lblHeaderTitle.setContentsMargins(0, 1, 0, 1) + rowHeaderTitle.addWidget(lblHeaderTitle) + self.lblHeaderTitleResult = QLabel("") + rowHeaderTitle.addWidget(self.lblHeaderTitleResult) + group_layout.addLayout(rowHeaderTitle) + + rowHeaderSGB = QHBoxLayout() + lblHeaderSGB = QLabel("Super Game Boy:") + lblHeaderSGB.setContentsMargins(0, 1, 0, 1) + rowHeaderSGB.addWidget(lblHeaderSGB) + self.lblHeaderSGBResult = QLabel("") + rowHeaderSGB.addWidget(self.lblHeaderSGBResult) + group_layout.addLayout(rowHeaderSGB) + + rowHeaderCGB = QHBoxLayout() + lblHeaderCGB = QLabel("Game Boy Color:") + lblHeaderCGB.setContentsMargins(0, 1, 0, 1) + rowHeaderCGB.addWidget(lblHeaderCGB) + self.lblHeaderCGBResult = QLabel("") + rowHeaderCGB.addWidget(self.lblHeaderCGBResult) + group_layout.addLayout(rowHeaderCGB) + + rowHeaderLogoValid = QHBoxLayout() + lblHeaderLogoValid = QLabel("Nintendo Logo:") + lblHeaderLogoValid.setContentsMargins(0, 1, 0, 1) + rowHeaderLogoValid.addWidget(lblHeaderLogoValid) + self.lblHeaderLogoValidResult = QLabel("") + rowHeaderLogoValid.addWidget(self.lblHeaderLogoValidResult) + group_layout.addLayout(rowHeaderLogoValid) + + rowHeaderChecksum = QHBoxLayout() + lblHeaderChecksum = QLabel("Header Checksum:") + lblHeaderChecksum.setContentsMargins(0, 1, 0, 1) + rowHeaderChecksum.addWidget(lblHeaderChecksum) + self.lblHeaderChecksumResult = QLabel("") + rowHeaderChecksum.addWidget(self.lblHeaderChecksumResult) + group_layout.addLayout(rowHeaderChecksum) + + rowHeaderROMChecksum = QHBoxLayout() + lblHeaderROMChecksum = QLabel("ROM Checksum:") + lblHeaderROMChecksum.setContentsMargins(0, 1, 0, 1) + rowHeaderROMChecksum.addWidget(lblHeaderROMChecksum) + self.lblHeaderROMChecksumResult = QLabel("") + rowHeaderROMChecksum.addWidget(self.lblHeaderROMChecksumResult) + group_layout.addLayout(rowHeaderROMChecksum) + + rowChipManufacturer = QHBoxLayout() + self.lblChipManufacturer = QLabel("Chip Manufacturer:") + self.lblChipManufacturer.setContentsMargins(0, 1, 0, 1) + rowChipManufacturer.addWidget(self.lblChipManufacturer) + self.lblChipManufacturerResult = QLabel("") + rowChipManufacturer.addWidget(self.lblChipManufacturerResult) + group_layout.addLayout(rowChipManufacturer) + self.lblChipManufacturer.setVisible(False) + self.lblChipManufacturerResult.setVisible(False) + + rowChipID = QHBoxLayout() + self.lblChipID = QLabel("Chip ID:") + self.lblChipID.setContentsMargins(0, 1, 0, 1) + rowChipID.addWidget(self.lblChipID) + self.lblChipIDResult = QLabel("") + rowChipID.addWidget(self.lblChipIDResult) + group_layout.addLayout(rowChipID) + self.lblChipID.setVisible(False) + self.lblChipIDResult.setVisible(False) + + rowHeaderROMSize = QHBoxLayout() + lblHeaderROMSize = QLabel("ROM Size:") + rowHeaderROMSize.addWidget(lblHeaderROMSize) + self.cmbHeaderROMSizeResult = QComboBox() + self.cmbHeaderROMSizeResult.setStyleSheet("combobox-popup: 0;"); + self.cmbHeaderROMSizeResult.view().setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) + self.cmbHeaderROMSizeResult.addItems(self.DMG_Header_ROM_Sizes) + self.cmbHeaderROMSizeResult.setCurrentIndex(self.cmbHeaderROMSizeResult.count() - 1) + rowHeaderROMSize.addWidget(self.cmbHeaderROMSizeResult) + group_layout.addLayout(rowHeaderROMSize) + + rowHeaderRAMSize = QHBoxLayout() + lblHeaderRAMSize = QLabel("Save Data Type:") + rowHeaderRAMSize.addWidget(lblHeaderRAMSize) + self.cmbHeaderRAMSizeResult = QComboBox() + self.cmbHeaderRAMSizeResult.setStyleSheet("combobox-popup: 0;"); + self.cmbHeaderRAMSizeResult.view().setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) + self.cmbHeaderRAMSizeResult.addItems(self.DMG_Header_RAM_Sizes) + self.cmbHeaderRAMSizeResult.setCurrentIndex(self.cmbHeaderRAMSizeResult.count() - 1) + rowHeaderRAMSize.addWidget(self.cmbHeaderRAMSizeResult) + group_layout.addLayout(rowHeaderRAMSize) + + rowHeaderFeatures = QHBoxLayout() + lblHeaderFeatures = QLabel("Features:") + rowHeaderFeatures.addWidget(lblHeaderFeatures) + self.cmbHeaderFeaturesResult = QComboBox() + self.cmbHeaderFeaturesResult.setStyleSheet("combobox-popup: 0;"); + self.cmbHeaderFeaturesResult.view().setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) + self.cmbHeaderFeaturesResult.addItems(self.DMG_Header_Features.values()) + rowHeaderFeatures.addWidget(self.cmbHeaderFeaturesResult) + group_layout.addLayout(rowHeaderFeatures) + + rowCartridgeType = QHBoxLayout() + lblCartridgeType = QLabel("Type:") + rowCartridgeType.addWidget(lblCartridgeType) + self.cmbDMGCartridgeTypeResult = QComboBox() + self.cmbDMGCartridgeTypeResult.setStyleSheet("max-width: 260px;") + self.cmbDMGCartridgeTypeResult.setStyleSheet("combobox-popup: 0;"); + self.cmbDMGCartridgeTypeResult.view().setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) + rowCartridgeType.addWidget(self.cmbDMGCartridgeTypeResult) + group_layout.addLayout(rowCartridgeType) + + self.grpDMGCartridgeInfo.setLayout(group_layout) + + return self.grpDMGCartridgeInfo + + def GuiCreateGroupBoxAGBCartInfo(self): + self.grpAGBCartridgeInfo = QGroupBox("Game Boy Advance Cartridge Information") + self.grpAGBCartridgeInfo.setMinimumWidth(280) + group_layout = QVBoxLayout() + group_layout.setContentsMargins(-1, 5, -1, -1) + + rowAGBHeaderTitle = QHBoxLayout() + lblAGBHeaderTitle = QLabel("Game Title:") + lblAGBHeaderTitle.setContentsMargins(0, 1, 0, 1) + rowAGBHeaderTitle.addWidget(lblAGBHeaderTitle) + self.lblAGBHeaderTitleResult = QLabel("") + rowAGBHeaderTitle.addWidget(self.lblAGBHeaderTitleResult) + group_layout.addLayout(rowAGBHeaderTitle) + + rowAGBHeaderCode = QHBoxLayout() + lblAGBHeaderCode = QLabel("Game Code:") + lblAGBHeaderCode.setContentsMargins(0, 1, 0, 1) + rowAGBHeaderCode.addWidget(lblAGBHeaderCode) + self.lblAGBHeaderCodeResult = QLabel("") + rowAGBHeaderCode.addWidget(self.lblAGBHeaderCodeResult) + group_layout.addLayout(rowAGBHeaderCode) + + rowAGBHeaderVersion = QHBoxLayout() + lblAGBHeaderVersion = QLabel("Version:") + lblAGBHeaderVersion.setContentsMargins(0, 1, 0, 1) + rowAGBHeaderVersion.addWidget(lblAGBHeaderVersion) + self.lblAGBHeaderVersionResult = QLabel("") + rowAGBHeaderVersion.addWidget(self.lblAGBHeaderVersionResult) + group_layout.addLayout(rowAGBHeaderVersion) + + rowAGBHeaderLogoValid = QHBoxLayout() + lblAGBHeaderLogoValid = QLabel("Nintendo Logo:") + lblAGBHeaderLogoValid.setContentsMargins(0, 1, 0, 1) + rowAGBHeaderLogoValid.addWidget(lblAGBHeaderLogoValid) + self.lblAGBHeaderLogoValidResult = QLabel("") + rowAGBHeaderLogoValid.addWidget(self.lblAGBHeaderLogoValidResult) + group_layout.addLayout(rowAGBHeaderLogoValid) + + rowAGBHeader96h = QHBoxLayout() + lblAGBHeader96h = QLabel("Cartridge Identifier:") + lblAGBHeader96h.setContentsMargins(0, 1, 0, 1) + rowAGBHeader96h.addWidget(lblAGBHeader96h) + self.lblAGBHeader96hResult = QLabel("") + rowAGBHeader96h.addWidget(self.lblAGBHeader96hResult) + group_layout.addLayout(rowAGBHeader96h) + + rowAGBHeaderChecksum = QHBoxLayout() + lblAGBHeaderChecksum = QLabel("Header Checksum:") + lblAGBHeaderChecksum.setContentsMargins(0, 1, 0, 1) + rowAGBHeaderChecksum.addWidget(lblAGBHeaderChecksum) + self.lblAGBHeaderChecksumResult = QLabel("") + rowAGBHeaderChecksum.addWidget(self.lblAGBHeaderChecksumResult) + group_layout.addLayout(rowAGBHeaderChecksum) + + rowAGBHeaderROMChecksum = QHBoxLayout() + lblAGBHeaderROMChecksum = QLabel("ROM Checksum:") + lblAGBHeaderROMChecksum.setContentsMargins(0, 1, 0, 1) + rowAGBHeaderROMChecksum.addWidget(lblAGBHeaderROMChecksum) + self.lblAGBHeaderROMChecksumResult = QLabel("") + rowAGBHeaderROMChecksum.addWidget(self.lblAGBHeaderROMChecksumResult) + group_layout.addLayout(rowAGBHeaderROMChecksum) + + rowAGBHeaderROMSize = QHBoxLayout() + lblAGBHeaderROMSize = QLabel("ROM Size:") + rowAGBHeaderROMSize.addWidget(lblAGBHeaderROMSize) + self.cmbAGBHeaderROMSizeResult = QComboBox() + self.cmbAGBHeaderROMSizeResult.setStyleSheet("combobox-popup: 0;"); + self.cmbAGBHeaderROMSizeResult.view().setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) + self.cmbAGBHeaderROMSizeResult.addItems(self.AGB_Header_ROM_Sizes) + self.cmbAGBHeaderROMSizeResult.setCurrentIndex(self.cmbAGBHeaderROMSizeResult.count() - 1) + rowAGBHeaderROMSize.addWidget(self.cmbAGBHeaderROMSizeResult) + group_layout.addLayout(rowAGBHeaderROMSize) + + rowAGBHeaderRAMSize = QHBoxLayout() + lblAGBHeaderRAMSize = QLabel("Save Data Type:") + rowAGBHeaderRAMSize.addWidget(lblAGBHeaderRAMSize) + self.cmbAGBSaveTypeResult = QComboBox() + self.cmbAGBSaveTypeResult.setStyleSheet("combobox-popup: 0;"); + self.cmbAGBSaveTypeResult.view().setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) + self.cmbAGBSaveTypeResult.addItems(self.AGB_Header_Save_Types) + self.cmbAGBSaveTypeResult.setCurrentIndex(self.cmbAGBSaveTypeResult.count() - 1) + rowAGBHeaderRAMSize.addWidget(self.cmbAGBSaveTypeResult) + group_layout.addLayout(rowAGBHeaderRAMSize) + + rowAGBCartridgeType = QHBoxLayout() + lblAGBCartridgeType = QLabel("Type:") + rowAGBCartridgeType.addWidget(lblAGBCartridgeType) + self.cmbAGBCartridgeTypeResult = QComboBox() + self.cmbAGBCartridgeTypeResult.setStyleSheet("max-width: 260px;") + self.cmbAGBCartridgeTypeResult.setStyleSheet("combobox-popup: 0;"); + self.cmbAGBCartridgeTypeResult.view().setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) + self.cmbAGBCartridgeTypeResult.currentIndexChanged.connect(self.CartridgeTypeChanged) + rowAGBCartridgeType.addWidget(self.cmbAGBCartridgeTypeResult) + group_layout.addLayout(rowAGBCartridgeType) + + self.grpAGBCartridgeInfo.setLayout(group_layout) + return self.grpAGBCartridgeInfo + + def ImportPlugin(self, file, class_name): + module_object = importlib.import_module(file) + target_class = getattr(module_object, class_name) + return target_class() + + def DisconnectDevice(self): + try: + self.CONN.Close() + except: + pass + self.CONN = None + self.btnScan.show() + self.optAGB.setEnabled(False) + self.optDMG.setEnabled(False) + self.btnHeaderRefresh.setEnabled(False) + self.btnBackupROM.setEnabled(False) + self.btnFlashROM.setEnabled(False) + self.btnBackupRAM.setEnabled(False) + self.btnRestoreRAM.setEnabled(False) + self.btnConnect.setText("Connect") + + def ConnectDevice(self): + if self.CONN is not None: + self.DisconnectDevice() + return True + else: + if self.cmbDevice.count() > 0: + index = self.cmbDevice.currentText() + else: + index = self.lblDevice.text() + + if index not in self.DEVICES: + self.FindDevices() + + dev = self.DEVICES[index] + ret = dev.Initialize() + + if ret is False: + self.CONN = None + return False + elif isinstance(ret, list): + for i in range(0, len(ret)): + status = ret[i][0] + msg = ret[i][1] + if status == 0: + print(msg) + elif status == 1: + QMessageBox.information(self, "FlashGBX", msg, QMessageBox.Ok) + elif status == 2: + QMessageBox.warning(self, "FlashGBX", msg, QMessageBox.Ok) + elif status == 3: + QMessageBox.critical(self, "FlashGBX", msg, QMessageBox.Ok) + self.CONN = None + return False + + if dev.IsConnected(): + self.CONN = dev + self.btnScan.hide() + self.optAGB.setEnabled(True) + self.optDMG.setEnabled(True) + self.optAGB.setAutoExclusive(False) + self.optDMG.setAutoExclusive(False) + self.optDMG.setChecked(False) + self.optAGB.setChecked(False) + self.optAGB.setAutoExclusive(True) + self.optDMG.setAutoExclusive(True) + self.btnConnect.setText("&Disconnect") + self.cmbDevice.setStyleSheet("QComboBox { border: 0; margin: 0; padding: 0; max-width: 0px; }"); + self.lblDevice.setText(dev.GetFullName() + " (" + dev.GetPort() + ")") + print("Connected to " + dev.GetFullName() + " on port " + dev.GetPort()) + + if self.CONN.GetMode() == "DMG": + self.cmbDMGCartridgeTypeResult.clear() + self.cmbDMGCartridgeTypeResult.addItems(self.CONN.GetSupportedCartridgesDMG()[0]) + self.grpAGBCartridgeInfo.setVisible(False) + self.grpDMGCartridgeInfo.setVisible(True) + elif self.CONN.GetMode() == "AGB": + self.cmbAGBCartridgeTypeResult.clear() + self.cmbAGBCartridgeTypeResult.addItems(self.CONN.GetSupportedCartridgesAGB()[0]) + self.grpDMGCartridgeInfo.setVisible(False) + self.grpAGBCartridgeInfo.setVisible(True) + + return True + return False + + def FindDevices(self, connectToFirst=False): + self.lblDevice.setText("Searching...") + qt_app.processEvents() + time.sleep(0.1) + + global hw_plugins + hw_plugins = [] + for file in glob.glob("hw_*.py"): + hw_plugins.append(os.path.splitext(file)[0]) + + for hw_plugin in hw_plugins: + dev = self.ImportPlugin(hw_plugin, 'GbxDevice') + ret = dev.Initialize() + if ret is False: + self.CONN = None + elif isinstance(ret, list): + for i in range(0, len(ret)): + status = ret[i][0] + msg = ret[i][1] + if status == 3: + QMessageBox.critical(self, "FlashGBX", msg, QMessageBox.Ok) + self.CONN = None + + if dev.IsConnected(): + self.DEVICES[dev.GetFullName()] = dev + dev.Close() + + self.cmbDevice.setStyleSheet("QComboBox { border: 0; margin: 0; padding: 0; max-width: 0px; }"); + + if len(self.DEVICES) == 0: + self.lblDevice.setText("No devices found.") + self.lblDevice.setStyleSheet(""); + self.cmbDevice.clear() + self.btnConnect.setEnabled(False) + elif len(self.DEVICES) == 1 or (connectToFirst and len(self.DEVICES) > 1): + self.lblDevice.setText(list(self.DEVICES.keys())[0]) + self.lblDevice.setStyleSheet(""); + self.ConnectDevice() + self.cmbDevice.clear() + self.btnConnect.setEnabled(True) + else: + self.lblDevice.setText("Select device:") + self.cmbDevice.clear() + self.cmbDevice.addItems(self.DEVICES.keys()) + self.cmbDevice.setCurrentIndex(0) + self.cmbDevice.setStyleSheet(""); + self.btnConnect.setEnabled(True) + + if len(self.DEVICES) == 0: return False + return True + + def AbortOperation(self): + self.btnCancel.setEnabled(False) + self.CONN.CANCEL = True + + def FinishOperation(self): + self.lblStatus4aResult.setText("") + self.grpDMGCartridgeInfo.setEnabled(True) + self.grpAGBCartridgeInfo.setEnabled(True) + self.grpActions.setEnabled(True) + self.btnCancel.setEnabled(False) + self.prgStatus.setMinimum(0) + self.prgStatus.setMaximum(1) + self.prgStatus.setValue(1) + + if self.CONN.INFO["last_action"] == 4: # Flash ROM + self.CONN.INFO["last_action"] = 0 + t1 = self.lblStatus1aResult.text() + t2 = self.lblStatus2aResult.text() + t3 = self.lblStatus3aResult.text() + t4 = self.cmbDMGCartridgeTypeResult.currentIndex() + t5 = self.cmbAGBCartridgeTypeResult.currentIndex() + self.ReadCartridge() + self.lblStatus1aResult.setText(t1) + self.lblStatus2aResult.setText(t2) + self.lblStatus3aResult.setText(t3) + self.lblStatus4a.setText("Done!") + self.cmbDMGCartridgeTypeResult.setCurrentIndex(t4) + self.cmbAGBCartridgeTypeResult.setCurrentIndex(t5) + msgbox = QMessageBox(parent=self, icon=QMessageBox.Information, windowTitle="FlashGBX", text="The ROM was flashed successfully!", standardButtons=QMessageBox.Ok) + msgbox.exec() + + elif self.CONN.INFO["last_action"] == 1: # Backup ROM + self.CONN.INFO["last_action"] = 0 + if self.CONN.GetMode() == "DMG": + if self.CONN.INFO["rom_checksum"] == self.CONN.INFO["rom_checksum_calc"]: + self.lblHeaderROMChecksumResult.setText("OK (0x{:04X})".format(self.CONN.INFO["rom_checksum"])) + self.lblHeaderROMChecksumResult.setStyleSheet("QLabel { color: green; }"); + self.lblStatus4a.setText("Done!") + msgbox = QMessageBox(parent=self, icon=QMessageBox.Information, windowTitle="FlashGBX", text="The ROM was dumped successfully!", standardButtons=QMessageBox.Ok) + msgbox.exec() + else: + self.lblHeaderROMChecksumResult.setText("Invalid (0x{:04X}≠0x{:04X})".format(self.CONN.INFO["rom_checksum_calc"], self.CONN.INFO["rom_checksum"])) + self.lblHeaderROMChecksumResult.setStyleSheet("QLabel { color: red; }"); + self.lblStatus4a.setText("Done.") + QMessageBox.warning(self, "FlashGBX", "The ROM dump is complete, but the checksum is not correct. This may indicate a bad dump, however this is normal for some bootleg cartridges, prototypes and patched games.", QMessageBox.Ok) + elif self.CONN.GetMode() == "AGB": + if self.AGB_Global_CRC32 == self.CONN.INFO["rom_checksum_calc"]: + self.lblAGBHeaderROMChecksumResult.setText("OK (0x{:06X})".format(self.AGB_Global_CRC32)) + self.lblAGBHeaderROMChecksumResult.setStyleSheet("QLabel { color: green; }"); + self.lblStatus4a.setText("Done!") + msgbox = QMessageBox(parent=self, icon=QMessageBox.Information, windowTitle="FlashGBX", text="The ROM was dumped successfully!", standardButtons=QMessageBox.Ok) + msgbox.exec() + elif self.AGB_Global_CRC32 == 0: + self.lblAGBHeaderROMChecksumResult.setText("0x{:06X}".format(self.CONN.INFO["rom_checksum_calc"])) + self.lblAGBHeaderROMChecksumResult.setStyleSheet(self.lblHeaderCGBResult.styleSheet()) + self.lblStatus4a.setText("Done!") + QMessageBox.information(self, "FlashGBX", "The ROM was dumped successfully, but its integrity could not be verified as this ROM is not in the database.", QMessageBox.Ok) + else: + self.lblAGBHeaderROMChecksumResult.setText("Invalid (0x{:06X}≠0x{:06X})".format(self.CONN.INFO["rom_checksum_calc"], self.AGB_Global_CRC32)) + self.lblAGBHeaderROMChecksumResult.setStyleSheet("QLabel { color: red; }"); + self.lblStatus4a.setText("Done.") + QMessageBox.warning(self, "FlashGBX", "The ROM dump is complete, but the checksum doesn’t match the known database entry. This may indicate a bad dump, however this is normal for some bootleg cartridges, prototypes and patched games.", QMessageBox.Ok) + + elif self.CONN.INFO["last_action"] == 2: # Backup RAM + self.lblStatus4a.setText("Done!") + self.CONN.INFO["last_action"] = 0 + + elif self.CONN.INFO["last_action"] == 3: # Restore RAM + self.lblStatus4a.setText("Done!") + self.CONN.INFO["last_action"] = 0 + else: + self.lblStatus4a.setText("Ready.") + self.CONN.INFO["last_action"] = 0 + + def CartridgeTypeAutoDetect(self): + cart_type = 0 + cart_text = "" + + msgbox = QMessageBox(parent=self, icon=QMessageBox.Question, windowTitle="FlashGBX", text="Would you like FlashGBX to try and auto-detect the flash cartridge type?", standardButtons=QMessageBox.Yes | QMessageBox.No) + cb = QCheckBox("Limit voltage to 3.3V", checked=True) + if self.CONN.GetMode() == "DMG": + msgbox.setCheckBox(cb) + answer = msgbox.exec() + limitVoltage = cb.isChecked() + if answer == QMessageBox.No: + return 0 + else: + detected = self.CONN.AutoDetectFlash(limitVoltage) + if len(detected) == 0: + msgbox = QMessageBox(parent=self, icon=QMessageBox.Question, windowTitle="FlashGBX", text="No pre-configured flash cartridge type was detected. You can still try and manually select one from the list -- look for similar PCB text and/or flash chip markings. However, chances are this cartridge is currently not supported for flashing with FlashGBX.\n\nWould you like FlashGBX to run a Flash ID check? This may help adding support for your flash cartridge in the future.", standardButtons=QMessageBox.Yes | QMessageBox.No) + if self.CONN.GetMode() == "DMG": + msgbox.setCheckBox(cb) + answer = msgbox.exec() + if self.CONN.GetMode() == "DMG": + limitVoltage = cb.isChecked() + else: + limitVoltage = False + + if answer == QMessageBox.Yes: + check = self.CONN.CheckFlashID(limitVoltage) + if check == "": + QMessageBox.information(self, "FlashGBX", "There was no Flash ID response from the cartridge. There probably is no flash ROM chip or it requires unique unlocking and handling.", QMessageBox.Ok) + else: + QMessageBox.information(self, "FlashGBX", "Here is what the Flash ID check returned:
" + check + "
This information along with a good quality picture of the PCB with readable chip markings may help adding support for your flash cartridge. You should be able to copy & paste the text above.", QMessageBox.Ok) + return 0 + else: + cart_type = detected[0] + if self.CONN.GetMode() == "DMG": + cart_types = self.CONN.GetSupportedCartridgesDMG() + for i in range(0, len(detected)): + cart_text += cart_types[0][detected[i]] + "\n" + elif self.CONN.GetMode() == "AGB": + cart_types = self.CONN.GetSupportedCartridgesAGB() + for i in range(0, len(detected)): + cart_text += cart_types[0][detected[i]] + "\n" + + if len(detected) == 1: + msg_text = "The following flash cartridge type was detected:\n" + cart_text + "\nIt seems to have a storage capacity of up to {:d} MB.\nOther features (such as save data type) have to be manually selected.".format(int(cart_types[1][detected[0]]['flash_size'] / 1024 / 1024)) + if self.CONN.GetMode() == "DMG": + for i in range(0, len(self.DMG_Header_ROM_Sizes_Flasher_Map)): + if cart_types[1][detected[0]]['flash_size'] == (self.DMG_Header_ROM_Sizes_Flasher_Map[i] * 0x4000): + self.cmbHeaderROMSizeResult.setCurrentIndex(i) + elif self.CONN.GetMode() == "AGB": + for i in range(0, len(self.AGB_Header_ROM_Sizes_Map)): + if cart_types[1][detected[0]]['flash_size'] == self.AGB_Header_ROM_Sizes_Map[i]: + self.cmbAGBHeaderROMSizeResult.setCurrentIndex(i) + else: + msg_text = "The following flash cartridge type variants were detected:\n" + cart_text + "\nAll from this list should behave identical. The flash chip seems to have a storage capacity of up to {:d} MB.\nOther features (such as save data type) have to be manually selected.".format(int(cart_types[1][detected[0]]['flash_size'] / 1024 / 1024)) + + if QMessageBox.Cancel == QMessageBox.information(self, "FlashGBX", msg_text, QMessageBox.Ok | QMessageBox.Cancel): + return 0 + + return cart_type + + def CartridgeTypeChanged(self, index): + if self.CONN.GetMode() == "DMG": + cart_types = self.CONN.GetSupportedCartridgesDMG() + if cart_types[1][index] == "AUTODETECT": # special keyword + cart_type = self.CartridgeTypeAutoDetect() + if (cart_type == 1): cart_type = 0 + self.cmbDMGCartridgeTypeResult.setCurrentIndex(cart_type) + elif self.CONN.GetMode() == "AGB": + cart_types = self.CONN.GetSupportedCartridgesAGB() + if cart_types[1][index] == "AUTODETECT": # special keyword + cart_type = self.CartridgeTypeAutoDetect() + if (cart_type == 1): cart_type = 0 + self.cmbAGBCartridgeTypeResult.setCurrentIndex(cart_type) + else: + return + + def BackupROM(self): + if not self.CheckDeviceAlive(): return + features = self.DMG_Header_Features_MBC[self.cmbHeaderFeaturesResult.currentIndex()] + rom_banks = self.DMG_Header_ROM_Sizes_Flasher_Map[self.cmbHeaderROMSizeResult.currentIndex()] + rom_size = 0 + if self.CONN.GetMode() == "DMG": + setting_name = "LastDirRomDMG" + last_dir = self.SETTINGS.value(setting_name) + if last_dir is None: last_dir = "." + path = self.lblHeaderTitleResult.text().strip().encode('ascii', 'ignore').decode('ascii') + if path == "": path = "ROM" + path = re.sub(r"[<>:\"/\\|\?\*]", "_", path) + if self.CONN.INFO["cgb"] == 0xC0 or self.CONN.INFO["cgb"] == 0x80: + path = path + ".gbc" + elif self.CONN.INFO["sgb"] == 0x03: + path = path + ".sgb" + else: + path = path + ".gb" + path = QFileDialog.getSaveFileName(self, "Backup ROM", last_dir + "/" + path, "Game Boy ROM File (*.gb *.sgb *.gbc);;All Files (*.*)")[0] + + elif self.CONN.GetMode() == "AGB": + setting_name = "LastDirRomAGB" + last_dir = self.SETTINGS.value(setting_name) + if last_dir is None: last_dir = "." + path = self.lblAGBHeaderTitleResult.text().strip().encode('ascii', 'ignore').decode('ascii') + if path == "": path = self.lblAGBHeaderCodeResult.text().strip().encode('ascii', 'ignore').decode('ascii') + if path == "": path = "ROM" + path = re.sub(r"[<>:\"/\\|\?\*]", "_", path) + rom_size = self.AGB_Header_ROM_Sizes_Map[self.cmbAGBHeaderROMSizeResult.currentIndex()] + path = path + ".gba" + path = QFileDialog.getSaveFileName(self, "Backup ROM", last_dir + "/" + path, "Game Boy Advance ROM File (*.gba *.srl);;All Files (*.*)")[0] + + if (path == ""): return + + self.SETTINGS.setValue(setting_name, os.path.dirname(path)) + self.lblHeaderROMChecksumResult.setStyleSheet(self.lblHeaderCGBResult.styleSheet()) + self.lblAGBHeaderROMChecksumResult.setStyleSheet(self.lblHeaderCGBResult.styleSheet()) + self.CONN.BackupROM(self.setProgress, path, features, rom_banks, rom_size) + + def FlashROM(self, dpath=""): + if not self.CheckDeviceAlive(): return + path = "" + if self.CONN.GetMode() == "DMG": + setting_name = "LastDirRomDMG" + last_dir = self.SETTINGS.value(setting_name) + if last_dir is None: last_dir = "." + carts = self.CONN.GetSupportedCartridgesDMG()[1] + cart_type = self.cmbDMGCartridgeTypeResult.currentIndex() + elif self.CONN.GetMode() == "AGB": + setting_name = "LastDirRomAGB" + last_dir = self.SETTINGS.value(setting_name) + if last_dir is None: last_dir = "." + carts = self.CONN.GetSupportedCartridgesAGB()[1] + cart_type = self.cmbAGBCartridgeTypeResult.currentIndex() + else: + return + + if cart_type == 0: + cart_type = self.CartridgeTypeAutoDetect() + if (cart_type == 1): cart_type = 0 + if self.CONN.GetMode() == "DMG": + self.cmbDMGCartridgeTypeResult.setCurrentIndex(cart_type) + elif self.CONN.GetMode() == "AGB": + self.cmbAGBCartridgeTypeResult.setCurrentIndex(cart_type) + if cart_type == 0: return + + if dpath != "": + answer = QMessageBox.question(self, "FlashGBX", "The following ROM file will now be written to the flash cartridge:\n" + dpath, QMessageBox.Ok | QMessageBox.Cancel) + if answer == QMessageBox.Cancel: return + path = dpath + + while path == "": + if self.CONN.GetMode() == "DMG": + path = QFileDialog.getOpenFileName(self, "Flash ROM", last_dir, "Game Boy ROM File (*.gb *.gbc *.sgb *.bin);;All Files (*.*)")[0] + elif self.CONN.GetMode() == "AGB": + path = QFileDialog.getOpenFileName(self, "Flash ROM", last_dir, "Game Boy Advance ROM File (*.gba *.srl);;All Files (*.*)")[0] + + if (path == ""): return + + if os.path.getsize(path) > carts[cart_type]['flash_size']: + answer = QMessageBox.warning(self, "FlashGBX", "The selected flash cartridge type seems to support ROMs that are up to " + str(int(carts[cart_type]['flash_size'] / 1024 / 1024)) + " MB in size, but the file you selected is " + str(os.path.getsize(path)/1024/1024) + " MB. You can still give it a try, but it’s possible that it’s too large.", QMessageBox.Ok | QMessageBox.Cancel) + if answer == QMessageBox.Cancel: return + + self.SETTINGS.setValue(setting_name, os.path.dirname(path)) + self.CONN.FlashROM(self.setProgress, path, cart_type) + + def BackupRAM(self): + if not self.CheckDeviceAlive(): return + if self.CONN.GetMode() == "DMG": + setting_name = "LastDirSaveDataDMG" + last_dir = self.SETTINGS.value(setting_name) + if last_dir is None: last_dir = "." + path = self.lblHeaderTitleResult.text().strip().encode('ascii', 'ignore').decode('ascii') + if path == "": path = "ROM" + features = self.DMG_Header_Features_MBC[self.cmbHeaderFeaturesResult.currentIndex()] + save_type = self.DMG_Header_RAM_Sizes_Flasher_Map[self.cmbHeaderRAMSizeResult.currentIndex()] + if save_type == 0: + QMessageBox.warning(self, "FlashGBX", "Please select the correct save data size.", QMessageBox.Ok) + return + elif self.CONN.GetMode() == "AGB": + setting_name = "LastDirSaveDataAGB" + last_dir = self.SETTINGS.value(setting_name) + if last_dir is None: last_dir = "." + path = self.lblAGBHeaderTitleResult.text().strip().encode('ascii', 'ignore').decode('ascii') + if path == "": path = self.lblAGBHeaderCodeResult.text().strip().encode('ascii', 'ignore').decode('ascii') + if path == "": path = "ROM" + features = 0 + save_type = self.cmbAGBSaveTypeResult.currentIndex() + if save_type == 0: + QMessageBox.critical(self, "FlashGBX", "The save data type was not selected or auto-detection failed.", QMessageBox.Ok) + return + else: + return + + path = re.sub(r"[<>:\"/\\|\?\*]", "_", path) + ".sav" + path = QFileDialog.getSaveFileName(self, "Backup Save Data", last_dir + "/" + path, "Save Data File (*.sav);;All Files (*.*)")[0] + + if (path == ""): return + + self.SETTINGS.setValue(setting_name, os.path.dirname(path)) + self.CONN.BackupRAM(self.setProgress, path, features, save_type) + + def RestoreRAM(self, dpath=""): + if not self.CheckDeviceAlive(): return + if self.CONN.GetMode() == "DMG": + setting_name = "LastDirSaveDataDMG" + last_dir = self.SETTINGS.value(setting_name) + if last_dir is None: last_dir = "." + if dpath == "": path = self.lblHeaderTitleResult.text().strip().encode('ascii', 'ignore').decode('ascii') + features = self.DMG_Header_Features_MBC[self.cmbHeaderFeaturesResult.currentIndex()] + save_type = self.DMG_Header_RAM_Sizes_Flasher_Map[self.cmbHeaderRAMSizeResult.currentIndex()] + if save_type == 0: + QMessageBox.warning(self, "FlashGBX", "Please select the correct save data size.", QMessageBox.Ok) + return + elif self.CONN.GetMode() == "AGB": + setting_name = "LastDirSaveDataAGB" + last_dir = self.SETTINGS.value(setting_name) + if last_dir is None: last_dir = "." + if dpath == "": path = self.lblAGBHeaderTitleResult.text().strip().encode('ascii', 'ignore').decode('ascii') + features = 0 + save_type = self.cmbAGBSaveTypeResult.currentIndex() + if save_type == 0: + QMessageBox.critical(self, "FlashGBX", "The save data type was not selected or auto-detection failed.", QMessageBox.Ok) + return + else: + return + + if dpath != "": + answer = QMessageBox.question(self, "FlashGBX", "The following save data file will now be written to the cartridge:\n" + dpath, QMessageBox.Ok | QMessageBox.Cancel) + if answer == QMessageBox.Cancel: return + path = dpath + else: + path = path + ".sav" + path = QFileDialog.getOpenFileName(self, "Restore Save Data", last_dir + "/" + path, "Save Data File (*.sav);;All Files (*.*)")[0] + if (path == ""): return + + self.SETTINGS.setValue(setting_name, os.path.dirname(path)) + self.CONN.RestoreRAM(self.setProgress, path, features, save_type) + + def CheckDeviceAlive(self, setMode=False): + if self.CONN is not None: + mode = self.CONN.GetMode() + if self.CONN.DEVICE is not None: + if not self.CONN.IsConnected(): + self.DisconnectDevice() + self.DEVICES = {} + dontShowAgain = self.SETTINGS.value("AutoReconnect") + if not dontShowAgain: + cb = QCheckBox("Always try to reconnect without asking", checked=False) + msgbox = QMessageBox(parent=self, icon=QMessageBox.Question, windowTitle="FlashGBX", text="The connection to the device was lost. Do you want to try and reconnect to the first device found? The cartridge information will also be reset and read again.", standardButtons=QMessageBox.Yes | QMessageBox.No) + msgbox.setCheckBox(cb) + answer = msgbox.exec() + dontShowAgain = cb.isChecked() + if dontShowAgain: self.SETTINGS.setValue("AutoReconnect", dontShowAgain) + if answer == QMessageBox.No: + return False + if self.FindDevices(True): + if setMode is not False: mode = setMode + if mode == "DMG": self.optDMG.setChecked(True) + elif mode == "AGB": self.optAGB.setChecked(True) + self.SetMode() + return True + else: + return False + else: + return True + return False + + def SetMode(self): + setTo = False + mode = self.CONN.GetMode() + if mode == "DMG": + if self.optDMG.isChecked(): return + setTo = "AGB" + elif mode == "AGB": + if self.optAGB.isChecked(): return + setTo = "DMG" + else: + if self.optDMG.isChecked(): + setTo = "DMG" + elif self.optAGB.isChecked(): + setTo = "AGB" + + dontShowAgain = self.SETTINGS.value("SkipModeChangeWarning") + if not dontShowAgain and mode is not None: + cb = QCheckBox("Don’t show this message again.", checked=False) + msgbox = QMessageBox(parent=self, icon=QMessageBox.Warning, windowTitle="FlashGBX", text="The mode will now be changed to " + {"DMG":"Game Boy", "AGB":"Game Boy Advance"}[setTo] + " mode. To be safe, cartridges should only be exchanged while the device is not powered on.", standardButtons=QMessageBox.Ok | QMessageBox.Cancel) + msgbox.setCheckBox(cb) + answer = msgbox.exec() + dontShowAgain = cb.isChecked() + if dontShowAgain: self.SETTINGS.setValue("SkipModeChangeWarning", dontShowAgain) + if answer == QMessageBox.Cancel: + if mode == "DMG": self.optDMG.setChecked(True) + if mode == "AGB": self.optAGB.setChecked(True) + return False + + if not self.CheckDeviceAlive(setMode=setTo): return + + if self.optDMG.isChecked() and (mode == "AGB" or mode == None): + self.CONN.SetMode("DMG") + elif self.optAGB.isChecked() and (mode == "DMG" or mode == None): + self.CONN.SetMode("AGB") + + self.ReadCartridge() + self.btnHeaderRefresh.setEnabled(True) + self.btnBackupROM.setEnabled(True) + self.btnFlashROM.setEnabled(True) + self.btnBackupRAM.setEnabled(True) + self.btnRestoreRAM.setEnabled(True) + + def ReadCartridge(self): + if not self.CheckDeviceAlive(): return + data = self.CONN.ReadInfo() + + if data == False or len(data) == 0: + self.DisconnectDevice() + return False + + if self.CONN.GetMode() == "DMG": + self.cmbDMGCartridgeTypeResult.clear() + self.cmbDMGCartridgeTypeResult.addItems(self.CONN.GetSupportedCartridgesDMG()[0]) + self.cmbDMGCartridgeTypeResult.setSizeAdjustPolicy(QComboBox.AdjustToContents) + if "flash_type" in data: + self.cmbDMGCartridgeTypeResult.setCurrentIndex(data["flash_type"]) + + if "manufacturer" in data: + self.lblChipManufacturerResult.setText(data['manufacturer']) + self.lblChipIDResult.setText("0x{:02X}".format(data['chip_id'])) + self.lblHeaderTitleResult.setText(data['game_title']) + if data['sgb'] in self.DMG_Header_SGB: + self.lblHeaderSGBResult.setText(self.DMG_Header_SGB[data['sgb']]) + else: + self.lblHeaderSGBResult.setText("Unknown (0x{:02X})".format(data['sgb'])) + if data['cgb'] in self.DMG_Header_CGB: + self.lblHeaderCGBResult.setText(self.DMG_Header_CGB[data['cgb']]) + else: + self.lblHeaderCGBResult.setText("Unknown (0x{:02X})".format(data['cgb'])) + if data['logo_correct']: + self.lblHeaderLogoValidResult.setText("OK") + self.lblHeaderLogoValidResult.setStyleSheet(self.lblHeaderCGBResult.styleSheet()) + else: + self.lblHeaderLogoValidResult.setText("Invalid") + self.lblHeaderLogoValidResult.setStyleSheet("QLabel { color: red; }"); + if data['header_checksum_correct']: + self.lblHeaderChecksumResult.setText("OK (0x{:02X})".format(data['header_checksum'])) + self.lblHeaderChecksumResult.setStyleSheet(self.lblHeaderCGBResult.styleSheet()) + else: + self.lblHeaderChecksumResult.setText("Invalid (0x{:02X})".format(data['header_checksum'])) + self.lblHeaderChecksumResult.setStyleSheet("QLabel { color: red; }"); + self.lblHeaderROMChecksumResult.setText("0x{:04X}".format(data['rom_checksum'])) + self.lblHeaderROMChecksumResult.setStyleSheet(self.lblHeaderCGBResult.styleSheet()) + for i in range(0, len(self.DMG_Header_ROM_Sizes_Map)): + if data["rom_size_raw"] == self.DMG_Header_ROM_Sizes_Map[i]: + self.cmbHeaderROMSizeResult.setCurrentIndex(i) + for i in range(0, len(self.DMG_Header_RAM_Sizes_Map)): + if data["ram_size_raw"] == self.DMG_Header_RAM_Sizes_Map[i]: + self.cmbHeaderRAMSizeResult.setCurrentIndex(i) + i = 0 + for k, v in self.DMG_Header_Features.items(): + if data["features_raw"] == k: + self.cmbHeaderFeaturesResult.setCurrentIndex(i) + if k == 0x05 or k == 0x06: self.cmbHeaderRAMSizeResult.setCurrentIndex(1) # MBC2 Save + i += 1 + + self.grpAGBCartridgeInfo.setVisible(False) + self.grpDMGCartridgeInfo.setVisible(True) + + elif self.CONN.GetMode() == "AGB": + self.cmbAGBCartridgeTypeResult.clear() + self.cmbAGBCartridgeTypeResult.addItems(self.CONN.GetSupportedCartridgesAGB()[0]) + self.cmbAGBCartridgeTypeResult.setSizeAdjustPolicy(QComboBox.AdjustToContents) + if "flash_type" in data: + self.cmbAGBCartridgeTypeResult.setCurrentIndex(data["flash_type"]) + + self.lblAGBHeaderTitleResult.setText(data['game_title']) + self.lblAGBHeaderCodeResult.setText(data['game_code']) + self.lblAGBHeaderVersionResult.setText(str(data['version'])) + if data['logo_correct']: + self.lblAGBHeaderLogoValidResult.setText("OK") + self.lblAGBHeaderLogoValidResult.setStyleSheet(self.lblAGBHeaderCodeResult.styleSheet()) + else: + self.lblAGBHeaderLogoValidResult.setText("Invalid") + self.lblAGBHeaderLogoValidResult.setStyleSheet("QLabel { color: red; }"); + + if data['96h_correct']: + self.lblAGBHeader96hResult.setText("OK") + self.lblAGBHeader96hResult.setStyleSheet(self.lblAGBHeaderCodeResult.styleSheet()) + else: + self.lblAGBHeader96hResult.setText("Invalid") + self.lblAGBHeader96hResult.setStyleSheet("QLabel { color: red; }"); + + if data['header_checksum_correct']: + self.lblAGBHeaderChecksumResult.setText("OK (0x{:02X})".format(data['header_checksum'])) + self.lblAGBHeaderChecksumResult.setStyleSheet(self.lblAGBHeaderCodeResult.styleSheet()) + else: + self.lblAGBHeaderChecksumResult.setText("Invalid (0x{:02X})".format(data['header_checksum'])) + self.lblAGBHeaderChecksumResult.setStyleSheet("QLabel { color: red; }"); + self.lblAGBHeaderROMChecksumResult.setStyleSheet(self.lblHeaderCGBResult.styleSheet()) + self.lblAGBHeaderROMChecksumResult.setText("Not available") + self.AGB_Global_CRC32 = 0 + + db_agb_entry = None + if os.path.exists("./config/db_AGB.json"): + with open("./config/db_AGB.json") as f: + db_agb = f.read() + db_agb = json.loads(db_agb) + if data["header_sha1"] in db_agb.keys(): + db_agb_entry = db_agb[data["header_sha1"]] + else: + self.lblAGBHeaderROMChecksumResult.setText("Not in database") + + if db_agb_entry != None: + self.cmbAGBHeaderROMSizeResult.setCurrentIndex(self.AGB_Header_ROM_Sizes_Map.index(db_agb_entry['rom_size'])) + if data["rom_size_calc"] < 0x400000: + self.lblAGBHeaderROMChecksumResult.setText("In database (0x{:06X})".format(db_agb_entry['rom_crc32'])) + self.AGB_Global_CRC32 = db_agb_entry['rom_crc32'] + + elif data["rom_size"] != 0: + if not data["rom_size"] in self.AGB_Header_ROM_Sizes_Map: + data["rom_size"] = 0x2000000 + self.cmbAGBHeaderROMSizeResult.setCurrentIndex(self.AGB_Header_ROM_Sizes_Map.index(data["rom_size"])) + else: + self.cmbAGBHeaderROMSizeResult.setCurrentIndex(0) + + if data["save_type"] == None: + self.cmbAGBSaveTypeResult.setCurrentIndex(0) + if db_agb_entry != None: + if db_agb_entry['savetype'] < len(self.AGB_Header_Save_Types): + self.cmbAGBSaveTypeResult.setCurrentIndex(db_agb_entry['savetype']) + + self.grpDMGCartridgeInfo.setVisible(False) + self.grpAGBCartridgeInfo.setVisible(True) + + self.lblStatus1aResult.setText("–") + self.lblStatus2aResult.setText("–") + self.lblStatus3aResult.setText("–") + self.lblStatus4a.setText("Ready.") + self.FinishOperation() + + def formatFileSize(self, size): + size = size / 1024 + if size < 1024: + return "{:.1f} KB".format(size) + else: + return "{:.2f} MB".format(size/1024) + + def formatProgressTime(self, sec): + if int(sec) == 1: + return "{:d} second".format(int(sec)) + elif sec < 60: + return "{:d} seconds".format(int(sec)) + elif int(sec) == 60: + return "1 minute" + else: + min = int(sec / 60) + sec = int(sec % 60) + s = str(min) + " " + if min == 1: + s = s + "minute" + else: + s = s + "minutes" + s = s + ", " + str(sec) + " " + if sec == 1: + s = s + "second" + else: + s = s + "seconds" + return s + + def setProgress(self, error, cur, max, speed=0, elapsed=0, left=0): + if error != None and type(error) != type({}): + self.lblStatus4a.setText("Failed!") + self.grpDMGCartridgeInfo.setEnabled(True) + self.grpAGBCartridgeInfo.setEnabled(True) + self.grpActions.setEnabled(True) + self.btnCancel.setEnabled(False) + QMessageBox.critical(self, "FlashGBX", str(error), QMessageBox.Ok) + return + + self.grpDMGCartridgeInfo.setEnabled(False) + self.grpAGBCartridgeInfo.setEnabled(False) + self.grpActions.setEnabled(False) + + if (type(error) == type({})): + if error["action"] == "ERASE": + self.lblStatus1aResult.setText("Pending...") + self.lblStatus2aResult.setText("Pending...") + self.lblStatus3aResult.setText(self.formatProgressTime(elapsed)) + self.lblStatus4a.setText("Erasing flash...") + self.lblStatus4aResult.setText("") + self.btnCancel.setEnabled(error["abortable"]) + self.prgStatus.setMinimum(0) + self.prgStatus.setMaximum(max) + self.prgStatus.setValue(cur) + elif error["action"] == "SECTOR_ERASE": + self.lblStatus3aResult.setText(self.formatProgressTime(elapsed)) + self.lblStatus4a.setText("Erasing sector...") + self.lblStatus4aResult.setText("") + self.btnCancel.setEnabled(error["abortable"]) + self.prgStatus.setMinimum(0) + self.prgStatus.setMaximum(max) + self.prgStatus.setValue(cur) + elif error["action"] == "VERIFY": + self.lblStatus1aResult.setText("") + self.lblStatus2aResult.setText("") + self.lblStatus3aResult.setText(self.formatProgressTime(elapsed)) + self.lblStatus4a.setText("Verifying...") + self.lblStatus4aResult.setText("") + self.btnCancel.setEnabled(error["abortable"]) + self.prgStatus.setMinimum(0) + self.prgStatus.setMaximum(max) + self.prgStatus.setValue(cur) + elif error["action"] == "ABORT": + wd = 10 + while self.CONN.WORKER.isRunning(): + time.sleep(0.1) + wd -= 1 + if wd == 0: break + pass + self.CONN.CANCEL = False + self.grpDMGCartridgeInfo.setEnabled(True) + self.grpAGBCartridgeInfo.setEnabled(True) + self.grpActions.setEnabled(True) + self.lblStatus1aResult.setText("–") + self.lblStatus2aResult.setText("–") + self.lblStatus3aResult.setText("–") + self.lblStatus4a.setText("Aborted.") + self.lblStatus4aResult.setText("") + self.btnCancel.setEnabled(False) + self.prgStatus.setMinimum(0) + self.prgStatus.setMaximum(1) + self.prgStatus.setValue(0) + + if "info_type" in error.keys() and "info_msg" in error.keys(): + if error["info_type"] == "msgbox_critical": + QMessageBox.critical(self, "FlashGBX", error["info_msg"], QMessageBox.Ok) + elif error["info_type"] == "msgbox_information": + QMessageBox.information(self, "FlashGBX", error["info_msg"], QMessageBox.Ok) + elif error["info_type"] == "label": + self.lblStatus4a.setText(error["info_msg"]) + + return + else: + self.prgStatus.setMinimum(0) + self.prgStatus.setMaximum(max) + self.prgStatus.setValue(cur) + + self.btnCancel.setEnabled(True) + self.lblStatus1aResult.setText(self.formatFileSize(cur)) + if speed == 0: + self.lblStatus2aResult.setText("–") + self.lblStatus4aResult.setText("–") + pass + else: + self.lblStatus2aResult.setText("{:.2f} KB/s".format(speed)) + self.lblStatus3aResult.setText(self.formatProgressTime(elapsed)) + self.lblStatus4a.setText("Time left:") + if speed > 0 and left > 0: + self.lblStatus4aResult.setText(self.formatProgressTime(left)) + elif max == cur: + while self.CONN.WORKER.isRunning(): + time.sleep(0.1) + pass + self.FinishOperation() + + def dragEnterEvent(self, e): + if self._dragEventHover(e): + e.accept() + else: + e.ignore() + + def dragMoveEvent(self, e): + if self._dragEventHover(e): + e.accept() + else: + e.ignore() + + def _dragEventHover(self, e): + if self.btnHeaderRefresh.isEnabled() and self.grpActions.isEnabled() and e.mimeData().hasUrls: + for url in e.mimeData().urls(): + if platform.system() == 'Darwin': + fn = str(NSURL.URLWithString_(str(url.toString())).filePathURL().path()) + else: + fn = str(url.toLocalFile()) + + fn_split = os.path.splitext(os.path.abspath(fn)) + if fn_split[1] == ".sav": + return True + elif self.CONN.GetMode() == "DMG" and fn_split[1] in (".gb", ".sgb", ".gbc", ".bin"): + return True + elif self.CONN.GetMode() == "AGB" and fn_split[1] in (".gba", ".srl"): + return True + else: + return False + return False + + def dropEvent(self, e): + if self.btnHeaderRefresh.isEnabled() and self.grpActions.isEnabled() and e.mimeData().hasUrls: + e.setDropAction(QtCore.Qt.CopyAction) + e.accept() + for url in e.mimeData().urls(): + if platform.system() == 'Darwin': + fn = str(NSURL.URLWithString_(str(url.toString())).filePathURL().path()) + else: + fn = str(url.toLocalFile()) + + fn_split = os.path.splitext(os.path.abspath(fn)) + if fn_split[1] in (".gb", ".sgb", ".gbc", ".bin", ".gba", ".srl"): + self.FlashROM(fn) + elif fn_split[1] == ".sav": + self.RestoreRAM(fn) + else: + e.ignore() + + def run(self): + self.layout.update() + self.layout.activate() + screen = QGuiApplication.screens()[0] + screenGeometry = screen.geometry() + x = (screenGeometry.width() - self.width()) / 2 + y = (screenGeometry.height() - self.height()) / 2 + self.move(x, y) + self.setAcceptDrops(True) + self.show() + qt_app.exec_() + +qt_app = QApplication(sys.argv) +qt_app.setOrganizationName("Lesserkuma") +qt_app.setApplicationName("FlashGBX") +app = FlashGBX(sys.argv) +app.run() diff --git a/src/RomFileAGB.py b/src/RomFileAGB.py new file mode 100644 index 0000000..f4ffd16 --- /dev/null +++ b/src/RomFileAGB.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +# UTF-8 +import hashlib, re, zlib, sys, string + +class RomFileAGB: + ROMFILE_PATH = None + ROMFILE = bytearray() + + def __init__(self, file=None): + if isinstance(file, str): + self.ROMFILE_PATH = file + if self.ROMFILE_PATH != None: self.Load() + elif isinstance(file, bytearray): + self.ROMFILE = file + + def Open(self, file): + self.ROMFILE_PATH = file + self.Load() + + def Load(self): + with open(self.ROMFILE_PATH, "rb") as f: + self.ROMFILE = bytearray(f.read()) + + def CalcChecksumHeader(self, fix=False): + buffer = self.ROMFILE + checksum = 0 + for i in range(0xA0, 0xBD): + checksum = checksum - buffer[i] + checksum = (checksum - 0x19) & 0xFF + + if fix: buffer[0x14D] = checksum + return checksum + + def CalcChecksumGlobal(self): + buffer = self.ROMFILE + return (zlib.crc32(buffer) & 0xffffffff) + + def FixChecksums(self): + self.CalcChecksumHeader(True) + + def GetHeader(self): + buffer = self.ROMFILE + data = {} + data["logo_correct"] = hashlib.sha1(buffer[0x04:0xA0]).digest() == bytearray([ 0x17, 0xDA, 0xA0, 0xFE, 0xC0, 0x2F, 0xC3, 0x3C, 0x0F, 0x6A, 0xBB, 0x54, 0x9A, 0x8B, 0x80, 0xB6, 0x61, 0x3B, 0x48, 0xEE ]) + game_title = bytearray(buffer[0xA0:0xAC]).decode("ascii", "replace") + game_title = re.sub(r"(\x00+)$", "", game_title).replace("\x00", "_") + game_title = ''.join(filter(lambda x: x in set(string.printable), game_title)) + data["game_title"] = game_title + game_code = bytearray(buffer[0xAC:0xB0]).decode("ascii", "replace") + game_code = re.sub(r"(\x00+)$", "", game_code).replace("\x00", "_") + game_code = ''.join(filter(lambda x: x in set(string.printable), game_code)) + data["game_code"] = game_code + maker_code = bytearray(buffer[0xB0:0xB2]).decode("ascii", "replace") + maker_code = re.sub(r"(\x00+)$", "", maker_code).replace("\x00", "_") + maker_code = ''.join(filter(lambda x: x in set(string.printable), maker_code)) + + data["maker_code"] = maker_code + data["header_checksum"] = int(buffer[0xBD]) + data["header_checksum_calc"] = self.CalcChecksumHeader() + data["header_checksum_correct"] = data["header_checksum"] == data["header_checksum_calc"] + data["header_sha1"] = hashlib.sha1(buffer[0x00:0xC0]).hexdigest() + data["version"] = int(buffer[0xBC]) + data["96h_correct"] = (buffer[0xB2] == 0x96) + data["rom_checksum_calc"] = self.CalcChecksumGlobal() + data["rom_size_calc"] = int(len(buffer)) + data["save_type"] = None + data["save_size"] = 0 + return data + + def GetData(self): + return self.ROMFILE diff --git a/src/RomFileDMG.py b/src/RomFileDMG.py new file mode 100644 index 0000000..82279d7 --- /dev/null +++ b/src/RomFileDMG.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- +# UTF-8 +import hashlib, re, sys, string + +class RomFileDMG: + DMG_Header_Features = { 0x00:'ROM ONLY', 0x01:'MBC1', 0x02:'MBC1+RAM', 0x03:'MBC1+RAM+BATTERY', 0x05:'MBC2', 0x06:'MBC2+BATTERY', 0x08:'ROM+RAM', 0x09:'ROM+RAM+BATTERY', 0x0B:'MMM01', 0x0C:'MMM01+RAM', 0x0D:'MMM01+RAM+BATTERY', 0x0F:'MBC3+TIMER+BATTERY', 0x10:'MBC3+TIMER+RAM+BATTERY', 0x11:'MBC3', 0x12:'MBC3+RAM', 0x13:'MBC3+RAM+BATTERY', 0x15:'MBC4', 0x16:'MBC4+RAM', 0x17:'MBC4+RAM+BATTERY', 0x19:'MBC5', 0x1A:'MBC5+RAM', 0x1B:'MBC5+RAM+BATTERY', 0x1C:'MBC5+RUMBLE', 0x1D:'MBC5+RUMBLE+RAM', 0x1E:'MBC5+RUMBLE+RAM+BATTERY', 0x20:'MBC6', 0x22:'MBC7+SENSOR+RUMBLE+RAM+BATTERY', 0x55:'Game Genie', 0x56:'Game Genie v3.0', 0xFC:'POCKET CAMERA', 0xFD:'BANDAI TAMA5', 0xFE:'HuC3', 0xFF:'HuC1+RAM+BATTERY' } + DMG_Header_ROM_Sizes = { 0x00:0x8000, 0x01:0x10000, 0x02:0x20000, 0x03:0x40000, 0x04:0x80000, 0x05:0x100000, 0x52:0x120000, 0x53:0x140000, 0x54:0x180000, 0x06:0x200000, 0x07:0x400000, 0x08:0x800000 } + DMG_Header_RAM_Sizes = { 0x00:0, 0x01:0x800, 0x02:0x2000, 0x03:0x8000, 0x05:0x10000, 0x04:0x20000 } + DMG_Header_SGB = { 0x00:'No support', 0x03:'Supported' } + DMG_Header_CGB = { 0x00:'No support', 0x80:'Supported', 0xC0:'Required' } + + ROMFILE_PATH = None + ROMFILE = bytearray() + + def __init__(self, file=None): + if isinstance(file, str): + self.ROMFILE_PATH = file + if self.ROMFILE_PATH != None: self.Load() + elif isinstance(file, bytearray): + self.ROMFILE = file + + def Open(self, file): + self.ROMFILE_PATH = file + self.Load() + + def Load(self): + with open(self.ROMFILE_PATH, "rb") as f: + self.ROMFILE = bytearray(f.read()) + + def CalcChecksumHeader(self, fix=False): + buffer = self.ROMFILE + checksum = 0 + for i in range(0x134, 0x14D): + checksum = checksum - buffer[i] - 1 + checksum = checksum & 0xFF + + if fix: buffer[0x14D] = checksum + return checksum + + def CalcChecksumGlobal(self, fix=False): + buffer = self.ROMFILE + checksum = 0 + for i in range(0, len(buffer), 2): + if i != 0x14E: + checksum = checksum + buffer[i + 1] + checksum = checksum + buffer[i] + + if fix: + buffer[0x14E] = checksum >> 8 + buffer[0x14F] = checksum & 0xFF + return checksum & 0xFFFF + + def FixChecksums(self): + self.CalcChecksumHeader(True) + self.CalcChecksumGlobal(True) + + def GetHeader(self): + buffer = self.ROMFILE + data = {} + data["logo_correct"] = hashlib.sha1(buffer[0x104:0x134]).digest() == bytearray([ 0x07, 0x45, 0xFD, 0xEF, 0x34, 0x13, 0x2D, 0x1B, 0x3D, 0x48, 0x8C, 0xFB, 0xDF, 0x03, 0x79, 0xA3, 0x9F, 0xD5, 0x4B, 0x4C ]) + game_title = bytearray(buffer[0x134:0x143]).decode("ascii", "replace") + game_title = re.sub(r"(\x00+)$", "", game_title).replace("\x00", "_") + game_title = ''.join(filter(lambda x: x in set(string.printable), game_title)) + data["game_title"] = game_title + data["maker_code"] = format(int(buffer[0x14B]), "02X") + if data["maker_code"] == '33': + maker_code = bytearray(buffer[0x144:0x146]).decode("ascii", "replace") + maker_code = ''.join(filter(lambda x: x in set(string.printable), maker_code)) + data["maker_code_new"] = maker_code + data["cgb"] = int(buffer[0x143]) + data["sgb"] = int(buffer[0x146]) + data["features_raw"] = int(buffer[0x147]) + data["features"] = "?" + if buffer[0x147] in self.DMG_Header_Features: data["features"] = self.DMG_Header_Features[buffer[0x147]] + data["rom_size_raw"] = int(buffer[0x148]) + data["rom_size"] = "?" + if buffer[0x148] in self.DMG_Header_ROM_Sizes: data["rom_size"] = self.DMG_Header_ROM_Sizes[buffer[0x148]] + data["ram_size_raw"] = int(buffer[0x149]) + if data["features"] == 0x05 or data["features"] == 0x06: + data["ram_size"] = 0x200 + else: + data["ram_size"] = "?" + if buffer[0x149] in self.DMG_Header_RAM_Sizes: data["ram_size"] = self.DMG_Header_RAM_Sizes[buffer[0x149]] + data["header_checksum"] = int(buffer[0x14D]) + data["header_checksum_calc"] = self.CalcChecksumHeader() + data["header_checksum_correct"] = data["header_checksum"] == data["header_checksum_calc"] + data["rom_checksum"] = int(256 * buffer[0x14E] + buffer[0x14F]) + data["rom_checksum_calc"] = self.CalcChecksumGlobal() + data["rom_checksum_correct"] = data["rom_checksum"] == data["rom_checksum_calc"] + return data + + def GetData(self): + return self.ROMFILE diff --git a/src/config/db_AGB.json b/src/config/db_AGB.json new file mode 100644 index 0000000..a039b85 --- /dev/null +++ b/src/config/db_AGB.json @@ -0,0 +1 @@ +{"615242aa1a3ec28abfe68bf72bebdfc4e094e5b2": {"rom_size": 8388608, "rom_crc32": 3404917151, "savesize": 512, "savetype": 1}, "d9b00cfcbac26191bbd9fc480e7d2f4be4a6e57c": {"rom_size": 8388608, "rom_crc32": 2639207960, "savesize": 512, "savetype": 1}, "e24d0ed2d827a54666d2cd3dae1cb08a30288e95": {"rom_size": 8388608, "rom_crc32": 1455963158, "savesize": 512, "savetype": 1}, "8c1f451c33cef2610910361b57a5f152972193a9": {"rom_size": 33554432, "rom_crc32": 3368924397, "savesize": 32768, "savetype": 3}, "bc902c1a41a200b00e5bcb47f13c5b1e8db21d1d": {"rom_size": 16777216, "rom_crc32": 1970288963, "savesize": 512, "savetype": 1}, "c620ff0391384d3a08b5940a32b10c89d05c55a7": {"rom_size": 16777216, "rom_crc32": 546479809, "savesize": 0, "savetype": 0}, "78b3dd6f36829dc7a294a688f7189f8ea2d8f6b8": {"rom_size": 4194304, "rom_crc32": 177241944, "savesize": 0, "savetype": 0}, "c8e7bf98b16389e388fb8510a34ed020a1cda8fb": {"rom_size": 4194304, "rom_crc32": 1082174145, "savesize": 0, "savetype": 0}, "f5d2aeb4ffd7c328fe238800e7b57f7ecb645845": {"rom_size": 4194304, "rom_crc32": 3791750707, "savesize": 0, "savetype": 0}, "4422660c3868b3b0139612674e13a99df717d8fd": {"rom_size": 4194304, "rom_crc32": 237696516, "savesize": 0, "savetype": 0}, "18001afce43fae016954418f69b11935b91fd92e": {"rom_size": 16777216, "rom_crc32": 2661575042, "savesize": 0, "savetype": 0}, "8dc8ec681037bf20f626621a0dcec68c94268fc1": {"rom_size": 16777216, "rom_crc32": 3609247178, "savesize": 0, "savetype": 0}, "523a0311c2ebfdd40e388b0e405e6269a1307e6e": {"rom_size": 16777216, "rom_crc32": 2657064475, "savesize": 512, "savetype": 1}, "7e4daa8ff62f9fd308dabecad055e4b1650965e2": {"rom_size": 16777216, "rom_crc32": 3618375319, "savesize": 0, "savetype": 0}, "5018ab553401611e78da3fd061a64f3e36594d90": {"rom_size": 8388608, "rom_crc32": 3016958948, "savesize": 0, "savetype": 0}, "02b373212f4d1e24d11b1895f4d4f17880a69376": {"rom_size": 16777216, "rom_crc32": 199926516, "savesize": 65536, "savetype": 5}, "efde0279cc7584ad184ff2f0413cde0a97044d05": {"rom_size": 16777216, "rom_crc32": 1339166258, "savesize": 0, "savetype": 0}, "3c962af535be6d6b8092beab3d4f9e2a88bddc1d": {"rom_size": 16777216, "rom_crc32": 1685236773, "savesize": 512, "savetype": 1}, "113e9fa5f2e49f814248539b227ec2ea845297aa": {"rom_size": 16777216, "rom_crc32": 28394409, "savesize": 512, "savetype": 1}, "e8e95961cdf6129aaa800a51cd9e7f5bb44fa720": {"rom_size": 16777216, "rom_crc32": 1475905200, "savesize": 8192, "savetype": 2}, "5243e7bb3c0486cff08bde2b7efd0d0947bcee26": {"rom_size": 16777216, "rom_crc32": 875909926, "savesize": 512, "savetype": 1}, "728c08dbcd2576699c5361a7e6c7314cf890e555": {"rom_size": 16777216, "rom_crc32": 2580111463, "savesize": 8192, "savetype": 2}, "4ad30e0af1c773768234b52e0fd5783c8d438cfa": {"rom_size": 16777216, "rom_crc32": 583355105, "savesize": 512, "savetype": 1}, "815273c7c6804ea4cbeff95777fa172487b5e15f": {"rom_size": 16777216, "rom_crc32": 3437871842, "savesize": 512, "savetype": 1}, "9d0306c1e99d4a257282735ab842321634749048": {"rom_size": 16777216, "rom_crc32": 2762783306, "savesize": 512, "savetype": 1}, "dbc2a4d7fc22e32a1220c4c29866e0a4f7371f27": {"rom_size": 16777216, "rom_crc32": 1166929329, "savesize": 512, "savetype": 1}, "638682c8a97b330e976ee9a218dcf9c5685e3006": {"rom_size": 16777216, "rom_crc32": 1388880159, "savesize": 512, "savetype": 1}, "fa6b813eca3b097efc366cbd372b6459702a8260": {"rom_size": 16777216, "rom_crc32": 2911030148, "savesize": 512, "savetype": 1}, "09397cfba3f0784c857ebfbee6398ad11f52dafb": {"rom_size": 8388608, "rom_crc32": 4219106663, "savesize": 512, "savetype": 1}, "5a9fe5cf0e73d111d60c963f3d84ac6b3b6663a6": {"rom_size": 16777216, "rom_crc32": 2900855887, "savesize": 8192, "savetype": 2}, "b15688375f5db58945454c59ceb64ba9f4894d85": {"rom_size": 16777216, "rom_crc32": 1572367900, "savesize": 0, "savetype": 0}, "d79c3bf58072fa93bd369a215f33404fdbe2c121": {"rom_size": 16777216, "rom_crc32": 1621318766, "savesize": 0, "savetype": 0}, "c27ad3947f4d6b57b39a603a8da7b984bc5c8b6e": {"rom_size": 16777216, "rom_crc32": 1926624296, "savesize": 0, "savetype": 0}, "90e0f7d2d3df02410422754e13f97d069a1cfaee": {"rom_size": 16777216, "rom_crc32": 1933853299, "savesize": 0, "savetype": 0}, "be55893c906d52ab8758e8e39532e30d81a526e2": {"rom_size": 16777216, "rom_crc32": 777968141, "savesize": 0, "savetype": 0}, "3b1025a693624e696bfb05f76a1c97e4c5efb9d8": {"rom_size": 16777216, "rom_crc32": 760048122, "savesize": 0, "savetype": 0}, "3116c9418319012d4c8fbda61cbbcc58875a8ced": {"rom_size": 16777216, "rom_crc32": 2533534670, "savesize": 0, "savetype": 0}, "1f5542d6d14c18a541d2c5bb13d3e7f4aa437985": {"rom_size": 16777216, "rom_crc32": 3584260776, "savesize": 0, "savetype": 0}, "41514703cfb51f1851243813a39bf4f915ccfc8c": {"rom_size": 8388608, "rom_crc32": 1871241352, "savesize": 0, "savetype": 0}, "ee1051829c86837ad53427060839d14d00dd5e43": {"rom_size": 16777216, "rom_crc32": 3015888799, "savesize": 0, "savetype": 0}, "4e7763d1fea6e0b59dd089c6a9c3c69db9bd204c": {"rom_size": 16777216, "rom_crc32": 2755700576, "savesize": 0, "savetype": 0}, "c44d979d165d86e30296ec4b9c0c8c836fb11c32": {"rom_size": 8388608, "rom_crc32": 3015416389, "savesize": 0, "savetype": 0}, "fd01276a9e51445f432606298501c386a4556f62": {"rom_size": 16777216, "rom_crc32": 108091797, "savesize": 0, "savetype": 0}, "b090636319671da9f96ddd6548f5196e813679c3": {"rom_size": 16777216, "rom_crc32": 2405878484, "savesize": 0, "savetype": 0}, "f805ac4e16708a24f3c7d25d8c75342810eedd05": {"rom_size": 16777216, "rom_crc32": 1823765842, "savesize": 0, "savetype": 0}, "44e65264816316b4bb1cfb9efa3a3e69a5bf0ec1": {"rom_size": 16777216, "rom_crc32": 2904315928, "savesize": 0, "savetype": 0}, "4a086e01cec7c0938dab9b1aeb6a46ebff17b755": {"rom_size": 16777216, "rom_crc32": 539593219, "savesize": 0, "savetype": 0}, "51c32161265dc86ee18113e9f632fe26cda1a4c6": {"rom_size": 16777216, "rom_crc32": 2683312377, "savesize": 0, "savetype": 0}, "7e9c76a48979ddaf247d1d802651b651143bfafb": {"rom_size": 16777216, "rom_crc32": 1373032112, "savesize": 512, "savetype": 1}, "6c883a1918e39cf4905fed86da9074c6a51fe0a6": {"rom_size": 16777216, "rom_crc32": 346695234, "savesize": 0, "savetype": 0}, "3147932243b5dd0afec3bd8d566978b8b1f51226": {"rom_size": 16777216, "rom_crc32": 459888336, "savesize": 0, "savetype": 0}, "e92d9c9015891260e58781d914c3495eb54d39df": {"rom_size": 16777216, "rom_crc32": 2783474391, "savesize": 0, "savetype": 0}, "58d700e1e708c34e3d244806ab29a81a0f318d5a": {"rom_size": 16777216, "rom_crc32": 2572056105, "savesize": 0, "savetype": 0}, "e50c309d74622bd0e13ebd1d0c894b5aa1240054": {"rom_size": 8388608, "rom_crc32": 4192994985, "savesize": 0, "savetype": 0}, "363add872bcb8f2fa609cfae8fc9b0620b037fad": {"rom_size": 8388608, "rom_crc32": 3853284283, "savesize": 0, "savetype": 0}, "cb3640987c8113eeff460dc31979731d88395aa0": {"rom_size": 16777216, "rom_crc32": 3524625104, "savesize": 512, "savetype": 1}, "b6a71e8e180b87c45034d2e58214fef5ba481171": {"rom_size": 16777216, "rom_crc32": 2150404660, "savesize": 512, "savetype": 1}, "75c652cad9a94cf131c7575cdc29e1d6a58fb204": {"rom_size": 16777216, "rom_crc32": 3217918254, "savesize": 512, "savetype": 1}, "215dc63395438788a5b81c92eac13f9774d36f9c": {"rom_size": 16777216, "rom_crc32": 520240574, "savesize": 512, "savetype": 1}, "af35ca4c137f3162d7c948a084fd8ec4b9aa771c": {"rom_size": 8388608, "rom_crc32": 2572576408, "savesize": 512, "savetype": 1}, "583f4380df23a51c264786e542e9f1f3a88f14f9": {"rom_size": 8388608, "rom_crc32": 1394138899, "savesize": 512, "savetype": 1}, "b8820e77898b2d9d0edd2baaefbbda40a2bf4b25": {"rom_size": 16777216, "rom_crc32": 575183996, "savesize": 65536, "savetype": 5}, "7d8b9ea39fdedcf700635b4f5fa45c1f91458c9e": {"rom_size": 33554432, "rom_crc32": 2496617259, "savesize": 65536, "savetype": 5}, "b822d712d8ba6800a3e951c90acb5ad6350e8bc8": {"rom_size": 16777216, "rom_crc32": 287824905, "savesize": 65536, "savetype": 5}, "e500621012c741ecdb24e772ef3782e84f54ea05": {"rom_size": 33554432, "rom_crc32": 743957896, "savesize": 65536, "savetype": 5}, "03e9c825fce0a38e3e35d977afdf07523704b995": {"rom_size": 33554432, "rom_crc32": 2769150515, "savesize": 65536, "savetype": 5}, "96f128dcd144f198ad2953d56f2c392187a47a3b": {"rom_size": 16777216, "rom_crc32": 2239209472, "savesize": 65536, "savetype": 5}, "c4990ad789bb3d6e843bbec6b6fc406243803342": {"rom_size": 16777216, "rom_crc32": 1269299147, "savesize": 0, "savetype": 0}, "48e5ace66fc3c93771a937030e53fa41746d806c": {"rom_size": 16777216, "rom_crc32": 1476578045, "savesize": 512, "savetype": 1}, "fa28d97f1209972393b70b5f3b364e94ece664fb": {"rom_size": 16777216, "rom_crc32": 2193756962, "savesize": 0, "savetype": 0}, "5117c6b7dcab2c2e88a374db750dc8cb0c58739c": {"rom_size": 16777216, "rom_crc32": 287140247, "savesize": 0, "savetype": 0}, "ccc64e69219dd1845089a6cc930a12113cbf2b94": {"rom_size": 16777216, "rom_crc32": 3574972644, "savesize": 0, "savetype": 0}, "fb80a3e4e10f65b1888757c30433d19a2254c8a7": {"rom_size": 16777216, "rom_crc32": 1909795937, "savesize": 0, "savetype": 0}, "fbc62636acefa9ee1e77b905528e3cfcdf90f10c": {"rom_size": 16777216, "rom_crc32": 116454460, "savesize": 0, "savetype": 0}, "393e738fc6e7941604ca755f8e5728cca308ef3f": {"rom_size": 16777216, "rom_crc32": 991754598, "savesize": 512, "savetype": 1}, "1834557a9d326cfaa0ecabeb6e7cfaba775a0e40": {"rom_size": 16777216, "rom_crc32": 2689395710, "savesize": 512, "savetype": 1}, "11580a468151b20b57835c153bc09c392eb10b66": {"rom_size": 16777216, "rom_crc32": 671451122, "savesize": 8192, "savetype": 2}, "e6d6b28682f4597605986e823c51572568a7f189": {"rom_size": 8388608, "rom_crc32": 1277915977, "savesize": 512, "savetype": 1}, "6fd2ba6a444e59576dc9a602a4972201f225bfda": {"rom_size": 4194304, "rom_crc32": 913406802, "savesize": 0, "savetype": 0}, "5b453342d392f2dc2a1d51b19a6adf63c2f47d1b": {"rom_size": 4194304, "rom_crc32": 1596281698, "savesize": 0, "savetype": 0}, "d539f886b7e0691fc21b254129a43f55b5c3b7a1": {"rom_size": 4194304, "rom_crc32": 1088056358, "savesize": 0, "savetype": 0}, "e4152ba6450253dda7119920ed5b032437145314": {"rom_size": 4194304, "rom_crc32": 1570789504, "savesize": 0, "savetype": 0}, "4cea276c2fb6ef19f3cf333aaa96843464649353": {"rom_size": 4194304, "rom_crc32": 1155626522, "savesize": 0, "savetype": 0}, "68bf5b1c325d9687f1dc0cc4781c60b0b5546274": {"rom_size": 4194304, "rom_crc32": 2046726788, "savesize": 0, "savetype": 0}, "eaedc52cf85cc21aed3c973f65f047f23dde7705": {"rom_size": 4194304, "rom_crc32": 3153276643, "savesize": 0, "savetype": 0}, "320b01a9da702b093f28d11bc5e06818f6ec823e": {"rom_size": 4194304, "rom_crc32": 2905559891, "savesize": 0, "savetype": 0}, "7713d9a00bf97aed984b6500bf05789585e75f69": {"rom_size": 8388608, "rom_crc32": 2232494036, "savesize": 512, "savetype": 1}, "06c572da5eca310c1d892340b01e1e7353c19711": {"rom_size": 16777216, "rom_crc32": 406462983, "savesize": 512, "savetype": 1}, "335af3da137a3c9fa2ec60dfbc95749d37bb69f1": {"rom_size": 8388608, "rom_crc32": 1477673231, "savesize": 8192, "savetype": 2}, "516f7e85ff8645a0236351d9e8cfeefd6608c0dd": {"rom_size": 16777216, "rom_crc32": 402834980, "savesize": 512, "savetype": 1}, "7f6da1c8ceead99044d96a0d4972873ed7495efa": {"rom_size": 16777216, "rom_crc32": 1555052231, "savesize": 512, "savetype": 1}, "43012316155ff00bf394f0dce228f96044a2fe6a": {"rom_size": 33554432, "rom_crc32": 3610436909, "savesize": 512, "savetype": 1}, "204a8504281d8d8cb03df3f034a78d0d837a0fd0": {"rom_size": 33554432, "rom_crc32": 182674303, "savesize": 512, "savetype": 1}, "d75e6cf84b9fa4a8fdb0a79b4cd54af8a258482a": {"rom_size": 16777216, "rom_crc32": 3887769017, "savesize": 512, "savetype": 1}, "a20048b2d3d82eec2917c1181fa3921e1feaff91": {"rom_size": 16777216, "rom_crc32": 1838085258, "savesize": 8192, "savetype": 2}, "0803f5b92104b843618c149dc0477895369cbdab": {"rom_size": 8388608, "rom_crc32": 173630964, "savesize": 0, "savetype": 0}, "ddb751b05b1ee4d6eda08579a9220896701dcf9a": {"rom_size": 16777216, "rom_crc32": 1673225279, "savesize": 512, "savetype": 1}, "1a10d19440ba8fe7440aa2899763b374e3c65a6d": {"rom_size": 16777216, "rom_crc32": 970360627, "savesize": 512, "savetype": 1}, "b7bdcadea69c39f3d822ba0313480242e74de6e6": {"rom_size": 16777216, "rom_crc32": 892711615, "savesize": 512, "savetype": 1}, "f0f147b93309570f73b5140ec1633a6091f3e905": {"rom_size": 16777216, "rom_crc32": 409404728, "savesize": 512, "savetype": 1}, "cf8577cea2ac14543bc5b98c8976113b6ed2733e": {"rom_size": 8388608, "rom_crc32": 1353401668, "savesize": 512, "savetype": 1}, "99c211b15685be0d30004a53eb56f5f89528e268": {"rom_size": 8388608, "rom_crc32": 2403332324, "savesize": 0, "savetype": 0}, "1898ce7edaa6481dfba7af27b94d1c049161eaed": {"rom_size": 4194304, "rom_crc32": 1653247538, "savesize": 0, "savetype": 0}, "b6334bff012721e7ba3bd7c1c44a8496a21df407": {"rom_size": 4194304, "rom_crc32": 2337423351, "savesize": 0, "savetype": 0}, "e78a661f1672b4d1b5e2b544ed6347c38e032c5f": {"rom_size": 4194304, "rom_crc32": 539522899, "savesize": 0, "savetype": 0}, "6adac0de492a39944af746fc986cd907f4c53337": {"rom_size": 4194304, "rom_crc32": 3873191337, "savesize": 0, "savetype": 0}, "7b1b176ae6366128e65d01eb42ac3926de2c1f4a": {"rom_size": 16777216, "rom_crc32": 1730246987, "savesize": 512, "savetype": 1}, "74808cc0e11fb8ea28e2cd3b846b38cfd4a6561f": {"rom_size": 4194304, "rom_crc32": 1337737058, "savesize": 0, "savetype": 0}, "722a5cc005977ca96efd92aee5e369af6a56c686": {"rom_size": 4194304, "rom_crc32": 2868681466, "savesize": 0, "savetype": 0}, "22b0ae1daa77f2a9d1eca84c6c2b817df44a7393": {"rom_size": 4194304, "rom_crc32": 720789140, "savesize": 0, "savetype": 0}, "0d17dcef88711f9105d5a12a274392aaddac102a": {"rom_size": 4194304, "rom_crc32": 48286884, "savesize": 0, "savetype": 0}, "4fed91c372d5eca7987248c3e248cfc7b17ebdf8": {"rom_size": 4194304, "rom_crc32": 3069124304, "savesize": 0, "savetype": 0}, "a62988a1393b13cb122d1712cd7ac25d389596f0": {"rom_size": 4194304, "rom_crc32": 3515987311, "savesize": 0, "savetype": 0}, "627150c155d64f48a0edbe37f4260a6c2251ca89": {"rom_size": 4194304, "rom_crc32": 4096478832, "savesize": 0, "savetype": 0}, "bba1e0946cb5730d982fccb4d474948ffaaad9b3": {"rom_size": 4194304, "rom_crc32": 3687859767, "savesize": 0, "savetype": 0}, "bf363a088ca9bec85819c4c2b6685cbb0be23995": {"rom_size": 33554432, "rom_crc32": 3807945097, "savesize": 0, "savetype": 0}, "e0be19e89d7de44ec8f7f2b0eaced7bffa1d017b": {"rom_size": 33554432, "rom_crc32": 3401629912, "savesize": 32768, "savetype": 3}, "7d5c3c5b8ecfe3f5a6a761c06536a73bad52e878": {"rom_size": 33554432, "rom_crc32": 77856791, "savesize": 32768, "savetype": 3}, "39876864a266997f78e68ed0bc7f3b92ef6026f0": {"rom_size": 8388608, "rom_crc32": 837122585, "savesize": 512, "savetype": 1}, "6d4278904418117c6dedbd85038161f23031c114": {"rom_size": 4194304, "rom_crc32": 1140187479, "savesize": 0, "savetype": 0}, "bee70e07e8d7e61028db479ae9885e284d87550e": {"rom_size": 4194304, "rom_crc32": 3913985993, "savesize": 512, "savetype": 1}, "3fbeeaf525d2311fce770f1eed18d2b56c7036ad": {"rom_size": 4194304, "rom_crc32": 1903300248, "savesize": 512, "savetype": 1}, "6aab71501717813f1ced8bae89c9e2010f87a979": {"rom_size": 4194304, "rom_crc32": 3497137314, "savesize": 0, "savetype": 0}, "fb1b71dc873e63fa5fbf948139e7e76cf21b0c97": {"rom_size": 8388608, "rom_crc32": 346197352, "savesize": 512, "savetype": 1}, "c8703a5cd5d76742e2822f4d0f6ed6863806b7c0": {"rom_size": 8388608, "rom_crc32": 3989536070, "savesize": 8192, "savetype": 2}, "5cea9f25cfb891095be0c2fdd2159801501e1bf4": {"rom_size": 8388608, "rom_crc32": 4238709892, "savesize": 32768, "savetype": 3}, "b189d4c83f60dbf4a1ec9c13676be12540d881cf": {"rom_size": 8388608, "rom_crc32": 4257754776, "savesize": 32768, "savetype": 3}, "b5b006f2a476905fc9a76fbb36a04199a3ab99ca": {"rom_size": 8388608, "rom_crc32": 612874331, "savesize": 512, "savetype": 1}, "b0debfa914aebe1073eef462dadc77a8408697ed": {"rom_size": 8388608, "rom_crc32": 354929292, "savesize": 512, "savetype": 1}, "544a53ccfaaa5e868654bd322b09f1b65aa34235": {"rom_size": 8388608, "rom_crc32": 3305214335, "savesize": 512, "savetype": 1}, "17c00dae90ce46d12b33d8d2646bd1c31ca38537": {"rom_size": 8388608, "rom_crc32": 2263688601, "savesize": 32768, "savetype": 3}, "2550e1a45466426003b9aa0190621bfb8dd2ec19": {"rom_size": 8388608, "rom_crc32": 1727736297, "savesize": 65536, "savetype": 5}, "8ea95333d61d058b6ae1c0dae6dd0eee2b183619": {"rom_size": 4194304, "rom_crc32": 654118857, "savesize": 65536, "savetype": 5}, "2bd92f45310e335522a7c7c621737257b81ffe4d": {"rom_size": 4194304, "rom_crc32": 3689877868, "savesize": 65536, "savetype": 5}, "5f683457960b5963da4e6f5a5fe65a75f96d6454": {"rom_size": 8388608, "rom_crc32": 1510583014, "savesize": 65536, "savetype": 5}, "f65375328f67f328a1c9a0d725038b7eaed397f6": {"rom_size": 8388608, "rom_crc32": 1523639665, "savesize": 65536, "savetype": 5}, "e1179c2537db6f49e08e7ae9af7bcbf59d264cf9": {"rom_size": 4194304, "rom_crc32": 1468116143, "savesize": 32768, "savetype": 3}, "dc9ead0f829409096a9fffabcfcb7f086bb678f6": {"rom_size": 4194304, "rom_crc32": 915456253, "savesize": 0, "savetype": 0}, "0015cc13a7ea4f861b02aa58e56e05ae1bf7c86f": {"rom_size": 4194304, "rom_crc32": 3536770676, "savesize": 0, "savetype": 0}, "b7d98b7033713c2445f8d1a96811a67fc3a7d6a7": {"rom_size": 4194304, "rom_crc32": 3583866171, "savesize": 512, "savetype": 1}, "8d17101858ed100e49ee42c4f13703972386d662": {"rom_size": 4194304, "rom_crc32": 1735745536, "savesize": 0, "savetype": 0}, "6fdacf872899a5a42e7398185c943a502911d161": {"rom_size": 4194304, "rom_crc32": 2817101502, "savesize": 512, "savetype": 1}, "b7524139fdab69f35d1cc2eaa7961a2abc01d5c5": {"rom_size": 4194304, "rom_crc32": 3027943456, "savesize": 512, "savetype": 1}, "513b5cba1f228ebc450cb5eca81404b42e965118": {"rom_size": 4194304, "rom_crc32": 2430032354, "savesize": 0, "savetype": 0}, "0da5359116a82343382a2276614e97e69bc6f4f6": {"rom_size": 4194304, "rom_crc32": 2342615480, "savesize": 0, "savetype": 0}, "469633a0b88f6bf34a96cc93419b94ca16a14119": {"rom_size": 4194304, "rom_crc32": 2210147628, "savesize": 0, "savetype": 0}, "34d366289ea0964da74a880c60ac155b4569184b": {"rom_size": 8388608, "rom_crc32": 2734079198, "savesize": 0, "savetype": 0}, "fd91fa5e038424448f97c91e9ad201fd4853cc0f": {"rom_size": 8388608, "rom_crc32": 977599701, "savesize": 0, "savetype": 0}, "b19ee706d54f43f35c60886be4ceb9cf0656b7b7": {"rom_size": 8388608, "rom_crc32": 916513106, "savesize": 32768, "savetype": 3}, "bd8afb70379462614b7d27e24b562a4efb726bf2": {"rom_size": 4194304, "rom_crc32": 1487499999, "savesize": 512, "savetype": 1}, "b00a315c7938507d31e82e7849c7f3e13543c7a2": {"rom_size": 4194304, "rom_crc32": 3958855608, "savesize": 512, "savetype": 1}, "a05d7bf2f56a402b0306adf61b7f7113e064c457": {"rom_size": 4194304, "rom_crc32": 3238473254, "savesize": 8192, "savetype": 2}, "e70b0494e38564ff7953465e55426084019af354": {"rom_size": 4194304, "rom_crc32": 3037516134, "savesize": 8192, "savetype": 2}, "e7a3fa1f5d6f5b55487e1893f85f503083620174": {"rom_size": 8388608, "rom_crc32": 4091813235, "savesize": 32768, "savetype": 3}, "1dc9e940f212651f8652d880d3d09693de2a09f9": {"rom_size": 4194304, "rom_crc32": 1498397564, "savesize": 512, "savetype": 1}, "76f582f8617ece8ec6c933326aa91642c382041d": {"rom_size": 4194304, "rom_crc32": 1484724975, "savesize": 512, "savetype": 1}, "70f5e6fb997d6210ae494a69b4453aa17c82c555": {"rom_size": 4194304, "rom_crc32": 1085506550, "savesize": 512, "savetype": 1}, "bf86e010c4a9898814d9332dddb7a7b01be01f66": {"rom_size": 4194304, "rom_crc32": 3764941455, "savesize": 512, "savetype": 1}, "d1d41252a3dccd4b514545bdd61295e0f09ac92d": {"rom_size": 4194304, "rom_crc32": 2465829525, "savesize": 8192, "savetype": 2}, "a0cb0c576ceebd5e2acc57ea7bd2239d0d98653f": {"rom_size": 4194304, "rom_crc32": 636019405, "savesize": 512, "savetype": 1}, "8d7df3eaafac9c22b595e5e8c84fa6e8c74bec9f": {"rom_size": 4194304, "rom_crc32": 3433389565, "savesize": 512, "savetype": 1}, "ff182279a663d3209528fbdf5689be71705a4a36": {"rom_size": 8388608, "rom_crc32": 3757339190, "savesize": 512, "savetype": 1}, "bfcc2d7267cae7694e92d55f205648522bb239f9": {"rom_size": 4194304, "rom_crc32": 225004708, "savesize": 0, "savetype": 0}, "f545ac636d25f30a6a292ad0a7b516b71939b350": {"rom_size": 4194304, "rom_crc32": 3922320683, "savesize": 512, "savetype": 1}, "df9c1fbcfad83df2e75152c259b239fcbd66a446": {"rom_size": 4194304, "rom_crc32": 3808858622, "savesize": 32768, "savetype": 3}, "df3a935cc1c6d04378ca3b65a55ced7d74f2e34e": {"rom_size": 8388608, "rom_crc32": 1625479939, "savesize": 32768, "savetype": 3}, "5d5592688ca41fb8618098595f7bfa575b49571a": {"rom_size": 8388608, "rom_crc32": 1699707158, "savesize": 512, "savetype": 1}, "e7757aa0534b5808e3b1679a84df3e6fe2466336": {"rom_size": 8388608, "rom_crc32": 3298123625, "savesize": 512, "savetype": 1}, "3de080aa22619698f4fe2832f851bddba129cd53": {"rom_size": 4194304, "rom_crc32": 881127737, "savesize": 0, "savetype": 0}, "68e64928b9e3bf903754386d1dd648755bc070db": {"rom_size": 4194304, "rom_crc32": 3614103085, "savesize": 8192, "savetype": 2}, "a7653c0b833e7d1851be417d5fcb575889f680dc": {"rom_size": 8388608, "rom_crc32": 1770223570, "savesize": 512, "savetype": 1}, "68bce3e26a24232a867483eda39b74b808caaf90": {"rom_size": 16777216, "rom_crc32": 4032036799, "savesize": 0, "savetype": 0}, "dc83d91c4b45eccbd016ca0b3ff707ad4a325d1d": {"rom_size": 4194304, "rom_crc32": 3370806686, "savesize": 0, "savetype": 0}, "f462ad3218eb867b23598b19bb139d9cfdadf7d9": {"rom_size": 4194304, "rom_crc32": 713567910, "savesize": 0, "savetype": 0}, "f1609891cbacb174776f35589219683d65533716": {"rom_size": 8388608, "rom_crc32": 3664074200, "savesize": 8192, "savetype": 2}, "eba8fa1856d214838d768d6c8fb389d985708b87": {"rom_size": 8388608, "rom_crc32": 2068239458, "savesize": 8192, "savetype": 2}, "1b53dc64f2f625d058d65897179a3cdd9da47f05": {"rom_size": 4194304, "rom_crc32": 3386122037, "savesize": 8192, "savetype": 2}, "245b031e635b3ff6b5ba373b78c7a2e1ed9e7e74": {"rom_size": 4194304, "rom_crc32": 2313604489, "savesize": 0, "savetype": 0}, "b9c80f9c0dd453a9011763e5d026de7d5e8aefef": {"rom_size": 4194304, "rom_crc32": 620844149, "savesize": 0, "savetype": 0}, "d4b13e94eb2e5a38291d4abc5e3f72d132dba273": {"rom_size": 4194304, "rom_crc32": 1929698468, "savesize": 0, "savetype": 0}, "7a4583a0fde5407e492ba6ce30abea5bb16782a4": {"rom_size": 16777216, "rom_crc32": 3577517112, "savesize": 32768, "savetype": 3}, "fa50f8e66afc3f2021216c0db085d8f9a9788977": {"rom_size": 16777216, "rom_crc32": 1102287380, "savesize": 0, "savetype": 0}, "00b8babf652634ea52e4f678a959af40e5e9e2e8": {"rom_size": 8388608, "rom_crc32": 2215449025, "savesize": 0, "savetype": 0}, "ef9b28f1f2de4c846ba4bcf92cf110529484bf18": {"rom_size": 8388608, "rom_crc32": 1390164075, "savesize": 512, "savetype": 1}, "5611d7e202f0bfd642887eece09766cb9b9d1212": {"rom_size": 8388608, "rom_crc32": 2370937089, "savesize": 512, "savetype": 1}, "fd1f7588539a47cdb8d4caf6bed07468aa081f62": {"rom_size": 4194304, "rom_crc32": 913909741, "savesize": 0, "savetype": 0}, "4ff2e579ae5644d40dffd9f4ed001ac49dbab21f": {"rom_size": 4194304, "rom_crc32": 4109354477, "savesize": 0, "savetype": 0}, "b0be632448f4c24413c322fc490fc0837d3f9ed5": {"rom_size": 4194304, "rom_crc32": 2912612645, "savesize": 512, "savetype": 1}, "2bebc5c5255578fc59f0240692e2e197f678e2b4": {"rom_size": 4194304, "rom_crc32": 1107470797, "savesize": 0, "savetype": 0}, "3823afe9e2b426931df3672060e80e4c990fcc7f": {"rom_size": 4194304, "rom_crc32": 2168027840, "savesize": 0, "savetype": 0}, "68bcb7c09d7ac26c9a77c1286115fdc242e9e612": {"rom_size": 4194304, "rom_crc32": 1830243880, "savesize": 0, "savetype": 0}, "54fb074282bb2a010d6142df4816f807651fc622": {"rom_size": 8388608, "rom_crc32": 1705800908, "savesize": 512, "savetype": 1}, "1ed3284838fcc696c7937fdf6764e36e300a9864": {"rom_size": 4194304, "rom_crc32": 2588561567, "savesize": 0, "savetype": 0}, "ea6cb7e2c80e230d72ca4c0a6799310561affa11": {"rom_size": 4194304, "rom_crc32": 769182679, "savesize": 0, "savetype": 0}, "bf2c6abcca55fa1551a8ecaa05658ebb558ac273": {"rom_size": 4194304, "rom_crc32": 3267504882, "savesize": 0, "savetype": 0}, "cddb524590e9b9dc9c0379eef350441a0eedb87d": {"rom_size": 16777216, "rom_crc32": 2277658709, "savesize": 512, "savetype": 1}, "bc0f81d64293aacfc285f511b017cba1e2ccc377": {"rom_size": 16777216, "rom_crc32": 2765809931, "savesize": 512, "savetype": 1}, "8d8cbc01f8fa450adaef495290c68ad8583a0f56": {"rom_size": 16777216, "rom_crc32": 1775101014, "savesize": 32768, "savetype": 3}, "1163e31678a0ab5d114071a8f02a073c9b422c3c": {"rom_size": 8388608, "rom_crc32": 2453012745, "savesize": 0, "savetype": 0}, "1a5fdc3cf91581434fe087779219d3bce3b38127": {"rom_size": 8388608, "rom_crc32": 2847010021, "savesize": 512, "savetype": 1}, "ee49adc59d9bcd6443a283d9e75fda9d924f58b0": {"rom_size": 8388608, "rom_crc32": 506366263, "savesize": 8192, "savetype": 2}, "b2b4ccf021a4c7ea4cbbb09d3d87d82ae32f4313": {"rom_size": 8388608, "rom_crc32": 3898708017, "savesize": 8192, "savetype": 2}, "64274410d4370e93695792368bab6c48b86b3784": {"rom_size": 8388608, "rom_crc32": 3805891341, "savesize": 8192, "savetype": 2}, "f2b7e9d728ff1ba2c78236aa66211aae722c2915": {"rom_size": 4194304, "rom_crc32": 3115884511, "savesize": 0, "savetype": 0}, "9fa55b8bb175435ac357c3d4c24105470265ca61": {"rom_size": 4194304, "rom_crc32": 1157998136, "savesize": 0, "savetype": 0}, "316f9eda84451aff5aaf8b57e3cc87c8c1942eb6": {"rom_size": 4194304, "rom_crc32": 3012857276, "savesize": 0, "savetype": 0}, "82c0a8ce4295e290a0d7fb6842bc72f457fa7c48": {"rom_size": 4194304, "rom_crc32": 2345804997, "savesize": 0, "savetype": 0}, "4e1c5039315a40b9e37f89c9410e7980c44c932a": {"rom_size": 8388608, "rom_crc32": 2300172332, "savesize": 0, "savetype": 0}, "dbf9f0ea08d9aa4b288c322474f53d6ef30ee01c": {"rom_size": 4194304, "rom_crc32": 1263438791, "savesize": 0, "savetype": 0}, "dfaaec37c403b19c4c9541269553219d54b0913c": {"rom_size": 4194304, "rom_crc32": 2618981835, "savesize": 0, "savetype": 0}, "bc408e97e79f737c5c49816527143d91fcbbcf4e": {"rom_size": 4194304, "rom_crc32": 2983364975, "savesize": 0, "savetype": 0}, "ad0c007ef087c70afa6535cff1cd5986bfbe7f74": {"rom_size": 4194304, "rom_crc32": 2000581575, "savesize": 0, "savetype": 0}, "7110944f52ac2cd0e49bd3caf1d6601abfeeb83c": {"rom_size": 8388608, "rom_crc32": 2489812928, "savesize": 8192, "savetype": 2}, "f145923104957516b543ca19529954602ad3c832": {"rom_size": 4194304, "rom_crc32": 1389940993, "savesize": 0, "savetype": 0}, "37e064596d338016ec3e9b544c0bf2289a10c0dd": {"rom_size": 8388608, "rom_crc32": 1392413282, "savesize": 8192, "savetype": 2}, "4c07ebd5e8f14f207832b1dd1dda0893fe6690ff": {"rom_size": 4194304, "rom_crc32": 3965545213, "savesize": 0, "savetype": 0}, "d482f8ecb402f555f669d7db312a089458552039": {"rom_size": 4194304, "rom_crc32": 3590003104, "savesize": 512, "savetype": 1}, "a55cf188f2af5e6f86fd6b68a0b1d1ae92bddfc2": {"rom_size": 8388608, "rom_crc32": 560399606, "savesize": 8192, "savetype": 2}, "68555a0a4ea7b0f6606ff91c58a74276dda17ebb": {"rom_size": 8388608, "rom_crc32": 3997286635, "savesize": 8192, "savetype": 2}, "487667c9f71d20924af7be63f6cf447580a9b17a": {"rom_size": 8388608, "rom_crc32": 3605268047, "savesize": 8192, "savetype": 2}, "d04887d85e433661c99574dde56ed79fc3bad1a7": {"rom_size": 4194304, "rom_crc32": 2877123607, "savesize": 512, "savetype": 1}, "8b80a7a6c741e2549bdba114e77ef3a544549897": {"rom_size": 4194304, "rom_crc32": 3557244467, "savesize": 512, "savetype": 1}, "d40e3ec9b50fd5111f2e9d7fa0da8b82c9bfa817": {"rom_size": 4194304, "rom_crc32": 1462814810, "savesize": 0, "savetype": 0}, "474e47ed141ca2fc5531c3e3dff766b342fc0838": {"rom_size": 4194304, "rom_crc32": 1277807048, "savesize": 0, "savetype": 0}, "fc13086ddae52f969a3dd6b7f833b3ad544fee29": {"rom_size": 4194304, "rom_crc32": 1213438795, "savesize": 512, "savetype": 1}, "4c879826da6a116f1e35fd1d8de0e7005fceed11": {"rom_size": 4194304, "rom_crc32": 2671162597, "savesize": 512, "savetype": 1}, "516c1bac91c4625b0d80d2fef4072a6a57f9a51f": {"rom_size": 4194304, "rom_crc32": 2461847954, "savesize": 512, "savetype": 1}, "babf7ab2e74c3a364723b9af2f02fb7701ed3de7": {"rom_size": 4194304, "rom_crc32": 3420069169, "savesize": 512, "savetype": 1}, "e315f55c17a65e347fc82e4d54bddbcf28ac4bd5": {"rom_size": 4194304, "rom_crc32": 2093775284, "savesize": 512, "savetype": 1}, "ea6b73cb59bfbd1e742cc17a528310de7472be0a": {"rom_size": 4194304, "rom_crc32": 3674678243, "savesize": 512, "savetype": 1}, "1174c2572bba9441f4d70ba6402479657c93296e": {"rom_size": 4194304, "rom_crc32": 982397359, "savesize": 512, "savetype": 1}, "0528ac52ce2b20d642804fee61ca24ce087005d5": {"rom_size": 4194304, "rom_crc32": 1320262535, "savesize": 512, "savetype": 1}, "f0c715c92497dddbd4056a433e8891af1e71e7c9": {"rom_size": 4194304, "rom_crc32": 250094953, "savesize": 512, "savetype": 1}, "2eda0484738e36bebc3599bb2652dd2f977b0d00": {"rom_size": 4194304, "rom_crc32": 678579365, "savesize": 512, "savetype": 1}, "a94789e9f852c1c58d4645b8b2e427b2d8de26cb": {"rom_size": 4194304, "rom_crc32": 3925721641, "savesize": 512, "savetype": 1}, "e5a342ea85d60f0fb5371fe560aeeacc074676cd": {"rom_size": 4194304, "rom_crc32": 2419085661, "savesize": 32768, "savetype": 3}, "498dc4eee92e910045d3aab70bd4aa48b16b9dd0": {"rom_size": 4194304, "rom_crc32": 2133721888, "savesize": 32768, "savetype": 3}, "37a5e290a913b16b8f06db1877411d5ee450abde": {"rom_size": 8388608, "rom_crc32": 4028555372, "savesize": 32768, "savetype": 3}, "d456df56ecc75151c3f82708ef7ec4456bb78693": {"rom_size": 8388608, "rom_crc32": 2272834410, "savesize": 32768, "savetype": 3}, "ce08b75e66ce8362c86a270370897a31cdb8f11f": {"rom_size": 8388608, "rom_crc32": 488353835, "savesize": 32768, "savetype": 3}, "160fa7d3487c616f5066e54218679cadf1d1dfe0": {"rom_size": 8388608, "rom_crc32": 1229230812, "savesize": 512, "savetype": 1}, "adee69db391deb6c0b92c9b156f7586abf56a201": {"rom_size": 8388608, "rom_crc32": 3740129241, "savesize": 512, "savetype": 1}, "c79b7848e8f3675313bf1a5b630feb58d4bea350": {"rom_size": 8388608, "rom_crc32": 74969427, "savesize": 0, "savetype": 0}, "6e0e447a2b19397f159e3f5b414b9731dc54f9f1": {"rom_size": 8388608, "rom_crc32": 4216273122, "savesize": 8192, "savetype": 2}, "3a12235ad4b52de3f1d996a4d6f3838ea44aad6c": {"rom_size": 8388608, "rom_crc32": 3753225123, "savesize": 8192, "savetype": 2}, "5a43c40ea724951b390d8efc2ea3ed3318afe361": {"rom_size": 8388608, "rom_crc32": 1739417999, "savesize": 8192, "savetype": 2}, "17e5c4c35296723bec09ea617a2540a51d3d66e3": {"rom_size": 8388608, "rom_crc32": 844383796, "savesize": 8192, "savetype": 2}, "cdf09d54f54a1e93c05dba7c9633d9ae07b23588": {"rom_size": 16777216, "rom_crc32": 3113083812, "savesize": 512, "savetype": 1}, "5d776c0b84103e412233fdc0a67baa49cf93751b": {"rom_size": 16777216, "rom_crc32": 1849700513, "savesize": 512, "savetype": 1}, "e00c3d37d5953dcb6cb6153fa7e127cb06d63099": {"rom_size": 4194304, "rom_crc32": 291607794, "savesize": 0, "savetype": 0}, "e7f0788f2a5fb5de94b408410560a46e56374b84": {"rom_size": 4194304, "rom_crc32": 4110985143, "savesize": 0, "savetype": 0}, "586d7e848802b9785f3bd61627ec3c758b71e7a8": {"rom_size": 4194304, "rom_crc32": 1449256730, "savesize": 0, "savetype": 0}, "e9fd2cc85a81228b339962e602e3630c040cb1e5": {"rom_size": 4194304, "rom_crc32": 701642805, "savesize": 0, "savetype": 0}, "ae1e349b92e481b78c7c5e46e22a93bf8fa871fd": {"rom_size": 8388608, "rom_crc32": 3680592107, "savesize": 512, "savetype": 1}, "8d994e99207090dc015088d5be0c6e6178a75e49": {"rom_size": 8388608, "rom_crc32": 1317692684, "savesize": 512, "savetype": 1}, "33db191c05c2ba316d4a6fbc3a02518391ef0c93": {"rom_size": 8388608, "rom_crc32": 1550863550, "savesize": 512, "savetype": 1}, "235b8affea0cea0f62518e44618a9a58346c3a6c": {"rom_size": 4194304, "rom_crc32": 1955805618, "savesize": 0, "savetype": 0}, "8ff49cdd1845ecd9f5b90081b0c3a67a1b37573b": {"rom_size": 4194304, "rom_crc32": 2852222311, "savesize": 0, "savetype": 0}, "7b2748e0fbfd9a89c45f7e1d5698cd585d1d2c42": {"rom_size": 4194304, "rom_crc32": 2087558899, "savesize": 0, "savetype": 0}, "5462bfa9f5a76722a9ab23329b16a0cce92b7568": {"rom_size": 4194304, "rom_crc32": 3122151461, "savesize": 0, "savetype": 0}, "23548b7794ca9e6785933a126d0fb7e1868f754b": {"rom_size": 4194304, "rom_crc32": 2091362834, "savesize": 0, "savetype": 0}, "61128713f10a8b62e5a12e2b1eac0676b9e41988": {"rom_size": 4194304, "rom_crc32": 2617949659, "savesize": 0, "savetype": 0}, "29599b441eaa9d9714f81ff1ef601632c0e67c41": {"rom_size": 8388608, "rom_crc32": 741892803, "savesize": 0, "savetype": 0}, "cf26f02ffe016a93c78567ac118cccf706a933a2": {"rom_size": 8388608, "rom_crc32": 3382555297, "savesize": 0, "savetype": 0}, "4739261bcb733efd9ae036786436182924dc6271": {"rom_size": 8388608, "rom_crc32": 4071646311, "savesize": 8192, "savetype": 2}, "7e64e6181bc26f1e2031b0242f3a2edf39179391": {"rom_size": 8388608, "rom_crc32": 4286154714, "savesize": 8192, "savetype": 2}, "e20e9da2dd3fc62e656bc3be4a93647ec31cdb0e": {"rom_size": 8388608, "rom_crc32": 866071992, "savesize": 0, "savetype": 0}, "d12ab05e0e0276e13bf22fba886cd0f6c779dea6": {"rom_size": 8388608, "rom_crc32": 321316483, "savesize": 8192, "savetype": 2}, "13d4956c7950828d48c8162aca8e7225055c65fb": {"rom_size": 8388608, "rom_crc32": 4013396177, "savesize": 0, "savetype": 0}, "b06d3f328465656d73fbcb857859c42ed226c9ea": {"rom_size": 8388608, "rom_crc32": 2017116359, "savesize": 0, "savetype": 0}, "dcfc2a912c4584ebdc8eb77fea30eb8daeaabf0e": {"rom_size": 8388608, "rom_crc32": 2678159669, "savesize": 0, "savetype": 0}, "9af14b81eb79edfb2e16c067dc5662913b674728": {"rom_size": 16777216, "rom_crc32": 2210988294, "savesize": 512, "savetype": 1}, "eb96e927a60a72b91fbedf03c87824e7277ef71d": {"rom_size": 8388608, "rom_crc32": 1842252326, "savesize": 8192, "savetype": 2}, "c6d3ca775f3a6559a96934081712e3bbe13e21a8": {"rom_size": 8388608, "rom_crc32": 1468658753, "savesize": 8192, "savetype": 2}, "d8716178fedc225e007f801778ba13a17468ef78": {"rom_size": 8388608, "rom_crc32": 3645992528, "savesize": 32768, "savetype": 3}, "866324bd61bc417a83ba17ce4638933f31a24e11": {"rom_size": 8388608, "rom_crc32": 1096245383, "savesize": 32768, "savetype": 3}, "69e574eeefa22c8f0fb6496905d75da261f3dad4": {"rom_size": 8388608, "rom_crc32": 2565140630, "savesize": 32768, "savetype": 3}, "b80abb6b361e2448ec9cab87b3b2d721a0593bc0": {"rom_size": 8388608, "rom_crc32": 3834538953, "savesize": 32768, "savetype": 3}, "1343f5a87f03ee098a9dd1ab5e1e121d17db2eb7": {"rom_size": 8388608, "rom_crc32": 475492942, "savesize": 32768, "savetype": 3}, "d8bd808e8777fc2baa657ea95c926c3f8141565d": {"rom_size": 8388608, "rom_crc32": 521389087, "savesize": 32768, "savetype": 3}, "37380f76a126a662f1e1a4139babfe646c14b2bd": {"rom_size": 8388608, "rom_crc32": 4250356027, "savesize": 32768, "savetype": 3}, "fd4327c1db3c488dacedc7fa1f765850e39011e9": {"rom_size": 4194304, "rom_crc32": 201454520, "savesize": 512, "savetype": 1}, "41cbe3b6a7fdf463e67b02d5589b13b51953401b": {"rom_size": 8388608, "rom_crc32": 1623182478, "savesize": 512, "savetype": 1}, "f6100e78ca4cc448daa3d54c39402a32d2a8dd2c": {"rom_size": 8388608, "rom_crc32": 2556114692, "savesize": 512, "savetype": 1}, "804776c4545693bc6e5610a7906e539dde5b9613": {"rom_size": 4194304, "rom_crc32": 2371877834, "savesize": 0, "savetype": 0}, "cec5bcf9dc4138d299c426aa97855c66e6cad01c": {"rom_size": 8388608, "rom_crc32": 4137197503, "savesize": 0, "savetype": 0}, "fcc7f42792898bf7cc5df6b86d4ca70de8c36b6f": {"rom_size": 4194304, "rom_crc32": 2704761020, "savesize": 0, "savetype": 0}, "14d77dfd18c6de115a9cc27895bef5075e1e6f71": {"rom_size": 4194304, "rom_crc32": 3665067161, "savesize": 512, "savetype": 1}, "a2229b242021d74b12acb77ebff8c225b709622f": {"rom_size": 4194304, "rom_crc32": 4168841339, "savesize": 0, "savetype": 0}, "1b54d4bfd5524a692f98df8861b54d0d97b09419": {"rom_size": 8388608, "rom_crc32": 4145504698, "savesize": 8192, "savetype": 2}, "454634508b459ea0e3714cce619e70b49c45c043": {"rom_size": 4194304, "rom_crc32": 1634770237, "savesize": 65536, "savetype": 5}, "38b849dcb4655fd3b944c78806274cb809881251": {"rom_size": 4194304, "rom_crc32": 1360125781, "savesize": 8192, "savetype": 2}, "3ae176c328002e81d69707b6a723d2833e27c9c2": {"rom_size": 4194304, "rom_crc32": 867163112, "savesize": 8192, "savetype": 2}, "00e72ff2fbedc87621e67fdb4940bea3680a2bd6": {"rom_size": 8388608, "rom_crc32": 47144540, "savesize": 8192, "savetype": 2}, "3fe11d46aaaef8550115f871705c7d1dbbff648c": {"rom_size": 8388608, "rom_crc32": 1246308139, "savesize": 8192, "savetype": 2}, "a909505d0087743f557e0feaf749638c155bd366": {"rom_size": 16777216, "rom_crc32": 1366092486, "savesize": 0, "savetype": 0}, "b24abc01c4210a93d8bbe90164b6c0f39c712475": {"rom_size": 16777216, "rom_crc32": 4253812462, "savesize": 512, "savetype": 1}, "4214861ae3831c9ab40f082b11420062f2e48159": {"rom_size": 16777216, "rom_crc32": 2510396476, "savesize": 512, "savetype": 1}, "2ffb1c48840bbf0ee8487ca8f97fb0d8c8f2d831": {"rom_size": 8388608, "rom_crc32": 3471216718, "savesize": 0, "savetype": 0}, "d299ff18095fed177a42c8a1c710cd1610ecfff1": {"rom_size": 4194304, "rom_crc32": 56869439, "savesize": 512, "savetype": 1}, "ee889c2f29ba26b9a587180c1b91bd31801c3371": {"rom_size": 4194304, "rom_crc32": 3310093008, "savesize": 512, "savetype": 1}, "9b91e27a9825fc4a1aea6af3e70567fcbfd0ef87": {"rom_size": 4194304, "rom_crc32": 1464403956, "savesize": 512, "savetype": 1}, "ae0672a742bd8501694fa2c0c72e7ce677ae8dc0": {"rom_size": 8388608, "rom_crc32": 1410507341, "savesize": 0, "savetype": 0}, "449130889acda1d899c23db1f84f9ac655efa70f": {"rom_size": 8388608, "rom_crc32": 3280942384, "savesize": 0, "savetype": 0}, "dc34daaf51d99ea78ee89fe4dea8d77f034d6604": {"rom_size": 4194304, "rom_crc32": 3672908388, "savesize": 512, "savetype": 1}, "335447c15329d31e5ab5c6bb7b1c9de9bd423d86": {"rom_size": 8388608, "rom_crc32": 2640768094, "savesize": 512, "savetype": 1}, "130c62a5afbb83f3eb9cdeaad66ebde05834bbaf": {"rom_size": 8388608, "rom_crc32": 3168982670, "savesize": 512, "savetype": 1}, "b602f51ffd3355d5344fd24e707c50527b44893f": {"rom_size": 8388608, "rom_crc32": 1071684660, "savesize": 512, "savetype": 1}, "7c4f112f461a6203336aceed3efb04aa31af12e3": {"rom_size": 16777216, "rom_crc32": 3101454683, "savesize": 512, "savetype": 1}, "259c2d0dc8bb014f4a689d2454fc7fbc58b640b9": {"rom_size": 16777216, "rom_crc32": 4110089423, "savesize": 512, "savetype": 1}, "e118686884d14cac6675d31a4fbf770e21f0076d": {"rom_size": 4194304, "rom_crc32": 2420856276, "savesize": 32768, "savetype": 3}, "bbfe8c37a98566a385fa9db5db35e3796fdb0809": {"rom_size": 16777216, "rom_crc32": 2689327597, "savesize": 32768, "savetype": 3}, "a8f8a322d27b9a8e9b315420b55e949bc0600257": {"rom_size": 16777216, "rom_crc32": 2167337897, "savesize": 32768, "savetype": 3}, "fe1abe84155f4e56f723166b47454c653cd0740c": {"rom_size": 16777216, "rom_crc32": 141024297, "savesize": 0, "savetype": 0}, "dff67214f1a319270f01f332c960a22ea5f782b5": {"rom_size": 16777216, "rom_crc32": 4034266112, "savesize": 32768, "savetype": 3}, "f99f2182aa5f4832c6c915bd943bd726062fb916": {"rom_size": 16777216, "rom_crc32": 3587455819, "savesize": 32768, "savetype": 3}, "fb32766723dad5d1bf299825216bad5723d0fd30": {"rom_size": 16777216, "rom_crc32": 3006138425, "savesize": 32768, "savetype": 3}, "5d493b77f1256549533e0e3d874bf8429fca1b75": {"rom_size": 8388608, "rom_crc32": 1923438401, "savesize": 512, "savetype": 1}, "fc5ee7127bf5f9213a5098512c293bdc6e1e21b6": {"rom_size": 8388608, "rom_crc32": 94646334, "savesize": 32768, "savetype": 3}, "7fc6b0a9345207c51c6cff6450bd63eb06f306cd": {"rom_size": 8388608, "rom_crc32": 724236846, "savesize": 8192, "savetype": 2}, "e78809775746af6e3a56a69b9dc8bdc12ffd62df": {"rom_size": 4194304, "rom_crc32": 3788728972, "savesize": 512, "savetype": 1}, "d2ed43da276848490336b055f7270801d55eb965": {"rom_size": 4194304, "rom_crc32": 2389560659, "savesize": 512, "savetype": 1}, "0c06920f6e450dcf959743ff1aebc7f39499110c": {"rom_size": 8388608, "rom_crc32": 751651093, "savesize": 0, "savetype": 0}, "edd5e0526306d27cd54bd95a548db38e3501ae63": {"rom_size": 33554432, "rom_crc32": 2649083144, "savesize": 65536, "savetype": 5}, "0c1eb48f59af56de00fe35a34b3ea3eac8376546": {"rom_size": 8388608, "rom_crc32": 2593249265, "savesize": 32768, "savetype": 3}, "e89e4399aa36d7235873c24ec27cc51b8ff4e005": {"rom_size": 16777216, "rom_crc32": 3067581558, "savesize": 512, "savetype": 1}, "42c33d17dddd74bb62b898a50cde1edfb92fb8b6": {"rom_size": 4194304, "rom_crc32": 1775722683, "savesize": 0, "savetype": 0}, "d7c1977aa274d8dddb59fa08d79ab4bdc6a539f8": {"rom_size": 4194304, "rom_crc32": 3855042008, "savesize": 0, "savetype": 0}, "0fab68d90cef5b0e59b3ae57c9314eb0d8fe9aef": {"rom_size": 16777216, "rom_crc32": 198799371, "savesize": 32768, "savetype": 3}, "fdb37dea62528c3045d7e9f3e1dbb9d43d115562": {"rom_size": 16777216, "rom_crc32": 376434379, "savesize": 32768, "savetype": 3}, "19342cab1ce61c6b513edf40bfdab9b9b9e43c44": {"rom_size": 8388608, "rom_crc32": 932416676, "savesize": 0, "savetype": 0}, "59188d9d763e24e744b6f294403f76c31742be1c": {"rom_size": 8388608, "rom_crc32": 1477468041, "savesize": 32768, "savetype": 3}, "8b686cee5bf0a1482003b33ab17fe5dc277a1ff3": {"rom_size": 16777216, "rom_crc32": 2525414251, "savesize": 8192, "savetype": 2}, "07748c5c0edcd6890aba301b5cfb882d1c7b61cc": {"rom_size": 16777216, "rom_crc32": 3479774578, "savesize": 8192, "savetype": 2}, "0c9b3e738df537c04ca2f107092acfa4344c8739": {"rom_size": 16777216, "rom_crc32": 3876957253, "savesize": 8192, "savetype": 2}, "cd1945cc9ddf12b1f907d5a9511d95b50abbdb53": {"rom_size": 16777216, "rom_crc32": 1954646453, "savesize": 8192, "savetype": 2}, "3fc931b3150d91bca7b4d525fc2894814d51a08c": {"rom_size": 16777216, "rom_crc32": 3791631057, "savesize": 8192, "savetype": 2}, "50f40796d2d99bd61e95c74d0a2046b97374d965": {"rom_size": 8388608, "rom_crc32": 1580930622, "savesize": 32768, "savetype": 3}, "e5af7c33e422a17f1611d59a889245c757d23bc5": {"rom_size": 8388608, "rom_crc32": 152589911, "savesize": 32768, "savetype": 3}, "9825d667bc9f94bf48edd53d5733e8ab6f29ed03": {"rom_size": 16777216, "rom_crc32": 2082891567, "savesize": 32768, "savetype": 3}, "f8d27f3c59c550c486a800d0416334f584ea8f4b": {"rom_size": 16777216, "rom_crc32": 2694580231, "savesize": 8192, "savetype": 2}, "86257a3ec662ec6ac2e6c4d3a00ad5dcc473daee": {"rom_size": 8388608, "rom_crc32": 1891902392, "savesize": 32768, "savetype": 3}, "82b8d7eb80bef8d0476ee02f2bb315c3662182a1": {"rom_size": 8388608, "rom_crc32": 3118377229, "savesize": 512, "savetype": 1}, "c2f45b5bafe2382326ae33938f1bc5058a1a27cc": {"rom_size": 8388608, "rom_crc32": 1701638702, "savesize": 8192, "savetype": 2}, "4b068b46f218f23ac7fce7c64e748759ae2a66e5": {"rom_size": 8388608, "rom_crc32": 688752656, "savesize": 8192, "savetype": 2}, "23ec7be5f5bdde5d7238e14599aa44cb0190e223": {"rom_size": 4194304, "rom_crc32": 4159963529, "savesize": 32768, "savetype": 3}, "5d67242b52ea9e154cbc799b8f7eb369ab572472": {"rom_size": 16777216, "rom_crc32": 167529811, "savesize": 8192, "savetype": 2}, "461b3487077f96adc6e758b15b45a9f5fa8439a0": {"rom_size": 8388608, "rom_crc32": 2496012531, "savesize": 8192, "savetype": 2}, "9317af9f4c86808a9d2fcfb3bcfaadeb8a4acb79": {"rom_size": 16777216, "rom_crc32": 1741874616, "savesize": 8192, "savetype": 2}, "6f768e5155ee86bc81b7e80858d4291dd7ee89a8": {"rom_size": 8388608, "rom_crc32": 1303713729, "savesize": 8192, "savetype": 2}, "96a75e80641212f9ee3aea2c500bc3b1ebff945e": {"rom_size": 4194304, "rom_crc32": 604144358, "savesize": 32768, "savetype": 3}, "1404d0903ff610e169eeedccf4a1daac443becb8": {"rom_size": 4194304, "rom_crc32": 1297351556, "savesize": 512, "savetype": 1}, "ff99f048d27f9096ae779c95f7ab932048a82d7e": {"rom_size": 8388608, "rom_crc32": 1464045113, "savesize": 32768, "savetype": 3}, "86b00d9fbb982b7430da1d268ec93a17335dfe08": {"rom_size": 16777216, "rom_crc32": 1063305066, "savesize": 32768, "savetype": 3}, "083f1d7edb3573b55cc42e4d69b7c7149bac23d7": {"rom_size": 8388608, "rom_crc32": 3464103920, "savesize": 32768, "savetype": 3}, "10957475d5abd04ec500c7a4222cd4e0b746b0c4": {"rom_size": 16777216, "rom_crc32": 482619068, "savesize": 8192, "savetype": 2}, "192e90161af2fec5212e402b12a2ed515af8eceb": {"rom_size": 8388608, "rom_crc32": 311352399, "savesize": 512, "savetype": 1}, "6cf58de2c0089d553086553e5cd90a88c61b2722": {"rom_size": 4194304, "rom_crc32": 3558368937, "savesize": 512, "savetype": 1}, "3b95a509ba7e94bcf6d9c790ca7e2398b9c3495d": {"rom_size": 4194304, "rom_crc32": 3883753371, "savesize": 512, "savetype": 1}, "27dd0511f07ab4d392f718faef2b19fcf1bc20b4": {"rom_size": 4194304, "rom_crc32": 3008706138, "savesize": 512, "savetype": 1}, "8fd9f78d8e29d5d581f70ee38f4f3a11fe9ccba9": {"rom_size": 8388608, "rom_crc32": 145030596, "savesize": 0, "savetype": 0}, "75a81ee37d172b35dc96714fdafcde5b320540ad": {"rom_size": 4194304, "rom_crc32": 3003269602, "savesize": 512, "savetype": 1}, "c3edc73b663fafdd8f54c4178090e13473977e65": {"rom_size": 4194304, "rom_crc32": 568696848, "savesize": 512, "savetype": 1}, "e970986e5717478419b30269624a9854aa2f76ba": {"rom_size": 4194304, "rom_crc32": 146314560, "savesize": 0, "savetype": 0}, "d557b5693507c57bc5666be71a065294fa78163e": {"rom_size": 4194304, "rom_crc32": 602449044, "savesize": 0, "savetype": 0}, "3e9956570bb06bc17edb3655ebf00d0320a2b62c": {"rom_size": 8388608, "rom_crc32": 3675755158, "savesize": 8192, "savetype": 2}, "98d3368549e8bfa906c6938dd806b05c8290cb8d": {"rom_size": 8388608, "rom_crc32": 4087131627, "savesize": 8192, "savetype": 2}, "c34c8fb7797f759a447e1714e8dba7497d3a5240": {"rom_size": 8388608, "rom_crc32": 2654509320, "savesize": 8192, "savetype": 2}, "003af3e4c4aedb0416ff61865a19fcd574ad042c": {"rom_size": 8388608, "rom_crc32": 2412304082, "savesize": 512, "savetype": 1}, "b46c136e0554ead61e9a86adf6465d5004f63540": {"rom_size": 8388608, "rom_crc32": 1687521483, "savesize": 512, "savetype": 1}, "1218274dab89b33460e7cdec37ae618c1ebef55f": {"rom_size": 8388608, "rom_crc32": 3489632537, "savesize": 512, "savetype": 1}, "ac8b4a1597a13a3576d0b2a114654a74ceadac59": {"rom_size": 8388608, "rom_crc32": 2854509836, "savesize": 512, "savetype": 1}, "244b6ceb96ccd4e26b9e5b818c11539382cae616": {"rom_size": 4194304, "rom_crc32": 1132913260, "savesize": 0, "savetype": 0}, "5d8dbb9ceee6e0ea533542f099573392584734a6": {"rom_size": 4194304, "rom_crc32": 3444072313, "savesize": 0, "savetype": 0}, "e997a9e3758bd9c95a3d095dcc19122ab7cb8d3e": {"rom_size": 4194304, "rom_crc32": 82973473, "savesize": 0, "savetype": 0}, "b0884d409d758acde03c1412340a2cee3a29cf07": {"rom_size": 4194304, "rom_crc32": 788005312, "savesize": 0, "savetype": 0}, "4cfd261c42ec1caca156526994519ef1a9c955fe": {"rom_size": 4194304, "rom_crc32": 3546678601, "savesize": 32768, "savetype": 3}, "bb1a5113a8c79949aa021befa000edac151ea835": {"rom_size": 4194304, "rom_crc32": 2713917021, "savesize": 32768, "savetype": 3}, "eb6f047e60fd7b8fae9a037ae8e480412440afc1": {"rom_size": 4194304, "rom_crc32": 4033094312, "savesize": 32768, "savetype": 3}, "a4512fdd8e2a3578bb845c3eacbc4ce00929862d": {"rom_size": 4194304, "rom_crc32": 1726573365, "savesize": 8192, "savetype": 2}, "a26d05f35fd8c96265c0be191995dd900c842fba": {"rom_size": 4194304, "rom_crc32": 4284386873, "savesize": 32768, "savetype": 3}, "a9a87475c7f7ded64673ce5494f12271c42a3a13": {"rom_size": 4194304, "rom_crc32": 1862897059, "savesize": 32768, "savetype": 3}, "9bd2f2da3b9ceb8d6b353bb757412e53e291b1ed": {"rom_size": 4194304, "rom_crc32": 2323794544, "savesize": 32768, "savetype": 3}, "22fe4f280674b9b4d9105fbd2fc893953d4f738b": {"rom_size": 8388608, "rom_crc32": 3487995941, "savesize": 0, "savetype": 0}, "00eda8f73a71fc7fea1aaac95ed9932163c92dd1": {"rom_size": 8388608, "rom_crc32": 35445390, "savesize": 0, "savetype": 0}, "04ed2fd74f5a90d1fa6dc12e54007097c0f63a0c": {"rom_size": 8388608, "rom_crc32": 2288066984, "savesize": 0, "savetype": 0}, "8d2417239b2a805ac0da0f7c6d34ed7291139fe3": {"rom_size": 8388608, "rom_crc32": 1144101080, "savesize": 0, "savetype": 0}, "393c87ebaa1e38b27cafaf85e13b61780d77da20": {"rom_size": 16777216, "rom_crc32": 840089755, "savesize": 512, "savetype": 1}, "30a1cb91f1d330599fbf994ae7422fb3bfc8b3a0": {"rom_size": 8388608, "rom_crc32": 975433687, "savesize": 8192, "savetype": 2}, "8953b332435e4ffde0dc0003e1f7011df714f4a2": {"rom_size": 8388608, "rom_crc32": 846777937, "savesize": 8192, "savetype": 2}, "c6043d7a9b7d2628753b27e5c26d80bc8d91bd85": {"rom_size": 8388608, "rom_crc32": 4253106327, "savesize": 512, "savetype": 1}, "c4e8a51204225db7aa05e9d8528cc87532e47351": {"rom_size": 8388608, "rom_crc32": 1646306488, "savesize": 512, "savetype": 1}, "f29454cfe046aec6b4189ce894d0c5b2cee47209": {"rom_size": 8388608, "rom_crc32": 875422166, "savesize": 512, "savetype": 1}, "07b3f7259da86b70356320cc9a6f3d9937ee9113": {"rom_size": 8388608, "rom_crc32": 3053402588, "savesize": 512, "savetype": 1}, "cf68ca63411ffabdcde49230b74a647a26cc6686": {"rom_size": 8388608, "rom_crc32": 2997115468, "savesize": 512, "savetype": 1}, "a879f5c4c1b43b918d96968277e870cf56b050e8": {"rom_size": 4194304, "rom_crc32": 3751911937, "savesize": 512, "savetype": 1}, "907f73239d4182dda42779002522a300106ad5f0": {"rom_size": 4194304, "rom_crc32": 3198146023, "savesize": 512, "savetype": 1}, "d37038f196a232b239e9d6a9608fa8c95fca832b": {"rom_size": 4194304, "rom_crc32": 4276899900, "savesize": 512, "savetype": 1}, "2ce8caba1cccf1b8e872a5bef0ca15e7a51923a5": {"rom_size": 4194304, "rom_crc32": 1294605704, "savesize": 512, "savetype": 1}, "1064e3337d6dbfb482d972d339bdd32abebfe303": {"rom_size": 4194304, "rom_crc32": 865891718, "savesize": 512, "savetype": 1}, "486fff56b73e521dbb219ac729392a95b5e894a1": {"rom_size": 4194304, "rom_crc32": 4123548651, "savesize": 512, "savetype": 1}, "b6a357c2ae821a7d601f7b71a867417fde0c3b71": {"rom_size": 8388608, "rom_crc32": 2310051667, "savesize": 32768, "savetype": 3}, "592cc1f5d68639383254c673ef7528c471fd92b1": {"rom_size": 4194304, "rom_crc32": 2097086746, "savesize": 0, "savetype": 0}, "d90b5e247f87090f8082bc7eed4790e1d64ee420": {"rom_size": 4194304, "rom_crc32": 1958646088, "savesize": 0, "savetype": 0}, "c1ca751b4ade41005d8fd26bcfac26de6ce60ef5": {"rom_size": 4194304, "rom_crc32": 3979261309, "savesize": 512, "savetype": 1}, "b6355383b194ee84cdf7a1e30ab1950f5fe7e98d": {"rom_size": 4194304, "rom_crc32": 3356664980, "savesize": 512, "savetype": 1}, "16c2980b16e460cfec05712cb9f890dc7a9b88ab": {"rom_size": 8388608, "rom_crc32": 1890099521, "savesize": 0, "savetype": 0}, "9470f810eb21f69cebeb9889900bd4f872e24b18": {"rom_size": 4194304, "rom_crc32": 3171239271, "savesize": 512, "savetype": 1}, "347d44af3f953dc279d9d0b9d67c668ffc04fa90": {"rom_size": 8388608, "rom_crc32": 1565846757, "savesize": 0, "savetype": 0}, "f656b375f2670bb061566f27df01a30d4f68eefa": {"rom_size": 8388608, "rom_crc32": 1233404890, "savesize": 131072, "savetype": 6}, "15d8d251505e14c0dd690193b0bad0d375c3769b": {"rom_size": 8388608, "rom_crc32": 937335357, "savesize": 512, "savetype": 1}, "54f0076a2a7f0748851c190483de5ae014ccfa2b": {"rom_size": 4194304, "rom_crc32": 1086490958, "savesize": 512, "savetype": 1}, "c67a7de9a6dd3ca0c99894086968796543d68d40": {"rom_size": 4194304, "rom_crc32": 196268945, "savesize": 0, "savetype": 0}, "9ae8a4fa38793bd8c4de59b04be1936afc746b76": {"rom_size": 8388608, "rom_crc32": 1396814452, "savesize": 32768, "savetype": 3}, "13fc8de127abc41166aa2ab3e98249c02eeada10": {"rom_size": 8388608, "rom_crc32": 3926530964, "savesize": 8192, "savetype": 2}, "12f74ccaf1d0606fbb076c16b7e4ff1fc803c291": {"rom_size": 4194304, "rom_crc32": 2767146645, "savesize": 65536, "savetype": 5}, "76a27e2dda8bb3ab043296a7bb6b3f21237efac3": {"rom_size": 8388608, "rom_crc32": 1094313923, "savesize": 131072, "savetype": 6}, "6a7141231603a00a9fe7fa13f5618c22917527f7": {"rom_size": 8388608, "rom_crc32": 1029319687, "savesize": 0, "savetype": 0}, "c7469ebcd7a8af17daa32d1f6e275748671b8f47": {"rom_size": 4194304, "rom_crc32": 3687435566, "savesize": 8192, "savetype": 2}, "19d474e909cb9afa323ede14f350d030e57a6892": {"rom_size": 16777216, "rom_crc32": 746883250, "savesize": 8192, "savetype": 2}, "1aa2e24d3e05e80c71d4ca848c39579b273abfe5": {"rom_size": 16777216, "rom_crc32": 3585808540, "savesize": 512, "savetype": 1}, "9134bd9017493301b806ee257024a1c7584bef88": {"rom_size": 4194304, "rom_crc32": 1628564766, "savesize": 512, "savetype": 1}, "58a666a94fa6dfb6e63ff551393dd8ed8ceaaffc": {"rom_size": 4194304, "rom_crc32": 4165518119, "savesize": 512, "savetype": 1}, "f453f6b49436b5cd13ef8120fa88e4a5544b3368": {"rom_size": 4194304, "rom_crc32": 2564236320, "savesize": 512, "savetype": 1}, "b08f81d921ad9adcfdb67dfa538d111420d9552d": {"rom_size": 8388608, "rom_crc32": 184913330, "savesize": 512, "savetype": 1}, "cf3d8eb661d07a5098e4ef2b4d4067dff1d7ef5a": {"rom_size": 8388608, "rom_crc32": 3172727865, "savesize": 512, "savetype": 1}, "c258fd7c851bece5ce134b345be0ca9d412592e5": {"rom_size": 8388608, "rom_crc32": 1327627593, "savesize": 512, "savetype": 1}, "14b406aa26655db850d081984d6fc85b6ef9b539": {"rom_size": 8388608, "rom_crc32": 3956879171, "savesize": 512, "savetype": 1}, "cab59070fb20bfa2c002809b9a5276f49d9d76b6": {"rom_size": 8388608, "rom_crc32": 1833820398, "savesize": 512, "savetype": 1}, "327bb03f1f80dcc9c828af25c79d991b671205f6": {"rom_size": 8388608, "rom_crc32": 276183464, "savesize": 512, "savetype": 1}, "bf7d821308b8ff5ddff4c66ead533018792c1717": {"rom_size": 4194304, "rom_crc32": 3554383751, "savesize": 0, "savetype": 0}, "6871eac0c517911caae6b0dd4e39fe911edba1e5": {"rom_size": 4194304, "rom_crc32": 412983945, "savesize": 0, "savetype": 0}, "765b9206ba74264a41729201432415d7f097b492": {"rom_size": 8388608, "rom_crc32": 600513078, "savesize": 512, "savetype": 1}, "70152bb890952e874b97b651183810d767c946bf": {"rom_size": 4194304, "rom_crc32": 3988835566, "savesize": 0, "savetype": 0}, "22e064b54c06603dd167b1e2989d982056733759": {"rom_size": 4194304, "rom_crc32": 107620101, "savesize": 0, "savetype": 0}, "21532d4872783357325202168b0512a1d33bad9c": {"rom_size": 4194304, "rom_crc32": 3719269292, "savesize": 0, "savetype": 0}, "2f16c98315a12b362d7e02a20b0ff9a2c42515fd": {"rom_size": 4194304, "rom_crc32": 2677038688, "savesize": 0, "savetype": 0}, "ad83c0038c70f1dacb5fa4c9af06f9c3187992bc": {"rom_size": 8388608, "rom_crc32": 1628779996, "savesize": 32768, "savetype": 3}, "b29b22eca1efee3ceb7dc6dc400642d38b8e087a": {"rom_size": 8388608, "rom_crc32": 676212882, "savesize": 0, "savetype": 0}, "164c95563456dbfb6234c36009b69f081448bcea": {"rom_size": 8388608, "rom_crc32": 3502841716, "savesize": 0, "savetype": 0}, "f063d8d739c6cadd1a1591c24944dce56d60f343": {"rom_size": 8388608, "rom_crc32": 894656899, "savesize": 0, "savetype": 0}, "3ef772216d39105afe94a2c6bdb1ec58f3d44824": {"rom_size": 8388608, "rom_crc32": 932917832, "savesize": 0, "savetype": 0}, "0eb4b5b17e19743acab273031ed98faa8b5fae9a": {"rom_size": 8388608, "rom_crc32": 482367908, "savesize": 32768, "savetype": 3}, "6c2b8271cb427608c5a3d512daade4200152fb66": {"rom_size": 8388608, "rom_crc32": 1377513617, "savesize": 0, "savetype": 0}, "cf97f53bb77784e574505840f98942de5b6cc701": {"rom_size": 8388608, "rom_crc32": 2294396258, "savesize": 0, "savetype": 0}, "2b32ea55369cef81d0a1e2d3a787dfe50369feb2": {"rom_size": 16777216, "rom_crc32": 3997784215, "savesize": 0, "savetype": 0}, "8899c709d926be7b0e8be81cee5c4fae59fd01da": {"rom_size": 16777216, "rom_crc32": 3687763069, "savesize": 0, "savetype": 0}, "cca725c3c1d799e4c3455a1d8b62327d2e1b86e6": {"rom_size": 4194304, "rom_crc32": 296335214, "savesize": 0, "savetype": 0}, "aa261732e0560ed7f6607b1e479b4ca72e6024d0": {"rom_size": 4194304, "rom_crc32": 2782651822, "savesize": 512, "savetype": 1}, "11c59fdb527a94604c6e889c424a57cb5e892175": {"rom_size": 4194304, "rom_crc32": 331490462, "savesize": 0, "savetype": 0}, "413a6f3e2bda7dda3ac0802926a1e9318826dab1": {"rom_size": 8388608, "rom_crc32": 450574141, "savesize": 512, "savetype": 1}, "b4e9b0c41969dd0550857b95da3ea8728a33c4cd": {"rom_size": 8388608, "rom_crc32": 3282712621, "savesize": 8192, "savetype": 2}, "b065f9a9fd19a0a4f90d3837087e59efac37eb3d": {"rom_size": 4194304, "rom_crc32": 3460402897, "savesize": 8192, "savetype": 2}, "5b3408181946f440813c1b0ab9ef94e3bd4f0e9c": {"rom_size": 4194304, "rom_crc32": 346585973, "savesize": 512, "savetype": 1}, "4ab1ad738749067ad13a7eca596d1df93cf92cc2": {"rom_size": 4194304, "rom_crc32": 3648864598, "savesize": 8192, "savetype": 2}, "22e02a460b730cb517a3bdbdc461882fde87b394": {"rom_size": 8388608, "rom_crc32": 725601396, "savesize": 512, "savetype": 1}, "4f3a39a64cfe1a85867cc0184452140220b89479": {"rom_size": 8388608, "rom_crc32": 1318094925, "savesize": 512, "savetype": 1}, "52e2d06c12eb4c17e9ed305010d4210a6c71ff95": {"rom_size": 16777216, "rom_crc32": 2253962063, "savesize": 512, "savetype": 1}, "e311358dd159273034ad027baf8546fb912df93e": {"rom_size": 16777216, "rom_crc32": 3125878706, "savesize": 512, "savetype": 1}, "33b60f3411fb0395e4db1dafaa4879954c61d49f": {"rom_size": 8388608, "rom_crc32": 3807363754, "savesize": 512, "savetype": 1}, "74af599762e9cb359e422db85a65aefce428a585": {"rom_size": 4194304, "rom_crc32": 669515017, "savesize": 512, "savetype": 1}, "4553e8f3f77e925b9c55c1175d6858817efbd40b": {"rom_size": 4194304, "rom_crc32": 1441760146, "savesize": 512, "savetype": 1}, "48bb281812fc3fd2af862e82e4f45f4f99e7ebea": {"rom_size": 4194304, "rom_crc32": 111914181, "savesize": 512, "savetype": 1}, "4a33256e232be618ae0311020e316970e6bd9738": {"rom_size": 4194304, "rom_crc32": 632351027, "savesize": 512, "savetype": 1}, "561da87a40625dade44952b3bf779198e20e01a7": {"rom_size": 4194304, "rom_crc32": 3069727358, "savesize": 0, "savetype": 0}, "9f853362bdc5a14a3f1035410662523eaa7d60c1": {"rom_size": 8388608, "rom_crc32": 3703392657, "savesize": 512, "savetype": 1}, "9bcb1308cba293cdd493c28aebff17a6f1dbc1ad": {"rom_size": 8388608, "rom_crc32": 512161200, "savesize": 512, "savetype": 1}, "27c613d3115fe5d1765a05d245500be16bb13ed6": {"rom_size": 4194304, "rom_crc32": 1464466889, "savesize": 0, "savetype": 0}, "1b382b2c09d1c5f3298fb850e3700057a5599e25": {"rom_size": 4194304, "rom_crc32": 1260576897, "savesize": 0, "savetype": 0}, "8b432c2f8c855f6c4c75101f276736128311aab3": {"rom_size": 4194304, "rom_crc32": 47260996, "savesize": 0, "savetype": 0}, "6225789d58ac0085b51a742874daa0ac5fac08b8": {"rom_size": 4194304, "rom_crc32": 503199938, "savesize": 0, "savetype": 0}, "29d6dcc63fd2347cc36863d9a0b2ac23e0b456a6": {"rom_size": 8388608, "rom_crc32": 738243814, "savesize": 0, "savetype": 0}, "11119edcb89f907203606011b60b382ce903c5d0": {"rom_size": 8388608, "rom_crc32": 3720655128, "savesize": 512, "savetype": 1}, "db1c0ce845ec33afd4c08b65e46f67ab9e8bd154": {"rom_size": 8388608, "rom_crc32": 3573028142, "savesize": 32768, "savetype": 3}, "829f0da4141434b82491e1da35a5177a2141cba7": {"rom_size": 4194304, "rom_crc32": 2267791477, "savesize": 32768, "savetype": 3}, "1e4409cf40284eaf90507260d5b0f4868b789440": {"rom_size": 4194304, "rom_crc32": 2482900532, "savesize": 32768, "savetype": 3}, "2b521ecd90a5c37af7e449cf3ba65194de00048f": {"rom_size": 4194304, "rom_crc32": 4125974292, "savesize": 0, "savetype": 0}, "76e23921ec62e0bc96f0743d067706f6a57559e4": {"rom_size": 4194304, "rom_crc32": 2767762612, "savesize": 512, "savetype": 1}, "f2524b1e45f65b864581fa686969888f3fb6c60a": {"rom_size": 16777216, "rom_crc32": 2115601698, "savesize": 512, "savetype": 1}, "fe1f50c3ef43e0a0053d21f939df9691cb8bfcee": {"rom_size": 4194304, "rom_crc32": 2327185344, "savesize": 65536, "savetype": 5}, "db67700ddd5348393c71341b137193d35480c5ac": {"rom_size": 4194304, "rom_crc32": 747379546, "savesize": 65536, "savetype": 5}, "b50f162dcd8bcaff4ecb02278938b8de61603efa": {"rom_size": 4194304, "rom_crc32": 92254646, "savesize": 65536, "savetype": 5}, "9fd6bed0cfd8e4b5cf90b8dc6f6f34c193bbed40": {"rom_size": 8388608, "rom_crc32": 3956877549, "savesize": 8192, "savetype": 2}, "0c81efaaff90eb5e055a2483e20ccd02a0a7b647": {"rom_size": 8388608, "rom_crc32": 3904841954, "savesize": 512, "savetype": 1}, "30a989c59688b26fcd4f20a78ee0065876eba77d": {"rom_size": 8388608, "rom_crc32": 586256745, "savesize": 512, "savetype": 1}, "533790d964f49f6654b7e9b57dbb7046c309008d": {"rom_size": 4194304, "rom_crc32": 1512877473, "savesize": 512, "savetype": 1}, "f17aa0e75945cc2cd13d70da437ce2666e0d37d5": {"rom_size": 4194304, "rom_crc32": 2714476869, "savesize": 512, "savetype": 1}, "e1ab05eec6f697a18dba6c18a1c99d201fc6f322": {"rom_size": 4194304, "rom_crc32": 2205603131, "savesize": 512, "savetype": 1}, "4917828a050424930b20c0f760ac716494b9dbdd": {"rom_size": 4194304, "rom_crc32": 3446141626, "savesize": 512, "savetype": 1}, "58086ff435641c40d3d72060916b8884e105cf91": {"rom_size": 4194304, "rom_crc32": 3485594968, "savesize": 512, "savetype": 1}, "e34dfd5715d058484ab10da49bf0bf31c13af68a": {"rom_size": 4194304, "rom_crc32": 3129136150, "savesize": 512, "savetype": 1}, "8c97edbfb3bc8637d131cc1bd156cd7247a92698": {"rom_size": 4194304, "rom_crc32": 3399441711, "savesize": 512, "savetype": 1}, "3364725609fc5ac9e6fab3c3b931630f3393467c": {"rom_size": 4194304, "rom_crc32": 2489067823, "savesize": 8192, "savetype": 2}, "4b637f396eba0daebc25bb3de25610309bf27de3": {"rom_size": 4194304, "rom_crc32": 824628754, "savesize": 512, "savetype": 1}, "e42088bc18d29dafb8c874a7d87fb2c1b983f292": {"rom_size": 4194304, "rom_crc32": 2996917187, "savesize": 512, "savetype": 1}, "e3a53b82b787f03ae7d3d75c9f9aa012d30b2c7e": {"rom_size": 4194304, "rom_crc32": 589267158, "savesize": 512, "savetype": 1}, "d42612677ba881015f36f88f56ba6ac415d38a32": {"rom_size": 4194304, "rom_crc32": 2128478125, "savesize": 512, "savetype": 1}, "3bb590068613ef71bc99c3192169b8e62043f97b": {"rom_size": 4194304, "rom_crc32": 1756477352, "savesize": 8192, "savetype": 2}, "4cf49737115eabf5d64c64c86f757f010dbec429": {"rom_size": 4194304, "rom_crc32": 2660382486, "savesize": 512, "savetype": 1}, "9721d13f880f9e90b4077ebb81555832be66e360": {"rom_size": 4194304, "rom_crc32": 4074519305, "savesize": 8192, "savetype": 2}, "bb959dd1d8a89bbdba7de95729555220e0749a5a": {"rom_size": 4194304, "rom_crc32": 3669476354, "savesize": 0, "savetype": 0}, "fb027d09dbc2dbf31a3892bcd3598ff3ee37fddf": {"rom_size": 4194304, "rom_crc32": 658579189, "savesize": 0, "savetype": 0}, "3099498b4be17b598e65e5d8cd51a0a0b0a39cb8": {"rom_size": 8388608, "rom_crc32": 1107984823, "savesize": 0, "savetype": 0}, "556de69c9cc127e4bc36ce76990123f62c2517af": {"rom_size": 4194304, "rom_crc32": 1884425308, "savesize": 512, "savetype": 1}, "7641298e063b3daf897a77f9243c2a0ad6e43a3b": {"rom_size": 4194304, "rom_crc32": 2732691476, "savesize": 512, "savetype": 1}, "28b3b921bdc8d409ee6ac2701c805ab95a8f029c": {"rom_size": 8388608, "rom_crc32": 856295797, "savesize": 512, "savetype": 1}, "2b2586635cf30858bfa6db0d4f1ad428ac2a9de5": {"rom_size": 8388608, "rom_crc32": 2777872351, "savesize": 512, "savetype": 1}, "ba142d8098f7e751f6c5bb5a339b9c806b359460": {"rom_size": 8388608, "rom_crc32": 1648558002, "savesize": 512, "savetype": 1}, "e2df8f1ed30d49f827bb19e1b5dd49911103f617": {"rom_size": 4194304, "rom_crc32": 1314650768, "savesize": 32768, "savetype": 3}, "129dcf5008406c2492b46c69abfc33b3182f4153": {"rom_size": 16777216, "rom_crc32": 4222596664, "savesize": 65536, "savetype": 5}, "b51cbeb1518b0b82f3c6f2793728ee80184a87b8": {"rom_size": 4194304, "rom_crc32": 2670723119, "savesize": 8192, "savetype": 2}, "eba6ee6e00bfaddd21b1f2a04896f75aab486430": {"rom_size": 4194304, "rom_crc32": 1598307092, "savesize": 0, "savetype": 0}, "6e4c49a82ae661a251b7df38543610252c48b8b7": {"rom_size": 4194304, "rom_crc32": 1501043796, "savesize": 0, "savetype": 0}, "10236d0b66c961a52da4b021f74b9bc92c7f586b": {"rom_size": 4194304, "rom_crc32": 2820123207, "savesize": 0, "savetype": 0}, "d115226b62c57eae8adf4eba493d40e5388db517": {"rom_size": 8388608, "rom_crc32": 2764495617, "savesize": 512, "savetype": 1}, "6663a4a32b3fed3db860737fd5806a625d66a7b2": {"rom_size": 4194304, "rom_crc32": 1709737731, "savesize": 0, "savetype": 0}, "2f6e6b378d63fae8bed569786c4c02a466a63a3b": {"rom_size": 16777216, "rom_crc32": 3627557927, "savesize": 8192, "savetype": 2}, "9ea0bbf6e0f6bf95447a8fd5e46f27ff615982f1": {"rom_size": 16777216, "rom_crc32": 2067550096, "savesize": 8192, "savetype": 2}, "b18b02f617f8a4b5edac4257579ed45b019df38f": {"rom_size": 33554432, "rom_crc32": 84981519, "savesize": 8192, "savetype": 2}, "d599c48f3d511805929387a39194f1239f245797": {"rom_size": 16777216, "rom_crc32": 3451781347, "savesize": 8192, "savetype": 2}, "049ce7b0800980557824d17ab0a1325c3fbfdb07": {"rom_size": 33554432, "rom_crc32": 1497403502, "savesize": 8192, "savetype": 2}, "5e424ae8ace8a377658a6622fbe0da0060e0a544": {"rom_size": 8388608, "rom_crc32": 55389515, "savesize": 512, "savetype": 1}, "16cbbb83ef992a87d70df2befbe027daf9d5e8db": {"rom_size": 8388608, "rom_crc32": 253560480, "savesize": 512, "savetype": 1}, "003dba674cff81b4e2fb4ee9cd85064be6fae09e": {"rom_size": 8388608, "rom_crc32": 773199946, "savesize": 512, "savetype": 1}, "2b67200dee403eac6689d3fa95d3e21265ff465d": {"rom_size": 8388608, "rom_crc32": 1685486388, "savesize": 512, "savetype": 1}, "e2c634f411258e78a2e672d3b9ce3490347ba113": {"rom_size": 16777216, "rom_crc32": 241848302, "savesize": 512, "savetype": 1}, "3542b198e2669ffe484a7543c28c098daf70aeba": {"rom_size": 8388608, "rom_crc32": 83601359, "savesize": 512, "savetype": 1}, "5e62b0b54e1d41b0356feb9f45414688c7db4985": {"rom_size": 8388608, "rom_crc32": 1895311647, "savesize": 512, "savetype": 1}, "c0e11384dab57ca7e06a963619d05c4269eb94ba": {"rom_size": 16777216, "rom_crc32": 4065103479, "savesize": 512, "savetype": 1}, "a971e7b52706bd10aa5fbdc747d626c9d66f99ea": {"rom_size": 16777216, "rom_crc32": 1038026657, "savesize": 512, "savetype": 1}, "ae6c28691bb79fe9728efc856e96708409f7c5e6": {"rom_size": 16777216, "rom_crc32": 4230499845, "savesize": 512, "savetype": 1}, "e1fe465a0fad0c46d93eabaa8d586a38772c6e51": {"rom_size": 8388608, "rom_crc32": 3439158607, "savesize": 512, "savetype": 1}, "7d301123e49d775afeba535bf0eebfb4c31db3ba": {"rom_size": 8388608, "rom_crc32": 59922290, "savesize": 512, "savetype": 1}, "d920f1009e98f4a4f095245bcf67a71596ce2f96": {"rom_size": 8388608, "rom_crc32": 3872754336, "savesize": 512, "savetype": 1}, "2e32628645c319377fe1639f4b543ce50b26aae4": {"rom_size": 16777216, "rom_crc32": 3520102310, "savesize": 512, "savetype": 1}, "ee51c459df690cb85e3eeb585f12ea12edc9f093": {"rom_size": 16777216, "rom_crc32": 1864937481, "savesize": 512, "savetype": 1}, "f19dfe77fe2d3491e1786f8e42f88786b3bdf38f": {"rom_size": 16777216, "rom_crc32": 741915362, "savesize": 8192, "savetype": 2}, "2eff5fbeeb3f26c59b8bbfe7798612628172fe6e": {"rom_size": 16777216, "rom_crc32": 1855154772, "savesize": 8192, "savetype": 2}, "438aa91c05cbb9f0e7c2c1daf409dcdeceb6ed23": {"rom_size": 33554432, "rom_crc32": 1170752614, "savesize": 8192, "savetype": 2}, "985da51290f8c7287655148c9bc7fbf9fc3c9c9a": {"rom_size": 4194304, "rom_crc32": 826232828, "savesize": 512, "savetype": 1}, "aae51e827c25a32a66901c8f9e4b3175ba9e19b7": {"rom_size": 4194304, "rom_crc32": 3401194937, "savesize": 512, "savetype": 1}, "86f99adfb7d56cbe3968e8a5e0ef074230e396e8": {"rom_size": 4194304, "rom_crc32": 656614251, "savesize": 512, "savetype": 1}, "3b8bca5bb2a34a497147501af756811d2d1e9a61": {"rom_size": 8388608, "rom_crc32": 1256969988, "savesize": 512, "savetype": 1}, "37d9a48db2a6eaa1f91fb3cd0c7dc0cb3fb3d1eb": {"rom_size": 8388608, "rom_crc32": 2395408854, "savesize": 512, "savetype": 1}, "f62321c5c39f0e7af0d4733de0c0c352f65e2d0f": {"rom_size": 4194304, "rom_crc32": 1327035774, "savesize": 8192, "savetype": 2}, "f817cf77c290ed8a38b55af5c60aa17206269cb9": {"rom_size": 4194304, "rom_crc32": 1746952961, "savesize": 8192, "savetype": 2}, "a913eaedf47b353c142952c0c2f44f54fb0efe8b": {"rom_size": 8388608, "rom_crc32": 2729103481, "savesize": 0, "savetype": 0}, "04604e589b1b604490c8401604c6b96421ae0187": {"rom_size": 16777216, "rom_crc32": 2371750101, "savesize": 0, "savetype": 0}, "5231d174ba03d16626e55ef442798149024991be": {"rom_size": 16777216, "rom_crc32": 2932265083, "savesize": 0, "savetype": 0}, "ebfa3bd3e661b8263bc834e34303aea17c0a2f7b": {"rom_size": 16777216, "rom_crc32": 3362518865, "savesize": 0, "savetype": 0}, "daf50ea12858bd8735276b1bdfd15b94cad27f03": {"rom_size": 16777216, "rom_crc32": 4041742705, "savesize": 0, "savetype": 0}, "8170991bd1272427df3d9346b00cda91d26c1fc3": {"rom_size": 8388608, "rom_crc32": 3114752708, "savesize": 0, "savetype": 0}, "bedb0625762aa0de8f81da2ddcdb83f3e6638f6e": {"rom_size": 8388608, "rom_crc32": 1469818119, "savesize": 0, "savetype": 0}, "4c947e5e16bea32a57cc06daaaec96a34b1f233b": {"rom_size": 4194304, "rom_crc32": 2918272437, "savesize": 0, "savetype": 0}, "b86639e785e534305f284861514abecb2bbc887c": {"rom_size": 4194304, "rom_crc32": 1442743673, "savesize": 512, "savetype": 1}, "c7371988cee917001e070b7acc0cd6b01374a28a": {"rom_size": 4194304, "rom_crc32": 2718800603, "savesize": 0, "savetype": 0}, "0db64e069bc0ffd4b8ec7ff78d34cc1b859c5863": {"rom_size": 4194304, "rom_crc32": 2929863392, "savesize": 0, "savetype": 0}, "69328c93ef396acb16892bb8f99feaddc4e1fce2": {"rom_size": 8388608, "rom_crc32": 2252128049, "savesize": 0, "savetype": 0}, "dcd4a3da98eb4382a2db0cc761f8d91eff4051bd": {"rom_size": 8388608, "rom_crc32": 2110000858, "savesize": 0, "savetype": 0}, "4208ef0953eee6e204c29da127d79cff3f4cee1b": {"rom_size": 8388608, "rom_crc32": 3535112755, "savesize": 0, "savetype": 0}, "1d35ca3d18a6ddffe71527c21c7b04d5e4533e77": {"rom_size": 8388608, "rom_crc32": 1097975825, "savesize": 512, "savetype": 1}, "dfeb4fc4c55d9f60c360a82bb704c06b09391091": {"rom_size": 4194304, "rom_crc32": 4008772784, "savesize": 8192, "savetype": 2}, "a055f008d019434c18c4ecab172033897de643f8": {"rom_size": 4194304, "rom_crc32": 4139076061, "savesize": 8192, "savetype": 2}, "4e7edb663ed90b47c126c53c4f4085488bc88b8f": {"rom_size": 8388608, "rom_crc32": 4113816595, "savesize": 8192, "savetype": 2}, "d0a74c5630f23bd1ccfcdd3797f0329819f2ec2f": {"rom_size": 8388608, "rom_crc32": 2138861, "savesize": 32768, "savetype": 3}, "6165ebb032bd679cc34840a67e66cddc00365f6a": {"rom_size": 4194304, "rom_crc32": 3335309829, "savesize": 512, "savetype": 1}, "e396b8541adff11f73661d8c4cb7bafc4ea72d66": {"rom_size": 8388608, "rom_crc32": 1029982534, "savesize": 65536, "savetype": 5}, "253b30d9b70b3e65b824af4b576955434d3db3bb": {"rom_size": 8388608, "rom_crc32": 3417886136, "savesize": 0, "savetype": 0}, "fc0de643e75a353fa3fbcfe4335768b95d6cb806": {"rom_size": 8388608, "rom_crc32": 256594094, "savesize": 32768, "savetype": 3}, "a52858f4ba9ac9384ed172645d5d60616f40ae80": {"rom_size": 8388608, "rom_crc32": 3788886001, "savesize": 32768, "savetype": 3}, "0f4cb677a7bf9ad0168d78a781bdcb641f24fbbf": {"rom_size": 8388608, "rom_crc32": 3794890055, "savesize": 512, "savetype": 1}, "3bdf60ab0064974dc6535af17b04b8d5a40ac752": {"rom_size": 4194304, "rom_crc32": 760857045, "savesize": 512, "savetype": 1}, "4fd0c5aa42c667885372e3ad870feb1493f13f97": {"rom_size": 4194304, "rom_crc32": 1348960465, "savesize": 512, "savetype": 1}, "31aeeaa18189852816de3679b1220ea42fbf9e53": {"rom_size": 4194304, "rom_crc32": 3789459551, "savesize": 512, "savetype": 1}, "d3b814864a10eff318cad5883169ae78dfd2c303": {"rom_size": 4194304, "rom_crc32": 327478506, "savesize": 512, "savetype": 1}, "688cb9ff117020f205aa7135b63c3f64007d087a": {"rom_size": 4194304, "rom_crc32": 3257825839, "savesize": 512, "savetype": 1}, "0e06c7f1bff36313b6e9f57a487f802b24405f46": {"rom_size": 4194304, "rom_crc32": 1101641801, "savesize": 0, "savetype": 0}, "46c5cf5a30128f4ce5c1c0a80dc4e576ba715d8d": {"rom_size": 4194304, "rom_crc32": 1270432270, "savesize": 0, "savetype": 0}, "6b5617eae811fc78919ddb5486f403e4b7825642": {"rom_size": 4194304, "rom_crc32": 3560453246, "savesize": 0, "savetype": 0}, "c37d03f36b9869ba684fd32a1384d6caabd9da43": {"rom_size": 4194304, "rom_crc32": 1371467479, "savesize": 512, "savetype": 1}, "56efc1ce5cf57faf7099a1617d8e9327789c3640": {"rom_size": 8388608, "rom_crc32": 3730689518, "savesize": 0, "savetype": 0}, "45d9c81a21cbe2811620bb5c85f38a361ec70405": {"rom_size": 8388608, "rom_crc32": 2386165481, "savesize": 8192, "savetype": 2}, "66db666aa35031a36892b2a28a59951f38820fd7": {"rom_size": 8388608, "rom_crc32": 1776850305, "savesize": 8192, "savetype": 2}, "fd530c265e2a5000219fbc7c881491e860d46a1d": {"rom_size": 8388608, "rom_crc32": 1689381153, "savesize": 8192, "savetype": 2}, "015b94ce14b74f9af5a41304486037e851ac35ec": {"rom_size": 8388608, "rom_crc32": 2374968997, "savesize": 8192, "savetype": 2}, "551e13542ed4678e01e1978a9e607a31257ead1c": {"rom_size": 4194304, "rom_crc32": 3919793993, "savesize": 512, "savetype": 1}, "00f3ea7715d287abb6328b0adf56c89a7a3c91d6": {"rom_size": 4194304, "rom_crc32": 2119021004, "savesize": 512, "savetype": 1}, "4f90a2f3959ed87aa7568c3477cce70c85fba7c8": {"rom_size": 4194304, "rom_crc32": 1282635252, "savesize": 512, "savetype": 1}, "a26a82a453bc1898ae7eb4dcb4cdc8aedc2b2fb6": {"rom_size": 4194304, "rom_crc32": 2192890012, "savesize": 512, "savetype": 1}, "2be0de116591c9d1d31dc4780f11a3555cc0bae5": {"rom_size": 8388608, "rom_crc32": 697622045, "savesize": 0, "savetype": 0}, "ebcf3dcf50bd357d3dbfabe95e9175028f3c4404": {"rom_size": 8388608, "rom_crc32": 1388413548, "savesize": 0, "savetype": 0}, "ceb6577bfe9cd832a13587a452a3c5ba9696435e": {"rom_size": 4194304, "rom_crc32": 4269573122, "savesize": 512, "savetype": 1}, "ea88f8b364a04a609e3d42ea929cd0358d6aee33": {"rom_size": 4194304, "rom_crc32": 3066040027, "savesize": 0, "savetype": 0}, "e3160702ff68215e51f8582cf0b0f3edcee77820": {"rom_size": 4194304, "rom_crc32": 774315027, "savesize": 512, "savetype": 1}, "88c6a25b316b7e3c67f8367109f5b418c8dbc1d6": {"rom_size": 4194304, "rom_crc32": 998702532, "savesize": 512, "savetype": 1}, "688609a81f72cc489fd1611c00f5e8efd84a02ce": {"rom_size": 4194304, "rom_crc32": 1768461722, "savesize": 512, "savetype": 1}, "e98f46ae346138becb76787652566d663b802173": {"rom_size": 4194304, "rom_crc32": 3731265790, "savesize": 512, "savetype": 1}, "547a19afc343497150406f0cc1699f9b165838da": {"rom_size": 8388608, "rom_crc32": 464214205, "savesize": 0, "savetype": 0}, "a1bfe0ffba8d5bca01a54db959dbb0d7e4f38c09": {"rom_size": 8388608, "rom_crc32": 3695400900, "savesize": 0, "savetype": 0}, "24dbeff2560eaca1796f6c6f8138065f4e3b8694": {"rom_size": 4194304, "rom_crc32": 482568038, "savesize": 0, "savetype": 0}, "c8e77ce6159cfccf3a494a94e24200d79b1dc609": {"rom_size": 4194304, "rom_crc32": 2473897822, "savesize": 0, "savetype": 0}, "e662d0960b45cb2df72b4cd13bdcd420321511cf": {"rom_size": 4194304, "rom_crc32": 1631906837, "savesize": 512, "savetype": 1}, "4e564625c9dd2e55f54b2e1dcddf60001fc8c80e": {"rom_size": 4194304, "rom_crc32": 5504362, "savesize": 512, "savetype": 1}, "c8d236a15d4de5bb9a1ef89d0bbdbb01b19dc502": {"rom_size": 4194304, "rom_crc32": 3764654207, "savesize": 512, "savetype": 1}, "2faa48087a6432028175aa0aa81a8ee9a60688e6": {"rom_size": 8388608, "rom_crc32": 4209593483, "savesize": 32768, "savetype": 3}, "5424826c87ab3e109ab81c0c9cfcd8e62aefad00": {"rom_size": 16777216, "rom_crc32": 3933465428, "savesize": 32768, "savetype": 3}, "6052672e9aa8a8b80d11d8e3e3df0afd4a316d83": {"rom_size": 16777216, "rom_crc32": 762203195, "savesize": 32768, "savetype": 3}, "78f1fd9e0bb98d085449587373330ae7bfb0a2fc": {"rom_size": 16777216, "rom_crc32": 4239334056, "savesize": 32768, "savetype": 3}, "75072362e6aa97b78afcb1a55e9530db619986e7": {"rom_size": 4194304, "rom_crc32": 2538008338, "savesize": 65536, "savetype": 5}, "4bba99f563f243f718c40f35fa44f0542f62172e": {"rom_size": 4194304, "rom_crc32": 3424392197, "savesize": 0, "savetype": 0}, "e8ad02597ebf8be855cbc93e5c32540de1483d33": {"rom_size": 16777216, "rom_crc32": 1375014781, "savesize": 0, "savetype": 0}, "4479524dcf0394918eac724dd033fd794b8bd79e": {"rom_size": 8388608, "rom_crc32": 4114837341, "savesize": 0, "savetype": 0}, "3d01dc3b460513aaed79de2bad4b7ae212edf6e4": {"rom_size": 8388608, "rom_crc32": 2925605422, "savesize": 0, "savetype": 0}, "c88855b41b4c814882f7e3e55f924a705857b713": {"rom_size": 4194304, "rom_crc32": 1048580799, "savesize": 512, "savetype": 1}, "93583b2822db8db8b4d3a83a154586f6de6e7d6e": {"rom_size": 4194304, "rom_crc32": 1810983142, "savesize": 512, "savetype": 1}, "589726c053aafaabafc848f4d9cc1e6a59504bd4": {"rom_size": 4194304, "rom_crc32": 3913864210, "savesize": 512, "savetype": 1}, "8c879cb4a268580f7fa9bfe2f96663dec3c053cc": {"rom_size": 8388608, "rom_crc32": 2703787047, "savesize": 0, "savetype": 0}, "064bff38556bc4eb9846c2e45bb627b6f8e9d7c8": {"rom_size": 8388608, "rom_crc32": 2731986598, "savesize": 8192, "savetype": 2}, "a43a7fa62bee3f0eca1ff281981b15ba942b7ec7": {"rom_size": 16777216, "rom_crc32": 326297641, "savesize": 8192, "savetype": 2}, "6329af1fbe8e11635b9ebd412b7125cf32039046": {"rom_size": 4194304, "rom_crc32": 3932144602, "savesize": 512, "savetype": 1}, "50d209258b00cfbae7b04d7e7278943e6f2d74a3": {"rom_size": 4194304, "rom_crc32": 3471777800, "savesize": 512, "savetype": 1}, "5c31557bfe1c5864c73b46460d03ff3872281bda": {"rom_size": 4194304, "rom_crc32": 13174435, "savesize": 512, "savetype": 1}, "7f766659ac9c14602844489247a11f5783fdda3a": {"rom_size": 4194304, "rom_crc32": 3301066479, "savesize": 512, "savetype": 1}, "bd19937a60c95884b1c7382036c32c003c1c942f": {"rom_size": 8388608, "rom_crc32": 1327169879, "savesize": 512, "savetype": 1}, "f63198246bf2f836fb0a4800e501295b7bdf93b1": {"rom_size": 8388608, "rom_crc32": 3305400488, "savesize": 512, "savetype": 1}, "02a90f825f35d3f9d518d51a1ffa5998a9fd3d7a": {"rom_size": 8388608, "rom_crc32": 3671936016, "savesize": 512, "savetype": 1}, "8dd5f39a10253835b42b2260b3aa48dd85deca70": {"rom_size": 8388608, "rom_crc32": 2077236017, "savesize": 512, "savetype": 1}, "ddeb747f598250094cb05907b596a74487895285": {"rom_size": 8388608, "rom_crc32": 1113032136, "savesize": 0, "savetype": 0}, "d6e0b75aceaf5678d5ffdac21265653f31a2524e": {"rom_size": 8388608, "rom_crc32": 1244372491, "savesize": 0, "savetype": 0}, "98e74fdc74db69bd9bb65c1eaeb91603cc55d4f1": {"rom_size": 8388608, "rom_crc32": 2462488012, "savesize": 512, "savetype": 1}, "639ac47017da9509f33b77f80206fe20db14aa64": {"rom_size": 8388608, "rom_crc32": 3333235281, "savesize": 512, "savetype": 1}, "a57823f4ffde75763fcf542c7ab28f2d97b1e9aa": {"rom_size": 8388608, "rom_crc32": 960806270, "savesize": 0, "savetype": 0}, "e25330f8a521a6fb7420ffd1e24e3e09450cbca3": {"rom_size": 8388608, "rom_crc32": 1209951886, "savesize": 0, "savetype": 0}, "7829e3a24f8571a03215942543da2016508f08c8": {"rom_size": 16777216, "rom_crc32": 3106836567, "savesize": 512, "savetype": 1}, "034568e78943b8f92e389dd05636ae375ad73ba3": {"rom_size": 16777216, "rom_crc32": 3604520833, "savesize": 512, "savetype": 1}, "c96e6b607d8e3c13b22cadfd69bd9f2aeeaa5a4f": {"rom_size": 16777216, "rom_crc32": 957461686, "savesize": 512, "savetype": 1}, "8579c2f34720c4fa2a2300149f1afbad90b03004": {"rom_size": 16777216, "rom_crc32": 2162978032, "savesize": 512, "savetype": 1}, "cdc448cd634f4a8ace7cea42af3e4113c0094f35": {"rom_size": 16777216, "rom_crc32": 871838105, "savesize": 512, "savetype": 1}, "8c54ce0471070047d5bad83949230c7b3eb33946": {"rom_size": 16777216, "rom_crc32": 21052849, "savesize": 512, "savetype": 1}, "1d0151e3235d3694eb1b7ead42d719da94ce7b1b": {"rom_size": 16777216, "rom_crc32": 1927066868, "savesize": 512, "savetype": 1}, "196159d89de3d4c6ff2207405538c884dbc94686": {"rom_size": 16777216, "rom_crc32": 442685295, "savesize": 512, "savetype": 1}, "b4a824b42f2440f00a7f031b40032efbd03ae74a": {"rom_size": 16777216, "rom_crc32": 2809245049, "savesize": 512, "savetype": 1}, "dcebcd3a303e5706a97fdc294aa52a63dd92b7c8": {"rom_size": 16777216, "rom_crc32": 281042043, "savesize": 512, "savetype": 1}, "6c7f04c1f57034a691b9c1a23dff88a873251d64": {"rom_size": 16777216, "rom_crc32": 1576313974, "savesize": 512, "savetype": 1}, "15864f13425af042ee33e9270cbfdb7c6ff01698": {"rom_size": 16777216, "rom_crc32": 939513911, "savesize": 512, "savetype": 1}, "241f0302773bb4844fcf52b6ea645555b4d8d733": {"rom_size": 16777216, "rom_crc32": 2008546510, "savesize": 512, "savetype": 1}, "f644706af1184ec8d36608f595f5cd83d82aa309": {"rom_size": 16777216, "rom_crc32": 3183622727, "savesize": 512, "savetype": 1}, "25ff6695a2c5dda4b2907b8a3763f2791b6b5c3b": {"rom_size": 16777216, "rom_crc32": 1194551612, "savesize": 512, "savetype": 1}, "288d035db014271a2b8b9990951cc6735f9f2384": {"rom_size": 16777216, "rom_crc32": 1745442791, "savesize": 512, "savetype": 1}, "bd48433e57c04a45e1defa01b698fd62f799a142": {"rom_size": 16777216, "rom_crc32": 789780178, "savesize": 512, "savetype": 1}, "e7e003b1065f2f5d341334dc2ceedc9e3b787195": {"rom_size": 33554432, "rom_crc32": 654750464, "savesize": 65536, "savetype": 5}, "04d6bacd2461bd5ce713ffc902ac96a5c2d822c4": {"rom_size": 8388608, "rom_crc32": 1807103860, "savesize": 512, "savetype": 1}, "532c4379cc3f792fc16c1763a9ae630a820e22c1": {"rom_size": 8388608, "rom_crc32": 3793437317, "savesize": 0, "savetype": 0}, "de98725272161422e848d18669f77aa2dde57d09": {"rom_size": 16777216, "rom_crc32": 4181423065, "savesize": 32768, "savetype": 3}, "76a6cbbac287e4c331ac6a3eea8f6b00ecc2af1d": {"rom_size": 8388608, "rom_crc32": 3591418425, "savesize": 32768, "savetype": 3}, "2afe278a2c28b088911de1aa78ece9449c114a11": {"rom_size": 16777216, "rom_crc32": 571931606, "savesize": 512, "savetype": 1}, "a1b81e3212bf2beda3d52712cddbcd706051eda7": {"rom_size": 8388608, "rom_crc32": 2861427248, "savesize": 512, "savetype": 1}, "a8380d98af562506d851b543b6fc769c8c5a2241": {"rom_size": 8388608, "rom_crc32": 279713017, "savesize": 512, "savetype": 1}, "7ce6e2dcdef016de11189d50f18550d6d554694e": {"rom_size": 8388608, "rom_crc32": 307177408, "savesize": 512, "savetype": 1}, "405f5da8e2325bf3e26958ccee1b89c1d01fb5b9": {"rom_size": 8388608, "rom_crc32": 1379288893, "savesize": 8192, "savetype": 2}, "229cd73d98ea89354eac7ced19610aed65a299a1": {"rom_size": 8388608, "rom_crc32": 1673344099, "savesize": 8192, "savetype": 2}, "f57df876e8f3919825cae813ea7b6e9a64f18ed2": {"rom_size": 16777216, "rom_crc32": 1104027373, "savesize": 8192, "savetype": 2}, "586016806d38ed555396f0961f3cb2ad71134046": {"rom_size": 16777216, "rom_crc32": 672544035, "savesize": 8192, "savetype": 2}, "3cb020218f7d0df5aac338b2997a94ff832057ad": {"rom_size": 16777216, "rom_crc32": 2699800977, "savesize": 8192, "savetype": 2}, "a8b9741354e80cb898013e04ea92e9311e6a480c": {"rom_size": 16777216, "rom_crc32": 237685406, "savesize": 8192, "savetype": 2}, "f66f5668d6a0e5d28c4233738dc2813c7bf5e3da": {"rom_size": 8388608, "rom_crc32": 1444406279, "savesize": 0, "savetype": 0}, "c660b5014054f3f82c574e29a7d4a270b9f17b5a": {"rom_size": 8388608, "rom_crc32": 1699607822, "savesize": 0, "savetype": 0}, "6f9fdc6e89a02390a8fa9aeb689d9cdd466eef01": {"rom_size": 8388608, "rom_crc32": 1169419716, "savesize": 0, "savetype": 0}, "97bf1a36be224dbad96bdd2da0bbba9a1e8b106b": {"rom_size": 8388608, "rom_crc32": 4263084070, "savesize": 8192, "savetype": 2}, "bae67041dd1573c64d801d0e37ce95bb0589082f": {"rom_size": 8388608, "rom_crc32": 148883798, "savesize": 8192, "savetype": 2}, "ae27b4f82e06b9691f3faf4f09288a957d81bbf5": {"rom_size": 8388608, "rom_crc32": 2804391637, "savesize": 0, "savetype": 0}, "4833cc6c1f9fe679e2265f722dbfd047aa556318": {"rom_size": 8388608, "rom_crc32": 3259125469, "savesize": 0, "savetype": 0}, "f0946cb6eba8c6bffac059471a6dcae4436ba012": {"rom_size": 8388608, "rom_crc32": 3879978513, "savesize": 32768, "savetype": 3}, "4a8548a84817137089ff9fcb09f2bf73fc202cad": {"rom_size": 8388608, "rom_crc32": 1275619934, "savesize": 0, "savetype": 0}, "9d5d4d2fe399eb91e6545ce45c58ad03644cd7e6": {"rom_size": 8388608, "rom_crc32": 26599055, "savesize": 0, "savetype": 0}, "587f8342c55e33583492b98d549a608103c69051": {"rom_size": 8388608, "rom_crc32": 2473437874, "savesize": 0, "savetype": 0}, "510d98683fd4cf59307be7b487e90ee6fd959be2": {"rom_size": 8388608, "rom_crc32": 1342776040, "savesize": 512, "savetype": 1}, "df93db82c8204a5583438f248a408c7103f850c9": {"rom_size": 8388608, "rom_crc32": 1104312318, "savesize": 512, "savetype": 1}, "5c156c8828d5f63ec0d48efef78ce5106fb060b5": {"rom_size": 8388608, "rom_crc32": 318220648, "savesize": 512, "savetype": 1}, "1bfeebb2b6e8f50777e6937c4cd1e33c2fa143c4": {"rom_size": 8388608, "rom_crc32": 2935034403, "savesize": 8192, "savetype": 2}, "2d3a04a78a92d1296de74e2b971bea8a05b8ddad": {"rom_size": 8388608, "rom_crc32": 289505217, "savesize": 8192, "savetype": 2}, "269233fdd87061dceb0e79f1b713fdf0f9808352": {"rom_size": 16777216, "rom_crc32": 1888117096, "savesize": 512, "savetype": 1}, "371b0f3e6f480162f315dae0e98a87b1f1c75e26": {"rom_size": 16777216, "rom_crc32": 4261668271, "savesize": 512, "savetype": 1}, "51fdc9de74bf8a68db7cfe109baab0b8b037609b": {"rom_size": 8388608, "rom_crc32": 1489387955, "savesize": 512, "savetype": 1}, "c9ec4873896aa5d76f18cfc0b88f06de95d4e724": {"rom_size": 16777216, "rom_crc32": 1624060423, "savesize": 512, "savetype": 1}, "c9deb9e9f214f41e0cb85f4cc1594bd75667b297": {"rom_size": 16777216, "rom_crc32": 3364215273, "savesize": 512, "savetype": 1}, "2d6e6f2aecc13db09d28c7e35aa76aab0f057f25": {"rom_size": 4194304, "rom_crc32": 2066816092, "savesize": 0, "savetype": 0}, "1044554f85259251b442460c0cd62f73688af8db": {"rom_size": 4194304, "rom_crc32": 1695539163, "savesize": 0, "savetype": 0}, "719ce59b236ab3e60356fac6d0ccb6c580398ae3": {"rom_size": 4194304, "rom_crc32": 1384892930, "savesize": 0, "savetype": 0}, "012d9dec3ade5c83b914ca0695d4c06bd6a54310": {"rom_size": 4194304, "rom_crc32": 753796367, "savesize": 0, "savetype": 0}, "1f78a27bdeb8c3be2e211776caab59407b76dbbc": {"rom_size": 4194304, "rom_crc32": 2486785052, "savesize": 0, "savetype": 0}, "e8c6b5ec7fb8d4690cda5e22812dfbdd48db8f10": {"rom_size": 8388608, "rom_crc32": 530382894, "savesize": 0, "savetype": 0}, "39397be6bc5b789fa0d5ea0d32c754be48078a8d": {"rom_size": 8388608, "rom_crc32": 3800759996, "savesize": 8192, "savetype": 2}, "38d32838141dc5b5a77a646877012e71eb01d121": {"rom_size": 8388608, "rom_crc32": 2505463650, "savesize": 32768, "savetype": 3}, "ed99cca791bee3744db44e0d8085783aad3242fd": {"rom_size": 4194304, "rom_crc32": 2738032271, "savesize": 0, "savetype": 0}, "4e41f3377b892560fc22ff4cd062c8a3c175c6a3": {"rom_size": 4194304, "rom_crc32": 1984933813, "savesize": 0, "savetype": 0}, "ab8b968a2bdcb7e17ab4e2b7135c539e5942a349": {"rom_size": 8388608, "rom_crc32": 978292301, "savesize": 0, "savetype": 0}, "651a8dd12603636a90a7cd93229c279443a0040c": {"rom_size": 8388608, "rom_crc32": 3488745513, "savesize": 0, "savetype": 0}, "e3d7b14d2875d0f17a7661f7940fe65a5f118922": {"rom_size": 8388608, "rom_crc32": 229781132, "savesize": 0, "savetype": 0}, "5242b3e556d0f369247721c935491d58f2d21fcd": {"rom_size": 16777216, "rom_crc32": 569332069, "savesize": 65536, "savetype": 5}, "fdf42901bc017ef20582ddf2ceb4c24c2eab7adf": {"rom_size": 33554432, "rom_crc32": 836178643, "savesize": 65536, "savetype": 5}, "fa9e9956c3e173dcd6cc362ea18ede82f39d6538": {"rom_size": 33554432, "rom_crc32": 234529778, "savesize": 65536, "savetype": 5}, "5a040dd1aa59c7803f878af8494c478d94794854": {"rom_size": 8388608, "rom_crc32": 3116457863, "savesize": 65536, "savetype": 5}, "8b8367e29ae016ea891bcc3bbf33c78d95c7b8d9": {"rom_size": 8388608, "rom_crc32": 3345271934, "savesize": 65536, "savetype": 5}, "b5974f5c7bbbf3c0ec8b6b34453718546dcba2f8": {"rom_size": 4194304, "rom_crc32": 372538931, "savesize": 512, "savetype": 1}, "b33b7bdb5efdeac38bc0b416a62d8eb7f70c64b7": {"rom_size": 4194304, "rom_crc32": 3945947796, "savesize": 0, "savetype": 0}, "0c254b93de5cb2cc430817fd08a3026127fc40ea": {"rom_size": 4194304, "rom_crc32": 854171837, "savesize": 8192, "savetype": 2}, "3bf9a94c72b9f298c1f5e9237fd1caecc0627cc0": {"rom_size": 8388608, "rom_crc32": 312211343, "savesize": 512, "savetype": 1}, "95a9267a4de8beec1f8a13af6cbb05a254e2cad3": {"rom_size": 8388608, "rom_crc32": 1181970264, "savesize": 512, "savetype": 1}, "e1c53570da3cbd6a9366e244f005dfc9a372fd3d": {"rom_size": 4194304, "rom_crc32": 330153787, "savesize": 512, "savetype": 1}, "99b678d2a2653ca43dd994c7bb533f707b591912": {"rom_size": 4194304, "rom_crc32": 3917778195, "savesize": 8192, "savetype": 2}, "68a4e638828bbf19abcc5b7418f34f8bb56eaf3d": {"rom_size": 4194304, "rom_crc32": 4227874347, "savesize": 8192, "savetype": 2}, "be21e10d7506f7b70ab0a4ef6ea69dab9fc49da4": {"rom_size": 16777216, "rom_crc32": 2315662202, "savesize": 512, "savetype": 1}, "d3f7aafe5941841d43cc3449b61318c8b0b7f69c": {"rom_size": 16777216, "rom_crc32": 1311557709, "savesize": 512, "savetype": 1}, "09b6afde6440040bb9dff6492a12b79ce9e68e1b": {"rom_size": 16777216, "rom_crc32": 1813207072, "savesize": 512, "savetype": 1}, "3f7db14b40848ce7f84011b5f7c3de36b6e86ffe": {"rom_size": 16777216, "rom_crc32": 2104690399, "savesize": 512, "savetype": 1}, "6503bb8d94ad4a9a409a2a50f1acde5e30452c5d": {"rom_size": 8388608, "rom_crc32": 2912307857, "savesize": 8192, "savetype": 2}, "e5209adb7ec48127d46c800d2b19dbd192278237": {"rom_size": 16777216, "rom_crc32": 1812925318, "savesize": 512, "savetype": 1}, "3ee9ecd26eac2b38f1437e3778aba8cb7cfc8a5a": {"rom_size": 8388608, "rom_crc32": 29454463, "savesize": 8192, "savetype": 2}, "0824457916a426d34da7697d965e0140e26c59db": {"rom_size": 8388608, "rom_crc32": 4128394623, "savesize": 0, "savetype": 0}, "a0b6b0eb42fbcc45c769d6ae2bd08910c2df1d13": {"rom_size": 16777216, "rom_crc32": 3834199511, "savesize": 512, "savetype": 1}, "5ee8129c5d03c88d21371cbd4f585538d34038c2": {"rom_size": 16777216, "rom_crc32": 3034142508, "savesize": 512, "savetype": 1}, "7f9d5ba03201653fb67325d824d07e2600d67af7": {"rom_size": 16777216, "rom_crc32": 2592438896, "savesize": 512, "savetype": 1}, "c5097e72ed136ccf1c8e6c21f0539d12435a6bdb": {"rom_size": 8388608, "rom_crc32": 3504838245, "savesize": 512, "savetype": 1}, "895ac059b13875f6a7a14c97e94e2388f7f84904": {"rom_size": 8388608, "rom_crc32": 1693190119, "savesize": 512, "savetype": 1}, "74644bcfd96b5b956a1533e679230bd46d5de348": {"rom_size": 8388608, "rom_crc32": 3396211868, "savesize": 512, "savetype": 1}, "404601d22f9d8bbd79c6229e5969c0ee9414da31": {"rom_size": 8388608, "rom_crc32": 3564949492, "savesize": 512, "savetype": 1}, "a2120d0a8ce4d9d3e1d1fcadf9c1cdee553f83bc": {"rom_size": 8388608, "rom_crc32": 543704115, "savesize": 8192, "savetype": 2}, "189b35efc3fec1756083485f9cf7ffe695342a3c": {"rom_size": 8388608, "rom_crc32": 541147873, "savesize": 8192, "savetype": 2}, "db8a60626ed183162cfdaf034054e3c861b29984": {"rom_size": 8388608, "rom_crc32": 3005840729, "savesize": 8192, "savetype": 2}, "735f6284bece3cf9b6de5bc7f30dcfe6aadc84cc": {"rom_size": 8388608, "rom_crc32": 3852825005, "savesize": 32768, "savetype": 3}, "5fec524d620e368c5beaed3dce7f4e64c4a6fe69": {"rom_size": 8388608, "rom_crc32": 721909649, "savesize": 65536, "savetype": 5}, "aa11560789f6b552d54d91d8bb465b961b5f38dc": {"rom_size": 16777216, "rom_crc32": 3364991648, "savesize": 65536, "savetype": 5}, "7276d57ce0cfe49acf9ab3a7205cd62a258b9e3c": {"rom_size": 8388608, "rom_crc32": 1009036236, "savesize": 8192, "savetype": 2}, "35bdeabedafd49fffa98162e8872cc24a7ac6200": {"rom_size": 4194304, "rom_crc32": 2331128912, "savesize": 0, "savetype": 0}, "9af90f3edc8743bd4aca79699a76008df1cfc957": {"rom_size": 4194304, "rom_crc32": 4039798128, "savesize": 512, "savetype": 1}, "2c3c68bc28d15a49eb2fdb336ecb48b4b8b3877b": {"rom_size": 4194304, "rom_crc32": 1671709230, "savesize": 0, "savetype": 0}, "a073bd1aa042ea65b5959225e312b4b857476154": {"rom_size": 8388608, "rom_crc32": 3859726723, "savesize": 32768, "savetype": 3}, "171c8a667c7c539f97746fc0c362fbb70bbec6f3": {"rom_size": 8388608, "rom_crc32": 3055006548, "savesize": 512, "savetype": 1}, "e0cbfdc2f50f552c733d84be9628136be80d29fb": {"rom_size": 8388608, "rom_crc32": 1818677182, "savesize": 512, "savetype": 1}, "88a6cd76a1f5a99210d26e484d6eda502d74f3cf": {"rom_size": 4194304, "rom_crc32": 2515715442, "savesize": 512, "savetype": 1}, "5f048726be54c83e33b6b8a71727de958cdaf1d1": {"rom_size": 4194304, "rom_crc32": 4060514104, "savesize": 512, "savetype": 1}, "7bc8c019395645815b4e84da1b69e849509df5e7": {"rom_size": 8388608, "rom_crc32": 1777227036, "savesize": 512, "savetype": 1}, "ad41ba622ef554852911ae9d2bbf9353b19ce9d1": {"rom_size": 8388608, "rom_crc32": 3152191843, "savesize": 512, "savetype": 1}, "c785725dd59bae56267a0161afadd39fc2a4cb55": {"rom_size": 8388608, "rom_crc32": 3591379904, "savesize": 512, "savetype": 1}, "102eaadd050b4dad08a647376d081c35a5de40dd": {"rom_size": 8388608, "rom_crc32": 2905960377, "savesize": 512, "savetype": 1}, "425f7bdaf696ba4d857048a3d31dc43680539572": {"rom_size": 4194304, "rom_crc32": 4048250351, "savesize": 0, "savetype": 0}, "01e5a22694d22f98dfe794149ef647bae095d70c": {"rom_size": 4194304, "rom_crc32": 1378819921, "savesize": 512, "savetype": 1}, "5ef0dc0bcd469fa54d69e91b6b77bf54f65494f8": {"rom_size": 4194304, "rom_crc32": 2951979206, "savesize": 512, "savetype": 1}, "6f07f3df1a388421bc21b7c7f2f02cbf9de92a61": {"rom_size": 4194304, "rom_crc32": 221414682, "savesize": 32768, "savetype": 3}, "36e5b19fb9d5cefced22b301927e2f074856ec06": {"rom_size": 16777216, "rom_crc32": 1390455445, "savesize": 512, "savetype": 1}, "904af1577e997ca8c44b06384dd8869f0c281dce": {"rom_size": 8388608, "rom_crc32": 2152619490, "savesize": 512, "savetype": 1}, "0ed4482824964589348273714c659654503ec280": {"rom_size": 8388608, "rom_crc32": 805280681, "savesize": 512, "savetype": 1}, "4281ee3f38e0466c9979474a186dff2001a18efe": {"rom_size": 8388608, "rom_crc32": 484656330, "savesize": 512, "savetype": 1}, "82945179b1f7cd84c980d197cbc9bc44693bfcce": {"rom_size": 16777216, "rom_crc32": 2638389054, "savesize": 512, "savetype": 1}, "be230add51a5ab1880976d75052e53f1ae39dc79": {"rom_size": 16777216, "rom_crc32": 2497250621, "savesize": 512, "savetype": 1}, "0e784109e33445ea901b212edcd58eef81cef16a": {"rom_size": 8388608, "rom_crc32": 1249765774, "savesize": 32768, "savetype": 3}, "4732221abbf26c5b74648c709b774247cd737a33": {"rom_size": 8388608, "rom_crc32": 1298816541, "savesize": 32768, "savetype": 3}, "996e4eb949c2899f001d9b56f4fb13d5f4a962b6": {"rom_size": 8388608, "rom_crc32": 3535392694, "savesize": 32768, "savetype": 3}, "8f6a471f9782d8a4703f62b187d7c67cd12947de": {"rom_size": 8388608, "rom_crc32": 3596500483, "savesize": 32768, "savetype": 3}, "dc1743b6d1311f796985b0dfbc314acf38e5af3b": {"rom_size": 8388608, "rom_crc32": 3699223382, "savesize": 512, "savetype": 1}, "a4e25dfe3a37fa281c42ab84d871ee8c0d3fc472": {"rom_size": 8388608, "rom_crc32": 106365570, "savesize": 512, "savetype": 1}, "1052f7e37df37073cc4f676a04e6fdc274e0a26b": {"rom_size": 4194304, "rom_crc32": 641013077, "savesize": 0, "savetype": 0}, "32cda5809d699d2260b76d817e5ff6bc44ace05d": {"rom_size": 4194304, "rom_crc32": 2444322962, "savesize": 0, "savetype": 0}, "d7fa97a71c0c5f5cd5f18e1be0562cca070939cb": {"rom_size": 16777216, "rom_crc32": 1959637882, "savesize": 32768, "savetype": 3}, "dd3356eba3a1e58102cdf645feb8e411b48072f3": {"rom_size": 16777216, "rom_crc32": 2908367438, "savesize": 32768, "savetype": 3}, "c5f791bdefa03b5e7ad1b482bfd00fe9b6001caf": {"rom_size": 8388608, "rom_crc32": 2334641511, "savesize": 131072, "savetype": 6}, "e0bf2d5bd19eb96b9ae8836be2f0f120f9ea31a8": {"rom_size": 4194304, "rom_crc32": 283960523, "savesize": 0, "savetype": 0}, "377810e80212b9979f132231aba82022f7c52f90": {"rom_size": 4194304, "rom_crc32": 2332568782, "savesize": 0, "savetype": 0}, "993ee1e7525af19c8b370afd1246b744fee01066": {"rom_size": 8388608, "rom_crc32": 3298368787, "savesize": 0, "savetype": 0}, "7da972c92e7e516a644e10caafbab20ec783f07a": {"rom_size": 8388608, "rom_crc32": 3524389082, "savesize": 0, "savetype": 0}, "3f22eee33b6a91018788cb8c17bea96c5514eb44": {"rom_size": 8388608, "rom_crc32": 1956009308, "savesize": 0, "savetype": 0}, "eac819652dc03a12b285b96dc521e597fbae45ea": {"rom_size": 8388608, "rom_crc32": 2943508518, "savesize": 0, "savetype": 0}, "97104a0aaf60d53289c3f65914984d9684fe431e": {"rom_size": 8388608, "rom_crc32": 2259182065, "savesize": 0, "savetype": 0}, "e0c74d960baf9eefd3bc87ae0f20bb56fcc07b12": {"rom_size": 8388608, "rom_crc32": 2200534291, "savesize": 0, "savetype": 0}, "2baa0a389f177159b39bce38b66486af1980fb22": {"rom_size": 4194304, "rom_crc32": 3891717167, "savesize": 512, "savetype": 1}, "51e39838cea4ddb82539b8b74a37f1ae7214bee4": {"rom_size": 4194304, "rom_crc32": 828018964, "savesize": 512, "savetype": 1}, "37c0343c1f808efbe2ead2b4de91b22e758fa1d6": {"rom_size": 4194304, "rom_crc32": 1223010062, "savesize": 512, "savetype": 1}, "be832b60294edc1f92738288cd2fa3d58b3295f4": {"rom_size": 8388608, "rom_crc32": 3131128772, "savesize": 512, "savetype": 1}, "da30c875b6c8f0b9dd8f9a422b47a57c3e468407": {"rom_size": 8388608, "rom_crc32": 1693299847, "savesize": 512, "savetype": 1}, "fa79aa006200ead888310a47ca1b2de1954d8638": {"rom_size": 4194304, "rom_crc32": 3903936120, "savesize": 0, "savetype": 0}, "f94467c0e71afd104dcd0a350810c63e157a9c4c": {"rom_size": 4194304, "rom_crc32": 1273672620, "savesize": 0, "savetype": 0}, "013673ffb8dc6e2053583eb58acf9335627b1d4e": {"rom_size": 4194304, "rom_crc32": 187261390, "savesize": 0, "savetype": 0}, "55baef00bfaf917905b7813e222251913c2cf864": {"rom_size": 4194304, "rom_crc32": 4196974296, "savesize": 512, "savetype": 1}, "2af074c2782a64ddd71d7bf9a2ff252d58812cec": {"rom_size": 8388608, "rom_crc32": 763908714, "savesize": 512, "savetype": 1}, "647588a36bca872681d52928479d7cae07595b89": {"rom_size": 4194304, "rom_crc32": 504396185, "savesize": 0, "savetype": 0}, "d16c04568219fd29918ee2e7f8e5327f6853065c": {"rom_size": 4194304, "rom_crc32": 2585756005, "savesize": 0, "savetype": 0}, "2aae146199a396179e911e47b1e0dec0c9f6385d": {"rom_size": 4194304, "rom_crc32": 1761541952, "savesize": 0, "savetype": 0}, "21e3ba63da52e1fe64cbab2191c8ed046e0b8376": {"rom_size": 8388608, "rom_crc32": 2938372095, "savesize": 512, "savetype": 1}, "92ce31f100dfbdb04aae44f584e3c39749e05e10": {"rom_size": 16777216, "rom_crc32": 3137709631, "savesize": 8192, "savetype": 2}, "19537226f7df07aefaaadb3aa49365005fb97381": {"rom_size": 16777216, "rom_crc32": 2945118952, "savesize": 8192, "savetype": 2}, "cae6865e70450bfacd9802bfebc822cc2b2ed929": {"rom_size": 8388608, "rom_crc32": 2350578852, "savesize": 8192, "savetype": 2}, "a24a32ea4743d7d02a304edf5ea87cfd332ce9dd": {"rom_size": 8388608, "rom_crc32": 1215871978, "savesize": 65536, "savetype": 5}, "63bfd99df7b32af6c7a5eae7f6c13a1c5f82d3ce": {"rom_size": 8388608, "rom_crc32": 3384571301, "savesize": 65536, "savetype": 5}, "f91c07931c050b8458489b87996d858c4e81f613": {"rom_size": 8388608, "rom_crc32": 3667755359, "savesize": 32768, "savetype": 3}, "063632ae56fa5a0b44ab97ba4e25059b3de70ae3": {"rom_size": 8388608, "rom_crc32": 686860577, "savesize": 8192, "savetype": 2}, "4d3fb8c7df796731abb9f3e24dfb4be5d8c29b97": {"rom_size": 4194304, "rom_crc32": 2775251895, "savesize": 512, "savetype": 1}, "5ca60038ae8258a308b17326f62ec2e550a331fd": {"rom_size": 4194304, "rom_crc32": 4283541929, "savesize": 512, "savetype": 1}, "88a4410e5e8ef180d4375a656ad0e8bdfad66d4f": {"rom_size": 4194304, "rom_crc32": 3462590964, "savesize": 512, "savetype": 1}, "2d0aa4ebc05712307ee716cb0291037804a877bc": {"rom_size": 4194304, "rom_crc32": 1012580549, "savesize": 8192, "savetype": 2}, "9ceba64c42a2a430d9df4f59becab4fce49ae6d5": {"rom_size": 4194304, "rom_crc32": 3734930879, "savesize": 512, "savetype": 1}, "6d3e9edf83a86c9fb5f602eed4cad2976dd0c8a0": {"rom_size": 8388608, "rom_crc32": 746185681, "savesize": 512, "savetype": 1}, "a1e1eb68e747a0f73ba45a4eab86b1a86f37cc9b": {"rom_size": 8388608, "rom_crc32": 2059239066, "savesize": 512, "savetype": 1}, "a3407a821d70ca993070de023978f6fad99ce168": {"rom_size": 8388608, "rom_crc32": 2540090121, "savesize": 512, "savetype": 1}, "3e7f69b5779eab58a1b2dcf5f0a4ceb77e1f1ca5": {"rom_size": 4194304, "rom_crc32": 2225976003, "savesize": 0, "savetype": 0}, "eef334b000d6bbec7608dafbaf67163d052ff810": {"rom_size": 4194304, "rom_crc32": 1955256120, "savesize": 0, "savetype": 0}, "cb7bdb6c4799c8daf0fd799dc4c6c0248de20971": {"rom_size": 4194304, "rom_crc32": 2948275509, "savesize": 512, "savetype": 1}, "10cbe424d72d191c62d9a09223abdcc94c46f7b4": {"rom_size": 4194304, "rom_crc32": 3562716961, "savesize": 32768, "savetype": 3}, "23464bbe669f67e323ce7914a0e00beef951d119": {"rom_size": 4194304, "rom_crc32": 2439970139, "savesize": 32768, "savetype": 3}, "4b574b9599c061f14ae869bc7f764cb419c5b490": {"rom_size": 8388608, "rom_crc32": 2871518506, "savesize": 8192, "savetype": 2}, "0aba9f5d890a6b0b408212f4742a1fc63e20d4f1": {"rom_size": 4194304, "rom_crc32": 2640339213, "savesize": 0, "savetype": 0}, "f32886de7fc2c905f77d37ea149f32b3297e9f7c": {"rom_size": 4194304, "rom_crc32": 2295105388, "savesize": 0, "savetype": 0}, "56ccd46217c96c7a89f1ef0d83bb81a6d7f1a471": {"rom_size": 4194304, "rom_crc32": 3828677126, "savesize": 0, "savetype": 0}, "06688f6e6021fbe585d3807dcb85e714648d729b": {"rom_size": 8388608, "rom_crc32": 1482246889, "savesize": 512, "savetype": 1}, "b7d3683520ff013b37502023af9f121e6aae5891": {"rom_size": 8388608, "rom_crc32": 2050946118, "savesize": 512, "savetype": 1}, "2833f67c7e9549b2357131bb06fed9057c0eb9f2": {"rom_size": 8388608, "rom_crc32": 2910566344, "savesize": 512, "savetype": 1}, "09547fc051876487d748138fbf6826c46a33b5bf": {"rom_size": 16777216, "rom_crc32": 1644659887, "savesize": 32768, "savetype": 3}, "55dca41c52de7155e6cdb57fc1a2d6ac9892621e": {"rom_size": 8388608, "rom_crc32": 3528914679, "savesize": 32768, "savetype": 3}, "a89daa5d84af2c85a2bcc292bf18b7c18661d9b5": {"rom_size": 8388608, "rom_crc32": 953752148, "savesize": 32768, "savetype": 3}, "e46ad83dc660bea7d0a4090d693526825e3a92b0": {"rom_size": 8388608, "rom_crc32": 1604353669, "savesize": 32768, "savetype": 3}, "36d3df1db3d7d395734bc419e4aa2bf64dc8f4f2": {"rom_size": 8388608, "rom_crc32": 212262129, "savesize": 32768, "savetype": 3}, "890309e6192d22a08425aaf324a4e082379c37d4": {"rom_size": 8388608, "rom_crc32": 2699619208, "savesize": 32768, "savetype": 3}, "2aaa5fe9704eeca1f788193f1582db5f3431ff09": {"rom_size": 8388608, "rom_crc32": 2829804637, "savesize": 32768, "savetype": 3}, "d2e67c8ba5578fe2f0cedf524947e6e5233f55e8": {"rom_size": 4194304, "rom_crc32": 338230812, "savesize": 0, "savetype": 0}, "326e97bfa861c7ab8fe302ff422b8ebc77a2cdae": {"rom_size": 16777216, "rom_crc32": 3688657379, "savesize": 131072, "savetype": 6}, "81cf9a21217b807b00c425fc53a6e34abe1e3122": {"rom_size": 16777216, "rom_crc32": 608614688, "savesize": 32768, "savetype": 3}, "6a1937972c2c0dc842b23c73b7ddc95f6c03179a": {"rom_size": 16777216, "rom_crc32": 4057292827, "savesize": 32768, "savetype": 3}, "ccc1ee6d8a894483479676cbac359b7a02601c80": {"rom_size": 16777216, "rom_crc32": 2015013720, "savesize": 32768, "savetype": 3}, "caa0daf0a2035c395605bf8c88bd24833ec71b29": {"rom_size": 4194304, "rom_crc32": 3177093016, "savesize": 32768, "savetype": 3}, "b1b645a0bd6d95f25fe7909e958857da54d60f3e": {"rom_size": 4194304, "rom_crc32": 635698330, "savesize": 32768, "savetype": 3}, "a5cff200fe46542cfa0190d9ef98f04b38167b98": {"rom_size": 4194304, "rom_crc32": 2865058301, "savesize": 512, "savetype": 1}, "89b6176600d6ecf573b69fac29ec89095ebbe397": {"rom_size": 4194304, "rom_crc32": 2110918451, "savesize": 512, "savetype": 1}, "64f4a927709817ccb24f0f0d98a5f5c2a3fae79b": {"rom_size": 4194304, "rom_crc32": 2475158140, "savesize": 0, "savetype": 0}, "9d9a5b97f615b4a065749dd27d526cd5b7bf3fa0": {"rom_size": 4194304, "rom_crc32": 2616838703, "savesize": 0, "savetype": 0}, "8fdd317abf898b13dbf67527068e69870090495e": {"rom_size": 4194304, "rom_crc32": 2447882860, "savesize": 0, "savetype": 0}, "93f210cb0ea98d91b0a3b9cf0b0d6b38608073f5": {"rom_size": 4194304, "rom_crc32": 1876390861, "savesize": 0, "savetype": 0}, "3801b57409e204f4fd002a8a51bb435d1d5f8a25": {"rom_size": 4194304, "rom_crc32": 2958245697, "savesize": 0, "savetype": 0}, "774abb3cec146130eba131f88da418a77f1a187f": {"rom_size": 4194304, "rom_crc32": 588811443, "savesize": 0, "savetype": 0}, "552d0109945680ea0254c05c44e8bdeb62936712": {"rom_size": 4194304, "rom_crc32": 3128091013, "savesize": 0, "savetype": 0}, "b429a05c22bfd5d17e979e74a301671245d9ef61": {"rom_size": 4194304, "rom_crc32": 1111199685, "savesize": 8192, "savetype": 2}, "baedf5b3d763721ba8f2b368bc8bc4ed91283d9b": {"rom_size": 4194304, "rom_crc32": 4209311212, "savesize": 512, "savetype": 1}, "ad2592a0770975efb800afe7b98e7a3a77db1042": {"rom_size": 4194304, "rom_crc32": 1481148492, "savesize": 512, "savetype": 1}, "ae557926846dd36c28bebe5bcaa358342ee59bf8": {"rom_size": 4194304, "rom_crc32": 2261993135, "savesize": 512, "savetype": 1}, "4668c771a5a7a2a63906e5b66a60a4bf0c6b67bf": {"rom_size": 4194304, "rom_crc32": 1447492049, "savesize": 512, "savetype": 1}, "2f7946d0f9a22d344c415dd11106f589e7b90f11": {"rom_size": 4194304, "rom_crc32": 832364342, "savesize": 0, "savetype": 0}, "335267aa9252d02166cb305cc212d6880864a6d5": {"rom_size": 4194304, "rom_crc32": 290338721, "savesize": 8192, "savetype": 2}, "020614f063341d2036028a3c1a4179f15fa10879": {"rom_size": 4194304, "rom_crc32": 1072436742, "savesize": 512, "savetype": 1}, "dc841d6e8a24751f143733071022dc0f001ae429": {"rom_size": 4194304, "rom_crc32": 483522444, "savesize": 512, "savetype": 1}, "7d7270f52567d118636bf4dbe57115eb4ad9aaa3": {"rom_size": 4194304, "rom_crc32": 3568334746, "savesize": 512, "savetype": 1}, "92167fb57b2817ebc695448447e1b1fabd89f4dd": {"rom_size": 4194304, "rom_crc32": 999485024, "savesize": 512, "savetype": 1}, "b17a4f45062eacaa270a2df14e82f6f0f19199d5": {"rom_size": 4194304, "rom_crc32": 156823049, "savesize": 512, "savetype": 1}, "92631669e6c49b0f3a9b0d60038c8685df4cfb1c": {"rom_size": 4194304, "rom_crc32": 2631194319, "savesize": 512, "savetype": 1}, "04dda6a1581286523a818253ea84c0aebb6e187b": {"rom_size": 4194304, "rom_crc32": 3300932264, "savesize": 512, "savetype": 1}, "7d2140e3145db974eddebca2e1e253d77b2f5bc0": {"rom_size": 4194304, "rom_crc32": 1171429847, "savesize": 512, "savetype": 1}, "dd3b228573dfa4561c979f141f9848266499c119": {"rom_size": 4194304, "rom_crc32": 1812337136, "savesize": 512, "savetype": 1}, "c125ed4a66d6cd95dabf60c6b702ec76092f06b0": {"rom_size": 4194304, "rom_crc32": 3795484368, "savesize": 512, "savetype": 1}, "6ca53d8e52a7af6bb976352c3019a02db49c6e02": {"rom_size": 4194304, "rom_crc32": 1464941411, "savesize": 512, "savetype": 1}, "4ef462693a93ad06af383dc04ce0ab84e810873b": {"rom_size": 4194304, "rom_crc32": 1005534068, "savesize": 512, "savetype": 1}, "498d4e91981c1e13942a17189ce624c827ecdfc3": {"rom_size": 4194304, "rom_crc32": 2233867974, "savesize": 512, "savetype": 1}, "b0dc90c988f183f4aea73a602b285ef409839981": {"rom_size": 4194304, "rom_crc32": 648115841, "savesize": 512, "savetype": 1}, "f1de2e91ed693b1b7b1137030ec1b7c347510831": {"rom_size": 4194304, "rom_crc32": 280268218, "savesize": 512, "savetype": 1}, "b405266b7dba588a90f9cf7b12cf99efdab0d724": {"rom_size": 4194304, "rom_crc32": 4116083875, "savesize": 512, "savetype": 1}, "255733321314e017ddebb6b2eb95495cf95de735": {"rom_size": 4194304, "rom_crc32": 2184393884, "savesize": 512, "savetype": 1}, "3f220e4e06d0bb22aebe5c9c4258649a59de312a": {"rom_size": 4194304, "rom_crc32": 2884423083, "savesize": 8192, "savetype": 2}, "0e92d58e7d5ebb1d1e45806c811a02a560320824": {"rom_size": 4194304, "rom_crc32": 4078038444, "savesize": 8192, "savetype": 2}, "0cc3330bcf1880ae8cadbb81b3b79dcab63614cf": {"rom_size": 4194304, "rom_crc32": 482242858, "savesize": 8192, "savetype": 2}, "1a7895623c1acf79d095a7160eba1615659ab816": {"rom_size": 4194304, "rom_crc32": 1672811319, "savesize": 512, "savetype": 1}, "b7bce7b7aabc96de7e8e1628b4feb0f4cf4c8175": {"rom_size": 4194304, "rom_crc32": 1022637061, "savesize": 512, "savetype": 1}, "d3f176a451fc03c6c35b1100c214fe50f3206739": {"rom_size": 4194304, "rom_crc32": 1977725472, "savesize": 512, "savetype": 1}, "b3b93768b642aaaad90db6fb2c8075f0813db7b9": {"rom_size": 4194304, "rom_crc32": 19898455, "savesize": 512, "savetype": 1}, "8b7fe6df59a45d7e142a9bef7c2b3ff2fb847694": {"rom_size": 4194304, "rom_crc32": 2664618731, "savesize": 8192, "savetype": 2}, "339bf21ec6c86340c5d421677ae0a05453cd58a0": {"rom_size": 4194304, "rom_crc32": 4081374817, "savesize": 0, "savetype": 0}, "f4af604edc6bddc61f0ddf6637d5d0d9e00603e2": {"rom_size": 4194304, "rom_crc32": 2946964612, "savesize": 0, "savetype": 0}, "b4b9682bfedd5cbbcb11a1932ceb3c2d4c9e0b77": {"rom_size": 4194304, "rom_crc32": 3963003871, "savesize": 0, "savetype": 0}, "0885cfe0eff06acd5493df3afbf3d35efd25c694": {"rom_size": 4194304, "rom_crc32": 3141781121, "savesize": 512, "savetype": 1}, "e4d7e7cafeb24c1eeb9ac1025e58279e6f7f6fa9": {"rom_size": 4194304, "rom_crc32": 4154821352, "savesize": 8192, "savetype": 2}, "57439018009843cfbee3240c8db3575ea828343a": {"rom_size": 4194304, "rom_crc32": 2728022247, "savesize": 32768, "savetype": 3}, "16462e02fffa7c130dc07b75422bb68d536eee17": {"rom_size": 16777216, "rom_crc32": 2288270816, "savesize": 512, "savetype": 1}, "e30d7d9e8bc20f4f2ab94b285d889b8d1870a4b1": {"rom_size": 16777216, "rom_crc32": 3003835197, "savesize": 512, "savetype": 1}, "c125d5aacfb1f3dc010f6e3e8860f79a0d4e03b5": {"rom_size": 16777216, "rom_crc32": 4281101993, "savesize": 512, "savetype": 1}, "7233d5925c5206a1a1314922b17a9590006816fa": {"rom_size": 8388608, "rom_crc32": 1729714095, "savesize": 512, "savetype": 1}, "f37da0d7565f961c3a661aca2cb0db66a7b79c72": {"rom_size": 8388608, "rom_crc32": 3722330773, "savesize": 512, "savetype": 1}, "e7fa7576d766741d3e4114216cdee70088cf28d4": {"rom_size": 8388608, "rom_crc32": 4278068670, "savesize": 8192, "savetype": 2}, "eb395749bbe72ddae12b51db40a0bad98f8c952d": {"rom_size": 8388608, "rom_crc32": 3965769075, "savesize": 8192, "savetype": 2}, "ff37c4056a5ae17d0ba444507adb4c577d5eb045": {"rom_size": 16777216, "rom_crc32": 1564886497, "savesize": 512, "savetype": 1}, "cc2420acfeb107bca88b8c95e3c6b2dbfb312b44": {"rom_size": 8388608, "rom_crc32": 310993820, "savesize": 8192, "savetype": 2}, "9f6b1437d910e5519a858802605224a36b0effef": {"rom_size": 8388608, "rom_crc32": 1339671369, "savesize": 32768, "savetype": 3}, "5d9357eee77edc3f29631571f086f25d8f0a725f": {"rom_size": 8388608, "rom_crc32": 3192667313, "savesize": 512, "savetype": 1}, "c1ecb402b982fa655887a763087851bf191f2d1d": {"rom_size": 8388608, "rom_crc32": 3636942139, "savesize": 512, "savetype": 1}, "d8814fa32deace008b61c7783d154b57cd54d060": {"rom_size": 4194304, "rom_crc32": 2180352055, "savesize": 512, "savetype": 1}, "78d8672229a4c8d488e190af36a094af225489bf": {"rom_size": 8388608, "rom_crc32": 448512591, "savesize": 512, "savetype": 1}, "bedf81f25967070ac18358196653b98636f10790": {"rom_size": 8388608, "rom_crc32": 3666932630, "savesize": 512, "savetype": 1}, "884f5ec8ad2647f1fc94d7aac23603b84c080a2a": {"rom_size": 4194304, "rom_crc32": 2458603013, "savesize": 512, "savetype": 1}, "e88c0e70c91c232546022adcc3b53b7e6425883f": {"rom_size": 4194304, "rom_crc32": 1652774325, "savesize": 512, "savetype": 1}, "5d780729930d60eda7b7c50d94051bedaea071fa": {"rom_size": 16777216, "rom_crc32": 2090357958, "savesize": 32768, "savetype": 3}, "9f165ad82e86bbf0f4933fc7b50b3ae85d7fbfcc": {"rom_size": 16777216, "rom_crc32": 456773035, "savesize": 32768, "savetype": 3}, "65a0329404d0a65bc95670cb36ae3ef25a607ed2": {"rom_size": 16777216, "rom_crc32": 255579939, "savesize": 32768, "savetype": 3}, "56061dedd9b6ea9177e78e9d1c2874404bb9adc3": {"rom_size": 8388608, "rom_crc32": 670219367, "savesize": 32768, "savetype": 3}, "7ffc9b326823fa25483842797527e52223c3d729": {"rom_size": 8388608, "rom_crc32": 2163282747, "savesize": 32768, "savetype": 3}, "0c1e640074f951a3968ec8a26963adcb13287686": {"rom_size": 8388608, "rom_crc32": 386100738, "savesize": 32768, "savetype": 3}, "ca5e45b56151f635e23ecc8fd86ec9d7b9f76ebd": {"rom_size": 8388608, "rom_crc32": 4277059044, "savesize": 32768, "savetype": 3}, "e9bd1eca810babb36caeab4022de2364c2f08e44": {"rom_size": 16777216, "rom_crc32": 3126714439, "savesize": 65536, "savetype": 5}, "ecd0098be38419aa812681cc26bcca4f17d386b4": {"rom_size": 16777216, "rom_crc32": 2776301620, "savesize": 65536, "savetype": 5}, "ac5e332a98c5038a72e0d3f2104616c71709ddc4": {"rom_size": 16777216, "rom_crc32": 1447421292, "savesize": 65536, "savetype": 5}, "4a4dafbcd1edd146b68304862843c9c813eda8ca": {"rom_size": 16777216, "rom_crc32": 1905725822, "savesize": 32768, "savetype": 3}, "af1a4d564f7391d9dc3d2ecec2a2c463609d3be0": {"rom_size": 8388608, "rom_crc32": 4235790759, "savesize": 32768, "savetype": 3}, "e864e6091dbfe05c0519a54a84a27a30d239c75f": {"rom_size": 8388608, "rom_crc32": 2049223436, "savesize": 32768, "savetype": 3}, "e789af031252549c2e1b64c9c79bed1ff155483e": {"rom_size": 16777216, "rom_crc32": 3512593317, "savesize": 32768, "savetype": 3}, "4828ff85b95079095dabbde31c873400fd3e65e1": {"rom_size": 8388608, "rom_crc32": 3597957374, "savesize": 32768, "savetype": 3}, "813d130a947964fd81d3bfd8d0050f8b3a7f9e95": {"rom_size": 8388608, "rom_crc32": 3607688619, "savesize": 32768, "savetype": 3}, "53d4dd463a1352fc7a77019b9a41cb36b8c28f64": {"rom_size": 4194304, "rom_crc32": 2648041210, "savesize": 512, "savetype": 1}, "db47a14cb75bc16bdffc038021d0fbd051bc2bcb": {"rom_size": 4194304, "rom_crc32": 3387286051, "savesize": 512, "savetype": 1}, "1e464d7f98744d513a2679cbbbb89fa9259836b4": {"rom_size": 4194304, "rom_crc32": 86808983, "savesize": 512, "savetype": 1}, "c96e2ff7120feeeba1b8def546f30912a97e0561": {"rom_size": 16777216, "rom_crc32": 2684958754, "savesize": 65536, "savetype": 5}, "b093af59d8f3614da98141ce4eff9b47d5e4c747": {"rom_size": 8388608, "rom_crc32": 1802176776, "savesize": 0, "savetype": 0}, "ba0e3d9f0203c22a0c2e5d10103ad3f600a0db20": {"rom_size": 8388608, "rom_crc32": 1047482115, "savesize": 0, "savetype": 0}, "eec1acc40ca5daddbefa895be49d79a8d111e8f7": {"rom_size": 8388608, "rom_crc32": 647690205, "savesize": 0, "savetype": 0}, "ba0b89fce79556028a20659ac1ae6be9653c2a52": {"rom_size": 8388608, "rom_crc32": 4170562093, "savesize": 0, "savetype": 0}, "cd524e0786456375bbe239ce0c90b62ad1af402f": {"rom_size": 8388608, "rom_crc32": 990479975, "savesize": 0, "savetype": 0}, "b711f40cd0694b382d8565f40274388b10c21a68": {"rom_size": 4194304, "rom_crc32": 1282928038, "savesize": 512, "savetype": 1}, "9b4b41fbdca0ba0ecebe18aff6628fc8b8077eed": {"rom_size": 4194304, "rom_crc32": 1169988663, "savesize": 0, "savetype": 0}, "05064ae786df3a566bdc483cff2a9968ad2b7ef5": {"rom_size": 4194304, "rom_crc32": 512552937, "savesize": 0, "savetype": 0}, "5f5a458a6a8611b1522ce7e810385295cd8502e0": {"rom_size": 4194304, "rom_crc32": 1335544399, "savesize": 0, "savetype": 0}, "221e1263ed530f5665c2fb76bfb8b702728422a5": {"rom_size": 16777216, "rom_crc32": 2649540436, "savesize": 0, "savetype": 0}, "d6c44abc53e11acb34e4b44d7fba0c4cd5420090": {"rom_size": 16777216, "rom_crc32": 1249926865, "savesize": 0, "savetype": 0}, "15c4885e584b0a9e78096ba96f4a9d14e292be33": {"rom_size": 16777216, "rom_crc32": 710033953, "savesize": 0, "savetype": 0}, "60cdc8dfd1b14cbcd450bdf0d96d2b6b31a6403c": {"rom_size": 8388608, "rom_crc32": 3548865505, "savesize": 0, "savetype": 0}, "fd8a281ef2b215a0c83dacca1c28a1e8947a86bf": {"rom_size": 16777216, "rom_crc32": 4039183986, "savesize": 0, "savetype": 0}, "ffc608de30bd752117e30ab90fdf2107b4890717": {"rom_size": 16777216, "rom_crc32": 2641789551, "savesize": 0, "savetype": 0}, "c6d1f3c74fd0c1c78d855c7b6a8c446e99a71568": {"rom_size": 33554432, "rom_crc32": 3003142549, "savesize": 0, "savetype": 0}, "c412fe8eb9ca9b4c1bb8e38c7735717597755527": {"rom_size": 16777216, "rom_crc32": 2758952622, "savesize": 0, "savetype": 0}, "6badad4f0ca4bddc71c27ce8e266be41a21201d4": {"rom_size": 8388608, "rom_crc32": 313152076, "savesize": 65536, "savetype": 5}, "42530d057753c2625cbc245bf06bbde59255a51f": {"rom_size": 8388608, "rom_crc32": 3117400531, "savesize": 65536, "savetype": 5}, "1b7f8ac8caa64d3ed79a8a23014ef95e61dfdb29": {"rom_size": 8388608, "rom_crc32": 196378243, "savesize": 65536, "savetype": 5}, "b73a6d7027d08cd644d97668181300bdc2de9bd3": {"rom_size": 4194304, "rom_crc32": 964176934, "savesize": 0, "savetype": 0}, "e2d20bd7a5ac109df211e42922e11c643f50fca1": {"rom_size": 4194304, "rom_crc32": 990472523, "savesize": 0, "savetype": 0}, "78e91b2cb23e5d6c29d95565fa589ca783a9edf0": {"rom_size": 16777216, "rom_crc32": 1659123166, "savesize": 0, "savetype": 0}, "20cb7d9f1583d344b5d911cda2ceb6ffdb4c8702": {"rom_size": 8388608, "rom_crc32": 248897355, "savesize": 0, "savetype": 0}, "1db435eda55fb9d0f80082c41c3358af060f2c1c": {"rom_size": 4194304, "rom_crc32": 2497958519, "savesize": 0, "savetype": 0}, "a51ec333cb3b633c4f42ffb3783aea6b16fcd571": {"rom_size": 4194304, "rom_crc32": 1456703318, "savesize": 0, "savetype": 0}, "7bf8da6435eff8aba74aa39edd77bbdbba8d0282": {"rom_size": 4194304, "rom_crc32": 1207329696, "savesize": 32768, "savetype": 3}, "60568504cbe91e6560f87d7f932bcedf5b4025b6": {"rom_size": 4194304, "rom_crc32": 3202775125, "savesize": 0, "savetype": 0}, "32c66ed2aa6f8ad1cbb1921ef5ec4a9ae1d66f69": {"rom_size": 4194304, "rom_crc32": 3739515525, "savesize": 512, "savetype": 1}, "53ede39b1ceb7fb20144cbcc8c59de9f498d7406": {"rom_size": 4194304, "rom_crc32": 3620210066, "savesize": 512, "savetype": 1}, "48917df8f75f13358e7af81efd8a1653e3eee788": {"rom_size": 4194304, "rom_crc32": 2694130896, "savesize": 512, "savetype": 1}, "4a8f1fbf8891c251b02d8ec98a9f7389924de41a": {"rom_size": 4194304, "rom_crc32": 439320294, "savesize": 512, "savetype": 1}, "cfac93c02ed3660ef5347263b211d23aacf533e3": {"rom_size": 4194304, "rom_crc32": 398754403, "savesize": 512, "savetype": 1}, "e87bdd2509571056fc8d8cdf34256c955d451e2b": {"rom_size": 4194304, "rom_crc32": 2612355496, "savesize": 512, "savetype": 1}, "ee07c8ee6a6fb3859e50d6e6ab8ffb7a5a16eb02": {"rom_size": 4194304, "rom_crc32": 585520999, "savesize": 512, "savetype": 1}, "b54b0749a813f62a41f89853b475925d856661a9": {"rom_size": 4194304, "rom_crc32": 2143260312, "savesize": 512, "savetype": 1}, "b4d13f4767ebaeddbbb9da5c3a6bbce000d93b86": {"rom_size": 8388608, "rom_crc32": 2525436451, "savesize": 0, "savetype": 0}, "b2ff54c96f8e33aa54560b3a714ef0772ff1f998": {"rom_size": 8388608, "rom_crc32": 1917010757, "savesize": 0, "savetype": 0}, "6a5deb2dbbf382f242e3378fa64d7bfc16b19591": {"rom_size": 4194304, "rom_crc32": 25663631, "savesize": 0, "savetype": 0}, "3d3702dcdad984e0291d5630335c67c4980c83a2": {"rom_size": 8388608, "rom_crc32": 1750274203, "savesize": 8192, "savetype": 2}, "07b9fd344d029b4d5d53817d629c55cc1f9800ea": {"rom_size": 8388608, "rom_crc32": 2985260338, "savesize": 512, "savetype": 1}, "bc3827d00a148c2d327f2c8b59ce96ba0a1ecb4c": {"rom_size": 8388608, "rom_crc32": 2289286441, "savesize": 0, "savetype": 0}, "b59ca24fd52b4fdad33d9a9faef5281b1caa520e": {"rom_size": 8388608, "rom_crc32": 3075965641, "savesize": 0, "savetype": 0}, "71e4cd3cfa4ac17cda8aa1c03a683ddc84ba878a": {"rom_size": 4194304, "rom_crc32": 2676840618, "savesize": 512, "savetype": 1}, "a1176b91a08ec8fc3f6a0e413f3c55735ba5031d": {"rom_size": 4194304, "rom_crc32": 783937254, "savesize": 512, "savetype": 1}, "dcb5084d0027cdf9b16ba150c152af3d39dc802a": {"rom_size": 8388608, "rom_crc32": 2328705788, "savesize": 512, "savetype": 1}, "d9a2f55cfd7f56a297141ec940d1b0c7701c6130": {"rom_size": 8388608, "rom_crc32": 666459137, "savesize": 512, "savetype": 1}, "47420dce622f548ab7c77e8d647bbef66ac4508e": {"rom_size": 8388608, "rom_crc32": 1871445436, "savesize": 8192, "savetype": 2}, "a619f458c35931a8330d1262dfb639381100b519": {"rom_size": 8388608, "rom_crc32": 3874864597, "savesize": 65536, "savetype": 5}, "523a3765317937f9401700bfccde1ac2992e7aef": {"rom_size": 8388608, "rom_crc32": 4249676232, "savesize": 32768, "savetype": 3}, "0ce7f44863bed869fab0d120e8bfda67855ff295": {"rom_size": 8388608, "rom_crc32": 1298920819, "savesize": 8192, "savetype": 2}, "c35514b185c9dfe221477015834c982416e6a468": {"rom_size": 8388608, "rom_crc32": 2853482904, "savesize": 8192, "savetype": 2}, "145572ef73e6473ed6bef83e26ba320b3c485f2e": {"rom_size": 8388608, "rom_crc32": 425557671, "savesize": 8192, "savetype": 2}, "60710a2fbdd52ebc4b53f0b400ec434e25150c41": {"rom_size": 8388608, "rom_crc32": 3958938381, "savesize": 8192, "savetype": 2}, "2dd34f047a5e26c0d7083dc58f6be2e151a693e0": {"rom_size": 4194304, "rom_crc32": 752500961, "savesize": 512, "savetype": 1}, "12e3762d5d7651f125af8ce623e58b6aef30d1db": {"rom_size": 4194304, "rom_crc32": 2151662708, "savesize": 32768, "savetype": 3}, "3f799f4cebb8739bb39d083582508935658c5b5f": {"rom_size": 4194304, "rom_crc32": 1613164237, "savesize": 512, "savetype": 1}, "66f45de23f4d12bfb2bf58fd7e0eb488cf341a80": {"rom_size": 8388608, "rom_crc32": 1411127545, "savesize": 8192, "savetype": 2}, "8f0f035ab79ef6f787e25f6457199f05f2cd7716": {"rom_size": 8388608, "rom_crc32": 3953094417, "savesize": 65536, "savetype": 5}, "cc6693098390dc0379ae7a6751a6044f507dcc8b": {"rom_size": 8388608, "rom_crc32": 3718638686, "savesize": 65536, "savetype": 5}, "2894bc67b2ef8dcd07aa8c8abd0a4944b3fc46b8": {"rom_size": 4194304, "rom_crc32": 2789080364, "savesize": 512, "savetype": 1}, "75d32b2b8aae485fb4595e0b66e34380a2ac9353": {"rom_size": 4194304, "rom_crc32": 1742871550, "savesize": 512, "savetype": 1}, "b04c22be1a96767723f6d9923025800e6d642a29": {"rom_size": 8388608, "rom_crc32": 2178812950, "savesize": 0, "savetype": 0}, "cae708e30bfc34d72aae7b29d42fcbfd37a80ccf": {"rom_size": 8388608, "rom_crc32": 3535556647, "savesize": 0, "savetype": 0}, "72dac277c4794ac5d5776074755a62cbfa3c31e0": {"rom_size": 4194304, "rom_crc32": 2514294122, "savesize": 32768, "savetype": 3}, "56c28bfa81a600c173d3cd37d6c0ab32bf125b9a": {"rom_size": 8388608, "rom_crc32": 1481091334, "savesize": 8192, "savetype": 2}, "21a65aacae49b0c18fd46eec5ea4770754577502": {"rom_size": 8388608, "rom_crc32": 1857487906, "savesize": 8192, "savetype": 2}, "01570b14901e9503f89f49cb35b5d620ecb415f7": {"rom_size": 8388608, "rom_crc32": 2360742232, "savesize": 32768, "savetype": 3}, "5fa702fdd918857243f1121055e79e75abbf8721": {"rom_size": 8388608, "rom_crc32": 2863996812, "savesize": 32768, "savetype": 3}, "d27fb04547cabeba9e611d6b26220f898b25db21": {"rom_size": 8388608, "rom_crc32": 2191012641, "savesize": 512, "savetype": 1}, "75bc4c3159cd0e15e4626c2e92f8775405841b30": {"rom_size": 16777216, "rom_crc32": 3114148659, "savesize": 512, "savetype": 1}, "196c32f3b7437e827ee24b24485fd2bf18dd9bdb": {"rom_size": 4194304, "rom_crc32": 1301236217, "savesize": 512, "savetype": 1}, "399f35937ee64c009a5d8171edfc62d33284c01f": {"rom_size": 8388608, "rom_crc32": 2324140056, "savesize": 8192, "savetype": 2}, "5213cc6ec92e236756a0f8ab3edbccf34680e5e5": {"rom_size": 4194304, "rom_crc32": 2123419298, "savesize": 0, "savetype": 0}, "b30e86dcfa1a586308df52d1d8bbfa3c5d7d8280": {"rom_size": 4194304, "rom_crc32": 2244491183, "savesize": 0, "savetype": 0}, "d909c71c16833bf74a13645f8a7e78c2dba9ba44": {"rom_size": 33554432, "rom_crc32": 4290596265, "savesize": 0, "savetype": 0}, "aa61e229ec17d2607c9cdf8de48e29816cf25e9d": {"rom_size": 33554432, "rom_crc32": 4228132632, "savesize": 0, "savetype": 0}, "75850cf679606faf70086e5ec66655d405a2604f": {"rom_size": 33554432, "rom_crc32": 1492241896, "savesize": 0, "savetype": 0}, "1b632db9537db57f1cf61be2579a794fa08688f5": {"rom_size": 33554432, "rom_crc32": 1897221442, "savesize": 0, "savetype": 0}, "f0db8f59ef24dc5fc45ae21539532825e51d35a0": {"rom_size": 33554432, "rom_crc32": 1569819437, "savesize": 0, "savetype": 0}, "4b41a21a88f7135950b2a443d6c7a5007a6fe9e8": {"rom_size": 33554432, "rom_crc32": 1682134347, "savesize": 0, "savetype": 0}, "6a19feeb50af5c0fe5fdb7904bcbae8bc0c98320": {"rom_size": 33554432, "rom_crc32": 4068628265, "savesize": 0, "savetype": 0}, "9118f243b99688a7ad90b52d346c563dd93e10c5": {"rom_size": 33554432, "rom_crc32": 3921131684, "savesize": 0, "savetype": 0}, "e7e83c8cd49948e6dfaa18995b34e269f69e8560": {"rom_size": 33554432, "rom_crc32": 2448659527, "savesize": 0, "savetype": 0}, "097d9c6345482fb373acfa3bdedfb536f8426c22": {"rom_size": 33554432, "rom_crc32": 1274718430, "savesize": 0, "savetype": 0}, "44e2059538804303d6975c6a6c7ea997adb22a76": {"rom_size": 33554432, "rom_crc32": 1147401029, "savesize": 0, "savetype": 0}, "463a5fdac244930bb8879db1e0c43ea479d094b7": {"rom_size": 33554432, "rom_crc32": 2093581771, "savesize": 0, "savetype": 0}, "b36c9f201c820624b32993368f1858d1fad85639": {"rom_size": 67108864, "rom_crc32": 1625282460, "savesize": 0, "savetype": 0}, "01071c55b1e13427fd620fd5048525f1a7ee4e2d": {"rom_size": 33554432, "rom_crc32": 3714744268, "savesize": 0, "savetype": 0}, "997b441ccf043e931f068aebe49b4117d51c297f": {"rom_size": 33554432, "rom_crc32": 3663040921, "savesize": 0, "savetype": 0}, "b65808d03e7a4ade5b064f7f95a9accec95543b2": {"rom_size": 33554432, "rom_crc32": 1874812139, "savesize": 0, "savetype": 0}, "af0d092e685393e86da8609aeee4d83f6bc7d60f": {"rom_size": 33554432, "rom_crc32": 1564960623, "savesize": 0, "savetype": 0}, "dc927ca680228cf60556e695bfcacf08a7bbfffb": {"rom_size": 33554432, "rom_crc32": 1709108918, "savesize": 0, "savetype": 0}, "373313c3d1f0bbdfdca0cd25ad9707b7e8b9ca0b": {"rom_size": 33554432, "rom_crc32": 2778659156, "savesize": 0, "savetype": 0}, "ae189eef285386a7141502a18fdfe02d6a24cf90": {"rom_size": 33554432, "rom_crc32": 228696963, "savesize": 0, "savetype": 0}, "cb4bc15ebc96ebf3ebd4815897b5fa02ef1c7ec2": {"rom_size": 33554432, "rom_crc32": 2741676485, "savesize": 0, "savetype": 0}, "cc5ab334b50af3ce12d04c4c552558eae8aaa46a": {"rom_size": 33554432, "rom_crc32": 3192292502, "savesize": 0, "savetype": 0}, "de342eb75c5aa148335105855680ae547ce50bb2": {"rom_size": 67108864, "rom_crc32": 21399584, "savesize": 0, "savetype": 0}, "bcbbbe8570b0c41abd7d3174d997eabf862f78be": {"rom_size": 67108864, "rom_crc32": 3536798074, "savesize": 0, "savetype": 0}, "234b333ec24910457b7a056d42e0665eb91055ab": {"rom_size": 67108864, "rom_crc32": 1761703653, "savesize": 0, "savetype": 0}, "1390941f18567c5eff4cc3bc959af0ada9948705": {"rom_size": 67108864, "rom_crc32": 1074850298, "savesize": 0, "savetype": 0}, "2dee0b88ccfb12ced5bdd932d45b46bf71966651": {"rom_size": 67108864, "rom_crc32": 2866495037, "savesize": 0, "savetype": 0}, "8f889007a7be21f1014b0fb65e9259dc3b832121": {"rom_size": 67108864, "rom_crc32": 221591124, "savesize": 0, "savetype": 0}, "0e801ae88f94f4d8cbfbe42b494a241845256ac0": {"rom_size": 67108864, "rom_crc32": 2455464962, "savesize": 0, "savetype": 0}, "6e5200b0e65d81fafe321588deb2c3211f045f02": {"rom_size": 33554432, "rom_crc32": 909917880, "savesize": 0, "savetype": 0}, "0a7bc0bffe8a876ec3da063d6f8d7f7efe444538": {"rom_size": 33554432, "rom_crc32": 3564892628, "savesize": 0, "savetype": 0}, "ce193ef9e166f1b9fd2b216111a9901f0796eb44": {"rom_size": 33554432, "rom_crc32": 1886664266, "savesize": 0, "savetype": 0}, "8b70ac3725988c80c5368a309e4719de93b01837": {"rom_size": 33554432, "rom_crc32": 2540882501, "savesize": 0, "savetype": 0}, "294c0a6b32f834f7bfd867e8d7f4e14b54c0ee7e": {"rom_size": 33554432, "rom_crc32": 4285891311, "savesize": 0, "savetype": 0}, "b28efbe7ba0d8d7a19bd0a18538eeed549ba0d50": {"rom_size": 33554432, "rom_crc32": 3611533424, "savesize": 0, "savetype": 0}, "96dd632889bc6f93e5f03b893b25d128c89f8f7f": {"rom_size": 33554432, "rom_crc32": 518488422, "savesize": 0, "savetype": 0}, "32467d463d1c8731252e6335a9f11fe456f35ef5": {"rom_size": 33554432, "rom_crc32": 73763272, "savesize": 0, "savetype": 0}, "dc72268bb0a3512b7114f24816ba5f0824359763": {"rom_size": 33554432, "rom_crc32": 240479967, "savesize": 0, "savetype": 0}, "047f50f47471cb0fe58ff9971dcbcc4896619e13": {"rom_size": 33554432, "rom_crc32": 2035867424, "savesize": 0, "savetype": 0}, "ff54d44d51a8047c7dfe14c2091298ddb9396da1": {"rom_size": 33554432, "rom_crc32": 3150694141, "savesize": 0, "savetype": 0}, "bce86d6a5082a2e6c9405b65c809cf8dcbc9f646": {"rom_size": 33554432, "rom_crc32": 3332969317, "savesize": 0, "savetype": 0}, "163c4c5bb85edb83824fc7b120b5369bbe298a31": {"rom_size": 33554432, "rom_crc32": 3384200433, "savesize": 0, "savetype": 0}, "82fb58cbe1a01b94e34af62a2ef31efab6d35608": {"rom_size": 33554432, "rom_crc32": 2372083534, "savesize": 0, "savetype": 0}, "4d46ac7a0e8609ba5bcd3039a6d411253d9b567a": {"rom_size": 16777216, "rom_crc32": 1240342493, "savesize": 131072, "savetype": 6}, "1c3162a5f4709ddae88e8affa6649d9ed6dd8c6d": {"rom_size": 4194304, "rom_crc32": 1758870879, "savesize": 0, "savetype": 0}, "bb8f421b8389e1b363508d27af642f284aa2879f": {"rom_size": 4194304, "rom_crc32": 661542932, "savesize": 8192, "savetype": 2}, "586ab7d7aac6f6379f88f9af21c75632267fe0b7": {"rom_size": 8388608, "rom_crc32": 1386591645, "savesize": 512, "savetype": 1}, "c418ce4880c14dc2972d9fb2e8ad0af2c53858c6": {"rom_size": 8388608, "rom_crc32": 205169976, "savesize": 0, "savetype": 0}, "9f0200e7704d4136c4de81685228aca0492cf060": {"rom_size": 8388608, "rom_crc32": 947828280, "savesize": 0, "savetype": 0}, "712c75d61dc35a225b3f6c7e4b9c23a2f6f3b397": {"rom_size": 16777216, "rom_crc32": 3465712113, "savesize": 0, "savetype": 0}, "1fc1ab87690b65171a8d3a2f0f61085583137a40": {"rom_size": 8388608, "rom_crc32": 1979930433, "savesize": 0, "savetype": 0}, "5fda955e6bd86274daf939958ca883948435e028": {"rom_size": 4194304, "rom_crc32": 4038728334, "savesize": 512, "savetype": 1}, "92b94cb5ced39359cb1fdbc4762dce1f06c5bfb4": {"rom_size": 4194304, "rom_crc32": 3561156925, "savesize": 512, "savetype": 1}, "737ebeb26a77deaf09cd79d46d14d6e72b2ee144": {"rom_size": 8388608, "rom_crc32": 3919440228, "savesize": 512, "savetype": 1}, "2839a2baaa4f2d277a41b01ea0ea16e8117154a9": {"rom_size": 8388608, "rom_crc32": 3037847396, "savesize": 0, "savetype": 0}, "48401418a4d77e892446f5e95ee710b8e70b1a44": {"rom_size": 16777216, "rom_crc32": 2133534295, "savesize": 32768, "savetype": 3}, "fda9c45fcfeed20652f7b3d776bb606286358273": {"rom_size": 8388608, "rom_crc32": 800438297, "savesize": 0, "savetype": 0}, "b8a7741bffbc737338cbf80d26bfa277907bf87f": {"rom_size": 8388608, "rom_crc32": 1807507277, "savesize": 0, "savetype": 0}, "4ccef23c616ba75402b1ee8ab0bd7cd1d15c0695": {"rom_size": 8388608, "rom_crc32": 1040514503, "savesize": 8192, "savetype": 2}, "b64d1d7ccbd5feec21c5a8cad8ee21c76e387584": {"rom_size": 8388608, "rom_crc32": 840636854, "savesize": 8192, "savetype": 2}, "db3971e19bb602087dd1a865747806c70101ec7f": {"rom_size": 4194304, "rom_crc32": 783679863, "savesize": 512, "savetype": 1}, "9a949b7c5df2e506a978188631a53e6bd775e762": {"rom_size": 16777216, "rom_crc32": 1477050533, "savesize": 65536, "savetype": 5}, "5892f6754a7e2e044634ae270ef24331268c40a6": {"rom_size": 8388608, "rom_crc32": 503043905, "savesize": 8192, "savetype": 2}, "6537ff54065d86a03b81851c9a57a373f6b459b9": {"rom_size": 4194304, "rom_crc32": 1583852212, "savesize": 0, "savetype": 0}, "a83f7559e430ac65f4060bd5b1a25c1d9b5cbd66": {"rom_size": 16777216, "rom_crc32": 2633402492, "savesize": 65536, "savetype": 5}, "96061da3d9f9b4f9b239c180ca1ef38620e0246e": {"rom_size": 16777216, "rom_crc32": 1725358745, "savesize": 32768, "savetype": 3}, "241b96c8bed138e90ba1199426c83359bc7f78e8": {"rom_size": 8388608, "rom_crc32": 1105883299, "savesize": 8192, "savetype": 2}, "2f7cbc88fdd2d1614a2a741dffddeb1d025c025f": {"rom_size": 16777216, "rom_crc32": 542941014, "savesize": 32768, "savetype": 3}, "ab7efff5f6e79eebe1f7531e5cff8e01cf8b5e5e": {"rom_size": 8388608, "rom_crc32": 2447037544, "savesize": 65536, "savetype": 5}, "a264d5d44616a575bdddd5dcb5fbb93ff8b43cb0": {"rom_size": 8388608, "rom_crc32": 3474525998, "savesize": 512, "savetype": 1}, "0bf00cb36772c20eae912a10e77d636baf09f0e0": {"rom_size": 8388608, "rom_crc32": 2179618018, "savesize": 512, "savetype": 1}, "f99322e97a536b0d8839f0242ca4fee025f29a98": {"rom_size": 4194304, "rom_crc32": 943519232, "savesize": 512, "savetype": 1}, "5536c8dd70d07b08baefac7996c745d0e6f5aa18": {"rom_size": 4194304, "rom_crc32": 1369714457, "savesize": 512, "savetype": 1}, "abc6dc1bcea5cb476bfc52f442867f743334a87b": {"rom_size": 4194304, "rom_crc32": 3757303905, "savesize": 512, "savetype": 1}, "ade375a8ee279cfb89657b6b3c273c86309ec7fc": {"rom_size": 4194304, "rom_crc32": 2084787294, "savesize": 0, "savetype": 0}, "9c4aee00ebdcb2c17fda6fcdb5c9fdefd13825e7": {"rom_size": 4194304, "rom_crc32": 3940419647, "savesize": 0, "savetype": 0}, "7ce508b706c27fa3375dcece4da15b28d685d95d": {"rom_size": 4194304, "rom_crc32": 2262222196, "savesize": 8192, "savetype": 2}, "763b483c6f82538c7c07148b2bfa98dc4e2ae152": {"rom_size": 4194304, "rom_crc32": 827827452, "savesize": 0, "savetype": 0}, "24aeee65ad3ca93a37cd4fc7f5c63519aa3eca00": {"rom_size": 4194304, "rom_crc32": 1455024609, "savesize": 0, "savetype": 0}, "c846eecc7d248064111d592afdb5303e1a704a87": {"rom_size": 8388608, "rom_crc32": 4132573537, "savesize": 65536, "savetype": 5}, "93acb70ddd068c802e7f6a298de05f983ab479f3": {"rom_size": 8388608, "rom_crc32": 273931492, "savesize": 65536, "savetype": 5}, "5f8f9cc642860ed147a8362e885194237f1c8447": {"rom_size": 8388608, "rom_crc32": 4078077970, "savesize": 65536, "savetype": 5}, "60676dd068d1263c6bd1fb5fd396e4986ebd388f": {"rom_size": 8388608, "rom_crc32": 3325036758, "savesize": 65536, "savetype": 5}, "f56ebfd0de821b6693ee6e2729e0a5961afc4e7f": {"rom_size": 8388608, "rom_crc32": 3791349992, "savesize": 65536, "savetype": 5}, "fe0a51dd66eb66e8ac51f6ac270d6fc0f379e92d": {"rom_size": 16777216, "rom_crc32": 3649165449, "savesize": 65536, "savetype": 5}, "67f5ab731e0185ce26148407aeb2b11fa1489117": {"rom_size": 16777216, "rom_crc32": 277921075, "savesize": 65536, "savetype": 5}, "91209c3fe5d8de35bf3ccb42d3dd8059c98497fa": {"rom_size": 16777216, "rom_crc32": 2749667139, "savesize": 65536, "savetype": 5}, "a2d69ac459345272b075297443ff26c079ad556a": {"rom_size": 16777216, "rom_crc32": 3996695188, "savesize": 65536, "savetype": 5}, "304742b2b49453595850f3843c6a7348dbf1b607": {"rom_size": 16777216, "rom_crc32": 1617566797, "savesize": 65536, "savetype": 5}, "a10e028b16e9d4d2f383be4e464ca7752b1a3cf3": {"rom_size": 4194304, "rom_crc32": 925023738, "savesize": 512, "savetype": 1}, "b3d2b4086c45898a4dc2938bfbc9f0c9b5585a47": {"rom_size": 4194304, "rom_crc32": 2164474509, "savesize": 512, "savetype": 1}, "2cde42dab9ec1205bff2c8c899c2c14c9997805b": {"rom_size": 4194304, "rom_crc32": 1814096450, "savesize": 512, "savetype": 1}, "546d9eb2e11cd6cd5d5d0db1af1f26c2ebb7177b": {"rom_size": 16777216, "rom_crc32": 1099554943, "savesize": 512, "savetype": 1}, "21986d46e31113f3e21eafaf2d93cce613f431c3": {"rom_size": 16777216, "rom_crc32": 530657768, "savesize": 512, "savetype": 1}, "b3b41d3926a46dfcb9aec151b7486d357989372b": {"rom_size": 8388608, "rom_crc32": 933127383, "savesize": 0, "savetype": 0}, "5aa475cc0eaf9efaebb204aa03fc88dd9b8a058a": {"rom_size": 4194304, "rom_crc32": 3836619985, "savesize": 512, "savetype": 1}, "61afdb6d742c990a1b7b9d7dd52af16d81d88a68": {"rom_size": 16777216, "rom_crc32": 1688173490, "savesize": 8192, "savetype": 2}, "ea228e1aacc1734f84fee3dbf245e9318f2d0419": {"rom_size": 4194304, "rom_crc32": 3055702406, "savesize": 0, "savetype": 0}, "14fd4c407aa1b43e01637377d6d3815a51e8849e": {"rom_size": 4194304, "rom_crc32": 1584564634, "savesize": 0, "savetype": 0}, "77cb7beaf513fd3bb86eff236b59ca9b3190e9a9": {"rom_size": 8388608, "rom_crc32": 357926844, "savesize": 512, "savetype": 1}, "32bcb36498b238791c2c9d5c21a5d6a84126cf7e": {"rom_size": 8388608, "rom_crc32": 3879869204, "savesize": 32768, "savetype": 3}, "d43b393622e31cbfc2ec4c1bd6ea2211f1472ba9": {"rom_size": 8388608, "rom_crc32": 7311696, "savesize": 32768, "savetype": 3}, "46ed4ef8f9094b6f116ef48dec323e43d0d01763": {"rom_size": 8388608, "rom_crc32": 2353076940, "savesize": 0, "savetype": 0}, "e59aa03ac05dee5b76dee48447c628b3e63e0b83": {"rom_size": 8388608, "rom_crc32": 1933645176, "savesize": 512, "savetype": 1}, "bdfd9f16cb3365441c84519f8aad9b9e43bb3ed2": {"rom_size": 8388608, "rom_crc32": 4080393096, "savesize": 512, "savetype": 1}, "ef1bd96fa7d306c97595f2d158708bcfb5b277f7": {"rom_size": 8388608, "rom_crc32": 59346559, "savesize": 512, "savetype": 1}, "ef9ad1c2667e04e5456f63ecaa85f3ada0a22ffe": {"rom_size": 8388608, "rom_crc32": 171122193, "savesize": 512, "savetype": 1}, "516287328152a879e02d86e27ab30d7789645dcd": {"rom_size": 4194304, "rom_crc32": 3912157098, "savesize": 512, "savetype": 1}, "d1a4cd60ad536ba44c91f9cb88adef96347531d1": {"rom_size": 8388608, "rom_crc32": 908959622, "savesize": 0, "savetype": 0}, "131eb779716f1b06cd658c2036c9f5c4f2370637": {"rom_size": 8388608, "rom_crc32": 3130361373, "savesize": 65536, "savetype": 5}, "3096f813eef237c244f418d32eab7ca5562571be": {"rom_size": 8388608, "rom_crc32": 369689582, "savesize": 65536, "savetype": 5}, "cdaf93f1f6038305144cb059a19a8faaf4ef406f": {"rom_size": 8388608, "rom_crc32": 1893416854, "savesize": 65536, "savetype": 5}, "544f36eea0e566442823aab7cd7b2ab30e1bdfaf": {"rom_size": 4194304, "rom_crc32": 729693387, "savesize": 512, "savetype": 1}, "ed34f81a1dd6205888546019e9e3019ae6f54d43": {"rom_size": 8388608, "rom_crc32": 2354322707, "savesize": 8192, "savetype": 2}, "50910edd7a2aae44dfd8757307ce3f0fff043744": {"rom_size": 8388608, "rom_crc32": 1833109495, "savesize": 8192, "savetype": 2}, "67cbda6df17cd9bd77313096e3545a320c10a4af": {"rom_size": 8388608, "rom_crc32": 2094557954, "savesize": 8192, "savetype": 2}, "9aae75d8a1d492d9567fab1afd8d50d2c5c90acd": {"rom_size": 8388608, "rom_crc32": 3453149811, "savesize": 32768, "savetype": 3}, "345fd66be43d02f2def62f0dc05dded5ec8256d5": {"rom_size": 4194304, "rom_crc32": 818957017, "savesize": 65536, "savetype": 5}, "b00225bf1a120fc55c96749a153260420a6341fa": {"rom_size": 8388608, "rom_crc32": 2700378143, "savesize": 32768, "savetype": 3}, "3321c895b354b9a7653a5576c18e28d1f4c5581c": {"rom_size": 8388608, "rom_crc32": 3364817234, "savesize": 32768, "savetype": 3}, "27dcac3c8728c85c00280b3b43a4c95952891698": {"rom_size": 8388608, "rom_crc32": 421188202, "savesize": 32768, "savetype": 3}, "e2f12287081274a4219484e1011df55fe128464f": {"rom_size": 8388608, "rom_crc32": 1370935074, "savesize": 32768, "savetype": 3}, "e62c6b06bc97aff6cb64cba20c1f547743d8b07c": {"rom_size": 4194304, "rom_crc32": 1204050753, "savesize": 512, "savetype": 1}, "baba6af5c8c78b28bf58af382559aa033bd5eb5f": {"rom_size": 8388608, "rom_crc32": 2832049011, "savesize": 512, "savetype": 1}, "dca1e22724496b700deb301c4939aab99a3838ef": {"rom_size": 8388608, "rom_crc32": 3323216662, "savesize": 512, "savetype": 1}, "70b50fbaaeea6e4d4436e9309fb4d4ab0039c5a3": {"rom_size": 8388608, "rom_crc32": 2016266219, "savesize": 8192, "savetype": 2}, "12ba904b4a072bfa03a58f9aed30b94d84d3fc03": {"rom_size": 4194304, "rom_crc32": 1484111994, "savesize": 0, "savetype": 0}, "351b0afc04e4ca39a04a36b90e4002f92a4226e4": {"rom_size": 8388608, "rom_crc32": 2171860633, "savesize": 32768, "savetype": 3}, "750b42810900a631eb1f3171c22e97f0a43fa43a": {"rom_size": 8388608, "rom_crc32": 1775196923, "savesize": 32768, "savetype": 3}, "1f833bd8f4b6d6a10a5975fd3413215b4ff2a382": {"rom_size": 8388608, "rom_crc32": 1635198149, "savesize": 32768, "savetype": 3}, "fa29324004d8a9b66fa521ccbd4f1bbf97f29906": {"rom_size": 8388608, "rom_crc32": 3382523783, "savesize": 8192, "savetype": 2}, "ca7edfb73bbfbee3e70a1a1e82ba07616e82d8de": {"rom_size": 16777216, "rom_crc32": 1573637241, "savesize": 512, "savetype": 1}, "bf9f41ce9c04346b14ac832885204bdb6595bf15": {"rom_size": 8388608, "rom_crc32": 894979750, "savesize": 8192, "savetype": 2}, "9a9dfae388e7abd7260d93da71aae47009c4c845": {"rom_size": 8388608, "rom_crc32": 245170500, "savesize": 8192, "savetype": 2}, "e35da92ff1e2339ffa32b7e968f0109f4a50ee60": {"rom_size": 8388608, "rom_crc32": 2418798512, "savesize": 8192, "savetype": 2}, "6afbd6ce8690ac43cbcc9c026059be07d80077ea": {"rom_size": 16777216, "rom_crc32": 3644071324, "savesize": 32768, "savetype": 3}, "c1455cf4157afc2df593b81b85d94245a9844c7b": {"rom_size": 16777216, "rom_crc32": 3424450566, "savesize": 32768, "savetype": 3}, "8ce038a75d3912ea7e1e815f0dddf19557e0abab": {"rom_size": 16777216, "rom_crc32": 3971842282, "savesize": 0, "savetype": 0}, "121779a1eb7ea70a790a2d9fa2a6566cf923827b": {"rom_size": 8388608, "rom_crc32": 3444094579, "savesize": 0, "savetype": 0}, "cd57dfdfb2995d3c3efe30461084b186707c4fd0": {"rom_size": 16777216, "rom_crc32": 1560612993, "savesize": 32768, "savetype": 3}, "c11d449f5c7768f85764911e1bfa0e7da492f5a4": {"rom_size": 4194304, "rom_crc32": 389704778, "savesize": 65536, "savetype": 5}, "00f9afb55c018786f2c43e5f5e33b5ad299dea99": {"rom_size": 4194304, "rom_crc32": 3732639181, "savesize": 512, "savetype": 1}, "6923cda8f6fc1c6045f1952a1e4484426b0cd74d": {"rom_size": 33554432, "rom_crc32": 2052265788, "savesize": 512, "savetype": 1}, "7932be5890cfef80301bc2622b492b1eed35cf82": {"rom_size": 33554432, "rom_crc32": 1747326927, "savesize": 512, "savetype": 1}, "a39bb7b61bffb4482fcc0bb775b1e1122a2a649d": {"rom_size": 4194304, "rom_crc32": 1416021847, "savesize": 512, "savetype": 1}, "a33fd3391aca878177378f67a7da09acaa56d623": {"rom_size": 4194304, "rom_crc32": 736424636, "savesize": 0, "savetype": 0}, "956e8886adcb49476e47d40daef8d87ddbf0fe0a": {"rom_size": 4194304, "rom_crc32": 1148686709, "savesize": 0, "savetype": 0}, "f2745d605a4b1cd10106e7f42f96814573b11e68": {"rom_size": 4194304, "rom_crc32": 934414438, "savesize": 0, "savetype": 0}, "afa9f493322a97b6df5659e16fba9c9f97131880": {"rom_size": 4194304, "rom_crc32": 1937516655, "savesize": 0, "savetype": 0}, "8f7fb4759dcc632578fd6cf61a16035b8064cbba": {"rom_size": 4194304, "rom_crc32": 4115232456, "savesize": 32768, "savetype": 3}, "d1adc97b7cfe10f0dcd9ae0ff5e0056a43ec3a6a": {"rom_size": 8388608, "rom_crc32": 3253890871, "savesize": 512, "savetype": 1}, "ad102e939e82ebdc7e1b1e310ca2cd1f4e635d2a": {"rom_size": 8388608, "rom_crc32": 1214267812, "savesize": 512, "savetype": 1}, "6c4d756b80a85c00f56f4b5f40119649de225b85": {"rom_size": 8388608, "rom_crc32": 875042523, "savesize": 512, "savetype": 1}, "f0dfc2d6ed4b4b419e87853a15f89a07415e11ad": {"rom_size": 33554432, "rom_crc32": 86444247, "savesize": 512, "savetype": 1}, "f22f5605b15c84a0d463c224bb503e427c5c616f": {"rom_size": 16777216, "rom_crc32": 808160061, "savesize": 512, "savetype": 1}, "383651fac0430988709050db098cd3fa338dffd6": {"rom_size": 16777216, "rom_crc32": 3233598125, "savesize": 8192, "savetype": 2}, "1bc9aa784f311ecea972c44628c58cd2e8572bda": {"rom_size": 8388608, "rom_crc32": 4149544540, "savesize": 512, "savetype": 1}, "03b0aca76062da67f180e383e07badb02b9d437e": {"rom_size": 33554432, "rom_crc32": 4289328379, "savesize": 8192, "savetype": 2}, "a1bd767d6a1ae87c63e9c837a73b4466021f4aac": {"rom_size": 16777216, "rom_crc32": 1122341078, "savesize": 8192, "savetype": 2}, "b621a3a4ea964dd63862994197575b48d3d2afc0": {"rom_size": 8388608, "rom_crc32": 3028671167, "savesize": 512, "savetype": 1}, "be20272ec993bb096d687b45e25c605b01bdc950": {"rom_size": 8388608, "rom_crc32": 2691265805, "savesize": 512, "savetype": 1}, "fa1cec681691d83ef7337a4e80a1831993cc1703": {"rom_size": 8388608, "rom_crc32": 4111434413, "savesize": 32768, "savetype": 3}, "422114a102fb50422a70c29783d69f52d4b4e998": {"rom_size": 8388608, "rom_crc32": 3239532503, "savesize": 32768, "savetype": 3}, "2779d19fb0e373843906236f2a2809e1fe421901": {"rom_size": 8388608, "rom_crc32": 2391945576, "savesize": 32768, "savetype": 3}, "61fc0169d383f716934d65ae9e67229a4bc1517c": {"rom_size": 16777216, "rom_crc32": 389462359, "savesize": 32768, "savetype": 3}, "f914074161cb7a34795c3b8a8e1f9b235a8ec1b1": {"rom_size": 4194304, "rom_crc32": 1631183693, "savesize": 32768, "savetype": 3}, "2479cd2e8768c59d3c04fd601c7f550fe60eff92": {"rom_size": 4194304, "rom_crc32": 3905179576, "savesize": 512, "savetype": 1}, "0a8c93fa8b24552d13d4774de06fedc0e3c4a778": {"rom_size": 4194304, "rom_crc32": 436734992, "savesize": 0, "savetype": 0}, "c20f3f9f36bd1bb394e33a68ed50dd7d19ca980a": {"rom_size": 4194304, "rom_crc32": 2621805070, "savesize": 0, "savetype": 0}, "c804f10584c64eb3147ed54a36b1335c29c2cbbd": {"rom_size": 4194304, "rom_crc32": 3835446688, "savesize": 0, "savetype": 0}, "33e704e610cb4c38806ed82d057d316642ded482": {"rom_size": 8388608, "rom_crc32": 3371489396, "savesize": 8192, "savetype": 2}, "da9474bc0ffd4b1a37de8342ca256c1e2792629a": {"rom_size": 8388608, "rom_crc32": 1083542572, "savesize": 8192, "savetype": 2}, "636388c6e0131f43bf82387bce6d00add457571e": {"rom_size": 8388608, "rom_crc32": 810278851, "savesize": 8192, "savetype": 2}, "6fa187b7e915bd985234f45a168670caf1e9581c": {"rom_size": 8388608, "rom_crc32": 622963084, "savesize": 512, "savetype": 1}, "6e60e2e09c5dfa50ab8b7007c60c04ac74c5a803": {"rom_size": 8388608, "rom_crc32": 2624208337, "savesize": 512, "savetype": 1}, "88e547b4792e57c6008fc90b830428647e41c7ad": {"rom_size": 4194304, "rom_crc32": 728133613, "savesize": 0, "savetype": 0}, "86b24284ca6a834cbcbc34bcd13cdaed7de2b5b4": {"rom_size": 4194304, "rom_crc32": 1507830686, "savesize": 0, "savetype": 0}, "2f0376bf548d71023fff541fdbf3b2ba6540ba51": {"rom_size": 8388608, "rom_crc32": 2418252861, "savesize": 512, "savetype": 1}, "d58676bcff748b8e7397f322757ffc7fc7b6f42e": {"rom_size": 8388608, "rom_crc32": 3847429380, "savesize": 512, "savetype": 1}, "ea958643881f4b4d3223292d7806c57fa44b6601": {"rom_size": 8388608, "rom_crc32": 3860048451, "savesize": 512, "savetype": 1}, "90a18b8b9f38c64702abe5e9b2d66bfc76ae7ef0": {"rom_size": 8388608, "rom_crc32": 3258630791, "savesize": 8192, "savetype": 2}, "1b32e5dac3924a71b67ce40121b563be392019e5": {"rom_size": 4194304, "rom_crc32": 1856238820, "savesize": 512, "savetype": 1}, "3a484cf4621dbe2970eb75707818357a9e1080b5": {"rom_size": 4194304, "rom_crc32": 227558308, "savesize": 8192, "savetype": 2}, "19178ab249f890534cf908266cdac9e1ec26895f": {"rom_size": 4194304, "rom_crc32": 1507273913, "savesize": 8192, "savetype": 2}, "3fa1ea9d728d3f13514fc3d11ef948aa5f7e86a5": {"rom_size": 16777216, "rom_crc32": 2066863322, "savesize": 512, "savetype": 1}, "0272347cc05bb5a78db759d725e6493d96cd1110": {"rom_size": 8388608, "rom_crc32": 1393651671, "savesize": 0, "savetype": 0}, "73bb60ef93bca2bc4b73f6b02facb5902364a8fd": {"rom_size": 8388608, "rom_crc32": 1517057335, "savesize": 0, "savetype": 0}, "8fab90f099cf45d1b58bd156de8f64e2a6e5c07c": {"rom_size": 16777216, "rom_crc32": 68327970, "savesize": 0, "savetype": 0}, "46e8087672b8e6e55c76a9bc3ae90dd82a4a0efb": {"rom_size": 8388608, "rom_crc32": 1383063551, "savesize": 8192, "savetype": 2}, "b4b174f4244e71db42832d45e95fa2026cdad5d9": {"rom_size": 8388608, "rom_crc32": 2393485260, "savesize": 8192, "savetype": 2}, "9b0db1a2c5c7e319f09983059bfb8ce1eb7ccd1c": {"rom_size": 8388608, "rom_crc32": 1182863208, "savesize": 32768, "savetype": 3}, "f26002c6a8583e082ff2326d5247504bbd2de0bd": {"rom_size": 4194304, "rom_crc32": 3572156849, "savesize": 8192, "savetype": 2}, "1e095b19fed939f34fd2d37ee97e19bf66871320": {"rom_size": 8388608, "rom_crc32": 1710981898, "savesize": 512, "savetype": 1}, "981556a4cc58a708b446c06ac4f583f20c210131": {"rom_size": 8388608, "rom_crc32": 3939368463, "savesize": 512, "savetype": 1}, "cf72bbaf04713dc1ce87b8b841842c39f368360c": {"rom_size": 8388608, "rom_crc32": 3556136115, "savesize": 512, "savetype": 1}, "f475bb952f18110bf16968d0886d789366799a1d": {"rom_size": 8388608, "rom_crc32": 3633310542, "savesize": 0, "savetype": 0}, "f4afc023c6bffe7cd713318cab0aee8a75157db1": {"rom_size": 8388608, "rom_crc32": 3688146635, "savesize": 0, "savetype": 0}, "3ce4e10e7d5da0cbeca3051c9bf2835112969062": {"rom_size": 8388608, "rom_crc32": 1529562194, "savesize": 8192, "savetype": 2}, "92072266f355fe3690b8147719b1c41310e61144": {"rom_size": 16777216, "rom_crc32": 1748858668, "savesize": 32768, "savetype": 3}, "83a58866171b92dcc6c150db878cdf1c291aa311": {"rom_size": 8388608, "rom_crc32": 3311025196, "savesize": 32768, "savetype": 3}, "d57a005c547278420a57eeef2b459697180bed85": {"rom_size": 4194304, "rom_crc32": 783756181, "savesize": 512, "savetype": 1}, "d19c64d035d1097714e564e16f2a814bac390edf": {"rom_size": 4194304, "rom_crc32": 2568445026, "savesize": 512, "savetype": 1}, "c6947c5607b10ebc82f5d49275df828404276348": {"rom_size": 4194304, "rom_crc32": 1523284629, "savesize": 512, "savetype": 1}, "83f8631da668744eb6cb5146dc16ca548dc60e12": {"rom_size": 4194304, "rom_crc32": 1961330652, "savesize": 0, "savetype": 0}, "01b48353847349e8b53806efd79a7623a85b81d8": {"rom_size": 4194304, "rom_crc32": 3342227705, "savesize": 0, "savetype": 0}, "ea6f9d6884ea7583d4fbdf8c06b64e78e490520f": {"rom_size": 8388608, "rom_crc32": 1197789225, "savesize": 512, "savetype": 1}, "0e4c7b046b2be68acca090a1f423582ec3d0d478": {"rom_size": 8388608, "rom_crc32": 937212685, "savesize": 512, "savetype": 1}, "191a5f32084d68ca0ab9ae699559409c4df9e44c": {"rom_size": 8388608, "rom_crc32": 3500894775, "savesize": 0, "savetype": 0}, "215bffc341a47337459fdc8a832ccf845d2f3884": {"rom_size": 8388608, "rom_crc32": 2816326819, "savesize": 0, "savetype": 0}, "0f73f1cd86b75ae6cb8929d45b8f1e8fd4000c31": {"rom_size": 8388608, "rom_crc32": 2509436243, "savesize": 0, "savetype": 0}, "1207fddc8c2d69b469010fed4bc28bede21af65a": {"rom_size": 8388608, "rom_crc32": 3119611791, "savesize": 0, "savetype": 0}, "65793672e20565e1d68628426caa46bb9a4fd2b1": {"rom_size": 8388608, "rom_crc32": 3408999685, "savesize": 0, "savetype": 0}, "ac3d3af7433ea6aa444f44db3eff91fa7acd34a5": {"rom_size": 8388608, "rom_crc32": 4154457823, "savesize": 512, "savetype": 1}, "ad720955f27cd3335736d7660364903805bdaaf1": {"rom_size": 4194304, "rom_crc32": 2636275789, "savesize": 0, "savetype": 0}, "8d8dc6f411ac89b70064726916adc116d999caa5": {"rom_size": 4194304, "rom_crc32": 2268660256, "savesize": 0, "savetype": 0}, "629f56866acfa4f3e03be77779950891de4db019": {"rom_size": 4194304, "rom_crc32": 3255280197, "savesize": 0, "savetype": 0}, "23dc6ae8cc3950b6279a7c015afdba2552e0384b": {"rom_size": 4194304, "rom_crc32": 1685194362, "savesize": 0, "savetype": 0}, "687e5e141e747cc5a2526876928acd2fabeed5ea": {"rom_size": 4194304, "rom_crc32": 970491009, "savesize": 0, "savetype": 0}, "28e8b7f771b7fc99214c8391023174707cc7f108": {"rom_size": 4194304, "rom_crc32": 3306999903, "savesize": 0, "savetype": 0}, "3ca6fe33ccd1858c5f08aa421c36487fa9b2fcd5": {"rom_size": 4194304, "rom_crc32": 3007979633, "savesize": 0, "savetype": 0}, "51b587a733716a9461995fb3b60201efd9a8f9cd": {"rom_size": 4194304, "rom_crc32": 2661112535, "savesize": 512, "savetype": 1}, "b6b8ea3f66c9ae0f4ccc816869e12d5bd2e01a2c": {"rom_size": 4194304, "rom_crc32": 3982271249, "savesize": 512, "savetype": 1}, "38a7840ce345d0aab311e0eb746ea45a6ba94489": {"rom_size": 8388608, "rom_crc32": 2393802848, "savesize": 512, "savetype": 1}, "179fc1b613f81f9291641bd120c16b1ddc5d4935": {"rom_size": 16777216, "rom_crc32": 2260867819, "savesize": 32768, "savetype": 3}, "ef96d8fbe252cf1253348bda9af24dd66f311872": {"rom_size": 16777216, "rom_crc32": 2938283498, "savesize": 32768, "savetype": 3}, "2e76d6a53d819c471cb5cd4521e7ba298d1efbfc": {"rom_size": 4194304, "rom_crc32": 445343843, "savesize": 8192, "savetype": 2}, "ca9bac962c2f27776adaca59eade0446cead9d4a": {"rom_size": 8388608, "rom_crc32": 2490182843, "savesize": 512, "savetype": 1}, "4a233b815722a80bfffd86d4b3ebb3ca50a40821": {"rom_size": 4194304, "rom_crc32": 269983090, "savesize": 0, "savetype": 0}, "a757e74e8eeeb1af01f858217f2e220a6a4ece77": {"rom_size": 4194304, "rom_crc32": 1833271116, "savesize": 0, "savetype": 0}, "4985cdca238ac12f48c731cf718b7867fd98b69f": {"rom_size": 4194304, "rom_crc32": 1070176020, "savesize": 0, "savetype": 0}, "d49c4b0d3b2431c16aa95e0885558890d8a94be1": {"rom_size": 16777216, "rom_crc32": 1476670216, "savesize": 512, "savetype": 1}, "8fc62c209ff327aa6c604f8c3e7be51deffbae69": {"rom_size": 16777216, "rom_crc32": 132800, "savesize": 512, "savetype": 1}, "d554ccdb29127fabf563f3d30c2f2b0d1fb58bf4": {"rom_size": 8388608, "rom_crc32": 348271191, "savesize": 512, "savetype": 1}, "3656996d8a03762de3d227612be86f6e6adf29a6": {"rom_size": 16777216, "rom_crc32": 373978540, "savesize": 0, "savetype": 0}, "c2591ed6cec537e108c9e1100fb7e63327fc4030": {"rom_size": 8388608, "rom_crc32": 1633171951, "savesize": 0, "savetype": 0}, "8748aadb171dc69768f09b848eacceef88a2258f": {"rom_size": 8388608, "rom_crc32": 2113946156, "savesize": 512, "savetype": 1}, "e4cc2883cdd17fbda12320a4c6bc6c28f697bb7f": {"rom_size": 8388608, "rom_crc32": 194481658, "savesize": 512, "savetype": 1}, "d8144e8df56ef893a0a4b3e84864d730c2def6ad": {"rom_size": 8388608, "rom_crc32": 2009848891, "savesize": 0, "savetype": 0}, "65ca81332b37037254885c557ffd2584b9225cf7": {"rom_size": 8388608, "rom_crc32": 424501100, "savesize": 0, "savetype": 0}, "a794aec253eee534addf88c13c145fc66220615d": {"rom_size": 8388608, "rom_crc32": 158308534, "savesize": 0, "savetype": 0}, "68de4d44417e48398feb1b3612159f4a36d6350a": {"rom_size": 8388608, "rom_crc32": 763388560, "savesize": 0, "savetype": 0}, "fbce8745f48e1dc3c9a8ea3068c382d00b3b2a18": {"rom_size": 8388608, "rom_crc32": 4234988251, "savesize": 0, "savetype": 0}, "ae734eb5205022297ae28440e3ded22c288b3da1": {"rom_size": 8388608, "rom_crc32": 588319380, "savesize": 32768, "savetype": 3}, "69897e24d25eb499f14d0daa27dda01a92711f2c": {"rom_size": 4194304, "rom_crc32": 1080729798, "savesize": 0, "savetype": 0}, "0f1353ab934d09b955e9b69ff84616bc39365e30": {"rom_size": 4194304, "rom_crc32": 4011004425, "savesize": 0, "savetype": 0}, "14465d848e8df24c685f9bda03fa86ac9da20969": {"rom_size": 4194304, "rom_crc32": 2966536304, "savesize": 0, "savetype": 0}, "94efed0d41fcf6324715d1ded05f3ffefe99a6dc": {"rom_size": 4194304, "rom_crc32": 3543798959, "savesize": 0, "savetype": 0}, "b8a80b0a7b1da22fb44f69ef28e3ac01778e385b": {"rom_size": 4194304, "rom_crc32": 273850602, "savesize": 0, "savetype": 0}, "2c020c680c6ab67a36c27cfef614426f9570be58": {"rom_size": 4194304, "rom_crc32": 834990139, "savesize": 0, "savetype": 0}, "cc89a328d296008b671581a8d95034b4c37175ea": {"rom_size": 8388608, "rom_crc32": 2575945301, "savesize": 8192, "savetype": 2}, "5f4db7d46aa88ab026c2b62f32023636c0f62a27": {"rom_size": 8388608, "rom_crc32": 2125657814, "savesize": 8192, "savetype": 2}, "88dbc6c9314891414be003677b4c82d06f90255a": {"rom_size": 8388608, "rom_crc32": 3564352449, "savesize": 32768, "savetype": 3}, "dbe5f88df70328745cd378ce11c0b2bb36cd2a0b": {"rom_size": 8388608, "rom_crc32": 2412639900, "savesize": 32768, "savetype": 3}, "238a8a24ab73921ea44a608bee01539e79c533f9": {"rom_size": 8388608, "rom_crc32": 2840420440, "savesize": 0, "savetype": 0}, "30f405e06c77fa48027edcd64b8b0638fcc562ec": {"rom_size": 4194304, "rom_crc32": 966990696, "savesize": 512, "savetype": 1}, "3ae63bcb1eacab9dbcc1312a5129b4db638e0272": {"rom_size": 16777216, "rom_crc32": 2458200690, "savesize": 0, "savetype": 0}, "6c3bdf801b94063ffb3bd132c444682f9a87ea08": {"rom_size": 4194304, "rom_crc32": 874028660, "savesize": 0, "savetype": 0}, "4212d4ff1d48e9e4013c54748363a6acfe9013a9": {"rom_size": 8388608, "rom_crc32": 1469254762, "savesize": 0, "savetype": 0}, "018b43907664317e840b5702f61d19ff9b767557": {"rom_size": 8388608, "rom_crc32": 3716837636, "savesize": 0, "savetype": 0}, "06e8747faa2b484b27db61130aafabf954e203f3": {"rom_size": 16777216, "rom_crc32": 846101134, "savesize": 512, "savetype": 1}, "9bfc4db51545e575756d62569d34e90bc014c404": {"rom_size": 4194304, "rom_crc32": 1005278278, "savesize": 512, "savetype": 1}, "e06ce7ec8df9d74daeb251e03beab7da5d55c4fb": {"rom_size": 4194304, "rom_crc32": 3412000612, "savesize": 32768, "savetype": 3}, "1488c30efaaafc450983ac99560820e8a8a6ea98": {"rom_size": 4194304, "rom_crc32": 1970949883, "savesize": 8192, "savetype": 2}, "0a3464d3d4ed7fc8917ed78f6c8c4d0b12edfcb8": {"rom_size": 8388608, "rom_crc32": 86305263, "savesize": 32768, "savetype": 3}, "66ddc7a4cc3544c4b5265e2c31883635fb934e22": {"rom_size": 8388608, "rom_crc32": 1371435960, "savesize": 32768, "savetype": 3}, "f6b6378dccea98a8db675a834bf4df45b5b6a285": {"rom_size": 8388608, "rom_crc32": 3699191370, "savesize": 32768, "savetype": 3}, "0e5c63cdbae21dfd165f79e901bcfa0cf98943c2": {"rom_size": 8388608, "rom_crc32": 2344982823, "savesize": 32768, "savetype": 3}, "b5ebc805e7b383350394eb74816d5c393ed1be75": {"rom_size": 8388608, "rom_crc32": 2934390759, "savesize": 8192, "savetype": 2}, "afde6f7f289dbc243bafe61a3a8038af3b654396": {"rom_size": 4194304, "rom_crc32": 321157460, "savesize": 512, "savetype": 1}, "76377cfc52f2e05919f3ef07bdaad60b966d4931": {"rom_size": 4194304, "rom_crc32": 2363931880, "savesize": 512, "savetype": 1}, "419c0db4c695c382f1c3f5baa5e7a4888227c5d9": {"rom_size": 4194304, "rom_crc32": 822614422, "savesize": 0, "savetype": 0}, "1cf47e76adf78bac11d97e77f424834507611a5f": {"rom_size": 4194304, "rom_crc32": 3945118555, "savesize": 0, "savetype": 0}, "c84ae47f3973a676fc2319592ded86f3ce1049cd": {"rom_size": 4194304, "rom_crc32": 2491757012, "savesize": 512, "savetype": 1}, "62b739a85e0d444c45720f13b767aa5830f0da28": {"rom_size": 8388608, "rom_crc32": 2923512501, "savesize": 512, "savetype": 1}, "b8d530618f141b1c317cfdeb5a5218d10388acf8": {"rom_size": 8388608, "rom_crc32": 1903018000, "savesize": 512, "savetype": 1}, "71df76b3f2931d66c5a9fe282d9fadea11f76ac8": {"rom_size": 8388608, "rom_crc32": 195395743, "savesize": 65536, "savetype": 5}, "d3b08308e192a3ad2afc86f168c474dfc0f13c79": {"rom_size": 8388608, "rom_crc32": 3093551841, "savesize": 65536, "savetype": 5}, "eb7cc17dc164f3451e918a80de1e248c43a2ce3a": {"rom_size": 8388608, "rom_crc32": 2346282425, "savesize": 8192, "savetype": 2}, "15d8c22715414fa0477c09c7aed1d3ab90178593": {"rom_size": 8388608, "rom_crc32": 3087706470, "savesize": 8192, "savetype": 2}, "4f99249f0891c18b5426420bf2bbac4576a175b1": {"rom_size": 4194304, "rom_crc32": 2839687732, "savesize": 0, "savetype": 0}, "f4d100c389e96efe3bf8663108469f96a3a7eb20": {"rom_size": 4194304, "rom_crc32": 3555593297, "savesize": 0, "savetype": 0}, "60915020c46bb9bb68781250d12b2b90472f6b76": {"rom_size": 4194304, "rom_crc32": 864120401, "savesize": 512, "savetype": 1}, "d4c9fe6122ca0fb7d6151393f6f29d2fd3762b5a": {"rom_size": 4194304, "rom_crc32": 2225382148, "savesize": 32768, "savetype": 3}, "31efbdbe21c3b993197bdc6bc9ed0d45a4b0a630": {"rom_size": 4194304, "rom_crc32": 119099905, "savesize": 65536, "savetype": 5}, "e2c74e2690aab78e0bf7706031d05f66f8ab8212": {"rom_size": 4194304, "rom_crc32": 240924855, "savesize": 32768, "savetype": 3}, "9b52caac0fb43208ffee9e53993658f17d5f253d": {"rom_size": 8388608, "rom_crc32": 2521335346, "savesize": 512, "savetype": 1}, "cbe398e4bf0089e1ae636f0f0ddf19b5c9f91543": {"rom_size": 16777216, "rom_crc32": 3861643243, "savesize": 512, "savetype": 1}, "1fe374b831078b6a49f45b732494d4046a4f4082": {"rom_size": 16777216, "rom_crc32": 201630457, "savesize": 512, "savetype": 1}, "151b44247fb5472a3ae630da4bb6fba80b181bee": {"rom_size": 8388608, "rom_crc32": 2560107915, "savesize": 0, "savetype": 0}, "7f47bb4313c7f834cd4d1bbbac6718d68c72be3c": {"rom_size": 8388608, "rom_crc32": 3919713847, "savesize": 0, "savetype": 0}, "085938019fd1b932969f3811e32124bf7b8b1ba5": {"rom_size": 8388608, "rom_crc32": 3515839973, "savesize": 512, "savetype": 1}, "b8b974c422a1a54f0bf652b68861c4873cc51aa5": {"rom_size": 8388608, "rom_crc32": 3721310225, "savesize": 512, "savetype": 1}, "2becd12d98519c11d81cd25a58f18423d0a5aae4": {"rom_size": 8388608, "rom_crc32": 510675154, "savesize": 512, "savetype": 1}, "9e7d85e71e49c1d6b3e4db2172d272ff0038660c": {"rom_size": 4194304, "rom_crc32": 4072638864, "savesize": 32768, "savetype": 3}, "ba1c59df966e131e7dc97e3c4c61f107787f6f51": {"rom_size": 4194304, "rom_crc32": 1359355647, "savesize": 0, "savetype": 0}, "63d5a20e7664b1a5130b480daa7ae61c44fa8fff": {"rom_size": 4194304, "rom_crc32": 3990736665, "savesize": 0, "savetype": 0}, "501cc8fe385f6dfaa3f3c744080750ad36c0f811": {"rom_size": 8388608, "rom_crc32": 4270442886, "savesize": 512, "savetype": 1}, "f8733a7d2bb898d35557d25d404d736eff0d3e00": {"rom_size": 8388608, "rom_crc32": 4181576750, "savesize": 512, "savetype": 1}, "a1bf54ab58422d4c02f86721112ac8af0b159695": {"rom_size": 8388608, "rom_crc32": 2875688669, "savesize": 512, "savetype": 1}, "e9af6f2f7ab5d3bae6d29ca3159a2a559aca849b": {"rom_size": 4194304, "rom_crc32": 2088064350, "savesize": 512, "savetype": 1}, "032422696bf893cafe3bd64408cd8254a2015c6c": {"rom_size": 8388608, "rom_crc32": 118034279, "savesize": 512, "savetype": 1}, "91b11f53d2b35c81dcdf9060dd2dc61bc473fd80": {"rom_size": 8388608, "rom_crc32": 3608953730, "savesize": 512, "savetype": 1}, "2b3806af30112efff3af36820d46ce55776ed312": {"rom_size": 8388608, "rom_crc32": 2991029106, "savesize": 512, "savetype": 1}, "dca522e27415d737315c0f6d346799b020c4d5a0": {"rom_size": 8388608, "rom_crc32": 2897358847, "savesize": 512, "savetype": 1}, "ed7a6eda28e730105ee24b7870fcd973c3c9705d": {"rom_size": 8388608, "rom_crc32": 2275725612, "savesize": 512, "savetype": 1}, "4ae95e9650b42c755716b2926af9e471806fa944": {"rom_size": 4194304, "rom_crc32": 4225581956, "savesize": 8192, "savetype": 2}, "418c397634e530be458a8dd68b7a478278161c88": {"rom_size": 8388608, "rom_crc32": 436069576, "savesize": 8192, "savetype": 2}, "9b931297c48f52d8842da52f8a1be5c27285a40d": {"rom_size": 8388608, "rom_crc32": 3730409405, "savesize": 0, "savetype": 0}, "dae89f8a933b496b0292175a9b19bf4611d7f76e": {"rom_size": 4194304, "rom_crc32": 631037295, "savesize": 8192, "savetype": 2}, "6c097f02ddb04ff605d601354015d57abcdd36b0": {"rom_size": 16777216, "rom_crc32": 2192897018, "savesize": 65536, "savetype": 5}, "fe236457f2df5c2fd039d12f8be5fc8f12948f52": {"rom_size": 8388608, "rom_crc32": 2423026605, "savesize": 32768, "savetype": 3}, "eda8b6b73ed21e5c73bf83bd45b328805fd6eb31": {"rom_size": 4194304, "rom_crc32": 1374114348, "savesize": 0, "savetype": 0}, "8a5110c9a879f138317b8316998c0c10699b8a9a": {"rom_size": 4194304, "rom_crc32": 4133911358, "savesize": 0, "savetype": 0}, "c9af882d11e7889a020cfb5e52409bfe0c30ff52": {"rom_size": 8388608, "rom_crc32": 3210687086, "savesize": 32768, "savetype": 3}, "46a79ffad3df22c33192382f3be2b738db3580ae": {"rom_size": 8388608, "rom_crc32": 1677606398, "savesize": 65536, "savetype": 5}, "afdaf47afe088ff9a3f2fed4ce690d62ab60bd61": {"rom_size": 4194304, "rom_crc32": 1326041600, "savesize": 32768, "savetype": 3}, "e6bd2ad058fa2e49a6699bff5e2c4dc1cdb60124": {"rom_size": 4194304, "rom_crc32": 1250897762, "savesize": 8192, "savetype": 2}, "cb55a4ce39f957307ca16d31e8feabb44c78314f": {"rom_size": 8388608, "rom_crc32": 774097141, "savesize": 512, "savetype": 1}, "87f3a23a874b49678842a68ca0e0b5ff133fa0c8": {"rom_size": 8388608, "rom_crc32": 3160063349, "savesize": 8192, "savetype": 2}, "89c08257eaa7df2a645624508bfb779261ba34d9": {"rom_size": 8388608, "rom_crc32": 3368600769, "savesize": 512, "savetype": 1}, "22fd0f019fee06ac3ea014971a36ccb9838a750c": {"rom_size": 4194304, "rom_crc32": 967768955, "savesize": 8192, "savetype": 2}, "1d3d06b37703e49cd1b92e8b251c50ba63a90829": {"rom_size": 4194304, "rom_crc32": 3038615518, "savesize": 512, "savetype": 1}, "e27818f4330ed743cd1a2c1486751d3d9d407410": {"rom_size": 4194304, "rom_crc32": 2375605292, "savesize": 512, "savetype": 1}, "b3b6a49f4f6a0f0f9145f153416c7df0ebd192f4": {"rom_size": 8388608, "rom_crc32": 1155213326, "savesize": 65536, "savetype": 5}, "e4c96c2d2366d42c7a77f5bada0758d68670bef5": {"rom_size": 8388608, "rom_crc32": 2408958547, "savesize": 65536, "savetype": 5}, "f37413a0f76b1b9302fc60e0f0d98099f994d7c7": {"rom_size": 8388608, "rom_crc32": 838360510, "savesize": 512, "savetype": 1}, "4bd6f4912a7df485aae95ced47fc6b130ee2c45e": {"rom_size": 4194304, "rom_crc32": 3223767995, "savesize": 32768, "savetype": 3}, "ed332d898baf5582676268e281edb73b94b570f4": {"rom_size": 16777216, "rom_crc32": 1048417940, "savesize": 512, "savetype": 1}, "65b8a9937da67e95d1b1308104fd6541fc604de0": {"rom_size": 8388608, "rom_crc32": 1771379369, "savesize": 512, "savetype": 1}, "0299ca08120e60fa51bcb60eaa84ac509aedf727": {"rom_size": 4194304, "rom_crc32": 1871909957, "savesize": 0, "savetype": 0}, "0d2a8b65ab858add2a63b1e653187097a629629c": {"rom_size": 8388608, "rom_crc32": 2810335780, "savesize": 512, "savetype": 1}, "82bd25f24654f9525a45551077e92bf6b8290c34": {"rom_size": 8388608, "rom_crc32": 2854554826, "savesize": 512, "savetype": 1}, "a1e2c6f8515e66b1114db6c0137ffe11c14a6e6e": {"rom_size": 8388608, "rom_crc32": 1941911627, "savesize": 8192, "savetype": 2}, "e73e5f566cdc34632c6931fe52e0237f9c7f0b27": {"rom_size": 8388608, "rom_crc32": 2988369408, "savesize": 8192, "savetype": 2}, "91da32a40bd43d89cb616b3f87c30b9c00bfec93": {"rom_size": 8388608, "rom_crc32": 2734309960, "savesize": 8192, "savetype": 2}, "0c8717f1a1638cae707a9be32df57df5967b1743": {"rom_size": 4194304, "rom_crc32": 476127835, "savesize": 0, "savetype": 0}, "8975af297ee99d267e259fb3b635cedd033c4662": {"rom_size": 4194304, "rom_crc32": 1330022000, "savesize": 512, "savetype": 1}, "6c700a54826d353a7a8387ab9c3a95049b0e929f": {"rom_size": 4194304, "rom_crc32": 723549471, "savesize": 512, "savetype": 1}, "6255d8a384f46190042777de1c1f5d67e5b6b905": {"rom_size": 4194304, "rom_crc32": 3875381349, "savesize": 0, "savetype": 0}, "a3063f947460bcfd23c30c93c8ab844f1a992b57": {"rom_size": 4194304, "rom_crc32": 521326664, "savesize": 0, "savetype": 0}, "e1df28ca1d83643cb69063fa0d2807b152d24761": {"rom_size": 8388608, "rom_crc32": 1212320810, "savesize": 0, "savetype": 0}, "93e33a49976c8558e5a9881a6cb4e87363db3a14": {"rom_size": 8388608, "rom_crc32": 204853500, "savesize": 0, "savetype": 0}, "ba86d260097f26959bc7ba5d0635377bc3b7f753": {"rom_size": 8388608, "rom_crc32": 1770274675, "savesize": 512, "savetype": 1}, "66757c6dbba789d0021b94dab91f79866c73df21": {"rom_size": 8388608, "rom_crc32": 441905085, "savesize": 0, "savetype": 0}, "d2f4fa3ca0a7c0780fd225b944100136138d3c95": {"rom_size": 8388608, "rom_crc32": 1908737480, "savesize": 512, "savetype": 1}, "a5c13e06f10acda864f652c605b40c4c31e5d706": {"rom_size": 8388608, "rom_crc32": 4204031942, "savesize": 512, "savetype": 1}, "c300faede91cb47e1c4393b6c8c38e6d9574f90e": {"rom_size": 8388608, "rom_crc32": 4260126956, "savesize": 512, "savetype": 1}, "452cae952db4d5bd829ced0d7ee186b4ccd26081": {"rom_size": 8388608, "rom_crc32": 926448409, "savesize": 512, "savetype": 1}, "5972b4dda23cd79dab8e62935a2c49a15f57abee": {"rom_size": 8388608, "rom_crc32": 1134203627, "savesize": 8192, "savetype": 2}, "ae13ed4411544ffee443c85ca30d73b2dba6566c": {"rom_size": 8388608, "rom_crc32": 2659953287, "savesize": 512, "savetype": 1}, "e060a30849afa92e65d721bd010d7d18e4174ec0": {"rom_size": 8388608, "rom_crc32": 3697011405, "savesize": 512, "savetype": 1}, "e251f96805b062cddd10087a7ec6258d1dfa2d7e": {"rom_size": 8388608, "rom_crc32": 368638421, "savesize": 512, "savetype": 1}, "0e3eff45ab52485b85933aef8f9d35d816699a37": {"rom_size": 8388608, "rom_crc32": 400976722, "savesize": 512, "savetype": 1}, "10e759598b1b73e8b3c612ec762e8c5212cd814e": {"rom_size": 8388608, "rom_crc32": 135579533, "savesize": 512, "savetype": 1}, "e3df61870aa8030c6267740390d61ef9c3d115ff": {"rom_size": 8388608, "rom_crc32": 261492336, "savesize": 512, "savetype": 1}, "509e0271d1efacbe90137a92b8e1958ae9ab4f8d": {"rom_size": 8388608, "rom_crc32": 731048846, "savesize": 512, "savetype": 1}, "d861d15f01fa160baa7c4ec4d6e6db4c8e9c6ecf": {"rom_size": 33554432, "rom_crc32": 1999476731, "savesize": 0, "savetype": 0}, "5c27a9e0b859734e82fc4a8fed384bee590eec0e": {"rom_size": 33554432, "rom_crc32": 2371489156, "savesize": 0, "savetype": 0}, "49cc088728a0012adc05945447c0868dd05984c9": {"rom_size": 33554432, "rom_crc32": 3492925031, "savesize": 0, "savetype": 0}, "14fd9d51892d9f8a2f16a675ddc495d35f490d64": {"rom_size": 8388608, "rom_crc32": 1085398272, "savesize": 32768, "savetype": 3}, "82e781d589e064cc778dca7dfa3719ea448f65c8": {"rom_size": 8388608, "rom_crc32": 2488376618, "savesize": 32768, "savetype": 3}, "1fa2eae568b5e34afa017210db718ceb3cc3080d": {"rom_size": 16777216, "rom_crc32": 1072285441, "savesize": 512, "savetype": 1}, "8467a6c57ba335031090790a88daccfa72260119": {"rom_size": 16777216, "rom_crc32": 1325909528, "savesize": 32768, "savetype": 3}, "7b725db5864256244f2d282b1b58ee03106f7c42": {"rom_size": 16777216, "rom_crc32": 2670342216, "savesize": 32768, "savetype": 3}, "de0acfd4bd564b6d819f0f3f37d8b2c737863b2d": {"rom_size": 16777216, "rom_crc32": 997880951, "savesize": 32768, "savetype": 3}, "75ebf719dbd89d8aff9c303e38f78835001986f3": {"rom_size": 8388608, "rom_crc32": 552550244, "savesize": 32768, "savetype": 3}, "7c8bd9d915782eb4da3d0d2f9e8cfd2f87e8994b": {"rom_size": 8388608, "rom_crc32": 886463499, "savesize": 8192, "savetype": 2}, "fc1ac0b3c111dc2385ffb06b798815a16d921c89": {"rom_size": 4194304, "rom_crc32": 204899632, "savesize": 8192, "savetype": 2}, "d20d749bd8fcf5e20fcf05f0cc569f11303b8129": {"rom_size": 8388608, "rom_crc32": 1727488331, "savesize": 32768, "savetype": 3}, "0f0bc676e080d9b9bb0509d9e90e5819a5624312": {"rom_size": 4194304, "rom_crc32": 1766401328, "savesize": 512, "savetype": 1}, "d55c8c7d9890db31409fa78e95cdabd2dc238ed7": {"rom_size": 4194304, "rom_crc32": 4149088310, "savesize": 512, "savetype": 1}, "e456fd618e14fd0794686b60b2f3502c0f2e609a": {"rom_size": 4194304, "rom_crc32": 2345810559, "savesize": 512, "savetype": 1}, "25d730f6bcbda05b5b46af0290adba12c38e2761": {"rom_size": 16777216, "rom_crc32": 3890929100, "savesize": 8192, "savetype": 2}, "ce56e7ec81383bf4901f089630eec356482a52c1": {"rom_size": 4194304, "rom_crc32": 4029147295, "savesize": 0, "savetype": 0}, "6ff0d01d6ab692372a24527ae53d5643e4a11e5f": {"rom_size": 4194304, "rom_crc32": 2298363697, "savesize": 0, "savetype": 0}, "ce007648b265c8a79e37bdc92f33c67133a4719a": {"rom_size": 8388608, "rom_crc32": 2883086058, "savesize": 0, "savetype": 0}, "37d7f13767e785b9653e6ab2b1a36d585edc6628": {"rom_size": 8388608, "rom_crc32": 1858563022, "savesize": 0, "savetype": 0}, "42a4fc88648a1392f3394118d88a88a2d67e06a4": {"rom_size": 16777216, "rom_crc32": 820119978, "savesize": 512, "savetype": 1}, "08b122b9fcd17039c1ab71492f36a6cdc6403bad": {"rom_size": 16777216, "rom_crc32": 757777211, "savesize": 512, "savetype": 1}, "14568369ff57b7a5dce13137393cce670b4dbb7b": {"rom_size": 4194304, "rom_crc32": 489100890, "savesize": 8192, "savetype": 2}, "ca9be47501cb7618623b855ae743140cc98eb906": {"rom_size": 4194304, "rom_crc32": 677340463, "savesize": 0, "savetype": 0}, "bddbf0c5a337698b4e0442ab93a4a69fd8a9e34a": {"rom_size": 4194304, "rom_crc32": 766711845, "savesize": 0, "savetype": 0}, "089ab4290e1a31ca3b35c61943f199a7594c275f": {"rom_size": 4194304, "rom_crc32": 1787553135, "savesize": 0, "savetype": 0}, "fcda4086294700d6e3438a4a4522f2141741e2d2": {"rom_size": 4194304, "rom_crc32": 3488351824, "savesize": 32768, "savetype": 3}, "5fa0ad1b054e9d7beccfcf16953f19dabc989e87": {"rom_size": 4194304, "rom_crc32": 3356315484, "savesize": 32768, "savetype": 3}, "a89c3d7ddf45e40d9f74bd0ac8da9d842e5268ff": {"rom_size": 4194304, "rom_crc32": 2852362890, "savesize": 32768, "savetype": 3}, "daa9df9694c4ad6cc0aa1554fd738bde035543b3": {"rom_size": 8388608, "rom_crc32": 983617145, "savesize": 8192, "savetype": 2}, "f5a48735ea4a8e544f1705aebb44828f45e6406c": {"rom_size": 8388608, "rom_crc32": 1524328687, "savesize": 8192, "savetype": 2}, "16bb02c15d36e6ef0fb4198081c08740dfecb697": {"rom_size": 8388608, "rom_crc32": 2294639973, "savesize": 512, "savetype": 1}, "944c82a698d3be894425612ccb800d39465d5620": {"rom_size": 4194304, "rom_crc32": 2618477873, "savesize": 0, "savetype": 0}, "3626f5cddef3cb01f0bd411550f7bdc071704393": {"rom_size": 4194304, "rom_crc32": 1586177604, "savesize": 0, "savetype": 0}, "3d149da42b60b1a7e994d95383ed2c3b6a5d7d2a": {"rom_size": 8388608, "rom_crc32": 101162050, "savesize": 512, "savetype": 1}, "b7aa3b405f2b77cf0cfa4eabec0135ea64c09b1d": {"rom_size": 8388608, "rom_crc32": 2054882831, "savesize": 0, "savetype": 0}, "c9983c6368331c068655719152d92ce3a6966b35": {"rom_size": 8388608, "rom_crc32": 353099166, "savesize": 0, "savetype": 0}, "0ae3d29b0bf25f3c5e995c37c40ab5057611cef3": {"rom_size": 8388608, "rom_crc32": 3596843489, "savesize": 0, "savetype": 0}, "0d1db1b6d45d3aaca7da9713125ad3fa351a8b09": {"rom_size": 8388608, "rom_crc32": 1694150736, "savesize": 8192, "savetype": 2}, "3c4d2a44c9e7fdb23972bf2b52a554f0f3b2574e": {"rom_size": 16777216, "rom_crc32": 3078782752, "savesize": 512, "savetype": 1}, "0617b5d5addae3b4daaca051751e11f329a21259": {"rom_size": 16777216, "rom_crc32": 3789713194, "savesize": 8192, "savetype": 2}, "84f8b26f41c53818fe8182b70a10d64818104525": {"rom_size": 16777216, "rom_crc32": 4216657581, "savesize": 512, "savetype": 1}, "0480b99a83e6920d1fed9e846ff5ea80fbd442e7": {"rom_size": 4194304, "rom_crc32": 201213673, "savesize": 8192, "savetype": 2}, "50b101a8c8283a82635243c2f09ec57b61910f91": {"rom_size": 8388608, "rom_crc32": 4217892796, "savesize": 0, "savetype": 0}, "d8f27e866f773719713046cc216dd2045cd9b9c9": {"rom_size": 33554432, "rom_crc32": 2060058559, "savesize": 32768, "savetype": 3}, "703257f542215c95ee70124295e056b80b628d20": {"rom_size": 8388608, "rom_crc32": 1466803958, "savesize": 32768, "savetype": 3}, "61b4725aeb0be7890c37fd3ee39d4aae94dc7fcd": {"rom_size": 8388608, "rom_crc32": 2133807127, "savesize": 32768, "savetype": 3}, "caaf5231b9069cb7002d5b88c31c60b77e02f841": {"rom_size": 8388608, "rom_crc32": 3549391502, "savesize": 32768, "savetype": 3}, "2746e3d3cb15645f3e4aa960886d98a98e71a40e": {"rom_size": 4194304, "rom_crc32": 3455763694, "savesize": 512, "savetype": 1}, "09c2ec5833193d663567a55ba717fc473c4e4f43": {"rom_size": 4194304, "rom_crc32": 1268168192, "savesize": 0, "savetype": 0}, "f486da76adf7e8f176841dbe9a64aba70acedc9f": {"rom_size": 4194304, "rom_crc32": 1643751924, "savesize": 0, "savetype": 0}, "bf14b136a841c9200cc9e8ead624716ad4b01185": {"rom_size": 4194304, "rom_crc32": 154162428, "savesize": 0, "savetype": 0}, "0a421f294be5ad3dd2e77da96517f29b0a0e2bda": {"rom_size": 8388608, "rom_crc32": 2885515975, "savesize": 32768, "savetype": 3}, "e140f2162d1f0c5fe4ec812a4225b08383fea1b5": {"rom_size": 4194304, "rom_crc32": 2580092905, "savesize": 32768, "savetype": 3}, "6dafa36c687340e8fde16af4a06d7cc1c1bdd79f": {"rom_size": 4194304, "rom_crc32": 3302668630, "savesize": 32768, "savetype": 3}, "45ee7aec64b320347c498f49e4e11b59498ccdce": {"rom_size": 4194304, "rom_crc32": 2322239499, "savesize": 32768, "savetype": 3}, "b53c2723643953edab0fe67235bc0ee0fc0702ee": {"rom_size": 8388608, "rom_crc32": 2479896309, "savesize": 32768, "savetype": 3}, "a4dddf6a0927f177b3e347b87f8c76a9c908853d": {"rom_size": 4194304, "rom_crc32": 2508232658, "savesize": 512, "savetype": 1}, "db7d05e031a097ad131412a593cfbda2d13a761b": {"rom_size": 4194304, "rom_crc32": 329160125, "savesize": 512, "savetype": 1}, "dd916906e2a8bf1bd3fdea299e7351f04d9cc926": {"rom_size": 4194304, "rom_crc32": 3473908953, "savesize": 0, "savetype": 0}, "02593d534a00b63a9e299f785da9d1d2618333ee": {"rom_size": 4194304, "rom_crc32": 3487081772, "savesize": 0, "savetype": 0}, "9edb78a5478890ba26ce0354c1079c239b245b87": {"rom_size": 8388608, "rom_crc32": 1418063610, "savesize": 512, "savetype": 1}, "eacc9bb4dad0b445d3f8798f2941f6c1d035abd9": {"rom_size": 8388608, "rom_crc32": 3488628211, "savesize": 512, "savetype": 1}, "a6389d370b2ecb9beb1d5dae22325226152fcda9": {"rom_size": 8388608, "rom_crc32": 3808376519, "savesize": 512, "savetype": 1}, "be1d153885a935f4e40fcab6c1e00c9bb621ecab": {"rom_size": 8388608, "rom_crc32": 1514011447, "savesize": 512, "savetype": 1}, "dde9190a1d798429da7c395a53e149d86513e51f": {"rom_size": 8388608, "rom_crc32": 1110833859, "savesize": 0, "savetype": 0}, "245c34163510bf7168e49ef2e82c09c35179454f": {"rom_size": 8388608, "rom_crc32": 2006573530, "savesize": 0, "savetype": 0}, "a91cbc6742c9ee398e711bc87c916af0cec3ad25": {"rom_size": 8388608, "rom_crc32": 1433354490, "savesize": 0, "savetype": 0}, "ee18641d3393aa0af20452fae7081b88092d73bd": {"rom_size": 8388608, "rom_crc32": 1786806311, "savesize": 8192, "savetype": 2}, "0c62e27549e83171f1981666489c73e2032d6b35": {"rom_size": 8388608, "rom_crc32": 1743884174, "savesize": 32768, "savetype": 3}, "ecff39cf01a9f7c90eabbd26808107f28ac34d42": {"rom_size": 16777216, "rom_crc32": 1675578678, "savesize": 8192, "savetype": 2}, "84d63b15e1bc496f25c8daa1809543da05ce0c32": {"rom_size": 16777216, "rom_crc32": 461491200, "savesize": 8192, "savetype": 2}, "6b14e91edf232f56645b30a757ab3b26b5810d36": {"rom_size": 33554432, "rom_crc32": 2477884243, "savesize": 512, "savetype": 1}, "b8fd86c4c42bd71a684eeb02c11db10b04c0ec3b": {"rom_size": 33554432, "rom_crc32": 3173470694, "savesize": 512, "savetype": 1}, "7fd55eadbcd03a25939930cc35fc0c87c48a5433": {"rom_size": 8388608, "rom_crc32": 1511408417, "savesize": 8192, "savetype": 2}, "f4264554c728c69e34ce3ab6adaf6f6cf071a3e0": {"rom_size": 8388608, "rom_crc32": 2391919891, "savesize": 8192, "savetype": 2}, "019604b56668c6f6b45a3443374aae85e905056f": {"rom_size": 16777216, "rom_crc32": 3898831506, "savesize": 8192, "savetype": 2}, "76bd6c98088fecf7f9aea2707c360e45bf96cb3a": {"rom_size": 16777216, "rom_crc32": 2882452401, "savesize": 8192, "savetype": 2}, "73d658d7167dda7b7080b63dc9e14b84f2fcc7c6": {"rom_size": 8388608, "rom_crc32": 2219049062, "savesize": 512, "savetype": 1}, "193a1d87bc5ff84ef9f08e976889b7cfc0ec6fcd": {"rom_size": 8388608, "rom_crc32": 2381936029, "savesize": 65536, "savetype": 5}, "0cf7b20bf2e1c7d5cf03e7196529366030337e32": {"rom_size": 16777216, "rom_crc32": 2554538513, "savesize": 65536, "savetype": 5}, "687bb774170c7480748523f65feabc91354043e2": {"rom_size": 8388608, "rom_crc32": 865403432, "savesize": 65536, "savetype": 5}, "4a40b79fe5c04da1470c711a25186c5a424d8030": {"rom_size": 8388608, "rom_crc32": 303741379, "savesize": 32768, "savetype": 3}, "cb5e938d0d2276ec761c16bc2dce46f41e4d0ab4": {"rom_size": 8388608, "rom_crc32": 1046399089, "savesize": 32768, "savetype": 3}, "8e95099560e751a3846a10a83e87ff6a7b48276f": {"rom_size": 8388608, "rom_crc32": 3350583687, "savesize": 32768, "savetype": 3}, "089b3e6311400505c83f3d32b5b220ea2345f76d": {"rom_size": 8388608, "rom_crc32": 1062288575, "savesize": 32768, "savetype": 3}, "33802a63a53761c384ad7a42ca5d8892549c64d0": {"rom_size": 8388608, "rom_crc32": 2048771160, "savesize": 512, "savetype": 1}, "5e7147a00f970d75e27aca55b00faf9a9857154a": {"rom_size": 8388608, "rom_crc32": 3778765741, "savesize": 512, "savetype": 1}, "36a5293620e0c12df7e905bcb0d1fe7f8ac35443": {"rom_size": 8388608, "rom_crc32": 1945057845, "savesize": 512, "savetype": 1}, "8cbddea24eca123dea367ae1899762b85951d517": {"rom_size": 16777216, "rom_crc32": 1436920562, "savesize": 512, "savetype": 1}, "c160f78db138ea63e56a8b39f18832a7ff2f04e1": {"rom_size": 16777216, "rom_crc32": 2930506335, "savesize": 512, "savetype": 1}, "7ae73ae70fed583799b6ffe47a5ac2cd63656568": {"rom_size": 16777216, "rom_crc32": 3148422203, "savesize": 512, "savetype": 1}, "f3a2f4a1d134cb99ca42e5abe99fe45bd90e34aa": {"rom_size": 16777216, "rom_crc32": 3659437124, "savesize": 512, "savetype": 1}, "296aa7f57279347e00afc49b30e92ee045b64508": {"rom_size": 16777216, "rom_crc32": 4155260318, "savesize": 512, "savetype": 1}, "772a2538aa4dfce354cebe8f8fe3313cffbb4a8c": {"rom_size": 16777216, "rom_crc32": 2859344599, "savesize": 512, "savetype": 1}, "d6b8dd3442d242599d1f09e31757571c426d5195": {"rom_size": 16777216, "rom_crc32": 1675635213, "savesize": 512, "savetype": 1}, "da999a47e9f267bc1713ca0ff2a0c3fb730e0d7b": {"rom_size": 16777216, "rom_crc32": 1924819852, "savesize": 512, "savetype": 1}, "d6dd1ed8f4f1adab34eb7b0e429f8724c28641d8": {"rom_size": 4194304, "rom_crc32": 496383596, "savesize": 8192, "savetype": 2}, "9a0fbd9f5028743bae739aa9fd6be63f452cf65e": {"rom_size": 8388608, "rom_crc32": 2346521517, "savesize": 8192, "savetype": 2}, "cab4f141d857d594f0f4c90cc34ae9ab7ffe3caf": {"rom_size": 4194304, "rom_crc32": 1749989511, "savesize": 8192, "savetype": 2}, "5b8264d61b7dc48ecef98a424f1585231fdf3779": {"rom_size": 8388608, "rom_crc32": 3925225440, "savesize": 32768, "savetype": 3}, "7bcdd04751f99312e9a7c841650d9a5932e45d6b": {"rom_size": 8388608, "rom_crc32": 452637777, "savesize": 8192, "savetype": 2}, "a13040f8815d6cd4d0ae69c7aff29098d9063c9c": {"rom_size": 8388608, "rom_crc32": 3887877873, "savesize": 0, "savetype": 0}, "a70d5d7e3d7219f25768f1618509a806f72160d8": {"rom_size": 8388608, "rom_crc32": 705755108, "savesize": 0, "savetype": 0}, "341b0f2d0a356edb7a6f9d7487fe17108840e7f9": {"rom_size": 8388608, "rom_crc32": 3676205841, "savesize": 512, "savetype": 1}, "8f7e7fc49dc79e37fbb10197850c87be79adc58e": {"rom_size": 8388608, "rom_crc32": 1412080812, "savesize": 0, "savetype": 0}, "4e0f08f3a8806c9d459b8728fad14cbf5950e24d": {"rom_size": 8388608, "rom_crc32": 2827323302, "savesize": 512, "savetype": 1}, "94f5c64e160bf6e194d4ae35230ce37a528f11ff": {"rom_size": 8388608, "rom_crc32": 35280725, "savesize": 512, "savetype": 1}, "9a5562a3df1f051b32706dfbf1b8a1462a1e8207": {"rom_size": 8388608, "rom_crc32": 3932083392, "savesize": 512, "savetype": 1}, "893a9a9ccb75480936a6d168a092df17a4928402": {"rom_size": 8388608, "rom_crc32": 1666786385, "savesize": 512, "savetype": 1}, "96d1f7dacbb74241c0375204c708cc734c8066f0": {"rom_size": 8388608, "rom_crc32": 3530443256, "savesize": 0, "savetype": 0}, "b08c6342d5cc51a8b336d86232edbdea7a046b52": {"rom_size": 8388608, "rom_crc32": 3358853943, "savesize": 0, "savetype": 0}, "6ae74cbe43a687575ce38d8384ea4a202609b78f": {"rom_size": 8388608, "rom_crc32": 3041982667, "savesize": 0, "savetype": 0}, "2129fa2b0458cccb3c8b714a0ead549de4ce8b7f": {"rom_size": 8388608, "rom_crc32": 48453219, "savesize": 512, "savetype": 1}, "76d3c7c1b467684ce87920b8816638a45b6fce72": {"rom_size": 8388608, "rom_crc32": 2414494148, "savesize": 8192, "savetype": 2}, "060fad1d9d972078c1932764bdfb38a02a47e382": {"rom_size": 4194304, "rom_crc32": 2123531250, "savesize": 8192, "savetype": 2}, "1df2a58f1bb77f49373271efbf53b88d4b17952a": {"rom_size": 4194304, "rom_crc32": 1893652328, "savesize": 8192, "savetype": 2}, "60b6ba4748c9fc4b87052716e8d8794802478993": {"rom_size": 4194304, "rom_crc32": 4044360185, "savesize": 512, "savetype": 1}, "e163985073765f01bc285be0098cd5ada3d7f861": {"rom_size": 8388608, "rom_crc32": 2726574464, "savesize": 512, "savetype": 1}, "3ca7287a6da7d60fcf8f4ec93b4fc847db324197": {"rom_size": 4194304, "rom_crc32": 1043133439, "savesize": 512, "savetype": 1}, "484ab11dd8a19509138229909fc5f862d2c33460": {"rom_size": 8388608, "rom_crc32": 730544484, "savesize": 512, "savetype": 1}, "3f6f2fe69f51f82d6326a7cacd89787478326619": {"rom_size": 8388608, "rom_crc32": 3701619505, "savesize": 512, "savetype": 1}, "14ad22d80fdeaebc895d45a52e0fe0d0b70cc7c0": {"rom_size": 8388608, "rom_crc32": 3970814023, "savesize": 512, "savetype": 1}, "600b880da52f52b16e89151b93798ca661919a19": {"rom_size": 16777216, "rom_crc32": 3700246119, "savesize": 512, "savetype": 1}, "fc4585dacfe6c0be570a93c9ae349aa130670a3f": {"rom_size": 16777216, "rom_crc32": 3473224952, "savesize": 512, "savetype": 1}, "5197267fe23f2b52a40de34c14491dfcaf768474": {"rom_size": 16777216, "rom_crc32": 1180641107, "savesize": 512, "savetype": 1}, "3d0be1348246485e2b5fcef656cc318ad605e0b5": {"rom_size": 8388608, "rom_crc32": 595638586, "savesize": 8192, "savetype": 2}, "c096e6cf97dcf4717c65616242f2fa0b202bc343": {"rom_size": 8388608, "rom_crc32": 1512767985, "savesize": 8192, "savetype": 2}, "84eb8543c1e1ec30d512d105b493831f3739aedf": {"rom_size": 8388608, "rom_crc32": 3993786556, "savesize": 8192, "savetype": 2}, "0fad2d32756cdb7c60cdc91e04b601500229af5a": {"rom_size": 16777216, "rom_crc32": 1972431866, "savesize": 512, "savetype": 1}, "9c64b0518e8d0f6ccbc397156ed376be01d00f89": {"rom_size": 16777216, "rom_crc32": 770651734, "savesize": 512, "savetype": 1}, "7dc229573501e4bb027145f37bc81e1964e49f00": {"rom_size": 16777216, "rom_crc32": 2716057395, "savesize": 512, "savetype": 1}, "d72317156c70e442cee62a61486d1fb4b1410bea": {"rom_size": 4194304, "rom_crc32": 469798194, "savesize": 512, "savetype": 1}, "9d74c6be856e7896e81c13f01b3d481ec6917c8b": {"rom_size": 4194304, "rom_crc32": 2360707479, "savesize": 512, "savetype": 1}, "95dc8f4e42741df2f9f74c682a363e093dee3a35": {"rom_size": 8388608, "rom_crc32": 3102110793, "savesize": 512, "savetype": 1}, "e9e7652ee278c818e8bd1cbd9c82e95a71d5aaca": {"rom_size": 4194304, "rom_crc32": 4046399913, "savesize": 0, "savetype": 0}, "7da5653088836e6dc2cff5e820de92c87e056be7": {"rom_size": 8388608, "rom_crc32": 3730832572, "savesize": 0, "savetype": 0}, "dec0b0a1bd909ae7a51a7c2b062edf70d69ba00c": {"rom_size": 8388608, "rom_crc32": 1308901777, "savesize": 32768, "savetype": 3}, "72eb58dc780a65aac09ec6727867cdcf65544768": {"rom_size": 8388608, "rom_crc32": 2287101602, "savesize": 8192, "savetype": 2}, "815a219cad0ac257dbc46636792c23980cf75fd6": {"rom_size": 8388608, "rom_crc32": 2906178305, "savesize": 512, "savetype": 1}, "201a17499fb51932bafe9e8448ab9a56e740d563": {"rom_size": 4194304, "rom_crc32": 2766824896, "savesize": 0, "savetype": 0}, "3c95cfcdbc760523392f365ed5699fad44563d59": {"rom_size": 8388608, "rom_crc32": 659329333, "savesize": 512, "savetype": 1}, "faceed4217cb11fd63cf98d40c85f7f5b96b4b4a": {"rom_size": 8388608, "rom_crc32": 961487142, "savesize": 512, "savetype": 1}, "8dbba4eb32c941803e5c2999d071f69971ce60f4": {"rom_size": 8388608, "rom_crc32": 2489786971, "savesize": 512, "savetype": 1}, "d866060a99d90408decd9e9c5d9455b9c0a5df5d": {"rom_size": 8388608, "rom_crc32": 762136460, "savesize": 512, "savetype": 1}, "7a8b5073abf3dda24d7e5ddec0a83813cbecb255": {"rom_size": 8388608, "rom_crc32": 3959076672, "savesize": 512, "savetype": 1}, "5f25360635466eb2f782ca50213d6077f22cf63d": {"rom_size": 8388608, "rom_crc32": 207646901, "savesize": 512, "savetype": 1}, "1470025dae9f864cdaeb904a3837dc89912c3ac3": {"rom_size": 8388608, "rom_crc32": 1963194139, "savesize": 512, "savetype": 1}, "a1c6bb34019e42707161372c0363d01cb63fa41d": {"rom_size": 8388608, "rom_crc32": 1532075591, "savesize": 512, "savetype": 1}, "870a0bb07f33ed8e059d9cedd44de545a4550b5d": {"rom_size": 8388608, "rom_crc32": 1801154757, "savesize": 512, "savetype": 1}, "486a44524dfd7f16e4b943d33fa6b76b1647f234": {"rom_size": 8388608, "rom_crc32": 2374719496, "savesize": 512, "savetype": 1}, "6cc5ec62c0dbe71d8022084879bef4acc1656f08": {"rom_size": 8388608, "rom_crc32": 364606072, "savesize": 512, "savetype": 1}, "b7b76ef3081c719fa4968022a62a5220266ee6df": {"rom_size": 8388608, "rom_crc32": 3661604097, "savesize": 512, "savetype": 1}, "9826c7bfd52610fdd01f2d0175cf5b2d26a56b5d": {"rom_size": 4194304, "rom_crc32": 927979257, "savesize": 8192, "savetype": 2}, "fbee53ca512e92702aa3a34528a5b3b3bcab00ea": {"rom_size": 4194304, "rom_crc32": 3313523485, "savesize": 8192, "savetype": 2}, "a4793480cc7d006d21b45538d99e3969c7ffb68f": {"rom_size": 4194304, "rom_crc32": 2390326989, "savesize": 512, "savetype": 1}, "b80ea4c129570952f5e6e53fbf670dc061bbecdd": {"rom_size": 4194304, "rom_crc32": 1689860132, "savesize": 8192, "savetype": 2}, "e379857d18492b8fed90d874765d8662bfa867c8": {"rom_size": 4194304, "rom_crc32": 386642202, "savesize": 8192, "savetype": 2}, "896228cef9ed2f962ac8c5bc5d93bea2ccb83fae": {"rom_size": 4194304, "rom_crc32": 192521851, "savesize": 8192, "savetype": 2}, "7367d4ff16c40521fd76d0947111119a02828757": {"rom_size": 8388608, "rom_crc32": 2275471008, "savesize": 32768, "savetype": 3}, "bbd4503f69a39ebcf304719b3d1af54e816f2eee": {"rom_size": 16777216, "rom_crc32": 4016572362, "savesize": 0, "savetype": 0}, "144dc35191d9bf00638be78820383074ec2439a8": {"rom_size": 8388608, "rom_crc32": 1788105499, "savesize": 8192, "savetype": 2}, "6f806bc4d04f60431d0cc3edfff42ce84915cd17": {"rom_size": 8388608, "rom_crc32": 1880241488, "savesize": 65536, "savetype": 5}, "8b5bce28d650077e1669ef75169e637698da6e1e": {"rom_size": 4194304, "rom_crc32": 4182343736, "savesize": 512, "savetype": 1}, "8ed79f9f42b94fee18f4812681e1303fc0d03e83": {"rom_size": 4194304, "rom_crc32": 1777406333, "savesize": 512, "savetype": 1}, "1cbd85b60b19c35b39517b71bcc8bdc314b1ccda": {"rom_size": 8388608, "rom_crc32": 2866352889, "savesize": 512, "savetype": 1}, "caf651dcb807688f2757d3510f5aa7726695dfff": {"rom_size": 8388608, "rom_crc32": 1512245581, "savesize": 512, "savetype": 1}, "dc6e10b74f5c2526c074ba2d073e8d1ee0f95c8d": {"rom_size": 4194304, "rom_crc32": 2499000256, "savesize": 512, "savetype": 1}, "48ed278541dd51594b45e0e9ba33e521c5c26d5f": {"rom_size": 4194304, "rom_crc32": 3022606247, "savesize": 512, "savetype": 1}, "ee68347f7f1c5bf80b570516876f8f8d0f836c8b": {"rom_size": 8388608, "rom_crc32": 1506535700, "savesize": 65536, "savetype": 5}, "c00029f76e7333852fb000388d62b8ecf066658c": {"rom_size": 4194304, "rom_crc32": 2905776851, "savesize": 32768, "savetype": 3}, "2c0cce35643bd0929ed079b9bea49858ca5328c7": {"rom_size": 4194304, "rom_crc32": 4184157005, "savesize": 512, "savetype": 1}, "490e05d05446d7cbe2fa7fb1c6ce40d2bddd21ff": {"rom_size": 8388608, "rom_crc32": 2043694509, "savesize": 0, "savetype": 0}, "f5e12675729c2a2d7949189460fe36f9e7a6ad3a": {"rom_size": 16777216, "rom_crc32": 1666696507, "savesize": 0, "savetype": 0}, "d3c0ebeda146ca313f2c8c4db2a5102558384726": {"rom_size": 8388608, "rom_crc32": 999834257, "savesize": 65536, "savetype": 5}, "cd1efa43615ae3624cd105f94f99b1e88f1efd09": {"rom_size": 8388608, "rom_crc32": 2568226565, "savesize": 0, "savetype": 0}, "cbfe671bc49c03db0dafc6978054295cb521f6ea": {"rom_size": 8388608, "rom_crc32": 2837179507, "savesize": 0, "savetype": 0}, "582e3453b719908d5db99461cb546a70ec144171": {"rom_size": 4194304, "rom_crc32": 2445196270, "savesize": 512, "savetype": 1}, "4e256be1bae2d6b2009ea56f151ba6de08560582": {"rom_size": 8388608, "rom_crc32": 785827167, "savesize": 512, "savetype": 1}, "168d7c2cda3b9e1d5b09b72010e3a182ed4495b8": {"rom_size": 4194304, "rom_crc32": 4039257186, "savesize": 8192, "savetype": 2}, "990cdf732faffb26f5aef6d38cf12f497166c4b3": {"rom_size": 4194304, "rom_crc32": 1638269655, "savesize": 8192, "savetype": 2}, "c87fc75afed4c7c48bb9bd037748f1cd6ed4dca1": {"rom_size": 4194304, "rom_crc32": 605210091, "savesize": 512, "savetype": 1}, "be5ade490488ce227c4559bae22929c635a211ab": {"rom_size": 8388608, "rom_crc32": 327432692, "savesize": 0, "savetype": 0}, "5fd89fcbd2076ca554fdf3ad28c2a8a8850c612d": {"rom_size": 4194304, "rom_crc32": 4135629043, "savesize": 0, "savetype": 0}, "87813dcd4a88cec4291b2a19b57b4d087e983660": {"rom_size": 4194304, "rom_crc32": 1368736415, "savesize": 0, "savetype": 0}, "a71023252a5715632dcc7f9b096d2a48d1f2eeaa": {"rom_size": 8388608, "rom_crc32": 460366932, "savesize": 8192, "savetype": 2}, "325752581acc91483def269bcdac58a814839d3b": {"rom_size": 16777216, "rom_crc32": 386712948, "savesize": 8192, "savetype": 2}, "bdfc7d3871737e2ddba2730977a220868519e102": {"rom_size": 16777216, "rom_crc32": 3877165136, "savesize": 8192, "savetype": 2}, "21ec504b70c35fa7a82c617bb415f0e2f299a330": {"rom_size": 16777216, "rom_crc32": 1324956993, "savesize": 8192, "savetype": 2}, "5b9a6ba010d963d20cae994282fb2597e90c5da8": {"rom_size": 16777216, "rom_crc32": 3601678895, "savesize": 32768, "savetype": 3}, "4b20d81d60709a6b509a6c558ce17677a72bbcbc": {"rom_size": 16777216, "rom_crc32": 3028488828, "savesize": 32768, "savetype": 3}, "e4c642757422f150e4b6e904fef85f28c7ceaf35": {"rom_size": 16777216, "rom_crc32": 3176916067, "savesize": 32768, "savetype": 3}, "111fe5f53321e936d739bd1cf603a8fcb1ff0b2f": {"rom_size": 16777216, "rom_crc32": 1041883769, "savesize": 32768, "savetype": 3}, "30cfdecb6028ab879e75a7be6809bcb0c53d721d": {"rom_size": 16777216, "rom_crc32": 95438154, "savesize": 32768, "savetype": 3}, "b56b6c3bffe44cc563b45c60faf2e67791287c0a": {"rom_size": 16777216, "rom_crc32": 3277707768, "savesize": 32768, "savetype": 3}, "70ca46bd4c1bf13f3da211ebbbe2019c9574b349": {"rom_size": 16777216, "rom_crc32": 3580636756, "savesize": 32768, "savetype": 3}, "3012db2bd7661177acc1641c22f668e305be0641": {"rom_size": 16777216, "rom_crc32": 2821990934, "savesize": 32768, "savetype": 3}, "be5364efeff793186f5d54f272fb5e10a3dadbdf": {"rom_size": 4194304, "rom_crc32": 537024578, "savesize": 65536, "savetype": 5}, "0813b90ec2623886a1ad21f4b141573d9886c73a": {"rom_size": 4194304, "rom_crc32": 3979439671, "savesize": 65536, "savetype": 5}, "1df96ece8b773a8fc523f2485321663a34ce2f48": {"rom_size": 4194304, "rom_crc32": 820617165, "savesize": 65536, "savetype": 5}, "06a39d45ff867fcc5efef7065d607e01600cba9d": {"rom_size": 16777216, "rom_crc32": 3368585698, "savesize": 8192, "savetype": 2}, "60ce21bc42ef785fdd8c0d7a21049d7e7acb76ff": {"rom_size": 8388608, "rom_crc32": 3131353131, "savesize": 8192, "savetype": 2}, "e4cda66abe55b82bd197505bd7a2f338632bb66d": {"rom_size": 8388608, "rom_crc32": 4036273355, "savesize": 8192, "savetype": 2}, "badd167753bd3db234bec89728a4cbc18b8d4fac": {"rom_size": 8388608, "rom_crc32": 1889981121, "savesize": 512, "savetype": 1}, "bbf03034f986b5987d0a6bbcb837af12570c72e8": {"rom_size": 16777216, "rom_crc32": 3369815904, "savesize": 32768, "savetype": 3}, "00cff61562873718fb0013a686dd8cfbda18d200": {"rom_size": 16777216, "rom_crc32": 3659083049, "savesize": 32768, "savetype": 3}, "0b2cfc641f63d812a0e81a1948a71ef580ec8fd8": {"rom_size": 16777216, "rom_crc32": 2539556248, "savesize": 32768, "savetype": 3}, "b7830d60e58df7872e15259879e837eace4737d8": {"rom_size": 16777216, "rom_crc32": 3389197665, "savesize": 65536, "savetype": 5}, "470794d23dc8864c2b3b51b01d0cf59c42e52c2b": {"rom_size": 16777216, "rom_crc32": 2083213929, "savesize": 65536, "savetype": 5}, "3620ce1ded7045358b144164474d288c67ec42b4": {"rom_size": 16777216, "rom_crc32": 633574609, "savesize": 65536, "savetype": 5}, "2c6caf3c5d3ec7c2d909637ed86a59b676630856": {"rom_size": 8388608, "rom_crc32": 3243276559, "savesize": 512, "savetype": 1}, "2fe669e2878244c6c7c37b4bf0252d7e393ce904": {"rom_size": 8388608, "rom_crc32": 2806158555, "savesize": 512, "savetype": 1}, "20acebf85f708e76636e9ad6e433d7d911eed0ce": {"rom_size": 4194304, "rom_crc32": 2331243437, "savesize": 512, "savetype": 1}, "1cbf94dc8e42d4552c335e85fcf0ff0a6e262fd8": {"rom_size": 4194304, "rom_crc32": 1608553158, "savesize": 0, "savetype": 0}, "e69fe87a03765a6a2a635167a3a48066bc5ae2e5": {"rom_size": 8388608, "rom_crc32": 1967726128, "savesize": 0, "savetype": 0}, "d653dbc298cc9db0fa2e7a252311fac9ec45c34f": {"rom_size": 4194304, "rom_crc32": 2027039465, "savesize": 512, "savetype": 1}, "7c22695f8af049210788d77ebad707a7ab025dd2": {"rom_size": 4194304, "rom_crc32": 2738092625, "savesize": 512, "savetype": 1}, "3537d45bf930135f3bbe9c06123ea5c9bd62fb4d": {"rom_size": 8388608, "rom_crc32": 3891950022, "savesize": 512, "savetype": 1}, "2f6b6e571665639b03a11199e87b645a41412ce7": {"rom_size": 8388608, "rom_crc32": 3595021080, "savesize": 8192, "savetype": 2}, "4192bf61ed088ec712b8ca88e0130257e9b1d052": {"rom_size": 8388608, "rom_crc32": 1321053574, "savesize": 8192, "savetype": 2}, "b9add4e8480a6a067f0d998bca449435326cc412": {"rom_size": 4194304, "rom_crc32": 3387556597, "savesize": 0, "savetype": 0}, "77a365f7b3b66f0efe44b6b4c9c29062c471a42e": {"rom_size": 4194304, "rom_crc32": 268416088, "savesize": 0, "savetype": 0}, "15ca474cb6372d7df3f6384ff4ae244db6eafe4d": {"rom_size": 8388608, "rom_crc32": 2932675329, "savesize": 512, "savetype": 1}, "6d01f70d8f02ae3b1248b64fa33b5249a8b68660": {"rom_size": 16777216, "rom_crc32": 3868812529, "savesize": 32768, "savetype": 3}, "5b952ff7782bc9d42a815a5efffb8c1d791c71ab": {"rom_size": 16777216, "rom_crc32": 695079058, "savesize": 512, "savetype": 1}, "a4101c10d095ed96e7be2c5042c0105e701e3330": {"rom_size": 16777216, "rom_crc32": 2106600290, "savesize": 512, "savetype": 1}, "699f0584f96431897fbaabd2402b822080e094de": {"rom_size": 4194304, "rom_crc32": 2807527623, "savesize": 512, "savetype": 1}, "103755b119c7c8711a4aebb994db3eded58a4ca5": {"rom_size": 4194304, "rom_crc32": 2708885308, "savesize": 0, "savetype": 0}, "8f1a8b879c10189959a5caf5c1e9230a813880a5": {"rom_size": 16777216, "rom_crc32": 192043528, "savesize": 8192, "savetype": 2}, "32525377e113c8a4e45e74725f9295c11b43d103": {"rom_size": 8388608, "rom_crc32": 1262355761, "savesize": 8192, "savetype": 2}, "413af8b500399f8591af95b3130bde3a2d1d7dad": {"rom_size": 8388608, "rom_crc32": 1990188694, "savesize": 8192, "savetype": 2}, "67d3381c1c7bac2917b166e05870aec28be27974": {"rom_size": 8388608, "rom_crc32": 1351778110, "savesize": 8192, "savetype": 2}, "3a981a563880bb665f4050fcbcb388b13e5fd5f4": {"rom_size": 8388608, "rom_crc32": 2123398856, "savesize": 8192, "savetype": 2}, "7fd20e284743c8f57de12469afb6d956eb6915ec": {"rom_size": 8388608, "rom_crc32": 1509034236, "savesize": 8192, "savetype": 2}, "49222973e475841d8ae29f8c8b06dd54918b21ca": {"rom_size": 8388608, "rom_crc32": 2769944245, "savesize": 8192, "savetype": 2}, "60f1312921f07e3749e7438f7ca2c43fe94b8de1": {"rom_size": 8388608, "rom_crc32": 74286788, "savesize": 8192, "savetype": 2}, "db4302e5706b9953acc9da90bce66eed43428540": {"rom_size": 8388608, "rom_crc32": 3779387090, "savesize": 8192, "savetype": 2}, "d575bed01f2095ff7e18883c8b36ec65b7e2a01a": {"rom_size": 8388608, "rom_crc32": 1595824712, "savesize": 512, "savetype": 1}, "efefde08becdf177cf73227192c1f52621e8ef08": {"rom_size": 8388608, "rom_crc32": 53036305, "savesize": 512, "savetype": 1}, "d7a5610cb9ae38905952ff315dc1c1c7b27d8337": {"rom_size": 8388608, "rom_crc32": 4118813656, "savesize": 512, "savetype": 1}, "31abbb232adbe646cccc90377a74ad5274a5dacb": {"rom_size": 8388608, "rom_crc32": 2466101462, "savesize": 512, "savetype": 1}, "c9c7fddd4265f96950d2465e1e148316a53cba90": {"rom_size": 16777216, "rom_crc32": 4063318180, "savesize": 512, "savetype": 1}, "47e6b4159b134716a56e2eeec585e52307b89671": {"rom_size": 8388608, "rom_crc32": 2645640632, "savesize": 0, "savetype": 0}, "901ce2eb9b15450e39b85f82083924fa7e89a95e": {"rom_size": 8388608, "rom_crc32": 1924452128, "savesize": 0, "savetype": 0}, "dd1c4a36b87272fd254ffec01b5c5ac6f4016de2": {"rom_size": 8388608, "rom_crc32": 1845104464, "savesize": 0, "savetype": 0}, "5ab360ab7e2abb9adf1abcb938492715d13f005e": {"rom_size": 16777216, "rom_crc32": 2689901776, "savesize": 512, "savetype": 1}, "c109fdb66ab70220a5981df3dff20ed849cd5f2c": {"rom_size": 8388608, "rom_crc32": 2970076989, "savesize": 512, "savetype": 1}, "ba654a4d6b26b297bb0f700195e6ad8fe5b8fadd": {"rom_size": 8388608, "rom_crc32": 350481356, "savesize": 512, "savetype": 1}, "0575f792ec3ad715271ae9dc1529c4cee3593884": {"rom_size": 8388608, "rom_crc32": 356846435, "savesize": 65536, "savetype": 5}, "e7f62f516f8c1905d788e2e5f1b17130aceb6370": {"rom_size": 8388608, "rom_crc32": 3896313814, "savesize": 65536, "savetype": 5}, "6f5857fcd4bfbf4faa4663c5264a82e3b227c8c9": {"rom_size": 8388608, "rom_crc32": 1058406058, "savesize": 8192, "savetype": 2}, "0af2969144a1b23ec55accd861b8b654b888a35c": {"rom_size": 8388608, "rom_crc32": 1070265040, "savesize": 8192, "savetype": 2}, "288aced49cd39afce33d8fc08243178cf00d8376": {"rom_size": 8388608, "rom_crc32": 677373061, "savesize": 8192, "savetype": 2}, "d8940ee65943e9942ffea2aba23d95a643a680ee": {"rom_size": 8388608, "rom_crc32": 3745405139, "savesize": 512, "savetype": 1}, "5abade480173fbf8315814eeb1d7b7e54d3bb363": {"rom_size": 8388608, "rom_crc32": 931645756, "savesize": 512, "savetype": 1}, "ea76d3c372a8eb5fe84cd1379706989bb25e0a30": {"rom_size": 8388608, "rom_crc32": 28629342, "savesize": 8192, "savetype": 2}, "ed48386e3b3d679d8a60b3997a93c3fefcde07a3": {"rom_size": 8388608, "rom_crc32": 4003892270, "savesize": 8192, "savetype": 2}, "9dfcc0047ae4a3f14cce413fc51df699d3b978f5": {"rom_size": 8388608, "rom_crc32": 1531326969, "savesize": 32768, "savetype": 3}, "134abe399a512ab12e2b65ca2ea69dcae5bf50a9": {"rom_size": 8388608, "rom_crc32": 650003709, "savesize": 32768, "savetype": 3}, "de4ea28430b6a9b715b12ef25997aea5f53d96ed": {"rom_size": 8388608, "rom_crc32": 444577018, "savesize": 32768, "savetype": 3}, "d1b07b5f48d3933b59124c26023cca434bd162bb": {"rom_size": 8388608, "rom_crc32": 489978225, "savesize": 32768, "savetype": 3}, "3fd76fa393452dca05888ef749bf2006097904ec": {"rom_size": 8388608, "rom_crc32": 1714691899, "savesize": 32768, "savetype": 3}, "46453c58ad7f0ce0f49e2ad201a69cd2fd2c576c": {"rom_size": 8388608, "rom_crc32": 1838555010, "savesize": 32768, "savetype": 3}, "cd3151de909d9fc49652fdbe3131cae79eaba983": {"rom_size": 8388608, "rom_crc32": 520318138, "savesize": 32768, "savetype": 3}, "42af94ce65813008821e3c547e5de14cc2fd07ae": {"rom_size": 8388608, "rom_crc32": 3234300153, "savesize": 32768, "savetype": 3}, "040b2b03b03084fd62b9968dbc79e49e6795e7af": {"rom_size": 8388608, "rom_crc32": 600877441, "savesize": 32768, "savetype": 3}, "c516b6f076a33eda62cb2c7e95f9666aae84362b": {"rom_size": 8388608, "rom_crc32": 199508234, "savesize": 32768, "savetype": 3}, "4f22de1a09ba4a2a944a9d6f07e531b5d3aadc89": {"rom_size": 8388608, "rom_crc32": 1215660822, "savesize": 32768, "savetype": 3}, "286b742e7fc2b470b4dd709133baa5d97e9e46ea": {"rom_size": 8388608, "rom_crc32": 1971996393, "savesize": 32768, "savetype": 3}, "76bf643ebb7c4429eaf9346c57aa450eb1ba3422": {"rom_size": 8388608, "rom_crc32": 212940482, "savesize": 32768, "savetype": 3}, "f65af04121bcb7118d25dcc22131474d22d20115": {"rom_size": 8388608, "rom_crc32": 555772252, "savesize": 32768, "savetype": 3}, "fd31fa2dc2c4cf6acb6f3f59f8fb6e83e7463ddb": {"rom_size": 8388608, "rom_crc32": 2412302195, "savesize": 32768, "savetype": 3}, "02a8e5a6e3104d71cabe063a9c37d3f834b1c594": {"rom_size": 8388608, "rom_crc32": 2773677699, "savesize": 32768, "savetype": 3}, "96c5c0e6772da8e390bfcc0a34fca0ca91f6ec1d": {"rom_size": 8388608, "rom_crc32": 2046058200, "savesize": 32768, "savetype": 3}, "ebc334b7952b0faba3f71e456de294bcc2e6b04c": {"rom_size": 8388608, "rom_crc32": 2805892004, "savesize": 32768, "savetype": 3}, "abef0cd4ce5dd1e74ce2cb29d19cf005195879cb": {"rom_size": 8388608, "rom_crc32": 320354663, "savesize": 32768, "savetype": 3}, "498d4143c024230a37a35bd032a97d5815e4da4e": {"rom_size": 8388608, "rom_crc32": 3739677353, "savesize": 32768, "savetype": 3}, "a1dfa6588186cd710cef387eb1790c6b6b48f61d": {"rom_size": 8388608, "rom_crc32": 633511675, "savesize": 32768, "savetype": 3}, "861f4a658b644341f2f8362465df44b923539646": {"rom_size": 8388608, "rom_crc32": 2034573698, "savesize": 32768, "savetype": 3}, "18f04cc95f83db7a18fdf1cd7e145338429fb74c": {"rom_size": 8388608, "rom_crc32": 2533872289, "savesize": 32768, "savetype": 3}, "f45720e027a849628c398084eda611aa4ef9628e": {"rom_size": 8388608, "rom_crc32": 698436441, "savesize": 32768, "savetype": 3}, "cc2c96929481bc520f784fea0b0de699d2ed1dd2": {"rom_size": 8388608, "rom_crc32": 3458086843, "savesize": 32768, "savetype": 3}, "213f7ae1ec3e9209d4be7e4f758bb96c9775cd3a": {"rom_size": 8388608, "rom_crc32": 2962839423, "savesize": 32768, "savetype": 3}, "5e6ceef6341916a2f33ebe2072e6a89ede965db4": {"rom_size": 8388608, "rom_crc32": 663024626, "savesize": 32768, "savetype": 3}, "83e4ebfdb9ebf088b05505ac31b6b8efb460e07b": {"rom_size": 16777216, "rom_crc32": 3085968057, "savesize": 8192, "savetype": 2}, "7a969280dbba1dbbde0c551af2be7f7af84fd339": {"rom_size": 16777216, "rom_crc32": 2128758675, "savesize": 8192, "savetype": 2}, "97a84d6edf8370bcd0edd7f28a1a61e109a9e90e": {"rom_size": 8388608, "rom_crc32": 332280552, "savesize": 8192, "savetype": 2}, "06c95fcf07dadd1f7c1f5dee70152124669c653b": {"rom_size": 8388608, "rom_crc32": 2024637183, "savesize": 8192, "savetype": 2}, "a7835ace248aab817f9477910dbfac0b5d00b770": {"rom_size": 8388608, "rom_crc32": 3225990947, "savesize": 8192, "savetype": 2}, "631559f595f785bc0ef56982c12260bee0e6e22a": {"rom_size": 8388608, "rom_crc32": 1604090442, "savesize": 8192, "savetype": 2}, "01845b1ffdd08fe4dbd6ca953f7ab1926604ebfc": {"rom_size": 4194304, "rom_crc32": 1455056984, "savesize": 0, "savetype": 0}, "2c62e5c415ac68f64320158a4526975f0acabfcd": {"rom_size": 4194304, "rom_crc32": 1486360741, "savesize": 0, "savetype": 0}, "041e9429692dc1f2f9c1e7a4023663564c95c872": {"rom_size": 16777216, "rom_crc32": 1677141385, "savesize": 32768, "savetype": 3}, "d2f3f406587ec933105f054eb77c92bee9a0987f": {"rom_size": 16777216, "rom_crc32": 4152819623, "savesize": 32768, "savetype": 3}, "bf154dad573ae2b33fcc688d9f8e6c131a4308da": {"rom_size": 33554432, "rom_crc32": 2052054723, "savesize": 32768, "savetype": 3}, "5bc00501eb6004fd32a4caa882388831766e682c": {"rom_size": 4194304, "rom_crc32": 1718770185, "savesize": 8192, "savetype": 2}, "646185a4db5de722b147e1a9ad0d231904fe3fc8": {"rom_size": 4194304, "rom_crc32": 3156208368, "savesize": 8192, "savetype": 2}, "0615f7f80d5b0f01f7e675cd0b7b851b3c45fc8d": {"rom_size": 8388608, "rom_crc32": 939979950, "savesize": 512, "savetype": 1}, "a3876797f5c13132b152ebb9ab1296b4f848b9e7": {"rom_size": 8388608, "rom_crc32": 212575625, "savesize": 512, "savetype": 1}, "b34db0ee2c71636728ccc5996d18b5b9490ab90a": {"rom_size": 8388608, "rom_crc32": 160958592, "savesize": 512, "savetype": 1}, "0cd6cf3336c71ee2f54ed5bfb6051900958f00f1": {"rom_size": 8388608, "rom_crc32": 2382068271, "savesize": 8192, "savetype": 2}, "e5e2328ad7896835060696a52163719e4123e31e": {"rom_size": 8388608, "rom_crc32": 4057542243, "savesize": 32768, "savetype": 3}, "23d585eaebb02989429fdec0174676b019c0ef9d": {"rom_size": 8388608, "rom_crc32": 1152884267, "savesize": 32768, "savetype": 3}, "5f9315189d91a3bcc5d4be288050fe64b90aa452": {"rom_size": 8388608, "rom_crc32": 1549903940, "savesize": 32768, "savetype": 3}, "23e567cb0f902d6291315142360dc3b077fda088": {"rom_size": 8388608, "rom_crc32": 2538489515, "savesize": 32768, "savetype": 3}, "8fc6162ac0ebeca0a023e8273941b9bfd429b980": {"rom_size": 8388608, "rom_crc32": 2172288670, "savesize": 32768, "savetype": 3}, "f1c20ea5d284f1c2a738f53b561e08bd61ce09e3": {"rom_size": 8388608, "rom_crc32": 1819625372, "savesize": 32768, "savetype": 3}, "8700107278ad014798883e963184b7476db839f3": {"rom_size": 8388608, "rom_crc32": 1357149096, "savesize": 65536, "savetype": 5}, "0c73cf2187929042bf8a74c80d6a868e347fa156": {"rom_size": 8388608, "rom_crc32": 3987891384, "savesize": 512, "savetype": 1}, "66b2c2e9c3c10cea1e79c4b5604e5ed94871bb4e": {"rom_size": 4194304, "rom_crc32": 853037559, "savesize": 512, "savetype": 1}, "3364a66325c2b632492d174759b9ab297d6c0397": {"rom_size": 4194304, "rom_crc32": 3148776904, "savesize": 512, "savetype": 1}, "71b6e0117e6bbdaef168da232e1b4cf60f1dcc06": {"rom_size": 4194304, "rom_crc32": 153779466, "savesize": 512, "savetype": 1}, "c361c9d40f93da89bf9d2ecf11ee641971f8ff7a": {"rom_size": 4194304, "rom_crc32": 2635082882, "savesize": 0, "savetype": 0}, "af752996b291916503ad8abd0fb2386e95a4e0ee": {"rom_size": 4194304, "rom_crc32": 152187078, "savesize": 0, "savetype": 0}, "27cae5c11e99c944d770e1a9e619eaffb9d67127": {"rom_size": 4194304, "rom_crc32": 2434524448, "savesize": 0, "savetype": 0}, "4ab84159e8ccb099fdca416eef7533596ded3241": {"rom_size": 4194304, "rom_crc32": 3223080202, "savesize": 0, "savetype": 0}, "43e7f089116b79d56041ad250c61083bb57a6fd1": {"rom_size": 4194304, "rom_crc32": 1423914714, "savesize": 512, "savetype": 1}, "82541429411857d487caec85c25f14ea21aae4ad": {"rom_size": 8388608, "rom_crc32": 823046910, "savesize": 8192, "savetype": 2}, "518bb6d677ec05f311c63f299a8f763e3f6594dd": {"rom_size": 8388608, "rom_crc32": 578442288, "savesize": 8192, "savetype": 2}, "0fa097439f55ff1a2a25f638bb861d5d3d75b529": {"rom_size": 4194304, "rom_crc32": 3109447698, "savesize": 512, "savetype": 1}, "a19b952bc9e70055d9ac7d050e2c05609741d329": {"rom_size": 4194304, "rom_crc32": 1209048973, "savesize": 512, "savetype": 1}, "af9a86263c367e0adfe285056014d7c105da6794": {"rom_size": 4194304, "rom_crc32": 1850937691, "savesize": 512, "savetype": 1}, "ebfbcb300166bcb0917f19ddc2bd65e9eed31a79": {"rom_size": 8388608, "rom_crc32": 1227683875, "savesize": 32768, "savetype": 3}, "6bee34edfb75be0dde3a71c1cd7a944a59ffb990": {"rom_size": 8388608, "rom_crc32": 4045157836, "savesize": 512, "savetype": 1}, "779f83b405d48fb189385c5263869b97a43afb57": {"rom_size": 8388608, "rom_crc32": 2239738351, "savesize": 512, "savetype": 1}, "4d9dcae55b15249e8a53b93c05fb1f1d6024b531": {"rom_size": 33554432, "rom_crc32": 433849830, "savesize": 0, "savetype": 0}, "5915d6c7f395b1f8fb0d805f88714c8b94f212ec": {"rom_size": 8388608, "rom_crc32": 551720614, "savesize": 8192, "savetype": 2}, "8e6a916ea0b43b21c5cd3314e1a54294415528df": {"rom_size": 4194304, "rom_crc32": 4164937097, "savesize": 32768, "savetype": 3}, "a292fb4c63b1b2d020845c1349f13c73cb2361ed": {"rom_size": 4194304, "rom_crc32": 3233425437, "savesize": 32768, "savetype": 3}, "fb7be3132a8789cc3b7d84edff52aa80f5e8d947": {"rom_size": 4194304, "rom_crc32": 3505335236, "savesize": 512, "savetype": 1}, "fc05ea4575df322f1981803b1e09c39d692f4da5": {"rom_size": 4194304, "rom_crc32": 1209867615, "savesize": 512, "savetype": 1}, "76246666e4f679a21eb101aa99b228bde74e80f5": {"rom_size": 4194304, "rom_crc32": 1723300272, "savesize": 512, "savetype": 1}, "577a4746edd35de5ac901d826e287955cdb49f9c": {"rom_size": 4194304, "rom_crc32": 3324777926, "savesize": 512, "savetype": 1}, "fcdbc91bbf30f40f568a918acd7a7818583b88ae": {"rom_size": 4194304, "rom_crc32": 146154385, "savesize": 512, "savetype": 1}, "9b1d4f55cd84cfef997ee64493e0d5ef633d4f9e": {"rom_size": 4194304, "rom_crc32": 72118120, "savesize": 8192, "savetype": 2}, "2f4d0ab318819219b0c80cd61d40148b58b04df3": {"rom_size": 4194304, "rom_crc32": 682155056, "savesize": 8192, "savetype": 2}, "a39bb6faff011ee290ef48b68e00a28b0bdf757c": {"rom_size": 4194304, "rom_crc32": 4277136860, "savesize": 512, "savetype": 1}, "eedac89ea194985971165b9cd0036316a1e4f495": {"rom_size": 4194304, "rom_crc32": 1380779849, "savesize": 512, "savetype": 1}, "dc4cb8df8920f18bb3e26312724f2c8d5e188179": {"rom_size": 4194304, "rom_crc32": 1741236355, "savesize": 512, "savetype": 1}, "f1ee94f14e199f03b5f8465ffd795bd5ef94d33f": {"rom_size": 4194304, "rom_crc32": 1928017379, "savesize": 8192, "savetype": 2}, "c7adc49331ab42684c3f12c84b62be64c02e2944": {"rom_size": 8388608, "rom_crc32": 1029106390, "savesize": 512, "savetype": 1}, "70feb968a8f5d2d6a062fb692b681c931ea4dc1e": {"rom_size": 4194304, "rom_crc32": 981989259, "savesize": 512, "savetype": 1}, "99cab6bdc2bfeee8cf07dba9d1a133b5050506d6": {"rom_size": 4194304, "rom_crc32": 1172182633, "savesize": 512, "savetype": 1}, "ddaf996ff228d325bb72bf75669f51d3fb9f9cdd": {"rom_size": 4194304, "rom_crc32": 4091301438, "savesize": 512, "savetype": 1}, "0f9710acca7f6471d468d40d0062f836366b180c": {"rom_size": 8388608, "rom_crc32": 3914434140, "savesize": 32768, "savetype": 3}, "a8615953c8f646d39e05929cb469a3a3bf8a82d6": {"rom_size": 8388608, "rom_crc32": 70146823, "savesize": 32768, "savetype": 3}, "182983c1b2299d930110f135b8c68d3a7076cc6e": {"rom_size": 4194304, "rom_crc32": 2766220619, "savesize": 0, "savetype": 0}, "1df1885af216fc7032d1399ed360aab36807d7f1": {"rom_size": 8388608, "rom_crc32": 2381881536, "savesize": 65536, "savetype": 5}, "dcf72caf7848ea983b621021a9a92fa73d7df5c9": {"rom_size": 4194304, "rom_crc32": 403510417, "savesize": 0, "savetype": 0}, "0d25f426bef88a6394573aabf77898a629d0625b": {"rom_size": 4194304, "rom_crc32": 1839427202, "savesize": 8192, "savetype": 2}, "b8a4d17fdc883671a10b536cb3a24325ef542a97": {"rom_size": 16777216, "rom_crc32": 1597904974, "savesize": 8192, "savetype": 2}, "e0dea9c3385866b15c17bed854aace5cd0c1e433": {"rom_size": 4194304, "rom_crc32": 3204785105, "savesize": 32768, "savetype": 3}, "2447090f6ba89da10ba4a31c233f34db038f68e9": {"rom_size": 4194304, "rom_crc32": 2064724887, "savesize": 0, "savetype": 0}, "73c1d068d001763e093c096cf9230657d2142f70": {"rom_size": 4194304, "rom_crc32": 2954673159, "savesize": 0, "savetype": 0}, "3f1db5da8f319b2c61f515dd3f36f1fe53de89f2": {"rom_size": 4194304, "rom_crc32": 2721887327, "savesize": 0, "savetype": 0}, "aa217281f04f7187e31542f35f03a99354c2cac7": {"rom_size": 8388608, "rom_crc32": 3242262394, "savesize": 0, "savetype": 0}, "9f7446e55388f3aa6292524d4037e7d347d5c0c2": {"rom_size": 8388608, "rom_crc32": 454348627, "savesize": 0, "savetype": 0}, "a2648e3935e9ad34495a2e60ee8d3aa9be7867b7": {"rom_size": 8388608, "rom_crc32": 326832026, "savesize": 512, "savetype": 1}, "1b3937e7a212338eccfb68ff98aa86e101639d61": {"rom_size": 8388608, "rom_crc32": 2907083225, "savesize": 512, "savetype": 1}, "002e11202bf22460b03feac7d87ca5bea6ed4d06": {"rom_size": 8388608, "rom_crc32": 2036372076, "savesize": 0, "savetype": 0}, "d54ecac7ef32f7d725c5cef2181d477ff7a6b63d": {"rom_size": 8388608, "rom_crc32": 1535814147, "savesize": 0, "savetype": 0}, "4fc7ce225c1ab002fdedffca7f8a24fdae9d9ba9": {"rom_size": 8388608, "rom_crc32": 95188613, "savesize": 0, "savetype": 0}, "eb43d494bf3d455203061352f9bcf8d31a29d2f8": {"rom_size": 8388608, "rom_crc32": 2474728670, "savesize": 32768, "savetype": 3}, "923fe62eca194934811b64317d6eab5831fe15b2": {"rom_size": 8388608, "rom_crc32": 566772532, "savesize": 512, "savetype": 1}, "7794dd24269f81180a520b9cc43cd96a3f9a148e": {"rom_size": 8388608, "rom_crc32": 2855016503, "savesize": 512, "savetype": 1}, "72ee5a251f3461fdee59c41f93d41994aed5d2a5": {"rom_size": 8388608, "rom_crc32": 344674418, "savesize": 512, "savetype": 1}, "8fae621ee43e1e31153cce513816ac88a025a771": {"rom_size": 8388608, "rom_crc32": 3282925313, "savesize": 32768, "savetype": 3}, "a26f7462a1b9e9e5e6febf719bea5b37a7fc9250": {"rom_size": 8388608, "rom_crc32": 1138342385, "savesize": 32768, "savetype": 3}, "bb1fe33c3c5be191ddf3986a7ea2c2ce440eb3bd": {"rom_size": 8388608, "rom_crc32": 1579978926, "savesize": 32768, "savetype": 3}, "fca3c66c7f7697f700916c92117bcfe5c71e20f3": {"rom_size": 8388608, "rom_crc32": 4152258255, "savesize": 32768, "savetype": 3}, "5f3763006e5f5636fd964f01f6f425d77e0f2705": {"rom_size": 8388608, "rom_crc32": 1120904373, "savesize": 0, "savetype": 0}, "0ef882732c02985ee8b84e8ebe715a929419540e": {"rom_size": 8388608, "rom_crc32": 493443867, "savesize": 0, "savetype": 0}, "ae047699ce48e2e38023acf161cedba26d1c9680": {"rom_size": 8388608, "rom_crc32": 4171269602, "savesize": 0, "savetype": 0}, "6e982a83f3b66578b9e38c511a1d580e89fd3b41": {"rom_size": 4194304, "rom_crc32": 3716621624, "savesize": 512, "savetype": 1}, "d066d2f1cfaf9eafd4edcfd10ce0f31887cf89ba": {"rom_size": 4194304, "rom_crc32": 1248990986, "savesize": 0, "savetype": 0}, "546ce0749c3aabcf829ce605a1c0ba7a2b0ecd73": {"rom_size": 4194304, "rom_crc32": 827327361, "savesize": 0, "savetype": 0}, "411b9de62cfdff32bfcd2a3b8ea8b7ecfaa67769": {"rom_size": 4194304, "rom_crc32": 4101790969, "savesize": 0, "savetype": 0}, "a3c7d907f173969edc9da0abdc16c3b32dccbfff": {"rom_size": 4194304, "rom_crc32": 349902955, "savesize": 0, "savetype": 0}, "9bb42d796630ab8836ad74247a85962e4aa5b732": {"rom_size": 4194304, "rom_crc32": 1054581648, "savesize": 0, "savetype": 0}, "d02df175fa53ec4b94a0d07eefcd8e562260b2bf": {"rom_size": 4194304, "rom_crc32": 3509680096, "savesize": 0, "savetype": 0}, "d2f776b4ac820836001a64e5307737a2aa5a1035": {"rom_size": 4194304, "rom_crc32": 3536140984, "savesize": 0, "savetype": 0}, "c01c0086a51e8706ae24ebbe9e2f87daeb5f810c": {"rom_size": 4194304, "rom_crc32": 234877775, "savesize": 0, "savetype": 0}, "7ea07f090b13cfc153f93bc0628904250344c7d6": {"rom_size": 4194304, "rom_crc32": 846738633, "savesize": 0, "savetype": 0}, "302ee743fa73aca5e4e8d178a57a86a5731a4a0f": {"rom_size": 4194304, "rom_crc32": 2708213928, "savesize": 512, "savetype": 1}, "959317019e1d0d12397e022be4f0430405a4aebb": {"rom_size": 4194304, "rom_crc32": 345899447, "savesize": 32768, "savetype": 3}, "51d7cd539ab66470efc1b4953c94539f26592adc": {"rom_size": 4194304, "rom_crc32": 3073698638, "savesize": 0, "savetype": 0}, "39312a596c245e55351187db1b208dc2525089df": {"rom_size": 16777216, "rom_crc32": 4213775562, "savesize": 512, "savetype": 1}, "1604c44e9a2183f1c4b94663afdad13d9bcdd3b0": {"rom_size": 16777216, "rom_crc32": 2728109647, "savesize": 512, "savetype": 1}, "5778cf802aa0e608ee1b6928ef5f122cd78edec7": {"rom_size": 16777216, "rom_crc32": 2525751228, "savesize": 512, "savetype": 1}, "eab68f0b786bec744a7d788357d0574a56a49fd7": {"rom_size": 8388608, "rom_crc32": 2025108935, "savesize": 0, "savetype": 0}, "c9562e7b929ec0a089bbe3b83377effedabc403b": {"rom_size": 8388608, "rom_crc32": 3168451399, "savesize": 0, "savetype": 0}, "dceba16db8b17d73d0133f37707ab386101cf02b": {"rom_size": 16777216, "rom_crc32": 172250780, "savesize": 32768, "savetype": 3}, "ff069482d055fb9fa6c84baa28a553c85b61cf0b": {"rom_size": 33554432, "rom_crc32": 1118608569, "savesize": 65536, "savetype": 5}, "52842630235eccf74d1965a9e70f1a70a0c94f78": {"rom_size": 4194304, "rom_crc32": 70923604, "savesize": 512, "savetype": 1}, "55f79fa1eccceb8b669ae8f05f15e5b796adb3f2": {"rom_size": 4194304, "rom_crc32": 168799988, "savesize": 512, "savetype": 1}, "7d3c950b618eaaaf5a9f86ac83bbc6592ff24c83": {"rom_size": 4194304, "rom_crc32": 3335617805, "savesize": 0, "savetype": 0}, "e88021fb4cc39cc6493b1ea3dfa8915e88631ae7": {"rom_size": 4194304, "rom_crc32": 1332575817, "savesize": 512, "savetype": 1}, "34e67a86cdd70dae30f6a0db67a62d9c082ff4ac": {"rom_size": 4194304, "rom_crc32": 2397650616, "savesize": 0, "savetype": 0}, "36e689cdca459d747c94e48dcff2043ba7a2a963": {"rom_size": 4194304, "rom_crc32": 2360450464, "savesize": 0, "savetype": 0}, "1ca752573039300eb8fd83290bc3fc7796f2efbe": {"rom_size": 4194304, "rom_crc32": 802940840, "savesize": 0, "savetype": 0}, "764abd6db2997eeac64ed4fdf4d692eaa4dcd74b": {"rom_size": 4194304, "rom_crc32": 2132924051, "savesize": 0, "savetype": 0}, "a12f216f655bab55543b7e6ff4659ecfc55ab7ce": {"rom_size": 4194304, "rom_crc32": 3236556478, "savesize": 0, "savetype": 0}, "b6d80926c21f87b37bc8ee48a1e9d318349b1504": {"rom_size": 4194304, "rom_crc32": 1382336304, "savesize": 0, "savetype": 0}, "3250c2aa89c34323590bb61a915be349acd7c2dc": {"rom_size": 4194304, "rom_crc32": 49616534, "savesize": 0, "savetype": 0}, "385de0236a159903d6bf7cf478c954a1bc23e9fc": {"rom_size": 8388608, "rom_crc32": 1386153636, "savesize": 0, "savetype": 0}, "6435b1deadf69bf6b77de092649973e2d37f8611": {"rom_size": 8388608, "rom_crc32": 1945799466, "savesize": 0, "savetype": 0}, "d5cce5b29cae0298262ac3c510e9354e8716ac3c": {"rom_size": 8388608, "rom_crc32": 1719620810, "savesize": 0, "savetype": 0}, "b6fbd700d3f3e1b9420594244d8713fbd0c9152c": {"rom_size": 4194304, "rom_crc32": 1845755242, "savesize": 512, "savetype": 1}, "f2fa32e2f797489d2ca5e93b2fdbc4e8d1c2085a": {"rom_size": 4194304, "rom_crc32": 3722829570, "savesize": 512, "savetype": 1}, "6194fadbd6a3e2c983162434872fa4b62c175e50": {"rom_size": 4194304, "rom_crc32": 62636233, "savesize": 512, "savetype": 1}, "62a55ee8a31203bb81c09b637ef8eb0bd0f17495": {"rom_size": 8388608, "rom_crc32": 473021420, "savesize": 0, "savetype": 0}, "00d706aee3aa2b679fe0380203dfdbc20d50d74d": {"rom_size": 4194304, "rom_crc32": 2968746399, "savesize": 0, "savetype": 0}, "fc05ddbde8901f5d3ef6ae2e912bd63a9319ffe6": {"rom_size": 4194304, "rom_crc32": 1438594315, "savesize": 0, "savetype": 0}, "cbf0a6b74270b232068e0426ea98b3e142841c53": {"rom_size": 4194304, "rom_crc32": 2370843863, "savesize": 512, "savetype": 1}, "9dd866247b068c2cf95d24f9cf292b39964f772e": {"rom_size": 4194304, "rom_crc32": 1482121061, "savesize": 512, "savetype": 1}, "451c59ad8d56a1983d7ccf71261ecbda8aafa716": {"rom_size": 8388608, "rom_crc32": 399316122, "savesize": 0, "savetype": 0}, "8d512067722e56211ce3fd97ef2b871bb76b79f7": {"rom_size": 4194304, "rom_crc32": 977643225, "savesize": 32768, "savetype": 3}, "ae1b8b09be91a4527970add65605dd9d3b1aa4eb": {"rom_size": 4194304, "rom_crc32": 200399958, "savesize": 0, "savetype": 0}, "f0b8ddf4b3f758c8f056b223d378d38a72484c1e": {"rom_size": 33554432, "rom_crc32": 381739048, "savesize": 8192, "savetype": 2}, "c3ed09ed6236d3da2cced1c4ea5e73b26eb57a48": {"rom_size": 4194304, "rom_crc32": 2430326251, "savesize": 0, "savetype": 0}, "2397b130581da6b805d291386596d08364e4cd77": {"rom_size": 4194304, "rom_crc32": 3502639350, "savesize": 32768, "savetype": 3}, "5b4065003cc21e6552160e2e3f7144c0fb4829ef": {"rom_size": 4194304, "rom_crc32": 1955793686, "savesize": 8192, "savetype": 2}, "9263826346bec31ebb9cf53d1b9aec15f8890d25": {"rom_size": 4194304, "rom_crc32": 2504893414, "savesize": 8192, "savetype": 2}, "864c7ac7326027d5b72dd3acacfeb744fc49e683": {"rom_size": 4194304, "rom_crc32": 2314988373, "savesize": 8192, "savetype": 2}, "60f45d2701aeb1691cbf37e9ca24b8ea01120db0": {"rom_size": 4194304, "rom_crc32": 43048885, "savesize": 8192, "savetype": 2}, "1373ee6fb47eb2007d2ac4bdb015c2db735a50b1": {"rom_size": 4194304, "rom_crc32": 2922015219, "savesize": 8192, "savetype": 2}, "a933a1d6400f34198214d7fdf88b7b3371d3389b": {"rom_size": 4194304, "rom_crc32": 3027086496, "savesize": 8192, "savetype": 2}, "1d84f25eab9873f2386ed236ec09159469c0d455": {"rom_size": 4194304, "rom_crc32": 309766492, "savesize": 8192, "savetype": 2}, "1ef35b260e8ea91dd3680f2edc36c8984772fc57": {"rom_size": 4194304, "rom_crc32": 3145877002, "savesize": 0, "savetype": 0}, "2c9f23d65712d32e7bd851b0fe66f61d6ae8929d": {"rom_size": 4194304, "rom_crc32": 2173652555, "savesize": 0, "savetype": 0}, "82dfb43f827cc93936f31f4da6bb9cc308e06e93": {"rom_size": 4194304, "rom_crc32": 3314156737, "savesize": 0, "savetype": 0}, "5180ebf90614e9a88e3a2945c4bfad615910549c": {"rom_size": 4194304, "rom_crc32": 789154370, "savesize": 0, "savetype": 0}, "331d5c4c7d9d34ad07c0f7c654c8c5af74b3a426": {"rom_size": 4194304, "rom_crc32": 953844222, "savesize": 0, "savetype": 0}, "71c172dfd03b16d584fbb5ea82f6b08736ad2079": {"rom_size": 4194304, "rom_crc32": 1985137957, "savesize": 0, "savetype": 0}, "894b1fab8dd1b7287682bc9d6dd9c8a0ded90981": {"rom_size": 8388608, "rom_crc32": 4194396004, "savesize": 32768, "savetype": 3}, "c498775e8a1c57d82321b0b3470236c09feac32a": {"rom_size": 8388608, "rom_crc32": 267456905, "savesize": 32768, "savetype": 3}, "ee380f89b259bb3c4356ed6cd38c2fd6ccbbfcd5": {"rom_size": 8388608, "rom_crc32": 1775174680, "savesize": 0, "savetype": 0}, "db1a7bd078707b052c651c2f2b870ad3ca997542": {"rom_size": 8388608, "rom_crc32": 293772026, "savesize": 0, "savetype": 0}, "f6df6512c28ec3fb662606dc829cfbe4b5e2020d": {"rom_size": 8388608, "rom_crc32": 3288500108, "savesize": 512, "savetype": 1}, "4522071986cf96b774a53c1d3323ae5e440da7c4": {"rom_size": 8388608, "rom_crc32": 2489950154, "savesize": 32768, "savetype": 3}, "b818d724ecfabd6a259011d59b3695ebf078770a": {"rom_size": 8388608, "rom_crc32": 4126731444, "savesize": 32768, "savetype": 3}, "53b7d5733fcb42a4b69b8695e87dcaa0bab4fcd7": {"rom_size": 8388608, "rom_crc32": 3780670972, "savesize": 32768, "savetype": 3}, "d8a12671ab047e9da6a2ac69da95bad5c3756e34": {"rom_size": 8388608, "rom_crc32": 3017235681, "savesize": 32768, "savetype": 3}, "2c05fcfa592db492ae490e002dfcf88a1099b15f": {"rom_size": 8388608, "rom_crc32": 737563994, "savesize": 32768, "savetype": 3}, "08148e96ba0fde80ed2973ef0c2bcf9aba47de0e": {"rom_size": 8388608, "rom_crc32": 3224817904, "savesize": 32768, "savetype": 3}, "bc6a901e823cfe15b03ee1bf5ebfc8e2bd47f721": {"rom_size": 4194304, "rom_crc32": 2279694171, "savesize": 512, "savetype": 1}, "4b542d83639aa03bd79a664d46c0a5853a0b1df0": {"rom_size": 8388608, "rom_crc32": 233354420, "savesize": 65536, "savetype": 5}, "978c3add8408279427ec8e7dc40589f3be7e499e": {"rom_size": 4194304, "rom_crc32": 3393358458, "savesize": 0, "savetype": 0}, "a01871b5a50ec1d995fbe7de4b71a48c7cdd184b": {"rom_size": 8388608, "rom_crc32": 3927286126, "savesize": 512, "savetype": 1}, "8939e59e81bf83c143c92e958fbfe8fb75fb8318": {"rom_size": 4194304, "rom_crc32": 460033928, "savesize": 512, "savetype": 1}, "aeff9088b942289bc263d739b8e08c720615c4b9": {"rom_size": 4194304, "rom_crc32": 2567408372, "savesize": 512, "savetype": 1}, "7ac732d08ff7f61fdcdd9d7da71cfc11cf61e424": {"rom_size": 8388608, "rom_crc32": 2189435113, "savesize": 512, "savetype": 1}, "4d359c848e0916997a6d3ece327baae798539daf": {"rom_size": 8388608, "rom_crc32": 2584498320, "savesize": 512, "savetype": 1}, "c9ef3cf213910166b0f0503bec0d33bd0f75d5d9": {"rom_size": 8388608, "rom_crc32": 4106277184, "savesize": 512, "savetype": 1}, "c65db6311640c147b8750c327bf4e6afa45235c7": {"rom_size": 8388608, "rom_crc32": 3841872603, "savesize": 8192, "savetype": 2}, "9d46c1e571d911cd1d2f0bbe1187ed74de6441b7": {"rom_size": 8388608, "rom_crc32": 3205674384, "savesize": 8192, "savetype": 2}, "5a7b3e826d91514fb9dbc119876db1ad48cf0e87": {"rom_size": 4194304, "rom_crc32": 726728774, "savesize": 512, "savetype": 1}, "2f1ec7d3d3eedfea092d277bebc57a0659d0b3ca": {"rom_size": 4194304, "rom_crc32": 1385654586, "savesize": 512, "savetype": 1}, "e41c5001f6142d18cfaf1e42d174f34bc3d57605": {"rom_size": 4194304, "rom_crc32": 2356448715, "savesize": 0, "savetype": 0}, "15341d25f215b3cac2f5077755749994803a611f": {"rom_size": 4194304, "rom_crc32": 3769710567, "savesize": 0, "savetype": 0}, "62cfc746adedb26cadc931721c030a5223c1f4e9": {"rom_size": 4194304, "rom_crc32": 3520718101, "savesize": 8192, "savetype": 2}, "9bf653b42c934a91ea6181ea98cb51420c4511da": {"rom_size": 4194304, "rom_crc32": 1327161205, "savesize": 512, "savetype": 1}, "af29d84ebdc7bb58f7642e9a042f3ed40036305d": {"rom_size": 4194304, "rom_crc32": 3718881333, "savesize": 0, "savetype": 0}, "9d0393eedb921b42fc7d7500c0cdf07e562e08e9": {"rom_size": 4194304, "rom_crc32": 4272930162, "savesize": 512, "savetype": 1}, "0e6aea643495363ab73496f038bd12d68a48385f": {"rom_size": 4194304, "rom_crc32": 2830530158, "savesize": 512, "savetype": 1}, "07eb09d1c6ee9af5d01f294847c16a20ceb142fa": {"rom_size": 4194304, "rom_crc32": 3132935933, "savesize": 512, "savetype": 1}, "cd0716e4449c944a6255a3a2c372cd8b56b57d76": {"rom_size": 4194304, "rom_crc32": 1353423798, "savesize": 512, "savetype": 1}, "50d961e0f20a1fe3f6afcd088ea99075151fdcb0": {"rom_size": 4194304, "rom_crc32": 1975738236, "savesize": 0, "savetype": 0}, "a831603d7b6eb2c1218bee8325ac8b9b1af3f150": {"rom_size": 4194304, "rom_crc32": 140251524, "savesize": 8192, "savetype": 2}, "01a0cd5b82d6cf13695f15073b28d5a8a708a355": {"rom_size": 4194304, "rom_crc32": 3242366385, "savesize": 512, "savetype": 1}, "8b9500eb8fd42625de6f0fcd5294078a9e1ed489": {"rom_size": 4194304, "rom_crc32": 3946403014, "savesize": 512, "savetype": 1}, "7a7445cb99cb19ec9dc6e8b17254b8328f6841d8": {"rom_size": 4194304, "rom_crc32": 2256268406, "savesize": 0, "savetype": 0}, "751f9d8707c1e2ab5fd055316ecaec9cff190b6f": {"rom_size": 8388608, "rom_crc32": 453033004, "savesize": 512, "savetype": 1}, "927486d8a7f84e18d2ca35a7519de834e261108a": {"rom_size": 8388608, "rom_crc32": 2523899472, "savesize": 0, "savetype": 0}, "71f122cf276bae1672944dad0e5b5e6fa94cbc72": {"rom_size": 8388608, "rom_crc32": 1382725774, "savesize": 0, "savetype": 0}, "baec9ebda97033aab3d6e2c008756f6adef633f6": {"rom_size": 4194304, "rom_crc32": 4012099486, "savesize": 65536, "savetype": 5}, "8a6abc8d04a4d69fddc3e2dfc1c0aa4b207d69cf": {"rom_size": 4194304, "rom_crc32": 1618861163, "savesize": 0, "savetype": 0}, "12ab0cabd9b359a6d3c8c8aabdefe8413715e9c7": {"rom_size": 4194304, "rom_crc32": 4177970614, "savesize": 0, "savetype": 0}, "88130a5195ea781a06d763fcb303af2477eddeb2": {"rom_size": 8388608, "rom_crc32": 3950806018, "savesize": 512, "savetype": 1}, "e153b51c3088e70327703ab41b8896997f704c21": {"rom_size": 8388608, "rom_crc32": 1751016122, "savesize": 512, "savetype": 1}, "0475b33d453d0f79dadd5f4acd910822a1384539": {"rom_size": 4194304, "rom_crc32": 4006466543, "savesize": 512, "savetype": 1}, "8a9aa423131141d067792d83581fb1a4b9b7ab80": {"rom_size": 8388608, "rom_crc32": 1642232218, "savesize": 8192, "savetype": 2}, "97ef27bc2a6aae821e4ffee5e09e464f394aba4e": {"rom_size": 8388608, "rom_crc32": 3257722174, "savesize": 512, "savetype": 1}, "d43ce5d022c68c4b0f010d99054f5f512e9241d5": {"rom_size": 8388608, "rom_crc32": 691513805, "savesize": 512, "savetype": 1}, "01aa6aa66dbf8da5c633f826cf2a3f74f9f74227": {"rom_size": 8388608, "rom_crc32": 4240797863, "savesize": 0, "savetype": 0}, "a06110d01b789daba42970c1cf785a8b946dc4ea": {"rom_size": 8388608, "rom_crc32": 2536929415, "savesize": 0, "savetype": 0}, "ed403a04c42e19730e544c52d1b8c147f3eec8ab": {"rom_size": 8388608, "rom_crc32": 3573913395, "savesize": 8192, "savetype": 2}, "c073b202e16e702d6cd39f058368afd3e01d4e04": {"rom_size": 4194304, "rom_crc32": 1615026526, "savesize": 512, "savetype": 1}, "4473845e5dded2d35e214977169479888ecef655": {"rom_size": 4194304, "rom_crc32": 117582906, "savesize": 32768, "savetype": 3}, "40c1d34fc0529b564e06a6688188316e69a4f110": {"rom_size": 8388608, "rom_crc32": 2100097697, "savesize": 512, "savetype": 1}, "281b2137b0e6e882fc522ca34c53ad4199be6369": {"rom_size": 16777216, "rom_crc32": 147846241, "savesize": 8192, "savetype": 2}, "eb98ee402edd1d97d293f0ecb109cf0d4c076885": {"rom_size": 8388608, "rom_crc32": 1720880935, "savesize": 8192, "savetype": 2}, "fcdffd97a7e59307eca09ffbddea0474c2e3293f": {"rom_size": 8388608, "rom_crc32": 192396472, "savesize": 8192, "savetype": 2}, "1e8c66646b15a9b84fb93127d0bb8a7438af39d7": {"rom_size": 8388608, "rom_crc32": 98921037, "savesize": 32768, "savetype": 3}, "2f2e14dd05193b623d4686e3ce01f95f8ce94eab": {"rom_size": 8388608, "rom_crc32": 1672123146, "savesize": 8192, "savetype": 2}, "283ca16bc93aa8bcc4ebf89ae8d64fe597b3af90": {"rom_size": 8388608, "rom_crc32": 3038889525, "savesize": 8192, "savetype": 2}, "1b208788f09b15da47c69ea0b899a17d762cb293": {"rom_size": 8388608, "rom_crc32": 1883725183, "savesize": 8192, "savetype": 2}, "709493c363b90f7b4e50114665d44ab7bc9d8bd1": {"rom_size": 8388608, "rom_crc32": 1724028018, "savesize": 8192, "savetype": 2}, "23681eac3a00c4aa335492f52d8910f3488b29dd": {"rom_size": 8388608, "rom_crc32": 1284468700, "savesize": 512, "savetype": 1}, "faab5c2cdf3814edc2a68b468ac2d3e3dd70e044": {"rom_size": 8388608, "rom_crc32": 1370532171, "savesize": 512, "savetype": 1}, "6fce2a1f0d2a6e0c99bca60b40bd86fa9190bc70": {"rom_size": 8388608, "rom_crc32": 3869365682, "savesize": 512, "savetype": 1}, "40ab6fea7e764a46f5142ccbb2c2cbcc61166966": {"rom_size": 4194304, "rom_crc32": 2401803787, "savesize": 0, "savetype": 0}, "035dffc7611e1427eb883fb98d3de940dbfcb6e8": {"rom_size": 16777216, "rom_crc32": 99094220, "savesize": 32768, "savetype": 3}, "b4695343b40aa5049249cbe08b64a3386004c139": {"rom_size": 8388608, "rom_crc32": 3748200944, "savesize": 65536, "savetype": 5}, "7ddef563f53457341be11ac7035ad04254bc9c27": {"rom_size": 4194304, "rom_crc32": 1512217057, "savesize": 8192, "savetype": 2}, "ee148aee990e03bfd5f927ea7ec8c984c540b8fe": {"rom_size": 8388608, "rom_crc32": 2206465242, "savesize": 8192, "savetype": 2}, "41366c0f70ded8bb90f7a2238c845d044e64279e": {"rom_size": 8388608, "rom_crc32": 4058554977, "savesize": 8192, "savetype": 2}, "1af0d3bce0cf8fd9f5a420329d0fa6b3721282f5": {"rom_size": 8388608, "rom_crc32": 951006657, "savesize": 512, "savetype": 1}, "72db225e52546c532ac5930389dacbaa75b4c536": {"rom_size": 8388608, "rom_crc32": 482741287, "savesize": 8192, "savetype": 2}, "28b2d3483990a27baba235630047188bf9f4d658": {"rom_size": 4194304, "rom_crc32": 2007517545, "savesize": 0, "savetype": 0}, "4c8a5bb15f996f99e4c04cd9f6b49d024b8910e8": {"rom_size": 8388608, "rom_crc32": 4220967390, "savesize": 65536, "savetype": 5}, "8c354bed050cc53a46105f89bd194a8fa7c361be": {"rom_size": 16777216, "rom_crc32": 2198567263, "savesize": 65536, "savetype": 5}, "6cbc3a838f133ecdd612afa6b39da0945ffe7209": {"rom_size": 8388608, "rom_crc32": 3338810121, "savesize": 512, "savetype": 1}, "6fe7c1f695df9b37c468bac22e56e4587d5ace1d": {"rom_size": 8388608, "rom_crc32": 1597668279, "savesize": 512, "savetype": 1}, "c6ec47045a03ba282092ebb1a12b43dded9f7e6b": {"rom_size": 8388608, "rom_crc32": 3473868743, "savesize": 512, "savetype": 1}, "9aad7abeebe6390b18b4fdae53eb98101bbf5106": {"rom_size": 8388608, "rom_crc32": 2400915469, "savesize": 512, "savetype": 1}, "dfd2a51c8256efc7b9cac439b2456a702f4dd13f": {"rom_size": 8388608, "rom_crc32": 3117738471, "savesize": 512, "savetype": 1}, "b933f2cb6189dafbcdbf98427139d2c279612e1f": {"rom_size": 8388608, "rom_crc32": 3609481856, "savesize": 0, "savetype": 0}, "4ba5ca7437a70b63c5f5e307c225d62366182d20": {"rom_size": 4194304, "rom_crc32": 522651861, "savesize": 8192, "savetype": 2}, "d06d485633a997ee03dfd70d86de9b6b5b2c89cc": {"rom_size": 4194304, "rom_crc32": 3069999091, "savesize": 8192, "savetype": 2}, "6e315510a948cd3edd4a6ef4c235f67ae70b7aa9": {"rom_size": 4194304, "rom_crc32": 3780611365, "savesize": 0, "savetype": 0}, "245eb63556c2f3b4e829ce5f4e7f79fcb8779dc1": {"rom_size": 4194304, "rom_crc32": 2969426831, "savesize": 0, "savetype": 0}, "11778517c685c8b171eae4ec9c83dc75d3672bcf": {"rom_size": 4194304, "rom_crc32": 1851528948, "savesize": 0, "savetype": 0}, "c5b2554335776b953a54eb46ccfda936d7aa5a8f": {"rom_size": 4194304, "rom_crc32": 1047576397, "savesize": 0, "savetype": 0}, "1f24231f1841536625d30dd0ed284d6cb4e27a03": {"rom_size": 4194304, "rom_crc32": 3662549257, "savesize": 0, "savetype": 0}, "71d9a61089929397fc9b2cd921e8c471eee2b79b": {"rom_size": 8388608, "rom_crc32": 3062596801, "savesize": 512, "savetype": 1}, "f4685cc7a3b452dda831fa04547fbf9fc92be5bb": {"rom_size": 8388608, "rom_crc32": 529695054, "savesize": 512, "savetype": 1}, "1ff8720be8c900750af08735b94111fe0a97e792": {"rom_size": 8388608, "rom_crc32": 2997156984, "savesize": 512, "savetype": 1}, "20e6caa678994d4550516b54d492eb703cf133f5": {"rom_size": 4194304, "rom_crc32": 2757670098, "savesize": 0, "savetype": 0}, "90e53b8e9ec3e89a3309e990aa55eafa00da3a29": {"rom_size": 4194304, "rom_crc32": 2169142579, "savesize": 0, "savetype": 0}, "a3207db4b0a11ac4dd5745df767d93b3e8db37b7": {"rom_size": 8388608, "rom_crc32": 1859076256, "savesize": 8192, "savetype": 2}, "715396766c310bb0799553f224a520adaf891a85": {"rom_size": 4194304, "rom_crc32": 3851265822, "savesize": 8192, "savetype": 2}, "382e5c93572629713cc5807d9c99bc4fdf7988c0": {"rom_size": 8388608, "rom_crc32": 4025359839, "savesize": 8192, "savetype": 2}, "6912387e8dec3044c41231c6c6bbedc5fe241544": {"rom_size": 8388608, "rom_crc32": 2519585281, "savesize": 512, "savetype": 1}, "c6f3e31a9459eee987a6126696457914e3161ee8": {"rom_size": 4194304, "rom_crc32": 2376763849, "savesize": 512, "savetype": 1}, "60ff4fbfe0c13615ea93d6a595772178bef3dc42": {"rom_size": 4194304, "rom_crc32": 2413679755, "savesize": 32768, "savetype": 3}, "5e94e5791d963ab29be447982c3241c07c6eabc2": {"rom_size": 8388608, "rom_crc32": 1281895619, "savesize": 0, "savetype": 0}, "7b4183d01de8e7f5e26cd014a0be22ca5de3858d": {"rom_size": 8388608, "rom_crc32": 3195885388, "savesize": 0, "savetype": 0}, "7805f51f4e781e1f2314c58266c8cd4ec8556ceb": {"rom_size": 8388608, "rom_crc32": 1126039208, "savesize": 0, "savetype": 0}, "ffa92f76c92cf9102ad2e5c57807bf047d0b071b": {"rom_size": 8388608, "rom_crc32": 1286589629, "savesize": 0, "savetype": 0}, "9e2cc0be42b507e11f6b6fad3b36729988427100": {"rom_size": 4194304, "rom_crc32": 2562883210, "savesize": 0, "savetype": 0}, "2d964b423da4315039b2a30ccc8eb70d2ba1d7b9": {"rom_size": 4194304, "rom_crc32": 2328189134, "savesize": 512, "savetype": 1}, "c2d019050b04906056fed0d7681e91669454ab4c": {"rom_size": 8388608, "rom_crc32": 2668513898, "savesize": 32768, "savetype": 3}, "0ef69e50b5ad2171d2ffab003487c66db337d85e": {"rom_size": 8388608, "rom_crc32": 499076413, "savesize": 8192, "savetype": 2}, "870c5376bb193a30b540ae2c06374bd39f11acff": {"rom_size": 8388608, "rom_crc32": 2852309772, "savesize": 8192, "savetype": 2}, "26061d795cf05ae748144c9e934ad0649cbc30bc": {"rom_size": 4194304, "rom_crc32": 1645692575, "savesize": 8192, "savetype": 2}, "fc385b16b8c11620114a3aa19f61eec60e9517be": {"rom_size": 8388608, "rom_crc32": 672775669, "savesize": 8192, "savetype": 2}, "3178749fcbf4aa65b06a8ae64a9eadf1be6214a8": {"rom_size": 4194304, "rom_crc32": 3430200371, "savesize": 8192, "savetype": 2}, "8b10787b64b29f9ee655a3495023cae41ed63fc0": {"rom_size": 8388608, "rom_crc32": 2522059242, "savesize": 512, "savetype": 1}, "f8208c1ba28e5396853f0e044f873b35f82d0d99": {"rom_size": 4194304, "rom_crc32": 3754942572, "savesize": 512, "savetype": 1}, "0bbea2d779933d86e1d259c55bcac03767921492": {"rom_size": 4194304, "rom_crc32": 1598136114, "savesize": 512, "savetype": 1}, "4053f92f24dcfef56d110a99ad265acc3c618d90": {"rom_size": 4194304, "rom_crc32": 3950196499, "savesize": 512, "savetype": 1}, "bda0376553a4c9cfbbd0184fc6c0a438a7c4427e": {"rom_size": 8388608, "rom_crc32": 1302095643, "savesize": 8192, "savetype": 2}, "bdc21f4f499a7019410c77fc8de60ea9a76e7ff9": {"rom_size": 8388608, "rom_crc32": 3852992023, "savesize": 8192, "savetype": 2}, "7e3ead078ee755d16d9bffe897111a6ce3a67ffa": {"rom_size": 8388608, "rom_crc32": 3784958258, "savesize": 512, "savetype": 1}, "6cefc450f19498a5c1979c472b2ebb155fefa410": {"rom_size": 8388608, "rom_crc32": 625897265, "savesize": 8192, "savetype": 2}, "7d4faee54129abff296dbac34057827568ac8de1": {"rom_size": 8388608, "rom_crc32": 4284257846, "savesize": 0, "savetype": 0}, "55d2d77eed35286e82da4b1faf2d456fc87715b3": {"rom_size": 8388608, "rom_crc32": 1385272632, "savesize": 0, "savetype": 0}, "95a8a13197536b2bf4b6781937f98bcb002cfdb5": {"rom_size": 4194304, "rom_crc32": 2158002686, "savesize": 8192, "savetype": 2}, "75fd8c9c4108083a68325366a91edeb63c0682f1": {"rom_size": 8388608, "rom_crc32": 960992105, "savesize": 512, "savetype": 1}, "b6c0e1ba64e1d000074e886051c8f6e8ce0b038f": {"rom_size": 4194304, "rom_crc32": 3165783223, "savesize": 0, "savetype": 0}, "b9435b01c5aa3918e4c28d28b8456c5952debc50": {"rom_size": 8388608, "rom_crc32": 2849865466, "savesize": 512, "savetype": 1}, "3d6affcc033d067eecaece9b04207ec7a30fb540": {"rom_size": 8388608, "rom_crc32": 444529616, "savesize": 512, "savetype": 1}, "4e8ece289b8537adefda0ec5d01caa6528f11fad": {"rom_size": 8388608, "rom_crc32": 168412439, "savesize": 512, "savetype": 1}, "ea25df8a64463274ded5ce6822892dff42c27b1a": {"rom_size": 4194304, "rom_crc32": 1565703710, "savesize": 0, "savetype": 0}, "ec474d2821db81d161448f186eed3cce03fd6632": {"rom_size": 4194304, "rom_crc32": 474824671, "savesize": 0, "savetype": 0}, "3a457d3c334a0d9a6d161c0a59a571eee89b658e": {"rom_size": 8388608, "rom_crc32": 2287581192, "savesize": 0, "savetype": 0}, "c2c202cacf271a8326354aac3a488440787cf197": {"rom_size": 8388608, "rom_crc32": 392340856, "savesize": 0, "savetype": 0}, "78f9809c9277710479a9abf88b373b88458baed6": {"rom_size": 4194304, "rom_crc32": 4286406498, "savesize": 0, "savetype": 0}, "d21a536c0305f7c427b68a0e6b176c83e544e485": {"rom_size": 4194304, "rom_crc32": 2675290231, "savesize": 8192, "savetype": 2}, "7ee2042095955dfa1f1766bb3861f75048884923": {"rom_size": 8388608, "rom_crc32": 3918111918, "savesize": 512, "savetype": 1}, "b14f81238da8ea2e78dd866ef73528001e2874fc": {"rom_size": 8388608, "rom_crc32": 3644346887, "savesize": 32768, "savetype": 3}, "29ce881bc1d1cc9af1b2c981a9cb339ca0817818": {"rom_size": 8388608, "rom_crc32": 4273967173, "savesize": 32768, "savetype": 3}, "34502f2a4b09e7a6ea938582f38ba222e3b53936": {"rom_size": 4194304, "rom_crc32": 471353026, "savesize": 8192, "savetype": 2}, "952c67d928896ebc4dc116f9cc8169df218c8d9b": {"rom_size": 4194304, "rom_crc32": 4089607362, "savesize": 8192, "savetype": 2}, "beefee2970b9a77894b75a056f4d2e7a85e9973d": {"rom_size": 16777216, "rom_crc32": 3517348840, "savesize": 512, "savetype": 1}, "8dcc0715fbd6351a75d127281decdf3cb45e4ce7": {"rom_size": 8388608, "rom_crc32": 771348464, "savesize": 0, "savetype": 0}, "540c2946b314f8f9144f689c041a9b87b2b7a0dd": {"rom_size": 8388608, "rom_crc32": 2400567116, "savesize": 0, "savetype": 0}, "371cfed095b9cbd697f9442781df687d70a3a916": {"rom_size": 8388608, "rom_crc32": 2221884403, "savesize": 512, "savetype": 1}, "04a81900833fa5b6f2855d36b08ae89bba70f292": {"rom_size": 8388608, "rom_crc32": 3697611478, "savesize": 512, "savetype": 1}, "9103d914b906f04a26acda3a8661545b5d3acc83": {"rom_size": 8388608, "rom_crc32": 1544674342, "savesize": 512, "savetype": 1}, "254e909168ba0e3442f87e2dd5c49505d83e0e19": {"rom_size": 4194304, "rom_crc32": 753777457, "savesize": 0, "savetype": 0}, "799b20a5ee529f164ac99e43064a0d4fe6706a81": {"rom_size": 8388608, "rom_crc32": 548875543, "savesize": 512, "savetype": 1}, "a7bde7ed371985ddf01d6e5a6d67e6add2a4b86b": {"rom_size": 4194304, "rom_crc32": 3570891726, "savesize": 0, "savetype": 0}, "5113ecc1a2932d49d2401b820d3b40cbcb5f8516": {"rom_size": 4194304, "rom_crc32": 2602050388, "savesize": 0, "savetype": 0}, "8db0dc6527ea70e1764ad9d5e527700af4a7d4eb": {"rom_size": 4194304, "rom_crc32": 1849134067, "savesize": 0, "savetype": 0}, "ab1bff693ce47633950e14d66842e30ae4fabd28": {"rom_size": 4194304, "rom_crc32": 2700093083, "savesize": 0, "savetype": 0}, "452c3aa5c54dfe4f89aae80efa1335959fe84b9a": {"rom_size": 8388608, "rom_crc32": 831135387, "savesize": 32768, "savetype": 3}, "feaba6b8d1ea2f584b7b522286c1c1e83f7355a4": {"rom_size": 4194304, "rom_crc32": 3130621178, "savesize": 32768, "savetype": 3}, "a6507aa3d158c7547292a077bdc70009fc22329d": {"rom_size": 4194304, "rom_crc32": 3796855317, "savesize": 32768, "savetype": 3}, "b79960cbe835f802a1d5c24dfd8992d531ae7464": {"rom_size": 8388608, "rom_crc32": 3202205311, "savesize": 512, "savetype": 1}, "d13772a2f6364852c2e533d660167ab1979567e6": {"rom_size": 16777216, "rom_crc32": 1216476152, "savesize": 131072, "savetype": 6}, "f5a922fdf81768f73acc848e2a563266f949bf46": {"rom_size": 16777216, "rom_crc32": 3143896567, "savesize": 131072, "savetype": 6}, "e139f8003de78e59ebcab6cc83fd957bb8c56e1e": {"rom_size": 16777216, "rom_crc32": 991975145, "savesize": 131072, "savetype": 6}, "d7afa6e7e8f15df9dc871a65d9b900a2303f064a": {"rom_size": 16777216, "rom_crc32": 2376359962, "savesize": 131072, "savetype": 6}, "d2e246c82af32ecc46ee92813695dc337a27e031": {"rom_size": 16777216, "rom_crc32": 172512619, "savesize": 131072, "savetype": 6}, "ea91c7159643c8b4d1dc7318e7af59605ac61980": {"rom_size": 8388608, "rom_crc32": 3471394586, "savesize": 131072, "savetype": 6}, "d8025d0b015dce3bd949f2cb9ed3ecf7a8045e55": {"rom_size": 8388608, "rom_crc32": 4246662008, "savesize": 131072, "savetype": 6}, "85b5103ec947c18cab67c3648e7475f8f662071f": {"rom_size": 8388608, "rom_crc32": 2751283594, "savesize": 0, "savetype": 0}, "f1f7ba2b4ba6294c275701d81162211933dc1702": {"rom_size": 4194304, "rom_crc32": 129508529, "savesize": 512, "savetype": 1}, "1a5621619bcab0ebb50b976008aaf6fdd1b07514": {"rom_size": 4194304, "rom_crc32": 1403580038, "savesize": 0, "savetype": 0}, "5088143a7a9384defbd0c8cbc2d9498553682a3d": {"rom_size": 8388608, "rom_crc32": 490184140, "savesize": 512, "savetype": 1}, "53fd6e503e21a215588a9a45dd643e5650067b48": {"rom_size": 4194304, "rom_crc32": 617090982, "savesize": 0, "savetype": 0}, "49b6e9afc610caca0726ef37b361df86760b7f0a": {"rom_size": 16777216, "rom_crc32": 3509526493, "savesize": 131072, "savetype": 6}, "665c13faf471b2cae7a61f20d93b477e6eb73c55": {"rom_size": 16777216, "rom_crc32": 2353869064, "savesize": 131072, "savetype": 6}, "7584e1cefe1dd47026cbd38399e9b8260a1eb7bd": {"rom_size": 16777216, "rom_crc32": 2668103246, "savesize": 131072, "savetype": 6}, "371f031b7612c8d296981ff8326d62bf52773f74": {"rom_size": 16777216, "rom_crc32": 3112239093, "savesize": 131072, "savetype": 6}, "9927c4fd32f53c3802b7800c6fdd19bae454c85a": {"rom_size": 16777216, "rom_crc32": 3943115215, "savesize": 131072, "savetype": 6}, "281ed96d5850ca56cf5af43115f9586eb93b0797": {"rom_size": 16777216, "rom_crc32": 748756313, "savesize": 131072, "savetype": 6}, "3230710bb0c3b549e7478aa23bc287fa5aa4d246": {"rom_size": 16777216, "rom_crc32": 4073228593, "savesize": 131072, "savetype": 6}, "e8fefcda0a725f23e1aec144c8aa1a07860c4cfb": {"rom_size": 16777216, "rom_crc32": 2689556235, "savesize": 131072, "savetype": 6}, "e0618bd3b4c0986b7f710226d813f8a0de8a4e78": {"rom_size": 16777216, "rom_crc32": 521931003, "savesize": 131072, "savetype": 6}, "da97b4134145f1bc41245f4be7e56ea7ddb2c9b5": {"rom_size": 16777216, "rom_crc32": 444722911, "savesize": 131072, "savetype": 6}, "62f5e8cf2f83e65df7a5a0e4ab1a84886f2b4838": {"rom_size": 16777216, "rom_crc32": 3716707868, "savesize": 131072, "savetype": 6}, "646d2e75e8e5fcd835bbe62b888595e957b228a4": {"rom_size": 16777216, "rom_crc32": 2230208374, "savesize": 131072, "savetype": 6}, "ad4ce6033af10b253ae57a8aac48bf5fa4f6966f": {"rom_size": 16777216, "rom_crc32": 3600586444, "savesize": 131072, "savetype": 6}, "e8f43d6c5286b626d039621ae3bef5103774329e": {"rom_size": 16777216, "rom_crc32": 3674205420, "savesize": 131072, "savetype": 6}, "7362399e23d685a6fbeaaa989b25fc67b9bd114c": {"rom_size": 16777216, "rom_crc32": 3404239972, "savesize": 131072, "savetype": 6}, "0f0542313b01552f79fe3793c2bed6f8e76f14dc": {"rom_size": 16777216, "rom_crc32": 367125120, "savesize": 131072, "savetype": 6}, "ef59dc2dbbcc1caa4cc50a0155d0491a59d91076": {"rom_size": 16777216, "rom_crc32": 4035010279, "savesize": 131072, "savetype": 6}, "4545c4e0aa9664f38800d881570f2504b7061f20": {"rom_size": 16777216, "rom_crc32": 1633949046, "savesize": 131072, "savetype": 6}, "d8fc86baa6a0da0034ff22d3590ab79596fd866c": {"rom_size": 16777216, "rom_crc32": 2930537446, "savesize": 131072, "savetype": 6}, "aa6d44b020143ea0439b251f6b45b1dfc9aca05e": {"rom_size": 16777216, "rom_crc32": 2965638268, "savesize": 131072, "savetype": 6}, "b1a5c50656fd7f29036d934620515f9ce9e316e0": {"rom_size": 16777216, "rom_crc32": 1875737240, "savesize": 131072, "savetype": 6}, "8155fd52f7b90ef4fe68851aedf95e0dc1d8cfc4": {"rom_size": 16777216, "rom_crc32": 1431170500, "savesize": 131072, "savetype": 6}, "bff91c51da1e93df1661a3e507a8ffd9488b019b": {"rom_size": 16777216, "rom_crc32": 3137264357, "savesize": 131072, "savetype": 6}, "fbd5059e024e18ba4dd8b0b827bdf1b2586ca80c": {"rom_size": 16777216, "rom_crc32": 2630107406, "savesize": 131072, "savetype": 6}, "e3b6f29d1344332b911846e9b0e9f01b6e841340": {"rom_size": 16777216, "rom_crc32": 885645193, "savesize": 131072, "savetype": 6}, "1149712e89c009f49d9e3558f038b536e7c19218": {"rom_size": 16777216, "rom_crc32": 2751319217, "savesize": 131072, "savetype": 6}, "89d09e60724be1e9ea5533a6cf7f204f09b58d25": {"rom_size": 16777216, "rom_crc32": 1573284086, "savesize": 131072, "savetype": 6}, "860734e3ec2510021d85de67ff2f04e52ba8d735": {"rom_size": 16777216, "rom_crc32": 2677546866, "savesize": 131072, "savetype": 6}, "2353cd6cfdb6eb946f97bc1d1da0e24d5e7ea896": {"rom_size": 16777216, "rom_crc32": 1762644752, "savesize": 131072, "savetype": 6}, "266d59f6664a16a9795de36423a748fa4cb019e8": {"rom_size": 16777216, "rom_crc32": 719622470, "savesize": 131072, "savetype": 6}, "af2873d365fe985449c12b2d69523fa21072e732": {"rom_size": 16777216, "rom_crc32": 897687647, "savesize": 131072, "savetype": 6}, "b32f530c91a07028653afe4878880efaed5ca2e7": {"rom_size": 16777216, "rom_crc32": 3123873251, "savesize": 131072, "savetype": 6}, "0074dc0c470e70829df4a519fb91fdbdba63ed9e": {"rom_size": 16777216, "rom_crc32": 1940332903, "savesize": 131072, "savetype": 6}, "31a3bc40967c4274d6593342f7bea1dc203225bc": {"rom_size": 16777216, "rom_crc32": 2466637715, "savesize": 131072, "savetype": 6}, "b7c6ed99b3bae979bb8e3a6f45cd8dd686e2b977": {"rom_size": 16777216, "rom_crc32": 3246535081, "savesize": 131072, "savetype": 6}, "9e7e38766eb5264e0e3a1130653fff5441ca4c33": {"rom_size": 16777216, "rom_crc32": 2695809034, "savesize": 131072, "savetype": 6}, "4f81d3d5e5a2807e0861eaa795b74609599a187d": {"rom_size": 16777216, "rom_crc32": 379012358, "savesize": 131072, "savetype": 6}, "322a018b0bb5060915a3fe2f1472304f7beedba3": {"rom_size": 16777216, "rom_crc32": 1593722003, "savesize": 131072, "savetype": 6}, "f0ec8ae459a004dbd2b7787bd14a4fac1f685a81": {"rom_size": 16777216, "rom_crc32": 209293993, "savesize": 131072, "savetype": 6}, "fb62f31654590827a29c864b3e9b3ec89f202b79": {"rom_size": 33554432, "rom_crc32": 438020688, "savesize": 65536, "savetype": 5}, "7b39c9db54d636058ba85d808aa6db19528572f7": {"rom_size": 33554432, "rom_crc32": 3251736548, "savesize": 131072, "savetype": 6}, "6fa0c5f5b8072a607af212f14e90f9696d001101": {"rom_size": 33554432, "rom_crc32": 3708471404, "savesize": 131072, "savetype": 6}, "3410b936c4bf86261fdcea3bab522dca1d404260": {"rom_size": 16777216, "rom_crc32": 2772091211, "savesize": 0, "savetype": 0}, "306d8525bdb5f602bacc8a9cebee265ad1748f7e": {"rom_size": 8388608, "rom_crc32": 2455393924, "savesize": 0, "savetype": 0}, "75fac738661607b3f4054aa8d708e308436e8f0f": {"rom_size": 8388608, "rom_crc32": 2331110515, "savesize": 0, "savetype": 0}, "c7f9a5a8da1509ff9159ec0e0b60f71b5cb5dbd2": {"rom_size": 8388608, "rom_crc32": 3113395136, "savesize": 0, "savetype": 0}, "b139456e238b470ec412c9f3f2afd20ea50ff97b": {"rom_size": 4194304, "rom_crc32": 1657427488, "savesize": 512, "savetype": 1}, "d1a2a780b04e69121db6d91bcc37521d595c5365": {"rom_size": 4194304, "rom_crc32": 2402151352, "savesize": 65536, "savetype": 5}, "8723e3e1370df22c5ce843d53123f677a4a00a39": {"rom_size": 4194304, "rom_crc32": 47590633, "savesize": 65536, "savetype": 5}, "d7ab7617cc018b8e0c0c595d3d2402be39e04186": {"rom_size": 4194304, "rom_crc32": 333620815, "savesize": 0, "savetype": 0}, "dcb3790c042688f73cca94e44616abbcecd359a8": {"rom_size": 4194304, "rom_crc32": 2790575017, "savesize": 0, "savetype": 0}, "b9e62f8aa516ccf366fc2012d2d282355ae159c7": {"rom_size": 4194304, "rom_crc32": 4045466786, "savesize": 0, "savetype": 0}, "9f4364232a279ebbee82b16900e428aa4c34128b": {"rom_size": 4194304, "rom_crc32": 3051261038, "savesize": 0, "savetype": 0}, "477e5f6378c6121316751fd9c75c954f046fe4bd": {"rom_size": 16777216, "rom_crc32": 3114788365, "savesize": 0, "savetype": 0}, "209452bf2b9f7e47ae29d9d4d08ec9c15cf17838": {"rom_size": 4194304, "rom_crc32": 3489419997, "savesize": 0, "savetype": 0}, "b4c6976236e6d57fe17d5035974591c0d108b9c4": {"rom_size": 4194304, "rom_crc32": 1449980260, "savesize": 0, "savetype": 0}, "4fcb543ed5ccef4ee25bc1c47c8f6451f811f395": {"rom_size": 8388608, "rom_crc32": 1508354892, "savesize": 32768, "savetype": 3}, "bd83a314a05829c5628b388aaa4c0281ce2b1bde": {"rom_size": 8388608, "rom_crc32": 2822779562, "savesize": 32768, "savetype": 3}, "57ea0cdfc0a1e37a531d0083585d8ceaa174320a": {"rom_size": 8388608, "rom_crc32": 3627643284, "savesize": 32768, "savetype": 3}, "f6bd1492a4f7d50ec2582ce80b2385a272485e57": {"rom_size": 8388608, "rom_crc32": 1125439676, "savesize": 32768, "savetype": 3}, "8271f2da23de18b5d40c8fb8ade910404c232b17": {"rom_size": 8388608, "rom_crc32": 2309202631, "savesize": 32768, "savetype": 3}, "2db53ca0b8dca76cf045fca02e9a50106258dcde": {"rom_size": 8388608, "rom_crc32": 817144647, "savesize": 32768, "savetype": 3}, "b7ab3853567181d3dc111567be3d24a8d7f512ed": {"rom_size": 8388608, "rom_crc32": 2526725777, "savesize": 32768, "savetype": 3}, "f93a560556ee449190ec48a1f8228212f1dc4826": {"rom_size": 8388608, "rom_crc32": 3000529709, "savesize": 32768, "savetype": 3}, "f8549d4604b212173e920311a88895cd29c1349d": {"rom_size": 8388608, "rom_crc32": 116455636, "savesize": 32768, "savetype": 3}, "5726a03e2c6c6a5655288c457f142b5e0138eb53": {"rom_size": 8388608, "rom_crc32": 2287023971, "savesize": 32768, "savetype": 3}, "93bc744708784d1792199ec2d9e87d753ae0fb5b": {"rom_size": 8388608, "rom_crc32": 120604639, "savesize": 32768, "savetype": 3}, "1e4367874d6a4c1f099d2d41b85d3cb29b923c65": {"rom_size": 4194304, "rom_crc32": 1095499313, "savesize": 0, "savetype": 0}, "1f39a333e17aa57873c38eb2c410fd982451b148": {"rom_size": 4194304, "rom_crc32": 3155771111, "savesize": 0, "savetype": 0}, "1029662feb42f33e88e22df3909d33809f0fe819": {"rom_size": 4194304, "rom_crc32": 3948206232, "savesize": 0, "savetype": 0}, "70e1059c772545dfe0171cb09063aff1101b4e61": {"rom_size": 4194304, "rom_crc32": 165211486, "savesize": 0, "savetype": 0}, "5bd8fea5cd39b171f69bd663ff07b3a6136d58fe": {"rom_size": 4194304, "rom_crc32": 3899202063, "savesize": 0, "savetype": 0}, "a51c2ad977f3b806577f29f186ea3e6d790f49d0": {"rom_size": 4194304, "rom_crc32": 2470401143, "savesize": 0, "savetype": 0}, "2964073707e726ba5930ecfe358ab74ad2870f1b": {"rom_size": 4194304, "rom_crc32": 1882561333, "savesize": 0, "savetype": 0}, "b55128b2e50a20cc1171bbfd82c4aa4788ca4684": {"rom_size": 4194304, "rom_crc32": 1422072571, "savesize": 0, "savetype": 0}, "e82f4d6d8d20c08a927fae1305574e7b356289af": {"rom_size": 4194304, "rom_crc32": 3701886759, "savesize": 0, "savetype": 0}, "50bc17531da582491347b4ca04b78b1cc67b337c": {"rom_size": 4194304, "rom_crc32": 3411660669, "savesize": 0, "savetype": 0}, "e400e37a78775367e4d3e4a05c10588476935602": {"rom_size": 4194304, "rom_crc32": 2451269346, "savesize": 0, "savetype": 0}, "3deaaf9c8c10b4b0cf83c2ce70aec375c5bedbb9": {"rom_size": 8388608, "rom_crc32": 201250661, "savesize": 512, "savetype": 1}, "c0235ab5099b112101037d2b2140b5667dbe735c": {"rom_size": 8388608, "rom_crc32": 1294119774, "savesize": 512, "savetype": 1}, "43ea5fb388646b778c3f69af0757fca87a2eb649": {"rom_size": 4194304, "rom_crc32": 292737191, "savesize": 512, "savetype": 1}, "a7359f8bffd51f4f86fafd9e32b27afbc95e1375": {"rom_size": 4194304, "rom_crc32": 3753213391, "savesize": 512, "savetype": 1}, "75b4085221a490678564be7a26ef3bc45989c5b9": {"rom_size": 4194304, "rom_crc32": 222007851, "savesize": 0, "savetype": 0}, "0f813194ffc8d44ffb7bbd721bfba79674702abb": {"rom_size": 8388608, "rom_crc32": 3041079204, "savesize": 8192, "savetype": 2}, "9f1f5767030cfd284f797318e07fb06b9e769d98": {"rom_size": 4194304, "rom_crc32": 3397991364, "savesize": 65536, "savetype": 5}, "8fce74ae035e146b48b2591176ef5e933535a495": {"rom_size": 4194304, "rom_crc32": 2841245240, "savesize": 65536, "savetype": 5}, "0cf932e6c14701381ca80d3bd5991fc6f63b10dc": {"rom_size": 4194304, "rom_crc32": 654761970, "savesize": 65536, "savetype": 5}, "7e191f1fc0aa2a274be59d8e8bae111363c8a6bc": {"rom_size": 4194304, "rom_crc32": 990144315, "savesize": 65536, "savetype": 5}, "c50fc7fa7ec0c2ce5963ccc16bef5ff9863a8859": {"rom_size": 16777216, "rom_crc32": 708713101, "savesize": 512, "savetype": 1}, "2b7e03d424f807f3d496b85738014e4f096add8b": {"rom_size": 8388608, "rom_crc32": 4042353534, "savesize": 512, "savetype": 1}, "e8a8e680f6fdc7b50d325ef38a25821d642e032e": {"rom_size": 8388608, "rom_crc32": 1524593382, "savesize": 512, "savetype": 1}, "a80594bf526a48cfe7d27dcc9ff319a65ed7f148": {"rom_size": 8388608, "rom_crc32": 201604006, "savesize": 512, "savetype": 1}, "a161b18396ef860e59e497c4fcb0e809d1a0c7c6": {"rom_size": 4194304, "rom_crc32": 3864426118, "savesize": 0, "savetype": 0}, "00a6c6ad4ec157622be9064383bbe1a5c97f6314": {"rom_size": 4194304, "rom_crc32": 2960963514, "savesize": 0, "savetype": 0}, "70f99773556299711e2826eaebc2b540cf05bddc": {"rom_size": 4194304, "rom_crc32": 1982063642, "savesize": 512, "savetype": 1}, "465bb0163eae0afeb8e8c8b9fc41d1bb176b97ef": {"rom_size": 4194304, "rom_crc32": 3839471189, "savesize": 8192, "savetype": 2}, "53b14be4fd077ab66c78fbc6f70d29e389d5b9a9": {"rom_size": 4194304, "rom_crc32": 4145485089, "savesize": 512, "savetype": 1}, "1e84cb39a7e0b77236cb9856dfaa51d7bcc0bc6f": {"rom_size": 8388608, "rom_crc32": 2829298315, "savesize": 32768, "savetype": 3}, "eebae1a64d5209ca5c7a354055600bf834ab70c6": {"rom_size": 8388608, "rom_crc32": 3375095406, "savesize": 512, "savetype": 1}, "1ac9ec3aac8fedab3a4fce2921d0565e39cb7a29": {"rom_size": 4194304, "rom_crc32": 2445591348, "savesize": 8192, "savetype": 2}, "cb5b89c11d3a83f70f3dd984f1417d31bb968d92": {"rom_size": 4194304, "rom_crc32": 3045059642, "savesize": 8192, "savetype": 2}, "3d1a4fb801c0296fefb91b535136d5c87f8f7916": {"rom_size": 8388608, "rom_crc32": 3918330307, "savesize": 8192, "savetype": 2}, "adf9cf48ffff69ede6a325324e2857d78a4901e1": {"rom_size": 8388608, "rom_crc32": 1045213724, "savesize": 0, "savetype": 0}, "95262ccc25bc9e1c5844ade53fbca7d8e794248d": {"rom_size": 8388608, "rom_crc32": 1410034881, "savesize": 0, "savetype": 0}, "aa8f5fec548737d774b75fdd60d65a39f02feefb": {"rom_size": 4194304, "rom_crc32": 68447702, "savesize": 512, "savetype": 1}, "d37a00ad3b73bff7f9f1ec39714740a8b5d39712": {"rom_size": 8388608, "rom_crc32": 3361596686, "savesize": 512, "savetype": 1}, "afa5bff2b5bdcfcd06eb9946ae02cd26360fa8c0": {"rom_size": 8388608, "rom_crc32": 151109193, "savesize": 512, "savetype": 1}, "13bf21122619ba70705f0dc6dc3336213fdde30b": {"rom_size": 8388608, "rom_crc32": 1851293933, "savesize": 512, "savetype": 1}, "4b701172a4670718ad2b62cd4377a06681f0de58": {"rom_size": 8388608, "rom_crc32": 1073570330, "savesize": 512, "savetype": 1}, "7c2fa5f4a4ac964bc634b4a64e284cdd28e2a71e": {"rom_size": 8388608, "rom_crc32": 2301972923, "savesize": 8192, "savetype": 2}, "6928d45ab2c7fc84302cd2775a493e2a48221fe7": {"rom_size": 8388608, "rom_crc32": 526892342, "savesize": 32768, "savetype": 3}, "abeffbc7708b0bc2434ace0e60433a853627aacb": {"rom_size": 4194304, "rom_crc32": 2512279270, "savesize": 0, "savetype": 0}, "d1ee77407d181aada9019b35379daba887818452": {"rom_size": 4194304, "rom_crc32": 2402532671, "savesize": 0, "savetype": 0}, "a20666fc429ca4a3b5cdf8cfde27f91e36c85783": {"rom_size": 4194304, "rom_crc32": 1129401668, "savesize": 0, "savetype": 0}, "a6a792b8969406f5c567c4df20132038c0b853b7": {"rom_size": 8388608, "rom_crc32": 2418512255, "savesize": 32768, "savetype": 3}, "125fa382993f59b0c122d7763403161a84030a8d": {"rom_size": 4194304, "rom_crc32": 1102806922, "savesize": 0, "savetype": 0}, "f1638b63e0216b4b518ae7c26aa9ce7b23e6c29a": {"rom_size": 4194304, "rom_crc32": 3934666573, "savesize": 0, "savetype": 0}, "b92f645c5bf13b3e57ba7306a298db6650646d7e": {"rom_size": 4194304, "rom_crc32": 3826173751, "savesize": 0, "savetype": 0}, "3e55de58e4812b0d67427c575fcb71053c2fd64e": {"rom_size": 4194304, "rom_crc32": 1331814107, "savesize": 0, "savetype": 0}, "becd252c4dacc894e4392823c3198ca8029a46b6": {"rom_size": 8388608, "rom_crc32": 1235783250, "savesize": 512, "savetype": 1}, "1f1999325eab2ddc829b1cc385789709725b7e81": {"rom_size": 8388608, "rom_crc32": 3211038300, "savesize": 512, "savetype": 1}, "3bb4a0ae8a8954fc65839d0e72b0894e6ff4e347": {"rom_size": 4194304, "rom_crc32": 2395613967, "savesize": 0, "savetype": 0}, "7f5f4aff13479696e8e53898c3342934b64a15b9": {"rom_size": 4194304, "rom_crc32": 2521643431, "savesize": 512, "savetype": 1}, "9aedfe92bd6bbd5c66e858d347c2b90f5cb4aea5": {"rom_size": 8388608, "rom_crc32": 2197407126, "savesize": 0, "savetype": 0}, "e6c54123d01596dfec0cc00313ae45cae109546f": {"rom_size": 8388608, "rom_crc32": 2055255317, "savesize": 0, "savetype": 0}, "18b27628585986e7e15f69ab725a2364b099abef": {"rom_size": 8388608, "rom_crc32": 1548272482, "savesize": 0, "savetype": 0}, "c69287c1dd53316494c211ae9298767f7eb9d269": {"rom_size": 8388608, "rom_crc32": 2855188102, "savesize": 0, "savetype": 0}, "2e43c8865853100e82d9ecb8dc7644b53867da90": {"rom_size": 8388608, "rom_crc32": 3281753112, "savesize": 32768, "savetype": 3}, "872381ed6c95f1318eaa7f5a61a95d6140ca9ab1": {"rom_size": 16777216, "rom_crc32": 1132369337, "savesize": 8192, "savetype": 2}, "6fb671bc433f39d5e88bf8cc67630d5dfd11dfdb": {"rom_size": 16777216, "rom_crc32": 2926751982, "savesize": 8192, "savetype": 2}, "ee8c5fdd91e04c3402cd93c94873db552cf6ff11": {"rom_size": 8388608, "rom_crc32": 39491992, "savesize": 512, "savetype": 1}, "789ef560e04755d0f5a6ef7d3920895af64266d1": {"rom_size": 8388608, "rom_crc32": 3256992793, "savesize": 512, "savetype": 1}, "05c120ea1d956ba72e1d0dd0cfb2a110b140e84b": {"rom_size": 16777216, "rom_crc32": 2568280611, "savesize": 512, "savetype": 1}, "5c81e4b2bbd2cd506f5f710a1fb7c5eee3d6cb98": {"rom_size": 16777216, "rom_crc32": 1964962002, "savesize": 512, "savetype": 1}, "9299f4ef1cc55926fe495fbc0ad6490905863b17": {"rom_size": 8388608, "rom_crc32": 704131860, "savesize": 512, "savetype": 1}, "1420f0a10a4d858f2ca538832dcc404b6e8fe41b": {"rom_size": 8388608, "rom_crc32": 3512808038, "savesize": 512, "savetype": 1}, "483215e623cc284e16db8ec7dff5e75f3e8af18d": {"rom_size": 8388608, "rom_crc32": 3023537076, "savesize": 512, "savetype": 1}, "cac5ec81416df524c97c337c50f127efe6e3abbf": {"rom_size": 8388608, "rom_crc32": 2327468728, "savesize": 512, "savetype": 1}, "d99e736fb559301a8deb79ffe4bbf9a9a468a1a1": {"rom_size": 4194304, "rom_crc32": 2708059061, "savesize": 512, "savetype": 1}, "181df721cb8ac8f498898a6f7338eda3c006d242": {"rom_size": 4194304, "rom_crc32": 1913356274, "savesize": 0, "savetype": 0}, "e1a000e175b074cfee33e31dab87025daf6189df": {"rom_size": 4194304, "rom_crc32": 1093728208, "savesize": 0, "savetype": 0}, "41af94556e00394767e22c0381677a469cda55d9": {"rom_size": 4194304, "rom_crc32": 2157580346, "savesize": 0, "savetype": 0}, "c8c44ff096e452b935f0c641f6a43c1dfcd01e3f": {"rom_size": 4194304, "rom_crc32": 4293100593, "savesize": 0, "savetype": 0}, "e7dcf1e7aa68329d7d0b317b0ac43cf0adf6c32a": {"rom_size": 4194304, "rom_crc32": 3826837858, "savesize": 0, "savetype": 0}, "78e1c2c7e12174147e571c43a78b7dd63e322668": {"rom_size": 4194304, "rom_crc32": 1576846821, "savesize": 0, "savetype": 0}, "4ec24c44ff6187d9d150ff7393804250dec6ea79": {"rom_size": 4194304, "rom_crc32": 3829974484, "savesize": 8192, "savetype": 2}, "d33eacb705f9b47b706c9e8900cbf4563931d3c2": {"rom_size": 4194304, "rom_crc32": 4218181903, "savesize": 8192, "savetype": 2}, "8cf02cbf72ebcf4643d99fafbb7521bace5fbea4": {"rom_size": 8388608, "rom_crc32": 2996563508, "savesize": 32768, "savetype": 3}, "10e555f63c2488f5006b0b7fdd6e261a9916e2b6": {"rom_size": 8388608, "rom_crc32": 2044196028, "savesize": 0, "savetype": 0}, "27aa31ee5d1cce5d9723c5c81daf4f0543142065": {"rom_size": 8388608, "rom_crc32": 3029306711, "savesize": 0, "savetype": 0}, "03cc8bee12129348caf63b3b36f0dcd57d7abf4b": {"rom_size": 4194304, "rom_crc32": 2670931991, "savesize": 512, "savetype": 1}, "0b1576374bfbc680ab5f2238f19a3c74a46e3673": {"rom_size": 4194304, "rom_crc32": 2165384732, "savesize": 0, "savetype": 0}, "f45840dcd23dbbb5f37e152b65ff9c57f9d5da10": {"rom_size": 8388608, "rom_crc32": 3719580010, "savesize": 0, "savetype": 0}, "dcee5589f01c9417ad26b4b2a99f62ef6620d844": {"rom_size": 8388608, "rom_crc32": 3912471300, "savesize": 0, "savetype": 0}, "cccdbd3ad4d7d752cb140a0775719dfc04dbb569": {"rom_size": 4194304, "rom_crc32": 1366091632, "savesize": 0, "savetype": 0}, "5fee78113e3e3d43d5620ca9ae3ae184fce1c64b": {"rom_size": 16777216, "rom_crc32": 2798487777, "savesize": 0, "savetype": 0}, "5a0ec98ad55771ed99398ba3a3c83e55fc31814d": {"rom_size": 16777216, "rom_crc32": 882733093, "savesize": 0, "savetype": 0}, "c3dee15f3e3f6fbb4c9ef6e5f216f4d953bb49cb": {"rom_size": 4194304, "rom_crc32": 2555428641, "savesize": 0, "savetype": 0}, "fa0dd5e3eb46a95c88ee2d573943ec82c289a289": {"rom_size": 4194304, "rom_crc32": 2256946030, "savesize": 8192, "savetype": 2}, "9314f6eb84bde2b0b1e50087fbca5261f154a0f1": {"rom_size": 33554432, "rom_crc32": 1337365901, "savesize": 0, "savetype": 0}, "4f288e97b5940e74991ae7c085cdd3213e4675a1": {"rom_size": 16777216, "rom_crc32": 341874674, "savesize": 0, "savetype": 0}, "a56246b97419eafcb83c925643568e31c82e5983": {"rom_size": 16777216, "rom_crc32": 4147872783, "savesize": 0, "savetype": 0}, "353ac27fa6c94820986f473608e496c1e99d6bbf": {"rom_size": 4194304, "rom_crc32": 4100535384, "savesize": 0, "savetype": 0}, "906da3585476cc34862355cd81df77f761c66557": {"rom_size": 4194304, "rom_crc32": 2285154201, "savesize": 0, "savetype": 0}, "b875712cce86900565e1862b495bea29b7890df9": {"rom_size": 8388608, "rom_crc32": 1758659130, "savesize": 65536, "savetype": 5}, "a58122e23085b7d1b5be8f5637c211a9c3ac1297": {"rom_size": 8388608, "rom_crc32": 3396591994, "savesize": 65536, "savetype": 5}, "8f0f3cc537c2334b517a037d450699873edff129": {"rom_size": 8388608, "rom_crc32": 208612123, "savesize": 65536, "savetype": 5}, "09afe0c6126c28ff6f30820f6e93e62a1a6e10ab": {"rom_size": 8388608, "rom_crc32": 1610749340, "savesize": 65536, "savetype": 5}, "32b1ab0a45d87cf45ead7b0b270e13272bec80d5": {"rom_size": 4194304, "rom_crc32": 3481416126, "savesize": 512, "savetype": 1}, "0cf700d803559bd2b67052463512ecd2a4efff27": {"rom_size": 4194304, "rom_crc32": 3872085629, "savesize": 512, "savetype": 1}, "d0f7032abcc62a22c97ede82e262367de1c0b1ce": {"rom_size": 4194304, "rom_crc32": 1592383173, "savesize": 512, "savetype": 1}, "0a2b405244f2fb200aff2052af6bf14a2f9744c9": {"rom_size": 8388608, "rom_crc32": 844785046, "savesize": 512, "savetype": 1}, "8fb1f4a6e202265a91b08327d072efc9a7de520b": {"rom_size": 16777216, "rom_crc32": 718003044, "savesize": 512, "savetype": 1}, "d9a155d5d9246a3611d4f4019c4421683ac99b20": {"rom_size": 16777216, "rom_crc32": 468426385, "savesize": 512, "savetype": 1}, "28bd1fb67344cd44a833fd170b4a3da68941a034": {"rom_size": 16777216, "rom_crc32": 1399893535, "savesize": 512, "savetype": 1}, "bc461407e2d1f83250020b15abdac9471e7b0368": {"rom_size": 4194304, "rom_crc32": 1406247234, "savesize": 512, "savetype": 1}, "0ec1858fcd7a28ac4b259e85f1616907647167f0": {"rom_size": 4194304, "rom_crc32": 368237846, "savesize": 512, "savetype": 1}, "6e2918841ebf696a5a34562618c6728afd660e33": {"rom_size": 4194304, "rom_crc32": 1792469330, "savesize": 0, "savetype": 0}, "a757335090517d1cefd7d5d3165b2f033db3a9a8": {"rom_size": 4194304, "rom_crc32": 3364449378, "savesize": 0, "savetype": 0}, "cac8fdad06d45459a6891085ac33bd5fb0832d6a": {"rom_size": 4194304, "rom_crc32": 325670505, "savesize": 0, "savetype": 0}, "44c24f1ad45dac2688fa5e5017c110c3ee392106": {"rom_size": 4194304, "rom_crc32": 2476088498, "savesize": 0, "savetype": 0}, "f13beba6da2861d0126ceb88182fcbf56a9122eb": {"rom_size": 4194304, "rom_crc32": 397981574, "savesize": 0, "savetype": 0}, "cd5f942a698ab7ae9208a1e50d4729ff9eeb55fd": {"rom_size": 8388608, "rom_crc32": 651570482, "savesize": 0, "savetype": 0}, "9b20dc11d5e9ed1f81ab672f96040a656a996df1": {"rom_size": 8388608, "rom_crc32": 3458943172, "savesize": 8192, "savetype": 2}, "b3fee17d0a0993fe2826c5f93da8fc80d5c50c43": {"rom_size": 8388608, "rom_crc32": 3984350032, "savesize": 32768, "savetype": 3}, "c17da1e13993b286d879748866298923af714043": {"rom_size": 8388608, "rom_crc32": 3473836805, "savesize": 32768, "savetype": 3}, "afd009b671f7f817f4d7403fe28f7226018260a0": {"rom_size": 8388608, "rom_crc32": 1783730301, "savesize": 32768, "savetype": 3}, "03003b86b277e958a6033f4fa82b2b533e0df402": {"rom_size": 8388608, "rom_crc32": 2789629979, "savesize": 65536, "savetype": 5}, "2f6c13a0ac611560507b827abc28dd9005936cc0": {"rom_size": 8388608, "rom_crc32": 3342803904, "savesize": 32768, "savetype": 3}, "4f20715ed156456271a67a05649d66605aadbedd": {"rom_size": 8388608, "rom_crc32": 377759285, "savesize": 32768, "savetype": 3}, "d375502e6c9e64a2172e81922394f7fe92a400ef": {"rom_size": 8388608, "rom_crc32": 771448894, "savesize": 32768, "savetype": 3}, "cbc0f0a0ec8493098ee8abe355a85319e3c20654": {"rom_size": 8388608, "rom_crc32": 1652920714, "savesize": 32768, "savetype": 3}, "66f8c7d770cafdb0131177f9602f3ad4876e86fb": {"rom_size": 8388608, "rom_crc32": 2451045144, "savesize": 32768, "savetype": 3}, "c5fbd333864b3d0e14a814240f817c5da654dafa": {"rom_size": 8388608, "rom_crc32": 4280969137, "savesize": 32768, "savetype": 3}, "acad7dcd9d84614523b68586afd94af4df6dfd92": {"rom_size": 8388608, "rom_crc32": 2606533196, "savesize": 32768, "savetype": 3}, "cc7e0f53f64c20df5be2923c0625421d88de367f": {"rom_size": 8388608, "rom_crc32": 1512849833, "savesize": 32768, "savetype": 3}, "78d1aad4c21f7ceef05cc6df6bd63fbc4b287837": {"rom_size": 16777216, "rom_crc32": 3974376718, "savesize": 8192, "savetype": 2}, "f11cb11b8e3f463248b528b548c60f879e0b116d": {"rom_size": 8388608, "rom_crc32": 3538247605, "savesize": 512, "savetype": 1}, "6cba7154a5c2f3adcfaec5d8a875db55f07cb2bf": {"rom_size": 8388608, "rom_crc32": 3371499291, "savesize": 512, "savetype": 1}, "17743646ebc6973ba7c714805de2dc2f05430801": {"rom_size": 8388608, "rom_crc32": 3892085200, "savesize": 65536, "savetype": 5}, "7b922bdc8492f805fe4295e6e78b9e6cb27b0dff": {"rom_size": 4194304, "rom_crc32": 2326517866, "savesize": 0, "savetype": 0}, "f0986faf2597cc1021743114d11e3331e3565ece": {"rom_size": 4194304, "rom_crc32": 1386427253, "savesize": 0, "savetype": 0}, "9fc1fd3db129ff94d408c17801a1cff7edff44a3": {"rom_size": 4194304, "rom_crc32": 3742792989, "savesize": 0, "savetype": 0}, "5e07be0b47dfdd748fceed16a2f5589c7a50efc0": {"rom_size": 4194304, "rom_crc32": 197834704, "savesize": 0, "savetype": 0}, "f68b0c4fd5779bc219017de2975f4eda4b82b258": {"rom_size": 8388608, "rom_crc32": 2654907277, "savesize": 8192, "savetype": 2}, "ace5baa43705871cb783525d8ea968752f6bfa95": {"rom_size": 8388608, "rom_crc32": 1937275414, "savesize": 8192, "savetype": 2}, "e6969e2b995cc74fd5d68598b600d99caa51ca31": {"rom_size": 4194304, "rom_crc32": 3400016475, "savesize": 0, "savetype": 0}, "d252127e15cb535ca96b9c3fec9665b1bd5eb006": {"rom_size": 4194304, "rom_crc32": 2745097519, "savesize": 0, "savetype": 0}, "3af0a3e5f012f7d3b174322564ff431c480783f3": {"rom_size": 4194304, "rom_crc32": 45742125, "savesize": 32768, "savetype": 3}, "256d9ff166909c1a1a148f7c0d21424e62674166": {"rom_size": 8388608, "rom_crc32": 2963756432, "savesize": 32768, "savetype": 3}, "44ee1c232bb0d30e849dc35661e33cc5a187bb4b": {"rom_size": 4194304, "rom_crc32": 1753443833, "savesize": 512, "savetype": 1}, "16a45afb063ce0288e055c4d45b789983fb00f01": {"rom_size": 4194304, "rom_crc32": 1174610010, "savesize": 512, "savetype": 1}, "4b5e58bdda76ffc76631a908c2180bdc0d4cf182": {"rom_size": 8388608, "rom_crc32": 2811785982, "savesize": 8192, "savetype": 2}, "b8b7b8326a9ece9f304d28c322195736d53c817b": {"rom_size": 8388608, "rom_crc32": 3010988623, "savesize": 8192, "savetype": 2}, "d57b47ada267de14b2d547c0e13c696346b16f05": {"rom_size": 8388608, "rom_crc32": 1745316706, "savesize": 8192, "savetype": 2}, "7ccad146d8291599b98a23414031c443629c04fc": {"rom_size": 8388608, "rom_crc32": 1458230391, "savesize": 512, "savetype": 1}, "eaef5ebd8a34a894def260258ca405fd1811d954": {"rom_size": 8388608, "rom_crc32": 1253463160, "savesize": 512, "savetype": 1}, "56cf5ded79ac8239cf839810889dcb76e53aaa1b": {"rom_size": 4194304, "rom_crc32": 3237301349, "savesize": 0, "savetype": 0}, "9d0f3e9864f843a1978d97575e4b04b88a62913a": {"rom_size": 8388608, "rom_crc32": 2991601260, "savesize": 512, "savetype": 1}, "5c52fb8a65f8cbf3cf44e6283794e9a0056565ba": {"rom_size": 8388608, "rom_crc32": 4090741305, "savesize": 65536, "savetype": 5}, "acb06d19af1ac57fe4bcf418b76921aff64390f9": {"rom_size": 4194304, "rom_crc32": 2762066262, "savesize": 65536, "savetype": 5}, "1cac3488a1b9b21a60c426d95a252fd40676ce10": {"rom_size": 8388608, "rom_crc32": 1984971775, "savesize": 65536, "savetype": 5}, "e96a28cb18b8ae0adaa3d492182fcfa54770502b": {"rom_size": 4194304, "rom_crc32": 1381481874, "savesize": 8192, "savetype": 2}, "a7452cb50a37b3a8cef5d74d7ad8db207adb3635": {"rom_size": 4194304, "rom_crc32": 4265502569, "savesize": 512, "savetype": 1}, "0c65ecdbcd3c840a67e854ebbf179a8b16aaa160": {"rom_size": 4194304, "rom_crc32": 1239421608, "savesize": 0, "savetype": 0}, "f5bbb0f1b911e19734375477fc724b3ab815fd3b": {"rom_size": 8388608, "rom_crc32": 543765493, "savesize": 512, "savetype": 1}, "da38446cfbca6b1a8346f9896d4f41f115c50a40": {"rom_size": 8388608, "rom_crc32": 3707625463, "savesize": 0, "savetype": 0}, "a04a5bc09d0372322e60acbd8f8c34ae394247b0": {"rom_size": 4194304, "rom_crc32": 3853274041, "savesize": 512, "savetype": 1}, "138fa1dc84566d5ebceb54472fe0296f49444606": {"rom_size": 4194304, "rom_crc32": 3471818808, "savesize": 512, "savetype": 1}, "88c9b2a47bf1fed9432f63983a8f776f6983b651": {"rom_size": 4194304, "rom_crc32": 60846737, "savesize": 512, "savetype": 1}, "99c6e3043896d5fda0c19f16a038ad5b144096a8": {"rom_size": 4194304, "rom_crc32": 3844479302, "savesize": 512, "savetype": 1}, "b8b2b0e5b9891b17d06607c23097e5b33d53c7d8": {"rom_size": 4194304, "rom_crc32": 584684486, "savesize": 512, "savetype": 1}, "98c0cf37bcff301676feb46a211ba08e712ae642": {"rom_size": 8388608, "rom_crc32": 2077930191, "savesize": 0, "savetype": 0}, "dbcd6e787d32ddfd41328dccbd379247e6e0c136": {"rom_size": 8388608, "rom_crc32": 2683313629, "savesize": 0, "savetype": 0}, "ffab6603641317e15ff171279f2dc759f246a137": {"rom_size": 4194304, "rom_crc32": 2332064203, "savesize": 0, "savetype": 0}, "0fac132f032d4b784453983be8426b84d7477b73": {"rom_size": 4194304, "rom_crc32": 3475880599, "savesize": 0, "savetype": 0}, "17bae6a0c20ea9cb9d7c6bb0237b9c9a8734f736": {"rom_size": 4194304, "rom_crc32": 1397270101, "savesize": 512, "savetype": 1}, "30064641d714fcfec37bd901a60ee5835c526317": {"rom_size": 4194304, "rom_crc32": 1027119634, "savesize": 512, "savetype": 1}, "58a0e4d851507a9ac3399c8d716c23346498b74f": {"rom_size": 8388608, "rom_crc32": 3525018436, "savesize": 0, "savetype": 0}, "cb6b9fe92af6c688380825306e93ce05b6fd1c0d": {"rom_size": 8388608, "rom_crc32": 2940401935, "savesize": 0, "savetype": 0}, "0122f021acd322cf9297e9bf3ea0546b2c664715": {"rom_size": 8388608, "rom_crc32": 2529023681, "savesize": 0, "savetype": 0}, "8c1ca8234ae54612087a3f855c5f1bb3f3af25cb": {"rom_size": 4194304, "rom_crc32": 3577810226, "savesize": 0, "savetype": 0}, "e04d51b2d9db60da27cd02e9ea888fdecca422e0": {"rom_size": 4194304, "rom_crc32": 1846183301, "savesize": 0, "savetype": 0}, "1fedc4665a51141ff1e52d1c0fe37da32ecce202": {"rom_size": 8388608, "rom_crc32": 3318330139, "savesize": 32768, "savetype": 3}, "247f1b340eb481d911f797e4b33ee46a3eb0de25": {"rom_size": 4194304, "rom_crc32": 1563533817, "savesize": 0, "savetype": 0}, "07a776c49bac6f8bb248542d5c9b1025dc728bbe": {"rom_size": 4194304, "rom_crc32": 3907726906, "savesize": 0, "savetype": 0}, "b36f2f914dc0dc7f7efb4a175cd40618cf816932": {"rom_size": 4194304, "rom_crc32": 248902517, "savesize": 0, "savetype": 0}, "bc7e6cfdb65e1abb66bc5eaa881c2416e49de959": {"rom_size": 8388608, "rom_crc32": 2977247982, "savesize": 32768, "savetype": 3}, "17187d805d75f3cdb952b586f707e2840fdefb70": {"rom_size": 16777216, "rom_crc32": 739350403, "savesize": 512, "savetype": 1}, "ec1c5e83d8359679daf25987f33b207d756b6ee2": {"rom_size": 16777216, "rom_crc32": 451119808, "savesize": 512, "savetype": 1}, "f0b7eacafb9a96f31e1ffc1ef9bf922dabd82793": {"rom_size": 8388608, "rom_crc32": 2202104952, "savesize": 512, "savetype": 1}, "eafe6d24c4e5bf07a6fb7f30d217433157e49847": {"rom_size": 8388608, "rom_crc32": 1756500617, "savesize": 512, "savetype": 1}, "2a6986d4ab90d9ea58d6455ebdd5450c3fd93f03": {"rom_size": 16777216, "rom_crc32": 2108629340, "savesize": 8192, "savetype": 2}, "b1083e1e26d6f169bc33394ab36231ea3dc7cba7": {"rom_size": 4194304, "rom_crc32": 1972889793, "savesize": 8192, "savetype": 2}, "71cc9987b13d58ccb968c7123b811300ea78a26f": {"rom_size": 4194304, "rom_crc32": 3660657603, "savesize": 0, "savetype": 0}, "96c491a8ec33ef17140809ce54b47cdba660229f": {"rom_size": 4194304, "rom_crc32": 1627984864, "savesize": 0, "savetype": 0}, "ce34ac4c6a387870461c0c23456e6ef5ff4c6c44": {"rom_size": 8388608, "rom_crc32": 4179706048, "savesize": 0, "savetype": 0}, "07527487eca0b47ed5196a3672429b67f997f402": {"rom_size": 8388608, "rom_crc32": 999292404, "savesize": 0, "savetype": 0}, "ffe12d6c747cfecb097c893a8c30c39e3b732cc0": {"rom_size": 8388608, "rom_crc32": 3508905659, "savesize": 0, "savetype": 0}, "6c29b359247107d6edfd5e543390ec3aab612f0a": {"rom_size": 8388608, "rom_crc32": 3850114807, "savesize": 0, "savetype": 0}, "01f425bd4434b95099c590fbf985ceca26095d4b": {"rom_size": 8388608, "rom_crc32": 451144470, "savesize": 0, "savetype": 0}, "09e7faa24572e78bb0cbc0b639718f93c5e92b3d": {"rom_size": 8388608, "rom_crc32": 154210284, "savesize": 0, "savetype": 0}, "fd192438b6c040ad102c7941c6351317babb3303": {"rom_size": 8388608, "rom_crc32": 1546557370, "savesize": 0, "savetype": 0}, "ef3b6a5136c82318d9ffc8c7774b8f7ec5970036": {"rom_size": 8388608, "rom_crc32": 1037197271, "savesize": 32768, "savetype": 3}, "8bceaf3762bf70dac2f2c5f30d4492c7537e3dcb": {"rom_size": 16777216, "rom_crc32": 3702186101, "savesize": 131072, "savetype": 6}, "0c9f1a9ba635c3ca68a2ec52e7465a630ab893df": {"rom_size": 16777216, "rom_crc32": 2734069612, "savesize": 131072, "savetype": 6}, "fc8c25cce5ec65d50df16c7befc60e799496a852": {"rom_size": 8388608, "rom_crc32": 1500273996, "savesize": 32768, "savetype": 3}, "cacf290dad85159d6bd01b8e3036f8372c847fd4": {"rom_size": 8388608, "rom_crc32": 1478070834, "savesize": 0, "savetype": 0}, "40b2555b1078457bf6136dd4021763b64aa0e087": {"rom_size": 8388608, "rom_crc32": 4260687015, "savesize": 0, "savetype": 0}, "dbcdd4288973938335c9e8b824a32977c9a5db5c": {"rom_size": 16777216, "rom_crc32": 2038797221, "savesize": 0, "savetype": 0}, "9415abfb62e0eadbb30f63124f3ddbcd48697088": {"rom_size": 16777216, "rom_crc32": 4196049910, "savesize": 0, "savetype": 0}, "bcf7c1f2d4e23a6ed101a894da5540b6c6381b0b": {"rom_size": 16777216, "rom_crc32": 1214560376, "savesize": 32768, "savetype": 3}, "09f2099ef12e9ce890c2fe940656b77d7302e4ba": {"rom_size": 16777216, "rom_crc32": 283464878, "savesize": 32768, "savetype": 3}, "d88f8401ecad6193633d68683eefdbdab4a9fa67": {"rom_size": 16777216, "rom_crc32": 1249173560, "savesize": 32768, "savetype": 3}, "f7e9b860a31c53f429ee7ed817a6160b3ce8bbb2": {"rom_size": 16777216, "rom_crc32": 538850322, "savesize": 32768, "savetype": 3}, "fca64800e2c17982f2f6b698bbc42b823aadbc6e": {"rom_size": 8388608, "rom_crc32": 3415881994, "savesize": 32768, "savetype": 3}, "6d8eb611c3a92225e9a2095ba3ecfb8876c3b90b": {"rom_size": 16777216, "rom_crc32": 735012564, "savesize": 32768, "savetype": 3}, "dae84b528b042ff13a0062571987683a973e8c55": {"rom_size": 33554432, "rom_crc32": 1779379339, "savesize": 512, "savetype": 1}, "825db24e5f65c2511fe075432372a4e59c87991d": {"rom_size": 33554432, "rom_crc32": 1318332139, "savesize": 512, "savetype": 1}, "57a5a908389cd203597060fe15908973e34cc19a": {"rom_size": 4194304, "rom_crc32": 2599332279, "savesize": 512, "savetype": 1}, "a1d9f292c040684c0852dc63370939483b9e0c93": {"rom_size": 8388608, "rom_crc32": 3743750377, "savesize": 512, "savetype": 1}, "4ef6fa157a243eb5cc47bf8b1c4012159ba9a02d": {"rom_size": 8388608, "rom_crc32": 2152333745, "savesize": 512, "savetype": 1}, "ba3c33c07989cd377ca77bd0e7e6cb3f5ec6fce3": {"rom_size": 8388608, "rom_crc32": 311157372, "savesize": 512, "savetype": 1}, "e1b435bc05e08ee3210b626f178ecbc1d0e0b12a": {"rom_size": 8388608, "rom_crc32": 2070468926, "savesize": 512, "savetype": 1}, "76b7fdd2437718c459da79c652b678a77db6ecdc": {"rom_size": 8388608, "rom_crc32": 1834246125, "savesize": 0, "savetype": 0}, "a37a6e4718d9566625ecd11ab725fa34c170a73b": {"rom_size": 8388608, "rom_crc32": 1713789657, "savesize": 0, "savetype": 0}, "683067ee95a37c8ce1d618f501c352346ce77677": {"rom_size": 4194304, "rom_crc32": 1974020389, "savesize": 8192, "savetype": 2}, "ce21539e500107c74b68aec54d067859c61f9111": {"rom_size": 4194304, "rom_crc32": 1419506117, "savesize": 0, "savetype": 0}, "98ce0e4d0f5ebbbe7b8c7830dbb67cab0f26e702": {"rom_size": 4194304, "rom_crc32": 3768865448, "savesize": 8192, "savetype": 2}, "b20a690447000b3239d6a607f0825e2811b05891": {"rom_size": 4194304, "rom_crc32": 124344940, "savesize": 8192, "savetype": 2}, "3b8109e76656eca820eac5ddbffbe91b54fb77ef": {"rom_size": 4194304, "rom_crc32": 1430695958, "savesize": 8192, "savetype": 2}, "83d5b3be79eeb3672a05f73cfa6608f7483ac3c3": {"rom_size": 4194304, "rom_crc32": 4070469165, "savesize": 8192, "savetype": 2}, "f347b99107e83fce5c6d072594d019651c0b3e2f": {"rom_size": 16777216, "rom_crc32": 2940547426, "savesize": 8192, "savetype": 2}, "8a8da3c5afa1c5044ada98170b5c476b4d5b72e0": {"rom_size": 16777216, "rom_crc32": 1989834342, "savesize": 8192, "savetype": 2}, "0e30a0a07c6711a9fd1e9d1e138fc9368fbe9ff5": {"rom_size": 16777216, "rom_crc32": 4249330430, "savesize": 8192, "savetype": 2}, "029e9b123559eb420f8570305ce1640558148028": {"rom_size": 8388608, "rom_crc32": 3058734527, "savesize": 32768, "savetype": 3}, "6602f5a099a49bac3a98da610b68736dc48b9abb": {"rom_size": 8388608, "rom_crc32": 3092759493, "savesize": 32768, "savetype": 3}, "6e2bf423fea914a549a48cd0b4836b6d1fc86bff": {"rom_size": 8388608, "rom_crc32": 1568597423, "savesize": 0, "savetype": 0}, "efa36be1df5500485c915c87eb10cd7be0936d7c": {"rom_size": 8388608, "rom_crc32": 2584282044, "savesize": 0, "savetype": 0}, "6b0b781e9f061de6ed643a69fbcd6c9a8b94112e": {"rom_size": 8388608, "rom_crc32": 2910901753, "savesize": 0, "savetype": 0}, "12898f8133ed8e013abd0884f74835b0a551920f": {"rom_size": 8388608, "rom_crc32": 248089681, "savesize": 32768, "savetype": 3}, "063b25c73fc0e29f99bd544401c22c4115f4bc82": {"rom_size": 4194304, "rom_crc32": 3934918746, "savesize": 8192, "savetype": 2}, "8283a17356f1cab0a0464c1dd06030b370deb731": {"rom_size": 8388608, "rom_crc32": 3772863415, "savesize": 0, "savetype": 0}, "e60a3ec0c89b8a0b71926384d1863a005c1f7fa8": {"rom_size": 8388608, "rom_crc32": 2940259481, "savesize": 32768, "savetype": 3}, "75be263858571f37d8523b7e35cb547b66636117": {"rom_size": 8388608, "rom_crc32": 2668333945, "savesize": 32768, "savetype": 3}, "ff14a74ee3dcace1bae162e2e977feaea977d7f0": {"rom_size": 16777216, "rom_crc32": 2095967504, "savesize": 32768, "savetype": 3}, "329625d521c15fe5ed6fda0f4406e34ca1c573a1": {"rom_size": 16777216, "rom_crc32": 4263241409, "savesize": 32768, "savetype": 3}, "d300f0d3bdc17e4450ec89171a54b879647cbde1": {"rom_size": 8388608, "rom_crc32": 1420776269, "savesize": 8192, "savetype": 2}, "e2c76c8a9ffc9d700c1f96958e1586e78d79f006": {"rom_size": 8388608, "rom_crc32": 265508392, "savesize": 8192, "savetype": 2}, "e1c4df39b4da6709535cf6a9a6d7093fa30b7786": {"rom_size": 8388608, "rom_crc32": 1248083140, "savesize": 32768, "savetype": 3}, "74c432e8a6e77073c103c7e9f7e3eb4ba2e34fda": {"rom_size": 16777216, "rom_crc32": 129001876, "savesize": 32768, "savetype": 3}, "6e11e9b7ca39ce9bb5a0adc304d014d81110847c": {"rom_size": 8388608, "rom_crc32": 1446683552, "savesize": 32768, "savetype": 3}, "a4b518e51df31decf7fbb6f7c3b33d89ca99c43a": {"rom_size": 8388608, "rom_crc32": 1958072425, "savesize": 65536, "savetype": 5}, "8ed879bac1b821f47ebe3d63f0ec1cf3ecf8a2fe": {"rom_size": 8388608, "rom_crc32": 1377063121, "savesize": 65536, "savetype": 5}, "74d497de599ba0ddb3357334f609c87804ba9d34": {"rom_size": 8388608, "rom_crc32": 3915102732, "savesize": 65536, "savetype": 5}, "9c43149f56c492855e7f2bd1dda26e9d4803ee2e": {"rom_size": 16777216, "rom_crc32": 1441072065, "savesize": 65536, "savetype": 5}, "4b5351a7da02570d7d0d0d358a5313f5197656b6": {"rom_size": 16777216, "rom_crc32": 2067376050, "savesize": 65536, "savetype": 5}, "55f78ffa7e8e17de6d1935f2a59abc97e0dc55d4": {"rom_size": 16777216, "rom_crc32": 1077469826, "savesize": 65536, "savetype": 5}, "817d6cd431e1ced202dfe739e45fa3d5c2f0654e": {"rom_size": 16777216, "rom_crc32": 833757413, "savesize": 65536, "savetype": 5}, "57c9b7bb1be6fe4decbd2558f807279b7d552e35": {"rom_size": 16777216, "rom_crc32": 3253908972, "savesize": 0, "savetype": 0}, "a301baa7c36dd229be2d0e5367ff7c3c47349b67": {"rom_size": 4194304, "rom_crc32": 3448655749, "savesize": 512, "savetype": 1}, "429c5d6e1c88b7b5085cbef00a66331d407260d0": {"rom_size": 4194304, "rom_crc32": 166151980, "savesize": 512, "savetype": 1}, "c092418114d57f201a1e6619259d05c73059a8a7": {"rom_size": 8388608, "rom_crc32": 508381203, "savesize": 512, "savetype": 1}, "697f915c94c5a3ce0d256fe274092236672acc69": {"rom_size": 8388608, "rom_crc32": 1676975017, "savesize": 512, "savetype": 1}, "4f550fbbea685b1d56fbe3dc0ac4665a3cea42b2": {"rom_size": 8388608, "rom_crc32": 2757253060, "savesize": 512, "savetype": 1}, "44350257f527db20dd658b46c3f6d9a305c71b13": {"rom_size": 8388608, "rom_crc32": 3934970802, "savesize": 512, "savetype": 1}, "58842aafb47fa4f9a3a495952575594099f4dee0": {"rom_size": 8388608, "rom_crc32": 3748859934, "savesize": 512, "savetype": 1}, "62d33df2d29f590d62c6506562c40a66e5c7f6fb": {"rom_size": 8388608, "rom_crc32": 3807157997, "savesize": 512, "savetype": 1}, "81275b824412a204547624aa8246fcb8efea93c3": {"rom_size": 8388608, "rom_crc32": 1106597216, "savesize": 512, "savetype": 1}, "eca48d3d26a66f862f99c41ef9e7a0eb7a71b2ea": {"rom_size": 8388608, "rom_crc32": 2437430663, "savesize": 512, "savetype": 1}, "e0659cb3669e10185cdf2c613d8c372b1608bd0b": {"rom_size": 8388608, "rom_crc32": 2887617687, "savesize": 512, "savetype": 1}, "9e364c962be2479830bbd897de4b974b32aedd50": {"rom_size": 8388608, "rom_crc32": 1392460500, "savesize": 512, "savetype": 1}, "1c13b3220474297ed5d51a1f4689ef7353478993": {"rom_size": 8388608, "rom_crc32": 3068170702, "savesize": 512, "savetype": 1}, "185f7d5786cdb36f11705d89c97df9bcc0b21a73": {"rom_size": 8388608, "rom_crc32": 4052096528, "savesize": 512, "savetype": 1}, "ee4806fcb6ebbed4e726ca27e9c65cd526e7b1ff": {"rom_size": 8388608, "rom_crc32": 3659456997, "savesize": 512, "savetype": 1}, "986553ea355e9006d0f34c6f31df1d0a3a626b1f": {"rom_size": 8388608, "rom_crc32": 3620854413, "savesize": 512, "savetype": 1}, "c2bb6a907e8a95e7495fd51571d9ee33eecd1d8c": {"rom_size": 8388608, "rom_crc32": 2830633596, "savesize": 512, "savetype": 1}, "93fd230120908eca07d06315a29f3d1f1d5bd2a6": {"rom_size": 8388608, "rom_crc32": 4030146803, "savesize": 512, "savetype": 1}, "fbaa1c88fcb5f0dccb215425444de7569ac09eaf": {"rom_size": 8388608, "rom_crc32": 2326799584, "savesize": 512, "savetype": 1}, "dfe53da5021a421ddea3d1f4d2597166e6c88328": {"rom_size": 8388608, "rom_crc32": 3318618924, "savesize": 512, "savetype": 1}, "57907dfa6fe133b9f63b713c2bac8477ee26760f": {"rom_size": 8388608, "rom_crc32": 1365123367, "savesize": 32768, "savetype": 3}, "66f812dd70555424cf90ad10553f1ff6ca3e561d": {"rom_size": 4194304, "rom_crc32": 2512885320, "savesize": 8192, "savetype": 2}, "b2cf8d5652fc14d0eb8a8b0f7b3790265f611ac0": {"rom_size": 4194304, "rom_crc32": 2806089683, "savesize": 8192, "savetype": 2}, "19db26d650434e00184febcce3cd7f9fa0a8cb62": {"rom_size": 4194304, "rom_crc32": 159286824, "savesize": 8192, "savetype": 2}, "fa30ae775ddb73448d757e8e92e42ba1caa27949": {"rom_size": 4194304, "rom_crc32": 1933005235, "savesize": 8192, "savetype": 2}, "b46d5c09219336a6bd29f72b0e03bb0477852bb3": {"rom_size": 4194304, "rom_crc32": 2339551804, "savesize": 512, "savetype": 1}, "9bfe2ba2432c48dcb9e7cd77436e931410fde680": {"rom_size": 4194304, "rom_crc32": 403243491, "savesize": 512, "savetype": 1}, "8f2cc08bd2ef350c70a35a2fa5fd1a6ccc298938": {"rom_size": 4194304, "rom_crc32": 3878812997, "savesize": 512, "savetype": 1}, "c09b76ce46c5aec9502d9d2bd4b5d8140e4c643d": {"rom_size": 4194304, "rom_crc32": 1236870695, "savesize": 512, "savetype": 1}, "fa35786499b3e83b504aab7eb591cdfba2f76e88": {"rom_size": 4194304, "rom_crc32": 130209773, "savesize": 512, "savetype": 1}, "2e7beb3390b2e07a2afcab6fca3ad0aa7abbbf76": {"rom_size": 4194304, "rom_crc32": 2801561631, "savesize": 512, "savetype": 1}, "d87152ab55342a6a99b5c971e3c6ff208b687ac7": {"rom_size": 8388608, "rom_crc32": 1146391347, "savesize": 0, "savetype": 0}, "e22b63064f7a7ebbaae80c6c8bed6c220c3d28c8": {"rom_size": 8388608, "rom_crc32": 1084129874, "savesize": 0, "savetype": 0}, "ebec5ed1bc60234a2124fbdf1e417bac4d756c6d": {"rom_size": 33554432, "rom_crc32": 2333853663, "savesize": 65536, "savetype": 5}, "e3b355e67ace40f28e613845ebdddb9fe9e43838": {"rom_size": 33554432, "rom_crc32": 2281200028, "savesize": 65536, "savetype": 5}, "14a80327c4add4a9a60528baa6eea3c81bcfc2b2": {"rom_size": 33554432, "rom_crc32": 3961471017, "savesize": 65536, "savetype": 5}, "8981a4eaae2710d081c2bdc082281ffc3e971f34": {"rom_size": 16777216, "rom_crc32": 2308268441, "savesize": 8192, "savetype": 2}, "28ff9cc06162a4b205f13f6cd44829aa226fbb61": {"rom_size": 16777216, "rom_crc32": 3508024577, "savesize": 8192, "savetype": 2}, "a47ac5ff2abb2495f35bf73cddcc2e3b182eed7b": {"rom_size": 16777216, "rom_crc32": 2880393628, "savesize": 8192, "savetype": 2}, "0ff07ccead7293e282ab9e19bbea3e1c726fe56d": {"rom_size": 8388608, "rom_crc32": 1749403249, "savesize": 512, "savetype": 1}, "0772aaea6c2be50c8d518d376363924815d3b5ce": {"rom_size": 4194304, "rom_crc32": 3106572936, "savesize": 0, "savetype": 0}, "e24e2fd1e22189f7fa4dd2e5f06e4910396b78d2": {"rom_size": 4194304, "rom_crc32": 2345208539, "savesize": 0, "savetype": 0}, "e23f72bc95973d0a9c5986f1f0faac30e52b1844": {"rom_size": 8388608, "rom_crc32": 2449028352, "savesize": 512, "savetype": 1}, "644dd0a2730a9816822001e8efce0d2fc28ec99e": {"rom_size": 4194304, "rom_crc32": 988874299, "savesize": 0, "savetype": 0}, "5256c0a3af926e3793e4bd365cfd0306fb3c9ce9": {"rom_size": 4194304, "rom_crc32": 3403503581, "savesize": 0, "savetype": 0}, "9cf1ae459084cfd74c6f9fa1e1ec39fe1a044004": {"rom_size": 8388608, "rom_crc32": 294966075, "savesize": 512, "savetype": 1}, "10971b17269b55d3a72c4297bc0ae232694967c6": {"rom_size": 4194304, "rom_crc32": 1302378806, "savesize": 8192, "savetype": 2}, "518991e52d6c11264b6301afd52be84f6806f440": {"rom_size": 8388608, "rom_crc32": 3651719199, "savesize": 8192, "savetype": 2}, "16cf10bd7a2b0ff660f453dd2507ca5fb75a9df0": {"rom_size": 8388608, "rom_crc32": 271898226, "savesize": 0, "savetype": 0}, "ecb45d694b86afce6bfcafba144bb2307de2403d": {"rom_size": 8388608, "rom_crc32": 596683942, "savesize": 0, "savetype": 0}, "779cfb9190da77049bf91502446ed1bd85f26698": {"rom_size": 8388608, "rom_crc32": 987803592, "savesize": 0, "savetype": 0}, "3eb7d9f0b3cb6ad87c588efc65bfeb9075b687c1": {"rom_size": 8388608, "rom_crc32": 443214430, "savesize": 0, "savetype": 0}, "4c6a4e8f331322f7e125798ec224ad1b7e96c2c4": {"rom_size": 33554432, "rom_crc32": 16083066, "savesize": 0, "savetype": 0}, "73aad115117b8c36ee109b1df6c0b99fd4ff4acd": {"rom_size": 16777216, "rom_crc32": 1105419370, "savesize": 0, "savetype": 0}, "ef530b134f6f58295cd26801c5d15928c8a11fd8": {"rom_size": 4194304, "rom_crc32": 851252358, "savesize": 0, "savetype": 0}, "edc8aa3bc4b59fa89ef4ea3f17d4e4c70fdded6f": {"rom_size": 4194304, "rom_crc32": 4059165000, "savesize": 0, "savetype": 0}, "da830d3d3f3c8d5e72f7b1a14dd48471d07daabc": {"rom_size": 4194304, "rom_crc32": 1685071151, "savesize": 0, "savetype": 0}, "0d6c650555e3f0a2bb1ac26b58e7dc2a45b3f903": {"rom_size": 4194304, "rom_crc32": 3638581031, "savesize": 0, "savetype": 0}, "14cd1df4b1a10a6ad6dbb26e283dcfcd77b0e258": {"rom_size": 4194304, "rom_crc32": 3544735578, "savesize": 0, "savetype": 0}, "a1ae8e4a747ca37506ee4b14df86acb5f570a68c": {"rom_size": 8388608, "rom_crc32": 1647477659, "savesize": 65536, "savetype": 5}, "4413c9397d7ab229500bbc4247156fb38246e4c8": {"rom_size": 8388608, "rom_crc32": 2241165860, "savesize": 65536, "savetype": 5}, "372e1880a0dd1213422422a8e56aac7b8ed01d66": {"rom_size": 8388608, "rom_crc32": 1599152675, "savesize": 65536, "savetype": 5}, "b37ebb42082531a8b19b4135b418b1a0f379777e": {"rom_size": 8388608, "rom_crc32": 1677135832, "savesize": 65536, "savetype": 5}, "6a7f68a89eb6949e631fc79f15d58be9c343ef76": {"rom_size": 16777216, "rom_crc32": 2303760529, "savesize": 65536, "savetype": 5}, "8063f0416fa8b6c0308f16ca8b0b75a98f2b6e7b": {"rom_size": 16777216, "rom_crc32": 1362625791, "savesize": 65536, "savetype": 5}, "b86c0231782e6f5c94b97e75920950074bcd50c8": {"rom_size": 16777216, "rom_crc32": 2130634743, "savesize": 65536, "savetype": 5}, "75ec7cfe6fd4e9715b753c8a9fcab3d0466a1450": {"rom_size": 16777216, "rom_crc32": 1542992982, "savesize": 65536, "savetype": 5}, "54c6f80b4a54bb9af3086879a65a3ca33476109b": {"rom_size": 16777216, "rom_crc32": 1131803094, "savesize": 65536, "savetype": 5}, "87d0b8c6967ad71f1cfaf11d4a68ba2ca4efbf8d": {"rom_size": 16777216, "rom_crc32": 1239262694, "savesize": 65536, "savetype": 5}, "9581bf4e75e5c410d716dfcb002e70a28af036f3": {"rom_size": 16777216, "rom_crc32": 3505803557, "savesize": 65536, "savetype": 5}, "ca289d003d6cf14882b9b0f6409ae929f89aef71": {"rom_size": 16777216, "rom_crc32": 1929751600, "savesize": 65536, "savetype": 5}, "5425170401c21236ff5bb6e473be425bf2118d3e": {"rom_size": 16777216, "rom_crc32": 2664028271, "savesize": 65536, "savetype": 5}, "600900657db867a7b1dd7e02af6de839d69301e0": {"rom_size": 8388608, "rom_crc32": 1144361342, "savesize": 65536, "savetype": 5}, "3a8b0121284aee9880877be82bc1190e2102ed2b": {"rom_size": 8388608, "rom_crc32": 1135997287, "savesize": 65536, "savetype": 5}, "6a4e23f1e3ddc9aed119b4fac1624e0ac3bb847a": {"rom_size": 8388608, "rom_crc32": 142165827, "savesize": 65536, "savetype": 5}, "db78ad7cd77b4215f7be5683a07b397c2f4bc2bb": {"rom_size": 4194304, "rom_crc32": 41666317, "savesize": 512, "savetype": 1}, "bafd973930e18f6951a713fcbdfa86c3f176ce7a": {"rom_size": 8388608, "rom_crc32": 3477097198, "savesize": 0, "savetype": 0}, "5902bd57b2221d7de5dfaae28e7e3393e440aaac": {"rom_size": 8388608, "rom_crc32": 1921601051, "savesize": 0, "savetype": 0}, "681232ad610c679cb6ce7fad32f9b5f1b20b2b93": {"rom_size": 8388608, "rom_crc32": 252728980, "savesize": 512, "savetype": 1}, "1cf82f09c634941f497d828d200136a53171baa8": {"rom_size": 8388608, "rom_crc32": 107410298, "savesize": 512, "savetype": 1}, "89a217097c27e1157bd7f811ca854ec247a1f769": {"rom_size": 4194304, "rom_crc32": 3176030216, "savesize": 32768, "savetype": 3}, "8fc6b9175ed4dc7f8da81de8634f06e10b78423e": {"rom_size": 4194304, "rom_crc32": 1496786518, "savesize": 512, "savetype": 1}, "571ae8dfc9a13c555bc40e43f3d24e0f97f14165": {"rom_size": 4194304, "rom_crc32": 1587803061, "savesize": 512, "savetype": 1}, "b97028dbbd135fe7c5fa4fe8ecb40d06d7696764": {"rom_size": 4194304, "rom_crc32": 695965780, "savesize": 512, "savetype": 1}, "361a164e55687541dae8e6a17de11e1e085f1196": {"rom_size": 4194304, "rom_crc32": 85933325, "savesize": 512, "savetype": 1}, "1c4a9a2babde53703fa0be5f3c196c021ed6dd61": {"rom_size": 8388608, "rom_crc32": 2200871601, "savesize": 512, "savetype": 1}, "b51d8ec89a9889b2ce6d3cb4f8961b00ab556238": {"rom_size": 8388608, "rom_crc32": 3923358559, "savesize": 512, "savetype": 1}, "355050298330a37829c0e7a24d5471b67d1206bb": {"rom_size": 8388608, "rom_crc32": 1080190392, "savesize": 512, "savetype": 1}, "8005fc681d2befaec76d941069ae011b54976bfe": {"rom_size": 16777216, "rom_crc32": 2905358412, "savesize": 512, "savetype": 1}, "84875f5c9b6b3c513a7a8a15677e47369895bf08": {"rom_size": 16777216, "rom_crc32": 1662040598, "savesize": 512, "savetype": 1}, "1ead0c88b2b0a26cf1b72722e42893432ca63960": {"rom_size": 8388608, "rom_crc32": 4161952843, "savesize": 512, "savetype": 1}, "761ade26f4ae131603166bd38ff89ab211686dc4": {"rom_size": 8388608, "rom_crc32": 1846762317, "savesize": 0, "savetype": 0}, "32cbd9d82d6763ebf793721242cdad5abf77f3a1": {"rom_size": 16777216, "rom_crc32": 2182625468, "savesize": 512, "savetype": 1}, "aba03049dee86ab73748304efd83fd8d08c3a7a0": {"rom_size": 16777216, "rom_crc32": 1714687779, "savesize": 512, "savetype": 1}, "a32253cad5f95f82ad585f01498fdb0c62437b63": {"rom_size": 16777216, "rom_crc32": 21361652, "savesize": 512, "savetype": 1}, "a51af969053a6f977bbe7567c009d2db981e4fe3": {"rom_size": 8388608, "rom_crc32": 1810421388, "savesize": 512, "savetype": 1}, "e393b42788ee2e260ecc29c169a1e5a9fec02af3": {"rom_size": 8388608, "rom_crc32": 1158487368, "savesize": 512, "savetype": 1}, "f8de3b998cb0d0211a4ba012ee13d8146596d08a": {"rom_size": 8388608, "rom_crc32": 4255369693, "savesize": 512, "savetype": 1}, "5d6e3426c4bacf72e11f07a159b956b4e0e931e5": {"rom_size": 8388608, "rom_crc32": 3908783002, "savesize": 512, "savetype": 1}, "5d9451311cf2238934b7c8d1ae53d256c6e6838b": {"rom_size": 8388608, "rom_crc32": 3861192659, "savesize": 512, "savetype": 1}, "2e58afc080c97d552698e2a4e844dec1ee4f8309": {"rom_size": 8388608, "rom_crc32": 2902599841, "savesize": 512, "savetype": 1}, "91a9c6fde4e62550b09dffd9a8c5dabe2257c151": {"rom_size": 4194304, "rom_crc32": 1199959776, "savesize": 0, "savetype": 0}, "cc79b0032f047b8b76dd529fb42c4397cc97db8a": {"rom_size": 4194304, "rom_crc32": 3368510037, "savesize": 0, "savetype": 0}, "3316fdb6b2932bbd60da8b98190584500e760a9a": {"rom_size": 4194304, "rom_crc32": 2934052739, "savesize": 0, "savetype": 0}, "3a0ecc16fb08e6fea2d40c444ed6e27460e9bda5": {"rom_size": 4194304, "rom_crc32": 2588243507, "savesize": 0, "savetype": 0}, "c4233bda51e32a3c64eaa053386832d852eb6467": {"rom_size": 4194304, "rom_crc32": 799464341, "savesize": 0, "savetype": 0}, "c2f83f8b940e1e54ae6628b982ca39baae0f4053": {"rom_size": 4194304, "rom_crc32": 4038128956, "savesize": 0, "savetype": 0}, "c982daf23db9fb9f094ae919be82285d39f5a2e8": {"rom_size": 8388608, "rom_crc32": 3729425856, "savesize": 0, "savetype": 0}, "af810eba28c9bf66b63e150c600eed35021a82a3": {"rom_size": 8388608, "rom_crc32": 592849091, "savesize": 0, "savetype": 0}, "175f8fe97f1b1a9752e90cacd3bb1e6168995f4d": {"rom_size": 8388608, "rom_crc32": 1971387350, "savesize": 512, "savetype": 1}, "82b3be1aca134e5da9b440bfaa17111df4eee400": {"rom_size": 8388608, "rom_crc32": 1372492246, "savesize": 512, "savetype": 1}, "2047d0b063e976c111fcb63517b1ad3d18daf134": {"rom_size": 8388608, "rom_crc32": 3246981437, "savesize": 512, "savetype": 1}, "e3745a8bb97d70fd174724db7f5aa27a892a8427": {"rom_size": 4194304, "rom_crc32": 589919609, "savesize": 512, "savetype": 1}, "c7b800902d9c094fb9d9808ed41c7e3167fd52f7": {"rom_size": 8388608, "rom_crc32": 819382649, "savesize": 0, "savetype": 0}, "ea443e2f63f7dbbf9267a339378857e0793b1997": {"rom_size": 4194304, "rom_crc32": 2561501158, "savesize": 0, "savetype": 0}, "7b94cd9a9fe0a1f12fc17c51627e64e3d2b440e9": {"rom_size": 4194304, "rom_crc32": 53619111, "savesize": 512, "savetype": 1}, "1645c44c42bf37361308e464013a8ac1574bdff1": {"rom_size": 4194304, "rom_crc32": 4231241671, "savesize": 512, "savetype": 1}, "056d5672765f9c73b30e90df795b36456c3c6c63": {"rom_size": 4194304, "rom_crc32": 1629275680, "savesize": 0, "savetype": 0}, "afdf94a9e87b31749fa20702d6e103815412d4de": {"rom_size": 8388608, "rom_crc32": 1570591454, "savesize": 0, "savetype": 0}, "551fa645afa1ff1c6f84863d9991d599ddb68feb": {"rom_size": 8388608, "rom_crc32": 908253713, "savesize": 0, "savetype": 0}, "9a3ae823bb8f18815a1c0be12f51e8e52253d138": {"rom_size": 4194304, "rom_crc32": 420157011, "savesize": 0, "savetype": 0}, "4cd43e97d305be2b268854d479b617534ad64d9e": {"rom_size": 4194304, "rom_crc32": 1633716447, "savesize": 32768, "savetype": 3}, "1001dc9cb44296dae19f5eff01ad00ca7532d6a3": {"rom_size": 4194304, "rom_crc32": 2574415773, "savesize": 32768, "savetype": 3}, "4d7f4f8c628dea79a171a146631a2e00ed5c167b": {"rom_size": 8388608, "rom_crc32": 779244640, "savesize": 512, "savetype": 1}, "11d08268e2378386389648d51c7265267d4e8aa8": {"rom_size": 8388608, "rom_crc32": 1327064594, "savesize": 512, "savetype": 1}, "beb9111e04e50fd77d420062f1e26c4011fe8aff": {"rom_size": 8388608, "rom_crc32": 2957546185, "savesize": 512, "savetype": 1}, "2d0e60dd1ee5b544af42207ca842fe1117c5f982": {"rom_size": 8388608, "rom_crc32": 2838888949, "savesize": 512, "savetype": 1}, "fefebe0f51479dd1230f0f363020eeefc88f1052": {"rom_size": 8388608, "rom_crc32": 2517797681, "savesize": 512, "savetype": 1}, "d3bd4f4173f21e52534789cf0181ed31b4d4c7da": {"rom_size": 4194304, "rom_crc32": 3894574657, "savesize": 512, "savetype": 1}, "d18b54e08885d4605b9d4f31a5d7fbc8878ac06c": {"rom_size": 8388608, "rom_crc32": 2224004418, "savesize": 0, "savetype": 0}, "7e48d1a019efacf76f8aab3e6bbc6b0acd9ff3e5": {"rom_size": 8388608, "rom_crc32": 334563870, "savesize": 8192, "savetype": 2}, "8c4f84ce6f71f95a77a17de8617646ed811ba0c0": {"rom_size": 8388608, "rom_crc32": 2949797927, "savesize": 512, "savetype": 1}, "c015a7212678ca2879e693fc98b8c8ccdcd37466": {"rom_size": 8388608, "rom_crc32": 790858194, "savesize": 512, "savetype": 1}, "625f48c07229e9acb84442ab681095e39bbe713e": {"rom_size": 8388608, "rom_crc32": 273370282, "savesize": 8192, "savetype": 2}, "8e5d213bcc1c16bd95a25f3bc37a0496bca1dc63": {"rom_size": 8388608, "rom_crc32": 937500903, "savesize": 8192, "savetype": 2}, "a32b6302f33b4f9ea6aeca95e606571bdae35ce1": {"rom_size": 8388608, "rom_crc32": 1121803737, "savesize": 512, "savetype": 1}, "d85209fd5ce67df36f0f6cf0ed9685232c9db4ca": {"rom_size": 16777216, "rom_crc32": 2443829964, "savesize": 512, "savetype": 1}, "975cf10b784a83140ab639a58a966cfebb58663e": {"rom_size": 8388608, "rom_crc32": 526571104, "savesize": 8192, "savetype": 2}, "83998e0e8f7b6a216c9a01e257a59de795d88416": {"rom_size": 16777216, "rom_crc32": 3845890178, "savesize": 512, "savetype": 1}, "1c51f9266920c60e9c550295217512b89a0e1898": {"rom_size": 16777216, "rom_crc32": 3153220765, "savesize": 512, "savetype": 1}, "a7d8c1b1bddc6ec945c8b4682c2ee7aa75ce9992": {"rom_size": 16777216, "rom_crc32": 2844875695, "savesize": 512, "savetype": 1}, "efbd581e5136050cd6a1e17f96c8c4ba6fb85e5c": {"rom_size": 16777216, "rom_crc32": 2129877485, "savesize": 8192, "savetype": 2}, "dcb93636379b7b1f8d2fead02e9d59b351fa50db": {"rom_size": 8388608, "rom_crc32": 2184377738, "savesize": 512, "savetype": 1}, "d56d0b5d5708cb2551fea2c467e873a6125a5311": {"rom_size": 8388608, "rom_crc32": 3768090915, "savesize": 512, "savetype": 1}, "bce9c1eab8d6aa1c66dd9d93fb22c2b82443046d": {"rom_size": 4194304, "rom_crc32": 3675548867, "savesize": 0, "savetype": 0}, "8341a56c4b66df7a3980a1de8d6a4c4a3cad0972": {"rom_size": 4194304, "rom_crc32": 1274472936, "savesize": 0, "savetype": 0}, "21dff58b8a54a8a81c9e24e8037ffc0713980f4e": {"rom_size": 8388608, "rom_crc32": 3297952877, "savesize": 0, "savetype": 0}, "5133fb540fa3a67454ecdbe874f4ffec42ae89f5": {"rom_size": 8388608, "rom_crc32": 2411061958, "savesize": 0, "savetype": 0}, "1a49a65400773fe5e5d883cabdf188cacb936b24": {"rom_size": 8388608, "rom_crc32": 4249428843, "savesize": 512, "savetype": 1}, "333c5b3b5745c4ffd268d296fd4da818779d96ae": {"rom_size": 8388608, "rom_crc32": 1043638967, "savesize": 512, "savetype": 1}, "34f0d8e32c5be45916e030133d817707047ae469": {"rom_size": 8388608, "rom_crc32": 2753372845, "savesize": 0, "savetype": 0}, "35fd49540a893d2199778c79c1bf46c3c2c4eefd": {"rom_size": 8388608, "rom_crc32": 2496820090, "savesize": 0, "savetype": 0}, "80a3c2bf0a0640b89efefc3c8ece9bac2a095a34": {"rom_size": 8388608, "rom_crc32": 4195288413, "savesize": 0, "savetype": 0}, "2b1041ab53d30d2f68b3e031b17e45e7c75b4812": {"rom_size": 8388608, "rom_crc32": 1058660694, "savesize": 0, "savetype": 0}, "786bfcf7cf0d5f99851245b02ee305458da7410a": {"rom_size": 8388608, "rom_crc32": 1735939247, "savesize": 0, "savetype": 0}, "a9195edc1dd95061e0612dd8bd69a93eac4fce84": {"rom_size": 8388608, "rom_crc32": 1506095000, "savesize": 0, "savetype": 0}, "758e0d55253924fa6b3dee4bf07f8f1a1db67dc4": {"rom_size": 8388608, "rom_crc32": 3387999378, "savesize": 512, "savetype": 1}, "6e8e4aa2e295d45da027e021755d9c12deead35e": {"rom_size": 8388608, "rom_crc32": 1900678458, "savesize": 512, "savetype": 1}, "3a330fe57f158bcedbe514913b2be4968cf17ccb": {"rom_size": 8388608, "rom_crc32": 2647301180, "savesize": 0, "savetype": 0}, "3f4699cfa442a1f111d73a01f7d4c1ea016c8bbf": {"rom_size": 8388608, "rom_crc32": 2332209841, "savesize": 0, "savetype": 0}, "50c6200dae3c120558fc2c323e70212dd153f6e6": {"rom_size": 4194304, "rom_crc32": 546920677, "savesize": 512, "savetype": 1}, "b97a05b9c1ae899a3ad9c31c3dd1fcc1eee978d9": {"rom_size": 4194304, "rom_crc32": 3013161554, "savesize": 512, "savetype": 1}, "6580cd32868b25c98b46e3c8fecb27706bf71c82": {"rom_size": 4194304, "rom_crc32": 3415314990, "savesize": 512, "savetype": 1}, "19d8aa6fe12fb0db1cc4eb23ad108fc0cc29122c": {"rom_size": 4194304, "rom_crc32": 3108887699, "savesize": 512, "savetype": 1}, "a4017a23999a3a2db9ab2c18eeec8b653899e641": {"rom_size": 8388608, "rom_crc32": 4092781669, "savesize": 512, "savetype": 1}, "f52e41ea3fb3106ce3b23aca2e2b0ae763e31b6e": {"rom_size": 8388608, "rom_crc32": 3288473807, "savesize": 512, "savetype": 1}, "3544dfc7d7792faf7641c45c71b3f9170f935855": {"rom_size": 4194304, "rom_crc32": 2146186265, "savesize": 0, "savetype": 0}, "5a06c9057ee1dfb47cc7e6af66d8e7826222fdfb": {"rom_size": 16777216, "rom_crc32": 1516686074, "savesize": 0, "savetype": 0}, "ded64c46d4ef0e74c286b8d9f764eda3edb9e98d": {"rom_size": 4194304, "rom_crc32": 1396197734, "savesize": 512, "savetype": 1}, "b7148996c368e2df2e1f252136f078bae8c55845": {"rom_size": 8388608, "rom_crc32": 2479214441, "savesize": 8192, "savetype": 2}, "b6eeea7f1921f4988e5fe8d00e91a99d47624eb5": {"rom_size": 8388608, "rom_crc32": 2159478722, "savesize": 8192, "savetype": 2}, "669c510561f4535c153477e3c20a2e62222b6400": {"rom_size": 8388608, "rom_crc32": 2371686059, "savesize": 8192, "savetype": 2}, "1a20f99e04921a1e45fb7cfe79c4af02cfef56ca": {"rom_size": 4194304, "rom_crc32": 1059105136, "savesize": 512, "savetype": 1}, "5bf1f1902c97e8996cf2f89ff19e362578076f99": {"rom_size": 4194304, "rom_crc32": 2888075403, "savesize": 512, "savetype": 1}, "fe9d305d029e189ac3c06ea6e4c5ee2c37fedd9d": {"rom_size": 4194304, "rom_crc32": 4098583152, "savesize": 512, "savetype": 1}, "71501fc8026176ef8b0c95cbc9321d4bfe003abd": {"rom_size": 4194304, "rom_crc32": 662514825, "savesize": 0, "savetype": 0}, "bc23eec448737a835b84087df1a61dc5a781f94b": {"rom_size": 4194304, "rom_crc32": 1525588446, "savesize": 0, "savetype": 0}, "fc9b3a77c5152939ffe43bf90f112be0a1ba9a1b": {"rom_size": 8388608, "rom_crc32": 136829078, "savesize": 0, "savetype": 0}, "abe28cea04ea1bca94dc14f66cd4a119e8f5a79e": {"rom_size": 8388608, "rom_crc32": 1857537672, "savesize": 0, "savetype": 0}, "8eb8799eb7a76e99b988d7eeb684dbbd5f8b4689": {"rom_size": 4194304, "rom_crc32": 1655077035, "savesize": 512, "savetype": 1}, "404791b957071074cfdc4a04576087f2789adaeb": {"rom_size": 4194304, "rom_crc32": 223918599, "savesize": 512, "savetype": 1}, "f0ef601699c441a8bb5546f8e689a6bdc0d58838": {"rom_size": 8388608, "rom_crc32": 172887762, "savesize": 8192, "savetype": 2}, "58e7a15a3c83427188b63cb6627437433b5d9011": {"rom_size": 8388608, "rom_crc32": 489938220, "savesize": 512, "savetype": 1}, "9d07952fcbd69e42e68e4b9d6d1c5e4a7479a65d": {"rom_size": 8388608, "rom_crc32": 2929810465, "savesize": 512, "savetype": 1}, "efaed83194c329f9839877694b21156ad3f8f62f": {"rom_size": 8388608, "rom_crc32": 375624145, "savesize": 512, "savetype": 1}, "16518edfc53568a9d07eaea4a6dfb47180c5776c": {"rom_size": 8388608, "rom_crc32": 2782102070, "savesize": 8192, "savetype": 2}, "0871449b4cee3b1bf74c2cf554d756fe98fff142": {"rom_size": 33554432, "rom_crc32": 313503325, "savesize": 8192, "savetype": 2}, "0713e5e81fd4800107102f7b60d826f2be4addf3": {"rom_size": 16777216, "rom_crc32": 2363068271, "savesize": 8192, "savetype": 2}, "21ff4ee4060b101bb8358446553eb61984a2a08a": {"rom_size": 8388608, "rom_crc32": 1051222210, "savesize": 8192, "savetype": 2}, "18c18e703a7abd1c14881a666871c8beed456106": {"rom_size": 16777216, "rom_crc32": 514596680, "savesize": 8192, "savetype": 2}, "b1ef0f4cf9e70e3cd97c94b810b639e5dfdf4680": {"rom_size": 4194304, "rom_crc32": 3136586942, "savesize": 0, "savetype": 0}, "13337c662a5999615b1a3bc0447bbfa73f230209": {"rom_size": 4194304, "rom_crc32": 2435025617, "savesize": 8192, "savetype": 2}, "c9a908d0327e50275dc2e86e56d89b20c858af2d": {"rom_size": 4194304, "rom_crc32": 1740956784, "savesize": 0, "savetype": 0}, "13c3471d4ba2f37f34cfab33429bebe7ac5032fd": {"rom_size": 4194304, "rom_crc32": 621952407, "savesize": 512, "savetype": 1}, "5d3613b475bd2c25f950a493fd5b4b77bb925079": {"rom_size": 4194304, "rom_crc32": 1590225505, "savesize": 512, "savetype": 1}, "ed071affccebd19ce03a64bebec0aca4c39e99a8": {"rom_size": 4194304, "rom_crc32": 1811753237, "savesize": 0, "savetype": 0}, "49e1bf23889635dd591d6b6d9b740c26c5af5def": {"rom_size": 4194304, "rom_crc32": 800371021, "savesize": 0, "savetype": 0}, "21b135223fb800400e446e5bc7e456548a5360ef": {"rom_size": 4194304, "rom_crc32": 893685236, "savesize": 512, "savetype": 1}, "70596e52bff3eab522600387c1e09ac8fffbfa5d": {"rom_size": 4194304, "rom_crc32": 4100148669, "savesize": 0, "savetype": 0}, "fe7542ecc4e839f79c76edda9c4f623752f5fae3": {"rom_size": 4194304, "rom_crc32": 1285879080, "savesize": 32768, "savetype": 3}, "2c244b25ef165b5659b222d58fb8c7e760c33e2a": {"rom_size": 4194304, "rom_crc32": 1674203216, "savesize": 32768, "savetype": 3}, "50627f8e31cda965fe2bdabf55b616884442e87e": {"rom_size": 4194304, "rom_crc32": 489806955, "savesize": 32768, "savetype": 3}, "a455752d1beb76722676326b784f6040821c5dca": {"rom_size": 8388608, "rom_crc32": 570863693, "savesize": 512, "savetype": 1}, "ee88892b7c6304605701e9bca6906fef53333d53": {"rom_size": 8388608, "rom_crc32": 664915061, "savesize": 8192, "savetype": 2}, "da88fe8c6ffc018010e3e5405ff3ddeb2dbe7e67": {"rom_size": 16777216, "rom_crc32": 1305439776, "savesize": 512, "savetype": 1}, "303b8e4af6cf5dac7dbd1371c848198357c3dbd8": {"rom_size": 4194304, "rom_crc32": 3132374364, "savesize": 0, "savetype": 0}, "3e4bf6183d255c10513fd0d465349a66ed23344e": {"rom_size": 4194304, "rom_crc32": 726156286, "savesize": 0, "savetype": 0}, "84a6ef32b338664f9a022fa7eb9eb727f4c9f982": {"rom_size": 4194304, "rom_crc32": 2384462911, "savesize": 512, "savetype": 1}, "61c0a4fb2724c726020b5a23b8132bdd59c34aa9": {"rom_size": 4194304, "rom_crc32": 519220467, "savesize": 512, "savetype": 1}, "6d321f8d2ffcaed580f6bca4b59b955464cf3fcb": {"rom_size": 4194304, "rom_crc32": 2522069701, "savesize": 0, "savetype": 0}, "d400c72e006f3fef939c7dcd06aa57d7ddc0331b": {"rom_size": 4194304, "rom_crc32": 508325226, "savesize": 512, "savetype": 1}, "c5e5187d01c549e8d0fe171ddc9a685b52b02e1b": {"rom_size": 4194304, "rom_crc32": 3113466159, "savesize": 512, "savetype": 1}, "eaf791c3f5279fc6be5cbaf9ac6f074d77b08204": {"rom_size": 4194304, "rom_crc32": 4244566851, "savesize": 8192, "savetype": 2}, "c320a1ce3e4a6db40fee4d2a3f231a4a7f39d4db": {"rom_size": 4194304, "rom_crc32": 1376159754, "savesize": 8192, "savetype": 2}, "4d74b34a52045003b587043599cdccc480821342": {"rom_size": 4194304, "rom_crc32": 2417812339, "savesize": 8192, "savetype": 2}, "632b98d01187ce9fb704bcd12c4ad315c41fb669": {"rom_size": 8388608, "rom_crc32": 1671339323, "savesize": 8192, "savetype": 2}, "4a240e1e100d9e24afced0619dbfeedc81eacde2": {"rom_size": 4194304, "rom_crc32": 1084523126, "savesize": 8192, "savetype": 2}, "5b0fcb83a824a3b86cfae3a815b0707b2339e352": {"rom_size": 4194304, "rom_crc32": 640815392, "savesize": 8192, "savetype": 2}, "36265ba6615c68352031ea9da226f03b970d5b63": {"rom_size": 4194304, "rom_crc32": 1516725284, "savesize": 131072, "savetype": 6}, "264cd0336a8f4c657b5d2e8b9aedfd2017f64e16": {"rom_size": 4194304, "rom_crc32": 2065320994, "savesize": 131072, "savetype": 6}, "042a2fc1b3846798ce0549afa32a5a3e8313613e": {"rom_size": 4194304, "rom_crc32": 4090000134, "savesize": 131072, "savetype": 6}, "55c16e8dcab8c0c07fde1afa0ff996ec9ef64dbf": {"rom_size": 8388608, "rom_crc32": 2374282492, "savesize": 131072, "savetype": 6}, "3f8e097a2db67aac369cfdba6ff35faf22079179": {"rom_size": 8388608, "rom_crc32": 924065586, "savesize": 131072, "savetype": 6}, "0bde2155cd2ccd33327ad77491f90116587d210a": {"rom_size": 4194304, "rom_crc32": 2756421535, "savesize": 131072, "savetype": 6}, "d403fd1341f13106d47baa56a4f22e8380962041": {"rom_size": 4194304, "rom_crc32": 2296033919, "savesize": 131072, "savetype": 6}, "8d904c5caddcc4b8a4698477362b16a9fd7be742": {"rom_size": 8388608, "rom_crc32": 990074497, "savesize": 512, "savetype": 1}, "1eddb2d7fdc5eeccf8b251301e215eff26259dc8": {"rom_size": 8388608, "rom_crc32": 2125767478, "savesize": 512, "savetype": 1}, "034c3eaa513db1efc98ad1b29e92d28e30c883fa": {"rom_size": 4194304, "rom_crc32": 140191515, "savesize": 0, "savetype": 0}, "5942690b24639606bc87a8397cf673f7d6aa99be": {"rom_size": 8388608, "rom_crc32": 3613237405, "savesize": 512, "savetype": 1}, "4853893221d45ebfccb9461053fc3687f6780ecd": {"rom_size": 4194304, "rom_crc32": 176173552, "savesize": 512, "savetype": 1}, "daeec50871e1153dd232a3dc74090123954aa2d3": {"rom_size": 4194304, "rom_crc32": 4072425934, "savesize": 0, "savetype": 0}, "1692bac2caaf63b913c737ac76321a4f94b7364a": {"rom_size": 8388608, "rom_crc32": 2864966090, "savesize": 512, "savetype": 1}, "01e6e5e530c5a7a08b1e3880d4c5b25c570f60b3": {"rom_size": 8388608, "rom_crc32": 1644589001, "savesize": 512, "savetype": 1}, "1403d29d785921ef64c937a425480cc3ac55994b": {"rom_size": 8388608, "rom_crc32": 302064698, "savesize": 8192, "savetype": 2}, "d0bdd1fa342fc95d120afb7e309e46a190e76a46": {"rom_size": 8388608, "rom_crc32": 2660255083, "savesize": 512, "savetype": 1}, "6a901e4829b0499723149d097513beb9b674dcbd": {"rom_size": 16777216, "rom_crc32": 3182980266, "savesize": 65536, "savetype": 5}, "2e52ca55e7a2f54398b07c8e34f39c450f943497": {"rom_size": 8388608, "rom_crc32": 1964146372, "savesize": 65536, "savetype": 5}, "db641133a065909dff04b7b8b2c44221c7c58852": {"rom_size": 16777216, "rom_crc32": 1491624550, "savesize": 65536, "savetype": 5}, "e2aff59f5a90503067ec8c9a76980abd141157c1": {"rom_size": 16777216, "rom_crc32": 2785574927, "savesize": 65536, "savetype": 5}, "18f7eb3d4e411eee51b00c371cf0a2ef6c756239": {"rom_size": 16777216, "rom_crc32": 720241536, "savesize": 65536, "savetype": 5}, "55d018e29781c15aded399619c3540ee1a1708f7": {"rom_size": 8388608, "rom_crc32": 795776904, "savesize": 65536, "savetype": 5}, "a4bb144d278b6a9ec0d5bec39ff11adb2f3c4b7a": {"rom_size": 8388608, "rom_crc32": 4021571863, "savesize": 65536, "savetype": 5}, "bced30c579c29b2b49fe8f163d30090fec83a906": {"rom_size": 16777216, "rom_crc32": 3377921335, "savesize": 65536, "savetype": 5}, "7972f2b5220d443bac5fc5a96dd9eee7002aa864": {"rom_size": 8388608, "rom_crc32": 3749679548, "savesize": 65536, "savetype": 5}, "90b3f47c4786796dc677df692cf1bdb060b6bc5a": {"rom_size": 8388608, "rom_crc32": 1167458473, "savesize": 8192, "savetype": 2}, "eb0cc39531a8293a050ef36bb9fa84afc28d0128": {"rom_size": 8388608, "rom_crc32": 1176192400, "savesize": 512, "savetype": 1}, "345fc503e2af5f22eea2fdca0d270fadcc8f04c9": {"rom_size": 8388608, "rom_crc32": 103826858, "savesize": 512, "savetype": 1}, "987d1b781dc128fefc9c7aa67428c6794611bb25": {"rom_size": 8388608, "rom_crc32": 2049707361, "savesize": 512, "savetype": 1}, "2c23259bb404875a3896fea85dd772af5c06331b": {"rom_size": 8388608, "rom_crc32": 737307222, "savesize": 0, "savetype": 0}, "0f40edcced6bf7cfcb44be981e3076f7917be093": {"rom_size": 8388608, "rom_crc32": 1124171079, "savesize": 0, "savetype": 0}, "3ba375334b0507097251abd6780066a100665498": {"rom_size": 16777216, "rom_crc32": 1747013703, "savesize": 512, "savetype": 1}, "a164a12b8c8612b57026d35705fa5108ce4bbb00": {"rom_size": 8388608, "rom_crc32": 2988813850, "savesize": 512, "savetype": 1}, "57b82951bb5454da54ab994bf68a7df90183efaa": {"rom_size": 8388608, "rom_crc32": 829630128, "savesize": 512, "savetype": 1}, "bd29f4d6b3319f5f7732fe0bc84e3b18762d29be": {"rom_size": 8388608, "rom_crc32": 182409157, "savesize": 512, "savetype": 1}, "9f19f09f2379b8c0ae95b3c7b2225c27de435f39": {"rom_size": 8388608, "rom_crc32": 637961159, "savesize": 32768, "savetype": 3}, "668996e3d4b4372ae554d340327bfc30298629ca": {"rom_size": 4194304, "rom_crc32": 1676957769, "savesize": 8192, "savetype": 2}, "9ed9ea30cc3ce1e337425fedaab1080aa4872347": {"rom_size": 16777216, "rom_crc32": 295743305, "savesize": 65536, "savetype": 5}, "352da67011a8dbd93dc26bfd41bd467e1fd54cd8": {"rom_size": 16777216, "rom_crc32": 1591836369, "savesize": 65536, "savetype": 5}, "5cff665bd7d417b3b626a33e7f4d790a3ee91251": {"rom_size": 16777216, "rom_crc32": 2296793738, "savesize": 65536, "savetype": 5}, "dc9e56b67bfc972e49f963acecf96ed2f88f4c1a": {"rom_size": 16777216, "rom_crc32": 2132716661, "savesize": 65536, "savetype": 5}, "b54424b04c68dff800d4e3bed36fe9aa12c926ab": {"rom_size": 8388608, "rom_crc32": 1490834222, "savesize": 8192, "savetype": 2}, "fdd13c9f60eecd1096cea7d38d502fabd3125544": {"rom_size": 8388608, "rom_crc32": 9508500, "savesize": 8192, "savetype": 2}, "0fa9a0ecc4de1006ac3abf2f865339a601ce541d": {"rom_size": 8388608, "rom_crc32": 1006366992, "savesize": 8192, "savetype": 2}, "2c460130b756f9ae5a8846586b03e7ccb25ed6b0": {"rom_size": 8388608, "rom_crc32": 1716114126, "savesize": 65536, "savetype": 5}, "db411340c20b2eaf91c602814b7273904094d692": {"rom_size": 8388608, "rom_crc32": 23570552, "savesize": 65536, "savetype": 5}, "f30595d0c10c2991edbef187bebe6b369d1a7ca1": {"rom_size": 8388608, "rom_crc32": 1315692427, "savesize": 512, "savetype": 1}, "219e82f420dce1e93ef9350a765233b42136ed50": {"rom_size": 8388608, "rom_crc32": 1255739073, "savesize": 512, "savetype": 1}, "73e8635b027860981cbb7fdf969eb18231df07ac": {"rom_size": 8388608, "rom_crc32": 2283570198, "savesize": 512, "savetype": 1}, "ed2fc392ea043516fb5ea27570616a8fcd5b4c1d": {"rom_size": 8388608, "rom_crc32": 2447208477, "savesize": 512, "savetype": 1}, "c60c8073e85888fb79a93b479dac863fecc9d377": {"rom_size": 8388608, "rom_crc32": 2407444518, "savesize": 512, "savetype": 1}, "873d8c577ccd31ceea2e151dd82482204c718838": {"rom_size": 8388608, "rom_crc32": 222837414, "savesize": 512, "savetype": 1}, "7616547e037b81d172a2e2df2b45273ea9fc764b": {"rom_size": 8388608, "rom_crc32": 1292646016, "savesize": 512, "savetype": 1}, "f0090d97647489085d98c08faed991d774780e43": {"rom_size": 8388608, "rom_crc32": 2846823297, "savesize": 512, "savetype": 1}, "bfb80eb65592cbd1dc906cc36c218ccbf958c3e3": {"rom_size": 16777216, "rom_crc32": 4195822154, "savesize": 8192, "savetype": 2}, "557895ad216ce3b67d8ff9496ca0bf3188506a20": {"rom_size": 8388608, "rom_crc32": 3498580417, "savesize": 8192, "savetype": 2}, "1afecbcb7009eecac4690adaae04418e80b9f6c5": {"rom_size": 8388608, "rom_crc32": 27327656, "savesize": 8192, "savetype": 2}, "c4168cdd9c319dbea71377f3a26b3d1bd1dacce1": {"rom_size": 8388608, "rom_crc32": 589012938, "savesize": 8192, "savetype": 2}, "7021d98e8e20c80a024eb46fdfe2f8c28b69b204": {"rom_size": 16777216, "rom_crc32": 409455855, "savesize": 8192, "savetype": 2}, "1a45a78ee7e6fec29a679c1e0eeb4c837b7d95ed": {"rom_size": 8388608, "rom_crc32": 2622701603, "savesize": 32768, "savetype": 3}, "a39115580a1be2d3294e1261a352806b524ef189": {"rom_size": 8388608, "rom_crc32": 663079817, "savesize": 0, "savetype": 0}, "dbd30ba084140e63a999e0786e513326bf7944a2": {"rom_size": 4194304, "rom_crc32": 2348502270, "savesize": 512, "savetype": 1}, "76fa59f4f579187d98ba1d76cdd39e14040cd190": {"rom_size": 4194304, "rom_crc32": 4126196035, "savesize": 512, "savetype": 1}, "c204c9f1f4b19a6cf2a08016bcf5aef4b77ad937": {"rom_size": 16777216, "rom_crc32": 2009166525, "savesize": 32768, "savetype": 3}, "74d85f8511a29306af377b2ad5eaf292a2c62bc0": {"rom_size": 16777216, "rom_crc32": 1429147024, "savesize": 32768, "savetype": 3}, "4d770aa091aa6f2f57808f0811cbf6d206b965b5": {"rom_size": 8388608, "rom_crc32": 1008850912, "savesize": 8192, "savetype": 2}, "48c067d2d25f29a2e7f3eb6df2a1581da1f77183": {"rom_size": 8388608, "rom_crc32": 900399150, "savesize": 512, "savetype": 1}, "f6e278e00b066407578eede2a96d07ccd0ca0a65": {"rom_size": 8388608, "rom_crc32": 851894079, "savesize": 512, "savetype": 1}, "941017ba224bdbceeee10e1f4ed2720696aa2275": {"rom_size": 8388608, "rom_crc32": 1500724006, "savesize": 512, "savetype": 1}, "d319203fc015e9cc509c0963170dcc790de8c05b": {"rom_size": 8388608, "rom_crc32": 757795857, "savesize": 0, "savetype": 0}, "2bad97654a96120e2aa57b5af2da1e656243d674": {"rom_size": 8388608, "rom_crc32": 312493100, "savesize": 512, "savetype": 1}, "6bfbeac6a3ce298f1bd8e022ffb6e2f22cf5f572": {"rom_size": 8388608, "rom_crc32": 3433879587, "savesize": 512, "savetype": 1}, "023613a9085a801a510fde8ad8080e5af51308e3": {"rom_size": 8388608, "rom_crc32": 364769453, "savesize": 512, "savetype": 1}, "8b74506c9f8fd49ac8000a3c97195dab1d437492": {"rom_size": 8388608, "rom_crc32": 4140001155, "savesize": 512, "savetype": 1}, "b26615a44316132aee6671870779ec7d3f9ec07e": {"rom_size": 8388608, "rom_crc32": 2912946789, "savesize": 8192, "savetype": 2}, "fb49f5b61237bdbca67208c57b84073c84de4bdd": {"rom_size": 8388608, "rom_crc32": 2150614977, "savesize": 8192, "savetype": 2}, "e088c524ea53670136541298e8404f6486af08ce": {"rom_size": 16777216, "rom_crc32": 3909257231, "savesize": 8192, "savetype": 2}, "f6a46f17fe397fcdb4a187c9e42404441f08050e": {"rom_size": 16777216, "rom_crc32": 392839909, "savesize": 8192, "savetype": 2}, "69d9b255eb0463236adbcc102e81a1ad6949f760": {"rom_size": 8388608, "rom_crc32": 1177076152, "savesize": 512, "savetype": 1}, "522ebe107c214ec1f26e8e42330f2d4a3b0f2591": {"rom_size": 8388608, "rom_crc32": 3270422099, "savesize": 512, "savetype": 1}, "5989a000cec8b5177d5effa7da948db8b0a9f792": {"rom_size": 8388608, "rom_crc32": 3315509051, "savesize": 512, "savetype": 1}, "4957509c0d76f19e86791db726f1c469c9c805b0": {"rom_size": 4194304, "rom_crc32": 1008884035, "savesize": 0, "savetype": 0}, "3601e79f6ecdf53fb549482973994da605a5cb2b": {"rom_size": 4194304, "rom_crc32": 686210386, "savesize": 512, "savetype": 1}, "8307b60435553a43512baf3a48c4750af502c4c1": {"rom_size": 16777216, "rom_crc32": 2948857079, "savesize": 32768, "savetype": 3}, "991bc28d4110fa37ef6af76af43f62a55282c4f9": {"rom_size": 8388608, "rom_crc32": 3710143642, "savesize": 65536, "savetype": 5}, "052d411a16e5cd61e5f702ed5a97104a0a993cba": {"rom_size": 16777216, "rom_crc32": 2675951768, "savesize": 0, "savetype": 0}, "0e07602b4a6152a47faa5f5ec5f2170d8c566cef": {"rom_size": 16777216, "rom_crc32": 1506925683, "savesize": 0, "savetype": 0}, "a51feb48881b69159b44f2300b9a81426acf2015": {"rom_size": 33554432, "rom_crc32": 648343132, "savesize": 0, "savetype": 0}, "8fa6ae6d9a4137ca8e79bea45b48623bdeab8c90": {"rom_size": 33554432, "rom_crc32": 1963808669, "savesize": 0, "savetype": 0}, "89798293e15df53e2f4e266e27024c57aa6147c3": {"rom_size": 8388608, "rom_crc32": 381930179, "savesize": 0, "savetype": 0}, "7e8391fd342de4d1d2c2a0135d05160d055cb972": {"rom_size": 8388608, "rom_crc32": 4148903037, "savesize": 0, "savetype": 0}, "e72888c637a04ecd9a21459137ad66b55194b76b": {"rom_size": 4194304, "rom_crc32": 1250119618, "savesize": 0, "savetype": 0}, "7077b14afc22abfd7790a5e50dd896f859ae4658": {"rom_size": 4194304, "rom_crc32": 2912414527, "savesize": 0, "savetype": 0}, "03fa721c578aafc53e1776e298aba6de0894ff97": {"rom_size": 4194304, "rom_crc32": 4243772529, "savesize": 0, "savetype": 0}, "e3c0f40f5d2b598aabdafc3579b9efcdfcaa7365": {"rom_size": 4194304, "rom_crc32": 3710325872, "savesize": 0, "savetype": 0}, "7c341d8a2aec74ccf6e2d80ba543f85d18bc401d": {"rom_size": 4194304, "rom_crc32": 2071107588, "savesize": 0, "savetype": 0}, "beb11a7b5d291997d428ba62df5f2b1289f7d938": {"rom_size": 4194304, "rom_crc32": 437509995, "savesize": 0, "savetype": 0}, "aadd97621c7a4e5e5f5d70d614ba60733f1f7480": {"rom_size": 4194304, "rom_crc32": 2025167532, "savesize": 0, "savetype": 0}, "2d490a2b43aa6b9b2191df0dff0c39fb5f3c3b00": {"rom_size": 4194304, "rom_crc32": 3194476664, "savesize": 512, "savetype": 1}, "dc82571f3754d2ca6472381efd0d8a8953c3fc7c": {"rom_size": 8388608, "rom_crc32": 2384004760, "savesize": 512, "savetype": 1}, "025ba2034d77e3377014dbfbf4e2491e84f40ba0": {"rom_size": 8388608, "rom_crc32": 1419103201, "savesize": 512, "savetype": 1}, "189320599a179eff78a8c581b5905f10ea7fb5a4": {"rom_size": 4194304, "rom_crc32": 3284686314, "savesize": 0, "savetype": 0}, "a33796bc50c87764837675be7890ee6cd4806551": {"rom_size": 4194304, "rom_crc32": 3565306398, "savesize": 0, "savetype": 0}, "cb96586b06fc3e33fba8bb24e47b880d2b9383b0": {"rom_size": 4194304, "rom_crc32": 365052049, "savesize": 0, "savetype": 0}, "ebda20d36af494b74a897ad30eb982c1a8d5eeac": {"rom_size": 4194304, "rom_crc32": 4143384866, "savesize": 0, "savetype": 0}, "4c1f7c934e761f2da4e75618162061883bf2e6d6": {"rom_size": 4194304, "rom_crc32": 287225370, "savesize": 0, "savetype": 0}, "e5026a8002e9c8120fa117320bb0de9eaab14867": {"rom_size": 4194304, "rom_crc32": 636020297, "savesize": 0, "savetype": 0}, "26cb62a396a8abc93cec34dc00c24599bf02d5ed": {"rom_size": 4194304, "rom_crc32": 4036721584, "savesize": 0, "savetype": 0}, "e10ebc5995d82b92a522c7f34ee1cda61a1789bb": {"rom_size": 8388608, "rom_crc32": 2590815864, "savesize": 0, "savetype": 0}, "416a2cd9cd46d2a30775d67794014dc16fb95230": {"rom_size": 16777216, "rom_crc32": 238555275, "savesize": 512, "savetype": 1}, "07beed87b038cc0da568f95bf18d1e2db310c028": {"rom_size": 8388608, "rom_crc32": 949176114, "savesize": 512, "savetype": 1}, "9087b08c8fc24bdb7e5d8262e3b2f1b8c635d948": {"rom_size": 8388608, "rom_crc32": 4092750540, "savesize": 512, "savetype": 1}, "b79e1e25c92b58291c6cd2ded4a945b73087c25b": {"rom_size": 8388608, "rom_crc32": 2669053309, "savesize": 512, "savetype": 1}, "27290ef11179368455585d3160d3607425cd4bff": {"rom_size": 8388608, "rom_crc32": 1009024020, "savesize": 512, "savetype": 1}, "c2aa66a70db2ce798ee1ac5cffccce0ce64f2596": {"rom_size": 4194304, "rom_crc32": 843491517, "savesize": 0, "savetype": 0}, "4a8c151d3a5977049a569da39671f1c5ecd5925a": {"rom_size": 4194304, "rom_crc32": 4241991616, "savesize": 0, "savetype": 0}, "8689e56f9379d6369b854722ac6cadfc35bb12bc": {"rom_size": 4194304, "rom_crc32": 1254584502, "savesize": 0, "savetype": 0}, "348fa595032603d7c086e4362aef6c7c84ea00e8": {"rom_size": 4194304, "rom_crc32": 3762053950, "savesize": 0, "savetype": 0}, "c187283677a958206d53aa6ba3b74d25123c094e": {"rom_size": 4194304, "rom_crc32": 2005049860, "savesize": 0, "savetype": 0}, "7ebb8be768766d0b93dd57d63d8f3563c77ecb54": {"rom_size": 4194304, "rom_crc32": 4291862597, "savesize": 0, "savetype": 0}, "3f6710cda4b24ae2746030b35079a29d18bdc03f": {"rom_size": 4194304, "rom_crc32": 1203528117, "savesize": 0, "savetype": 0}, "84d1df5bad0e31694a019d5b56de8fe8c4664938": {"rom_size": 4194304, "rom_crc32": 3329103012, "savesize": 32768, "savetype": 3}, "b8d9677fe3608e4aeb245add04b0d7b7a7bcb419": {"rom_size": 8388608, "rom_crc32": 2439887317, "savesize": 512, "savetype": 1}, "8adb8516c5c9d1b90338c4fb3ab644c6f7fadbf2": {"rom_size": 8388608, "rom_crc32": 2299541651, "savesize": 512, "savetype": 1}, "41e022244274b3677c7d82ba9a88a5000f5dd319": {"rom_size": 8388608, "rom_crc32": 3625080948, "savesize": 512, "savetype": 1}, "d066634cb5a187c66cda06436678b2d85ce73da0": {"rom_size": 4194304, "rom_crc32": 1860835005, "savesize": 8192, "savetype": 2}, "b91f99af9133e14295474ab3b84a196cf2b7bdd8": {"rom_size": 16777216, "rom_crc32": 3764187037, "savesize": 32768, "savetype": 3}, "4a64f4af472f6494657f4d2e4cb26939c7927f29": {"rom_size": 4194304, "rom_crc32": 3177144140, "savesize": 512, "savetype": 1}, "1abf48d3a358cea13bc280520b0a0bca75dcb840": {"rom_size": 4194304, "rom_crc32": 2871470080, "savesize": 512, "savetype": 1}, "3b80d2361455b6285c7b46a1e5ae156efbca3463": {"rom_size": 8388608, "rom_crc32": 460994585, "savesize": 0, "savetype": 0}, "b24f481e6d3e652679bd5b8c87a1209a6d4d6aa3": {"rom_size": 8388608, "rom_crc32": 2110316686, "savesize": 0, "savetype": 0}, "f0306b9f2aa8e900e065d8b9e892dad4445ae32e": {"rom_size": 8388608, "rom_crc32": 767046257, "savesize": 0, "savetype": 0}, "6c9a4cb7946b219150b446f838f1e93221c9732d": {"rom_size": 4194304, "rom_crc32": 286616968, "savesize": 0, "savetype": 0}, "d1598944c9c81a54c6fbab26db0717bac2139032": {"rom_size": 8388608, "rom_crc32": 1519212342, "savesize": 0, "savetype": 0}, "ecc79d39aa91b1b5a303303e55b053e36317f14b": {"rom_size": 8388608, "rom_crc32": 2940817184, "savesize": 0, "savetype": 0}, "eac5c62068ff328b440d3f376e4c8800172a6156": {"rom_size": 8388608, "rom_crc32": 1751371290, "savesize": 512, "savetype": 1}, "cb1eec894d313c005f54692abd4cf605d5119e01": {"rom_size": 8388608, "rom_crc32": 592927730, "savesize": 512, "savetype": 1}, "3d0582a7e1938913a1beb139931d3ffee8a10133": {"rom_size": 8388608, "rom_crc32": 2127374798, "savesize": 512, "savetype": 1}, "568030558c4247dce17ed96ff553a6a3cf01308f": {"rom_size": 8388608, "rom_crc32": 814458524, "savesize": 512, "savetype": 1}, "0e9e317d024ea76f32b495eda44aac2a28c11f89": {"rom_size": 8388608, "rom_crc32": 4027047905, "savesize": 512, "savetype": 1}, "ba3c971fa54e8486d4a89435103e280c2c3407ce": {"rom_size": 8388608, "rom_crc32": 2935716692, "savesize": 512, "savetype": 1}, "2f21cfe56e2ad7f9f82c70960b4624bdaba098b4": {"rom_size": 8388608, "rom_crc32": 3816597817, "savesize": 8192, "savetype": 2}, "4f74028a5372743cbbd24f76f5b0fa86aa1b9a0f": {"rom_size": 4194304, "rom_crc32": 3687662913, "savesize": 0, "savetype": 0}, "36265cd92f1dd045a3dd05eac139b1a1e1db8a95": {"rom_size": 8388608, "rom_crc32": 2519926858, "savesize": 8192, "savetype": 2}, "c75be2b74abe5ba9f3b30494d7f03c3639ea49de": {"rom_size": 8388608, "rom_crc32": 2820988735, "savesize": 8192, "savetype": 2}, "f85a1fd404dd81a826ed31040139f47855e76585": {"rom_size": 8388608, "rom_crc32": 2064162634, "savesize": 8192, "savetype": 2}, "4b849b0df89497e9ce85f1d1759eb0991ffee00a": {"rom_size": 16777216, "rom_crc32": 1251434312, "savesize": 512, "savetype": 1}, "3f75904dc1c815fdb1af2d129709ded199b76b94": {"rom_size": 16777216, "rom_crc32": 934327613, "savesize": 512, "savetype": 1}, "7db8389599a9d757c028f7fb9e92faa61704dbfa": {"rom_size": 8388608, "rom_crc32": 4042246616, "savesize": 512, "savetype": 1}, "9104ccd0c3fa4f1bcdb8f2d81d0f5b9aa0fcac3d": {"rom_size": 8388608, "rom_crc32": 1831035265, "savesize": 512, "savetype": 1}, "689ffd0a1f8ea5a551d4396a18a0df5dbc6beb1f": {"rom_size": 8388608, "rom_crc32": 2167260538, "savesize": 512, "savetype": 1}, "184cb568acbf0633c68165993ec93c0b2fdd373c": {"rom_size": 8388608, "rom_crc32": 2366840935, "savesize": 8192, "savetype": 2}, "f199cdbb8530c555733a3ed76721e74d2c134114": {"rom_size": 8388608, "rom_crc32": 1947682421, "savesize": 8192, "savetype": 2}, "ab292b751b012639c68359230f7d03b8704b79f7": {"rom_size": 8388608, "rom_crc32": 4134118248, "savesize": 8192, "savetype": 2}, "0d1a7476313149c2a0c1ca8f6465e07095f95f9d": {"rom_size": 8388608, "rom_crc32": 2360388215, "savesize": 8192, "savetype": 2}, "511d8e19042ac5fc80342851705a3cc31acb978c": {"rom_size": 8388608, "rom_crc32": 525420988, "savesize": 8192, "savetype": 2}, "df4536bed7429338457ecdc0d2302dabe00767de": {"rom_size": 8388608, "rom_crc32": 3213246595, "savesize": 8192, "savetype": 2}, "b12c509342b200300a9724a156455122e2a8b9b5": {"rom_size": 4194304, "rom_crc32": 958137495, "savesize": 512, "savetype": 1}, "4344347853d06d6be501d92f835ede1f81964f3e": {"rom_size": 4194304, "rom_crc32": 178035048, "savesize": 512, "savetype": 1}, "caa0a3741f5b12b2209e48bca8ebf27925a20b7c": {"rom_size": 8388608, "rom_crc32": 2259501063, "savesize": 512, "savetype": 1}, "330b7c3762fc84b08e59af6edb79699aa197cfd2": {"rom_size": 4194304, "rom_crc32": 3294086619, "savesize": 512, "savetype": 1}, "94183ee761eba72489289384ec3dfa0c4a68d019": {"rom_size": 4194304, "rom_crc32": 1306068834, "savesize": 512, "savetype": 1}, "e7724e21450817a5944e5496d50eec073904b646": {"rom_size": 4194304, "rom_crc32": 3754462526, "savesize": 65536, "savetype": 5}, "fb56c6cff2d21ecc0471cacf5e18f59f5a480b1d": {"rom_size": 4194304, "rom_crc32": 4257110566, "savesize": 0, "savetype": 0}, "f9345650c1f11cf11e0a3fd068bd337134a82f9e": {"rom_size": 16777216, "rom_crc32": 2833801611, "savesize": 512, "savetype": 1}, "feb9b9d8da11ee458f8f4d5f06979cac827956e0": {"rom_size": 16777216, "rom_crc32": 2841695803, "savesize": 512, "savetype": 1}, "969f22ccf0225ceabf44187fbbf83334e1cdaae1": {"rom_size": 4194304, "rom_crc32": 683926033, "savesize": 512, "savetype": 1}, "2154594bf042cb37620dd355d0edb406d1d12e34": {"rom_size": 8388608, "rom_crc32": 110702365, "savesize": 512, "savetype": 1}, "a7a08f09916d90453579515ff4650fcb4d499d91": {"rom_size": 8388608, "rom_crc32": 2863063361, "savesize": 512, "savetype": 1}, "ce74538f5c987cd491aaf8888328fc48466b06cb": {"rom_size": 8388608, "rom_crc32": 3391378777, "savesize": 512, "savetype": 1}, "4a7b1fc8b06deee99a21f02b81ba6a11698542c7": {"rom_size": 8388608, "rom_crc32": 747550881, "savesize": 512, "savetype": 1}, "2e7f8e8f6e47977d403e3f7f787eae557ac971ba": {"rom_size": 8388608, "rom_crc32": 3264503106, "savesize": 0, "savetype": 0}, "989b5967f84323fdd2e521a8b1e54fec8c6b5aab": {"rom_size": 8388608, "rom_crc32": 460215831, "savesize": 32768, "savetype": 3}, "ead8b4fdf7a189d37baae34d03758ae70f3378da": {"rom_size": 16777216, "rom_crc32": 350971271, "savesize": 8192, "savetype": 2}, "54297446109bd4e3d46b8067f2dee1da88c57c8e": {"rom_size": 8388608, "rom_crc32": 1078194656, "savesize": 8192, "savetype": 2}, "a58dd5dc8bf1e67c84b08b82cf50b0a40b80a028": {"rom_size": 8388608, "rom_crc32": 3962723474, "savesize": 65536, "savetype": 5}, "8e26a7ba6c1687473f84f8be0256bdd5c0365af8": {"rom_size": 8388608, "rom_crc32": 2514507925, "savesize": 65536, "savetype": 5}, "eec0a1975c68ed9f18329c6e91c13b46d536882e": {"rom_size": 4194304, "rom_crc32": 578797931, "savesize": 32768, "savetype": 3}, "b2142d341377719bb2a586514a1afa7bcf301bf8": {"rom_size": 8388608, "rom_crc32": 2034968066, "savesize": 0, "savetype": 0}, "b755e34957e9816e83a814f7eb0c41c9558921e6": {"rom_size": 8388608, "rom_crc32": 3576552673, "savesize": 0, "savetype": 0}, "5ae966235092772bddf65d5e4cfa9d6d5a8fe9b4": {"rom_size": 8388608, "rom_crc32": 2333407724, "savesize": 0, "savetype": 0}, "fe40a3df950b891a713d00c12bb3d8712789acb0": {"rom_size": 4194304, "rom_crc32": 2517786798, "savesize": 512, "savetype": 1}, "5cbf0d8b6a2f1cf20cb68d202ddedf57e92d55ce": {"rom_size": 4194304, "rom_crc32": 3052912451, "savesize": 512, "savetype": 1}, "e4c9e974a10ab2e532ce4874f3a86e9e92c0cdcb": {"rom_size": 4194304, "rom_crc32": 693543130, "savesize": 512, "savetype": 1}, "1b217939a0145e8f509b5c3b7fbc3dcfa45a829f": {"rom_size": 8388608, "rom_crc32": 4213343471, "savesize": 512, "savetype": 1}, "b0445765c1398ec841abca68d0fd8b1c8911dbcc": {"rom_size": 8388608, "rom_crc32": 352232896, "savesize": 512, "savetype": 1}, "25f3db9040cb167a6050202031c971488e6ec2ae": {"rom_size": 8388608, "rom_crc32": 1041159689, "savesize": 512, "savetype": 1}, "88a1acf78cfb2e8e34e85b6a4e5219d1294f0771": {"rom_size": 8388608, "rom_crc32": 3318557730, "savesize": 512, "savetype": 1}, "a755241878388b44e43146febb34b89e8f670076": {"rom_size": 16777216, "rom_crc32": 1005814610, "savesize": 512, "savetype": 1}, "28824367f0d3b68917f0e56fc84d32bbc707f3ca": {"rom_size": 16777216, "rom_crc32": 2010451654, "savesize": 512, "savetype": 1}, "4aa4abad674b3313e7f2dcad4b820c6a3ef67c2e": {"rom_size": 4194304, "rom_crc32": 1518237227, "savesize": 65536, "savetype": 5}, "4a13a4198da97326c7d05146277bb17c55fde103": {"rom_size": 4194304, "rom_crc32": 3856707825, "savesize": 512, "savetype": 1}, "bcb9f7d2c23f2d26c6eb1e97c2f0c196d3bd66f6": {"rom_size": 8388608, "rom_crc32": 128131737, "savesize": 0, "savetype": 0}, "53039b0bcd342bb9d4e34829ccc604b5cec01ab0": {"rom_size": 8388608, "rom_crc32": 1322959482, "savesize": 0, "savetype": 0}, "49a0d40b411973f9af97c634537bb06c966231da": {"rom_size": 4194304, "rom_crc32": 38410516, "savesize": 32768, "savetype": 3}, "979a4b05f64720786c6c89f9910025b20e2a367c": {"rom_size": 4194304, "rom_crc32": 2326194458, "savesize": 32768, "savetype": 3}, "e0b15a5125d6b0c593086e6bd659eb1f7a11bb15": {"rom_size": 4194304, "rom_crc32": 4054097238, "savesize": 32768, "savetype": 3}, "c63a7c9abc0c50de3aff710f93a6fa4bba30503d": {"rom_size": 4194304, "rom_crc32": 765839646, "savesize": 32768, "savetype": 3}, "3d2a882cf5fe3f8932000531f5eb8ad37557c6ee": {"rom_size": 4194304, "rom_crc32": 3548803775, "savesize": 32768, "savetype": 3}, "c9ed82d3960e1d50c3af095217c5fcd6939223a8": {"rom_size": 16777216, "rom_crc32": 167110258, "savesize": 512, "savetype": 1}, "aa0dd57079bdc1f440fd29dc3436e9626d17a1d6": {"rom_size": 8388608, "rom_crc32": 2332997960, "savesize": 512, "savetype": 1}, "ee0d27b840e9193328d574782b606d1e33030f87": {"rom_size": 8388608, "rom_crc32": 1747154201, "savesize": 512, "savetype": 1}, "30b0bcfecd44f6c66dae35591794b716f2b60ead": {"rom_size": 16777216, "rom_crc32": 4200870775, "savesize": 8192, "savetype": 2}, "da4db3492ed86656a1ded881765064e96635f249": {"rom_size": 16777216, "rom_crc32": 743976947, "savesize": 8192, "savetype": 2}, "185ab02f4cb8416d173907a69e72e64a088e2f84": {"rom_size": 8388608, "rom_crc32": 2473615933, "savesize": 512, "savetype": 1}, "8fd8712ca516b633aa7526c4f51bc27e82f6080b": {"rom_size": 4194304, "rom_crc32": 1016180896, "savesize": 512, "savetype": 1}, "021ecbff867b95207b15a42505740d3406e9a6d4": {"rom_size": 8388608, "rom_crc32": 277624117, "savesize": 8192, "savetype": 2}, "5a3aebe457e1c016b55f300b3a51d337f78866dd": {"rom_size": 8388608, "rom_crc32": 3477503515, "savesize": 8192, "savetype": 2}, "98c3baa3db62cdba4b882f8052193cf3ee423cbd": {"rom_size": 8388608, "rom_crc32": 1512119136, "savesize": 8192, "savetype": 2}, "c8cdc1861d9de5a1cb71d0620620b2e3f2ca4652": {"rom_size": 8388608, "rom_crc32": 2685027632, "savesize": 32768, "savetype": 3}, "43b1c2f0617e0a75d29739582bdb01c4e188820f": {"rom_size": 8388608, "rom_crc32": 3979775729, "savesize": 512, "savetype": 1}, "f40c3b42526cd5f56eb0d05fb3d9c2cb43ca3a1c": {"rom_size": 8388608, "rom_crc32": 833725830, "savesize": 8192, "savetype": 2}, "67880f732f580071ba9140c0c5ceec6136796059": {"rom_size": 4194304, "rom_crc32": 642742933, "savesize": 8192, "savetype": 2}, "0ff8e0ca341c9bde58a5bd37cee2be8601378730": {"rom_size": 4194304, "rom_crc32": 1565362373, "savesize": 512, "savetype": 1}, "9e4b28eb18e695c89d941d9eadec6ed31e78f6e5": {"rom_size": 4194304, "rom_crc32": 3066688513, "savesize": 512, "savetype": 1}, "e02dbfb6bcaed0efbc48f5ddd22b07c768026bab": {"rom_size": 4194304, "rom_crc32": 806313253, "savesize": 8192, "savetype": 2}, "db63aa405d800616f7b8a2d1ecbf33dda44e2ccc": {"rom_size": 4194304, "rom_crc32": 2491823139, "savesize": 8192, "savetype": 2}, "bb6f63f9b3ecca2f127997948131dced0d5ea225": {"rom_size": 4194304, "rom_crc32": 2315792829, "savesize": 8192, "savetype": 2}, "63b5666ec87a9aaf7366ec35cb5eaa23f330044c": {"rom_size": 16777216, "rom_crc32": 3146100053, "savesize": 512, "savetype": 1}, "e8b55ffaa8d8db0a03a86ee313a5568473c618c3": {"rom_size": 4194304, "rom_crc32": 2705290917, "savesize": 512, "savetype": 1}, "e562de39c01a4c97c58988b58f398f6ed129b49a": {"rom_size": 16777216, "rom_crc32": 1638352436, "savesize": 512, "savetype": 1}, "0e1c96b87c6dae0bf2a770937310f1ac09a8e8ea": {"rom_size": 16777216, "rom_crc32": 2548134527, "savesize": 512, "savetype": 1}, "91264f738ca86a24dcb67700498eb191b03ab1d3": {"rom_size": 16777216, "rom_crc32": 2468228120, "savesize": 512, "savetype": 1}, "01dbf3f8b6b33bca79fcb8237dea6e32481ddbeb": {"rom_size": 8388608, "rom_crc32": 2509803234, "savesize": 0, "savetype": 0}, "98b7db538fa337368d282c9d600c683e2ada7fbc": {"rom_size": 8388608, "rom_crc32": 3224864199, "savesize": 65536, "savetype": 5}, "afced08761c65e939d8274b9ab96bb851133438f": {"rom_size": 4194304, "rom_crc32": 625472417, "savesize": 0, "savetype": 0}, "ea85b82e985e548f1cca85dee5f5b529dac2bd72": {"rom_size": 8388608, "rom_crc32": 3183504983, "savesize": 0, "savetype": 0}, "f424cc716e1aea366b95b1758876288f5ad90cf6": {"rom_size": 4194304, "rom_crc32": 827547856, "savesize": 0, "savetype": 0}, "de9eb4f83032f91af508f57f3d0a21c1a7ba4909": {"rom_size": 4194304, "rom_crc32": 3327772379, "savesize": 0, "savetype": 0}, "705a4cfe70b3ef87cb09bc5cfe48da2273082bee": {"rom_size": 4194304, "rom_crc32": 1095674356, "savesize": 0, "savetype": 0}, "f18a9734bcfd29fe85f9efe331c371c9a0947e48": {"rom_size": 4194304, "rom_crc32": 435996558, "savesize": 0, "savetype": 0}, "1200eb60c449e75a3cf733812704fa7ae0246fb8": {"rom_size": 4194304, "rom_crc32": 1280555593, "savesize": 0, "savetype": 0}, "41a94e0f25fdffc36da9201fa6a577a0cb0a28db": {"rom_size": 33554432, "rom_crc32": 3150758653, "savesize": 65536, "savetype": 5}, "ffb1229bf6d8c549e13e0f0af4e89ceed68be483": {"rom_size": 33554432, "rom_crc32": 2335387835, "savesize": 65536, "savetype": 5}, "4de78b608d2dad0b08d0719f7daf6a6267f3f89b": {"rom_size": 16777216, "rom_crc32": 622535939, "savesize": 512, "savetype": 1}, "c4a6dda4cefa5b93308a8bc3dd54ec91641873b1": {"rom_size": 4194304, "rom_crc32": 47317639, "savesize": 512, "savetype": 1}, "2c1d15b4401e028a8e712be768645f72966e5c21": {"rom_size": 4194304, "rom_crc32": 2695513785, "savesize": 512, "savetype": 1}, "95759ffc29ce786deec1d91dc9861909acdeeb07": {"rom_size": 4194304, "rom_crc32": 3551411511, "savesize": 512, "savetype": 1}, "67c0d4fc5c782882b45f722504f28de0372bb3b5": {"rom_size": 4194304, "rom_crc32": 1904897083, "savesize": 0, "savetype": 0}, "16905884b3529c9d4c3bf6faa65b7923d609c0e9": {"rom_size": 4194304, "rom_crc32": 2659666121, "savesize": 0, "savetype": 0}, "01655f751f7e5719f84553d097ba60764e5a058d": {"rom_size": 4194304, "rom_crc32": 907386211, "savesize": 0, "savetype": 0}, "9c6d810ebec9342eea9b39ffc24004330bd8939f": {"rom_size": 8388608, "rom_crc32": 3815286394, "savesize": 0, "savetype": 0}, "3a962b36ceade0e7a70a57ca8ae531443992ae4d": {"rom_size": 8388608, "rom_crc32": 2528076019, "savesize": 512, "savetype": 1}, "819ff4c4aa08cfcbd4fe563f477e7b2bb5fd3156": {"rom_size": 4194304, "rom_crc32": 3038851667, "savesize": 512, "savetype": 1}, "a6c8f0f92d807cd3e3f7e74fa530b80713366c4a": {"rom_size": 8388608, "rom_crc32": 3844750008, "savesize": 512, "savetype": 1}, "43c75607ec086b9219fc6e9f49884f3df39a1464": {"rom_size": 8388608, "rom_crc32": 3770497909, "savesize": 512, "savetype": 1}, "0c10d3b2def5783f2d9e9c92b630b4e90e764c39": {"rom_size": 4194304, "rom_crc32": 599338231, "savesize": 512, "savetype": 1}, "c161e7c84da0987bcecc5906641b427567f59714": {"rom_size": 4194304, "rom_crc32": 2170253871, "savesize": 512, "savetype": 1}, "4065c1ba25df88bd65f3a54eede02fe193d659d3": {"rom_size": 8388608, "rom_crc32": 3394202973, "savesize": 512, "savetype": 1}, "93b63c3e08d7d55fd61144095f869c68695931c0": {"rom_size": 8388608, "rom_crc32": 1203015776, "savesize": 512, "savetype": 1}, "dc40695d63ab6a0aaae40ee243270be8538dd6ca": {"rom_size": 8388608, "rom_crc32": 1583087756, "savesize": 0, "savetype": 0}, "1170b779e094a245c4cc09500cac9487f56da9ee": {"rom_size": 33554432, "rom_crc32": 1593826405, "savesize": 32768, "savetype": 3}, "c30d4e7cacb410554df562bfa99adfeaa1ecfc37": {"rom_size": 8388608, "rom_crc32": 2922361107, "savesize": 32768, "savetype": 3}, "4cf37014aeaf7575a5a6fea1b943cf8a8734a160": {"rom_size": 4194304, "rom_crc32": 2099377695, "savesize": 8192, "savetype": 2}, "c51341fc64dae73d6a6912007fd7dbd01a8d86cc": {"rom_size": 8388608, "rom_crc32": 4124708300, "savesize": 0, "savetype": 0}, "0f327a3843789abae6e99601dd610535e6292f21": {"rom_size": 8388608, "rom_crc32": 2785462275, "savesize": 32768, "savetype": 3}, "752df521c028ce2ac64b0230bb28e45981b9bdd0": {"rom_size": 8388608, "rom_crc32": 2748117484, "savesize": 512, "savetype": 1}, "4259b66c47f00b7a82de7f70157a0289116c95ab": {"rom_size": 8388608, "rom_crc32": 3403036524, "savesize": 512, "savetype": 1}, "2c40f1af33c2e2d7ded66f14a1c445a43c288708": {"rom_size": 8388608, "rom_crc32": 3480585713, "savesize": 32768, "savetype": 3}, "56fe24eb12aff8827d292c2b4323dfd4193029d1": {"rom_size": 8388608, "rom_crc32": 2024067796, "savesize": 32768, "savetype": 3}, "411cb69b630ac4e986b1c79ac801e581596e707f": {"rom_size": 8388608, "rom_crc32": 3913241723, "savesize": 512, "savetype": 1}, "1adb53a364b34235920874ebef06f0d9830f48ff": {"rom_size": 8388608, "rom_crc32": 624611422, "savesize": 8192, "savetype": 2}, "0ccc44e1862d397eacb1bf972c162e8299e68c91": {"rom_size": 4194304, "rom_crc32": 2972526372, "savesize": 8192, "savetype": 2}, "8254b89f96425254267cfae7ce0bc448378a4797": {"rom_size": 4194304, "rom_crc32": 1843931223, "savesize": 8192, "savetype": 2}, "035f19adcbe92a7e1e97d0d4afd4569dc064cc7d": {"rom_size": 8388608, "rom_crc32": 1598147070, "savesize": 512, "savetype": 1}, "20fbcb4d6467e6c22fba78e6b8e12d7cea5372d5": {"rom_size": 8388608, "rom_crc32": 3591640585, "savesize": 32768, "savetype": 3}, "a5342479d121793e6404fd99cf461ae7ce390895": {"rom_size": 8388608, "rom_crc32": 4117674874, "savesize": 32768, "savetype": 3}, "8826dda22b2721ec4aa02085d13f51c07330f100": {"rom_size": 16777216, "rom_crc32": 3410920523, "savesize": 32768, "savetype": 3}, "7beca56c8a4ae262cbad967a1f192ab250077f7b": {"rom_size": 8388608, "rom_crc32": 2019396492, "savesize": 32768, "savetype": 3}, "a2a7b8e7c258bf971f15328bb5d97635e8fe70ec": {"rom_size": 8388608, "rom_crc32": 1343005048, "savesize": 32768, "savetype": 3}, "7da3407a38328da4abf6f1acf20230d22a9a4aaa": {"rom_size": 4194304, "rom_crc32": 1101678174, "savesize": 0, "savetype": 0}, "5c10c43280db42868edbc73293bb514b02b02291": {"rom_size": 4194304, "rom_crc32": 148314761, "savesize": 0, "savetype": 0}, "0ce6e1f9b7c9a23df2f50bb5943b691d2384aa38": {"rom_size": 8388608, "rom_crc32": 3851352482, "savesize": 512, "savetype": 1}, "cf6555747a642dfb8f4908662bd08bdd94806663": {"rom_size": 8388608, "rom_crc32": 1719274758, "savesize": 32768, "savetype": 3}, "d0e89b3b77a16aa8b1a89e303c15e6bd99277046": {"rom_size": 4194304, "rom_crc32": 3664774880, "savesize": 0, "savetype": 0}, "8878b0f073b813136d6905afdbc5582acd3fe657": {"rom_size": 4194304, "rom_crc32": 3116718882, "savesize": 0, "savetype": 0}, "f75252a1cf17d7a64687e60bb3fa6e4c14ba7fc3": {"rom_size": 4194304, "rom_crc32": 3365792591, "savesize": 0, "savetype": 0}, "8d71092693f2dd5b28a55ef0b6632597137b9781": {"rom_size": 4194304, "rom_crc32": 2866363816, "savesize": 0, "savetype": 0}, "efaf3c6e2ac743a7b4118ae8f523cc42e9e122b4": {"rom_size": 4194304, "rom_crc32": 1311524796, "savesize": 0, "savetype": 0}, "0b412928616a7d4ba273961aa618c4c1d1c90193": {"rom_size": 4194304, "rom_crc32": 4039771785, "savesize": 0, "savetype": 0}, "7c28944ad8bbf9d6b34265df2cef37df614aab00": {"rom_size": 8388608, "rom_crc32": 3732532675, "savesize": 512, "savetype": 1}, "4f83101577454db2741529718f176e6d9c25d223": {"rom_size": 16777216, "rom_crc32": 3368099984, "savesize": 0, "savetype": 0}, "14a2255ffab26205ea04df3fc2c193900c6504e9": {"rom_size": 16777216, "rom_crc32": 2787646931, "savesize": 512, "savetype": 1}, "093ba29fdf4293dd85bb5da74928df15a4b2f9bd": {"rom_size": 4194304, "rom_crc32": 166735722, "savesize": 512, "savetype": 1}, "f9733b0069967d1c0069007940a97f7102c19327": {"rom_size": 4194304, "rom_crc32": 1658446800, "savesize": 512, "savetype": 1}, "2fdf37b5f537b36283b3fa5890311b2494e03dd0": {"rom_size": 8388608, "rom_crc32": 1846356476, "savesize": 512, "savetype": 1}, "5bc616a260c1b3241dc9b7fdf242913b757d3358": {"rom_size": 8388608, "rom_crc32": 1225006024, "savesize": 512, "savetype": 1}, "28ca0132ee5923ab00d79f0e36ac1663585a5fde": {"rom_size": 16777216, "rom_crc32": 3271299813, "savesize": 512, "savetype": 1}, "90990fdb7cb133087c4c824c26a64cdc5223f72e": {"rom_size": 4194304, "rom_crc32": 3853089368, "savesize": 0, "savetype": 0}, "d2a4542329c7b08cd9316cc33b69835019b881ce": {"rom_size": 4194304, "rom_crc32": 1527351912, "savesize": 0, "savetype": 0}, "28fae77ac32c5f705f3d1bc42be4396d8307fcd8": {"rom_size": 4194304, "rom_crc32": 4128770805, "savesize": 65536, "savetype": 5}, "d99e6c8498bb7b4e7706524a618a46134122bd73": {"rom_size": 4194304, "rom_crc32": 2679418634, "savesize": 65536, "savetype": 5}, "4379f548feea37e96d360084215d39a407c4bffb": {"rom_size": 4194304, "rom_crc32": 1524261110, "savesize": 65536, "savetype": 5}, "21a4580b592356d6f539e23add8be0ad5bcba542": {"rom_size": 4194304, "rom_crc32": 1690829561, "savesize": 512, "savetype": 1}, "7ee7eed301ae5ce3e8473bca1ddc347b4d5f5fcc": {"rom_size": 16777216, "rom_crc32": 2949356776, "savesize": 8192, "savetype": 2}, "25a4b6ad9566ec49109d2e084b79c4e937e75b51": {"rom_size": 16777216, "rom_crc32": 493441187, "savesize": 8192, "savetype": 2}, "8b4c010eb8ca9da57b682108b58dfd8589ae012c": {"rom_size": 8388608, "rom_crc32": 2662374519, "savesize": 512, "savetype": 1}, "3a496c7dbd9ab3f1de84c2d0929783cecbf362fe": {"rom_size": 8388608, "rom_crc32": 702545716, "savesize": 512, "savetype": 1}, "5729ac04b701ee5c72eb862fce932ec7eeafee73": {"rom_size": 4194304, "rom_crc32": 3016194657, "savesize": 0, "savetype": 0}, "212a6ede2317026439df3d01fcf897c207847eb9": {"rom_size": 4194304, "rom_crc32": 1902729841, "savesize": 0, "savetype": 0}, "5e8ec60a36e25920c77026c87e5d5661ca239f85": {"rom_size": 8388608, "rom_crc32": 3299486587, "savesize": 512, "savetype": 1}, "f19cde74e97c4499fdf0c3bdd375dc901693e09e": {"rom_size": 4194304, "rom_crc32": 2749489207, "savesize": 512, "savetype": 1}, "b025ff4ecc22c54d63e796cfa57d1c4a9955b6a5": {"rom_size": 4194304, "rom_crc32": 153828814, "savesize": 512, "savetype": 1}, "e0a304ef425edd5e2a3b8abbb3ca30f08955e8cc": {"rom_size": 4194304, "rom_crc32": 3114518648, "savesize": 512, "savetype": 1}, "e4b32f7b58a2d54c45a3b7bb47a20e0024a9b87b": {"rom_size": 8388608, "rom_crc32": 2028316227, "savesize": 512, "savetype": 1}, "3d3e4a1ec4a3f440a46bc44b05e74a856dca6ec5": {"rom_size": 8388608, "rom_crc32": 2950700063, "savesize": 8192, "savetype": 2}, "e4c571b98833c5b4c51e4c73383bc2bbeb54c17c": {"rom_size": 4194304, "rom_crc32": 1198979182, "savesize": 0, "savetype": 0}, "510612f15e22d582df48560aa849bb9810c140f3": {"rom_size": 4194304, "rom_crc32": 133255506, "savesize": 0, "savetype": 0}, "e59f141d492064ca3e01c4bcc80529465ab1e6a5": {"rom_size": 4194304, "rom_crc32": 2409786007, "savesize": 8192, "savetype": 2}, "15bbba7bc3fc1c430faf98a499e11299410fba18": {"rom_size": 4194304, "rom_crc32": 2978448577, "savesize": 8192, "savetype": 2}, "eabe606e60ae3af1df876d3d43d9c79800454bdc": {"rom_size": 4194304, "rom_crc32": 4009439999, "savesize": 0, "savetype": 0}, "8d590ff73288a0b955295b31ccc078744831fe5f": {"rom_size": 4194304, "rom_crc32": 3045265247, "savesize": 0, "savetype": 0}, "ada9e1ce5fc3af4a60645a191ae5e03c35bf7d92": {"rom_size": 4194304, "rom_crc32": 57553072, "savesize": 0, "savetype": 0}, "e69078bf1e1012ad93e8a68067d032fcdb00fec5": {"rom_size": 4194304, "rom_crc32": 1378088362, "savesize": 0, "savetype": 0}, "c03ef1732114b27b1f8caf0db24f563c842dddeb": {"rom_size": 4194304, "rom_crc32": 2397252798, "savesize": 0, "savetype": 0}, "6e613fe1222b38f56f4d19f1f039c598bb0ce487": {"rom_size": 4194304, "rom_crc32": 3900218392, "savesize": 0, "savetype": 0}, "0240ab05013db8351d7888086d8f0235f10547b5": {"rom_size": 4194304, "rom_crc32": 2139926703, "savesize": 512, "savetype": 1}, "d35234947e5c32836df19f2c8351b38d90fc7713": {"rom_size": 8388608, "rom_crc32": 1167961909, "savesize": 512, "savetype": 1}, "7a3d72a715f2714203750d7c15edff92e2296728": {"rom_size": 4194304, "rom_crc32": 4059779025, "savesize": 512, "savetype": 1}, "4ca59ad27edd2a3a9f486e6826779d2000229dea": {"rom_size": 4194304, "rom_crc32": 1721039181, "savesize": 512, "savetype": 1}, "80d031971ba75a5ed5ad281dda08eacdc622137e": {"rom_size": 4194304, "rom_crc32": 2369458542, "savesize": 0, "savetype": 0}, "c2859f6abdec8ec1d82af78d19c764e7d6bd9ceb": {"rom_size": 4194304, "rom_crc32": 3227490567, "savesize": 0, "savetype": 0}, "a1ed707d6e3edc1b7073e91679fb926faa4ca29c": {"rom_size": 4194304, "rom_crc32": 167630437, "savesize": 0, "savetype": 0}, "a1558237eb24361c7e7ffdd392a47f5e9ffe9d48": {"rom_size": 8388608, "rom_crc32": 636761233, "savesize": 512, "savetype": 1}, "316baf5f5b47bf4818b04beb5bb50ff821531ea7": {"rom_size": 8388608, "rom_crc32": 884893987, "savesize": 512, "savetype": 1}, "1030f0ad53ce177737dd0ee0803372f7653c0e4f": {"rom_size": 8388608, "rom_crc32": 3363784202, "savesize": 512, "savetype": 1}, "e242010d46fffc0b0f0c2634b24916adca658508": {"rom_size": 8388608, "rom_crc32": 2184657732, "savesize": 512, "savetype": 1}, "846dd3233ddafd3345f45505a9dbbbca17aafe29": {"rom_size": 8388608, "rom_crc32": 1101603360, "savesize": 512, "savetype": 1}, "35ee16e2e773e7556fbfa631c9ce62463ba912c2": {"rom_size": 4194304, "rom_crc32": 1841021308, "savesize": 0, "savetype": 0}, "2d45b6f60351e10bf7abb37b3192ec0e99e571fe": {"rom_size": 8388608, "rom_crc32": 1151827825, "savesize": 512, "savetype": 1}, "3d3027be29611c487c1fc57da303e574bca7568f": {"rom_size": 8388608, "rom_crc32": 725232306, "savesize": 512, "savetype": 1}, "4c2477cc5c93b74ec07e82869459eb773bf87fa1": {"rom_size": 4194304, "rom_crc32": 2620565545, "savesize": 8192, "savetype": 2}, "33aa22f27a5dfe3bfd14a5af7d704645f9ea5653": {"rom_size": 33554432, "rom_crc32": 2825880650, "savesize": 8192, "savetype": 2}, "43c6cc0b9af1dc2165be1323e232e72036df607b": {"rom_size": 33554432, "rom_crc32": 1041101104, "savesize": 8192, "savetype": 2}, "13ae68335883a2687a405560708cffb93ac91dc6": {"rom_size": 33554432, "rom_crc32": 1006266615, "savesize": 8192, "savetype": 2}, "50779ae9f99b2e279254850f2964de8ebe7516f9": {"rom_size": 8388608, "rom_crc32": 827935610, "savesize": 8192, "savetype": 2}, "c7d56c91f302e86650b2fdf52827a04f522fbf1b": {"rom_size": 8388608, "rom_crc32": 3863750236, "savesize": 8192, "savetype": 2}, "8321af4b0785defa6b5c8671106564551e69b521": {"rom_size": 8388608, "rom_crc32": 99930282, "savesize": 8192, "savetype": 2}, "65bd9e78449931d0b629243c8e7227b64599b52e": {"rom_size": 8388608, "rom_crc32": 709530292, "savesize": 8192, "savetype": 2}, "ccac74b36867267240d3362c72b7b1a680e1fbfe": {"rom_size": 8388608, "rom_crc32": 546142188, "savesize": 512, "savetype": 1}, "44772fa358b1399fce93dca623dba3a9e63f9f45": {"rom_size": 8388608, "rom_crc32": 3547876178, "savesize": 512, "savetype": 1}, "81b65075ba3c7b721f79bf7cdc9e528f32d9a8a5": {"rom_size": 8388608, "rom_crc32": 2935404492, "savesize": 8192, "savetype": 2}, "78a9cf7dfa0e65510b10fb5e37640feb4bf72c4b": {"rom_size": 16777216, "rom_crc32": 1481488038, "savesize": 32768, "savetype": 3}, "6d3e9fd7cd5cdbde0600f68d64b2d1e343975425": {"rom_size": 16777216, "rom_crc32": 395873947, "savesize": 32768, "savetype": 3}, "65973eb14f88c645bb7d0af95f54a5fb6d967496": {"rom_size": 16777216, "rom_crc32": 2920976029, "savesize": 0, "savetype": 0}, "99e224a1447fcf390258a430a7bb4451f86af6cf": {"rom_size": 8388608, "rom_crc32": 1629387709, "savesize": 0, "savetype": 0}, "ef3ec521508696977f9672d8c006c0d674ebcf3b": {"rom_size": 8388608, "rom_crc32": 3996221289, "savesize": 65536, "savetype": 5}, "cb6c0e3dde6d76ffc21ee33e343beb9cfdc1c4dc": {"rom_size": 8388608, "rom_crc32": 1370709639, "savesize": 65536, "savetype": 5}, "6fa5952ed82ced10cb525ed693c4a63b4c8a0f0e": {"rom_size": 8388608, "rom_crc32": 2338196007, "savesize": 65536, "savetype": 5}, "28685df31700adc7c7c1f0db3bd436eba00fdba6": {"rom_size": 16777216, "rom_crc32": 1175324479, "savesize": 0, "savetype": 0}, "286b2460275f61a0116b684af2b098c7389ae3ef": {"rom_size": 16777216, "rom_crc32": 165725529, "savesize": 0, "savetype": 0}, "093f7fee12d282828f2632c53b66b16ea9191ea7": {"rom_size": 8388608, "rom_crc32": 2371007429, "savesize": 0, "savetype": 0}, "8f00d2787333fe266c3d5f8af7992c3324818099": {"rom_size": 8388608, "rom_crc32": 3754981942, "savesize": 32768, "savetype": 3}, "0c99b29ce5dda7b8a905f8c49b914da40312b3be": {"rom_size": 16777216, "rom_crc32": 3516773244, "savesize": 32768, "savetype": 3}, "0df68302f6c82c465968f84263cfbd671a759e1f": {"rom_size": 16777216, "rom_crc32": 337621452, "savesize": 32768, "savetype": 3}, "f1591a92a621c55d757d3b9698ce3c80c4c08942": {"rom_size": 33554432, "rom_crc32": 4184383894, "savesize": 0, "savetype": 0}, "917414b24f95d1a24ab5cdd6a30545d84198048c": {"rom_size": 33554432, "rom_crc32": 3470671968, "savesize": 0, "savetype": 0}, "16c372c1009f963f06406af09d8d49e793813721": {"rom_size": 16777216, "rom_crc32": 1011017804, "savesize": 32768, "savetype": 3}, "9b3dbc573b63637a61160abd0ee151d51d4e806e": {"rom_size": 16777216, "rom_crc32": 1773597225, "savesize": 32768, "savetype": 3}, "eaf48d5f73a6b0bf9fc96c850d36681f11010377": {"rom_size": 16777216, "rom_crc32": 2896560070, "savesize": 32768, "savetype": 3}, "2113e53ec938360a2e4c7870a544a3b6fd03c5df": {"rom_size": 16777216, "rom_crc32": 968222577, "savesize": 32768, "savetype": 3}, "73838797e9a5ef2d2381c4051bf12a36e1b80339": {"rom_size": 33554432, "rom_crc32": 2124581529, "savesize": 32768, "savetype": 3}, "e1ad388ef7b586866bc62de2e97e9b2e762e542e": {"rom_size": 33554432, "rom_crc32": 4091500376, "savesize": 32768, "savetype": 3}, "d2e91f2b116b80d39b7f4cc0b37c8340a100a1bc": {"rom_size": 16777216, "rom_crc32": 749967824, "savesize": 32768, "savetype": 3}, "2bf30f6d25bfd6f4f1b1a67bd587e47fcb266bfe": {"rom_size": 8388608, "rom_crc32": 4077133438, "savesize": 32768, "savetype": 3}, "402b7658deb5c0beef904cc3a14047ab8940dee7": {"rom_size": 16777216, "rom_crc32": 2802142560, "savesize": 32768, "savetype": 3}, "a638ae185721e0b84710ea530af20d140d7ba2e9": {"rom_size": 16777216, "rom_crc32": 3116276625, "savesize": 32768, "savetype": 3}, "cb189c2b7a65eb8f7bb0ba01eff0c461ee4954a1": {"rom_size": 16777216, "rom_crc32": 1746775839, "savesize": 0, "savetype": 0}, "19e6536303989857191daa0826f0c7e42d23bbb6": {"rom_size": 33554432, "rom_crc32": 2047875558, "savesize": 0, "savetype": 0}, "288e46613628f2ace627ac923a4a9890e9f9b5a5": {"rom_size": 16777216, "rom_crc32": 2058480644, "savesize": 32768, "savetype": 3}, "8eb32f71265c61f8dcb207717e48329dcf9f98eb": {"rom_size": 33554432, "rom_crc32": 4096351656, "savesize": 32768, "savetype": 3}, "372f7a33fdcf01d5a80955b2939a28a512f2c53b": {"rom_size": 16777216, "rom_crc32": 468515283, "savesize": 32768, "savetype": 3}, "47217aaab185a81913dbf879ce2b96f1e887ca6e": {"rom_size": 16777216, "rom_crc32": 2555409559, "savesize": 32768, "savetype": 3}, "8252210d50b49ea9725587bd1804c827a4648040": {"rom_size": 16777216, "rom_crc32": 1842329721, "savesize": 32768, "savetype": 3}, "ccbfe10313e4a6030eb7787d7a3d26c571b3e20b": {"rom_size": 33554432, "rom_crc32": 1068674010, "savesize": 32768, "savetype": 3}, "9c331b57d03aca0afb6a6d00a4d8679002d19b25": {"rom_size": 33554432, "rom_crc32": 998899966, "savesize": 32768, "savetype": 3}, "65ed206861eec985f4208d8d6d3703a1a07ef77e": {"rom_size": 4194304, "rom_crc32": 1295362743, "savesize": 512, "savetype": 1}, "a1d88b685272f3e59032aeeab1db8c02862d7a7a": {"rom_size": 8388608, "rom_crc32": 3466100624, "savesize": 0, "savetype": 0}, "0c9fcfc8e078490c42ef48e602171cd624982611": {"rom_size": 4194304, "rom_crc32": 1839339118, "savesize": 512, "savetype": 1}, "00a358a13325fbd5f93361fe4ade8b67ed5a7a25": {"rom_size": 8388608, "rom_crc32": 2683237997, "savesize": 65536, "savetype": 5}, "714f2321b7fb6e6854e196edd3ec26eaa73348e6": {"rom_size": 4194304, "rom_crc32": 2270405061, "savesize": 512, "savetype": 1}, "679b0ed3dd3294cacd4c4de96358152cd985dc3a": {"rom_size": 4194304, "rom_crc32": 1733403887, "savesize": 512, "savetype": 1}, "ac716f459f55af07a4ff8c7bb207021d0450bf86": {"rom_size": 8388608, "rom_crc32": 3035752325, "savesize": 8192, "savetype": 2}, "9fe01fc71058aee83ee4008b0c5c25613d546934": {"rom_size": 16777216, "rom_crc32": 1827107237, "savesize": 8192, "savetype": 2}, "1423395c517f6cf99722e69876a349eebcde3af3": {"rom_size": 8388608, "rom_crc32": 2179214318, "savesize": 8192, "savetype": 2}, "c4a65a688c5f7c26887e06b0387f904de4602903": {"rom_size": 4194304, "rom_crc32": 3542133093, "savesize": 65536, "savetype": 5}, "60a0a115869886ed4973fad07975c7410fc29c64": {"rom_size": 8388608, "rom_crc32": 646945918, "savesize": 65536, "savetype": 5}, "95b3a7696b8d1bcb21a2e341a818dcec3851db3a": {"rom_size": 16777216, "rom_crc32": 2225390004, "savesize": 8192, "savetype": 2}, "342983a2ab0afede6f749a15a80d10f64ebc84f0": {"rom_size": 16777216, "rom_crc32": 4251773062, "savesize": 8192, "savetype": 2}, "6c909d745a8ad0e32270fff74ae764aa5a9032d4": {"rom_size": 4194304, "rom_crc32": 3732675304, "savesize": 65536, "savetype": 5}, "a811e4f0b26f498f61f1a5241fd608755241afac": {"rom_size": 8388608, "rom_crc32": 3312563, "savesize": 32768, "savetype": 3}, "931bcda160c30b5519721381702a0c15975ec7a7": {"rom_size": 8388608, "rom_crc32": 2108083305, "savesize": 32768, "savetype": 3}, "80c8a00c353d3b78bef92a3f34718df52b4ebe58": {"rom_size": 8388608, "rom_crc32": 1541746615, "savesize": 32768, "savetype": 3}, "10a2d9cdf458de3516c2f171f02977f9ce1cdfe9": {"rom_size": 8388608, "rom_crc32": 2569486051, "savesize": 32768, "savetype": 3}, "b67452ab170f3fad849a1a9e1423947f476eabaf": {"rom_size": 4194304, "rom_crc32": 1508008799, "savesize": 0, "savetype": 0}, "249c4eacfa442e8d94debe8b23a5229a90d63d3f": {"rom_size": 4194304, "rom_crc32": 2633189544, "savesize": 0, "savetype": 0}, "5cde18f0f54a3f986763eaa65f89531fb33457af": {"rom_size": 8388608, "rom_crc32": 808351219, "savesize": 0, "savetype": 0}, "86e90f2b1207c030a9242c8a1615a09367c2e990": {"rom_size": 8388608, "rom_crc32": 686338265, "savesize": 0, "savetype": 0}, "e5f748b3ff92ec50f23c21048fa1c306fe3fe9eb": {"rom_size": 8388608, "rom_crc32": 1500896680, "savesize": 0, "savetype": 0}, "cb6719c785e0188ecb9a025b035743f83cce0bf7": {"rom_size": 8388608, "rom_crc32": 156112557, "savesize": 0, "savetype": 0}, "16ba879ce9cbd09fd66123a1a5d74735aa1315d4": {"rom_size": 8388608, "rom_crc32": 201561347, "savesize": 0, "savetype": 0}, "7e7fdea619a9715ac7a2948521174ff4816f9f6d": {"rom_size": 16777216, "rom_crc32": 1910689025, "savesize": 8192, "savetype": 2}, "0694b93592f3a49af4f90db935923c50efb88c6e": {"rom_size": 16777216, "rom_crc32": 671409545, "savesize": 8192, "savetype": 2}, "8e9806c5849dbb116cf02beeee4274f4e0711512": {"rom_size": 8388608, "rom_crc32": 2536806112, "savesize": 65536, "savetype": 5}, "ac4d50a5223e1905a281bdcf3c787794aac0adc6": {"rom_size": 8388608, "rom_crc32": 606356501, "savesize": 65536, "savetype": 5}, "b4fb4232bfb6a420bcc3c424b9cb5c33fdd97383": {"rom_size": 4194304, "rom_crc32": 1243855062, "savesize": 512, "savetype": 1}, "c845bde4bb0d8cf2c8c41e948d734c98817a3d09": {"rom_size": 4194304, "rom_crc32": 161621343, "savesize": 512, "savetype": 1}, "819427130c3a73b35cfcc589ea7f2197f0dbae1c": {"rom_size": 4194304, "rom_crc32": 2938158706, "savesize": 512, "savetype": 1}, "cf190b79b6b1dd4333b68e22b5a7e232be7733e3": {"rom_size": 8388608, "rom_crc32": 2306549907, "savesize": 8192, "savetype": 2}} \ No newline at end of file diff --git a/src/config/fc_AGB_256L30B.txt b/src/config/fc_AGB_256L30B.txt new file mode 100644 index 0000000..ad1083b --- /dev/null +++ b/src/config/fc_AGB_256L30B.txt @@ -0,0 +1,77 @@ +{ + "type":"AGB", + "names":[ + "28F256L03B-DRV with 256L30B" + ], + "flash_ids":[ + [ 0x8A, 0x00, 0x15, 0x88 ] + ], + "voltage":3.3, + "flash_size":0x2000000, + "sector_size":[ + [0x08000, 4], + [0x20000, 255] + ], + "single_write_7FC0_to_7FFF":true, + "commands":{ + "reset":[ + [ 0, 0xFF ], + [ 0x200000, 0xFF ], + [ 0x400000, 0xFF ], + [ 0x600000, 0xFF ], + [ 0x800000, 0xFF ], + [ 0xA00000, 0xFF ], + [ 0xC00000, 0xFF ], + [ 0xE00000, 0xFF ], + [ 0x1000000, 0xFF ], + [ 0x1200000, 0xFF ], + [ 0x1400000, 0xFF ], + [ 0x1600000, 0xFF ], + [ 0x1800000, 0xFF ], + [ 0x1A00000, 0xFF ], + [ 0x1C00000, 0xFF ], + [ 0x1E00000, 0xFF ] + ], + "read_identifier":[ + [ 0, 0x90 ] + ], + "sector_erase":[ + [ "SA", 0x60 ], + [ "SA", 0xD0 ], + [ "SA", 0x20 ], + [ "SA", 0xD0 ] + ], + "sector_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ "SA", 0x80, 0x80 ] + ], + "buffer_write":[ + [ "SA", 0x60 ], + [ "SA", 0xD0 ], + [ "SA", 0xE8 ], + [ "SA", "BS" ], + [ "PA", "PD" ], + [ "SA", 0xD0 ], + [ "SA", 0xFF ] + ], + "buffer_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ "SA", 0x80, 0x80 ], + [ null, null, null ], + [ null, null, null ], + [ "SA", 0x80, 0x80 ], + [ null, null, null ] + ], + "single_write":[ + [ "PA", 0x40 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ "SA", 0x80, 0x80 ] + ] + } +} diff --git a/src/config/fc_AGB_Flash2Advance.txt b/src/config/fc_AGB_Flash2Advance.txt new file mode 100644 index 0000000..adaa2cb --- /dev/null +++ b/src/config/fc_AGB_Flash2Advance.txt @@ -0,0 +1,74 @@ +{ + "type":"AGB", + "names":[ + "Flash2Advance 256M with 2x 28F128J3A150" + ], + "flash_ids":[ + [ 0x89, 0x00, 0x89, 0x00, 0x18, 0x00, 0x18, 0x00 ] + ], + "voltage":3.3, + "flash_size":0x2000000, + "sector_size":0x40000, + "commands":{ + "unlock":[ + [ 0x130ECA8, 0x5354, 1 ], + [ 0x002468A, 0x1234, 5 ], + [ 0x000ECA8, 0x5354, 1 ], + [ 0x002468A, 0x5354, 1 ], + [ 0x002468A, 0x5678, 5 ], + [ 0x130ECA8, 0x5354, 1 ], + [ 0x002468A, 0x5354, 1 ], + [ 0x0ECA800, 0x5678, 1 ], + [ 0x00268A0, 0x1234, 1 ], + [ 0x002468A, 0xABCD, 5 ], + [ 0x130ECA8, 0x5354, 1 ], + [ 0x1E2468A, 0x9413, 1 ] + ], + "reset":[ + [ 0, 0xFF ], + [ 2, 0xFF ] + ], + "read_identifier":[ + [ 0, 0x90 ], + [ 2, 0x90 ] + ], + "sector_erase":[ + [ "SA", 0x20 ], + [ "SA", 0xD0 ], + [ "SA+2", 0x20 ], + [ "SA+2", 0xD0 ], + [ null, null ], + [ null, null ] + ], + "sector_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ "SA", 0x80, 0xFFFF ], + [ "SA+2", 0x80, 0xFFFF ] + ], + "buffer_write":[ + [ "SA", 0xE8 ], + [ "SA+2", 0xE8 ], + [ "SA", "BS" ], + [ "SA+2", "BS" ], + [ "PA", "PD" ], + [ "SA", 0xD0 ], + [ "SA+2", 0xD0 ], + [ null, null ], + [ null, null ] + ], + "buffer_write_wait_for":[ + [ 0, 0x80, 0x8080 ], + [ 2, 0x80, 0x8080 ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0x80, 0xFFFF ], + [ 2, 0x80, 0xFFFF ] + ] + } +} diff --git a/src/config/fc_AGB_M36L0R705.txt b/src/config/fc_AGB_M36L0R705.txt new file mode 100644 index 0000000..c7bba8d --- /dev/null +++ b/src/config/fc_AGB_M36L0R705.txt @@ -0,0 +1,68 @@ +{ + "type":"AGB", + "names":[ + "4455_4400_4000_4350_36L0R_V3 with M36L0R705" + ], + "flash_ids":[ + [ 0x20, 0x00, 0xC4, 0x88 ] + ], + "voltage":3.3, + "flash_size":0x1000000, + "sector_size":[ + [0x20000, 127], + [0x08000, 4] + ], + "commands":{ + "reset":[ + [ 0, 0xFF ], + [ 0x100000, 0xFF ], + [ 0x200000, 0xFF ], + [ 0x300000, 0xFF ], + [ 0x400000, 0xFF ], + [ 0x500000, 0xFF ], + [ 0x600000, 0xFF ], + [ 0x700000, 0xFF ], + [ 0x800000, 0xFF ], + [ 0x900000, 0xFF ], + [ 0xA00000, 0xFF ], + [ 0xB00000, 0xFF ], + [ 0xC00000, 0xFF ], + [ 0xD00000, 0xFF ], + [ 0xE00000, 0xFF ], + [ 0xF00000, 0xFF ] + ], + "read_identifier":[ + [ 0, 0x90 ] + ], + "sector_erase":[ + [ "SA", 0x60 ], + [ "SA", 0xD0 ], + [ "SA", 0x20 ], + [ "SA", 0xD0 ] + ], + "sector_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ "SA", 0x80, 0xFFFF ] + ], + "buffer_write":[ + [ "SA", 0x60 ], + [ "SA", 0xD0 ], + [ "SA", 0xE8 ], + [ "SA", "BS" ], + [ "PA", "PD" ], + [ "SA", 0xD0 ], + [ "SA", 0xFF ] + ], + "buffer_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ "SA", 0x80, 0xFFFF ], + [ null, null, null ], + [ null, null, null ], + [ "SA", 0x80, 0xFFFF ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_AGB_MSP55LV128.txt b/src/config/fc_AGB_MSP55LV128.txt new file mode 100644 index 0000000..4c1fe00 --- /dev/null +++ b/src/config/fc_AGB_MSP55LV128.txt @@ -0,0 +1,67 @@ +{ + "type":"AGB", + "names":[ + "AGB-SD-E05 with MSP55LV128" + ], + "flash_ids":[ + [ 0x04, 0x00, 0x7D, 0x22 ] + ], + "voltage":3.3, + "flash_size":0x1000000, + "sector_size":0x10000, + "chip_erase_timeout":75, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x90 ] + ], + "chip_erase":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFFFF, 0xFFFF ] + ], + "sector_erase":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ "SA", 0x30 ] + ], + "sector_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ "SA", 0xFFFF, 0xFFFF ] + ], + "single_write":[ + [ 0x555, 0xA9 ], + [ 0x2AA, 0x56 ], + [ 0x555, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_AGB_MSP55LV128M.txt b/src/config/fc_AGB_MSP55LV128M.txt new file mode 100644 index 0000000..df78372 --- /dev/null +++ b/src/config/fc_AGB_MSP55LV128M.txt @@ -0,0 +1,69 @@ +{ + "type":"AGB", + "names":[ + "AGB-E05-01 with MSP55LV128M", + "BX2006_0106_NEW with S29GL128N10TFI01" + ], + "flash_ids":[ + [ 0x02, 0x00, 0x7D, 0x22 ], + [ 0x02, 0x00, 0x7D, 0x22 ] + ], + "voltage":3.3, + "flash_size":0x1000000, + "sector_size":0x20000, + "chip_erase_timeout":75, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x90 ] + ], + "chip_erase":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFFFF, 0xFFFF ] + ], + "sector_erase":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ "SA", 0x30 ] + ], + "sector_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ "SA", 0xFFFF, 0xFFFF ] + ], + "single_write":[ + [ 0x555, 0xA9 ], + [ 0x2AA, 0x56 ], + [ 0x555, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_AGB_Nintendo_E201850.txt b/src/config/fc_AGB_Nintendo_E201850.txt new file mode 100644 index 0000000..3064190 --- /dev/null +++ b/src/config/fc_AGB_Nintendo_E201850.txt @@ -0,0 +1,62 @@ +{ + "type":"AGB", + "names":[ + "Nintendo AGB Cartridge 128M Flash S, E201850" + ], + "flash_ids":[ + [ 0xB0, 0x00, 0xE2, 0x00 ] + ], + "voltage":3.3, + "flash_size":0x1000000, + "chip_erase_timeout":80, + "wait_read_status_register":true, + "commands":{ + "reset":[ + [ 0, 0xFF ] + ], + "read_status_register":[ + [ 0, 0x70 ] + ], + "read_identifier":[ + [ 0, 0x90 ] + ], + "chip_erase":[ + [ 0, 0x30 ], + [ 0, 0xD0 ], + [ 0x400000, 0x30 ], + [ 0x400000, 0xD0 ], + [ 0x800000, 0x30 ], + [ 0x800000, 0xD0 ], + [ 0xC00000, 0x30 ], + [ 0xC00000, 0xD0 ], + [ 0, 0x70 ], + [ 0x400000, 0x70 ], + [ 0x800000, 0x70 ], + [ 0xC00000, 0x70 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0x80, 0x80 ], + [ 0x400000, 0x80, 0x80 ], + [ 0x800000, 0x80, 0x80 ], + [ 0xC00000, 0x80, 0x80 ] + ], + "single_write":[ + [ 0, 0x70 ], + [ 0, 0x10 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ 0, 0x80, 0x80 ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_AGB_Nintendo_E201868.txt b/src/config/fc_AGB_Nintendo_E201868.txt new file mode 100644 index 0000000..a39ca85 --- /dev/null +++ b/src/config/fc_AGB_Nintendo_E201868.txt @@ -0,0 +1,57 @@ +{ + "type":"AGB", + "names":[ + "Nintendo AGB Cartridge 256M Flash S, E201868" + ], + "flash_ids":[ + [ 0xB0, 0x00, 0xB0, 0x00 ] + ], + "voltage":3.3, + "flash_size":0x2000000, + "sector_size":[ + [0x10000, 127], + [0x02000, 8], + [0x10000, 127], + [0x02000, 8], + [0x10000, 127], + [0x02000, 8], + [0x10000, 127], + [0x02000, 8] + ], + "wait_read_status_register":true, + "commands":{ + "reset":[ + [ 0, 0xFF ] + ], + "read_status_register":[ + [ 0, 0x70 ] + ], + "read_identifier":[ + [ 0, 0x90 ] + ], + "sector_erase":[ + [ "SA", 0x60 ], + [ "SA", 0xD0 ], + [ "SA", 0x20 ], + [ "SA", 0xD0 ], + [ 0, 0x70 ] + ], + "sector_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ "SA", 0x80, 0x80 ] + ], + "single_write":[ + [ 0, 0x70 ], + [ 0, 0x10 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ 0, 0x80, 0x80 ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_29DL161TD-90.txt b/src/config/fc_DMG_29DL161TD-90.txt new file mode 100644 index 0000000..e6e279d --- /dev/null +++ b/src/config/fc_DMG_29DL161TD-90.txt @@ -0,0 +1,55 @@ +{ + "type":"DMG", + "names":[ + "SD007_48BALL_64M_V3 with 29DL161TD-90", + "SD007_48BALL_64M_V6 with 29DL163BD-90" + ], + "flash_ids":[ + [ 0x04, 0x04, 0x35, 0x35 ], + [ 0x04, 0x04, 0x2B, 0x2B ] + ], + "voltage":3.3, + "flash_size":0x200000, + "start_addr":0, + "first_bank":1, + "write_pin":"WR", + "chip_erase_timeout":50, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x90 ] + ], + "chip_erase":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_29DL32TF-70.txt b/src/config/fc_DMG_29DL32TF-70.txt new file mode 100644 index 0000000..5b6cdd7 --- /dev/null +++ b/src/config/fc_DMG_29DL32TF-70.txt @@ -0,0 +1,53 @@ +{ + "type":"DMG", + "names":[ + "ES29LV160_DRV with 29DL32TF-70" + ], + "flash_ids":[ + [ 0x04, 0x04, 0x7D, 0x7D ] + ], + "voltage":3.3, + "flash_size":0x200000, + "start_addr":0, + "first_bank":1, + "write_pin":"WR", + "chip_erase_timeout":50, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x90 ] + ], + "chip_erase":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_36VF3204.txt b/src/config/fc_DMG_36VF3204.txt new file mode 100644 index 0000000..93ee32c --- /dev/null +++ b/src/config/fc_DMG_36VF3204.txt @@ -0,0 +1,53 @@ +{ + "type":"DMG", + "names":[ + "SD007_48BALL_64M_V5 with 36VF3204" + ], + "flash_ids":[ + [ 0xBF, 0x00, 0x53, 0x73 ] + ], + "voltage":3.3, + "flash_size":0x400000, + "start_addr":0, + "first_bank":1, + "write_pin":"WR", + "chip_erase_timeout":5, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x90 ] + ], + "chip_erase":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_AM29F016.txt b/src/config/fc_DMG_AM29F016.txt new file mode 100644 index 0000000..f4fde7a --- /dev/null +++ b/src/config/fc_DMG_AM29F016.txt @@ -0,0 +1,53 @@ +{ + "type":"DMG", + "names":[ + "AM29F016/AM29F016B (DIY cart)" + ], + "flash_ids":[ + [ 0x01, 0xAD, 0x00, 0x00 ] + ], + "voltage":5, + "flash_size":0x400000, + "start_addr":0, + "first_bank":1, + "write_pin":"WR", + "chip_erase_timeout":60, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0x555, 0xAA ], + [ 0x2AA, 0x55 ], + [ 0x555, 0x90 ] + ], + "chip_erase":[ + [ 0x555, 0xAA ], + [ 0x2AA, 0x55 ], + [ 0x555, 0x80 ], + [ 0x555, 0xAA ], + [ 0x2AA, 0x55 ], + [ 0x555, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0x555, 0xAA ], + [ 0x2AA, 0x55 ], + [ 0x555, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_AM29LV160MB.txt b/src/config/fc_DMG_AM29LV160MB.txt new file mode 100644 index 0000000..0dc1436 --- /dev/null +++ b/src/config/fc_DMG_AM29LV160MB.txt @@ -0,0 +1,53 @@ +{ + "type":"DMG", + "names":[ + "SD007_BV5_V3 with AM29LV160MB" + ], + "flash_ids":[ + [ 0x02, 0x02, 0x4A, 0x4A ] + ], + "voltage":5, + "flash_size":0x200000, + "start_addr":0, + "first_bank":1, + "write_pin":"WR", + "chip_erase_timeout":70, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x90 ] + ], + "chip_erase":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_Doctor_GB_Card_64M.txt b/src/config/fc_DMG_Doctor_GB_Card_64M.txt new file mode 100644 index 0000000..b9a91d5 --- /dev/null +++ b/src/config/fc_DMG_Doctor_GB_Card_64M.txt @@ -0,0 +1,43 @@ +{ + "type":"DMG", + "names":[ + "BUNG Doctor GB Card 64M" + ], + "flash_ids":[ + [ 0x89, 0x89, 0x15, 0x15 ] + ], + "voltage":5, + "flash_size":0x800000, + "sector_size":0x20000, + "start_addr":0, + "first_bank":1, + "write_pin":"VIN", + "commands":{ + "reset":[ + [ 0, 0xFF ] + ], + "read_identifier":[ + [ 0, 0x90 ] + ], + "sector_erase":[ + [ 0x4000, 0x20 ], + [ 0x4000, 0xD0 ] + ], + "sector_erase_wait_for":[ + [ null, null, null ], + [ 0x4000, 0x80, 0x80 ] + ], + "buffer_write":[ + [ "SA", 0xE8 ], + [ "SA", "BS" ], + [ "PA", "PD" ], + [ "SA", 0xD0 ] + ], + "buffer_write_wait_for":[ + [ "SA", 0x80, 0xFF ], + [ null, null, null ], + [ null, null, null ], + [ "SA", 0x80, 0xFF ] + ] + } +} diff --git a/src/config/fc_DMG_GB_Smart_32M.txt b/src/config/fc_DMG_GB_Smart_32M.txt new file mode 100644 index 0000000..24199fb --- /dev/null +++ b/src/config/fc_DMG_GB_Smart_32M.txt @@ -0,0 +1,43 @@ +{ + "type":"DMG", + "names":[ + "GB Smart 32M" + ], + "flash_ids":[ + [ 0x89, 0x89, 0x14, 0x14 ] + ], + "voltage":5, + "flash_size":0x400000, + "sector_size":0x20000, + "start_addr":0, + "first_bank":1, + "write_pin":"VIN", + "commands":{ + "reset":[ + [ 0, 0xFF ] + ], + "read_identifier":[ + [ 0, 0x90 ] + ], + "sector_erase":[ + [ 0x4000, 0x20 ], + [ 0x4000, 0xD0 ] + ], + "sector_erase_wait_for":[ + [ null, null, null ], + [ 0x4000, 0x80, 0x80 ] + ], + "buffer_write":[ + [ "SA", 0xE8 ], + [ "SA", "BS" ], + [ "PA", "PD" ], + [ "SA", 0xD0 ] + ], + "buffer_write_wait_for":[ + [ "SA", 0x80, 0xFF ], + [ null, null, null ], + [ null, null, null ], + [ "SA", 0x80, 0xFF ] + ] + } +} diff --git a/src/config/fc_DMG_HY29LV160TT.txt b/src/config/fc_DMG_HY29LV160TT.txt new file mode 100644 index 0000000..7da0494 --- /dev/null +++ b/src/config/fc_DMG_HY29LV160TT.txt @@ -0,0 +1,53 @@ +{ + "type":"DMG", + "names":[ + "SD007_BV5_V2 with HY29LV160TT" + ], + "flash_ids":[ + [ 0xAE, 0xAE, 0xC4, 0xC4 ] + ], + "voltage":3.3, + "flash_size":0x200000, + "start_addr":0, + "first_bank":1, + "write_pin":"WR", + "chip_erase_timeout":60, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x90 ] + ], + "chip_erase":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_M29W160EB.txt b/src/config/fc_DMG_M29W160EB.txt new file mode 100644 index 0000000..40be9d7 --- /dev/null +++ b/src/config/fc_DMG_M29W160EB.txt @@ -0,0 +1,53 @@ +{ + "type":"DMG", + "names":[ + "GB-M968 with M29W160EB" + ], + "flash_ids":[ + [ 0x20, 0x20, 0x49, 0x49 ] + ], + "voltage":3.3, + "flash_size":0x200000, + "start_addr":0, + "first_bank":1, + "write_pin":"WR", + "chip_erase_timeout":30, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0x90 ] + ], + "chip_erase":[ + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_M29W640.txt b/src/config/fc_DMG_M29W640.txt new file mode 100644 index 0000000..7cc8ef8 --- /dev/null +++ b/src/config/fc_DMG_M29W640.txt @@ -0,0 +1,53 @@ +{ + "type":"DMG", + "names":[ + "SD007_48BALL_64M with M29W640" + ], + "flash_ids":[ + [ 0x20, 0x00, 0x7D, 0x00 ] + ], + "voltage":3.3, + "flash_size":0x400000, + "start_addr":0, + "first_bank":1, + "write_pin":"WR", + "chip_erase_timeout":70, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x90 ] + ], + "chip_erase":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_MX29LV320ABTC.txt b/src/config/fc_DMG_MX29LV320ABTC.txt new file mode 100644 index 0000000..330b9e2 --- /dev/null +++ b/src/config/fc_DMG_MX29LV320ABTC.txt @@ -0,0 +1,53 @@ +{ + "type":"DMG", + "names":[ + "GB-M968 with MX29LV320ABTC" + ], + "flash_ids":[ + [ 0xC2, 0xC2, 0xA8, 0xA8 ] + ], + "voltage":3.3, + "flash_size":0x400000, + "start_addr":0, + "first_bank":1, + "write_pin":"WR", + "chip_erase_timeout":60, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0x90 ] + ], + "chip_erase":[ + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_MX29LV320BTC.txt b/src/config/fc_DMG_MX29LV320BTC.txt new file mode 100644 index 0000000..73af021 --- /dev/null +++ b/src/config/fc_DMG_MX29LV320BTC.txt @@ -0,0 +1,53 @@ +{ + "type":"DMG", + "names":[ + "SD007_BV5_V2 with MX29LV320BTC" + ], + "flash_ids":[ + [ 0xC1, 0xC1, 0xA8, 0xA8 ] + ], + "voltage":3.3, + "flash_size":0x400000, + "start_addr":0, + "first_bank":1, + "write_pin":"WR", + "chip_erase_timeout":70, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x90 ] + ], + "chip_erase":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_S29GL032.txt b/src/config/fc_DMG_S29GL032.txt new file mode 100644 index 0000000..bb124dd --- /dev/null +++ b/src/config/fc_DMG_S29GL032.txt @@ -0,0 +1,55 @@ +{ + "type":"DMG", + "names":[ + "SD007_48BALL_64M with GL032M11BAIR4", + "S29GL032 (no PCB text)" + ], + "flash_ids":[ + [ 0x02, 0x02, 0x7D, 0x7D ], + [ 0x02, 0x02, 0x7D, 0x7D ] + ], + "voltage":3.3, + "flash_size":0x400000, + "start_addr":0x4000, + "first_bank":0, + "write_pin":"WR", + "chip_erase_timeout":60, + "commands":{ + "reset":[ + [ 0x7000, 0xF0 ] + ], + "read_identifier":[ + [ 0x7AAA, 0xA9 ], + [ 0x7555, 0x56 ], + [ 0x7AAA, 0x90 ] + ], + "chip_erase":[ + [ 0x7AAA, 0xA9 ], + [ 0x7555, 0x56 ], + [ 0x7AAA, 0x80 ], + [ 0x7AAA, 0xA9 ], + [ 0x7555, 0x56 ], + [ 0x7AAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0x7AAA, 0xA9 ], + [ 0x7555, 0x56 ], + [ 0x7AAA, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_iG_1MB.txt b/src/config/fc_DMG_iG_1MB.txt new file mode 100644 index 0000000..13daa39 --- /dev/null +++ b/src/config/fc_DMG_iG_1MB.txt @@ -0,0 +1,53 @@ +{ + "type":"DMG", + "names":[ + "insideGadgets 1 MB, 128 KB SRAM" + ], + "flash_ids":[ + [ 0xC2, 0xC2, 0x58, 0x58 ] + ], + "voltage":5, + "flash_size":0x100000, + "start_addr":0, + "first_bank":1, + "write_pin":"WR", + "chip_erase_timeout":120, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0x555, 0xAA ], + [ 0x2AA, 0x55 ], + [ 0x555, 0x90 ] + ], + "chip_erase":[ + [ 0x555, 0xAA ], + [ 0x2AA, 0x55 ], + [ 0x555, 0x80 ], + [ 0x555, 0xAA ], + [ 0x2AA, 0x55 ], + [ 0x555, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0x555, 0xAA ], + [ 0x2AA, 0x55 ], + [ 0x555, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_iG_2MB.txt b/src/config/fc_DMG_iG_2MB.txt new file mode 100644 index 0000000..3739aad --- /dev/null +++ b/src/config/fc_DMG_iG_2MB.txt @@ -0,0 +1,55 @@ +{ + "type":"DMG", + "names":[ + "insideGadgets 2 MB, 128 KB SRAM/32 KB FRAM", + "insideGadgets 2 MB, 128 KB SRAM/32 KB FRAM" + ], + "flash_ids":[ + [ 0x01, 0x01, 0xD2, 0xD2 ], + [ 0x01, 0xAD, 0x00, 0x00 ] + ], + "voltage":5, + "flash_size":0x200000, + "start_addr":0, + "first_bank":1, + "write_pin":"WR", + "chip_erase_timeout":120, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0x90 ] + ], + "chip_erase":[ + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_iG_32KB.txt b/src/config/fc_DMG_iG_32KB.txt new file mode 100644 index 0000000..f37a37b --- /dev/null +++ b/src/config/fc_DMG_iG_32KB.txt @@ -0,0 +1,53 @@ +{ + "type":"DMG", + "names":[ + "insideGadgets 32 KB" + ], + "flash_ids":[ + [ 0xBF, 0xB5, 0x01, 0xFF ] + ], + "voltage":5, + "flash_size":0x8000, + "start_addr":0, + "first_bank":1, + "write_pin":"WR", + "chip_erase_timeout":20, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0x5555, 0xAA ], + [ 0x2AAA, 0x55 ], + [ 0x5555, 0x90 ] + ], + "chip_erase":[ + [ 0x5555, 0xAA ], + [ 0x2AAA, 0x55 ], + [ 0x5555, 0x80 ], + [ 0x5555, 0xAA ], + [ 0x2AAA, 0x55 ], + [ 0x5555, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0x5555, 0xAA ], + [ 0x2AAA, 0x55 ], + [ 0x5555, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_iG_4MB.txt b/src/config/fc_DMG_iG_4MB.txt new file mode 100644 index 0000000..8172745 --- /dev/null +++ b/src/config/fc_DMG_iG_4MB.txt @@ -0,0 +1,53 @@ +{ + "type":"DMG", + "names":[ + "insideGadgets 4 MB, 128 KB SRAM/FRAM" + ], + "flash_ids":[ + [ 0x01, 0x01, 0x7E, 0x7E ] + ], + "voltage":5, + "flash_size":0x400000, + "start_addr":0x4000, + "first_bank":0, + "write_pin":"WR", + "chip_erase_timeout":60, + "commands":{ + "reset":[ + [ 0x000, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0x90 ] + ], + "chip_erase":[ + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0x80 ], + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0xAAA, 0xAA ], + [ 0x555, 0x55 ], + [ 0xAAA, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_iG_4MB_MBC3_RTC.txt b/src/config/fc_DMG_iG_4MB_MBC3_RTC.txt new file mode 100644 index 0000000..2910275 --- /dev/null +++ b/src/config/fc_DMG_iG_4MB_MBC3_RTC.txt @@ -0,0 +1,53 @@ +{ + "type":"DMG", + "names":[ + "insideGadgets 4 MB, 32 KB FRAM, MBC3+RTC" + ], + "flash_ids":[ + [ 0x04, 0x04, 0x00, 0x00 ] + ], + "voltage":5, + "flash_size":0x400000, + "start_addr":0, + "first_bank":1, + "write_pin":"VIN", + "chip_erase_timeout":120, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0x555, 0xAA ], + [ 0x2AA, 0x55 ], + [ 0x555, 0x90 ] + ], + "chip_erase":[ + [ 0x555, 0xAA ], + [ 0x2AA, 0x55 ], + [ 0x555, 0x80 ], + [ 0x555, 0xAA ], + [ 0x2AA, 0x55 ], + [ 0x555, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0x555, 0xAA ], + [ 0x2AA, 0x55 ], + [ 0x555, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/config/fc_DMG_iG_512KB.txt b/src/config/fc_DMG_iG_512KB.txt new file mode 100644 index 0000000..6fda017 --- /dev/null +++ b/src/config/fc_DMG_iG_512KB.txt @@ -0,0 +1,53 @@ +{ + "type":"DMG", + "names":[ + "insideGadgets 512 KB" + ], + "flash_ids":[ + [ 0xBF, 0xB7, 0x01, 0xFF ] + ], + "voltage":5, + "flash_size":0x80000, + "start_addr":0, + "first_bank":1, + "write_pin":"VIN", + "chip_erase_timeout":30, + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0x5555, 0xAA ], + [ 0x2AAA, 0x55 ], + [ 0x5555, 0x90 ] + ], + "chip_erase":[ + [ 0x5555, 0xAA ], + [ 0x2AAA, 0x55 ], + [ 0x5555, 0x80 ], + [ 0x5555, 0xAA ], + [ 0x2AAA, 0x55 ], + [ 0x5555, 0x10 ] + ], + "chip_erase_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ 0, 0xFF, 0xFF ] + ], + "single_write":[ + [ 0x5555, 0xAA ], + [ 0x2AAA, 0x55 ], + [ 0x5555, 0xA0 ], + [ "PA", "PD" ] + ], + "single_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ] + ] + } +} diff --git a/src/hw_GBxCartRW.py b/src/hw_GBxCartRW.py new file mode 100644 index 0000000..903d096 --- /dev/null +++ b/src/hw_GBxCartRW.py @@ -0,0 +1,1234 @@ +# -*- coding: utf-8 -*- +# UTF-8 +import serial, serial.tools.list_ports +from serial import SerialException +import sys, time, re, glob, math, struct, json, statistics +import zlib +from DataTransfer import * +from RomFileDMG import * +from RomFileAGB import * + +class GbxDevice: + DEVICE_NAME = "GBxCart RW" + DEVICE_MIN_FW = 17 + DEVICE_MAX_FW = 19 + + DEVICE_CMD = { + "CART_MODE":'C', + "GB_MODE":1, + "GBA_MODE":2, + # GB/GBC defines/commands + "SET_START_ADDRESS":'A', + "READ_ROM_RAM":'R', + "WRITE_RAM":'W', + "SET_BANK":'B', + "GB_CART_MODE":'G', + # GBA defines/commands + "EEPROM_NONE":0, + "EEPROM_4KBIT":1, + "EEPROM_64KBIT":2, + "SRAM_FLASH_NONE":0, + "SRAM_FLASH_256KBIT":1, + "SRAM_FLASH_512KBIT":2, + "SRAM_FLASH_1MBIT":3, + "NOT_CHECKED":0, + "NO_FLASH":1, + "FLASH_FOUND":2, + "FLASH_FOUND_ATMEL":3, + "GBA_READ_ROM":'r', + "GBA_READ_ROM_256BYTE":'j', + "GBA_READ_SRAM":'m', + "GBA_WRITE_SRAM":'w', + "GBA_WRITE_ONE_BYTE_SRAM":'o', + "GBA_CART_MODE":'g', + "GBA_SET_EEPROM_SIZE":'S', + "GBA_READ_EEPROM":'e', + "GBA_WRITE_EEPROM":'p', + "GBA_FLASH_READ_ID":'i', + "GBA_FLASH_SET_BANK":'k', + "GBA_FLASH_4K_SECTOR_ERASE":'s', + "GBA_FLASH_WRITE_BYTE":'b', + "GBA_FLASH_WRITE_ATMEL":'a', + # Flash Cart commands + "GB_FLASH_WE_PIN":'P', + "WE_AS_AUDIO_PIN":'A', + "WE_AS_WR_PIN":'W', + "GB_FLASH_PROGRAM_METHOD":'E', + "GB_FLASH_PROGRAM_555":0, + "GB_FLASH_PROGRAM_AAA":1, + "GB_FLASH_PROGRAM_555_BIT01_SWAPPED":2, + "GB_FLASH_PROGRAM_AAA_BIT01_SWAPPED":3, + "GB_FLASH_PROGRAM_5555":4, + "GB_FLASH_PROGRAM_7AAA_BIT01_SWAPPED":5, + "GB_FLASH_WRITE_BYTE":'F', + "GB_FLASH_WRITE_64BYTE":'T', + "GB_FLASH_WRITE_256BYTE":'X', + "GB_FLASH_WRITE_BUFFERED_32BYTE":'Y', + "GB_FLASH_BANK_1_COMMAND_WRITES":'N', + "GB_FLASH_WRITE_64BYTE_PULSE_RESET":'J', + "GB_FLASH_WRITE_INTEL_BUFFERED_32BYTE":'y', + "GBA_FLASH_CART_WRITE_BYTE":'n', + "GBA_FLASH_WRITE_64BYTE_SWAPPED_D0D1":'q', + "GBA_FLASH_WRITE_256BYTE_SWAPPED_D0D1":'t', + "GBA_FLASH_WRITE_256BYTE":'f', + "GBA_FLASH_WRITE_INTEL_64BYTE":'l', + "GBA_FLASH_WRITE_INTEL_64BYTE_WORD":'u', + "GBA_FLASH_WRITE_INTEL_INTERLEAVED_256BYTE":'v', + "GBA_FLASH_WRITE_SHARP_64BYTE":'x', + "GBA_SAVEDATA_DETECT":'z', + # General commands + "CART_MODE":'C', + "SET_INPUT":'I', + "SET_OUTPUT":'O', + "SET_OUTPUT_LOW":'L', + "SET_OUTPUT_HIGH":'H', + "READ_INPUT":'D', + "RESET_COMMON_LINES":'M', + "READ_FIRMWARE_VERSION":'V', + "READ_PCB_VERSION":'h', + "VOLTAGE_3_3V":'3', + "VOLTAGE_5V":'5', + "RESET_AVR":'*', + "RESET_VALUE":0x7E5E1, + "XMAS_LEDS":'#', + "XMAS_VALUE":0x7690FCD, + "READ_BUFFER":0 + } + PCB_VERSIONS = {1:'v1.0', 2:'v1.1', 4:'v1.3', 90:'XMAS'} + + SUPPORTED_CARTS_DMG = { "Generic ROM Cartridge":"RETAIL", "● Auto-Detect Flash Cartridge ●":"AUTODETECT" } + SUPPORTED_CARTS_AGB = { "Generic ROM Cartridge":"RETAIL", "● Auto-Detect Flash Cartridge ●":"AUTODETECT" } + + FW = [] + MODE = None + PORT = '' + DEVICE = None + WORKER = None + INFO = { "last_action":None } + CANCEL = False + + def __init__(self): + pass + + def Initialize(self): + if self.IsConnected(): self.DEVICE.close() + + conn_msg = [] + ports = [] + comports = serial.tools.list_ports.comports() + for i in range(0, len(comports)): + if comports[i].vid == 0x1A86 and comports[i].pid == 0x7523: + ports.append(comports[i].device) + break + + if len(ports) == 0: return False + + for i in range(0, len(ports)): + try: + dev = serial.Serial(ports[i], 1000000, timeout=1) + self.DEVICE = dev + self.LoadFirmwareVersion() + if self.FW[0] < self.DEVICE_MIN_FW: + dev.close() + self.DEVICE = None + conn_msg.append([3, "The GBxCart RW device on port " + ports[i] + " requires a firmware update to work with this software. Please try again after updating it to version R" + str(self.DEVICE_MIN_FW) + " or higher."]) + continue + elif self.FW[0] > self.DEVICE_MAX_FW: + conn_msg.append([0, "NOTE: The GBxCart RW device on port " + ports[i] + " is running a firmware version that is newer than what this software was developed to work with. Use with caution."]) + if (self.FW[1] != 4): + conn_msg.append([2, "This tool was developed to be used with GBxCart RW v1.3 and v1.3 Pro. Other revisions are untested and may not be compatible."]) + + self.PORT = ports[i] + + # Load Flash Cartridge Handlers + flashcarts_dmg = {} + flashcarts_agb = {} + for file in glob.glob("./config/fc_*.txt"): + with open(file, encoding='utf-8') as f: + data = f.read() + specs_int = re.sub("(0x[\dA-F]+)", lambda m: str(int(m.group(1), 16)), data) + specs = json.loads(specs_int) + + for name in specs["names"]: + if specs["type"] == "DMG": + flashcarts_dmg[name] = specs + elif specs["type"] == "AGB": + flashcarts_agb[name] = specs + + for key in sorted(flashcarts_dmg.keys(), key=str.casefold): + self.SUPPORTED_CARTS_DMG[key] = flashcarts_dmg[key] + for key in sorted(flashcarts_agb.keys(), key=str.casefold): + self.SUPPORTED_CARTS_AGB[key] = flashcarts_agb[key] + + # Stop after first found device + break + + except SerialException as e: + conn_msg.append([3, "Couldn’t communicate with the GBxCart RW device on port " + ports[i] + ".\n\n" + str(e)]) + continue + + conn_msg.append([0, "NOTE: This is an unofficial tool for GBxCart RW. Visit https://www.gbxcart.com/ for officially supported options."]) + return conn_msg + + def IsConnected(self): + if self.DEVICE is None: return False + if not self.DEVICE.isOpen(): return False + try: + self.LoadFirmwareVersion() + return True + except SerialException as e: + return False + + def Close(self): + if self.IsConnected(): + try: + self.set_mode(self.DEVICE_CMD['VOLTAGE_3_3V']) # set to lower voltage when closing for safety + self.DEVICE.close() + except: + self.DEVICE = None + self.MODE = None + + def GetName(self): + self.GetFullName() + return self.DEVICE_NAME + + def GetFullName(self): + fw, pcb = self.FW + self.DEVICE_NAME = "GBxCart RW " + self.PCB_VERSIONS[pcb] + return self.DEVICE_NAME + " – Firmware R" + str(fw) + + def GetPort(self): + return self.PORT + + def LoadFirmwareVersion(self): + self.write(self.DEVICE_CMD['READ_FIRMWARE_VERSION']) + fw = self.read(1) + self.write(self.DEVICE_CMD['READ_PCB_VERSION']) + pcb = self.read(1) + self.FW = [fw, pcb] + + def PingDevice(self): + if self.DEVICE != None: + try: + self.GetFullName() + return True + except: + self.DEVICE = None + return False + return False + + def GetMode(self): + return self.MODE + + def GetSupportedCartridgesDMG(self): + return (list(self.SUPPORTED_CARTS_DMG.keys()), list(self.SUPPORTED_CARTS_DMG.values())) + + def GetSupportedCartridgesAGB(self): + return (list(self.SUPPORTED_CARTS_AGB.keys()), list(self.SUPPORTED_CARTS_AGB.values())) + + def wait_for_ack(self, timeout=1): + temp = self.DEVICE.timeout + self.DEVICE.timeout = timeout + while True: + buffer = self.DEVICE.read(1) + if buffer == b'': + print("wait_for_ack(): Timeout -", buffer) + return False + elif buffer == b'1': + self.DEVICE.timeout = temp + return True + time.sleep(0.1) + + def read(self, length=64, timeout=1): + temp = self.DEVICE.timeout + self.DEVICE.timeout = timeout + currAddr = 0x0000 + endAddr = length + response = bytearray() + while (currAddr < endAddr): + count = length + if count > 1: count = min(length, 64) + buffer = self.DEVICE.read(count) + if len(buffer) == count: + response += buffer + currAddr += count + if (currAddr < endAddr): + self.write('1') # continue read + else: + self.write('0') # stop read + else: + print("read(): Timeout -", buffer) + self.DEVICE.timeout = temp + return b'' + if length == 1: return buffer[0] + + self.DEVICE.timeout = temp + return response[:length] + + def write(self, data, wait_for_ack=False): + if not isinstance(data, bytearray): + data = bytearray(data, 'ascii') + #print(data) + self.DEVICE.write(data) + if wait_for_ack: + return self.wait_for_ack() + + def gbx_flash_write_address_byte(self, address, data): + if self.MODE == "DMG": + return self.gb_flash_write_address_byte(address, data) + elif self.MODE == "AGB": + return self.gba_flash_write_address_byte(address, data) + + def gba_flash_write_address_byte(self, address, data): + address = int(address / 2) + address = format(address, 'x') + buffer = self.DEVICE_CMD['GBA_FLASH_CART_WRITE_BYTE'] + address + '\x00' + self.write(buffer) + time.sleep(0.001) + data = format(data, 'x') + buffer = self.DEVICE_CMD['GBA_FLASH_CART_WRITE_BYTE'] + data + '\x00' + self.write(buffer) + time.sleep(0.001) + return self.wait_for_ack() + + def gb_flash_write_address_byte(self, address, data): + address = format(address, 'x') + buffer = self.DEVICE_CMD['GB_FLASH_WRITE_BYTE'] + address + '\x00' + self.write(buffer) + buffer = format(data, 'x') + '\x00' + self.write(buffer) + return self.wait_for_ack() + + def gbx_flash_write_data_bytes(self, command, data): + buffer = bytearray(self.DEVICE_CMD[command], "ascii") + bytearray(data) + self.write(buffer) + + def set_bank(self, address, bank): + address = format(address, 'x') + buffer = self.DEVICE_CMD['SET_BANK'] + address + '\x00' + self.write(buffer) + time.sleep(0.005) + + bank = format(bank, 'd') + buffer = self.DEVICE_CMD['SET_BANK'] + bank + '\x00' + self.write(buffer) + time.sleep(0.005) + + def set_mode(self, command): + buffer = format(command, 's') + self.write(buffer) + + def set_number(self, number, command): + buffer = format(command, 's') + format(int(number), 'x') + '\x00' + self.write(buffer) + + def EnableRAM(self, mbc=1, enable=True): + self.ReadROM(0, 64) + if enable: + if mbc <= 4: + self.set_bank(0x6000, 1) + self.set_bank(0x0000, 0x0A) + else: + if mbc <= 4: + self.set_bank(0x6000, 0) + self.set_bank(0x0000, 0x00) + + def SetBankROM(self, bank): + self.set_bank(0x2100, (bank & 0xFF)) + if bank > 255: + self.set_bank(0x3000, ((bank >> 8) & 0xFF)) + + def SetBankRAM(self, bank): + self.set_bank(0x4000, (bank & 0xFF)) + + def ReadFlashSaveID(self): + makers = { 0x1F:"ATMEL", 0xBF:"SST/SANYO", 0xC2:"MACRONIX", 0x32:"PANASONIC", 0x62:"SANYO" } + self.set_mode(self.DEVICE_CMD['GBA_FLASH_READ_ID']) + time.sleep(0.2) + buffer = self.DEVICE.read(2) + if buffer[0] in makers.keys(): + return makers[buffer[0]] + else: + return buffer[0] + + def ReadSaveAGB(self, command, eeprom_size, offset, length): + if eeprom_size > 0: + if offset == 0: + self.set_number(eeprom_size, self.DEVICE_CMD['GBA_SET_EEPROM_SIZE']) + self.set_number(math.floor(offset / 2), self.DEVICE_CMD['SET_START_ADDRESS']) + #time.sleep(0.02) + self.set_mode(self.DEVICE_CMD[command]) + else: + self.DEVICE.write(b'1') + buffer = self.DEVICE.read(length) + else: + self.set_number(math.floor(offset / 2), self.DEVICE_CMD['SET_START_ADDRESS']) + #time.sleep(0.02) + self.set_mode(self.DEVICE_CMD[command]) + buffer = self.read(length) + + return buffer + + def ReadROM(self, offset, length, cont=False): + if self.MODE == "DMG": + if not cont: + self.set_number(offset, self.DEVICE_CMD['SET_START_ADDRESS']) + #time.sleep(0.02) + self.set_mode(self.DEVICE_CMD['READ_ROM_RAM']) + buffer = self.read(length) + elif self.MODE == "AGB": + if not cont: + self.set_number(math.floor(offset / 2), self.DEVICE_CMD['SET_START_ADDRESS']) + #time.sleep(0.02) + self.set_mode(self.DEVICE_CMD['GBA_READ_ROM']) + buffer = self.read(length) + return buffer + + def SetMode(self, mode): + if mode == "DMG": + self.set_mode(self.DEVICE_CMD['VOLTAGE_5V']) + self.MODE = "DMG" + elif mode == "AGB": + self.set_mode(self.DEVICE_CMD['VOLTAGE_3_3V']) + self.MODE = "AGB" + time.sleep(0.2) + + def AutoDetectFlash(self, limitVoltage=False): + flash_types = [] + flash_type = 0 + if limitVoltage: + self.set_mode(self.DEVICE_CMD['VOLTAGE_3_3V']) + time.sleep(0.1) + + if self.MODE == "DMG": + supported_carts = list(self.SUPPORTED_CARTS_DMG.values()) + for f in range(2, len(supported_carts)): + flashcart_meta = supported_carts[f] + + self.set_mode(self.DEVICE_CMD['GB_CART_MODE']) + if "flash_commands_on_bank_1" in flashcart_meta: + self.set_mode(self.DEVICE_CMD['GB_FLASH_BANK_1_COMMAND_WRITES']) + + if flashcart_meta["write_pin"] == "WR": + self.set_mode(self.DEVICE_CMD['GB_FLASH_WE_PIN']) + self.set_mode(self.DEVICE_CMD['WE_AS_WR_PIN']) + elif flashcart_meta["write_pin"] == "VIN": + self.set_mode(self.DEVICE_CMD['GB_FLASH_WE_PIN']) + self.set_mode(self.DEVICE_CMD['WE_AS_AUDIO_PIN']) + + # Unlock Flash + if "unlock" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["unlock"])): + addr = flashcart_meta["commands"]["unlock"][i][0] + data = flashcart_meta["commands"]["unlock"][i][1] + count = flashcart_meta["commands"]["unlock"][i][2] + for j in range(0, count): + self.gbx_flash_write_address_byte(addr, data) + + # Reset Flash + if "reset" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["reset"])): + self.gbx_flash_write_address_byte(flashcart_meta["commands"]["reset"][i][0], flashcart_meta["commands"]["reset"][i][1]) + + # Read Identifier + if "read_identifier" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["read_identifier"])): + self.gbx_flash_write_address_byte(flashcart_meta["commands"]["read_identifier"][i][0], flashcart_meta["commands"]["read_identifier"][i][1]) + flash_id_found = False + for i in range(0, len(flashcart_meta["flash_ids"])): + flash_id = list(self.ReadROM(0, 64)[0:len(flashcart_meta["flash_ids"][i])]) + if not len(flashcart_meta["flash_ids"][i]) == 0 and flash_id in flashcart_meta["flash_ids"]: flash_id_found = True + if not flash_id_found and len(flashcart_meta["flash_ids"]) > 0: + pass + + # Reset Flash + if "reset" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["reset"])): + self.gbx_flash_write_address_byte(flashcart_meta["commands"]["reset"][i][0], flashcart_meta["commands"]["reset"][i][1]) + + if flash_id_found: + flash_type = f + flash_types.append(flash_type) + + if not flash_id_found: + self.set_mode(self.DEVICE_CMD['VOLTAGE_5V']) + time.sleep(0.1) + + elif self.MODE == "AGB": + supported_carts = list(self.SUPPORTED_CARTS_AGB.values()) + for f in range(2, len(supported_carts)): + flashcart_meta = supported_carts[f] + + # Unlock Flash + if "unlock" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["unlock"])): + addr = flashcart_meta["commands"]["unlock"][i][0] + data_ = flashcart_meta["commands"]["unlock"][i][1] + count = flashcart_meta["commands"]["unlock"][i][2] + for j in range(0, count): + self.gbx_flash_write_address_byte(addr, data_ ) + + # Reset Flash + if "reset" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["reset"])): + self.gbx_flash_write_address_byte(flashcart_meta["commands"]["reset"][i][0], flashcart_meta["commands"]["reset"][i][1]) + + # Read Identifier + if "read_identifier" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["read_identifier"])): + self.gbx_flash_write_address_byte(flashcart_meta["commands"]["read_identifier"][i][0], flashcart_meta["commands"]["read_identifier"][i][1]) + flash_id_found = False + for i in range(0, len(flashcart_meta["flash_ids"])): + flash_id = list(self.ReadROM(0, 64)[0:len(flashcart_meta["flash_ids"][i])]) + if flash_id in flashcart_meta["flash_ids"]: flash_id_found = True + if not flash_id_found and len(flashcart_meta["flash_ids"]) > 0: + pass + + # Reset Flash + if "reset" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["reset"])): + self.gbx_flash_write_address_byte(flashcart_meta["commands"]["reset"][i][0], flashcart_meta["commands"]["reset"][i][1]) + + if flash_id_found: + flash_type = f + flash_types.append(flash_type) + + return flash_types + + def CheckFlashID(self, limitVoltage=False): + if limitVoltage: + self.set_mode(self.DEVICE_CMD['VOLTAGE_3_3V']) + time.sleep(0.1) + + flash_id_lines = [] + if self.MODE == "DMG": + ret_rom = "[ ROM ] " + methods = [ + {'we':'WR', 'read_identifier':[[0x555, 0xAA], [0x2AA, 0x55], [0x555, 0x90]], 'reset':[[0, 0xF0]]}, + {'we':'WR', 'read_identifier':[[0x555, 0xA9], [0x2AA, 0x56], [0x555, 0x90]], 'reset':[[0, 0xF0]]}, + {'we':'WR', 'read_identifier':[[0xAAA, 0xAA], [0x555, 0x55], [0xAAA, 0x90]], 'reset':[[0, 0xF0]]}, + {'we':'WR', 'read_identifier':[[0xAAA, 0xA9], [0x555, 0x56], [0xAAA, 0x90]], 'reset':[[0, 0xF0]]}, + {'we':'WR', 'read_identifier':[[0xAA, 0x98]], 'reset':[[0, 0xF0]]}, + {'we':'WR', 'read_identifier':[[0x5555, 0xAA], [0x2AAA, 0x55], [0x5555, 0x90]], 'reset':[[0, 0xF0]]}, + {'we':'WR', 'read_identifier':[[0x5555, 0xA9], [0x2AAA, 0x56], [0x5555, 0x90]], 'reset':[[0, 0xF0]]}, + {'we':'WR', 'read_identifier':[[0x7AAA, 0xA9], [0x7555, 0x56], [0x7AAA, 0x90]], 'reset':[[0x7000, 0xF0]]}, + {'we':'AUDIO', 'read_identifier':[[0x555, 0xAA], [0x2AA, 0x55], [0x555, 0x90]], 'reset':[[0, 0xF0]]}, + {'we':'AUDIO', 'read_identifier':[[0x555, 0xA9], [0x2AA, 0x56], [0x555, 0x90]], 'reset':[[0, 0xF0]]}, + {'we':'AUDIO', 'read_identifier':[[0xAAA, 0xAA], [0x555, 0x55], [0xAAA, 0x90]], 'reset':[[0, 0xF0]]}, + {'we':'AUDIO', 'read_identifier':[[0xAAA, 0xA9], [0x555, 0x56], [0xAAA, 0x90]], 'reset':[[0, 0xF0]]}, + {'we':'AUDIO', 'read_identifier':[[0x5555, 0xAA], [0x2AAA, 0x55], [0x5555, 0x90]], 'reset':[[0, 0xF0]]}, + {'we':'AUDIO', 'read_identifier':[[0x5555, 0xA9], [0x2AAA, 0x56], [0x5555, 0x90]], 'reset':[[0, 0xF0]]}, + ] + + self.set_mode(self.DEVICE_CMD['GB_CART_MODE']) + if not limitVoltage: self.set_mode(self.DEVICE_CMD['VOLTAGE_5V']) + rom = self.ReadROM(0, 64)[0:8] + for i in range(0, len(methods)): + method = methods[i] + self.set_mode(self.DEVICE_CMD['GB_FLASH_WE_PIN']) + self.set_mode(self.DEVICE_CMD['WE_AS_' + method['we'] + '_PIN']) + for i in range(0, len(method['read_identifier'])): + self.gbx_flash_write_address_byte(method['read_identifier'][i][0], method["read_identifier"][i][1]) + flash_id = self.ReadROM(0, 64)[0:8] + for i in range(0, len(method['reset'])): + self.gbx_flash_write_address_byte(method['reset'][i][0], method['reset'][i][1]) + if rom == flash_id: continue + + method_string = "[" + method['we'].ljust(5) + "/{:4X}/{:2X}]".format(method['read_identifier'][0][0], method['read_identifier'][0][1]) + flash_id_lines.append([method_string, flash_id]) + + elif self.MODE == "AGB": + ret_rom = "[ ROM ] " + methods = [ + {'read_identifier':[[0x555, 0xAA], [0x2AA, 0x55], [0x555, 0x90]], 'reset':[[0, 0xF0]]}, + {'read_identifier':[[0x555, 0xA9], [0x2AA, 0x56], [0x555, 0x90]], 'reset':[[0, 0xF0]]}, + {'read_identifier':[[0xAAA, 0xAA], [0x555, 0x55], [0xAAA, 0x90]], 'reset':[[0, 0xF0]]}, + {'read_identifier':[[0xAAA, 0xA9], [0x555, 0x56], [0xAAA, 0x90]], 'reset':[[0, 0xF0]]}, + {'read_identifier':[[0, 0x90]], 'reset':[[0, 0xFF]]}, + ] + + self.set_mode(self.DEVICE_CMD['GBA_CART_MODE']) + self.set_mode(self.DEVICE_CMD['VOLTAGE_3_3V']) + rom = self.ReadROM(0, 64)[0:8] + for i in range(0, len(methods)): + method = methods[i] + for i in range(0, len(method['read_identifier'])): + self.gbx_flash_write_address_byte(method['read_identifier'][i][0], method["read_identifier"][i][1]) + flash_id = self.ReadROM(0, 64)[0:8] + for i in range(0, len(method['reset'])): + self.gbx_flash_write_address_byte(method['reset'][i][0], method['reset'][i][1]) + if rom == flash_id: continue + + method_string = "[{:6X}/{:2X}]".format(method['read_identifier'][0][0], method['read_identifier'][0][1]) + flash_id_lines.append([method_string, flash_id]) + + ret = "" + for i in range(0, len(flash_id_lines)): + ret += flash_id_lines[i][0] + " " + for j in range(0, 8): + ret += "{:02X} ".format(flash_id_lines[i][1][j]) + ret += "\n" + + if ret != "": + for j in range(0, 8): + ret_rom += "{:02X} ".format(rom[j]) + ret_rom += "\n" + ret = ret_rom + ret + + if limitVoltage and self.MODE == "DMG": + self.set_mode(self.DEVICE_CMD['VOLTAGE_5V']) + time.sleep(0.1) + + return ret + + def ReadInfo(self): + if not self.PingDevice() and not self.Initialize(): raise Exception("Couldn’t access the the device.") + data = {} + header = self.ReadROM(0x000000, 0x000180) + + if self.MODE == "DMG": + data = RomFileDMG(header).GetHeader() + + elif self.MODE == "AGB": + data = RomFileAGB(header).GetHeader() + size_check = header[0xA0:0xA0+16] + currAddr = 0x400000 + while currAddr < 0x2000000: + buffer = self.ReadROM(currAddr + 0x0000A0, 64)[:16] + if buffer == size_check: break + currAddr += 0x400000 + data["rom_size"] = currAddr + + self.INFO = data + self.INFO["flash_type"] = 0 + self.INFO["last_action"] = 0 + + return data + + def BackupROM(self, fncSetProgress, path="ROM.gb", mbc=0x00, rom_banks=512, agb_rom_size=0): + config = { 'mode':1, 'port':self, 'path':path, 'mbc':mbc, 'rom_banks':rom_banks, 'agb_rom_size':agb_rom_size } + self.WORKER = DataTransfer(config) + self.WORKER.updateProgress.connect(fncSetProgress) + self.WORKER.start() + + def BackupRAM(self, fncSetProgress, path="ROM.sav", mbc=0x00, save_type=0): + config = { 'mode':2, 'port':self, 'path':path, 'mbc':mbc, 'save_type':save_type } + self.WORKER = DataTransfer(config) + self.WORKER.updateProgress.connect(fncSetProgress) + self.WORKER.start() + + def RestoreRAM(self, fncSetProgress, path="ROM.sav", mbc=0x00, save_type=0): + config = { 'mode':3, 'port':self, 'path':path, 'mbc':mbc, 'save_type':save_type } + self.WORKER = DataTransfer(config) + self.WORKER.updateProgress.connect(fncSetProgress) + self.WORKER.start() + + def FlashROM(self, fncSetProgress, path="ROM.gb", cart_type=0): + config = { 'mode':4, 'port':self, 'path':path, 'cart_type':cart_type } + self.WORKER = DataTransfer(config) + self.WORKER.updateProgress.connect(fncSetProgress) + self.WORKER.start() + + def _TransferData(self, mode, signal, args): # called by thread + if not self.PingDevice() and not self.Initialize(): raise Exception("Couldn’t access the the device.") + + path = args[0] + if self.INFO == None: self.ReadInfo() + self.INFO["last_path"] = path + self.INFO["last_action"] = mode + measure_points = [] + time_start = time.time() + bank_size = 0x4000 + + # main work + if mode == 1: # Backup ROM + if self.MODE == "DMG": + mbc = args[1] + bank_count = args[2] + rom_size = bank_count * bank_size + elif self.MODE == "AGB": + rom_size = args[3] + if rom_size == 0: + rom_size = 32 * 1024 * 1024 + + data_dump = bytearray() + + startAddr = 0 + currAddr = 0 + recvBytes = 0 + speed = 0 + time_left = 0 + + signal.emit(None, 0, rom_size, 0, 0, 0) + last_emit = time.time() + + try: + file = open(path, "wb") + except PermissionError as e: + signal.emit({"action":"ABORT", "info_type":"msgbox_critical", "info_msg":"FlashGBX doesn’t have permission to access this file for writing:\n" + path, "abortable":False}, 0, 0, 0, 0, 0) + return False + + if self.MODE == "DMG": + endAddr = bank_size + else: + endAddr = rom_size + bank_count = 1 + + for bank in range(0, bank_count): + if self.MODE == "DMG": + if bank > 0: + startAddr = bank_size + endAddr = startAddr + bank_size + self.SetBankROM(bank) + + buffer_len = 1024 + for currAddr in range(startAddr, endAddr, buffer_len): + if self.CANCEL: + signal.emit({"action":"ABORT", "abortable":False}, 0, 0, 0, 0, 0) + return + + if currAddr == startAddr: + cont = False + else: + cont = True + buffer = self.ReadROM(currAddr, buffer_len, cont) + data_dump.extend(buffer) + file.write(buffer) + recvBytes += buffer_len + + # Report back to GUI + if recvBytes % 4096 == 0: + now = time.time() + measure_points.append(now - last_emit) + last_emit = now + if len(measure_points) >= 16: + time_delta = statistics.fmean(measure_points) + speed = 4096 / time_delta + time_elapsed = time.time() - time_start + time_left = (time_elapsed / (recvBytes/rom_size)) - time_elapsed + if len(measure_points) >= 512: + measure_points = measure_points[-512:] + + if not recvBytes == rom_size: signal.emit(None, recvBytes, rom_size, speed/1024, time.time()-time_start, time_left) + + file.close() + + # calculate global checksum + chk = 0 + if self.MODE == "DMG": + for i in range(0, len(data_dump), 2): + if i != 0x14E: + chk = chk + data_dump[i + 1] + chk = chk + data_dump[i] + chk = chk & 0xFFFF + elif self.MODE == "AGB": + chk = zlib.crc32(data_dump) & 0xffffffff + + self.INFO["rom_checksum_calc"] = chk + signal.emit(None, recvBytes, rom_size, speed/1024, time.time()-time_start, time_left) + + ######################################### + + elif mode == 2 or mode == 3: # Backup or Restore RAM + data_dump = bytearray() + data_import = bytearray() + self.ReadROM(0, 64) # fix + + startAddr = 0 + if self.MODE == "DMG": + bank_size = 0x2000 + mbc = args[1] + save_size = args[2] + bank_count = int(max(save_size, bank_size) / bank_size) + self.EnableRAM(mbc=mbc, enable=True) + transfer_size = 64 + startAddr = 0xA000 + + elif self.MODE == "AGB": + bank_size = 0x10000 + save_type = args[2] + bank_count = 1 + transfer_size = 64 + eeprom_size = 0 + + if save_type == 0: + return + elif save_type == 1: # EEPROM 512 Byte + save_size = 512 + read_command = 'GBA_READ_EEPROM' + write_command = 'GBA_WRITE_EEPROM' + transfer_size = 8 + eeprom_size = 1 + elif save_type == 2: # EEPROM 8 KB + save_size = 8 * 1024 + read_command = 'GBA_READ_EEPROM' + write_command = 'GBA_WRITE_EEPROM' + transfer_size = 8 + eeprom_size = 2 + elif save_type == 3: # SRAM 32 KB + save_size = 32 * 1024 + read_command = 'GBA_READ_SRAM' + write_command = 'GBA_WRITE_SRAM' + elif save_type == 4: # SRAM 64 KB + save_size = 64 * 1024 + read_command = 'GBA_READ_SRAM' + write_command = 'GBA_WRITE_SRAM' + elif save_type == 5: # FLASH 64 KB + save_size = 64 * 1024 + read_command = 'GBA_READ_SRAM' + elif save_type == 6: # FLASH 128 KB + save_size = 128 * 1024 + read_command = 'GBA_READ_SRAM' + bank_count = 2 + else: + return + + # Get Save Flash Manufacturer + flash_id = None + if save_type == 5 or save_type == 6: + flash_id = self.ReadFlashSaveID() + if flash_id == "ATMEL": + print("NOTE: For save data this cartridge uses an ATMEL chip which is untested.") + transfer_size = 128 + + # Prepare some stuff + if mode == 2: + try: + file = open(path, "wb") + except PermissionError as e: + signal.emit({"action":"ABORT", "info_type":"msgbox_critical", "info_msg":"FlashGBX doesn’t have permission to access this file for writing:\n" + path, "abortable":False}, 0, 0, 0, 0, 0) + return False + + elif mode == 3: + with open(path, "rb") as file: data_import = file.read() + if save_size > len(data_import): + data_import += b'\xFF' * (save_size - len(data_import)) + + currAddr = 0 + pos = 0 + speed = 0 + time_left = 0 + signal.emit(None, 0, save_size, 0, 0, 0) + + for bank in range(0, bank_count): + if self.MODE == "DMG": + endAddr = startAddr + bank_size + if endAddr > (startAddr + save_size): endAddr = startAddr + save_size + self.SetBankRAM(bank) + elif self.MODE == "AGB": + endAddr = startAddr + min(save_size, bank_size) + if endAddr > (startAddr + save_size): endAddr = startAddr + save_size + if bank > 0: + self.set_number(bank, self.DEVICE_CMD['GBA_FLASH_SET_BANK']) + self.set_number(startAddr, self.DEVICE_CMD['SET_START_ADDRESS']) + time.sleep(0.02) + + buffer_len = transfer_size + sector = 0 + for currAddr in range(startAddr, endAddr, buffer_len): + if self.CANCEL: + if self.MODE == "DMG": + self.EnableRAM(mbc=mbc, enable=False) + elif self.MODE == "AGB": + if bank > 0: self.set_number(0, self.DEVICE_CMD['GBA_FLASH_SET_BANK']) + self.set_mode(self.DEVICE_CMD['READ_ROM_RAM']) + self.ReadInfo() + signal.emit({"action":"ABORT", "abortable":False}, 0, 0, 0, 0, 0) + return + + if mode == 2: # Backup + if self.MODE == "DMG": + buffer = self.ReadROM(currAddr, buffer_len) + elif self.MODE == "AGB": + buffer = self.ReadSaveAGB(read_command, eeprom_size, currAddr*2, buffer_len) + data_dump.extend(buffer) + file.write(buffer) + + elif mode == 3: # Restore + data = data_import[pos:pos+buffer_len] + if self.MODE == "DMG": + self.gbx_flash_write_data_bytes("WRITE_RAM", data) + + elif self.MODE == "AGB": + if save_type == 5 or save_type == 6: # FLASH + if flash_id == "ATMEL": + self.gbx_flash_write_data_bytes("GBA_FLASH_WRITE_ATMEL", data) + else: + if (currAddr % 4096 == 0): + self.set_number(sector, self.DEVICE_CMD['GBA_FLASH_4K_SECTOR_ERASE']) + self.wait_for_ack() + sector += 1 + while True: # wait for 0xFF (= erase done) + buffer = self.ReadSaveAGB(read_command, eeprom_size, currAddr*2, buffer_len) + if buffer[0] == 0xFF: break + time.sleep(0.01) + self.set_number(currAddr, self.DEVICE_CMD['SET_START_ADDRESS']) + time.sleep(0.02) + + self.gbx_flash_write_data_bytes("GBA_FLASH_WRITE_BYTE", data) + + else: # SRAM / EEPROM + self.gbx_flash_write_data_bytes(write_command, data) + + self.wait_for_ack() + + pos += buffer_len + + if not pos == save_size: signal.emit(None, pos, save_size, speed/1024, time.time()-time_start, 0) + self.INFO["transfered"] = pos + + if self.MODE == "DMG": + self.EnableRAM(mbc=mbc, enable=False) + elif self.MODE == "AGB": + if bank > 0: self.set_number(0, self.DEVICE_CMD['GBA_FLASH_SET_BANK']) + + if mode == 2: file.close() + + self.ReadInfo() + self.INFO["last_action"] = mode + signal.emit(None, pos, pos, speed/1024, time.time()-time_start, 0) + + ######################################### + + elif mode == 4: # Flash ROM + with open(path, "rb") as file: data_import = file.read() + + if self.MODE == "DMG": + supported_carts = list(self.SUPPORTED_CARTS_DMG.values()) + elif self.MODE == "AGB": + supported_carts = list(self.SUPPORTED_CARTS_AGB.values()) + + cart_type = "RETAIL" + for i in range(0, len(supported_carts)): + if i == args[1]: cart_type = supported_carts[i] + if cart_type == "RETAIL" or cart_type == "AUTODETECT": return False # Generic ROM Cartridge is not flashable + + flashcart_meta = cart_type.copy() + + signal.emit(None, 0, len(data_import), 0, 0, 0) + time_start = time.time() + speed = 0 + time_left = 0 + + # Set Voltage + if flashcart_meta["voltage"] == 3.3: + self.set_mode(self.DEVICE_CMD['VOLTAGE_3_3V']) + elif flashcart_meta["voltage"] == 5: + self.set_mode(self.DEVICE_CMD['VOLTAGE_5V']) + time.sleep(1) + + if self.MODE == "DMG": + self.set_mode(self.DEVICE_CMD['GB_CART_MODE']) + if "flash_commands_on_bank_1" in flashcart_meta: + self.set_mode(self.DEVICE_CMD['GB_FLASH_BANK_1_COMMAND_WRITES']) + + self.set_mode(self.DEVICE_CMD['GB_FLASH_WE_PIN']) + if flashcart_meta["write_pin"] == "WR": + self.set_mode(self.DEVICE_CMD['WE_AS_WR_PIN']) + elif flashcart_meta["write_pin"] == "VIN": + self.set_mode(self.DEVICE_CMD['WE_AS_AUDIO_PIN']) + + if "single_write" in flashcart_meta["commands"] and len(flashcart_meta["commands"]["single_write"]) == 4: + # Submit flash program commands to firmware + self.set_mode(self.DEVICE_CMD['GB_FLASH_PROGRAM_METHOD']) + for i in range(0, 3): + self.write(bytearray(format(flashcart_meta["commands"]["single_write"][i][0], "x"), "ascii") + b'\x00', True) + self.write(bytearray(format(flashcart_meta["commands"]["single_write"][i][1], "x"), "ascii") + b'\x00', True) + + elif self.MODE == "AGB": + # Read a bit of ROM before starting + self.ReadROM(0, 64) + + # Unlock Flash + if "unlock" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["unlock"])): + addr = flashcart_meta["commands"]["unlock"][i][0] + data = flashcart_meta["commands"]["unlock"][i][1] + count = flashcart_meta["commands"]["unlock"][i][2] + for j in range(0, count): + self.gbx_flash_write_address_byte(addr, data) + + # Reset Flash + if "reset" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["reset"])): + self.gbx_flash_write_address_byte(flashcart_meta["commands"]["reset"][i][0], flashcart_meta["commands"]["reset"][i][1]) + + # Read Identifier + if "read_identifier" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["read_identifier"])): + self.gbx_flash_write_address_byte(flashcart_meta["commands"]["read_identifier"][i][0], flashcart_meta["commands"]["read_identifier"][i][1]) + flash_id_found = False + for i in range(0, len(flashcart_meta["flash_ids"])): + flash_id = list(self.ReadROM(0, 64)[0:len(flashcart_meta["flash_ids"][i])]) + if flash_id in flashcart_meta["flash_ids"]: flash_id_found = True + if not flash_id_found and len(flashcart_meta["flash_ids"]) > 0: + pass + + # Reset Flash + if "reset" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["reset"])): + self.gbx_flash_write_address_byte(flashcart_meta["commands"]["reset"][i][0], flashcart_meta["commands"]["reset"][i][1]) + + # Chip Erase + if "chip_erase" in flashcart_meta["commands"] and "sector_erase" not in flashcart_meta["commands"]: + signal.emit({"action":"ERASE", "abortable":False}, 1, 0, 0, time.time()-time_start, 0) + for i in range(0, len(flashcart_meta["commands"]["chip_erase"])): + addr = flashcart_meta["commands"]["chip_erase"][i][0] + data = flashcart_meta["commands"]["chip_erase"][i][1] + if not addr == None: + self.gbx_flash_write_address_byte(addr, data) + if flashcart_meta["commands"]["chip_erase_wait_for"][i][0] != None: + addr = flashcart_meta["commands"]["chip_erase_wait_for"][i][0] + data = flashcart_meta["commands"]["chip_erase_wait_for"][i][1] + timeout = flashcart_meta["chip_erase_timeout"] + while True: + signal.emit({"action":"ERASE", "abortable":False}, 1, 0, 0, time.time()-time_start, 0) + if "wait_read_status_register" in flashcart_meta and flashcart_meta["wait_read_status_register"] == True: + for j in range(0, len(flashcart_meta["commands"]["read_status_register"])): + sr_addr = flashcart_meta["commands"]["read_status_register"][j][0] + sr_data = flashcart_meta["commands"]["read_status_register"][j][1] + self.gbx_flash_write_address_byte(sr_addr, sr_data) + wait_for = self.ReadROM(addr, 64) + wait_for = ((wait_for[1] << 8 | wait_for[0]) & flashcart_meta["commands"]["chip_erase_wait_for"][i][2]) + if wait_for == data: break + time.sleep(1) + timeout -= 1 + if timeout < 1: + signal.emit({"action":"ABORT", "info_type":"msgbox_critical", "info_msg":"Erasing the flash chip timed out. Please make sure the correct flash cartridge type is selected.", "abortable":False}, 0, 0, 0, 0, 0) + return False + + # Reset Flash + if "reset" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["reset"])): + self.gbx_flash_write_address_byte(flashcart_meta["commands"]["reset"][i][0], flashcart_meta["commands"]["reset"][i][1]) + + self.set_number(0, self.DEVICE_CMD['SET_START_ADDRESS']) + time.sleep(0.02) + + # Write Flash + pos = 0 + currAddr = 0 + if self.MODE == "DMG": + if "first_bank" in flashcart_meta: first_bank = flashcart_meta["first_bank"] + if "start_addr" in flashcart_meta: currAddr = flashcart_meta["start_addr"] + endAddr = 0x7FFF + bank_count = math.floor(len(data_import) / bank_size) + self.SetBankROM(0) + elif self.MODE == "AGB": + currAddr = 0 + endAddr = len(data_import) + first_bank = 0 + bank_count = 1 + + time_start = time.time() + last_emit = time.time() + + sectCount = None + currSect = 0 + if "sector_erase" in flashcart_meta["commands"]: + if isinstance(flashcart_meta["sector_size"], list): + sector_size = flashcart_meta["sector_size"][currSect][0] + else: + sector_size = flashcart_meta["sector_size"] + + for bank in range(first_bank, bank_count): + if self.MODE == "DMG": + if bank > first_bank: currAddr = bank_size + self.set_number(currAddr, self.DEVICE_CMD['SET_START_ADDRESS']) + time.sleep(0.02) + + while (currAddr < endAddr): + if self.CANCEL: + # Reset Flash + if "reset" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["reset"])): + self.gbx_flash_write_address_byte(flashcart_meta["commands"]["reset"][i][0], flashcart_meta["commands"]["reset"][i][1]) + signal.emit({"action":"ABORT", "abortable":False}, 0, 0, 0, 0, 0) + return + + if self.MODE == "DMG": + # Change Bank + if (currAddr == bank_size): + # Reset Flash + if "reset" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["reset"])): + self.gbx_flash_write_address_byte(flashcart_meta["commands"]["reset"][i][0], flashcart_meta["commands"]["reset"][i][1]) + self.SetBankROM(bank) + time.sleep(0.05) + + # Sector Erase (if supported) + if "sector_erase" in flashcart_meta["commands"]: + if isinstance(flashcart_meta["sector_size"], list): + if sectCount == None: + sectCount = flashcart_meta["sector_size"][currSect][1] + if sectCount == 0: + if ((currSect+1) != len(flashcart_meta["sector_size"])): + currSect += 1 + sectCount = flashcart_meta["sector_size"][currSect][1] + + if pos % sector_size == 0: + signal.emit({"action":"SECTOR_ERASE", "abortable":False}, 1, 0, 0, time.time()-time_start, 0) + + # Update sector size if required + if "sector_erase" in flashcart_meta["commands"]: + if isinstance(flashcart_meta["sector_size"], list): + sector_size = flashcart_meta["sector_size"][currSect][0] + + for i in range(0, len(flashcart_meta["commands"]["sector_erase"])): + addr = flashcart_meta["commands"]["sector_erase"][i][0] + data = flashcart_meta["commands"]["sector_erase"][i][1] + if addr == "SA": addr = currAddr + if addr == "SA+1": addr = currAddr + 1 + if addr == "SA+2": addr = currAddr + 2 + if not addr == None: + self.gbx_flash_write_address_byte(addr, data) + if flashcart_meta["commands"]["sector_erase_wait_for"][i][0] != None: + addr = flashcart_meta["commands"]["sector_erase_wait_for"][i][0] + data = flashcart_meta["commands"]["sector_erase_wait_for"][i][1] + if addr == "SA": addr = currAddr + if addr == "SA+1": addr = currAddr + 1 + if addr == "SA+2": addr = currAddr + 2 + time.sleep(0.05) + timeout = 50 + while True: + if "wait_read_status_register" in flashcart_meta and flashcart_meta["wait_read_status_register"] == True: + for j in range(0, len(flashcart_meta["commands"]["read_status_register"])): + sr_addr = flashcart_meta["commands"]["read_status_register"][j][0] + sr_data = flashcart_meta["commands"]["read_status_register"][j][1] + self.gbx_flash_write_address_byte(sr_addr, sr_data) + wait_for = self.ReadROM(currAddr, 64) + wait_for = ((wait_for[1] << 8 | wait_for[0]) & flashcart_meta["commands"]["sector_erase_wait_for"][i][2]) + time.sleep(0.1) + timeout -= 1 + if timeout < 1: + signal.emit({"action":"ABORT", "info_type":"msgbox_critical", "info_msg":"Erasing a flash chip sector timed out. Please make sure the correct flash cartridge type is selected.", "abortable":False}, 0, 0, 0, 0, 0) + return False + if wait_for == data: break + + # Reset Flash + if "reset" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["reset"])): + self.gbx_flash_write_address_byte(flashcart_meta["commands"]["reset"][i][0], flashcart_meta["commands"]["reset"][i][1]) + + if self.MODE == "DMG": + self.set_number(currAddr, self.DEVICE_CMD['SET_START_ADDRESS']) + elif self.MODE == "AGB": + self.set_number(currAddr / 2, self.DEVICE_CMD['SET_START_ADDRESS']) + time.sleep(0.02) + + if sectCount is not None: + sectCount -= 1 + + # Write data (with special firmware acceleration if available) + if "buffer_write" in flashcart_meta["commands"]: + if self.MODE == "DMG": + # BUNG Doctor GB Card 64M + if flashcart_meta["commands"]["buffer_write"] == [['SA', 232], ['SA', 'BS'], ['PA', 'PD'], ['SA', 208]]: + data = data_import[pos:pos+32] + self.gbx_flash_write_data_bytes("GB_FLASH_WRITE_INTEL_BUFFERED_32BYTE", data) + self.wait_for_ack() + currAddr += 32 + pos += 32 + + else: + print("FAILURE: Buffer writing for this flash method is not implemented yet.") + self.CANCEL = True + # TODO + + elif self.MODE == "AGB": + # Flash2Advance 256M + if flashcart_meta["commands"]["buffer_write"] == [['SA', 232], ['SA+2', 232], ['SA', 'BS'], ['SA+2', 'BS'], ['PA', 'PD'], ['SA', 208], ['SA+2', 208], [None, None], [None, None]]: + data = data_import[pos:pos+256] + self.gbx_flash_write_data_bytes("GBA_FLASH_WRITE_INTEL_INTERLEAVED_256BYTE", data) + self.wait_for_ack() + currAddr += 256 + pos += 256 + + # 256L30B + elif flashcart_meta["commands"]["buffer_write"] == [['SA', 96], ['SA', 208], ['SA', 232], ['SA', 'BS'], ['PA', 'PD'], ['SA', 208], ['SA', 255]]: + if "single_write_7FC0_to_7FFF" in flashcart_meta and int(currAddr % 0x8000) in range(0x7FC0, 0x7FFF): + for i in range(0, len(flashcart_meta["commands"]["single_write"])): + addr = flashcart_meta["commands"]["single_write"][i][0] + data = flashcart_meta["commands"]["single_write"][i][1] + if addr == "PA": addr = int(currAddr) + if data == "PD": data = struct.unpack('H', data_import[pos:pos+2])[0] + self.gbx_flash_write_address_byte(addr, data) + currAddr += 2 + pos += 2 + + if int(currAddr % 0x8000) == 0: + self.set_number(currAddr / 2, self.DEVICE_CMD['SET_START_ADDRESS']) + time.sleep(0.02) + + else: + data = data_import[pos:pos+64] + self.gbx_flash_write_data_bytes("GBA_FLASH_WRITE_INTEL_64BYTE", data) + self.wait_for_ack() + currAddr += 64 + pos += 64 + + else: + print("FAILURE: Buffer writing for this flash method is not implemented yet.") + self.CANCEL = True + # TODO + + elif "single_write" in flashcart_meta["commands"]: + if self.MODE == "DMG": + data = data_import[pos:pos+64] + if "pulse_reset_after_write" in flashcart_meta: + self.gbx_flash_write_data_bytes("GB_FLASH_WRITE_64BYTE_PULSE_RESET", data) + else: + self.gbx_flash_write_data_bytes("GB_FLASH_WRITE_64BYTE", data) + self.wait_for_ack() + currAddr += 64 + pos += 64 + + elif self.MODE == "AGB": + # MSP55LV128M + if flashcart_meta["commands"]["single_write"] == [[1365, 169], [682, 86], [1365, 160], ['PA', 'PD']]: + data = data_import[pos:pos+256] + self.gbx_flash_write_data_bytes("GBA_FLASH_WRITE_256BYTE_SWAPPED_D0D1", data) + self.wait_for_ack() + currAddr += 256 + pos += 256 + + # E201850 and E201868 + elif flashcart_meta["commands"]["single_write"] == [[0, 112], [0, 16], ['PA', 'PD']] and (([ 0xB0, 0x00, 0xE2, 0x00 ] in flashcart_meta["flash_ids"]) or ([ 0xB0, 0x00, 0xB0, 0x00 ] in flashcart_meta["flash_ids"])): + data = data_import[pos:pos+64] + self.gbx_flash_write_data_bytes("GBA_FLASH_WRITE_SHARP_64BYTE", data) + self.wait_for_ack() + currAddr += 64 + pos += 64 + + else: # super slow + for i in range(0, len(flashcart_meta["commands"]["single_write"])): + addr = flashcart_meta["commands"]["single_write"][i][0] + data = flashcart_meta["commands"]["single_write"][i][1] + if addr == "PA": addr = int(currAddr) + if data == "PD": data = struct.unpack('H', data_import[pos:pos+2])[0] + self.gbx_flash_write_address_byte(addr, data) + + currAddr += 2 + pos += 2 + + # Report back to GUI + if pos % 4096 == 0: + now = time.time() + measure_points.append(now - last_emit) + last_emit = now + if len(measure_points) >= 16: + time_delta = statistics.median(measure_points) + speed = 4096 / time_delta + time_elapsed = time.time() - time_start + time_left = (time_elapsed / (pos/len(data_import))) - time_elapsed + if len(measure_points) >= 512: + measure_points = measure_points[-512:] + + if not pos == len(data_import): signal.emit(None, pos, len(data_import), speed/1024, time.time()-time_start, time_left) + + # Reset Flash + if "reset" in flashcart_meta["commands"]: + for i in range(0, len(flashcart_meta["commands"]["reset"])): + self.gbx_flash_write_address_byte(flashcart_meta["commands"]["reset"][i][0], flashcart_meta["commands"]["reset"][i][1]) + + signal.emit(None, pos, len(data_import), speed/1024, time.time()-time_start, time_left) diff --git a/src/res/icon.ico b/src/res/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..96f7487abc66d47c1335c9f1286ed46ce4914dc1 GIT binary patch literal 129959 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
_$UH$zPS+JvgJ$hT6VXaR}OAAgWj%c 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 b?QkNvW;3c{yxm|WEaI@`QDPOrC*}VD1|NId literal 0 HcmV?d00001 diff --git a/src/res/icon.png b/src/res/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3914af351f2088939a81bb6391972caeb58b59b2 GIT binary patch literal 19286 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