/**************************************************************************** REMARKS: Load the SNAP driver and intialise it. ****************************************************************************/ static GA_devCtx *LoadDriver( int deviceIndex) { GA_devCtx *dc; /* Save the state of the console */ hwndConsole = PM_openConsole(0,0,640,480,8,true); if ((stateBuf = malloc(PM_getConsoleStateSize())) == NULL) PM_fatalError("Out of memory!"); PM_saveConsoleState(stateBuf,hwndConsole); /* Register our fatal error cleanup handler */ PM_setFatalErrorCleanup(Cleanup); /* Load the driver */ if ((dc = GA_loadDriver(deviceIndex,false)) == NULL) PM_fatalError(GA_errorMsg(GA_status())); init.dwSize = sizeof(init); if (!GA_queryFunctions(dc,GA_GET_INITFUNCS,&init)) PM_fatalError("Unable to get device driver functions!"); /* Cleanup. We do this here because we know that we will not * be setting any graphics modes after loading the driver, * so we can properly restore the console state and make calls * to non-destructive functions in the driver before we unload * it. */ Cleanup(); return dc; }
/**************************************************************************** REMARKS: Load the SNAP driver and intialise it. ****************************************************************************/ static void LoadDriver( int deviceIndex) { if (!dc) { if ((dc = GA_loadDriver(deviceIndex,false)) == NULL) PM_fatalError(GA_errorMsg(GA_status())); init.dwSize = sizeof(init); if (!GA_queryFunctions(dc,GA_GET_INITFUNCS,&init)) PM_fatalError("Unable to get device driver functions!"); opt.dwSize = sizeof(opt); init.GetOptions(&opt); } }
/**************************************************************************** REMARKS: Load the SNAP driver and intialise it. ****************************************************************************/ static GA_devCtx *LoadDriver( int deviceIndex) { GA_devCtx *dc; #ifdef ISV_LICENSE /* Register ISV license for SNAP DDC API */ GA_registerLicense(OemLicense,false); #endif if ((dc = GA_loadDriver(deviceIndex,false)) == NULL) PM_fatalError(GA_errorMsg(GA_status())); init.dwSize = sizeof(init); if (!GA_queryFunctions(dc,GA_GET_INITFUNCS,&init)) PM_fatalError("Unable to get device driver functions!"); return dc; }
/**************************************************************************** REMARKS: Main routine. Expects the x & y resolution of the desired video mode to be passed on the command line. Will print out a list of available video modes if no command line is present. ****************************************************************************/ int main( int argc, char *argv[]) { /* Check to see if we are running in a window */ if (PM_runningInAWindow()) { printf("This program cannot run in a window. Please switch to a fullscreen mode.\n"); return -1; } /* Save the state of the console */ hwndConsole = PM_openConsole(0,0,640,480,8,true); if ((stateBuf = malloc(PM_getConsoleStateSize())) == NULL) PM_fatalError("Out of memory!"); PM_saveConsoleState(stateBuf,hwndConsole); /* Register our fatal error cleanup handler */ PM_setFatalErrorCleanup(FatalErrorCleanup); /* Register the ISV license file if desired */ #ifdef ISV_LICENSE GA_registerLicense(OemLicense,false); #endif /* Load the device driver for this device */ if ((dc = GA_loadDriver(0,false)) == NULL) PM_fatalError(GA_errorMsg(GA_status())); init.dwSize = sizeof(init); if (!GA_queryFunctions(dc,GA_GET_INITFUNCS,&init)) PM_fatalError("Unable to get device driver functions!"); driver.dwSize = sizeof(driver); if (!GA_queryFunctions(dc,GA_GET_DRIVERFUNCS,&driver)) PM_fatalError("Unable to get device driver functions!"); /* Display available modes for invalid command line */ if (argc != 4) { /* Restore the console */ PM_restoreConsoleState(stateBuf,hwndConsole); PM_closeConsole(hwndConsole); AvailableModes(); GA_unloadDriver(dc); return 0; } /* Get requested resolution, start graphics and draw pattern */ xRes = atoi(argv[1]); yRes = atoi(argv[2]); bpp = atoi(argv[3]); if ((oldMode = InitGraphics(xRes,yRes,bpp)) != -1) { DrawMoire(); PM_getch(); virtualX = virtualY = bytesPerLine = -1; init.SetVideoMode(oldMode,&virtualX,&virtualY,&bytesPerLine,&maxMem,0,NULL); } /* Restore the console */ ExitSoftwareRasterizer(); PM_restoreConsoleState(stateBuf,hwndConsole); PM_closeConsole(hwndConsole); /* Unload the device driver */ GA_unloadDriver(dc); if (oldMode == -1) printf("Unable to find specified graphics mode, or error starting mode.\n"); return 0; }