Brought back several PANDORA specific items, using #ifdef PANDORA to enable them conditionally
This commit is contained in:
parent
9d8dc58b19
commit
0646927e7a
10 changed files with 274 additions and 39 deletions
|
@ -1876,7 +1876,7 @@ void init_row_map(void)
|
|||
|
||||
static void init_aspect_maps()
|
||||
{
|
||||
int i, maxl, h;
|
||||
int i, h;
|
||||
|
||||
h = gfxvidinfo.drawbuffer.outheight;
|
||||
|
||||
|
@ -1889,15 +1889,18 @@ static void init_aspect_maps()
|
|||
|
||||
native2amiga_line_map = xmalloc(int, h);
|
||||
|
||||
maxl = (MAXVPOS + 1);
|
||||
int maxl = (MAXVPOS + 1);
|
||||
|
||||
for (i = 0; i < h; i++)
|
||||
native2amiga_line_map[i] = -1;
|
||||
|
||||
for (i = maxl - 1; i >= minfirstline; i--) {
|
||||
int j;
|
||||
for (j = i - minfirstline; j < h && native2amiga_line_map[j] == -1; j++)
|
||||
for (int j = i - minfirstline; j < h && native2amiga_line_map[j] == -1; j++)
|
||||
#ifdef PANDORA
|
||||
native2amiga_line_map[j] = i + currprefs.pandora_vertical_offset;
|
||||
#else
|
||||
native2amiga_line_map[j] = i;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2204,7 +2207,11 @@ static void center_image(void)
|
|||
linetoscr_x_adjust_pixels = visible_left_border;
|
||||
linetoscr_x_adjust_pixbytes = linetoscr_x_adjust_pixels * gfxvidinfo.drawbuffer.pixbytes;
|
||||
|
||||
#ifdef PANDORA
|
||||
thisframe_y_adjust_real = minfirstline + currprefs.pandora_vertical_offset;
|
||||
#else
|
||||
thisframe_y_adjust_real = minfirstline;
|
||||
#endif
|
||||
max_ypos_thisframe = maxvpos_display - minfirstline + 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -44,8 +44,8 @@ struct inputdevice_functions {
|
|||
void (*unacquire)(int);
|
||||
void (*read)(void);
|
||||
int (*get_num)(void);
|
||||
TCHAR* (*get_friendlyname)(int);
|
||||
TCHAR* (*get_uniquename)(int);
|
||||
const TCHAR* (*get_friendlyname)(int);
|
||||
const TCHAR* (*get_uniquename)(int);
|
||||
int (*get_widget_num)(int);
|
||||
int (*get_widget_type)(int,int,TCHAR*,uae_u32*);
|
||||
int (*get_widget_first)(int,int);
|
||||
|
@ -183,9 +183,9 @@ extern void inputdevice_swap_compa_ports (struct uae_prefs *p, int portswap);
|
|||
extern void inputdevice_config_change (void);
|
||||
extern int inputdevice_config_change_test (void);
|
||||
extern int inputdevice_get_device_index (int devnum);
|
||||
extern TCHAR *inputdevice_get_device_name (int type, int devnum);
|
||||
extern TCHAR *inputdevice_get_device_name2 (int devnum);
|
||||
extern TCHAR *inputdevice_get_device_unique_name (int type, int devnum);
|
||||
extern const TCHAR *inputdevice_get_device_name (int type, int devnum);
|
||||
extern const TCHAR *inputdevice_get_device_name2 (int devnum);
|
||||
extern const TCHAR *inputdevice_get_device_unique_name (int type, int devnum);
|
||||
extern int inputdevice_get_device_status (int devnum);
|
||||
extern void inputdevice_set_device_status (int devnum, int enabled);
|
||||
extern int inputdevice_get_device_total (int type);
|
||||
|
|
|
@ -538,7 +538,7 @@ static void out_config (struct zfile *f, int id, int num, const TCHAR *s1, const
|
|||
|
||||
static bool write_config_head (struct zfile *f, int idnum, int devnum, const TCHAR *name, struct uae_input_device *id, struct inputdevice_functions *idf)
|
||||
{
|
||||
TCHAR *s = nullptr;
|
||||
const TCHAR *s = nullptr;
|
||||
TCHAR tmp2[CONFIG_BLEN];
|
||||
|
||||
if (idnum == GAMEPORT_INPUT_SETTINGS) {
|
||||
|
@ -1126,8 +1126,8 @@ static int matchdevice(struct inputdevice_functions *inf, const TCHAR *confignam
|
|||
for (int j = 0; j < 2; j++) {
|
||||
bool fullmatch = j == 0;
|
||||
for (int i = 0; i < inf->get_num(); i++) {
|
||||
TCHAR *aname1 = inf->get_friendlyname(i);
|
||||
TCHAR *aname2 = inf->get_uniquename(i);
|
||||
const TCHAR *aname1 = inf->get_friendlyname(i);
|
||||
const TCHAR *aname2 = inf->get_uniquename(i);
|
||||
if (fullmatch && (!aname1 || !name))
|
||||
continue;
|
||||
if (aname2 && configname) {
|
||||
|
@ -1174,8 +1174,8 @@ static int matchdevice(struct inputdevice_functions *inf, const TCHAR *confignam
|
|||
bool fullmatch = j == 0;
|
||||
match = -1;
|
||||
for (int i = 0; i < inf->get_num(); i++) {
|
||||
TCHAR *aname1 = inf->get_friendlyname(i);
|
||||
TCHAR *aname2 = inf->get_uniquename(i);
|
||||
const TCHAR *aname1 = inf->get_friendlyname(i);
|
||||
const TCHAR *aname2 = inf->get_uniquename(i);
|
||||
if (aname2 && configname) {
|
||||
const TCHAR *bname2 = configname;
|
||||
bool matched = false;
|
||||
|
@ -1202,7 +1202,7 @@ static int matchdevice(struct inputdevice_functions *inf, const TCHAR *confignam
|
|||
if (match < 0) {
|
||||
// no match, try friendly names
|
||||
for (int i = 0; i < inf->get_num(); i++) {
|
||||
TCHAR *aname1 = inf->get_friendlyname(i);
|
||||
const TCHAR *aname1 = inf->get_friendlyname(i);
|
||||
if (aname1 && name) {
|
||||
const TCHAR *bname1 = name;
|
||||
if (aname1 && bname1 && !_tcscmp(aname1, bname1)) {
|
||||
|
@ -1304,7 +1304,7 @@ void read_inputdevice_config (struct uae_prefs *pr, const TCHAR *option, TCHAR *
|
|||
struct uae_input_device *id = nullptr;
|
||||
const struct inputevent *ie;
|
||||
int devnum, num, button, joystick, subnum, idnum, keynum, devtype;
|
||||
const TCHAR *p;
|
||||
const TCHAR *p;
|
||||
TCHAR *p2, *custom;
|
||||
struct temp_uids *tid = &temp_uid;
|
||||
struct inputdevice_functions *idf = nullptr;
|
||||
|
@ -2918,7 +2918,7 @@ static int switchdevice (struct uae_input_device *id, int num, bool buttonmode)
|
|||
int newport = 0;
|
||||
int newslot = -1;
|
||||
int flags = 0;
|
||||
TCHAR *name = nullptr, *fname = nullptr;
|
||||
const TCHAR *name = nullptr, *fname = nullptr;
|
||||
int otherbuttonpressed = 0;
|
||||
int acc = input_acquired;
|
||||
|
||||
|
@ -2983,7 +2983,7 @@ static int switchdevice (struct uae_input_device *id, int num, bool buttonmode)
|
|||
supermouse = i;
|
||||
}
|
||||
if (supermouse >= 0 && nummouse == 1) {
|
||||
TCHAR *oldname = name;
|
||||
const TCHAR *oldname = name;
|
||||
name = idev[IDTYPE_MOUSE].get_uniquename (supermouse);
|
||||
fname = idev[IDTYPE_MOUSE].get_friendlyname(supermouse);
|
||||
issupermouse = true;
|
||||
|
@ -4453,8 +4453,8 @@ static void matchdevices (struct inputdevice_functions *inf, struct uae_input_de
|
|||
bool fullmatch = l == 0;
|
||||
int match = -1;
|
||||
for (i = 0; i < inf->get_num (); i++) {
|
||||
TCHAR *aname1 = inf->get_friendlyname (i);
|
||||
TCHAR *aname2 = inf->get_uniquename (i);
|
||||
const TCHAR *aname1 = inf->get_friendlyname (i);
|
||||
const TCHAR *aname2 = inf->get_uniquename (i);
|
||||
for (j = 0; j < MAX_INPUT_DEVICES; j++) {
|
||||
if (aname2 && uid[j].configname) {
|
||||
bool matched = false;
|
||||
|
@ -4862,7 +4862,11 @@ void inputdevice_default_prefs (struct uae_prefs *p)
|
|||
inputdevice_init ();
|
||||
|
||||
p->input_selected_setting = GAMEPORT_INPUT_SETTINGS;
|
||||
#ifdef PANDORA
|
||||
p->input_joymouse_multiplier = 20;
|
||||
#else
|
||||
p->input_joymouse_multiplier = 2;
|
||||
#endif
|
||||
p->input_joymouse_deadzone = 33;
|
||||
p->input_joystick_deadzone = 33;
|
||||
p->input_joymouse_speed = 10;
|
||||
|
@ -5212,17 +5216,17 @@ int inputdevice_get_device_total (int type)
|
|||
return idev[type].get_num ();
|
||||
}
|
||||
/* returns the name of device */
|
||||
TCHAR *inputdevice_get_device_name (int type, int devnum)
|
||||
const TCHAR *inputdevice_get_device_name (int type, int devnum)
|
||||
{
|
||||
return idev[type].get_friendlyname (devnum);
|
||||
}
|
||||
/* returns the name of device */
|
||||
TCHAR *inputdevice_get_device_name2 (int devnum)
|
||||
const TCHAR *inputdevice_get_device_name2 (int devnum)
|
||||
{
|
||||
return getidf (devnum)->get_friendlyname (inputdevice_get_device_index (devnum));
|
||||
}
|
||||
/* returns machine readable name of device */
|
||||
TCHAR *inputdevice_get_device_unique_name (int type, int devnum)
|
||||
const TCHAR *inputdevice_get_device_unique_name (int type, int devnum)
|
||||
{
|
||||
return idev[type].get_uniquename (devnum);
|
||||
}
|
||||
|
@ -6096,8 +6100,8 @@ int inputdevice_joyport_config (struct uae_prefs *p, const TCHAR *value1, const
|
|||
idf = &idev[dtype];
|
||||
if (value1 && value2) {
|
||||
for (int i = 0; i < idf->get_num(); i++) {
|
||||
TCHAR *name1 = idf->get_friendlyname(i);
|
||||
TCHAR *name2 = idf->get_uniquename(i);
|
||||
const TCHAR *name1 = idf->get_friendlyname(i);
|
||||
const TCHAR *name2 = idf->get_uniquename(i);
|
||||
if (name2 && !_tcscmp(name2, value2) && name1 && !_tcscmp(name1, value1)) {
|
||||
// config+friendlyname matched: don't bother to check for duplicates
|
||||
matched = i;
|
||||
|
@ -6108,7 +6112,7 @@ int inputdevice_joyport_config (struct uae_prefs *p, const TCHAR *value1, const
|
|||
if (matched < 0 && value2) {
|
||||
matched = -1;
|
||||
for (int i = 0; i < idf->get_num (); i++) {
|
||||
TCHAR *name2 = idf->get_uniquename (i);
|
||||
const TCHAR *name2 = idf->get_uniquename (i);
|
||||
if (name2 && !_tcscmp (name2, value2)) {
|
||||
if (matched >= 0) {
|
||||
matched = -2;
|
||||
|
@ -6122,7 +6126,7 @@ int inputdevice_joyport_config (struct uae_prefs *p, const TCHAR *value1, const
|
|||
if (matched < 0 && value1) {
|
||||
matched = -1;
|
||||
for (int i = 0; i < idf->get_num (); i++) {
|
||||
TCHAR *name1 = idf->get_friendlyname (i);
|
||||
const TCHAR *name1 = idf->get_friendlyname (i);
|
||||
if (name1 && !_tcscmp (name1, value1)) {
|
||||
if (matched >= 0) {
|
||||
matched = -2;
|
||||
|
|
|
@ -231,6 +231,12 @@ void target_fixup_options(struct uae_prefs* p)
|
|||
|
||||
void target_default_options(struct uae_prefs* p, int type)
|
||||
{
|
||||
#ifdef PANDORA
|
||||
p->pandora_vertical_offset = OFFSET_Y_ADJUST;
|
||||
p->pandora_cpu_speed = defaultCpuSpeed;
|
||||
p->pandora_hide_idle_led = 0;
|
||||
p->pandora_tapDelay = 10;
|
||||
#endif //PANDORA
|
||||
p->customControls = false;
|
||||
_tcscpy(p->custom_up, "");
|
||||
_tcscpy(p->custom_down, "");
|
||||
|
@ -273,6 +279,12 @@ void target_default_options(struct uae_prefs* p, int type)
|
|||
|
||||
void target_save_options(struct zfile* f, struct uae_prefs* p)
|
||||
{
|
||||
#ifdef PANDORA
|
||||
cfgfile_write (f, "pandora.cpu_speed", "%d", p->pandora_cpu_speed);
|
||||
cfgfile_write (f, "pandora.hide_idle_led", "%d", p->pandora_hide_idle_led);
|
||||
cfgfile_write (f, "pandora.tap_delay", "%d", p->pandora_tapDelay);
|
||||
cfgfile_write (f, "pandora.move_y", "%d", p->pandora_vertical_offset - OFFSET_Y_ADJUST);
|
||||
#endif //PANDORA
|
||||
cfgfile_write(f, _T("amiberry.kbd_led_num"), _T("%d"), p->kbd_led_num);
|
||||
cfgfile_write(f, _T("amiberry.kbd_led_scr"), _T("%d"), p->kbd_led_scr);
|
||||
cfgfile_write(f, _T("amiberry.scaling_method"), _T("%d"), p->scaling_method);
|
||||
|
@ -310,6 +322,18 @@ TCHAR *target_expand_environment(const TCHAR *path, TCHAR *out, int maxlen)
|
|||
|
||||
int target_parse_option(struct uae_prefs* p, const char* option, const char* value)
|
||||
{
|
||||
#ifdef PANDORA
|
||||
if (cfgfile_intval(option, value, "cpu_speed", &p->pandora_cpu_speed, 1)
|
||||
return 1;
|
||||
if (cfgfile_intval(option, value, "hide_idle_led", &p->pandora_hide_idle_led, 1)
|
||||
return 1;
|
||||
if (cfgfile_intval(option, value, "tap_delay", &p->pandora_tapDelay, 1)
|
||||
return 1;
|
||||
if (cfgfile_intval(option, value, "move_y", &p->pandora_vertical_offset, 1) {
|
||||
p->pandora_vertical_offset += OFFSET_Y_ADJUST;
|
||||
return 1;
|
||||
}
|
||||
#endif //PANDORA
|
||||
if (cfgfile_intval(option, value, "kbd_led_num", &p->kbd_led_num, 1))
|
||||
return 1;
|
||||
if (cfgfile_intval(option, value, "kbd_led_scr", &p->kbd_led_scr, 1))
|
||||
|
@ -684,6 +708,91 @@ void loadAdfDir(void)
|
|||
}
|
||||
}
|
||||
|
||||
int currVSyncRate = 0;
|
||||
bool SetVSyncRate(int hz)
|
||||
{
|
||||
char cmd[64];
|
||||
|
||||
if(currVSyncRate != hz && (hz == 50 || hz == 60))
|
||||
{
|
||||
#ifdef PANDORA
|
||||
snprintf((char*)cmd, 64, "sudo /usr/pandora/scripts/op_lcdrate.sh %d", hz);
|
||||
system(cmd);
|
||||
#endif
|
||||
currVSyncRate = hz;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void setCpuSpeed()
|
||||
{
|
||||
#ifdef PANDORA
|
||||
char speedCmd[128];
|
||||
|
||||
currprefs.pandora_cpu_speed = changed_prefs.pandora_cpu_speed;
|
||||
|
||||
if(currprefs.pandora_cpu_speed != lastCpuSpeed)
|
||||
{
|
||||
snprintf((char*)speedCmd, 128, "unset DISPLAY; echo y | sudo -n /usr/pandora/scripts/op_cpuspeed.sh %d", currprefs.pandora_cpu_speed);
|
||||
system(speedCmd);
|
||||
lastCpuSpeed = currprefs.pandora_cpu_speed;
|
||||
cpuSpeedChanged = true;
|
||||
}
|
||||
#endif
|
||||
if(changed_prefs.ntscmode != currprefs.ntscmode)
|
||||
{
|
||||
if(changed_prefs.ntscmode)
|
||||
SetVSyncRate(60);
|
||||
else
|
||||
SetVSyncRate(50);
|
||||
fix_apmodes(&changed_prefs);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int getDefaultCpuSpeed(void)
|
||||
{
|
||||
#ifdef PANDORA
|
||||
int speed = 600;
|
||||
FILE* f = fopen ("/etc/pandora/conf/cpu.conf", "rt");
|
||||
if(f)
|
||||
{
|
||||
char line[128];
|
||||
for(int i=0; i<6; ++i)
|
||||
{
|
||||
fscanf(f, "%s\n", &line);
|
||||
if(strncmp(line, "default:", 8) == 0)
|
||||
{
|
||||
int value = 0;
|
||||
sscanf(line, "default:%d", &value);
|
||||
if(value > 500 && value < 1200)
|
||||
{
|
||||
speed = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose(f);
|
||||
}
|
||||
return speed;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void resetCpuSpeed(void)
|
||||
{
|
||||
#ifdef PANDORA
|
||||
if(cpuSpeedChanged)
|
||||
{
|
||||
lastCpuSpeed = defaultCpuSpeed - 10;
|
||||
currprefs.pandora_cpu_speed = changed_prefs.pandora_cpu_speed = defaultCpuSpeed;
|
||||
setCpuSpeed();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void target_addtorecent(const TCHAR *name, int t)
|
||||
{
|
||||
}
|
||||
|
@ -890,6 +999,22 @@ int handle_msgpump()
|
|||
ioctl(0, KDSETLED, kbd_led_status);
|
||||
ioctl(0, KDSKBLED, kbd_flags);
|
||||
break;
|
||||
#ifdef PANDORA
|
||||
case SDLK_LCTRL: // Select key
|
||||
inputdevice_add_inputcode (AKS_ENTERGUI, 1);
|
||||
break;
|
||||
|
||||
case SDLK_LSHIFT: // Shift key
|
||||
inputdevice_do_keyboard(AK_LSH, 1);
|
||||
break;
|
||||
|
||||
case SDLK_RSHIFT: // Left shoulder button
|
||||
case SDLK_RCTRL: // Right shoulder button
|
||||
if(currprefs.input_tablet > TABLET_OFF) {
|
||||
// Holding left or right shoulder button -> stylus does right mousebutton
|
||||
doStylusRightClick = 1;
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
if (currprefs.customControls)
|
||||
{
|
||||
|
@ -936,8 +1061,14 @@ int handle_msgpump()
|
|||
case SDL_MOUSEBUTTONDOWN:
|
||||
if (currprefs.jports[0].id == JSEM_MICE || currprefs.jports[1].id == JSEM_MICE)
|
||||
{
|
||||
if (rEvent.button.button == SDL_BUTTON_LEFT)
|
||||
setmousebuttonstate(0, 0, 1);
|
||||
if (rEvent.button.button == SDL_BUTTON_LEFT) {
|
||||
if (currprefs.input_tablet > TABLET_OFF && !doStylusRightClick)
|
||||
#ifdef PANDORA
|
||||
delayed_mousebutton = currprefs.pandora_tapDelay << 1;
|
||||
else
|
||||
#endif //PANDORA
|
||||
setmousebuttonstate(0, doStylusRightClick, 1);
|
||||
}
|
||||
if (rEvent.button.button == SDL_BUTTON_RIGHT)
|
||||
setmousebuttonstate(0, 1, 1);
|
||||
if (rEvent.button.button == SDL_BUTTON_MIDDLE)
|
||||
|
@ -949,7 +1080,7 @@ int handle_msgpump()
|
|||
if (currprefs.jports[0].id == JSEM_MICE || currprefs.jports[1].id == JSEM_MICE)
|
||||
{
|
||||
if (rEvent.button.button == SDL_BUTTON_LEFT)
|
||||
setmousebuttonstate(0, 0, 0);
|
||||
setmousebuttonstate(0, doStylusRightClick, 0);
|
||||
if (rEvent.button.button == SDL_BUTTON_RIGHT)
|
||||
setmousebuttonstate(0, 1, 0);
|
||||
if (rEvent.button.button == SDL_BUTTON_MIDDLE)
|
||||
|
@ -965,7 +1096,16 @@ int handle_msgpump()
|
|||
int mouseScale = currprefs.input_joymouse_multiplier / 2;
|
||||
int x = rEvent.motion.xrel;
|
||||
int y = rEvent.motion.yrel;
|
||||
|
||||
#ifdef PANDORA
|
||||
if(rEvent.motion.x == 0 && x > -4)
|
||||
x = -4;
|
||||
if(rEvent.motion.y == 0 && y > -4)
|
||||
y = -4;
|
||||
if(rEvent.motion.x == currprefs.gfx_size.width - 1 && x < 4)
|
||||
x = 4;
|
||||
if(rEvent.motion.y == currprefs.gfx_size.height - 1 && y < 4)
|
||||
y = 4;
|
||||
#endif //PANDORA
|
||||
setmousestate(0, 0, x * mouseScale, 0);
|
||||
setmousestate(0, 1, y * mouseScale, 0);
|
||||
}
|
||||
|
|
|
@ -205,6 +205,15 @@ int check_prefs_changed_gfx()
|
|||
currprefs.leds_on_screen = changed_prefs.leds_on_screen;
|
||||
changed = 1;
|
||||
}
|
||||
#ifdef PANDORA
|
||||
if (currprefs.pandora_hide_idle_led != changed_prefs.pandora_hide_idle_led ||
|
||||
currprefs.pandora_vertical_offset != changed_prefs.pandora_vertical_offset)
|
||||
{
|
||||
currprefs.pandora_hide_idle_led = changed_prefs.pandora_hide_idle_led;
|
||||
currprefs.pandora_vertical_offset = changed_prefs.pandora_vertical_offset;
|
||||
changed = 1;
|
||||
}
|
||||
#endif //PANDORA
|
||||
if (currprefs.chipset_refreshrate != changed_prefs.chipset_refreshrate)
|
||||
{
|
||||
currprefs.chipset_refreshrate = changed_prefs.chipset_refreshrate;
|
||||
|
|
|
@ -421,6 +421,9 @@ int gui_init()
|
|||
|
||||
void gui_exit()
|
||||
{
|
||||
#ifdef PANDORA
|
||||
resetCpuSpeed();
|
||||
#endif
|
||||
sync();
|
||||
amiberry_stop_sound();
|
||||
saveAdfDir();
|
||||
|
@ -507,6 +510,14 @@ void gui_display(int shortcut)
|
|||
fpscounter_reset();
|
||||
}
|
||||
|
||||
void moveVertical(int value)
|
||||
{
|
||||
changed_prefs.pandora_vertical_offset += value;
|
||||
if(changed_prefs.pandora_vertical_offset < -16 + OFFSET_Y_ADJUST)
|
||||
changed_prefs.pandora_vertical_offset = -16 + OFFSET_Y_ADJUST;
|
||||
else if(changed_prefs.pandora_vertical_offset > 16 + OFFSET_Y_ADJUST)
|
||||
changed_prefs.pandora_vertical_offset = 16 + OFFSET_Y_ADJUST;
|
||||
}
|
||||
|
||||
void gui_led(int led, int on)
|
||||
{
|
||||
|
|
|
@ -185,6 +185,9 @@ static void parse_clip(struct uae_prefs *p, xmlNode *node)
|
|||
if (attr != NULL)
|
||||
{
|
||||
top = atoi((const char *)attr) / 2;
|
||||
#ifdef PANDORA
|
||||
p->pandora_vertical_offset = top - 41 + OFFSET_Y_ADJUST;
|
||||
#endif //PANDORA
|
||||
xmlFree(attr);
|
||||
}
|
||||
attr = xmlGetProp(curr_node, (const xmlChar *)_T("width"));
|
||||
|
|
|
@ -21,6 +21,12 @@ static gcn::Window* grpScalingMethod;
|
|||
static gcn::UaeRadioButton* optAuto;
|
||||
static gcn::UaeRadioButton* optNearest;
|
||||
static gcn::UaeRadioButton* optLinear;
|
||||
#ifdef PANDORA
|
||||
static gcn::Window *grpAmigaScreen;
|
||||
static gcn::Label* lblVertPos;
|
||||
static gcn::Label* lblVertPosInfo;
|
||||
static gcn::Slider* sldVertPos;
|
||||
#endif // PANDORA
|
||||
|
||||
class AmigaScreenActionListener : public gcn::ActionListener
|
||||
{
|
||||
|
@ -31,6 +37,16 @@ public:
|
|||
{
|
||||
changed_prefs.gfx_framerate = chkFrameskip->isSelected() ? 1 : 0;
|
||||
}
|
||||
#ifdef PANDORA
|
||||
else if (actionEvent.getSource() == sldVertPos)
|
||||
{
|
||||
if(changed_prefs.pandora_vertical_offset != (int)(sldVertPos->getValue()) + OFFSET_Y_ADJUST)
|
||||
{
|
||||
changed_prefs.pandora_vertical_offset = (int)(sldVertPos->getValue()) + OFFSET_Y_ADJUST;
|
||||
RefreshPanelDisplay();
|
||||
}
|
||||
}
|
||||
#endif // PANDORA
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -82,9 +98,37 @@ void InitPanelDisplay(const struct _ConfigCategory& category)
|
|||
|
||||
posY += DISTANCE_BORDER + grpScalingMethod->getHeight() + DISTANCE_NEXT_Y;
|
||||
|
||||
#ifdef PANDORA
|
||||
lblVertPos = new gcn::Label("Vert. offset:");
|
||||
lblVertPos->setSize(150, LABEL_HEIGHT);
|
||||
lblVertPos->setAlignment(gcn::Graphics::RIGHT);
|
||||
sldVertPos = new gcn::Slider(-16, 16);
|
||||
sldVertPos->setSize(160, SLIDER_HEIGHT);
|
||||
sldVertPos->setBaseColor(gui_baseCol);
|
||||
sldVertPos->setMarkerLength(20);
|
||||
sldVertPos->setStepLength(1);
|
||||
sldVertPos->setId("sldVertPos");
|
||||
sldVertPos->addActionListener(amigaScreenActionListener);
|
||||
lblVertPosInfo = new gcn::Label("000");
|
||||
#endif //PANDORA
|
||||
|
||||
chkFrameskip = new gcn::UaeCheckBox("Frameskip");
|
||||
chkFrameskip->addActionListener(amigaScreenActionListener);
|
||||
|
||||
#ifdef PANDORA
|
||||
grpAmigaScreen = new gcn::Window("Amiga Screen");
|
||||
grpAmigaScreen->setPosition(DISTANCE_BORDER, DISTANCE_BORDER);
|
||||
grpAmigaScreen->add(lblVertPos, 0, posY);
|
||||
grpAmigaScreen->add(sldVertPos, 160, posY);
|
||||
grpAmigaScreen->add(lblVertPosInfo, 160 + sldVertPos->getWidth() + 12, posY);
|
||||
posY += sldVertPos->getHeight() + DISTANCE_NEXT_Y;
|
||||
grpAmigaScreen->setMovable(false);
|
||||
grpAmigaScreen->setSize(460, posY + DISTANCE_BORDER);
|
||||
grpAmigaScreen->setBaseColor(gui_baseCol);
|
||||
|
||||
category.panel->add(grpAmigaScreen);
|
||||
#endif //PANDORA
|
||||
|
||||
category.panel->add(chkFrameskip, DISTANCE_BORDER, posY);
|
||||
|
||||
RefreshPanelDisplay();
|
||||
|
@ -95,7 +139,12 @@ void ExitPanelDisplay()
|
|||
{
|
||||
delete chkFrameskip;
|
||||
delete amigaScreenActionListener;
|
||||
|
||||
#ifdef PANDORA
|
||||
delete lblVertPos;
|
||||
delete sldVertPos;
|
||||
delete lblVertPosInfo;
|
||||
delete grpAmigaScreen;
|
||||
#endif //PANDORA
|
||||
delete optAuto;
|
||||
delete optNearest;
|
||||
delete optLinear;
|
||||
|
@ -114,6 +163,11 @@ void RefreshPanelDisplay()
|
|||
optNearest->setSelected(true);
|
||||
else if (changed_prefs.scaling_method == 1)
|
||||
optLinear->setSelected(true);
|
||||
#ifdef PANDORA
|
||||
sldVertPos->setValue(changed_prefs.pandora_vertical_offset - OFFSET_Y_ADJUST);
|
||||
snprintf(tmp, 32, "%d", changed_prefs.pandora_vertical_offset - OFFSET_Y_ADJUST);
|
||||
lblVertPosInfo->setCaption(tmp);
|
||||
#endif //PANDORA
|
||||
}
|
||||
|
||||
bool HelpPanelDisplay(std::vector<std::string> &helptext)
|
||||
|
@ -124,6 +178,11 @@ bool HelpPanelDisplay(std::vector<std::string> &helptext)
|
|||
helptext.push_back("and crisp image, but it may come with some distortion if your resolution is not an exact multiple.");
|
||||
helptext.push_back("\"Linear\" will give you a smoother scaling but some people might find it a bit blurry.");
|
||||
helptext.push_back("");
|
||||
#ifdef PANDORA
|
||||
helptext.push_back("With \"Vert. offset\" you can adjust the position of the first drawn line of the Amiga screen. You can also change");
|
||||
helptext.push_back("this during emulation with left and right shoulder button and dpad up/down.");
|
||||
helptext.push_back("");
|
||||
#endif //PANDORA
|
||||
helptext.push_back("When you activate \"Frameskip\", only every second frame is drawn. This will improve performance and some");
|
||||
helptext.push_back("more games are playable.");
|
||||
return true;
|
||||
|
|
|
@ -153,16 +153,16 @@ void InitPanelMisc(const struct _ConfigCategory& category)
|
|||
|
||||
#ifdef PANDORA
|
||||
lblPandoraSpeed = new gcn::Label("Pandora Speed:");
|
||||
lblPandoraSpeed->setSize(110, LABEL_HEIGHT);
|
||||
lblPandoraSpeed->setAlignment(gcn::Graphics::RIGHT);
|
||||
sldPandoraSpeed = new gcn::Slider(500, 1260);
|
||||
sldPandoraSpeed->setSize(200, SLIDER_HEIGHT);
|
||||
sldPandoraSpeed->setBaseColor(gui_baseCol);
|
||||
lblPandoraSpeed->setSize(110, LABEL_HEIGHT);
|
||||
lblPandoraSpeed->setAlignment(gcn::Graphics::RIGHT);
|
||||
sldPandoraSpeed = new gcn::Slider(500, 1260);
|
||||
sldPandoraSpeed->setSize(200, SLIDER_HEIGHT);
|
||||
sldPandoraSpeed->setBaseColor(gui_baseCol);
|
||||
sldPandoraSpeed->setMarkerLength(20);
|
||||
sldPandoraSpeed->setStepLength(20);
|
||||
sldPandoraSpeed->setId("PandSpeed");
|
||||
sldPandoraSpeed->addActionListener(miscActionListener);
|
||||
lblPandoraSpeedInfo = new gcn::Label("1000 MHz");
|
||||
sldPandoraSpeed->addActionListener(miscActionListener);
|
||||
lblPandoraSpeedInfo = new gcn::Label("1000 MHz");
|
||||
#endif
|
||||
chkBSDSocket = new gcn::UaeCheckBox("bsdsocket.library");
|
||||
chkBSDSocket->setId("BSDSocket");
|
||||
|
|
|
@ -18,6 +18,8 @@ STATIC_INLINE FILE *uae_tfopen(const char *path, const char *mode)
|
|||
return fopen(path, mode);
|
||||
}
|
||||
|
||||
#define OFFSET_Y_ADJUST 15
|
||||
|
||||
extern int emulating;
|
||||
|
||||
extern uae_u8* natmem_offset;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue