Various Android updates
This commit is contained in:
parent
024d624006
commit
77cff6067d
31 changed files with 314 additions and 249 deletions
20
Makefile
20
Makefile
|
@ -53,12 +53,16 @@ else ifeq ($(PLATFORM),rpi1)
|
|||
NAME = amiberry-rpi1-sdl1
|
||||
|
||||
else ifeq ($(PLATFORM),android)
|
||||
CFLAGS += -mfpu=neon -mfloat-abi=soft
|
||||
CFLAGS += -mfpu=vfp
|
||||
DEFS += -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DANDROIDSDL -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL1
|
||||
ANDROID = 1
|
||||
HAVE_NEON = 1
|
||||
HAVE_SDL_DISPLAY = 1
|
||||
NAME = amiberry
|
||||
NAME = amiberry-android
|
||||
|
||||
else ifeq ($(PLATFORM),android64)
|
||||
DEFS += -DCPU_AARCH64 -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DANDROIDSDL -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL1
|
||||
ANDROID = 1
|
||||
AARCH64 = 1
|
||||
NAME = amiberry-android64
|
||||
|
||||
#
|
||||
# SDL2 with DispmanX targets (RPI only)
|
||||
|
@ -223,14 +227,6 @@ USE_SDL2 = 1
|
|||
HAVE_NEON = 1
|
||||
NAME = amiberry-rockpro64
|
||||
|
||||
else ifeq ($(PLATFORM),android-sdl2)
|
||||
USE_SDL2 = 1
|
||||
CFLAGS += -mfpu=neon -mfloat-abi=soft
|
||||
DEFS += -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DANDROIDSDL -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2
|
||||
ANDROID = 1
|
||||
HAVE_NEON = 1
|
||||
HAVE_SDL_DISPLAY = 1
|
||||
NAME = amiberry
|
||||
endif
|
||||
|
||||
RM = rm -f
|
||||
|
|
|
@ -15,7 +15,9 @@
|
|||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
#ifdef HAVE_SYS_TIMEB_H
|
||||
#include <sys/timeb.h>
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
|
@ -412,13 +414,19 @@ static bool cdda_play_func2 (struct cdunit *cdu, int *outpos)
|
|||
#ifdef WIN32
|
||||
struct _timeb tb1, tb2;
|
||||
#else
|
||||
#ifdef HAVE_SYS_TIMEB_H
|
||||
struct timeb tb1, tb2;
|
||||
#else
|
||||
#warning Missing timing functions
|
||||
#endif
|
||||
#endif
|
||||
|
||||
idleframes = 0;
|
||||
silentframes = 0;
|
||||
foundsub = false;
|
||||
#ifdef HAVE_SYS_TIMEB_H
|
||||
_ftime (&tb1);
|
||||
#endif
|
||||
cdda_pos = cdu->cdda_start;
|
||||
oldplay = cdu->cdda_play;
|
||||
sector = cdu->cd_last_pos = cdda_pos;
|
||||
|
@ -473,9 +481,13 @@ static bool cdda_play_func2 (struct cdunit *cdu, int *outpos)
|
|||
cdda_pos -= idleframes;
|
||||
|
||||
if (*outpos < 0) {
|
||||
#ifdef HAVE_SYS_TIMEB_H
|
||||
_ftime (&tb2);
|
||||
diff = (tb2.time * (uae_s64)1000 + tb2.millitm) - (tb1.time * (uae_s64)1000 + tb1.millitm);
|
||||
diff -= cdu->cdda_delay;
|
||||
#else
|
||||
diff = 0;
|
||||
#endif
|
||||
if (idleframes >= 0 && diff < 0 && cdu->cdda_play > 0)
|
||||
sleep_millis(-diff);
|
||||
setstate (cdu, AUDIO_STATUS_IN_PROGRESS, cdda_pos);
|
||||
|
|
|
@ -2338,7 +2338,6 @@ Don't touch this if you don't know what you are doing. */
|
|||
#define DATA_POINTER(n) (line_data[lineno] + (n) * MAX_WORDS_PER_LINE * 2)
|
||||
|
||||
#if defined(CPU_AARCH64) || defined(USE_ARMNEON) && !defined(ANDROID)
|
||||
// FIXME: these neon helper functions caused text rel problem on android
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
|
|
@ -544,6 +544,7 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
|
|||
}
|
||||
FAIL (1);
|
||||
return;
|
||||
#ifndef ANDROID
|
||||
case 6:
|
||||
case 7:
|
||||
{
|
||||
|
@ -661,6 +662,7 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
|
|||
}
|
||||
}
|
||||
return;
|
||||
#endif
|
||||
case 2: /* from <EA> to FPx */
|
||||
dont_care_fflags ();
|
||||
if ((extra & 0xfc00) == 0x5c00) { /* FMOVECR */
|
||||
|
|
|
@ -476,63 +476,63 @@ void graphics_subshutdown()
|
|||
void update_onscreen()
|
||||
{
|
||||
SDL_ANDROID_SetScreenKeyboardFloatingJoystick(changed_prefs.floatingJoystick);
|
||||
if (changed_prefs.onScreen == 0)
|
||||
if (changed_prefs.onScreen==0)
|
||||
{
|
||||
SDL_ANDROID_SetScreenKeyboardShown(0);
|
||||
SDL_ANDROID_SetScreenKeyboardShown(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
SDL_ANDROID_SetScreenKeyboardShown(1);
|
||||
SDL_Rect pos_textinput, pos_dpad, pos_button1, pos_button2, pos_button3, pos_button4, pos_button5, pos_button6;
|
||||
pos_textinput.x = changed_prefs.pos_x_textinput*(SDL_ListModes(NULL, 0)[0]->w / (float)480);
|
||||
pos_textinput.y = changed_prefs.pos_y_textinput*(SDL_ListModes(NULL, 0)[0]->h / (float)360);
|
||||
pos_textinput.h = SDL_ListModes(NULL, 0)[0]->h / (float)10;
|
||||
pos_textinput.w = pos_textinput.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_TEXT, &pos_textinput);
|
||||
pos_dpad.x = changed_prefs.pos_x_dpad*(SDL_ListModes(NULL, 0)[0]->w / (float)480);
|
||||
pos_dpad.y = changed_prefs.pos_y_dpad*(SDL_ListModes(NULL, 0)[0]->h / (float)360);
|
||||
pos_dpad.h = SDL_ListModes(NULL, 0)[0]->h / (float)2.5;
|
||||
pos_dpad.w = pos_dpad.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD, &pos_dpad);
|
||||
pos_button1.x = changed_prefs.pos_x_button1*(SDL_ListModes(NULL, 0)[0]->w / (float)480);
|
||||
pos_button1.y = changed_prefs.pos_y_button1*(SDL_ListModes(NULL, 0)[0]->h / (float)360);
|
||||
pos_button1.h = SDL_ListModes(NULL, 0)[0]->h / (float)5;
|
||||
pos_button1.w = pos_button1.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_0, &pos_button1);
|
||||
pos_button2.x = changed_prefs.pos_x_button2*(SDL_ListModes(NULL, 0)[0]->w / (float)480);
|
||||
pos_button2.y = changed_prefs.pos_y_button2*(SDL_ListModes(NULL, 0)[0]->h / (float)360);
|
||||
pos_button2.h = SDL_ListModes(NULL, 0)[0]->h / (float)5;
|
||||
pos_button2.w = pos_button2.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_1, &pos_button2);
|
||||
pos_button3.x = changed_prefs.pos_x_button3*(SDL_ListModes(NULL, 0)[0]->w / (float)480);
|
||||
pos_button3.y = changed_prefs.pos_y_button3*(SDL_ListModes(NULL, 0)[0]->h / (float)360);
|
||||
pos_button3.h = SDL_ListModes(NULL, 0)[0]->h / (float)5;
|
||||
pos_button3.w = pos_button3.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_2, &pos_button3);
|
||||
pos_button4.x = changed_prefs.pos_x_button4*(SDL_ListModes(NULL, 0)[0]->w / (float)480);
|
||||
pos_button4.y = changed_prefs.pos_y_button4*(SDL_ListModes(NULL, 0)[0]->h / (float)360);
|
||||
pos_button4.h = SDL_ListModes(NULL, 0)[0]->h / (float)5;
|
||||
pos_button4.w = pos_button4.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_3, &pos_button4);
|
||||
pos_button5.x = changed_prefs.pos_x_button5*(SDL_ListModes(NULL, 0)[0]->w / (float)480);
|
||||
pos_button5.y = changed_prefs.pos_y_button5*(SDL_ListModes(NULL, 0)[0]->h / (float)360);
|
||||
pos_button5.h = SDL_ListModes(NULL, 0)[0]->h / (float)5;
|
||||
pos_button5.w = pos_button5.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_4, &pos_button5);
|
||||
pos_button6.x = changed_prefs.pos_x_button6*(SDL_ListModes(NULL, 0)[0]->w / (float)480);
|
||||
pos_button6.y = changed_prefs.pos_y_button6*(SDL_ListModes(NULL, 0)[0]->h / (float)360);
|
||||
pos_button6.h = SDL_ListModes(NULL, 0)[0]->h / (float)5;
|
||||
pos_button6.w = pos_button6.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_5, &pos_button6);
|
||||
SDL_ANDROID_SetScreenKeyboardShown(1);
|
||||
SDL_Rect pos_textinput, pos_dpad, pos_button1, pos_button2, pos_button3, pos_button4, pos_button5, pos_button6;
|
||||
pos_textinput.x = changed_prefs.pos_x_textinput*(SDL_ListModes(NULL, 0)[0]->w/(float)480);
|
||||
pos_textinput.y = changed_prefs.pos_y_textinput*(SDL_ListModes(NULL, 0)[0]->h/(float)360);
|
||||
pos_textinput.h=SDL_ListModes(NULL, 0)[0]->h / (float)10;
|
||||
pos_textinput.w=pos_textinput.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_TEXT, &pos_textinput);
|
||||
pos_dpad.x = changed_prefs.pos_x_dpad*(SDL_ListModes(NULL, 0)[0]->w/(float)480);
|
||||
pos_dpad.y = changed_prefs.pos_y_dpad*(SDL_ListModes(NULL, 0)[0]->h/(float)360);
|
||||
pos_dpad.h=SDL_ListModes(NULL, 0)[0]->h / (float)2.5;
|
||||
pos_dpad.w=pos_dpad.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD, &pos_dpad);
|
||||
pos_button1.x = changed_prefs.pos_x_button1*(SDL_ListModes(NULL, 0)[0]->w/(float)480);
|
||||
pos_button1.y = changed_prefs.pos_y_button1*(SDL_ListModes(NULL, 0)[0]->h/(float)360);
|
||||
pos_button1.h=SDL_ListModes(NULL, 0)[0]->h / (float)5;
|
||||
pos_button1.w=pos_button1.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_0, &pos_button1);
|
||||
pos_button2.x = changed_prefs.pos_x_button2*(SDL_ListModes(NULL, 0)[0]->w/(float)480);
|
||||
pos_button2.y = changed_prefs.pos_y_button2*(SDL_ListModes(NULL, 0)[0]->h/(float)360);
|
||||
pos_button2.h=SDL_ListModes(NULL, 0)[0]->h / (float)5;
|
||||
pos_button2.w=pos_button2.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_1, &pos_button2);
|
||||
pos_button3.x = changed_prefs.pos_x_button3*(SDL_ListModes(NULL, 0)[0]->w/(float)480);
|
||||
pos_button3.y = changed_prefs.pos_y_button3*(SDL_ListModes(NULL, 0)[0]->h/(float)360);
|
||||
pos_button3.h=SDL_ListModes(NULL, 0)[0]->h / (float)5;
|
||||
pos_button3.w=pos_button3.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_2, &pos_button3);
|
||||
pos_button4.x = changed_prefs.pos_x_button4*(SDL_ListModes(NULL, 0)[0]->w/(float)480);
|
||||
pos_button4.y = changed_prefs.pos_y_button4*(SDL_ListModes(NULL, 0)[0]->h/(float)360);
|
||||
pos_button4.h=SDL_ListModes(NULL, 0)[0]->h / (float)5;
|
||||
pos_button4.w=pos_button4.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_3, &pos_button4);
|
||||
pos_button5.x = changed_prefs.pos_x_button5*(SDL_ListModes(NULL, 0)[0]->w/(float)480);
|
||||
pos_button5.y = changed_prefs.pos_y_button5*(SDL_ListModes(NULL, 0)[0]->h/(float)360);
|
||||
pos_button5.h=SDL_ListModes(NULL, 0)[0]->h / (float)5;
|
||||
pos_button5.w=pos_button5.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_4, &pos_button5);
|
||||
pos_button6.x = changed_prefs.pos_x_button6*(SDL_ListModes(NULL, 0)[0]->w/(float)480);
|
||||
pos_button6.y = changed_prefs.pos_y_button6*(SDL_ListModes(NULL, 0)[0]->h/(float)360);
|
||||
pos_button6.h=SDL_ListModes(NULL, 0)[0]->h / (float)5;
|
||||
pos_button6.w=pos_button6.h;
|
||||
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_5, &pos_button6);
|
||||
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_TEXT, changed_prefs.onScreen_textinput);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD, changed_prefs.onScreen_dpad);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_0, changed_prefs.onScreen_button1);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_1, changed_prefs.onScreen_button2);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_2, changed_prefs.onScreen_button3);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_3, changed_prefs.onScreen_button4);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_4, changed_prefs.onScreen_button5);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_5, changed_prefs.onScreen_button6);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_TEXT, changed_prefs.onScreen_textinput);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD, changed_prefs.onScreen_dpad);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_0, changed_prefs.onScreen_button1);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_1, changed_prefs.onScreen_button2);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_2, changed_prefs.onScreen_button3);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_3, changed_prefs.onScreen_button4);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_4, changed_prefs.onScreen_button5);
|
||||
SDL_ANDROID_SetScreenKeyboardButtonShown(SDL_ANDROID_SCREENKEYBOARD_BUTTON_5, changed_prefs.onScreen_button6);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -9,6 +9,10 @@
|
|||
#include "uae/mman.h"
|
||||
#include <sys/mman.h>
|
||||
|
||||
#ifdef ANDROID
|
||||
#define valloc(x) memalign(getpagesize(), x)
|
||||
#endif
|
||||
|
||||
static uae_u32 natmem_size;
|
||||
uae_u32 max_z3fastmem;
|
||||
|
||||
|
|
|
@ -47,10 +47,9 @@ static NavigationMap navMap[] =
|
|||
#ifdef ANDROIDSDL
|
||||
{ "Savestates", "State0", "State0", "Miscellaneous", "OnScreen" },
|
||||
{ "OnScreen", "OnScrButton3", "OnScrCtrl", "Savestates", "Shutdown" },
|
||||
{ "Shutdown", "Start", "Quit", "OnScreen", "Paths" },
|
||||
{ "Quit", "Shutdown", "Help", "OnScreen", "Paths" },
|
||||
{ "Quit", "Start", "Help", "OnScreen", "Paths" },
|
||||
{ "Help", "Quit", "Start", "OnScreen", "Paths" },
|
||||
{ "Start", "Help", "Shutdown", "OnScreen", "Paths" },
|
||||
{ "Start", "Help", "Quit", "OnScreen", "Paths" },
|
||||
#else
|
||||
{ "Savestates", "State0", "State0", "Miscellaneous", "Shutdown" },
|
||||
{ "Shutdown", "Start", "Quit", "Savestates", "Paths" },
|
||||
|
|
|
@ -447,17 +447,17 @@ bool HelpPanelCPU(std::vector<std::string> &helptext)
|
|||
helptext.emplace_back("addressing (68020). The option \"More compatible\" is only available if 68000 or 68010");
|
||||
helptext.emplace_back("is selected and emulates simple prefetch of the 68000. This may improve compatibility");
|
||||
helptext.emplace_back("in few situations but is not required for most games and demos.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("JIT enables the Just-in-time compiler. This may break compatibility in some games.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back("The available FPU models depending on the selected CPU.");
|
||||
helptext.emplace_back("The option \"More compatible\" activates more accurate rounding and compare of two floats.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("With \"CPU Speed\" you can choose the clock rate of the Amiga.");
|
||||
helptext.emplace_back("Use 7MHz for A500 games or 14MHz for A1200 ones. Fastest uses more emulation time");
|
||||
helptext.emplace_back("for the CPU, and Turbo will give only the minimum time to the chipset, using as");
|
||||
helptext.emplace_back("much as possible for the CPU, usually resulting in dropping frames also.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("In current version, you will not see a difference in the performance for 68020,");
|
||||
helptext.emplace_back("68030 and 68040 CPUs. The CPU cycles for the opcodes are based on 68020. The different");
|
||||
helptext.emplace_back("cycles for 68030 and 68040 may come in a later version.");
|
||||
|
|
|
@ -397,15 +397,15 @@ bool HelpPanelChipset(std::vector<std::string> &helptext)
|
|||
helptext.emplace_back("an entry in \"Extra\", all internal chipset settings will become the required values");
|
||||
helptext.emplace_back("for the specified Amiga model. For some games, you have to activate \"NTSC\"");
|
||||
helptext.emplace_back("(60 Hz instead of 50 Hz) for correct timing.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("When you see some graphic issues in a game, try \"Immediate\" or \"Wait for blit.\"");
|
||||
helptext.emplace_back("for blitter and/or disable \"Fast copper\".");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("\"Fast copper\" uses a prediction algorithm instead of checking the copper state");
|
||||
helptext.emplace_back("on a more regular basis. This may cause issues but brings a big performance improvement.");
|
||||
helptext.emplace_back("The option was removed in WinUAE in an early state, but for most games, it works fine and");
|
||||
helptext.emplace_back("the better performance is helpful for low powered devices.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("For \"Collision Level\", select \"Sprites and Sprites vs. Playfield\" which is fine");
|
||||
helptext.emplace_back("for nearly all games.");
|
||||
return true;
|
||||
|
|
|
@ -363,10 +363,10 @@ bool HelpPanelConfig(std::vector<std::string> &helptext)
|
|||
helptext.clear();
|
||||
helptext.emplace_back("To load a configuration, select the entry in the list and then click on \"Load\".");
|
||||
helptext.emplace_back("If you doubleclick on an entry in the list, the emulation starts with this configuration.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("If you want to create a new configuration, setup all options, enter a new name in");
|
||||
helptext.emplace_back(R"("Name", provide a short description and then click on "Save".)");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("\"Delete\" will delete the selected configuration.");
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -796,17 +796,17 @@ bool HelpPanelCustom(vector<string>& helptext)
|
|||
helptext.clear();
|
||||
helptext.emplace_back("Set up Custom input actions for each Amiga port, such as Keyboard remapping,");
|
||||
helptext.emplace_back("or emulator functions.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("Select the port which you wish to re-map with 'Joystick Port'.");
|
||||
helptext.emplace_back("The currently selected Input Device will then be displayed under 'Input Device'.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("Buttons which are not available on this device (detected with RetroArch ");
|
||||
helptext.emplace_back("configuration files) are unavailable to remap.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("The HotKey button (used for secondary functions) is also unavailable for custom options. ");
|
||||
helptext.emplace_back("The actions performed by pressing the HotKey with other buttons can also be remapped.");
|
||||
helptext.emplace_back("Pre-defined functions such as Quit/Reset/Menu will be displayed as the 'default' option.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("The Function of the individual buttons are selectable via the marked drop-down boxes.");
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -378,20 +378,20 @@ bool HelpPanelDisplay(std::vector<std::string> &helptext)
|
|||
helptext.emplace_back("in Chipset, a value greater than 240 for \"Height\" makes no sense. When the game,");
|
||||
helptext.emplace_back("Demo or Workbench uses HiRes mode and you selected a value for \"Width\" lower than 640,");
|
||||
helptext.emplace_back("you will only see half of the pixels.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
#ifdef USE_SDL2
|
||||
helptext.emplace_back("Select the scaling method for the Amiga screen. The default option \"Auto\", ");
|
||||
helptext.emplace_back("will try to find the best looking scaling method depending on your monitor's resolution. ");
|
||||
helptext.emplace_back("\"Nearest Neighbor\" will give you a more pixelated and crisp image, but it may come with ");
|
||||
helptext.emplace_back("some distortion if your resolution is not an exact multiple. ");
|
||||
helptext.emplace_back("\"Linear\" will give you a smoother scaling but some people might find it a bit blurry.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
#endif
|
||||
helptext.emplace_back("With \"Vert. offset\" you can adjust the position of the first drawn line of the Amiga ");
|
||||
helptext.emplace_back("screen.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("Activate line doubling to remove flicker in interlace modes, or Scanlines for the CRT effect.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("When you activate \"Frameskip\", only every second frame is drawn.");
|
||||
helptext.emplace_back("This will improve performance and some more games are playable.");
|
||||
return true;
|
||||
|
|
|
@ -617,15 +617,15 @@ bool HelpPanelFloppy(std::vector<std::string> &helptext)
|
|||
helptext.emplace_back("on the host filesystem.");
|
||||
helptext.emplace_back("The button \"...\" opens a dialog to select the required");
|
||||
helptext.emplace_back("disk file. With the dropdown control, you can select one of the disks you recently used.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("You can reduce the loading time for lot of games by increasing the floppy drive");
|
||||
helptext.emplace_back("emulation speed. A few games will not load with higher drive speed and you have");
|
||||
helptext.emplace_back("to select 100%.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("\"Save config for disk\" will create a new configuration file with the name of");
|
||||
helptext.emplace_back("the disk in DF0. This configuration will be loaded each time you select the disk");
|
||||
helptext.emplace_back("and have the option \"Load config with same name as disk\" enabled.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back(R"(With the buttons "Create 3.5'' DD disk" and "Create 3.5'' HD disk" you can)");
|
||||
helptext.emplace_back("create a new and empty disk.");
|
||||
return true;
|
||||
|
|
|
@ -657,16 +657,16 @@ bool HelpPanelHD(std::vector<std::string>& helptext)
|
|||
helptext.emplace_back(R"(Use "Add Directory" to add a folder or "Add Hardfile" to add a HDF file as)");
|
||||
helptext.emplace_back("a hard disk. To edit the settings of a HDD, click on \"...\" left to the entry in");
|
||||
helptext.emplace_back("the list. With the red cross, you can delete an entry.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("With \"Create Hardfile\", you can create a new formatted HDF file up to 2 GB.");
|
||||
helptext.emplace_back("For large files, it will take some time to create the new hard disk. You have to");
|
||||
helptext.emplace_back("format the new HDD in the Amiga via the Workbench.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("If \"Master harddrive write protection\" is activated, you can't write to any HD.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back(R"(Activate "CD drive" to emulate CD for CD32. Use "Eject" to remove current CD)");
|
||||
helptext.emplace_back("and click on \"...\" to open a dialog to select the iso/cue file for CD emulation.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("In current version, WAV, MP3 and FLAC is supported for audio tracks.");
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -573,14 +573,14 @@ bool HelpPanelInput(std::vector<std::string> &helptext)
|
|||
{
|
||||
helptext.clear();
|
||||
helptext.emplace_back("You can select the control type for both ports and the rate for autofire.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("Set the emulated mouse speed to .25x, .5x, 1x, 2x and 4x to slow down or ");
|
||||
helptext.emplace_back("speed up the mouse.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("When \"Enable mousehack\" is activated, you can use touch input to set .");
|
||||
helptext.emplace_back("the mouse pointer to the exact position. This works very well on Workbench, ");
|
||||
helptext.emplace_back("but many games using their own mouse handling and will not profit from this mode.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("\"Tap Delay\" specifies the time between taping the screen and an emulated ");
|
||||
helptext.emplace_back("mouse button click.");
|
||||
return true;
|
||||
|
|
|
@ -402,13 +402,13 @@ bool HelpPanelMisc(std::vector<std::string> &helptext)
|
|||
helptext.emplace_back("When you have a HDD in your Amiga emulation, the HD indicator shows read (blue) and write");
|
||||
helptext.emplace_back("(red) access to the HDD. The next values are showing the track number for each disk drive");
|
||||
helptext.emplace_back("and indicates disk access.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("When you deactivate the option \"Show GUI on startup\" and use this configuration ");
|
||||
helptext.emplace_back("by specifying it with the command line parameter \"-config=<file>\", ");
|
||||
helptext.emplace_back("the emulation starts directly without showing the GUI.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("\"bsdsocket.library\" enables network functions (i.e. for web browsers in OS3.9).");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("\"Master floppy drive protection\" will disable all write access to floppy disks.");
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ static gcn::Window *window_pos_button4;
|
|||
static gcn::Window *window_pos_button5;
|
||||
static gcn::Window *window_pos_button6;
|
||||
static gcn::Label* label_setup_onscreen;
|
||||
extern gcn::TextField *txtName;
|
||||
static gcn::TextField *textInput;
|
||||
|
||||
class OnScreenActionListener : public gcn::ActionListener
|
||||
{
|
||||
|
@ -48,74 +48,74 @@ class OnScreenActionListener : public gcn::ActionListener
|
|||
{
|
||||
if (actionEvent.getSource() == checkBox_onscreen_control) {
|
||||
if (checkBox_onscreen_control->isSelected())
|
||||
changed_prefs.onScreen=1;
|
||||
workprefs.onScreen=1;
|
||||
else
|
||||
changed_prefs.onScreen=0;
|
||||
workprefs.onScreen=0;
|
||||
}
|
||||
if (actionEvent.getSource() == checkBox_onscreen_textinput) {
|
||||
if (checkBox_onscreen_textinput->isSelected())
|
||||
changed_prefs.onScreen_textinput=1;
|
||||
workprefs.onScreen_textinput=1;
|
||||
else
|
||||
changed_prefs.onScreen_textinput=0;
|
||||
workprefs.onScreen_textinput=0;
|
||||
}
|
||||
if (actionEvent.getSource() == checkBox_onscreen_dpad) {
|
||||
if (checkBox_onscreen_dpad->isSelected())
|
||||
changed_prefs.onScreen_dpad=1;
|
||||
workprefs.onScreen_dpad=1;
|
||||
else
|
||||
changed_prefs.onScreen_dpad=0;
|
||||
workprefs.onScreen_dpad=0;
|
||||
}
|
||||
if (actionEvent.getSource() == checkBox_onscreen_button1) {
|
||||
if (checkBox_onscreen_button1->isSelected())
|
||||
changed_prefs.onScreen_button1=1;
|
||||
workprefs.onScreen_button1=1;
|
||||
else
|
||||
changed_prefs.onScreen_button1=0;
|
||||
workprefs.onScreen_button1=0;
|
||||
}
|
||||
if (actionEvent.getSource() == checkBox_onscreen_button2) {
|
||||
if (checkBox_onscreen_button2->isSelected())
|
||||
changed_prefs.onScreen_button2=1;
|
||||
workprefs.onScreen_button2=1;
|
||||
else
|
||||
changed_prefs.onScreen_button2=0;
|
||||
workprefs.onScreen_button2=0;
|
||||
}
|
||||
if (actionEvent.getSource() == checkBox_onscreen_button3) {
|
||||
if (checkBox_onscreen_button3->isSelected())
|
||||
changed_prefs.onScreen_button3=1;
|
||||
workprefs.onScreen_button3=1;
|
||||
else
|
||||
changed_prefs.onScreen_button3=0;
|
||||
workprefs.onScreen_button3=0;
|
||||
}
|
||||
if (actionEvent.getSource() == checkBox_onscreen_button4) {
|
||||
if (checkBox_onscreen_button4->isSelected())
|
||||
changed_prefs.onScreen_button4=1;
|
||||
workprefs.onScreen_button4=1;
|
||||
else
|
||||
changed_prefs.onScreen_button4=0;
|
||||
workprefs.onScreen_button4=0;
|
||||
}
|
||||
if (actionEvent.getSource() == checkBox_onscreen_button5) {
|
||||
if (checkBox_onscreen_button5->isSelected())
|
||||
changed_prefs.onScreen_button5=1;
|
||||
workprefs.onScreen_button5=1;
|
||||
else
|
||||
changed_prefs.onScreen_button5=0;
|
||||
workprefs.onScreen_button5=0;
|
||||
}
|
||||
if (actionEvent.getSource() == checkBox_onscreen_button6) {
|
||||
if (checkBox_onscreen_button6->isSelected())
|
||||
changed_prefs.onScreen_button6=1;
|
||||
workprefs.onScreen_button6=1;
|
||||
else
|
||||
changed_prefs.onScreen_button6=0;
|
||||
workprefs.onScreen_button6=0;
|
||||
}
|
||||
if (actionEvent.getSource() == checkBox_onscreen_custompos) {
|
||||
if (checkBox_onscreen_custompos->isSelected())
|
||||
changed_prefs.custom_position=1;
|
||||
workprefs.custom_position=1;
|
||||
else
|
||||
changed_prefs.custom_position=0;
|
||||
workprefs.custom_position=0;
|
||||
}
|
||||
if (actionEvent.getSource() == checkBox_floatingJoystick)
|
||||
if (checkBox_floatingJoystick->isSelected())
|
||||
changed_prefs.floatingJoystick=1;
|
||||
workprefs.floatingJoystick=1;
|
||||
else
|
||||
changed_prefs.floatingJoystick=0;
|
||||
workprefs.floatingJoystick=0;
|
||||
if (actionEvent.getSource() == checkBox_disableMenuVKeyb)
|
||||
if (checkBox_disableMenuVKeyb->isSelected())
|
||||
changed_prefs.disableMenuVKeyb=1;
|
||||
workprefs.disableMenuVKeyb=1;
|
||||
else
|
||||
changed_prefs.disableMenuVKeyb=0;
|
||||
workprefs.disableMenuVKeyb=0;
|
||||
RefreshPanelOnScreen();
|
||||
}
|
||||
};
|
||||
|
@ -137,41 +137,41 @@ class WindowPosButtonActionListener : public gcn::ActionListener
|
|||
public:
|
||||
void action(const gcn::ActionEvent& actionEvent) {
|
||||
if (actionEvent.getSource() == button_onscreen_ok) {
|
||||
changed_prefs.pos_x_textinput = window_pos_textinput->getX();
|
||||
changed_prefs.pos_y_textinput = window_pos_textinput->getY();
|
||||
changed_prefs.pos_x_dpad = window_pos_dpad->getX();
|
||||
changed_prefs.pos_y_dpad = window_pos_dpad->getY();
|
||||
changed_prefs.pos_x_button1 = window_pos_button1->getX();
|
||||
changed_prefs.pos_y_button1 = window_pos_button1->getY();
|
||||
changed_prefs.pos_x_button2 = window_pos_button2->getX();
|
||||
changed_prefs.pos_y_button2 = window_pos_button2->getY();
|
||||
changed_prefs.pos_x_button3 = window_pos_button3->getX();
|
||||
changed_prefs.pos_y_button3 = window_pos_button3->getY();
|
||||
changed_prefs.pos_x_button4 = window_pos_button4->getX();
|
||||
changed_prefs.pos_y_button4 = window_pos_button4->getY();
|
||||
changed_prefs.pos_x_button5 = window_pos_button5->getX();
|
||||
changed_prefs.pos_y_button5 = window_pos_button5->getY();
|
||||
changed_prefs.pos_x_button6 = window_pos_button6->getX();
|
||||
changed_prefs.pos_y_button6 = window_pos_button6->getY();
|
||||
workprefs.pos_x_textinput = window_pos_textinput->getX();
|
||||
workprefs.pos_y_textinput = window_pos_textinput->getY();
|
||||
workprefs.pos_x_dpad = window_pos_dpad->getX();
|
||||
workprefs.pos_y_dpad = window_pos_dpad->getY();
|
||||
workprefs.pos_x_button1 = window_pos_button1->getX();
|
||||
workprefs.pos_y_button1 = window_pos_button1->getY();
|
||||
workprefs.pos_x_button2 = window_pos_button2->getX();
|
||||
workprefs.pos_y_button2 = window_pos_button2->getY();
|
||||
workprefs.pos_x_button3 = window_pos_button3->getX();
|
||||
workprefs.pos_y_button3 = window_pos_button3->getY();
|
||||
workprefs.pos_x_button4 = window_pos_button4->getX();
|
||||
workprefs.pos_y_button4 = window_pos_button4->getY();
|
||||
workprefs.pos_x_button5 = window_pos_button5->getX();
|
||||
workprefs.pos_y_button5 = window_pos_button5->getY();
|
||||
workprefs.pos_x_button6 = window_pos_button6->getX();
|
||||
workprefs.pos_y_button6 = window_pos_button6->getY();
|
||||
window_setup_position->setVisible(false);
|
||||
}
|
||||
if (actionEvent.getSource() == button_onscreen_reset) {
|
||||
changed_prefs.pos_x_textinput = 0;
|
||||
changed_prefs.pos_y_textinput = 0;
|
||||
changed_prefs.pos_x_dpad = 4;
|
||||
changed_prefs.pos_y_dpad = 215;
|
||||
changed_prefs.pos_x_button1 = 430;
|
||||
changed_prefs.pos_y_button1 = 286;
|
||||
changed_prefs.pos_x_button2 = 378;
|
||||
changed_prefs.pos_y_button2 = 286;
|
||||
changed_prefs.pos_x_button3 = 430;
|
||||
changed_prefs.pos_y_button3 = 214;
|
||||
changed_prefs.pos_x_button4 = 378;
|
||||
changed_prefs.pos_y_button4 = 214;
|
||||
changed_prefs.pos_x_button5 = 430;
|
||||
changed_prefs.pos_y_button5 = 142;
|
||||
changed_prefs.pos_x_button6 = 378;
|
||||
changed_prefs.pos_y_button6 = 142;
|
||||
workprefs.pos_x_textinput = 0;
|
||||
workprefs.pos_y_textinput = 0;
|
||||
workprefs.pos_x_dpad = 4;
|
||||
workprefs.pos_y_dpad = 215;
|
||||
workprefs.pos_x_button1 = 430;
|
||||
workprefs.pos_y_button1 = 286;
|
||||
workprefs.pos_x_button2 = 378;
|
||||
workprefs.pos_y_button2 = 286;
|
||||
workprefs.pos_x_button3 = 430;
|
||||
workprefs.pos_y_button3 = 214;
|
||||
workprefs.pos_x_button4 = 378;
|
||||
workprefs.pos_y_button4 = 214;
|
||||
workprefs.pos_x_button5 = 430;
|
||||
workprefs.pos_y_button5 = 142;
|
||||
workprefs.pos_x_button6 = 378;
|
||||
workprefs.pos_y_button6 = 142;
|
||||
window_setup_position->setVisible(false);
|
||||
}
|
||||
}
|
||||
|
@ -247,6 +247,8 @@ void InitPanelOnScreen(const struct _ConfigCategory& category)
|
|||
button_onscreen_reset->addActionListener(windowPosButtonActionListener);
|
||||
label_setup_onscreen = new gcn::Label("Try drag and drop window then press ok");
|
||||
label_setup_onscreen->setPosition(100,140);
|
||||
|
||||
textInput = new gcn::TextField();
|
||||
// label_setup_onscreen->setFont(font14);
|
||||
|
||||
window_pos_textinput = new gcn::Window("Ab");
|
||||
|
@ -345,6 +347,7 @@ void ExitPanelOnScreen(void)
|
|||
delete window_pos_button5;
|
||||
delete window_pos_button6;
|
||||
delete label_setup_onscreen;
|
||||
delete textInput;
|
||||
delete setupPosButtonActionListener;
|
||||
delete windowPosButtonActionListener;
|
||||
delete onScreenActionListener;
|
||||
|
@ -353,82 +356,82 @@ void ExitPanelOnScreen(void)
|
|||
|
||||
void RefreshPanelOnScreen(void)
|
||||
{
|
||||
if (changed_prefs.onScreen==0)
|
||||
if (workprefs.onScreen==0)
|
||||
checkBox_onscreen_control->setSelected(false);
|
||||
else if (changed_prefs.onScreen==1)
|
||||
else if (workprefs.onScreen==1)
|
||||
checkBox_onscreen_control->setSelected(true);
|
||||
if (changed_prefs.onScreen_textinput==0)
|
||||
if (workprefs.onScreen_textinput==0)
|
||||
checkBox_onscreen_textinput->setSelected(false);
|
||||
else if (changed_prefs.onScreen_textinput==1)
|
||||
else if (workprefs.onScreen_textinput==1)
|
||||
checkBox_onscreen_textinput->setSelected(true);
|
||||
if (changed_prefs.onScreen_dpad==0)
|
||||
if (workprefs.onScreen_dpad==0)
|
||||
checkBox_onscreen_dpad->setSelected(false);
|
||||
else if (changed_prefs.onScreen_dpad==1)
|
||||
else if (workprefs.onScreen_dpad==1)
|
||||
checkBox_onscreen_dpad->setSelected(true);
|
||||
if (changed_prefs.onScreen_button1==0)
|
||||
if (workprefs.onScreen_button1==0)
|
||||
checkBox_onscreen_button1->setSelected(false);
|
||||
else if (changed_prefs.onScreen_button1==1)
|
||||
else if (workprefs.onScreen_button1==1)
|
||||
checkBox_onscreen_button1->setSelected(true);
|
||||
if (changed_prefs.onScreen_button2==0)
|
||||
if (workprefs.onScreen_button2==0)
|
||||
checkBox_onscreen_button2->setSelected(false);
|
||||
else if (changed_prefs.onScreen_button2==1)
|
||||
else if (workprefs.onScreen_button2==1)
|
||||
checkBox_onscreen_button2->setSelected(true);
|
||||
if (changed_prefs.onScreen_button3==0)
|
||||
if (workprefs.onScreen_button3==0)
|
||||
checkBox_onscreen_button3->setSelected(false);
|
||||
else if (changed_prefs.onScreen_button3==1)
|
||||
else if (workprefs.onScreen_button3==1)
|
||||
checkBox_onscreen_button3->setSelected(true);
|
||||
if (changed_prefs.onScreen_button4==0)
|
||||
if (workprefs.onScreen_button4==0)
|
||||
checkBox_onscreen_button4->setSelected(false);
|
||||
else if (changed_prefs.onScreen_button4==1)
|
||||
else if (workprefs.onScreen_button4==1)
|
||||
checkBox_onscreen_button4->setSelected(true);
|
||||
if (changed_prefs.onScreen_button5==0)
|
||||
if (workprefs.onScreen_button5==0)
|
||||
checkBox_onscreen_button5->setSelected(false);
|
||||
else if (changed_prefs.onScreen_button5==1)
|
||||
else if (workprefs.onScreen_button5==1)
|
||||
checkBox_onscreen_button5->setSelected(true);
|
||||
if (changed_prefs.onScreen_button6==0)
|
||||
if (workprefs.onScreen_button6==0)
|
||||
checkBox_onscreen_button6->setSelected(false);
|
||||
else if (changed_prefs.onScreen_button6==1)
|
||||
else if (workprefs.onScreen_button6==1)
|
||||
checkBox_onscreen_button6->setSelected(true);
|
||||
if (changed_prefs.custom_position==0)
|
||||
if (workprefs.custom_position==0)
|
||||
checkBox_onscreen_custompos->setSelected(false);
|
||||
else if (changed_prefs.custom_position==1)
|
||||
else if (workprefs.custom_position==1)
|
||||
checkBox_onscreen_custompos->setSelected(true);
|
||||
if (changed_prefs.floatingJoystick)
|
||||
if (workprefs.floatingJoystick)
|
||||
checkBox_floatingJoystick->setSelected(true);
|
||||
else
|
||||
checkBox_floatingJoystick->setSelected(false);
|
||||
if (changed_prefs.disableMenuVKeyb)
|
||||
if (workprefs.disableMenuVKeyb)
|
||||
checkBox_disableMenuVKeyb->setSelected(true);
|
||||
else
|
||||
checkBox_disableMenuVKeyb->setSelected(false);
|
||||
|
||||
txtName->disableVirtualKeyboard(changed_prefs.disableMenuVKeyb);
|
||||
textInput->disableVirtualKeyboard(workprefs.disableMenuVKeyb);
|
||||
|
||||
window_pos_textinput->setX(changed_prefs.pos_x_textinput);
|
||||
window_pos_textinput->setY(changed_prefs.pos_y_textinput);
|
||||
window_pos_textinput->setVisible(changed_prefs.onScreen_textinput);
|
||||
window_pos_dpad->setX(changed_prefs.pos_x_dpad);
|
||||
window_pos_dpad->setY(changed_prefs.pos_y_dpad);
|
||||
window_pos_dpad->setVisible(changed_prefs.onScreen_dpad);
|
||||
window_pos_button1->setX(changed_prefs.pos_x_button1);
|
||||
window_pos_button1->setY(changed_prefs.pos_y_button1);
|
||||
window_pos_button1->setVisible(changed_prefs.onScreen_button1);
|
||||
window_pos_button2->setX(changed_prefs.pos_x_button2);
|
||||
window_pos_button2->setY(changed_prefs.pos_y_button2);
|
||||
window_pos_button2->setVisible(changed_prefs.onScreen_button2);
|
||||
window_pos_button3->setX(changed_prefs.pos_x_button3);
|
||||
window_pos_button3->setY(changed_prefs.pos_y_button3);
|
||||
window_pos_button3->setVisible(changed_prefs.onScreen_button3);
|
||||
window_pos_button4->setX(changed_prefs.pos_x_button4);
|
||||
window_pos_button4->setY(changed_prefs.pos_y_button4);
|
||||
window_pos_button4->setVisible(changed_prefs.onScreen_button4);
|
||||
window_pos_button5->setX(changed_prefs.pos_x_button5);
|
||||
window_pos_button5->setY(changed_prefs.pos_y_button5);
|
||||
window_pos_button5->setVisible(changed_prefs.onScreen_button5);
|
||||
window_pos_button6->setX(changed_prefs.pos_x_button6);
|
||||
window_pos_button6->setY(changed_prefs.pos_y_button6);
|
||||
window_pos_button6->setVisible(changed_prefs.onScreen_button6);
|
||||
button_onscreen_pos->setVisible(changed_prefs.custom_position);
|
||||
window_pos_textinput->setX(workprefs.pos_x_textinput);
|
||||
window_pos_textinput->setY(workprefs.pos_y_textinput);
|
||||
window_pos_textinput->setVisible(workprefs.onScreen_textinput);
|
||||
window_pos_dpad->setX(workprefs.pos_x_dpad);
|
||||
window_pos_dpad->setY(workprefs.pos_y_dpad);
|
||||
window_pos_dpad->setVisible(workprefs.onScreen_dpad);
|
||||
window_pos_button1->setX(workprefs.pos_x_button1);
|
||||
window_pos_button1->setY(workprefs.pos_y_button1);
|
||||
window_pos_button1->setVisible(workprefs.onScreen_button1);
|
||||
window_pos_button2->setX(workprefs.pos_x_button2);
|
||||
window_pos_button2->setY(workprefs.pos_y_button2);
|
||||
window_pos_button2->setVisible(workprefs.onScreen_button2);
|
||||
window_pos_button3->setX(workprefs.pos_x_button3);
|
||||
window_pos_button3->setY(workprefs.pos_y_button3);
|
||||
window_pos_button3->setVisible(workprefs.onScreen_button3);
|
||||
window_pos_button4->setX(workprefs.pos_x_button4);
|
||||
window_pos_button4->setY(workprefs.pos_y_button4);
|
||||
window_pos_button4->setVisible(workprefs.onScreen_button4);
|
||||
window_pos_button5->setX(workprefs.pos_x_button5);
|
||||
window_pos_button5->setY(workprefs.pos_y_button5);
|
||||
window_pos_button5->setVisible(workprefs.onScreen_button5);
|
||||
window_pos_button6->setX(workprefs.pos_x_button6);
|
||||
window_pos_button6->setY(workprefs.pos_y_button6);
|
||||
window_pos_button6->setVisible(workprefs.onScreen_button6);
|
||||
button_onscreen_pos->setVisible(workprefs.custom_position);
|
||||
}
|
||||
|
||||
bool HelpPanelOnScreen(std::vector<std::string> &helptext)
|
||||
|
|
|
@ -430,7 +430,7 @@ bool HelpPanelPaths(std::vector<std::string> &helptext)
|
|||
helptext.emplace_back("Specify the location of your kickstart roms and the folders where the configurations");
|
||||
helptext.emplace_back("and controller files should be stored. With the button \"...\" you can open a dialog");
|
||||
helptext.emplace_back("to choose the folder.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("After changing the location of the kickstart roms, click on \"Rescan\" to refresh");
|
||||
helptext.emplace_back("the list of the available ROMs.");
|
||||
return true;
|
||||
|
|
|
@ -68,6 +68,9 @@ static struct amigamodels amodels[] = {
|
|||
"Basic non-expanded configuration",
|
||||
"2 MB Chip RAM expanded configuration",
|
||||
"4 MB Fast RAM expanded configuration",
|
||||
#ifdef ANDROID
|
||||
" ", " ", " ",
|
||||
#endif
|
||||
"\0"
|
||||
}
|
||||
},
|
||||
|
@ -76,6 +79,9 @@ static struct amigamodels amodels[] = {
|
|||
"Basic non-expanded configuration",
|
||||
"2 MB Chip RAM expanded configuration",
|
||||
"4 MB Fast RAM expanded configuration",
|
||||
#ifdef ANDROID
|
||||
" ", " ", " ",
|
||||
#endif
|
||||
"\0"
|
||||
}
|
||||
},
|
||||
|
@ -89,6 +95,9 @@ static struct amigamodels amodels[] = {
|
|||
4, "Amiga 1200", {
|
||||
"Basic non-expanded configuration",
|
||||
"4 MB Fast RAM expanded configuration",
|
||||
#ifdef ANDROID
|
||||
" ", " ", " ", " ",
|
||||
#endif
|
||||
"\0"
|
||||
}
|
||||
},
|
||||
|
@ -104,6 +113,9 @@ static struct amigamodels amodels[] = {
|
|||
1, "Amiga 4000", {
|
||||
"68030, 3.1 ROM, 2MB Chip + 8MB Fast",
|
||||
"68040, 3.1 ROM, 2MB Chip + 8MB Fast",
|
||||
#ifdef ANDROID
|
||||
" ", " ", " ", " ",
|
||||
#endif
|
||||
"\0"
|
||||
}
|
||||
},
|
||||
|
@ -118,6 +130,9 @@ static struct amigamodels amodels[] = {
|
|||
3, "CD32", {
|
||||
"CD32",
|
||||
"CD32 with Full Motion Video cartridge",
|
||||
#ifdef ANDROID
|
||||
" ", " ", " ", " ",
|
||||
#endif
|
||||
"\0"
|
||||
}
|
||||
},
|
||||
|
@ -938,10 +953,10 @@ bool HelpPanelQuickstart(vector<string>& helptext)
|
|||
helptext.clear();
|
||||
helptext.emplace_back("Simplified start of emulation by just selecting the Amiga model and the disk/CD");
|
||||
helptext.emplace_back("you want to use.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("After selecting the Amiga model, you can choose from a small list of standard");
|
||||
helptext.emplace_back("configurations for this model to start with.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("When you activate \"Start in Quickstart mode\", the next time you run the emulator,");
|
||||
helptext.emplace_back("it will start with the QuickStart panel. Otherwise you start in configurations panel.");
|
||||
return true;
|
||||
|
|
|
@ -354,7 +354,7 @@ bool HelpPanelRAM(vector<string>& helptext)
|
|||
{
|
||||
helptext.clear();
|
||||
helptext.emplace_back("Select the amount of RAM for each type you want to emulate in your Amiga.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("\"Slow\" is the simple memory extension of an Amiga 500.");
|
||||
helptext.emplace_back("\"Z2 Fast\" is real fast memory in 24 bit address space.");
|
||||
helptext.emplace_back("\"Z3 Fast\" is real fast memory in 32 bit address space and only available if");
|
||||
|
@ -362,7 +362,7 @@ bool HelpPanelRAM(vector<string>& helptext)
|
|||
helptext.emplace_back("\"RTG board\" is the graphics memory used by Picasso96 and only available if");
|
||||
helptext.emplace_back("a 32 bit CPU is selected. If you select some memory for this type,");
|
||||
helptext.emplace_back("the Z3 RTG board will be activated.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("A4000 motherboard and processor board memory is only detected by the Amiga if ");
|
||||
helptext.emplace_back("you choose the correct Kickstart ROM (A4000).");
|
||||
return true;
|
||||
|
|
|
@ -69,7 +69,7 @@ public:
|
|||
auto currIdx = -1;
|
||||
if (ROMType & (ROMTYPE_ALL_EXT | ROMTYPE_ALL_CART))
|
||||
{
|
||||
roms.push_back("");
|
||||
roms.push_back(" ");
|
||||
idxToAvailableROMs.push_back(-1);
|
||||
currIdx = 0;
|
||||
}
|
||||
|
@ -115,7 +115,7 @@ public:
|
|||
if (rom != nullptr)
|
||||
strncpy(workprefs.romextfile, rom->Path, sizeof(workprefs.romextfile));
|
||||
else
|
||||
strncpy(workprefs.romextfile, "", sizeof(workprefs.romextfile));
|
||||
strncpy(workprefs.romextfile, " ", sizeof(workprefs.romextfile));
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -311,9 +311,9 @@ bool HelpPanelROM(std::vector<std::string> &helptext)
|
|||
{
|
||||
helptext.clear();
|
||||
helptext.emplace_back("Select the required kickstart ROM for the Amiga you want to emulate in \"Main ROM File\".");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("In \"Extended ROM File\", you can only select the required ROM for CD32 emulation.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("In \"Cartridge ROM File\", you can select the CD32 FMV module to activate video");
|
||||
helptext.emplace_back("playback in CD32. There are also some Action Replay and Freezer cards and the built-in");
|
||||
helptext.emplace_back("HRTMon available.");
|
||||
|
|
|
@ -262,11 +262,11 @@ bool HelpPanelSavestate(std::vector<std::string> &helptext)
|
|||
helptext.clear();
|
||||
helptext.emplace_back("Savestates are stored with the name of the disk in drive DF0 attached");
|
||||
helptext.emplace_back("with the selected number.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("When you hold left shoulder button and press 'l' during emulation, ");
|
||||
helptext.emplace_back("the state of the last active number will be loaded. Hold left shoulder ");
|
||||
helptext.emplace_back("button and press 's' to save the current state in the last active slot.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("Note: Savestates will not work with HDDs.");
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -473,13 +473,13 @@ bool HelpPanelSound(std::vector<std::string> &helptext)
|
|||
helptext.clear();
|
||||
helptext.emplace_back("You can turn on sound emulation with different levels of accuracy and");
|
||||
helptext.emplace_back("choose between Mono and Stereo.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("The different types of interpolation have different impact on performance. ");
|
||||
helptext.emplace_back("Play with the settings to find the type you like most. You may need headphones .");
|
||||
helptext.emplace_back("to really hear the difference between the interpolation types.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back("With \"Filter\", you can select the type of the Amiga audio filter.");
|
||||
helptext.emplace_back("");
|
||||
helptext.emplace_back(" ");
|
||||
helptext.emplace_back(R"(With "Stereo separation" and "Stereo delay", you can adjust how the left )");
|
||||
helptext.emplace_back("and right audio channels of the Amiga are mixed to the left and right channels ");
|
||||
helptext.emplace_back("of your device. A value of 70% for separation and no delay is a good start.");
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#ifdef ANDROIDSDL
|
||||
#include "androidsdl_event.h"
|
||||
#endif
|
||||
|
||||
#define DIALOG_WIDTH 520
|
||||
#define DIALOG_HEIGHT 400
|
||||
|
||||
|
@ -190,6 +191,19 @@ public:
|
|||
|
||||
static SelectFileActionListener* selectFileActionListener;
|
||||
|
||||
#ifdef ANDROID
|
||||
class EditFilePathActionListener : public gcn::ActionListener
|
||||
{
|
||||
public:
|
||||
void action(const gcn::ActionEvent& actionEvent)
|
||||
{
|
||||
char tmp[MAX_PATH];
|
||||
strncpy(tmp, txtCurrent->getText().c_str(), MAX_PATH - 1);
|
||||
checkfoldername(tmp);
|
||||
}
|
||||
};
|
||||
static EditFilePathActionListener* editFilePathActionListener;
|
||||
#endif
|
||||
|
||||
static void InitSelectFile(const char* title)
|
||||
{
|
||||
|
@ -219,7 +233,13 @@ static void InitSelectFile(const char* title)
|
|||
txtCurrent = new gcn::TextField();
|
||||
txtCurrent->setSize(DIALOG_WIDTH - 2 * DISTANCE_BORDER - 4, TEXTFIELD_HEIGHT);
|
||||
txtCurrent->setPosition(DISTANCE_BORDER, 10);
|
||||
txtCurrent->setEnabled(false);
|
||||
#ifdef ANDROID
|
||||
txtCurrent->setEnabled(true);
|
||||
editFilePathActionListener = new EditFilePathActionListener();
|
||||
txtCurrent->addActionListener(editFilePathActionListener);
|
||||
#else
|
||||
txtCurrent->setEnabled(false);
|
||||
#endif
|
||||
|
||||
selectFileActionListener = new SelectFileActionListener();
|
||||
fileList = new SelectFileListModel(".");
|
||||
|
@ -238,7 +258,11 @@ static void InitSelectFile(const char* title)
|
|||
#endif
|
||||
scrAreaFiles->setPosition(DISTANCE_BORDER, 10 + TEXTFIELD_HEIGHT + 10);
|
||||
scrAreaFiles->setSize(DIALOG_WIDTH - 2 * DISTANCE_BORDER - 4, 272);
|
||||
scrAreaFiles->setScrollbarWidth(20);
|
||||
#ifdef ANDROID
|
||||
scrAreaFiles->setScrollbarWidth(30);
|
||||
#else
|
||||
scrAreaFiles->setScrollbarWidth(20);
|
||||
#endif
|
||||
scrAreaFiles->setBaseColor(gui_baseCol);
|
||||
|
||||
if (createNew)
|
||||
|
@ -283,6 +307,9 @@ static void ExitSelectFile()
|
|||
delete lstFiles;
|
||||
delete scrAreaFiles;
|
||||
delete selectFileActionListener;
|
||||
#ifdef ANDROID
|
||||
delete editFilePathActionListener;
|
||||
#endif
|
||||
delete fileList;
|
||||
if (createNew)
|
||||
{
|
||||
|
|
|
@ -133,6 +133,19 @@ public:
|
|||
|
||||
static ListBoxActionListener* listBoxActionListener;
|
||||
|
||||
#ifdef ANDROID
|
||||
class EditDirPathActionListener : public gcn::ActionListener
|
||||
{
|
||||
public:
|
||||
void action(const gcn::ActionEvent& actionEvent)
|
||||
{
|
||||
char tmp[MAX_PATH];
|
||||
strncpy(tmp, txtCurrent->getText().c_str(), MAX_PATH - 1);
|
||||
checkfoldername(tmp);
|
||||
}
|
||||
};
|
||||
static EditDirPathActionListener* editDirPathActionListener;
|
||||
#endif
|
||||
|
||||
static void InitSelectFolder(const char* title)
|
||||
{
|
||||
|
@ -162,7 +175,13 @@ static void InitSelectFolder(const char* title)
|
|||
txtCurrent = new gcn::TextField();
|
||||
txtCurrent->setSize(DIALOG_WIDTH - 2 * DISTANCE_BORDER - 4, TEXTFIELD_HEIGHT);
|
||||
txtCurrent->setPosition(DISTANCE_BORDER, 10);
|
||||
txtCurrent->setEnabled(false);
|
||||
#ifdef ANDROID
|
||||
txtCurrent->setEnabled(true);
|
||||
editDirPathActionListener = new EditDirPathActionListener();
|
||||
txtCurrent->addActionListener(editDirPathActionListener);
|
||||
#else
|
||||
txtCurrent->setEnabled(false);
|
||||
#endif
|
||||
|
||||
listBoxActionListener = new ListBoxActionListener();
|
||||
|
||||
|
@ -180,7 +199,11 @@ static void InitSelectFolder(const char* title)
|
|||
#endif
|
||||
scrAreaFolders->setPosition(DISTANCE_BORDER, 10 + TEXTFIELD_HEIGHT + 10);
|
||||
scrAreaFolders->setSize(DIALOG_WIDTH - 2 * DISTANCE_BORDER - 4, 272);
|
||||
scrAreaFolders->setScrollbarWidth(20);
|
||||
#ifdef ANDROID
|
||||
scrAreaFolders->setScrollbarWidth(30);
|
||||
#else
|
||||
scrAreaFolders->setScrollbarWidth(20);
|
||||
#endif
|
||||
scrAreaFolders->setBaseColor(gui_baseCol);
|
||||
|
||||
wndSelectFolder->add(cmdOK);
|
||||
|
|
|
@ -53,10 +53,6 @@ public:
|
|||
|
||||
static ShowMessageActionListener* showMessageActionListener;
|
||||
|
||||
#ifdef ANDROIDSDL
|
||||
#include "androidsdl_event.h"
|
||||
#endif
|
||||
|
||||
static void InitShowMessage()
|
||||
{
|
||||
wndShowMessage = new gcn::Window("Message");
|
||||
|
|
|
@ -18,7 +18,11 @@ namespace gcn
|
|||
ListBox* listBox)
|
||||
: DropDown(listModel, scrollArea, listBox)
|
||||
{
|
||||
mScrollArea->setScrollbarWidth(20);
|
||||
#ifdef ANDROID
|
||||
mScrollArea->setScrollbarWidth(30);
|
||||
#else
|
||||
mScrollArea->setScrollbarWidth(20);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
#include <string.h>
|
||||
|
||||
#ifdef USE_SDL1
|
||||
#include <guichan/sdl.hpp>
|
||||
#elif USE_SDL2
|
||||
|
|
|
@ -1006,7 +1006,9 @@ namespace widgets
|
|||
//--------------------------------------------------
|
||||
// Place everything on main form
|
||||
//--------------------------------------------------
|
||||
#ifndef ANDROIDSDL
|
||||
gui_top->add(cmdShutdown, DISTANCE_BORDER, GUI_HEIGHT - DISTANCE_BORDER - BUTTON_HEIGHT);
|
||||
#endif
|
||||
gui_top->add(cmdQuit, DISTANCE_BORDER + BUTTON_WIDTH + DISTANCE_NEXT_X, GUI_HEIGHT - DISTANCE_BORDER - BUTTON_HEIGHT);
|
||||
gui_top->add(cmdRestart, DISTANCE_BORDER + 2 * BUTTON_WIDTH + 2 * DISTANCE_NEXT_X, GUI_HEIGHT - DISTANCE_BORDER - BUTTON_HEIGHT);
|
||||
gui_top->add(cmdHelp, DISTANCE_BORDER + 3 * BUTTON_WIDTH + 3 * DISTANCE_NEXT_X, GUI_HEIGHT - DISTANCE_BORDER - BUTTON_HEIGHT);
|
||||
|
|
|
@ -39,7 +39,13 @@
|
|||
#include <asm/sigcontext.h>
|
||||
#include <signal.h>
|
||||
#include <dlfcn.h>
|
||||
#ifndef ANDROID
|
||||
#include <execinfo.h>
|
||||
#else
|
||||
int backtrace(void**,int){ return 0; }
|
||||
char** backtrace_symbols(void* const*,int){return NULL; }
|
||||
void backtrace_symbols_fd(void* const*,int,int){}
|
||||
#endif
|
||||
#include <SDL.h>
|
||||
|
||||
#ifdef JIT
|
||||
|
|
|
@ -570,27 +570,6 @@ typedef char TCHAR;
|
|||
#define _wunlink(x) unlink(x)
|
||||
#define _istalnum(x) isalnum(x)
|
||||
|
||||
#ifdef ANDROID
|
||||
#define fmodl(x,y) fmod(x,y)
|
||||
#define remainderl(x,y) remainder(x,y)
|
||||
#define sinhl(x) sinh(x)
|
||||
#define sqrtl(x) sqrt(x)
|
||||
#define log1pl(x) log1p(x)
|
||||
#define expm1l(x) expm1(x)
|
||||
#define tanhl(x) tanh(x)
|
||||
#define atanl(x) atan(x)
|
||||
#define atanhl(x) atanh(x)
|
||||
#define sinl(x) sin(x)
|
||||
#define asinl(x) asin(x)
|
||||
#define tanl(x) tan(x)
|
||||
#define expl(x) exp(x)
|
||||
#define powl(x,y) pow(x,y)
|
||||
#define logl(x) log(x)
|
||||
#define log10l(x) log10(x)
|
||||
#if defined(ANDROID) && !defined(CPU_AARCH64)
|
||||
#define log2l(x) (log(x)/log(2))
|
||||
#define lrintl(x) lrint(x)
|
||||
#define rintl(x) rint(x)
|
||||
#define coshl(x) cosh(x)
|
||||
#define acosl(x) acos(x)
|
||||
#define cosl(x) cos(x)
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue