mirror of
https://github.com/lesserkuma/FlashGBX.git
synced 2026-04-25 07:57:25 -05:00
3.23.1
This commit is contained in:
parent
98b388f297
commit
6597449fad
|
|
@ -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 chip’s sector size *(thanks marv17)*
|
||||
- Minor bug fixes and improvements
|
||||
|
||||
### v3.22 (released 2023-02-09)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 = []
|
||||
|
|
|
|||
|
|
@ -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.
3
setup.py
3
setup.py
|
|
@ -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"]
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user