Commit Graph
998 Commits
Author SHA1 Message Date
Nunuhara Cabbage 3f91d84005 Add acxdump and acxbuild tools
Tools for dumping .acx files to csv format and rebuilding them.
2020-08-05 18:59:28 -07:00
Nunuhara Cabbage 6a84c8f802 Fix system.GetTime() and SACT2.Timer_Get()
Fixes slow animations in Sengoku Rance (and presumably other games).
2020-08-02 21:04:35 -07:00
Nunuhara Cabbage 4afd54bb89 ACXLoader: implement GetDataString
Strings are embedded in the rows, making them variable length. So we now
deserialize the whole ACX file in ACXLoader.Load and store them such
that they can be indexed by row/col in constant time.
2020-08-02 14:28:23 -07:00
Nunuhara Cabbage 3d70c81404 ainedit: support reading HLL declarations 2020-08-01 22:19:00 -07:00
Nunuhara Cabbage 3eeb18f7bf ainedit: support Hentai Labyrinth 2020-07-31 21:27:07 -07:00
Nunuhara Cabbage 44802acb48 aindump: support Hentai Labyrinth
Even though this game is still ain v14, it makes an incompatible change
to the file format: struct definitions now contain a list of functions
at the end (I believe this is a listing of the struct's vtable).

There is now a system for tracking the minor version of the ain file
format. This is a made up value, determined by the file name of the ain
file.

This commit also fixes an issue where the empty string was being added
as a new string to the string table when rebuilding ain files with
ainedit.
2020-07-31 20:42:08 -07:00
Nunuhara Cabbage 5b962886be aindump: don't print indices when dumping messages 2020-07-30 20:56:26 -07:00
Nunuhara Cabbage c2aae50dca Various improvements to SengokuRanceFont/fnl 2020-07-30 20:55:17 -07:00
Nunuhara Cabbage a8b2e91053 alice-ar: fix bug when extracting linked webp
Need to pass the archive as an argument so that base CGs can be
retrieved.
2020-07-30 20:41:24 -07:00
Nunuhara Cabbage 86568bc610 Merge branch 'master' of https://github.com/nunuhara/xsystem4 2020-07-12 16:11:28 -07:00
Nunuhara Cabbage 81a947d74d Partial InputString hll implementation
Not implemented: display of intermediate results.
2020-07-12 16:10:10 -07:00
Nunuhara Cabbage bbd57b9f23 Fix A_ALLOC on ref array types 2020-07-12 15:46:13 -07:00
Nunuhara Cabbage 3e9dd0474b Fix memcpy overlap in string_erase 2020-07-12 15:45:13 -07:00
Nunuhara Cabbage 0e4e52a25d Refactor audio to enable bgm looping
SDL_mixer reads loop information from WAV files if you use the Mix_Music
interface, but NOT the Mix_Chunk interface. So bgm now uses the
Mix_Music interface to get proper looping.

There's also some code here for reading bgi files (taken from xsystem35)
but it's not actually used. There doesn't seem to be a simple way to set
up custom loops with SDL_mixer.
2020-07-12 12:07:40 -07:00
Nunuhara Cabbage 58da6dc167 Refactor system4.h
Move xsystem4-specific declarations to xsystem4.h.
2020-07-12 09:17:52 -07:00
Nunuhara Cabbage 5f28db91dd alice-tools 0.5.1 2020-07-12 06:23:46 -07:00
Nunuhara Cabbage 98aa213f41 ainedit: fix bugs identified in #2
Treat CR characters as whitespace and remove redundant/buggy string hash
table from asm.c.
2020-07-12 06:19:38 -07:00
Nunuhara Cabbage f9eaef7717 Fix encoding issue with macro generation
Fixes #2.

The problem here was that init_member_functions assumed ASCII or SJIS
encoding of function/struct names in the ain file. Now it will convert
to UTF-8 when analyzing member functions.

This commit also removes the --ain-encoding option to ainedit.
--output-encoding should always match the encoding of the input ain
file. --transcode can be used to change the encoding before running
running further ainedit commands.
2020-07-11 11:10:18 -07:00
Nunuhara Cabbage 0113e34eaa jaf: refactor declarations
struct definitions are now a type of declaration, instead of being part
of a type specifier. They can only be declared at top-level, and
variables can no longer be attached to the declaration.
2020-07-10 17:25:36 -07:00
Nunuhara Cabbage 3c3150cf63 jaf: fix bug in string processing
Token passed to jaf_process_string can contain whitespace at the end.
2020-07-06 17:30:02 -07:00
Nunuhara Cabbage d3928c774d jaf: messages and char constants 2020-07-05 22:29:45 -07:00
Nunuhara Cabbage 8fe1001fc3 jaf: process escapes in string constants 2020-07-05 19:35:17 -07:00
Nunuhara Cabbage 0970e0c7da jaf: multi-dimensional arrays 2020-07-05 17:40:39 -07:00
Nunuhara Cabbage 8bf7e2aa2b jaf: function types 2020-07-05 16:26:06 -07:00
Nunuhara Cabbage eca0e39fca jaf: show file name/line number in error messages 2020-07-01 10:01:20 -07:00
Nunuhara Cabbage 5bc3a05167 ainedit: initial .pje support
Support building from project files used by the official SDK.
2020-07-01 09:41:17 -07:00
Nunuhara Cabbage 1e87c85588 Fix buffer underflow in alloc_page 2020-06-29 21:41:49 -07:00
Nunuhara Cabbage ee0bd6b5d8 jaf: structs 2020-06-28 10:52:02 -07:00
Nunuhara Cabbage fd60c6329b jaf: arrays 2020-06-27 13:35:09 -07:00
Nunuhara Cabbage 9fc065b1dd jaf: add tests and fix multiple bugs
Test the compiler by running the output with xsystem4.
2020-06-24 20:35:07 -07:00
Nunuhara Cabbage 2331073e7f Use main() return value as exit code 2020-06-22 17:02:58 -07:00
Nunuhara Cabbage 85708c6af1 ainedit: add --silent option
For running compiler tests.
2020-06-22 16:04:49 -07:00
Nunuhara Cabbage ad868aec86 Allow disabling debugger at run time
For running compiler tests.
2020-06-22 16:00:09 -07:00
Nunuhara Cabbage b6ca188a34 jaf: support sequence (comma) expressions 2020-06-22 15:13:13 -07:00
Nunuhara Cabbage def93074a6 Fix bug with function lookup
ain->functions can be realloc'd, so storing pointers into it is a bug.
2020-06-22 12:57:56 -07:00
Nunuhara Cabbage a2012a56ce jaf: support system calls
Only for ain version < 11. Starting with v11 system calls are actually
HLL calls.
2020-06-22 10:14:11 -07:00
Nunuhara Cabbage 8680b3aae5 aincmp: add line breaks to messages 2020-06-22 10:13:30 -07:00
Nunuhara Cabbage 7eb6bad336 jaf: fix bug with reference types 2020-06-21 17:25:49 -07:00
Nunuhara Cabbage b41275f6f4 jaf: support multiple input files 2020-06-21 16:50:04 -07:00
Nunuhara Cabbage d4f1b5ba46 ainedit: support creating new ain files
This is mainly for testing purposes. Defaults to creating an ain v4
file, which is the same version produced by the SDK compiler.

Also various small improvements so that output matches the SDK compiler:
* add "0" function (currently does nothing)
* add "NULL" function
* compile null return at the end of every function
* set main function index in ain file
2020-06-21 14:52:05 -07:00
Nunuhara Cabbage fc0f9a2444 aindump: support dumping misc sections
Support dumping KEYC, MAIN, MSGF, GVER and OJMP sections (single int
value).
2020-06-21 11:05:56 -07:00
Nunuhara Cabbage f1a949dfce jaf: use struct ain_type for type analysis
Once type definitions have been established, use ain_type instead of
jaf_type_specifier to simplify type analysis and compilation.
2020-06-21 09:06:45 -07:00
Nunuhara Cabbage 6e3a3e784a jaf: strings and reference types 2020-06-20 21:05:14 -07:00
Nunuhara Cabbage 0a7239ae0f jaf: loops 2020-06-18 22:03:28 -07:00
Nunuhara Cabbage f46f3ac28a jaf: conditionals and logical operators 2020-06-18 16:40:41 -07:00
Nunuhara Cabbage c283366edd jaf: support assignment expressions 2020-06-17 18:45:20 -07:00
Nunuhara Cabbage 2908e6fcdc jaf: initial compiler implementation
Supports reading from local variables (no assignment) and arithmetic.
2020-06-16 20:38:29 -07:00
Nunuhara Cabbage 615b866727 jaf: support parsing struct member access 2020-06-14 18:13:12 -07:00
Nunuhara Cabbage d8e21d0323 jaf: support parsing identifiers & function calls 2020-06-14 15:54:59 -07:00
Nunuhara Cabbage 5ecdd1ceed jaf: support cast expressions
Support both function-style casts (eg. "int(12.3)") and C-style casts
(eg. "(int)12.3").
2020-06-13 23:00:21 -07:00