HackerN64 / HackerSM64

A Super Mario 64 decompilation repo based on CrashOveride95/ultrasm64 that aims to provide a flexible, easy-to-use base for creating romhacks.
328 stars 146 forks source link

Split vanillla object from levels allowing pruning vanilla assets on fast64 imports and managing vanilla objects independently of levels #796

Open aglab2 opened 4 months ago

aglab2 commented 4 months ago

This PR introduces a new bank for vanilla objects split from the courses. This allows for the following nice improvements: 1) Vanilla objects can be used in multiple courses. For example it is common that binary hacks use TTC objects in multiple courses at once.

From level script it looks like

LOAD_VANILLA_OBJECTS(bob, generic),
...
JUMP_LINK(script_func_vo_bob),

2) Vanilla courses were setup in such a way that fast64 imports prune most of the useless vanilla leftovers. Level geolayouts/collisions/models were moved in *.inc.c that fast64 overwrites.

Unfortunately, this PR is very gigantic and I am not sure I can do much about reducing its complextity but I would really appreciate if I can get this merged to make handling vanilla stuff significantly more convenient.

gheskett commented 4 months ago

Important question, does this screw over 4MB users?

aglab2 commented 4 months ago

Nope, in fact it should help 4MB users because levels will not have garbage in them with fast64 imports.

gheskett commented 4 months ago

Can you rebase this onto develop/3.0.0 instead of 2.3? This is very much major release territory.

aglab2 commented 4 months ago

Rebased to develop/3.0.0. Original 2.3.0 commit is available at https://github.com/aglab2/HackerSM64/commits/split-levels-2.3.0-squash/

aglab2 commented 3 months ago

Do not merge till PR https://github.com/Fast-64/fast64/pull/356 is in main

Lilaa3 commented 3 months ago

someone should really merge that honestly

gheskett commented 1 day ago

Is there anything else here to be added to fast64, especially now that HackerSM64 detection is a thing that actually exists?