* Use .sox files for ambience_base and tank_turret_loop1 instead of
hard-coded conversion
* Rename .msox to .sox
- Format is same and extension is no longer needed to differentiate
* Output transformed sounds to portal_pak_modified instead of build dir
- Consistent with other conversions, and easy to preview when adding
new sounds
- Avoids hard-coding build output directory in .ins files
* Use "strings" instead of "subtitles" for translation-related files and types
* Remove CMAKE preprocessor define
* Remove makefile hack in generate_sound_ids
* AUDIO_LANGUAGES and TEXT_LANGUAGES are now validated against
supported languages
* Alternately, "all" can be specified to include all languages
(default for TEXT_LANGUAGES)
* Also fixed linker script not regenerating on language change
CMake builds now have parity with the Makefile (and more!)
* Comma-separated languages can be specified using the TEXT_LANGUAGES
CMake cache variable (defaults to just English)
* Multi-language builds can include any combination of supported languages
* Single-language builds can use any supported language
As part of this, I cleaned up the string generation script, and fixed
some incorrect Bulgarian HINT_ strings.
TODO:
* Allow specifying "all" for text/audio language
* Invalid character validation
* Comma-separated languages can be specified using the AUDIO_LANGUAGES
CMake cache variable (defaults to just English)
* Multi-language builds can include any combination of supported languages
* Single-language builds can use any supported language
As part of this, I refactored the sound lookup tables to not store
information about non-localized sounds (which previously occupied most
of the table).
* Linker script file and preprocessing logic moved to subdirectory
* Linker script related flag passing moved to function in toolchain file
* ROM generation logic moved to toolchain file
Implemented strcpy and strlen, which were all that were needed
(math functions and sprintf are in libultra).
To move further away from libultra, some standard library
implementation - such as newlib - will either need to be added
back later, or if the usage is small, functions can be reimplemented.
For now, removing it makes building easier.
* Use preprocessor directives to pass microcode object file paths
* Add build directory to include path when preprocessing, so directory
name is not needed when including generated linker script fragments
* Pass required files on the command line so wildcard matching can be used
* Also remove special case for creating object file for boot code (use
incbin in asm file instead)
Renamed all instances of skelatool -> skeletool. This is more consistent
than the mixed usage previously, which consequently makes adding the
external project in CMake easier.
* Embed Lua scripts in a cross-platform way (generated C source files)
* Automatically find `luac`
* Automatically build skeletool when building main project
* Assemble through `gcc` instead of `as` directly, so source files are
preprocessed (i.e., `#include`)
* `gcc` does not pass `-I` include directories to `as`. This can
supposedly be fixed by recompiling `gcc` with `--with-gnu-as`. Popular
N64 toolchain binary distributions don't do this, and to lower the
barrier to entry I don't want to force users to have to compile their
own. Work around it by passing `-Wa,-I`.
* CMake only finds assembly dependencies when preprocessing, not when
assembling. Use `#include` instead of `.include` to work around this.
The `.incbin`s used by `sound_data.s` are covered by the
sound_data_tables target dependency.
* Refactor entry point
* Remove unused code
* Reformat level header to be more clear, and add more comments
Looks like assembling with CMake will require some changes to the
assembler flags, and possibly some manual dependency specification.
* Less hard-coding when searching for libultra
* Proper compiler, assembler, and linker flags
* Multiple build types
* Support for multi-config generators
Previously, grav_flare was used (likely due to a copy/paste error),
resulting in a warning during build and unnecessary texture data
being included in the fleck_ash2 generated model.
* When building with CMake, dynamic model lists are now generated
* Factored common code out of generate_*_list.js files to deduplicate
* Better separated generated model lists from main game code
`dynamic_asset_data.c` and `dynamic_animated_asset_data.c`
previously #included the corresponding generated headers, and
`dynamic_asset_loader.c` declared externs for the contents.
This messiness was likely done so the generated code would be built
automatically (the Makefile globs all C files under `src/`).
Now, model list data is output to C source files which are built
explicitly. This, with some refactoring, allows the previously
mentioned source files and externs to be removed.
This is a bit hacky in the Makefile but will be automatic under
CMake by using target properties.
* Reorganized some files under `tools/`
This value is set when compiling anyway, but this change makes the value
match for consistency.
Now that the default is the actual intended value, it doesn't need to be
overridden in the Makefile, but since scene scale needs to be passed to
skeletool regardless I'm going to keep the preprocessor define too so
they don't get out of sync.