BOOL APIENTRY DllMain( HINSTANCE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { hmodule = hModule; switch(ul_reason_for_call) { case DLL_PROCESS_ATTACH: sysver = SystemVersion(); if(sysver==2) { Opendriver(); } break; case DLL_PROCESS_DETACH: if(sysver==2) { CloseHandle(hdriver); } break; } return TRUE; }
extern "C" BOOL OpenPort (int port, int addr, int ecp) { char *pname; if (port == -1) return OpenUSB(); switch (port) { case 1: pname = "LPT1"; break; case 2: pname = "LPT2"; break; case 3: pname = "LPT3"; break; case 4: pname = NULL; break; default:return FALSE; break; } if (pname) { pport = CreateFile(pname,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL); if (pport == INVALID_HANDLE_VALUE) { baseport = 0; ecpoffset = 0; MessageBox(topHWnd,"Parallel port is in use!","CopyNES",MB_OK | MB_ICONERROR); return FALSE; } } baseport = addr; ecpoffset = ecp; sysver = SystemVersion(); if (sysver == 1) { connection_initialized = TRUE; return TRUE; } else if ((sysver == 2) && (IsInpOutDriverOpen())) { connection_initialized = TRUE; return TRUE; } else { if (pport != INVALID_HANDLE_VALUE) CloseHandle(pport); pport = INVALID_HANDLE_VALUE; baseport = 0; ecpoffset = 0; MessageBox(topHWnd,"Failed to load parallel port driver!","CopyNES",MB_OK | MB_ICONERROR); return FALSE; } }
Launcher::Launcher(int argc, char *argv[]) : Core::Launcher(argc, argv, DeviceModel(), SystemVersion()) { }