summaryrefslogtreecommitdiff
path: root/src/engine
AgeCommit message (Collapse)Author
36 hoursSwitch LUS to port-maintenance branch (#727)HEADmainMegaMech
* lus update compiles but not run * Game runs, fix demo bug * Switch lus to port-maintenance branch
36 hoursRemove As Much Code As Possible and Still Pass Tests (#732)MegaMech
* Update render_objects.c * Remove unused HUD texture function declarations Removed several unused function declarations related to HUD textures. * Update skybox_and_splitscreen.c * Remove unused set_viewport2 function declaration Removed unused function declaration for set_viewport2. * Update code_80005FD0.c * Remove set_bomb_kart_spawn_positions function declaration * Update skybox_and_splitscreen.c * Update skybox_and_splitscreen.h * Modify Draw function to adjust crab visibility Commented out code to prevent premature disappearance of the crab when the camera rotates. * Update Crab.cpp * Update Crab.h * Update Crab.cpp * Delete unused texture rendering functions Removed unused functions related to texture rendering. * Update render_objects.h
37 hoursFix the warning-flagged real bugs across the codebase (#691, 1 of 3) (#725)quarrel07
* menu_items: fix the real-bug-tier compiler warnings (#691 batch 1) Six fixes, all in menu_items.c, all verified by menu playtest on macOS: - BSWAP16(*color0++) advanced the pointer twice per pixel on little-endian builds (the macro evaluates its argument twice) and mixed bytes from two different pixels. Read first, increment separately. Note: this function (func_8009A9FC) currently has no callers, so the corruption was latent, not live. - func_8009B9D0 fell off the end on a lookup miss, returning garbage (the existing code comment already suspected this). The miss path now returns the display list head unchanged, i.e. draws nothing. - update_ok_menu_item read an uninitialized stack slot for unknown menu item types; now selects an explicit no-animation value, matching what the garbage read did in practice. - pause_menu_item_box_cursor: removed the three empty 'if (x2);' matching artifacts. The x/y/z spin state itself is untouched. - func_800A1FB0: initialized var_s4/var_s5 against the guarded-but-warned switch default. - func_800A54EC: initialized the pause cursor position pointer against its unreachable mode-switch default (would have been a null-deref class bug if mode values ever grew). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * collision: define the G_ENDDL opcode shifts, return 0 when no tyre surface found Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * replays: cast staff-ghost pointer comparisons, return 0 for empty ghost buffer Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * update_objects: return 0 from conditional step helpers, fix TLUT pointer comparison, init train draw distances Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * render_player: remove the impossible lamp range (vanilla bug, never glowed on N64 either) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * math_util_2: return the vector, not the address of the parameter slot Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Crab: remove inner declaration shadowing the initialized objectIndex Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * editor: honor InverseMatrix failure (bool was compared against 2, always true) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Track.h: drop dead null checks on array members Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * shells: drop always-true angle and surface gates (behavior unchanged, s16 made them tautological) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * particles: make the no-return particle setters void Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * effects/stubs/skybox/main: align signatures with functions that return nothing Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * menus/save: type the pak status variable as s32, return BAD_READ on the fall-off path Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * audio: remove uninitialized-read matching artifacts, init isSound Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * code_80005FD0/code_80086E70: init dead bomb kart pointer and the no_init variable Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * port/engine UI: fix printf-style format types and non-literal format string Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * render_objects: feed the unused texture param to the uninitialized img walker Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Format the changed lines per .clang-format Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Address review: strip explanatory comments, drop vec3f pointer returns Comments moved to the PR record; the one flagged worth keeping stays. vec3f_set_xyz/normalize/cross_product return void now since the out argument is the interface and nothing used the pointer. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Update actors_extended.c * Add checkbox for 'Shells Shoot Straight' option * Update render_player.c * Update PortMenu.cpp * Update render_player.c * Update actors_extended.c * Update render_player.c --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
5 daysUpdate SkySnow.cpp (#728)MegaMech
8 daysSky: paint the full window width (#717)quarrel07
The gradient quad's projection path does not preserve the outward rounding of the Rect edge getters, which can leave the last window column unpainted at some aspect ratios (visible as a black strip at the screen edge that only sky sprites drew into). Overshoot the quad a few virtual pixels past both edges; the excess clips at the window. Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
12 daysRefactor cmake (#721)coco875
* some start of refactor * Update SetFlags.cmake * Update SetCmakeVar.cmake * Update SetFlags.cmake * Fix error int-convertion * more refactor * clean up include and source file * fix link of lib * fix a warning * fix include in src/actors * fix include in src/debug * fix include in src/ending * fix include in src/engine/actors * fix include in src/engine/cameras * fix include in src/engine/editor * fix include in src/engine/objects * fix include in src/engine/tracks * fix include in src/port/ui * fix include in src/racing * fix include in src/engine/vehicles * fix include in subfolder of src/engine * fix include in src/engine * fix include in src/enhancements * fix include in src * fix switch * invert common and findlib * Update SetFlags.cmake * clean up some workflow * some splification * Update build.sh * Update Game.h * add header back * Delete test_check.cmake * continue * Update common.cmake
2026-07-20Fix warnings regarding ambigious typings (#715)Lucas
* Fix warnings regarding ambigious typings * Revert struct Collision name change
2026-06-29Fix crash when bailing out of first-run setup before the game inits (#707)quarrel07
InitModsSystem() runs before the game world is set up. Its bail-out paths (no O2R + user declines generation, missing mods.toml, cyclic/outdated mod deps, and GenAssetFile's no-ROM / unsupported-ROM cases) call exit(), which runs the global `static World sWorldInstance` destructor -> World::CleanWorld() -> dereferences Sky::Instance and other singletons that are still null this early, segfaulting. The most visible case: declining the first-run "Generate one now?" prompt pops a crash report instead of quitting cleanly. Use _Exit() on these pre-initialization bail-outs so no static destructors run. Co-authored-by: quarrel07 <paeans-toggle-2e@icloud.com> Co-authored-by: coco875 <59367621+coco875@users.noreply.github.com>
2026-05-03Fix 32 bit (#697)coco875
* try x86 * ci: uniform build-linux-release-docker and their x86 * Update main.yml * fix animation Co-Authored-By: Alessio Tosto <rinnegatamante@gmail.com> * add explanation * add windows 32 in release * Update windows-compile.yml * fix windows compilation * fix win32 windows * Update libultraship --------- Co-authored-by: Alessio Tosto <rinnegatamante@gmail.com>
2026-05-02Fix missing texture size initialization for clouds. (#698)Alessio Tosto
2026-05-01Force type correctness when calculating collision hashes (#696)Alessio Tosto
* Force type correctness when calculating collision hashes * Fix more incorrect hash calculations. * fix an error --------- Co-authored-by: coco875 <59367621+coco875@users.noreply.github.com>
2026-03-09Fix Palm Tree Interp (#675)MegaMech
* Update actors.c * Update actors.c * Update SkyCloud.cpp * Update render_objects.c
2026-03-06Big Interpolation Overhaul (#674)MegaMech
* Fix FI * FI statue * Intepr fixes * Improve * More interp * Fix compile * More interp * Fix text
2026-03-06More Interp Fixes (#673)MegaMech
* Update render_player.c * Update render.inc.c * Update render.inc.c * Fix kart interp * Remove feature * Fix error
2026-03-05Fix mistakes (#672)MegaMech
2026-03-05Fix editor loading and finishline duplication (#653)MegaMech
* Fix editor loading and finishline duplication * Update SceneManager.cpp
2026-03-05Fix Thwomp Collision and Better Interp Tagging for Actors (#665)MegaMech
* Update actors.c * Update actors.c * actor * Fix bounding box * More interp fix * Update KoopaTroopaBeach.cpp * Update Thwomp.cpp * Update actors.c * Update render.inc.c * Update render.inc.c
2026-03-05Fix retry issue with actors (#669)MegaMech
* Update World.h * Update World.cpp * Update Game.cpp
2026-03-02Update SkyActor.h (#666)MegaMech
* Update SkyActor.h * Update menu_items.c
2026-03-02Possible Fix for SkySnow Crash (#664)MegaMech
* Update SkySnow.cpp * Update SkySnow.cpp
2026-02-24Frame Interp changes (#654)MegaMech
2026-02-24Impl Sky and SkyActors (#630)MegaMech
* Create Cloud.cpp * Create Cloud.h * Fix the cloud * Cleanup * More cleanup * Update Track.h * Refactor SkyboxCloud position calculations * Update SkyboxStar.cpp * Update SkyboxStar.cpp * Refactor SkyboxStar.cpp by removing redundant code * Update SkyboxCloud.cpp * Refactor SkyboxSnow.cpp by reordering includes * Update SkyboxCloud.h * Refactor SkyboxStar.h for improved formatting * Impl skyboxcloud * Update comment * update comment * Work now * Fully impl Sky * Fix define * Fix args
2026-02-20Update Thwomp.cpp (#645)MegaMech
2026-02-08Update CustomTrack.cpp (#646)MegaMech
2026-02-06More Interp Fixes... Probably (#644)MegaMech
* Update BombKart.cpp * Update BombKart.h * Update PlayerBombKart.cpp * Update Text.cpp
2026-02-05Fix Interp Issues (#641)MegaMech
* Update Seagull.cpp * Update Seagull.h * Update Thwomp.cpp * Update Thwomp.h * Update Crab.cpp * Update render.inc.c * Update Mole.cpp * Update Mole.h * Update Mole.cpp * Update Thwomp.cpp * Update Thwomp.cpp * Update Thwomp.cpp * Update HotAirBalloon.cpp * Update HotAirBalloon.cpp * Update ChainChomp.cpp * Update Hedgehog.h * Update Hedgehog.cpp * Update Snowman.cpp * Update Flagpole.h * Update Flagpole.cpp * Update Flagpole.cpp
2026-02-04FrameInterpolation For Kart (#639)MegaMech
* Update BombKart.cpp * Update BombKart.h * Update PlayerBombKart.cpp * Update PlayerBombKart.cpp * Update PlayerBombKart.h * Update PlayerBombKart.h * Update PlayerBombKart.cpp * Update PlayerBombKart.cpp * Update PlayerBombKart.h * Update PlayerBombKart.h * Update PlayerBombKart.cpp * Update PlayerBombKart.cpp
2026-02-04Maybe fix some interpolation (#637)MegaMech
* Update render_player.c * Refactor FrameInterpolation_RecordOpenChild calls * Update GrandPrixBalloons.cpp * Modify func_80053D74 to include an additional parameter
2026-01-09Fix NON_PORTABLE build. Ship::Context needs to be initialized first. (#618)Fabien Romano
* Fix NON_PORTABLE build. Ship::Context needs to be initialized before resolving files. Move offending calls inside functions where they are used. Those will always be called after GameEngine() which runs Ship::Context::CreateUninitializedInstance() early. * Replace hardcoded string mk64.o2r and spaghetti.o2r with variables game_asset_file and engine_asset_file.
2025-12-29Refactor Track to CustomTrack Class, impl render layers (#606)MegaMech
* impl Custom track transparency and clip * Rename DrawWater to DrawTransparency * Impl z-sorting for transparent mesh * Interp work * rename track function * cleanup * Revert texture interp * Further revert * Update Harbour * Impl custom track path select * Add check * Fix compile * Fix function extern --------- Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com>
2025-12-24fix item in multiplayer (#612)coco875
2025-12-22Clean ptr and fix (#610)coco875
* use more unique ptr and fix a shell crash * remove useless mods folder * add even more unique_ptr * Update KoopaTroopaBeach.cpp * restore a throw * Update Game.cpp * automatically create mods folder * fix oob in external by assuming that all 8 player can make sound * better texture loading * add destructor for gameobject * avoid out of bound in audio sample * Update FrameInterpolation.cpp * Update torch
2025-12-20fix hedgehog custom texture (#607)coco875
2025-12-19make id of cup more robust and fix a mistake (#604)coco875
* fix id koopa troopa beach * make id of cup more robust
2025-12-19Fix Lakitu Crash (#602)MegaMech
* Update Lakitu.cpp * Update Lakitu.h * Update code_8006E9C0.c * Update Lakitu.cpp * Add mCameraId member to Lakitu class * Update code_8006E9C0.c
2025-12-18Impl RandomItemTable class (#598)MegaMech
* Impl RandomItem class * Refactor func * Impl RandomItemTable * Revert probability inaccuracy * Remove unnecessary comment * Fix compile, probably * As per review 1 --------- Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com>
2025-12-16Player bitflag attributes (pr 750 from the decomp) (#592)coco875
* Player bitflag attributes (pr 750 from the decomp) Co-Authored-By: Jed Grabman <JedGrabman@users.noreply.github.com> * remove WATER_NO_INTERACTION --------- Co-authored-by: Jed Grabman <JedGrabman@users.noreply.github.com> Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
2025-12-16fix Ressource name (#596)coco875
* fix Ressource name * add a fallback * use the correct name for dk jungle * use the correct name for macos intel CI * add print
2025-12-15Update Track.cpp (#595)MegaMech
2025-12-15Edit TrackInfo Properties (#594)MegaMech
* Fix finishline for toads turnpike in extra * Fixed trash bin in extra * Refactor fov * Update scene.json * Allow setting fog * impl fog save & load * Fix modifying resourceName and rename editor namespace to trackeditor * small change
2025-12-14Fix new track bug (#593)MegaMech
2025-12-13Refactor Field-of-view into the Camera Struct (#590)MegaMech
* Fix finishline for toads turnpike in extra * Fixed trash bin in extra * Refactor fov * Update scene.json * Allow setting fog * impl fog save & load
2025-12-13Document sound effects (pr 735 from the decomp) (#589)coco875
Co-authored-by: Jed Grabman <JedGrabman@users.noreply.github.com> Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
2025-12-13Refactor Track Class To Instantiate On Track Load (#587)MegaMech
* Initial Commit * First compilation of Registry template * Further changes * wip changes * Impl TrackBrowser and Registry Info * Remove const from TInfo * Prep GetWorld * Name refactor * Refactor gWorldInstance to GetWorld() * wip * Should work now * Data menu work again * Fix editor staying open after program close * Rename LoadLevel to LoadTrackDataFromJson * More changes * Add statue * Add search to content browser using tags * Fix statue pos and register tags * Fix actor loading * Fix delete all bug which deleted cameras * reduce some boiler plate in actor and object * Remove unused rulesets * Search bar for all tabs * fix data screen * fix actor spawning * temp editor fix * Clean up * improve extra mode transformation * fix podium crash * Fix editor clicking * Fix editor clicking 2 * fix extra in custom track * Fix FI for three actors * Fix divide by zero error * Ids managed by Registry * Add scary comment --------- Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com> Co-authored-by: coco875 <pereira.jannin@gmail.com>
2025-12-08Update lus (#580)coco875
* fix include * Update libultraship * fix Engine.cpp * fix error * Update TrackSections.h
2025-12-07Name ScreenContext, Refactor Course class to Track (#583)MegaMech
* Rename Screen Contexts * typedef ScreenContext struct * Fix Compile * Rename Course.cpp to Track.cpp * Refactor Course to Track * A few renames * General Cleanup * More Rename * More names * Move TrackSections struct to Track.h --------- Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com>
2025-12-07Camera Refactor --> Adds Track Tour Camera (#568)MegaMech
* Impl SpawnParams * Added json submodule * Update json * Update * Works * Remove comment * Works refactor * Snowman and thwomp working * Impl hot air balloon * More progress * All OObjects are done * cleanup * Refactor 2Dpath to normal path * Update nlohmann json & fix compile * Rest of actors * MORE CHANGES * Finish actors * Done PR, some fix to collision viewer * Impl falling rocks * Add const * wip editor refactor * Property work * continue * Overridable editor properties * Actor saving/loading works now * Fix light alignment * Clarification * Impl penguin * params impl signs * properties impl falling rock * More property impls * impl air balloon * Add spawnParams to OObject Translate * Snowman translate better * impl hedgehog properly * properties impl trophy * thwomp progress * Finish impl properties * Fix compile * Fix cursor collisions * Move registered actors * Rename pathPoint XYZ to xyz * Fix editor pause bug * Clean up * Review comments * Remove SpawnParams struct from actor classes * Rename * Player Label First Iteration * Work now * Working 3d text * Fix boo bug * Finish AText actor * Fix spawnparams compile * Register AText * Finish Text Actor * Fix thwomp interpolation * Fix compile * Fix crab and hedgehog * Fix loading flagpole * Fix Hot Air Balloon * Turn zbuffer on for AText * Update * Camera Refactor * Camera Refactor Complete * Place Lookbehind behind a CVar * Make Tour CVar * Fix Tour Camera Billboarding * micro optimization * Impl tour cam in imgui editor and add to scenefile * As per review * Revert cleanWorld change as per review * Cleanup SceneManager * Func rename * Proper enabling of freecam and wip zoom fix * Couple fix * Fix credits * Fix podium ceremony * Stop music on reset & label new play sequence func * Rename func_800C8EF8 to play_sequence2 * Rename func_800CA414 to play_sequences * Fix compile * Label play_sequences * Clean up * Verify lakitu access * Renames * Fix tour enable logic * Add Audio * tour camera impl ending transition * As per review * Fix linux compile, probably * Update TourCamera.cpp * Update TourCamera.cpp * Update TrackProperties.cpp * Update TrackProperties.cpp * Update Game.cpp * Update SceneManager.cpp * Update camera.c * Update render_objects.h * Update render_objects.h * Update code_80057C60.h * fixing compile * addition --------- Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com>
2025-12-07Refactor yaml and remove segment (#531)coco875
* move yaml (still need to fix header path) * fix header * change kart to karts and add migration * fix include * Update migration.py * fix common_texture_debug_font extraction * Update torch * update torch and header * unduplicate texture for tumble * Update torch * Update migration.py * put the sort by default * fix replace_segmented_textures_with_o2r_textures * Update torch * fix yamls * add manual_segments in data of course * comment out replace_segmented_textures_with_o2r_textures and segment 3 * remove segment 5 * (wip) remove segment 6 still plenty of thing to do * more vtx * more change * Update torch * small fix * Update BansheeBoardwalk.cpp * fix blockFort * Delete test.yaml * fix bowser castle and simplify track sections * fix choco mountain * clean banshee * fix dk jungle * fix double deck * fix macos * fix error * fix macos ci * Update torch * Update torch * fix frappe snowland * fix kalimari desert * fix koopa troopa beach * fix luigi raceway * fix mario raceway and simplify thing * fix moo moo farm * fix rainbow road * Update torch * Update torch * hopefully fix windows error * fix a small error * fix royal raceway (and podium in theory) * fix sherbet_land * fix skyscraper * fix toads turnpike * fix wario stadium * fix yoshi valley * update torch * more clang tidy rules * REMOVE totally SEGMENT (sorry for the PR) * remove unused field in course and props and unused packed asset * fix kart texture * fix particle * fix track section and transparency * try fix mode extra * fix macos build and render * fix collision in extra * small change and try fix windows error * a little of clean * more cleanup * forget header and more clean up * Update Makefile * fix credits * fix kart texture offset * remove LoadTextures and add Unload * fix definitevely mirror mode * add unload but it's not perfect * revert a bad fix * clean no longer used python script * fix crash with player * being able to load the same course twice * add a comment on DrawWater * fix render of transparent object * better hack * add a proper migration instruction * fix number * add basic modsmanager * add meta/mods.toml * Update EditorMath.h * Update ModsManager.cpp * basic modManager (maybe I should rename it ModLoader) * use range on dependencies * add information about mods.toml * fix coment * some rename around * Delete beta-to-v1.md * Update migrations.md * Update textures-pack.md * Update modding.md * Update modding.md * clean yamls_old * move to mods in engine * rename ModsManger to ModManager * move init and unload at the top * rename ModsMetadata to ModMetadata * fix header * Update ModManager.cpp * put core mods at top
2025-11-23Only Spawn Three ChainChomps for Rainbow Track (#569)MegaMech
* Update RainbowRoad.cpp * Update ChainChomp.cpp * Decrement actor counters in destructor * Update Finishline.cpp
2025-11-22Fix Mole Spawns and Tick Rate (#566)MegaMech
* Fix Mole Spawns and Tick Rate * Fix Compile * Actually Fix Compile