Initial Alloy implementation.

This is a regression in functionality and performance, but a much better
foundation for the future of the project (I think). It can run basic
apps under an SSA interpreter but doesn't support some of the features
required to do real 360 apps yet.
This commit is contained in:
Ben Vanik
2013-12-06 22:57:16 -08:00
parent 68b8737a58
commit fdb6a5cfa3
215 changed files with 20167 additions and 16704 deletions

View File

@@ -11,6 +11,7 @@
#include <xenia/apu/apu.h>
#include <xenia/cpu/cpu.h>
#include <xenia/cpu/xenon_memory.h>
#include <xenia/dbg/debugger.h>
#include <xenia/gpu/gpu.h>
#include <xenia/hid/hid.h>
@@ -34,7 +35,7 @@ using namespace xe::kernel::xboxkrnl::fs;
Emulator::Emulator(const xechar_t* command_line) :
memory_(0),
debugger_(0),
cpu_backend_(0), processor_(0),
processor_(0),
audio_system_(0), graphics_system_(0), input_system_(0),
export_resolver_(0), file_system_(0),
xboxkrnl_(0), xam_(0) {
@@ -53,23 +54,20 @@ Emulator::~Emulator() {
delete graphics_system_;
delete audio_system_;
delete processor_;
delete cpu_backend_;
delete debugger_;
delete export_resolver_;
xe_memory_release(memory_);
}
X_STATUS Emulator::Setup() {
X_STATUS result = X_STATUS_UNSUCCESSFUL;
// Create memory system first, as it is required for other systems.
xe_memory_options_t memory_options;
xe_zero_struct(&memory_options, sizeof(memory_options));
memory_ = xe_memory_create(memory_options);
memory_ = new XenonMemory();
XEEXPECTNOTNULL(memory_);
result = memory_->Initialize();
XEEXPECTZERO(result);
// Shared export resolver used to attach and query for HLE exports.
export_resolver_ = new ExportResolver();
@@ -80,9 +78,7 @@ X_STATUS Emulator::Setup() {
XEEXPECTNOTNULL(debugger_);
// Initialize the CPU.
cpu_backend_ = new xe::cpu::x64::X64Backend();
XEEXPECTNOTNULL(cpu_backend_);
processor_ = new Processor(this, cpu_backend_);
processor_ = new Processor(this);
XEEXPECTNOTNULL(processor_);
// Initialize the APU.