From 9b44a9959bf9fd6bab5f1005ce1c757d2f456fa7 Mon Sep 17 00:00:00 2001 From: Lesserkuma Date: Sat, 11 Jun 2022 02:01:46 +0200 Subject: [PATCH] 3.14 --- CHANGES.md | 7 + FlashGBX/DataTransfer.py | 2 +- FlashGBX/FlashGBX.py | 2 +- FlashGBX/FlashGBX_CLI.py | 38 ++--- FlashGBX/FlashGBX_GUI.py | 82 +++++------ FlashGBX/PocketCamera.py | 6 +- FlashGBX/PocketCameraWindow.py | 6 +- FlashGBX/Util.py | 65 ++++++++- FlashGBX/config/db_AGB.json | 172 +++++++++++------------ FlashGBX/config/fc_AGB_M29W640.txt | 89 ++++++++++++ FlashGBX/config/fc_AGB_MSP55LV128M.txt | 2 - FlashGBX/config/fc_AGB_S29GL032.txt | 8 +- FlashGBX/config/fc_DMG_GL032M11BAIR4.txt | 6 +- FlashGBX/fw_GBxCartRW_v1_3.py | 4 +- FlashGBX/fw_GBxCartRW_v1_4.py | 4 +- FlashGBX/hw_GBxCartRW.py | 14 +- FlashGBX/pyside.py | 40 ++++++ FlashGBX/res/config.zip | Bin 147653 -> 148139 bytes README.md | 36 ++--- setup.py | 8 +- 20 files changed, 380 insertions(+), 211 deletions(-) create mode 100644 FlashGBX/config/fc_AGB_M29W640.txt create mode 100644 FlashGBX/pyside.py diff --git a/CHANGES.md b/CHANGES.md index fb8d4f0..e296afc 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,11 @@ # Release notes +### v3.14 (released 2022-06-11) +- Fixed a bug with extracting the Game Boy Camera’s Game Face image *(thanks 2358)* +- Improved the default file names, now includes the ROM revision information as well +- The default file name format can now be configured within the `settings.ini` file +- Updated the Game Boy Advance lookup database for save types, ROM sizes and checksums (fixes some games such as Yoshi’s Universal Gravitation) *(thanks 2358)* +- FlashGBX now experimentally supports both PySide2 and PySide6 GUI frameworks which should make it easier to use on Apple M1 macOS systems *(thanks JFox)* + ### v3.13 (released 2022-05-30) - Bundles GBxCart RW v1.4 firmware version R36+L7 (fixes a problem with insideGadgets’ GBxCam application) - Added smaller selectable ROM sizes for Game Boy Advance ROM backups diff --git a/FlashGBX/DataTransfer.py b/FlashGBX/DataTransfer.py index b15b760..aaa1677 100644 --- a/FlashGBX/DataTransfer.py +++ b/FlashGBX/DataTransfer.py @@ -3,7 +3,7 @@ # Author: Lesserkuma (github.com/lesserkuma) import traceback -import PySide2 +from . import pyside as PySide2 class DataTransfer(PySide2.QtCore.QThread): CONFIG = None diff --git a/FlashGBX/FlashGBX.py b/FlashGBX/FlashGBX.py index 07f0fa1..b117614 100644 --- a/FlashGBX/FlashGBX.py +++ b/FlashGBX/FlashGBX.py @@ -89,7 +89,7 @@ def main(portableMode=False): app_path = os.path.dirname(os.path.abspath(__file__)) try: - from PySide2 import QtCore + from .pyside import QtCore cp = { "subdir":app_path + "/config", "appdata":QtCore.QStandardPaths.writableLocation(QtCore.QStandardPaths.AppConfigLocation) + '/FlashGBX' } except: cp = { "subdir":app_path + "/config", "appdata":os.path.expanduser('~') + '/FlashGBX' } diff --git a/FlashGBX/FlashGBX_CLI.py b/FlashGBX/FlashGBX_CLI.py index 96591c9..c09d0dd 100644 --- a/FlashGBX/FlashGBX_CLI.py +++ b/FlashGBX/FlashGBX_CLI.py @@ -749,6 +749,7 @@ class FlashGBX_CLI(): mbc = 1 rom_size = 0 + path = Util.GenerateFileName(mode=self.CONN.GetMode(), header=self.CONN.INFO, settings=None) if self.CONN.GetMode() == "DMG": if args.dmg_mbc == "auto": try: @@ -780,16 +781,6 @@ class FlashGBX_CLI(): else: sizes = [ "auto", "32kb", "64kb", "128kb", "256kb", "512kb", "1mb", "2mb", "4mb", "8mb", "16mb", "32mb" ] rom_size = Util.DMG_Header_ROM_Sizes_Flasher_Map[sizes.index(args.dmg_romsize) - 1] - - path = header["game_title"].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["old_lic"] == 0x33 and self.CONN.INFO["sgb"] == 0x03: - path = path + ".sgb" - else: - path = path + ".gb" elif self.CONN.GetMode() == "AGB": if args.agb_romsize == "auto": @@ -797,12 +788,6 @@ class FlashGBX_CLI(): else: sizes = [ "auto", "64kb", "128kb", "256kb", "512kb", "1mb", "2mb", "4mb", "8mb", "16mb", "32mb", "64mb", "128mb", "256mb" ] rom_size = Util.AGB_Header_ROM_Sizes_Map[sizes.index(args.agb_romsize) - 1] - - path = header["game_title"].strip().encode('ascii', 'ignore').decode('ascii') - if path == "": path = header["game_code"].strip().encode('ascii', 'ignore').decode('ascii') - if path == "": path = "ROM" - path = re.sub(r"[<>:\"/\\|\?\*]", "_", path) - path = path + ".gba" if args.path != "auto": if os.path.isdir(args.path): @@ -867,7 +852,6 @@ class FlashGBX_CLI(): print("Selected cartridge type: {:s}\n".format(cart_types[0][i])) cart_type = i break - self.CONN.TransferData(args={ 'mode':1, 'path':path, 'mbc':mbc, 'rom_size':rom_size, 'agb_rom_size':rom_size, 'start_addr':0, 'fast_read_mode':True, 'cart_type':cart_type }, signal=self.PROGRESS.SetProgress) def FlashROM(self, args, header): @@ -996,6 +980,14 @@ class FlashGBX_CLI(): add_date_time = args.save_filename_add_datetime is True rtc = args.store_rtc is True + path_datetime = "" + if add_date_time: + path_datetime = "_{:s}".format(datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) + + path = Util.GenerateFileName(mode=self.CONN.GetMode(), header=self.CONN.INFO, settings=None) + path = os.path.splitext(path)[0] + path += "{:s}.sav".format(path_datetime) + if self.CONN.GetMode() == "DMG": if args.dmg_mbc == "auto": try: @@ -1038,9 +1030,6 @@ class FlashGBX_CLI(): sizes = [ "auto", "4k", "16k", "64k", "256k", "512k", "1m", "eeprom2k", "eeprom4k", "tama5", "4m" ] save_type = Util.DMG_Header_RAM_Sizes_Flasher_Map[sizes.index(args.dmg_savesize)] - path = header["game_title"].strip().encode('ascii', 'ignore').decode('ascii') - if path == "": path = "ROM" - if save_type == 0: print("{:s}Unable to auto-detect the save size. Please use the “--dmg-savesize” command line switch to manually select it.{:s}".format(ANSI.RED, ANSI.RESET)) return @@ -1052,10 +1041,6 @@ class FlashGBX_CLI(): sizes = [ "auto", "eeprom4k", "eeprom64k", "sram256k", "flash512k", "flash1m", "dacs8m", "sram512k", "sram1m" ] save_type = sizes.index(args.agb_savetype) - path = header["game_title"].strip().encode('ascii', 'ignore').decode('ascii') - if path == "": path = header["game_code"].strip().encode('ascii', 'ignore').decode('ascii') - if path == "": path = "ROM" - mbc = 0 if save_type == 0 or save_type == None: print("{:s}Unable to auto-detect the save type. Please use the “--agb-savetype” command line switch to manually select it.{:s}".format(ANSI.RED, ANSI.RESET)) @@ -1064,11 +1049,6 @@ class FlashGBX_CLI(): else: return - if add_date_time: - path = re.sub(r"[<>:\"/\\|\?\*]", "_", path) + "_" + datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + ".sav" - else: - path = re.sub(r"[<>:\"/\\|\?\*]", "_", path) + ".sav" - if args.path != "auto": if os.path.isdir(args.path): path = args.path + "/" + path diff --git a/FlashGBX/FlashGBX_GUI.py b/FlashGBX/FlashGBX_GUI.py index 2fe4e87..eccbbe4 100644 --- a/FlashGBX/FlashGBX_GUI.py +++ b/FlashGBX/FlashGBX_GUI.py @@ -3,7 +3,7 @@ # Author: Lesserkuma (github.com/lesserkuma) import sys, os, time, datetime, re, json, platform, subprocess, requests, webbrowser, pkg_resources, struct, math -from PySide2 import QtCore, QtWidgets, QtGui +from .pyside import QtCore, QtWidgets, QtGui, QApplication from .RomFileDMG import RomFileDMG from .RomFileAGB import RomFileAGB from .PocketCameraWindow import PocketCameraWindow @@ -991,8 +991,6 @@ class FlashGBX_GUI(QtWidgets.QWidget): def DMGMapperTypeChanged(self, index): if index in (-1, 0): return - #if ((list(Util.DMG_Header_Mapper.items())[index])[0]) == 0x203: # Xploder GB - # self.cmbHeaderROMSizeResult.setCurrentIndex(Util.DMG_Header_ROM_Sizes_Flasher_Map.index(0x40000)) def CartridgeTypeChanged(self, index): if index in (-1, 0): return @@ -1028,19 +1026,12 @@ class FlashGBX_GUI(QtWidgets.QWidget): rom_size = 0 cart_type = 0 + path = Util.GenerateFileName(mode=self.CONN.GetMode(), header=self.CONN.INFO, settings=self.SETTINGS) if self.CONN.GetMode() == "DMG": setting_name = "LastDirRomDMG" last_dir = self.SETTINGS.value(setting_name) if last_dir is None: last_dir = QtCore.QStandardPaths.writableLocation(QtCore.QStandardPaths.DocumentsLocation) - path = self.lblHeaderTitleResult.text().strip().encode('ascii', 'ignore').decode('ascii') - if path == "" or self.lblHeaderTitleResult.styleSheet() == "QLabel { color: red; }": 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["old_lic"] == 0x33 and self.CONN.INFO["sgb"] == 0x03: - path = path + ".sgb" - else: - path = path + ".gb" + path = QtWidgets.QFileDialog.getSaveFileName(self, "Backup ROM", last_dir + "/" + path, "Game Boy ROM File (*.gb *.sgb *.gbc);;All Files (*.*)")[0] cart_type = self.cmbDMGCartridgeTypeResult.currentIndex() rom_size = Util.DMG_Header_ROM_Sizes_Flasher_Map[self.cmbHeaderROMSizeResult.currentIndex()] @@ -1049,12 +1040,8 @@ class FlashGBX_GUI(QtWidgets.QWidget): setting_name = "LastDirRomAGB" last_dir = self.SETTINGS.value(setting_name) if last_dir is None: last_dir = QtCore.QStandardPaths.writableLocation(QtCore.QStandardPaths.DocumentsLocation) - path = self.lblAGBHeaderTitleResult.text().strip().encode('ascii', 'ignore').decode('ascii') + "_" + self.lblAGBHeaderCodeResult.text().strip().encode('ascii', 'ignore').decode('ascii') - if path == "_": path = self.lblAGBHeaderCodeResult.text().strip().encode('ascii', 'ignore').decode('ascii') - if path == "" or self.lblAGBHeaderTitleResult.styleSheet() == "QLabel { color: red; }": path = "ROM" - path = re.sub(r"[<>:\"/\\|\?\*]", "_", path) + rom_size = Util.AGB_Header_ROM_Sizes_Map[self.cmbAGBHeaderROMSizeResult.currentIndex()] - path = path + ".gba" path = QtWidgets.QFileDialog.getSaveFileName(self, "Backup ROM", last_dir + "/" + path, "Game Boy Advance ROM File (*.gba *.srl);;All Files (*.*)")[0] cart_type = self.cmbAGBCartridgeTypeResult.currentIndex() @@ -1246,13 +1233,19 @@ class FlashGBX_GUI(QtWidgets.QWidget): if not self.CheckDeviceAlive(): return rtc = False features = [] + add_date_time = self.SETTINGS.value("SaveFileNameAddDateTime", default="disabled") + path_datetime = "" + if add_date_time and add_date_time.lower() == "enabled": + path_datetime = "_{:s}".format(datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) + path = Util.GenerateFileName(mode=self.CONN.GetMode(), header=self.CONN.INFO, settings=self.SETTINGS) + path = os.path.splitext(path)[0] + path += "{:s}.sav".format(path_datetime) if self.CONN.GetMode() == "DMG": setting_name = "LastDirSaveDataDMG" last_dir = self.SETTINGS.value(setting_name) if last_dir is None: last_dir = QtCore.QStandardPaths.writableLocation(QtCore.QStandardPaths.DocumentsLocation) - path = self.lblHeaderTitleResult.text().strip().encode('ascii', 'ignore').decode('ascii') - if path == "" or self.lblHeaderTitleResult.styleSheet() == "QLabel { color: red; }": path = "ROM" + mbc = (list(Util.DMG_Header_Mapper.items())[self.cmbHeaderFeaturesResult.currentIndex()])[0] try: features = list(Util.DMG_Header_Mapper.keys())[self.cmbHeaderFeaturesResult.currentIndex()] @@ -1266,9 +1259,7 @@ class FlashGBX_GUI(QtWidgets.QWidget): setting_name = "LastDirSaveDataAGB" last_dir = self.SETTINGS.value(setting_name) if last_dir is None: last_dir = QtCore.QStandardPaths.writableLocation(QtCore.QStandardPaths.DocumentsLocation) - path = self.lblAGBHeaderTitleResult.text().strip().encode('ascii', 'ignore').decode('ascii') + "_" + self.lblAGBHeaderCodeResult.text().strip().encode('ascii', 'ignore').decode('ascii') - if path == "_": path = self.lblAGBHeaderCodeResult.text().strip().encode('ascii', 'ignore').decode('ascii') - if path == "" or self.lblAGBHeaderTitleResult.styleSheet() == "QLabel { color: red; }": path = "ROM" + mbc = 0 save_type = self.cmbAGBSaveTypeResult.currentIndex() if save_type == 0: @@ -1277,12 +1268,6 @@ class FlashGBX_GUI(QtWidgets.QWidget): else: return - add_date_time = self.SETTINGS.value("SaveFileNameAddDateTime", default="disabled") - if add_date_time and add_date_time.lower() == "enabled": - path = re.sub(r"[<>:\"/\\|\?\*]", "_", path) + "_" + datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + ".sav" - else: - path = re.sub(r"[<>:\"/\\|\?\*]", "_", path) + ".sav" - path = QtWidgets.QFileDialog.getSaveFileName(self, "Backup Save Data", last_dir + "/" + path, "Save Data File (*.sav);;All Files (*.*)")[0] if (path == ""): return @@ -1318,11 +1303,16 @@ class FlashGBX_GUI(QtWidgets.QWidget): def WriteRAM(self, dpath="", erase=False): if not self.CheckDeviceAlive(): return features = 0 + + if dpath == "": + path = Util.GenerateFileName(mode=self.CONN.GetMode(), header=self.CONN.INFO, settings=self.SETTINGS) + path = os.path.splitext(path)[0] + path += ".sav" + if self.CONN.GetMode() == "DMG": setting_name = "LastDirSaveDataDMG" last_dir = self.SETTINGS.value(setting_name) if last_dir is None: last_dir = QtCore.QStandardPaths.writableLocation(QtCore.QStandardPaths.DocumentsLocation) - if dpath == "": path = self.lblHeaderTitleResult.text().strip().encode('ascii', 'ignore').decode('ascii') mbc = (list(Util.DMG_Header_Mapper.items())[self.cmbHeaderFeaturesResult.currentIndex()])[0] try: features = list(Util.DMG_Header_Mapper.keys())[self.cmbHeaderFeaturesResult.currentIndex()] @@ -1337,8 +1327,6 @@ class FlashGBX_GUI(QtWidgets.QWidget): setting_name = "LastDirSaveDataAGB" last_dir = self.SETTINGS.value(setting_name) if last_dir is None: last_dir = QtCore.QStandardPaths.writableLocation(QtCore.QStandardPaths.DocumentsLocation) - if dpath == "": - path = self.lblAGBHeaderTitleResult.text().strip().encode('ascii', 'ignore').decode('ascii') + "_" + self.lblAGBHeaderCodeResult.text().strip().encode('ascii', 'ignore').decode('ascii') mbc = 0 save_type = self.cmbAGBSaveTypeResult.currentIndex() if save_type == 0: @@ -1358,7 +1346,6 @@ class FlashGBX_GUI(QtWidgets.QWidget): answer = QtWidgets.QMessageBox.warning(self, "{:s} {:s}".format(APPNAME, VERSION), "The save data on your cartridge will now be erased.", QtWidgets.QMessageBox.Ok | QtWidgets.QMessageBox.Cancel, QtWidgets.QMessageBox.Cancel) if answer == QtWidgets.QMessageBox.Cancel: return else: - path = re.sub(r"[<>:\"/\\|\?\*]", "_", path) + ".sav" path = QtWidgets.QFileDialog.getOpenFileName(self, "Restore Save Data", last_dir + "/" + path, "Save Data File (*.sav);;All Files (*.*)")[0] if not path == "": self.SETTINGS.setValue(setting_name, os.path.dirname(path)) if (path == ""): return @@ -1532,17 +1519,18 @@ class FlashGBX_GUI(QtWidgets.QWidget): self.cmbHeaderFeaturesResult.clear() self.cmbHeaderFeaturesResult.addItems(list(Util.DMG_Header_Mapper.values())) self.cmbHeaderFeaturesResult.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContents) - self.cmbDMGCartridgeTypeResult.clear() - self.cmbDMGCartridgeTypeResult.addItems(self.CONN.GetSupportedCartridgesDMG()[0]) - self.cmbDMGCartridgeTypeResult.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContents) + if resetStatus: + self.cmbDMGCartridgeTypeResult.clear() + self.cmbDMGCartridgeTypeResult.addItems(self.CONN.GetSupportedCartridgesDMG()[0]) + self.cmbDMGCartridgeTypeResult.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContents) + if "flash_type" in data: + self.cmbDMGCartridgeTypeResult.setCurrentIndex(data["flash_type"]) self.cmbHeaderROMSizeResult.clear() self.cmbHeaderROMSizeResult.addItems(Util.DMG_Header_ROM_Sizes) self.cmbHeaderROMSizeResult.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContents) self.cmbHeaderRAMSizeResult.clear() self.cmbHeaderRAMSizeResult.addItems(Util.DMG_Header_RAM_Sizes) self.cmbHeaderRAMSizeResult.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContents) - if "flash_type" in data: - self.cmbDMGCartridgeTypeResult.setCurrentIndex(data["flash_type"]) self.lblHeaderTitleResult.setText(data['game_title']) self.lblHeaderRevisionResult.setText(str(data['version'])) @@ -1667,11 +1655,12 @@ class FlashGBX_GUI(QtWidgets.QWidget): self.grpDMGCartridgeInfo.setVisible(True) elif self.CONN.GetMode() == "AGB": - self.cmbAGBCartridgeTypeResult.clear() - self.cmbAGBCartridgeTypeResult.addItems(self.CONN.GetSupportedCartridgesAGB()[0]) - self.cmbAGBCartridgeTypeResult.setSizeAdjustPolicy(QtWidgets.QComboBox.AdjustToContents) - if "flash_type" in data: - self.cmbAGBCartridgeTypeResult.setCurrentIndex(data["flash_type"]) + if resetStatus: + self.cmbAGBCartridgeTypeResult.clear() + self.cmbAGBCartridgeTypeResult.addItems(self.CONN.GetSupportedCartridgesAGB()[0]) + self.cmbAGBCartridgeTypeResult.setSizeAdjustPolicy(QtWidgets.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']) @@ -2297,7 +2286,7 @@ class FlashGBX_GUI(QtWidgets.QWidget): # Taskbar Progress on Windows only try: - from PySide2.QtWinExtras import QWinTaskbarButton, QtWin + from PySide2.QtWinExtras import QWinTaskbarButton, QtWin myappid = 'lesserkuma.flashgbx' QtWin.setCurrentProcessExplicitAppUserModelID(myappid) taskbar_button = QWinTaskbarButton() @@ -2308,7 +2297,10 @@ class FlashGBX_GUI(QtWidgets.QWidget): except ImportError: pass - qt_app.exec_() + try: + qt_app.exec() # PySide6 + except AttributeError: + qt_app.exec_() # PySide2 -qt_app = QtWidgets.QApplication(sys.argv) +qt_app = QApplication(sys.argv) qt_app.setApplicationName(APPNAME) diff --git a/FlashGBX/PocketCamera.py b/FlashGBX/PocketCamera.py index f207d5f..58f4ea1 100644 --- a/FlashGBX/PocketCamera.py +++ b/FlashGBX/PocketCamera.py @@ -103,9 +103,11 @@ class PocketCamera: return self.ConvertPicture(imgbuffer, lastseen=True) def ExtractPicture(self, index): - if index <= 30: + if index < 30: index = self.ORDER[index] offset = 0x2000 + (index * 0x1000) + elif index == 30: + offset = 0x11FC elif index == 31: offset = 0 imgbuffer = self.DATA[offset:offset+0x1000] @@ -117,7 +119,7 @@ class PocketCamera: pnginfo.add_text("Creation Time", email.utils.formatdate()) if index == 30: - pic = self.GetPicture(0) + pic = self.GetPicture(30) pnginfo.add_text("Title", "Game Face") elif index == 31: pic = self.GetPicture(31) diff --git a/FlashGBX/PocketCameraWindow.py b/FlashGBX/PocketCameraWindow.py index fea7be2..0dc00ad 100644 --- a/FlashGBX/PocketCameraWindow.py +++ b/FlashGBX/PocketCameraWindow.py @@ -2,10 +2,10 @@ # FlashGBX # Author: Lesserkuma (github.com/lesserkuma) -import functools, os, json, platform, shutil, hashlib +import functools, os, json, platform, shutil from PIL.ImageQt import ImageQt from PIL import Image, ImageDraw -from PySide2 import QtCore, QtWidgets, QtGui +from .pyside import QtCore, QtWidgets, QtGui, QDesktopWidget from .PocketCamera import PocketCamera class PocketCameraWindow(QtWidgets.QDialog): @@ -204,7 +204,7 @@ class PocketCameraWindow(QtWidgets.QDialog): def run(self): self.layout.update() self.layout.activate() - screenGeometry = QtWidgets.QDesktopWidget().screenGeometry() + screenGeometry = QDesktopWidget().screenGeometry(self) x = (screenGeometry.width() - self.width()) / 2 y = (screenGeometry.height() - self.height()) / 2 self.move(x, y) diff --git a/FlashGBX/Util.py b/FlashGBX/Util.py index 32d7b74..890617e 100644 --- a/FlashGBX/Util.py +++ b/FlashGBX/Util.py @@ -2,12 +2,12 @@ # FlashGBX # Author: Lesserkuma (github.com/lesserkuma) -import math, time, datetime, copy, configparser, threading, statistics, os, platform, traceback, io, struct +import math, time, datetime, copy, configparser, threading, statistics, os, platform, traceback, io, struct, re from enum import Enum # Common constants APPNAME = "FlashGBX" -VERSION_PEP440 = "3.13" +VERSION_PEP440 = "3.14" VERSION = "v{:s}".format(VERSION_PEP440) DEBUG = False @@ -520,7 +520,13 @@ def GetDumpReport(di, device): di["hdr_logo"] = "OK" if di["header"]["logo_correct"] else "Invalid" di["header"]["game_title_raw"] = di["header"]["game_title_raw"].replace("\0", "␀") if mode == "DMG": + game_title = di["header"]["game_title_raw"] + game_code = "" if di["header"]["cgb"] == 0xC0 or di["header"]["cgb"] == 0x80: + if len(di["header"]["game_title_raw"].rstrip("\x00")) == 15: + if game_title[-4:][0] in ("A", "B", "H", "K", "V") and game_title[-4:][3] in ("A", "B", "D", "E", "F", "I", "J", "K", "P", "S", "U", "X", "Y"): + game_code = "* Game Code: {:s}\n".format(game_title[-4:]) + game_title = game_title[:-4].rstrip("_") di["hdr_target_platform"] = "Game Boy Color" elif di["header"]["old_lic"] == 0x33 and di["header"]["sgb"] == 0x03: di["hdr_target_platform"] = "Super Game Boy" @@ -563,7 +569,8 @@ def GetDumpReport(di, device): s += "" \ "\n== Parsed Data ==\n" \ - "* Game Title/Code: {hdr_game_title:s}\n" \ + "* Game Title: {hdr_game_title:s}\n" \ + "{hdr_game_code:s}" \ "* Revision: {hdr_revision:s}\n" \ "* Super Game Boy: {hdr_sgb:s}\n" \ "* Game Boy Color: {hdr_cgb:s}\n" \ @@ -574,7 +581,7 @@ def GetDumpReport(di, device): "* SRAM Size: {hdr_save_type:s}\n" \ "* Mapper Type: {hdr_mapper_type:s}\n" \ "* Target Platform: {hdr_target_platform:s}\n" \ - .format(hdr_game_title=di["header"]["game_title_raw"], hdr_revision=str(di["header"]["version"]), hdr_sgb=di["hdr_sgb"], hdr_cgb=di["hdr_cgb"], hdr_logo=di["hdr_logo"], hdr_header_checksum=di["hdr_header_checksum"], hdr_rom_checksum=di["hdr_rom_checksum"], hdr_rom_size=di["hdr_rom_size"], hdr_save_type=di["hdr_save_type"], hdr_mapper_type=di["hdr_mapper_type"], hdr_target_platform=di["hdr_target_platform"]) + .format(hdr_game_title=game_title, hdr_game_code=game_code, hdr_revision=str(di["header"]["version"]), hdr_sgb=di["hdr_sgb"], hdr_cgb=di["hdr_cgb"], hdr_logo=di["hdr_logo"], hdr_header_checksum=di["hdr_header_checksum"], hdr_rom_checksum=di["hdr_rom_checksum"], hdr_rom_size=di["hdr_rom_size"], hdr_save_type=di["hdr_save_type"], hdr_mapper_type=di["hdr_mapper_type"], hdr_target_platform=di["hdr_target_platform"]) if "gbmem" in di and di["gbmem"] is not None: s += "" \ "* Map Parameters: {gbmem:s}\n" \ @@ -613,10 +620,58 @@ def GetDumpReport(di, device): if "agb_save_flash_id" in di and di["agb_save_flash_id"] is not None: s += "" \ "* Save Flash Chip: {agb_save_flash_chip_name:s} (0x{agb_save_flash_chip_id:04X})\n" \ - .format(agb_save_flash_chip_name=di["agb_save_flash_id"][2], agb_save_flash_chip_id=di["agb_save_flash_id"][1]) + .format(agb_save_flash_chip_name=di["agb_save_flash_id"][1], agb_save_flash_chip_id=di["agb_save_flash_id"][0]) return s +def GenerateFileName(mode, header, settings): + path = "ROM" + if mode == "DMG": + path_title = header["game_title"] + path_code = "" + path_revision = str(header["version"]) + path_extension = "bin" + path = "%TITLE%" + if settings is not None: + path = settings.value(key="FileNameFormatDMG", default=path) + if header["cgb"] == 0xC0 or header["cgb"] == 0x80: + if len(header["game_title_raw"].rstrip("\x00")) == 15: + if path_title[-4:][0] in ("A", "B", "H", "K", "V") and path_title[-4:][3] in ("A", "B", "D", "E", "F", "I", "J", "K", "P", "S", "U", "X", "Y"): + path_code = path_title[-4:] + path_title = path_title[:-4].rstrip("_") + path = "%TITLE%_%CODE%-%REVISION%" + if settings is not None: + path = settings.value(key="FileNameFormatCGB", default=path) + path_extension = "gbc" + elif header["old_lic"] == 0x33 and header["sgb"] == 0x03: + path_extension = "sgb" + else: + path_extension = "gb" + if path_title == "": + path = "ROM.{:s}".format(path_extension) + else: + path = path.replace("%TITLE%", path_title.strip()) + path = path.replace("%CODE%", path_code.strip()) + path = path.replace("%REVISION%", path_revision) + path = re.sub(r"[<>:\"/\\|\?\*]", "_", path) + path += ".{:s}".format(path_extension) + elif mode == "AGB": + path = "%TITLE%_%CODE%-%REVISION%" + if settings is not None: + path = settings.value(key="FileNameFormatAGB", default=path) + path_title = header["game_title"] + path_code = header["game_code"] + path_revision = str(header["version"]) + if (path_title == "" and path_code == ""): + path = "ROM.gba" + else: + path = path.replace("%TITLE%", path_title.strip()) + path = path.replace("%CODE%", path_code.strip()) + path = path.replace("%REVISION%", path_revision) + path = re.sub(r"[<>:\"/\\|\?\*]", "_", path) + path += ".gba" + return path + def validate_datetime_format(string, format): try: if string != datetime.datetime.strptime(string, format).strftime(format): diff --git a/FlashGBX/config/db_AGB.json b/FlashGBX/config/db_AGB.json index 6097dff..dfeccf1 100644 --- a/FlashGBX/config/db_AGB.json +++ b/FlashGBX/config/db_AGB.json @@ -422,9 +422,9 @@ "07748c5c0edcd6890aba301b5cfb882d1c7b61cc": { "rs": 16777216, "rc": 3479774578, - "gc": "A3IJ", "ss": 8192, - "st": 2 + "st": 2, + "gc": "A3IJ" }, "e2f12287081274a4219484e1011df55fe128464f": { "rs": 8388608, @@ -926,9 +926,9 @@ "6f5857fcd4bfbf4faa4663c5264a82e3b227c8c9": { "rs": 8388608, "rc": 1058406058, - "gc": "A5KJ", "ss": 8192, - "st": 2 + "st": 2, + "gc": "A5KJ" }, "0af2969144a1b23ec55accd861b8b654b888a35c": { "rs": 8388608, @@ -2214,9 +2214,9 @@ "a4512fdd8e2a3578bb845c3eacbc4ce00929862d": { "rs": 4194304, "rc": 1726573365, - "gc": "ABFJ", - "ss": 8192, - "st": 2 + "ss": 32768, + "st": 3, + "gc": "ABFJ" }, "bb1a5113a8c79949aa021befa000edac151ea835": { "rs": 4194304, @@ -2795,9 +2795,9 @@ "b51cbeb1518b0b82f3c6f2793728ee80184a87b8": { "rs": 4194304, "rc": 2670723119, - "gc": "ACZP", - "ss": 8192, - "st": 2 + "ss": 512, + "st": 1, + "gc": "ACZP" }, "b6d80926c21f87b37bc8ee48a1e9d318349b1504": { "rs": 4194304, @@ -6393,9 +6393,9 @@ "a831603d7b6eb2c1218bee8325ac8b9b1af3f150": { "rs": 4194304, "rc": 140251524, - "gc": "ANTJ", - "ss": 8192, - "st": 2 + "ss": 32768, + "st": 3, + "gc": "ANTJ" }, "4ff2e579ae5644d40dffd9f4ed001ac49dbab21f": { "rs": 4194304, @@ -7695,9 +7695,9 @@ "28ff9cc06162a4b205f13f6cd44829aa226fbb61": { "rs": 16777216, "rc": 3508024577, - "gc": "ASIE", "ss": 8192, - "st": 2 + "st": 2, + "gc": "ASIE" }, "9f19f09f2379b8c0ae95b3c7b2225c27de435f39": { "rs": 8388608, @@ -7744,9 +7744,9 @@ "4b5e58bdda76ffc76631a908c2180bdc0d4cf182": { "rs": 8388608, "rc": 2811785982, - "gc": "ASNJ", - "ss": 8192, - "st": 2 + "ss": 512, + "st": 1, + "gc": "ASNJ" }, "b37ebb42082531a8b19b4135b418b1a0f379777e": { "rs": 8388608, @@ -9326,9 +9326,9 @@ "90b3f47c4786796dc677df692cf1bdb060b6bc5a": { "rs": 8388608, "rc": 1167458473, - "gc": "AXRP", - "ss": 8192, - "st": 2 + "ss": 512, + "st": 1, + "gc": "AXRP" }, "a3407a821d70ca993070de023978f6fad99ce168": { "rs": 8388608, @@ -9795,9 +9795,9 @@ "1403d29d785921ef64c937a425480cc3ac55994b": { "rs": 8388608, "rc": 302064698, - "gc": "AZ8E", - "ss": 8192, - "st": 2 + "ss": 512, + "st": 1, + "gc": "AZ8E" }, "1692bac2caaf63b913c737ac76321a4f94b7364a": { "rs": 8388608, @@ -10558,16 +10558,16 @@ "a055f008d019434c18c4ecab172033897de643f8": { "rs": 4194304, "rc": 4139076061, - "gc": "B3JE", - "ss": 8192, - "st": 2 + "ss": 0, + "st": 0, + "gc": "B3JE" }, "dfeb4fc4c55d9f60c360a82bb704c06b09391091": { "rs": 4194304, "rc": 4008772784, - "gc": "B3JP", - "ss": 8192, - "st": 2 + "ss": 0, + "st": 0, + "gc": "B3JP" }, "5231d174ba03d16626e55ef442798149024991be": { "rs": 16777216, @@ -13225,9 +13225,9 @@ "c35514b185c9dfe221477015834c982416e6a468": { "rs": 8388608, "rc": 2853482904, - "gc": "BFDJ", "ss": 8192, - "st": 2 + "st": 2, + "gc": "BFDJ" }, "229cd73d98ea89354eac7ced19610aed65a299a1": { "rs": 8388608, @@ -13414,9 +13414,9 @@ "cc2420acfeb107bca88b8c95e3c6b2dbfb312b44": { "rs": 8388608, "rc": 310993820, - "gc": "BFUE", - "ss": 8192, - "st": 2 + "ss": 512, + "st": 1, + "gc": "BFUE" }, "c9ed82d3960e1d50c3af095217c5fcd6939223a8": { "rs": 16777216, @@ -13988,9 +13988,9 @@ "da9474bc0ffd4b1a37de8342ca256c1e2792629a": { "rs": 8388608, "rc": 1083542572, - "gc": "BHDJ", "ss": 8192, - "st": 2 + "st": 2, + "gc": "BHDJ" }, "191a5f32084d68ca0ab9ae699559409c4df9e44c": { "rs": 8388608, @@ -14464,9 +14464,9 @@ "3cb020218f7d0df5aac338b2997a94ff832057ad": { "rs": 16777216, "rc": 2699800977, - "gc": "BIME", "ss": 8192, - "st": 2 + "st": 2, + "gc": "BIME" }, "586016806d38ed555396f0961f3cb2ad71134046": { "rs": 16777216, @@ -14639,9 +14639,9 @@ "0d25f426bef88a6394573aabf77898a629d0625b": { "rs": 4194304, "rc": 1839427202, - "gc": "BJCJ", - "ss": 8192, - "st": 2 + "ss": 0, + "st": 0, + "gc": "BJCJ" }, "9af90f3edc8743bd4aca79699a76008df1cfc957": { "rs": 4194304, @@ -14891,9 +14891,9 @@ "87f3a23a874b49678842a68ca0e0b5ff133fa0c8": { "rs": 8388608, "rc": 3160063349, - "gc": "BKGJ", - "ss": 8192, - "st": 2 + "ss": 0, + "st": 0, + "gc": "BKGJ" }, "6c700a54826d353a7a8387ab9c3a95049b0e929f": { "rs": 4194304, @@ -14996,9 +14996,9 @@ "5972b4dda23cd79dab8e62935a2c49a15f57abee": { "rs": 8388608, "rc": 1134203627, - "gc": "BKQX", - "ss": 8192, - "st": 2 + "ss": 512, + "st": 1, + "gc": "BKQX" }, "751f9d8707c1e2ab5fd055316ecaec9cff190b6f": { "rs": 8388608, @@ -15010,9 +15010,9 @@ "19d474e909cb9afa323ede14f350d030e57a6892": { "rs": 16777216, "rc": 746883250, - "gc": "BKSJ", - "ss": 8192, - "st": 2 + "ss": 512, + "st": 1, + "gc": "BKSJ" }, "1aa2e24d3e05e80c71d4ca848c39579b273abfe5": { "rs": 16777216, @@ -15913,9 +15913,9 @@ "46e8087672b8e6e55c76a9bc3ae90dd82a4a0efb": { "rs": 8388608, "rc": 1383063551, - "gc": "BNBJ", "ss": 8192, - "st": 2 + "st": 2, + "gc": "BNBJ" }, "27290ef11179368455585d3160d3607425cd4bff": { "rs": 8388608, @@ -17586,9 +17586,9 @@ "2f4d0ab318819219b0c80cd61d40148b58b04df3": { "rs": 4194304, "rc": 682155056, - "gc": "BSHJ", - "ss": 8192, - "st": 2 + "ss": 512, + "st": 1, + "gc": "BSHJ" }, "185f7d5786cdb36f11705d89c97df9bcc0b21a73": { "rs": 8388608, @@ -19875,30 +19875,30 @@ "0480b99a83e6920d1fed9e846ff5ea80fbd442e7": { "rs": 4194304, "rc": 201213673, - "gc": "KHPJ", "ss": 8192, - "st": 2 + "st": 2, + "gc": "KHPJ" }, "c7d56c91f302e86650b2fdf52827a04f522fbf1b": { "rs": 8388608, "rc": 3863750236, - "gc": "KYGE", - "ss": 8192, - "st": 2 + "ss": 512, + "st": 1, + "gc": "KYGE" }, "50779ae9f99b2e279254850f2964de8ebe7516f9": { "rs": 8388608, "rc": 827935610, - "gc": "KYGJ", - "ss": 8192, - "st": 2 + "ss": 512, + "st": 1, + "gc": "KYGJ" }, "8321af4b0785defa6b5c8671106564551e69b521": { "rs": 8388608, "rc": 99930282, - "gc": "KYGP", - "ss": 8192, - "st": 2 + "ss": 512, + "st": 1, + "gc": "KYGP" }, "8f889007a7be21f1014b0fb65e9259dc3b832121": { "rs": 67108864, @@ -20253,65 +20253,65 @@ "569244c74f0f1c6d9bc1efefb6a2a1d0a5bdd77b": { "rs": 8388608, "rc": 3494379487, - "gc": "TCHK", - "ss": 8192, - "st": 2 + "ss": 0, + "st": 0, + "gc": "TCHK" }, "3fc931b3150d91bca7b4d525fc2894814d51a08c": { "rs": 16777216, "rc": 3791631057, - "gc": "U32E", "ss": 8192, - "st": 2 + "st": 2, + "gc": "U32E" }, "7e7fdea619a9715ac7a2948521174ff4816f9f6d": { "rs": 16777216, "rc": 1910689025, - "gc": "U32J", "ss": 8192, - "st": 2 + "st": 2, + "gc": "U32J" }, "0694b93592f3a49af4f90db935923c50efb88c6e": { "rs": 16777216, "rc": 671409545, - "gc": "U32J", "ss": 8192, - "st": 2 + "st": 2, + "gc": "U32J" }, "cd1945cc9ddf12b1f907d5a9511d95b50abbdb53": { "rs": 16777216, "rc": 1954646453, - "gc": "U32P", "ss": 8192, - "st": 2 + "st": 2, + "gc": "U32P" }, "f347b99107e83fce5c6d072594d019651c0b3e2f": { "rs": 16777216, "rc": 2940547426, - "gc": "U33J", "ss": 8192, - "st": 2 + "st": 2, + "gc": "U33J" }, "0c9b3e738df537c04ca2f107092acfa4344c8739": { "rs": 16777216, "rc": 3876957253, - "gc": "U3IE", "ss": 8192, - "st": 2 + "st": 2, + "gc": "U3IE" }, "f8d27f3c59c550c486a800d0416334f584ea8f4b": { "rs": 16777216, "rc": 2694580231, - "gc": "U3IJ", "ss": 8192, - "st": 2 + "st": 2, + "gc": "U3IJ" }, "8b686cee5bf0a1482003b33ab17fe5dc277a1ff3": { "rs": 16777216, "rc": 2525414251, - "gc": "U3IP", "ss": 8192, - "st": 2 + "st": 2, + "gc": "U3IP" }, "a073bd1aa042ea65b5959225e312b4b857476154": { "rs": 8388608, diff --git a/FlashGBX/config/fc_AGB_M29W640.txt b/FlashGBX/config/fc_AGB_M29W640.txt new file mode 100644 index 0000000..0535c2b --- /dev/null +++ b/FlashGBX/config/fc_AGB_M29W640.txt @@ -0,0 +1,89 @@ +{ + "type":"AGB", + "names":[ + "BX2006_TSOPBGA_0106 with M29W640", + "BX2006_TSOPBGA_6108 with M29W640" + ], + "flash_ids":[ + [ 0x20, 0x00, 0x7D, 0x22 ], + [ 0x20, 0x00, 0x7D, 0x22 ] + ], + "voltage":3.3, + "flash_size":0x800000, + "sector_size_from_cfi":true, + "chip_erase_timeout":120, + "command_set":"AMD", + "commands":{ + "reset":[ + [ 0, 0xF0 ] + ], + "read_identifier":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ 0xAAA, 0x90 ] + ], + "read_cfi":[ + [ 0xAA, 0x98 ] + ], + "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 ] + ], + "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 ] + ], + "buffer_write":[ + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], + [ "SA", 0x26 ], + [ "SA", "BS" ], + [ "PA", "PD" ], + [ "SA", 0x2A ] + ], + "buffer_write_wait_for":[ + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ null, null, null ], + [ "SA", "PD", 0xFFFF ] + ], + "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/FlashGBX/config/fc_AGB_MSP55LV128M.txt b/FlashGBX/config/fc_AGB_MSP55LV128M.txt index 3208d11..47e9769 100644 --- a/FlashGBX/config/fc_AGB_MSP55LV128M.txt +++ b/FlashGBX/config/fc_AGB_MSP55LV128M.txt @@ -5,7 +5,6 @@ "AGB-E05-01 with GL128S", "BX2006_0106_NEW with S29GL128N10TFI01", "BX2006_TSOP_64BALL with GL128S", - "BX2006_TSOPBGA_0106 with M29W640GB6AZA6", "AGB-E05-02 with M29W128GH", "AGB-E05-02 with M29W128FH", "2006_TSOP_64BALL_6106 with W29GL128SH9B", @@ -19,7 +18,6 @@ [ 0x02, 0x00, 0x7D, 0x22 ], [ 0x20, 0x00, 0x7D, 0x22 ], [ 0x20, 0x00, 0x7D, 0x22 ], - [ 0x20, 0x00, 0x7D, 0x22 ], [ 0xEF, 0x00, 0x7D, 0x22 ], [ 0x8A, 0x00, 0x7D, 0x22 ], [ 0x20, 0x00, 0x7D, 0x22 ] diff --git a/FlashGBX/config/fc_AGB_S29GL032.txt b/FlashGBX/config/fc_AGB_S29GL032.txt index 743095a..5080290 100644 --- a/FlashGBX/config/fc_AGB_S29GL032.txt +++ b/FlashGBX/config/fc_AGB_S29GL032.txt @@ -24,11 +24,11 @@ [ 0xAA, 0x98 ] ], "chip_erase":[ - [ 0xAAA, 0xAA ], - [ 0x555, 0x55 ], + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], [ 0xAAA, 0x80 ], - [ 0xAAA, 0xAA ], - [ 0x555, 0x55 ], + [ 0xAAA, 0xA9 ], + [ 0x555, 0x56 ], [ 0xAAA, 0x10 ] ], "chip_erase_wait_for":[ diff --git a/FlashGBX/config/fc_DMG_GL032M11BAIR4.txt b/FlashGBX/config/fc_DMG_GL032M11BAIR4.txt index 3ccfadf..78f018b 100644 --- a/FlashGBX/config/fc_DMG_GL032M11BAIR4.txt +++ b/FlashGBX/config/fc_DMG_GL032M11BAIR4.txt @@ -3,12 +3,14 @@ "names":[ "SD007_48BALL_64M with GL032M11BAIR4", "SD007_48BALL_64M_V2 with GL032M11BAIR4", - "S29GL032N90T and ALTERA CPLD (MBC5)" + "S29GL032N90T and ALTERA CPLD (MBC5)", + "29LV320TE and ALTERA CPLD (no PCB text)" ], "flash_ids":[ [ 0x02, 0x02, 0x7D, 0x7D ], [ 0x02, 0x02, 0x7D, 0x7D ], - [ 0x02, 0x02, 0x7D, 0x7D ] + [ 0x02, 0x02, 0x7D, 0x7D ], + [ 0x04, 0x04, 0xF5, 0xF5 ] ], "voltage":3.3, "flash_size":0x400000, diff --git a/FlashGBX/fw_GBxCartRW_v1_3.py b/FlashGBX/fw_GBxCartRW_v1_3.py index 2f71627..40a471b 100644 --- a/FlashGBX/fw_GBxCartRW_v1_3.py +++ b/FlashGBX/fw_GBxCartRW_v1_3.py @@ -3,7 +3,7 @@ # Author: Lesserkuma (github.com/lesserkuma) import zipfile, os, serial, struct, time, re, math, platform -from PySide2 import QtCore, QtWidgets, QtGui +from .pyside import QtCore, QtWidgets, QtGui, QDesktopWidget from . import Util class FirmwareUpdaterWindow(QtWidgets.QDialog): @@ -141,7 +141,7 @@ class FirmwareUpdaterWindow(QtWidgets.QDialog): def run(self): self.layout.update() self.layout.activate() - screenGeometry = QtWidgets.QDesktopWidget().screenGeometry() + screenGeometry = QDesktopWidget().screenGeometry(self) x = (screenGeometry.width() - self.width()) / 2 y = (screenGeometry.height() - self.height()) / 2 self.move(x, y) diff --git a/FlashGBX/fw_GBxCartRW_v1_4.py b/FlashGBX/fw_GBxCartRW_v1_4.py index 1d7f0fc..51814dc 100644 --- a/FlashGBX/fw_GBxCartRW_v1_4.py +++ b/FlashGBX/fw_GBxCartRW_v1_4.py @@ -3,7 +3,7 @@ # Author: Lesserkuma (github.com/lesserkuma) import zipfile, serial, struct, time, random, hashlib, datetime -from PySide2 import QtCore, QtWidgets, QtGui +from .pyside import QtCore, QtWidgets, QtGui, QDesktopWidget try: from . import Util except ImportError: @@ -242,7 +242,7 @@ class FirmwareUpdaterWindow(QtWidgets.QDialog): try: self.layout.update() self.layout.activate() - screenGeometry = QtWidgets.QDesktopWidget().screenGeometry() + screenGeometry = QDesktopWidget().screenGeometry(self) x = (screenGeometry.width() - self.width()) / 2 y = (screenGeometry.height() - self.height()) / 2 self.move(x, y) diff --git a/FlashGBX/hw_GBxCartRW.py b/FlashGBX/hw_GBxCartRW.py index 2722445..4433c30 100644 --- a/FlashGBX/hw_GBxCartRW.py +++ b/FlashGBX/hw_GBxCartRW.py @@ -764,7 +764,7 @@ class GbxDevice: # Check for FLASH ret = self.ReadFlashSaveID() if ret is not False: - (_, flash_save_id, _) = ret + (flash_save_id, _) = ret try: if flash_save_id != 0 and flash_save_id in Util.AGB_Flash_Save_Chips: save_size = Util.AGB_Flash_Save_Chips_Sizes[list(Util.AGB_Flash_Save_Chips).index(flash_save_id)] @@ -849,11 +849,6 @@ class GbxDevice: time.sleep(0.01) self._cart_write_flash([ [ 0, 0xF0 ] ]) time.sleep(0.01) - if agb_flash_chip == 0x1F3D: - buffer_len = 128 - else: - buffer_len = 0x1000 - buffer_len = 0x1000 if agb_flash_chip not in Util.AGB_Flash_Save_Chips: # Restore SRAM values @@ -868,7 +863,7 @@ class GbxDevice: agb_flash_chip_name = Util.AGB_Flash_Save_Chips[agb_flash_chip] dprint(agb_flash_chip_name) - return (buffer_len, agb_flash_chip, agb_flash_chip_name) + return (agb_flash_chip, agb_flash_chip_name) def ReadROM(self, address, length, skip_init=False, max_length=64): num = math.ceil(length / max_length) @@ -1961,7 +1956,7 @@ class GbxDevice: self.INFO["dump_info"]["agb_save_flash_id"] = None if "FLASH" in temp_ver: agb_save_flash_id = self.ReadFlashSaveID() - if agb_save_flash_id is not False and len(agb_save_flash_id) == 3: + if agb_save_flash_id is not False and len(agb_save_flash_id) == 2: self.INFO["dump_info"]["agb_save_flash_id"] = agb_save_flash_id self.INFO["rom_checksum_calc"] = chk @@ -2097,7 +2092,8 @@ class GbxDevice: if ret is False: self.SetProgress({"action":"ABORT", "info_type":"msgbox_critical", "info_msg":"Couldn’t detect the save data flash chip.", "abortable":False}) return False - (buffer_len, agb_flash_chip, _) = ret + buffer_len = 0x1000 + (agb_flash_chip, _) = ret elif args["save_type"] == 6: # DACS empty_data_byte = 0xFF # Read Chip ID diff --git a/FlashGBX/pyside.py b/FlashGBX/pyside.py new file mode 100644 index 0000000..f95c39a --- /dev/null +++ b/FlashGBX/pyside.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# FlashGBX +# Author: Lesserkuma (github.com/lesserkuma) +# +# PySide abstraction layer contributed by J-Fox +# + +from .Util import dprint +import importlib + +try: + import PySide2 + psversion = 2 +except ImportError as err: + try: + import PySide6 + except ImportError: + raise err + dprint('Using PySide6 code path.') + psversion = 6 + from PySide6 import QtCore + from PySide6 import QtWidgets + from PySide6 import QtGui + from PySide6.QtWidgets import QApplication +else: + dprint('Using PySide2 code path.') + from PySide2 import QtCore + from PySide2 import QtWidgets + from PySide2 import QtGui + from PySide2.QtWidgets import QApplication + +__all__ = ['QtCore', 'QtWidgets', 'QtGui', 'QApplication', 'QDesktopWidget'] + + +class QDesktopWidget(object): + def screenGeometry(self, widget): + if psversion == 2: + return QtWidgets.QDesktopWidget().screenGeometry() + else: + return widget.screen().geometry() diff --git a/FlashGBX/res/config.zip b/FlashGBX/res/config.zip index 777d7dbc0d4998d793e718da77fada98b728bb6e..42df668159df6215557ae835b7f3c4982c1e6801 100644 GIT binary patch delta 85537 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%0D5i0L!o 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%0AJN*}-QjjnWN z6_eLLvSsq%pidq;PaRm{U?UNits5@GcbbYcT(zEx!+ETaOQgDRbg}I_M)TLRK)Ml* zE_Ssl3-!{Y=QY)osfV>>?+O-IOPll?b zJcLI!kj8*{ajBGNK(5*y^nroLXKT`39?ofBS-0dlJjUYD8yRC!gWL6ZkFoIGMOO@5 zuYGoj{b&%j%N2<a;zKZZ@)DYKcN`!{&>;)Ge&7P2_Ln34Shy zRcv4Hs(zl4hp4aZWmMP1f~eBy_G>i4@2maPYebgtawV4k6tMdT=$R?lC&@k(tnz!> zJ%z_)yO@IwEvRic6yiBpc>fh?d)Lc?p8+nV>s`$aeVTKwK)#T;x)+;>FP#v{w>6I2k-&Dkyw2V1s3wZ0|Svs<_$6yB(}q_?44p_q(` z9^KNNqL0NQBQFL@T32~%P2NXWgL4GETlVn*YFlQH)nD98&E>&W073}j%)NSI{ z5f*3$Q(dN+W;ZJbQ-Ay$BlBf8nYzu$)JRGMr%(p3C`vF5ns|Wr%Q>(8v>m6kv{;Y~ zi=rOIVmvkVFmKwI%qNWmI49)4|8UDs(tBpK*JMF^Wr$o0pQ!h^(T!25f<5+a?w@#f z_OeN|#=Z%6G03 zn`a94kkT`;SjpZNY|DRClZkwiodHwZ7$>hRK;vhMvo#BbacWweg@BUPf~h;bIF+b* z5dE8l!ldGz4W-UI$^;tJwcir zZt{^VKL@PHkCx}4BFT0N=BJ^a96TEN=M>*@xnRR%X+|#Y2$Ge7sq3HOl&j@>LoeT@c5&{{bp?{z(7; delta 85188 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 install --ignore-requires-python -U PySide2` -4. Install or upgrade FlashGBX with this command:
`pip3 install -U FlashGBX` -* If installation fails and you see an error about a conflict involving PySide2, try these commands instead:
`pip3 install pyserial Pillow setuptools requests python-dateutil`
`pip3 install --no-deps -U FlashGBX` +3. Install FlashGBX with this command:
`pip3 install FlashGBX[qt5]` +* If installation fails, use this command instead:
`pip3 install FlashGBX[qt6]` +* If installation still fails, you can install the minimal version (command line interface) with this command:
`pip3 install FlashGBX` * Pre-made Linux packages and instructions for select distributions are available [here](https://github.com/JJ-Fox/FlashGBX-Linux-builds/releases/latest). -*FlashGBX should work on pretty much any operating system that supports Qt-GUI applications built using [Python](https://www.python.org/downloads/) with [PySide2](https://pypi.org/project/PySide2/), [pyserial](https://pypi.org/project/pyserial/), [Pillow](https://pypi.org/project/Pillow/), [setuptools](https://pypi.org/project/setuptools/), [requests](https://pypi.org/project/requests/) and [python-dateutil](https://pypi.org/project/python-dateutil/) packages.* - #### Running Use this command in a Terminal or Command Prompt window to launch the installed FlashGBX application: `python3 -m FlashGBX` -*To run FlashGBX in portable mode without installing, you can also download the source code archive and call `python3 run.py` after installing the prerequisites yourself.* +*FlashGBX should work on pretty much any operating system that supports Qt-GUI applications built using [Python](https://www.python.org/downloads/) with [PySide2](https://pypi.org/project/PySide2/) or [PySide6](https://pypi.org/project/PySide6/), [pyserial](https://pypi.org/project/pyserial/), [Pillow](https://pypi.org/project/Pillow/), [setuptools](https://pypi.org/project/setuptools/), [requests](https://pypi.org/project/requests/) and [python-dateutil](https://pypi.org/project/python-dateutil/) packages. To run FlashGBX in portable mode without installing, you can also download the source code archive and call `python3 run.py` after installing the prerequisites yourself.* + +#### Upgrading from an older version + +1. Open a Terminal or Command Prompt window +2. Enter this command:
`pip3 install -U FlashGBX` ## Cartridge Compatibility ### Supported cartridge memory mappers @@ -231,8 +235,9 @@ Use this command in a Terminal or Command Prompt window to launch the installed - BX2006_0106_NEW with S29GL128N10TFI01 - BX2006_TSOP_64BALL with GL128S - BX2006_TSOP_64BALL with GL256S - - BX2006_TSOPBGA_0106 with M29W640GB6AZA6 + - BX2006_TSOPBGA_0106 with M29W640 - BX2006_TSOPBGA_0106 with K8D6316UTM-PI07 + - BX2006_TSOPBGA_6108 with M29W640 - DV15 with MSP55LV100G - GA-07 with unlabeled flash chip - GE28F128W30 with 128W30B0 @@ -247,6 +252,10 @@ Many different reproduction cartridges share their flash chip command set, so ev * If something doesn’t work as expected, first try to clean the game cartridge contacts (best with IPA 99.9%+ on a cotton swab) and reconnect the device. An unstable cartridge connection is the most common reason for read or write errors. +* If your Game Boy Camera cartridge is not reading, make sure it’s connected the correct way around; screws go up. + +* For save data backup/restore on Game Boy Advance reproduction cartridges, depending on how it was built, you may have to manually select the save type for it to work properly. However, the save data backup/restore feature may not work on certain reproduction cartridges with batteryless-patched ROMs. As those cartridges use the same flash chip for both ROM and save data storage, a full ROM backup will usually include the save data. Also, when flashing a new unpatched ROM to a cartridge like this, the game may not be able to save progress without soldering in a battery. See the [Flash Cart DB website](https://flashcartdb.com/index.php/Clone_and_Repo_Cart_Problems) for more information. + * Depending on your system configuration, you may have to use `pip` and `python` commands instead of `pip3` and `python3`. * On Linux systems, you may run into a *Permission Error* problem when trying to connect to USB devices without *sudo* privileges. To grant yourself the necessary permissions temporarily, you can run `sudo chmod 0666 /dev/ttyUSB0` (replace with actual device path) before running the app. For a permanent solution, add yourself to the usergroup that has access to serial devices by default (e.g. *dialout* on Debian-based distros; `sudo adduser $USER dialout`) and then reboot the system. @@ -257,12 +266,6 @@ Many different reproduction cartridges share their flash chip command set, so ev * If you’re using macOS version 10.13 or older, there may be no driver for the *insideGadgets GBxCart RW* device installed on your system. You can either upgrade your macOS version to 10.14+ or manually install a driver which is available [here](https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver). -* If you use Python 3.10+ and see the error `Type Error: 'PySide2.QtCore.Qt.WindowType' object cannot be interpreted as an integer` or can only use CLI mode, try to install or update the PySide2 package by running `pip3 install -U PySide2 --ignore-requires-python` or try the older [Python version 3.9.9](https://www.python.org/downloads/release/python-399/). - -* If your Game Boy Camera cartridge is not reading, make sure it’s connected the correct way around; screws go up. - -* For save data backup/restore on Game Boy Advance reproduction cartridges, depending on how it was built, you may have to manually select the save type for it to work properly. However, the save data backup/restore feature may not work on certain reproduction cartridges with batteryless-patched ROMs. As those cartridges use the same flash chip for both ROM and save data storage, a full ROM backup will usually include the save data. Also, when flashing a new unpatched ROM to a cartridge like this, the game may not be able to save progress without soldering in a battery. See the [Flash Cart DB website](https://flashcartdb.com/index.php/Clone_and_Repo_Cart_Problems) for more information. - ## Miscellaneous * To use your own frame around extracted Game Boy Camera pictures, place a file called `pc_frame.png` (must be at least 160×144 pixels) into the configuration directory. (GUI mode only) @@ -271,6 +274,7 @@ Many different reproduction cartridges share their flash chip command set, so ev The author would like to thank the following very kind people for their help and contributions (in alphabetical order): +- 2358 (bug reports) - 90sFlav (flash chip info) - AcoVanConis (bug reports, flash chip info) - AdmirtheSableye (bug reports) diff --git a/setup.py b/setup.py index a246e60..3a566ce 100644 --- a/setup.py +++ b/setup.py @@ -4,12 +4,16 @@ with open("README.md", "r", encoding="utf-8") as fh: long_description = fh.read( setuptools.setup( name="FlashGBX", - version="3.13", + version="3.14", author="Lesserkuma", description="Reads and writes Game Boy and Game Boy Advance cartridge data. Supported hardware: GBxCart RW v1.3 and v1.4 by insideGadgets.", url="https://github.com/lesserkuma/FlashGBX", packages=setuptools.find_packages(), - install_requires=['PySide2', 'pyserial', 'Pillow', 'setuptools', 'requests', 'python-dateutil'], + install_requires=['pyserial', 'Pillow', 'setuptools', 'requests', 'python-dateutil'], + extras_require={ + "qt5":["PySide2"], + "qt6":["PySide6"] + }, include_package_data=True, classifiers=[ "Development Status :: 5 - Production/Stable",