v0.2: Merge TomB improvements
This commit is contained in:
parent
470ce4e523
commit
422ed334f4
58 changed files with 8539 additions and 3900 deletions
|
@ -94,7 +94,9 @@ static NavigationMap navMap[] =
|
|||
//PanelRAM
|
||||
{ "Chipmem", "", "", "RAM", "Slowmem" },
|
||||
{ "Slowmem", "", "", "Chipmem", "Fastmem" },
|
||||
{ "Fastmem", "", "", "Slowmem", "RAM" },
|
||||
{ "Fastmem", "", "", "Slowmem", "Z3mem" },
|
||||
{ "Z3mem", "", "", "Fastmem", "Gfxmem" },
|
||||
{ "Gfxmem", "", "", "Z3mem", "RAM" },
|
||||
|
||||
//PanelFloppy
|
||||
{ "DF0:", "Floppy drives", "cboType0", "SaveForDisk", "cboDisk0" },
|
||||
|
|
|
@ -44,22 +44,31 @@ class CPUButtonActionListener : public gcn::ActionListener
|
|||
{
|
||||
changed_prefs.cpu_level = 0;
|
||||
changed_prefs.address_space_24 = true;
|
||||
changed_prefs.z3fastmem_size = 0;
|
||||
changed_prefs.gfxmem_size = 0;
|
||||
}
|
||||
else if (actionEvent.getSource() == optCPU68010)
|
||||
{
|
||||
changed_prefs.cpu_level = 1;
|
||||
changed_prefs.address_space_24 = true;
|
||||
changed_prefs.z3fastmem_size = 0;
|
||||
changed_prefs.gfxmem_size = 0;
|
||||
changed_prefs.cpu_compatible = 0;
|
||||
}
|
||||
else if (actionEvent.getSource() == optCPU68EC020)
|
||||
{
|
||||
changed_prefs.cpu_level = 2;
|
||||
changed_prefs.address_space_24 = true;
|
||||
changed_prefs.z3fastmem_size = 0;
|
||||
changed_prefs.gfxmem_size = 0;
|
||||
changed_prefs.cpu_compatible = 0;
|
||||
}
|
||||
else if (actionEvent.getSource() == optCPU68020)
|
||||
{
|
||||
changed_prefs.cpu_level = 2;
|
||||
if(optFPU68881->isSelected())
|
||||
changed_prefs.cpu_level = 3; // with 68881
|
||||
else
|
||||
changed_prefs.cpu_level = 2; // no fpu
|
||||
changed_prefs.address_space_24 = false;
|
||||
changed_prefs.cpu_compatible = 0;
|
||||
}
|
||||
|
@ -70,6 +79,7 @@ class CPUButtonActionListener : public gcn::ActionListener
|
|||
changed_prefs.cpu_compatible = 0;
|
||||
}
|
||||
RefreshPanelCPU();
|
||||
RefreshPanelRAM();
|
||||
}
|
||||
};
|
||||
static CPUButtonActionListener* cpuButtonActionListener;
|
||||
|
@ -290,7 +300,7 @@ void RefreshPanelCPU(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
if(changed_prefs.cpu_level == 2)
|
||||
if(changed_prefs.cpu_level == 2 || changed_prefs.cpu_level == 3)
|
||||
optCPU68020->setSelected(true);
|
||||
else if(changed_prefs.cpu_level == 4)
|
||||
optCPU68040->setSelected(true);
|
||||
|
|
|
@ -37,7 +37,7 @@ bool LoadConfigByName(const char *name)
|
|||
{
|
||||
txtName->setText(config->Name);
|
||||
txtDesc->setText(config->Description);
|
||||
my_cfgfile_load(&changed_prefs, config->FullPath, 0);
|
||||
target_cfgfile_load(&changed_prefs, config->FullPath, 0, 0);
|
||||
strncpy(last_active_config, config->Name, MAX_PATH);
|
||||
RefreshAllPanels();
|
||||
}
|
||||
|
@ -45,6 +45,12 @@ bool LoadConfigByName(const char *name)
|
|||
return false;
|
||||
}
|
||||
|
||||
void SetLastActiveConfig(const char *filename)
|
||||
{
|
||||
extractFileName(filename, last_active_config);
|
||||
removeFileExtension(last_active_config);
|
||||
}
|
||||
|
||||
|
||||
class ConfigsListModel : public gcn::ListModel
|
||||
{
|
||||
|
@ -99,7 +105,7 @@ class ConfigButtonActionListener : public gcn::ActionListener
|
|||
// Load selected configuration
|
||||
//-----------------------------------------------
|
||||
i = lstConfigs->getSelected();
|
||||
my_cfgfile_load(&changed_prefs, ConfigFilesList[i]->FullPath, 0);
|
||||
target_cfgfile_load(&changed_prefs, ConfigFilesList[i]->FullPath, 0, 0);
|
||||
strncpy(last_active_config, ConfigFilesList[i]->Name, MAX_PATH);
|
||||
RefreshAllPanels();
|
||||
}
|
||||
|
@ -167,10 +173,10 @@ class ConfigsListActionListener : public gcn::ActionListener
|
|||
//-----------------------------------------------
|
||||
// Selected same config again -> load and start it
|
||||
//-----------------------------------------------
|
||||
my_cfgfile_load(&changed_prefs, ConfigFilesList[selected_item]->FullPath, 0);
|
||||
target_cfgfile_load(&changed_prefs, ConfigFilesList[selected_item]->FullPath, 0, 0);
|
||||
strncpy(last_active_config, ConfigFilesList[selected_item]->Name, MAX_PATH);
|
||||
RefreshAllPanels();
|
||||
uae_reset(0);
|
||||
uae_reset(1);
|
||||
gui_running = false;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -22,8 +22,8 @@ static const char *ChipMem_list[] = { "512 K", "1 MB", "2 MB", "4 MB", "8 MB" };
|
|||
static const int ChipMem_values[] = { 0x080000, 0x100000, 0x200000, 0x400000, 0x800000 };
|
||||
static const char *SlowMem_list[] = { "None", "512 K", "1 MB", "1.5 MB", "1.8 MB" };
|
||||
static const int SlowMem_values[] = { 0x000000, 0x080000, 0x100000, 0x180000, 0x1c0000 };
|
||||
static const char *FastMem_list[] = { "None", "1 MB", "2 MB", "4 MB", "8 MB" };
|
||||
static const int FastMem_values[] = { 0x000000, 0x100000, 0x200000, 0x400000, 0x800000 };
|
||||
static const char *FastMem_list[] = { "None", "1 MB", "2 MB", "4 MB", "8 MB", "16 MB", "32 MB", "64 MB" };
|
||||
static const int FastMem_values[] = { 0x000000, 0x100000, 0x200000, 0x400000, 0x800000, 0x1000000, 0x2000000, 0x4000000 };
|
||||
|
||||
static gcn::Window *grpRAM;
|
||||
static gcn::Label* lblChipmem;
|
||||
|
@ -35,6 +35,12 @@ static gcn::Slider* sldSlowmem;
|
|||
static gcn::Label* lblFastmem;
|
||||
static gcn::Label* lblFastsize;
|
||||
static gcn::Slider* sldFastmem;
|
||||
static gcn::Label* lblZ3mem;
|
||||
static gcn::Label* lblZ3size;
|
||||
static gcn::Slider* sldZ3mem;
|
||||
static gcn::Label* lblGfxmem;
|
||||
static gcn::Label* lblGfxsize;
|
||||
static gcn::Slider* sldGfxmem;
|
||||
|
||||
|
||||
class MemorySliderActionListener : public gcn::ActionListener
|
||||
|
@ -57,6 +63,17 @@ class MemorySliderActionListener : public gcn::ActionListener
|
|||
if (changed_prefs.fastmem_size > 0 && changed_prefs.chipmem_size > 0x200000)
|
||||
changed_prefs.chipmem_size = 0x200000;
|
||||
}
|
||||
|
||||
if (actionEvent.getSource() == sldZ3mem) {
|
||||
changed_prefs.z3fastmem_size = FastMem_values[(int)(sldZ3mem->getValue())];
|
||||
if (changed_prefs.z3fastmem_size > max_z3fastmem)
|
||||
changed_prefs.z3fastmem_size = max_z3fastmem;
|
||||
}
|
||||
|
||||
if (actionEvent.getSource() == sldGfxmem) {
|
||||
changed_prefs.gfxmem_size = FastMem_values[(int)(sldGfxmem->getValue())];
|
||||
}
|
||||
|
||||
RefreshPanelRAM();
|
||||
}
|
||||
};
|
||||
|
@ -96,28 +113,58 @@ void InitPanelRAM(const struct _ConfigCategory& category)
|
|||
sldFastmem->setId("Fastmem");
|
||||
sldFastmem->addActionListener(memorySliderActionListener);
|
||||
lblFastsize = new gcn::Label("None ");
|
||||
|
||||
lblZ3mem = new gcn::Label("Z3 fast:");
|
||||
sldZ3mem = new gcn::Slider(0, 7);
|
||||
sldZ3mem->setSize(110, SLIDER_HEIGHT);
|
||||
sldZ3mem->setBaseColor(gui_baseCol);
|
||||
sldZ3mem->setMarkerLength(20);
|
||||
sldZ3mem->setStepLength(1);
|
||||
sldZ3mem->setId("Z3mem");
|
||||
sldZ3mem->addActionListener(memorySliderActionListener);
|
||||
lblZ3size = new gcn::Label("None ");
|
||||
|
||||
lblGfxmem = new gcn::Label("RTG:");
|
||||
sldGfxmem = new gcn::Slider(0, 5);
|
||||
sldGfxmem->setSize(110, SLIDER_HEIGHT);
|
||||
sldGfxmem->setBaseColor(gui_baseCol);
|
||||
sldGfxmem->setMarkerLength(20);
|
||||
sldGfxmem->setStepLength(1);
|
||||
sldGfxmem->setId("Gfxmem");
|
||||
sldGfxmem->addActionListener(memorySliderActionListener);
|
||||
lblGfxsize = new gcn::Label("None ");
|
||||
|
||||
grpRAM = new gcn::Window("Memory Settings");
|
||||
grpRAM->setPosition(DISTANCE_BORDER, DISTANCE_BORDER);
|
||||
|
||||
int posY = 10;
|
||||
grpRAM->add(lblChipmem, 8, posY);
|
||||
grpRAM->add(sldChipmem, 50, posY);
|
||||
grpRAM->add(lblChipsize, 50 + sldChipmem->getWidth() + 12, posY);
|
||||
grpRAM->add(sldChipmem, 70, posY);
|
||||
grpRAM->add(lblChipsize, 70 + sldChipmem->getWidth() + 12, posY);
|
||||
posY += sldChipmem->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
grpRAM->add(lblSlowmem, 8, posY);
|
||||
grpRAM->add(sldSlowmem, 50, posY);
|
||||
grpRAM->add(lblSlowsize, 50 + sldSlowmem->getWidth() + 12, posY);
|
||||
grpRAM->add(sldSlowmem, 70, posY);
|
||||
grpRAM->add(lblSlowsize, 70 + sldSlowmem->getWidth() + 12, posY);
|
||||
posY += sldSlowmem->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
grpRAM->add(lblFastmem, 8, posY);
|
||||
grpRAM->add(sldFastmem, 50, posY);
|
||||
grpRAM->add(lblFastsize, 50 + sldFastmem->getWidth() + 12, posY);
|
||||
grpRAM->add(sldFastmem, 70, posY);
|
||||
grpRAM->add(lblFastsize, 70 + sldFastmem->getWidth() + 12, posY);
|
||||
posY += sldFastmem->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
grpRAM->add(lblZ3mem, 8, posY);
|
||||
grpRAM->add(sldZ3mem, 70, posY);
|
||||
grpRAM->add(lblZ3size, 70 + sldZ3mem->getWidth() + 12, posY);
|
||||
posY += sldZ3mem->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
grpRAM->add(lblGfxmem, 8, posY);
|
||||
grpRAM->add(sldGfxmem, 70, posY);
|
||||
grpRAM->add(lblGfxsize, 70 + sldGfxmem->getWidth() + 12, posY);
|
||||
posY += sldGfxmem->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
grpRAM->setMovable(false);
|
||||
grpRAM->setSize(230, posY + DISTANCE_BORDER);
|
||||
grpRAM->setSize(250, posY + DISTANCE_BORDER);
|
||||
grpRAM->setBaseColor(gui_baseCol);
|
||||
|
||||
category.panel->add(grpRAM);
|
||||
|
@ -137,6 +184,12 @@ void ExitPanelRAM(void)
|
|||
delete lblFastmem;
|
||||
delete sldFastmem;
|
||||
delete lblFastsize;
|
||||
delete lblZ3mem;
|
||||
delete sldZ3mem;
|
||||
delete lblZ3size;
|
||||
delete lblGfxmem;
|
||||
delete sldGfxmem;
|
||||
delete lblGfxsize;
|
||||
delete grpRAM;
|
||||
delete memorySliderActionListener;
|
||||
}
|
||||
|
@ -175,5 +228,26 @@ void RefreshPanelRAM(void)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for(i=0; i<8; ++i)
|
||||
{
|
||||
if(changed_prefs.z3fastmem_size == FastMem_values[i])
|
||||
{
|
||||
sldZ3mem->setValue(i);
|
||||
lblZ3size->setCaption(FastMem_list[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
sldZ3mem->setEnabled(!changed_prefs.address_space_24);
|
||||
|
||||
for(i=0; i<6; ++i)
|
||||
{
|
||||
if(changed_prefs.gfxmem_size == FastMem_values[i])
|
||||
{
|
||||
sldGfxmem->setValue(i);
|
||||
lblGfxsize->setCaption(FastMem_list[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
sldGfxmem->setEnabled(!changed_prefs.address_space_24);
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include "sysdeps.h"
|
||||
#include "config.h"
|
||||
#include "options.h"
|
||||
#include "autoconf.h"
|
||||
#include "xwin.h"
|
||||
#include "custom.h"
|
||||
#include "drawing.h"
|
||||
|
@ -33,7 +34,8 @@ static gcn::Icon* icoSavestate = 0;
|
|||
static gcn::Image *imgSavestate = 0;
|
||||
static gcn::Button* cmdLoadState;
|
||||
static gcn::Button* cmdSaveState;
|
||||
|
||||
static gcn::Label *lblWarningHDDon;
|
||||
|
||||
|
||||
class SavestateActionListener : public gcn::ActionListener
|
||||
{
|
||||
|
@ -140,12 +142,16 @@ void InitPanelSavestate(const struct _ConfigCategory& category)
|
|||
cmdSaveState->setBaseColor(gui_baseCol);
|
||||
cmdSaveState->setId("SaveState");
|
||||
cmdSaveState->addActionListener(savestateActionListener);
|
||||
|
||||
lblWarningHDDon = new gcn::Label("State saves do not support harddrive emulation.");
|
||||
lblWarningHDDon->setSize(360, LABEL_HEIGHT);
|
||||
|
||||
category.panel->add(grpNumber, DISTANCE_BORDER, DISTANCE_BORDER);
|
||||
category.panel->add(wndScreenshot, DISTANCE_BORDER + 100, DISTANCE_BORDER);
|
||||
int buttonY = category.panel->getHeight() - DISTANCE_BORDER - BUTTON_HEIGHT;
|
||||
category.panel->add(cmdLoadState, DISTANCE_BORDER, buttonY);
|
||||
category.panel->add(cmdSaveState, DISTANCE_BORDER + BUTTON_WIDTH + DISTANCE_NEXT_X, buttonY);
|
||||
category.panel->add(lblWarningHDDon, DISTANCE_BORDER + 100, DISTANCE_BORDER + 50);
|
||||
|
||||
RefreshPanelSavestate();
|
||||
}
|
||||
|
@ -169,7 +175,8 @@ void ExitPanelSavestate(void)
|
|||
|
||||
delete cmdLoadState;
|
||||
delete cmdSaveState;
|
||||
|
||||
delete lblWarningHDDon;
|
||||
|
||||
delete savestateActionListener;
|
||||
}
|
||||
|
||||
|
@ -230,4 +237,14 @@ void RefreshPanelSavestate(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool enabled = nr_units (currprefs.mountinfo) == 0;
|
||||
optState0->setEnabled(enabled);
|
||||
optState1->setEnabled(enabled);
|
||||
optState2->setEnabled(enabled);
|
||||
optState3->setEnabled(enabled);
|
||||
wndScreenshot->setVisible(enabled);
|
||||
cmdLoadState->setEnabled(enabled);
|
||||
cmdSaveState->setEnabled(enabled);
|
||||
lblWarningHDDon->setVisible(!enabled);
|
||||
}
|
||||
|
|
|
@ -240,7 +240,7 @@ namespace widgets
|
|||
//-------------------------------------------------
|
||||
// Reset Amiga via click on Reset-button
|
||||
//-------------------------------------------------
|
||||
uae_reset(0);
|
||||
uae_reset(1);
|
||||
gui_running = false;
|
||||
}
|
||||
else if(actionEvent.getSource() == cmdRestart)
|
||||
|
|
|
@ -303,17 +303,14 @@ static void SetPresetMode(int mode, struct uae_prefs *p)
|
|||
}
|
||||
|
||||
|
||||
static void SetDefaultMenuSettings(int general)
|
||||
static void SetDefaultMenuSettings(struct uae_prefs *p)
|
||||
{
|
||||
if(general < 2)
|
||||
{
|
||||
while(nr_units(currprefs.mountinfo) > 0)
|
||||
kill_filesys_unit(currprefs.mountinfo, 0);
|
||||
}
|
||||
while(nr_units(p->mountinfo) > 0)
|
||||
kill_filesys_unit(p->mountinfo, 0);
|
||||
|
||||
kickstart = 1;
|
||||
|
||||
SetPresetMode(2, &changed_prefs);
|
||||
SetPresetMode(2, p);
|
||||
}
|
||||
|
||||
|
||||
|
@ -366,7 +363,7 @@ const char *kickstarts_names[] = { "KS ROM v1.2\0", "KS ROM v1.3\0", "KS ROM v2.
|
|||
const char *af_kickstarts_rom_names[] = { "amiga-os-120.rom\0", "amiga-os-130.rom\0", "amiga-os-204.rom\0", "amiga-os-310-a1200.rom\0" };
|
||||
#endif
|
||||
|
||||
static bool CheckKickstart(void)
|
||||
static bool CheckKickstart(struct uae_prefs *p)
|
||||
{
|
||||
char kickpath[MAX_DPATH];
|
||||
int i;
|
||||
|
@ -379,7 +376,7 @@ static bool CheckKickstart(void)
|
|||
if(!strcasecmp(lstAvailableROMs[i]->Path, kickpath))
|
||||
{
|
||||
// Found it
|
||||
strncpy(changed_prefs.romfile, kickpath, sizeof(changed_prefs.romfile));
|
||||
strncpy(p->romfile, kickpath, sizeof(p->romfile));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -392,7 +389,7 @@ static bool CheckKickstart(void)
|
|||
if(!strncasecmp(lstAvailableROMs[i]->Name, kickstarts_names[kickstart], strlen(kickstarts_names[kickstart])))
|
||||
{
|
||||
// Found it
|
||||
strncpy(changed_prefs.romfile, lstAvailableROMs[i]->Path, sizeof(changed_prefs.romfile));
|
||||
strncpy(p->romfile, lstAvailableROMs[i]->Path, sizeof(p->romfile));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -403,7 +400,7 @@ static bool CheckKickstart(void)
|
|||
|
||||
|
||||
// In this procedure, we use changed_prefs
|
||||
int loadconfig_old(const char *orgpath, int general)
|
||||
int loadconfig_old(struct uae_prefs *p, const char *orgpath)
|
||||
{
|
||||
char path[MAX_PATH];
|
||||
|
||||
|
@ -423,7 +420,8 @@ int loadconfig_old(const char *orgpath, int general)
|
|||
else
|
||||
{
|
||||
// Set everthing to default and clear HD settings
|
||||
SetDefaultMenuSettings(general);
|
||||
default_prefs(p, 0);
|
||||
SetDefaultMenuSettings(p);
|
||||
|
||||
char filebuffer[256];
|
||||
int dummy;
|
||||
|
@ -434,9 +432,9 @@ int loadconfig_old(const char *orgpath, int general)
|
|||
#else
|
||||
fscanf(f,"scaling=%d\n",&mainMenu_enableHWscaling);
|
||||
#endif
|
||||
fscanf(f,"showstatus=%d\n", &changed_prefs.leds_on_screen);
|
||||
fscanf(f,"mousemultiplier=%d\n", &changed_prefs.input_joymouse_multiplier);
|
||||
changed_prefs.input_joymouse_multiplier *= 10;
|
||||
fscanf(f,"showstatus=%d\n", &p->leds_on_screen);
|
||||
fscanf(f,"mousemultiplier=%d\n", &p->input_joymouse_multiplier);
|
||||
p->input_joymouse_multiplier *= 10;
|
||||
#if defined(PANDORA) || defined(ANDROIDSDL)
|
||||
fscanf(f,"systemclock=%d\n",&dummy); // mainMenu_throttle never changes -> removed
|
||||
fscanf(f,"syncthreshold=%d\n", &dummy); // timeslice_mode never changes -> removed
|
||||
|
@ -444,28 +442,28 @@ int loadconfig_old(const char *orgpath, int general)
|
|||
fscanf(f,"systemclock=%d\n",&mainMenu_throttle);
|
||||
fscanf(f,"syncthreshold=%d\n", ×lice_mode);
|
||||
#endif
|
||||
fscanf(f,"frameskip=%d\n", &changed_prefs.gfx_framerate);
|
||||
fscanf(f,"sound=%d\n",&changed_prefs.produce_sound );
|
||||
if(changed_prefs.produce_sound >= 10)
|
||||
fscanf(f,"frameskip=%d\n", &p->gfx_framerate);
|
||||
fscanf(f,"sound=%d\n",&p->produce_sound );
|
||||
if(p->produce_sound >= 10)
|
||||
{
|
||||
changed_prefs.sound_stereo = 1;
|
||||
changed_prefs.produce_sound -= 10;
|
||||
if(changed_prefs.produce_sound > 0)
|
||||
changed_prefs.produce_sound += 1;
|
||||
p->sound_stereo = 1;
|
||||
p->produce_sound -= 10;
|
||||
if(p->produce_sound > 0)
|
||||
p->produce_sound += 1;
|
||||
}
|
||||
else
|
||||
changed_prefs.sound_stereo = 0;
|
||||
fscanf(f,"soundrate=%d\n",&changed_prefs.sound_freq);
|
||||
p->sound_stereo = 0;
|
||||
fscanf(f,"soundrate=%d\n",&p->sound_freq);
|
||||
fscanf(f,"autosave=%d\n", &dummy);
|
||||
fscanf(f,"gp2xclock=%d\n", &dummy);
|
||||
int joybuffer = 0;
|
||||
fscanf(f,"joyconf=%d\n",&joybuffer);
|
||||
changed_prefs.pandora_joyConf = (joybuffer & 0x0f);
|
||||
changed_prefs.pandora_joyPort = ((joybuffer >> 4) & 0x0f);
|
||||
fscanf(f,"autofireRate=%d\n",&changed_prefs.input_autofire_framecnt);
|
||||
p->pandora_joyConf = (joybuffer & 0x0f);
|
||||
p->pandora_joyPort = ((joybuffer >> 4) & 0x0f);
|
||||
fscanf(f,"autofireRate=%d\n",&p->input_autofire_framecnt);
|
||||
fscanf(f,"autofire=%d\n", &dummy);
|
||||
fscanf(f,"stylusOffset=%d\n",&changed_prefs.pandora_stylusOffset);
|
||||
fscanf(f,"tapDelay=%d\n",&changed_prefs.pandora_tapDelay);
|
||||
fscanf(f,"stylusOffset=%d\n",&p->pandora_stylusOffset);
|
||||
fscanf(f,"tapDelay=%d\n",&p->pandora_tapDelay);
|
||||
fscanf(f,"scanlines=%d\n", &dummy);
|
||||
#if defined(PANDORA) || defined(ANDROIDSDL)
|
||||
fscanf(f,"ham=%d\n",&dummy);
|
||||
|
@ -473,169 +471,126 @@ int loadconfig_old(const char *orgpath, int general)
|
|||
fscanf(f,"ham=%d\n",&mainMenu_ham);
|
||||
#endif
|
||||
fscanf(f,"enableScreenshots=%d\n", &dummy);
|
||||
fscanf(f,"floppyspeed=%d\n",&changed_prefs.floppy_speed);
|
||||
fscanf(f,"drives=%d\n", &changed_prefs.nr_floppies);
|
||||
fscanf(f,"videomode=%d\n", &changed_prefs.ntscmode);
|
||||
if(changed_prefs.ntscmode)
|
||||
changed_prefs.chipset_refreshrate = 60;
|
||||
fscanf(f,"floppyspeed=%d\n",&p->floppy_speed);
|
||||
fscanf(f,"drives=%d\n", &p->nr_floppies);
|
||||
fscanf(f,"videomode=%d\n", &p->ntscmode);
|
||||
if(p->ntscmode)
|
||||
p->chipset_refreshrate = 60;
|
||||
else
|
||||
changed_prefs.chipset_refreshrate = 50;
|
||||
fscanf(f,"mainMenu_cpuSpeed=%d\n",&changed_prefs.pandora_cpu_speed);
|
||||
p->chipset_refreshrate = 50;
|
||||
fscanf(f,"mainMenu_cpuSpeed=%d\n",&p->pandora_cpu_speed);
|
||||
fscanf(f,"presetModeId=%d\n",&presetModeId);
|
||||
fscanf(f,"moveX=%d\n", &changed_prefs.pandora_horizontal_offset);
|
||||
fscanf(f,"moveY=%d\n", &changed_prefs.pandora_vertical_offset);
|
||||
fscanf(f,"displayedLines=%d\n",&changed_prefs.gfx_size.height);
|
||||
fscanf(f,"screenWidth=%d\n", &changed_prefs.gfx_size_fs.width);
|
||||
fscanf(f,"moveX=%d\n", &p->pandora_horizontal_offset);
|
||||
fscanf(f,"moveY=%d\n", &p->pandora_vertical_offset);
|
||||
fscanf(f,"displayedLines=%d\n",&p->gfx_size.height);
|
||||
fscanf(f,"screenWidth=%d\n", &p->gfx_size_fs.width);
|
||||
fscanf(f,"cutLeft=%d\n", &dummy);
|
||||
fscanf(f,"cutRight=%d\n", &dummy);
|
||||
fscanf(f,"customControls=%d\n",&changed_prefs.pandora_customControls);
|
||||
fscanf(f,"custom_dpad=%d\n",&changed_prefs.pandora_custom_dpad);
|
||||
fscanf(f,"custom_up=%d\n",&changed_prefs.pandora_custom_up);
|
||||
fscanf(f,"custom_down=%d\n",&changed_prefs.pandora_custom_down);
|
||||
fscanf(f,"custom_left=%d\n",&changed_prefs.pandora_custom_left);
|
||||
fscanf(f,"custom_right=%d\n",&changed_prefs.pandora_custom_right);
|
||||
fscanf(f,"custom_A=%d\n",&changed_prefs.pandora_custom_A);
|
||||
fscanf(f,"custom_B=%d\n",&changed_prefs.pandora_custom_B);
|
||||
fscanf(f,"custom_X=%d\n",&changed_prefs.pandora_custom_X);
|
||||
fscanf(f,"custom_Y=%d\n",&changed_prefs.pandora_custom_Y);
|
||||
fscanf(f,"custom_L=%d\n",&changed_prefs.pandora_custom_L);
|
||||
fscanf(f,"custom_R=%d\n",&changed_prefs.pandora_custom_R);
|
||||
fscanf(f,"cpu=%d\n", &changed_prefs.cpu_level);
|
||||
if(changed_prefs.cpu_level > M68000)
|
||||
fscanf(f,"customControls=%d\n",&p->pandora_customControls);
|
||||
fscanf(f,"custom_dpad=%d\n",&p->pandora_custom_dpad);
|
||||
fscanf(f,"custom_up=%d\n",&p->pandora_custom_up);
|
||||
fscanf(f,"custom_down=%d\n",&p->pandora_custom_down);
|
||||
fscanf(f,"custom_left=%d\n",&p->pandora_custom_left);
|
||||
fscanf(f,"custom_right=%d\n",&p->pandora_custom_right);
|
||||
fscanf(f,"custom_A=%d\n",&p->pandora_custom_A);
|
||||
fscanf(f,"custom_B=%d\n",&p->pandora_custom_B);
|
||||
fscanf(f,"custom_X=%d\n",&p->pandora_custom_X);
|
||||
fscanf(f,"custom_Y=%d\n",&p->pandora_custom_Y);
|
||||
fscanf(f,"custom_L=%d\n",&p->pandora_custom_L);
|
||||
fscanf(f,"custom_R=%d\n",&p->pandora_custom_R);
|
||||
fscanf(f,"cpu=%d\n", &p->cpu_level);
|
||||
if(p->cpu_level > M68000)
|
||||
// Was old format
|
||||
changed_prefs.cpu_level = M68020;
|
||||
fscanf(f,"chipset=%d\n", &changed_prefs.chipset_mask);
|
||||
changed_prefs.immediate_blits = (changed_prefs.chipset_mask & 0x100) == 0x100;
|
||||
changed_prefs.pandora_partial_blits = (changed_prefs.chipset_mask & 0x200) == 0x200;
|
||||
switch (changed_prefs.chipset_mask & 0xff)
|
||||
p->cpu_level = M68020;
|
||||
fscanf(f,"chipset=%d\n", &p->chipset_mask);
|
||||
p->immediate_blits = (p->chipset_mask & 0x100) == 0x100;
|
||||
p->pandora_partial_blits = (p->chipset_mask & 0x200) == 0x200;
|
||||
switch (p->chipset_mask & 0xff)
|
||||
{
|
||||
case 1: changed_prefs.chipset_mask = CSMASK_ECS_AGNUS | CSMASK_ECS_DENISE; break;
|
||||
case 2: changed_prefs.chipset_mask = CSMASK_ECS_AGNUS | CSMASK_ECS_DENISE | CSMASK_AGA; break;
|
||||
default: changed_prefs.chipset_mask = CSMASK_ECS_AGNUS; break;
|
||||
case 1: p->chipset_mask = CSMASK_ECS_AGNUS | CSMASK_ECS_DENISE; break;
|
||||
case 2: p->chipset_mask = CSMASK_ECS_AGNUS | CSMASK_ECS_DENISE | CSMASK_AGA; break;
|
||||
default: p->chipset_mask = CSMASK_ECS_AGNUS; break;
|
||||
}
|
||||
fscanf(f,"cpu=%d\n", &changed_prefs.m68k_speed);
|
||||
if(changed_prefs.m68k_speed < 0)
|
||||
fscanf(f,"cpu=%d\n", &p->m68k_speed);
|
||||
if(p->m68k_speed < 0)
|
||||
{
|
||||
// New version of this option
|
||||
changed_prefs.m68k_speed = -changed_prefs.m68k_speed;
|
||||
p->m68k_speed = -p->m68k_speed;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Old version (500 5T 1200 12T 12T2)
|
||||
if(changed_prefs.m68k_speed >= 2)
|
||||
if(p->m68k_speed >= 2)
|
||||
{
|
||||
// 1200: set to 68020 with 14 MHz
|
||||
changed_prefs.cpu_level = M68020;
|
||||
changed_prefs.m68k_speed--;
|
||||
if(changed_prefs.m68k_speed > 2)
|
||||
changed_prefs.m68k_speed = 2;
|
||||
p->cpu_level = M68020;
|
||||
p->m68k_speed--;
|
||||
if(p->m68k_speed > 2)
|
||||
p->m68k_speed = 2;
|
||||
}
|
||||
}
|
||||
if(changed_prefs.m68k_speed == 1)
|
||||
changed_prefs.m68k_speed = M68K_SPEED_14MHZ_CYCLES;
|
||||
if(changed_prefs.m68k_speed == 2)
|
||||
changed_prefs.m68k_speed = M68K_SPEED_25MHZ_CYCLES;
|
||||
changed_prefs.cachesize = 0;
|
||||
changed_prefs.cpu_compatible = 0;
|
||||
if(p->m68k_speed == 1)
|
||||
p->m68k_speed = M68K_SPEED_14MHZ_CYCLES;
|
||||
if(p->m68k_speed == 2)
|
||||
p->m68k_speed = M68K_SPEED_25MHZ_CYCLES;
|
||||
p->cachesize = 0;
|
||||
p->cpu_compatible = 0;
|
||||
|
||||
if(general == 0)
|
||||
disk_eject(0);
|
||||
disk_eject(1);
|
||||
disk_eject(2);
|
||||
disk_eject(3);
|
||||
fscanf(f,"df0=%s\n",&filebuffer);
|
||||
replace(filebuffer,' ','|');
|
||||
strcpy(p->df[0], filebuffer);
|
||||
disk_insert(0, filebuffer);
|
||||
if(p->nr_floppies > 1)
|
||||
{
|
||||
disk_eject(0);
|
||||
disk_eject(1);
|
||||
disk_eject(2);
|
||||
disk_eject(3);
|
||||
fscanf(f,"df0=%s\n",&filebuffer);
|
||||
memset(filebuffer, 0, 256);
|
||||
fscanf(f,"df1=%s\n",&filebuffer);
|
||||
replace(filebuffer,' ','|');
|
||||
strcpy(changed_prefs.df[0], filebuffer);
|
||||
disk_insert(0, filebuffer);
|
||||
if(changed_prefs.nr_floppies > 1)
|
||||
{
|
||||
memset(filebuffer, 0, 256);
|
||||
fscanf(f,"df1=%s\n",&filebuffer);
|
||||
replace(filebuffer,' ','|');
|
||||
strcpy(changed_prefs.df[1], filebuffer);
|
||||
disk_insert(1, filebuffer);
|
||||
}
|
||||
if(changed_prefs.nr_floppies > 2)
|
||||
{
|
||||
memset(filebuffer, 0, 256);
|
||||
fscanf(f,"df2=%s\n",&filebuffer);
|
||||
replace(filebuffer,' ','|');
|
||||
strcpy(changed_prefs.df[2], filebuffer);
|
||||
disk_insert(2, filebuffer);
|
||||
}
|
||||
if(changed_prefs.nr_floppies > 3)
|
||||
{
|
||||
memset(filebuffer, 0, 256);
|
||||
fscanf(f,"df3=%s\n",&filebuffer);
|
||||
replace(filebuffer,' ','|');
|
||||
strcpy(changed_prefs.df[3], filebuffer);
|
||||
disk_insert(3, filebuffer);
|
||||
}
|
||||
strcpy(p->df[1], filebuffer);
|
||||
disk_insert(1, filebuffer);
|
||||
}
|
||||
else
|
||||
if(p->nr_floppies > 2)
|
||||
{
|
||||
fscanf(f,"script=%d\n", &dummy);
|
||||
fscanf(f,"screenshot=%d\n", &dummy);
|
||||
fread(filebuffer, 1, 4, f);
|
||||
fseek(f, -4, SEEK_CUR);
|
||||
filebuffer[4] = '\0';
|
||||
if(strcmp(filebuffer, "skip") == 0)
|
||||
fscanf(f,"skipintro=%d\n", &dummy);
|
||||
fscanf(f,"boot_hd=%d\n", &dummy);
|
||||
fscanf(f,"hard_disk_dir=", filebuffer);
|
||||
filebuffer[0] = '\0';
|
||||
{
|
||||
char c[2] = {0, 0};
|
||||
*c = fgetc(f);
|
||||
while (*c && (*c != '\n')) {
|
||||
strcat(filebuffer, c);
|
||||
*c = fgetc(f);
|
||||
}
|
||||
}
|
||||
if (filebuffer[0] == '*')
|
||||
filebuffer[0] = '\0';
|
||||
if(filebuffer[0] != '\0')
|
||||
parse_filesys_spec(0, filebuffer);
|
||||
|
||||
fscanf(f,"hard_disk_file=", filebuffer);
|
||||
filebuffer[0] = '\0';
|
||||
{
|
||||
char c[2] = {0, 0};
|
||||
*c = fgetc(f);
|
||||
while (*c && (*c != '\n')) {
|
||||
strcat(filebuffer, c);
|
||||
*c = fgetc(f);
|
||||
}
|
||||
}
|
||||
if (filebuffer[0] == '*')
|
||||
filebuffer[0] = '\0';
|
||||
if(filebuffer[0] != '\0')
|
||||
parse_hardfile_spec(filebuffer);
|
||||
memset(filebuffer, 0, 256);
|
||||
fscanf(f,"df2=%s\n",&filebuffer);
|
||||
replace(filebuffer,' ','|');
|
||||
strcpy(p->df[2], filebuffer);
|
||||
disk_insert(2, filebuffer);
|
||||
}
|
||||
currprefs.nr_floppies = changed_prefs.nr_floppies;
|
||||
if(p->nr_floppies > 3)
|
||||
{
|
||||
memset(filebuffer, 0, 256);
|
||||
fscanf(f,"df3=%s\n",&filebuffer);
|
||||
replace(filebuffer,' ','|');
|
||||
strcpy(p->df[3], filebuffer);
|
||||
disk_insert(3, filebuffer);
|
||||
}
|
||||
|
||||
for(int i=0; i<4; ++i)
|
||||
{
|
||||
if(i < changed_prefs.nr_floppies)
|
||||
changed_prefs.dfxtype[i] = DRV_35_DD;
|
||||
if(i < p->nr_floppies)
|
||||
p->dfxtype[i] = DRV_35_DD;
|
||||
else
|
||||
changed_prefs.dfxtype[i] = DRV_NONE;
|
||||
p->dfxtype[i] = DRV_NONE;
|
||||
}
|
||||
|
||||
fscanf(f,"chipmemory=%d\n",&changed_prefs.chipmem_size);
|
||||
if(changed_prefs.chipmem_size < 10)
|
||||
fscanf(f,"chipmemory=%d\n",&p->chipmem_size);
|
||||
if(p->chipmem_size < 10)
|
||||
// Was saved in old format
|
||||
changed_prefs.chipmem_size = 0x80000 << changed_prefs.chipmem_size;
|
||||
fscanf(f,"slowmemory=%d\n",&changed_prefs.bogomem_size);
|
||||
if(changed_prefs.bogomem_size > 0 && changed_prefs.bogomem_size < 10)
|
||||
p->chipmem_size = 0x80000 << p->chipmem_size;
|
||||
fscanf(f,"slowmemory=%d\n",&p->bogomem_size);
|
||||
if(p->bogomem_size > 0 && p->bogomem_size < 10)
|
||||
// Was saved in old format
|
||||
changed_prefs.bogomem_size =
|
||||
(changed_prefs.bogomem_size <= 2) ? 0x080000 << changed_prefs.bogomem_size :
|
||||
(changed_prefs.bogomem_size == 3) ? 0x180000 : 0x1c0000;
|
||||
fscanf(f,"fastmemory=%d\n",&changed_prefs.fastmem_size);
|
||||
if(changed_prefs.fastmem_size > 0 && changed_prefs.fastmem_size < 10)
|
||||
p->bogomem_size =
|
||||
(p->bogomem_size <= 2) ? 0x080000 << p->bogomem_size :
|
||||
(p->bogomem_size == 3) ? 0x180000 : 0x1c0000;
|
||||
fscanf(f,"fastmemory=%d\n",&p->fastmem_size);
|
||||
if(p->fastmem_size > 0 && p->fastmem_size < 10)
|
||||
// Was saved in old format
|
||||
changed_prefs.fastmem_size = 0x080000 << changed_prefs.fastmem_size;
|
||||
p->fastmem_size = 0x080000 << p->fastmem_size;
|
||||
#ifdef ANDROIDSDL
|
||||
fscanf(f,"onscreen=%d\n",&mainMenu_onScreen);
|
||||
fscanf(f,"onScreen_textinput=%d\n",&mainMenu_onScreen_textinput);
|
||||
|
@ -670,9 +625,9 @@ int loadconfig_old(const char *orgpath, int general)
|
|||
fclose(f);
|
||||
}
|
||||
|
||||
SetPresetMode(presetModeId, &changed_prefs);
|
||||
SetPresetMode(presetModeId, p);
|
||||
|
||||
CheckKickstart();
|
||||
CheckKickstart(p);
|
||||
set_joyConf();
|
||||
|
||||
return 1;
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
.global TRACE_Start
|
||||
.global TRACE_mem
|
||||
.global pixcpy_swap16
|
||||
.global pixcpy_swap32
|
||||
.global ARM_doline_n1
|
||||
.global NEON_doline_n2
|
||||
.global NEON_doline_n3
|
||||
|
@ -60,6 +62,50 @@ TRACE_Start:
|
|||
bx lr
|
||||
|
||||
|
||||
@----------------------------------------------------------------
|
||||
@ pixcpy_swap16
|
||||
@
|
||||
@ r0: uae_u16 *dstp
|
||||
@ r1: uae_u16 *srcp
|
||||
@ r2: int cols
|
||||
@
|
||||
@ void pixcpy_swap16(uae_u16 *dstp, uae_u16 *srcp, int cols);
|
||||
@
|
||||
@----------------------------------------------------------------
|
||||
pixcpy_swap16:
|
||||
subs r2, r2, #1
|
||||
bxmi lr
|
||||
pixcpy_swap16_1:
|
||||
ldrh r3, [r1], #2
|
||||
rev16 r3, r3
|
||||
strh r3, [r0], #2
|
||||
subs r2, r2, #1
|
||||
bge pixcpy_swap16_1
|
||||
bx lr
|
||||
|
||||
|
||||
@----------------------------------------------------------------
|
||||
@ pixcpy_swap32
|
||||
@
|
||||
@ r0: uae_u32 *dstp
|
||||
@ r1: uae_u32 *srcp
|
||||
@ r2: int cols
|
||||
@
|
||||
@ void pixcpy_swap32(uae_u32 *dstp, uae_u32 *srcp, int cols);
|
||||
@
|
||||
@----------------------------------------------------------------
|
||||
pixcpy_swap32:
|
||||
subs r2, r2, #1
|
||||
bxmi lr
|
||||
pixcpy_swap32_1:
|
||||
ldr r3, [r1], #4
|
||||
rev r3, r3
|
||||
str r3, [r0], #4
|
||||
subs r2, r2, #1
|
||||
bge pixcpy_swap32_1
|
||||
bx lr
|
||||
|
||||
|
||||
@----------------------------------------------------------------
|
||||
@ ARM_doline_n1
|
||||
@
|
||||
|
|
|
@ -43,7 +43,8 @@ extern int justClicked;
|
|||
extern int fcounter;
|
||||
|
||||
extern int keycode2amiga(SDL_keysym *prKeySym);
|
||||
extern int loadconfig_old(const char *orgpath, int general);
|
||||
extern int loadconfig_old(struct uae_prefs *p, const char *orgpath);
|
||||
extern void SetLastActiveConfig(const char *filename);
|
||||
|
||||
/* Keyboard and mouse */
|
||||
/* Keyboard */
|
||||
|
@ -120,8 +121,6 @@ void logging_cleanup( void )
|
|||
|
||||
void target_default_options (struct uae_prefs *p, int type)
|
||||
{
|
||||
memcpy(&changed_prefs, &currprefs, sizeof(struct uae_prefs));
|
||||
|
||||
p->pandora_horizontal_offset = 0;
|
||||
p->pandora_vertical_offset = 0;
|
||||
p->pandora_cpu_speed = 600;
|
||||
|
@ -249,12 +248,12 @@ void fetch_screenshotpath(char *out, int size)
|
|||
}
|
||||
|
||||
|
||||
int my_cfgfile_load (struct uae_prefs *p, const char *filename, int general)
|
||||
int target_cfgfile_load (struct uae_prefs *p, char *filename, int type, int isdefault)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
while(nr_units(currprefs.mountinfo) > 0)
|
||||
kill_filesys_unit(currprefs.mountinfo, 0);
|
||||
while(nr_units(p->mountinfo) > 0)
|
||||
kill_filesys_unit(p->mountinfo, 0);
|
||||
|
||||
char *ptr = strstr(filename, ".uae");
|
||||
if(ptr > 0)
|
||||
|
@ -267,25 +266,20 @@ int my_cfgfile_load (struct uae_prefs *p, const char *filename, int general)
|
|||
set_joyConf();
|
||||
extractFileName(filename, last_loaded_config);
|
||||
}
|
||||
else if (general >= 0)
|
||||
result = loadconfig_old(filename, general);
|
||||
else
|
||||
result = loadconfig_old(p, filename);
|
||||
|
||||
if(result)
|
||||
{
|
||||
for(int i=0; i < p->nr_floppies; ++i)
|
||||
{
|
||||
if(strncmp(currprefs.df[i], p->df[i], 256))
|
||||
{
|
||||
if(strlen(p->df[i]) > 0)
|
||||
disk_insert(i, p->df[i]);
|
||||
else
|
||||
disk_eject(i);
|
||||
}
|
||||
if(strlen(p->df[i]) > 0)
|
||||
AddFileToDiskList(p->df[i], 1);
|
||||
}
|
||||
|
||||
inputdevice_updateconfig (p);
|
||||
|
||||
SetLastActiveConfig(filename);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
|
@ -423,11 +423,11 @@ static int getMapping(int customId)
|
|||
|
||||
void moveVertical(int value)
|
||||
{
|
||||
currprefs.pandora_vertical_offset += value;
|
||||
if(currprefs.pandora_vertical_offset < -16)
|
||||
currprefs.pandora_vertical_offset = -16;
|
||||
else if(currprefs.pandora_vertical_offset > 16)
|
||||
currprefs.pandora_vertical_offset = 16;
|
||||
changed_prefs.pandora_vertical_offset += value;
|
||||
if(changed_prefs.pandora_vertical_offset < -16)
|
||||
changed_prefs.pandora_vertical_offset = -16;
|
||||
else if(changed_prefs.pandora_vertical_offset > 16)
|
||||
changed_prefs.pandora_vertical_offset = 16;
|
||||
}
|
||||
|
||||
void gui_handle_events (void)
|
||||
|
|
|
@ -12,38 +12,127 @@
|
|||
|
||||
|
||||
uae_u8* natmem_offset = 0;
|
||||
uae_u32 natmem_size;
|
||||
static uae_u64 totalAmigaMemSize;
|
||||
#define MAXAMIGAMEM 0x6000000 // 64 MB (16 MB for standard Amiga stuff, 16 MG RTG, 64 MB Z3 fast)
|
||||
|
||||
|
||||
/*
|
||||
void TestMemMap(void)
|
||||
{
|
||||
void *starting = (void *)0x60000000;
|
||||
void *base;
|
||||
void *z3fast;
|
||||
void *gfx;
|
||||
|
||||
base = mmap(starting, 0x1000000, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
|
||||
printf("TEST: adr for first 16MB: 0x%08x\n", base);
|
||||
if(base != MAP_FAILED)
|
||||
{
|
||||
z3fast = mmap((void *)((int)base + 0x10000000), 0x2000000, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
|
||||
printf("TEST: adr for z3fast 32MB: 0x%08x\n", z3fast);
|
||||
if(z3fast != MAP_FAILED)
|
||||
{
|
||||
gfx = mmap((void *)((int)base + 0x12000000), 0x800000, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
|
||||
printf("TEST: adr for gfx 8MB: 0x%08x\n", gfx);
|
||||
if(gfx != MAP_FAILED)
|
||||
{
|
||||
munmap(gfx, 0x800000);
|
||||
}
|
||||
munmap(z3fast, 0x2000000);
|
||||
}
|
||||
munmap(base, 0x1000000);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
const int totalAmigaMemSize = 0x1000000;
|
||||
|
||||
void free_AmigaMem(void)
|
||||
{
|
||||
if(natmem_offset != 0)
|
||||
{
|
||||
// munlock(natmem_offset, totalAmigaMemSize);
|
||||
free(natmem_offset);
|
||||
natmem_offset;
|
||||
natmem_offset = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void alloc_AmigaMem(void)
|
||||
{
|
||||
int res;
|
||||
|
||||
int i;
|
||||
uae_u64 total;
|
||||
uae_u32 max_allowed_mman;
|
||||
|
||||
free_AmigaMem();
|
||||
|
||||
// Get max. available size
|
||||
total = (uae_u64)sysconf (_SC_PHYS_PAGES) * (uae_u64)getpagesize();
|
||||
|
||||
natmem_offset = (uae_u8*)malloc(totalAmigaMemSize);
|
||||
if(natmem_offset == 0)
|
||||
{
|
||||
printf("Failed to alloc complete Amiga memory.\n");
|
||||
abort();
|
||||
}
|
||||
|
||||
// res = mlock(natmem_offset, totalAmigaMemSize);
|
||||
// if(res != 0)
|
||||
// {
|
||||
// printf("Failed to lock Amiga memory.\n");
|
||||
// free(natmem_offset);
|
||||
// abort();
|
||||
// }
|
||||
// Limit to max. 64 MB
|
||||
natmem_size = total;
|
||||
if (natmem_size > MAXAMIGAMEM)
|
||||
natmem_size = MAXAMIGAMEM;
|
||||
|
||||
// We need at least 16 MB
|
||||
if (natmem_size < 16 * 1024 * 1024)
|
||||
natmem_size = 16 * 1024 * 1024;
|
||||
|
||||
write_log("Total physical RAM %lluM. Attempting to reserve: %uM.\n", total >> 20, natmem_size >> 20);
|
||||
natmem_offset = (uae_u8*)valloc (natmem_size);
|
||||
|
||||
if (!natmem_offset) {
|
||||
for (;;) {
|
||||
natmem_offset = (uae_u8*)valloc (natmem_size);
|
||||
if (natmem_offset)
|
||||
break;
|
||||
natmem_size -= 16 * 1024 * 1024;
|
||||
if (!natmem_size) {
|
||||
write_log("Can't allocate 16M of virtual address space!?\n");
|
||||
abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
max_z3fastmem = natmem_size - 32 * 1024 * 1024;
|
||||
if(max_z3fastmem < 0)
|
||||
max_z3fastmem = 0;
|
||||
write_log("Reserved: %p-%p (0x%08x %dM)\n", natmem_offset, (uae_u8*)natmem_offset + natmem_size,
|
||||
natmem_size, natmem_size >> 20);
|
||||
}
|
||||
|
||||
|
||||
uae_u8 *mapped_malloc (size_t s, const char *file)
|
||||
{
|
||||
if(!strcmp(file, "chip"))
|
||||
return natmem_offset;
|
||||
|
||||
if(!strcmp(file, "fast"))
|
||||
return natmem_offset + 0x200000;
|
||||
|
||||
if(!strcmp(file, "bogo"))
|
||||
return natmem_offset + bogomem_start;
|
||||
|
||||
if(!strcmp(file, "rom_f0"))
|
||||
return natmem_offset + 0xf00000;
|
||||
|
||||
if(!strcmp(file, "rom_e0"))
|
||||
return natmem_offset + 0xe00000;
|
||||
|
||||
if(!strcmp(file, "kick"))
|
||||
return natmem_offset + kickmem_start;
|
||||
|
||||
if(!strcmp(file, "z3"))
|
||||
return natmem_offset + 0x1000000; //z3fastmem_start;
|
||||
|
||||
if(!strcmp(file, "gfx"))
|
||||
return natmem_offset + 0x3000000; //gfxmem_start;
|
||||
|
||||
if(!strcmp(file, "rtarea"))
|
||||
return natmem_offset + RTAREA_BASE;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
void mapped_free (uae_u8 *p)
|
||||
{
|
||||
}
|
||||
|
|
2680
src/od-pandora/picasso96.cpp
Normal file
2680
src/od-pandora/picasso96.cpp
Normal file
File diff suppressed because it is too large
Load diff
|
@ -76,7 +76,7 @@ static bool handle_arm_instruction(unsigned long *pregs, uintptr addr)
|
|||
{
|
||||
unsigned int *pc = (unsigned int *)pregs[ARM_REG_PC];
|
||||
|
||||
D(panicbug("IP: %p [%08x] %p\n", pc, pc[0], addr));
|
||||
panicbug("IP: %p [%08x] %p\n", pc, pc[0], addr);
|
||||
if (pc == 0) return false;
|
||||
|
||||
if (in_handler > 0)
|
||||
|
@ -158,11 +158,8 @@ static bool handle_arm_instruction(unsigned long *pregs, uintptr addr)
|
|||
// }
|
||||
#endif
|
||||
|
||||
if (addr >= 0xff000000)
|
||||
addr &= 0x00ffffff;
|
||||
|
||||
if ((addr < 0x00f00000) || (addr > 0x00ffffff))
|
||||
goto buserr;
|
||||
// if ((addr < 0x00f00000) || (addr > 0x00ffffff))
|
||||
// goto buserr;
|
||||
|
||||
if (transfer_type == TYPE_LOAD) {
|
||||
switch(transfer_size) {
|
||||
|
@ -197,14 +194,14 @@ static bool handle_arm_instruction(unsigned long *pregs, uintptr addr)
|
|||
}
|
||||
|
||||
pregs[ARM_REG_PC] += 4;
|
||||
D(panicbug("processed: %p \n", pregs[ARM_REG_PC]));
|
||||
panicbug("processed: %p \n", pregs[ARM_REG_PC]);
|
||||
|
||||
in_handler--;
|
||||
|
||||
return true;
|
||||
|
||||
buserr:
|
||||
D(panicbug("Amiga bus error\n"));
|
||||
panicbug("Amiga bus error\n");
|
||||
|
||||
// BUS_ERROR(addr);
|
||||
return false;
|
||||
|
|
|
@ -12,7 +12,8 @@
|
|||
FILE *debugfile = NULL;
|
||||
|
||||
#ifdef WITH_LOGGING
|
||||
void write_log (const char *format, ...)
|
||||
|
||||
void write_log (const char *format,...)
|
||||
{
|
||||
int count;
|
||||
int numwritten;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue