# List of Memory Interface (MI) API Functions

### Memory Operations by the CPU

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

### Memory Operations by the DMA

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_SetPhiClock | Sets PHI terminal output clock.
MI_GetPhiClock | Gets PHI terminal output clock settings.
MI_SetCartridgeRomCycle1st | Sets the 1st access cycle to the Game Pak ROM region.
MI_GetCartridgeRomCycle1st | Gets the settings for the 1st access cycle to the Game Pak ROM region.
MI_SetCartridgeRomCycle2nd | Sets the 2nd access cycle to the Game Pak ROM region.
MI_GetCartridgeRomCycle2nd | Gets the setting for the 2nd access cycle to 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_SwapEndian16 | This macro reverses the endian of a 16-bit value.
MI_SwapEndian32 | This macro reverses the endian of a 32-bit value.
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_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_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_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_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_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_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_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, 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