Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compatibility Update #22

Merged
merged 1 commit into from
Jun 21, 2024
Merged

Compatibility Update #22

merged 1 commit into from
Jun 21, 2024

Conversation

craigthomas
Copy link
Owner

This PR fixes a number of problems with the current emulator. In general, this PR aims to bring the emulator more inline with other emulators such as Octo. This is in preparation of adding the XO-Chip Extensions to make it broadly compatible with any ROM written for Octo.

As discussed on the various Octo pages, there are several key places where the original Chip8 and Super Chip8 language specifications have diverged. This means that not all Chip8 or Super Chip8 ROMs were running correctly under the original emulator, since each developer may have used a different language specification when writing their programs. Thus, this PR introduces quirk modes, which are optional flags that can be passed to the emulator at run time to ensure the correct language behavior is used when running a given ROM.

Additional changes include:

  • Keyboard layout has been modified to adhere to the layout as specified by the Octo project.
  • Screen drawing routines have been optimized for speed.
  • GitHub actions have been updated to make use of the latest scripts.
  • Additional memory mode for 64K RAM was added to the emulator as a run time switch.
  • Trace mode added to print statements to standard out for debugging purposes.
  • Screen routines updated so that the display remains a fixed size when switching between normal and extended mode.

Change registers from dictionary to object.

Change keyboard configuration to match other emulators.

Update readme to reflect tested ROMS.

Update readme to reflect working status of ROMS.

Add shift quirks, change source and target names to x and y.

Update workflow

Update Codecov action to v4.

Add env secret to code coverage action.

Run code coverage only on pull requests, update README

Add memory size switch.

Fix huge bug with timers and extended screen mode.

Update README with new compatibility notes.

Add more games compability to README.

Fix scrolling.

Update README and unit tests.

Change the wait wait_for_keypress waits so the emulator does not hang.
Copy link

codecov bot commented Jun 21, 2024

Codecov Report

Attention: Patch coverage is 91.58249% with 25 lines in your changes missing coverage. Please review.

Project coverage is 90.10%. Comparing base (afc9d70) to head (a0f7a93).

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main      #22      +/-   ##
==========================================
- Coverage   93.38%   90.10%   -3.28%     
==========================================
  Files           4        4              
  Lines         423      465      +42     
==========================================
+ Hits          395      419      +24     
- Misses         28       46      +18     
Files Coverage Δ
chip8/config.py 100.00% <ø> (ø)
chip8/screen.py 90.32% <86.48%> (-9.68%) ⬇️
chip8/cpu.py 97.27% <96.38%> (-1.76%) ⬇️
chip8/emulator.py 0.00% <0.00%> (ø)

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update afc9d70...a0f7a93. Read the comment docs.

@craigthomas craigthomas merged commit 4cfcee8 into main Jun 21, 2024
1 of 3 checks passed
@craigthomas craigthomas deleted the pre-v2-updates branch June 23, 2024 15:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant