kurtjd / jaxe Goto Github PK
View Code? Open in Web Editor NEWA fully-featured, cross platform XO-CHIP/S-CHIP/CHIP-8 emulator written in C and SDL.
License: MIT License
A fully-featured, cross platform XO-CHIP/S-CHIP/CHIP-8 emulator written in C and SDL.
License: MIT License
Most of the pull requests I receive are in regards to the libretro port which I was not involved with in its development. This makes reviewing PRs for the libretro port difficult as I am less familiar with it.
If anyone sees this who is involved in the libretro port and is interested in being a maintainer, please let me know: [email protected]
Thanks
First of all: Nice project, nice compact implementation and good that there is libretro support as I couldn't get myself doing it. :-)
In all math operations that set a flag result in VF and VF is also Vx, the result register, the result of the operation needs to be the flag result of the operation, not the operation result. This is order is wrong in 8xy6 and 8xyE leading to e.g. VF always being 0 for in case of 8xy6 and a potential flag result of 2 in case of 8xyE.
The flags test of Timendus great test suite can be used to verify this: https://github.com/Timendus/chip8-test-suite#flags-test
JAXE result is:
So as expected 8xy6 and 8xyE failed the VF order test. This is btw. an error in many emulators as it is described misleadingly in Cowgod's technical reference and Wikipedia.
The number of elements in the quirks array does not match.
In the file include/chip.h is defined the constant NUM_QUIRKS with value 10
https://github.com/kurtjd/jaxe/blob/main/include/chip8.h#L32C9-L32C19
In this file is comment each elemente of array
https://github.com/kurtjd/jaxe/blob/main/include/chip8.h#L136
but only 9 is comment
I don't know if the value of NUM_QUIRKS should be 9 or 10
In the file src/main.c is defined the array quirks with 10 elements
https://github.com/kurtjd/jaxe/blob/main/src/main.c#L41
but in the src/libretro.c the array quirks with 9 elements
https://github.com/kurtjd/jaxe/blob/main/src/libretro.c#L256
This does not affect performance or generate errors, neither in the SDL version nor in Retroarch, but I think the number of array elements in the two versions should match.
There appear to be issues with sprite clipping and scrolling (as well as display wait not being implemented):
Running quirks test in legacy mode:
./jaxe -l ../roms/optests/chip8-test-suite/5-quirks.ch8
Running quirks test in S-CHIP mode:
./jaxe ../roms/optests/chip8-test-suite/5-quirks.ch8
S-CHIP Legacy:
S-CHIP Modern:
^^^ Not sure about the difference between "S-CHIP legacy" and regular CHIP-8 mode (which I call "legacy")
Running scrolling test in S-CHIP mode:
./jaxe ../roms/optests/chip8-test-suite/8-scrolling.ch8
Running scrolling test in XO-CHIP mode:
./jaxe -x ../roms/optests/chip8-test-suite/8-scrolling.ch8
To summarize:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.