/* Copyright 2016-2017 StapleButter This file is part of melonDS. melonDS is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. melonDS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with melonDS. If not, see http://www.gnu.org/licenses/. */ #include #include #include #include #include #include #include "../types.h" #include "../version.h" SDL_Window* MainWindow; SDL_GLContext MainGL; void RunMainWindow(); int main(int argc, char** argv) { srand(time(NULL)); // http://stackoverflow.com/questions/14543333/joystick-wont-work-using-sdl SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1"); if (SDL_Init(SDL_INIT_EVERYTHING) < 0) { printf("SDL shat itself :(\n"); return 1; } RunMainWindow(); SDL_Quit(); return 0; } #ifdef __WIN32__ #include int CALLBACK WinMain(HINSTANCE hinst, HINSTANCE hprev, LPSTR cmdline, int cmdshow) { char cmdargs[16][256]; int arg = 0; int j = 0; bool inquote = false; int len = strlen(cmdline); for (int i = 0; i < len; i++) { char c = cmdline[i]; if (c == '\0') break; if (c == '"') inquote = !inquote; if (!inquote && c==' ') { if (j > 255) j = 255; if (arg < 16) cmdargs[arg][j] = '\0'; arg++; j = 0; } else { if (arg < 16 && j < 255) cmdargs[arg][j] = c; j++; } } if (j > 255) j = 255; if (arg < 16) cmdargs[arg][j] = '\0'; return main(arg, (char**)cmdargs); } #endif void RunMainWindow() { MainWindow = SDL_CreateWindow("melonDS " MELONDS_VERSION, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE); //MainGL= SDL_GL_CreateContext(MainWindow); // event loop bool run = true; while (run) { SDL_Event evt; while (SDL_PollEvent(&evt)) { switch (evt.type) { case SDL_WINDOWEVENT: if (evt.window.event == SDL_WINDOWEVENT_CLOSE) { run = false; break; } break; } } // do extra shit here /*glClearColor(1, 0, 1, 1); glClear(GL_COLOR_BUFFER_BIT); SDL_GL_SwapWindow(MainWindow); SDL_Delay(50);*/ } //SDL_GL_DeleteContext(MainGL); SDL_DestroyWindow(MainWindow); }