Adding Documentation for parser in jdb
Signed-off-by: Anthony Debucquoy <debucquoy.anthony@gmail.com>
This commit is contained in:
		@ -4,3 +4,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
- [Première entrevue](./rapports/130223.md)
 | 
					- [Première entrevue](./rapports/130223.md)
 | 
				
			||||||
- [Deuxième entrevue](./rapports/200223.md)
 | 
					- [Deuxième entrevue](./rapports/200223.md)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Specification
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- [File Parser](./spec/FileParser.md)
 | 
				
			||||||
							
								
								
									
										38
									
								
								JournalDeBord/src/spec/FileParser.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								JournalDeBord/src/spec/FileParser.md
									
									
									
									
									
										Normal 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! :-)
 | 
				
			||||||
		Reference in New Issue
	
	Block a user