mirror of
https://github.com/Oibaf66/frodo-wii.git
synced 2024-11-22 03:19:24 +01:00
Version 2.2
Solved issues # 20, 21,23, 25, 29. Added the possibility to show a smaller screen (so also the borders are shown), the preferences are saved manually and not automatically on exit, when a gameshot is saved also some preferences (key bindings, game name, 1541 emulation, screen dimension) related to the game are saved.
This commit is contained in:
parent
17d70cc3ef
commit
8085fee39c
10
Makefile.wii
10
Makefile.wii
@ -25,9 +25,9 @@ INCLUDES :=
|
|||||||
# options for code generation
|
# options for code generation
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
PCFLAGS = -DPRECISE_CPU_CYCLES=1 -DPRECISE_CIA_CYCLES=1 -DPC_IS_POINTER=0
|
PCFLAGS = -DPRECISE_CPU_CYCLES=1 -DPRECISE_CIA_CYCLES=1 -DPC_IS_POINTER=0 -DWII_PORT
|
||||||
SCFLAGS = $(PCFLAGS) -DFRODO_SC
|
SCFLAGS = $(PCFLAGS) -DFRODO_SC
|
||||||
CFLAGS = -O3 -g -Wall $(MACHDEP) $(INCLUDE) -U__unix -DHAVE_SDL $(SCFLAGS) -I$(LIBOGC_INC)/SDL -I$(PWD)/Src/
|
CFLAGS = -O3 -g -Wall $(MACHDEP) $(INCLUDE) -DHAVE_SDL $(SCFLAGS) -I$(LIBOGC_INC)/SDL
|
||||||
CXXFLAGS = $(CFLAGS)
|
CXXFLAGS = $(CFLAGS)
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
||||||
@ -41,7 +41,7 @@ LIBS := -lSDL_ttf -lSDL_image -lpng -ljpeg -lz -lSDL -lfreetype -lfat -lwiiuse -
|
|||||||
# list of directories containing libraries, this must be the top level containing
|
# list of directories containing libraries, this must be the top level containing
|
||||||
# include and lib
|
# include and lib
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
LIBDIRS :=
|
LIBDIRS := $(PORTLIBS)
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# no real need to edit anything past this point unless you need to add additional
|
# no real need to edit anything past this point unless you need to add additional
|
||||||
@ -92,7 +92,9 @@ export OFILES := $(addsuffix .o,$(BINFILES)) \
|
|||||||
export INCLUDE := $(foreach dir,$(INCLUDES), -iquote $(CURDIR)/$(dir)) \
|
export INCLUDE := $(foreach dir,$(INCLUDES), -iquote $(CURDIR)/$(dir)) \
|
||||||
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
||||||
-I$(CURDIR)/$(BUILD) \
|
-I$(CURDIR)/$(BUILD) \
|
||||||
-I$(LIBOGC_INC)
|
-I$(LIBOGC_INC) \
|
||||||
|
-I$(CURDIR)/Src \
|
||||||
|
-I$(PORTLIBS)/include
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# build a list of library paths
|
# build a list of library paths
|
||||||
|
@ -702,6 +702,7 @@ void C64::Resume(void)
|
|||||||
{
|
{
|
||||||
this->have_a_break = false;
|
this->have_a_break = false;
|
||||||
TheSID->ResumeSound();
|
TheSID->ResumeSound();
|
||||||
|
//SDL_FillRect(real_screen, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "C64_SDL.h"
|
#include "C64_SDL.h"
|
||||||
|
@ -303,8 +303,8 @@ void C64::VBlank(bool draw_frame)
|
|||||||
|
|
||||||
Gui::gui->runLogic();
|
Gui::gui->runLogic();
|
||||||
|
|
||||||
if (this->quit_thyself)
|
//if (this->quit_thyself)
|
||||||
ThePrefs.Save(ThePrefs.PrefsPath);
|
// ThePrefs.Save(ThePrefs.PrefsPath);
|
||||||
#if defined(GEKKO)
|
#if defined(GEKKO)
|
||||||
if (this->quit_thyself && Network::networking_started == true)
|
if (this->quit_thyself && Network::networking_started == true)
|
||||||
SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);
|
SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);
|
||||||
|
@ -96,8 +96,8 @@ void C64Display::UpdateLEDs(int l0, int l1, int l2, int l3)
|
|||||||
|
|
||||||
// Display surface
|
// Display surface
|
||||||
static Uint8 screen[DISPLAY_X * DISPLAY_Y];
|
static Uint8 screen[DISPLAY_X * DISPLAY_Y];
|
||||||
static Uint16 *screen_16;
|
//static Uint16 *screen_16;
|
||||||
static Uint32 *screen_32;
|
//static Uint32 *screen_32;
|
||||||
static int screen_bits_per_pixel;
|
static int screen_bits_per_pixel;
|
||||||
|
|
||||||
static SDL_Surface *sdl_screen;
|
static SDL_Surface *sdl_screen;
|
||||||
@ -158,16 +158,22 @@ int init_graphics(void)
|
|||||||
SDL_ShowCursor(SDL_DISABLE);
|
SDL_ShowCursor(SDL_DISABLE);
|
||||||
|
|
||||||
SDL_FreeSurface(sdl_screen);
|
SDL_FreeSurface(sdl_screen);
|
||||||
sdl_screen = SDL_CreateRGBSurface(SDL_SWSURFACE, DISPLAY_X, DISPLAY_Y + 17, 8,
|
//sdl_screen = SDL_CreateRGBSurface(SDL_SWSURFACE, DISPLAY_X, DISPLAY_Y + 17, 8, rmask, gmask, bmask, amask);
|
||||||
rmask, gmask, bmask, amask);
|
screen_bits_per_pixel = info->vfmt->BitsPerPixel;
|
||||||
|
sdl_screen = SDL_CreateRGBSurface(SDL_SWSURFACE, DISPLAY_X, DISPLAY_Y, screen_bits_per_pixel, rmask, gmask, bmask, amask);
|
||||||
|
|
||||||
if (!sdl_screen)
|
if (!sdl_screen)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Cannot allocate surface to draw on: %s\n",
|
fprintf(stderr, "Cannot allocate surface to draw on: %s\n",
|
||||||
SDL_GetError());
|
SDL_GetError());
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef WII_PORT
|
||||||
if (ThePrefs.DisplayType == DISPTYPE_SCREEN)
|
if (ThePrefs.DisplayType == DISPTYPE_SCREEN)
|
||||||
flags |= SDL_FULLSCREEN;
|
flags |= SDL_FULLSCREEN;
|
||||||
|
#endif
|
||||||
|
|
||||||
screen_bits_per_pixel = info->vfmt->BitsPerPixel;
|
screen_bits_per_pixel = info->vfmt->BitsPerPixel;
|
||||||
SDL_FreeSurface(real_screen);
|
SDL_FreeSurface(real_screen);
|
||||||
real_screen = SDL_SetVideoMode(FULL_DISPLAY_X, FULL_DISPLAY_Y, screen_bits_per_pixel,
|
real_screen = SDL_SetVideoMode(FULL_DISPLAY_X, FULL_DISPLAY_Y, screen_bits_per_pixel,
|
||||||
@ -177,16 +183,19 @@ int init_graphics(void)
|
|||||||
fprintf(stderr, "\n\nCannot initialize video: %s\n", SDL_GetError());
|
fprintf(stderr, "\n\nCannot initialize video: %s\n", SDL_GetError());
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
//this part of code seems useless
|
||||||
|
/*
|
||||||
free(screen_16);
|
free(screen_16);
|
||||||
free(screen_32);
|
free(screen_32);
|
||||||
|
|
||||||
switch (screen_bits_per_pixel)
|
switch (screen_bits_per_pixel)
|
||||||
{
|
{
|
||||||
case 8:
|
case 8:
|
||||||
/* Default, no need to do anything further */
|
|
||||||
|
Default, no need to do anything further
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
/* Allocate a 16 bit screen */
|
Allocate a 16 bit screen
|
||||||
screen_16 = (Uint16*)calloc(real_screen->pitch * FULL_DISPLAY_Y, sizeof(Uint16) );
|
screen_16 = (Uint16*)calloc(real_screen->pitch * FULL_DISPLAY_Y, sizeof(Uint16) );
|
||||||
break;
|
break;
|
||||||
case 24:
|
case 24:
|
||||||
@ -197,6 +206,7 @@ int init_graphics(void)
|
|||||||
printf("What is this???\n");
|
printf("What is this???\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -271,6 +281,38 @@ void C64Display::Update_32(uint8 *src_pixels)
|
|||||||
void C64Display::Update_16(uint8 *src_pixels)
|
void C64Display::Update_16(uint8 *src_pixels)
|
||||||
{
|
{
|
||||||
const Uint16 src_pitch = DISPLAY_X;
|
const Uint16 src_pitch = DISPLAY_X;
|
||||||
|
|
||||||
|
#ifdef WII_PORT
|
||||||
|
|
||||||
|
if (ThePrefs.DisplayType == DISPTYPE_WINDOW)
|
||||||
|
{
|
||||||
|
SDL_Rect srcrect = {0, 0, DISPLAY_X, DISPLAY_Y};
|
||||||
|
SDL_Rect dstrect = {0, 8, FULL_DISPLAY_X, FULL_DISPLAY_Y-16};
|
||||||
|
Uint16 *dst_pixels = (Uint16*)sdl_screen->pixels ;
|
||||||
|
const Uint16 src_pitch = DISPLAY_X;
|
||||||
|
const Uint16 dst_pitch = sdl_screen->pitch / sizeof(Uint16);
|
||||||
|
|
||||||
|
/* Draw 1-1 */
|
||||||
|
for (int y = 0; y < DISPLAY_Y; y++)
|
||||||
|
{
|
||||||
|
for (int x = 0; x < DISPLAY_X; x++)
|
||||||
|
{
|
||||||
|
int src_off = y * src_pitch + x;
|
||||||
|
int dst_off = y * dst_pitch + x;
|
||||||
|
Uint16 v = palette_16[src_pixels[src_off]];
|
||||||
|
dst_pixels[ dst_off ] = v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Stretch */
|
||||||
|
SDL_SoftStretch(sdl_screen, &srcrect, real_screen, &dstrect);
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
|
||||||
const int x_border = (DISPLAY_X - FULL_DISPLAY_X / 2) / 2;
|
const int x_border = (DISPLAY_X - FULL_DISPLAY_X / 2) / 2;
|
||||||
const int y_border = (DISPLAY_Y - FULL_DISPLAY_Y / 2) / 2;
|
const int y_border = (DISPLAY_Y - FULL_DISPLAY_Y / 2) / 2;
|
||||||
Uint16 *dst_pixels = (Uint16*)real_screen->pixels;
|
Uint16 *dst_pixels = (Uint16*)real_screen->pixels;
|
||||||
@ -293,6 +335,8 @@ void C64Display::Update_16(uint8 *src_pixels)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void C64Display::Update_8(uint8 *src_pixels)
|
void C64Display::Update_8(uint8 *src_pixels)
|
||||||
{
|
{
|
||||||
const Uint16 src_pitch = DISPLAY_X;
|
const Uint16 src_pitch = DISPLAY_X;
|
||||||
|
@ -120,7 +120,7 @@ Prefs::Prefs()
|
|||||||
this->NetworkRegion = REGION_UNKNOWN;
|
this->NetworkRegion = REGION_UNKNOWN;
|
||||||
this->CursorKeysForJoystick = true;
|
this->CursorKeysForJoystick = true;
|
||||||
|
|
||||||
strcpy(this->Theme, "default");
|
strcpy(this->Theme, "DEFAULT");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -348,6 +348,23 @@ void Prefs::Check(void)
|
|||||||
DisplayType = DISPTYPE_WINDOW;
|
DisplayType = DISPTYPE_WINDOW;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Introduced to fix the file names with spaces
|
||||||
|
void search_name(char* line, char* value)
|
||||||
|
{
|
||||||
|
char* ptrstr;
|
||||||
|
int length=0;
|
||||||
|
|
||||||
|
if (!(ptrstr = strchr(line,'='))) return;
|
||||||
|
|
||||||
|
ptrstr= ptrstr + 2;
|
||||||
|
|
||||||
|
while (ptrstr [length] != '\n') length++;
|
||||||
|
|
||||||
|
ptrstr [length] = '\0';
|
||||||
|
|
||||||
|
strncpy (value, ptrstr, length+1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Load preferences from file
|
* Load preferences from file
|
||||||
@ -360,6 +377,7 @@ void Prefs::Load(const char *filename)
|
|||||||
|
|
||||||
if ((file = fopen(filename, "r")) != NULL) {
|
if ((file = fopen(filename, "r")) != NULL) {
|
||||||
while(fgets(line, 255, file)) {
|
while(fgets(line, 255, file)) {
|
||||||
|
// if the file name contains spaces sscanf cuts the name in DrivePath[8-11]
|
||||||
if (sscanf(line, "%s = %s\n", keyword, value) == 2) {
|
if (sscanf(line, "%s = %s\n", keyword, value) == 2) {
|
||||||
if (!strcmp(keyword, "NormalCycles"))
|
if (!strcmp(keyword, "NormalCycles"))
|
||||||
NormalCycles = atoi(value);
|
NormalCycles = atoi(value);
|
||||||
@ -381,14 +399,15 @@ void Prefs::Load(const char *filename)
|
|||||||
ScalingNumerator = atoi(value);
|
ScalingNumerator = atoi(value);
|
||||||
else if (!strcmp(keyword, "ScalingDenominator"))
|
else if (!strcmp(keyword, "ScalingDenominator"))
|
||||||
ScalingDenominator = atoi(value);
|
ScalingDenominator = atoi(value);
|
||||||
else if (!strcmp(keyword, "DrivePath8"))
|
//Work arround to fix the problem for files with spaces in the name
|
||||||
strcpy(DrivePath[0], value);
|
else if (!strcmp(keyword, "DrivePath8")) {search_name(line, value);
|
||||||
else if (!strcmp(keyword, "DrivePath9"))
|
strcpy(DrivePath[0], value); }
|
||||||
strcpy(DrivePath[1], value);
|
else if (!strcmp(keyword, "DrivePath9")) { search_name(line, value);
|
||||||
else if (!strcmp(keyword, "DrivePath10"))
|
strcpy(DrivePath[1], value);}
|
||||||
strcpy(DrivePath[2], value);
|
else if (!strcmp(keyword, "DrivePath10")) { search_name(line, value);
|
||||||
else if (!strcmp(keyword, "DrivePath11"))
|
strcpy(DrivePath[2], value);}
|
||||||
strcpy(DrivePath[3], value);
|
else if (!strcmp(keyword, "DrivePath11")) { search_name(line, value);
|
||||||
|
strcpy(DrivePath[3], value);}
|
||||||
else if (!strcmp(keyword, "ViewPort"))
|
else if (!strcmp(keyword, "ViewPort"))
|
||||||
strcpy(ViewPort, value);
|
strcpy(ViewPort, value);
|
||||||
else if (!strcmp(keyword, "DisplayMode"))
|
else if (!strcmp(keyword, "DisplayMode"))
|
||||||
@ -627,3 +646,36 @@ bool Prefs::Save(const char *filename)
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Save game preferences to file
|
||||||
|
* true: success, false: error
|
||||||
|
* Save only drivepath, displaytype, joystikswap, emule 1541, joystickbutton, cursorkeys for joystick
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bool Prefs::Save_game(const char *filename)
|
||||||
|
{
|
||||||
|
FILE *file;
|
||||||
|
|
||||||
|
Check();
|
||||||
|
if ((file = fopen(filename, "w")) != NULL) {
|
||||||
|
|
||||||
|
for (int i=0; i<4; i++)
|
||||||
|
maybe_write(file, strcmp(DrivePath[i], TheDefaultPrefs.DrivePath[i]) != 0, "DrivePath%d = %s\n", i+8, DrivePath[i]);
|
||||||
|
|
||||||
|
maybe_write(file, true, "DisplayType = %s\n", DisplayType == DISPTYPE_WINDOW ? "WINDOW" : "SCREEN");
|
||||||
|
maybe_write(file, true, "JoystickSwap = %s\n", JoystickSwap ? "TRUE" : "FALSE");
|
||||||
|
maybe_write(file, true, "Emul1541Proc = %s\n", Emul1541Proc ? "TRUE" : "FALSE");
|
||||||
|
|
||||||
|
for (int i = 0; i < MAX_JOYSTICK_BUTTONS; i++)
|
||||||
|
maybe_write(file, true, "JoystickButtons%d = %d\n", i, JoystickButtons[i]);
|
||||||
|
maybe_write(file, true, "CursorKeysForJoystick = %s\n", CursorKeysForJoystick ? "TRUE" : "FALSE");
|
||||||
|
|
||||||
|
fclose(file);
|
||||||
|
ThePrefsOnDisk = *this;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@ -104,6 +104,7 @@ public:
|
|||||||
void Check(void);
|
void Check(void);
|
||||||
void Load(const char *filename);
|
void Load(const char *filename);
|
||||||
bool Save(const char *filename);
|
bool Save(const char *filename);
|
||||||
|
bool Save_game(const char *filename);
|
||||||
|
|
||||||
bool operator==(const Prefs &rhs) const;
|
bool operator==(const Prefs &rhs) const;
|
||||||
bool operator!=(const Prefs &rhs) const;
|
bool operator!=(const Prefs &rhs) const;
|
||||||
|
@ -420,7 +420,7 @@ public:
|
|||||||
SDL_BlitSurface(Gui::gui->bind_key_box, NULL, where, &dst);
|
SDL_BlitSurface(Gui::gui->bind_key_box, NULL, where, &dst);
|
||||||
|
|
||||||
this->menu->draw(where, 50, 70, 300, 400);
|
this->menu->draw(where, 50, 70, 300, 400);
|
||||||
this->help->draw(where, 358, 28, 264, 210);
|
this->help->draw(where, 358, 28, 264, 230);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -72,6 +72,7 @@ class StartGameListener : public TimeoutHandler
|
|||||||
public:
|
public:
|
||||||
StartGameListener()
|
StartGameListener()
|
||||||
{
|
{
|
||||||
|
|
||||||
Gui::gui->status_bar->queueMessage("Resetting the C64");
|
Gui::gui->status_bar->queueMessage("Resetting the C64");
|
||||||
TheC64->Reset();
|
TheC64->Reset();
|
||||||
TimerController::controller->arm(this, 4500);
|
TimerController::controller->arm(this, 4500);
|
||||||
|
@ -228,7 +228,8 @@ GameInfo::GameInfo(GameInfo *gi)
|
|||||||
this->genre = gi->genre;
|
this->genre = gi->genre;
|
||||||
|
|
||||||
if (gi->screenshot)
|
if (gi->screenshot)
|
||||||
this->screenshot = SDL_DisplayFormat(gi->screenshot);
|
// this->screenshot = SDL_DisplayFormat(gi->screenshot);
|
||||||
|
this->screenshot = sdl_surface_8bit_copy(gi->screenshot);
|
||||||
}
|
}
|
||||||
|
|
||||||
GameInfo::~GameInfo()
|
GameInfo::~GameInfo()
|
||||||
|
@ -355,8 +355,8 @@ void Gui::exitMenu()
|
|||||||
prefs_changed = ThePrefs != *this->np;
|
prefs_changed = ThePrefs != *this->np;
|
||||||
ThePrefs = *this->np;
|
ThePrefs = *this->np;
|
||||||
|
|
||||||
if (prefs_changed)
|
//if (prefs_changed)
|
||||||
ThePrefs.Save(ThePrefs.PrefsPath);
|
// ThePrefs.Save(ThePrefs.PrefsPath);
|
||||||
|
|
||||||
this->saveGameInfo(this->metadata_base_path, this->cur_gameInfo->filename);
|
this->saveGameInfo(this->metadata_base_path, this->cur_gameInfo->filename);
|
||||||
}
|
}
|
||||||
|
@ -115,6 +115,11 @@ public:
|
|||||||
case 9: /* Options */
|
case 9: /* Options */
|
||||||
Gui::gui->pushView(Gui::gui->ov);
|
Gui::gui->pushView(Gui::gui->ov);
|
||||||
break;
|
break;
|
||||||
|
case 10: /* Save Prefs */
|
||||||
|
ThePrefs = *Gui::gui->np;
|
||||||
|
ThePrefs.Save(ThePrefs.PrefsPath);
|
||||||
|
Gui::gui->pushDialogueBox(new DialogueBox(save_prefs_done));
|
||||||
|
break;
|
||||||
case 11: /* Exit */
|
case 11: /* Exit */
|
||||||
DialogueBox *exit_dialogue = new DialogueBox(exit_dialogue_messages);
|
DialogueBox *exit_dialogue = new DialogueBox(exit_dialogue_messages);
|
||||||
exit_dialogue->registerListener(new ExitListener());
|
exit_dialogue->registerListener(new ExitListener());
|
||||||
|
@ -13,6 +13,17 @@ const char *exit_dialogue_messages[8] = {
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const char *save_prefs_done[8] = {
|
||||||
|
/*00*/ "Preferences saved!",
|
||||||
|
/*01*/ "#",
|
||||||
|
/*02*/ "#", /* Empty line */
|
||||||
|
/*03*/ "#",
|
||||||
|
/*04*/ "#",
|
||||||
|
/*05*/ "#",
|
||||||
|
/*06*/ "^|OK",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
const char *save_state_done[8] = {
|
const char *save_state_done[8] = {
|
||||||
/*00*/ "Game state saved!",
|
/*00*/ "Game state saved!",
|
||||||
/*01*/ "#",
|
/*01*/ "#",
|
||||||
@ -138,7 +149,7 @@ const char *main_menu_messages[14] = {
|
|||||||
/*07*/ "Game info",
|
/*07*/ "Game info",
|
||||||
/*08*/ "Networking",
|
/*08*/ "Networking",
|
||||||
/*09*/ "Options",
|
/*09*/ "Options",
|
||||||
/*10*/ " ",
|
/*10*/ "Save prefs",
|
||||||
/*11*/ "Quit",
|
/*11*/ "Quit",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
@ -182,7 +193,10 @@ const char **main_menu_help[14] = {
|
|||||||
"Configure Frodo",
|
"Configure Frodo",
|
||||||
NULL,
|
NULL,
|
||||||
},
|
},
|
||||||
|
(const char*[]){
|
||||||
|
"Save general preferences",
|
||||||
NULL,
|
NULL,
|
||||||
|
},
|
||||||
(const char*[]){
|
(const char*[]){
|
||||||
"Quit Frodo",
|
"Quit Frodo",
|
||||||
NULL,
|
NULL,
|
||||||
@ -244,13 +258,9 @@ const char **options_menu_help[14] = {
|
|||||||
NULL,
|
NULL,
|
||||||
(const char*[]){
|
(const char*[]){
|
||||||
"Select display settings.",
|
"Select display settings.",
|
||||||
"Fullscreen attemts to run",
|
"Fullscreen runs in",
|
||||||
"in fullscreen mode, while.",
|
"double size mode, while",
|
||||||
"windowed uses a window.",
|
"window in streched mode.",
|
||||||
"Activated on next restart.",
|
|
||||||
" ",
|
|
||||||
"On the Wii, fullscreen is",
|
|
||||||
"always used",
|
|
||||||
NULL,
|
NULL,
|
||||||
},
|
},
|
||||||
NULL,
|
NULL,
|
||||||
@ -262,7 +272,10 @@ const char **options_menu_help[14] = {
|
|||||||
NULL,
|
NULL,
|
||||||
},
|
},
|
||||||
NULL,
|
NULL,
|
||||||
|
(const char*[]){
|
||||||
|
"Reset the c64.",
|
||||||
NULL,
|
NULL,
|
||||||
|
},
|
||||||
NULL,
|
NULL,
|
||||||
(const char*[]){
|
(const char*[]){
|
||||||
"Setup theme for the Frodo",
|
"Setup theme for the Frodo",
|
||||||
@ -320,6 +333,7 @@ const char **network_menu_help[9] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const char *game_info_menu_messages[11] = {
|
const char *game_info_menu_messages[11] = {
|
||||||
/*00*/ "Capture game screenshot",
|
/*00*/ "Capture game screenshot",
|
||||||
/*01*/ " ",
|
/*01*/ " ",
|
||||||
@ -334,6 +348,8 @@ const char *game_info_menu_messages[11] = {
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const char *genre_dlg[8] = {
|
const char *genre_dlg[8] = {
|
||||||
/*00*/ "Action",
|
/*00*/ "Action",
|
||||||
/*01*/ "Adventure",
|
/*01*/ "Adventure",
|
||||||
|
@ -26,5 +26,6 @@ extern const char *game_info_bad_number_dlg[];
|
|||||||
extern const char *genre_dlg[];
|
extern const char *genre_dlg[];
|
||||||
extern const char *players_dlg[];
|
extern const char *players_dlg[];
|
||||||
extern const char *save_state_done[];
|
extern const char *save_state_done[];
|
||||||
|
extern const char *save_prefs_done[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#define NETWORK_USER_MENU_HH
|
#define NETWORK_USER_MENU_HH
|
||||||
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
#include <Network.h>
|
#include "../Network.h"
|
||||||
|
|
||||||
class GuiView;
|
class GuiView;
|
||||||
class NetworkUserMenu;
|
class NetworkUserMenu;
|
||||||
|
@ -77,15 +77,16 @@ public:
|
|||||||
|
|
||||||
if (this->loadSnapshot)
|
if (this->loadSnapshot)
|
||||||
{
|
{
|
||||||
int display_type = Gui::gui->np->DisplayType;
|
//int display_type = Gui::gui->np->DisplayType;
|
||||||
|
|
||||||
|
TheC64->Reset();
|
||||||
TheC64->LoadSnapshot(new_path);
|
TheC64->LoadSnapshot(new_path);
|
||||||
|
|
||||||
this->updateGameInfo(fileName);
|
this->updateGameInfo(fileName);
|
||||||
Gui::gui->updateGameInfo(Gui::gui->sgv->gameInfo->gi);
|
Gui::gui->updateGameInfo(Gui::gui->sgv->gameInfo->gi);
|
||||||
Gui::gui->np->Load(prefs_path);
|
Gui::gui->np->Load(prefs_path);
|
||||||
/* Don't change display type */
|
/* Don't change display type */
|
||||||
Gui::gui->np->DisplayType = display_type;
|
//Gui::gui->np->DisplayType = display_type;
|
||||||
} else
|
} else
|
||||||
unlink(new_path);
|
unlink(new_path);
|
||||||
free(prefs_path);
|
free(prefs_path);
|
||||||
@ -162,6 +163,7 @@ void SaveGameView::saveSnapshot()
|
|||||||
char *prefs_name;
|
char *prefs_name;
|
||||||
char *save;
|
char *save;
|
||||||
|
|
||||||
|
/*
|
||||||
if (strlen(Gui::gui->np->DrivePath[0]) != 0)
|
if (strlen(Gui::gui->np->DrivePath[0]) != 0)
|
||||||
name = Gui::gui->np->DrivePath[0];
|
name = Gui::gui->np->DrivePath[0];
|
||||||
out_name = strrchr(name, '/');
|
out_name = strrchr(name, '/');
|
||||||
@ -169,6 +171,12 @@ void SaveGameView::saveSnapshot()
|
|||||||
out_name = name;
|
out_name = name;
|
||||||
else
|
else
|
||||||
out_name++;
|
out_name++;
|
||||||
|
*/
|
||||||
|
//take the filename from gameinfo instead from drivepath
|
||||||
|
out_name = Gui::gui->cur_gameInfo->filename;
|
||||||
|
if (!out_name)
|
||||||
|
out_name = name;
|
||||||
|
|
||||||
save = (char*)xmalloc( strlen(Gui::gui->save_game_path) + strlen(out_name) + 6 );
|
save = (char*)xmalloc( strlen(Gui::gui->save_game_path) + strlen(out_name) + 6 );
|
||||||
prefs_name = (char*)xmalloc( strlen(Gui::gui->save_game_path) + strlen(out_name) + 12 );
|
prefs_name = (char*)xmalloc( strlen(Gui::gui->save_game_path) + strlen(out_name) + 12 );
|
||||||
|
|
||||||
@ -182,9 +190,12 @@ void SaveGameView::saveSnapshot()
|
|||||||
if (!was_paused)
|
if (!was_paused)
|
||||||
TheC64->Resume();
|
TheC64->Resume();
|
||||||
|
|
||||||
|
//Take the screenshot from the one saved when the gui was activacted
|
||||||
Gui::gui->cur_gameInfo->setScreenshot(sdl_surface_8bit_copy(Gui::gui->screenshot));
|
Gui::gui->cur_gameInfo->setScreenshot(sdl_surface_8bit_copy(Gui::gui->screenshot));
|
||||||
Gui::gui->saveGameInfo(Gui::gui->save_game_path, out_name);
|
Gui::gui->saveGameInfo(Gui::gui->save_game_path, out_name);
|
||||||
ThePrefs.Save(prefs_name);
|
|
||||||
|
ThePrefs = *Gui::gui->np;
|
||||||
|
ThePrefs.Save_game(prefs_name);
|
||||||
|
|
||||||
Gui::gui->pushDialogueBox(new DialogueBox(save_state_done));
|
Gui::gui->pushDialogueBox(new DialogueBox(save_state_done));
|
||||||
|
|
||||||
|
25
Src/main.cpp
25
Src/main.cpp
@ -30,6 +30,7 @@
|
|||||||
#include "gui/gui.hh"
|
#include "gui/gui.hh"
|
||||||
#include "data_store.hh"
|
#include "data_store.hh"
|
||||||
#include "utils.hh"
|
#include "utils.hh"
|
||||||
|
#include <fat.h>
|
||||||
|
|
||||||
#if defined(GEKKO)
|
#if defined(GEKKO)
|
||||||
#include "fat.h"
|
#include "fat.h"
|
||||||
@ -109,6 +110,7 @@ void Frodo::load_rom_files()
|
|||||||
|
|
||||||
extern "C" int main(int argc, char **argv)
|
extern "C" int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
DIR_ITER *dir_tmp;
|
||||||
timeval tv;
|
timeval tv;
|
||||||
gettimeofday(&tv, NULL);
|
gettimeofday(&tv, NULL);
|
||||||
srand(tv.tv_usec);
|
srand(tv.tv_usec);
|
||||||
@ -126,11 +128,34 @@ extern "C" int main(int argc, char **argv)
|
|||||||
|
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
|
#ifdef WII_PORT
|
||||||
|
|
||||||
|
printf("\x1b[2;0H");
|
||||||
|
|
||||||
|
//initialize libfat library
|
||||||
|
if (!fatInitDefault())
|
||||||
|
{
|
||||||
|
printf("Couldn't initialize fat subsytem\n");
|
||||||
|
sleep(3);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
//create tmp directory if it does not exist
|
||||||
|
dir_tmp = diropen("/frodo/tmp");
|
||||||
|
if (!dir_tmp) {mkdir("/frodo/tmp",0777);printf("Making tmp directory\n");sleep(3);} else dirclose(dir_tmp);
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
Frodo *the_app = new Frodo();
|
Frodo *the_app = new Frodo();
|
||||||
the_app->ArgvReceived(argc, argv);
|
the_app->ArgvReceived(argc, argv);
|
||||||
the_app->ReadyToRun();
|
the_app->ReadyToRun();
|
||||||
delete the_app;
|
delete the_app;
|
||||||
|
|
||||||
|
#ifdef WII_PORT
|
||||||
|
fatUnmount(0);
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 6.3 KiB |
Loading…
Reference in New Issue
Block a user