Pixel & Birka
Hey Birka, I've been messing around with pixel art of old console games that actually try to capture real battlesālike that 8ābit version of the Battle of Hastings. Ever seen those? Theyāre weirdly accurate for 8ābit graphics, and I think it would be fun to compare how the gameās design matches the actual map and tactics you love to dissect.
That pixel map is a real puzzle, youāre trying to cram a 1066 battlefield into a sprite sheet? I love that. Letās line up the Saxons and Normans, see if the tilt of the castle tiles line up with the real ridge, and then blame whoever put the horse in the wrong spot. Bring me the game data, Iāll crossāreference it with the actual chronicles. Iāll be ready to shout at the screen if itās offāhistory canāt be a side quest.
Sounds epicālet me dig out the level data and the sprite sheets for that 8ābit Battle of Hastings game. Iāll pull the coordinates, tile maps, and even the ināgame commentary notes so you can overlay them on the actual topography. Hang tight, Iāll have everything ready for your crossāreference marathon. If the horse ends up on the wrong side of the river, Iāll be there with a pixelāperfect rant.
Nice, bring the data and letās get this battlefield into pixel glory. Iāll be ready to slam that horse if it decides to cross the river like some lazy sprite. This is going to be a mapāmatching frenzy!
Hereās the raw data for the level layout and the sprite list. The map is a 32Ć32 tile grid, each tile 8Ć8 pixels. Iāve numbered the tiles rowābyārow.
**Tile indices**
0ā15: grass, 16ā23: stone, 24ā31: water, 32ā39: hill, 40ā47: castle walls, 48ā55: tower, 56ā63: bridge.
**Sprite list**
0: Saxon infantry (16 frames)
1: Norman knight (20 frames)
2: Archer (12 frames)
3: Horse (18 frames)
4: Castle gate (8 frames)
5: Tower (8 frames)
6: Bridge segment (4 frames)
**Map layout (row major, 32 entries per row)**
Row 0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row 1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row 2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row 3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row 4: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row 5: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row 6: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row 7: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row 8: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row 9: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row10: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row11: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row12: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row13: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row14: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row15: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row16: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row17: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row18: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row19: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row20: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row21: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row22: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row23: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row24: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row25: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row26: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row27: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row28: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row29: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row30: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Row31: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The key sections:
* **Hill tiles (32ā39)** are placed on rows 15ā17, columns 8ā12 to simulate the ridge.
* **Castle walls (40ā47)** start at row 20, column 14, spanning 6 tiles to form the keep.
* **Bridge (63)** is at row 10, columns 18ā21; you can swap the sprite at index 63 to see how the horse will cross.
You can load this array into your level editor, and the sprite indices will line up with the characters you mentioned. Let me know if you need the actual pixel art files or the sprite sheets; I can hand them over over a quick zip link. Happy debuggingāmay the pixels stay sharp!
Nice map data, but all grass until you drop the hill at row fifteen, castle at twenty, and a single bridge at tenālooks more like a blank board than the real battlefield. The ridge should be on the northern flank, with the Normans in the rear and the Saxons up front, so your hill placement needs a better angle. The castle walls starting at row twenty, column fourteen are fine, but the bridge at ten, columns eighteen to twentyāone? Thatās way off the river line. And if the horse ends up on the wrong side of the river, Iāll have a pixelāperfect rant. Drop the exact troop coordinates and Iāll overlay the real topography, then weāll see if the game actually respects history or just squints at it.
Got it, Iāll lay out the exact troop spots and tweak the ridge a bit. Hereās the new layout:
*Hill ridge* ā Row 13, columns 4ā10 (northāeast flank).
*Norman rear* ā Row 17, columns 2ā6 (behind the ridge).
*Saxon front* ā Row 14, columns 8ā12 (directly on top of the ridge).
*Castle* ā same as before, Row 20, columns 14ā19.
*River bridge* ā Row 9, columns 18ā21 (closer to the river).
**Troop sprite indices and positions**
Norman knight (1): (Row 17, Col 3)
Norman knight (1): (Row 17, Col 4)
Saxon infantry (0): (Row 14, Col 9)
Saxon infantry (0): (Row 14, Col 10)
Horse (3): (Row 15, Col 8) ā thatās the one youāll probably want to check.
Drop these into your map editor and let me know where the gameās logic still misāaligns. If the horse keeps hopping across the river, Iāll bring out the pixelāperfect rant kit. Let's see if this version really respects the real layout.
Great, the ridgeās moving to the right flank, the Normans are behind the hill, Saxons on topānice. Iāll drop those coordinates in the editor, watch the horse at 15,8. If the sprite still crosses the river, Iāll start the rant. The castle at 20,14 to 19 stays fine, but the bridge at 9,18ā21 needs to line up with the actual river edge; if itās not flush with the water tiles itāll be a blatant anachronism. Letās see if the game logic keeps the horse on the land or keeps throwing it into the pixel water. If it misāaligns, Iāll show you the exact frame where the error pops. Bring the sprite sheets, Iāll line them up with the real topography and prove that history canāt be cheated.We output the final.Great, the ridgeās moving to the right flank, the Normans are behind the hill, Saxons on topānice. Iāll drop those coordinates in the editor, watch the horse at 15,8. If the sprite still crosses the river, Iāll start the rant. The castle at 20,14 to 19 stays fine, but the bridge at 9,18ā21 needs to line up with the actual river edge; if itās not flush with the water tiles itāll be a blatant anachronism. Letās see if the game logic keeps the horse on the land or keeps throwing it into the pixel water. If it misāaligns, Iāll show you the exact frame where the error pops. Bring the sprite sheets, Iāll line them up with the real topography and prove that history canāt be cheated.
Hereās the zip with all the sprite sheets and the updated level data. The horse sprite (index 3) has a separate ācrossāriverā frame that you can see if the game logic lets it step onto the water tiles. The bridge tiles (index 63) line up with the river tiles (index 24ā31) at row 9, columns 18ā21. Unzip it, drop the files into your project folder, and let me know if the horse still goes splashing. Good luck, and Iām ready for that pixelāperfect rant!
Got the zip, unpacked it, and the horseās crossāriver frame looks fine. Iām loading the map now, putting the horse at 15,8 and the bridge at 9,18ā21. If the logic still lets it step onto water tiles, Iāll start the pixelāperfect rant. Letās see if this version finally respects the real layout.
Sounds good! Iāve set the horseās collision box to stop at the edge of the water tiles, so it shouldnāt jump into the river if you place it at 15,8. Try moving the horse a few tiles over the bridge and see if it sticks; if it still slips onto water, we can tweak the collision masks in the sprite sheet or adjust the tile coordinates. Let me know what happensāIāll help patch any glitch before your pixelāperfect rant kicks off!
I spun the map, pulled the horse into 15,8, then nudged it across the bridge at 9,18ā21. No splashingācollision box stops cleanly on the bridge tiles, nothing steps onto the water. So the logic is respecting the updated coordinates. If you move it past the bridge edge, it still stays put. Looks like the collision masks are fine now. No pixelāperfect rant needed, at least for the horse. If another glitch pops up, letās tackle itāhistory waits for no glitch.
Nice! The horseās playing nice and the bridge feels legit. Iām glad the collision masks are on point. Keep an eye on the rest of the battlefield, thoughāone pixel misstep and weāre back to ranting. If anything else pops up, just ping me. Happy to keep tweaking!