mirror of
https://github.com/lesserkuma/GBA_MultiMenu.git
synced 2026-08-24 01:24:23 -05:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a2fa155e8e |
@@ -5,7 +5,7 @@
|
|||||||
import sys, os, glob, json, math, re, struct, hashlib, argparse, datetime
|
import sys, os, glob, json, math, re, struct, hashlib, argparse, datetime
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
app_version = "0.10"
|
app_version = "0.11"
|
||||||
default_file = "LK_MULTIMENU_<CODE>.gba"
|
default_file = "LK_MULTIMENU_<CODE>.gba"
|
||||||
|
|
||||||
################################
|
################################
|
||||||
@@ -225,6 +225,7 @@ for game in games:
|
|||||||
elif key.upper() == "L":
|
elif key.upper() == "L":
|
||||||
keys |= (1 << 9)
|
keys |= (1 << 9)
|
||||||
game["keys"] = keys
|
game["keys"] = keys
|
||||||
|
|
||||||
if keys > 0:
|
if keys > 0:
|
||||||
roms_keys.append(keys)
|
roms_keys.append(keys)
|
||||||
roms_keys = list(set(roms_keys))
|
roms_keys = list(set(roms_keys))
|
||||||
@@ -328,7 +329,7 @@ for key in roms_keys:
|
|||||||
|
|
||||||
title = game["title"]
|
title = game["title"]
|
||||||
if len(title) > 0x30: title = title[:0x2F] + "…"
|
if len(title) > 0x30: title = title[:0x2F] + "…"
|
||||||
|
|
||||||
table_line = \
|
table_line = \
|
||||||
f"{game['index'] + 1:3d} | " \
|
f"{game['index'] + 1:3d} | " \
|
||||||
f"0x{game['block_offset'] * block_size:07X} | "\
|
f"0x{game['block_offset'] * block_size:07X} | "\
|
||||||
@@ -339,7 +340,12 @@ for key in roms_keys:
|
|||||||
else:
|
else:
|
||||||
table_line += " | "
|
table_line += " | "
|
||||||
table_line += f"{title}"
|
table_line += f"{title}"
|
||||||
if c % 8 == 0: logp(toc_sep)
|
if c % 8 == 0:
|
||||||
|
if game['keys'] != 0:
|
||||||
|
temp = toc_sep[:-9] + "[Hidden]-"
|
||||||
|
logp(temp)
|
||||||
|
else:
|
||||||
|
logp(toc_sep)
|
||||||
logp(table_line)
|
logp(table_line)
|
||||||
c += 1
|
c += 1
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ Author: Lesserkuma (github.com/lesserkuma)
|
|||||||
|
|
||||||
u8 flash_type;
|
u8 flash_type;
|
||||||
u8 *itemlist;
|
u8 *itemlist;
|
||||||
|
u16 itemlist_offset;
|
||||||
u32 flash_sector_size;
|
u32 flash_sector_size;
|
||||||
u32 flash_itemlist_sector_offset;
|
u32 flash_itemlist_sector_offset;
|
||||||
u32 flash_status_sector_offset;
|
u32 flash_status_sector_offset;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ extern s8 FontMarginBottom;
|
|||||||
extern const u8* font;
|
extern const u8* font;
|
||||||
extern u8 *itemlist;
|
extern u8 *itemlist;
|
||||||
extern u8 flash_type;
|
extern u8 flash_type;
|
||||||
|
extern u16 itemlist_offset;
|
||||||
extern u32 flash_sector_size;
|
extern u32 flash_sector_size;
|
||||||
extern u32 flash_itemlist_sector_offset;
|
extern u32 flash_itemlist_sector_offset;
|
||||||
extern u32 flash_status_sector_offset;
|
extern u32 flash_status_sector_offset;
|
||||||
@@ -101,20 +102,19 @@ int main(void) {
|
|||||||
show_debug = TRUE;
|
show_debug = TRUE;
|
||||||
}
|
}
|
||||||
if (kHeld) {
|
if (kHeld) {
|
||||||
u16 itemlist_offset = 0;
|
|
||||||
BOOL found_keys = FALSE;
|
BOOL found_keys = FALSE;
|
||||||
for (itemlist_offset = 0; itemlist_offset < 0x924; itemlist_offset += 0x70) {
|
for (itemlist_offset = 0; itemlist_offset < 0xE000; itemlist_offset += 0x70) {
|
||||||
memcpy(&sItemConfig, ((u8*)itemlist)+itemlist_offset, sizeof(sItemConfig));
|
memcpy(&sItemConfig, ((u8*)itemlist)+itemlist_offset, sizeof(sItemConfig));
|
||||||
if (sItemConfig.title_length == 0) break;
|
if (sItemConfig.title_length == 0) break;
|
||||||
if (sItemConfig.title_length == 0xFF) break;
|
if (sItemConfig.title_length == 0xFF) break;
|
||||||
if (sItemConfig.keys == kHeld) {
|
if (sItemConfig.keys == kHeld) {
|
||||||
itemlist += itemlist_offset;
|
|
||||||
found_keys = TRUE;
|
found_keys = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!found_keys) {
|
if (!found_keys) {
|
||||||
kHeld = 0;
|
kHeld = 0;
|
||||||
|
itemlist_offset = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,7 +133,7 @@ int main(void) {
|
|||||||
|
|
||||||
// Count number of ROMs
|
// Count number of ROMs
|
||||||
for (roms_total = 0; roms_total < 512; roms_total++) {
|
for (roms_total = 0; roms_total < 512; roms_total++) {
|
||||||
memcpy(&sItemConfig, ((u8*)itemlist)+(0x70*roms_total), sizeof(sItemConfig));
|
memcpy(&sItemConfig, ((u8*)itemlist+itemlist_offset)+(0x70*roms_total), sizeof(sItemConfig));
|
||||||
if (sItemConfig.keys != kHeld) break;
|
if (sItemConfig.keys != kHeld) break;
|
||||||
if (sItemConfig.title_length == 0) break;
|
if (sItemConfig.title_length == 0) break;
|
||||||
if (sItemConfig.title_length == 0xFF) break;
|
if (sItemConfig.title_length == 0xFF) break;
|
||||||
@@ -148,7 +148,7 @@ int main(void) {
|
|||||||
REG_DISPCNT ^= 0x0010;
|
REG_DISPCNT ^= 0x0010;
|
||||||
while (1) { VBlankIntrWait(); }
|
while (1) { VBlankIntrWait(); }
|
||||||
} else if (roms_total == 1) {
|
} else if (roms_total == 1) {
|
||||||
memcpy(&sItemConfig, ((u8*)itemlist), sizeof(sItemConfig));
|
memcpy(&sItemConfig, ((u8*)itemlist+itemlist_offset), sizeof(sItemConfig));
|
||||||
u8 error_code = BootGame(sItemConfig, sFlashStatus);
|
u8 error_code = BootGame(sItemConfig, sFlashStatus);
|
||||||
boot_failed = error_code;
|
boot_failed = error_code;
|
||||||
}
|
}
|
||||||
@@ -169,9 +169,8 @@ int main(void) {
|
|||||||
}
|
}
|
||||||
if (roms_page < 7) ClearList((void*)AGB_VRAM+0xA000, 26+(roms_page+1)*14, 14*(8-roms_page));
|
if (roms_page < 7) ClearList((void*)AGB_VRAM+0xA000, 26+(roms_page+1)*14, 14*(8-roms_page));
|
||||||
if (cursor_pos > roms_page) cursor_pos = roms_page;
|
if (cursor_pos > roms_page) cursor_pos = roms_page;
|
||||||
|
|
||||||
for (u8 i = 0; i <= roms_page; i++) {
|
for (u8 i = 0; i <= roms_page; i++) {
|
||||||
memcpy(&sItemConfig, ((u8*)itemlist)+0x70*(page_active*8+i), sizeof(sItemConfig));
|
memcpy(&sItemConfig, ((u8*)itemlist+itemlist_offset)+0x70*(page_active*8+i), sizeof(sItemConfig));
|
||||||
ClearList((void*)AGB_VRAM+0xA000, 27+i*14, 14);
|
ClearList((void*)AGB_VRAM+0xA000, 27+i*14, 14);
|
||||||
LoadFont(sItemConfig.font);
|
LoadFont(sItemConfig.font);
|
||||||
DrawText(28, 26+i*14, ALIGN_LEFT, sItemConfig.title, sItemConfig.title_length, font, (void*)AGB_VRAM+0xA000, i == cursor_pos);
|
DrawText(28, 26+i*14, ALIGN_LEFT, sItemConfig.title, sItemConfig.title_length, font, (void*)AGB_VRAM+0xA000, i == cursor_pos);
|
||||||
@@ -180,7 +179,7 @@ int main(void) {
|
|||||||
// Re-draw only changed list items (cursor moved up or down)
|
// Re-draw only changed list items (cursor moved up or down)
|
||||||
for (u8 i = 0; i < 8; i++) {
|
for (u8 i = 0; i < 8; i++) {
|
||||||
if ((redraw_items >> i) & 1) {
|
if ((redraw_items >> i) & 1) {
|
||||||
memcpy(&sItemConfig, ((u8*)itemlist)+0x70*(page_active*8+i), sizeof(sItemConfig));
|
memcpy(&sItemConfig, ((u8*)itemlist+itemlist_offset)+0x70*(page_active*8+i), sizeof(sItemConfig));
|
||||||
ClearList((void*)AGB_VRAM+0xA000, 27+i*14, 14);
|
ClearList((void*)AGB_VRAM+0xA000, 27+i*14, 14);
|
||||||
LoadFont(sItemConfig.font);
|
LoadFont(sItemConfig.font);
|
||||||
DrawText(28, 26+i*14, ALIGN_LEFT, sItemConfig.title, sItemConfig.title_length, font, (void*)AGB_VRAM+0xA000, i == cursor_pos);
|
DrawText(28, 26+i*14, ALIGN_LEFT, sItemConfig.title, sItemConfig.title_length, font, (void*)AGB_VRAM+0xA000, i == cursor_pos);
|
||||||
@@ -188,7 +187,7 @@ int main(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(&sItemConfig, ((u8*)itemlist)+0x70*(page_active*8+cursor_pos), sizeof(sItemConfig));
|
memcpy(&sItemConfig, ((u8*)itemlist+itemlist_offset)+0x70*(page_active*8+cursor_pos), sizeof(sItemConfig));
|
||||||
|
|
||||||
// Draw cursor
|
// Draw cursor
|
||||||
LoadFont(1);
|
LoadFont(1);
|
||||||
|
|||||||
Reference in New Issue
Block a user