Compare commits

...

317 Commits

Author SHA1 Message Date
thecozies
dde93edb07 v2.0.0 2021-12-30 10:49:10 -06:00
Gregory Heskett
0a53b7a602 Update README.md (#277) 2021-12-30 10:47:36 -06:00
Reonu
c228f8583f rename CUSTOM_DEBUG, add comments (#275) 2021-12-30 09:35:37 -06:00
thecozies
fde55ad6ef Improved movement config documentation related to turning around (#271)
Fixes #270
2021-12-30 04:57:36 -06:00
thecozies
47b20c859f Config cleanup/refactor (#269)
* Moved puppyprint define to graphics / rearranged some debug defines for ease of access

* Moved compatibility safeguards to config_safeguards.h

* spacing and comment formatting

* #272 Move GFX_POOL_SIZE to config_graphics.h

* disable EASIER_DIALOG_TRIGGER by default

* prevent redefining warnings

* small ifdef typo

* changed ifndef to undefs

Fixes #262
Fixes #272
2021-12-29 18:19:41 -06:00
thecozies
f9db11c7ec derive margin_radius from radius after capping at 200 (#266)
Fixes #259
2021-12-29 13:06:00 -06:00
thecozies
1aca17942a #264: Document non-stop stars' issues (#267)
* #264: Document non-stop stars' issues

* Update include/config/config_game.h

* nonstop vanilla comment
2021-12-29 10:50:03 +00:00
thecozies
34b0eba5c1 skip wall offsets < 0 (#255)
Fixes #255
2021-12-28 12:26:32 -06:00
Reonu
d71063f270 Fixed save and quitting while in widescreen (#257)
* Fixed save and quitting while in widescreen

* use define for the level

* all my homies hate ifdefs
2021-12-28 18:25:37 +00:00
Arceveti
2baabaf687 Swap static and dynamic surface checks back to vanilla order (#253)
* Swap static and dynamic surface checks back to vanilla order

* re-enable DISABLE_ALL config

Fixes #251 #252
2021-12-28 08:56:39 -06:00
Arceveti
133334994a Fix stuttering on thin slopes (#248)
* Fix stuttering on thin slopes

* Revert vec3f_find_ceil calls to vanilla

* Rename vec3f_find_ceil to find_mario_ceil

* Update src/engine/surface_collision.h

Fixes #249
2021-12-28 05:58:08 -06:00
thecozies
b564bed602 revert air step line to vanilla to fix bitfs scaling platform issue (#247)
Fixes #200
2021-12-27 13:03:13 -06:00
thecozies
bd5f810a3b Develop/refactor default defines (#242)
* Changed default config options

* Added build dir to includePaths for pngs

* disable NO_SLEEP by default

* Disable puppyprint by default

Sorry fazana 😔

* fix typos

* add comment about BETTER_REVERB console perf

* disable blue coin switch retry by default

* Update config_audio.h

Co-authored-by: Reonu <danileon95@gmail.com>
Co-authored-by: Mr-Wiseguy <68165316+Mr-Wiseguy@users.noreply.github.com>
2021-12-27 18:58:27 +00:00
Reonu
4477f16781 actually prevent floomba redefinition 2021-12-26 03:28:48 +00:00
Reonu
5ea71e38dd prevent double definition of floombas 2021-12-26 03:26:15 +00:00
Reonu
3fd984f2b5 Merge pull request #246 from Reonu/develop/refactor__better-intro-defines
Renamed HD_INTRO_TEXTURES define, separated intro floombas
2021-12-26 03:15:27 +00:00
Reonu
947c8c5234 Renamed HD_INTRO_TEXTURES define, separated intro floombas 2021-12-26 02:53:00 +00:00
Reonu
0bc97ea620 Merge pull request #245 from Reonu/develop/refactor__revert-ceil-buffer
revert ceil buffer
2021-12-25 14:19:42 +00:00
thecozies
119e34bae5 revert ceil buffer 2021-12-25 08:14:26 -06:00
Reonu
d99b79f335 Merge pull request #234 from Reonu/develop/arceveti/refactor/more_unlock_all
Make UNLOCK_ALL apply to more things
2021-12-24 22:19:32 +00:00
Arceveti
21c16b0482 UNLOCK_ALL unlocks cap boxes (slightly more epic edition) 2021-12-24 14:13:24 -08:00
Reonu
bb32509898 UNLOCK_ALL unlocks the cap boxes 2021-12-24 21:54:52 +00:00
Reonu
82f0338877 Merge pull request #243 from Reonu/develop/reonu/delete_patches
delete unnecesary patches
2021-12-24 20:07:20 +00:00
Reonu
8ecc76bdcf murdered more patches 2021-12-24 19:30:55 +00:00
Arceveti
247dd8eab9 Apply suggested changes 2021-12-24 11:24:28 -08:00
Reonu
1734c7afe4 delete unnecesary patches 2021-12-24 19:18:27 +00:00
Reonu
40d01909df Merge pull request #241 from Reonu/reonucam_credit
added reonucam credit
2021-12-24 18:52:38 +00:00
Reonu
eb0f4792b7 Merge pull request #238 from Reonu/develop/refactor__water-upwarp-define
Added WATER_PLUNGE_UPWARP define
2021-12-24 18:11:52 +00:00
Reonu
b7134c5931 added reonucam credit 2021-12-24 18:07:02 +00:00
Arceveti
d1e9c84326 Fix how shadows handle water/transparency/height (#228)
* Fix how shadows handle water/transparency/height

* Change shadow check for flying carpets from a level specific check to a oPlatformOnTrackType check

Fixes #179
2021-12-24 11:08:13 -06:00
Reonu
b3a383e8d3 Add reonucam patch (#239)
* added reonucam patch
Fixes #218
2021-12-24 11:04:42 -06:00
thecozies
9dda63419d added WATER_PLUNGE_UPWARP define 2021-12-24 09:06:47 -06:00
Arceveti
4b4740ec43 Change chain chomp load/unload distances depending on number of segments (#237)
Fixes #192
2021-12-24 06:20:59 -06:00
Arceveti
5915a5e7f2 Fix wrong ifdef/ifndef in bhv_invisible_objects_under_bridge_init 2021-12-23 15:19:09 -08:00
Arceveti
f5a6159104 Make UNLOCK_ALL apply to more things 2021-12-23 15:12:15 -08:00
Arceveti
b205c47da9 Fix coin formation coins being deleted if they spawn in the middle of a floor, also fix TTM slide coin position (#232)
Fixes #201
2021-12-23 16:37:45 -06:00
Arceveti
78bff66c30 Make area in SL igloo wider to prevent a softlock (#233)
Fixes #210
2021-12-23 16:28:29 -06:00
Arceveti
5c21b3467d Fix VISUAL_DEBUG breaking/crashing when OBJECTS_REJ is disabled (#211)
* Fix VISUAL_DEBUG breaking/crashing when OBJECTS_REJ is disabled

* Change vtl decrement in visual_surface_display from 6 to 3

Fixes #207
2021-12-22 15:47:49 -06:00
Fazana
6a341ad1ba Default all objects to non-rej (#227)
Fixes #221 (Default all objects to non-rej)

* Fix #221
2021-12-22 14:03:38 -06:00
Mr-Wiseguy
468ecb80a5 Moved extended bounds and world scale configuration to a new config_world.h file 2021-12-22 11:55:48 -05:00
Mr-Wiseguy
d4d8a0540f Replaced mtxf_to_mtx_asm with an equivalent implementation that supports WORLD_SCALE 2021-12-22 11:55:48 -05:00
Mr-Wiseguy
eb2211948d Renamed sAudioEnabled to gAudioEnabled 2021-12-22 11:24:15 -05:00
Mr-Wiseguy
ccea32c26d Fixed puppyprint debug RDP us calculations 2021-12-22 11:24:15 -05:00
Mr-Wiseguy
6627c2378a Fixed sAudioEnabled so that it disables audio CPU processing as well 2021-12-22 11:24:15 -05:00
Arceveti
d6e5d9e2cf Allow stop_and_set_height_to_floor to work at any height if Mario is teleporting (#213)
* Revert stop_and_set_height_to_floor to vanilla

Fixes #208
2021-12-22 06:48:20 -06:00
thecozies
2418aa7700 Merge pull request #226 from Reonu/develop/arceveti/refactor/fix_max_referenced_walls_typo
Fix "MAX_REFERENCED_WALLS" typo
2021-12-22 06:47:01 -06:00
Arceveti
7e2746eac4 Fix "MAX_REFERENCED_WALLS" typo 2021-12-21 19:30:29 -08:00
thecozies
602b7ee1d9 Merge pull request #219 from Reonu/develop/refactor__FAST_VERTICAL_CAMERA_MOVEMENT
utilize reonucam technique for FAST_VERTICAL_CAMERA_MOVEMENT

Fixes #164
2021-12-21 06:11:35 -06:00
thecozies
072282b68b utilize reonucam technique for FAST_VERTICAL_CAMERA_MOVEMENT 2021-12-21 06:07:14 -06:00
thecozies
9c22158b8e Merge pull request #202 from Reonu/develop/arceveti/refactor/drawing_distance_fix
Fix some drawing distance issues caused by AUTO_COLLISION_DISTANCE

Fixes #173
2021-12-21 05:24:28 -06:00
thecozies
b10d01cf53 Merge pull request #216 from Reonu/develop/refactor__config_doc
Config documentation

Fixes #191
2021-12-21 05:04:26 -06:00
Axollyon
afcc1f28a5 Start level comment & exit course comment/collapse 2021-12-20 15:50:55 -05:00
thecozies
6668ae391a Merge pull request #206 from Reonu/develop/arceveti/refactor/find_ceil_buffer
Re-implement Y buffer for find_ceil

Fixes #200
2021-12-20 06:42:37 -06:00
thecozies
c241f6941f Merge pull request #212 from Reonu/develop/arceveti/refactor/power_stars_heal
Re-implement POWER_STARS_HEAL for normal Power Stars
Fixes #209
2021-12-20 06:09:06 -06:00
Arceveti
102f21d533 Re-implement POWER_STARS_HEAL for normal Power Stars 2021-12-20 00:16:34 -08:00
Arceveti
eadfff013a Re-implement Y buffer for find_ceil 2021-12-19 14:30:47 -08:00
Arceveti
58836138c8 Merge branch 'develop/arceveti/refactor/drawing_distance_fix' of https://github.com/Reonu/HackerSM64 into develop/arceveti/refactor/drawing_distance_fix 2021-12-19 12:05:25 -08:00
Arceveti
94e19d439f Revert formatting changes to match vanilla decomp 2021-12-19 12:05:20 -08:00
Arceveti
63b2838e91 Update data/behavior_data.c
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
2021-12-19 12:02:49 -08:00
Arceveti
eb0bb591f0 Update data/behavior_data.c
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
2021-12-19 12:02:46 -08:00
Arceveti
a5033a56c9 Update data/behavior_data.c
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
2021-12-19 12:02:42 -08:00
Reonu
6e03037f2e Merge pull request #205 from Reonu/better-credits
Update readme with better credits
2021-12-19 18:57:23 +00:00
thecozies
87b66c7400 Merge pull request #204 from Reonu/develop/refactor__spline_fix
Fixed spline poll code using the wrong values for keyframes

Fixes #170
2021-12-19 10:53:11 -06:00
thecozies
5538b207a5 Merge pull request #197 from Reonu/develop/arceveti/refactor__legacy_shadow_ids_fix
Fix LEGACY_SHADOW_IDS id conflict

Fixes #181
2021-12-19 10:44:03 -06:00
thecozies
bbdfcfd0bf Merge pull request #166 from Reonu/object_transparency
Fix some transparent objects rendering behind env boxes.
2021-12-19 10:09:42 -06:00
Reonu
e49bc4273a remove specific callouts + add auto col distance 2021-12-19 11:14:56 +00:00
Reonu
a6c4bfd5d6 silhouette + axo + ratio 2021-12-19 00:16:53 +00:00
Reonu
675977a4d6 added S2DEX engine to credits 2021-12-18 13:43:30 +00:00
Reonu
c5d3cd4f53 le funny typo 2021-12-18 13:35:16 +00:00
Reonu
9141396ec4 add fazana 2021-12-18 11:09:34 +00:00
Reonu
390ce3fdb9 added falco and moose 2021-12-18 11:07:56 +00:00
Reonu
48bea623e4 add arthur 2021-12-18 11:05:57 +00:00
Reonu
33056f6f3c Update readme with better credits
Better credits for individual contributors
2021-12-18 11:03:03 +00:00
Mr-Wiseguy
1c13a86569 Fixed spline poll code using the wrong values for keyframes 2021-12-18 01:35:37 -05:00
Arceveti
75eb23b21f Fix rumble build 2021-12-18 00:14:43 -05:00
Arceveti
5d46bb1f8e Fix some drawing distance issues caused by AUTO_COLLISION_DISTANCE 2021-12-17 13:56:33 -08:00
axollyon
665e5bac05 Merge pull request #199 from Reonu/develop/arceveti/refactor__fire_bars_fix
Use the vanilla default value for rotating fire bars if bparam2 is 0
2021-12-17 15:54:33 -05:00
Axollyon
46cc527da3 START_LEVEL safeguard 2021-12-17 15:48:20 -05:00
Arceveti
1360622242 Use the vanilla default value for rotating fire bars if bparam2 is 0 2021-12-17 12:26:05 -08:00
Arceveti
15a58d4dff Fix LEGACY_SHADOW_IDS id conflict 2021-12-17 11:50:41 -08:00
Arceveti
b5f785d669 Update src/game/object_helpers.c
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
2021-12-17 10:35:57 -08:00
Arceveti
a2faba2a93 Update src/game/object_helpers.c
Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com>
2021-12-17 10:35:52 -08:00
thecozies
10dfcd9433 Merge pull request #196 from Reonu/develop/refactor__UNLOCK_FPS_fix
Fixes #196
2021-12-17 09:31:52 -06:00
thecozies
564af66ceb Fixed UNLOCK_FPS strobing 2021-12-17 09:27:19 -06:00
thecozies
dda3ebd29e Merge pull request #161 from Reonu/develop/arceveti/refactor_door_z_fix
Make the door lock a part of the key door model to eliminate z-fighting, also reduce z fighting on numbered doors with AUTO_LOD enabled.

Fixes #163
2021-12-17 08:40:08 -06:00
thecozies
de1decf039 Merge pull request #187 from Reonu/fazana/fix_rumble
Fix rumble build

Fixes #187
2021-12-17 06:51:51 -06:00
Fazana
112761e484 Fix rumble build 2021-12-17 12:45:05 +00:00
axollyon
236498a201 Merge pull request #185 from Reonu/develop/refactor__ukiki_cage_no_auto_coll
Set OBJ_FLAG_DONT_CALC_COLL_DIST on bhvUkikiCage
2021-12-17 02:24:14 -05:00
Axollyon
e7564adfb3 Set OBJ_FLAG_DONT_CALC_COLL_DIST on bhvUkikiCage 2021-12-17 02:19:06 -05:00
Mr-Wiseguy
18103b25f1 Removed superfluous RDP commands when switching microcodes which would override scissor 2021-12-16 22:03:54 -05:00
thecozies
91b59799f9 Merge pull request #177 from Reonu/develop/refactor__geo-billboard-fix
fixed geo_process_billboard floating point exception

Fixes #175
2021-12-16 17:31:13 -06:00
thecozies
6f45ad5eec Merge pull request #178 from Reonu/develop/refactor__allow-more-water-directions
Allow water to face any direction

Fixes #176
2021-12-16 17:00:51 -06:00
axollyon
55bfa653e2 Merge pull request #180 from Reonu/develop/refactor__fix_bbh_focOffset
Initialize focOffset so that BBH doesn't crash
2021-12-16 16:16:02 -05:00
Axollyon
a0d96ee90e Initialize focOffset so that BBH doesn't crash 2021-12-16 16:10:57 -05:00
thecozies
45dccaa1c0 Allow water to face any direction 2021-12-16 09:45:17 -06:00
thecozies
5be59e7970 fixed geo_process_billboard floating point exception 2021-12-16 09:17:58 -06:00
thecozies
61e7e8e506 Merge pull request #160 from Reonu/develop/arceveti/refactor_cap_bounce_fix
Use boolean defines for oCapDoScaleVertically

Fixes #157
2021-12-16 05:16:36 -06:00
Gregory Heskett
6832ebca2c Resolved some compiler warnings and added FALL_THROUGH define (#168)
* Address some more compiler warnings with different define toggles

* Remove unnecessary fallthrough attribute
2021-12-15 22:41:59 -05:00
Arceveti
552b765ed0 Move flames to LAYER_TRANSPARENT_INTER 2021-12-15 17:51:58 -08:00
Arceveti
993e8ec4e2 Make the door lock a part of the key door model to eliminate z-fighting, also reduce z fighting on numbered doors with AUTO_LOD enabled. 2021-12-15 17:30:22 -08:00
Arceveti
2a70709cfa Use boolean defines for oCapDoScaleVertically 2021-12-15 14:29:45 -08:00
thecozies
212e71120f Merge pull request #158 from Reonu/approach_s16_fix
Cast return value of approach_s16 to s16

fixes #138
2021-12-15 16:23:13 -06:00
Arceveti
b5af7fa0e1 Fix approach_s16 return value 2021-12-15 14:19:53 -08:00
thecozies
f50860cf8b Merge pull request #152 from aglab2/int2str
Adjust height value for terrain angle to kick in
2021-12-15 15:25:18 -06:00
thecozies
7c558d73e3 Merge pull request #156 from Reonu/develop/arceveti/refactor_fix_unagi_transparent_star
Add COURSE_NUM_TO_INDEX to the save_file_get_star_flags() check in bhv_unagi_init

fixes #155
2021-12-15 15:24:24 -06:00
thecozies
499eaa20ab Merge pull request #142 from Reonu/develop/arceveti/refactor_fix_build_warnings
Fix two build warnings for unused functions
2021-12-15 15:19:42 -06:00
Arceveti
51a9e18132 Add COURSE_NUM_TO_INDEX to save_file_get_star_flags check in bhv_unagi_init 2021-12-15 13:08:36 -08:00
Arceveti
ed4f8267e0 Fix fread() build warning 2021-12-15 13:00:44 -08:00
thecozies
a2cee228ca Merge pull request #153 from Reonu/develop/refactor__fix-hi-score-flashing
fixed hi score flashing
2021-12-15 13:53:20 -06:00
Fazana
58f3130de6 Remove menudata backup (#131)
Not considered important enough to keep
2021-12-15 14:19:45 -05:00
thecozies
dad1cd742a fixed hi score flashing 2021-12-15 09:57:33 -06:00
aglab2
4c915eb666 Adjust height value for terrain angle to kick in 2021-12-15 22:18:44 +08:00
thecozies
d6d64deb7e Merge pull request #151 from aglab2/int2str
Fixed puppyroll #134
2021-12-15 08:01:49 -06:00
aglab2
a1205e12a1 Fixed puppyroll #134 2021-12-15 21:10:36 +08:00
Reonu
fd043ea324 Merge pull request #150 from Reonu/develop/refactor__groundpound-fix
Change groundpound-fix define and functionality to just disable bonking
2021-12-15 15:05:15 +02:00
thecozies
9e12023873 Change groundpound-fix define and functionality to just disable bonking 2021-12-15 06:51:50 -06:00
thecozies
4fe0f19d0a Merge pull request #149 from aglab2/int2str
Fixed incorrect digit for 100s #145
2021-12-15 05:41:07 -06:00
aglab2
8a5a3a9f29 Fixed incorrect digit for 100s #145 2021-12-15 19:39:52 +08:00
thecozies
a929717881 Merge pull request #144 from Reonu/develop/thecozies/fp-exception-castle-grounds
Fixed stale reference bug from obj_mark_for_deletion change
2021-12-14 09:49:23 -06:00
thecozies
d2d3d60c9f Fixed stale reference bug from obj_mark_for_deletion change 2021-12-14 09:38:52 -06:00
Arceveti
282adb36b5 Fix build warnings for unused functions 2021-12-13 20:00:44 -08:00
thecozies
edc6fe6b57 Merge pull request #125 from Reonu/fix_build_warnings
Fix build warnings
2021-12-13 17:03:27 -06:00
thecozies
50d1b73bac Merge pull request #139 from Reonu/sliding_platform_fix
Fix sliding platforms using the wrong bparams
2021-12-13 17:03:11 -06:00
thecozies
8c110adb36 Merge pull request #140 from Reonu/develop/arceveti/legacy_shadow_ids
Add LEGACY_SHADOW_IDS define for Fast64 compatibility
2021-12-13 17:02:01 -06:00
Arceveti
836c6a4850 Better find_in_bounds_yaw_wdw_bob_thi ifdef 2021-12-13 14:22:16 -08:00
Arceveti
a5fce270ef Apply suggested changes 2021-12-13 14:14:16 -08:00
Arceveti
f2148ce405 Add LEGACY_SHADOW_IDS define for Fast64 compatibility 2021-12-13 14:09:52 -08:00
Arceveti
19c79e95fe Fix sliding platform bparams 2021-12-13 14:00:14 -08:00
thecozies
a2c4243600 Merge pull request #137 from Reonu/Reonu-patch-1
Fix BUGFIX_DIALOG_TIME_STOP
2021-12-13 13:43:31 -06:00
Reonu
d92ddeecd8 Fix BUGFIX_DIALOG_TIME_STOP
Fixes #136
2021-12-13 21:42:17 +02:00
thecozies
97eebacb1e Merge pull request #117 from Reonu/geo_process_master_list_sub_fix
Fix SILHOUETTE, OBJECTS_REJ, and ucode loading, also clean up render phase system and OBJECTS_REJ ifdefs a bit.
2021-12-13 07:13:55 -06:00
thecozies
913ea2dfdd Merge pull request #129 from Reonu/fazana/refactorfix (Puppycamera fixes)
Puppycamera fixes
2021-12-13 06:54:32 -06:00
Fazana
a5a826052e Further Puppycamera fixes 2021-12-13 06:52:42 -06:00
Fazana
9f538f8e7d Some puppytech fixes 2021-12-13 06:52:42 -06:00
thecozies
f7b79d132d Merge pull request #126 from Reonu/develop/bugfix/object-y-pos
bugfix: miscalculation in obj_turn_toward_object
2021-12-13 06:00:42 -06:00
thecozies
933b3d3ec4 Merge pull request #122 from aglab2/develop-fixup
Fixed clang compilation issues
2021-12-13 05:39:38 -06:00
thecozies
639e2e2898 Merge pull request #120 from Reonu/goddard-build-errors-fix
Goddard build errors fix
2021-12-13 05:35:53 -06:00
thecozies
ee60c7a2a5 Merge pull request #119 from Reonu/fix_fast64_import
Fix Fast64 importing by reverting sSegmentTable change
2021-12-13 05:34:14 -06:00
gheskett
460b45d8b0 bugfix: miscalculation in obj_turn_toward_object 2021-12-12 14:33:00 -05:00
Arceveti
8455f92421 Fix build warnings 2021-12-11 20:58:09 -08:00
Arceveti
81ff820c05 Add INTER mode for geo_update_layer_transparency 2021-12-11 20:31:50 -08:00
aglab2
f4f2a502c3 Fixed clang compilation issues 2021-12-12 12:22:13 +08:00
Mr-Wiseguy
ad23ec4ca6 Readded missing functions that caused build errors with Mario head enabled 2021-12-11 23:14:43 -05:00
Arceveti
ae0ba99459 Fix Fast64 importing by reverting sSegmentTable change 2021-12-11 20:13:39 -08:00
Mr-Wiseguy
19657d25b0 Fixed build with BETTER_HANGING off 2021-12-11 23:00:24 -05:00
Arceveti
3f0206bb1f Merge branch 'develop/refactor' of https://github.com/Reonu/HackerSM64 into geo_process_master_list_sub_fix 2021-12-11 19:55:34 -08:00
Arceveti
1f6d00e316 Fix duplicate comment & graph render layers/flags bitmask 2021-12-11 19:51:53 -08:00
Arceveti
50eb8a8473 Clean up OBJECTS_REJ ifdefs 2021-12-11 19:47:15 -08:00
Mr-Wiseguy
bdf489067b Fixed build with BETTER_HANGING off 2021-12-11 22:21:30 -05:00
Arceveti
958ae2b987 Fix SILHOUETTE, OBJECTS_REJ, and ucode loading, also clean up render phase system a bit. 2021-12-11 16:04:14 -08:00
thecozies
0812acc11b Merge pull request #111 from Reonu/develop/refactor__puppyprint-combo
Allow easier command for opening puppyprint debug
2021-12-11 17:26:34 -06:00
thecozies
94bbcc2d2a Merge pull request #114 from Reonu/develop/arceveti/refactor_fix
Fix shadow scaling and shifting
2021-12-11 17:26:07 -06:00
Arceveti
05d4be8fdf Fix shadow scaling and shifting 2021-12-11 15:13:05 -08:00
Fazana
141042c59a Rearranged framebuffers & fixed puppyprint console printing 2021-12-11 17:08:55 -06:00
thecozies
03014f34cb Allow easier command for opening puppyprint debug 2021-12-11 16:48:04 -06:00
thecozies
81f642aba4 camera conf documentation 2021-12-11 15:58:46 -06:00
thecozies
f740731fd6 surface load optimizations 2021-12-11 15:58:27 -06:00
thecozies
b529941cbb surface collision performance improvements 2021-12-11 15:55:42 -06:00
thecozies
9ddaf82c82 optimized file positions + support function/data sections 2021-12-11 15:40:22 -06:00
thecozies
b803b7f350 compilation flags 2021-12-11 15:39:33 -06:00
thecozies
2f5cec36a7 updated README 2021-12-11 15:37:43 -06:00
thecozies
e2ab5b3f90 stomp smoke -> small water splash 2021-12-11 15:37:17 -06:00
thecozies
75a188c7d9 rename stomp smoke 2021-12-11 15:36:36 -06:00
thecozies
fe8e30296d dialogs / text 2021-12-11 15:36:04 -06:00
thecozies
e966fe76ee title screen cleanup 2021-12-11 15:35:29 -06:00
thecozies
daa28cf98a star select cleanup 2021-12-11 15:34:33 -06:00
thecozies
1b1724b557 sram to ultrasm64 2021-12-11 15:32:49 -06:00
thecozies
9b13050d01 spawn sound cleanup 2021-12-11 15:32:29 -06:00
thecozies
b1dbbf0e05 spawn object optimizations and documentation 2021-12-11 15:32:09 -06:00
thecozies
6da4ca07f6 sound init: clean up define usage + documentation 2021-12-11 15:29:46 -06:00
thecozies
f28fc49027 skybox refactor 2021-12-11 15:26:32 -06:00
thecozies
ec042fc2eb shadow overhaul 2021-12-11 15:25:05 -06:00
thecozies
c2655c8bb7 segment2.h 2021-12-11 15:24:46 -06:00
thecozies
e538c669c1 screen transition documentation 2021-12-11 15:24:29 -06:00
thecozies
990757ef62 intro geo documentation 2021-12-11 15:23:17 -06:00
thecozies
9ec1709032 file select 2021-12-11 15:21:07 -06:00
thecozies
7ed9933735 reset various files to ultrasm64 2021-12-11 15:18:50 -06:00
thecozies
25dc528e18 s2d engine 2021-12-11 15:17:42 -06:00
thecozies
44982fdf74 save file documentation and unlock defines 2021-12-11 15:17:08 -06:00
thecozies
a7a7fb1140 hqvm back to ultrasm64 2021-12-11 15:12:33 -06:00
thecozies
a3622efc15 rumble opt and doc 2021-12-11 15:12:10 -06:00
thecozies
e18131a846 rendering graph node performance optimizations 2021-12-11 15:11:01 -06:00
thecozies
4d98245769 puppyprint updates and formatting changes 2021-12-11 14:31:19 -06:00
thecozies
b858817530 puppycam absf 2021-12-11 14:29:15 -06:00
thecozies
8303bc66f1 print / printf 2021-12-11 14:27:21 -06:00
thecozies
b6cc6ce79a platform displacement 2021-12-11 14:25:59 -06:00
thecozies
f5acebbaec paintings 2021-12-11 14:25:02 -06:00
thecozies
221c3b9ec5 object list processor documentation 2021-12-11 14:23:02 -06:00
thecozies
5778ec7e38 object helpers 2021-12-11 13:09:59 -06:00
thecozies
2c362ebb7c fix flamethrower bug 2021-12-11 12:51:44 -06:00
thecozies
fffa0db0bc object collision 2021-12-11 12:06:48 -06:00
thecozies
9a4c45e4ab object behaviors 2021-12-11 12:03:55 -06:00
thecozies
f1f0a0d1e8 moving textures 2021-12-11 11:55:01 -06:00
thecozies
97eb2ee23a memory.h documentation 2021-12-11 11:51:55 -06:00
thecozies
c33b3e3b69 mario documentation 2021-12-11 11:51:37 -06:00
thecozies
9fdae48a76 mario step: ledge grab fixes and documentation 2021-12-11 11:40:12 -06:00
thecozies
941f4b2f39 mario misc documentation 2021-12-11 11:28:17 -06:00
thecozies
61dc565c07 mario submerged documentation 2021-12-11 11:25:54 -06:00
thecozies
b274fc1afb mario stationary documentation 2021-12-11 11:21:36 -06:00
thecozies
d118f84e71 mario actions object documentation and options 2021-12-11 11:19:12 -06:00
thecozies
56d10de4fd mario actions moving documentation and options 2021-12-11 11:17:53 -06:00
thecozies
6ab783554f mario actions cutscene documentation 2021-12-11 11:03:23 -06:00
thecozies
43eba6e35e mario actions automatic documentation 2021-12-11 10:51:58 -06:00
thecozies
59bb53086f airborne documentation 2021-12-11 10:28:17 -06:00
thecozies
07e8a24d34 map parser documentation & formatting 2021-12-11 10:18:31 -06:00
thecozies
faf6929503 main.h documentation 2021-12-11 10:16:53 -06:00
thecozies
4ac365f34b macro special objects formatting changes 2021-12-11 10:16:06 -06:00
thecozies
7b3ad36cb0 level update defines 2021-12-11 10:14:05 -06:00
thecozies
fb40ca64d0 level geo 2021-12-11 10:06:39 -06:00
thecozies
e067673c51 interaction documentation 2021-12-11 10:05:08 -06:00
thecozies
0398a73f9b insn disasm 2021-12-11 09:52:32 -06:00
thecozies
771fd915af revert goddard to base decomp 2021-12-11 09:51:37 -06:00
thecozies
8f11b9de6a ingame menu 2021-12-11 09:49:52 -06:00
thecozies
13c10a047c only check if VC on render init 2021-12-11 09:49:10 -06:00
thecozies
8946885a22 hud 2021-12-11 09:34:49 -06:00
thecozies
295e535899 geo misc 2021-12-11 09:32:28 -06:00
thecozies
56da90ef85 game init 2021-12-11 09:23:55 -06:00
thecozies
5f8b0209a5 farcall helpers 2021-12-11 09:13:11 -06:00
thecozies
7227eb31fa envfx snow 2021-12-11 09:12:47 -06:00
thecozies
56e29c1dde bubbles 2021-12-11 09:12:10 -06:00
thecozies
6f43aa7032 debug updates 2021-12-11 09:11:14 -06:00
thecozies
679ae324b0 camera 2021-12-11 09:08:57 -06:00
thecozies
0e1a68bb65 behavior actions 2021-12-11 07:27:14 -06:00
thecozies
819c60a717 area 2021-12-11 07:25:22 -06:00
thecozies
76cafa71df _Putfld labeling 2021-12-11 07:22:40 -06:00
thecozies
ee81099336 Ldtob documentation 2021-12-11 07:22:17 -06:00
thecozies
e6d031c4c4 removed behaviors 2021-12-11 07:21:47 -06:00
thecozies
f86fa7fb3b graph node and mathutil 2021-12-11 07:21:09 -06:00
CrashOveride95
ad691a34c6 Fix crash with rumble + custom mario model 2021-12-10 08:34:07 -06:00
CrashOveride95
24687da134 Make ucode load from .o's (and also fix Super3D) 2021-12-10 08:33:21 -06:00
CrashOveride95
e7f6186580 Update UNF to latest master 2021-12-10 08:32:26 -06:00
CrashOveride95
4c779bdfed Fix console (lol) 2021-12-10 08:30:43 -06:00
CrashOveride95
2dc9446d4a Make ROM name smaller and change messages printed on build a bit 2021-12-10 08:30:19 -06:00
CrashOveride95
83ad6aec22 extra 2021-12-10 08:29:24 -06:00
n64
f2a8cf49de Refresh 15 2021-12-10 08:26:59 -06:00
Arceveti
9c6764ba1d Move GRUCODE define to proper location in makefile 2021-12-10 08:04:37 -06:00
CrashOveride95
baf071e527 Add librtc and fix some data declarations 2021-12-10 08:04:34 -06:00
thecozies
eee8af463d behaviors a - beta_fish 2021-12-10 05:41:59 -06:00
thecozies
ded4e11fbd mathutil updates (allow unused funcs) 2021-12-10 05:00:41 -06:00
thecozies
e535b4bdc1 mathutil updates 2021-12-09 12:59:29 -06:00
thecozies
3f5cf00f74 level script 2021-12-09 08:28:17 -06:00
thecozies
8f13447642 graph node 2021-12-09 07:57:58 -06:00
thecozies
719f5afdf9 message panel ucode small 2021-12-09 07:52:44 -06:00
thecozies
df88bb78f1 camera conf improved 2021-12-09 07:52:03 -06:00
thecozies
2df0dcfdde fixed model ids 2021-12-08 09:53:48 -06:00
thecozies
afa381564e egeo_layout 2021-12-08 09:48:33 -06:00
thecozies
d88a5b82b4 extended bounds 2021-12-08 09:39:09 -06:00
thecozies
a9796a7490 color helper functions 2021-12-08 09:38:29 -06:00
thecozies
c5c5d2c79b behavior script 2021-12-08 09:38:01 -06:00
thecozies
cd37e655f3 buffers: refresh 15 and revert to base decomp 2021-12-08 09:35:43 -06:00
thecozies
615d9abca3 book: slidec documentation 2021-12-08 09:34:41 -06:00
thecozies
e840d74b93 boot/memory.c reduced change load and added documentation 2021-12-08 09:34:12 -06:00
thecozies
e49404014d boot/main.c 2021-12-08 09:31:58 -06:00
thecozies
9ee39666d6 audio changes 2021-12-08 09:28:35 -06:00
thecozies
30bcccb686 sound player 2021-12-08 09:28:17 -06:00
thecozies
fd3de66b9f lib updates - rtc and rsp.s 2021-12-08 09:27:35 -06:00
thecozies
487187e3c6 includes: types.h 2021-12-08 09:26:57 -06:00
thecozies
624801a288 includes: surface type enums 2021-12-08 09:24:39 -06:00
thecozies
cefdec7023 includes: special presets 2021-12-08 09:24:10 -06:00
thecozies
d0382cd1be includes: sounds documentation 2021-12-08 09:23:49 -06:00
thecozies
e216b42f53 includes: sm64 types 2021-12-08 09:23:25 -06:00
thecozies
fad3406ab5 includes: segments and seq ids 2021-12-08 09:23:12 -06:00
thecozies
581b0cafc9 includes: rtc 2021-12-08 09:20:30 -06:00
thecozies
b384fb1b7b includes: object fields formatted to base decomp 2021-12-08 09:20:06 -06:00
thecozies
9c0878319f includes: object constants 2021-12-08 09:19:04 -06:00
thecozies
36c7c622e3 includes: movtex macros 2021-12-08 09:18:42 -06:00
thecozies
ac2852ba47 includes: model ids 2021-12-08 09:18:16 -06:00
thecozies
36001f7fd3 includes: mario geo switch case 2021-12-08 09:16:40 -06:00
thecozies
b6e18a95bf includes: mario anims 2021-12-08 09:16:23 -06:00
thecozies
142b79e310 includes level commands - macros 2021-12-08 09:16:00 -06:00
thecozies
d334579ad4 gfx dimensions 2021-12-08 09:14:50 -06:00
thecozies
381a0aed7c geo command enum 2021-12-08 09:12:55 -06:00
thecozies
984b117e77 farcall documentation 2021-12-08 09:12:28 -06:00
thecozies
4467ff1ed1 course table 2021-12-08 09:11:59 -06:00
thecozies
664fe248e1 colors 2021-12-08 09:11:30 -06:00
thecozies
26a064faa1 OS documentation 2021-12-08 09:10:51 -06:00
thecozies
37ca9f03b1 enhancement updates/removals 2021-12-08 09:10:27 -06:00
thecozies
bff61ca5ba separated config.h into multiple files 2021-12-08 09:09:40 -06:00
thecozies
91c169e693 behavior data documentation updates 2021-12-08 09:08:54 -06:00
thecozies
7741e5123e title screen bin id 2021-12-08 09:01:14 -06:00
thecozies
e9b2562694 segment2.c 2021-12-08 09:00:59 -06:00
thecozies
e4e8bc2d9a effect bin id 2021-12-08 08:44:53 -06:00
thecozies
e97695d3d8 vanilla demo data 2021-12-08 08:44:33 -06:00
thecozies
1e8a960a17 actor documentation: group headers 2021-12-08 08:44:10 -06:00
thecozies
455da1c3a8 actor documentation: whomp 2021-12-08 08:43:00 -06:00
thecozies
c24ef6562f actor documentation: water ring 2021-12-08 08:42:44 -06:00
thecozies
4b20d19989 actor documentation: unagi transparent star 2021-12-08 08:41:57 -06:00
thecozies
a091678009 actor documentation: ukiki 2021-12-08 08:41:42 -06:00
thecozies
b9773ffae3 actor documentation: tree + cam dist change 2021-12-08 08:41:18 -06:00
thecozies
80641a82c4 actor documentation: star 2021-12-08 08:40:26 -06:00
thecozies
2a87631629 actor documentation: rename stomp smoke 2021-12-08 08:40:08 -06:00
thecozies
1221e2944b actor documentation: transparent star 2021-12-08 08:39:51 -06:00
thecozies
0c83e15d04 actor documentation: sand 2021-12-08 08:39:24 -06:00
thecozies
63b9e771d7 actor documentation: poundable pole 2021-12-08 08:39:03 -06:00
thecozies
34cf317fc4 actor documentation: penguin 2021-12-08 08:38:48 -06:00
thecozies
e5ee3e89b2 actos DIALOG_INDICATOR 2021-12-08 08:38:02 -06:00
thecozies
aab3b8ecb0 actor documentation: h - m 2021-12-08 08:37:42 -06:00
thecozies
1080fc90e1 floomba 2021-12-08 08:35:47 -06:00
thecozies
1c11bb7ddc actor documentation: exclamation_box_outline 2021-12-08 08:35:29 -06:00
thecozies
2caed65be9 .gitignore + clownfont textures 2021-12-08 08:10:58 -06:00
thecozies
409bce0eca tools reset to base ultrasm64 2021-12-08 08:10:25 -06:00
thecozies
8d6d3ca69a actor documentation: door 2021-12-08 06:41:05 -06:00
thecozies
571388c821 actor documentation: dirt 2021-12-08 06:40:47 -06:00
thecozies
f5e9c0d710 acts: coin updates 2021-12-08 06:40:26 -06:00
thecozies
91b77c05dd actor documentation: checkboard platform 2021-12-08 06:39:52 -06:00
thecozies
8514254fd3 actor documentation: burn smoke 2021-12-08 06:39:08 -06:00
thecozies
4ed3975973 actors: replaced bin ids 2021-12-08 06:38:44 -06:00
thecozies
ddfc2f6609 actor documentation: breakable box 2021-12-08 06:33:24 -06:00
thecozies
5ae11f3bab actor documentation: bowser 2021-12-08 06:32:47 -06:00
thecozies
830e2ea81c actor documentation: boo castle 2021-12-08 06:32:18 -06:00
thecozies
0a5659ed09 actor documentation: boo 2021-12-08 06:32:04 -06:00
thecozies
e607106cd5 level documentation jrb - wf + entry/scripts 2021-12-08 06:30:57 -06:00
thecozies
7a54020fef level documentation hmc and intro 2021-12-08 06:12:32 -06:00
thecozies
72d0d35274 level documentation a - e 2021-12-08 06:03:40 -06:00
thecozies
696a87c9b0 n64_assert.s 2021-12-07 14:03:15 -06:00
thecozies
1e0db61191 Remove unneeded instructions in math.s 2021-12-07 14:02:50 -06:00
thecozies
6a1d1c489b Updated vscode settings 2021-12-07 14:01:47 -06:00
924 changed files with 44262 additions and 30680 deletions

29
.gitignore vendored
View File

@@ -71,9 +71,38 @@ build/*
!/assets/**/*custom*.bin
!/assets/**/*custom*/**/*.bin
!/textures/crash_custom/*.png
# Specific assets
!/actors/breath_meter/breath_meter_*.png
!/actors/coin/coin_*.ia8.png
!/textures/segment2/light_quarter_circle.ia16.png
!/textures/segment2/segment2.hud_char_j.rgba16.png
!/textures/segment2/segment2.hud_char_q.rgba16.png
!/textures/segment2/segment2.hud_char_v.rgba16.png
!/textures/segment2/segment2.hud_char_x.rgba16.png
!/textures/segment2/segment2.hud_char_z.rgba16.png
!/textures/segment2/segment2.umlaut_us.rgba16.png
!/textures/segment2/segment2.beta_key.rgba16.png
!/textures/segment2/segment2.decimal_point.rgba16.png
!/textures/segment2/segment2.exclamation.rgba16.png
!/textures/segment2/segment2.double_exclamation.rgba16.png
!/textures/segment2/segment2.question.rgba16.png
!/textures/segment2/segment2.ampersand.rgba16.png
!/textures/segment2/segment2.percent.rgba16.png
!/textures/segment2/segment2.minus.rgba16.png
!/textures/segment2/segment2.minus2.rgba16.png
!/textures/segment2/segment2.yellow_coin.rgba16.png
!/textures/segment2/segment2.blue_coin.rgba16.png
!/textures/segment2/segment2.red_coin.rgba16.png
!/textures/segment2/segment2.silver_coin.*.png
!/textures/segment2/shadow_quarter_circle_64.ia8.png
!/textures/segment2/shadow_quarter_square_64.ia8.png
# libultra
!/lib/**/*.o
!/lib/*.a
lib/libs2d_engine.a
!/lib/gcclib/*.a

View File

@@ -6,6 +6,7 @@
"${workspaceFolder}/include/n64/**",
"${workspaceFolder}/include/**",
"${workspaceFolder}/textures/**",
"${workspaceFolder}/build/us_n64/**",
"${workspaceFolder}/**"
],
"forcedInclude": [
@@ -17,7 +18,8 @@
"${workspaceFolder}/include/geo_commands.h",
"${workspaceFolder}/include/level_commands.h",
"${workspaceFolder}/include/segment_symbols.h",
"${workspaceFolder}/include/command_macros_base.h"
"${workspaceFolder}/include/command_macros_base.h",
"${workspaceFolder}/include/object_constants.h"
],
"defines": [
"TARGET_N64=1",

10
CHANGES
View File

@@ -1,3 +1,13 @@
Refresh 15 (mostly a hotfix for RSP microcode selection)
1.) Renamed frame_buffer funcs and _ZBUFFER (#1184)
2.) RSP Microcode Hotfix (#1183)
3.) Label osSetTimer.c (#1182)
4.) Fix styling (#1177)
5.) Rename all `FrameBuffer` variants to `Framebuffer` (#1176)
6.) Remove (WIP) from sh.
7.) Allow both archives and ELF objects to be patched (#1127)
Refresh 14
1.) Label whomp and some object fields (#1174)

217
Makefile
View File

@@ -67,25 +67,6 @@ endif
DEFINES += NO_ERRNO_H=1 NO_GZIP=1
COMPRESS ?= rnc1
$(eval $(call validate-option,COMPRESS,mio0 yay0 gzip rnc1 rnc2 uncomp))
ifeq ($(COMPRESS),gzip)
DEFINES += GZIP=1
else ifeq ($(COMPRESS),rnc1)
DEFINES += RNC1=1
else ifeq ($(COMPRESS),rnc2)
DEFINES += RNC2=1
else ifeq ($(COMPRESS),yay0)
DEFINES += YAY0=1
else ifeq ($(COMPRESS),mio0)
DEFINES += MIO0=1
else ifeq ($(COMPRESS),uncomp)
DEFINES += UNCOMPRESSED=1
endif
GZIPVER ?= std
$(eval $(call validate-option,GZIPVER,std libdef))
# VERSION - selects the version of the game to build
# jp - builds the 1996 Japanese version
# us - builds the 1996 North American version
@@ -95,22 +76,18 @@ VERSION ?= us
$(eval $(call validate-option,VERSION,jp us eu sh))
ifeq ($(VERSION),jp)
DEFINES += VERSION_JP=1
GRUCODE ?= f3dzex
DEFINES += VERSION_JP=1
else ifeq ($(VERSION),us)
DEFINES += VERSION_US=1
GRUCODE ?= f3dzex
DEFINES += VERSION_US=1
else ifeq ($(VERSION),eu)
DEFINES += VERSION_EU=1
GRUCODE ?= f3dzex
DEFINES += VERSION_EU=1
else ifeq ($(VERSION),sh)
DEFINES += VERSION_SH=1
GRUCODE ?= f3dzex
DEFINES += VERSION_SH=1
endif
DEBUG_MAP_STACKTRACE_FLAG := -D DEBUG_MAP_STACKTRACE
TARGET := sm64.$(VERSION)
TARGET := sm64
# GRUCODE - selects which RSP microcode to use.
@@ -119,6 +96,7 @@ TARGET := sm64.$(VERSION)
# l3dex2 - F3DEX2 version that only renders in wireframe
# f3dzex - newer, experimental microcode used in Animal Crossing
# super3d - extremely experimental version of Fast3D lacking many features for speed
GRUCODE ?= f3dzex
$(eval $(call validate-option,GRUCODE,f3dex f3dex2 f3dex2pl f3dzex super3d l3dex2))
ifeq ($(GRUCODE),f3dex) # Fast3DEX
@@ -150,15 +128,78 @@ endif
LINK_LIBRARIES = $(foreach i,$(LIBRARIES),-l$(i))
#==============================================================================#
# Optimization flags #
#==============================================================================#
# Default non-gcc opt flags
DEFAULT_OPT_FLAGS = -Ofast
# Main opt flags
GCC_MAIN_OPT_FLAGS = \
-Ofast \
--param case-values-threshold=20 \
--param max-completely-peeled-insns=10 \
--param max-unrolled-insns=10 \
-finline-limit=1 \
-freorder-blocks-algorithm=simple \
-ffunction-sections \
-fdata-sections
# Surface Collision
GCC_COLLISION_OPT_FLAGS = \
-Ofast \
--param case-values-threshold=20 \
--param max-completely-peeled-insns=100 \
--param max-unrolled-insns=100 \
-finline-limit=0 \
-fno-inline \
-freorder-blocks-algorithm=simple \
-ffunction-sections \
-fdata-sections \
-falign-functions=32
# Math Util
GCC_MATH_UTIL_OPT_FLAGS = \
-Ofast \
-fno-unroll-loops \
-fno-peel-loops \
--param case-values-threshold=20 \
-ffunction-sections \
-fdata-sections \
-falign-functions=32
# - setting any sort of -finline-limit has shown to worsen performance with math_util.c,
# lower values were the worst, the higher you go - the closer performance gets to not setting it at all
# Rendering graph node
GCC_GRAPH_NODE_OPT_FLAGS = \
-Ofast \
--param case-values-threshold=20 \
--param max-completely-peeled-insns=100 \
--param max-unrolled-insns=100 \
-finline-limit=0 \
-freorder-blocks-algorithm=simple \
-ffunction-sections \
-fdata-sections \
-falign-functions=32
#==============================================================================#
ifeq ($(COMPILER),gcc)
NON_MATCHING := 1
MIPSISET := -mips3
OPT_FLAGS := -Ofast
OPT_FLAGS := $(GCC_MAIN_OPT_FLAGS)
COLLISION_OPT_FLAGS = $(GCC_COLLISION_OPT_FLAGS)
MATH_UTIL_OPT_FLAGS = $(GCC_MATH_UTIL_OPT_FLAGS)
GRAPH_NODE_OPT_FLAGS = $(GCC_GRAPH_NODE_OPT_FLAGS)
else ifeq ($(COMPILER),clang)
NON_MATCHING := 1
# clang doesn't support ABI 'o32' for 'mips3'
MIPSISET := -mips2
OPT_FLAGS := -Ofast
OPT_FLAGS := $(DEFAULT_OPT_FLAGS)
COLLISION_OPT_FLAGS = $(DEFAULT_OPT_FLAGS)
MATH_UTIL_OPT_FLAGS = $(DEFAULT_OPT_FLAGS)
GRAPH_NODE_OPT_FLAGS = $(DEFAULT_OPT_FLAGS)
endif
@@ -174,25 +215,14 @@ endif
ifeq ($(NON_MATCHING),1)
DEFINES += NON_MATCHING=1 AVOID_UB=1
COMPARE := 0
endif
# COMPARE - whether to verify the SHA-1 hash of the ROM after building
# 1 - verifies the SHA-1 hash of the selected version of the game
# 0 - does not verify the hash
COMPARE ?= 0
$(eval $(call validate-option,COMPARE,0 1))
TARGET_STRING := sm64.$(VERSION).$(CONSOLE).$(GRUCODE)
# If non-default settings were chosen, disable COMPARE
ifeq ($(filter $(TARGET_STRING), sm64.jp.f3d_old sm64.us.f3d_old sm64.eu.f3d_new sm64.sh.f3d_new),)
COMPARE := 0
endif
TARGET_STRING := sm64
# UNF - whether to use UNFLoader flashcart library
# 1 - includes code in ROM
# 0 - does not
# 0 - does not
UNF ?= 0
$(eval $(call validate-option,UNF,0 1))
ifeq ($(UNF),1)
@@ -204,7 +234,7 @@ endif
# ISVPRINT - whether to fake IS-Viewer presence,
# allowing for usage of CEN64 (and possibly Project64) to print messages to terminal.
# 1 - includes code in ROM
# 0 - does not
# 0 - does not
ISVPRINT ?= 0
$(eval $(call validate-option,ISVPRINT,0 1))
ifeq ($(ISVPRINT),1)
@@ -222,7 +252,7 @@ endif
# HVQM - whether to use HVQM fmv library
# 1 - includes code in ROM
# 0 - does not
# 0 - does not
HVQM ?= 0
$(eval $(call validate-option,HVQM,0 1))
ifeq ($(HVQM),1)
@@ -230,9 +260,34 @@ ifeq ($(HVQM),1)
SRC_DIRS += src/hvqm
endif
BUILD_DIR_BASE := build
# BUILD_DIR is the location where all build artifacts are placed
BUILD_DIR := $(BUILD_DIR_BASE)/$(VERSION)_$(CONSOLE)
COMPRESS ?= rnc1
$(eval $(call validate-option,COMPRESS,mio0 yay0 gzip rnc1 rnc2 uncomp))
ifeq ($(COMPRESS),gzip)
DEFINES += GZIP=1
LIBZRULE := $(BUILD_DIR)/libz.a
LIBZLINK := -lz
else ifeq ($(COMPRESS),rnc1)
DEFINES += RNC1=1
else ifeq ($(COMPRESS),rnc2)
DEFINES += RNC2=1
else ifeq ($(COMPRESS),yay0)
DEFINES += YAY0=1
else ifeq ($(COMPRESS),mio0)
DEFINES += MIO0=1
else ifeq ($(COMPRESS),uncomp)
DEFINES += UNCOMPRESSED=1
endif
GZIPVER ?= std
$(eval $(call validate-option,GZIPVER,std libdef))
# GODDARD - whether to use libgoddard (Mario Head)
# 1 - includes code in ROM
# 0 - does not
# 0 - does not
GODDARD ?= 0
$(eval $(call validate-option,GODDARD,0 1))
ifeq ($(GODDARD),1)
@@ -248,27 +303,6 @@ endif
# Whether to colorize build messages
COLOR ?= 1
# display selected options unless 'make clean' or 'make distclean' is run
ifeq ($(filter clean distclean,$(MAKECMDGOALS)),)
$(info ==== Build Options ====)
$(info Version: $(VERSION))
$(info Microcode: $(GRUCODE))
$(info Console: $(CONSOLE))
$(info Target: $(TARGET))
ifeq ($(COMPARE),1)
$(info Compare ROM: yes)
else
$(info Compare ROM: no)
endif
ifeq ($(NON_MATCHING),1)
$(info Build Matching: no)
else
$(info Build Matching: yes)
endif
$(info =======================)
endif
#==============================================================================#
# Universal Dependencies #
#==============================================================================#
@@ -314,7 +348,7 @@ endif
BUILD_DIR_BASE := build
# BUILD_DIR is the location where all build artifacts are placed
BUILD_DIR := $(BUILD_DIR_BASE)/$(VERSION)
BUILD_DIR := $(BUILD_DIR_BASE)/$(VERSION)_$(CONSOLE)
ROM := $(BUILD_DIR)/$(TARGET_STRING).z64
ELF := $(BUILD_DIR)/$(TARGET_STRING).elf
LIBZ := $(BUILD_DIR)/libz.a
@@ -430,9 +464,11 @@ DEF_INC_CFLAGS := $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(C_DEFINES)
# C compiler options
CFLAGS = -G 0 $(OPT_FLAGS) $(TARGET_CFLAGS) $(MIPSISET) $(DEF_INC_CFLAGS)
ifeq ($(COMPILER),gcc)
CFLAGS += -mno-shared -march=vr4300 -mfix4300 -mabi=32 -mhard-float -mdivide-breaks -fno-stack-protector -fno-common -fno-zero-initialized-in-bss -fno-PIC -mno-abicalls -fno-strict-aliasing -fno-inline-functions -ffreestanding -fwrapv -Wall -Wextra -Wno-missing-braces
CFLAGS += -mno-shared -march=vr4300 -mfix4300 -mabi=32 -mhard-float -mdivide-breaks -fno-stack-protector -fno-common -fno-zero-initialized-in-bss -fno-PIC -mno-abicalls -fno-strict-aliasing -fno-inline-functions -ffreestanding -fwrapv -Wall -Wextra
CFLAGS += -Wno-missing-braces
else ifeq ($(COMPILER),clang)
CFLAGS += -target mips -mabi=32 -G 0 -mhard-float -fomit-frame-pointer -fno-stack-protector -fno-common -I include -I src/ -I $(BUILD_DIR)/include -fno-PIC -mno-abicalls -fno-strict-aliasing -fno-inline-functions -ffreestanding -fwrapv -Wall -Wextra -Wno-missing-braces -fno-jump-tables
CFLAGS += -mfpxx -target mips -mabi=32 -G 0 -mhard-float -fomit-frame-pointer -fno-stack-protector -fno-common -I include -I src/ -I $(BUILD_DIR)/include -fno-PIC -mno-abicalls -fno-strict-aliasing -fno-inline-functions -ffreestanding -fwrapv -Wall -Wextra
CFLAGS += -Wno-missing-braces
else
CFLAGS += -non_shared -Wab,-r4300_mul -Xcpluscomm -Xfullwarn -signed -32
endif
@@ -475,7 +511,7 @@ else
RSPASM := $(TOOLS_DIR)/armips
endif
ENDIAN_BITWIDTH := $(BUILD_DIR)/endian-and-bitwidth
EMULATOR = ~/Downloads/mupen64plus/mupen64plus-gui
EMULATOR = mupen64plus
EMU_FLAGS =
LOADER = loader64
LOADER_FLAGS = -vwf
@@ -488,7 +524,7 @@ RED := \033[0;31m
GREEN := \033[0;32m
BLUE := \033[0;34m
YELLOW := \033[0;33m
BLINK := \033[33;5m
BLINK := \033[32;5m
endif
# For non-IDO, use objcopy instead of extract_data_for_mio
@@ -506,13 +542,12 @@ endef
#==============================================================================#
all: $(ROM)
ifeq ($(COMPARE),1)
@$(PRINT) "$(GREEN)Checking if ROM matches.. $(NO_COL)\n"
@$(SHA1SUM) --quiet -c $(TARGET).sha1 && $(PRINT) "$(TARGET): $(GREEN)OK$(NO_COL)\n" || ($(PRINT) "$(YELLOW)Building the ROM file has succeeded, but does not match the original ROM.\nThis is expected, and not an error, if you are making modifications.\nTo silence this message, use 'make COMPARE=0.' $(NO_COL)\n" && false)
else
@$(SHA1SUM) $(ROM)
@$(PRINT) "${GREEN}Build succeeded.$(NO_COL)\n"
endif
@$(PRINT) "${BLINK}Build succeeded.\n$(NO_COL)"
@$(PRINT) "==== Build Options ====$(NO_COL)\n"
@$(PRINT) "${GREEN}Version: $(BLUE)$(VERSION)$(NO_COL)\n"
@$(PRINT) "${GREEN}Microcode: $(BLUE)$(GRUCODE)$(NO_COL)\n"
@$(PRINT) "${GREEN}Console: $(BLUE)$(CONSOLE)$(NO_COL)\n"
clean:
$(RM) -r $(BUILD_DIR_BASE)
@@ -525,6 +560,10 @@ distclean: clean
test: $(ROM)
$(EMULATOR) $(EMU_FLAGS) $<
test-pj64: $(ROM)
wine ~/Desktop/new64/Project64.exe $<
# someone2639
load: $(ROM)
$(LOADER) $(LOADER_FLAGS) $<
@@ -534,7 +573,7 @@ libultra: $(BUILD_DIR)/libultra.a
$(BUILD_DIR)/asm/boot.o: $(IPL3_RAW_FILES)
$(BUILD_DIR)/src/game/crash_screen.o: $(CRASH_TEXTURE_C_FILES)
$(BUILD_DIR)/src/game/version.o: $(BUILD_DIR)/src/game/version_data.h
$(BUILD_DIR)/lib/rsp.o: $(BUILD_DIR)/rsp/rspboot.bin $(BUILD_DIR)/rsp/audio.bin
$(BUILD_DIR)/lib/aspMain.o: $(BUILD_DIR)/rsp/audio.bin
$(SOUND_BIN_DIR)/sound_data.o: $(SOUND_BIN_DIR)/sound_data.ctl $(SOUND_BIN_DIR)/sound_data.tbl $(SOUND_BIN_DIR)/sequences.bin $(SOUND_BIN_DIR)/bank_sets
$(BUILD_DIR)/levels/scripts.o: $(BUILD_DIR)/include/level_headers.h
@@ -576,9 +615,17 @@ $(BUILD_DIR)/src/usb/usb.o: OPT_FLAGS := -O0
$(BUILD_DIR)/src/usb/usb.o: CFLAGS += -Wno-unused-variable -Wno-sign-compare -Wno-unused-function
$(BUILD_DIR)/src/usb/debug.o: OPT_FLAGS := -O0
$(BUILD_DIR)/src/usb/debug.o: CFLAGS += -Wno-unused-parameter -Wno-maybe-uninitialized
$(BUILD_DIR)/src/audio/*.o: OPT_FLAGS := -Os -fno-jump-tables
$(BUILD_DIR)/src/engine/math_util.o: OPT_FLAGS := -Ofast -fno-unroll-loops -fno-peel-loops --param case-values-threshold=20
$(BUILD_DIR)/src/game/rendering_graph_node.o: OPT_FLAGS := -Ofast --param case-values-threshold=20
# File specific opt flags
$(BUILD_DIR)/src/audio/*.o: OPT_FLAGS := -Os -fno-jump-tables
$(BUILD_DIR)/src/engine/surface_collision.o: OPT_FLAGS := $(COLLISION_OPT_FLAGS)
$(BUILD_DIR)/src/engine/math_util.o: OPT_FLAGS := $(MATH_UTIL_OPT_FLAGS)
$(BUILD_DIR)/src/game/rendering_graph_node.o: OPT_FLAGS := $(GRAPH_NODE_OPT_FLAGS)
# $(info OPT_FLAGS: $(OPT_FLAGS))
# $(info COLLISION_OPT_FLAGS: $(COLLISION_OPT_FLAGS))
# $(info MATH_UTIL_OPT_FLAGS: $(MATH_UTIL_OPT_FLAGS))
# $(info GRAPH_NODE_OPT_FLAGS: $(GRAPH_NODE_OPT_FLAGS))
ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) asm/debug $(GODDARD_SRC_DIRS) $(LIBZ_SRC_DIRS) $(ULTRA_BIN_DIRS) $(BIN_DIRS) $(TEXTURE_DIRS) $(TEXT_DIRS) $(SOUND_SAMPLE_DIRS) $(addprefix levels/,$(LEVEL_DIRS)) rsp include) $(YAY0_DIR) $(addprefix $(YAY0_DIR)/,$(VERSION)) $(SOUND_BIN_DIR) $(SOUND_BIN_DIR)/sequences/$(VERSION)
@@ -589,7 +636,7 @@ $(BUILD_DIR)/include/text_strings.h: $(BUILD_DIR)/include/text_menu_strings.h
$(BUILD_DIR)/src/menu/file_select.o: $(BUILD_DIR)/include/text_strings.h
$(BUILD_DIR)/src/menu/star_select.o: $(BUILD_DIR)/include/text_strings.h
$(BUILD_DIR)/src/game/ingame_menu.o: $(BUILD_DIR)/include/text_strings.h
$(BUILD_DIR)/src/game/puppycam2.o: $(BUILD_DIR)/include/text_strings.h
$(BUILD_DIR)/src/game/puppycam2.o: $(BUILD_DIR)/include/text_strings.h
@@ -805,7 +852,7 @@ $(BUILD_DIR)/asm/debug/map.o: asm/debug/map.s $(BUILD_DIR)/sm64_prelim.elf
# Link SM64 ELF file
$(ELF): $(BUILD_DIR)/sm64_prelim.elf $(BUILD_DIR)/asm/debug/map.o $(O_FILES) $(YAY0_OBJ_FILES) $(SEG_FILES) $(BUILD_DIR)/$(LD_SCRIPT) undefined_syms.txt $(BUILD_DIR)/libz.a $(BUILD_DIR)/libgoddard.a
@$(PRINT) "$(GREEN)Linking ELF file: $(BLUE)$@ $(NO_COL)\n"
$(V)$(LD) --gc-sections -L $(BUILD_DIR) -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -T goddard.txt -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(addprefix -R ,$(SEG_FILES)) -o $@ $(O_FILES) -L$(LIBS_DIR) -l$(ULTRALIB) -Llib $(LINK_LIBRARIES) -u sprintf -u osMapTLB -Llib/gcclib/$(LIBGCCDIR) -lgcc
$(V)$(LD) --gc-sections -L $(BUILD_DIR) -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -T goddard.txt -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(addprefix -R ,$(SEG_FILES)) -o $@ $(O_FILES) -L$(LIBS_DIR) -l$(ULTRALIB) -Llib $(LINK_LIBRARIES) -u sprintf -u osMapTLB -Llib/gcclib/$(LIBGCCDIR) -lgcc -lrtc
# Build ROM
$(ROM): $(ELF)
@@ -814,7 +861,7 @@ ifeq ($(CONSOLE),n64)
$(V)$(OBJCOPY) --pad-to=0x101000 --gap-fill=0xFF $< $@ -O binary
else ifeq ($(CONSOLE),bb)
$(V)$(OBJCOPY) --gap-fill=0x00 $< $@ -O binary
$(V)dd if=$@ of=tmp bs=16K conv=sync
$(V)dd if=$@ of=tmp bs=16K conv=sync status=none
$(V)mv tmp $@
endif
$(V)$(N64CKSUM) $@

View File

@@ -76,7 +76,7 @@ MOLE_DIRS := monty_mole_hole monty_mole smoke ukiki fwoosh
LAKITU_DIRS := lakitu_cameraman toad mips boo_castle
PEACH_DIRS := bird peach yoshi
BOWSER_DIRS := bowser_flame impact_ring yellow_sphere bowser bomb impact_smoke
MARIO_DIRS := mario bubble walk_smoke burn_smoke stomp_smoke water_wave sparkle water_splash white_particle_small sparkle_animation
MARIO_DIRS := mario bubble walk_smoke burn_smoke small_water_splash water_wave sparkle water_splash white_particle_small sparkle_animation
# Actor Textures
AMP_CHUCKYA_TEXTURES := $(foreach dir,$(AMP_DIRS), $(wildcard actors/$(dir)/*.png))

View File

@@ -1,36 +1,55 @@
# ![](https://i.imgur.com/CeOukzk.gif) HackerSM64 ![](https://i.imgur.com/s0LUbTo.gif)
**[Thank you to Kaze Emanuar for these major optimizations!](https://www.youtube.com/watch?v=uYPH-NH3B6k)
**AFTER CLONING THE REPO, CHECK OUT THE `include/config.h` FILE BEFORE ANYTHING ELSE! IT THERE'S A LOT OF STUFF IN THIS REPO THAT CAN BE TOGGLED THERE.**
**AFTER CLONING THE REPO, CHECK OUT THE `include/config` FOLDER BEFORE ANYTHING ELSE! THERE'S A LOT OF STUFF IN THIS REPO THAT CAN BE TOGGLED THERE.**
HackerSM64 now has a discord server! https://discord.gg/brETAakcXr
This repo needs BOTH an US ROM and a JP ROM in order to build. Place baserom.us.z64 in the repo as usual and ALSO place baserom.jp.z64
This repo requires BOTH a US ROM and a JP ROM in order to build. Place baserom.us.z64 in the repo as usual and ALSO include baserom.jp.z64.
This repo needs gcc in order to be able to build it. To install it, run `sudo apt install gcc-mips-linux-gnu`
This is a fork of the ultrasm64 repo by CrashOveride which includes the following commonly used patches (patches marked with `*` are toggleable in `config.h`):
This is a fork of the ultrasm64 repo by CrashOveride which includes the following commonly used patches (patches marked with `*` are toggleable in the config files):
**Credits**
- **ArcticJaguar725**: Most audio configuration and layout changes, colored ia4 text, floombas, various bugfixes, and more
- **CowQuack**: Adjustable skybox sizes, area-specific skybox function
- **thecozies**: Water surface types, general maintenance, and time
- **MrComit**: General use object defines, JUMP_KICK_FIX, LEDGE_GRABS_CHECK_SLOPE_ANGLE
- **aglab2**: Bugfixes (particularly puppycam), refactor stuff
- **someone2639**: math.s and crash screen disam, stack trace, map packing, shiftable segments 2, S2DEX engine
- **Arthurtilly**: Platform Displacement 2
- **Fazana**: PuppyLib, ucode swapping, audio load time optimisations (with Arctic), general hacker qol improvements, visual debug
- **Reonu**: Starting the project/repo, widescreen, reonucam, various defines for hacker QoL
- **JoshDuMan**: Decomp guy, general assistance
- **Arceveti**: Silhouette, shadow optimisation, better hanging, breath meter
- **axollyon**: Console testing, bugfixes, idea-guying, and had a hand in silhouettes
- **Wiseguy**: World scale reimplementation, silhouette, graph node optimisations, instant input patch, cake screen fix, segmented code support, and various optimizations/fixes
- **Kaze**: Graph node optimisations, automatic optimal collision distance
- **Pyro Jay**: Texture improvements, repo banner art, some QoL stuff
- **CrashOveride**: creating the [ultrasm64](https://github.com/CrashOveride95/ultrasm64) repo
- **falcobuster**: Original coordinate overflow fix (world scale), ASM version of extended bounds
- **anonymous_moose**: porting falco's extended bounds to decomp
Thanks to Frame#5375 and AloXado320 for also helping with silhouette stuff
**Lighting Engine by Wiseguy**
- Lighting Engine is available on a separate branch `(lighting-engine)`. Instructions on how to use it are in the readme of that branch.
- Lighting Engine is available on a separate branch ([base/lighting-engine](https://github.com/Reonu/HackerSM64/tree/base/lighting-engine)). Instructions on how to use it are in the readme of that branch.
- Alternatively, the main repo has `Puppylights` available, which is a more lightweight, but limited lighting library intended to be used to modify existing light properties. You can look at `puppylights.c` to find out how to use it.
**Puppycam**
- Puppycam is available on the master branch now, you can toogle it in config.h. *
- Puppycam is available on the master branch now, you can toggle it in `config/config_camera.h`. *
**Collision:**
- Slope fix and exposed ceilings fix
- No false ledgegrabs fix *
- Jump kick fix *
- 46 degree wallkicks *
- Pole fix
- Configurable wallkick angle, in degrees *
- Possibility of disabling BLJs *
- Hanging fix (mario can grab hangable ceilings from any state, instead of only jump or double jump) *
- Hanging fix (Mario can grab hangable ceilings from any state, instead of only jump or double jump) *
- Increased maximum pole length (The game will read bparam1 and bparam2 together as a single value, so you can have a very long pole) *
- Platform Displacement 2 by Arthurtilly *
- Water Surface Type patch by thecozies
- Better Wall Collision With Rounded Corners by FramePerfection, merged by Cheezepin & Arceveti
- Better wall collision with rounded corners by FramePerfection, merged by Cheezepin & Arceveti
- Automatically calculate the optimal collision distance for an object based on its vertices, by Kaze *
**Common Hack Changes:**
@@ -43,8 +62,8 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
- Removed course-specific camera processing *
- You can increase the number of frames that you have to perform a firsty *
- Ability to set Mario's movement speed when hanging from a ceiling *
- Tighter hanging controls (mario will face the direction of the analog stick directly while hanging from a ceiling) *
- reonucam3: custom camera by me. This is included as a .patch file in the enhancements folder, you need to apply it if you want this camera.
- Tighter hanging controls (Mario will face the direction of the analog stick directly while hanging from a ceiling) *
- reonucam3: custom camera by Reonu. This is included as a .patch file in the enhancements folder, you need to apply it if you want this camera.
This video shows a rundown of the features: https://youtu.be/TQNkznX9Z3k
- Ability to disable Mario getting suck in snow or sand
@@ -53,33 +72,34 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
- Debug mode: prints mario's coordinates, angle and speed, and a FPS counter.
- Automatic console/emulator detection. If emulator is detected, LODs are disabled. *
- Ability to configure whether there's a 100 coin star at all and how many coins are required to spawn it *
- Ability to easily change the warp that EXIT COURSE takes you to via config.h, or disable it entirely. *
- 16 bit model IDs by someone2639. This means you can have up to 65536 models (lol). You can set the maximum number of model IDs in `config.h`.
- Ability to easily change the warp that EXIT COURSE takes you to via `config/config_menu.h`, or disable it entirely. *
- 16 bit model IDs by someone2639. This means you can have up to 65536 models (lol). You can set the maximum number of model IDs in `config/config_game.h`.
- Apply_patch.sh improved
- Removed the ifdef hell in `file_select.c` and `ingame_menu.c`
- Added Blake's custom function for object model stuff: `obj_set_model` and `obj_has_model`
- Added function to get the model ID from an object: `obj_get_model_id` (by Arceveti)
- The "far" variable is now u16, allowing you to increase the farclip (the max distance at which geometry is rendered). However, when increasing the farclip, make sure to increase the nearclip by the same ratio, or rendering will break on console and LLE plugins.
- Many general use defines for object struct members, meant for use in custom object behaviors. Check `object_fields.h` for more info on this. (By MrComit)
- Many general use defines for object struct members, meant for use in custom object behaviors. Check `include/object_fields.h` for more info on this. (By MrComit)
- Included `actors/group0.c` in `behavior_data.c`
- The internal ROM name is now set with a define in `config.h` to make it simpler
- The internal ROM name is now set with a define in `config/config_rom.h` to make it simpler
- There is a `gIsConsole` variable that is 1 when running on console and 0 when running on emulator. This way you can wrap your code in a console check.
- Expanded audio heap allows for a larger concurrent note count and the importing of more m64 sequences and sound banks (By ArcticJaguar725) *
- You can set a test level in config.h in order to boot straight into it, so you can quickly test the level you're working on. *
- Allows all surfaces in the game to have a `force` parameter. Activating this doesn't REQUIRE you to set `force` for every surface: If you don't set, it will default to 0x0000 rather than crashing. Increases RAM usage of collision. *
- You can set a test level in `config/config_debug.h` in order to boot straight into it, so you can quickly test the level you're working on. *
- Allow all surfaces in the game to have a `force` parameter. Activating this doesn't REQUIRE you to set `force` for every surface: If you don't set, it will default to 0x0000 rather than crashing. Increases RAM usage of collision. *
- The clown font includes the entire English alphabet.
- Colored ia4 text support. Format: `"@XXXXXXXX[YOUR TEXT]@--------"` (By ArcticJaguar725)
- Example Text: `"@FF0000FFRED @00FF00FFGREEN @0000FFFFBLUE @FFFFFF00INVISIBLE @--------NORMAL"`
- NOTE: It is not mandatory to reset the text color with `"@--------"`, but text will need to be recolored each time it scrolls in a dialog box, or the custom color will reset.
- Toggle visiblity of collision surfaces and object hitboxes with Visual Surface Debug. `config.h` has VISUAL_DEBUG which can be turned on to enable this feature.
- Toggle visiblity of collision surfaces and object hitboxes with Visual Surface Debug. `config/config_debug.h` has VISUAL_DEBUG which can be turned on to enable this feature.
- Workaround for infinite death loops caused by using the wrong warp type for death warps. Mario's HP will be restored when being warped to any warp if (and only if) he was warped while dead. *
**Other Bugfixes:**
- Castle music fix (Fixes the castle music sometimes triggering after getting a dialog) *
- bparam4 fix (the game no longer uses bparam4 to check if an object is mario and therefore you can safely use it)
- Castle music fix (fixes the castle music sometimes triggering after getting a dialog) *
- bparam4 fix (the game no longer uses bparam4 to check if an object is Mario and therefore you can safely use it)
- Instant warp offset fix (makes the instant warp offset work even when warping to a different area) *
- haveyourcake, also known as cake screen fix. Made by Wiseguy and ported/PR'd by Cheezepin
- Tree particle fix (Whether a tree uses snow particles or not is decided via the model IDs instead of the course number) *
- Coordinate overflow fix by falcobuster. Your levels will render correctly on console and LLE emulators even when using 2x or 4x bounds, while not hurting anything on HLE plugins. *This is automatic now, you don't have to set WORLD_SCALE manually.*
- Adjustable world scale. You can change the geometry scaling of your level, which allow large levels to render correctly on console and LLE emulators while not hurting anything on HLE plugins.
- A couple vanilla texture fixes
- Smoke fix (the smoke texture uses the correct texture format)
@@ -88,11 +108,14 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
- This means that you'll have to do your framebuffer effects on buffer 0 for emulator, but NOT for console. You can use the `gIsConsole` variable to check for console when doing your framebuffer effects.
- Widescreen (16:9) support toggleable by pressing `L` in the pause menu. *
- S2DEX engine by someone2639! To use it, compile with `make TEXT_ENGINE=s2dex_text_engine` or just set `TEXT_ENGINE` to `s2dex_text_engine` in the makefile.
- ia8 coins (64x64), the vanilla coin texture is upgraded to accomodate. *
- ia8 (64x64) coins, the vanilla coin texture is upgraded to accomodate. *
- ia8 (64x64) 30 FPS coins (Textures by InTheBeef, cleaned up by Arceveti). *
- Floombas! Simply just retextured goombas with customizable behaviors (does not overwrite standard goombas). *
- HD texture support for intro splash screen (with floombas if enabled). *
- Mario's silhouette is shown when behind most surfaces (By Frame#5375, Axollyon, AloXado320, Wiseguy, Arceveti) *
- Skybox size modifier. You can have 2x, 3x and 4x size skyboxes (you can select the skybox size in `config.h`.) Please note that this might affect console performance, especially 4x mode. 2x or 3x mode is recommended if aiming for console. By CowQuack *
- Skybox size modifier. You can have 2x, 3x and 4x size skyboxes (you can select the skybox size in `config/config_graphics.h`.) Please note that this might affect console performance, especially 4x mode. 2x or 3x mode is recommended if aiming for console. By CowQuack *
- You can set the black border size to different values for console and emulator. It's set to 0 by default for both. *
- This repo supports much better implementation of reverb over vanilla's fake echo reverb. Great for caves or eerie levels, as well as just a better audio experience in general. See `audio/synthesis.c` for more configuration info. (By ArcticJaguar725) *
- This repo supports a much better implementation of reverb over vanilla's fake echo reverb. Great for caves or eerie levels, as well as just a better audio experience in general. See `audio/synthesis.c` for more details and configuration info. (By ArcticJaguar725) *
- Fazana's "puppyprint" text engine. *
- Use `print_small_text` to print normal text. The two last params are aligment and how many characters to print (-1 means PRINT_ALL).
- Use `render_multi_image` to draw large texture rectangles consisting of multiple images on the screen.
@@ -175,7 +198,9 @@ To switch to no compression, run make with the ``COMPRESS=uncomp`` argument.
Q: Why in the hell are you bundling your own build of ``ld``?
A: Newer binutils (Like the one bundled with Ubuntu, 2.34) break linking with libultra builds due to local asm symbols.
This puts me at a crossroads of either touching leaked code and requiring GCC, or just using an older linker that works just fine.
I went with the latter.
Thanks to "someone2639" for this hacky-ass idea

1
VERSION.txt Normal file
View File

@@ -0,0 +1 @@
v2.0.0

View File

@@ -4,7 +4,7 @@ const GeoLayout boo_geo[] = {
GEO_OPEN_NODE(),
GEO_SCALE(0x00, 26214),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_update_layer_transparency),
GEO_ASM(GEO_TRANSPARENCY_MODE_NORMAL, geo_update_layer_transparency),
GEO_SWITCH_CASE(2, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, boo_seg5_dl_0500C1B0),

View File

@@ -4,7 +4,7 @@ const GeoLayout boo_castle_geo[] = {
GEO_OPEN_NODE(),
GEO_SCALE(0x00, 26214),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_update_layer_transparency),
GEO_ASM(GEO_TRANSPARENCY_MODE_NORMAL, geo_update_layer_transparency),
GEO_SWITCH_CASE(2, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, boo_castle_seg6_dl_06017CE0),

View File

@@ -332,7 +332,7 @@ const GeoLayout bowser_shadow_geo[] = {
const GeoLayout bowser_geo[] = {
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_update_layer_transparency),
GEO_ASM(GEO_TRANSPARENCY_MODE_NORMAL, geo_update_layer_transparency),
GEO_SWITCH_CASE(3, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_NODE_START(),
@@ -362,7 +362,7 @@ const GeoLayout bowser_geo[] = {
const GeoLayout bowser_geo_no_shadow[] = {
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_update_layer_transparency),
GEO_ASM(GEO_TRANSPARENCY_MODE_NORMAL, geo_update_layer_transparency),
GEO_SWITCH_CASE(3, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_NODE_START(),

View File

@@ -1,7 +1,7 @@
// Breakable Box
// 0x08012D70 - 0x08012DF4
const Collision breakable_box_seg8_collision_08012D70[] = {
const Collision breakable_box_seg8_collision[] = {
COL_INIT(),
COL_VERTEX_INIT(0x8),
COL_VERTEX(-100, 0, -100),
@@ -29,3 +29,6 @@ const Collision breakable_box_seg8_collision_08012D70[] = {
COL_TRI_STOP(),
COL_END(),
};
UNUSED static const u32 breakable_box_unused_1 = 0;
UNUSED static const u64 breakable_box_unused_2 = 0;

View File

@@ -2,12 +2,12 @@
const GeoLayout breakable_box_geo[] = {
GEO_CULLING_RADIUS(500),
GEO_OPEN_NODE(),
GEO_SHADOW(SHADOW_SQUARE_PERMANENT, 0xB4, 240),
GEO_SHADOW(SHADOW_SQUARE_PERMANENT, 0xA0, 240),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(2, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_08012D20),
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_08012D48),
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_crazy_box),
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_cork_box),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
@@ -15,13 +15,13 @@ const GeoLayout breakable_box_geo[] = {
};
// 0x0F000610
const GeoLayout breakable_box_small_geo[] = {
const GeoLayout breakable_box_no_shadow_geo[] = {
GEO_CULLING_RADIUS(500),
GEO_OPEN_NODE(),
GEO_SWITCH_CASE(2, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_08012D20),
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_08012D48),
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_crazy_box),
GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_cork_box),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),

View File

@@ -1,7 +1,7 @@
// Breakable Box
// 0x08011A78
static const Lights1 breakable_box_seg8_lights_08011A80 = gdSPDefLights1(
static const Lights1 breakable_box_seg8_lights_default = gdSPDefLights1(
0x3f, 0x3f, 0x3f,
0xff, 0xff, 0xff, 0x28, 0x28, 0x28
);
@@ -17,7 +17,7 @@ ALIGNED8 static const Texture breakable_box_seg8_texture_08012290[] = {
};
// 0x08012A90
static const Vtx breakable_box_seg8_vertex_08012A90[] = {
static const Vtx breakable_box_seg8_vertex[] = {
{{{ -100, 0, -100}, 0, { 992, 0}, {0x81, 0x00, 0x00, 0xff}}},
{{{ -100, 0, 100}, 0, { 992, 992}, {0x81, 0x00, 0x00, 0xff}}},
{{{ -100, 200, 100}, 0, { 0, 992}, {0x81, 0x00, 0x00, 0xff}}},
@@ -33,10 +33,6 @@ static const Vtx breakable_box_seg8_vertex_08012A90[] = {
{{{ 100, 200, 100}, 0, { 0, 992}, {0x7f, 0x00, 0x00, 0xff}}},
{{{ 100, 0, 100}, 0, { 992, 992}, {0x7f, 0x00, 0x00, 0xff}}},
{{{ 100, 0, -100}, 0, { 992, 0}, {0x7f, 0x00, 0x00, 0xff}}},
};
// 0x08012B80
static const Vtx breakable_box_seg8_vertex_08012B80[] = {
{{{ -100, 200, 100}, 0, { 0, 0}, {0x00, 0x7f, 0x00, 0xff}}},
{{{ 100, 200, -100}, 0, { 992, 992}, {0x00, 0x7f, 0x00, 0xff}}},
{{{ -100, 200, -100}, 0, { 992, 0}, {0x00, 0x7f, 0x00, 0xff}}},
@@ -51,18 +47,16 @@ static const Vtx breakable_box_seg8_vertex_08012B80[] = {
};
// 0x08012C30 - 0x08012CD8
const Gfx breakable_box_seg8_dl_08012C30[] = {
gsSPLight(&breakable_box_seg8_lights_08011A80.l, 1),
gsSPLight(&breakable_box_seg8_lights_08011A80.a, 2),
gsSPVertex(breakable_box_seg8_vertex_08012A90, 15, 0),
const Gfx breakable_box_seg8_sub_dl_end[] = {
gsSPLight(&breakable_box_seg8_lights_default.l, 1),
gsSPLight(&breakable_box_seg8_lights_default.a, 2),
gsSPVertex(breakable_box_seg8_vertex, 26, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 9, 10, 0x0, 11, 12, 13, 0x0),
gsSP1Triangle(11, 13, 14, 0x0),
gsSPVertex(breakable_box_seg8_vertex_08012B80, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
gsSP1Triangle( 8, 9, 10, 0x0),
gsSP2Triangles(11, 13, 14, 0x0, 15, 16, 17, 0x0),
gsSP2Triangles(15, 18, 16, 0x0, 19, 20, 21, 0x0),
gsSP2Triangles(19, 21, 22, 0x0, 23, 24, 25, 0x0),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
@@ -71,9 +65,9 @@ const Gfx breakable_box_seg8_dl_08012C30[] = {
};
// 0x08012CD8 - 0x08012D20
const Gfx breakable_box_seg8_dl_08012CD8[] = {
const Gfx breakable_box_seg8_sub_dl_begin[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),
gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),
gsSPClearGeometryMode(G_SHADING_SMOOTH),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
@@ -84,19 +78,19 @@ const Gfx breakable_box_seg8_dl_08012CD8[] = {
};
// 0x08012D20 - 0x08012D48
const Gfx breakable_box_seg8_dl_08012D20[] = {
gsSPDisplayList(breakable_box_seg8_dl_08012CD8),
const Gfx breakable_box_seg8_dl_crazy_box[] = {
gsSPDisplayList(breakable_box_seg8_sub_dl_begin),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, breakable_box_seg8_texture_08011A90),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPBranchList(breakable_box_seg8_dl_08012C30),
gsSPBranchList(breakable_box_seg8_sub_dl_end),
};
// 0x08012D20 - 0x08012D70
const Gfx breakable_box_seg8_dl_08012D48[] = {
gsSPDisplayList(breakable_box_seg8_dl_08012CD8),
const Gfx breakable_box_seg8_dl_cork_box[] = {
gsSPDisplayList(breakable_box_seg8_sub_dl_begin),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, breakable_box_seg8_texture_08012290),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPBranchList(breakable_box_seg8_dl_08012C30),
gsSPBranchList(breakable_box_seg8_sub_dl_end),
};

View File

@@ -2,6 +2,9 @@
// It's possible that bubba and bub used to be 2 "actors" in
// one actor file.
// Bin ID? What is this?
UNUSED static const u64 bubba_unused_1 = 0;
// Bubba
// 0x05000008

View File

@@ -2,7 +2,10 @@
const GeoLayout burn_smoke_geo[] = {
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, burn_smoke_seg4_dl_04022070),
#ifdef BURN_SMOKE_FIX
GEO_ASM(GEO_TRANSPARENCY_MODE_INTER, geo_update_layer_transparency),
#endif
GEO_DISPLAY_LIST(LAYER_TRANSPARENT_INTER, burn_smoke_seg4_dl),
GEO_CLOSE_NODE(),
GEO_END(),
};

View File

@@ -1,7 +1,7 @@
// Burn Smoke
// 0x040217C0
static const Vtx burn_smoke_seg4_vertex_040217C0[] = {
static const Vtx burn_smoke_seg4_vertex[] = {
{{{ -50, -50, 0}, 0, { 0, 992}, {0x14, 0x0a, 0x0a, 0xff}}},
{{{ 50, -50, 0}, 0, { 992, 992}, {0x14, 0x0a, 0x0a, 0xff}}},
{{{ 50, 50, 0}, 0, { 992, 0}, {0x14, 0x0a, 0x0a, 0xff}}},
@@ -12,15 +12,15 @@ static const Vtx burn_smoke_seg4_vertex_040217C0[] = {
// as a transparent black burn smoke. Probably meant to show up as white-ish
// burn smoke, but mistakened for being intended as black smoke.
// 0x04021800
ALIGNED8 static const Texture burn_smoke_seg4_texture_04021800[] = {
ALIGNED8 static const Texture burn_smoke_seg4_sub_dl_texture[] = {
#include "actors/burn_smoke/burn_smoke.ia16.inc.c"
};
// 0x04022000 - 0x04022028
const Gfx burn_smoke_seg4_dl_04022000[] = {
const Gfx burn_smoke_seg4_sub_dl_begin[] = {
gsDPPipeSync(),
#ifdef BURN_SMOKE_FIX
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),
gsDPSetCombineMode(G_CC_MODULATEIFADEA, G_CC_MODULATEIFADEA),
#else
gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),
#endif
@@ -30,14 +30,14 @@ const Gfx burn_smoke_seg4_dl_04022000[] = {
};
// 0x04022028 - 0x04022048
const Gfx burn_smoke_seg4_dl_04022028[] = {
gsSPVertex(burn_smoke_seg4_vertex_040217C0, 4, 0),
const Gfx burn_smoke_seg4_sub_dl_model[] = {
gsSPVertex(burn_smoke_seg4_vertex, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
};
// 0x04022048 - 0x04022070
const Gfx burn_smoke_seg4_dl_04022048[] = {
const Gfx burn_smoke_seg4_sub_dl_end[] = {
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
@@ -46,14 +46,14 @@ const Gfx burn_smoke_seg4_dl_04022048[] = {
};
// 0x04022070 - 0x040220C8
const Gfx burn_smoke_seg4_dl_04022070[] = {
gsSPDisplayList(burn_smoke_seg4_dl_04022000),
const Gfx burn_smoke_seg4_dl[] = {
gsSPDisplayList(burn_smoke_seg4_sub_dl_begin),
#ifdef BURN_SMOKE_FIX
gsDPLoadTextureBlock(burn_smoke_seg4_texture_04021800, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
gsDPLoadTextureBlock(burn_smoke_seg4_sub_dl_texture, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
#else
gsDPLoadTextureBlock(burn_smoke_seg4_texture_04021800, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
gsDPLoadTextureBlock(burn_smoke_seg4_sub_dl_texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
#endif
gsSPDisplayList(burn_smoke_seg4_dl_04022028),
gsSPDisplayList(burn_smoke_seg4_dl_04022048),
gsSPDisplayList(burn_smoke_seg4_sub_dl_model),
gsSPDisplayList(burn_smoke_seg4_sub_dl_end),
gsSPEndDisplayList(),
};

View File

@@ -1 +1,2 @@
// Empty geo script
UNUSED static const u64 cannon_lid_unused_1 = 0;

View File

@@ -9,6 +9,9 @@ static const Vtx chain_ball_seg6_vertex_06020AA0[] = {
{{{ -26, 26, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
};
// align? binid?
UNUSED static const u64 chain_ball_unused_1 = 0;
// 0x06020AE8
ALIGNED8 static const Texture chain_ball_seg6_texture_06020AE8[] = {
#include "actors/chain_ball/chain_ball.rgba16.inc.c"

View File

@@ -1,7 +1,7 @@
// Checkerboard Platform
// 0x0800D710 - 0x0800D794
const Collision checkerboard_platform_seg8_collision_0800D710[] = {
const Collision checkerboard_platform_seg8_collision_platform[] = {
COL_INIT(),
COL_VERTEX_INIT(0x8),
COL_VERTEX(256, -25, -153),

BIN
actors/coin/coin_0.ia8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 989 B

Some files were not shown because too many files have changed in this diff Show More