Super Mario 64 reverse engineering project by Ciro Santilli 35 Updated +Created
OMG, both of those just fucking work on Ubuntu 20.04 with README instructions, it is unbelievable, those people don't have lives. And it builds the ROM byte by byte equal from source!
There are a few different versions:
Tested with the USA ROM at sha1sum 9bef1128717f958171a4afac3ed78ee2bb4e86ce (you need a ROM to extract assets, which the project automates), which is also documented in the project itself: github.com/sm64-port/sm64-port/blob/6b47859f757a40096fedd6237f2bc3573d0bc2a4/sm64.us.sha1. Disclaimer: Ciro Santilli owns a copy of Super Mario 64.
The only dependency missing from Ubuntu packages is the IRIX QEMU user mode which they need for their tooling. The project also has a QEMU fork for that, and provide a working deb.
From this project it was also noticed that certain ROM releases were not compiled with optimizations enabled, presumably because as a release title the compiler had optimization bugs! www.resetera.com/threads/so-apparently-the-ntsc-build-of-mario-64-didnt-use-any-compiler-optimizations.166277/ But now they do have a working compiler, and by turning that switch FPS increases in certain levels!!!
It is good to know that this game will "never die".
Some quick stupid patches:
  • jump really high:
    diff --git a/src/game/mario.c b/src/game/mario.c
    index 5b103fa..83c9f40 100644
    --- a/src/game/mario.c
    +++ b/src/game/mario.c
    @@ -826,7 +826,7 @@ static u32 set_mario_action_airborne(struct MarioState *m, u32 action, u32 actio
             case ACT_JUMP:
             case ACT_HOLD_JUMP:
                 m->marioObj->header.gfx.unk38.animID = -1;
    -            set_mario_y_vel_based_on_fspeed(m, 42.0f, 0.25f);
    +            set_mario_y_vel_based_on_fspeed(m, 200.0f, 0.25f);
                 m->forwardVel *= 0.8f;
                 break;
Interesting entry points:
  • src/game/game_init.c
TODO: enable the level select debug feature! tcrf.net/Super_Mario_64_(Nintendo_64)/Debug_Content#Classic_Debug_Display They actually shipped quite a few debug features into the retail game, and they have been reversed too. I tried this but it didn't work (or I don't know how to enable the level select menu):
diff --git a/src/game/main.c b/src/game/main.c
index 9e53e50..b7443a8 100644
--- a/src/game/main.c
+++ b/src/game/main.c
@@ -65,7 +65,7 @@ s8 sAudioEnabled = 1;
 u32 sNumVblanks = 0;
 s8 gResetTimer = 0;
 s8 D_8032C648 = 0;
-s8 gDebugLevelSelect = 0;
+s8 gDebugLevelSelect = 1;
 s8 D_8032C650 = 0;

 s8 gShowProfiler = FALSE;
The enhancements/ folder contains a few sample patches.
Figure 1.
Screenshot of mupen64Plus running on Ubuntu 20.04 emulating Super Mario 64 with the title screen hacked by Ciro Santilli based on the Super Mario 64 reverse engineering project
. The title was on a string, so the hack was trivial! The patch used was:
diff --git a/include/text_strings.h.in b/include/text_strings.h.in
index 749179b..626f87e 100644
--- a/include/text_strings.h.in
+++ b/include/text_strings.h.in
@@ -131,7 +131,7 @@
  */
 // Main Screens
 #define TEXT_MARIO _("MARIO") // View Score Menu
-#define TEXT_SELECT_FILE _("SELECT FILE")
+#define TEXT_SELECT_FILE _("HACKED BY CIRO")
 #define TEXT_CHECK_FILE _("CHECK FILE")
 #define TEXT_COPY_FILE _("COPY FILE")
 #define TEXT_ERASE_FILE _("ERASE FILE")
Some tutorials of hacking it:
Video 1.
FIXING the ENTIRE SM64 Source Code by Kaze Emanuar (2022)
Source. Now that we have the source, modders like this are going nuts.
Ribosome large subunit by Ciro Santilli 35 Updated +Created
Both eukaryotic and prokaryotic ribosomes have a large and a small subunit.
Inner mitochondrial membrane by Ciro Santilli 35 Updated +Created
Equity (finance) by Ciro Santilli 35 Updated +Created
SQL example by Ciro Santilli 35 Updated +Created
We have some runnable SQL examples with assertion under the sequelize/raw directory.
These examples are written in the Sequelize library using raw queries.
Sequelize is used minimally, just to feed raw queries in transparently to any underlying database, and get minimally parsed results out for us, which we then assert with standard JavaScript. The queries themselves are all written by hand.
By default the examples run on SQLite. Just like the examples from sequelize example, you can set the database at runtime as:
Here we list only examples which we believe are standard SQL, and should therefore work across different SQL implementations:
SQL implementation by Ciro Santilli 35 Updated +Created
Spin 1 by Ciro Santilli 35 Updated +Created
Representations of by Ciro Santilli 35 Updated +Created
Sun by Ciro Santilli 35 Updated +Created
Wealth distribution in the United States by Ciro Santilli 35 Updated +Created
Grew tremendously since the 1990's, likely linked to the Internet.
TODO why is it so hard to find a proper cumulative distribution function-like curve? OMG. This appears to be also called a Lorenz curve.
Video 1.
Wealth Inequality in America by politizane
. Source.
Isomorphic JavaScript by Ciro Santilli 35 Updated +Created
SARS-CoV-2 protein by Ciro Santilli 35 Updated +Created
Quantum number by Ciro Santilli 35 Updated +Created
However, it very cool that they are actually discovered before the Schrödinger equation, and are present in the Bohr model (principal quantum number) and the Bohr-Sommerfeld model (azimuthal quantum number and magnetic quantum number) of the atom. This must be because they observed direct effects of those numbers in some experiments. TODO which experiments.
E.g. The Quantum Story by Jim Baggott (2011) page 34 mentions:
As the various lines in the spectrum were identified with different quantum jumps between different orbits, it was soon discovered that not all the possible jumps were appearing. Some lines were missing. For some reason certain jumps were forbidden. An elaborate scheme of ‘selection rules’ was established by Bohr and Sommerfeld to account for those jumps that were allowed and those that were forbidden.
This refers to forbidden mechanism. TODO concrete example, ideally the first one to be noticed. How can you notice this if the energy depends only on the principal quantum number?
Video 1.
Quantum Numbers, Atomic Orbitals, and Electron configurations by Professor Dave Explains (2015)
Source. He does not say the key words "Eigenvalues of the Schrödinger equation" (Which solve it), but the summary of results is good enough.
Mass renormalization by Ciro Santilli 35 Updated +Created
Remarkable 2 by Ciro Santilli 35 Updated +Created
Display size: 10.3 inches. Perfect size
Energy-momentum relation by Ciro Santilli 35 Updated +Created
Raspberry Pi Pico by Ciro Santilli 35 Updated +Created
Some key specs:

Unlisted articles are being shown, click here to show only listed articles.