--- title: File Parser author: Debucquoy Anthony (tonitch) date: 5 March 2023 --- # File Parser Specification For the Project, I wanted to challenge myself, I decided to do my own file parser with my own specification that would have the special objective of being really small. ## The File format The file would use the .level file extension. The file could contain anything, the used data is enclosed in between an header and a parser. This could be used to add Music, images and other stuff in the level file for instance Only one Header and One Footer should be present in the file. The parser will only read the first one it finds so to avoid problem, it is best practise to put the level data at the top of the file. - The HEADER will be defined by the characters 'S', 'M', 'S' - The FOOTER will be defined by the characters 'S', 'M', 'E' - The bytes in between are the level data - byte 1: Width of the map - byte 2: Height of the map - bytes 3 -> Width * Height (+1 if Width * Height % 8 is not 0) - byte after Map Data: Pieces amount - for each pieces - 1 byte: size of the piece - 4 first bits : width - 4 last bits: height - next bytes -> Width * Height (+1 if Width * Height % 8 is not 0) - Position ( only for saved file ) - 'F' if the piece is in float state ( not placed) - x and y on 2 bytes for position if the piece is placed ## Known Limitation 1) by putting the piece size on one byte. We limit the maximum piece size to 15 x 15 (1111 | 1111) I don't think we will ever need a piece larger than 5x5 so this is clearly a feature, not a bug! :-)