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 "Platform.h"
namespace melonDS
{
using namespace Platform;
// TODO: import codes from other sources (usrcheat.dat, ...)
@ -182,3 +184,5 @@ bool ARCodeFile::Save()
CloseFile(f);
return true;
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -43,17 +43,17 @@
#include "Wifi.h"
#include "NDSCart.h"
#include "Platform.h"
#include "ARMJIT_x64/ARMJIT_Offsets.h"
namespace melonDS
{
using Platform::Log;
using Platform::LogLevel;
#include "ARMJIT_x64/ARMJIT_Offsets.h"
static_assert(offsetof(ARM, CPSR) == ARM_CPSR_offset, "");
static_assert(offsetof(ARM, Cycles) == ARM_Cycles_offset, "");
static_assert(offsetof(ARM, StopExecution) == ARM_StopExecution_offset, "");
namespace ARMJIT
{
#define JIT_DEBUGPRINT(msg, ...)
//#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;
}
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_MainRAM>(u32);
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_MainRAM>(u32);
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_SharedWRAM>(u32);
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_SharedWRAM>(u32);
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_WRAM7>(u32);
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_VWRAM>(u32);
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_VRAM>(u32);
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(u32);
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_A>(u32);
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_A>(u32);
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_B>(u32);
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_B>(u32);
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_C>(u32);
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_C>(u32);
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_MainRAM>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_MainRAM>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_SharedWRAM>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_SharedWRAM>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_WRAM7>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_VWRAM>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_VRAM>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_A>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_A>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_B>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_B>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<0, ARMJIT_Memory::memregion_NewSharedWRAM_C>(u32) noexcept;
template void ARMJIT::CheckAndInvalidate<1, ARMJIT_Memory::memregion_NewSharedWRAM_C>(u32) noexcept;
void ARMJIT::ResetBlockCache() noexcept
{

View File

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

View File

@ -20,7 +20,7 @@
using namespace Arm64Gen;
namespace ARMJIT
namespace melonDS
{
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();
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))
{

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -49,9 +49,6 @@
#include <stdlib.h>
using Platform::Log;
using Platform::LogLevel;
/*
We're handling fastmem here.
@ -100,6 +97,12 @@ using Platform::LogLevel;
#endif
#endif
namespace melonDS
{
using Platform::Log;
using Platform::LogLevel;
#if defined(__ANDROID__)
#define ASHMEM_DEVICE "/dev/ashmem"
#endif
@ -562,7 +565,7 @@ bool ARMJIT_Memory::MapAtAddress(u32 addr) noexcept
}
#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
// which can be mapped/protected
@ -580,9 +583,9 @@ bool ARMJIT_Memory::MapAtAddress(u32 addr) noexcept
else
{
u32 sectionOffset = offset;
bool hasCode = isExecutable && ARMJIT::PageContainsCode(&range[offset / 512]);
bool hasCode = isExecutable && PageContainsCode(&range[offset / 512]);
while (offset < mirrorSize
&& (!isExecutable || ARMJIT::PageContainsCode(&range[offset / 512]) == hasCode)
&& (!isExecutable || PageContainsCode(&range[offset / 512]) == hasCode)
&& (!skipDTCM || mirrorStart + offset != NDS::ARM9->DTCMBase))
{
assert(states[(mirrorStart + offset) >> 12] == memstate_Unmapped);
@ -617,7 +620,7 @@ bool ARMJIT_Memory::MapAtAddress(u32 addr) noexcept
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))
{
@ -638,7 +641,7 @@ bool ARMJIT_Memory::FaultHandler(FaultDescription& faultDesc, ARMJIT::ARMJIT& ji
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__)
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;
}
}

View File

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

View File

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

View File

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

View File

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

View File

@ -34,10 +34,11 @@
#endif
using namespace Gen;
using namespace Common;
extern "C" void ARM_Ret();
namespace ARMJIT
namespace melonDS
{
template <>
const X64Reg RegisterCache<Compiler, X64Reg>::NativeRegAllocOrder[] =
@ -141,7 +142,7 @@ void Compiler::A_Comp_MSR()
Comp_AddCycles_C();
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));
u32 mask = 0;

View File

@ -30,11 +30,11 @@
#include <unordered_map>
class ARMJIT_Memory;
namespace ARMJIT
namespace melonDS
{
class ARMJIT;
class ARMJIT_Memory;
const Gen::X64Reg RCPU = Gen::RBP;
const Gen::X64Reg RCPSR = Gen::R15;
@ -172,7 +172,7 @@ public:
memop_SubtractOffset = 1 << 4
};
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);
void Comp_ArithTriOp(void (Compiler::*op)(int, const Gen::OpArg&, const Gen::OpArg&),

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -24,6 +24,8 @@
#include "DMA_Timings.h"
#include "Platform.h"
namespace melonDS
{
using Platform::Log;
using Platform::LogLevel;
@ -47,7 +49,7 @@ using Platform::LogLevel;
// 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),
Num(num),
GPU(gpu)
@ -714,3 +716,5 @@ void DMA::Run()
template void DMA::Run<0>();
template void DMA::Run<1>();
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -23,6 +23,8 @@
#include "DSi_AES.h"
#include "Platform.h"
namespace melonDS
{
using Platform::Log;
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]);
}
}
}

View File

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

View File

@ -23,6 +23,8 @@
#include "DSi_Camera.h"
#include "Platform.h"
namespace melonDS
{
using Platform::Log;
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 "DSi_I2C.h"
namespace melonDS
{
class DSi_CamModule;
class DSi_Camera : public DSi_I2CDevice
@ -121,4 +123,5 @@ private:
static const u32 kTransferStart;
};
}
#endif // DSI_CAMERA_H

View File

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

View File

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

View File

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

View File

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

View File

@ -30,9 +30,9 @@
#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())

View File

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

View File

@ -23,10 +23,12 @@
#include "GPU.h"
#include "DSi_AES.h"
namespace melonDS
{
using Platform::Log;
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;
Num = num;
@ -375,3 +377,5 @@ void DSi_NDMA::Run7()
DSi::AES->CheckInputDMA();
DSi::AES->CheckOutputDMA();
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -24,11 +24,13 @@
#include "fatfs/ff.h"
// extra additions for interfacing with melonDS
namespace melonDS
{
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)>;
void ff_disk_open(const ff_disk_read_cb& readcb, const ff_disk_write_cb& writecb, LBA_t seccnt);
void ff_disk_close();
}
#endif // FATIO_H

View File

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

View File

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

View File

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

View File

@ -26,6 +26,8 @@
#include "FreeBIOS.h"
namespace melonDS
{
unsigned char bios_arm7_bin[] = {
0x1c, 0x04, 0x00, 0xea, 0x1c, 0x04, 0x00, 0xea, 0x1c, 0x04, 0x00, 0xea,
0x1a, 0x04, 0x00, 0xea, 0x19, 0x04, 0x00, 0xea, 0x18, 0x04, 0x00, 0xea,
@ -1738,4 +1740,5 @@ 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
};
};
}

View File

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

View File

@ -24,6 +24,8 @@
#include "CRC32.h"
#include "Platform.h"
namespace melonDS
{
using Platform::Log;
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 "Savestate.h"
namespace GBACart
namespace melonDS::GBACart
{
enum CartType

View File

@ -26,6 +26,8 @@
#include "GPU3D_Soft.h"
#include "GPU3D_OpenGL.h"
namespace melonDS
{
using Platform::Log;
using Platform::LogLevel;
@ -33,8 +35,6 @@ using Platform::LogLevel;
#define HBLANK_CYCLES (48+(256*6))
#define FRAME_CYCLES (LINE_CYCLES * 263)
namespace Melon
{
enum
{
LCD_StartHBlank = 0,
@ -64,7 +64,7 @@ enum
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_StartScanline, MemberEventFunc(GPU, StartScanline));
@ -319,21 +319,21 @@ void GPU::InitRenderer(int renderer) noexcept
{
// Fallback on software renderer
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())
{
// Fallback on software renderer
CurGLCompositor.reset();
renderer = 0;
GPU3D.SetCurrentRenderer(std::make_unique<GPU3D::SoftRenderer>(*this));
GPU3D.SetCurrentRenderer(std::make_unique<SoftRenderer>(*this));
}
}
else
#endif
{
GPU3D.SetCurrentRenderer(std::make_unique<GPU3D::SoftRenderer>(*this));
GPU3D.SetCurrentRenderer(std::make_unique<SoftRenderer>(*this));
}
Renderer = renderer;

View File

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

View File

@ -21,6 +21,8 @@
#include "NDS.h"
#include "GPU.h"
namespace melonDS
{
using Platform::Log;
using Platform::LogLevel;
@ -84,8 +86,7 @@ using Platform::LogLevel;
namespace GPU2D
{
Unit::Unit(u32 num, Melon::GPU& gpu) : Num(num), GPU(gpu)
Unit::Unit(u32 num, melonDS::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 "Savestate.h"
namespace Melon
namespace melonDS
{
class GPU;
}
namespace GPU2D
{
@ -35,7 +34,7 @@ class Unit
public:
// take a reference to the GPU so we can access its state
// and ensure that it's not null
Unit(u32 num, Melon::GPU& gpu);
Unit(u32 num, melonDS::GPU& gpu);
Unit(const Unit&) = delete;
Unit& operator=(const Unit&) = delete;
@ -124,7 +123,7 @@ public:
u16 MasterBrightness;
private:
Melon::GPU& GPU;
melonDS::GPU& GPU;
};
class Renderer2D
@ -150,4 +149,5 @@ protected:
}
}
#endif

View File

@ -20,10 +20,11 @@
#include "GPU.h"
#include "GPU3D_OpenGL.h"
namespace melonDS
{
namespace GPU2D
{
SoftRenderer::SoftRenderer(Melon::GPU& gpu)
SoftRenderer::SoftRenderer(melonDS::GPU& gpu)
: Renderer2D(), GPU(gpu)
{
// initialize mosaic table
@ -368,7 +369,7 @@ void SoftRenderer::VBlankEnd(Unit* unitA, Unit* unitB)
{
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
@ -479,8 +480,8 @@ void SoftRenderer::DoCapture(u32 line, u32 width)
dstaddr &= 0xFFFF;
srcBaddr &= 0xFFFF;
static_assert(Melon::VRAMDirtyGranularity == 512);
GPU.VRAMDirty[dstvram][(dstaddr * 2) / Melon::VRAMDirtyGranularity] = true;
static_assert(VRAMDirtyGranularity == 512);
GPU.VRAMDirty[dstvram][(dstaddr * 2) / VRAMDirtyGranularity] = true;
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"
namespace Melon
namespace melonDS
{
class GPU;
}
namespace GPU2D
{
@ -31,14 +30,14 @@ namespace GPU2D
class SoftRenderer : public Renderer2D
{
public:
SoftRenderer(Melon::GPU& gpu);
SoftRenderer(melonDS::GPU& gpu);
~SoftRenderer() override {}
void DrawScanline(u32 line, Unit* unit) override;
void DrawSprites(u32 line, Unit* unit) override;
void VBlankEnd(Unit* unitA, Unit* unitB) override;
private:
Melon::GPU& GPU;
melonDS::GPU& GPU;
alignas(8) u32 BGOBJLine[256*3];
u32* _3DLine;
@ -84,3 +83,5 @@ private:
};
}
}

View File

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

View File

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

View File

@ -25,7 +25,7 @@
#include "GPU.h"
#include "GPU3D_OpenGL_shaders.h"
namespace GPU3D
namespace melonDS
{
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);
}
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;
// The various glDelete* functions silently ignore invalid IDs,
// 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);
@ -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;

View File

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

View File

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

View File

@ -24,8 +24,7 @@
#include "NDS.h"
#include "GPU.h"
namespace GPU3D
namespace melonDS
{
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)
{
Sema_RenderStart = Platform::Semaphore_Create();
@ -105,7 +104,7 @@ void SoftRenderer::Reset()
SetupRenderThread();
}
void SoftRenderer::SetRenderSettings(const Melon::RenderSettings& settings) noexcept
void SoftRenderer::SetRenderSettings(const RenderSettings& settings) noexcept
{
Threaded = settings.Soft_Threaded;
SetupRenderThread();

View File

@ -24,16 +24,16 @@
#include <thread>
#include <atomic>
namespace GPU3D
namespace melonDS
{
class SoftRenderer : public Renderer3D
{
public:
SoftRenderer(Melon::GPU& gpu) noexcept;
SoftRenderer(melonDS::GPU& gpu) noexcept;
virtual ~SoftRenderer() 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 RenderFrame() override;
@ -451,7 +451,7 @@ private:
};
Melon::GPU& GPU;
melonDS::GPU& GPU;
RendererPolygon PolygonList[2048];
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);

View File

@ -28,12 +28,12 @@
#include "OpenGLSupport.h"
#include "GPU_OpenGL_shaders.h"
namespace Melon
namespace melonDS
{
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);
@ -53,7 +53,7 @@ std::unique_ptr<GLCompositor> GLCompositor::New(Melon::GPU& gpu) noexcept
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");
Comp3DXPosLoc = glGetUniformLocation(CompShader[2], "u3DXPos");
@ -218,7 +218,7 @@ void GLCompositor::RenderFrame()
}
glActiveTexture(GL_TEXTURE1);
reinterpret_cast<GPU3D::GLRenderer*>(GPU.GPU3D.GetCurrentRenderer())->SetupAccelFrame();
reinterpret_cast<GLRenderer*>(GPU.GPU3D.GetCurrentRenderer())->SetupAccelFrame();
glBindBuffer(GL_ARRAY_BUFFER, CompVertexBufferID);
glBindVertexArray(CompVertexArrayID);

View File

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

View File

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

View File

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

View File

@ -43,6 +43,8 @@
#include "ARMJIT.h"
#include "ARMJIT_Memory.h"
namespace melonDS
{
using namespace Platform;
namespace NDS
@ -182,8 +184,8 @@ class RTC* RTC;
class Wifi* Wifi;
std::unique_ptr<NDSCart::NDSCartSlot> NDSCartSlot;
std::unique_ptr<GBACart::GBACartSlot> GBACartSlot;
std::unique_ptr<Melon::GPU> GPU;
std::unique_ptr<ARMJIT::ARMJIT> JIT;
std::unique_ptr<melonDS::GPU> GPU;
std::unique_ptr<ARMJIT> JIT;
class AREngine* AREngine;
bool Running;
@ -203,8 +205,8 @@ bool Init()
RegisterEventFunc(Event_Div, 0, DivDone);
RegisterEventFunc(Event_Sqrt, 0, SqrtDone);
JIT = std::make_unique<ARMJIT::ARMJIT>();
GPU = std::make_unique<Melon::GPU>(*JIT);
JIT = std::make_unique<ARMJIT>();
GPU = std::make_unique<melonDS::GPU>(*JIT);
MainRAM = JIT->Memory.GetMainRAM();
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
//#define DEBUG_CHECK_DESYNC
namespace melonDS
{
class SPU;
class SPIHost;
class RTC;
class Wifi;
class AREngine;
namespace Melon
{
class GPU;
}
namespace ARMJIT
{
class ARMJIT;
}
namespace NDS
{
@ -273,8 +267,8 @@ extern class RTC* RTC;
extern class Wifi* Wifi;
extern std::unique_ptr<NDSCart::NDSCartSlot> NDSCartSlot;
extern std::unique_ptr<GBACart::GBACartSlot> GBACartSlot;
extern std::unique_ptr<Melon::GPU> GPU;
extern std::unique_ptr<ARMJIT::ARMJIT> JIT;
extern std::unique_ptr<GPU> GPU;
extern std::unique_ptr<ARMJIT> JIT;
extern class AREngine* AREngine;
const u32 ARM7WRAMSize = 0x10000;
@ -394,4 +388,5 @@ void ARM7IOWrite32(u32 addr, u32 val);
}
}
#endif // NDS_H

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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