From c71868a6b192f6893f41afe415a2b11ba0edb403 Mon Sep 17 00:00:00 2001
From: ShizZy <shizzy@6bit.net>
Date: Thu, 26 Sep 2013 22:01:09 -0400
Subject: [PATCH] added system.h to project

---
 src/core/core.vcxproj         |  1 +
 src/core/core.vcxproj.filters |  1 +
 src/core/src/core.cpp         | 20 +++++++++---
 src/core/src/core.h           | 28 ++++++----------
 src/core/src/system.h         | 61 +++++++++++++++++++++++++++++++++++
 5 files changed, 88 insertions(+), 23 deletions(-)
 create mode 100644 src/core/src/system.h

diff --git a/src/core/core.vcxproj b/src/core/core.vcxproj
index c771f2e2d0..90d0628f22 100644
--- a/src/core/core.vcxproj
+++ b/src/core/core.vcxproj
@@ -163,6 +163,7 @@
     <ClInclude Include="src\file_sys\meta_file_system.h" />
     <ClInclude Include="src\loader.h" />
     <ClInclude Include="src\mem_map.h" />
+    <ClInclude Include="src\system.h" />
   </ItemGroup>
   <ItemGroup>
     <None Include="CMakeLists.txt" />
diff --git a/src/core/core.vcxproj.filters b/src/core/core.vcxproj.filters
index f75e6305cb..0393730478 100644
--- a/src/core/core.vcxproj.filters
+++ b/src/core/core.vcxproj.filters
@@ -87,6 +87,7 @@
     <ClInclude Include="src\file_sys\meta_file_system.h">
       <Filter>file_sys</Filter>
     </ClInclude>
+    <ClInclude Include="src\system.h" />
   </ItemGroup>
   <ItemGroup>
     <None Include="CMakeLists.txt" />
diff --git a/src/core/src/core.cpp b/src/core/src/core.cpp
index 7f6bb2b0e8..a748ebbd7c 100644
--- a/src/core/src/core.cpp
+++ b/src/core/src/core.cpp
@@ -29,14 +29,26 @@ namespace Core {
 
 /// Start the core
 void Start() {
+	// TODO(ShizZy): ImplementMe
+}
+
+/// Run the core CPU loop
+void RunLoop() {
+	// TODO(ShizZy): ImplementMe
+}
+
+/// Step the CPU one instruction
+void SingleStep() {
+}
+
+/// Halt the core
+void Halt() {
+	// TODO(ShizZy): ImplementMe
 }
 
 /// Kill the core
-void Kill() {
-}
-
-/// Stop the core
 void Stop() {
+	// TODO(ShizZy): ImplementMe
 }
 
 /// Initialize the core
diff --git a/src/core/src/core.h b/src/core/src/core.h
index 2270e46e28..f018ff6ede 100644
--- a/src/core/src/core.h
+++ b/src/core/src/core.h
@@ -35,34 +35,24 @@ class EmuWindow;
 
 namespace Core {
 
-// State of the full emulator
-typedef enum {
-	SYS_NULL = 0,   ///< System is in null state, nothing initialized
-	SYS_IDLE,       ///< System is in an initialized state, but not running
-	SYS_RUNNING,    ///< System is running
-	SYS_LOADING,    ///< System is loading a ROM
-	SYS_HALTED,     ///< System is halted (error)
-	SYS_STALLED,    ///< System is stalled (unused)
-	SYS_DEBUG,      ///< System is in a special debug mode (unused)
-	SYS_DIE         ///< System is shutting down
-} SystemState;
-
-
 /// Start the core
 void Start();
 
-/// Kill the core
-void Kill();
+/// Run the core CPU loop
+void RunLoop();
 
-/// Stop the core
+/// Step the CPU one instruction
+void SingleStep();
+
+/// Halt the core
+void Halt();
+
+/// Kill the core
 void Stop();
 
 /// Initialize the core
 int Init(EmuWindow* emu_window);
 
-extern SystemState	g_state;	///< State of the emulator
-extern bool			g_started;	///< Whether or not the emulator has been started
-
 } // namespace
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/core/src/system.h b/src/core/src/system.h
new file mode 100644
index 0000000000..d35515c66d
--- /dev/null
+++ b/src/core/src/system.h
@@ -0,0 +1,61 @@
+/**
+ * Copyright (C) 2013 Citrus Emulator
+ *
+ * @file    system.h
+ * @author  ShizZy <shizzy247@gmail.com>
+ * @date    2013-09-26
+ * @brief   Emulation of main system
+ *
+ * @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 CORE_SYSTEM_H_
+#define CORE_SYSTEM_H_
+
+#include "file_sys/meta_file_system.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+namespace System {
+
+extern MetaFileSystem g_ctr_file_system;
+
+// State of the full emulator
+typedef enum {
+	STATE_NULL = 0,	///< System is in null state, nothing initialized
+	STATE_IDLE,		///< System is in an initialized state, but not running
+	STATE_RUNNING,	///< System is running
+	STATE_LOADING,	///< System is loading a ROM
+	STATE_HALTED,	///< System is halted (error)
+	STATE_STALLED,	///< System is stalled (unused)
+	STATE_DEBUG,	///< System is in a special debug mode (unused)
+	STATE_DIE		///< System is shutting down
+} State;
+
+extern volatile State g_state;
+
+void UpdateState(State state);
+void Init();
+void RunLoopFor(int cycles);
+void RunLoopUntil(u64 global_cycles);
+void Shutdown();
+
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#endif // CORE_SYSTEM_H_
+ 
\ No newline at end of file