17 |
|
|
18 |
namespace Ps2MemSize |
namespace Ps2MemSize |
19 |
{ |
{ |
20 |
static const uint Base = 0x02000000; // 32 MB main memory! |
static const uint MainRam = _32mb; // 32 MB main memory! |
21 |
static const uint Rom = 0x00400000; // 4 MB main rom |
static const uint Rom = _1mb * 4; // 4 MB main rom |
22 |
static const uint Rom1 = 0x00040000; // DVD player |
static const uint Rom1 = 0x00040000; // DVD player |
23 |
static const uint Rom2 = 0x00080000; // Chinese rom extension (?) |
static const uint Rom2 = 0x00080000; // Chinese rom extension (?) |
24 |
static const uint ERom = 0x001C0000; // DVD player extensions (?) |
static const uint ERom = 0x001C0000; // DVD player extensions (?) |
25 |
static const uint Hardware = 0x00010000; |
static const uint Hardware = _64kb; |
26 |
static const uint Scratch = 0x00004000; |
static const uint Scratch = _16kb; |
27 |
|
|
28 |
static const uint IopRam = 0x00200000; // 2MB main ram on the IOP. |
static const uint IopRam = _1mb * 2; // 2MB main ram on the IOP. |
29 |
static const uint IopHardware = 0x00010000; |
static const uint IopHardware = _64kb; |
30 |
|
|
31 |
static const uint GSregs = 0x00002000; // 8k for the GS registers and stuff. |
static const uint GSregs = 0x00002000; // 8k for the GS registers and stuff. |
32 |
} |
} |
33 |
|
|
34 |
typedef u8 mem8_t; |
typedef u8 mem8_t; |
53 |
// memory, such as hardware registers or scratchpad, the access will generate a page fault, the |
// memory, such as hardware registers or scratchpad, the access will generate a page fault, the |
54 |
// compiled block will be cleared and re-compiled using "full" VTLB translation logic. |
// compiled block will be cleared and re-compiled using "full" VTLB translation logic. |
55 |
// |
// |
56 |
|
// Note that support for this feature may not be doable under x86/32 platforms, due to the |
57 |
|
// 2gb/3gb limit of Windows XP (the 3gb feature will make it slightly more feasible at least). |
58 |
|
// |
59 |
#define VTLB_UsePageFaulting 0 |
#define VTLB_UsePageFaulting 0 |
60 |
|
|
61 |
#if VTLB_UsePageFaulting |
#if VTLB_UsePageFaulting |
64 |
// full breadth of PS2 RAM and ROM mappings are directly supported. |
// full breadth of PS2 RAM and ROM mappings are directly supported. |
65 |
struct EEVM_MemoryAllocMess |
struct EEVM_MemoryAllocMess |
66 |
{ |
{ |
67 |
u8 (&Main)[Ps2MemSize::Base]; // Main memory (hard-wired to 32MB) |
u8 (&Main)[Ps2MemSize::MainRam]; // Main memory (hard-wired to 32MB) |
68 |
|
|
69 |
u8 _padding1[0x1e000000-Ps2MemSize::Base] |
u8 _padding1[0x1e000000-Ps2MemSize::MainRam] |
70 |
u8 (&ROM1)[Ps2MemSize::Rom1]; // DVD player |
u8 (&ROM1)[Ps2MemSize::Rom1]; // DVD player |
71 |
|
|
72 |
u8 _padding2[0x1e040000-(0x1e000000+Ps2MemSize::Rom1)] |
u8 _padding2[0x1e040000-(0x1e000000+Ps2MemSize::Rom1)] |
83 |
|
|
84 |
struct EEVM_MemoryAllocMess |
struct EEVM_MemoryAllocMess |
85 |
{ |
{ |
86 |
|
u8 Main[Ps2MemSize::MainRam]; // Main memory (hard-wired to 32MB) |
87 |
u8 Scratch[Ps2MemSize::Scratch]; // Scratchpad! |
u8 Scratch[Ps2MemSize::Scratch]; // Scratchpad! |
|
u8 Main[Ps2MemSize::Base]; // Main memory (hard-wired to 32MB) |
|
88 |
u8 ROM[Ps2MemSize::Rom]; // Boot rom (4MB) |
u8 ROM[Ps2MemSize::Rom]; // Boot rom (4MB) |
89 |
u8 ROM1[Ps2MemSize::Rom1]; // DVD player |
u8 ROM1[Ps2MemSize::Rom1]; // DVD player |
90 |
u8 ROM2[Ps2MemSize::Rom2]; // Chinese extensions |
u8 ROM2[Ps2MemSize::Rom2]; // Chinese extensions |
104 |
struct IopVM_MemoryAllocMess |
struct IopVM_MemoryAllocMess |
105 |
{ |
{ |
106 |
u8 Main[Ps2MemSize::IopRam]; // Main memory (hard-wired to 2MB) |
u8 Main[Ps2MemSize::IopRam]; // Main memory (hard-wired to 2MB) |
107 |
u8 P[0x00010000]; // I really have no idea what this is... --air |
u8 P[_64kb]; // I really have no idea what this is... --air |
108 |
u8 Sif[0x100]; // a few special SIF/SBUS registers (likely not needed) |
u8 Sif[0x100]; // a few special SIF/SBUS registers (likely not needed) |
109 |
}; |
}; |
110 |
|
|