Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/nes-containers.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2021-10-30 17:56:32 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2021-10-30 17:56:32 +0300
commit2cf93a218230d502594ea0d1dc505aceb4ae2639 (patch)
treecf91eee9a1e7f2760f8ddd7dfeebffe1d5f8def5
parent3c3e57366469a3a3207f3ef70f16edbf557d1f65 (diff)
NES 2.0 mapper number parsig fix
-rw-r--r--NesFile.cs17
1 files changed, 2 insertions, 15 deletions
diff --git a/NesFile.cs b/NesFile.cs
index ce531c1..4b99467 100644
--- a/NesFile.cs
+++ b/NesFile.cs
@@ -645,7 +645,7 @@ namespace com.clusterrr.Famicom.Containers
chrSize = (uint)((((header[9] & 0xF0) << 4) | header[5]) * 0x2000);
else
chrSize = (uint)((1 << (header[5] >> 2)) * ((header[5] & 3) * 2 + 1));
- Mapper = (ushort)((header[6] >> 4) | (header[7] & 0xF0) | ((header[8] & 0x0F) << 12));
+ Mapper = (ushort)((header[6] >> 4) | (header[7] & 0xF0) | ((header[8] & 0x0F) << 8));
Submapper = (byte)(header[8] >> 4);
Console = (ConsoleType)(header[7] & 3);
if ((header[10] & 0x0F) > 0)
@@ -729,20 +729,6 @@ namespace com.clusterrr.Famicom.Containers
if (prg == null) prg = new byte[0];
if (chr == null) chr = new byte[0];
if (trainer == null) trainer = new byte[0];
- /*
- if ((prg.Length % 0x4000) != 0)
- {
- var padding = 0x4000 - (prg.Length % 4000);
- if (padding > 0)
- Array.Resize(ref prg, prg.Length + padding);
- }
- if ((chr.Length % 0x2000) != 0)
- {
- var padding = 0x2000 - (chr.Length % 2000);
- if (padding > 0)
- Array.Resize(ref chr, chr.Length + padding);
- }
- */
ulong prgSizePadded, chrSizePadded;
if (Version == iNesVersion.iNES)
{
@@ -837,6 +823,7 @@ namespace com.clusterrr.Famicom.Containers
header[7] |= (byte)(Mapper & 0xF0);
// Mapper number D8..D11
header[8] |= (byte)((Mapper >> 8) & 0x0F);
+ // Submapper
header[8] |= (byte)(Submapper << 4);
// PRG RAM (volatile) shift count
var prgRamBitSize = PrgRamSize > 0 ? Math.Max(1, (int)Math.Ceiling(Math.Log(PrgRamSize, 2)) - 6) : 0;