This commit is contained in:
Lesserkuma 2023-04-06 23:37:01 +02:00
parent 98b388f297
commit 6597449fad
6 changed files with 18 additions and 9 deletions

View File

@ -1,5 +1,5 @@
# Release notes
### v3.23 (released 2023-04-06)
### v3.23.1 (released 2023-04-06)
- Bundles GBxCart RW v1.4/v1.4a firmware version R40+L8 (Game Boy Camera flash cart fix on insideGadgets software, Pokémon Mini support on insideGadgets software, fixes a problem with reading GBA Video cartridges and other minor improvements)
- Confirmed support for Flash Advance Pro 256M *(thanks Erba Verde)*
- Added support for Flash2Advance Ultra 2G with 4× 4400L0Y0Q0
@ -12,6 +12,7 @@
- Improved support for the BennVenn MBC3000 RTC cart; can now write the entire 8 MiB *(thanks BennVenn)*
- Fixed a problem with forward-adjusting the Real Time Clock from Game Boy Advance save data files *(thanks Smelly-Ghost)*
- Windows Setup Package: Updated the CH340/CH341 driver to the latest version (02/11/2023, 3.8.2023.02)
- Fixed an issue with restoring Batteryless SRAM save data that is smaller than the flash chips sector size *(thanks marv17)*
- Minor bug fixes and improvements
### v3.22 (released 2023-02-09)

View File

@ -3,6 +3,7 @@
# Author: Lesserkuma (github.com/lesserkuma)
import sys, os, time, datetime, json, platform, subprocess, requests, webbrowser, pkg_resources, threading
#import sys, os, time, datetime, json, platform, subprocess, threading #NOTE#UC
from .pyside import QtCore, QtWidgets, QtGui, QApplication
from PIL.ImageQt import ImageQt
from serial import SerialException
@ -211,6 +212,7 @@ class FlashGBX_GUI(QtWidgets.QWidget):
self.mnuConfig.addSeparator()
self.mnuConfig.addAction("Show &configuration directory", self.OpenPath)
self.mnuConfig.actions()[0].setCheckable(True)
#self.mnuConfig.actions()[0].setVisible(False) #NOTE#UC
self.mnuConfig.actions()[1].setCheckable(True)
self.mnuConfig.actions()[2].setCheckable(True)
self.mnuConfig.actions()[3].setCheckable(True)
@ -484,6 +486,8 @@ class FlashGBX_GUI(QtWidgets.QWidget):
if update_check is None:
self.UpdateCheck()
return
#NOTE#UC
new_value = str(self.mnuConfig.actions()[0].isChecked()).lower().replace("true", "enabled").replace("false", "disabled")
if new_value == "enabled":
answer = QtWidgets.QMessageBox.question(self, "{:s} {:s}".format(APPNAME, VERSION), "Would you like to automatically check for new versions at application startup? This will make use of the PyPI API (<a href=\"https://www.python.org/privacy/\">privacy policy</a>).", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.Yes)
@ -499,6 +503,11 @@ class FlashGBX_GUI(QtWidgets.QWidget):
self.SETTINGS.setValue("UpdateCheck", "disabled")
def UpdateCheck(self):
#NOTE#UC
# update_check = self.SETTINGS.value("UpdateCheck")
# if update_check is None or datetime.datetime.now() > datetime.datetime.fromtimestamp(1682892000):
# QtWidgets.QMessageBox.information(self, "{:s} {:s}".format(APPNAME, VERSION), "Welcome to {:s} {:s} by Lesserkuma!<br><br>".format(APPNAME, VERSION) + "This version has version update check feature stripped out, so please regularily check the <a href=\"https://github.com/lesserkuma/FlashGBX/\">FlashGBX GitHub page</a> for the latest updates.", QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
# self.SETTINGS.setValue("UpdateCheck", "disabled")
update_check = self.SETTINGS.value("UpdateCheck")
if update_check is None:
answer = QtWidgets.QMessageBox.question(self, "{:s} {:s}".format(APPNAME, VERSION), "Welcome to {:s} {:s} by Lesserkuma!<br><br>".format(APPNAME, VERSION) + "Would you like to automatically check for new versions at application startup? This will make use of the PyPI API (<a href=\"https://www.python.org/privacy/\">privacy policy</a>).", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.Yes)
@ -508,7 +517,6 @@ class FlashGBX_GUI(QtWidgets.QWidget):
update_check = "enabled"
else:
self.SETTINGS.setValue("UpdateCheck", "disabled")
if update_check and update_check.lower() == "enabled":
print("")
if ".dev" in VERSION_PEP440:
@ -530,7 +538,6 @@ class FlashGBX_GUI(QtWidgets.QWidget):
except Exception as e:
print("ERROR: An unexpected error occured while querying the latest version information from PyPI.", e, sep="\n")
ret = False
if ret is not False and ret.status_code == 200:
ret = ret.content
try:
@ -1348,7 +1355,6 @@ class FlashGBX_GUI(QtWidgets.QWidget):
else:
args = { "path":path, "cart_type":cart_type, "override_voltage":override_voltage, "prefer_chip_erase":prefer_chip_erase, "fast_read_mode":True, "verify_write":verify_write, "fix_header":fix_header, "mbc":mbc, "flash_offset":flash_offset }
self.CONN.FlashROM(fncSetProgress=self.PROGRESS.SetProgress, args=args)
#self.CONN._FlashROM(args=args)
self.grpStatus.setTitle("Transfer Status")
buffer = None
self.STATUS["time_start"] = time.time()
@ -1769,6 +1775,7 @@ class FlashGBX_GUI(QtWidgets.QWidget):
args["buffer"] = bytearray([0xFF] * bl_args["bl_size"])
self.STATUS["args"] = args
self.CONN.FlashROM(fncSetProgress=self.PROGRESS.SetProgress, args=args)
#self.CONN._FlashROM(args=args)
else:
args = { "path":path, "mbc":mbc, "save_type":save_type, "rtc":rtc, "rtc_advance":rtc_advance, "erase":erase, "verify_write":verify_write }
self.STATUS["args"] = args

View File

@ -7,7 +7,7 @@ from enum import Enum
# Common constants
APPNAME = "FlashGBX"
VERSION_PEP440 = "3.23"
VERSION_PEP440 = "3.23.1"
VERSION = "v{:s}".format(VERSION_PEP440)
DEBUG = False
DEBUG_LOG = []

View File

@ -3234,18 +3234,18 @@ class GbxDevice:
flash_size = len(data_import) - flash_offset
else:
flash_size = args["flash_size"]
data_import = data_import[:flash_size]
bl_sectors = []
for sector in sector_offsets:
if flash_offset > sector[0]: continue
if (flash_offset + flash_size) < (sector[0] + sector[1]): break
if len(bl_sectors) > 0 and (flash_offset + flash_size) < (sector[0] + sector[1]): break
bl_sectors.append(sector)
write_sectors = bl_sectors
if "bl_save" in args:
data_import = bytearray([0] * bl_sectors[0][0]) + data_import
else:
write_sectors = sector_offsets
dprint("Sectors to update:", write_sectors)
# ↑↑↑ Read Sector Map

Binary file not shown.

View File

@ -4,12 +4,13 @@ with open("README.md", "r", encoding="utf-8") as fh: long_description = fh.read(
setuptools.setup(
name="FlashGBX",
version="3.23",
version="3.23.1",
author="Lesserkuma",
description="Reads and writes Game Boy and Game Boy Advance cartridge data. Supported hardware: GBxCart RW by insideGadgets.",
url="https://github.com/lesserkuma/FlashGBX",
packages=setuptools.find_packages(),
install_requires=['pyserial>=3.5', 'Pillow', 'setuptools', 'requests', 'python-dateutil'],
#install_requires=['pyserial>=3.5', 'Pillow', 'setuptools', 'python-dateutil'],
extras_require={
"qt5":["PySide2"],
"qt6":["PySide6"]