Commit Graph
11 Commits
Author SHA1 Message Date
kichikuou 316a06a168 Refactor string variable functions
This replaces v_str* functions with new svar_* functions.
The new svar_* functions use 1-based string variable index, so that
callers don't have to decrement string numbers from SCO.
2020-09-21 16:17:23 +09:00
kichikuou bc9fc924ed [experimental] Unicode mode
This adds "Unicode mode", in which scenarios can be written in any
language. xsys35c 1.2.0 and later can produce Unicode scenarios.

- nact->encoding represents the current scenario encoding. The initial
  value is SJIS, and ZU command changes it to UTF8.

- Use conversion macros that switch the behavior by the scenario
  encoding. For example, toUTF8() calls sjis2utf() if the scenario
  encoding is SJIS, and calls strdup() if it is UTF8.

- Fix various string processing functions to work with UTF8.
2020-08-09 21:24:56 +09:00
kichikuou 616534621e Fix ShString.ExchangeString
And add a test.
2020-07-23 18:08:58 +09:00
kichikuou 1f5ec7a9a9 Simplify string functions 2020-07-23 17:04:37 +09:00
kichikuou d15c770b4b Fix strGetCharType and strGetLengthASCII 2020-07-23 16:55:49 +09:00
kichikuou 426cdaa836 Fix compatibility issues around maximum index of array variables
The second argument of DC command specifies the maximum index of the new
array. That means, `DC _,n,_:` allocates an array of size n+1 (a[0] to
a[n]).

This patch makes sure various D commands work with a[n], and a[n] is
correctly saved and loaded.

Now loadSysVar() does not shrink array variables using the data count in
the save file, so that files saved by old xsystem35 binary can be safely
loaded. This also matches the behavior of System3.9.
2020-06-27 13:16:22 +09:00
kichikuou 47f82e87c5 Add guards against incomplete SJIS bytes 2020-06-21 09:49:13 +09:00
kichikuou 86470e543a Rework string variables
- strVar is now allocated as a vector of indefinite length buffers
  rather than a single contiguous buffer.
- Strings can be any length, but truncated to (strvar_len * 2) bytes
  when saved to a file, for backward compatibility.
- Now string commands treat 1-byte characters in the same way as System
  3.9. This potentially fixes bugs in English translated games.
2020-06-20 22:29:22 +09:00
kichikuou e17b447e73 Cleanup variable lookup code
No behavior changes.
2020-06-14 21:54:11 +09:00
kichikuou f1b0b399fa Convert EUC to utf-8 2017-02-11 19:03:05 +09:00
kichikuou e607c9c2ee Import xsystem35-1.7.3-pre5 2014-04-26 18:40:24 +09:00