mirror of
https://github.com/rvtr/GodMode9i.git
synced 2025-11-02 00:11:07 -04:00
Replace vramcpy with tonccpy
This commit is contained in:
parent
862fee8e68
commit
99624643f2
@ -28,6 +28,7 @@
|
|||||||
#include <fat.h>
|
#include <fat.h>
|
||||||
|
|
||||||
#include "load_bin.h"
|
#include "load_bin.h"
|
||||||
|
#include "tonccpy.h"
|
||||||
|
|
||||||
#ifndef _NO_BOOTSTUB_
|
#ifndef _NO_BOOTSTUB_
|
||||||
#include "bootstub_bin.h"
|
#include "bootstub_bin.h"
|
||||||
@ -119,18 +120,6 @@ static void writeAddr (data_t *mem, addr_t offset, addr_t value) {
|
|||||||
((addr_t*)mem)[offset/sizeof(addr_t)] = value;
|
((addr_t*)mem)[offset/sizeof(addr_t)] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vramcpy (void* dst, const void* src, int len)
|
|
||||||
{
|
|
||||||
u16* dst16 = (u16*)dst;
|
|
||||||
u16* src16 = (u16*)src;
|
|
||||||
|
|
||||||
//dmaCopy(src, dst, len);
|
|
||||||
|
|
||||||
for ( ; len > 0; len -= 2) {
|
|
||||||
*dst16++ = *src16++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static addr_t quickFind (const data_t* data, const data_t* search, size_t dataLen, size_t searchLen) {
|
static addr_t quickFind (const data_t* data, const data_t* search, size_t dataLen, size_t searchLen) {
|
||||||
const int* dataChunk = (const int*) data;
|
const int* dataChunk = (const int*) data;
|
||||||
int searchChunk = ((const int*)search)[0];
|
int searchChunk = ((const int*)search)[0];
|
||||||
@ -212,7 +201,7 @@ static bool dldiPatchLoader (data_t *binData, u32 binSize, bool clearBSS)
|
|||||||
// Remember how much space is actually reserved
|
// Remember how much space is actually reserved
|
||||||
pDH[DO_allocatedSpace] = pAH[DO_allocatedSpace];
|
pDH[DO_allocatedSpace] = pAH[DO_allocatedSpace];
|
||||||
// Copy the DLDI patch into the application
|
// Copy the DLDI patch into the application
|
||||||
vramcpy (pAH, pDH, dldiFileSize);
|
tonccpy (pAH, pDH, dldiFileSize);
|
||||||
|
|
||||||
// Fix the section pointers in the header
|
// Fix the section pointers in the header
|
||||||
writeAddr (pAH, DO_text_start, readAddr (pAH, DO_text_start) + relocationOffset);
|
writeAddr (pAH, DO_text_start, readAddr (pAH, DO_text_start) + relocationOffset);
|
||||||
@ -260,7 +249,7 @@ static bool dldiPatchLoader (data_t *binData, u32 binSize, bool clearBSS)
|
|||||||
|
|
||||||
if (clearBSS && (pDH[DO_fixSections] & FIX_BSS)) {
|
if (clearBSS && (pDH[DO_fixSections] & FIX_BSS)) {
|
||||||
// Initialise the BSS to 0, only if the disc is being re-inited
|
// Initialise the BSS to 0, only if the disc is being re-inited
|
||||||
memset (&pAH[readAddr(pDH, DO_bss_start) - ddmemStart] , 0, readAddr(pDH, DO_bss_end) - readAddr(pDH, DO_bss_start));
|
toncset (&pAH[readAddr(pDH, DO_bss_start) - ddmemStart] , 0, readAddr(pDH, DO_bss_end) - readAddr(pDH, DO_bss_start));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -279,7 +268,7 @@ int runNds (const void* loader, u32 loaderSize, u32 cluster, bool initDisc, bool
|
|||||||
// Direct CPU access to VRAM bank C
|
// Direct CPU access to VRAM bank C
|
||||||
VRAM_C_CR = VRAM_ENABLE | VRAM_C_LCD;
|
VRAM_C_CR = VRAM_ENABLE | VRAM_C_LCD;
|
||||||
// Load the loader/patcher into the correct address
|
// Load the loader/patcher into the correct address
|
||||||
vramcpy (LCDC_BANK_C, loader, loaderSize);
|
tonccpy (LCDC_BANK_C, loader, loaderSize);
|
||||||
|
|
||||||
// Set the parameters for the loader
|
// Set the parameters for the loader
|
||||||
// STORED_FILE_CLUSTER = cluster;
|
// STORED_FILE_CLUSTER = cluster;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user