---
# System prepended metadata

title: 'z64rom:dma'

---

# dma.config

The purpose of the `dma.config` file is to define entries in the DMA table, each associated with an index specified by the corresponding folder name. For example, consider the path:
```
rom/dma/0x##-entry_name/dma.config
```
Here, the `0x##` represents a hexadecimal index, and `entry_name` is the name of the DMA entry.

## File Specifier

To specify files within the `dma.config`, adhere to the following convention:
```ini
file = [ "file.bin", "binary" ]
```

Here, the entry is an array where the first element designates the file path (relative to `dma.config`). The second element specifies the type of the file.

## File Types

z64rom supports the following options for file import types:

- `"binary"`
- `"texture:rgba32"`
- `"texture:rgba16"`
- `"texture:ci4"`
- `"texture:ci8"`
- `"texture:ia16"`
- `"texture:ia8"`
- `"texture:ia4"`
- `"texture:i8"`
- `"texture:i4"`

The `"binary"` type will be written as-is, without any modifications. Any other type will be encoded to the specified format.

## Type: "file"

For a single file, the configuration is straightforward:

```ini
type = "file"
file = [ "my_file.bin", "binary" ]
compress = true
```

## Type: "collection"

A collection is a versatile entry in the DMA table, capable of holding various types of files.

```ini
type = "collection"
name = "MyCollection"
compress = true

collection = [
	{
		name = "MyFile"
		file = [ "file.bin", "binary" ]
	}
]
```

Collection entries generate symbols based on the `name` and the `collection entry name`. For example, the first entry in the given example would be named `gMyCollection_MyFile`.

z64rom provides an API to easily access items in these entries:

```c
u32 DmaCollection_EntrySize(void* entry);
s32 DmaCollection_EntryLoad(void* entry, void* dst);
```