-
Notifications
You must be signed in to change notification settings - Fork 0
Enumerating bits as booleans from a byte #2
Description
Hi!
First of all, thanks for this fantastic library! It has really got me started on making a NES emulator on Clojure, getting the iNES header format parsed successfully.
However, there are some fields in the format of iNES header that are packed bit fields, along with low/high nybbles for a selected memory mapper.
https://wiki.nesdev.com/w/index.php/INES
I'm currently trying to get the flags6 part parsed but I'm running in to issues on reading the 16 bytes and bytegeist wanting more bytes if I specify eg. a vector size 4 with bools for the low nybble on memory mapper and then the rest of the values on that byte as normal boolean map.
(def header-spec (g/spec [:map [:NES [:string {:length 4}]] [:PRG :ubyte] [:CHRROM :ubyte] [:flags6 :ubyte] [:flags7 :ubyte] [:flags8 :ubyte] [:flags9 :ubyte] [:flags10 :ubyte] [:filler [:bytes {:length 3}]] ]))
This is my header spec right now. I have been unable to nest the flags bytes to a separate spec.
I have been reading through the source and my question is, is there a way to parse a single byte as a bit field or something corresponding to that?