mirror of
https://github.com/dingusdev/dingusppc.git
synced 2025-08-10 06:24:59 +00:00
Implement DIMM properties.
This commit is contained in:
@@ -128,7 +128,7 @@ void HammerheadCtrl::write(uint32_t rgn_start, uint32_t offset, uint32_t value,
|
||||
|
||||
void HammerheadCtrl::insert_ram_dimm(int slot_num, uint32_t capacity)
|
||||
{
|
||||
if (slot_num < 0 || slot_num >= 26) {
|
||||
if (slot_num < 0 || slot_num >= 13) {
|
||||
ABORT_F("%s: invalid DIMM slot number %d", this->name.c_str(), slot_num);
|
||||
}
|
||||
|
||||
|
@@ -79,8 +79,11 @@ int initialize_catalyst(std::string& id)
|
||||
return -1;
|
||||
}
|
||||
|
||||
// plug 8MB RAM DIMM into slot #0
|
||||
platinum_obj->insert_ram_dimm(0, DRAM_CAP_8MB);
|
||||
// insert RAM DIMMs
|
||||
platinum_obj->insert_ram_dimm(0, GET_INT_PROP("rambank1_size") * DRAM_CAP_1MB);
|
||||
platinum_obj->insert_ram_dimm(1, GET_INT_PROP("rambank2_size") * DRAM_CAP_1MB);
|
||||
platinum_obj->insert_ram_dimm(2, GET_INT_PROP("rambank3_size") * DRAM_CAP_1MB);
|
||||
platinum_obj->insert_ram_dimm(3, GET_INT_PROP("rambank4_size") * DRAM_CAP_1MB);
|
||||
|
||||
// allocate and map physical RAM
|
||||
platinum_obj->map_phys_ram();
|
||||
@@ -107,7 +110,7 @@ int initialize_catalyst(std::string& id)
|
||||
|
||||
static const PropMap pm7200_settings = {
|
||||
{"rambank1_size",
|
||||
new IntProperty(16, std::vector<uint32_t>({4, 8, 16, 32, 64, 128}))},
|
||||
new IntProperty( 8, std::vector<uint32_t>({ 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank2_size",
|
||||
new IntProperty( 0, std::vector<uint32_t>({0, 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank3_size",
|
||||
|
@@ -75,6 +75,15 @@ static const map<string, string> PropHelp = {
|
||||
{"rambank2_size", "specifies RAM bank 2 size in MB"},
|
||||
{"rambank3_size", "specifies RAM bank 3 size in MB"},
|
||||
{"rambank4_size", "specifies RAM bank 4 size in MB"},
|
||||
{"rambank5_size", "specifies RAM bank 5 size in MB"},
|
||||
{"rambank6_size", "specifies RAM bank 6 size in MB"},
|
||||
{"rambank7_size", "specifies RAM bank 7 size in MB"},
|
||||
{"rambank8_size", "specifies RAM bank 8 size in MB"},
|
||||
{"rambank9_size", "specifies RAM bank 9 size in MB"},
|
||||
{"rambank10_size", "specifies RAM bank 10 size in MB"},
|
||||
{"rambank11_size", "specifies RAM bank 11 size in MB"},
|
||||
{"rambank12_size", "specifies RAM bank 12 size in MB"},
|
||||
{"rambank0_size", "specifies onboard RAM bank size in MB"},
|
||||
{"gfxmem_size", "specifies video memory size in MB"},
|
||||
{"fdd_img", "specifies path to floppy disk image"},
|
||||
{"fdd_fmt", "specifies floppy disk format"},
|
||||
|
@@ -77,8 +77,11 @@ int initialize_gazelle(std::string& id)
|
||||
return -1;
|
||||
}
|
||||
|
||||
// plug 32MB RAM DIMM into slot #0
|
||||
psx_obj->insert_ram_dimm(0, DRAM_CAP_32MB);
|
||||
// insert RAM DIMMs
|
||||
psx_obj->insert_ram_dimm(0, GET_INT_PROP("rambank1_size") * DRAM_CAP_1MB);
|
||||
psx_obj->insert_ram_dimm(1, GET_INT_PROP("rambank2_size") * DRAM_CAP_1MB);
|
||||
psx_obj->insert_ram_dimm(2, GET_INT_PROP("rambank3_size") * DRAM_CAP_1MB);
|
||||
psx_obj->insert_ram_dimm(3, GET_INT_PROP("rambank4_size") * DRAM_CAP_1MB);
|
||||
|
||||
// allocate and map physical RAM
|
||||
psx_obj->map_phys_ram();
|
||||
@@ -98,7 +101,7 @@ int initialize_gazelle(std::string& id)
|
||||
|
||||
static const PropMap pm6500_settings = {
|
||||
{"rambank1_size",
|
||||
new IntProperty(16, std::vector<uint32_t>({4, 8, 16, 32, 64, 128}))},
|
||||
new IntProperty(32, std::vector<uint32_t>({ 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank2_size",
|
||||
new IntProperty( 0, std::vector<uint32_t>({0, 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank3_size",
|
||||
|
@@ -118,11 +118,10 @@ int initialize_tnt(std::string& id)
|
||||
}
|
||||
|
||||
// populate RAM banks from configuration properties
|
||||
for (int bank_num = 0; bank_num <= 3; bank_num++) {
|
||||
std::string bn = {char('1' + bank_num)};
|
||||
for (int bank_num = 0; bank_num <= 12; bank_num++) {
|
||||
std::string bn = std::to_string(bank_num);
|
||||
int bank_size = GET_INT_PROP("rambank" + bn + "_size");
|
||||
if (bank_size)
|
||||
memctrl_obj->insert_ram_dimm(bank_num, bank_size * DRAM_CAP_1MB);
|
||||
memctrl_obj->insert_ram_dimm(bank_num, bank_size * DRAM_CAP_1MB);
|
||||
}
|
||||
|
||||
// allocate and map physical RAM
|
||||
@@ -153,14 +152,32 @@ int initialize_tnt(std::string& id)
|
||||
|
||||
template <uint32_t cpu>
|
||||
static const PropMap pm7500_settings = {
|
||||
{"rambank0_size",
|
||||
new IntProperty( 0, std::vector<uint32_t>({0, 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank1_size",
|
||||
new IntProperty(16, std::vector<uint32_t>({4, 8, 16, 32, 64, 128}))},
|
||||
new IntProperty(16, std::vector<uint32_t>({ 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank2_size",
|
||||
new IntProperty( 0, std::vector<uint32_t>({0, 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank3_size",
|
||||
new IntProperty( 0, std::vector<uint32_t>({0, 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank4_size",
|
||||
new IntProperty( 0, std::vector<uint32_t>({0, 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank5_size",
|
||||
new IntProperty( 0, std::vector<uint32_t>({0, 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank6_size",
|
||||
new IntProperty( 0, std::vector<uint32_t>({0, 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank7_size",
|
||||
new IntProperty( 0, std::vector<uint32_t>({0, 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank8_size",
|
||||
new IntProperty( 0, std::vector<uint32_t>({0, 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank9_size",
|
||||
new IntProperty( 0, std::vector<uint32_t>({0, 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank10_size",
|
||||
new IntProperty( 0, std::vector<uint32_t>({0, 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank11_size",
|
||||
new IntProperty( 0, std::vector<uint32_t>({0, 4, 8, 16, 32, 64, 128}))},
|
||||
{"rambank12_size",
|
||||
new IntProperty( 0, std::vector<uint32_t>({0, 4, 8, 16, 32, 64, 128}))},
|
||||
{"emmo",
|
||||
new BinProperty(0)},
|
||||
{"cpu",
|
||||
|
Reference in New Issue
Block a user