Esempio n. 1
0
//Nand redirection
void loadEmu(void){
    
    //Read emunand code from SD
    u32 code = emuCode();
    fileRead(code, "/rei/emunand/emunand.bin", 0);
    u32 *pos_offset = memsearch(code, "NAND", 0x218, 4);
    u32 *pos_header = memsearch(code, "NCSD", 0x218, 4);
    if (pos_offset && pos_header) {
        *pos_offset = emuOffset;
        *pos_header = emuHeader;
    }
    
    //Add emunand hooks
    memcpy((u8*)emuHook(1), nandRedir, sizeof(nandRedir));
    memcpy((u8*)emuHook(2), nandRedir, sizeof(nandRedir));
}
Esempio n. 2
0
//Nand redirection
void loadEmu(void){
    
    //Read emunand code from SD
    u32 code = emuCode();
    const char path[] = "/rei/emunand/emunand.bin";
    u32 size = fileSize(path);
    fileRead(code, path, size);
    
    //Find and patch emunand related offsets
    u32 *pos_sdmmc = memsearch(code, "SDMC", size, 4);
    u32 *pos_offset = memsearch(code, "NAND", size, 4);
    u32 *pos_header = memsearch(code, "NCSD", size, 4);
    getSDMMC(firmLocation, &sdmmcOffset, firmSize);
    getEmunandSect(&emuOffset, &emuHeader);
    getEmuRW(firmLocation, firmSize, &emuRead, &emuWrite);
    *pos_sdmmc = sdmmcOffset;
    *pos_offset = emuOffset;
    *pos_header = emuHeader;
    
    //Add emunand hooks
    memcpy((u8*)emuRead, nandRedir, sizeof(nandRedir));
    memcpy((u8*)emuWrite, nandRedir, sizeof(nandRedir));
    memcpy((u8*)mpuCode(), mpu, sizeof(mpu));
}