From 36307aca0a3930441a72a96d5759d5dfbdfbfd8d Mon Sep 17 00:00:00 2001 From: Marrub Date: Fri, 12 Apr 2019 21:46:51 -0400 Subject: [PATCH] add NAME chunk --- MarathonData.md | 2 +- source/marathon/map.rs | 3 ++- source/marathon/map/chnk.rs | 2 ++ source/marathon/map/name.rs | 11 +++++++++++ 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 source/marathon/map/name.rs diff --git a/MarathonData.md b/MarathonData.md index d57aeb7..63a924a 100644 --- a/MarathonData.md +++ b/MarathonData.md @@ -388,7 +388,7 @@ Map tags: | `ambi` | Array of Ambient Sound | | `bonk` | Array of Random Sound | | `term` | Array of Terminal | -| `NAME` | Unknown | +| `NAME` | NTBS containing map name | | `påth` | Unused, supposed to be guardpaths (å is $8C) | | `door` | Unused, supposed to be extra door data | diff --git a/source/marathon/map.rs b/source/marathon/map.rs index 0e9c6dc..fc629dc 100644 --- a/source/marathon/map.rs +++ b/source/marathon/map.rs @@ -15,6 +15,7 @@ pub mod ltfn; pub mod medi; pub mod minf; pub mod mnpx; +pub mod name; pub mod note; pub mod objs; pub mod plac; @@ -86,7 +87,7 @@ pub struct Wad } c_enum! { - /// The version of a `Wad`. + // The version of a `Wad`. #[derive(Debug)] enum Ver: u16 { diff --git a/source/marathon/map/chnk.rs b/source/marathon/map/chnk.rs index cd0df9c..e92af17 100644 --- a/source/marathon/map/chnk.rs +++ b/source/marathon/map/chnk.rs @@ -41,6 +41,7 @@ pub fn read(b: &[u8], old: bool, siz_cnk: usize) -> ResultS> b"bonk" => Chunk::Bonk(rd_array(data, map::bonk::read)?), b"medi" => Chunk::Medi(rd_array(data, map::medi::read)?), b"plat" => Chunk::Plat(rd_array(data, map::plat::read)?), + b"NAME" => Chunk::Name(rd_array(data, map::name::read)?), b"NOTE" => Chunk::Note(rd_array(data, map::note::read)?), b"term" => Chunk::Term(rd_array(data, map::term::read)?), b"FXpx" => Chunk::Fxpx(rd_array(data, map::fxpx::read)?), @@ -77,6 +78,7 @@ pub enum Chunk /** A `bonk` chunk. */ Bonk(Vec), /** A `medi` chunk. */ Medi(Vec), /** A `plat` chunk. */ Plat(Vec), + /** A `NAME` chunk. */ Name(Vec), /** A `NOTE` chunk. */ Note(Vec), /** A `term` chunk. */ Term(Vec), /** A `FXpx` chunk. */ Fxpx(Vec), diff --git a/source/marathon/map/name.rs b/source/marathon/map/name.rs new file mode 100644 index 0000000..d7f51cc --- /dev/null +++ b/source/marathon/map/name.rs @@ -0,0 +1,11 @@ +//! `NAME` chunk. + +use crate::{durandal::err::*, marathon::text::mac_roman_cstr}; + +/// Reads a `NAME` chunk. +pub fn read(b: &[u8]) -> ResultS<(String, usize)> +{ + Ok((mac_roman_cstr(b), b.len())) +} + +// EOF