This repository contains the source code of The Koopa Who Stole Christmas, a Christmas-themed Super Mario 64 DS ROM hack.
The mod contains custom code in ASM patches, dynamic libraries (DLs) and the More Objects Mod (MOM) overlay. All of them use the SM64DS Programming Interface, which is a collection of C++ header files and symbols that allow custom C++ code to interface with code in the vanilla game. In addition to the source files in this repository, the mod also contains some custom code inserted by SM64DSe, such as the DL loader code.
- Make sure you have installed:
- devkitPro
- This version of NSMBe
- SM64DSe (version 3.3.7 or later)
- Save the path of SM64DSe.exe to an environment variable called
SM64DSe
- Patch your starting ROM:
- Start xdelta/xdeltaUI.exe.
- Select one of the patches in rom_patches as the "Patch".
- Select a clean SM64DS ROM of the corresponding region as the "Source File".
- Set the "Output File" as tkwsc.nds at the root of the repository and click on "Patch".
- To compile and insert the ASM patches, open the ROM in NSMBe and click on "Run 'make' and insert" in the "Tools/Options" tab (required for the ROM to work).
- After this, you may also:
- Compile and insert the dynamic libraries by running
make DLs
. - Compile and insert the MOM overlay by running
make MOM
. - Generate a zip file for a new release by running
make release
. (This requires that you have Python installed and correctly named clean ROMs for different regions in the clean_roms folder; see release_settings.json.)
- Compile and insert the dynamic libraries by running
These are the credits for the source files in this repository. See release_include/README.txt for the credits of the hack more generally.
- include/actor_tree.h
- include/airship.h
- include/background.h
- include/extended_ks.h
- include/final_boss_dl.h
- include/fixed_size_actor_list.h
- include/flight_cam_ctrl.h
- include/infinite_floor.h
- include/snufit.h
- include/swooper.h
- include/unaligned.h
- include/wing.h
- include/MOM/Berry.h (ported to new headers)
- include/MOM/BlueIceBlock.h (ported to new headers)
- include/MOM/CharacterBlock.h (ported to new headers)
- include/MOM/ColoredCoin.h (ported to new headers)
- include/MOM/ColoredPipe.h (ported to new headers)
- include/MOM/CutsceneLoader.h (major changes)
- include/MOM/FFL_Specifics.h (separated IceCoinCounter)
- include/MOM/GalaxyShrinkingPlatform.h (ported to new headers)
- include/MOM/Goomba.h (various changes)
- include/MOM/IceCoinCounter.h
- include/MOM/InvisibleWall.h (ported to new headers)
- include/MOM/LaunchStar.h (many changes related to lighting, final boss, etc.)
- include/MOM/MOM_IDs.h
- include/MOM/MOM_interface.h
- include/MOM/Magikoopa.h (ported to new headers)
- include/MOM/NPC.h (ported to new headers)
- include/MOM/Noteblock.h (fixed a bug)
- include/MOM/ObjectLightingModifier.h (ported to new headers)
- include/MOM/SaveBlock.h (ported to new headers)
- include/MOM/ShyGuy.h (ported to new headers)
- include/MOM/StarChip.h (many changes related to lighting, numbers, final boss, etc.)
- include/MOM/TreasureChest.h (ported to new headers)
- include/MOM/TreeShadow.h (ported to new headers)
- include/MOM/YoshiRide.h (fixed and improved various things)
- source/libc/mem.cpp
- source/patches/ExternalParticleTextures.cpp (a hook for unloading textures)
- source/patches/Feather.s
- source/patches/MOM_Loader.cpp
- source/patches/actor_extension.cpp
- source/patches/actor_tree.cpp
- source/patches/autoRun.cpp
- source/patches/debug_screen.s
- source/patches/egg_fix.s
- source/patches/ending.cpp
- source/patches/extended_ks.cpp
- source/patches/extended_ks.impl
- source/patches/final_boss.cpp
- source/patches/final_boss_intro.cpp
- source/patches/free_camera.cpp
- source/patches/hub_star_id.cpp
- source/patches/intra_level_warp.cpp
- source/patches/launch_star.cpp
- source/patches/multiheap.cpp
- source/patches/numbers.cpp
- source/patches/painting.cpp
- source/patches/patches.s (many of the patches)
- source/patches/save_life_count.s
- source/patches/walljump.cpp
- source/DLs/credits/credits.cpp (minimap, save dialog)
- source/DLs/final_boss/airship.cpp
- source/DLs/final_boss/background.cpp
- source/DLs/final_boss/bowser.cpp
- source/DLs/final_boss/hanger.cpp
- source/DLs/final_boss/snufit.cpp (disassembled from vanilla SM64DS)
- source/DLs/final_boss/swooper.cpp (disassembled from vanilla SM64DS)
- source/DLs/final_boss/wing.cpp
- source/DLs/final_boss/anchor.cpp
- source/DLs/final_boss/bomb_hanger.cpp
- source/DLs/final_boss/final_boss_dl.cpp
- source/DLs/final_boss/minimap.cpp
- source/DLs/final_boss/snufit_asm.s (disassembled from vanilla SM64DS)
- source/DLs/final_boss/swooper_asm.s (disassembled from vanilla SM64DS)
- source/DLs/infinite_floor/infinite_floor.cpp
- source/DLs/intro_and_ending/intro_and_ending.cpp (ending cutscene, big star on top the tree)
- source/MOM/Berry.cpp (fixed a bug)
- source/MOM/BezierPathIter.cpp (final boss specifics)
- source/MOM/BlueIceBlock.cpp (ported to new headers)
- source/MOM/CharacterBlock.cpp (ported to new headers)
- source/MOM/ColoredCoin.cpp (improved performance and shadows)
- source/MOM/ColoredPipe.cpp (ported to new headers)
- source/MOM/CutsceneLoader.cpp (major changes)
- source/MOM/FFL_Specifics.cpp (separated IceCoinCounter)
- source/MOM/GalaxyShrinkingPlatform.cpp (ported to new headers)
- source/MOM/Goomba.cpp (various changes including final boss specifics)
- source/MOM/IceCoinCounter.cpp
- source/MOM/InvisibleWall.cpp (ported to new headers)
- source/MOM/LaunchStar.cpp (many changes related to lighting, final boss, etc.)
- source/MOM/Magikoopa.cpp (increased difficulty, final boss specifics)
- source/MOM/NPC.cpp (ported to new headers)
- source/MOM/Noteblock.cpp (fixed a bug)
- source/MOM/ObjectLightingModifier.cpp (ported to new headers)
- source/MOM/SaveBlock.cpp (show message while saving)
- source/MOM/ShyGuy.cpp (ported to new headers)
- source/MOM/StarChip.cpp (many changes related to lighting, numbers, final boss, etc.)
- source/MOM/TreasureChest.cpp (ported to new headers)
- source/MOM/TreeShadow.cpp (ported to new headers)
- source/unused/debug.cpp
- source/MOM/YoshiRide.cpp (fixed and improved various things)
- Makefile
- linker.x
- build_release.py
- release_settings.json
- include/YoshiColors.h
- include/MOM/BlueIceBlock.h
- include/MOM/CharacterBlock.h
- include/MOM/ColoredCoin.h
- include/MOM/ColoredPipe.h
- include/MOM/CutsceneLoader.h
- include/MOM/FFL_Specifics.h
- include/MOM/Goomba.h
- include/MOM/IceCoinCounter.h
- include/MOM/LaunchStar.h (Star Chip support)
- include/MOM/MOM_IDs.h
- include/MOM/Magikoopa.h (particle stuff)
- include/MOM/NPC.h
- include/MOM/Noteblock.h (changed how shadows are implemented)
- include/MOM/SaveBlock.h
- include/MOM/ShyGuy.h (support for custom colors)
- include/MOM/StarChip.h
- include/MOM/TreasureChest.h (minor changes)
- include/MOM/TreeShadow.h
- source/patches/patches.s (many of the patches)
- source/patches/ColoredPipeSound.cpp
- source/patches/CppEmbeddedParticles.s (hooks decompiled from SM256)
- source/patches/ExternalParticleTextures.cpp
- source/patches/InsideHubMinimapFix.s
- source/patches/StarsDontExitDelfino.s
- source/patches/UnhardcodeMinimaps.s
- source/patches/YoshiBreakBricks.s
- source/patches/YoshiColors.cpp
- source/patches/YoshiKillBoo.s
- source/patches/YoshiPunch.s
- source/DLs/intro_and_ending/intro_and_ending.cpp (intro cutscene)
- source/MOM/Berry.cpp (some fixes)
- source/MOM/BlueIceBlock.cpp
- source/MOM/CharacterBlock.cpp
- source/MOM/ColoredCoin.cpp
- source/MOM/ColoredPipe.cpp
- source/MOM/CutsceneLoader.cpp
- source/MOM/FFL_Specifics.cpp
- source/MOM/Goomba.cpp
- source/MOM/IceCoinCounter.cpp
- source/MOM/LaunchStar.cpp (Star Chip support)
- source/MOM/Magikoopa.cpp (particle stuff, FFL specifics)
- source/MOM/NPC.cpp
- source/MOM/Noteblock.cpp (changed how shadows are implemented)
- source/MOM/SaveBlock.cpp
- source/MOM/ShyGuy.cpp (support for custom colors)
- source/MOM/StarChip.cpp
- source/MOM/TreasureChest.cpp (minor changes)
- source/MOM/TreeShadow.cpp
- source/MOM/YoshiRide.cpp (some fixes)
- source/unused/AntiCheat.cpp
- include/MOM/Berry.h (minor changes)
- include/MOM/GalaxyShrinkingPlatform.h
- include/MOM/InvisibleWall.h
- include/MOM/LaunchStar.h (some fixes)
- include/MOM/MOM_IDs.h
- include/MOM/Noteblock.h
- include/MOM/ObjectLightingModifier.h
- source/MOM/Berry.cpp (minor changes)
- source/MOM/GalaxyShrinkingPlatform.cpp
- source/MOM/InvisibleWall.cpp
- source/MOM/LaunchStar.cpp (some fixes)
- source/MOM/Noteblock.cpp
- source/MOM/ObjectLightingModifier.cpp
- include/MOM/Berry.h
- include/MOM/Goomba.h
- include/MOM/LaunchStar.h
- include/MOM/Magikoopa.h
- include/MOM/ShyGuy.h
- include/MOM/TreasureChest.h
- include/MOM/NPC.h (originally YoshiNPC.h)
- include/MOM/YoshiRide.h
- source/patches/CppEmbeddedParticles.s (edits equivalent to the hooks in the file)
- source/MOM/Berry.cpp
- source/MOM/BezierPathIter.cpp
- source/MOM/Goomba.cpp
- source/MOM/LaunchStar.cpp
- source/MOM/Magikoopa.cpp
- source/MOM/ShyGuy.cpp
- source/MOM/TreasureChest.cpp
- source/MOM/NPC.cpp (originally YoshiNPC.cpp)
- source/MOM/YoshiRide.cpp
- source/DLs/credits/credits.cpp (Kuppa Script for the credits)
- source/MOM/CharacterBlock.cpp (changed conditions for different Yoshis)