Commit graph

1511 commits

Author SHA1 Message Date
Matt Penny 79e77030c1 Fail explicitly when level armatures nest bones
Level animations use global coordinates, but sk_animation uses relative
offsets for child bones. Updating sk_animation to use global coordinates
works, but would break support for model animations (which use relative
offsets).

Although model animation export logic is currently implemented on the
C++ side and would not be immediately affected, eventually it'd be worth
it to move it over to Lua for simplicity and consistency.

So to avoid a future breaking change, and since complex armatures for
level animations are not likely to be needed, I'm leaving the current
behavior as-is until it is proven to be useful/necessary. Levels which
break this rule will now fail to export, to avoid surprises for anyone
who tries.
2024-02-11 18:41:14 -05:00
Matt Penny 3bcf1371e9 Level object documentation around geometry and collision
* Anim
* Dynamic box
* Static
2024-02-11 18:28:04 -05:00
Matt Penny 3a99d714cf More clear level object argument capitalization
Lower case for literal values, upper case for variable values
2024-02-04 21:30:33 -05:00
Matt Penny 7521ab9a44 Fix clock digit position
The clock in the original is formatted as:
    min:sec:hund:tenthou

Previously, the game used:
    00:min::sec::hund

This change updates it to match the original.
2024-02-03 16:30:37 -05:00
Matt Penny 9bff60262c More level object documentation
* Collision
* Door
* Doorway
* Location
* Room
2024-02-03 16:06:23 -05:00
Matt Penny 834f2ef877 Fix link to signals doc in level file formats doc 2024-02-01 00:21:43 -05:00
Matt Penny 1885688090 Start documenting level objects
* Button
* Clock
* Switch
2024-02-01 00:08:35 -05:00
Matt Penny 124aa46267 Document level file formats 2024-02-01 00:08:34 -05:00
Matt Penny 5d817b67a8
Merge pull request #9 from Bobbar/sound_distance_tweak
Tweak for 3D sound attenuation.
2024-01-23 19:44:55 -05:00
Bobby Lovell 1ba19f1f44
Use the square root of the distance for volume attenuation. 2024-01-23 08:19:24 -05:00
Matt Penny ebd7d341f7 Clarify that the build should not be run as root (#3) 2024-01-21 22:30:30 -05:00
Matt Penny 52bbd22c61 Fix cube and ball launcher/catcher texture generation
Previously used Imagemagick 7 functionality, but the Ubuntu repos
(and thereby the machines of users following the readme) contain
version 6.
2024-01-21 22:21:33 -05:00
Matt Penny ace52fe72d
Merge pull request #6 from mwpenny/build-time-assets
Get all textures from VPK
2024-01-21 00:55:11 -05:00
Matt Penny bd3dc02c56 Get all textures from VPK
Some textures cannot be used in their current form, and so they are
transformed at build time by Imagemagick commands (e.g., add shapes,
crop and merge different portions, etc.).

For a very small number of textures, making them usable takes more than
a few simple commands. For example, Chell's eyes and ears are detached
from her face in the texture image, and there are not enough polygons in
her model or pixels in an N64 texture to make a good UV map.

For these few complex textures, James worked around the problem by
checking in pre-edited images. This commit removes those images and
instead performs the necessary transformations at build time. As a result,
some textures are now slightly different (ball launcher/catcher, cube,
Chell). Chell's UV map is redone to accomodate this - for the better.
2024-01-21 00:42:52 -05:00
Matt Penny 8881e688ae
Merge pull request #2 from mwpenny/portable-builds
Fixes to make builds more portable and customizable
2024-01-14 00:53:13 -05:00
Matt Penny 394398b864 Support building Skeletool on Windows
* Do not include execinfo / backtrace (should implement Windows
  equivalent in the future)
* Define YAML_CPP_STATIC_DEFINE, which should have been set anyway
2024-01-14 00:37:34 -05:00
Matt Penny 4eb6165941 Rename levels.md to README.md so GitHub shows it while browsing 2024-01-14 00:13:09 -05:00
Matt Penny 7921fe10d8 Document level signals 2024-01-14 00:10:47 -05:00
Matt Penny 7e699a4324 Dynamically get level count for all levels cheat 2024-01-14 00:09:40 -05:00
Matt Penny bf482724bc Create progress document 2024-01-13 14:30:50 -05:00
Matt Penny 7b39da9774 Document libultra API usage and migration strategy 2024-01-13 14:30:31 -05:00
Matt Penny 94be65409d Update readme with Still Alive info 2024-01-13 11:27:25 -05:00
Matt Penny 77a17ab022 Rename boot obejct file to have a more generic name
We use the 6102 boot code by default, but this can be changed (for
example, if flashing to a cartridge with a different CIC).

As with the microcode, the path cannot be easily passed to the
linker script and so the hard-coded name should not be specific to
particular boot code.
2024-01-08 23:08:18 -05:00
Matt Penny 8aa8e0f331 Allow changing base location of N64 toolchain
Environment variable N64_ROOT optionally sets the root directory of
the N64 toolchain.

To enable this to work with the linker script, the microcode object
files are now copied to the build directory before linking (since
there is no easy way to pass the path to the script dynamically).
An added benefit to this approach is that different microcode can
now be used easily if desired.
2024-01-08 23:08:17 -05:00
Matt Penny e176966be8 Ignore skeletool and vtf2png binaries with file extensions
On Windows, these binaries will have a .exe extension
2024-01-08 22:43:20 -05:00
Matt Penny 725afb48c8 Do not use platform default encoding when generating subtitles
Windows uses cp1252, but we need UTF8. Specify it explicitly.
2024-01-08 22:42:05 -05:00
lambertjamesd b0c02a33f7
Merge pull request #591 from mwpenny/save-fix
Do not save partial savefile on first boot (fixes #583)
2024-01-07 13:53:42 -07:00
Matt Penny 3d5b1b860f Do not save partial savefile on first boot (fixes #583)
With the implementation of save file deletion, I refactored
savefileNew() to re-use the common save file deletion code.

However, savefileDeleteGame() has the side effect of writing
the save back to SRAM. Since the rest of savefileNew() does
not write to SRAM, this means that on first boot it was
possible to get a partially-written save file if the game
was powered off before the first real save (some options had
zero/null values).

To fix this, I created a helper function to update a save file
in memory without writing it back to SRAM. This has the added
benefit of not unnecessarily re-ordering the slots in savefileNew().

I chose not to add a savefileSave() to the end of savefileNew()
since it is called from savefileLoad(), and saving while loading
doesn't seem intuitive. I also don't think it's a good idea to save
in the middle of initialization, in case a user is able to cut
power at the (im)perfect time. The operation should be atomic.
2024-01-07 14:03:31 -05:00
James Lambert 8d7d047415 Add some more materials 2024-01-06 21:10:31 -07:00
James Lambert 6f1834f742 Touch up some test chambers 2024-01-06 20:55:35 -07:00
James Lambert 33c80b25ee Add lighten material variants 2024-01-06 19:42:24 -07:00
James Lambert 61d225e9a4 Increase max render distance 2024-01-03 21:42:33 -07:00
James Lambert 4ddf568628 Use correct starting scene 2024-01-03 19:18:09 -07:00
James Lambert 95ca05b846 Build out much of test chamber 09 2024-01-02 21:36:53 -07:00
James Lambert dba8b5d415 Build out static content for test chamber 09 2024-01-01 21:49:21 -07:00
James Lambert 0f4877553c Start on test chamber 09 2023-12-30 21:50:15 -07:00
James Lambert 49ab59dc5b Updates menus to include new test chamber 2023-12-29 21:48:16 -07:00
James Lambert 0c1795485c Fix bug where cubes slide off of moving platforms 2023-12-29 21:48:16 -07:00
James Lambert ee42238411 Work on test chamber 08 2023-12-29 21:48:16 -07:00
lambertjamesd bee8411ca5
Merge pull request #582 from alanjaouen/patch-1
fix french translation
2023-12-29 19:51:53 -07:00
Alan Jaouen 653dc3e77c
fix french translation 2023-12-30 01:42:02 +01:00
James Lambert c4d0804cdf Update readme for first slice 2023-12-29 14:17:15 -07:00
James Lambert 5961a8474c Create script to simplify building a release 2023-12-29 13:40:23 -07:00
lambertjamesd 18730b7f12
Merge pull request #580 from VanGorkum/Gorky/options_menu_highlighted
Introduced highlighted options menu similar to Portal Switch version
2023-12-29 10:22:41 -07:00
James Lambert e01fa284b7 First draft of test chamber 13 2023-12-28 21:32:03 -07:00
James Lambert a7261cf132 Build out static content for test_chamber_08 2023-12-28 21:32:03 -07:00
lambertjamesd cfd50df93f
Merge pull request #577 from VanGorkum/Gorky/portal
Introduce Portal UI look from Switch version
2023-12-28 20:54:39 -07:00
VanGorkum 9e84e92a87 Repositioned code to draw orange rectangle in landing menu 2023-12-29 00:05:07 +01:00
VanGorkum e9b21e0d38 Updated implementation to use max text width property 2023-12-28 23:56:37 +01:00
VanGorkum c1d4ea5314 Introduced highlighted options menu similar to Portal Switch version 2023-12-28 19:37:49 +01:00