From 86495a83c16538ddcab7da4ea68de38ee2d1837e Mon Sep 17 00:00:00 2001 From: ShizZy Date: Wed, 4 Sep 2013 22:09:15 -0400 Subject: various fixes to be able to build project --- src/akiru/akiru.rc | Bin 3284 -> 3144 bytes src/akiru/akiru.vcxproj | 44 ++++----- src/akiru/akiru.vcxproj.filters | 19 ++-- src/akiru/src/akiru.cpp | 135 +++++++++++----------------- src/akiru/src/emuwindow/emu_window_glfw.cpp | 100 +++++++++++++++++++++ src/akiru/src/emuwindow/emu_window_glfw.h | 56 ++++++++++++ src/akiru/src/emuwindow/emuwindow_glfw.cpp | 100 --------------------- src/akiru/src/emuwindow/emuwindow_glfw.h | 56 ------------ 8 files changed, 236 insertions(+), 274 deletions(-) create mode 100644 src/akiru/src/emuwindow/emu_window_glfw.cpp create mode 100644 src/akiru/src/emuwindow/emu_window_glfw.h delete mode 100644 src/akiru/src/emuwindow/emuwindow_glfw.cpp delete mode 100644 src/akiru/src/emuwindow/emuwindow_glfw.h (limited to 'src/akiru') diff --git a/src/akiru/akiru.rc b/src/akiru/akiru.rc index db4fc80b9..dd5241bdf 100644 Binary files a/src/akiru/akiru.rc and b/src/akiru/akiru.rc differ diff --git a/src/akiru/akiru.vcxproj b/src/akiru/akiru.vcxproj index f5ab86719..f74948853 100644 --- a/src/akiru/akiru.vcxproj +++ b/src/akiru/akiru.vcxproj @@ -46,35 +46,35 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + @@ -190,13 +190,13 @@ - + - + diff --git a/src/akiru/akiru.vcxproj.filters b/src/akiru/akiru.vcxproj.filters index 2fc1128af..a0cff2548 100644 --- a/src/akiru/akiru.vcxproj.filters +++ b/src/akiru/akiru.vcxproj.filters @@ -2,32 +2,23 @@ - - emuwindow - - - emuwindow + + emu_window - - emuwindow - - - emuwindow + + emu_window - - - - + {e3161526-9f53-4670-8dae-2be81ff01bc2} diff --git a/src/akiru/src/akiru.cpp b/src/akiru/src/akiru.cpp index 0d15c5b20..bb69cf1b1 100644 --- a/src/akiru/src/akiru.cpp +++ b/src/akiru/src/akiru.cpp @@ -1,9 +1,9 @@ -/*! +/** * Copyright (C) 2013 Akiru Emulator * - * @file akiry.cpp + * @file akiru.cpp * @author ShizZy - * @date 2012-02-11 + * @date 2013-09-04 * @brief Main entry point * * @section LICENSE @@ -23,102 +23,73 @@ */ #include "common.h" -#include "platform.h" -#if EMU_PLATFORM == PLATFORM_LINUX -#include -#endif +//#if EMU_PLATFORM == PLATFORM_LINUX +//#include +//#endif -#include "config.h" -#include "xml.h" -#include "x86_utils.h" - -//#include "core.h" -//#include "dvd/loader.h" -//#include "powerpc/cpu_core.h" -//#include "hw/hw.h" -//#include "video_core.h" - -#include "emuwindow/emuwindow_glfw.h" +#include "emu_window/emu_window_glfw.h" #include "akiru.h" -//////////////////////////////////////////////////////////////////////////////////////////////////// -// This is needed to fix SDL in certain build environments -#ifdef main -#undef main -#endif - //#define PLAY_FIFO_RECORDING /// Application entry point int __cdecl main(int argc, char **argv) { u32 tight_loop; - LOG_NOTICE(TMASTER, APP_NAME " starting...\n"); + printf("akiru starting...\n"); - char program_dir[MAX_PATH]; - _getcwd(program_dir, MAX_PATH-1); - size_t cwd_len = strlen(program_dir); - program_dir[cwd_len] = '/'; - program_dir[cwd_len+1] = '\0'; + //char program_dir[MAX_PATH]; + //_getcwd(program_dir, MAX_PATH-1); + //size_t cwd_len = strlen(program_dir); + //program_dir[cwd_len] = '/'; + //program_dir[cwd_len+1] = '\0'; - common::ConfigManager config_manager; - config_manager.set_program_dir(program_dir, MAX_PATH); - config_manager.ReloadConfig(NULL); - core::SetConfigManager(&config_manager); + //common::ConfigManager config_manager; + //config_manager.set_program_dir(program_dir, MAX_PATH); + //config_manager.ReloadConfig(NULL); + //core::SetConfigManager(&config_manager); EmuWindow_GLFW* emu_window = new EmuWindow_GLFW; - if (E_OK != core::Init(emu_window)) { - LOG_ERROR(TMASTER, "core initialization failed, exiting..."); - core::Kill(); - exit(1); - } - -#ifndef PLAY_FIFO_RECORDING - // Load a game or die... - if (E_OK == dvd::LoadBootableFile(common::g_config->default_boot_file())) { - if (common::g_config->enable_auto_boot()) { - core::Start(); - } else { - LOG_ERROR(TMASTER, "Autoboot required in no-GUI mode... Exiting!\n"); - } - } else { - LOG_ERROR(TMASTER, "Failed to load a bootable file... Exiting!\n"); - exit(E_ERR); - } - // run the game - while(core::SYS_DIE != core::g_state) { - if (core::SYS_RUNNING == core::g_state) { - if(!(cpu->is_on)) { - cpu->Start(); // Initialize and start CPU. - } else { - for(tight_loop = 0; tight_loop < 10000; ++tight_loop) { - cpu->execStep(); - } - } - } else if (core::SYS_HALTED == core::g_state) { - core::Stop(); - } - } - core::Kill(); -#else - // load fifo log and replay it - - // TODO: Restructure initialization process - Fix Flipper_Open being called from dvd loaders (wtf?) - Flipper_Open(); - video_core::Start(emu_window); - core::SetState(core::SYS_RUNNING); - - fifo_player::FPFile file; - fifo_player::Load("/home/tony/20_frames.gff", file); - fifo_player::PlayFile(file); + //if (E_OK != core::Init(emu_window)) { + // LOG_ERROR(TMASTER, "core initialization failed, exiting..."); + // core::Kill(); + // exit(1); + //} + + //// Load a game or die... + //if (E_OK == dvd::LoadBootableFile(common::g_config->default_boot_file())) { + // if (common::g_config->enable_auto_boot()) { + // core::Start(); + // } else { + // LOG_ERROR(TMASTER, "Autoboot required in no-GUI mode... Exiting!\n"); + // } + //} else { + // LOG_ERROR(TMASTER, "Failed to load a bootable file... Exiting!\n"); + // exit(E_ERR); + //} + //// run the game + //while(core::SYS_DIE != core::g_state) { + // if (core::SYS_RUNNING == core::g_state) { + // if(!(cpu->is_on)) { + // cpu->Start(); // Initialize and start CPU. + // } else { + // for(tight_loop = 0; tight_loop < 10000; ++tight_loop) { + // cpu->execStep(); + // } + // } + // } else if (core::SYS_HALTED == core::g_state) { + // core::Stop(); + // } + //} + //core::Kill(); + + while (1) { + } - // TODO: Wait for video core to finish - PlayFile should handle this - while (1); -#endif delete emu_window; - return E_OK; + return 0; } diff --git a/src/akiru/src/emuwindow/emu_window_glfw.cpp b/src/akiru/src/emuwindow/emu_window_glfw.cpp new file mode 100644 index 000000000..884c10ad0 --- /dev/null +++ b/src/akiru/src/emuwindow/emu_window_glfw.cpp @@ -0,0 +1,100 @@ +/** + * Copyright (C) 2005-2012 Gekko Emulator + * + * @file emuwindow_glfw.h + * @author ShizZy + * @date 2012-04-20 + * @brief Implementation implementation of EmuWindow class for GLFW + * + * @section LICENSE + * This program 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 2 of + * the License, or (at your option) any later version. + * + * This program 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 at + * http://www.gnu.org/copyleft/gpl.html + * + * Official project repository can be found at: + * http://code.google.com/p/gekko-gc-emu/ + */ + +#include "common.h" +#include "video_core.h" +#include "emuwindow_glfw.h" +#include "gc_controller.h" +#include "keyboard_input/keyboard_input.h" + +static void OnKeyEvent(GLFWwindow win, int key, int action) { + EmuWindow_GLFW* emuwin = (EmuWindow_GLFW*)glfwGetWindowUserPointer(win); + input_common::GCController::GCButtonState state; + + if (action == GLFW_PRESS) { + state = input_common::GCController::PRESSED; + } else { + state = input_common::GCController::RELEASED; + } + for (int channel = 0; channel < 4 && emuwin->controller_interface(); ++channel) { + emuwin->controller_interface()->SetControllerStatus(channel, key, state); + } +} + +static void OnWindowSizeEvent(GLFWwindow win, int width, int height) { + EmuWindow_GLFW* emuwin = (EmuWindow_GLFW*)glfwGetWindowUserPointer(win); + emuwin->set_client_area_width(width); + emuwin->set_client_area_height(height); +} + +/// EmuWindow_GLFW constructor +EmuWindow_GLFW::EmuWindow_GLFW() { + // Initialize the window + if(glfwInit() != GL_TRUE) { + LOG_ERROR(TVIDEO, "Failed to initialize GLFW! Exiting..."); + exit(E_ERR); + } + glfwWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_OPENGL_VERSION_MINOR, 1); + render_window_ = glfwCreateWindow(640, 480, GLFW_WINDOWED, "gekko", 0); + + // Setup callbacks + glfwSetWindowUserPointer(render_window_, this); + glfwSetKeyCallback(render_window_, OnKeyEvent); + glfwSetWindowSizeCallback(render_window_, OnWindowSizeEvent); + + DoneCurrent(); +} + +/// EmuWindow_GLFW destructor +EmuWindow_GLFW::~EmuWindow_GLFW() { + glfwTerminate(); +} + +/// Swap buffers to display the next frame +void EmuWindow_GLFW::SwapBuffers() { + glfwSwapBuffers(render_window_); +} + +/// Polls window events +void EmuWindow_GLFW::PollEvents() { + // TODO(ShizZy): Does this belong here? This is a reasonable place to update the window title + // from the main thread, but this should probably be in an event handler... + static char title[128]; + sprintf(title, "%s (FPS: %02.02f)", window_title_.c_str(), + video_core::g_renderer->current_fps()); + glfwSetWindowTitle(render_window_, title); + + glfwPollEvents(); +} + +/// Makes the GLFW OpenGL context current for the caller thread +void EmuWindow_GLFW::MakeCurrent() { + glfwMakeContextCurrent(render_window_); +} + +/// Releases (dunno if this is the "right" word) the GLFW context from the caller thread +void EmuWindow_GLFW::DoneCurrent() { + glfwMakeContextCurrent(NULL); +} diff --git a/src/akiru/src/emuwindow/emu_window_glfw.h b/src/akiru/src/emuwindow/emu_window_glfw.h new file mode 100644 index 000000000..1256cabe4 --- /dev/null +++ b/src/akiru/src/emuwindow/emu_window_glfw.h @@ -0,0 +1,56 @@ +/** + * Copyright (C) 2005-2012 Gekko Emulator + * + * @file emuwindow_glfw.h + * @author ShizZy + * @date 2012-04-20 + * @brief Implementation implementation of EmuWindow class for GLFW + * + * @section LICENSE + * This program 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 2 of + * the License, or (at your option) any later version. + * + * This program 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 at + * http://www.gnu.org/copyleft/gpl.html + * + * Official project repository can be found at: + * http://code.google.com/p/gekko-gc-emu/ + */ + +#ifndef VIDEO_CORE_EMUWINDOW_GLFW_ +#define VIDEO_CORE_EMUWINDOW_GLFW_ + +#include +#include + +#include "video/emuwindow.h" + +class EmuWindow_GLFW : public EmuWindow { +public: + EmuWindow_GLFW(); + ~EmuWindow_GLFW(); + + /// Swap buffers to display the next frame + void SwapBuffers(); + + /// Polls window events + void PollEvents(); + + /// Makes the graphics context current for the caller thread + void MakeCurrent(); + + /// Releases (dunno if this is the "right" word) the GLFW context from the caller thread + void DoneCurrent(); + + GLFWwindow render_window_; ///< Internal GLFW render window + +private: + +}; + +#endif // VIDEO_CORE_EMUWINDOW_GLFW_ diff --git a/src/akiru/src/emuwindow/emuwindow_glfw.cpp b/src/akiru/src/emuwindow/emuwindow_glfw.cpp deleted file mode 100644 index 884c10ad0..000000000 --- a/src/akiru/src/emuwindow/emuwindow_glfw.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/** - * Copyright (C) 2005-2012 Gekko Emulator - * - * @file emuwindow_glfw.h - * @author ShizZy - * @date 2012-04-20 - * @brief Implementation implementation of EmuWindow class for GLFW - * - * @section LICENSE - * This program 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 2 of - * the License, or (at your option) any later version. - * - * This program 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 at - * http://www.gnu.org/copyleft/gpl.html - * - * Official project repository can be found at: - * http://code.google.com/p/gekko-gc-emu/ - */ - -#include "common.h" -#include "video_core.h" -#include "emuwindow_glfw.h" -#include "gc_controller.h" -#include "keyboard_input/keyboard_input.h" - -static void OnKeyEvent(GLFWwindow win, int key, int action) { - EmuWindow_GLFW* emuwin = (EmuWindow_GLFW*)glfwGetWindowUserPointer(win); - input_common::GCController::GCButtonState state; - - if (action == GLFW_PRESS) { - state = input_common::GCController::PRESSED; - } else { - state = input_common::GCController::RELEASED; - } - for (int channel = 0; channel < 4 && emuwin->controller_interface(); ++channel) { - emuwin->controller_interface()->SetControllerStatus(channel, key, state); - } -} - -static void OnWindowSizeEvent(GLFWwindow win, int width, int height) { - EmuWindow_GLFW* emuwin = (EmuWindow_GLFW*)glfwGetWindowUserPointer(win); - emuwin->set_client_area_width(width); - emuwin->set_client_area_height(height); -} - -/// EmuWindow_GLFW constructor -EmuWindow_GLFW::EmuWindow_GLFW() { - // Initialize the window - if(glfwInit() != GL_TRUE) { - LOG_ERROR(TVIDEO, "Failed to initialize GLFW! Exiting..."); - exit(E_ERR); - } - glfwWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); - glfwWindowHint(GLFW_OPENGL_VERSION_MINOR, 1); - render_window_ = glfwCreateWindow(640, 480, GLFW_WINDOWED, "gekko", 0); - - // Setup callbacks - glfwSetWindowUserPointer(render_window_, this); - glfwSetKeyCallback(render_window_, OnKeyEvent); - glfwSetWindowSizeCallback(render_window_, OnWindowSizeEvent); - - DoneCurrent(); -} - -/// EmuWindow_GLFW destructor -EmuWindow_GLFW::~EmuWindow_GLFW() { - glfwTerminate(); -} - -/// Swap buffers to display the next frame -void EmuWindow_GLFW::SwapBuffers() { - glfwSwapBuffers(render_window_); -} - -/// Polls window events -void EmuWindow_GLFW::PollEvents() { - // TODO(ShizZy): Does this belong here? This is a reasonable place to update the window title - // from the main thread, but this should probably be in an event handler... - static char title[128]; - sprintf(title, "%s (FPS: %02.02f)", window_title_.c_str(), - video_core::g_renderer->current_fps()); - glfwSetWindowTitle(render_window_, title); - - glfwPollEvents(); -} - -/// Makes the GLFW OpenGL context current for the caller thread -void EmuWindow_GLFW::MakeCurrent() { - glfwMakeContextCurrent(render_window_); -} - -/// Releases (dunno if this is the "right" word) the GLFW context from the caller thread -void EmuWindow_GLFW::DoneCurrent() { - glfwMakeContextCurrent(NULL); -} diff --git a/src/akiru/src/emuwindow/emuwindow_glfw.h b/src/akiru/src/emuwindow/emuwindow_glfw.h deleted file mode 100644 index 1256cabe4..000000000 --- a/src/akiru/src/emuwindow/emuwindow_glfw.h +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Copyright (C) 2005-2012 Gekko Emulator - * - * @file emuwindow_glfw.h - * @author ShizZy - * @date 2012-04-20 - * @brief Implementation implementation of EmuWindow class for GLFW - * - * @section LICENSE - * This program 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 2 of - * the License, or (at your option) any later version. - * - * This program 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 at - * http://www.gnu.org/copyleft/gpl.html - * - * Official project repository can be found at: - * http://code.google.com/p/gekko-gc-emu/ - */ - -#ifndef VIDEO_CORE_EMUWINDOW_GLFW_ -#define VIDEO_CORE_EMUWINDOW_GLFW_ - -#include -#include - -#include "video/emuwindow.h" - -class EmuWindow_GLFW : public EmuWindow { -public: - EmuWindow_GLFW(); - ~EmuWindow_GLFW(); - - /// Swap buffers to display the next frame - void SwapBuffers(); - - /// Polls window events - void PollEvents(); - - /// Makes the graphics context current for the caller thread - void MakeCurrent(); - - /// Releases (dunno if this is the "right" word) the GLFW context from the caller thread - void DoneCurrent(); - - GLFWwindow render_window_; ///< Internal GLFW render window - -private: - -}; - -#endif // VIDEO_CORE_EMUWINDOW_GLFW_ -- cgit v1.2.3