Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/boneill02/ultrachip
Chip-8 expansion
https://github.com/boneill02/ultrachip
chip-8 emulator
Last synced: about 1 month ago
JSON representation
Chip-8 expansion
- Host: GitHub
- URL: https://github.com/boneill02/ultrachip
- Owner: boneill02
- License: gpl-2.0
- Created: 2022-08-22T21:21:28.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-11-20T20:55:51.000Z (about 2 years ago)
- Last Synced: 2023-03-10T15:59:34.232Z (almost 2 years ago)
- Topics: chip-8, emulator
- Language: C
- Homepage:
- Size: 41 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ULTRACHIP
Virtual machine based on CHIP-8, with the following improvements:
* Legacy stuff removed (ETI-660 compatibility, reserved memory for interpreter,
and SYS instruction)
* 16-bit memory addressing, with 64KiB program/data space
* 64x64 display using a 16 color 16-bit RGB color palette.
* Improved sound system (maybe?)## Display
The display is a 16 color 64x64 display using a 16-bit RGB color palette,
organized like so:```
+-----------------+
|(0,0) (64,0)|
| |
| |
| |
| |
| |
|(0,64) (64,64)|
+-----------------+
```## Memory map
```
+-----------------+ 0xFFFF (65535) End of RAM
| |
| |
| |
| |
| |
| 0x000 to 0xFFFF |
| ULTRACHIP |
| Program / Data |
| Space |
| |
| |
| |
+-----------------+ 0x000 (0) Start of RAM
```## Registers
* V0-VF: General purpose
* PC: Program counter
* SP: Stack pointer
* C: Carry flag
* TODO Timer and Sound registers## Instruction set
* 00E0: CLS: clear screen
* 00EE: RET: return from subroutine
* 1nnn: JP *addr*: PC=nnn
* 2nnn: CALL *addr*: SP++; S[SP]=PC; PC=nnn
* 3xkk: SE Vx, *byte*: Skip next instruction if Vx=kk
* 4xkk: SNE Vx, *byte*: Skip next instruction if Vx!=kk
* 5xy0: SE Vx, Vy: Skip next instruction if Vx=Vy
* 6xkk: LD Vx, *byte*: Vx=kk
* 7xkk: ADD Vx, *byte*: Vx=Vx+kk
* 8xy0: LD Vx, Vy: Vx=Vy
* 8xy1: OR Vx, Vy: Vx=Vx OR Vy
* 8xy2: AND Vx, Vy: Vx=Vx AND Vy
* 8xy3: XOR Vx, Vy: Vx=Vx XOR Vy
* 8xy4: ADD Vx, Vy: Vx=Vx + Vy; If (Vx > 255) C=1, else 0. Store lower 8 bits
* 8xy5: SUB Vx, Vy: Vx=Vx - Vy; If (Vx > Vy) VF=1, else 0
* TODO finish## Sound
TODO
## Sprites
TODO