diff --git a/res/VBA.rc b/res/VBA.rc index 2b5a61b1..eb9a48c2 100644 --- a/res/VBA.rc +++ b/res/VBA.rc @@ -76,7 +76,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMEN CAPTION "Link Options" FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN - CONTROL "Tab1",IDC_TAB1,"SysTabControl32",0x0,9,6,240,162 + CONTROL "Tab1",IDC_TAB1,"SysTabControl32",0x0,9,7,240,162 PUSHBUTTON "OK",ID_OK,57,180,60,15 PUSHBUTTON "Cancel",ID_CANCEL,140,180,57,15 END @@ -1121,8 +1121,8 @@ GUIDELINES DESIGNINFO BEGIN IDD_LINKTAB, DIALOG BEGIN - RIGHTMARGIN, 225 - BOTTOMMARGIN, 162 + RIGHTMARGIN, 249 + BOTTOMMARGIN, 195 END IDD_OPENDLG, DIALOG diff --git a/src/Link.cpp b/src/Link.cpp index 93ce6b04..d93a3c2e 100644 --- a/src/Link.cpp +++ b/src/Link.cpp @@ -46,7 +46,7 @@ char linkevent[] = "VBA link event "; static int i, j; int linktimeout = 1000; int linklog = 0; -FILE *jjj = NULL; +FILE *linklogfile = NULL; LANLINKDATA lanlink; u16 linkdata[4]; int lspeed = 0; @@ -123,15 +123,15 @@ void StartLink(WORD value){ else UPDATE_REG(0x134, 3); break; case NORMAL8: - if(linklog) fprintf(jjj, "Attempt to use 8-bit Normal mode %04x\n", value); + if(linklog) fprintf(linklogfile, "Attempt to use 8-bit Normal mode %04x\n", value); UPDATE_REG(0x128, value); break; case NORMAL32: - if(linklog) fprintf(jjj, "Attempt to use 32-bit Normal mode %04x %x%x\n", value, READ16LE(&ioMem[0x122]), READ16LE(&ioMem[0x120])); + if(linklog) fprintf(linklogfile, "Attempt to use 32-bit Normal mode %04x %x%x\n", value, READ16LE(&ioMem[0x122]), READ16LE(&ioMem[0x120])); UPDATE_REG(0x128, value); break; case UART: - if(linklog) fprintf(jjj, "Attempt to use UART mode %04x\n", value); + if(linklog) fprintf(linklogfile, "Attempt to use UART mode %04x\n", value); UPDATE_REG(0x128, value); break; default: @@ -156,8 +156,8 @@ void StartGPLink(u16 value){ break; case GP: if(linklog){ - if(value==0x8000) fprintf(jjj, "Circuit reset\n"); - else if(!adapter) fprintf(jjj, "Attempt to use General-purpose mode %04x\n", value); + if(value==0x8000) fprintf(linklogfile, "Circuit reset\n"); + else if(!adapter) fprintf(linklogfile, "Attempt to use General-purpose mode %04x\n", value); } if(adapter) rfu_state = RFU_INIT; break; @@ -176,7 +176,7 @@ void StartJOYLink(u16 value){ UPDATE_REG(0x140, 0); return; } - if(GetSioMode(READ16LE(&ioMem[0x128]), READ16LE(&ioMem[0x134]))==JOYBUS&&linklog) fprintf(jjj, "Attempt to use JOY-BUS mode %04x\n", value); + if(GetSioMode(READ16LE(&ioMem[0x128]), READ16LE(&ioMem[0x134]))==JOYBUS&&linklog) fprintf(linklogfile, "Attempt to use JOY-BUS mode %04x\n", value); return; } @@ -229,7 +229,7 @@ void LinkUpdate(int ticks){ UPDATE_REG(0x122, linkdata[1]); UPDATE_REG(0x124, linkdata[2]); UPDATE_REG(0x126, linkdata[3]); - if(linklog) fprintf(jjj, "%04x %04x %04x %04x %10u\n", linkdata[0], linkdata[1], linkdata[2], linkdata[3], savedlinktime); + if(linklog) fprintf(linklogfile, "%04x %04x %04x %04x %10u\n", linkdata[0], linkdata[1], linkdata[2], linkdata[3], savedlinktime); oncewait = true; } else { after = true; @@ -237,7 +237,7 @@ void LinkUpdate(int ticks){ UPDATE_REG(0x122, linkdata[1]); UPDATE_REG(0x124, linkdata[2]); UPDATE_REG(0x126, linkdata[3]); - if(linklog) fprintf(jjj, "%04x %04x %04x %04x %10u\n", linkdata[0], linkdata[1], linkdata[2], linkdata[3], savedlinktime); + if(linklog) fprintf(linklogfile, "%04x %04x %04x %04x %10u\n", linkdata[0], linkdata[1], linkdata[2], linkdata[3], savedlinktime); } } @@ -273,7 +273,7 @@ void LinkUpdate(int ticks){ if(WaitForSingleObject(linksync[linkid], linktimeout)==WAIT_TIMEOUT) linkmem->numtransfers=0; ResetEvent(linksync[linkid]); - if(linklog) fprintf(jjj, "%04x %04x %04x %04x %10u\n", + if(linklog) fprintf(linklogfile, "%04x %04x %04x %04x %10u\n", linkmem->linkdata[0], linkmem->linkdata[1], linkmem->linkdata[2], linkmem->linkdata[3], linkmem->lastlinktime); } @@ -288,7 +288,7 @@ void LinkUpdate(int ticks){ if(WaitForSingleObject(linksync[linkid], linktimeout)==WAIT_TIMEOUT) linkmem->numtransfers=0; ResetEvent(linksync[linkid]); - if(linklog) fprintf(jjj, "%04x %04x %04x %04x %10u\n", + if(linklog) fprintf(linklogfile, "%04x %04x %04x %04x %10u\n", linkmem->linkdata[0], linkmem->linkdata[1], linkmem->linkdata[2], linkmem->linkdata[3], linkmem->lastlinktime); } transfer = 0; @@ -659,14 +659,23 @@ int openLinkLog(void){ char filename[20]; if(linklog){ sprintf(filename, "vbalog%1d.txt", vbaid+1); - if((jjj=fopen(filename, "wt"))==NULL){ + if((linklogfile=fopen(filename, "wt"))==NULL){ return 0; } - fprintf(jjj, "GBA0 GBA1 GBA2 GBA3 clocks between transfers\n"); + fprintf(linklogfile, "GBA0 GBA1 GBA2 GBA3 clocks between transfers\n"); } return 1; } +void closeLinkLog() +{ + if(linklogfile) + { + fclose(linklogfile); + linklogfile=NULL; + } +} + void CloseLink(void){ if(lanlink.connected){ if(linkid){ @@ -700,7 +709,7 @@ void CloseLink(void){ } } regSetDwordValue("LAN", lanlink.active); - if(linklog) fclose(jjj); + if(linklog) closeLinkLog(); closesocket(lanlink.tcpsocket); WSACleanup(); return; @@ -1043,7 +1052,7 @@ void LinkSStop(void){ UPDATE_REG(0x122, linkdata[1]); UPDATE_REG(0x124, linkdata[2]); UPDATE_REG(0x126, linkdata[3]); - if(linklog) fprintf(jjj, "%04x %04x %04x %04x %10u\n", linkdata[0], linkdata[1], linkdata[2], linkdata[3], savedlinktime); + if(linklog) fprintf(linklogfile, "%04x %04x %04x %04x %10u\n", linkdata[0], linkdata[1], linkdata[2], linkdata[3], savedlinktime); } return; } diff --git a/src/Link.h b/src/Link.h index 5570dab8..a2248d6d 100644 --- a/src/Link.h +++ b/src/Link.h @@ -107,10 +107,11 @@ extern void LinkUpdate(void); extern void LinkChildStop(void); extern void LinkChildSend(u16); extern int openLinkLog(void); +extern void closeLinkLog(); extern void CloseLanLink(void); extern LANLINKDATA lanlink; -extern FILE *jjj; +extern FILE *linklogfile; extern int vbaid; extern int linklog; extern bool adapter; diff --git a/src/win32/MainWndOptions.cpp b/src/win32/MainWndOptions.cpp index 75fe63d3..541190c2 100644 --- a/src/win32/MainWndOptions.cpp +++ b/src/win32/MainWndOptions.cpp @@ -1741,14 +1741,12 @@ void MainWnd::OnLinkOptions() void MainWnd::OnOptionsLinkLog() { if(linklog){ - if(jjj!=NULL) fclose(jjj); + if(linklogfile!=NULL) fclose(linklogfile); linklog = 0; - jjj = NULL; + linklogfile = NULL; } else { - char filename[20]; - sprintf(filename, "vbalog%1d.txt", vbaid+1); - jjj = fopen(filename, "wt"); - linklog = 1; + linklog=1; + openLinkLog(); } } diff --git a/src/win32/VBA.cpp b/src/win32/VBA.cpp index b3e1d25a..682d3f96 100644 --- a/src/win32/VBA.cpp +++ b/src/win32/VBA.cpp @@ -122,7 +122,7 @@ extern int InitLink(void); extern void CloseLink(void); //extern int linkid; extern char inifile[]; -extern FILE *jjj; +extern FILE *linklogfile; /* ------------------- */ #ifdef _DEBUG #define new DEBUG_NEW @@ -462,10 +462,16 @@ BOOL VBA::InitInstance() if(p) *p = 0; + if(!InitLink()) + return FALSE;; + regInit(winBuffer); loadSettings(); + if(!openLinkLog()) + return FALSE; + if(!initInput()) return FALSE; @@ -1513,6 +1519,8 @@ void VBA::loadSettings() linktimeout = regQueryDwordValue("LinkTimeout", 1000); linklog = regQueryDwordValue("Linklog", false) ? true : false; + if(linklog) + openLinkLog(); adapter = regQueryDwordValue("RFU", false) ? true : false;