Rename `romCopy_512` to `nuPiReadRom`

This commit is contained in:
gijs 2023-10-20 18:32:08 +02:00
parent 5dd734bf29
commit f52d20844a
6 changed files with 36 additions and 31 deletions

View File

@ -165,7 +165,6 @@ extern s8 D_800E918D;
extern void romCopy(u32 devAddr, void* dramAddr, u32 size, s32 direction); extern void romCopy(u32 devAddr, void* dramAddr, u32 size, s32 direction);
extern void romCopy_512(void* src, void* dst, u32 len);
extern void __calls_romCopy_8009DA50(void* src, void* dst, u32 len); extern void __calls_romCopy_8009DA50(void* src, void* dst, u32 len);
extern void __calls_osViBlack(bool black); extern void __calls_osViBlack(bool black);

View File

@ -892,10 +892,10 @@ extern s32 nuEepromWrite(u8 address, u8* buffer,u16 len);
/* pi functions */ /* pi functions */
/*--------------------------------------*/ /*--------------------------------------*/
extern void nuPiInit(void); extern void nuPiInit(void);
extern void nuPiReadRom(u32 rom_addr, void* buf_ptr, u32 size); extern void nuPiReadRom(void* src, void* dst, u32 size);
extern void nuPiInitSram(void); extern void nuPiInitSram(void);
extern void nuPiInitDDrom(void); extern void nuPiInitDDrom(void);
extern void nuPiReadWriteSram(u32 addr, void* buf_ptr, u32 size, s32 flag); extern void nuPiReadWriteSram(u32 src, void* dst, u32 size, s32 flag);
extern void nuPiReadRomOverlay(NUPiOverlaySegment* segment); extern void nuPiReadRomOverlay(NUPiOverlaySegment* segment);
/*--------------------------------------*/ /*--------------------------------------*/

View File

@ -64,6 +64,7 @@ nuSiSendMesg = 0x80089CF8;
nuSiMgrStop = 0x80089D5C; nuSiMgrStop = 0x80089D5C;
nuSiMgrRestart = 0x80089D7C; nuSiMgrRestart = 0x80089D7C;
nuIdle = 0x8007F8E4; nuIdle = 0x8007F8E4;
nuPiReadRom = 0x80089F80;
obCurrentTime = 0x800C47D0; obCurrentTime = 0x800C47D0;
@ -975,7 +976,6 @@ carthandle = 0x800E79AC;
__ROM_0_to_8000 = 0x800A83B8; // rom:0x387B8 __ROM_0_to_8000 = 0x800A83B8; // rom:0x387B8
romCopy_256 = 0x80074CF0; // rom:0x50F0 romCopy_256 = 0x80074CF0; // rom:0x50F0
romCopy_512 = 0x80089F80;
__GLOBAL_CONTROLLER_DATA = 0x0800C4BF0; // size:0x18 __GLOBAL_CONTROLLER_DATA = 0x0800C4BF0; // size:0x18
__GLOBAL_CONTROLLER_DATA_COPY = 0x0800AEE78; // size:0x18 __GLOBAL_CONTROLLER_DATA_COPY = 0x0800AEE78; // size:0x18

View File

@ -1,6 +1,7 @@
#include "common.h" #include "common.h"
#include "nu/nusys.h" #include "nu/nusys.h"
#include "os_pi.h"
void nuSiMgrThread(void* arg); void nuSiMgrThread(void* arg);
@ -52,33 +53,34 @@ void nuPiInit(void) {
} }
/* 1A380 80089F80 */ /* 1A380 80089F80 */
void romCopy_512(void *src, void *dst, u32 len) { void nuPiReadRom(void *src, void *dst, u32 size) {
OSIoMesg dmaIoMesgBuf; OSIoMesg ioMesg;
OSMesg mesg;
OSMesgQueue queue;
u32 mesgSize;
OSMesgQueue dmaMessageQ; osCreateMesgQueue(&queue, &mesg, 1);
OSMesg dummyMesg;
u32 readlength; ioMesg.hdr.pri = 0;
ioMesg.hdr.retQueue = &queue;
osCreateMesgQueue(&dmaMessageQ, &dummyMesg, 1); osInvalDCache(dst, size);
dmaIoMesgBuf.hdr.pri = 0; while (size != 0) {
dmaIoMesgBuf.hdr.retQueue = &dmaMessageQ; mesgSize = size;
osInvalDCache(dst, len); if (mesgSize > MAX_BYTES_TO_READ) {
while (len != 0) { mesgSize = MAX_BYTES_TO_READ;
readlength = len;
if (readlength > MAX_BYTES_TO_READ) {
readlength = MAX_BYTES_TO_READ;
} }
dmaIoMesgBuf.devAddr = (u32)src; ioMesg.devAddr = (u32)src;
dmaIoMesgBuf.dramAddr = dst; ioMesg.dramAddr = dst;
dmaIoMesgBuf.size = readlength; ioMesg.size = mesgSize;
// Start the DMA transfer // Start the DMA transfer
osEPiStartDma(PTR_CART_ROM_HANDLE, &dmaIoMesgBuf, 0); osEPiStartDma(PTR_CART_ROM_HANDLE, &ioMesg, OS_READ);
// Wait for the DMA transfer to complete // Wait for the DMA transfer to complete
osRecvMesg(&dmaMessageQ, &dummyMesg, 1); osRecvMesg(&queue, &mesg, OS_MESG_BLOCK);
src += readlength;
dst += readlength; src += mesgSize;
len -= readlength; dst += mesgSize;
size -= mesgSize;
} }
} }

View File

@ -1,5 +1,7 @@
#include "common.h" #include "common.h"
#include "nu/nusys.h"
INCLUDE_ASM(const s32, "_ob_prized_room", func_8009DA10); INCLUDE_ASM(const s32, "_ob_prized_room", func_8009DA10);
/* 2DE50 8009DA50 */ /* 2DE50 8009DA50 */
@ -15,13 +17,13 @@ void __calls_romCopy_8009DA50(void* src, void* dst, u32 len) {
if (len < 16) { if (len < 16) {
_dst = dst; _dst = dst;
// Copy into stack, length aligned to 2 bytes... // Copy into stack, length aligned to 2 bytes...
romCopy_512(src, _src, (len + 1) & ~1); nuPiReadRom(src, _src, (len + 1) & ~1);
// ...then copy from stack into destination // ...then copy from stack into destination
for(len--; len != -1; len--) for(len--; len != -1; len--)
*_dst++ = *_src++; *_dst++ = *_src++;
} else { } else {
// Too big to fit in our stack, so just do a regular copy // Too big to fit in our stack, so just do a regular copy
romCopy_512(src, dst, (len + 1) & ~1); nuPiReadRom(src, dst, (len + 1) & ~1);
} }
} }

View File

@ -1,5 +1,7 @@
#include "common.h" #include "common.h"
#include "nu/nusys.h"
void __load_song(void*); void __load_song(void*);
extern u8 D_8010A760[]; extern u8 D_8010A760[];
@ -11,9 +13,9 @@ extern s32 D_800EB0E8;
/* 3F1B0 800E9C20 */ /* 3F1B0 800E9C20 */
void func_800E9C20(void) void func_800E9C20(void)
{ {
romCopy_512(SEGMENT_ROM_START(n64_ptr_tables_v2_00), D_80164770, SEGMENT_ROM_SIZE(n64_ptr_tables_v2_00)); nuPiReadRom(SEGMENT_ROM_START(n64_ptr_tables_v2_00), D_80164770, SEGMENT_ROM_SIZE(n64_ptr_tables_v2_00));
romCopy_512(SEGMENT_ROM_START(n64_ptr_tables_v2_01), D_80104710, SEGMENT_ROM_SIZE(n64_ptr_tables_v2_01)); nuPiReadRom(SEGMENT_ROM_START(n64_ptr_tables_v2_01), D_80104710, SEGMENT_ROM_SIZE(n64_ptr_tables_v2_01));
romCopy_512(SEGMENT_ROM_START(n64_wave_data), &D_8010A760, SEGMENT_ROM_SIZE(n64_wave_data)); nuPiReadRom(SEGMENT_ROM_START(n64_wave_data), &D_8010A760, SEGMENT_ROM_SIZE(n64_wave_data));
MusPtrBankInitialize(D_80164770, SEGMENT_ROM_START(n64_wave_table_00)); MusPtrBankInitialize(D_80164770, SEGMENT_ROM_START(n64_wave_table_00));
MusPtrBankInitialize(D_80104710, SEGMENT_ROM_START(n64_wave_table_01)); MusPtrBankInitialize(D_80104710, SEGMENT_ROM_START(n64_wave_table_01));