Reimplement five VIC-II blocks independently of VICE's code - #343
Merged
Merged
Conversation
Five parts of the cycle-exact VIC-II followed VICE's (GPL) emulator source closely: the graphics fetch address with bitmap mode's one-cycle delay, the graphics data sequencer per pixel, the sprite data sequencer per pixel, the sprite data counters (cycle 58 decision, cycle 16 update, crunch) and the vertical border flip-flop. They are rewritten from a behaviour specification by an implementer without access to VICE's source or the previous code, so the project stays MIT licensed. The behaviour is unchanged: the existing tests pass unchanged, all 274 VICE VIC-II test program runs give the same result pixel for pixel, the CIA test programs are unchanged, and games and demos render byte-identically. The new graphics sequencer is slightly faster. Comments that named VICE's source files or internal identifiers now describe the behaviour instead; credit to VICE's test programs remains.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Why
The cycle-exact VIC-II learned several behaviours from VICE's emulator source. That is fine for behaviour, which is a fact about the chip, but five blocks ended up following VICE's GPL C code closely: the same logic and expressions under other names. This project is MIT licensed, so those blocks are replaced by code written independently.
What was replaced
Vic2RasterizerSequencerPixelGenerator(GraphicsFetchAddress)Vic2RasterizerSequencerPixelGenerator(DrawGraphicsCycleand helpers)Vic2SpriteManager.DecodeSpriteRun$D017writes, the sprite crunchVic2Vic2How
Verification