Skip to content

Enumerating bits as booleans from a byte #2

@locusf

Description

@locusf

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions