40 lines
1.5 KiB
Markdown
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>
|
|
``` |