A more up to date Base repository can be found here
This repo contains a base project that can be used to create code modifications for Super Mario Odyssey v1.0.0. It's main purpose is to give people a project that contains headers that can be used to more easily create mods that does more to the game than what can normally be done through romfs editing alone. it also contains example code to show how to do certain things within the starlight environment.
- devkitPro
- Python 3
- The Keystone-Engine Python Module
Before Building, you should make sure that the default things for the project is properly setup.
For the TCP Logger, you can define GLOBALDEBUGIP
to set the IP address used for connecting the socket to a server hosted on your local machine. (Note: the port can be easily changed in logger.cpp, its default value is 3080.)
In the makefile, you can set IP
, USER
, and PASS
to their respective values in order to automatically send builds to an FTP server hosted on a modded switch. Then, whenever you run make send
you'll build the project and immediately send to the switch.
Creating a custom actor is straight forward thankfully, and there is an example actor in this repository if you wish to start from one already proven working. To add more custom actors, firs you'll need to create the custom actors header and c++ files in their respective folders. Then, create a class that extends al::LiveActor
and implement the virtual functions used in the example actor. You can then define nerves by using the NERVE_IMPL
and NERVE_HEADER
macros used in the OdysseyDecomp project, which I included here for easy nerve defines. Then, after creating your actor, navigate to al/factory/ActorFactoryEntries100.h
and add in the name of your class, as well as its creation function (do this by simply using al::createActorFunction<(class type)> in the second parameter for factory entries) to the static table of actor creators.
Once you've handled most of the code for the custom actor, you can either copy an existing object archive from SMO and edit it to your liking, or create an entirely new archive, so long as the archive contains the minimum Init bymls required for an actor (most of the time its InitModel.byml, InitPose.byml, InitClipping.byml, InitExecutor.byml, and InitMaterialLight.byml), and a BFRES model if your actor needs it. Once done, save the archive, and add your custom actor to a stage you wish to have the actor in. From there everything should work and you'll have a custom actor working in Odyssey!
- devkitPro
- Python 3
- The Keystone-Engine Python Module
Build has only been tested on WSL2 running Ubuntu 20.04.1.
Just run:
DEVKITPRO={path_to_devkitpro} make
On Ubuntu (and other Debian-based systems), devkitPro will be installed to /opt/devkitpro
by default:
DEVKITPRO=/opt/devkitpro/ make
After a successful build, simply transfer the atmosphere
folder located inside starlight_patch_100
to the root of your switch's SD card.
- OdysseyDecomp nerve utility macros
- OdysseyReversed original decomp repo
- open-ead sead Headers
- Bryce Original Starlight fork for SMO
An enviroment for linking to Splatoon 2 executable and implementing hooks.
- 3096
- khang06
- OatmealDome
- Random0666
- shadowninja108
- shibbo - Repo based on their work on OdysseyReversed
- Thog - Expertise in how rtld is implemented
- devkitA64
- libnx - switch build rules