From 175caf3a533f9523055ba4117a8b7caae980f63a Mon Sep 17 00:00:00 2001 From: goyuken Date: Tue, 27 Nov 2012 16:44:50 +0000 Subject: [PATCH] gba: add under-the-hood support for direct MMIO reading, to be used for something at some point, maybe --- .../Consoles/Nintendo/GBA/LibMeteor.cs | 27 +++++++++++++++++- BizHawk.MultiClient/output/dll/libmeteor.dll | Bin 139264 -> 139264 bytes libmeteor/cinterface.cpp | 7 ++++- libmeteor/include/ameteor/io.hpp | 3 ++ 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/BizHawk.Emulation/Consoles/Nintendo/GBA/LibMeteor.cs b/BizHawk.Emulation/Consoles/Nintendo/GBA/LibMeteor.cs index 392dbaf9e8..921fb8917d 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/GBA/LibMeteor.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/GBA/LibMeteor.cs @@ -116,13 +116,38 @@ namespace BizHawk.Emulation.Consoles.Nintendo.GBA /// public enum MemoryArea : int { + /// + /// BIOS, may be invalid if bios not loaded. valid size: 16K. system bus: @00000000h + /// bios = 0, + /// + /// external workram. valid size: 256K. system bus: @02000000h + /// ewram = 1, + /// + /// internal workram. valid size: 32K. system bus: @03000000h + /// iwram = 2, + /// + /// palettes. valid size: 1K. system bus: @05000000h + /// palram = 3, + /// + /// video ram. valid size: 96K. system bus: @06000000h + /// vram = 4, + /// + /// sprite attribute ram. valid size: 1K. system bus: @07000000h + /// oam = 5, - rom = 6 + /// + /// rom. always valid to full size, even if no rom or small rom loaded. valid size: 32M. system bus: @08000000h, others + /// + rom = 6, + /// + /// direct access to cached io port values. this should NEVER be modified! valid size: 4K. system bus: @04000000h (sort of) + /// + io = 7 } /// diff --git a/BizHawk.MultiClient/output/dll/libmeteor.dll b/BizHawk.MultiClient/output/dll/libmeteor.dll index a82296d79f9507d06433b425e753f75062b1e6e1..574aca303014063e4c76729e12d3f46fea02a83d 100644 GIT binary patch delta 12467 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 aW<3?}XghA|WH<#jvvO*9|dI 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 Hdba$3_hwqJ diff --git a/libmeteor/cinterface.cpp b/libmeteor/cinterface.cpp index 9432ae9422..66b2f93df8 100644 --- a/libmeteor/cinterface.cpp +++ b/libmeteor/cinterface.cpp @@ -144,7 +144,12 @@ EXPORT void libmeteor_loadbios(const void *data, unsigned size) EXPORT uint8_t *libmeteor_getmemoryarea(int which) { - return AMeteor::_memory.GetMemoryArea(which); + if (which < 7) + return AMeteor::_memory.GetMemoryArea(which); + else if (which == 7) + return AMeteor::_io.GetIoPointer(); + else + return NULL; } EXPORT int libmeteor_loadsaveram(const void *data, unsigned size) diff --git a/libmeteor/include/ameteor/io.hpp b/libmeteor/include/ameteor/io.hpp index 5f553c016c..c9b9e9222a 100644 --- a/libmeteor/include/ameteor/io.hpp +++ b/libmeteor/include/ameteor/io.hpp @@ -208,6 +208,9 @@ namespace AMeteor bool SaveState (std::ostream& stream); bool LoadState (std::istream& stream); + // this should be considered very dangerous to use + uint8_t* GetIoPointer() {return m_iomem;} + private : uint8_t* m_iomem; };