jabyengine/docs/Features/auto_lba.md

40 lines
1.5 KiB
Markdown

# Auto LBA
- [Auto LBA](#auto-lba)
- [In Code](#in-code)
- [For CD generation](#for-cd-generation)
To support the `Auto LBA` feature changes need to be applied to the source files and the CD configuration file.
## In Code
To use the `Auto LBA` feature the LBAs first need to be defined in either an `enum` or `enum struct`. These need to fit a special pattern. The usage of a `namespace` is recommended.
`__jabyengine_start_lba_request` needs to be the first entry while `__jabyengine_end_lba_request` needs to be the last. Each LBA entry needs to be declared with `__jabyengine_request_lba_for` followed by the name for the enum entry and the file path on the disk.
```c++
namespace Assets {
enum LBA {
__jabyengine_start_lba_request
__jabyengine_request_lba_for(SYSTEM_CNF, "SYSTEM.CNF"),
__jabyengine_end_lba_request
};
__declare_lba_header(LBA);
namespace {
void load() {
printf("LBA: %i, Words: %i\n", lba[LBA::SYSTEM_CNF].lba, lba[LBA::SYSTEM_CNF].size_words);
}
}
}
```
## For CD generation
To automatically fill the LBA values `psxcdgen_ex` needs to be used.
The attribute `lba_source` automatically fills in the values. It can be used with the XML `Main` and `Overlay` tag.
```xml
<Track>
<File name = "SYSTEM.CNF">System.cnf</File>
<Main name = "%PSX_BOOT_FILE%" lba_source = "main.cpp">Application.psexe</Main>
<Overlay name = "OVL.BIN" lba_source = "state.cpp">Overlay.state</Overlay>
</Track>
```