Commit Graph

15 Commits

Author SHA1 Message Date
Matt Penny
0fd1954898 Do not hard code build output directory name
The game can now be built in any directory
2024-11-20 23:38:24 -05:00
Matt Penny
bbb6f7b095 Add missing font characters for Polish and Romanian translations
* Also explicitly ignore non-breaking space
* Fail string generation if any font characters are missing
2024-11-20 21:43:01 -05:00
Matt Penny
00559b6ca3 CMake: support multiple audio languages
* 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).
2024-11-14 23:50:19 -05:00
Matt Penny
31ce4e17a0 Game builds with CMake 2024-11-06 01:38:18 -05:00
Matt Penny
13db5ddc5e CMake: generate linker script fragments for segments
* Animations
* Levels
* Dynamic models
* Strings

Started to hook this up to the linker. There are still some errors to fix.
2024-11-05 02:07:16 -05:00
Matt Penny
a29bb36041 Do not rely on hardcoded directories when linking
* 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)
2024-11-02 02:07:08 -04:00
Matt Penny
42a9189c95 CMake: get assembly working
* 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.
2024-10-19 16:30:58 -04:00
Matt Penny
4e9e9d32d6 ASM: simplify, document, start integrating with CMake
* 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.
2024-10-19 02:38:52 -04:00
Matt Penny
834e5da85a Use universal region in header 2023-12-11 16:36:22 -05:00
Matt Penny
72bc200294 Correct game name, region, and save size in header
Also updated comments around advanced homebrew ROM header
2023-12-11 15:32:13 -05:00
hackgrid
38a3451800
implement "Advanced Homebrew ROM Header" for controller config 2023-11-13 23:10:00 +01:00
James Lambert
4bd5ae80f5 Set save type to SRAM for later ev models 2023-05-03 21:22:46 -06:00
James Lambert
c8a5301eaf Get -02 optimizations working
Fix some small bugs
2022-06-27 21:41:33 -06:00
James Lambert
feccb13a58 Start work on sound effects 2022-05-19 19:26:54 -06:00
James Lambert
6c494d7adc Initial commit 2022-02-27 16:41:51 -07:00