Implement a few of the new card commands used in Made in Ore. It wont save but at least it boots now. This is just a temporary fix until something better can be worked out.

This commit is contained in:
normmatt234 2009-05-18 07:24:47 +00:00
parent 1d13bcb323
commit a5218faeba
1 changed files with 36 additions and 2 deletions

View File

@ -2585,6 +2585,22 @@ void FASTCALL _MMU_ARM9_write32(u32 adr, u32 val)
}
break;
/* Nand Init */
case 0x94:
{
MMU.dscard[ARMCPU_ARM9].address = 0;
MMU.dscard[ARMCPU_ARM9].transfer_count = 0x80;
}
break;
/* Nand Error? */
case 0xD6:
{
MMU.dscard[ARMCPU_ARM9].address = 0;
MMU.dscard[ARMCPU_ARM9].transfer_count = 1;
}
break;
/* Data read */
case 0x00:
case 0xB7:
@ -2605,7 +2621,7 @@ void FASTCALL _MMU_ARM9_write32(u32 adr, u32 val)
default:
{
LOG("CARD command: %02X\t", MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT));
LOG("WRITE CARD command: %08X %08X\t", ((MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT) << 24) | (MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT+1) << 16) | (MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT+2) << 8) | (MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT+3))),((MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT+4) << 24) | (MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT+5) << 16) | (MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT+6) << 8) | (MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT+7))));
LOG("FROM: %08X\n", NDS_ARM9.instruct_adr);
MMU.dscard[ARMCPU_ARM9].address = 0;
MMU.dscard[ARMCPU_ARM9].transfer_count = 0;
@ -2914,6 +2930,19 @@ u32 FASTCALL _MMU_ARM9_read32(u32 adr)
}
break;
/* Nand Init? */
case 0x94:
{
val = 0; //Unsure what to return here to return 0 for now
}
break;
/* Nand Error? */
case 0xD6:
{
val = 0x80; //0x80 == ok?
}
break;
/* Data read */
case 0x00:
case 0xB7:
@ -2936,6 +2965,11 @@ u32 FASTCALL _MMU_ARM9_read32(u32 adr)
val = 0x00000000;
}
break;
default:
LOG("READ CARD command: %08X %08X\t", ((MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT) << 24) | (MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT+1) << 16) | (MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT+2) << 8) | (MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT+3))),((MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT+4) << 24) | (MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT+5) << 16) | (MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT+6) << 8) | (MEM_8(MMU.MMU_MEM[ARMCPU_ARM9], REG_GCCMDOUT+7))));
LOG("FROM: %08X\n", NDS_ARM9.instruct_adr);
break;
}
MMU.dscard[ARMCPU_ARM9].address += 4; // increment address
@ -3925,7 +3959,7 @@ u32 FASTCALL _MMU_ARM7_read32(u32 adr)
case 0xB8:
{
/* TODO */
val = 0x00000000;
val = 0x00000FC2;
}
break;
}