3 Commits
0.3 ... 0.6

Author SHA1 Message Date
Lesserkuma
cbe17ef7c5 0.6 2023-09-24 12:54:20 +02:00
Lesserkuma
8dc1d10a95 0.5 2023-08-17 17:57:35 +02:00
Lesserkuma
bcb9ae5d65 - 2023-08-01 12:47:35 +02:00
3 changed files with 21 additions and 14 deletions

View File

@@ -5,7 +5,7 @@
import sys, os, glob, json, math, re, struct, hashlib, argparse, datetime
# Configuration
app_version = "0.3"
app_version = "0.6"
default_file = "LK_MULTIMENU_<CODE>.gba"
################################
@@ -84,13 +84,19 @@ if not os.path.exists(args.config):
cartridge_type = 1
battery_present = False
for file in files:
games.append({
d = {
"enabled": True,
"file": os.path.split(file)[1],
"title": os.path.splitext(os.path.split(file)[1])[0],
"title_font": 1,
"save_slot": save_slot,
})
}
with open(file, "rb") as f:
f.seek(0xAC)
code = f.read(0x4)
if code[:3] in (b"BPG", b"BPR"):
d["map_256m"] = True
games.append(d)
save_slot += 1
obj = {
"cartridge": {
@@ -166,6 +172,11 @@ for game in games:
x = 0x80000
while (x < size): x *= 2
size = x
if size < 0x400000:
with open(f"roms/{game['file']}", "rb") as f:
buffer = f.read()
if b"Batteryless mod by Lesserkuma" in buffer:
size = 0x400000
game["index"] = index
game["size"] = size
if "title_font" in game:
@@ -310,7 +321,7 @@ logp("Menu ROM: 0x{:07X}0x{:07X}".format(0, len(menu_rom)))
logp("Game List: 0x{:07X}0x{:07X}".format(item_list_offset * sector_size, item_list_offset * sector_size + len(item_list)))
logp("Status Area: 0x{:07X}0x{:07X}".format(status_offset * sector_size, status_offset * sector_size + 0x1000))
logp("")
logp("Cartridge Type: {:d} ({:s} {:s})".format(cartridge_type, cartridge_types[cartridge_type]["name"], "with battery" if battery_present else "without battery"))
logp("Cartridge Type: {:d} ({:s}) {:s}".format(cartridge_type + 1, cartridge_types[cartridge_type]["name"], "with battery" if battery_present else "without battery"))
logp("Output ROM Size: {:.2f} MiB".format(rom_size / 1024 / 1024))
logp("Output ROM Code: {:s}".format(rom_code))
output_file = output_file.replace("<CODE>", rom_code)
@@ -320,7 +331,7 @@ if args.split:
size = 0x2000000
if pos > len(compilation[:rom_size]): break
if pos + size > rom_size: size = rom_size - pos
output_file_part = "{:s}_part{:d}{:s}".format(os.path.splitext(output_file)[0], i + 1, os.path.splitext(output_file)[1])
output_file_part = "{:s}_part{:d}{:s}".format(os.path.splitext(output_file)[0], i, os.path.splitext(output_file)[1])
with open(output_file_part, "wb") as f: f.write(compilation[pos:pos+size])
else:
with open(output_file, "wb") as f: f.write(compilation[:rom_size])

View File

@@ -215,14 +215,11 @@ IWRAM_CODE u8 BootGame(ItemConfig config, FlashStatus status)
if (_flash_type == 0)
return 1;
// Temporarily store SRAM values at mapper registers
if (status.last_boot_save_type == SRAM_NONE)
{
sram_register_backup[0] = *(vu8 *)MAPPER_CONFIG1;
sram_register_backup[1] = *(vu8 *)MAPPER_CONFIG2;
sram_register_backup[2] = *(vu8 *)MAPPER_CONFIG3;
sram_register_backup[3] = *(vu8 *)MAPPER_CONFIG4;
}
// Temporarily store SRAM values located at mapper registers
sram_register_backup[0] = *(vu8 *)MAPPER_CONFIG1;
sram_register_backup[1] = *(vu8 *)MAPPER_CONFIG2;
sram_register_backup[2] = *(vu8 *)MAPPER_CONFIG3;
sram_register_backup[3] = *(vu8 *)MAPPER_CONFIG4;
// Enable SRAM access
*(vu8 *)MAPPER_CONFIG4 = 1;

View File

@@ -15,7 +15,6 @@ Author: Lesserkuma (github.com/lesserkuma)
}
#define MAGIC_FLASH_STATUS 0x414D554B
#define FLASH_STATUS_LOCATION 0xA0000
typedef struct __attribute__((packed)) FlashStatus_
{