sipsi-8/README.md

72 lines
1.5 KiB
Markdown

Name
----
"Sipsi" is Finnish for a potato chip.
Usage
-----
python3 sipsi-8.py path/to/chip-8/file [instructions-per-second]
Input
-----
Hardcoded (sorry)
1 2 3 4
Q W E R
A S D F
Z X C V
which maps to
1 2 3 C
4 5 6 D
7 8 9 E
A 0 B F
Games
-----
Get some [here](http://www.pong-story.com/chip8/) or [here](https://github.com/dmatlack/chip8/tree/master/roms)
Code quality
------------
Pretty bad
Emulation speed
--------------
Instructions are run 500 times a second by default. This can be changed by
passing in a second argument to sipsi-8.
Draw sprint
-----------
To reduce sprite flicker, sipsi-8 can run upto two ticks' worth of cycles
after a draw call. This is since chip-8 often does drawing in pairs, where
the first in the pair erases the old sprite and the next one draws it back.
If they happen on different frames, this results in very back flickering.
To avoid an issue of pairing one sprite's draw to other's erase, a sprint
is invalidated if it hits a jump, call, or a return.
Games improved by draw sprint:
* Brix and its descendants
* UFO
Games unaffected by draw sprint:
* Pong and Pong2 (Draws are too far from each other)
* Tetris (Does jumps inbetween)
* Blitz (Does jumps inbetween. If invalidation upon jump is disabled, ends
up pairing wrong draw calls)
Issues
------
* Keyboard can't be changed
* FPS can't be changed
* Window size can't be changed
* No error handing on opening a file
Requirements
------------
* pyglet (`pip3 install pyglet`)
License
-------
Creative Commons Zero 1.0