NES - progress on mapper 96, Oeka Kids - Anpanman no Hiragana Daisuki seems to play (but I can't get passed the title screen without Oeka Kids tablet emulation). Oeka Kids - Anpanman to Oekaki Shiyou!! fails to load (suggesting a PRG mapping problem?)

This commit is contained in:
adelikat 2012-07-31 02:58:59 +00:00
parent 0d768ef710
commit 4930979940
2 changed files with 78 additions and 2 deletions

View File

@ -107,6 +107,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
desired data. So make sure your emu supports this. desired data. So make sure your emu supports this.
*/ */
int chr_block; int chr_block;
int chr_pos = 0;
int prg_bank_mask_32k; int prg_bank_mask_32k;
byte prg_bank_32k; byte prg_bank_32k;
@ -116,11 +117,11 @@ namespace BizHawk.Emulation.Consoles.Nintendo
switch (Cart.board_type) switch (Cart.board_type)
{ {
case "MAPPER096": case "MAPPER096":
case "BANDAI-74*161/02/74":
break; break;
default: default:
return false; return false;
} }
chr_block = 0; chr_block = 0;
prg_bank_mask_32k = Cart.prg_size / 32 - 1; prg_bank_mask_32k = Cart.prg_size / 32 - 1;
return true; return true;
@ -130,6 +131,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
{ {
base.SyncState(ser); base.SyncState(ser);
ser.Sync("chr_block", ref chr_block); ser.Sync("chr_block", ref chr_block);
ser.Sync("chr_pos", ref chr_pos);
ser.Sync("prg_bank_mask_16k", ref prg_bank_mask_32k); ser.Sync("prg_bank_mask_16k", ref prg_bank_mask_32k);
ser.Sync("prg_bank_16k", ref prg_bank_32k); ser.Sync("prg_bank_16k", ref prg_bank_32k);
} }
@ -150,8 +152,79 @@ namespace BizHawk.Emulation.Consoles.Nintendo
{ {
if (addr < 0x2000) if (addr < 0x2000)
{ {
if (addr >= 0x1000)
{
if (chr_block == 1)
{
return VRAM[(0x1000 * 3 * 2) + addr];
}
else
{
return VRAM[(0x1000 * 3) + addr];
}
}
else
{
if (chr_block == 1)
{
return VRAM[(0x1000 * chr_pos * 2) + addr];
}
else
{
return VRAM[(0x1000 * chr_pos * 2) + addr];
}
}
} }
return base.ReadPPU(addr); else
{
return base.ReadPPU(addr);
}
}
public override void WritePPU(int addr, byte value)
{
if (addr < 0x2000)
{
if (addr >= 0x1000)
{
if (chr_block == 1)
{
VRAM[(0x1000 * 3 * 2) + addr] = value;
}
else
{
VRAM[(0x1000 * 3) + addr] = value;
}
}
{
if (chr_block == 1)
{
VRAM[(0x1000 * chr_pos * 2) + addr] = value;
}
else
{
VRAM[(0x1000 * chr_pos * 2) + addr] = value;
}
}
}
else
{
base.WritePPU(addr, value);
}
}
public override void AddressPPU(int addr)
{
byte newpos;
if ((addr & 0x3000) != 0x2000) return;
if ((addr & 0x3FF) >= 0x3C0) return;
newpos = (byte)((addr >> 8) & 3);
if (chr_pos != newpos)
{
chr_pos = newpos;
}
base.AddressPPU(addr);
} }
} }
} }

View File

@ -140,6 +140,9 @@ sha1:F5FA7807F2B70ADFE5707D9BF88F90DAC1436DB0 Di 4 Ci - Ji Qi Ren Dai Zhan (Ch)
sha1:A9887C308C5D0659C3AA45D003A603C9DFFB148A B Ji Jia Zhan Shi (Asia) NES board=MAPPER074;VRAM=2 sha1:A9887C308C5D0659C3AA45D003A603C9DFFB148A B Ji Jia Zhan Shi (Asia) NES board=MAPPER074;VRAM=2
sha1:5084F25F14A61AB2799BD85D363B57B9B494601D Ji Jia Zhan Shi (Asia) NES board=MAPPER074;VRAM=2 sha1:5084F25F14A61AB2799BD85D363B57B9B494601D Ji Jia Zhan Shi (Asia) NES board=MAPPER074;VRAM=2
sha1:6143D80047FFC17C752078C622A44C3E0CB7466E B Dong Fang de Chuan Shuo - The Hyrule Fantasy (Asia) NES board=MAPPER245 sha1:6143D80047FFC17C752078C622A44C3E0CB7466E B Dong Fang de Chuan Shuo - The Hyrule Fantasy (Asia) NES board=MAPPER245
;wrong vram info
sha1:32D71DD6C5A8D78A918FE1B9D6D6C4A570D9652D Oeka Kids - Anpanman no Hiragana Daisuki (J) NES board=MAPPER096;VRAM=32
;;;;;;;;;;;;;;;;;;;----------------------------------------------------------------------- ;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;----------------------------------------------------------------------- ;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------