Commit Graph
17 Commits
Author SHA1 Message Date
kichikuou dc17b78365 Move miscellaneous low-level functions to system.[ch] 2025-06-11 09:23:44 +09:00
kichikuou d14b42c146 Replace boolean/TRUE/FALSE with bool/true/false 2025-02-02 10:02:08 +09:00
kichikuou abbe8b9be1 Add warning for missing .ALD files
This warns when the link table has an entry but the contents cannot be
read.

For example, Atlach-Nacha installs only GA.ALD on the hard drive and
read GB.ALD directly from the CD-ROM. This warning message prompts the
user to copy GB.ALD to the game directory.
2025-01-09 09:24:50 +09:00
kichikuou 780d30c01f Fix lnkIsLink
If the link table indicates the existence of an entry, but the volume
containing that entry is missing, this command returns 1.
2025-01-08 16:15:37 +09:00
kichikuou 471c65973b emscripten: Do not use mmap for ALDs
To save memory, as ALD files are now stored as regular files in memfs.
2024-11-28 10:23:21 +09:00
kichikuou cdb16f73a3 Read link table only from first ALD volume
This fixes https://github.com/kichikuou/xsystem35-sdl2/issues/45.

The behavior when the contents of link table differ between ALD volumes
is different between System 3.8 and System 3.9, and System 3.9 uses the
link table of the first volume. The MangaGamer version of Rance 5D
depends on this behavior.

As far as I know, the only game that depends on the System 3.8 behavior
is Child Assassin (in Alice CD 2.50). Considering the additional
complexity, we do not implement switching to the old behavior.
2024-02-18 10:28:13 +09:00
kichikuou 3314f00bf8 Fix cdGetMaxTrack for download edition of Daiakuji
It should return the maximum index of the BGM archive.

Fixes #43.
2023-12-09 14:57:01 +09:00
kichikuou 50d7d7ee33 Fix handling of multi-volume ALD with inconsistent indexes
When contents of the index table differ between ALD files, System3.x
uses information from the file containing the entry.

For example, if link_table[k] in SA.ALD is { file_nr = 2, ptr_no = 10 }
and link_table[k] in SB.ALD is { file_nr = 2, ptr_no = 11 }, the entry
body is in SB.ALD, so ptr_no = 11 should be used.

CA_G*.ALD of Child Assassin has this issue.
2023-01-15 12:42:38 +09:00
kichikuou 29a139c8a1 Use the standard integer types
This replaces BYTE, WORD and DWORD types with uint8_t, uint16_t and
uint32_t respectively.
2022-10-29 09:34:21 +09:00
kichikuou bc06099e01 Show message box on fatal error
Now sys_error() shows error message using a SDL message box, so that
user can see the message on Windows / Android.
2021-10-26 21:41:34 +09:00
kichikuou e5fab0f198 Add source-level debugger
If -debug option is specified, xsystem35 enables built-in debugger. It
optionally loads debug information from *SA.ALD.symbols file (generated
by xsys35c), and drops into a debugger REPL.

Currently the debugger supports:
- Simple breakpoints
- Backtrace
- Single-step execution (step into / step over)
- Printing variables

Also, when the debugger is enabled SIGINT breaks execution and enters a
REPL.
2021-07-18 22:55:22 +09:00
kichikuou f978c43ee1 Move mmap-related code to mmap.{h,c}
And add Windows implementation.
2020-08-06 15:09:51 +09:00
kichikuou 1a3b779ace Use const strings for file names 2020-07-12 13:41:57 +09:00
kichikuou 8958b41ad2 Windows MSYS2 build support
- Add feature detection and fallback implementation for some functions
- Use binary mode for fopen()
- CMake: Add workaround for MSYS link error
2019-10-14 17:32:17 +09:00
kichikuou 3771851d52 Fix out-of-bound accesses 2019-01-05 18:45:30 +09:00
kichikuou 245bc1212c Remove glib dependency 2017-02-18 18:16:32 +09:00
kichikuou e607c9c2ee Import xsystem35-1.7.3-pre5 2014-04-26 18:40:24 +09:00