diff --git a/desmume/src/debug.c b/desmume/src/debug.c index 6359802b5..a8fdca0b9 100644 --- a/desmume/src/debug.c +++ b/desmume/src/debug.c @@ -23,6 +23,11 @@ #include #include +/////// Console vars +#define BUFFER_SIZE 100 +HANDLE hConsole; +/////// + ////////////////////////////////////////////////////////////////////////////// Debug * DebugInit(const char * n, DebugOutType t, char * s) { @@ -158,3 +163,53 @@ void LogStop(void) { ////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////// Console +#ifdef WIN32 +void OpenConsole() +{ + COORD csize; + CONSOLE_SCREEN_BUFFER_INFO csbiInfo; + SMALL_RECT srect; + char buf[256]; + + if (hConsole) return; + AllocConsole(); + memset(buf,0,256); + sprintf(buf,"DeSmuME v%s OUTPUT", VERSION); + SetConsoleTitle(TEXT(buf)); + csize.X = 60; + csize.Y = 800; + SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), csize); + GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbiInfo); + srect = csbiInfo.srWindow; + srect.Right = srect.Left + 99; + srect.Bottom = srect.Top + 64; + SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &srect); + hConsole = GetStdHandle(STD_OUTPUT_HANDLE); +} + +void CloseConsole() { + if (hConsole == NULL) return; + FreeConsole(); + hConsole = NULL; +} + +void printlog(char *fmt, ...) { + va_list list; + char msg[512],msg2[522]; + wchar_t msg3[522]; + char *ptr; + DWORD tmp; + int len, s; + int i, j; + + LPWSTR ret; + + va_start(list,fmt); + _vsnprintf(msg,511,fmt,list); + msg[511] = '\0'; + va_end(list); + ptr=msg; len=strlen(msg); + WriteConsole(hConsole,ptr, (DWORD)len, &tmp, 0); +} +#endif \ No newline at end of file diff --git a/desmume/src/debug.h b/desmume/src/debug.h index 2508f0f0a..38224a270 100644 --- a/desmume/src/debug.h +++ b/desmume/src/debug.h @@ -20,6 +20,7 @@ #ifndef DEBUG_H #define DEBUG_H +#include #include "types.h" #include @@ -50,6 +51,18 @@ extern Debug * MainLog; void LogStart(void); void LogStop(void); +#ifdef WIN32 +#ifdef BETA_VERSION +extern void OpenConsole(); +extern void CloseConsole(); +extern void printlog(LPCTSTR *fmt, ...); +#else +#define OpenConsole() +#define CloseConsole() +#define printlog(...) +#endif +#endif + #ifdef DEBUG #define LOG(...) DebugPrintf(MainLog, __FILE__, __LINE__, __VA_ARGS__) #else diff --git a/desmume/src/windows/main.c b/desmume/src/windows/main.c index 1433088b1..45c8a34ad 100644 --- a/desmume/src/windows/main.c +++ b/desmume/src/windows/main.c @@ -532,6 +532,7 @@ void NDS_Pause() execute = FALSE; SPU_Pause(1); while (!paused) {} + printlog("Paused\n"); } void NDS_UnPause() @@ -539,6 +540,7 @@ void NDS_UnPause() paused = FALSE; execute = TRUE; SPU_Pause(0); + printlog("Unpaused\n"); } void StateSaveSlot(int num) @@ -546,6 +548,7 @@ void StateSaveSlot(int num) NDS_Pause(); savestate_slot(num); NDS_UnPause(); + printlog("Saved %i state\n",num); } void StateLoadSlot(int num) @@ -553,11 +556,13 @@ void StateLoadSlot(int num) NDS_Pause(); loadstate_slot(num); NDS_UnPause(); + printlog("Loaded %i state\n",num); } BOOL LoadROM(char * filename, const char *cflash_disk_image) { NDS_Pause(); + if (strcmp(filename,"")!=0) printlog("Loading ROM: %s\n",filename); if (NDS_LoadROM(filename, backupmemorytype, backupmemorysize, cflash_disk_image) > 0) return TRUE; @@ -654,7 +659,6 @@ int WINAPI WinMain (HINSTANCE hThisInstance, struct armcpu_ctrl_iface *arm9_ctrl_iface; struct armcpu_ctrl_iface *arm7_ctrl_iface; #endif - struct configured_features my_config; @@ -666,6 +670,9 @@ int WINAPI WinMain (HINSTANCE hThisInstance, InitCustomControls(); + OpenConsole(); // Init debug console + printlog("DeSmuME v%s starting...\n\n",VERSION); + /* default the firmware settings, they may get changed later */ NDS_FillDefaultFirmwareConfigData( &win_fw_config); @@ -711,7 +718,7 @@ int WINAPI WinMain (HINSTANCE hThisInstance, InitDesViewBox(); InitTileViewBox(); InitOAMViewBox(); - + printlog("Init NDS\n"); #ifdef GDB_STUB if ( my_config.arm9_gdb_port != 0) { arm9_gdb_stub = createStub_gdb( my_config.arm9_gdb_port, @@ -773,7 +780,7 @@ int WINAPI WinMain (HINSTANCE hThisInstance, #ifdef BETA_VERSION EnableMenuItem (menu, IDM_SUBMITBUGREPORT, MF_GRAYED); #endif - + printlog("Init sound core\n"); sndcoretype = GetPrivateProfileInt("Sound","SoundCore", SNDCORE_DIRECTX, IniName); sndbuffersize = GetPrivateProfileInt("Sound","SoundBufferSize", 735 * 4, IniName); @@ -875,6 +882,7 @@ int WINAPI WinMain (HINSTANCE hThisInstance, #ifdef DEBUG LogStop(); #endif + CloseConsole(); /* The program return-value is 0 - The value that PostQuitMessage() gave */ return messages.wParam; }