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_512(void* src, void* dst, u32 len);
extern void __calls_romCopy_8009DA50(void* src, void* dst, u32 len);
extern void __calls_osViBlack(bool black);

View File

@ -892,10 +892,10 @@ extern s32 nuEepromWrite(u8 address, u8* buffer,u16 len);
/* pi functions */
/*--------------------------------------*/
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 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);
/*--------------------------------------*/

View File

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

View File

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

View File

@ -1,5 +1,7 @@
#include "common.h"
#include "nu/nusys.h"
INCLUDE_ASM(const s32, "_ob_prized_room", func_8009DA10);
/* 2DE50 8009DA50 */
@ -15,13 +17,13 @@ void __calls_romCopy_8009DA50(void* src, void* dst, u32 len) {
if (len < 16) {
_dst = dst;
// 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
for(len--; len != -1; len--)
*_dst++ = *_src++;
} else {
// 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 "nu/nusys.h"
void __load_song(void*);
extern u8 D_8010A760[];
@ -11,9 +13,9 @@ extern s32 D_800EB0E8;
/* 3F1B0 800E9C20 */
void func_800E9C20(void)
{
romCopy_512(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));
romCopy_512(SEGMENT_ROM_START(n64_wave_data), &D_8010A760, SEGMENT_ROM_SIZE(n64_wave_data));
nuPiReadRom(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_01), D_80104710, SEGMENT_ROM_SIZE(n64_ptr_tables_v2_01));
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_80104710, SEGMENT_ROM_START(n64_wave_table_01));