mirror of
https://github.com/retro100/dosbox-wii.git
synced 2024-12-24 17:41:51 +01:00
dol loading directory now checked for conf file, and mounted as C (if NOT apps/dosbox-wii/). update readme
This commit is contained in:
parent
17f70bcecb
commit
70c08ab644
@ -19,7 +19,8 @@ TARGET := dosbox_gc
|
|||||||
TARGETDIR := executables
|
TARGETDIR := executables
|
||||||
BUILD := build_gc
|
BUILD := build_gc
|
||||||
SOURCES := src src/cpu src/debug src/dos src/fpu src/gui \
|
SOURCES := src src/cpu src/debug src/dos src/fpu src/gui \
|
||||||
src/hardware src/hardware/serialport src/ints src/libs src/misc src/platform/wii src/shell
|
src/hardware src/hardware/serialport src/ints src/libs \
|
||||||
|
src/misc src/platform/wii src/shell
|
||||||
INCLUDES := include src/platform/wii
|
INCLUDES := include src/platform/wii
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
@ -19,7 +19,8 @@ TARGET := dosbox_wii
|
|||||||
TARGETDIR := executables
|
TARGETDIR := executables
|
||||||
BUILD := build_wii
|
BUILD := build_wii
|
||||||
SOURCES := src src/cpu src/debug src/dos src/fpu src/gui \
|
SOURCES := src src/cpu src/debug src/dos src/fpu src/gui \
|
||||||
src/hardware src/hardware/serialport src/ints src/libs src/misc src/platform/wii src/shell
|
src/hardware src/hardware/serialport src/ints src/libs \
|
||||||
|
src/misc src/platform/wii src/shell
|
||||||
INCLUDES := include src/platform/wii
|
INCLUDES := include src/platform/wii
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
@ -35,7 +36,7 @@ LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--cref
|
|||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# any extra libraries we wish to link with
|
# any extra libraries we wish to link with
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
LIBS := -lSDL -lfat -lwiiuse -lbte -logc
|
LIBS := -lSDL -lfat -lwiiuse -lbte -logc -lwiikeyboard
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# list of directories containing libraries, this must be the top level containing
|
# list of directories containing libraries, this must be the top level containing
|
||||||
|
14
README
14
README
@ -1,4 +1,5 @@
|
|||||||
DOSBox v0.72.01 (Wii port)
|
DOSBox v0.72.01 (Wii port)
|
||||||
|
http://code.google.com/p/dosbox-wii/
|
||||||
|
|
||||||
====
|
====
|
||||||
WII:
|
WII:
|
||||||
@ -20,15 +21,16 @@ Gamecube Controller can also be used as a joystick.
|
|||||||
HOME will exit back to the homebrew channel, as will the RESET
|
HOME will exit back to the homebrew channel, as will the RESET
|
||||||
button on the console.
|
button on the console.
|
||||||
|
|
||||||
The C: drive will automatically be mounted to sd:/DOSBox/
|
The C: drive will automatically be mounted to sd:/DOSBox/ if loaded
|
||||||
|
from apps/dosbox-wii/. Otherwise, the directory the dol is loaded
|
||||||
|
from will be mounted as C, and sd:/DOSBox as D (if present).
|
||||||
The Z: driver is a virtual drive that is part of DOSBox.
|
The Z: driver is a virtual drive that is part of DOSBox.
|
||||||
Other drives can be mounted using the MOUNT command.
|
Other drives can be mounted using the MOUNT command.
|
||||||
sd: means the SD card, usb: means a USB drive,
|
Prefix sd: for an SD card, and usb: for a USB drive.
|
||||||
carda: and cardb: mean the Gamecube memory cards.
|
The Wii's DVD drive and network folders can't be mounted at this time.
|
||||||
The Wii's DVD drive, and shared folders on the network, can't be
|
|
||||||
mounted yet in this version.
|
|
||||||
|
|
||||||
The configuration is loaded from sd:/DOSBox/dosbox.conf
|
The configuration is loaded from the directory the dol is located in
|
||||||
|
(if present) and sd:/DOSBox/dosbox.conf otherwise
|
||||||
This file will be created automatically after you start DOSBox.
|
This file will be created automatically after you start DOSBox.
|
||||||
Please edit it with a text editor to choose settings appropriate
|
Please edit it with a text editor to choose settings appropriate
|
||||||
for each game.
|
for each game.
|
||||||
|
@ -52,7 +52,7 @@ void MSCDEX_SetCDInterface(int intNr, int forceCD);
|
|||||||
|
|
||||||
// Mounts a folder as a harddrive before starting the shell
|
// Mounts a folder as a harddrive before starting the shell
|
||||||
// Designed for the Wii
|
// Designed for the Wii
|
||||||
void MountDOSBoxDir(char DriveLetter, const char *path) {
|
int MountDOSBoxDir(char DriveLetter, const char *path) {
|
||||||
DOS_Drive * newdrive;
|
DOS_Drive * newdrive;
|
||||||
Bit16u sizes[4];
|
Bit16u sizes[4];
|
||||||
Bit8u mediaid;
|
Bit8u mediaid;
|
||||||
@ -74,7 +74,7 @@ void MountDOSBoxDir(char DriveLetter, const char *path) {
|
|||||||
}
|
}
|
||||||
number[index]=0;
|
number[index]=0;
|
||||||
sizes[count++]=atoi(number);
|
sizes[count++]=atoi(number);
|
||||||
|
|
||||||
// get the drive letter
|
// get the drive letter
|
||||||
char drive=toupper(DriveLetter);
|
char drive=toupper(DriveLetter);
|
||||||
std::string temp_line = path;
|
std::string temp_line = path;
|
||||||
@ -88,12 +88,12 @@ void MountDOSBoxDir(char DriveLetter, const char *path) {
|
|||||||
}
|
}
|
||||||
if(failed) {
|
if(failed) {
|
||||||
printf(MSG_Get("PROGRAM_MOUNT_ERROR_1"),temp_line.c_str());
|
printf(MSG_Get("PROGRAM_MOUNT_ERROR_1"),temp_line.c_str());
|
||||||
return;
|
return 0;
|
||||||
}
|
}
|
||||||
/* Not a switch so a normal directory/file */
|
/* Not a switch so a normal directory/file */
|
||||||
if (!(test.st_mode & S_IFDIR)) {
|
if (!(test.st_mode & S_IFDIR)) {
|
||||||
printf(MSG_Get("PROGRAM_MOUNT_ERROR_2"),temp_line.c_str());
|
printf(MSG_Get("PROGRAM_MOUNT_ERROR_2"),temp_line.c_str());
|
||||||
return;
|
return 0;
|
||||||
}
|
}
|
||||||
if (temp_line[temp_line.size()-1]!=CROSS_FILESPLIT) temp_line+=CROSS_FILESPLIT;
|
if (temp_line[temp_line.size()-1]!=CROSS_FILESPLIT) temp_line+=CROSS_FILESPLIT;
|
||||||
Bit8u bit8size=(Bit8u) sizes[1];
|
Bit8u bit8size=(Bit8u) sizes[1];
|
||||||
@ -101,9 +101,11 @@ void MountDOSBoxDir(char DriveLetter, const char *path) {
|
|||||||
if (Drives[drive-'A']) {
|
if (Drives[drive-'A']) {
|
||||||
printf(MSG_Get("PROGRAM_MOUNT_ALREADY_MOUNTED"),drive,Drives[drive-'A']->GetInfo());
|
printf(MSG_Get("PROGRAM_MOUNT_ALREADY_MOUNTED"),drive,Drives[drive-'A']->GetInfo());
|
||||||
if (newdrive) delete newdrive;
|
if (newdrive) delete newdrive;
|
||||||
return;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!newdrive) E_Exit("DOS:Can't create drive");
|
if (!newdrive)
|
||||||
|
return 0;
|
||||||
|
|
||||||
Drives[drive-'A']=newdrive;
|
Drives[drive-'A']=newdrive;
|
||||||
/* Set the correct media byte in the table */
|
/* Set the correct media byte in the table */
|
||||||
mem_writeb(Real2Phys(dos.tables.mediaid)+(drive-'A')*2,newdrive->GetMediaByte());
|
mem_writeb(Real2Phys(dos.tables.mediaid)+(drive-'A')*2,newdrive->GetMediaByte());
|
||||||
@ -113,7 +115,7 @@ void MountDOSBoxDir(char DriveLetter, const char *path) {
|
|||||||
* This way every drive except cdroms should get a label.*/
|
* This way every drive except cdroms should get a label.*/
|
||||||
label = drive; label+="_DRIVE";
|
label = drive; label+="_DRIVE";
|
||||||
newdrive->dirCache.SetLabel(label.c_str(),false,true);
|
newdrive->dirCache.SetLabel(label.c_str(),false,true);
|
||||||
return;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -140,7 +142,7 @@ public:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* In secure mode don't allow people to change mount points.
|
/* In secure mode don't allow people to change mount points.
|
||||||
* Neither mount nor unmount */
|
* Neither mount nor unmount */
|
||||||
if(control->SecureMode()) {
|
if(control->SecureMode()) {
|
||||||
WriteOut(MSG_Get("PROGRAM_CONFIG_SECURE_DISALLOW"));
|
WriteOut(MSG_Get("PROGRAM_CONFIG_SECURE_DISALLOW"));
|
||||||
@ -155,7 +157,7 @@ public:
|
|||||||
switch (DriveManager::UnmountDrive(i_drive)) {
|
switch (DriveManager::UnmountDrive(i_drive)) {
|
||||||
case 0:
|
case 0:
|
||||||
Drives[i_drive] = 0;
|
Drives[i_drive] = 0;
|
||||||
if(i_drive == DOS_GetDefaultDrive())
|
if(i_drive == DOS_GetDefaultDrive())
|
||||||
DOS_SetDrive(toupper('Z') - 'A');
|
DOS_SetDrive(toupper('Z') - 'A');
|
||||||
WriteOut(MSG_Get("PROGRAM_MOUNT_UMOUNT_SUCCES"),umount[0]);
|
WriteOut(MSG_Get("PROGRAM_MOUNT_UMOUNT_SUCCES"),umount[0]);
|
||||||
break;
|
break;
|
||||||
@ -171,7 +173,7 @@ public:
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show list of cdroms
|
// Show list of cdroms
|
||||||
if (cmd->FindExist("-cd",false)) {
|
if (cmd->FindExist("-cd",false)) {
|
||||||
int num = SDL_CDNumDrives();
|
int num = SDL_CDNumDrives();
|
||||||
@ -216,7 +218,7 @@ public:
|
|||||||
}
|
}
|
||||||
str_size=teststr;
|
str_size=teststr;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd->FindString("-size",str_size,true);
|
cmd->FindString("-size",str_size,true);
|
||||||
char number[20];const char * scan=str_size.c_str();
|
char number[20];const char * scan=str_size.c_str();
|
||||||
Bitu index=0;Bitu count=0;
|
Bitu index=0;Bitu count=0;
|
||||||
@ -229,7 +231,7 @@ public:
|
|||||||
scan++;
|
scan++;
|
||||||
}
|
}
|
||||||
number[index]=0;sizes[count++]=atoi(number);
|
number[index]=0;sizes[count++]=atoi(number);
|
||||||
|
|
||||||
// get the drive letter
|
// get the drive letter
|
||||||
cmd->FindCommand(1,temp_line);
|
cmd->FindCommand(1,temp_line);
|
||||||
if ((temp_line.size() > 2) || ((temp_line.size()>1) && (temp_line[1]!=':'))) goto showusage;
|
if ((temp_line.size() > 2) || ((temp_line.size()>1) && (temp_line[1]!=':'))) goto showusage;
|
||||||
@ -352,8 +354,8 @@ public:
|
|||||||
} else {
|
} else {
|
||||||
/* Give a warning when mount c:\ or the / */
|
/* Give a warning when mount c:\ or the / */
|
||||||
#if defined (WIN32) || defined(OS2)
|
#if defined (WIN32) || defined(OS2)
|
||||||
if( (temp_line == "c:\\") || (temp_line == "C:\\") ||
|
if( (temp_line == "c:\\") || (temp_line == "C:\\") ||
|
||||||
(temp_line == "c:/") || (temp_line == "C:/") )
|
(temp_line == "c:/") || (temp_line == "C:/") )
|
||||||
WriteOut(MSG_Get("PROGRAM_MOUNT_WARNING_WIN"));
|
WriteOut(MSG_Get("PROGRAM_MOUNT_WARNING_WIN"));
|
||||||
#else
|
#else
|
||||||
if(temp_line == "/") WriteOut(MSG_Get("PROGRAM_MOUNT_WARNING_OTHER"));
|
if(temp_line == "/") WriteOut(MSG_Get("PROGRAM_MOUNT_WARNING_OTHER"));
|
||||||
@ -379,7 +381,7 @@ public:
|
|||||||
/* For hard drives set the label to DRIVELETTER_Drive.
|
/* For hard drives set the label to DRIVELETTER_Drive.
|
||||||
* For floppy drives set the label to DRIVELETTER_Floppy.
|
* For floppy drives set the label to DRIVELETTER_Floppy.
|
||||||
* This way every drive except cdroms should get a label.*/
|
* This way every drive except cdroms should get a label.*/
|
||||||
else if(type == "dir") {
|
else if(type == "dir") {
|
||||||
label = drive; label += "_DRIVE";
|
label = drive; label += "_DRIVE";
|
||||||
newdrive->dirCache.SetLabel(label.c_str(),iscdrom,true);
|
newdrive->dirCache.SetLabel(label.c_str(),iscdrom,true);
|
||||||
} else if(type == "floppy") {
|
} else if(type == "floppy") {
|
||||||
@ -448,7 +450,7 @@ public:
|
|||||||
if (!reg_bl) {
|
if (!reg_bl) {
|
||||||
WriteOut(MSG_Get("PROGRAM_MEM_EXTEND"),reg_dx);
|
WriteOut(MSG_Get("PROGRAM_MEM_EXTEND"),reg_dx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Test for and show free EMS */
|
/* Test for and show free EMS */
|
||||||
Bit16u handle;
|
Bit16u handle;
|
||||||
char emm[9] = { 'E','M','M','X','X','X','X','0',0 };
|
char emm[9] = { 'E','M','M','X','X','X','X','0',0 };
|
||||||
@ -471,7 +473,7 @@ extern Bit32u floppytype;
|
|||||||
|
|
||||||
class BOOT : public Program {
|
class BOOT : public Program {
|
||||||
private:
|
private:
|
||||||
|
|
||||||
FILE *getFSFile_mounted(char const* filename, Bit32u *ksize, Bit32u *bsize, Bit8u *error) {
|
FILE *getFSFile_mounted(char const* filename, Bit32u *ksize, Bit32u *bsize, Bit8u *error) {
|
||||||
//if return NULL then put in error the errormessage code if an error was requested
|
//if return NULL then put in error the errormessage code if an error was requested
|
||||||
bool tryload = (*error)?true:false;
|
bool tryload = (*error)?true:false;
|
||||||
@ -483,7 +485,7 @@ private:
|
|||||||
localDrive* ldp=0;
|
localDrive* ldp=0;
|
||||||
if (!DOS_MakeName(const_cast<char*>(filename),fullname,&drive)) return NULL;
|
if (!DOS_MakeName(const_cast<char*>(filename),fullname,&drive)) return NULL;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ldp=dynamic_cast<localDrive*>(Drives[drive]);
|
ldp=dynamic_cast<localDrive*>(Drives[drive]);
|
||||||
if(!ldp) return NULL;
|
if(!ldp) return NULL;
|
||||||
|
|
||||||
@ -517,7 +519,7 @@ private:
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FILE *getFSFile(char const * filename, Bit32u *ksize, Bit32u *bsize,bool tryload=false) {
|
FILE *getFSFile(char const * filename, Bit32u *ksize, Bit32u *bsize,bool tryload=false) {
|
||||||
Bit8u error = tryload?1:0;
|
Bit8u error = tryload?1:0;
|
||||||
FILE* tmpfile = getFSFile_mounted(filename,ksize,bsize,&error);
|
FILE* tmpfile = getFSFile_mounted(filename,ksize,bsize,&error);
|
||||||
@ -566,11 +568,11 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
void Run(void) {
|
void Run(void) {
|
||||||
//Hack To allow long commandlines
|
//Hack To allow long commandlines
|
||||||
ChangeToLongCmd();
|
ChangeToLongCmd();
|
||||||
/* In secure mode don't allow people to boot stuff.
|
/* In secure mode don't allow people to boot stuff.
|
||||||
* They might try to corrupt the data on it */
|
* They might try to corrupt the data on it */
|
||||||
if(control->SecureMode()) {
|
if(control->SecureMode()) {
|
||||||
WriteOut(MSG_Get("PROGRAM_CONFIG_SECURE_DISALLOW"));
|
WriteOut(MSG_Get("PROGRAM_CONFIG_SECURE_DISALLOW"));
|
||||||
@ -579,7 +581,7 @@ public:
|
|||||||
|
|
||||||
FILE *usefile_1=NULL;
|
FILE *usefile_1=NULL;
|
||||||
FILE *usefile_2=NULL;
|
FILE *usefile_2=NULL;
|
||||||
Bitu i=0;
|
Bitu i=0;
|
||||||
Bit32u floppysize;
|
Bit32u floppysize;
|
||||||
Bit32u rombytesize_1=0;
|
Bit32u rombytesize_1=0;
|
||||||
Bit32u rombytesize_2=0;
|
Bit32u rombytesize_2=0;
|
||||||
@ -798,7 +800,7 @@ public:
|
|||||||
/* boot cartridge (int18) */
|
/* boot cartridge (int18) */
|
||||||
SegSet16(cs,RealSeg(new_int18));
|
SegSet16(cs,RealSeg(new_int18));
|
||||||
reg_ip = RealOff(new_int18);
|
reg_ip = RealOff(new_int18);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (cfound_at>0) {
|
if (cfound_at>0) {
|
||||||
/* run cartridge setup */
|
/* run cartridge setup */
|
||||||
@ -853,7 +855,7 @@ public:
|
|||||||
localDrive* ldp=0;
|
localDrive* ldp=0;
|
||||||
if (!DOS_MakeName((char *)temp_line.c_str(),fullname,&drive)) return;
|
if (!DOS_MakeName((char *)temp_line.c_str(),fullname,&drive)) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ldp=dynamic_cast<localDrive*>(Drives[drive]);
|
ldp=dynamic_cast<localDrive*>(Drives[drive]);
|
||||||
if(!ldp) return;
|
if(!ldp) return;
|
||||||
|
|
||||||
@ -904,7 +906,7 @@ public:
|
|||||||
void Run(void);
|
void Run(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
void LOADFIX::Run(void)
|
void LOADFIX::Run(void)
|
||||||
{
|
{
|
||||||
Bit16u commandNr = 1;
|
Bit16u commandNr = 1;
|
||||||
Bit16u kb = 64;
|
Bit16u kb = 64;
|
||||||
@ -946,15 +948,15 @@ void LOADFIX::Run(void)
|
|||||||
break;
|
break;
|
||||||
strcat(args,temp_line.c_str());
|
strcat(args,temp_line.c_str());
|
||||||
strcat(args," ");
|
strcat(args," ");
|
||||||
} while (ok);
|
} while (ok);
|
||||||
// Use shell to start program
|
// Use shell to start program
|
||||||
DOS_Shell shell;
|
DOS_Shell shell;
|
||||||
shell.Execute(filename,args);
|
shell.Execute(filename,args);
|
||||||
DOS_FreeMemory(segment);
|
DOS_FreeMemory(segment);
|
||||||
WriteOut(MSG_Get("PROGRAM_LOADFIX_DEALLOC"),kb);
|
WriteOut(MSG_Get("PROGRAM_LOADFIX_DEALLOC"),kb);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
WriteOut(MSG_Get("PROGRAM_LOADFIX_ERROR"),kb);
|
WriteOut(MSG_Get("PROGRAM_LOADFIX_ERROR"),kb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -969,7 +971,7 @@ public:
|
|||||||
void Run(void);
|
void Run(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
void RESCAN::Run(void)
|
void RESCAN::Run(void)
|
||||||
{
|
{
|
||||||
// Get current drive
|
// Get current drive
|
||||||
Bit8u drive = DOS_GetDefaultDrive();
|
Bit8u drive = DOS_GetDefaultDrive();
|
||||||
@ -993,7 +995,7 @@ public:
|
|||||||
WriteOut(MSG_Get("PROGRAM_INTRO_MOUNT_WII"));
|
WriteOut(MSG_Get("PROGRAM_INTRO_MOUNT_WII"));
|
||||||
#elif (WIN32)
|
#elif (WIN32)
|
||||||
WriteOut(MSG_Get("PROGRAM_INTRO_MOUNT_WINDOWS"));
|
WriteOut(MSG_Get("PROGRAM_INTRO_MOUNT_WINDOWS"));
|
||||||
#else
|
#else
|
||||||
WriteOut(MSG_Get("PROGRAM_INTRO_MOUNT_OTHER"));
|
WriteOut(MSG_Get("PROGRAM_INTRO_MOUNT_OTHER"));
|
||||||
#endif
|
#endif
|
||||||
WriteOut(MSG_Get("PROGRAM_INTRO_MOUNT_END"));
|
WriteOut(MSG_Get("PROGRAM_INTRO_MOUNT_END"));
|
||||||
@ -1036,7 +1038,7 @@ public:
|
|||||||
void Run(void) {
|
void Run(void) {
|
||||||
//Hack To allow long commandlines
|
//Hack To allow long commandlines
|
||||||
ChangeToLongCmd();
|
ChangeToLongCmd();
|
||||||
/* In secure mode don't allow people to change imgmount points.
|
/* In secure mode don't allow people to change imgmount points.
|
||||||
* Neither mount nor unmount */
|
* Neither mount nor unmount */
|
||||||
if(control->SecureMode()) {
|
if(control->SecureMode()) {
|
||||||
WriteOut(MSG_Get("PROGRAM_CONFIG_SECURE_DISALLOW"));
|
WriteOut(MSG_Get("PROGRAM_CONFIG_SECURE_DISALLOW"));
|
||||||
@ -1057,7 +1059,7 @@ public:
|
|||||||
switch (DriveManager::UnmountDrive(i_drive)) {
|
switch (DriveManager::UnmountDrive(i_drive)) {
|
||||||
case 0:
|
case 0:
|
||||||
Drives[i_drive] = 0;
|
Drives[i_drive] = 0;
|
||||||
if (i_drive == DOS_GetDefaultDrive())
|
if (i_drive == DOS_GetDefaultDrive())
|
||||||
DOS_SetDrive(toupper('Z') - 'A');
|
DOS_SetDrive(toupper('Z') - 'A');
|
||||||
WriteOut(MSG_Get("PROGRAM_MOUNT_UMOUNT_SUCCES"),umount[0]);
|
WriteOut(MSG_Get("PROGRAM_MOUNT_UMOUNT_SUCCES"),umount[0]);
|
||||||
break;
|
break;
|
||||||
@ -1084,17 +1086,17 @@ public:
|
|||||||
if (type=="floppy" || type=="hdd" || type=="iso") {
|
if (type=="floppy" || type=="hdd" || type=="iso") {
|
||||||
Bit16u sizes[4];
|
Bit16u sizes[4];
|
||||||
bool imgsizedetect=false;
|
bool imgsizedetect=false;
|
||||||
|
|
||||||
std::string str_size;
|
std::string str_size;
|
||||||
mediaid=0xF8;
|
mediaid=0xF8;
|
||||||
|
|
||||||
if (type=="floppy") {
|
if (type=="floppy") {
|
||||||
mediaid=0xF0;
|
mediaid=0xF0;
|
||||||
} else if (type=="iso") {
|
} else if (type=="iso") {
|
||||||
str_size="650,127,16513,1700";
|
str_size="650,127,16513,1700";
|
||||||
mediaid=0xF8;
|
mediaid=0xF8;
|
||||||
fstype = "iso";
|
fstype = "iso";
|
||||||
}
|
}
|
||||||
cmd->FindString("-size",str_size,true);
|
cmd->FindString("-size",str_size,true);
|
||||||
if ((type=="hdd") && (str_size.size()==0)) {
|
if ((type=="hdd") && (str_size.size()==0)) {
|
||||||
imgsizedetect=true;
|
imgsizedetect=true;
|
||||||
@ -1102,7 +1104,7 @@ public:
|
|||||||
char number[20];
|
char number[20];
|
||||||
const char * scan=str_size.c_str();
|
const char * scan=str_size.c_str();
|
||||||
Bitu index=0;Bitu count=0;
|
Bitu index=0;Bitu count=0;
|
||||||
|
|
||||||
while (*scan) {
|
while (*scan) {
|
||||||
if (*scan==',') {
|
if (*scan==',') {
|
||||||
number[index]=0;sizes[count++]=atoi(number);
|
number[index]=0;sizes[count++]=atoi(number);
|
||||||
@ -1112,7 +1114,7 @@ public:
|
|||||||
}
|
}
|
||||||
number[index]=0;sizes[count++]=atoi(number);
|
number[index]=0;sizes[count++]=atoi(number);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fstype=="fat" || fstype=="iso") {
|
if(fstype=="fat" || fstype=="iso") {
|
||||||
// get the drive letter
|
// get the drive letter
|
||||||
if (!cmd->FindCommand(1,temp_line) || (temp_line.size() > 2) || ((temp_line.size()>1) && (temp_line[1]!=':'))) {
|
if (!cmd->FindCommand(1,temp_line) || (temp_line.size() > 2) || ((temp_line.size()>1) && (temp_line[1]!=':'))) {
|
||||||
@ -1139,10 +1141,10 @@ public:
|
|||||||
WriteOut_NoParsing(MSG_Get("PROGRAM_IMGMOUNT_FORMAT_UNSUPPORTED"));
|
WriteOut_NoParsing(MSG_Get("PROGRAM_IMGMOUNT_FORMAT_UNSUPPORTED"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// find all file parameters, assuming that all option parameters have been removed
|
// find all file parameters, assuming that all option parameters have been removed
|
||||||
while(cmd->FindCommand((unsigned int)(paths.size() + 2), temp_line) && temp_line.size()) {
|
while(cmd->FindCommand((unsigned int)(paths.size() + 2), temp_line) && temp_line.size()) {
|
||||||
|
|
||||||
struct stat test;
|
struct stat test;
|
||||||
if (stat(temp_line.c_str(),&test)) {
|
if (stat(temp_line.c_str(),&test)) {
|
||||||
//See if it works if the ~ are written out
|
//See if it works if the ~ are written out
|
||||||
@ -1185,7 +1187,7 @@ public:
|
|||||||
}
|
}
|
||||||
if (paths.size() == 0) {
|
if (paths.size() == 0) {
|
||||||
WriteOut(MSG_Get("PROGRAM_IMGMOUNT_SPECIFY_FILE"));
|
WriteOut(MSG_Get("PROGRAM_IMGMOUNT_SPECIFY_FILE"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (paths.size() == 1)
|
if (paths.size() == 1)
|
||||||
temp_line = paths[0];
|
temp_line = paths[0];
|
||||||
@ -1251,7 +1253,7 @@ public:
|
|||||||
}
|
}
|
||||||
if (!newdrive) {WriteOut(MSG_Get("PROGRAM_IMGMOUNT_CANT_CREATE"));return;}
|
if (!newdrive) {WriteOut(MSG_Get("PROGRAM_IMGMOUNT_CANT_CREATE"));return;}
|
||||||
Drives[drive-'A']=newdrive;
|
Drives[drive-'A']=newdrive;
|
||||||
// Set the correct media byte in the table
|
// Set the correct media byte in the table
|
||||||
mem_writeb(Real2Phys(dos.tables.mediaid)+(drive-'A')*2,mediaid);
|
mem_writeb(Real2Phys(dos.tables.mediaid)+(drive-'A')*2,mediaid);
|
||||||
WriteOut(MSG_Get("PROGRAM_MOUNT_STATUS_2"),drive,temp_line.c_str());
|
WriteOut(MSG_Get("PROGRAM_MOUNT_STATUS_2"),drive,temp_line.c_str());
|
||||||
if(((fatDrive *)newdrive)->loadedDisk->hardDrive) {
|
if(((fatDrive *)newdrive)->loadedDisk->hardDrive) {
|
||||||
@ -1306,10 +1308,10 @@ public:
|
|||||||
DriveManager::AppendDisk(drive - 'A', isoDisks[ct]);
|
DriveManager::AppendDisk(drive - 'A', isoDisks[ct]);
|
||||||
}
|
}
|
||||||
DriveManager::InitializeDrive(drive - 'A');
|
DriveManager::InitializeDrive(drive - 'A');
|
||||||
|
|
||||||
// Set the correct media byte in the table
|
// Set the correct media byte in the table
|
||||||
mem_writeb(Real2Phys(dos.tables.mediaid) + (drive - 'A') * 2, mediaid);
|
mem_writeb(Real2Phys(dos.tables.mediaid) + (drive - 'A') * 2, mediaid);
|
||||||
|
|
||||||
// Print status message (success)
|
// Print status message (success)
|
||||||
WriteOut(MSG_Get("MSCDEX_SUCCESS"));
|
WriteOut(MSG_Get("MSCDEX_SUCCESS"));
|
||||||
std::string tmp(paths[0]);
|
std::string tmp(paths[0]);
|
||||||
@ -1317,7 +1319,7 @@ public:
|
|||||||
tmp += "; " + paths[i];
|
tmp += "; " + paths[i];
|
||||||
}
|
}
|
||||||
WriteOut(MSG_Get("PROGRAM_MOUNT_STATUS_2"), drive, tmp.c_str());
|
WriteOut(MSG_Get("PROGRAM_MOUNT_STATUS_2"), drive, tmp.c_str());
|
||||||
|
|
||||||
} else if (fstype=="none") {
|
} else if (fstype=="none") {
|
||||||
if(imageDiskList[drive-'0'] != NULL) delete imageDiskList[drive-'0'];
|
if(imageDiskList[drive-'0'] != NULL) delete imageDiskList[drive-'0'];
|
||||||
imageDiskList[drive-'0'] = newImage;
|
imageDiskList[drive-'0'] = newImage;
|
||||||
@ -1420,7 +1422,7 @@ void DOS_SetupPrograms(void) {
|
|||||||
MSG_Add("PROGRAM_MOUNT_USAGE","Usage \033[34;1mMOUNT Drive-Letter Local-Directory\033[0m\nSo a MOUNT d usb:/windows mounts windows directory on USB as the d: drive\n");
|
MSG_Add("PROGRAM_MOUNT_USAGE","Usage \033[34;1mMOUNT Drive-Letter Local-Directory\033[0m\nSo a MOUNT d usb:/windows mounts windows directory on USB as the d: drive\n");
|
||||||
#else
|
#else
|
||||||
MSG_Add("PROGRAM_MOUNT_USAGE","Usage \033[34;1mMOUNT Drive-Letter Local-Directory\033[0m\nSo a MOUNT c c:\\windows mounts windows directory as the c: drive in DOSBox\n");
|
MSG_Add("PROGRAM_MOUNT_USAGE","Usage \033[34;1mMOUNT Drive-Letter Local-Directory\033[0m\nSo a MOUNT c c:\\windows mounts windows directory as the c: drive in DOSBox\n");
|
||||||
#endif
|
#endif
|
||||||
MSG_Add("PROGRAM_MOUNT_UMOUNT_NOT_MOUNTED","Drive %c isn't mounted.\n");
|
MSG_Add("PROGRAM_MOUNT_UMOUNT_NOT_MOUNTED","Drive %c isn't mounted.\n");
|
||||||
MSG_Add("PROGRAM_MOUNT_UMOUNT_SUCCES","Drive %c has succesfully been removed.\n");
|
MSG_Add("PROGRAM_MOUNT_UMOUNT_SUCCES","Drive %c has succesfully been removed.\n");
|
||||||
MSG_Add("PROGRAM_MOUNT_UMOUNT_NO_VIRTUAL","Virtual Drives can not be unMOUNTed.\n");
|
MSG_Add("PROGRAM_MOUNT_UMOUNT_NO_VIRTUAL","Virtual Drives can not be unMOUNTed.\n");
|
||||||
|
@ -1490,13 +1490,15 @@ static void printconfiglocation() {
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MountDOSBoxDir(char DriveLetter, const char *path);
|
int MountDOSBoxDir(char DriveLetter, const char *path);
|
||||||
|
|
||||||
//extern void UI_Init(void);
|
//extern void UI_Init(void);
|
||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
try {
|
try {
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
WiiInit();
|
WiiInit();
|
||||||
|
if(argc > 0 && argv[0] != NULL)
|
||||||
|
CreateAppPath(argv[0]);
|
||||||
#endif
|
#endif
|
||||||
CommandLine com_line(argc,argv);
|
CommandLine com_line(argc,argv);
|
||||||
Config myconf(&com_line);
|
Config myconf(&com_line);
|
||||||
@ -1617,7 +1619,13 @@ int main(int argc, char* argv[]) {
|
|||||||
if (control->ParseConfigFile(config_file.c_str())) parsed_anyconfigfile = true;
|
if (control->ParseConfigFile(config_file.c_str())) parsed_anyconfigfile = true;
|
||||||
|
|
||||||
//if none found => parse localdir conf
|
//if none found => parse localdir conf
|
||||||
|
#ifdef HW_RVL
|
||||||
|
char wiiconf[1024];
|
||||||
|
sprintf(wiiconf, "%s/dosbox.conf", appPath);
|
||||||
|
config_file.assign(wiiconf);
|
||||||
|
#else
|
||||||
config_file = "dosbox.conf";
|
config_file = "dosbox.conf";
|
||||||
|
#endif
|
||||||
if (!parsed_anyconfigfile && control->ParseConfigFile(config_file.c_str())) parsed_anyconfigfile = true;
|
if (!parsed_anyconfigfile && control->ParseConfigFile(config_file.c_str())) parsed_anyconfigfile = true;
|
||||||
|
|
||||||
//if none found => parse userlevel conf
|
//if none found => parse userlevel conf
|
||||||
@ -1665,7 +1673,16 @@ int main(int argc, char* argv[]) {
|
|||||||
MAPPER_Init();
|
MAPPER_Init();
|
||||||
if (control->cmdline->FindExist("-startmapper")) MAPPER_Run(false);
|
if (control->cmdline->FindExist("-startmapper")) MAPPER_Run(false);
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
MountDOSBoxDir('C', "sd:/DOSBox");
|
bool cMounted = false;
|
||||||
|
|
||||||
|
// mount the current directory as C, if not loading from apps/dosbox-wii
|
||||||
|
if(strlen(appPath) > 0 && strcmp(appPath, "apps/dosbox-wii") != 0)
|
||||||
|
if(MountDOSBoxDir('C', appPath))
|
||||||
|
cMounted = true;
|
||||||
|
if(cMounted)
|
||||||
|
MountDOSBoxDir('D', "sd:/DOSBox");
|
||||||
|
else
|
||||||
|
MountDOSBoxDir('C', "sd:/DOSBox");
|
||||||
#endif
|
#endif
|
||||||
/* Start up main machine */
|
/* Start up main machine */
|
||||||
control->StartUp();
|
control->StartUp();
|
||||||
|
@ -52,7 +52,6 @@ void Cross::GetPlatformConfigDir(std::string& in) {
|
|||||||
ResolveHomedir(in);
|
ResolveHomedir(in);
|
||||||
#elif defined(HW_RVL)
|
#elif defined(HW_RVL)
|
||||||
in = "sd:/DOSBox";
|
in = "sd:/DOSBox";
|
||||||
ResolveHomedir(in);
|
|
||||||
#else
|
#else
|
||||||
in = "~/.dosbox";
|
in = "~/.dosbox";
|
||||||
ResolveHomedir(in);
|
ResolveHomedir(in);
|
||||||
|
@ -10,8 +10,31 @@
|
|||||||
#include <fat.h>
|
#include <fat.h>
|
||||||
#include "wiihardware.h"
|
#include "wiihardware.h"
|
||||||
|
|
||||||
|
char appPath[1024];
|
||||||
|
|
||||||
void WiiInit() {
|
void WiiInit() {
|
||||||
fatInitDefault();
|
fatInitDefault();
|
||||||
|
appPath[0] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CreateAppPath(char origpath[])
|
||||||
|
{
|
||||||
|
char path[1024];
|
||||||
|
strncpy(path, origpath, 1024); // make a copy
|
||||||
|
|
||||||
|
char * loc;
|
||||||
|
int pos = -1;
|
||||||
|
|
||||||
|
loc = strrchr(path,'/');
|
||||||
|
if (loc != NULL)
|
||||||
|
*loc = 0; // strip file name
|
||||||
|
|
||||||
|
loc = strchr(path,'/'); // looking for / from fat:/
|
||||||
|
if (loc != NULL)
|
||||||
|
pos = loc - path + 1;
|
||||||
|
|
||||||
|
if(pos >= 0 && pos < 1024)
|
||||||
|
sprintf(appPath, &(path[pos]));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WiiMessagePause(const char *s) {
|
bool WiiMessagePause(const char *s) {
|
||||||
|
@ -3,7 +3,10 @@
|
|||||||
#include <wiiuse/wpad.h>
|
#include <wiiuse/wpad.h>
|
||||||
|
|
||||||
void WiiInit();
|
void WiiInit();
|
||||||
|
void CreateAppPath(char origpath[]);
|
||||||
void WiiFinished();
|
void WiiFinished();
|
||||||
bool WiiMessagePause(const char *s);
|
bool WiiMessagePause(const char *s);
|
||||||
|
|
||||||
|
extern char appPath[1024];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user