Adding Documentation for parser in jdb
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing

Signed-off-by: Anthony Debucquoy <debucquoy.anthony@gmail.com>
This commit is contained in:
Debucquoy Anthony 2023-03-05 22:50:41 +01:00 committed by Anthony Debucquoy
parent e1d9a002e9
commit 0ea7829588
Signed by: tonitch
GPG Key ID: A78D6421F083D42E
2 changed files with 43 additions and 1 deletions

View File

@ -4,3 +4,7 @@
- [Première entrevue](./rapports/130223.md)
- [Deuxième entrevue](./rapports/200223.md)
# Specification
- [File Parser](./spec/FileParser.md)

View File

@ -0,0 +1,38 @@
---
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)
## 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! :-)