Giter Club home page Giter Club logo

jaxe's Issues

Seeking libretro port maintainer

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

Wrong VF order in 8xy6 and 8xyE

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:

Bildschirmfoto 2024-03-31 um 10 53 24

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.

Number of elements in the QUIRKS array does not match

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.

Timendus' test suite revealing issues with clipping and scrolling

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

chip8_legacy_5

Running quirks test in S-CHIP mode:
./jaxe ../roms/optests/chip8-test-suite/5-quirks.ch8

S-CHIP Legacy:
chip8_schip_legacy_5
S-CHIP Modern:
chip8_schip_modern_5
^^^ 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

S-CHIP modern lores:
chip8_schip_lores_modern_8

Running scrolling test in XO-CHIP mode:
./jaxe -x ../roms/optests/chip8-test-suite/8-scrolling.ch8

XO-CHIP lores:
chip8_xochip_lores_8

To summarize:

  • Display wait (draw with vertical blank interrupt) needs implementing
  • Sprite clipping has issues
  • Scrolling in XO-CHIP and S-CHIP lores modes has issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.