adding initial project layout

This commit is contained in:
ShizZy 2013-08-29 23:35:09 -04:00
parent 8404376c6b
commit 27474060e1
340 changed files with 61084 additions and 0 deletions

12
src/akiru/CMakeLists.txt Normal file
View file

@ -0,0 +1,12 @@
set(SRCS src/akiru.cpp
src/emuwindow/emuwindow_glfw.cpp)
# NOTE: This is a workaround for CMake bug 0006976 (missing X11_xf86vmode_LIB variable)
if (NOT X11_xf86vmode_LIB)
set(X11_xv86vmode_LIB Xxf86vm)
endif()
add_executable(akiru ${SRCS})
target_link_libraries(akiru core common ${OPENGL_LIBRARIES} ${GLFW_LIBRARIES} GLEW rt ${X11_Xrandr_LIB} ${X11_xv86vmode_LIB})
#install(TARGETS akiru RUNTIME DESTINATION ${bindir})

BIN
src/akiru/akiru.rc Normal file

Binary file not shown.

208
src/akiru/akiru.vcxproj Normal file
View file

@ -0,0 +1,208 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{CE7D2C07-21CE-4590-81AB-2ADA88A2B85F}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>emu_win32</RootNamespace>
<ProjectName>akiru</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\vsprops\Base.props" />
<Import Project="..\..\vsprops\CodeGen_Debug.props" />
<Import Project="..\..\vsprops\App.props" />
<Import Project="..\..\vsprops\Optimization_Debug.props" />
<Import Project="..\..\vsprops\Externals.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\vsprops\Base.props" />
<Import Project="..\..\vsprops\CodeGen_Debug.props" />
<Import Project="..\..\vsprops\App.props" />
<Import Project="..\..\vsprops\Optimization_Debug.props" />
<Import Project="..\..\vsprops\Externals.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\vsprops\Base.props" />
<Import Project="..\..\vsprops\CodeGen_Release.props" />
<Import Project="..\..\vsprops\App.props" />
<Import Project="..\..\vsprops\Optimization_Release.props" />
<Import Project="..\..\vsprops\Externals.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\vsprops\Base.props" />
<Import Project="..\..\vsprops\CodeGen_Release.props" />
<Import Project="..\..\vsprops\App.props" />
<Import Project="..\..\vsprops\Optimization_Release.props" />
<Import Project="..\..\vsprops\Externals.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<CustomBuildBeforeTargets>
</CustomBuildBeforeTargets>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<CustomBuildBeforeTargets />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
</ClCompile>
<Link />
<CustomBuildStep>
<Outputs>
</Outputs>
<Command>
</Command>
</CustomBuildStep>
<PreBuildEvent />
<Link />
<Link>
<IgnoreSpecificDefaultLibraries>msvcrtd.lib;msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
</ClCompile>
<Link />
<CustomBuildStep>
<Outputs>
</Outputs>
<Command>
</Command>
</CustomBuildStep>
<PreBuildEvent />
<Link>
<IgnoreSpecificDefaultLibraries>msvcrtd.lib;msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
</ClCompile>
<Link>
<SpecifySectionAttributes>
</SpecifySectionAttributes>
<IgnoreSpecificDefaultLibraries>libcmt.lib</IgnoreSpecificDefaultLibraries>
</Link>
<CustomBuildStep>
<Command>
</Command>
</CustomBuildStep>
<CustomBuildStep>
<Message>
</Message>
</CustomBuildStep>
<CustomBuildStep>
<Outputs>
</Outputs>
</CustomBuildStep>
<PreBuildEvent />
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
</ClCompile>
<Link>
<SpecifySectionAttributes>
</SpecifySectionAttributes>
<IgnoreAllDefaultLibraries>
</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>libcmt.lib</IgnoreSpecificDefaultLibraries>
</Link>
<CustomBuildStep>
<Command>
</Command>
</CustomBuildStep>
<CustomBuildStep>
<Message>
</Message>
</CustomBuildStep>
<CustomBuildStep>
<Outputs>
</Outputs>
</CustomBuildStep>
<PreBuildEvent />
</ItemDefinitionGroup>
<ItemGroup>
<ProjectReference Include="..\common\common.vcxproj">
<Project>{dfe335fc-755d-4baa-8452-94434f8a1edb}</Project>
<Private>true</Private>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="..\core\core.vcxproj">
<Project>{8aea7f29-3466-4786-a10d-6a4bd0610977}</Project>
<Private>true</Private>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\emuwindow\emuwindow_glfw.cpp" />
<ClCompile Include="src\akiru.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="resource.h" />
<ClInclude Include="src\emuwindow\emuwindow_glfw.h" />
<ClInclude Include="src\akiru.h" />
<ClInclude Include="src\version.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="akiru.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="src\akiru.cpp" />
<ClCompile Include="src\emuwindow\emuwindow_glfw.cpp">
<Filter>emuwindow</Filter>
</ClCompile>
<ClCompile Include="src\emuwindow\emuwindow_sdl.cpp">
<Filter>emuwindow</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="resource.h" />
<ClInclude Include="src\version.h" />
<ClInclude Include="src\emuwindow\emuwindow_glfw.h">
<Filter>emuwindow</Filter>
</ClInclude>
<ClInclude Include="src\akiru.h" />
<ClInclude Include="src\emuwindow\emuwindow_sdl.h">
<Filter>emuwindow</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="akiru.rc" />
</ItemGroup>
<ItemGroup>
<None Include="res\icon3_48x48.ico" />
</ItemGroup>
<ItemGroup>
<Filter Include="emuwindow">
<UniqueIdentifier>{e3161526-9f53-4670-8dae-2be81ff01bc2}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>

BIN
src/akiru/resource.h Normal file

Binary file not shown.

124
src/akiru/src/akiru.cpp Normal file
View file

@ -0,0 +1,124 @@
/*!
* Copyright (C) 2013 Akiru Emulator
*
* @file akiry.cpp
* @author ShizZy <shizzy247@gmail.com>
* @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 <unistd.h>
#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;
}

35
src/akiru/src/akiru.h Normal file
View file

@ -0,0 +1,35 @@
/*!
* Copyright (C) 2005-2012 Gekko Emulator
*
* \file pcafe.h
* \author ShizZy <shizzy247@gmail.com>
* \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/
*/
#ifndef PCAFE_PCAFE_H_
#define PCAFE_PCAFE_H_
#include "version.h"
#define APP_NAME "gekko"
#define APP_VERSION "0.31-" VERSION
#define APP_TITLE APP_NAME " " APP_VERSION
#define COPYRIGHT "Copyright (C) 2005-2012 Gekko Team"
#endif // PCAFE_PCAFE_H_

View file

@ -0,0 +1,100 @@
/**
* Copyright (C) 2005-2012 Gekko Emulator
*
* @file emuwindow_glfw.h
* @author ShizZy <shizzy247@gmail.com>
* @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);
}

View file

@ -0,0 +1,56 @@
/**
* Copyright (C) 2005-2012 Gekko Emulator
*
* @file emuwindow_glfw.h
* @author ShizZy <shizzy247@gmail.com>
* @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 <GL/glew.h>
#include <GL/glfw3.h>
#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_

6
src/akiru/src/version.h Normal file
View file

@ -0,0 +1,6 @@
// GENERATED - Do not edit!
#ifndef VERSION_H_
#define VERSION_H_
#define __BUILD__ "122"
#define VERSION __BUILD__
#endif // VERSION_H_