Skip to content

Commit

Permalink
update flashcart-builder.py uploader-gui.py
Browse files Browse the repository at this point in the history
flashcart-builder.py
No blank header added if flashimage has reached max size of 16MB

uploader-gui.py
Added contrast patch option
  • Loading branch information
MrBlinky committed Aug 24, 2023
1 parent 72e0284 commit e9f8e86
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 17 deletions.
5 changes: 3 additions & 2 deletions flashcart-builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -316,9 +316,10 @@ def PatchMenuButton():
Sketches += 1
else:
TitleScreens += 1
binfile.write(b'\xFF' * 256) #use blank header to signal end of FX file system
if nextpage < 65536:
binfile.write(b'\xFF' * 256) #use blank header to signal end of FX file system
print("---- ------------------------- ----- ----- ----- -------- -------- --------")
print(" Page Page Page Bytes Bytes Bytes")

print("\nImage build complete with {} Title screens, {} Sketches, {} Kbyte used.".format(TitleScreens,Sketches,(nextpage+3) / 4))
print("\nImage build complete with {} Title screens, {} Sketches, {} Kbyte used.".format(TitleScreens,Sketches,(nextpage+3) // 4))
DelayedExit
56 changes: 41 additions & 15 deletions uploader-gui.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
VERSION = " v1.12"
VERSION_DATE =" Apr.2020 - Mar.2023"
VERSION = " v1.13"
VERSION_DATE =" Apr.2020 - Aug.2023"
print("Arduboy Uploader GUI/FX activator/flasher" + VERSION + VERSION_DATE + " by Mr.Blinky running\n")

from tkinter import filedialog
Expand Down Expand Up @@ -244,13 +244,21 @@ def uploadHexfile():
enableButtons()
return

# check and apply patch for SSD1309
if applySsd1309patch.get():
lcdBootProgram_addr = flash_data.find(lcdBootProgram)
if lcdBootProgram_addr >= 0:
flash_data[lcdBootProgram_addr+2] = 0xE3;
flash_data[lcdBootProgram_addr+3] = 0xE3;
addLog("Found lcdBootProgram in hex file, upload will be patched for SSD1309 displays\n")
# check and apply patch for SSD1309 or Contrast
if applySsd1309patch.get() or contrastPatch.get() >= 0:
lcdBootProgram_addr = flash_data.find(lcdBootProgram[:7])
while lcdBootProgram_addr >=0:
if flash_data[lcdBootProgram_addr+8:lcdBootProgram_addr+13] == lcdBootProgram[8:]:
if applySsd1309patch.get():
flash_data[lcdBootProgram_addr+2] = 0xE3;
flash_data[lcdBootProgram_addr+3] = 0xE3;
addLog("Found lcdBootProgram in hex file, applied SSD1309 display patch\n")
if contrastPatch.get() >= 0:
flash_data[lcdBootProgram_addr+7] = contrastPatch.get()
addLog("Found lcdBootProgram in hex file, applied contrast patch\n")
break
else:
lcdBootProgram_addr = flash_data.find(lcdBootProgram[:7],lcdBootProgram_addr + 7)

## check for data in catarina bootloader area ##
for i in range (256) :
Expand Down Expand Up @@ -324,14 +332,22 @@ def flashImage():
flashdata = bytearray(f.read())
f.close

if applySsd1309patch.get():
addLog("Patching flash image for SSD1309 displays...\n")
if applySsd1309patch.get() or contrastPatch.get() >= 0:
if applySsd1309patch.get() and contrastPatch.get() >= 0:
addLog("Patching flash image for SSD1309 displays and contrast change...\n")
elif contrastPatch.get() >= 0:
addLog("Patching flash image for contrast change...\n")
else:
addLog("Patching flash image for SSD1309 displays...\n")
lcdBootProgram_addr = 0
while lcdBootProgram_addr >= 0:
lcdBootProgram_addr = flashdata.find(lcdBootProgram, lcdBootProgram_addr)
if lcdBootProgram_addr >= 0:
flashdata[lcdBootProgram_addr+2] = 0xE3;
flashdata[lcdBootProgram_addr+3] = 0xE3;
lcdBootProgram_addr = flashdata.find(lcdBootProgram[:7], lcdBootProgram_addr)
if lcdBootProgram_addr >= 0 and flashdata[lcdBootProgram_addr+8:lcdBootProgram_addr+13] == lcdBootProgram[8:]:
if applySsd1309patch.get():
flashdata[lcdBootProgram_addr+2] = 0xE3;
flashdata[lcdBootProgram_addr+3] = 0xE3;
if contrastPatch.get() >= 0:
flashdata[lcdBootProgram_addr+7] = contrastPatch.get()

if (len(flashdata) % PAGESIZE != 0):
flashdata += b'\xFF' * (PAGESIZE - (len(flashdata) % PAGESIZE))
Expand Down Expand Up @@ -807,6 +823,7 @@ def ExitAppHotKey(event):
appVerify = BooleanVar()
flashVerify = BooleanVar()
applySsd1309patch = BooleanVar()
contrastPatch = IntVar()

#create menus
mainmenu = Menu(root)
Expand All @@ -825,13 +842,22 @@ def ExitAppHotKey(event):
filemenu.add_separator()
filemenu.add_command(label = "Exit", underline = 1, accelerator = "Ctrl + X", command = root.quit)
optionmenu = Menu(mainmenu, tearoff = 0)
contrastmenu = Menu(mainmenu, tearoff = 0)
contrastmenu.add_radiobutton(label="No change", value = -1, variable=contrastPatch)
contrastmenu.add_radiobutton(label="Normal", value = 0xCF, variable=contrastPatch)
contrastmenu.add_radiobutton(label="Dimmed", value = 0x7F, variable=contrastPatch)
contrastmenu.add_radiobutton(label="Low", value = 0x2F, variable=contrastPatch)
contrastmenu.add_radiobutton(label="Lowest", value = 0x00, variable=contrastPatch)
contrastmenu.add_radiobutton(label="Highest", value = 0xFF, variable=contrastPatch)
contrastPatch.set(-1)
if not fxFlasher:
optionmenu.add_checkbutton(label="Verify Hex file after upload",onvalue=True,offvalue=False,variable=appVerify)
appVerify.set(True)
optionmenu.add_checkbutton(label="Verify flash data",onvalue=True,offvalue=False,variable=flashVerify)
#flashVerify.set(True)
optionmenu.add_checkbutton(label="Apply SSD1309 display patch",onvalue=True,offvalue=False,variable=applySsd1309patch)
applySsd1309patch.set(ssd1309patch)
optionmenu.add_cascade(label="Contrast patch", menu = contrastmenu)
optionmenu.add_command(label="Clear log",command=clearLog)
mainmenu.add_cascade(label="File", menu = filemenu)
mainmenu.add_cascade(label="Options", menu = optionmenu)
Expand Down

0 comments on commit e9f8e86

Please sign in to comment.