aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mssola@mssola.com>2026-09-19 22:06:00 +0200
committerMiquel Sabaté Solà <mssola@mssola.com>2026-09-19 22:06:00 +0200
commit782534fa493f1f352ab821a174f3a8f8598a06b1 (patch)
tree1f901e08b1087f7453fed627cba93b8353715e54
parent21489a0a1b465e89d73b86689dc4b8a2a40610f9 (diff)
downloadtools.nes-782534fa493f1f352ab821a174f3a8f8598a06b1.tar.gz
tools.nes-782534fa493f1f352ab821a174f3a8f8598a06b1.zip
header: add more information on unkown mappers
In particular, allow to optionally add the mapper and submapper ID that was found, so it can be displayed to the user. Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com>
-rw-r--r--lib/header/src/lib.rs22
1 files changed, 16 insertions, 6 deletions
diff --git a/lib/header/src/lib.rs b/lib/header/src/lib.rs
index 7f561a1..4a42685 100644
--- a/lib/header/src/lib.rs
+++ b/lib/header/src/lib.rs
@@ -57,7 +57,7 @@ pub enum Mapper {
Mmc6,
Nina001,
Nrom,
- Unknown,
+ Unknown(Option<usize>, Option<usize>),
Unrom512,
Uxrom,
}
@@ -81,7 +81,17 @@ impl std::fmt::Display for Mapper {
Mapper::Mmc6 => write!(f, "MMC6"),
Mapper::Nina001 => write!(f, "NINA 001"),
Mapper::Nrom => write!(f, "NROM"),
- Mapper::Unknown => write!(f, "unknown"),
+ Mapper::Unknown(mapper, sub) => match mapper {
+ Some(mid) => match sub {
+ Some(sid) => write!(
+ f,
+ "<unknown> (mapper ID: 0x{:02X} - submapper ID: 0x{:02X})",
+ mid, sid
+ ),
+ None => write!(f, "<unknown> (mapper ID: 0x{:02X})", mid),
+ },
+ None => write!(f, "<unknown>"),
+ },
Mapper::Unrom512 => write!(f, "UNROM 512"),
Mapper::Uxrom => write!(
f,
@@ -334,7 +344,7 @@ fn parse_mapper(sixth: Option<&u8>, seventh: Option<&u8>, eighth: Option<&u8>) -
get_mapper_from_id(result as usize, 0)
}
}
- None => Mapper::Unknown,
+ None => Mapper::Unknown(None, None),
}
}
@@ -351,7 +361,7 @@ fn get_mapper_from_id(mapper_id: usize, submapper_id: u8) -> Mapper {
3 => Mapper::Mmc3Acc,
4 => Mapper::Mmc3Nec,
5 => Mapper::Mmc3T9552,
- _ => Mapper::Unknown,
+ _ => Mapper::Unknown(Some(4), Some(submapper_id as usize)),
},
5 => Mapper::Mmc5,
7 => Mapper::Axrom,
@@ -362,9 +372,9 @@ fn get_mapper_from_id(mapper_id: usize, submapper_id: u8) -> Mapper {
0 => Mapper::BnromCombo,
1 => Mapper::BnromOnly,
2 => Mapper::Nina001,
- _ => Mapper::Unknown,
+ _ => Mapper::Unknown(Some(34), Some(submapper_id as usize)),
},
- _ => Mapper::Unknown,
+ _ => Mapper::Unknown(Some(mapper_id), Some(submapper_id as usize)),
}
}