From 27474060e1287a67c45cd790d29b9095b35b2bdf Mon Sep 17 00:00:00 2001 From: ShizZy Date: Thu, 29 Aug 2013 23:35:09 -0400 Subject: adding initial project layout --- src/akiru/src/akiru.cpp | 124 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 src/akiru/src/akiru.cpp (limited to 'src/akiru/src/akiru.cpp') diff --git a/src/akiru/src/akiru.cpp b/src/akiru/src/akiru.cpp new file mode 100644 index 00000000..0d15c5b2 --- /dev/null +++ b/src/akiru/src/akiru.cpp @@ -0,0 +1,124 @@ +/*! + * Copyright (C) 2013 Akiru Emulator + * + * @file akiry.cpp + * @author ShizZy + * @date 2012-02-11 + * @brief Main entry point + * + * @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 "platform.h" + +#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 "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"); + + 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); + + 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); + + // TODO: Wait for video core to finish - PlayFile should handle this + while (1); +#endif + delete emu_window; + + return E_OK; +} -- cgit v1.2.3