summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorShizZy <shizzy@6bit.net>2013-09-27 04:01:09 +0200
committerShizZy <shizzy@6bit.net>2013-09-27 04:01:09 +0200
commitc71868a6b192f6893f41afe415a2b11ba0edb403 (patch)
treef93e2314683b8bdbf2be22dfd1f231a02caede23 /src/core
parentrenamed from citrus to citra (diff)
downloadyuzu-c71868a6b192f6893f41afe415a2b11ba0edb403.tar
yuzu-c71868a6b192f6893f41afe415a2b11ba0edb403.tar.gz
yuzu-c71868a6b192f6893f41afe415a2b11ba0edb403.tar.bz2
yuzu-c71868a6b192f6893f41afe415a2b11ba0edb403.tar.lz
yuzu-c71868a6b192f6893f41afe415a2b11ba0edb403.tar.xz
yuzu-c71868a6b192f6893f41afe415a2b11ba0edb403.tar.zst
yuzu-c71868a6b192f6893f41afe415a2b11ba0edb403.zip
Diffstat (limited to 'src/core')
-rw-r--r--src/core/core.vcxproj1
-rw-r--r--src/core/core.vcxproj.filters1
-rw-r--r--src/core/src/core.cpp18
-rw-r--r--src/core/src/core.h28
-rw-r--r--src/core/src/system.h61
5 files changed, 87 insertions, 22 deletions
diff --git a/src/core/core.vcxproj b/src/core/core.vcxproj
index c771f2e2d..90d0628f2 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 f75e6305c..039373047 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 7f6bb2b0e..a748ebbd7 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
}
-/// Kill the core
-void Kill() {
+/// Run the core CPU loop
+void RunLoop() {
+ // TODO(ShizZy): ImplementMe
+}
+
+/// Step the CPU one instruction
+void SingleStep() {
}
-/// Stop the core
+/// Halt the core
+void Halt() {
+ // TODO(ShizZy): ImplementMe
+}
+
+/// Kill 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 2270e46e2..f018ff6ed 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();
+
+/// Step the CPU one instruction
+void SingleStep();
-/// Stop the core
+/// 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 000000000..d35515c66
--- /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