sm64

A Super Mario 64 decompilation
Log | Files | Refs | README | LICENSE

CHANGES (19903B)


      1 Refresh 16 (Two years later...)
      2 1.) remove capstone from readme, slight update (#1212)
      3 2.) Update ido static recomp (#1211)
      4 3.) Fix misleading pointer (#1209)
      5 4.) update outdated link (#1208)
      6 5.) Match iQue (#1207)
      7 6.) iQue matching except BSS (#1124)
      8 7.) Create LICENSE.md
      9 8.) Reorganize and apply licenses to some of the tools/ programs per discussions with their author(s). (#1203)
     10 9.) Fix rumble_init libultra includes and checks (#1195)
     11 10.) Stacksize moved to defines (#1199)
     12 11.) Renamings we were too lazy to make a PR for for 3 years (#1198)
     13 12.) Fix spelling error in sound.h comment (#1197)
     14 13.) Update instrument sample names (#1196)
     15 14.) Object Labeling, Behavior Params, and Cleanup (#1193)
     16 15.) Significantly more Libultra Cleanup (#1192)
     17 16.) Typedefs for area Terrain Data and Rooms (#1178)
     18 17.) Allow spaces in filename for vadpcm_enc (#1175)
     19 18.) Label all warp nodes (#1191)
     20 19.) Remove hardware.h (#1190)
     21 20.) Document __osSetHWintrRoutine (#1186)
     22 21.) Change 3 space indent to 4 space indent and cleanup (#1189)
     23 22.) Libultra cleanup and labelling (#1188)
     24 23.) in-game menu renaming (#1187)
     25 24.) AVOID_UB fixes and cleanup (#1185)
     26 
     27 Refresh 15 (mostly a hotfix for RSP microcode selection)
     28 
     29 1.) Renamed frame_buffer funcs and _ZBUFFER (#1184)
     30 2.) RSP Microcode Hotfix (#1183)
     31 3.) Label osSetTimer.c (#1182)
     32 4.) Fix styling (#1177)
     33 5.) Rename all `FrameBuffer` variants to `Framebuffer` (#1176)
     34 6.) Remove (WIP) from sh.
     35 7.) Allow both archives and ELF objects to be patched (#1127)
     36 
     37 Refresh 14
     38 
     39 1.) Label whomp and some object fields (#1174)
     40 2.) Generate MIO0 object files using binutils `ld` instead of `as` (#1173)
     41 3.) Bowser documentation (#1166)
     42 4.) Fix comment syntax in 00_sound_player.0 (#1172)
     43 5.) Rename in-game menu variables (#1163)
     44 6.) Document double red coin sound and JP sound glitch (#1170)
     45 7.) Document different bug in external.c (#1168)
     46 8.) updated names/types of octagonal platform data (#1164)
     47 9.) Label a number of unnamed variables. (#1169)
     48 10.) Document JP PU sound glitch (#1167)
     49 11.) Set model ids to spawn_triangle_break_particles (#1165)
     50 12.) Fix borders in clear_frame_buffer (#1162)
     51 13.) Fix seq header files for 64-bit (#1161)
     52 14.) Game_init.c remaining doc (#1158)
     53 15.) Label a couple static variables in sound_init.c (#1159)
     54 16.) Properly define dialog values (status, flags, cutscenes) (#1153)
     55 17.) Label all of amp's assets. (#1018)
     56 18.) Split audio/synthesis.c into Shindou/non-Shindou files (#1144)
     57 19.) Avoid CC_CHECK warnings when using gcc (#1157)
     58 20.) level_select_menu.c => title_screen.c (#1152)
     59 21.) Use C preprocessor on assembly files (#1126)
     60 22.) Replace output_level_headers.py with sed equivalent (#1109)
     61 23.) Fix CC_CHECK warnings related to unused symbols and UB (#1155)
     62 24.) Define remaining floor lower limit values (#1147)
     63 25.) use r+b mode for libultra.a patch tool (#1148)
     64 26.) Use proper values for gPrevFrameObjectCount ifs (#1146)
     65 27.) Some minor bowser.inc.c labelling. (#1150)
     66 28.) fix king bob-omb texture pointers (#1145)
     67 29.) Split audio/load.c into Shindou/non-Shindou files (#1143)
     68 30.) Small Shindou audio cleanups (#1142)
     69 31.) Fix endians in ALSeqData (#1141)
     70 32.) Document S8 decoder rsp operation and some more (#1139)
     71 33.) Fix Shindou synthesis_process_note fake match (#1140)
     72 34.) More audio documentation, for the new rsp code and other fixes (#1138)
     73 35.) Build fixes for macOS: cpp, clang, recomp, aiff_extract_codebook (#1135)
     74 36.) Add ENABLE_RUMBLE to config.h (#1122)
     75 37.) Reduce recomp memory consumption by using smaller disassembly blocks (#1128)
     76 38.) Makefile fixes (#1123)
     77 39.) Update README.md
     78 40.) Update README.md
     79 41.) Reflect current decompilation status
     80 42.) Allow both archives and ELF objects to be patched (#1127)
     81 43.) Remove WIP mention in README for sh version.
     82 
     83 Refresh 13 2
     84 
     85 - No more nonmatchings remain for all builds including Shindou.
     86 
     87 1.) Shindou OK (#1118)
     88 2.) Match shindou sequence_player_process_sequence (#1117)
     89 3.) Match func_sh_802f4e50 (#1116)
     90 
     91 Refresh 13
     92 
     93 - No more nonmatchings remain for US, JP, or EU builds. Three(!!!) remain for Shindou (SH).
     94 
     95 *) SHINDOU MATCHING (#1081)
     96 *) Makefile gcc fixes (#1114)
     97 
     98 1.) Update diff.py (#1113)
     99 2.) Add support for generating C arrays from n64graphics and add Texture typedef (#1032)
    100 3.) Update README and Dockerfile with recomp info (#1105)
    101 4.) Support building tools with MSYS2 (#1112)
    102 5.) Support building tools with clang and macOS (#1106)
    103 6.) Clean tools directory when running distclean target (#1104)
    104 7.) Make build output cleaner (#1095)
    105 8.) Added 2 surface defines to bowser.inc.c (#1111)
    106 9.) fix fake matchings (#1108)
    107 10.) Use statically recompiled IDO instead of qemu-irix (#1099)
    108 11.) Add VERBOSE=1 to Jenkinsfile
    109 12.) updated intro_geo to use layer defines for geo flags (#1090)
    110 13.) Fix F3DZEX (#1097)
    111 14.) layer_transpose should take an s8 (#1093)
    112 15.) Fix tools/ build (#1082)
    113 16.) Relabel and document fish.inc.c (#1077)
    114 17.) Ensure all calls to .py files use $(PYTHON) (#1080)
    115 18.) Name Mario, Peach, and instrument sound files (#1078)
    116 19.) Goddard labeling, part 2 (#1076)
    117 20.) Fix envfx_snow and envfx_bubbles fake matches (#1075)
    118 21.) Use array subscripts instead of pointer math in 2 files (#1074)
    119 22.) refactor Makefile a bit (#1068)
    120 23.) Further improvements on field names (#1059)
    121 24.) Label and document manta_ray.inc.c (#1073)
    122 25.) Fix level_script and behavior fake matches (#1072)
    123 26.) Proper cell defines and more floor lower limit values. (#1065)
    124 27.) Document and re-label some goddard/intro code (#1069)
    125 28.) Match remaining functions (#1070)
    126 29.) match 'spawn_special_objects' (#1071)
    127 30.) Document parts of external.c and format sound defines (#1067)
    128 
    129 Refresh 12
    130 
    131 1.) Debug box improvements (#1066)
    132 2.) Improve 'geo_render_mirror_mario' (#1064)
    133 3.) Cleanup and small labeling (#1063)
    134 4.) Anim renames and other related renames (#1062)
    135 5.) remove do while 0 and make one line comments consistent (#1061)
    136 6.) fixed typo in segments.h (#1060)
    137 7.) Name unknown fields (from public repo) (#1058)
    138 8.) Change 'void *' to 'struct MainPoolState *' (#1057)
    139 9.) Fix type of freeList (#1056)
    140 10.) Newer version of diff script (#1055)
    141 11.) Add stubbed_printfs based on unused audio strings (#1054)
    142 12.) Fix comment in paintings.c (#1053)
    143 13.) Add defines for hardcoded cell/floor height values (#1051)
    144 14.) Update README.md: Remove GitHub specific Markdown syntax (#1052)
    145 15.) Properly label interation status that handle's Bowser's shockwave attack (#1050)
    146 
    147 Refresh 11
    148 1.) Make geo_process_level_of_detail endian-independent (#1049)
    149 2.) Label oMoveFlags and slight cleanup. (#1046)
    150 3.) Avoid UB in synthesis_resample_and_mix_reverb (#1048)
    151 4.) Change some void * to correct type (#1047)
    152 5.) Remove oPathedWaypointsS16 and convert all paths to Trajectory struct. (#1045)
    153 6.) Mr Blizzard documentation, Tox Box Unks (#1042)
    154 7.) Pipe input to textconv. (#1041)
    155 8.) Remove erroneous long double casts from audiofile.cpp (#1039)
    156 9.) Replace fixed dialogID in play_dialog_sound to DIALOG_COUNT (#1040)
    157 
    158 Refresh #10.1
    159 1.) Diff update (#1033)
    160 2.) Fix texture dimensions for exclamation boxes (#1034)
    161 3.) Fix armips compilation on Windows by changing order of inclusion files (#1035)
    162 4.) Embed libaudiofile into the repo as a single file (#1036)
    163 5.) Fix some tools issues found while compiling on MSYS2 (#1037)
    164 
    165 Refresh #10
    166 1.) GCC 9 noreturn UB fixes (#961)
    167 2.) List supported binutils variants in README.md (#960)
    168 3.) fix fly guy's possible values for target roll
    169 4.) clarify that 1 is an exclusive bound in random_float (#962)
    170 5.) replace unkB8 with prevNumStarsForDialog (#963)
    171 6.) Replace "BulletBillUnkF8" with "BulletBillInitialMoveYaw" (#966)
    172 7.) Renamed more warp behaviors and spawn types (#949)
    173 8.) EU bss cleanups (#965)
    174 9.) Add -fno-zero-initialized-in-bss to GCC CFLAGS (#968)
    175 10.) Use empty .SECONDARY target instead of .PRECIOUS (#964)
    176 11.) Match EU seq_channel_layer_process_script (#969)
    177 12.) Fix version variable overwriting bug for non-matching compilations (#974)
    178 13.) small bhv_collect_star_init labeling (#972)
    179 14.) Align SI DMA command buffers, add more names to osCont code (#973)
    180 15.) Minor for loop fix in playback.c (#976)
    181 16.) Add Docker config (Public #36)
    182 17.) Fix usage output crash for skyconv (#977)
    183 18.) Cleanup tools and their build flags (#978)
    184 19.) Print more detailed file reading error messages in extract_assets (#982)
    185 20.) Remove asmdiff (#983)
    186 21.) Fixed tabledesign makefile bug (#985)
    187 22.) Improve first-diff.py (#987)
    188 23.) Bring in some enhancements such as widescreen enhancements (#981)
    189 24.) Fix background shadow border if widescreen in shade_screen (#988)
    190 25.) Merge common EU sections in osExceptionPreamble (#990)
    191 26.) Introduce the NO_SEGMENTED_MEMORY define (#989)
    192 27.) NO_SEGMENTED_MEMORY comments (#992)
    193 28.) Introduce f3dex2e and a GBI_FLOATS setting (#993)
    194 29.) Audio uses signed 16-bit integers as samples, not unsigned (#995)
    195 30.) Assemble RSP ucode with armips (#970)
    196 31.) Label Mr. Blizzard, Yoshi, Whomp, Wiggler, Wood Piece oFields. (#996)
    197 32.) update crash enhancement (#1003)
    198 33.) Update README.md to use new public Discord server invite
    199 34.) Label variables in act_idle. (#1005)
    200 35.) Fix a typo in camera.h (#1009)
    201 36.) Fixed up profiler.c (#1010)
    202 37.) Add -d to first-diff.py (#1012)
    203 38.) Fix typo in first-diff.py (#1013)
    204 39.) Remove binutils 2.27 dependency check (#1015)
    205 40.) Update armips to v0.11.0 tag and add generator script (#1004)
    206 41.) Extract IPL3 font from ROM (#1011)
    207 42.) Documented audio playback flags (#1021)
    208 43.) Change RSP register notation to dollar-prefixed numbers (#1022)
    209 44.) Only check for QEMU_IRIX in Makefile when compiling with IDO (#1023)
    210 45.) Clean up header files and update function prototypes (#1000)
    211 46.) Named local variables in geo_update_layer_transparency (#1019)
    212 47.) Extract crash screen font textures from EU and SH ROMs (#1025)
    213 48.) Use ACTIVE_FLAG defines where appropriate (#1026)
    214 49.) Changed type of actor collision from s16 to Collision (#1024)
    215 50.) Implement sqrtf in assembly file (#1028)
    216 51.) Rename Struct8032FCE8 as OpenableGrill and identify data members (#1029)
    217 52.) Fix some mistakes in the abi doc (#1031)
    218 53.) The README.md PR (#979)
    219 
    220 Refresh #8
    221 1.) Use INT_STATUS_ macros for oInteractStatus (#911)
    222 2.) Update bullet_bill.inc.c (#912)
    223 3.) Make geo.c in levels nonconst to reduce diffs with gcc enhancement patch in future (#913)
    224 4.) Improve process_level_music_dynamics (#915)
    225 5.) add AVOID_UB define for fixing libultra aliasing. (#916)
    226 6.) const hack to TARGET_N64 and tweak ld script (#918)
    227 7.) Replace raw level/course numbers with defines (#919)
    228 8.) Label all graph node flags. (#920)
    229 9.) readme.md capitalization
    230 10.) The Big Function PR (Part 5) (#910)
    231 11.) Label hardware registers (#922)
    232 12.) Match EU synthesis_process_note (#923)
    233 13.) Some quick value changes (#909)
    234 14.) Added sequence player defines (#926)
    235 15.) Shindou diffs 2 [merge game.c and display.c, required for SH] (#927)
    236 16.) Match synthesis_process_notes and use -sopt for synthesis.c (#928)
    237 17.) Fix mips64-binutils for Fedora 31 and similar Linux distros (#931)
    238 18.) Update first-diff.py to work with Shindou (#933)
    239 19.) Labelled behavior_script.c (#929)
    240 20.) shindou diffs up to level_update (#932)
    241 21.) Update diff.py and diff_settings.py to work with SH (#936)
    242 22.) Add some Shindou resources to extract_assets.py (#939)
    243 23.) Label and document gd_math.c (#930)
    244 24.) Label all of Mario's actions. (#941)
    245 25.) Label all particles. (#940)
    246 26.) Renamed death related warpBhvs (#942)
    247 27.) Small Shindou differences (#945)
    248 28.) match player_performed_grab_escape_action in all versions (#943)
    249 29.) add main alignment (aglab2, #947)
    250 30.) Match a bunch of fake EU matchings (#944)
    251 31.) Shindou diffs round 4 (#937)
    252 32.) Easy PAL fake matchings (#946)
    253 33.) Merge object_helpers and object_helpers2 headers (#948)
    254 34.) match cap_check_quicksand (#950)
    255 35.) Shindou crash screen diffs (#938)
    256 36.) Thread6 (#951)
    257 37.) Correct IPL3 function and label addresses (#952)
    258 38.) Add COMPILER flag for Makefile and add official mips gcc support. (#953)
    259 39.) add align to sequence_00 (fixes gcc build) (#957)
    260 40.) Fixed itty bitty typo (#959)
    261 
    262 Refresh #7
    263 1.) update README.md (#861)
    264 2.) [eu] fix decompilation bugs in synthesis_process_note (#862)
    265 3.) Label and document Snufit.inc.c (#863)
    266 4.) Label and document Snufit.inc.c (#863)
    267 5.) Match append_bubble_vertex_buffer, append_snowflake_vertex_buffer (#860)
    268 6.) Compile audio/effects.c with -sopt (#870)
    269 7.) Match handle_dialog_text_and_pages (#872)
    270 8.) Remove improperly used LEVEL_SA define. (#875)
    271 9.) Remove unused EU ASM files (#873)
    272 10.) Shindou build flag support (#876)
    273 11.) The Big Function PR (Part 1) (#864)
    274 12.) "Re-document" file_select and star_select for EU (#877)
    275 13.) Document paintings.c (#868)
    276 14.) Minor interaction.c labelling/documentation. (#882)
    277 15.) Match synthesis_execute, prepare_reverb_ring_buffer, func_eu_802e00d8 (#886)
    278 16.) The Big Function PR (Part 2) (#874)
    279 17.) Additional painting documentation (#883)
    280 18.) Some EU audio labelling (#885)
    281 19.) Bring synthesis_do_one_audio_update a bit closer to matching (#887)
    282 20.) Misleading comment, this actually contols Bowser's init action (#889)
    283 21.) Match synthesis_do_one_audio_update (#890)
    284 22.) Remove unneeded if(1) in synthesis_do_one_audio_update (#891)
    285 23.) Match synthesis_resample_and_mix_reverb (#893)
    286 24.) Set LANG=C (#896)
    287 25.) Match note_apply_headset_pan_effects (#897)
    288 26.) Match play_sequence (#898)
    289 27.) Match sequence_channel_enable (#899)
    290 28.) Match sequence_player_process_sequence (#900)
    291 29.) Match (eu) alloc_bank_or_seq (#901)
    292 30.) Match alloc_bank_or_seq (#903)
    293 31.) Update README.md (again)
    294 32.) Documented behaviour/fish.inc.c & blue_fish.inc.c (#894)
    295 33.) Labelled 4 behavior files, made object_helper functions consistent (#881)
    296 34.) Add a make target for .copt (#902)
    297 35.) The Big Function PR (Part 3) (#888)
    298 36.) The Big Function PR (Part 4) (#906)
    299 37.) Rename src/audio/memory.c -> heap.c (#907)
    300 38.) Fix BBH texture (#908)
    301 
    302 Refresh #6
    303 1.) Make tools work on MinGW (#804) 
    304 2.) Document mario_misc (#628) 
    305 3.) add patch_libmalloc.py script to work around compiler crashes (#811) 
    306 4.) Label the coffins file. (#829) 
    307 5.) Convert enhancements into patches (#827) 
    308 6.) Document Tweester.inc.c (#840) 
    309 7.) EU OK and cleanup EU (#782)
    310 
    311 Refresh #5
    312 1.) mem_error_screen.inc.c updated for C (#775)
    313 2.) updated patch_libultra_math to work directly on libultra.a (#781)
    314 3.) Enhancement: Debug boxes (#783)
    315 4.) Label effects MemoryPool (#784)
    316 5.) Use full-width characters for JP text and rename mislabeled stuff (#772)
    317 6.) Small asset extraction fixes (#785)
    318 7.) Fix incremental asset extraction after the last PR (#790)
    319 8.) Labelled behavior script commands, tidied up behavior scripts and ren…
    320 9.) Document camera.c (#741)
    321 10.) Fix a HMC texture asset (#795)
    322 11.) Fix UB in angle conversion for paintings. Needed for pc-port. (#796)
    323 12.) Fix PSS texture assets (#801)
    324 13.) Fix some camera typos (#802)
    325 
    326 Refresh #4
    327 1.) Label screen_transition.c (#737)
    328 2.) Revamp macros (#738)
    329 3.) Simplify the cake makefile logic (#739)
    330 4.) Move zbuffer to C (#742)
    331 5.) Audio blob endian/64-bit fixes (#740)
    332 6.) Ub fixes (#745)
    333 7.) process_level_music_dynamics: slightly better stack and regalloc (#746)
    334 8.) move level order specific definitions out to levels/level_defines.h (#743)
    335 9.) Renamed some mislabelled sound effects (#748)
    336 10.) Very minor white space fixes in Mario.c (#752)
    337 11.) Renamed GRAVITY to OBJ_PHYSICS (#755)
    338 12.) Use defined macros instead of literal values for interactions in behavior_data.c (#754)
    339 13.) iQue Player console detection + full support (#756) 
    340 14.) Fix Goddard Mario head for little endian etc. (#757) 
    341 15.) Small bits of audio doc (#749)
    342 16.) Update diff script (#750) 
    343 17.) Nicer format for course/dialog text, enum for dialog IDs (#753) 
    344 18.) first-diff: store most recent mtime during check (#759)
    345 19.) Use Lights1 struct for light values (#760)
    346 20.) Detect mips64-elf in diff.py (#761) 
    347 21.) Name display lists in gd renderer.c (#764) 
    348 22.) Document a variety of PU type crashes. (#765) 
    349 23.) Label object_behaviors. (#716) 
    350 24.) Update swoop.inc.c (#767) 
    351 25.) Label tilting_pyramid.inc.c (#768) 
    352 26.) Label red_coin.inc.c (#770) 
    353 27.) Use more level defines (#758) 
    354 28.) Named Mario actions 6, 7, and 8 and noted causes of hands-free holding glitch (#769)
    355 
    356 Refresh #3
    357 1.) Small bits of sound sample labelling
    358 2.) Append 'b' to fopen calls in n64graphics to satisfy Windows
    359 3.) Document synthesis.c and abi.h
    360 4.) Remove gbi_old.h and use gbi.h instead for F3D_OLD
    361 5.) Fix and change most values used by f3d commands
    362 6.) Convert actors to C
    363 7.) Make extract_assets.py fail on bad baserom
    364 8.) Fix some (pragma-ignored) warnings
    365 9.) Convert trig tables and data/ buffers into C
    366 10.) Document intro behaviors and some of camera.c
    367 11.) Match dma_sample_data
    368 12.) Convert levels, bin, text, goddard_tex_dl to C
    369 13.) Remove .bss size hardcoding
    370 14.) Add mips64 fallback and alt dump option to diff.sh
    371 15.) Convert behavior_data to C
    372 16.) Get rid of the enum in behavior_data.
    373 17.) Change more values used by f3d commands
    374 18.) Document game/skybox.c
    375 19.) Actors levels fixup
    376 20.) Convert Mario animations to C (kind of)
    377 22.) generate skybox data from 248x248 images
    378 23.) 64-bit fixes
    379 24.) Move demo data to C
    380 25.) Change uintptr_t to GeoLayout for actors
    381 26.) Move libc includes to include/libc/
    382 
    383 Refresh #2a (hotfix)
    384 Changes from Refresh #2:
    385 
    386 1.) Fixed text Makefile dependencies"
    387 
    388 Refresh #2
    389 Changes from Refresh #1:
    390 
    391 1.) Label src/game/behaviors/boo.inc.c
    392 2.) Verify half of audio_defines.h
    393 3.) Label ingame_menu.c and some dialog stuff
    394 4.) Improve handle_dialog_text_and_pages EU non-matching
    395 5.) Fix texture format for water splash/sparkle
    396 6.) Merge ucode.bin and ucode_unk.bin
    397 7.) 64-bit fixes
    398 8.) [AUDIO] Match func_80316928
    399 9.) Documented bug in Tuxie's mother's code 
    400 10.) [AUDIO] Slightly closer matching for process_level_music_dynamics
    401 11.) Name channel scripts in sequence 0
    402 12.) Nicer error message when sha1sum doesn't match
    403 13.) Refactor object fields
    404 14.) Document file_select.c
    405 15.) Document star_select.c
    406 16.) Add uncompressed string support to textconv
    407 17.) Document main_menu geo and leveldata
    408 18.) Document hud.c and rename char textures
    409 19.) Correct gSPTextureRectangle values
    410 20.) Linker script wildcard
    411      - Fixes "undefined reference to x in discarded section y" linker errors.
    412      - Also means that you no longer have to add linker script entries for source files.
    413 21.) Reference qemu-irix package and add project structure
    414      - Installing qemu-irix is as simple as installing the provided Debian package on the GitHub "Releases" tab
    415        (https://github.com/n64decomp/qemu-irix).
    416      - Old qemu-irix installs are unaffected by this change, and it is still possible to install qemu-irix with the older method.
    417 
    418 Refresh #1
    419 Changes from initial release:
    420 
    421 1.) More README cleanups and documentation
    422 2.) Fix .gitignore in tools/
    423 3.) More README cleanups and corrections
    424 4.) oUnk190 -> oInteractionSubtype
    425 5.) Normalize line endings
    426 6.) Replace bank_sets.s by sequences.json + build magic
    427 7.) Fix tabledesign in .gitignore
    428 8.) Cleaned and documented arrays in audio/
    429 9.) Change minimum Python 3 requirement in README.md to 3.6
    430 10.) Remove whitespace in ingame_menu.c, save_file.c, and star_select.c
    431 11.) Documentation comment style fixed
    432 12.) sm64.map -> sm64.version.map (ex: sm64.us.map)
    433 13.) Decompile EU versions of HUD and obj behaviors
    434 14.) Label ukiki.inc.c and ukiki_cage.inc.c
    435 15.) Add missing OS header includes
    436 16.) Fix alignment issue in model_ids.h
    437 17.) A bunch of behavior changes:
    438      a.) Made styles consistent with function names (ex: BehBehaviorLoop -> beh_behavior_loop)
    439      b.) Split obj_behaviors_2.c into multiple .inc.c files in behaviors/
    440      c.) bhvHauntedRoomCheck -> bhvCoffinManager
    441 18.) Update README.md notes on WSL and add links
    442 19.) Added tidy.sh and also bracing around single-line ifs and loops