diff options
Diffstat (limited to 'src/core/hw')
-rw-r--r-- | src/core/hw/hw.cpp | 49 | ||||
-rw-r--r-- | src/core/hw/hw.h | 26 | ||||
-rw-r--r-- | src/core/hw/hw_lcd.cpp | 45 | ||||
-rw-r--r-- | src/core/hw/hw_lcd.h | 44 |
4 files changed, 164 insertions, 0 deletions
diff --git a/src/core/hw/hw.cpp b/src/core/hw/hw.cpp new file mode 100644 index 000000000..57be4d6a8 --- /dev/null +++ b/src/core/hw/hw.cpp @@ -0,0 +1,49 @@ +// Copyright 2014 Citra Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +#include "log.h" +#include "hw/hw.h" +#include "hw/hw_lcd.h" + +namespace HW { + +template <typename T> +inline void Read(T &var, const u32 addr) { + NOTICE_LOG(HW, "Hardware read from address %08X", addr); +} + +template <typename T> +inline void Write(u32 addr, const T data) { + NOTICE_LOG(HW, "Hardware write to address %08X", addr); +} + +// Explicitly instantiate template functions because we aren't defining this in the header: + +template void Read<u64>(u64 &var, const u32 addr); +template void Read<u32>(u32 &var, const u32 addr); +template void Read<u16>(u16 &var, const u32 addr); +template void Read<u8>(u8 &var, const u32 addr); + +template void Write<const u64>(u32 addr, const u64 data); +template void Write<const u32>(u32 addr, const u32 data); +template void Write<const u16>(u32 addr, const u16 data); +template void Write<const u8>(u32 addr, const u8 data); + +/// Update hardware +void Update() { + LCD::Update(); +} + +/// Initialize hardware +void Init() { + LCD::Init(); + NOTICE_LOG(HW, "Hardware initialized OK"); +} + +/// Shutdown hardware +void Shutdown() { + NOTICE_LOG(HW, "Hardware shutdown OK"); +} + +}
\ No newline at end of file diff --git a/src/core/hw/hw.h b/src/core/hw/hw.h new file mode 100644 index 000000000..5b0cc8c87 --- /dev/null +++ b/src/core/hw/hw.h @@ -0,0 +1,26 @@ +// Copyright 2014 Citra Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +#pragma once + +#include "common_types.h" + +namespace HW { + +template <typename T> +inline void Read(T &var, const u32 addr); + +template <typename T> +inline void Write(u32 addr, const T data); + +/// Update hardware +void Update(); + +/// Initialize hardware +void Init(); + +/// Shutdown hardware +void Shutdown(); + +} // namespace diff --git a/src/core/hw/hw_lcd.cpp b/src/core/hw/hw_lcd.cpp new file mode 100644 index 000000000..ad346c794 --- /dev/null +++ b/src/core/hw/hw_lcd.cpp @@ -0,0 +1,45 @@ +// Copyright 2014 Citra Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +#include "log.h" +#include "core.h" +#include "hw_lcd.h" +#include "video_core.h" + +namespace LCD { + +static const u32 kFrameTicks = 268123480 / 60; ///< 268MHz / 60 frames per second + +u64 g_last_ticks = 0; ///< Last CPU ticks + +template <typename T> +inline void Read(T &var, const u32 addr) { +} + +template <typename T> +inline void Write(u32 addr, const T data) { +} + +/// Update hardware +void Update() { + u64 current_ticks = Core::g_app_core->GetTicks(); + + if ((current_ticks - g_last_ticks) >= kFrameTicks) { + g_last_ticks = current_ticks; + VideoCore::g_renderer->SwapBuffers(); + } +} + +/// Initialize hardware +void Init() { + g_last_ticks = Core::g_app_core->GetTicks(); + NOTICE_LOG(LCD, "LCD initialized OK"); +} + +/// Shutdown hardware +void Shutdown() { + NOTICE_LOG(LCD, "LCD shutdown OK"); +} + +} // namespace diff --git a/src/core/hw/hw_lcd.h b/src/core/hw/hw_lcd.h new file mode 100644 index 000000000..30e347ccb --- /dev/null +++ b/src/core/hw/hw_lcd.h @@ -0,0 +1,44 @@ +// Copyright 2014 Citra Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +#pragma once + +#include "common_types.h" + +namespace LCD { + +enum { + TOP_ASPECT_X = 0x5, + TOP_ASPECT_Y = 0x3, + + TOP_HEIGHT = 240, + TOP_WIDTH = 400, + BOTTOM_WIDTH = 320, + + FRAMEBUFFER_SEL = 0x20184E59, + TOP_LEFT_FRAME1 = 0x20184E60, + TOP_LEFT_FRAME2 = 0x201CB370, + TOP_RIGHT_FRAME1 = 0x20282160, + TOP_RIGHT_FRAME2 = 0x202C8670, + SUB_FRAME1 = 0x202118E0, + SUB_FRAME2 = 0x20249CF0, +}; + +template <typename T> +inline void Read(T &var, const u32 addr); + +template <typename T> +inline void Write(u32 addr, const T data); + +/// Update hardware +void Update(); + +/// Initialize hardware +void Init(); + +/// Shutdown hardware +void Shutdown(); + + +} // namespace |