From 9ddf0dee63b6c7d19ad4bbd7fdfd91a7fc4bc551 Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Tue, 7 Feb 2017 04:50:26 +0900 Subject: [PATCH] data format docs Former-commit-id: 5da80ac39d23d518bec0ed4e838fd0a4ae19bd11 Former-commit-id: f7ec7a4cd2c1d7a795aa19352065ee1ea1550fe4 --- work_files/DataFormats/Map data format.txt | 47 +++++++++++++++++++ work_files/DataFormats/Savegame metadata.txt | 22 +++++++++ work_files/DataFormats/User art format.pdf | Bin 27513 -> 0 bytes work_files/DataFormats/User art format.txt | 42 +++++++++++++++++ 4 files changed, 111 insertions(+) create mode 100644 work_files/DataFormats/Map data format.txt create mode 100644 work_files/DataFormats/Savegame metadata.txt delete mode 100644 work_files/DataFormats/User art format.pdf create mode 100644 work_files/DataFormats/User art format.txt diff --git a/work_files/DataFormats/Map data format.txt b/work_files/DataFormats/Map data format.txt new file mode 100644 index 000000000..df4454d17 --- /dev/null +++ b/work_files/DataFormats/Map data format.txt @@ -0,0 +1,47 @@ +Terrarum Game Map Format + +* Endianness: big + +Ord Hex Description +00 54 T +01 45 E +02 4D M +03 44 D + +04 01 Number of bits per tile divided by 8, only 1 is supported + +05 Number of layers + +06 00 Reserved +07 00 Reserved + +08 World width +09 World width +0A World width +0B World width + +0C World height +0D World height +0E World height +0F World height + +10 Default spawn coord X +11 Default spawn coord X +12 Default spawn coord X +13 Default spawn coord X + +14 Default spawn coord Y +15 Default spawn coord Y +16 Default spawn coord Y +17 Default spawn coord Y + +18 Terrain tiles data (MSB) + +... Wall tiles data (MSB) + +... Tiles data (LSB) + 0bAAAABBBB - A: Terrain, B: Wall (0-15) + +... Wire tiles data (0-255) + + \ No newline at end of file diff --git a/work_files/DataFormats/Savegame metadata.txt b/work_files/DataFormats/Savegame metadata.txt new file mode 100644 index 000000000..6bc8b94ae --- /dev/null +++ b/work_files/DataFormats/Savegame metadata.txt @@ -0,0 +1,22 @@ +Savegame metadata + +* Endianness: big +* Filename: 'world' +* Remarks: GZipped + +Ord Hex Description +00 54 T +01 45 E +02 4D S +03 44 V + +04 Name of the world in UTF-8 +... 00 String terminator + +... Terrain seed (8 bytes) +... Randomiser seed (8 bytes) + +... SHA-256 hash of worldinfo1 when not compressed (32 bytes) +... SHA-256 hash of worldinfo2 when not compressed (32 bytes) +... SHA-256 hash of worldinfo3 when not compressed (32 bytes) +... SHA-256 hash of worldinfo4 when not compressed (32 bytes) \ No newline at end of file diff --git a/work_files/DataFormats/User art format.pdf b/work_files/DataFormats/User art format.pdf deleted file mode 100644 index 2238ac519cc1cb6a7df623c3591321dc90481031..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27513 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 b`CbonbOJu&-##E<7>pZ=N<$+qFM;|$>&Ev@ diff --git a/work_files/DataFormats/User art format.txt b/work_files/DataFormats/User art format.txt new file mode 100644 index 000000000..559c1acea --- /dev/null +++ b/work_files/DataFormats/User art format.txt @@ -0,0 +1,42 @@ +Terrarum User Art format + +* Endianness: big + +* Palette colour is encoded as 0b0000RRRR 0bGGGGBBBB (yep, four bits are wasted) + +Ord Hex Description +00 54 T +01 45 E +02 41 A +03 46 F + +04 Colour model + 00 Invalid + 01 16 Colours + 02 64 Colours + 08 User-defined palette + +05 Number of swatches + 00 - No palette mode (using defined palette) + - 256 colours (using user-defined) + nn - Colour count (1-255) + +06 Width of the image (MSB) +07 Width of the image (LSB) + +08 Name of the art in UTF-8 +... 00 String terminator + +... Name of the author in UTF-8 +... 00 String terminator + +... Palette colour 0, if any (MSB) +... Palette colour 0, if any (LSB) +... Palette colour 1, if any (MSB) +... Palette colour 1, if any (LSB) +... Palette colour 2, if any (MSB) +... Palette colour 2, if any (LSB) + +... Colour indices + + \ No newline at end of file