Skip to content

Commit 59a38ad

Browse files
committed
1 parent 3cde57f commit 59a38ad

11 files changed

Lines changed: 75 additions & 17 deletions

Makefile.menu2_gc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ CXX =powerpc-eabi-g++
55
AS =powerpc-eabi-as
66

77
CFLAGS = -g -Ofast -mogc -Wall $(INCLUDE) \
8-
-fno-exceptions -Wno-unused-parameter -pipe \
8+
-fno-exceptions -flto=jobserver -Wno-unused-parameter -pipe \
99
-DUSE_GUI -DNGC -DGLN64_GX -DUSE_TLB_CACHE -DARAM_BLOCKCACHE -DARAM_TLBCACHE \
1010
-DUSE_RECOMP_CACHE -DPPC_DYNAREC -DFASTMEM -DRELEASE -DMENU_V2
1111

12-
LDFLAGS = -mogc -Wl,-Map,$(notdir $@).map -Wl,--cref
12+
LDFLAGS =$(CFLAGS) -Wl,-Map,$(notdir $@).map -Wl,--cref
1313

1414
INCLUDE = -I$(DEVKITPRO)/libogc/include
1515
LIBPATHS = -L$(DEVKITPRO)/libogc/lib/cube

Makefile.menu2_wii

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ CXX =powerpc-eabi-g++
55
AS =powerpc-eabi-as
66

77
CFLAGS = -g -Ofast -mrvl -Wall $(INCLUDE) \
8-
-fno-exceptions -Wno-unused-parameter -pipe \
8+
-fno-exceptions -flto=jobserver -Wno-unused-parameter -pipe \
99
-DUSE_GUI -DWII -DGLN64_GX -DUSE_EXPANSION \
1010
-DUSE_RECOMP_CACHE -DPPC_DYNAREC -DFASTMEM -DRELEASE -DMENU_V2
1111

12-
LDFLAGS = -mrvl -Wl,-Map,$(notdir $@).map -Wl,--cref
12+
LDFLAGS =$(CFLAGS) -Wl,-Map,$(notdir $@).map -Wl,--cref
1313

1414
INCLUDE = -I$(DEVKITPRO)/libogc/include
1515
LIBPATHS = -L$(DEVKITPRO)/libogc/lib/wii

fileBrowser/fileBrowser-libfat.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@ static char sdNeedsUnmount = 0;
6363
static char usbMounted = 0;
6464
static char usbNeedsUnmount = 0;
6565

66+
fileBrowser_file topLevel_libfat_Auto =
67+
{ "\0",
68+
0,
69+
0,
70+
0,
71+
FILE_BROWSER_ATTR_DIR
72+
};
73+
6674
fileBrowser_file topLevel_libfat_Default =
6775
{ "sd:/wii64/roms", // file name
6876
0, // sector

fileBrowser/fileBrowser-libfat.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#ifndef FILE_BROWSER_LIBFAT_H
2727
#define FILE_BROWSER_LIBFAT_H
2828

29+
extern fileBrowser_file topLevel_libfat_Auto;
2930
extern fileBrowser_file topLevel_libfat_Default; //GC SD Slots & Wii Front SD Slot
3031
extern fileBrowser_file topLevel_libfat_USB; //Wii only, USB
3132
extern fileBrowser_file saveDir_libfat_Default; //GC SD Slots & Wii Front SD Slot

libgui/InputManager.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626

2727
void ShutdownWii();
28+
void ScanPADSandReset(u32 dummy);
2829

2930

3031

@@ -43,7 +44,7 @@ Input::Input()
4344
SYS_SetPowerCallback(ShutdownWii);
4445

4546
#endif
46-
// VIDEO_SetPostRetraceCallback (PAD_ScanPads);
47+
VIDEO_SetPostRetraceCallback (ScanPADSandReset);
4748
}
4849

4950
Input::~Input()
@@ -57,7 +58,6 @@ void Input::refreshInput()
5758
PAD_Clamp(gcPad);
5859
#ifdef HW_RVL
5960
if(wpadNeedScan){ WPAD_ScanPads(); wpadNeedScan = 0; }
60-
WPAD_ScanPads();
6161
wiiPad = WPAD_Data(0);
6262
#endif
6363
}

main/main_gc-menu2.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ extern timers Timers;
115115
char menuActive;
116116
char saveEnabled;
117117
char creditsScrolling;
118-
char padNeedScan = 1;
119-
char wpadNeedScan = 1;
118+
char padNeedScan;
119+
char wpadNeedScan;
120120
char shutdown = 0;
121121
char nativeSaveDevice;
122122
char saveStateDevice;
@@ -136,6 +136,7 @@ char smbUserName[CONFIG_STRING_SIZE];
136136
char smbPassWord[CONFIG_STRING_SIZE];
137137
char smbShareName[CONFIG_STRING_SIZE];
138138
char smbIpAddr[CONFIG_STRING_SIZE];
139+
char romPath[CONFIG_STRING_SIZE];
139140

140141
static struct {
141142
char* key;
@@ -172,7 +173,8 @@ static struct {
172173
{ "smbusername", smbUserName, CONFIG_STRING_TYPE, CONFIG_STRING_TYPE },
173174
{ "smbpassword", smbPassWord, CONFIG_STRING_TYPE, CONFIG_STRING_TYPE },
174175
{ "smbsharename", smbShareName, CONFIG_STRING_TYPE, CONFIG_STRING_TYPE },
175-
{ "smbipaddr", smbIpAddr, CONFIG_STRING_TYPE, CONFIG_STRING_TYPE }
176+
{ "smbipaddr", smbIpAddr, CONFIG_STRING_TYPE, CONFIG_STRING_TYPE },
177+
{ "rompath", romPath, CONFIG_STRING_TYPE, CONFIG_STRING_TYPE }
176178
};
177179
void handleConfigPair(char* kv);
178180
void readConfig(FILE* f);
@@ -338,7 +340,6 @@ int main(int argc, char* argv[]){
338340
#endif
339341

340342
MenuContext *menu = new MenuContext(vmode);
341-
VIDEO_SetPostRetraceCallback (ScanPADSandReset);
342343

343344
// Initialize the network if the user has specified something in their SMB settings
344345
if(strlen(&smbShareName[0]) && strlen(&smbIpAddr[0])) {
@@ -411,7 +412,6 @@ int loadROM(fileBrowser_file* rom){
411412
format_mempacks();
412413
reset_flashram();
413414
init_eeprom();
414-
hasLoadedROM = TRUE;
415415
#ifndef HW_RVL
416416
ARAM_manager_init();
417417
#endif
@@ -428,6 +428,7 @@ int loadROM(fileBrowser_file* rom){
428428
}
429429

430430
// Init everything for this ROM
431+
hasLoadedROM = TRUE;
431432
init_memory();
432433

433434
gfx_set_fb(xfb[0], xfb[1]);

menu/FileBrowserFrame.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,6 @@ static fileBrowser_file* dir_entries;
144144
static int num_entries;
145145
static int current_page;
146146
static int max_page;
147-
static char feedback_string[36];
148147

149148
void fileBrowserFrame_OpenDirectory(fileBrowser_file* dir);
150149
void fileBrowserFrame_Error(fileBrowser_file* dir, int error_code);
@@ -332,6 +331,7 @@ void fileBrowserFrame_OpenDirectory(fileBrowser_file* dir)
332331

333332
void fileBrowserFrame_Error(fileBrowser_file* dir, int error_code)
334333
{
334+
char feedback_string[256];
335335
//disable all buttons
336336
for (int i = 0; i < NUM_FRAME_BUTTONS; i++)
337337
FRAME_BUTTONS[i].button->setActive(false);
@@ -366,8 +366,8 @@ void fileBrowserFrame_Error(fileBrowser_file* dir, int error_code)
366366
FRAME_BUTTONS[2].button->setNextFocus(menu::Focus::DIRECTION_DOWN, NULL);
367367
pMenuContext->getFrame(MenuContext::FRAME_FILEBROWSER)->setDefaultFocus(FRAME_BUTTONS[2].button);
368368
menu::Focus::getInstance().clearPrimaryFocus();*/
369+
pMenuContext->setActiveFrame(MenuContext::FRAME_LOADROM);
369370
menu::MessageBox::getInstance().setMessage(feedback_string);
370-
pMenuContext->setActiveFrame(MenuContext::FRAME_MAIN);
371371
}
372372

373373
void fileBrowserFrame_FillPage()
@@ -419,6 +419,7 @@ void Func_SetPlayGame();
419419

420420
void fileBrowserFrame_LoadFile(int i)
421421
{
422+
char feedback_string[256];
422423
if(dir_entries[i].attr & FILE_BROWSER_ATTR_DIR){
423424
// Here we are 'recursing' into a subdirectory
424425
// We have to do a little dance here to avoid a dangling pointer
@@ -469,6 +470,8 @@ void fileBrowserFrame_LoadFile(int i)
469470
autoSaveLoaded = NATIVESAVEDEVICE_NONE;
470471

471472
menu::MessageBox::getInstance().setMessage(RomInfo);
473+
pMenuContext->setActiveFrame(MenuContext::FRAME_MAIN);
474+
Func_SetPlayGame();
472475
}
473476
else // If not.
474477
{
@@ -500,8 +503,15 @@ void fileBrowserFrame_LoadFile(int i)
500503
FRAME_BUTTONS[i+2].buttonString = FRAME_STRINGS[2];
501504
pMenuContext->getFrame(MenuContext::FRAME_FILEBROWSER)->setDefaultFocus(FRAME_BUTTONS[2].button);
502505
menu::Focus::getInstance().clearPrimaryFocus();*/
506+
}
507+
}
503508

504-
pMenuContext->setActiveFrame(MenuContext::FRAME_MAIN);
505-
if(hasLoadedROM) Func_SetPlayGame();
509+
void fileBrowserFrame_AutoLoadFile(char* path)
510+
{
511+
for (int i = 0; i < num_entries; i++) {
512+
if (!strcasecmp(dir_entries[i].name, path)) {
513+
fileBrowserFrame_LoadFile(i);
514+
return;
515+
}
506516
}
507517
}

menu/LoadRomFrame.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,31 @@ LoadRomFrame::~LoadRomFrame()
114114
}
115115

116116
extern MenuContext *pMenuContext;
117+
extern char romPath[];
117118
extern void fileBrowserFrame_OpenDirectory(fileBrowser_file* dir);
119+
extern void fileBrowserFrame_AutoLoadFile(char* path);
120+
121+
void Func_LoadFromAuto()
122+
{
123+
if (!strlen(&romPath[0])) return;
124+
strcpy(topLevel_libfat_Auto.name, &romPath[0]);
125+
char *sep = strrchr(topLevel_libfat_Auto.name, '/');
126+
if (sep)
127+
*sep = '\0';
128+
129+
// Change all the romFile pointers
130+
romFile_topLevel = &topLevel_libfat_Auto;
131+
romFile_readDir = fileBrowser_libfat_readDir;
132+
romFile_readFile = fileBrowser_libfatROM_readFile;
133+
romFile_seekFile = fileBrowser_libfat_seekFile;
134+
romFile_init = fileBrowser_libfat_init;
135+
romFile_deinit = fileBrowser_libfatROM_deinit;
136+
// Make sure the romFile system is ready before we browse the filesystem
137+
romFile_init( romFile_topLevel );
138+
139+
fileBrowserFrame_OpenDirectory(romFile_topLevel);
140+
fileBrowserFrame_AutoLoadFile(romPath);
141+
}
118142

119143
void Func_LoadFromSD()
120144
{

menu/MenuContext.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "../libgui/CursorManager.h"
2424

2525
MenuContext *pMenuContext;
26+
void Func_LoadFromAuto();
2627

2728
MenuContext::MenuContext(GXRModeObj *vmode)
2829
: currentActiveFrame(0),
@@ -59,6 +60,7 @@ MenuContext::MenuContext(GXRModeObj *vmode)
5960

6061
menu::Focus::getInstance().setFocusActive(true);
6162
setActiveFrame(FRAME_MAIN);
63+
Func_LoadFromAuto();
6264
}
6365

6466
MenuContext::~MenuContext()

r4300/r4300.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1928,6 +1928,6 @@ void cpu_deinit(void){
19281928
}
19291929
}
19301930
// tehpola: modified condition from !dynacore && interpcore
1931-
if (dynacore) free(PC);
1931+
if (dynacore) { free(PC); PC = NULL; }
19321932
}
19331933

0 commit comments

Comments
 (0)