Commit Graph
57 Commits
Author SHA1 Message Date
kichikuouandClaude Opus 4.8 dac0345e02 [NOT FOR MERGE] Add opt-in virtual mouse pointer for touch devices
Provide a trackpad-style on-screen cursor for touch environments (mainly
Android), where touching the screen previously jumped the pointer to the
touched location (absolute) and SDL hardware cursors are invisible.

When enabled, a finger drag moves an arrow cursor relatively, a tap
left-clicks (held briefly so polling games detect it), two fingers
right-click, and a stationary long press starts a left-button drag. Real
mouse motion is ignored (including the spurious startup (0,0) event), and
program-driven cursor moves are followed via the internal pointer location
instead of warping the OS cursor.

The feature is disabled by default and enabled via the -virtualpointer
command-line option, the virtualpointer profile setting, or the "Virtual
mouse pointer" toggle in the Android launcher (persisted in
SharedPreferences and passed to the engine as -virtualpointer).

The gesture handling lives in event.c and the cursor rendering in the new
platform-independent virtual_pointer module, so it works on any touch
target.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 20:29:45 +09:00
kichikuou 3318bebf6c fonts: Replace mincho font with IPA Mincho
Switch the bundled mincho font from a Source Han Serif JP subset to a
subset of IPA Mincho, which has monospace ASCII glyphs.

IPA Mincho's hhea ascent/descent already match its OS/2 typo metrics, so
adjust_metrics.py is no longer needed. However, IPA Mincho is distributed
under the IPA Font License v1.0, under which a subset is a "Derived
Program"; Article 3.1(4) forbids the derived font's name from containing
the licensed program's name ("IPA"). Add rename_font.py to rewrite the
name table accordingly, and replace licenses/mincho.txt with the IPA Font
License.
2026-06-23 17:40:22 +09:00
kichikuou 714c7d44b5 Android: Update SDL to 2.32.10 2025-11-09 22:08:54 +09:00
kichikuou 92389289da Android: Add "clear save files" launcher menu command 2025-06-10 13:17:27 +09:00
kichikuou 8d4424061d Switch JPEG decoder to NanoJPEG and disable fancy upsampling
Graymerca uses JPEG images for map tiles, which suffers from color
bleeding due to chroma upsampling in the JPEG decoder.

Since stb_image cannot disable the bilinear upsampling filter, this
switches the JPEG decoder to NanoJPEG.

Fixes #67.
2025-05-29 08:39:59 +09:00
kichikuou 15d0b44ab9 Android: Move "Install from ZIP" to options menu and add help message
For consistency with xsystem4-android.
2025-04-10 10:12:56 +09:00
kichikuou a0f20caa77 Android: Support audio file names prefixed with track numbers 2025-04-10 10:12:56 +09:00
kichikuou 01a4255b83 Android: Upgrade SDL to 2.32.4 2025-04-01 08:49:30 +09:00
kichikuou 996f63f55f Android: Upgrade SDL to 2.30.12 2025-02-07 12:34:43 +09:00
kichikuou f786db5a50 Android: Upgrade SDL to 2.30.9 2024-11-12 08:51:36 +09:00
kichikuou 79805d9ea2 Android: Update SDL, SDL_ttf and SDL_mixer 2024-04-10 15:32:40 +09:00
kichikuou f427d50fa3 Android: Remove playlist migration code
And stop using -playlist option, so that it can be overridden by
.xsys35rc.
2024-04-10 15:07:07 +09:00
kichikuou 7c7768fba4 Android: Improve installation when game is in non-root directory of ZIP
Launcher.kt extracts given ZIP file to the internal storage, preserving
its directory structure.

Before this change, if the game files were in a subdirectory, an
xsystem35.gr file was generated containing the path to the game files.
However, with this method, .xsys35rc and some data files (such as map
files of Kaeru Nyo) could not be loaded.

After this change, Launcher.kt will no longer generate the xsystem35.gr
file. Instead, it records the directory where the game is located in
game_directory.txt, and specify that directory in -gamedir to launch
xsystem35.

Fixes #51.
2024-04-10 15:06:51 +09:00
kichikuou ea5cef91fd Rename cdrom_device profile to playlist
Also renames `-devcd` command line flag to `-playlist`.

The old names can still be used for backwards compatibility.
2024-01-28 10:28:15 +09:00
kichikuou 4c21570eb1 Android: Upgrade SDL to 2.28.5 2023-11-17 12:15:17 +09:00
kichikuou 3482fb6440 Android: Upgrade SDL to 2.28.2 2023-08-13 12:42:54 +09:00
kichikuou 1b9d8c48f1 Android: Use Kotlin coroutine for background installation 2023-04-15 15:59:54 +09:00
kichikuou 55ef307e07 Android: Stop using deprecated ProgressDialog 2023-04-15 11:43:41 +09:00
kichikuou 880244020e Android: Use SDL_mixer for CD audio 2023-03-18 11:21:06 +09:00
kichikuou 55e38f9db2 Android: Add activities to display open source notices 2023-01-06 14:21:32 +09:00
kichikuou 1807cf0c26 Android: Update SDL2 and companion libraries
- SDL 2.26.1
- SDL_ttf 2.20.1
- SDL_mixer 2.6.2
2022-12-29 14:24:20 +09:00
kichikuou c8f1ef2b9e Android: Upgrade Kotlin to 1.6.20 2022-04-08 21:57:02 +09:00
kichikuou 42b9d43a70 Android: Fix off-by-one error in playlist.txt
Before this, line k of the playlist file corresponded to track k-1 on
Android. After this, line k corresponds to track k, which is consistent
with other platforms.

Playlists generated in previous versions of xsystem35-sdl2 will be
automatically converted.
2022-03-11 17:08:16 +09:00
kichikuou 9655a9106d Android: Upgrade SDL and SDL_ttf
- SDL 2.0.20
- SDL_ttf 2.0.18
2022-01-22 09:24:27 +09:00
kichikuou 82963e8293 Android: Stop using deprecated ListActivity 2022-01-03 17:22:25 +09:00
kichikuou b68c217554 Android: Get rid of Kotlin warnings 2021-12-22 21:47:26 +09:00
kichikuou 2db403a692 Android: Upgrade SDL to 2.0.18 2021-12-22 13:13:39 +09:00
kichikuou a5aa8d0672 Android: Update SDL2 to 2.0.16 2021-09-19 15:59:33 +09:00
kichikuou 2529a5b61b Android: Update SDL2 to 2.0.14 2021-01-01 12:34:37 +09:00
kichikuou 4aff7a1df7 Android: Fix StringIndexOutOfBoundsException in text input dialog 2020-10-18 14:56:32 +09:00
kichikuou 5e5defb6bc Android: Input dialog truncates string that exceeds maximum length 2020-09-06 10:35:35 +09:00
kichikuou 38758569bb Android: Implement input dialogs 2020-09-04 17:03:01 +09:00
kichikuou f0ccdcf40a Android: Use arhive filename as alternate launcher item name
The title.txt file is written when the MT command is used, however some
games (Daiakuji, AmbivalenZ, Ikenai Katsumi sensei) does not use the MT
command. As a result, these titles did not appear in the launcher.

This makes the launcher use the name of the ZIP archive when the game
was installed as the alternate item name if the MT command was not used.
2020-06-07 12:23:19 +09:00
kichikuou d3579186c6 Android: Populate BGM, WAI, BGI, Init, and SACT01 lines in xsystem35.gr 2020-06-06 12:30:14 +09:00
kichikuou 73216073af Android: Update SDL2 to 2.0.12 2020-03-13 16:22:44 +09:00
kichikuou dbb396ae7c Android: Skip zip entries with UTFDataFormatException
This allows installation from some ZIPs distributed by AliceSoft
archives, in Android < 7.0.

Some other ZIPs have game files with SJIS names, so change the error
message depending on whether there's a decode error.
2020-02-24 14:06:45 +09:00
kichikuou 174f1ac359 Android: Play MIDI via temporary file
MediaPlayer in old versions of Android does not accept data: URL.
2020-02-16 11:35:01 +09:00
kichikuou af49f40d0b Android: Sort game list by date of title.txt
The title played last comes first.
2020-02-11 09:49:01 +09:00
kichikuou 11442f1574 Android: Do not create SJIS-encoded ZIP 2020-02-11 09:43:49 +09:00
kichikuou acd4dc239b Android: Fix loop parameter handling for CD-DA/MIDI
The semantics of `loop` parameter of start() is very confusing.
Added comments in cdrom.h/midi.h to clarify the meaning.
2020-02-09 19:22:47 +09:00
kichikuou 70c6480181 Use StringBuilder 2020-02-09 14:33:25 +09:00
kichikuou ea747ffcc9 Android: Add Japanese strings 2020-02-08 21:01:49 +09:00
kichikuou 6854d9bea2 Android: Export / import save files
Now save files can be exported to ZIP / imported from ZIP by the
option menu of the launcher activity.
2020-02-01 18:52:23 +09:00
kichikuou b7bbbaee61 Android: Update game list on setTitle()
This fixes a bug where newly installed game does not appear in the game
list after quitting the first game run.
2020-02-01 11:06:02 +09:00
kichikuou e5f1036b6b Android: Minor code cleanup 2020-01-28 22:05:53 +09:00
kichikuou f4b301a28d Android: Simplify intent parameters for GameActivity 2020-01-28 21:54:02 +09:00
kichikuou c98a11dc0e Android: Generate xsystem35.gr file
The installer writes xsystem35.gr file into the game root directory.

Now save files are created at `files/save` directory, which is outside
the game directory. This scheme is the same as Kichikuou on Web, so it
would make transferring save data between two easier.
2020-01-28 21:53:44 +09:00
kichikuou 809232a4cb Android: Remove launchMode="singleInstance"
So that game activity can be resumed from android launcher.
2020-01-26 13:07:47 +09:00
kichikuou f6d8611e77 Android: Introduce model class for launcher
This fixes a bug where screen rotation during installation causes crash.
2020-01-26 13:01:28 +09:00
kichikuou 31e073203d Android: MIDI support 2020-01-25 17:23:53 +09:00