List of Memory Interface (MI) API Functions

CPU Memory Operations

MI_CpuCopy* Copies data.
MI_CpuFill* Fills memory with specified data.
MI_CpuClear* Zero-clears memory.
MI_CpuSend* Sends data with fixed address.

DMA Memory Operations

MI_DmaCopy* Copies data.
MI_DmaFill* Fills memory with specified data.
MI_DmaClear* Zero-clears memory.
MI_DmaSend* Sends data with fixed address.
MI_HBlankDmaCopy* Uses H-Blank DMA to copy data.
MI_VBlankDmaCopy* Uses V-Blank DMA to copy data.
MI_DispMemDmaCopy Sets main memory display DMA copies.
MI_SendGXCommand* Uses DMA to send geometry commands to command FIFO.
MI_IsDmaBusy Checks whether the specified DMA channel is being used.
MI_WaitDma Waits for the specified end of DMA.
MI_StopDma Stops specified DMA.

External Memory Control

MI_SetMainMemoryPriority Sets access priority to main memory.
MI_GetMainMemoryPriority Gets settings for access priority to main memory.
MI_GetCardProcessor Gets settings for access rights to card.
MI_GetCartridgeProcessor Gets settings for access rights to Game Pak.
MI_SetCartridgeRomCycle1st Sets the first access cycle to the Game Pak ROM region.
MI_GetCartridgeRomCycle1st Gets the settings for the first access cycle to the Game Pak ROM region.
MI_SetCartridgeRomCycle2nd Sets the second access cycle to the Game Pak ROM region.
MI_GetCartridgeRomCycle2nd Gets the setting for the second access cycle to access the Game Pak's ROM region.
MI_SetCartridgeRamCycle Sets the access cycle to the Game Pak RAM region.
MI_GetCartridgeRamCycle Gets the settings for the access cycle to the Game Pak RAM region.
MI_SetAgbCartridgeFastestRomCycle Sets the high-speed access cycle to the AGB Game Pak ROM region.

Work RAM Settings

MI_SetWramBank Configures shared work RAM allocation for ARM7 and ARM9.

Memory Swap

MI_SwapByte Swaps specified byte data and memory data.
MI_SwapWord Swaps specified word data and memory data.

Expanding Compressed Data

MI_UnpackBits Expands the data filled with fixed 0.
MI_UncompressLZ8 Expands the LZ77 compressed data in units of 8 bits.
MI_UncompressLZ16 Expands the LZ77 compressed data in units of 16 bits.
MI_UncompressHuffman Expands Huffman compressed data in 32-bit units.
MI_UncompressRL8 Expands run length compressed data in 8-bit units.
MI_UncompressRL16 Expands run length compressed data in 16-bit units.
MI_UnfilterDiff8 Expands the data which the difference filter was applied in 8-bit units.
MI_UnfilterDiff16 Expands the data which the difference filter was applied in 16-bit units.
MI_GetUncompressedSize Obtains the size of the expanded data.
MI_GetCompressionType Obtains the compression format of the compressed data.
MI_InitUncompContextRL Initializes run length compression streaming decode context.
MI_InitUncompContextLZ Initializes LZ77 compression streaming decode context.
MI_InitUncompContextHuffman Initializes the Huffman compression streaming decode context.
MI_ReadUncompRL* Runs run length compression streaming decoding.
MI_ReadUncompLZ* Runs LZ77 compression streaming decoding.
MI_ReadUncompHuffman Runs Huffman compression streaming decoding.
MI_CompressRL Performs run length compression on the data.
MI_CompressLZ Performs LZ77 compression on the data.
MI_CompressLZFast Performs LZ77 compression on the data. Processing is performed rather quickly in exchange for requiring a work buffer.
MI_CompressHuffman Performs Huffman compression on the data.

Byte Access

MI_ReadByte Reads the byte data from the memory.
MI_WriteByte Writes the byte data to the memory.

Endian-Aware Memory Access

MI_SwapEndian8 This macro reverses the endian of a 8-bit value.
These 8-bit versions do not actually perform any conversions, but they have been included for uniform source code visibility.
MI_SwapEndian16 This macro reverses the endian of a 16-bit value.
MI_SwapEndian32 This macro reverses the endian of a 32-bit value.
MI_HToLE8 This macro converts a 8-bit value from the current environment to little endian.
These 8-bit versions do not actually perform any conversions, but they have been included for uniform source code visibility.
MI_HToLE16 This macro converts a 16-bit value from the current environment to little endian.
MI_HToLE32 This macro converts a 32-bit value from the current environment to little endian.
MI_HToBE8 This macro converts a 8-bit value from the current environment to big endian.
These 8-bit versions do not actually perform any conversions, but they have been included for uniform source code visibility.
MI_HToBE16 This macro converts a 16-bit value from the current environment to big endian.
MI_HToBE32 This macro converts a 32-bit value from the current environment to big endian.
MI_LEToH8 This macro converts a 8-bit value from little endian to the current environment.
These 8-bit versions do not actually perform any conversions, but they have been included for uniform source code visibility.
MI_LEToH16 This macro converts a 16-bit value from little endian to the current environment.
MI_LEToH32 This macro converts a 32-bit value from little endian to the current environment.
MI_BEToH8 This macro converts a 8-bit value from big endian to the current environment.
These 8-bit versions do not actually perform any conversions, but they have been included for uniform source code visibility.
MI_BEToH16 This macro converts a 16-bit value from big endian to the current environment.
MI_BEToH32 This macro converts a 32-bit value from big endian to the current environment.
MI_Load8LE This macro reads a 8-bit value from the specified address as little endian.
MI_Load16LE This macro reads a 16-bit value from the specified address as little endian.
MI_Load32LE This macro reads a 32-bit value from the specified address as little endian.
MI_Load8BE This macro reads a 8-bit value from the specified address as big endian.
MI_Load16BE This macro reads a 16-bit value from the specified address as big endian.
MI_Load32BE This macro reads a 32-bit value from the specified address as big endian.
MI_Store8LE This macro writes a 8-bit value to the specified address as little endian.
MI_Store16LE This macro writes a 16-bit value to the specified address as little endian.
MI_Store32LE This macro writes a 32-bit value to the specified address as little endian.
MI_Store8BE This macro writes a 8-bit value to the specified address as big endian.
MI_Store16BE This macro writes a 16-bit value to the specified address as big endian.
MI_Store32BE This macro writes a 32-bit value to the specified address as big endian.

Types and Structures

MICompressionHeader Compression data header information structure.
MIUncompContextRL Context structure when using run length compression streaming decoding.
MIUncompContextLZ Context structure when using LZ77 compression streaming decoding.
MIUncompContextHuffman Context structure when using Huffman compression streaming decoding.

CONFIDENTIAL