Commit Graph

9568 Commits

Author SHA1 Message Date
Miro Kropacek
360ddb45e5 BACKENDS: ATARI: Silence remaining samples on playback 2023-10-25 22:23:25 +02:00
Lars Sundström
eb601e86bb IOS7: Fix showing/hiding of inputAccessoryView
There is an option to show/hide the inputAccessoryView contataing
special buttons not present on the iOS system keyboard, nor the
Apple iPad Magic keyboard.

Make sure the parent frame size is resized properly depending on
the option setting and if HW keyboards are connected.
2023-10-25 22:05:04 +02:00
Lars Sundström
01106f01d6 IOS7: Enable HW keyboards without first enabling the soft keyboard
The soft keyboard is enabled by calling showKeyboard which will set
the inputView, which is a UITextField, to become the first responder.
This will trigger the software keyboard to pop up. The showKeyboard
function is either called by the GUI when clicking into an editable
box, by the engine when keyboard input is required or when the user
forces it to be shown by a gesture or pressing the on-screen control
button..

The keyboard handling above suits the software keyboard but no HW
keyboards since if the inputView is not the first responder no key
presses are registered. One can expect that key button presses on a
HW keyboard should be registered without enabling the soft keyboard.

Implement handling to enable the inputView when HW keyboards are
connected.
2023-10-25 22:05:04 +02:00
Lars Sundström
4dff5ab486 IOS7: Don't account suspended time in getMillis()
It was reported that in some games, e.g. COMI, if suspending the iOS
application by putting it to background and then some time later
resuming it again the music doesn't start playing. It was reproduced
in The Dig and most probably Full Throttle was affected.

The time it took for the music to play again after resuming turned
out to be related to the time the app was in background. The longer
the app was in background, the longer it took for the music to start
playing again.

The legacy implementation of getMillis in the iOS7 backend accounted
the time the application was suspended. The time was accumulated
every time the app moved to background and it was never reset.
The getMillis function used the accumulated value and substracted it
from the time difference from the current time.

This seems to have caused problems with the timer handler, causing
slots to not be executed in correct time. The Android backend do not
account for the time in background.
2023-10-25 22:05:04 +02:00
Little Cat
f49e1de5c2 BACKENDS: CURL: Raise debug log level to 3. 2023-10-24 22:20:22 -03:00
Kurian Jojo
595a3d7724 GUI: Use Keymapper for EditableWidget 2023-10-24 19:01:12 +02:00
Giovanni Cascione
d836ec97ed LIBRETRO: remove _t suffix from int types 2023-10-21 23:42:48 +02:00
Simon Delamarre
9785388f8e GRAPHICS: Fix an incorrect bpp in SurfaceSdl when applying cursor mask
Source bpp is wrongly taken instead of destination bpp, the issue is visible only if the source bpp is != 4.
2023-10-14 10:56:31 +03:00
Eugene Sandulenko
af89b0dc2c
SDL: Switch Keyboard shortcuts helptext to Markdown tables 2023-10-14 01:54:05 +02:00
Lars Sundström
7ad9e9c8e2 IOS7: Defer screen edge system gestures on orientation changes
The system gestures on screen edges took precedence over the tap
gestures again after screen rotations.
Call function setNeedsUpdateOfScreenEdgesDeferringSystemGestures
on orientation changes to notify the system that it needs to read
the edges from the view controller’s
preferredScreenEdgesDeferringSystemGestures property again.

Defer system gestures on all edges since the top changes when
rotating the device.
2023-10-13 19:25:01 +02:00
Giovanni Cascione
c2f97be777 LIBRETRO: add terminator element to retro_input_descriptor array 2023-10-13 14:02:50 +02:00
Giovanni Cascione
1369aaa3b4 LIBRETRO: BUILD: set -O1 for ios and osx builds 2023-10-13 14:02:13 +02:00
Lars Sundström
bf724a36f6 IOS7: Defer system gestures on edges
The tap gestures were cancelled due to system gestures taking over
when tapping on the screen edges. This made it hard to click on
verbs in games or buttons in launcher when in "Direct mouse mode".

There is an option to defer the system gestures on selcted edges.
This will make tap gestures to be recognised also on screen edges.
Also it won't interfere with the gesture to close the application
on devices lacking home button.
2023-10-13 14:46:48 +03:00
Lars Sundström
a7bf2bf5a7 IOS7: Reset screen size properly when HW keyboard is connected
The accessory view can be configured to be shown or not. When it is
configured to be shown the screen size has to be adjusted according
to the height of the accessory view, also in the case when a HW
keyboard is connected.

It was noted that the screen size was not properly restored when
disabling the keyboard input. The screen size was only adjusted when
the keyboard input became enabled. The reason for that was that when
disabling the keyboard input the accessory also became hidden. So
the screen size was not updated.

Make sure to always reset the screen size when the accessory view
is configured to be visible.
2023-10-13 14:46:48 +03:00
Lars Sundström
283fb6760a IOS7: Only allow touches on screen for new touch gestures
Connected hardware devices such as mice and touchpads also generates
gesture events. If holding down a mouse button that is considered as
a long press gesture, but it's also a mouse button event.
These events are interfering with each others and cancels e.g. long
press gestures.

Make sure the tap and long press gestures only allows to be triggered
by direct touches on screen.
2023-10-13 14:46:48 +03:00
Lars Sundström
473400071c IOS7: Remove "ClickAndDragMode" from widget layout
The "ClickAndDragMode" option is removed. The widget layout was not
removed when the option was removed. Remove it.
2023-10-11 23:14:37 +02:00
Lars Sundström
e834bf859b IOS7: Remove old help documentation
The help documentation is moved from the backend tab to the main
launcher screen.
2023-10-11 23:14:37 +02:00
Lars Sundström
bc07130dec IOS7: Add help sections for the iOS port
Add help sections to describe the different touch modes, touch
actions, how to add a game etc.

A temporary version for tvOS with no images is provided as well.
2023-10-11 23:14:37 +02:00
Lars Sundström
c113dfa993 IOS7: Fix AppleTV OS build errors and warnings
The tap gestures for right/left click in the iOS port was not
protected by the TARGET_OS_IOS macro definition in the touchesMoved
method which is called when a touch is moved.
Touches are used in tvOS when controlling the mouse pointer using
the touch area on the Apple remote controller.

Fix some compiler warnings about unused variables and functions in
the tvOS port.
2023-10-11 21:33:32 +02:00
Eugene Sandulenko
6b99f6a5bb
SDL: Revert accidental change 2023-10-11 11:26:09 +02:00
Lars Sundström
8f407b7a06 IOS7: Fix long press on touch mode button to show keyboard
After adding the other long-press gestures it was hard to trigger
the gesture to show the keyboard by pressing the touch mode button
on the on-screen controls.

Changing the minimum time to trigger from 1 second to default 0.5
seconds fixed that. Add the one-touch-only requirement as well.
2023-10-11 06:28:03 +02:00
Lars Sundström
8466e036b5 IOS7: Update touch mode when swiping two fingers right
The ability to change touch mode between touchpad emulation and
"direct" mouse mode is kept. Inform the user about the updated
mode change and update the on-screen control button to reflect
the new mode which is useful when the on-screen controls are
disabled.
2023-10-11 06:28:03 +02:00
Lars Sundström
a490768622 IOS7: Refactor touch event functions
Remove the deprecated events and their corresponding functions.
2023-10-11 06:28:03 +02:00
Lars Sundström
cc499d560e IOS7: Only handle one touch for mouse movements
The callback functions touchesBegan, touchesMoved and touchesEnded
are from now only used for mouse pointer movements. Only one touch
is then required to be tracked.

Disable multi-touch in view to accomplish this. The setting does
not affect the gesture recognizers attached to the view, only the
touchesBegan, touchesMoved and touchesEnded callbacks are affected
that only the actions for the first touch in view are sent.
2023-10-11 06:28:03 +02:00
Lars Sundström
b2ba581917 IOS7: Remove old touch to mouse button translations
Remove the old translations from touch events to mouse button events.
These have been replaced with UIGestures.
2023-10-11 06:28:03 +02:00
Lars Sundström
4dae507f14 IOS7: Add UIGestures for left and right mouse clicks
On a touch based device the touches made must be translated to
different mouse events. For example when a touch starts and is
moved that should translate to a mouse pointer movement. A quick
tap should be translated to a mouse button click while holding a
touch for a longer time without movement should be translated to
that the mouse button is kept pressed.

Add UIGestures to replace the current mouse button handling, all
done using the callback functions touchesBegan, touchesMoved and
touchesEnded.

A tap gesture with one finger is a left mouse click

A tap gesture with two fingers is a right mouse click

A long press gesture with one finger is holding the left mouse
button down until the press is released. This is accomplished by
sending an button down event when the gesture is recognized and
changes state to UIGestureRecognizerStateBegan.
A button up event is sent when the same gesture changes state to
UIGestureRecognizerStateEnded.

A long press with two fingers is as above but for the right mouse
button.

This commit adds the gestures and their actions. The current
mouse button handling is removed in upcomming commit.
2023-10-11 06:28:03 +02:00
Eugene Sandulenko
17a480f1c5
NANCY: Fix potentially uninitialized variable 2023-10-10 23:55:06 +02:00
Lars Sundström
857b7553aa IOS7: Don't suspend the application in iOS when pressing menu
The Apple guidelines for Apple TV tells that when pressing the menu
button from the root view the user shall be brought to the "Home"
screen, suspending the app. Prevent this to be done in iOS.
2023-10-10 20:55:48 +02:00
Lars Sundström
a2de9b0b4e IOS7: Handle HW keyboards better when using "Stage Manager"
When having a hardware keyboard connected to the iOS device the
software keyboard is not shown. However when using stage manager
the notification that the keyboard is shown is still triggered.
This results in that the game screen is resized even though no
keyboard is visible in the area below.

This is some kind of workaround for that where a check for any
connected hardware keyboard is made. If a keyboard is connected
then the screen is not resized, except if the accessory bar should
be shown. In that case the screen is resized only for the height
of the accessory bar.
2023-10-10 20:55:48 +02:00
Lars Sundström
40f382cace IOS7: Make it possible to toggle alphabetical <-> numpad keyboard
Some games have some actions mapped to the numeric keyboard, e.g.
Indiana Jones and the last crusade fight scenes.
The alphabetical keyboard doesn't have the numeric button row so
it's a bit tricky to play these scenes without holding the "number
button switch" at the same time you need to press the correct number
button being showed.

Make it possible to switch between an alphabetical keyboard layout
to a numpad layout by adding a button to the toolbar.
2023-10-10 20:55:48 +02:00
Lars Sundström
316352e868 IOS7: Toggle keyboard with on-screen control button
Add a long press gesture to the touch mode control button, which
when triggered, shows the keyboard. The image of the UI button
changes to the keyboard image asset as long as the keyboard is
visible. If pressing the touch mode control button while the
keyboard is visible it will dismiss the keyboard.

The updates of the on-screen button image is done in the general
"showKeyboard" and "hideKeyboard" functions which makes sure that
the button image is updated also if showing/hiding of the keyboard
is triggered by the OSystem callback.
2023-10-10 20:55:48 +02:00
Lars Sundström
00296153df IOS7: Add on-screen controls visibility configuration
Make it possible to configure the visibility of the on-screen control
buttons. If configured to not be shown both buttons are hidden and
disabled.
2023-10-10 20:55:48 +02:00
Lars Sundström
324569f206 IOS7: Add on-screen controls as UI buttons
Add two UI buttons which are placed to the top right corner over
the main view. The left button controls the current touch mode.
When pressed the button changes image to represent the new touch
mode using the mouse and touchpad assets added in previous commit.

The right button triggers the call to the main menu.
2023-10-10 20:55:48 +02:00
Lars Sundström
a705235d1a IOS7: Add touch mode configurations in menu, 2D & 3D games
In the Android port it's possible to configure differnet touch modes
in ScummVM menus, 2D games and 3D games. Add the same possibility in
the iOS port. In Android it's possible to configure a touch based
game controller as well. That's not in scope for iOS in this commit
but can be added in the future.
2023-10-10 20:55:48 +02:00
Lars Sundström
8e9f54ad32 IOS7: Refactor touchpadModeEnabled to a TouchMode
Change the boolean parameter indicating if "touch mode" is enabled
or not to an enum which could contain several different touch modes.
2023-10-10 20:55:48 +02:00
Lars Sundström
2971029301 IOS7: Configure directional elements on virtual controller
The virtual controller can be configured with different directional
elements. A thumbstick button and Dpad buttons (left, right, down,
up) can be configured.
A user might want to configure which directional element they want
on the virtual controller. Create two different virtual controllers
which can be switched between depending on the setting in the
backend specific option dialog.
2023-10-10 20:55:48 +02:00
Lars Sundström
ee4319beb3 IOS7: Rename option "onscreen_controls" to "gamepad_controller"
The onscreen_controls options should refer to the touch mode setting
and main menu buttons as it's done in the Android backend. The
virtual gamepad controller used the onscreen_controls string to
identify the option. Change the identifier string to
gamepad_controller so onscreen_controller can be used for the buttons
to be added to the iOS backend.
2023-10-10 20:55:48 +02:00
Lars Sundström
fac56ff37d IOS7: Fix position of virtual gamepad controller
With the release of iOS 17 the fix for adjusting the position of
the virtual controller stopped working. On some devices with so
called safe areas, the action buttons could be placed outside the
screen.

Rework the fix to position the GCControllerView layer instead.
2023-10-10 20:55:48 +02:00
Eugene Sandulenko
0485f4a593
SDL: Added (disabled) Markdown table to the Keyboard help 2023-10-09 00:22:15 +02:00
CadiH
7e41bec7f0 BACKENDS: ANDROID: minor edit to Help tab contents 2023-10-06 22:24:55 +02:00
CadiH
5df0851284 BACKENDS: ANDROID: updates contents of help dialog 2023-10-06 22:24:55 +02:00
CadiH
a74c827076 BACKENDS: ADNROID: Updates content of help tab 2023-10-06 22:24:55 +02:00
Giovanni Cascione
efa6ac88b2 LIBRETRO: BUILD: fix emscripten AR 2023-10-02 21:22:04 +02:00
Kaloyan Chehlarski
73b66c60f8 BACKENDS: WII: Always retain cursor palette
Calling setMouseCursor with a non-palette cursor no longer
clears the cursor palette, allowing a subsequent call with a
paletted cursor to re-use it. This fixes Trac defect #13895.
The approach taken was to just copy what the OpenGL
backend was doing in the same situation.
2023-10-02 12:19:31 +03:00
Giovanni Cascione
f9e91aa873 LIBRETRO: BUILD: add ps3 to gitlab CI/CD 2023-10-02 10:21:08 +02:00
Giovanni Cascione
d1f15b9fd7 LIBRETRO: BUILD: add emscripten to gitlab CI/CD 2023-10-01 15:25:00 +02:00
Giovanni Cascione
4cfd17aaf4 LIBRETRO: BUILD: add wii to gitlab CI/CD 2023-10-01 15:24:47 +02:00
Giovanni Cascione
0f6773217c LIBRETRO: add automatic setup of default soundfont file 2023-09-28 21:25:36 +02:00
Giovanni Cascione
74dd0af052 LIBRETRO: change path tests to LibRetroFilesystemNode 2023-09-28 21:25:21 +02:00
Giovanni Cascione
1c8092f592 LIBRETRO: force slashes in LibRetroFilesystemNode constructor 2023-09-28 21:25:04 +02:00