Fixed some bleedthrough on the colors on the console, took care of a typo I made earier, and did assorted cleanup.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1566 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
arcum42 2009-07-25 01:40:34 +00:00
parent 4eaa5265df
commit 93d6d5a2ac
12 changed files with 99 additions and 182 deletions

View File

@ -294,11 +294,8 @@ s32 cdvdReadConfig(u8* config)
} }
s32 cdvdWriteConfig(const u8* config) s32 cdvdWriteConfig(const u8* config)
{ {
// make sure its in write mode // make sure its in write mode && the block index is in bounds
if(cdvd.CReadWrite != 1) if ((cdvd.CReadWrite != 1) || (cdvd.CBlockIndex >= cdvd.CNumBlocks))
return 1;
// check if block index is in bounds
else if(cdvd.CBlockIndex >= cdvd.CNumBlocks)
return 1; return 1;
else if( else if(
((cdvd.COffset == 0) && (cdvd.CBlockIndex >= 4))|| ((cdvd.COffset == 0) && (cdvd.CBlockIndex >= 4))||
@ -543,14 +540,12 @@ void cdvdNewDiskCB()
void mechaDecryptBytes( u32 madr, int size ) void mechaDecryptBytes( u32 madr, int size )
{ {
int i;
int shiftAmount = (cdvd.decSet>>4) & 7; int shiftAmount = (cdvd.decSet>>4) & 7;
int doXor = (cdvd.decSet) & 1; int doXor = (cdvd.decSet) & 1;
int doShift = (cdvd.decSet) & 2; int doShift = (cdvd.decSet) & 2;
u8* curval = iopPhysMem( madr ); u8* curval = iopPhysMem( madr );
for( i=0; i<size; ++i, ++curval ) for( int i=0; i<size; ++i, ++curval )
{ {
if( doXor ) *curval ^= cdvd.Key[4]; if( doXor ) *curval ^= cdvd.Key[4];
if( doShift ) *curval = (*curval >> shiftAmount) | (*curval << (8-shiftAmount) ); if( doShift ) *curval = (*curval >> shiftAmount) | (*curval << (8-shiftAmount) );
@ -600,9 +595,8 @@ int cdvdReadSector() {
} }
else else
{ {
// Assumed the other dualType is 0. // Assuming the other dualType is 0,
// single layer disc // single layer disc, or on first layer of dual layer disc.
// or on first layer of dual layer disc
layerNum = 0; layerNum = 0;
lsn += 0x30000; lsn += 0x30000;
} }
@ -634,7 +628,7 @@ int cdvdReadSector() {
// Final Fantasy X-2 crashing. So we won't. // Final Fantasy X-2 crashing. So we won't.
DevCon::WriteLn("Bad Transfer!"); DevCon::WriteLn("Bad Transfer!");
for (int i = 12; i > 2060; i++) for (int i = 12; i <= 2060; i++)
{ {
mdest[i] = 0; mdest[i] = 0;
} }
@ -789,7 +783,6 @@ __forceinline void cdvdReadInterrupt()
cdvd.Ready = CDVD_READY2; cdvd.Ready = CDVD_READY2;
// All done! :D // All done! :D
return; return;
} }

View File

@ -27,6 +27,43 @@ extern char isoFileName[];
#define btoi(b) ((b)/16*10 + (b)%16) /* BCD to u_char */ #define btoi(b) ((b)/16*10 + (b)%16) /* BCD to u_char */
#define itob(i) ((i)/10*16 + (i)%10) /* u_char to BCD */ #define itob(i) ((i)/10*16 + (i)%10) /* u_char to BCD */
static __forceinline s32 msf_to_lsn(u8 *Time)
{
u32 lsn;
lsn = Time[2];
lsn +=(Time[1] - 2) * 75;
lsn += Time[0] * 75 * 60;
return lsn;
}
static __forceinline s32 msf_to_lba(u8 m, u8 s, u8 f)
{
u32 lsn;
lsn = f;
lsn += (s - 2) * 75;
lsn += m * 75 * 60;
return lsn;
}
static __forceinline void lsn_to_msf(u8 *Time, s32 lsn)
{
lsn += 150;
Time[2] = lsn / 4500; // minuten
lsn = lsn - Time[2] * 4500; // minuten rest
Time[1] = lsn / 75; // sekunden
Time[0] = lsn - Time[1] * 75; // sekunden rest
}
static __forceinline void lba_to_msf(s32 lba, u8* m, u8* s, u8* f)
{
lba += 150;
*m = lba / (60 * 75);
*s = (lba / 75) % 60;
*f = lba % 75;
}
struct cdvdRTC { struct cdvdRTC {
u8 status; u8 status;
u8 second; u8 second;

View File

@ -305,9 +305,7 @@ s32 DoCDVDopen(const char* pTitleFilename)
cdvdTD td; cdvdTD td;
CDVD.getTD(0, &td); CDVD.getTD(0, &td);
int blockofs = 0; int blockofs = 0, blocksize = 0, blocks = td.lsn;
int blocksize = 0;
int blocks = td.lsn;
switch(cdtype) switch(cdtype)
{ {

View File

@ -30,79 +30,21 @@
#include "CDVDisoReader.h" #include "CDVDisoReader.h"
char isoFileName[g_MaxPath]; char isoFileName[g_MaxPath];
u8 *pbuffer; u8 *pbuffer;
int cdtype; static int psize, cdtype;
static int psize;
isoFile *iso;
FILE *cdvdLog = NULL;
u8 cdbuffer[2352] = {0}; u8 cdbuffer[2352] = {0};
isoFile *iso;
s32 msf_to_lba(u8 m, u8 s, u8 f)
{
u32 lsn;
lsn = f;
lsn += (s - 2) * 75;
lsn += m * 75 * 60;
return lsn;
}
void lba_to_msf(s32 lba, u8* m, u8* s, u8* f)
{
lba += 150;
*m = lba / (60 * 75);
*s = (lba / 75) % 60;
*f = lba % 75;
}
//#define btoi(b) ((b)/16*10 + (b)%16) /* BCD to u_char */
//#define itob(i) ((i)/10*16 + (i)%10) /* u_char to BCD */
/*#ifdef PCSX2_DEBUG
void __Log(char *fmt, ...)
{
va_list list;
if (cdvdLog == NULL) return;
va_start(list, fmt);
vfprintf(cdvdLog, fmt, list);
va_end(list);
}
#else
#define __Log 0&&
#endif*/
s32 CALLBACK ISOinit() s32 CALLBACK ISOinit()
{ {
/*#ifdef PCSX2_DEBUG CDVD_LOG("ISOinit\n");
cdvdLog = fopen("logs/cdvdLog.txt", "w");
if (cdvdLog == NULL)
{
cdvdLog = fopen("cdvdLog.txt", "w");
if (cdvdLog == NULL)
{
Console::Error("Can't create cdvdLog.txt");
return -1;
}
}
setvbuf(cdvdLog, NULL, _IONBF, 0);*/
CDVD_LOG("CDVDinit\n");
/*#endif*/
return 0; return 0;
} }
void CALLBACK ISOshutdown() void CALLBACK ISOshutdown()
{ {
/*#ifdef CDVD_LOG CDVD_LOG("ISOshutdown\n");
if (cdvdLog != NULL) fclose(cdvdLog);
#endif*/
} }
s32 CALLBACK ISOopen(const char* pTitle) s32 CALLBACK ISOopen(const char* pTitle)
@ -246,7 +188,7 @@ s32 CALLBACK ISOgetTOC(void* toc)
u8 type = ISOgetDiskType(); u8 type = ISOgetDiskType();
u8* tocBuff = (u8*)toc; u8* tocBuff = (u8*)toc;
//__Log("CDVDgetTOC\n"); //CDVD_LOG("CDVDgetTOC\n");
if (type == CDVD_TYPE_DVDV || type == CDVD_TYPE_PS2DVD) if (type == CDVD_TYPE_DVDV || type == CDVD_TYPE_PS2DVD)
{ {

View File

@ -29,19 +29,6 @@
#include "IsoFStools.h" #include "IsoFStools.h"
#include "IsoFileFormats.h" #include "IsoFileFormats.h"
//#define CDVD_LOG __Log
//#ifndef MAX_PATH
//#define MAX_PATH 255
//#endif
//extern FILE *cdvdLog;
//void __Log(char *fmt, ...);
//#define itob(i) ((i)/10*16 + (i)%10) /* u_char to BCD */
//#define btoi(b) ((b)/16*10 + (b)%16) /* BCD to u_char */
extern char isoFileName[g_MaxPath]; extern char isoFileName[g_MaxPath];
extern isoFile *iso; extern isoFile *iso;

View File

@ -118,30 +118,13 @@ static __forceinline void SetResultSize(u8 size) {
cdr.ResultReady = 1; cdr.ResultReady = 1;
} }
static __forceinline s32 MSFtoLSN(u8 *Time) {
u32 lsn;
lsn = Time[2];
lsn+=(Time[1] - 2) * 75;
lsn+= Time[0] * 75 * 60;
return lsn;
}
static __forceinline void LSNtoMSF(u8 *Time, s32 lsn) {
lsn += 150;
Time[2] = lsn / 4500; // minuten
lsn = lsn - Time[2] * 4500; // minuten rest
Time[1] = lsn / 75; // sekunden
Time[0] = lsn - Time[1] * 75; // sekunden rest
}
static void ReadTrack() { static void ReadTrack() {
cdr.Prev[0] = itob(cdr.SetSector[0]); cdr.Prev[0] = itob(cdr.SetSector[0]);
cdr.Prev[1] = itob(cdr.SetSector[1]); cdr.Prev[1] = itob(cdr.SetSector[1]);
cdr.Prev[2] = itob(cdr.SetSector[2]); cdr.Prev[2] = itob(cdr.SetSector[2]);
CDR_LOG("KEY *** %x:%x:%x", cdr.Prev[0], cdr.Prev[1], cdr.Prev[2]); CDR_LOG("KEY *** %x:%x:%x", cdr.Prev[0], cdr.Prev[1], cdr.Prev[2]);
cdr.RErr = DoCDVDreadTrack(MSFtoLSN(cdr.SetSector), CDVD_MODE_2340); cdr.RErr = DoCDVDreadTrack(msf_to_lsn(cdr.SetSector), CDVD_MODE_2340);
} }
// cdr.Stat: // cdr.Stat:
@ -351,7 +334,7 @@ void cdrInterrupt() {
cdr.Stat = DiskError; cdr.Stat = DiskError;
cdr.Result[0]|= 0x01; cdr.Result[0]|= 0x01;
} else { } else {
LSNtoMSF(cdr.ResultTD, trackInfo.lsn); lsn_to_msf(cdr.ResultTD, trackInfo.lsn);
cdr.Stat = Acknowledge; cdr.Stat = Acknowledge;
cdr.Result[0] = cdr.StatP; cdr.Result[0] = cdr.StatP;
cdr.Result[1] = itob(cdr.ResultTD[0]); cdr.Result[1] = itob(cdr.ResultTD[0]);
@ -397,11 +380,14 @@ void cdrInterrupt() {
SetResultSize(4); SetResultSize(4);
*(int*)cdr.Result = *(int*)Test20; *(int*)cdr.Result = *(int*)Test20;
break; break;
case 0x22: case 0x22:
SetResultSize(8); SetResultSize(8);
*(int*)cdr.Result = *(int*)Test22; *(int*)cdr.Result = *(int*)Test22;
break; break;
case 0x23: case 0x24:
case 0x23:
case 0x24:
SetResultSize(8); SetResultSize(8);
*(int*)cdr.Result = *(int*)Test23; *(int*)cdr.Result = *(int*)Test23;
break; break;
@ -456,8 +442,7 @@ void cdrInterrupt() {
break; break;
case READ_ACK: case READ_ACK:
if (!cdr.Reading) if (!cdr.Reading) return;
return;
SetResultSize(1); SetResultSize(1);
cdr.StatP|= 0x2; cdr.StatP|= 0x2;

View File

@ -27,7 +27,7 @@
#include "IsoFSdrv.h" #include "IsoFSdrv.h"
struct fdtable{ struct fdtable{
//int fd; // int fd;
int fileSize; int fileSize;
int LBA; int LBA;
int filePos; int filePos;
@ -68,8 +68,7 @@ int IsoFS_open(const char *name, int mode){
static struct TocEntry tocEntry; static struct TocEntry tocEntry;
// check if the file exists // check if the file exists
if (IsoFS_findFile(name, &tocEntry) != TRUE) if (IsoFS_findFile(name, &tocEntry) != TRUE) return -1;
return -1;
if(mode != 1) return -2; //SCE_RDONLY if(mode != 1) return -2; //SCE_RDONLY
@ -117,11 +116,12 @@ int IsoFS_lseek(int fd, int offset, int whence){
return -1; return -1;
} }
if (fd_table[fd].filePos < 0) if (fd_table[fd].filePos < 0) fd_table[fd].filePos = 0;
fd_table[fd].filePos = 0;
if (fd_table[fd].filePos > fd_table[fd].fileSize) if (fd_table[fd].filePos > fd_table[fd].fileSize)
{
fd_table[fd].filePos = fd_table[fd].fileSize; fd_table[fd].filePos = fd_table[fd].fileSize;
}
return fd_table[fd].filePos; return fd_table[fd].filePos;
} }
@ -152,8 +152,10 @@ int IsoFS_read( int fd, char *buffer, int size )
} }
if ((fd_table[fd].filePos + size) > fd_table[fd].fileSize) if ((fd_table[fd].filePos + size) > fd_table[fd].fileSize)
{
size = fd_table[fd].fileSize - fd_table[fd].filePos; size = fd_table[fd].fileSize - fd_table[fd].filePos;
}
// Now work out where we want to start reading from // Now work out where we want to start reading from
asector = ssector = fd_table[fd].LBA + (fd_table[fd].filePos >> 11); asector = ssector = fd_table[fd].LBA + (fd_table[fd].filePos >> 11);
off_sector = (fd_table[fd].filePos & 0x7FF); off_sector = (fd_table[fd].filePos & 0x7FF);
@ -179,7 +181,7 @@ int IsoFS_read( int fd, char *buffer, int size )
} }
memcpy_fast(buffer, lb + off_sector, ssize); memcpy_fast(buffer, lb + off_sector, ssize);
} }
if (asize) if (IsoFS_readSectors(asector, asize >> 11, buffer+ssize) != TRUE) if (asize && (IsoFS_readSectors(asector, asize >> 11, buffer+ssize) != TRUE))
{ {
ISOFS_LOG("[IsoFSdrv:read] Couldn't Read from file for some reason"); ISOFS_LOG("[IsoFSdrv:read] Couldn't Read from file for some reason");
return 0; return 0;
@ -228,6 +230,7 @@ int IsoFS_close( int fd)
ISOFS_LOG("[IsoFSdrv:close] ERROR: File does not appear to be open!"); ISOFS_LOG("[IsoFSdrv:close] ERROR: File does not appear to be open!");
return -1; return -1;
} }
ISOFS_LOG("[IsoFSdrv:close] internal fd %d", fd); ISOFS_LOG("[IsoFSdrv:close] internal fd %d", fd);
fd_used[fd] = 0; fd_used[fd] = 0;
files_open--; files_open--;

View File

@ -113,10 +113,10 @@ void TocEntryCopy(TocEntry* tocEntry, const dirTocEntry* internalTocEntry){
filenamelen = internalTocEntry->filenameLength/2; filenamelen = internalTocEntry->filenameLength/2;
if (!(tocEntry->fileProperties & 0x02)){ // if (!(tocEntry->fileProperties & 0x02)){
// strip the ;1 from the filename // strip the ;1 from the filename
// filenamelen -= 2;//(Florin) nah, do not strip ;1 // filenamelen -= 2;//(Florin) nah, do not strip ;1
} // }
for (i=0; i < filenamelen; i++) for (i=0; i < filenamelen; i++)
tocEntry->filename[i] = internalTocEntry->filename[(i<<1)+1]; tocEntry->filename[i] = internalTocEntry->filename[(i<<1)+1];
@ -126,10 +126,10 @@ void TocEntryCopy(TocEntry* tocEntry, const dirTocEntry* internalTocEntry){
else{ else{
filenamelen = internalTocEntry->filenameLength; filenamelen = internalTocEntry->filenameLength;
if (!(tocEntry->fileProperties & 0x02)){ // if (!(tocEntry->fileProperties & 0x02)){
// strip the ;1 from the filename // strip the ;1 from the filename
// filenamelen -= 2;//(Florin) nah, do not strip ;1 // filenamelen -= 2;//(Florin) nah, do not strip ;1
} // }
// use normal string copy // use normal string copy
strncpy(tocEntry->filename,internalTocEntry->filename,128); strncpy(tocEntry->filename,internalTocEntry->filename,128);
@ -140,10 +140,7 @@ void TocEntryCopy(TocEntry* tocEntry, const dirTocEntry* internalTocEntry){
// Check if a TOC Entry matches our extension list // Check if a TOC Entry matches our extension list
int TocEntryCompare(char* filename, char* extensions){ int TocEntryCompare(char* filename, char* extensions){
static char ext_list[129]; static char ext_list[129];
char* token, ext_point;
char* token;
char* ext_point;
strncpy(ext_list,extensions,128); strncpy(ext_list,extensions,128);
ext_list[128]=0; ext_list[128]=0;
@ -167,15 +164,9 @@ int TocEntryCompare(char* filename, char* extensions){
} }
#define CD_SECS 60 /* seconds per minute */
#define CD_FRAMES 75 /* frames per second */
#define CD_MSF_OFFSET 150 /* MSF numbering offset of first frame */
int IsoFS_readSectors(u32 lsn, u32 sectors, void *buf) int IsoFS_readSectors(u32 lsn, u32 sectors, void *buf)
{ {
u32 i; for (u32 i=0; i<sectors; i++)
for (i=0; i<sectors; i++)
{ {
if (DoCDVDreadSector((u8*)((uptr)buf+2048*i), lsn+i, CDVD_MODE_2048) == -1) return 0; if (DoCDVDreadSector((u8*)((uptr)buf+2048*i), lsn+i, CDVD_MODE_2048) == -1) return 0;
} }
@ -191,8 +182,7 @@ int IsoFS_readSectors(u32 lsn, u32 sectors, void *buf)
int IsoFS_getVolumeDescriptor(void) int IsoFS_getVolumeDescriptor(void)
{ {
// Read until we find the last valid Volume Descriptor // Read until we find the last valid Volume Descriptor
int volDescSector; s32 volDescSector;
cdVolDesc localVolDesc; cdVolDesc localVolDesc;
DbgCon::WriteLn("IsoFS_GetVolumeDescriptor called"); DbgCon::WriteLn("IsoFS_GetVolumeDescriptor called");
@ -219,7 +209,8 @@ int IsoFS_getVolumeDescriptor(void)
DbgCon::WriteLn( Color_Green, "CD FileSystem is ISO9660" ); DbgCon::WriteLn( Color_Green, "CD FileSystem is ISO9660" );
else if (CDVolDesc.filesystemType == 2) else if (CDVolDesc.filesystemType == 2)
DbgCon::WriteLn( Color_Green, "CD FileSystem is Joliet"); DbgCon::WriteLn( Color_Green, "CD FileSystem is Joliet");
else DbgCon::Notice("Could not detect CD FileSystem type"); else
DbgCon::Notice("Could not detect CD FileSystem type");
// CdStop(); // CdStop();
@ -227,21 +218,11 @@ int IsoFS_getVolumeDescriptor(void)
} }
int IsoFS_findFile(const char* fname, TocEntry* tocEntry){ int IsoFS_findFile(const char* fname, TocEntry* tocEntry){
char filename[g_MaxPath+1]; char filename[g_MaxPath+1], pathname[JolietMaxPath+1], toc[2048];
char pathname[JolietMaxPath+1];
char toc[2048];
char* dirname; char* dirname;
s32 found_dir, num_dir_sectors, current_sector, dir_lba;
TocEntry localTocEntry; // used for internal checking only
int found_dir;
int num_dir_sectors;
int current_sector;
int dir_lba;
dirTocEntry* tocEntryPointer; dirTocEntry* tocEntryPointer;
TocEntry localTocEntry; // used for internal checking only
DbgCon::WriteLn("IsoFS_findfile(\"%s\") called", params fname); DbgCon::WriteLn("IsoFS_findfile(\"%s\") called", params fname);
@ -439,15 +420,12 @@ int IsoFS_findFile(const char* fname, TocEntry* tocEntry){
// This is the RPC-ready function which takes the request to start the tocEntry retrieval // This is the RPC-ready function which takes the request to start the tocEntry retrieval
int IsoFS_initDirectoryList(char* pathname, char* extensions, unsigned int inc_dirs){ int IsoFS_initDirectoryList(char* pathname, char* extensions, unsigned int inc_dirs){
// int dir_depth = 1;
char toc[2048]; char toc[2048];
char* dirname; char* dirname;
int found_dir; s32 found_dir, num_dir_sectors, current_sector;
int num_dir_sectors; u32 toc_entry_num;
unsigned int toc_entry_num;
dirTocEntry* tocEntryPointer; dirTocEntry* tocEntryPointer;
TocEntry localTocEntry; TocEntry localTocEntry;
int current_sector;
// store the extension list statically for the retrieve function // store the extension list statically for the retrieve function
strncpy(getDirTocData.extension_list, extensions, 128); strncpy(getDirTocData.extension_list, extensions, 128);
@ -540,8 +518,7 @@ int IsoFS_initDirectoryList(char* pathname, char* extensions, unsigned int inc_d
} }
// If we havent found the directory name we wanted then fail // If we havent found the directory name we wanted then fail
if (found_dir != TRUE) if (found_dir != TRUE) return -1;
return -1;
// Get next directory name // Get next directory name
dirname = strtok( NULL, "\\/" ); dirname = strtok( NULL, "\\/" );
@ -660,8 +637,7 @@ int IsoFS_initDirectoryList(char* pathname, char* extensions, unsigned int inc_d
// buffer (tocEntry) must be 18KB in size, and this will be filled with a maximum of 128 entries in one go // buffer (tocEntry) must be 18KB in size, and this will be filled with a maximum of 128 entries in one go
int IsoFS_getDirectories(TocEntry tocEntry[], int req_entries){ int IsoFS_getDirectories(TocEntry tocEntry[], int req_entries){
char toc[2048]; char toc[2048];
int toc_entry_num; s32 toc_entry_num;
dirTocEntry* tocEntryPointer; dirTocEntry* tocEntryPointer;
if (IsoFS_readSectors(getDirTocData.current_sector,1,toc) != TRUE){ if (IsoFS_readSectors(getDirTocData.current_sector,1,toc) != TRUE){
@ -682,8 +658,7 @@ int IsoFS_getDirectories(TocEntry tocEntry[], int req_entries){
tocEntryPointer = (dirTocEntry*)(toc + getDirTocData.current_sector_offset); tocEntryPointer = (dirTocEntry*)(toc + getDirTocData.current_sector_offset);
} }
if (req_entries > 128) if (req_entries > 128) req_entries = 128;
req_entries = 128;
for (toc_entry_num=0; toc_entry_num < req_entries;) for (toc_entry_num=0; toc_entry_num < req_entries;)
{ {

View File

@ -28,6 +28,10 @@
int IsoFS_initDirectoryList(char* pathname, char* extensions, unsigned int inc_dirs); int IsoFS_initDirectoryList(char* pathname, char* extensions, unsigned int inc_dirs);
int IsoFS_getDirectories(TocEntry tocEntry[], int req_entries); int IsoFS_getDirectories(TocEntry tocEntry[], int req_entries);
#define CD_SECS 60 /* seconds per minute */
#define CD_FRAMES 75 /* frames per second */
#define CD_MSF_OFFSET 150 /* MSF numbering offset of first frame */
#if defined(_MSC_VER) #if defined(_MSC_VER)
#pragma pack(1) #pragma pack(1)
#pragma warning(disable:4996) //ignore the stricmp deprecated warning #pragma warning(disable:4996) //ignore the stricmp deprecated warning

View File

@ -205,10 +205,7 @@ isoFile *isoCreate(const char *filename, int flags)
sprintf(Zfile, "%s.table", iso->filename); sprintf(Zfile, "%s.table", iso->filename);
iso->htable = _openfile(Zfile, O_WRONLY); iso->htable = _openfile(Zfile, O_WRONLY);
if (iso->htable == NULL) if (iso->htable == NULL) return NULL;
{
return NULL;
}
} }
iso->handle = _openfile(iso->filename, O_WRONLY | O_CREAT); iso->handle = _openfile(iso->filename, O_WRONLY | O_CREAT);
@ -361,7 +358,7 @@ int isoReadBlock(isoFile *iso, u8 *dst, int lsn)
else else
ret = _isoReadBlock(iso, dst, lsn); ret = _isoReadBlock(iso, dst, lsn);
if (ret == -1) return ret; if (ret == -1) return -1;
if (iso->type == ISOTYPE_CD) if (iso->type == ISOTYPE_CD)
{ {
@ -411,7 +408,7 @@ int isoWriteBlock(isoFile *iso, u8 *src, int lsn)
else else
ret = _isoWriteBlock(iso, src, lsn); ret = _isoWriteBlock(iso, src, lsn);
if (ret == -1) return ret; if (ret == -1) return -1;
return 0; return 0;
} }

View File

@ -54,15 +54,11 @@ int _seekfile(void *handle, u64 offset, int whence)
{ {
u64 ofs = (u64)offset; u64 ofs = (u64)offset;
PLONG _ofs = (LONG*) & ofs; PLONG _ofs = (LONG*) & ofs;
// Console::WriteLn("_seekfile %p, %d_%d", params handle, _ofs[1], _ofs[0]); // Console::WriteLn("_seekfile %p, %d_%d", params handle, _ofs[1], _ofs[0]);
if (whence == SEEK_SET)
{ SetFilePointer(handle, _ofs[0], &_ofs[1], (whence == SEEK_SET) ? FILE_BEGIN : FILE_END);
SetFilePointer(handle, _ofs[0], &_ofs[1], FILE_BEGIN);
}
else
{
SetFilePointer(handle, _ofs[0], &_ofs[1], FILE_END);
}
return 0; return 0;
} }
@ -70,9 +66,8 @@ int _readfile(void *handle, void *dst, int size)
{ {
DWORD ret; DWORD ret;
// Console::WriteLn("_readfile %p %d", params handle, size);
ReadFile(handle, dst, size, &ret, NULL); ReadFile(handle, dst, size, &ret, NULL);
// Console::WriteLn("_readfile ret %d; %d", params ret, GetLastError()); // Console::WriteLn("_readfile(%p, %d) = %d; %d", params handle, size, ret, GetLastError());
return ret; return ret;
} }
@ -80,10 +75,9 @@ int _writefile(void *handle, void *src, int size)
{ {
DWORD ret; DWORD ret;
// Console::WriteLn("_writefile %p, %d", params handle, size);
// _seekfile(handle, _tellfile(handle)); // _seekfile(handle, _tellfile(handle));
WriteFile(handle, src, size, &ret, NULL); WriteFile(handle, src, size, &ret, NULL);
// Console::WriteLn("_writefile ret %d", params ret); // Console::WriteLn("_readfile(%p, %d) = %d", params handle, size, ret);
return ret; return ret;
} }

View File

@ -60,11 +60,13 @@ namespace Console
bool Write( Colors color, const char* fmt, VARG_PARAM dummy, ... ) bool Write( Colors color, const char* fmt, VARG_PARAM dummy, ... )
{ {
varg_assert(); varg_assert();
SetColor( color );
va_list list; va_list list;
va_start(list,dummy); va_start(list,dummy);
Write( vfmt_string( fmt, list ).c_str() ); Write( vfmt_string( fmt, list ).c_str() );
va_end(list); va_end(list);
ClearColor();
return false; return false;
} }