Force Low Quality Item Boxes

Force Low Quality Item Boxes
Author: AdolescentSeagull
Version: v1.0
Date of latest version: 2024-01-04

Overview

Force Low Quality Item Boxes is a gecko/AR code created by AdolescentSeagull. It forces the low quality item box model (and reduced animations) for all modes, except time trials, where the item box appears. This low quality item box appears in the vanilla game in LAN mode under certain circumstances.

Codes

Japanese (NTSC-J) American (NTSC-U) European (PAL) July 2004 Debug
041fb648 38000001

041fb700 38000001
041fc9bc 38000001
041fb364 38000001
041fc0a4 38000001
041fc94c 38000001
041fca68 38000001
041fcae0 38000001
041fb2a0 38000001
041fb2dc 38000001
041fb594 38000001

041fb620 38000001

041fb6d8 38000001
041fc994 38000001
041fb33c 38000001
041fc07c 38000001
041fc924 38000001
041fca40 38000001
041fcab8 38000001
041fb278 38000001
041fb2b4 38000001
041fb56c 38000001

041fb5f0 38000001

041fb6a8 38000001
041fc964 38000001
041fb30c 38000001
041fc04c 38000001
041fc8f4 38000001
041fca88 38000001
041fca10 38000001
041fb248 38000001
041fb284 38000001
041fb53c 38000001

0422e45c 38000001

0422e514 38000001
0422f820 38000001
0422e178 38000001
0422ef08 38000001
0422f7b0 38000001
0422f8cc 38000001
0422f944 38000001
0422e0b4 38000001
0422e0f0 38000001
0422e3a8 38000001

Media

 

Movitation

By forcing this low quality item box, less memory on the heap is allocated overall. This means that crashes due to running out of memory are less frequent.

Technical Information

The global variable gRaceInfo has a byte field (at address 0x0) which is returned by a getter function named isTinyProcess, this is a flag that is used to improve performance by disabling some animations (such as hair physics), removing the big damage from items like the Bowser shell and downscaling the item boxes. In the vanilla game, this variable is set to 1 in RaceInfo::setRace if there are more than 2 viewports and the number of karts participating in a race/battle is more than 4 - this is only possible in LAN mode in normal gameplay.
This variable is read in many places, but the functions where this is read to adjust the item box appearance are:

  • GeoItemBox::getBmdName
  • GeoItemBox::getBmdFileName
  • GeoDoubleItemBox::getBmdFileName
  • GeoItemBox::getSizeAnmTbl
  • GeoF_ItemBox::GeoF_ItemBox
  • GeoDoubleItemBox::GeoDoubleItemBox
  • GeoDoubleItemBox::getAnmTbl
  • GeoDoubleItemBox::getSizeAnmTbl
  • GeoItemBox::initialize
  • GeoItemBox::getAnmTbl
  • GeoItemBox::createModel

The cheat codes overwrite the lbz opcodes in these functions to always load the immediate value 1 - effectively forcing the low quality item box.

Version History

Version Date of release Information
v1.0 2024-01-04 First revision