Skip to content

Fork of the ultrasm64-extbounds repo by Reonu (which is a fork of the ultrasm64 repo by CrashOveride) which includes wall-climbing, "cloud-stepping" (mid-air jumps), gliding, and a rope dart (grappling hook).

Cheezepin/messenger-64

Repository files navigation

Messenger 64

Fork of the ultrasm64-extbounds repo by Reonu which contains the following additions:

  • Wall Climbing (automatic when hitting a wall)
  • Gliding (hold A when in the air)
  • Rope Dart / Grappling Hook (press L)
  • "Cloud-stepping" (press A after jumping on or hooking on an enemy, indicated by the cloud beneath you)

Most of the code for these mechanics is contained in src/game/behaviors/rope_dart.inc.c and src/game/mario_actions_airborne.c, with some minimal tweaks in src/game/interaction.c and src/game/mario_step.c.

Most notably to any users is the array at the top of src/game/behaviors/rope_dart.inc.c. This array determines the objects Mario can hook onto with the rope dart, as well as how far away Mario needs to be from the object before the rope unhooks and how high above the object's origin the dart should snap to (if these things aren't already set by the object's hitbox).

I don't have many plans to update this repository further. If you'd like me to fix a glaring issue, I can take a look into it, but don't have your hopes up too high.

UltraSM64-extbounds

Fork of the ultrasm64 repo by CrashOveride which includes the following commonly used patches:

  • slope fix
  • exposed ceilings fix
  • Instant Input patch by Wiseguy (Removes all input lag caused by good emulators and plugins)
  • pole fix
  • Mario head skip
  • Peach letter cutscene skip
  • better extended boundaries by anonymous_moose
  • coordinate overflow fix by falcobuster
    • If you're planning on making maps bigger than 2x bounds, change the value of WORLD_SCALE in math_util.h to a bigger value. 3.5f should be enough for 4x boundaries but you can go up to 4.0f if you somehow still get rendering glitches on your map.
  • water surface type patch by thecozies
  • platform displacement 2 by arthur.
  • FPS counter (use the function print_fps(x,y) anywhere that runs code every frame)
  • Automatic console/emulator detection. If emulator is detected, LODs are disabled. (If you want to turn this feature off, just set gIsconsole to 1)
  • Rounded corners by Frame, merged by Cheezepin
  • Widescreen (16:9) support toggleable by pressing L in the pause menu.
    • If you don't want this, you can disable it by removing #define wide in ingame_menu.c
    • If you want widescreen to be the default, just call the following function in the level script of your start level: lvl_set_widescreen

It also uncringes the way that apply_patch.sh works, and removes the black border.

UltraSM64

  • This repo contains a full decompilation of Super Mario 64 (J), (U), (E), and (SH).
  • Naming and documentation of the source code and data structures are in progress.
  • It has been edited to allow for the usage of the final "N64 OS" library, version 2.0L
  • Shindou Rumble Pak code is on for all regions.
  • Targeting the iQue Player is supported.
  • Saving to 32kbyte/256kbit SRAM is supported.
  • Newer compression options are supported.
  • UNFLoader (flashcart USB library) is supported, allowing for debugging on EverDrive/64Drive.
  • It has been patched with someone2639's shiftable segments patch
  • Getting HVQM FMV support to work with the game is WIP.

UNFLoader support

The repository supports UNFLoader for debugging.

To build with UNF, run make with UNF=1.

Further instructions can be found at the official repository

Multi-Save support

The repository supports SRAM in addition to EEPROM. The standard save data functions are #ifdef'd to accommedate this.

To build with SRAM support, run make with SAVETYPE=sram.

I may attempt FlashRAM in the future.

Multi-Console support

The repository supports targeting the iQue Player in addition to the N64. The iQue libultra is NOT compatible with N64 in many ways, so it is currently NOT possible to have one build for both consoles.

To target iQue, run make with the CONSOLE=bb argument.

Compression

The repository supports using DEFLATE compression instead of Nintendo's Yay0. This boasts a better compression ratio, but at a slight cost to load times.

On average I'd estimate that the bottleneck on decompression is about 1-2 seconds.

To switch to gzip, run make with the COMPRESS=gzip argument.

The repo also supports gziping with libdeflate-gzip. This compresses at a slightly better ratio than standard gzip, with no real downside from a decompression standpoint.

To use libdeflate-gzip, first clone the repo, then make and make install it.

Then run make for sm64 with GZIPVER=libdef in addition to COMPRESS=gzip

The repo also supports RNC (Rob Northen Compression). RNC has two methods.

Method 1 is designed to compress as small as possible, while method 2 is designed so that decompression is as fast as possible.

Both methods are fast. Method 1 has better compression than 2, so I suggest using method 1 if using RNC.

To switch to RNC, run make with either COMPRESS=rnc1 or COMPRESS=rnc2, depending on preferred method.

The repo also supports building a ROM with no compression.

This is not recommended as it increases ROM size significantly, with little point other than load times decreased to almost nothing.

To switch to no compression, run make with the COMPRESS=uncomp argument.

Installation help

Go read the original repo README.md

About

Fork of the ultrasm64-extbounds repo by Reonu (which is a fork of the ultrasm64 repo by CrashOveride) which includes wall-climbing, "cloud-stepping" (mid-air jumps), gliding, and a rope dart (grappling hook).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published