From b29a25d7a41db606684d9eb4e1454d625198ccff Mon Sep 17 00:00:00 2001 From: RevoSucks Date: Fri, 4 Aug 2023 13:11:12 -0400 Subject: [PATCH] more rodata work --- include/libleo/internal.h | 12 ++--- splat.yaml | 11 +++-- src/libleo/leo_tbl.c | 100 ++++++++++++++++++++++++++++++++++++++ src/libleo/leord_capa.c | 9 ---- src/libleo/leoutil.c | 17 ------- 5 files changed, 112 insertions(+), 37 deletions(-) create mode 100644 src/libleo/leo_tbl.c diff --git a/include/libleo/internal.h b/include/libleo/internal.h index 4df77d8..2c81cb6 100644 --- a/include/libleo/internal.h +++ b/include/libleo/internal.h @@ -41,14 +41,14 @@ typedef struct { } __LOCTime; // size = 0x6 /* libleo conversion tables */ -extern const u8 LEOBYTE_TBL1[]; -extern const u16 LEOBYTE_TBL2[]; +extern const u8 LEOBYTE_TBL1[9]; +extern const u16 LEOBYTE_TBL2[9]; extern const u16 LEOVZONE_TBL[][0x10]; -extern const u16 LEOZONE_SCYL_TBL[]; +extern const u16 LEOZONE_SCYL_TBL[16]; extern const u8 LEOVZONE_PZONEHD_TBL[][0x10]; -extern const u16 LEOZONE_OUTERCYL_TBL[]; -extern const u16 LEORAM_START_LBA[]; -extern const s32 LEORAM_BYTE[]; +extern const u16 LEOZONE_OUTERCYL_TBL[8]; +extern const u16 LEORAM_START_LBA[7]; +extern const s32 LEORAM_BYTE[7]; /* Memory Map */ #define LEO_BASE_REG 0x05000000 diff --git a/splat.yaml b/splat.yaml index 53f3549..5135100 100644 --- a/splat.yaml +++ b/splat.yaml @@ -386,13 +386,14 @@ segments: - [0x7E640, .rodata, libleo/leocmdex] - [0x7E6F0, rodata, rom_rodata_7E6F0] - [0x7E700, .rodata, libleo/leomecha] - - [0x7E770, bin, rom_rodata_7E770] # todo - - [0x7E950, bin, rom_rodata_7E950] # todo - - [0x7ED70, bin, rom_rodata_7ED70] # todo + - [0x7E770, .rodata, libleo/leo_tbl] + - [0x7E950, rodata, rom_rodata_7E950] + - [0x7ED50, .rodata, libleo/leoc2ecc] + - [0x7ED70, .rodata, libleo/leomseq_tbl] - [0x7EDF0, .rodata, libleo/leotimer] - - [0x7EE10, bin, rom_rodata_7EE10] # todo + - [0x7EE10, rodata, rom_rodata_7EE10] - [0x7EE90, .rodata, libultra/gu/sinf] - - [0x7EEE0, bin, rom_rodata_7EEE0] # todo + - [0x7EEE0, rodata, rom_rodata_7EEE0] - [0x7EF30, .rodata, libultra/al/reverb] - [0x7EF60, .rodata, libultra/gu/perspective] - [0x7EF70, .rodata, libultra/io/devmgr] diff --git a/src/libleo/leo_tbl.c b/src/libleo/leo_tbl.c new file mode 100644 index 0000000..422b31c --- /dev/null +++ b/src/libleo/leo_tbl.c @@ -0,0 +1,100 @@ +#include +#include +#include "libleo/internal.h" + +// file of magic tables used for libleo. + +// Firmware revision of libleo library. +const char LEOfirmware_rev[] = "B014A26"; + +const u8 LEOBYTE_TBL1[9] = { + 0xE8, + 0xD8, + 0xD0, + 0xC0, + 0xB0, + 0xA0, + 0x90, + 0x80, + 0x70 +}; + +const u16 LEOBYTE_TBL2[9] = { + 0x4D08, + 0x47B8, + 0x4510, + 0x3FC0, + 0x3A70, + 0x3520, + 0x2FD0, + 0x2A80, + 0x2530 +}; + +const u16 LEOVZONE_TBL[][0x10] = { + { 0x0124, 0x0248, 0x035A, 0x047E, 0x05A2, 0x06B4, 0x07C6, 0x08D8, 0x09EA, 0x0AB6, 0x0B82, 0x0C94, 0x0DA6, 0x0EB8, + 0x0FCA, 0x10DC }, + { 0x0124, 0x0248, 0x035A, 0x046C, 0x057E, 0x06A2, 0x07C6, 0x08D8, 0x09EA, 0x0AFC, 0x0BC8, 0x0C94, 0x0DA6, 0x0EB8, + 0x0FCA, 0x10DC }, + { 0x0124, 0x0248, 0x035A, 0x046C, 0x057E, 0x0690, 0x07A2, 0x08C6, 0x09EA, 0x0AFC, 0x0C0E, 0x0CDA, 0x0DA6, 0x0EB8, + 0x0FCA, 0x10DC }, + { 0x0124, 0x0248, 0x035A, 0x046C, 0x057E, 0x0690, 0x07A2, 0x08B4, 0x09C6, 0x0AEA, 0x0C0E, 0x0D20, 0x0DEC, 0x0EB8, + 0x0FCA, 0x10DC }, + { 0x0124, 0x0248, 0x035A, 0x046C, 0x057E, 0x0690, 0x07A2, 0x08B4, 0x09C6, 0x0AD8, 0x0BEA, 0x0D0E, 0x0E32, 0x0EFE, + 0x0FCA, 0x10DC }, + { 0x0124, 0x0248, 0x035A, 0x046C, 0x057E, 0x0690, 0x07A2, 0x086E, 0x0980, 0x0A92, 0x0BA4, 0x0CB6, 0x0DC8, 0x0EEC, + 0x1010, 0x10DC }, + { 0x0124, 0x0248, 0x035A, 0x046C, 0x057E, 0x0690, 0x07A2, 0x086E, 0x093A, 0x0A4C, 0x0B5E, 0x0C70, 0x0D82, 0x0E94, + 0x0FB8, 0x10DC }, +}; + +const u16 LEOZONE_SCYL_TBL[16] = { + 0x0000, + 0x009E, + 0x013C, + 0x01D1, + 0x0266, + 0x02FB, + 0x0390, + 0x0425, + 0x0091, + 0x012F, + 0x01C4, + 0x0259, + 0x02EE, + 0x0383, + 0x0418, + 0x048A +}; + +const u8 LEOVZONE_PZONEHD_TBL[][0x10] = { + { 0x00, 0x01, 0x02, 0x09, 0x08, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A }, + { 0x00, 0x01, 0x02, 0x03, 0x0A, 0x09, 0x08, 0x04, 0x05, 0x06, 0x07, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B }, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x0B, 0x0A, 0x09, 0x08, 0x05, 0x06, 0x07, 0x0F, 0x0E, 0x0D, 0x0C }, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x06, 0x07, 0x0F, 0x0E, 0x0D }, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x0F, 0x0E }, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x0F }, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08 } +}; + +const u16 LEOZONE_OUTERCYL_TBL[8] = { 0x0000, 0x009E, 0x013C, 0x01D1, 0x0266, 0x02FB, 0x0390, 0x0425 }; + +const u16 LEORAM_START_LBA[7] = { + 0x05A2, + 0x07C6, + 0x09EA, + 0x0C0E, + 0x0E32, + 0x1010, + 0x10DC +}; + +const s32 LEORAM_BYTE[7] = { + 0x024A9DC0, + 0x01C226C0, + 0x01450F00, + 0x00D35680, + 0x006CFD40, + 0x001DA240, + 0x00000000 +}; diff --git a/src/libleo/leord_capa.c b/src/libleo/leord_capa.c index a07e72d..efc7f85 100644 --- a/src/libleo/leord_capa.c +++ b/src/libleo/leord_capa.c @@ -1,15 +1,6 @@ #include #include "libleo/internal.h" -// static? -const u16 LEORAM_START_LBA[] = { - 0x05A2, 0x07C6, 0x09EA, 0x0C0E, 0x0E32, 0x1010, 0x10DC, -}; -// static? -const s32 LEORAM_BYTE[] = { - 0x024A9DC0, 0x01C226C0, 0x01450F00, 0x00D35680, 0x006CFD40, 0x001DA240, 0x00000000, -}; - void leoRd_capacity(void) { if (LEOcur_command->header.control & LEO_CONTROL_WRT) { LEOcur_command->data.readwrite.lba = LEORAM_START_LBA[LEOdisk_type] - 0x18; diff --git a/src/libleo/leoutil.c b/src/libleo/leoutil.c index 22c854c..115b30d 100644 --- a/src/libleo/leoutil.c +++ b/src/libleo/leoutil.c @@ -1,23 +1,6 @@ #include #include "libleo/internal.h" -const u16 LEOVZONE_TBL[][0x10] = { - { 0x0124, 0x0248, 0x035A, 0x047E, 0x05A2, 0x06B4, 0x07C6, 0x08D8, 0x09EA, 0x0AB6, 0x0B82, 0x0C94, 0x0DA6, 0x0EB8, - 0x0FCA, 0x10DC }, - { 0x0124, 0x0248, 0x035A, 0x046C, 0x057E, 0x06A2, 0x07C6, 0x08D8, 0x09EA, 0x0AFC, 0x0BC8, 0x0C94, 0x0DA6, 0x0EB8, - 0x0FCA, 0x10DC }, - { 0x0124, 0x0248, 0x035A, 0x046C, 0x057E, 0x0690, 0x07A2, 0x08C6, 0x09EA, 0x0AFC, 0x0C0E, 0x0CDA, 0x0DA6, 0x0EB8, - 0x0FCA, 0x10DC }, - { 0x0124, 0x0248, 0x035A, 0x046C, 0x057E, 0x0690, 0x07A2, 0x08B4, 0x09C6, 0x0AEA, 0x0C0E, 0x0D20, 0x0DEC, 0x0EB8, - 0x0FCA, 0x10DC }, - { 0x0124, 0x0248, 0x035A, 0x046C, 0x057E, 0x0690, 0x07A2, 0x08B4, 0x09C6, 0x0AD8, 0x0BEA, 0x0D0E, 0x0E32, 0x0EFE, - 0x0FCA, 0x10DC }, - { 0x0124, 0x0248, 0x035A, 0x046C, 0x057E, 0x0690, 0x07A2, 0x086E, 0x0980, 0x0A92, 0x0BA4, 0x0CB6, 0x0DC8, 0x0EEC, - 0x1010, 0x10DC }, - { 0x0124, 0x0248, 0x035A, 0x046C, 0x057E, 0x0690, 0x07A2, 0x086E, 0x093A, 0x0A4C, 0x0B5E, 0x0C70, 0x0D82, 0x0E94, - 0x0FB8, 0x10DC }, -}; - u16 leoLba_to_phys(u32 lba) { u32 vzone; u32 pzone;