Move all core types into namespaces (#1886)

* Reorganize namespaces

- Most types are now moved into the `melonDS` namespace
- Only good chance to do this for a while, since a big refactor is next

* Fix the build
This commit is contained in:
Jesse Talavera-Greenberg 2023-11-25 12:32:09 -05:00 committed by GitHub
parent 651b0f680c
commit 346dd4006e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
178 changed files with 529 additions and 268 deletions

View File

@ -21,6 +21,8 @@
#include "ARCodeFile.h" #include "ARCodeFile.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS
{
using namespace Platform; using namespace Platform;
// TODO: import codes from other sources (usrcheat.dat, ...) // TODO: import codes from other sources (usrcheat.dat, ...)
@ -182,3 +184,5 @@ bool ARCodeFile::Save()
CloseFile(f); CloseFile(f);
return true; return true;
} }
}

View File

@ -24,6 +24,8 @@
#include <vector> #include <vector>
#include "types.h" #include "types.h"
namespace melonDS
{
struct ARCode struct ARCode
{ {
std::string Name; std::string Name;
@ -59,4 +61,5 @@ private:
std::string Filename; std::string Filename;
}; };
}
#endif // ARCODEFILE_H #endif // ARCODEFILE_H

View File

@ -23,6 +23,9 @@
#include "AREngine.h" #include "AREngine.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -429,3 +432,4 @@ void AREngine::RunCheats()
} }
} }
} }
}

View File

@ -21,6 +21,8 @@
#include "ARCodeFile.h" #include "ARCodeFile.h"
namespace melonDS
{
class AREngine class AREngine
{ {
public: public:
@ -45,4 +47,5 @@ private:
void (*BusWrite32)(u32 addr, u32 val); void (*BusWrite32)(u32 addr, u32 val);
}; };
}
#endif // ARENGINE_H #endif // ARENGINE_H

View File

@ -28,6 +28,8 @@
#include "GPU.h" #include "GPU.h"
#include "ARMJIT_Memory.h" #include "ARMJIT_Memory.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -104,7 +106,7 @@ const u32 ARM::ConditionTable[16] =
0x0000 // NE 0x0000 // NE
}; };
ARM::ARM(u32 num, ARMJIT::ARMJIT& jit, Melon::GPU& gpu) : ARM::ARM(u32 num, ARMJIT& jit, melonDS::GPU& gpu) :
#ifdef GDBSTUB_ENABLED #ifdef GDBSTUB_ENABLED
GdbStub(this, Platform::GetConfigInt(num ? Platform::GdbPortARM7 : Platform::GdbPortARM9)), GdbStub(this, Platform::GetConfigInt(num ? Platform::GdbPortARM7 : Platform::GdbPortARM9)),
#endif #endif
@ -128,14 +130,14 @@ ARM::~ARM()
// dorp // dorp
} }
ARMv5::ARMv5(ARMJIT::ARMJIT& jit, Melon::GPU& gpu) : ARM(0, jit, gpu) ARMv5::ARMv5(ARMJIT& jit, melonDS::GPU& gpu) : ARM(0, jit, gpu)
{ {
DTCM = JIT.Memory.GetARM9DTCM(); DTCM = JIT.Memory.GetARM9DTCM();
PU_Map = PU_PrivMap; PU_Map = PU_PrivMap;
} }
ARMv4::ARMv4(ARMJIT::ARMJIT& jit, Melon::GPU& gpu) : ARM(1, jit, gpu) ARMv4::ARMv4(ARMJIT& jit, melonDS::GPU& gpu) : ARM(1, jit, gpu)
{ {
// //
} }
@ -749,7 +751,7 @@ void ARMv5::ExecuteJIT()
return; return;
} }
ARMJIT::JitBlockEntry block = JIT.LookUpBlock(0, FastBlockLookup, JitBlockEntry block = JIT.LookUpBlock(0, FastBlockLookup,
instrAddr - FastBlockLookupStart, instrAddr); instrAddr - FastBlockLookupStart, instrAddr);
if (block) if (block)
ARM_Dispatch(this, block); ARM_Dispatch(this, block);
@ -906,7 +908,7 @@ void ARMv4::ExecuteJIT()
return; return;
} }
ARMJIT::JitBlockEntry block = JIT.LookUpBlock(1, FastBlockLookup, JitBlockEntry block = JIT.LookUpBlock(1, FastBlockLookup,
instrAddr - FastBlockLookupStart, instrAddr); instrAddr - FastBlockLookupStart, instrAddr);
if (block) if (block)
ARM_Dispatch(this, block); ARM_Dispatch(this, block);
@ -1191,5 +1193,6 @@ u32 ARMv5::ReadMem(u32 addr, int size)
return ARM::ReadMem(addr, size); return ARM::ReadMem(addr, size);
} }
}
#endif #endif

View File

@ -28,6 +28,8 @@
#include "debug/GdbStub.h" #include "debug/GdbStub.h"
#endif #endif
namespace melonDS
{
inline u32 ROR(u32 x, u32 n) inline u32 ROR(u32 x, u32 n)
{ {
return (x >> (n&0x1F)) | (x << ((32-n)&0x1F)); return (x >> (n&0x1F)) | (x << ((32-n)&0x1F));
@ -42,15 +44,9 @@ enum
const u32 ITCMPhysicalSize = 0x8000; const u32 ITCMPhysicalSize = 0x8000;
const u32 DTCMPhysicalSize = 0x4000; const u32 DTCMPhysicalSize = 0x4000;
namespace ARMJIT
{
class ARMJIT;
}
namespace Melon
{
class GPU;
}
class ARMJIT;
class GPU;
class ARMJIT_Memory; class ARMJIT_Memory;
class ARM class ARM
@ -59,7 +55,7 @@ class ARM
#endif #endif
{ {
public: public:
ARM(u32 num, ARMJIT::ARMJIT& jit, Melon::GPU& gpu); ARM(u32 num, ARMJIT& jit, GPU& gpu);
virtual ~ARM(); // destroy shit virtual ~ARM(); // destroy shit
virtual void Reset(); virtual void Reset();
@ -190,7 +186,7 @@ public:
Gdb::GdbStub GdbStub; Gdb::GdbStub GdbStub;
#endif #endif
ARMJIT::ARMJIT& JIT; ARMJIT& JIT;
protected: protected:
u8 (*BusRead8)(u32 addr); u8 (*BusRead8)(u32 addr);
u16 (*BusRead16)(u32 addr); u16 (*BusRead16)(u32 addr);
@ -222,13 +218,13 @@ protected:
void GdbCheckB(); void GdbCheckB();
void GdbCheckC(); void GdbCheckC();
private: private:
Melon::GPU& GPU; melonDS::GPU& GPU;
}; };
class ARMv5 : public ARM class ARMv5 : public ARM
{ {
public: public:
ARMv5(ARMJIT::ARMJIT& jit, Melon::GPU& gpu); ARMv5(ARMJIT& jit, melonDS::GPU& gpu);
~ARMv5(); ~ARMv5();
void Reset() override; void Reset() override;
@ -372,7 +368,7 @@ public:
class ARMv4 : public ARM class ARMv4 : public ARM
{ {
public: public:
ARMv4(ARMJIT::ARMJIT& jit, Melon::GPU& gpu); ARMv4(ARMJIT& jit, melonDS::GPU& gpu);
void Reset() override; void Reset() override;
@ -541,4 +537,5 @@ extern ARMv4* ARM7;
} }
}
#endif // ARM_H #endif // ARM_H

View File

@ -24,15 +24,14 @@
#include "ARMInterpreter_LoadStore.h" #include "ARMInterpreter_LoadStore.h"
#include "Platform.h" #include "Platform.h"
using Platform::Log;
using Platform::LogLevel;
#ifdef GDBSTUB_ENABLED #ifdef GDBSTUB_ENABLED
#include "debug/GdbStub.h" #include "debug/GdbStub.h"
#endif #endif
namespace ARMInterpreter namespace melonDS::ARMInterpreter
{ {
using Platform::Log;
using Platform::LogLevel;
void A_UNK(ARM* cpu) void A_UNK(ARM* cpu)

View File

@ -22,6 +22,8 @@
#include "types.h" #include "types.h"
#include "ARM.h" #include "ARM.h"
namespace melonDS
{
namespace ARMInterpreter namespace ARMInterpreter
{ {
@ -41,4 +43,5 @@ void A_BLX_IMM(ARM* cpu); // I'm a special one look at me
} }
}
#endif // ARMINTERPRETER_H #endif // ARMINTERPRETER_H

View File

@ -19,7 +19,7 @@
#include <stdio.h> #include <stdio.h>
#include "ARM.h" #include "ARM.h"
namespace ARMInterpreter namespace melonDS::ARMInterpreter
{ {
inline bool CarryAdd(u32 a, u32 b) inline bool CarryAdd(u32 a, u32 b)

View File

@ -19,6 +19,8 @@
#ifndef ARMINTERPRETER_ALU_H #ifndef ARMINTERPRETER_ALU_H
#define ARMINTERPRETER_ALU_H #define ARMINTERPRETER_ALU_H
namespace melonDS
{
namespace ARMInterpreter namespace ARMInterpreter
{ {
@ -134,4 +136,5 @@ void T_ADD_SP(ARM* cpu);
} }
}
#endif #endif

View File

@ -19,12 +19,11 @@
#include "ARM.h" #include "ARM.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS::ARMInterpreter
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
namespace ARMInterpreter
{
void A_B(ARM* cpu) void A_B(ARM* cpu)
{ {

View File

@ -19,6 +19,8 @@
#ifndef ARMINTERPRETER_BRANCH_H #ifndef ARMINTERPRETER_BRANCH_H
#define ARMINTERPRETER_BRANCH_H #define ARMINTERPRETER_BRANCH_H
namespace melonDS
{
namespace ARMInterpreter namespace ARMInterpreter
{ {
@ -36,4 +38,5 @@ void T_BL_LONG_2(ARM* cpu);
} }
}
#endif #endif

View File

@ -20,7 +20,7 @@
#include "ARM.h" #include "ARM.h"
namespace ARMInterpreter namespace melonDS::ARMInterpreter
{ {

View File

@ -19,7 +19,7 @@
#ifndef ARMINTERPRETER_LOADSTORE_H #ifndef ARMINTERPRETER_LOADSTORE_H
#define ARMINTERPRETER_LOADSTORE_H #define ARMINTERPRETER_LOADSTORE_H
namespace ARMInterpreter namespace melonDS::ARMInterpreter
{ {
#define A_PROTO_WB_LDRSTR(x) \ #define A_PROTO_WB_LDRSTR(x) \

View File

@ -43,17 +43,17 @@
#include "Wifi.h" #include "Wifi.h"
#include "NDSCart.h" #include "NDSCart.h"
#include "Platform.h" #include "Platform.h"
#include "ARMJIT_x64/ARMJIT_Offsets.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
#include "ARMJIT_x64/ARMJIT_Offsets.h"
static_assert(offsetof(ARM, CPSR) == ARM_CPSR_offset, ""); static_assert(offsetof(ARM, CPSR) == ARM_CPSR_offset, "");
static_assert(offsetof(ARM, Cycles) == ARM_Cycles_offset, ""); static_assert(offsetof(ARM, Cycles) == ARM_Cycles_offset, "");
static_assert(offsetof(ARM, StopExecution) == ARM_StopExecution_offset, ""); static_assert(offsetof(ARM, StopExecution) == ARM_StopExecution_offset, "");
namespace ARMJIT
{
#define JIT_DEBUGPRINT(msg, ...) #define JIT_DEBUGPRINT(msg, ...)
//#define JIT_DEBUGPRINT(msg, ...) Platform::Log(Platform::LogLevel::Debug, msg, ## __VA_ARGS__) //#define JIT_DEBUGPRINT(msg, ...) Platform::Log(Platform::LogLevel::Debug, msg, ## __VA_ARGS__)
@ -1056,20 +1056,20 @@ bool ARMJIT::SetupExecutableRegion(u32 num, u32 blockAddr, u64*& entry, u32& sta
return false; return false;
} }
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_MainRAM>(u32); template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_MainRAM>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_MainRAM>(u32); template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_MainRAM>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_SharedWRAM>(u32); template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_SharedWRAM>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_SharedWRAM>(u32); template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_SharedWRAM>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_WRAM7>(u32); template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_WRAM7>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_VWRAM>(u32); template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_VWRAM>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_VRAM>(u32); template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_VRAM>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(u32); template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_A>(u32); template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_A>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_A>(u32); template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_A>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_B>(u32); template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_B>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_B>(u32); template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_B>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_C>(u32); template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_C>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_C>(u32); template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_C>(u32) noexcept;
void ARMJIT::ResetBlockCache() noexcept void ARMJIT::ResetBlockCache() noexcept
{ {

View File

@ -31,10 +31,10 @@
#include "ARMJIT_Compiler.h" #include "ARMJIT_Compiler.h"
namespace melonDS
{
class ARM; class ARM;
namespace ARMJIT
{
class JitBlock; class JitBlock;
class ARMJIT class ARMJIT
{ {
@ -74,7 +74,7 @@ public:
TinyVector<u32> InvalidLiterals {}; TinyVector<u32> InvalidLiterals {};
private: private:
friend class ::ARMJIT_Memory; friend class ARMJIT_Memory;
void blockSanityCheck(u32 num, u32 blockAddr, JitBlockEntry entry) noexcept; void blockSanityCheck(u32 num, u32 blockAddr, JitBlockEntry entry) noexcept;
void RetireJitBlock(JitBlock* block) noexcept; void RetireJitBlock(JitBlock* block) noexcept;
@ -160,6 +160,6 @@ private:
} }
// Defined in assembly // Defined in assembly
extern "C" void ARM_Dispatch(ARM* cpu, ARMJIT::JitBlockEntry entry); extern "C" void ARM_Dispatch(melonDS::ARM* cpu, melonDS::JitBlockEntry entry);
#endif #endif

View File

@ -20,7 +20,7 @@
using namespace Arm64Gen; using namespace Arm64Gen;
namespace ARMJIT namespace melonDS
{ {
void Compiler::Comp_RegShiftReg(int op, bool S, Op2& op2, ARM64Reg rs) void Compiler::Comp_RegShiftReg(int op, bool S, Op2& op2, ARM64Reg rs)
@ -480,7 +480,7 @@ void Compiler::A_Comp_GetOp2(bool S, Op2& op2)
Comp_AddCycles_C(); Comp_AddCycles_C();
u32 shift = (CurInstr.Instr >> 7) & 0x1E; u32 shift = (CurInstr.Instr >> 7) & 0x1E;
u32 imm = ::ROR(CurInstr.Instr & 0xFF, shift); u32 imm = melonDS::ROR(CurInstr.Instr & 0xFF, shift);
if (S && shift && (CurInstr.SetFlags & 0x2)) if (S && shift && (CurInstr.SetFlags & 0x2))
{ {

View File

@ -23,7 +23,7 @@ using namespace Arm64Gen;
// hack // hack
const int kCodeCacheTiming = 3; const int kCodeCacheTiming = 3;
namespace ARMJIT namespace melonDS
{ {
template <typename T> template <typename T>

View File

@ -39,7 +39,7 @@ using namespace Arm64Gen;
extern "C" void ARM_Ret(); extern "C" void ARM_Ret();
namespace ARMJIT namespace melonDS
{ {
/* /*
@ -106,7 +106,7 @@ void Compiler::A_Comp_MSR()
if (CurInstr.Instr & (1 << 25)) if (CurInstr.Instr & (1 << 25))
{ {
val = W0; val = W0;
MOVI2R(val, ::ROR((CurInstr.Instr & 0xFF), ((CurInstr.Instr >> 7) & 0x1E))); MOVI2R(val, melonDS::ROR((CurInstr.Instr & 0xFF), ((CurInstr.Instr >> 7) & 0x1E)));
} }
else else
{ {

View File

@ -28,7 +28,7 @@
#include <unordered_map> #include <unordered_map>
namespace ARMJIT namespace melonDS
{ {
class ARMJIT; class ARMJIT;
const Arm64Gen::ARM64Reg RMemBase = Arm64Gen::X26; const Arm64Gen::ARM64Reg RMemBase = Arm64Gen::X26;

View File

@ -24,7 +24,7 @@
using namespace Arm64Gen; using namespace Arm64Gen;
namespace ARMJIT namespace melonDS
{ {
bool Compiler::IsJITFault(u8* pc) bool Compiler::IsJITFault(u8* pc)
@ -79,7 +79,7 @@ bool Compiler::Comp_MemLoadLiteral(int size, bool signExtend, int rd, u32 addr)
if (size == 32) if (size == 32)
{ {
CurCPU->DataRead32(addr & ~0x3, &val); CurCPU->DataRead32(addr & ~0x3, &val);
val = ::ROR(val, (addr & 0x3) << 3); val = melonDS::ROR(val, (addr & 0x3) << 3);
} }
else if (size == 16) else if (size == 16)
{ {

View File

@ -28,13 +28,13 @@
#include "JitBlock.h" #include "JitBlock.h"
#include "TinyVector.h" #include "TinyVector.h"
namespace melonDS
{
class ARM; class ARM;
class ARMv5; class ARMv5;
// here lands everything which doesn't fit into ARMJIT.h // here lands everything which doesn't fit into ARMJIT.h
// where it would be included by pretty much everything // where it would be included by pretty much everything
namespace ARMJIT
{
enum enum
{ {

View File

@ -49,9 +49,6 @@
#include <stdlib.h> #include <stdlib.h>
using Platform::Log;
using Platform::LogLevel;
/* /*
We're handling fastmem here. We're handling fastmem here.
@ -100,6 +97,12 @@ using Platform::LogLevel;
#endif #endif
#endif #endif
namespace melonDS
{
using Platform::Log;
using Platform::LogLevel;
#if defined(__ANDROID__) #if defined(__ANDROID__)
#define ASHMEM_DEVICE "/dev/ashmem" #define ASHMEM_DEVICE "/dev/ashmem"
#endif #endif
@ -562,7 +565,7 @@ bool ARMJIT_Memory::MapAtAddress(u32 addr) noexcept
} }
#endif #endif
ARMJIT::AddressRange* range = JIT.CodeMemRegions[region] + memoryOffset / 512; AddressRange* range = JIT.CodeMemRegions[region] + memoryOffset / 512;
// this overcomplicated piece of code basically just finds whole pieces of code memory // this overcomplicated piece of code basically just finds whole pieces of code memory
// which can be mapped/protected // which can be mapped/protected
@ -580,9 +583,9 @@ bool ARMJIT_Memory::MapAtAddress(u32 addr) noexcept
else else
{ {
u32 sectionOffset = offset; u32 sectionOffset = offset;
bool hasCode = isExecutable && ARMJIT::PageContainsCode(&range[offset / 512]); bool hasCode = isExecutable && PageContainsCode(&range[offset / 512]);
while (offset < mirrorSize while (offset < mirrorSize
&& (!isExecutable || ARMJIT::PageContainsCode(&range[offset / 512]) == hasCode) && (!isExecutable || PageContainsCode(&range[offset / 512]) == hasCode)
&& (!skipDTCM || mirrorStart + offset != NDS::ARM9->DTCMBase)) && (!skipDTCM || mirrorStart + offset != NDS::ARM9->DTCMBase))
{ {
assert(states[(mirrorStart + offset) >> 12] == memstate_Unmapped); assert(states[(mirrorStart + offset) >> 12] == memstate_Unmapped);
@ -617,7 +620,7 @@ bool ARMJIT_Memory::MapAtAddress(u32 addr) noexcept
return true; return true;
} }
bool ARMJIT_Memory::FaultHandler(FaultDescription& faultDesc, ARMJIT::ARMJIT& jit) bool ARMJIT_Memory::FaultHandler(FaultDescription& faultDesc, ARMJIT& jit)
{ {
if (jit.JITCompiler.IsJITFault(faultDesc.FaultPC)) if (jit.JITCompiler.IsJITFault(faultDesc.FaultPC))
{ {
@ -638,7 +641,7 @@ bool ARMJIT_Memory::FaultHandler(FaultDescription& faultDesc, ARMJIT::ARMJIT& ji
const u64 AddrSpaceSize = 0x100000000; const u64 AddrSpaceSize = 0x100000000;
ARMJIT_Memory::ARMJIT_Memory(ARMJIT::ARMJIT& jit) noexcept : JIT(jit) ARMJIT_Memory::ARMJIT_Memory(ARMJIT& jit) noexcept : JIT(jit)
{ {
#if defined(__SWITCH__) #if defined(__SWITCH__)
MemoryBase = (u8*)aligned_alloc(0x1000, MemoryTotalSize); MemoryBase = (u8*)aligned_alloc(0x1000, MemoryTotalSize);
@ -1365,3 +1368,4 @@ void* ARMJIT_Memory::GetFuncForAddr(ARM* cpu, u32 addr, bool store, int size) co
} }
return NULL; return NULL;
} }
}

View File

@ -42,11 +42,10 @@
#include "NDS.h" #include "NDS.h"
#endif #endif
namespace ARMJIT namespace melonDS
{ {
class Compiler; class Compiler;
class ARMJIT; class ARMJIT;
}
constexpr u32 RoundUp(u32 size) noexcept constexpr u32 RoundUp(u32 size) noexcept
{ {
@ -97,7 +96,7 @@ public:
#ifdef JIT_ENABLED #ifdef JIT_ENABLED
public: public:
explicit ARMJIT_Memory(ARMJIT::ARMJIT& jit) noexcept; explicit ARMJIT_Memory(ARMJIT& jit) noexcept;
~ARMJIT_Memory() noexcept; ~ARMJIT_Memory() noexcept;
ARMJIT_Memory(const ARMJIT_Memory&) = delete; ARMJIT_Memory(const ARMJIT_Memory&) = delete;
ARMJIT_Memory(ARMJIT_Memory&&) = delete; ARMJIT_Memory(ARMJIT_Memory&&) = delete;
@ -138,7 +137,7 @@ public:
void* GetFuncForAddr(ARM* cpu, u32 addr, bool store, int size) const noexcept; void* GetFuncForAddr(ARM* cpu, u32 addr, bool store, int size) const noexcept;
bool MapAtAddress(u32 addr) noexcept; bool MapAtAddress(u32 addr) noexcept;
private: private:
friend class ARMJIT::Compiler; friend class Compiler;
struct Mapping struct Mapping
{ {
u32 Addr; u32 Addr;
@ -153,12 +152,12 @@ private:
u32 EmulatedFaultAddr; u32 EmulatedFaultAddr;
u8* FaultPC; u8* FaultPC;
}; };
static bool FaultHandler(FaultDescription& faultDesc, ARMJIT::ARMJIT& jit); static bool FaultHandler(FaultDescription& faultDesc, ARMJIT& jit);
bool MapIntoRange(u32 addr, u32 num, u32 offset, u32 size) noexcept; bool MapIntoRange(u32 addr, u32 num, u32 offset, u32 size) noexcept;
bool UnmapFromRange(u32 addr, u32 num, u32 offset, u32 size) noexcept; bool UnmapFromRange(u32 addr, u32 num, u32 offset, u32 size) noexcept;
void SetCodeProtectionRange(u32 addr, u32 size, u32 num, int protection) noexcept; void SetCodeProtectionRange(u32 addr, u32 size, u32 num, int protection) noexcept;
ARMJIT::ARMJIT& JIT; ARMJIT& JIT;
void* FastMem9Start; void* FastMem9Start;
void* FastMem7Start; void* FastMem7Start;
u8* MemoryBase = nullptr; u8* MemoryBase = nullptr;
@ -178,10 +177,10 @@ private:
#endif #endif
u8 MappingStatus9[1 << (32-12)] {}; u8 MappingStatus9[1 << (32-12)] {};
u8 MappingStatus7[1 << (32-12)] {}; u8 MappingStatus7[1 << (32-12)] {};
ARMJIT::TinyVector<Mapping> Mappings[memregions_Count] {}; TinyVector<Mapping> Mappings[memregions_Count] {};
#else #else
public: public:
explicit ARMJIT_Memory(ARMJIT::ARMJIT&) {}; explicit ARMJIT_Memory(ARMJIT&) {};
~ARMJIT_Memory() = default; ~ARMJIT_Memory() = default;
ARMJIT_Memory(const ARMJIT_Memory&) = delete; ARMJIT_Memory(const ARMJIT_Memory&) = delete;
ARMJIT_Memory(ARMJIT_Memory&&) = delete; ARMJIT_Memory(ARMJIT_Memory&&) = delete;
@ -224,5 +223,5 @@ private:
std::array<u8, DSi::NWRAMSize> NWRAM_C {}; std::array<u8, DSi::NWRAMSize> NWRAM_C {};
#endif #endif
}; };
}
#endif #endif

View File

@ -27,10 +27,11 @@
#include <assert.h> #include <assert.h>
namespace ARMJIT namespace melonDS
{ {
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
using namespace Common;
// Imported inside the namespace so that other headers aren't polluted // Imported inside the namespace so that other headers aren't polluted
template <typename T, typename Reg> template <typename T, typename Reg>

View File

@ -21,7 +21,7 @@
using namespace Gen; using namespace Gen;
namespace ARMJIT namespace melonDS
{ {
// uses RSCRATCH3 // uses RSCRATCH3
@ -129,7 +129,7 @@ OpArg Compiler::A_Comp_GetALUOp2(bool S, bool& carryUsed)
Comp_AddCycles_C(); Comp_AddCycles_C();
u32 shift = (CurInstr.Instr >> 7) & 0x1E; u32 shift = (CurInstr.Instr >> 7) & 0x1E;
u32 imm = ::ROR(CurInstr.Instr & 0xFF, shift); u32 imm = melonDS::ROR(CurInstr.Instr & 0xFF, shift);
carryUsed = false; carryUsed = false;
if (S && shift) if (S && shift)

View File

@ -21,7 +21,7 @@
using namespace Gen; using namespace Gen;
namespace ARMJIT namespace melonDS
{ {
template <typename T> template <typename T>

View File

@ -34,10 +34,11 @@
#endif #endif
using namespace Gen; using namespace Gen;
using namespace Common;
extern "C" void ARM_Ret(); extern "C" void ARM_Ret();
namespace ARMJIT namespace melonDS
{ {
template <> template <>
const X64Reg RegisterCache<Compiler, X64Reg>::NativeRegAllocOrder[] = const X64Reg RegisterCache<Compiler, X64Reg>::NativeRegAllocOrder[] =
@ -141,7 +142,7 @@ void Compiler::A_Comp_MSR()
Comp_AddCycles_C(); Comp_AddCycles_C();
OpArg val = CurInstr.Instr & (1 << 25) OpArg val = CurInstr.Instr & (1 << 25)
? Imm32(::ROR((CurInstr.Instr & 0xFF), ((CurInstr.Instr >> 7) & 0x1E))) ? Imm32(melonDS::ROR((CurInstr.Instr & 0xFF), ((CurInstr.Instr >> 7) & 0x1E)))
: MapReg(CurInstr.A_Reg(0)); : MapReg(CurInstr.A_Reg(0));
u32 mask = 0; u32 mask = 0;

View File

@ -30,11 +30,11 @@
#include <unordered_map> #include <unordered_map>
class ARMJIT_Memory;
namespace ARMJIT namespace melonDS
{ {
class ARMJIT; class ARMJIT;
class ARMJIT_Memory;
const Gen::X64Reg RCPU = Gen::RBP; const Gen::X64Reg RCPU = Gen::RBP;
const Gen::X64Reg RCPSR = Gen::R15; const Gen::X64Reg RCPSR = Gen::R15;
@ -172,7 +172,7 @@ public:
memop_SubtractOffset = 1 << 4 memop_SubtractOffset = 1 << 4
}; };
void Comp_MemAccess(int rd, int rn, const Op2& op2, int size, int flags); void Comp_MemAccess(int rd, int rn, const Op2& op2, int size, int flags);
s32 Comp_MemAccessBlock(int rn, BitSet16 regs, bool store, bool preinc, bool decrement, bool usermode, bool skipLoadingRn); s32 Comp_MemAccessBlock(int rn, Common::BitSet16 regs, bool store, bool preinc, bool decrement, bool usermode, bool skipLoadingRn);
bool Comp_MemLoadLiteral(int size, bool signExtend, int rd, u32 addr); bool Comp_MemLoadLiteral(int size, bool signExtend, int rd, u32 addr);
void Comp_ArithTriOp(void (Compiler::*op)(int, const Gen::OpArg&, const Gen::OpArg&), void Comp_ArithTriOp(void (Compiler::*op)(int, const Gen::OpArg&, const Gen::OpArg&),

View File

@ -17,7 +17,7 @@
*/ */
#include "../ARM.h" #include "../ARM.h"
using namespace melonDS;
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
FILE* f = fopen("ARMJIT_Offsets.h", "w"); FILE* f = fopen("ARMJIT_Offsets.h", "w");

View File

@ -21,7 +21,7 @@
using namespace Gen; using namespace Gen;
namespace ARMJIT namespace melonDS
{ {
template <typename T> template <typename T>
@ -85,7 +85,7 @@ bool Compiler::Comp_MemLoadLiteral(int size, bool signExtend, int rd, u32 addr)
if (size == 32) if (size == 32)
{ {
CurCPU->DataRead32(addr & ~0x3, &val); CurCPU->DataRead32(addr & ~0x3, &val);
val = ::ROR(val, (addr & 0x3) << 3); val = melonDS::ROR(val, (addr & 0x3) << 3);
} }
else if (size == 16) else if (size == 16)
{ {

View File

@ -22,7 +22,7 @@
#include "ARMJIT.h" #include "ARMJIT.h"
namespace ARMInstrInfo namespace melonDS::ARMInstrInfo
{ {
#define ak(x) ((x) << 23) #define ak(x) ((x) << 23)

View File

@ -21,7 +21,7 @@
#include "types.h" #include "types.h"
namespace ARMInstrInfo namespace melonDS::ARMInstrInfo
{ {
// Instruction kinds, for faster dispatch // Instruction kinds, for faster dispatch

View File

@ -25,6 +25,8 @@
#include "ARMJIT_Memory.h" #include "ARMJIT_Memory.h"
#include "ARMJIT.h" #include "ARMJIT.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -1031,3 +1033,4 @@ void ARMv5::GetCodeMemRegion(u32 addr, NDS::MemRegion* region)
GetMemRegion(addr, false, &CodeMem); GetMemRegion(addr, false, &CodeMem);
} }
}

View File

@ -20,6 +20,8 @@
// http://www.codeproject.com/KB/recipes/crc32_large.aspx // http://www.codeproject.com/KB/recipes/crc32_large.aspx
namespace melonDS
{
constexpr u32 _reflect(u32 refl, char ch) constexpr u32 _reflect(u32 refl, char ch)
{ {
u32 value = 0; u32 value = 0;
@ -62,3 +64,5 @@ u32 CRC32(const u8 *data, int len, u32 start)
return (crc ^ 0xFFFFFFFF); return (crc ^ 0xFFFFFFFF);
} }
}

View File

@ -23,6 +23,9 @@
#include "types.h" #include "types.h"
namespace melonDS
{
u32 CRC32(const u8* data, int len, u32 start=0); u32 CRC32(const u8* data, int len, u32 start=0);
}
#endif // CRC32_H #endif // CRC32_H

View File

@ -24,6 +24,8 @@
#include "DMA_Timings.h" #include "DMA_Timings.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -47,7 +49,7 @@ using Platform::LogLevel;
// TODO: timings are nonseq when address is fixed/decrementing // TODO: timings are nonseq when address is fixed/decrementing
DMA::DMA(u32 cpu, u32 num, Melon::GPU& gpu) : DMA::DMA(u32 cpu, u32 num, melonDS::GPU& gpu) :
CPU(cpu), CPU(cpu),
Num(num), Num(num),
GPU(gpu) GPU(gpu)
@ -714,3 +716,5 @@ void DMA::Run()
template void DMA::Run<0>(); template void DMA::Run<0>();
template void DMA::Run<1>(); template void DMA::Run<1>();
}

View File

@ -24,15 +24,14 @@
#include "Savestate.h" #include "Savestate.h"
#include "DMA_Timings.h" #include "DMA_Timings.h"
namespace Melon namespace melonDS
{ {
class GPU; class GPU;
}
class DMA class DMA
{ {
public: public:
DMA(u32 cpu, u32 num, Melon::GPU& gpu); DMA(u32 cpu, u32 num, GPU& gpu);
~DMA() = default; ~DMA() = default;
void Reset(); void Reset();
@ -84,7 +83,7 @@ public:
u32 Cnt {}; u32 Cnt {};
private: private:
Melon::GPU& GPU; melonDS::GPU& GPU;
u32 CPU {}; u32 CPU {};
u32 Num {}; u32 Num {};
@ -109,4 +108,5 @@ private:
std::array<u8, 256> MRAMBurstTable; std::array<u8, 256> MRAMBurstTable;
}; };
}
#endif #endif

View File

@ -19,7 +19,7 @@
#include "DMA_Timings.h" #include "DMA_Timings.h"
#include "types.h" #include "types.h"
namespace DMATiming namespace melonDS::DMATiming
{ {
// DMA timing tables // DMA timing tables

View File

@ -22,7 +22,7 @@
#include <array> #include <array>
#include "types.h" #include "types.h"
namespace DMATiming namespace melonDS::DMATiming
{ {
// DMA timing tables // DMA timing tables

View File

@ -41,6 +41,8 @@
#include "tiny-AES-c/aes.hpp" #include "tiny-AES-c/aes.hpp"
namespace melonDS
{
using namespace Platform; using namespace Platform;
namespace DSi namespace DSi
@ -3143,3 +3145,5 @@ void ARM7IOWrite32(u32 addr, u32 val)
} }
} }
}

View File

@ -22,6 +22,8 @@
#include "NDS.h" #include "NDS.h"
#include "DSi_SD.h" #include "DSi_SD.h"
namespace melonDS
{
class DSi_I2CHost; class DSi_I2CHost;
class DSi_CamModule; class DSi_CamModule;
class DSi_AES; class DSi_AES;
@ -126,4 +128,5 @@ void ARM7IOWrite32(u32 addr, u32 val);
} }
}
#endif // DSI_H #endif // DSI_H

View File

@ -23,6 +23,8 @@
#include "DSi_AES.h" #include "DSi_AES.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -572,3 +574,5 @@ void DSi_AES::WriteKeyY(u32 slot, u32 offset, u32 val, u32 mask)
DeriveNormalKey(KeyX[slot], KeyY[slot], KeyNormal[slot]); DeriveNormalKey(KeyX[slot], KeyY[slot], KeyNormal[slot]);
} }
} }
}

View File

@ -24,6 +24,8 @@
#include "FIFO.h" #include "FIFO.h"
#include "tiny-AES-c/aes.hpp" #include "tiny-AES-c/aes.hpp"
namespace melonDS
{
#pragma GCC diagnostic push #pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wattributes" #pragma GCC diagnostic ignored "-Wattributes"
#if defined(__GNUC__) && (__GNUC__ >= 11) // gcc 11.* #if defined(__GNUC__) && (__GNUC__ >= 11) // gcc 11.*
@ -108,4 +110,5 @@ private:
void ProcessBlock_CTR(); void ProcessBlock_CTR();
}; };
}
#endif // DSI_AES_H #endif // DSI_AES_H

View File

@ -23,6 +23,8 @@
#include "DSi_Camera.h" #include "DSi_Camera.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -793,3 +795,5 @@ void DSi_Camera::InputFrame(u32* data, int width, int height, bool rgb)
} }
} }
} }
}

View File

@ -23,6 +23,8 @@
#include "Savestate.h" #include "Savestate.h"
#include "DSi_I2C.h" #include "DSi_I2C.h"
namespace melonDS
{
class DSi_CamModule; class DSi_CamModule;
class DSi_Camera : public DSi_I2CDevice class DSi_Camera : public DSi_I2CDevice
@ -121,4 +123,5 @@ private:
static const u32 kTransferStart; static const u32 kTransferStart;
}; };
}
#endif // DSI_CAMERA_H #endif // DSI_CAMERA_H

View File

@ -24,6 +24,8 @@
#include "NDS.h" #include "NDS.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -593,3 +595,5 @@ void DSi_DSP::DoSavestate(Savestate* file)
// TODO: save the Teakra state!!! // TODO: save the Teakra state!!!
} }
}

View File

@ -27,6 +27,8 @@
namespace Teakra { class Teakra; } namespace Teakra { class Teakra; }
namespace melonDS
{
class DSi_DSP class DSi_DSP
{ {
public: public:
@ -104,5 +106,6 @@ private:
u16 PDataDMAReadMMIO(); u16 PDataDMAReadMMIO();
}; };
}
#endif // DSI_DSP_H #endif // DSI_DSP_H

View File

@ -26,6 +26,8 @@
#include "SPI.h" #include "SPI.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -592,3 +594,5 @@ void DSi_I2CHost::WriteData(u8 val)
{ {
Data = val; Data = val;
} }
}

View File

@ -22,6 +22,8 @@
#include "types.h" #include "types.h"
#include "Savestate.h" #include "Savestate.h"
namespace melonDS
{
class DSi_I2CHost; class DSi_I2CHost;
class DSi_Camera; class DSi_Camera;
@ -180,4 +182,5 @@ private:
void GetCurDevice(); void GetCurDevice();
}; };
}
#endif // DSI_I2C_H #endif // DSI_I2C_H

View File

@ -30,9 +30,9 @@
#include "fatfs/ff.h" #include "fatfs/ff.h"
using namespace Platform; using namespace melonDS::Platform;
namespace DSi_NAND namespace melonDS::DSi_NAND
{ {
NANDImage::NANDImage(Platform::FileHandle* nandfile, const DSiKey& es_keyY) noexcept : NANDImage(nandfile, es_keyY.data()) NANDImage::NANDImage(Platform::FileHandle* nandfile, const DSiKey& es_keyY) noexcept : NANDImage(nandfile, es_keyY.data())

View File

@ -31,7 +31,7 @@
struct AES_ctx; struct AES_ctx;
namespace DSi_NAND namespace melonDS::DSi_NAND
{ {
enum enum

View File

@ -23,10 +23,12 @@
#include "GPU.h" #include "GPU.h"
#include "DSi_AES.h" #include "DSi_AES.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
DSi_NDMA::DSi_NDMA(u32 cpu, u32 num, Melon::GPU& gpu) : GPU(gpu) DSi_NDMA::DSi_NDMA(u32 cpu, u32 num, melonDS::GPU& gpu) : GPU(gpu)
{ {
CPU = cpu; CPU = cpu;
Num = num; Num = num;
@ -375,3 +377,5 @@ void DSi_NDMA::Run7()
DSi::AES->CheckInputDMA(); DSi::AES->CheckInputDMA();
DSi::AES->CheckOutputDMA(); DSi::AES->CheckOutputDMA();
} }
}

View File

@ -22,15 +22,14 @@
#include "types.h" #include "types.h"
#include "Savestate.h" #include "Savestate.h"
namespace Melon namespace melonDS
{ {
class GPU; class GPU;
}
class DSi_NDMA class DSi_NDMA
{ {
public: public:
DSi_NDMA(u32 cpu, u32 num, Melon::GPU& gpu); DSi_NDMA(u32 cpu, u32 num, GPU& gpu);
~DSi_NDMA(); ~DSi_NDMA();
void Reset(); void Reset();
@ -78,7 +77,7 @@ public:
u32 Cnt; u32 Cnt;
private: private:
Melon::GPU& GPU; melonDS::GPU& GPU;
u32 CPU, Num; u32 CPU, Num;
u32 StartMode; u32 StartMode;
@ -100,4 +99,5 @@ private:
bool IsGXFIFODMA; bool IsGXFIFODMA;
}; };
}
#endif // DSI_NDMA_H #endif // DSI_NDMA_H

View File

@ -24,6 +24,9 @@
#include "WifiAP.h" #include "WifiAP.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -1607,3 +1610,5 @@ void DSi_NWifi::MSTimer(u32 param)
NDS::ScheduleEvent(NDS::Event_DSi_NWifi, true, 33611, 0, 0); NDS::ScheduleEvent(NDS::Event_DSi_NWifi, true, 33611, 0, 0);
} }
}

View File

@ -23,6 +23,8 @@
#include "FIFO.h" #include "FIFO.h"
#include "Savestate.h" #include "Savestate.h"
namespace melonDS
{
class DSi_NWifi : public DSi_SDDevice class DSi_NWifi : public DSi_SDDevice
{ {
public: public:
@ -146,4 +148,5 @@ private:
u8 LANBuffer[2048]; u8 LANBuffer[2048];
}; };
}
#endif // DSI_NWIFI_H #endif // DSI_NWIFI_H

View File

@ -24,6 +24,8 @@
#include "DSi_NWifi.h" #include "DSi_NWifi.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS
{
using namespace Platform; using namespace Platform;
// observed IRQ behavior during transfers // observed IRQ behavior during transfers
@ -1095,3 +1097,5 @@ u32 DSi_MMCStorage::WriteBlock(u64 addr)
return len; return len;
} }
}

View File

@ -24,6 +24,8 @@
#include "FATStorage.h" #include "FATStorage.h"
#include "Savestate.h" #include "Savestate.h"
namespace melonDS
{
namespace DSi_NAND namespace DSi_NAND
{ {
class NANDImage; class NANDImage;
@ -169,4 +171,5 @@ private:
u32 WriteBlock(u64 addr); u32 WriteBlock(u64 addr);
}; };
}
#endif // DSI_SD_H #endif // DSI_SD_H

View File

@ -22,6 +22,8 @@
#include "DSi_SPI_TSC.h" #include "DSi_SPI_TSC.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -219,3 +221,5 @@ void DSi_TSC::Release()
DataPos = 0; DataPos = 0;
} }
}

View File

@ -23,6 +23,8 @@
#include "Savestate.h" #include "Savestate.h"
#include "SPI.h" #include "SPI.h"
namespace melonDS
{
class DSi_TSC : public TSC class DSi_TSC : public TSC
{ {
public: public:
@ -50,4 +52,5 @@ private:
u8 TSCMode; u8 TSCMode;
}; };
}
#endif // DSI_SPI_TSC #endif // DSI_SPI_TSC

View File

@ -22,7 +22,7 @@
#include "types.h" #include "types.h"
#include <array> #include <array>
namespace DSi_TMD namespace melonDS::DSi_TMD
{ {
struct TitleMetadataContent { struct TitleMetadataContent {

View File

@ -20,13 +20,15 @@
#include "fatfs/ff.h" #include "fatfs/ff.h"
#include "fatfs/diskio.h" #include "fatfs/diskio.h"
using namespace melonDS;
static ff_disk_read_cb ReadCb; static ff_disk_read_cb ReadCb;
static ff_disk_write_cb WriteCb; static ff_disk_write_cb WriteCb;
static LBA_t SectorCount; static LBA_t SectorCount;
static DSTATUS Status = STA_NOINIT | STA_NODISK; static DSTATUS Status = STA_NOINIT | STA_NODISK;
void ff_disk_open(const ff_disk_read_cb& readcb, const ff_disk_write_cb& writecb, LBA_t seccnt) void melonDS::ff_disk_open(const ff_disk_read_cb& readcb, const ff_disk_write_cb& writecb, LBA_t seccnt)
{ {
if (!readcb) return; if (!readcb) return;
@ -39,7 +41,7 @@ void ff_disk_open(const ff_disk_read_cb& readcb, const ff_disk_write_cb& writecb
else Status &= ~STA_PROTECT; else Status &= ~STA_PROTECT;
} }
void ff_disk_close() void melonDS::ff_disk_close()
{ {
ReadCb = nullptr; ReadCb = nullptr;
WriteCb = nullptr; WriteCb = nullptr;

View File

@ -24,11 +24,13 @@
#include "fatfs/ff.h" #include "fatfs/ff.h"
// extra additions for interfacing with melonDS // extra additions for interfacing with melonDS
namespace melonDS
{
using ff_disk_read_cb = std::function<UINT(BYTE*, LBA_t, UINT)>; using ff_disk_read_cb = std::function<UINT(BYTE*, LBA_t, UINT)>;
using ff_disk_write_cb = std::function<UINT(const BYTE*, LBA_t, UINT)>; using ff_disk_write_cb = std::function<UINT(const BYTE*, LBA_t, UINT)>;
void ff_disk_open(const ff_disk_read_cb& readcb, const ff_disk_write_cb& writecb, LBA_t seccnt); void ff_disk_open(const ff_disk_read_cb& readcb, const ff_disk_write_cb& writecb, LBA_t seccnt);
void ff_disk_close(); void ff_disk_close();
}
#endif // FATIO_H #endif // FATIO_H

View File

@ -25,6 +25,8 @@
#include "FATStorage.h" #include "FATStorage.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS
{
namespace fs = std::filesystem; namespace fs = std::filesystem;
using namespace Platform; using namespace Platform;
@ -1104,3 +1106,5 @@ bool FATStorage::Save()
return true; return true;
} }
}

View File

@ -28,7 +28,8 @@
#include "types.h" #include "types.h"
#include "fatfs/ff.h" #include "fatfs/ff.h"
namespace melonDS
{
class FATStorage class FATStorage
{ {
public: public:
@ -99,4 +100,5 @@ private:
std::map<std::string, FileIndexEntry> FileIndex; std::map<std::string, FileIndexEntry> FileIndex;
}; };
}
#endif // FATSTORAGE_H #endif // FATSTORAGE_H

View File

@ -22,6 +22,8 @@
#include "types.h" #include "types.h"
#include "Savestate.h" #include "Savestate.h"
namespace melonDS
{
template<typename T, u32 NumEntries> template<typename T, u32 NumEntries>
class FIFO class FIFO
{ {
@ -189,4 +191,5 @@ private:
u32 ReadPos, WritePos; u32 ReadPos, WritePos;
}; };
}
#endif #endif

View File

@ -26,6 +26,8 @@
#include "FreeBIOS.h" #include "FreeBIOS.h"
namespace melonDS
{
unsigned char bios_arm7_bin[] = { unsigned char bios_arm7_bin[] = {
0x1c, 0x04, 0x00, 0xea, 0x1c, 0x04, 0x00, 0xea, 0x1c, 0x04, 0x00, 0xea, 0x1c, 0x04, 0x00, 0xea, 0x1c, 0x04, 0x00, 0xea, 0x1c, 0x04, 0x00, 0xea,
0x1a, 0x04, 0x00, 0xea, 0x19, 0x04, 0x00, 0xea, 0x18, 0x04, 0x00, 0xea, 0x1a, 0x04, 0x00, 0xea, 0x19, 0x04, 0x00, 0xea, 0x18, 0x04, 0x00, 0xea,
@ -1739,3 +1741,4 @@ unsigned char bios_arm9_bin[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00
}; };
}

View File

@ -28,7 +28,10 @@
#ifndef FREEBIOS_H #ifndef FREEBIOS_H
#define FREEBIOS_H #define FREEBIOS_H
namespace melonDS
{
extern unsigned char bios_arm7_bin[16384]; extern unsigned char bios_arm7_bin[16384];
extern unsigned char bios_arm9_bin[4096]; extern unsigned char bios_arm9_bin[4096];
}
#endif // FREEBIOS_H #endif // FREEBIOS_H

View File

@ -24,6 +24,8 @@
#include "CRC32.h" #include "CRC32.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -897,3 +899,5 @@ void GBACartSlot::SRAMWrite(u32 addr, u8 val) noexcept
} }
} }
}

View File

@ -23,7 +23,7 @@
#include "types.h" #include "types.h"
#include "Savestate.h" #include "Savestate.h"
namespace GBACart namespace melonDS::GBACart
{ {
enum CartType enum CartType

View File

@ -26,6 +26,8 @@
#include "GPU3D_Soft.h" #include "GPU3D_Soft.h"
#include "GPU3D_OpenGL.h" #include "GPU3D_OpenGL.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -33,8 +35,6 @@ using Platform::LogLevel;
#define HBLANK_CYCLES (48+(256*6)) #define HBLANK_CYCLES (48+(256*6))
#define FRAME_CYCLES (LINE_CYCLES * 263) #define FRAME_CYCLES (LINE_CYCLES * 263)
namespace Melon
{
enum enum
{ {
LCD_StartHBlank = 0, LCD_StartHBlank = 0,
@ -64,7 +64,7 @@ enum
VRAMDirty need to be reset for the respective VRAM bank. VRAMDirty need to be reset for the respective VRAM bank.
*/ */
GPU::GPU(ARMJIT::ARMJIT& jit) noexcept : GPU2D_A(0, *this), GPU2D_B(1, *this), JIT(jit) GPU::GPU(ARMJIT& jit) noexcept : GPU2D_A(0, *this), GPU2D_B(1, *this), JIT(jit)
{ {
NDS::RegisterEventFunc(NDS::Event_LCD, LCD_StartHBlank, MemberEventFunc(GPU, StartHBlank)); NDS::RegisterEventFunc(NDS::Event_LCD, LCD_StartHBlank, MemberEventFunc(GPU, StartHBlank));
NDS::RegisterEventFunc(NDS::Event_LCD, LCD_StartScanline, MemberEventFunc(GPU, StartScanline)); NDS::RegisterEventFunc(NDS::Event_LCD, LCD_StartScanline, MemberEventFunc(GPU, StartScanline));
@ -319,21 +319,21 @@ void GPU::InitRenderer(int renderer) noexcept
{ {
// Fallback on software renderer // Fallback on software renderer
renderer = 0; renderer = 0;
GPU3D.SetCurrentRenderer(std::make_unique<GPU3D::SoftRenderer>(*this)); GPU3D.SetCurrentRenderer(std::make_unique<SoftRenderer>(*this));
} }
GPU3D.SetCurrentRenderer(GPU3D::GLRenderer::New(*this)); GPU3D.SetCurrentRenderer(GLRenderer::New(*this));
if (!GPU3D.GetCurrentRenderer()) if (!GPU3D.GetCurrentRenderer())
{ {
// Fallback on software renderer // Fallback on software renderer
CurGLCompositor.reset(); CurGLCompositor.reset();
renderer = 0; renderer = 0;
GPU3D.SetCurrentRenderer(std::make_unique<GPU3D::SoftRenderer>(*this)); GPU3D.SetCurrentRenderer(std::make_unique<SoftRenderer>(*this));
} }
} }
else else
#endif #endif
{ {
GPU3D.SetCurrentRenderer(std::make_unique<GPU3D::SoftRenderer>(*this)); GPU3D.SetCurrentRenderer(std::make_unique<SoftRenderer>(*this));
} }
Renderer = renderer; Renderer = renderer;

View File

@ -29,19 +29,11 @@
#include "GPU_OpenGL.h" #include "GPU_OpenGL.h"
#endif #endif
namespace melonDS
namespace GPU3D
{ {
class GPU3D; class GPU3D;
}
namespace ARMJIT
{
class ARMJIT; class ARMJIT;
}
namespace Melon
{
static constexpr u32 VRAMDirtyGranularity = 512; static constexpr u32 VRAMDirtyGranularity = 512;
class GPU; class GPU;
@ -75,7 +67,7 @@ struct RenderSettings
class GPU class GPU
{ {
public: public:
GPU(ARMJIT::ARMJIT& jit) noexcept; GPU(ARMJIT& jit) noexcept;
~GPU() noexcept; ~GPU() noexcept;
void Reset() noexcept; void Reset() noexcept;
void Stop() noexcept; void Stop() noexcept;
@ -544,7 +536,7 @@ public:
void SyncDirtyFlags() noexcept; void SyncDirtyFlags() noexcept;
ARMJIT::ARMJIT& JIT; ARMJIT& JIT;
u16 VCount = 0; u16 VCount = 0;
u16 TotalScanlines = 0; u16 TotalScanlines = 0;
u16 DispStat[2] {}; u16 DispStat[2] {};
@ -590,7 +582,7 @@ public:
GPU2D::Unit GPU2D_A; GPU2D::Unit GPU2D_A;
GPU2D::Unit GPU2D_B; GPU2D::Unit GPU2D_B;
GPU3D::GPU3D GPU3D {}; melonDS::GPU3D GPU3D {};
NonStupidBitField<128*1024/VRAMDirtyGranularity> VRAMDirty[9] {}; NonStupidBitField<128*1024/VRAMDirtyGranularity> VRAMDirty[9] {};
VRAMTrackingSet<512*1024, 16*1024> VRAMDirty_ABG {}; VRAMTrackingSet<512*1024, 16*1024> VRAMDirty_ABG {};

View File

@ -21,6 +21,8 @@
#include "NDS.h" #include "NDS.h"
#include "GPU.h" #include "GPU.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -84,8 +86,7 @@ using Platform::LogLevel;
namespace GPU2D namespace GPU2D
{ {
Unit::Unit(u32 num, melonDS::GPU& gpu) : Num(num), GPU(gpu)
Unit::Unit(u32 num, Melon::GPU& gpu) : Num(num), GPU(gpu)
{ {
} }
@ -722,3 +723,4 @@ void Unit::GetOBJVRAM(u8*& data, u32& mask)
} }
} }
}

View File

@ -22,10 +22,9 @@
#include "types.h" #include "types.h"
#include "Savestate.h" #include "Savestate.h"
namespace Melon namespace melonDS
{ {
class GPU; class GPU;
}
namespace GPU2D namespace GPU2D
{ {
@ -35,7 +34,7 @@ class Unit
public: public:
// take a reference to the GPU so we can access its state // take a reference to the GPU so we can access its state
// and ensure that it's not null // and ensure that it's not null
Unit(u32 num, Melon::GPU& gpu); Unit(u32 num, melonDS::GPU& gpu);
Unit(const Unit&) = delete; Unit(const Unit&) = delete;
Unit& operator=(const Unit&) = delete; Unit& operator=(const Unit&) = delete;
@ -124,7 +123,7 @@ public:
u16 MasterBrightness; u16 MasterBrightness;
private: private:
Melon::GPU& GPU; melonDS::GPU& GPU;
}; };
class Renderer2D class Renderer2D
@ -150,4 +149,5 @@ protected:
} }
}
#endif #endif

View File

@ -20,10 +20,11 @@
#include "GPU.h" #include "GPU.h"
#include "GPU3D_OpenGL.h" #include "GPU3D_OpenGL.h"
namespace melonDS
{
namespace GPU2D namespace GPU2D
{ {
SoftRenderer::SoftRenderer(melonDS::GPU& gpu)
SoftRenderer::SoftRenderer(Melon::GPU& gpu)
: Renderer2D(), GPU(gpu) : Renderer2D(), GPU(gpu)
{ {
// initialize mosaic table // initialize mosaic table
@ -368,7 +369,7 @@ void SoftRenderer::VBlankEnd(Unit* unitA, Unit* unitB)
{ {
if ((unitA->CaptureCnt & (1<<31)) && (((unitA->CaptureCnt >> 29) & 0x3) != 1)) if ((unitA->CaptureCnt & (1<<31)) && (((unitA->CaptureCnt >> 29) & 0x3) != 1))
{ {
reinterpret_cast<GPU3D::GLRenderer*>(GPU.GPU3D.GetCurrentRenderer())->PrepareCaptureFrame(); reinterpret_cast<GLRenderer*>(GPU.GPU3D.GetCurrentRenderer())->PrepareCaptureFrame();
} }
} }
#endif #endif
@ -479,8 +480,8 @@ void SoftRenderer::DoCapture(u32 line, u32 width)
dstaddr &= 0xFFFF; dstaddr &= 0xFFFF;
srcBaddr &= 0xFFFF; srcBaddr &= 0xFFFF;
static_assert(Melon::VRAMDirtyGranularity == 512); static_assert(VRAMDirtyGranularity == 512);
GPU.VRAMDirty[dstvram][(dstaddr * 2) / Melon::VRAMDirtyGranularity] = true; GPU.VRAMDirty[dstvram][(dstaddr * 2) / VRAMDirtyGranularity] = true;
switch ((captureCnt >> 29) & 0x3) switch ((captureCnt >> 29) & 0x3)
{ {
@ -2226,3 +2227,4 @@ void SoftRenderer::DrawSprite_Normal(u32 num, u32 width, u32 height, s32 xpos, s
} }
} }
}

View File

@ -20,10 +20,9 @@
#include "GPU2D.h" #include "GPU2D.h"
namespace Melon namespace melonDS
{ {
class GPU; class GPU;
}
namespace GPU2D namespace GPU2D
{ {
@ -31,14 +30,14 @@ namespace GPU2D
class SoftRenderer : public Renderer2D class SoftRenderer : public Renderer2D
{ {
public: public:
SoftRenderer(Melon::GPU& gpu); SoftRenderer(melonDS::GPU& gpu);
~SoftRenderer() override {} ~SoftRenderer() override {}
void DrawScanline(u32 line, Unit* unit) override; void DrawScanline(u32 line, Unit* unit) override;
void DrawSprites(u32 line, Unit* unit) override; void DrawSprites(u32 line, Unit* unit) override;
void VBlankEnd(Unit* unitA, Unit* unitB) override; void VBlankEnd(Unit* unitA, Unit* unitB) override;
private: private:
Melon::GPU& GPU; melonDS::GPU& GPU;
alignas(8) u32 BGOBJLine[256*3]; alignas(8) u32 BGOBJLine[256*3];
u32* _3DLine; u32* _3DLine;
@ -84,3 +83,5 @@ private:
}; };
} }
}

View File

@ -24,6 +24,8 @@
#include "FIFO.h" #include "FIFO.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -98,9 +100,6 @@ using Platform::LogLevel;
// * additionally, some commands (BEGIN, LIGHT_VECTOR, BOXTEST) stall the polygon pipeline // * additionally, some commands (BEGIN, LIGHT_VECTOR, BOXTEST) stall the polygon pipeline
namespace GPU3D
{
const u8 CmdNumParams[256] = const u8 CmdNumParams[256] =
{ {
// 0x00 // 0x00

View File

@ -25,13 +25,9 @@
#include "Savestate.h" #include "Savestate.h"
#include "FIFO.h" #include "FIFO.h"
namespace Melon namespace melonDS
{ {
struct RenderSettings; struct RenderSettings;
}
namespace GPU3D
{
struct Vertex struct Vertex
{ {
@ -340,7 +336,7 @@ public:
// are more detailed "traits" that we can ask of the Renderer3D type // are more detailed "traits" that we can ask of the Renderer3D type
const bool Accelerated; const bool Accelerated;
virtual void SetRenderSettings(const Melon::RenderSettings& settings) noexcept = 0; virtual void SetRenderSettings(const RenderSettings& settings) noexcept = 0;
virtual void VCount144() {}; virtual void VCount144() {};

View File

@ -25,7 +25,7 @@
#include "GPU.h" #include "GPU.h"
#include "GPU3D_OpenGL_shaders.h" #include "GPU3D_OpenGL_shaders.h"
namespace GPU3D namespace melonDS
{ {
bool GLRenderer::BuildRenderShader(u32 flags, const char* vs, const char* fs) bool GLRenderer::BuildRenderShader(u32 flags, const char* vs, const char* fs)
@ -97,14 +97,14 @@ void SetupDefaultTexParams(GLuint tex)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
} }
GLRenderer::GLRenderer(Melon::GPU& gpu) noexcept : Renderer3D(true), GPU(gpu) GLRenderer::GLRenderer(melonDS::GPU& gpu) noexcept : Renderer3D(true), GPU(gpu)
{ {
// GLRenderer::New() will be used to actually initialize the renderer; // GLRenderer::New() will be used to actually initialize the renderer;
// The various glDelete* functions silently ignore invalid IDs, // The various glDelete* functions silently ignore invalid IDs,
// so we can just let the destructor clean up a half-initialized renderer. // so we can just let the destructor clean up a half-initialized renderer.
} }
std::unique_ptr<GLRenderer> GLRenderer::New(Melon::GPU& gpu) noexcept std::unique_ptr<GLRenderer> GLRenderer::New(melonDS::GPU& gpu) noexcept
{ {
assert(glEnable != nullptr); assert(glEnable != nullptr);
@ -329,7 +329,7 @@ void GLRenderer::Reset()
{ {
} }
void GLRenderer::SetRenderSettings(const Melon::RenderSettings& settings) noexcept void GLRenderer::SetRenderSettings(const RenderSettings& settings) noexcept
{ {
int scale = settings.GL_ScaleFactor; int scale = settings.GL_ScaleFactor;

View File

@ -23,20 +23,17 @@
#include "OpenGLSupport.h" #include "OpenGLSupport.h"
namespace Melon namespace melonDS
{ {
class GPU; class GPU;
}
namespace GPU3D
{
class GLRenderer : public Renderer3D class GLRenderer : public Renderer3D
{ {
public: public:
virtual ~GLRenderer() override; virtual ~GLRenderer() override;
virtual void Reset() override; virtual void Reset() override;
virtual void SetRenderSettings(const Melon::RenderSettings& settings) noexcept override; virtual void SetRenderSettings(const RenderSettings& settings) noexcept override;
virtual void VCount144() override {}; virtual void VCount144() override {};
virtual void RenderFrame() override; virtual void RenderFrame() override;
@ -45,10 +42,10 @@ public:
void SetupAccelFrame(); void SetupAccelFrame();
void PrepareCaptureFrame(); void PrepareCaptureFrame();
static std::unique_ptr<GLRenderer> New(Melon::GPU& gpu) noexcept; static std::unique_ptr<GLRenderer> New(melonDS::GPU& gpu) noexcept;
private: private:
// Used by New() // Used by New()
GLRenderer(Melon::GPU& gpu) noexcept; GLRenderer(melonDS::GPU& gpu) noexcept;
// GL version requirements // GL version requirements
// * texelFetch: 3.0 (GLSL 1.30) (3.2/1.50 for MS) // * texelFetch: 3.0 (GLSL 1.30) (3.2/1.50 for MS)
@ -68,7 +65,7 @@ private:
u32 RenderKey; u32 RenderKey;
}; };
Melon::GPU& GPU; melonDS::GPU& GPU;
RendererPolygon PolygonList[2048] {}; RendererPolygon PolygonList[2048] {};
bool BuildRenderShader(u32 flags, const char* vs, const char* fs); bool BuildRenderShader(u32 flags, const char* vs, const char* fs);

View File

@ -21,7 +21,8 @@
#define kShaderHeader "#version 140" #define kShaderHeader "#version 140"
namespace melonDS
{
const char* kClearVS = kShaderHeader R"( const char* kClearVS = kShaderHeader R"(
in vec2 vPosition; in vec2 vPosition;
@ -802,5 +803,5 @@ void main()
gl_FragDepth = fZ; gl_FragDepth = fZ;
} }
)"; )";
}
#endif // GPU3D_OPENGL_SHADERS_H #endif // GPU3D_OPENGL_SHADERS_H

View File

@ -24,8 +24,7 @@
#include "NDS.h" #include "NDS.h"
#include "GPU.h" #include "GPU.h"
namespace melonDS
namespace GPU3D
{ {
void RenderThreadFunc(); void RenderThreadFunc();
@ -72,7 +71,7 @@ void SoftRenderer::SetupRenderThread()
} }
SoftRenderer::SoftRenderer(Melon::GPU& gpu) noexcept SoftRenderer::SoftRenderer(melonDS::GPU& gpu) noexcept
: Renderer3D(false), GPU(gpu) : Renderer3D(false), GPU(gpu)
{ {
Sema_RenderStart = Platform::Semaphore_Create(); Sema_RenderStart = Platform::Semaphore_Create();
@ -105,7 +104,7 @@ void SoftRenderer::Reset()
SetupRenderThread(); SetupRenderThread();
} }
void SoftRenderer::SetRenderSettings(const Melon::RenderSettings& settings) noexcept void SoftRenderer::SetRenderSettings(const RenderSettings& settings) noexcept
{ {
Threaded = settings.Soft_Threaded; Threaded = settings.Soft_Threaded;
SetupRenderThread(); SetupRenderThread();

View File

@ -24,16 +24,16 @@
#include <thread> #include <thread>
#include <atomic> #include <atomic>
namespace GPU3D namespace melonDS
{ {
class SoftRenderer : public Renderer3D class SoftRenderer : public Renderer3D
{ {
public: public:
SoftRenderer(Melon::GPU& gpu) noexcept; SoftRenderer(melonDS::GPU& gpu) noexcept;
virtual ~SoftRenderer() override; virtual ~SoftRenderer() override;
virtual void Reset() override; virtual void Reset() override;
virtual void SetRenderSettings(const Melon::RenderSettings& settings) noexcept override; virtual void SetRenderSettings(const RenderSettings& settings) noexcept override;
virtual void VCount144() override; virtual void VCount144() override;
virtual void RenderFrame() override; virtual void RenderFrame() override;
@ -451,7 +451,7 @@ private:
}; };
Melon::GPU& GPU; melonDS::GPU& GPU;
RendererPolygon PolygonList[2048]; RendererPolygon PolygonList[2048];
void TextureLookup(u32 texparam, u32 texpal, s16 s, s16 t, u16* color, u8* alpha); void TextureLookup(u32 texparam, u32 texpal, s16 s, s16 t, u16* color, u8* alpha);
u32 RenderPixel(Polygon* polygon, u8 vr, u8 vg, u8 vb, s16 s, s16 t); u32 RenderPixel(Polygon* polygon, u8 vr, u8 vg, u8 vb, s16 s, s16 t);

View File

@ -28,12 +28,12 @@
#include "OpenGLSupport.h" #include "OpenGLSupport.h"
#include "GPU_OpenGL_shaders.h" #include "GPU_OpenGL_shaders.h"
namespace Melon namespace melonDS
{ {
using namespace OpenGL; using namespace OpenGL;
std::unique_ptr<GLCompositor> GLCompositor::New(Melon::GPU& gpu) noexcept std::unique_ptr<GLCompositor> GLCompositor::New(melonDS::GPU& gpu) noexcept
{ {
assert(glBindAttribLocation != nullptr); assert(glBindAttribLocation != nullptr);
@ -53,7 +53,7 @@ std::unique_ptr<GLCompositor> GLCompositor::New(Melon::GPU& gpu) noexcept
return std::unique_ptr<GLCompositor>(new GLCompositor(CompShader, gpu)); return std::unique_ptr<GLCompositor>(new GLCompositor(CompShader, gpu));
} }
GLCompositor::GLCompositor(std::array<GLuint, 3> compShader, Melon::GPU& gpu) noexcept : CompShader(compShader), GPU(gpu) GLCompositor::GLCompositor(std::array<GLuint, 3> compShader, melonDS::GPU& gpu) noexcept : CompShader(compShader), GPU(gpu)
{ {
CompScaleLoc = glGetUniformLocation(CompShader[2], "u3DScale"); CompScaleLoc = glGetUniformLocation(CompShader[2], "u3DScale");
Comp3DXPosLoc = glGetUniformLocation(CompShader[2], "u3DXPos"); Comp3DXPosLoc = glGetUniformLocation(CompShader[2], "u3DXPos");
@ -218,7 +218,7 @@ void GLCompositor::RenderFrame()
} }
glActiveTexture(GL_TEXTURE1); glActiveTexture(GL_TEXTURE1);
reinterpret_cast<GPU3D::GLRenderer*>(GPU.GPU3D.GetCurrentRenderer())->SetupAccelFrame(); reinterpret_cast<GLRenderer*>(GPU.GPU3D.GetCurrentRenderer())->SetupAccelFrame();
glBindBuffer(GL_ARRAY_BUFFER, CompVertexBufferID); glBindBuffer(GL_ARRAY_BUFFER, CompVertexBufferID);
glBindVertexArray(CompVertexArrayID); glBindVertexArray(CompVertexArrayID);

View File

@ -23,7 +23,7 @@
#include <array> #include <array>
#include <memory> #include <memory>
namespace Melon namespace melonDS
{ {
class GPU; class GPU;
struct RenderSettings; struct RenderSettings;
@ -31,7 +31,7 @@ struct RenderSettings;
class GLCompositor class GLCompositor
{ {
public: public:
static std::unique_ptr<GLCompositor> New(Melon::GPU& gpu) noexcept; static std::unique_ptr<GLCompositor> New(melonDS::GPU& gpu) noexcept;
GLCompositor(const GLCompositor&) = delete; GLCompositor(const GLCompositor&) = delete;
GLCompositor& operator=(const GLCompositor&) = delete; GLCompositor& operator=(const GLCompositor&) = delete;
~GLCompositor(); ~GLCompositor();
@ -44,8 +44,8 @@ public:
void RenderFrame(); void RenderFrame();
void BindOutputTexture(int buf); void BindOutputTexture(int buf);
private: private:
GLCompositor(std::array<GLuint, 3> CompShader, Melon::GPU& gpu) noexcept; GLCompositor(std::array<GLuint, 3> CompShader, melonDS::GPU& gpu) noexcept;
Melon::GPU& GPU; melonDS::GPU& GPU;
int Scale; int Scale;
int ScreenH, ScreenW; int ScreenH, ScreenW;

View File

@ -19,6 +19,8 @@
#ifndef GPU_OPENGL_SHADERS_H #ifndef GPU_OPENGL_SHADERS_H
#define GPU_OPENGL_SHADERS_H #define GPU_OPENGL_SHADERS_H
namespace melonDS
{
const char* kCompositorVS = R"(#version 140 const char* kCompositorVS = R"(#version 140
in vec2 vPosition; in vec2 vPosition;
@ -866,5 +868,6 @@ void main()
}
#endif // GPU_OPENGL_SHADERS_H #endif // GPU_OPENGL_SHADERS_H

View File

@ -22,7 +22,7 @@
#include "types.h" #include "types.h"
#include "TinyVector.h" #include "TinyVector.h"
namespace ARMJIT namespace melonDS
{ {
typedef void (*JitBlockEntry)(); typedef void (*JitBlockEntry)();

View File

@ -43,6 +43,8 @@
#include "ARMJIT.h" #include "ARMJIT.h"
#include "ARMJIT_Memory.h" #include "ARMJIT_Memory.h"
namespace melonDS
{
using namespace Platform; using namespace Platform;
namespace NDS namespace NDS
@ -182,8 +184,8 @@ class RTC* RTC;
class Wifi* Wifi; class Wifi* Wifi;
std::unique_ptr<NDSCart::NDSCartSlot> NDSCartSlot; std::unique_ptr<NDSCart::NDSCartSlot> NDSCartSlot;
std::unique_ptr<GBACart::GBACartSlot> GBACartSlot; std::unique_ptr<GBACart::GBACartSlot> GBACartSlot;
std::unique_ptr<Melon::GPU> GPU; std::unique_ptr<melonDS::GPU> GPU;
std::unique_ptr<ARMJIT::ARMJIT> JIT; std::unique_ptr<ARMJIT> JIT;
class AREngine* AREngine; class AREngine* AREngine;
bool Running; bool Running;
@ -203,8 +205,8 @@ bool Init()
RegisterEventFunc(Event_Div, 0, DivDone); RegisterEventFunc(Event_Div, 0, DivDone);
RegisterEventFunc(Event_Sqrt, 0, SqrtDone); RegisterEventFunc(Event_Sqrt, 0, SqrtDone);
JIT = std::make_unique<ARMJIT::ARMJIT>(); JIT = std::make_unique<ARMJIT>();
GPU = std::make_unique<Melon::GPU>(*JIT); GPU = std::make_unique<melonDS::GPU>(*JIT);
MainRAM = JIT->Memory.GetMainRAM(); MainRAM = JIT->Memory.GetMainRAM();
SharedWRAM = JIT->Memory.GetSharedWRAM(); SharedWRAM = JIT->Memory.GetSharedWRAM();
@ -4462,3 +4464,5 @@ void ARM7IOWrite32(u32 addr, u32 val)
} }
} }
}

View File

@ -34,22 +34,16 @@
// with this enabled, to make sure it doesn't desync // with this enabled, to make sure it doesn't desync
//#define DEBUG_CHECK_DESYNC //#define DEBUG_CHECK_DESYNC
namespace melonDS
{
class SPU; class SPU;
class SPIHost; class SPIHost;
class RTC; class RTC;
class Wifi; class Wifi;
class AREngine; class AREngine;
namespace Melon
{
class GPU; class GPU;
}
namespace ARMJIT
{
class ARMJIT; class ARMJIT;
}
namespace NDS namespace NDS
{ {
@ -273,8 +267,8 @@ extern class RTC* RTC;
extern class Wifi* Wifi; extern class Wifi* Wifi;
extern std::unique_ptr<NDSCart::NDSCartSlot> NDSCartSlot; extern std::unique_ptr<NDSCart::NDSCartSlot> NDSCartSlot;
extern std::unique_ptr<GBACart::GBACartSlot> GBACartSlot; extern std::unique_ptr<GBACart::GBACartSlot> GBACartSlot;
extern std::unique_ptr<Melon::GPU> GPU; extern std::unique_ptr<GPU> GPU;
extern std::unique_ptr<ARMJIT::ARMJIT> JIT; extern std::unique_ptr<ARMJIT> JIT;
extern class AREngine* AREngine; extern class AREngine* AREngine;
const u32 ARM7WRAMSize = 0x10000; const u32 ARM7WRAMSize = 0x10000;
@ -394,4 +388,5 @@ void ARM7IOWrite32(u32 addr, u32 val);
} }
}
#endif // NDS_H #endif // NDS_H

View File

@ -27,6 +27,8 @@
#include "melonDLDI.h" #include "melonDLDI.h"
#include "xxhash/xxhash.h" #include "xxhash/xxhash.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -2068,3 +2070,5 @@ void NDSCartSlot::WriteSPIData(u8 val) noexcept
} }
} }
}

View File

@ -30,7 +30,7 @@
#include "FATStorage.h" #include "FATStorage.h"
#include "ROMList.h" #include "ROMList.h"
namespace NDSCart namespace melonDS::NDSCart
{ {
enum CartType enum CartType

View File

@ -22,6 +22,8 @@
#include <string.h> #include <string.h>
#include "types.h" #include "types.h"
namespace melonDS
{
/// Set to indicate the console regions that a ROM (including DSiWare) /// Set to indicate the console regions that a ROM (including DSiWare)
/// can be played on. /// can be played on.
enum RegionMask : u32 enum RegionMask : u32
@ -242,5 +244,6 @@ struct NDSBanner
static_assert(sizeof(NDSBanner) == 9152, "NDSBanner is not 9152 bytes!"); static_assert(sizeof(NDSBanner) == 9152, "NDSBanner is not 9152 bytes!");
}
#endif //NDS_HEADER_H #endif //NDS_HEADER_H

View File

@ -29,6 +29,8 @@
// like std::bitset but less stupid and optimised for // like std::bitset but less stupid and optimised for
// our use case (keeping track of memory invalidations) // our use case (keeping track of memory invalidations)
namespace melonDS
{
template <u32 Size> template <u32 Size>
struct NonStupidBitField struct NonStupidBitField
{ {
@ -203,5 +205,6 @@ struct NonStupidBitField
} }
}; };
}
#endif #endif

View File

@ -18,6 +18,9 @@
#include "OpenGLSupport.h" #include "OpenGLSupport.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -142,3 +145,5 @@ void UseShaderProgram(GLuint* ids)
} }
} }
}

View File

@ -25,8 +25,7 @@
#include "Platform.h" #include "Platform.h"
#include "PlatformOGL.h" #include "PlatformOGL.h"
namespace melonDS::OpenGL
namespace OpenGL
{ {
bool BuildShaderProgram(const char* vs, const char* fs, GLuint* ids, const char* name); bool BuildShaderProgram(const char* vs, const char* fs, GLuint* ids, const char* name);

View File

@ -24,6 +24,8 @@
#include <functional> #include <functional>
#include <string> #include <string>
namespace melonDS
{
class Firmware; class Firmware;
namespace Platform namespace Platform
@ -394,4 +396,5 @@ void DynamicLibrary_Unload(DynamicLibrary* lib);
void* DynamicLibrary_LoadFunction(DynamicLibrary* lib, const char* name); void* DynamicLibrary_LoadFunction(DynamicLibrary* lib, const char* name);
} }
}
#endif // PLATFORM_H #endif // PLATFORM_H

View File

@ -18,6 +18,8 @@
#include "ROMList.h" #include "ROMList.h"
namespace melonDS
{
const ROMListEntry ROMList[] = const ROMListEntry ROMList[] =
{ {
{0x41464141, 0x00800000, 0x00000004}, {0x41464141, 0x00800000, 0x00000004},
@ -6801,3 +6803,5 @@ const ROMListEntry ROMList[] =
}; };
const size_t ROMListEntryCount = sizeof(ROMList) / sizeof(ROMListEntry); const size_t ROMListEntryCount = sizeof(ROMList) / sizeof(ROMListEntry);
}

View File

@ -23,6 +23,8 @@
#include "types.h" #include "types.h"
namespace melonDS
{
struct ROMListEntry struct ROMListEntry
{ {
u32 GameCode; u32 GameCode;
@ -36,4 +38,5 @@ extern const ROMListEntry ROMList[];
/// The number of elements in \c ROMList. /// The number of elements in \c ROMList.
extern const size_t ROMListEntryCount; extern const size_t ROMListEntryCount;
}
#endif // ROMLIST_H #endif // ROMLIST_H

View File

@ -21,6 +21,8 @@
#include "RTC.h" #include "RTC.h"
#include "Platform.h" #include "Platform.h"
namespace melonDS
{
using Platform::Log; using Platform::Log;
using Platform::LogLevel; using Platform::LogLevel;
@ -940,3 +942,5 @@ void RTC::Write(u16 val, bool byte)
else else
IO = (IO & 0x0001) | (val & 0xFFFE); IO = (IO & 0x0001) | (val & 0xFFFE);
} }
}

View File

@ -22,6 +22,8 @@
#include "types.h" #include "types.h"
#include "Savestate.h" #include "Savestate.h"
namespace melonDS
{
class RTC class RTC
{ {
public: public:
@ -113,4 +115,5 @@ private:
void ByteIn(u8 val); void ByteIn(u8 val);
}; };
}
#endif #endif

Some files were not shown because too many files have changed in this diff Show More