RetroArch JAXE Core - Emulating the XO-CHIP/CHIP-8!
A fully-featured, cross platform XO-CHIP/S-CHIP/CHIP-8 emulator written in C.
The JAXE core has been authored by
phcoder (Vladimir Serbinenko)
kurtjd (Kurtis Dinelle)
The JAXE core is licensed under
MIT
A summary of the licenses behind RetroArch and its cores can be found here.
Tecnical Info
The original CHIP-8 virtual machine was designed with the following specs:
35 opcodes
4kb RAM
16 8-bit general purpose registers
16-bit program counter, stack pointer, and index registers
8-bit delay and sound timer registers
64x32 monochrome display
16-key keypad (0-F)
Program memory starting at address 0x200
Due to the way CHIP-8 was designed, the "flicker" that happens when sprites are drawn is normal. Games developed for it also rarely made any attempt to cap their frame rate due to the slow hardware of the time hence the need to artificially slow the CPU down on modern emulators.
In the early 90s, Andreas Gustafsson created a port for the HP48 calculator which was eventually superseded by S-CHIP 1.0/1.1 created by Erik Bryntse. The S-CHIP added several features as well as accidentally (or intentionally?) modifying the behavior of several original opcodes:
9 new opcodes
128x64 HI-RES display
Persistent storage
Modified Bnnn, Fx55, Fx65, Dxyn, 8xy6, and 8xyE instructions
With time, it seems the S-CHIP became more popular and many programs were written to work with its various quirks. Thus, JAXE defaults to original S-CHIP design however many of its quirks can be toggled for improved compatibility using the flags in the Options section below.
However, recently John Earnest designed the XO-CHIP extension allowing CHIP-8 programs to take advantage of modern hardware to an extent. This extension adds several more instructions and features including:
7 new opcodes
16-bit addressing for a total of ~64kb RAM
Second display buffer allowing for 4 colors instead of the typical 2
Improved sound support
Modified Fx75 and Fx85 instructions to allow for 16 user flags instead of typical 8
JAXE currently supports all of these extensions.
It should also be noted that JAXE stores its fonts in memory starting at address 0x0000 followed immediately by large fonts and finally immediately by the stack. Therefore the stack pointer initially points to address 0x00F0.
https://docs.libretro.com/library/jaxe/
--
#RetroArch by #LibRetro is a frontend for emulators, game engines and media players.
Support us by becoming a member here -
RetroArch enables you to run classic games on a wide range of computers and consoles through its slick graphical interface. Settings are also unified so configuration is done once and for all.
For more detailed information, follow these links:
https://www.retroarch.com/
https://libretro.com/
Other Videos By LibRetro
Other Statistics
RetroArch Statistics For LibRetro
There are 4,376,811 views in 340 videos for RetroArch. The game makes up over 1 day of published video on his channel, or 67.49% of the total watchable video for RetroArch on LibRetro's YouTube channel.