Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion arm9/source/dsrom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,11 @@ void DSRomInfo::drawDSRomIcon(u8 x, u8 y, GRAPHICS_ENGINE engine, bool small) {
skiptransparent = true;
break;
case SAVE_INFO_EX_ICON_FIRMWARE:
gdi().maskBlt(icon_bg_bin, x, y, 32, 32, engine);
if (small) {
gdi().maskBlt(icon_bg_bin, x, y, 16, 16, engine);
} else {
gdi().maskBlt(icon_bg_bin, x, y, 32, 32, engine);
}
break;
}

Expand Down
2 changes: 1 addition & 1 deletion arm9/source/launcher/NdsBootstrapLauncher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ bool NdsBootstrapLauncher::launchRom(std::string romPath, std::string savePath,
progressWnd().setPercent(0);

//Check which nds-bootstrap version has been selected
if(gs().nightly){
if((gs().nightly && _romInfo.saveInfo().getNightly() == 2) || _romInfo.saveInfo().getNightly() == 1){
if(access(ndsBootstrapPathNightly.c_str(), F_OK) != 0){
progressWnd().hide();
printLoaderNotFound(ndsBootstrapPathNightly);
Expand Down
39 changes: 28 additions & 11 deletions arm9/source/rominfownd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,6 @@ void cRomInfoWnd::onShow() {
}

#define ITEM_SAVETYPE 0, 0
#define ITEM_NDSBOOTSTRAP 0, 1

#define ITEM_CHEATS 1, 0
#define ITEM_SAVESLOT 1, 1
Expand All @@ -312,14 +311,23 @@ void cRomInfoWnd::pressSaveType(void) {
LANG("save type", "text"), _values,
cSaveManager::SaveTypeToDisplaySaveType((SAVE_TYPE)_romInfo.saveInfo().saveType));

#ifdef __KERNEL_LAUNCHER_SUPPORT__
_values.clear();
_values.push_back("kernel");
_values.push_back("nds-bootstrap");
_values.push_back(LANG("save type", "default"));
settingWnd.addSettingItem(LANG("loader", "text"), _values,
_romInfo.saveInfo().getNdsBootstrap());
#endif // __KERNEL_LAUNCHER_SUPPORT__
if (fsManager().isFlashcart()){
_values.clear();
_values.push_back("Pico-Loader");
_values.push_back("nds-bootstrap");
_values.push_back(LANG("save type", "default"));
settingWnd.addSettingItem(LANG("nds bootstrap", "loader"), _values,
_romInfo.saveInfo().getLoader());
}

if((!gs().pico && _romInfo.saveInfo().getLoader() == 2) || _romInfo.saveInfo().getLoader() == 1){
_values.clear();
_values.push_back(LANG("nds bootstrap", "release"));
_values.push_back(LANG("nds bootstrap", "nightly"));
_values.push_back(LANG("save type", "default"));
settingWnd.addSettingItem(LANG("nds bootstrap", "text"), _values,
_romInfo.saveInfo().getNightly());
}

settingWnd.addSettingTab(LANG("save type", "tab2"));

Expand Down Expand Up @@ -380,10 +388,19 @@ void cRomInfoWnd::pressSaveType(void) {
LANG("save type", stLangStrings[_romInfo.saveInfo().saveType]).c_str());
addCode();
}

u8 loader_choice = 2, nightly_choice = 2;
if (fsManager().isFlashcart()) {
loader_choice = settingWnd.getItemSelection(0,1);
nightly_choice = settingWnd.getItemSelection(0,2);
} else {
nightly_choice = settingWnd.getItemSelection(0,1);
}

_romInfo.saveInfo().setFlags(
0, 0, 0, settingWnd.getItemSelection(ITEM_CHEATS),
settingWnd.getItemSelection(ITEM_SAVESLOT), 2, 0, 0, 2, 0, 0,
settingWnd.getItemSelection(ITEM_NDSBOOTSTRAP));
settingWnd.getItemSelection(ITEM_SAVESLOT), 2, 0, 0, settingWnd.getItemSelection(ITEM_ICON), 0, 0,
loader_choice, nightly_choice);

saveManager().updateCustomSaveList(_romInfo.saveInfo());
}
Expand Down
17 changes: 5 additions & 12 deletions arm9/source/romlauncher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -245,23 +245,16 @@ TLaunchResult launchRom(const std::string& aFullPath, DSRomInfo& aRomInfo, bool
if (aRomInfo.saveInfo().isLinkage()) flags |= PATCH_LINKAGE;
u8 language = aRomInfo.saveInfo().getLanguage();
if (language) flags |= (language << PATCH_LANGUAGE_SHIFT) & PATCH_LANGUAGE_MASK;
#ifndef __KERNEL_LAUNCHER_SUPPORT__
if(gs().pico && aFullPath[0] != 's'){ //roms can only be launched from the sd with nds-bootstrap

u8 loader = aRomInfo.saveInfo().getLoader();
// loader = 0: pico, 1: nds-bootstrap, 2: global
if(((gs().pico && loader == 2) || loader == 0) && aFullPath[0] != 's'){ //roms can only be launched from the sd with nds-bootstrap
launcher = new DSpicoLauncher();
}
else {
launcher = new NdsBootstrapLauncher();
}
#else // __KERNEL_LAUNCHER_SUPPORT__
if (aRomInfo.saveInfo().isNdsBootstrap())
launcher = new NdsBootstrapLauncher();
else
#ifdef __TTLAUNCHER__
launcher = new TopToyLauncher();
#else // __TTLAUNCHER__
launcher = new AcekardLauncher();
#endif // __TTLAUNCHER__
#endif // __KERNEL_LAUNCHER_SUPPORT__

} else {
if (!aMenu) saveManager().saveLastInfo(aFullPath);
if (gs().hbStrap == 1)
Expand Down
22 changes: 14 additions & 8 deletions arm9/source/savemngr.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,10 @@ enum DISPLAY_SAVE_TYPE {
#define SAVE_INFO_EX_GLOBAL_SD_SAVE (BIT(9))
#define SAVE_INFO_EX_LANGUAGE_MASK 0x00001c00
#define SAVE_INFO_EX_LANGUAGE_SHIFT 10
#define SAVE_INFO_EX_NDSBOOTSTRAP (BIT(13))
#define SAVE_INFO_EX_GLOBAL_NDSBOOTSTRAP (BIT(14))
#define SAVE_INFO_EX_LOADER (BIT(13))
#define SAVE_INFO_EX_GLOBAL_LOADER (BIT(14))
#define SAVE_INFO_EX_NIGHTLY (BIT(15))
#define SAVE_INFO_EX_GLOBAL_NIGHTLY (BIT(16))

typedef struct SAVE_INFO_EX_T {
u8 gameTitle[12];
Expand All @@ -108,8 +110,11 @@ typedef struct SAVE_INFO_EX_T {
u8 getLanguage(void) {
return (flags2 & SAVE_INFO_EX_LANGUAGE_MASK) >> SAVE_INFO_EX_LANGUAGE_SHIFT;
}
u8 getNdsBootstrap(void) {
return getFlag(SAVE_INFO_EX_NDSBOOTSTRAP, SAVE_INFO_EX_GLOBAL_NDSBOOTSTRAP, true);
u8 getLoader(void) {
return getFlag(SAVE_INFO_EX_LOADER, SAVE_INFO_EX_GLOBAL_LOADER, true);
};
u8 getNightly(void) {
return getFlag(SAVE_INFO_EX_NIGHTLY, SAVE_INFO_EX_GLOBAL_NIGHTLY, true);
};
bool isDownloadPlay(void) {
return getState(SAVE_INFO_EX_DOWNLOAD_PLAY, SAVE_INFO_EX_GLOBAL_DOWNLOAD_PLAY, false,
Expand All @@ -131,11 +136,11 @@ typedef struct SAVE_INFO_EX_T {
return getState(SAVE_INFO_EX_SD_SAVE, SAVE_INFO_EX_GLOBAL_SD_SAVE, gs().sdsave, true);
};
bool isNdsBootstrap(void) {
return getState(SAVE_INFO_EX_NDSBOOTSTRAP, SAVE_INFO_EX_GLOBAL_NDSBOOTSTRAP,
return getState(SAVE_INFO_EX_LOADER, SAVE_INFO_EX_GLOBAL_LOADER,
gs().romLauncher, true);
};
void setFlags(u8 rumble, u8 downloadplay, u8 reset, u8 cheat, u8 slot, u8 dma, u8 protection,
u8 linkage, u8 icon, u8 sdsave, u8 language, u8 ndsbootstrap) {
u8 linkage, u8 icon, u8 sdsave, u8 language, u8 ndsbootstrap, u8 nightly) {
flags = rumble & SAVE_INFO_EX_RUMBLE;
flags2 = 0;
setFlag(SAVE_INFO_EX_DOWNLOAD_PLAY, SAVE_INFO_EX_GLOBAL_DOWNLOAD_PLAY, downloadplay, false);
Expand All @@ -148,7 +153,8 @@ typedef struct SAVE_INFO_EX_T {
flags2 |= (icon << SAVE_INFO_EX_ICON_SHIFT) & SAVE_INFO_EX_ICON_MASK;
setFlag(SAVE_INFO_EX_SD_SAVE, SAVE_INFO_EX_GLOBAL_SD_SAVE, sdsave, true);
flags2 |= (language << SAVE_INFO_EX_LANGUAGE_SHIFT) & SAVE_INFO_EX_LANGUAGE_MASK;
setFlag(SAVE_INFO_EX_NDSBOOTSTRAP, SAVE_INFO_EX_GLOBAL_NDSBOOTSTRAP, ndsbootstrap, true);
setFlag(SAVE_INFO_EX_LOADER, SAVE_INFO_EX_GLOBAL_LOADER, ndsbootstrap, true);
setFlag(SAVE_INFO_EX_NIGHTLY, SAVE_INFO_EX_GLOBAL_NIGHTLY, nightly, true);
};
u8 getFlag(u32 personal, u32 global, bool style) {
return (flags2 & global) ? 2 : ((style ? (flags2 & personal) : (flags & personal)) ? 1 : 0);
Expand Down Expand Up @@ -184,7 +190,7 @@ typedef struct SAVE_INFO_EX_T {
flags = 0;
flags2 = SAVE_INFO_EX_GLOBAL_SOFT_RESET | SAVE_INFO_EX_GLOBAL_CHEAT |
SAVE_INFO_EX_GLOBAL_DMA | SAVE_INFO_EX_GLOBAL_SD_SAVE |
SAVE_INFO_EX_GLOBAL_NDSBOOTSTRAP;
SAVE_INFO_EX_GLOBAL_LOADER | SAVE_INFO_EX_GLOBAL_NIGHTLY;
reserved[0] = reserved[1] = 0;
};
} SAVE_INFO_EX;
Expand Down
Loading