Microcode

From CloudModding MM Wiki
Jump to: navigation, search

Introduction

Microcode (sometimes appearing as "ucode", standing for μcode) is a set of C macros used to instruct the RSP on how to render a frame, without the programmer having to do so themselves. (add intro to rsp, dlists, etc. here)

Note: This article has been written from the point of view of a ROM hacker. Function information is given in the context of interpreting and modifying model data from the Zelda games, not necessarily in that of writing an accurate RSP emulator.

Microcode Libraries

Majora's Mask (U) 1.0:

RSP Gfx ucode F3DZEX.NoN  fifo 2.08I Yoshitaka Yasumoto/Kawasedo 1999
RSP Gfx ucode S2DEX       fifo 2.08  Yoshitaka Yasumoto 1999 Nintendo

Majora's Mask Debug Rom:

RSP Gfx ucode F3DZEX.NoN  fifo 2.08I Yoshitaka Yasumoto/Kawasedo 1999
RSP Gfx ucode S2DEX       fifo 2.08  Yoshitaka Yasumoto 1999 Nintendo

The above are microcodes, each with a set of opcodes (operation codes) designed to tell the hardware to do certain things, such as enable/disable texturing, draw polygons, and everything from there. S2DEX is a 2D microcode, while F3DZEX (F3DEX2) does the 3D drawing. There are no major differences between 2.06H and 2.08J, as Utility of Time has no trouble rendering model data from OoT 1.0, while it was technically designed around Debug ROM data.

F3DZEX

Main article: F3DZEX

Microcode Dump Feature

In the event of a fatal error, the Majora's Mask Debug Rom is capable of generating a dump of the entire microcode pipeline for the current frame, sending it to the IS64. This dump can be triggered with the following cheat code: 800A5A20 0000. Once the dump begins, it's recommended that you set the value back to 0001, since otherwise the game will constantly generate a dump.

Legacy Credits

  • cooliscool
  • ZethAlkar64