Copy Link
Add to Bookmark
Report

A few examples of sliding-window memory management in Nintendo 64 games

Nintendo64's profile picture
Published in 
N64 various
 · 5 years ago

A few examples of sliding-window memory management...

US Rush 2049:
Within 800E7B44, at 800E7B9C, it loads a copy of reported rdram size and subtracts the base free memory address from it (8007A680). The memory manager uses that result to figure out how much free memory is left.

US Rogue Squadron 1.1:
Presuming you don't feed it command-line arguments, the size of free memory is computed at 8000169C within 800015B8. A requested amount (A2) is subtracted from reported rdram size and stored to 80107FD4 through 80107FE8.

US Turok 3:
Interesting one here. 80252C80 detects if you have 8MB or more available, and if so forces it down to 7MB. 80243A38 is where it computes and saves this dynamic size.

US Shadow Man:
Within 801034E0, at 8010352C, if rdram is detected larger than 6MB it is forced down to 6MB. 8004A5B4 receives the available free memory, modified for their convenience.

US Ocarina of Time(s):
Reported memory is loaded from 8009B7B0, then passed to 80080160 and 80089C90 to initialize and set available free memory. Most likely this is the same code, uneditted, later used in Yoshi's Story. Interestingly, never presumes more than 6MB will be available, corresponding to the earlier proposed memory expansion chip.

US Majora's Mask:
Same engine, same code. Only addresses differ.

US Yoshi's Story:
80067400 acts as a wrapper to 80084820, initializing free memory. The base of free memory starts at 80112CA0, and the size is computed from reported rdram size. All memory within this range is set to zero. 800712B8 is responsible for setting the range itself.

Doubutsu no Mori:
Simplified version of code above. 8002F4C0 initializes memory using total size - 0x44690. General allocations and video buffers are computed from this free region.

StarCraft 64:
Possibly the most interesting of all. This title is the only one to clearly benefit from having more than 8MB available. It uses however much memory is reported available like some of the above examples. During map selection it computes the required memory in order to play that map with a given number of players. If you don't have enough it limits the map to a lower number. If you happen to have more than 8MB, some MP stages usually limited to 4 or 6 players will permit up to 8.

There's bound to be other titles that do so, but that should be a decent cross-sample of different companies and engines to prove the point. So, provided the console reports the additional rdram properly, these titles would either use it or at the least realize it's available.

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT