2018-09-20 20:54:51 +00:00
|
|
|
Name
|
|
|
|
----
|
|
|
|
"Sipsi" is Finnish for a potato chip.
|
|
|
|
|
|
|
|
Usage
|
|
|
|
-----
|
|
|
|
python3 sipsi-8.py path/to/chip-8/file
|
|
|
|
|
|
|
|
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
|
|
|
|
-----
|
2018-09-21 12:21:26 +00:00
|
|
|
Get some [here](http://www.pong-story.com/chip8/) or [here](https://github.com/dmatlack/chip8/tree/master/roms)
|
2018-09-20 20:54:51 +00:00
|
|
|
|
|
|
|
Code quality
|
|
|
|
------------
|
|
|
|
Pretty bad
|
|
|
|
|
|
|
|
Emulation speed
|
|
|
|
---------------
|
|
|
|
Instructions are run 500 times a second
|
|
|
|
|
2018-09-23 09:03:07 +00:00
|
|
|
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)
|
|
|
|
|
2018-09-22 15:28:01 +00:00
|
|
|
Issues
|
|
|
|
------
|
2018-09-23 09:03:07 +00:00
|
|
|
* Keyboard can't be changed
|
|
|
|
* FPS can't be changed
|
|
|
|
* Interpreter speed can't be changed
|
|
|
|
* Window size can't be changed
|
|
|
|
* No error handing on opening a file
|
2018-09-22 15:28:01 +00:00
|
|
|
|
2018-09-20 20:54:51 +00:00
|
|
|
Requirements
|
|
|
|
------------
|
|
|
|
* pyglet (`pip3 install pyglet`)
|
|
|
|
|
|
|
|
License
|
|
|
|
-------
|
|
|
|
Creative Commons Zero 1.0
|