- Update instruction file again, I'd say it is no longer a WIP now.

- Add "debug" target. It is still somewhat shaky, you need to "make clean" before "make debug", and it does not do much besides writing a few debug lines during the boot sequence.
- Add a hard coded version number which is no longer a part of the strings file (and does not need to be translated).
- Using a Cyclops iEvolution no longer triggers Slot 2 mode.
- Fix doing multiple things in FTP mode without having to restart.
This commit is contained in:
msiewert76 2011-06-11 16:29:15 +00:00
parent e4689484e2
commit 8bd9035394
17 changed files with 364 additions and 77 deletions

View File

@ -37,7 +37,14 @@ Version 0.2.4 (4-10-2011)
- Program now makes use of lower screen for most messages, which allows longer, more detailled messages.
- Adds a Readme file/Manual to the program.
Version 0.2.5 (5-??-2011)
Version 0.3 (6-10-2011)
This is the first non-beta release.
- Adds the ability to translate most parts of the user interface.
- Adds Slot 2 backup mode (you will need a Slot 2 flash card; anything that has a DLDI driver should be supported).
- Enables FTP restore mode for saves bigger than the memory buffer (usually 2 MB).
- Fixes FTP mode so that multiple transactions are possible without restarting.
- Various stability fixes.
- Many behind-the scenes improvements aimed to simplify further hacking.
- Instruction file is no longer beta.

View File

@ -18,6 +18,8 @@ export TOPDIR := $(CURDIR)
#---------------------------------------------------------------------------------
all: $(TARGET).nds
debug: $(TARGET)-debug.nds
#---------------------------------------------------------------------------------
$(TARGET).nds : arm7/$(TARGET).elf arm9/$(TARGET).elf
ndstool -c $(TARGET).nds -7 arm7/$(TARGET).elf -9 arm9/$(TARGET).elf
@ -30,8 +32,21 @@ arm7/$(TARGET).elf:
arm9/$(TARGET).elf:
$(MAKE) -C arm9
#---------------------------------------------------------------------------------
$(TARGET)-debug.nds : arm7/$(TARGET)-debug.elf arm9/$(TARGET)-debug.elf
ndstool -c $(TARGET)-debug.nds -7 arm7/$(TARGET)-debug.elf -9 arm9/$(TARGET)-debug.elf
#---------------------------------------------------------------------------------
arm7/$(TARGET)-debug.elf:
$(MAKE) -C arm7 -f Makefile.debug
#---------------------------------------------------------------------------------
arm9/$(TARGET)-debug.elf:
$(MAKE) -C arm9 -f Makefile.debug
#---------------------------------------------------------------------------------
clean:
$(MAKE) -C arm9 clean
$(MAKE) -C arm7 clean
rm -f $(TARGET).nds $(TARGET).arm7 $(TARGET).arm9
rm -f $(TARGET)-debug.nds $(TARGET)-debug.arm7 $(TARGET)-debug.arm9

133
arm7/Makefile.debug Normal file
View File

@ -0,0 +1,133 @@
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITARM)),)
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
endif
include $(DEVKITARM)/ds_rules
#---------------------------------------------------------------------------------
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing extra header files
# DATA is a list of directories containing binary files
# all directories are relative to this makefile
#---------------------------------------------------------------------------------
BUILD := build
SOURCES := source
INCLUDES := include build
DATA :=
#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
ARCH := -mthumb-interwork
CFLAGS := -g -Wall -O2\
-mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer\
-ffast-math \
$(ARCH)
CFLAGS += $(INCLUDE) -DARM7 -DDEBUG
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -fno-rtti
ASFLAGS := -g $(ARCH)
LDFLAGS = -specs=ds_arm7.specs -g $(ARCH) -Wl,-Map,$(notdir $*).map
LIBS := -ldswifi7 -lmm7 -lnds7
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS := $(LIBNDS)
#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------
export ARM7ELF := $(CURDIR)/$(TARGET)-debug.elf
export DEPSDIR := $(CURDIR)/$(BUILD)
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
export OFILES := $(addsuffix .o,$(BINFILES)) \
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
-I$(CURDIR)/$(BUILD)
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
#---------------------------------------------------------------------------------
export LD := $(CC)
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
export LD := $(CXX)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------
.PHONY: $(BUILD) debug clean
#---------------------------------------------------------------------------------
$(BUILD):
@[ -d $@ ] || mkdir -p $@
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile.debug
#---------------------------------------------------------------------------------
debug: $(BUILD)
#---------------------------------------------------------------------------------
clean:
@echo clean ...
@rm -fr $(BUILD) *.elf
#---------------------------------------------------------------------------------
else
DEPENDS := $(OFILES:.o=.d)
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(ARM7ELF) : $(OFILES)
@echo linking $(notdir $@)
@$(LD) $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@
#---------------------------------------------------------------------------------
$(ARM7ELF-D) : $(OFILES)
@echo linking $(notdir $@)
@$(LD) $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@
#---------------------------------------------------------------------------------
# you need a rule like this for each extension you use as binary data
#---------------------------------------------------------------------------------
%.bin.o : %.bin
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)
-include $(DEPENDS)
#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------

127
arm9/Makefile.debug Normal file
View File

@ -0,0 +1,127 @@
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITARM)),)
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
endif
include $(DEVKITARM)/ds_rules
#---------------------------------------------------------------------------------
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing extra header files
# DATA is a list of directories containing binary files
# all directories are relative to this makefile
#---------------------------------------------------------------------------------
BUILD := build
SOURCES := source
INCLUDES := include
DATA :=
#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
ARCH := -mthumb -mthumb-interwork
CFLAGS := -g -Wall -O2\
-march=armv5te -mtune=arm946e-s -fomit-frame-pointer\
-ffast-math \
$(ARCH)
CFLAGS += $(INCLUDE) -DARM9 -DDEBUG
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
ASFLAGS := -g $(ARCH) -march=armv5te -mtune=arm946e-s
LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
LIBS := -lfat -ldswifi9 -lnds9
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS := $(LIBNDS)
#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------
export ARM9ELF := $(CURDIR)/$(TARGET)-debug.elf
export DEPSDIR := $(CURDIR)/$(BUILD)
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
#---------------------------------------------------------------------------------
export LD := $(CC)
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
export LD := $(CXX)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------
export OFILES := $(addsuffix .o,$(BINFILES)) \
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
-I$(CURDIR)/$(BUILD)
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
.PHONY: $(BUILD) debug clean
#---------------------------------------------------------------------------------
$(BUILD):
@[ -d $@ ] || mkdir -p $@
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile.debug
#---------------------------------------------------------------------------------
clean:
@echo clean ...
@rm -fr $(BUILD) *.elf *.nds* *.bin
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(ARM9ELF) : $(OFILES)
@echo linking $(notdir $@)
@$(LD) $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@
#---------------------------------------------------------------------------------
# you need a rule like this for each extension you use as binary data
#---------------------------------------------------------------------------------
%.bin.o : %.bin
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)
-include $(DEPSDIR)/*.d
#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------

View File

@ -57,13 +57,13 @@ void displayInit()
void displayTitle()
{
displayMessageF(STR_TITLE_MSG);
displayMessageF(STR_TITLE_MSG, VERSION_MAJOR, VERSION_MINOR, VERSION_MICRO);
displayStateF(STR_STR, "Press (B) to continue");
while (!(keysCurrent() & KEY_B));
}
void displayPrintUpper()
void displayPrintUpper(bool fc)
{
bool gba = (mode == 1);
u32 dstype = (mode == 3) ? 1 : 0;
@ -97,8 +97,13 @@ void displayPrintUpper()
// fetch cartridge header (maybe, calling "cardReadHeader" on a FC messes with libfat!)
sNDSHeader nds;
if (slot_1_type != AUXSPI_FLASH_CARD)
// The CycloDS iEvolution detects asd a game, probably to cheat Nintendos firmware.
// I might be able to fix this, to add autodetection, but I have decided against this,
// since the same method would also offer Nintendo a way to lock out this card!
if (!fc && (slot_1_type != AUXSPI_FLASH_CARD))
cardReadHeader((uint8*)&nds);
else
slot_1_type = AUXSPI_FLASH_CARD;
char name[MAXPATHLEN];
// 0) print the mode

View File

@ -25,7 +25,8 @@
#ifndef SAVE_DISPLAY_H
#define SAVE_DISPLAY_H
#include <nds.h>
#include <nds/arm9/console.h>
#include <stdarg.h>
@ -37,7 +38,9 @@ extern PrintConsole lowerScreen;
void displayInit();
void displayTitle();
void displayPrintUpper();
// Set "first" to true to tell the program that it has just booted, before anything was swapped.
// This is a workaround for the Cyclops iEvolution, and an attempt to prevent
void displayPrintUpper(bool fc = false);
void displayPrintLower();
void displayMessageF(int id, ...);

View File

@ -74,7 +74,7 @@
#define FTPLIB_DEFMODE FTPLIB_PASSIVE
#endif
#include "display.h"
//#include "display.h"
//#define perror iprintf
#define perror //
@ -424,7 +424,7 @@ GLOBALDEF int FtpConnect(const char *host, netbuf **nControl)
sin.sin_port = pse->s_port;
}
*/
u32 v[5];
int v[5];
sscanf(host,"%u.%u.%u.%u:%u",&v[1],&v[2],&v[3],&v[4],&v[0]);
sin.sin_port = htons(v[0]);
sin.sin_addr.s_addr = (v[1] << 0) + (v[2] << 8) + (v[3] << 16) + (v[4] << 24);

View File

@ -34,6 +34,7 @@ char ftp_ip[16] = "ftp_ip";
char ftp_user[64] = "ftp_user";
char ftp_pass[64] = "ftp_pass";
int ftp_port = 0;
bool ftp_active = false;
int ir_delay = 1200;

View File

@ -29,6 +29,10 @@
#include <nds.h>
#include "auxspi.h"
#define VERSION_MAJOR 0
#define VERSION_MINOR 3
#define VERSION_MICRO 0
extern u8 *data;
extern u32 size_buf;
@ -38,6 +42,7 @@ extern char ftp_ip[16];
extern char ftp_user[64];
extern char ftp_pass[64];
extern int ftp_port;
extern bool ftp_active;
extern int ir_delay;

View File

@ -119,7 +119,8 @@ bool hwDetectSlot2DLDI()
// CycloDS (Slot 2)
if (!strnicmp(io_dldi_data->friendlyName, "CycloDS", 7)
&& strnicmp(io_dldi_data->friendlyName, "CycloDS Evolution", 17))
&& strnicmp(io_dldi_data->friendlyName, "CycloDS Evolution", 17)
&& strnicmp(io_dldi_data->friendlyName, "CycloDS iEvolution", 18))
return true;
// Ewin2
@ -219,8 +220,11 @@ u32 hwDetect()
// it does not support hotswapping the game. So we select this mode if there is *no*
// flash card inserted in Slot 1.
//
if (slot_1_type != 2)
// FIXME: This is currently broken due to the way the iEvolution works.
/*
if (slot_1_type != AUXSPI_FLASH_CARD)
return 5;
*/
// Nothing unique found, so enter WiFi mode
return 0;
@ -608,11 +612,43 @@ void hwRestoreSlot2()
}
// ------------------------------------------------------------
void hwLoginFTP(netbuf **buf)
{
int j;
static int jmax = 10;
displayMessage2F(STR_HW_FTP_SEEK_AP);
if (!Wifi_InitDefault(true)) {
displayWarning2F(STR_HW_FTP_ERR_AP);
while(1);
}
displayMessage2F(STR_HW_FTP_SEEK_FTP);
sprintf(txt, "%s:%i", ftp_ip, ftp_port);
j = 0;
while (!FtpConnect(txt, buf)) {
j++;
if (j >= jmax) {
displayWarning2F(STR_HW_FTP_ERR_FTP);
while(1);
}
swiDelay(10000);
}
displayMessage2F(STR_HW_FTP_LOGIN);
j = 0;
while (!FtpLogin(ftp_user, ftp_pass, *buf)) {
j++;
if (j >= jmax) {
displayWarning2F(STR_HW_FTP_ERR_LOGIN);
while(1);
}
swiDelay(10000);
}
ftp_active = true;
}
void hwBackupFTP(bool dlp)
{
netbuf *buf, *ndata;
int j;
static int jmax = 10;
// Dump save and write it to FTP server
// First: swap card
@ -628,32 +664,8 @@ void hwBackupFTP(bool dlp)
size_blocks = 1 << (uint8(size) - 15);
// Second: connect to FTP server
displayMessage2F(STR_HW_FTP_SEEK_AP);
if (!Wifi_InitDefault(true)) {
displayWarning2F(STR_HW_FTP_ERR_AP);
while(1);
}
displayMessage2F(STR_HW_FTP_SEEK_FTP);
sprintf(txt, "%s:%i", ftp_ip, ftp_port);
j = 0;
while (!FtpConnect(txt, &buf)) {
j++;
if (j >= jmax) {
displayWarning2F(STR_HW_FTP_ERR_FTP);
while(1);
}
swiDelay(10000);
}
displayMessage2F(STR_HW_FTP_LOGIN);
j = 0;
while (!FtpLogin(ftp_user, ftp_pass, buf)) {
j++;
if (j >= jmax) {
displayWarning2F(STR_HW_FTP_ERR_LOGIN);
while(1);
}
swiDelay(10000);
}
if (!ftp_active)
hwLoginFTP(&buf);
char fdir[256] = "";
char fname[256] ="";
@ -785,38 +797,11 @@ bool hwRestoreFTPPartial(u32 ofs, u32 size, u32 type, netbuf *ndata)
void hwRestoreFTP(bool dlp)
{
netbuf *buf, *ndata;
int j;
static int jmax = 10;
// Dump save and write it to FTP server
// First: connect to FTP server
displayMessage2F(STR_HW_FTP_SEEK_AP);
if (!Wifi_InitDefault(true)) {
displayWarning2F(STR_HW_FTP_ERR_AP);
while(1);
}
displayMessage2F(STR_HW_FTP_SEEK_FTP);
char fullname[512];
sprintf(fullname, "%s:%i", ftp_ip, ftp_port);
j = 0;
while (!FtpConnect(fullname, &buf)) {
j++;
if (j >= jmax) {
displayWarning2F(STR_HW_FTP_ERR_FTP);
while(1);
}
swiDelay(10000);
}
displayMessage2F(STR_HW_FTP_LOGIN);
j = 0;
while (!FtpLogin(ftp_user, ftp_pass, buf)) {
j++;
if (j >= jmax) {
displayWarning2F(STR_HW_FTP_ERR_LOGIN);
while(1);
}
swiDelay(10000);
}
if (ftp_active)
hwLoginFTP(&buf);
// Second: select a filename
char fdir[256] = "";

View File

@ -64,7 +64,7 @@ void mode_dsi()
// use 3in1 to buffer data
displayStateF(STR_EMPTY);
displayPrintUpper();
displayPrintUpper(true);
displayPrintLower();
// DSi mode, does nothing at the moment
@ -99,7 +99,7 @@ void mode_slot2()
{
// use slot2 DLDI device to store data
displayStateF(STR_EMPTY);
displayPrintUpper();
displayPrintUpper(true);
displayPrintLower();
touchPosition touchXY;
@ -131,7 +131,7 @@ void mode_slot2()
void mode_3in1()
{
displayPrintUpper();
displayPrintUpper(true);
dsCardData data2;
uint32 ime = hwGrab3in1();
@ -185,7 +185,7 @@ void mode_gba()
// use 3in1 to buffer data
displayStateF(STR_EMPTY);
gbatype = gbaGetSaveType();
displayPrintUpper();
displayPrintUpper(true);
displayPrintLower();
touchPosition touchXY;
@ -217,7 +217,7 @@ void mode_wifi()
{
// use 3in1 to buffer data
displayStateF(STR_EMPTY);
displayPrintUpper();
displayPrintUpper(true);
displayPrintLower();
touchPosition touchXY;
@ -410,7 +410,9 @@ int main(int argc, char* argv[])
iprintf("DLDI error");
while (1);
}
#ifdef DEBUG
iprintf("Found DLDI: %s\n", io_dldi_data->friendlyName);
#endif
// detect hardware
mode = hwDetect();
@ -420,12 +422,16 @@ int main(int argc, char* argv[])
extra_id[i] = 0xff000000;
extra_size[i] = 0;
}
#ifdef DEBUG
iprintf("Loading INI file\n");
#endif
if (has_argv(argc, argv))
loadIniFile(argv[0]);
else
loadIniFile(0);
#ifdef DEBUG
iprintf("Done!\n");
#endif
if (slot2 > 0)
mode = 4;

View File

@ -62,7 +62,7 @@ bool stringsLoadFile(const char *fname)
ADD_STRING(STR_STR, "%s");
//
ADD_STRING(STR_MM_WIPE,"\n WIPES OUT ALL SAVE DATA\n ON YOUR GAME !");
ADD_STRING(STR_TITLE_MSG,"DS savegame manager\nVersion 0.2.5 semi-stable\nBy Pokedoc");
ADD_STRING(STR_TITLE_MSG,"DS savegame manager\nVersion 0.3.0\nBy Pokedoc");
ADD_STRING(STR_BOOT_NO_INI,"Unable to open ini file!\nPlease make sure that it is\n1. in this apps folder, or"
"\n2. in the root folder\nIf 1. does not work, use 2.");
ADD_STRING(STR_BOOT_MODE_UNSUPPORTED,"This mode is DISABLED.\nPlease restart the system.");

View File

@ -6,7 +6,7 @@
# The strings "0" and "1" should never be used; they are internal stuff for "empty" and "untranslated" strings.
# 2-5: These are boot-time messages.
2=DS savegame manager\nVersion 0.2.5 semi-stable\nBy Pokedoc
2=DS savegame manager\nVersion %i.%i.%i\nVon Pokedoc
# This is an error message appearing when the ini file can not be found.
3=Kann die ini-Datei nicht finden!\nBitte kopiere sie entweder\n1. in den selben Ordner wie die nds Datei, oder\n2. in das Hauptverzeichnis.\nWenn 1. nicht funktioniert, musst Du 2. verwenden
# Thsis is an error message called when the system tries to enter a mode that is not supported yet (e.g. DSi mode)

View File

@ -9,7 +9,7 @@
# 2-5: These are boot-time messages.
# You do not need to translate 2 and 3, they only appear *before* this file is read. Since the format is frozen, I leave these slots in.
#2=DS savegame manager\nVersion 0.2.5 semi-stable\nBy Pokedoc
#2=DS savegame manager\nVersion %i.%i.%i\nBy Pokedoc
# This is an error message appearing when the ini file can not be found.
#3=Unable to open ini file!\nPlease make sure that it is\n1. in this apps folder, or\n2. in the root folder\nIf 1. does not work, use 2.
# Thsis is an error message called when the system tries to enter a mode that is not supported yet (e.g. DSi mode)

Binary file not shown.

View File

@ -1 +1 @@
<Project name="Savegame Manager"><MagicFolder excludeFolders="CVS;.svn" filter="*" name="arm9" path="arm9\"><MagicFolder excludeFolders="CVS;.svn" filter="*" name="build" path="build\"><File path=".map"></File><File path="auxspi.d"></File><File path="auxspi.o"></File><File path="display.d"></File><File path="display.o"></File><File path="dsCard.d"></File><File path="dsCard.o"></File><File path="dsi.d"></File><File path="dsi.o"></File><File path="fileselect.d"></File><File path="fileselect.o"></File><File path="ftplib.d"></File><File path="ftplib.o"></File><File path="gba.d"></File><File path="gba.o"></File><File path="globals.d"></File><File path="globals.o"></File><File path="hardware.d"></File><File path="hardware.o"></File><File path="ini.d"></File><File path="ini.o"></File><File path="main.d"></File><File path="main.o"></File><File path="strings.d"></File><File path="strings.o"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*" name="source" path="source\"><File path="auxspi.cpp"></File><File path="auxspi.h"></File><File path="auxspi_core.inc"></File><File path="display.cpp"></File><File path="display.h"></File><File path="dsCard.cpp"></File><File path="dsCard.h"></File><File path="dsi.cpp"></File><File path="dsi.h"></File><File path="fileselect.cpp"></File><File path="fileselect.h"></File><File path="ftplib.c"></File><File path="ftplib.h"></File><File path="gba.cpp"></File><File path="gba.h"></File><File path="globals.cpp"></File><File path="globals.h"></File><File path="hardware.cpp"></File><File path="hardware.h"></File><File path="headings.i"></File><File path="ini.cpp"></File><File path="ini.h"></File><File path="iniconfig.h"></File><File path="iniheadings.h"></File><File path="inikeys.h"></File><File path="inilist.h"></File><File path="keys.i"></File><File path="libini.h"></File><File path="list.i"></File><File path="main.cpp"></File><File path="strings.cpp"></File><File path="strings.h"></File><File path="types.i"></File></MagicFolder><File path="Makefile"></File><File path="savegame_manager.elf"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*" name="arm7" path="arm7\"><MagicFolder excludeFolders="CVS;.svn" filter="*" name="build" path="build\"><File path=".map"></File><File path="arm7.d"></File><File path="arm7.o"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*" name="source" path="source\"><File path="arm7.c"></File></MagicFolder><File path="Makefile"></File><File path="savegame_manager.elf"></File></MagicFolder><File path="Makefile"></File></Project>
<Project name="Savegame Manager"><MagicFolder excludeFolders="CVS;.svn" filter="*" name="arm9" path="arm9\"><MagicFolder excludeFolders="CVS;.svn" filter="*" name="debug" path="debug\"></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*" name="source" path="source\"><File path="auxspi.cpp"></File><File path="auxspi.h"></File><File path="auxspi_core.inc"></File><File path="display.cpp"></File><File path="display.h"></File><File path="dsCard.cpp"></File><File path="dsCard.h"></File><File path="dsi.cpp"></File><File path="dsi.h"></File><File path="fileselect.cpp"></File><File path="fileselect.h"></File><File path="ftplib.c"></File><File path="ftplib.h"></File><File path="gba.cpp"></File><File path="gba.h"></File><File path="globals.cpp"></File><File path="globals.h"></File><File path="hardware.cpp"></File><File path="hardware.h"></File><File path="headings.i"></File><File path="ini.cpp"></File><File path="ini.h"></File><File path="iniconfig.h"></File><File path="iniheadings.h"></File><File path="inikeys.h"></File><File path="inilist.h"></File><File path="keys.i"></File><File path="libini.h"></File><File path="list.i"></File><File path="main.cpp"></File><File path="strings.cpp"></File><File path="strings.h"></File><File path="types.i"></File></MagicFolder><File path=".elf"></File><File path="Makefile"></File><File path="Makefile.debug"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*" name="arm7" path="arm7\"><MagicFolder excludeFolders="CVS;.svn" filter="*" name="build" path="build\"><File path=".map"></File><File path="arm7.d"></File><File path="arm7.o"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*" name="debug" path="debug\"></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*" name="source" path="source\"><File path="arm7.c"></File></MagicFolder><File path="Makefile"></File><File path="Makefile.debug"></File><File path="savegame-manager.elf"></File></MagicFolder><File path="Makefile"></File></Project>

View File

@ -1 +1 @@
<pd><ViewState><e p="Savegame Manager\arm7" x="false"></e><e p="Savegame Manager\arm9" x="true"></e><e p="Savegame Manager" x="true"></e><e p="Savegame Manager\arm9\build" x="false"></e><e p="Savegame Manager\arm9\source" x="true"></e></ViewState></pd>
<pd><ViewState><e p="Savegame Manager" x="true"></e><e p="Savegame Manager\arm7" x="false"></e><e p="Savegame Manager\arm9" x="true"></e><e p="Savegame Manager\arm9\source" x="true"></e></ViewState></pd>