Skip to content

Commit

Permalink
Support for Reloading Satiator Menu
Browse files Browse the repository at this point in the history
  • Loading branch information
slinga-homebrew committed Mar 11, 2021
1 parent c0989d6 commit 1b06e1d
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 13 deletions.
16 changes: 16 additions & 0 deletions backup-satiator.c
Original file line number Diff line number Diff line change
Expand Up @@ -361,3 +361,19 @@ int satiatorReadBUPHeader(char* filename, PBUP_HEADER bupHeader)

return result;
}

// relaunch the satiator menu
void satiatorReboot(void)
{
s_mode(s_api);
for (volatile int i=0; i<2000; i++)
;

int (**bios_get_mpeg_rom)(uint32_t index, uint32_t size, uint32_t addr) = (void*)0x06000298;
(*bios_get_mpeg_rom)(2, 2, 0x200000);

((void(*)(void))0x200000)();

// should never get here
}

1 change: 1 addition & 0 deletions backup-satiator.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ int satiatorDeleteSaveFile(int backupDevice, char* filename);
int satiatorEnter(void);
int satiatorExit(void);
int satiatorReadBUPHeader(char* filename, PBUP_HEADER bupHeader);
void satiatorReboot(void);
13 changes: 13 additions & 0 deletions main.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#include "main.h"
#include "util.h"
#include "backup.h"
#include "backup-satiator.h" // needed for satiatorReboot()

GAME g_Game = {0};
SAVES g_Saves[MAX_SAVES] = {0};
Expand Down Expand Up @@ -407,6 +408,13 @@ unsigned int initMenuOptions(int newState)
g_Game.menuOptions[numMenuOptions].option = MAIN_OPTION_EXIT;
numMenuOptions++;

if(g_Game.deviceSatiatorBackup == true)
{
g_Game.menuOptions[numMenuOptions].optionText = "Exit to Satiator";
g_Game.menuOptions[numMenuOptions].option = MAIN_OPTION_EXIT_SATIATOR;
numMenuOptions++;
}

g_Game.menuOptions[numMenuOptions].optionText = "Reboot";
g_Game.menuOptions[numMenuOptions].option = MAIN_OPTION_REBOOT;
numMenuOptions++;
Expand Down Expand Up @@ -731,6 +739,11 @@ void main_input(void)
jo_core_exit_to_multiplayer();
return;
}
case MAIN_OPTION_EXIT_SATIATOR:
{
satiatorReboot();
return;
}
case MAIN_OPTION_REBOOT:
{
jo_core_restart_saturn();
Expand Down
28 changes: 15 additions & 13 deletions main.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
#include "bup_header.h"

// program version, keep this length to avoid having to resize strings
#define VERSION "3.6.1"
#define VERSION "3.6.3"

// program states
#define STATE_UNINITIALIZED 0
Expand All @@ -50,18 +50,20 @@
#define MAX_STATES 16 // how many states to record

// option selected on the main screen
#define MAIN_OPTION_INTERNAL 0
#define MAIN_OPTION_CARTRIDGE 1
#define MAIN_OPTION_EXTERNAL 2
#define MAIN_OPTION_SATIATOR 3
#define MAIN_OPTION_MODE 4
#define MAIN_OPTION_CD 5
#define MAIN_OPTION_DUMP_MEMORY 6
#define MAIN_OPTION_FORMAT 7
#define MAIN_OPTION_COLLECT 8
#define MAIN_OPTION_CREDITS 9
#define MAIN_OPTION_EXIT 10
#define MAIN_OPTION_REBOOT 11
#define MAIN_OPTION_INTERNAL 0
#define MAIN_OPTION_CARTRIDGE 1
#define MAIN_OPTION_EXTERNAL 2
#define MAIN_OPTION_SATIATOR 3
#define MAIN_OPTION_MODE 4
#define MAIN_OPTION_CD 5
#define MAIN_OPTION_DUMP_MEMORY 6
#define MAIN_OPTION_FORMAT 7
#define MAIN_OPTION_COLLECT 8
#define MAIN_OPTION_CREDITS 9
#define MAIN_OPTION_EXIT 10
#define MAIN_OPTION_REBOOT 11
#define MAIN_OPTION_EXIT_SATIATOR 12


#define SAVE_OPTION_INTERNAL 0
#define SAVE_OPTION_CARTRIDGE 1
Expand Down

0 comments on commit 1b06e1d

Please sign in to comment.