diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2021-10-30 17:56:32 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2021-10-30 17:56:32 +0300 |
commit | 2cf93a218230d502594ea0d1dc505aceb4ae2639 (patch) | |
tree | cf91eee9a1e7f2760f8ddd7dfeebffe1d5f8def5 | |
parent | 3c3e57366469a3a3207f3ef70f16edbf557d1f65 (diff) |
NES 2.0 mapper number parsig fix
-rw-r--r-- | NesFile.cs | 17 |
1 files changed, 2 insertions, 15 deletions
@@ -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;
|