parent
7abcb201e6
commit
66ec4060e4
|
@ -3541,15 +3541,6 @@ void FASTCALL _MMU_ARM7_write08(u32 adr, u8 val)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(adr == REG_HALTCNT)
|
|
||||||
{
|
|
||||||
switch(val)
|
|
||||||
{
|
|
||||||
case 0xC0: NDS_Sleep(); break;
|
|
||||||
default: break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((adr & 0xFF800000) == 0x04800000)
|
if ((adr & 0xFF800000) == 0x04800000)
|
||||||
{
|
{
|
||||||
/* is wifi hardware, dont intermix with regular hardware registers */
|
/* is wifi hardware, dont intermix with regular hardware registers */
|
||||||
|
@ -3564,6 +3555,17 @@ void FASTCALL _MMU_ARM7_write08(u32 adr, u8 val)
|
||||||
|
|
||||||
switch(adr)
|
switch(adr)
|
||||||
{
|
{
|
||||||
|
case REG_POSTFLG:
|
||||||
|
// hack for patched firmwares
|
||||||
|
if (val == 1)
|
||||||
|
{
|
||||||
|
if (_MMU_ARM7_read08(REG_POSTFLG) != 0)
|
||||||
|
break;
|
||||||
|
_MMU_write32<ARMCPU_ARM9>(0x27FFE24, gameInfo.header.ARM9exe);
|
||||||
|
_MMU_write32<ARMCPU_ARM7>(0x27FFE34, gameInfo.header.ARM7exe);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case REG_HALTCNT:
|
case REG_HALTCNT:
|
||||||
//printf("halt 0x%02X\n", val);
|
//printf("halt 0x%02X\n", val);
|
||||||
switch(val)
|
switch(val)
|
||||||
|
|
|
@ -2044,7 +2044,7 @@ void NDS_Reset()
|
||||||
dst = header->ARM9cpy;
|
dst = header->ARM9cpy;
|
||||||
|
|
||||||
u32 size = (0x8000 - src) >> 2;
|
u32 size = (0x8000 - src) >> 2;
|
||||||
INFO("Copy secure area from 0x%08X to 0x%08X (size %i/0x%08X)\n", src, dst, size, size);
|
//INFO("Copy secure area from 0x%08X to 0x%08X (size %i/0x%08X)\n", src, dst, size, size);
|
||||||
for (u32 i = 0; i < size; i++)
|
for (u32 i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
_MMU_write32<ARMCPU_ARM9>(dst, T1ReadLong(MMU.CART_ROM, src));
|
_MMU_write32<ARMCPU_ARM9>(dst, T1ReadLong(MMU.CART_ROM, src));
|
||||||
|
|
|
@ -623,7 +623,7 @@ BOOL CHEATS::load()
|
||||||
line++; // only for debug
|
line++; // only for debug
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(buf, 0, sizeof(buf));
|
||||||
if (fgets(buf, sizeof(buf), flist) == NULL) {
|
if (fgets(buf, sizeof(buf), flist) == NULL) {
|
||||||
INFO("Cheats: Failed to read from flist at line %i\n", line);
|
//INFO("Cheats: Failed to read from flist at line %i\n", line);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
trim(buf);
|
trim(buf);
|
||||||
|
|
|
@ -20,8 +20,6 @@
|
||||||
#include "firmware.h"
|
#include "firmware.h"
|
||||||
#include "NDSSystem.h"
|
#include "NDSSystem.h"
|
||||||
|
|
||||||
//#define _FLASHME_SUPPORT // bugged
|
|
||||||
|
|
||||||
#define DWNUM(i) ((i) >> 2)
|
#define DWNUM(i) ((i) >> 2)
|
||||||
|
|
||||||
bool CFIRMWARE::getKeyBuf()
|
bool CFIRMWARE::getKeyBuf()
|
||||||
|
@ -353,6 +351,16 @@ bool CFIRMWARE::load()
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
if (size == 512*1024)
|
||||||
|
{
|
||||||
|
INFO("ERROR: 32Mbit (512Kb) firmware not supported\n");
|
||||||
|
fclose(fp);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
data = new u8 [size];
|
data = new u8 [size];
|
||||||
if (!data)
|
if (!data)
|
||||||
{
|
{
|
||||||
|
@ -404,7 +412,7 @@ bool CFIRMWARE::load()
|
||||||
#if 0
|
#if 0
|
||||||
crypt64BitDown((u32*)&data[0x18]);
|
crypt64BitDown((u32*)&data[0x18]);
|
||||||
#else
|
#else
|
||||||
// hack?
|
// fix touch coords
|
||||||
data[0x18] = 0x00;
|
data[0x18] = 0x00;
|
||||||
data[0x19] = 0x00;
|
data[0x19] = 0x00;
|
||||||
data[0x1A] = 0x00;
|
data[0x1A] = 0x00;
|
||||||
|
@ -471,18 +479,7 @@ bool CFIRMWARE::load()
|
||||||
|
|
||||||
patched = false;
|
patched = false;
|
||||||
if (data[0x17C] != 0xFF)
|
if (data[0x17C] != 0xFF)
|
||||||
{
|
|
||||||
#ifdef _FLASHME_SUPPORT
|
|
||||||
patched = true;
|
patched = true;
|
||||||
#else
|
|
||||||
INFO("!!! ERROR: Firmware patched with 'Flashme' v");
|
|
||||||
if (data[0x17C] == 1) INFO("1..4");
|
|
||||||
else
|
|
||||||
INFO("%i", (u16)data[0x3F7FC] + 3);
|
|
||||||
INFO(" - not support\n");
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
INFO("Firmware:\n");
|
INFO("Firmware:\n");
|
||||||
INFO("- path: %s\n", CommonSettings.Firmware);
|
INFO("- path: %s\n", CommonSettings.Firmware);
|
||||||
|
@ -502,7 +499,6 @@ bool CFIRMWARE::load()
|
||||||
INFO("\n");
|
INFO("\n");
|
||||||
INFO(" * Data/GFX address: 0x%08X\n", part5addr);
|
INFO(" * Data/GFX address: 0x%08X\n", part5addr);
|
||||||
|
|
||||||
#ifdef _FLASHME_SUPPORT
|
|
||||||
if (patched)
|
if (patched)
|
||||||
{
|
{
|
||||||
u32 patch_offset = 0x3FC80;
|
u32 patch_offset = 0x3FC80;
|
||||||
|
@ -568,10 +564,10 @@ bool CFIRMWARE::load()
|
||||||
INFO(" * ARM7 boot code RAM address: 0x%08X\n", ARM7bootAddr);
|
INFO(" * ARM7 boot code RAM address: 0x%08X\n", ARM7bootAddr);
|
||||||
INFO(" * ARM7 unpacked size: 0x%08X (%i) bytes\n", size7, size7);
|
INFO(" * ARM7 unpacked size: 0x%08X (%i) bytes\n", size7, size7);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
// TODO: add 512Kb support
|
// TODO: add 512Kb support
|
||||||
memcpy(MMU.fw.data, data, 256*1024);
|
memcpy(MMU.fw.data, data, 256*1024);
|
||||||
|
MMU.fw.fp = NULL;
|
||||||
|
|
||||||
delete [] data; data = NULL;
|
delete [] data; data = NULL;
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in New Issue