benvenutti / core8 Goto Github PK
View Code? Open in Web Editor NEWChip-8 virtual machine
License: MIT License
Chip-8 virtual machine
License: MIT License
Operations 00E0 and DXYN.
Link project to coveralls.io.
Review and refactor where needed.
Implement a Windows version for the library.
Implement operations for 6XNN and 7XNN opcodes.
The default constructor for the MMU does not clear the memory. This is quite bothersome for debugging. Update the default constructor to clear the memory.
Create a Memory class. Currently the memory of the Chip8 is implemented as a std::array<BYTE, SIZE>. This clogs up the code of Core8 when passing the memory as arguments (cause both template arguments must be specified).
Operations EX9E, EXA1 and FX0A.
Update compiler flags with the following:
-Wall
-Wextra
-Wshadow
-Wnon-virtual-dtor
-pedantic
-pedantic-errors
-Wunused
-Wold-style-cast
-Wsign-conversion
Check if any of these flags become a bit unpractical.
Review all CPU unit tests and refactor where/when needed.
Complete the README update with the following items:
Create a MMU to handle all references to memory. The unit should also centralize the memory protection scheme.
Add operations to opcodes: 8XY1, 8XY2, 8XY3, 8XY6 and 8XYE.
Best done after #22 implementation.
The drawing action is refreshing the internal frame buffer but it is not flagging the i/o connector to draw it.
Add operations to opcodes: 8XY4, 8XY5 and 8XY7.
Add Catch2 as a submodule in the git project and remove old CMake-based solution that adds Catch to core8.
Add CPU operations for opcodes 3XNN, 4XNN, 5XY0 and 9XY0.
Add assign operation to 8XY0 opcode.
Create .clang-format file with a style for the project.
The Core8::VM class is the highest abstraction in the Core8 lib. The VM represents emulator kernel as an unified entity.
The VM must have the following parts:
The CPU has internally some helper functions to decode its instructions. Those could be refactored out into a namespace so they could be unit tested.
Move functions readX
, readY
, readN
, readNN
and readNNN
from CPU.cpp into a new namespace and create unit tests for them.
Review all MMU unit tests and refactor where/when needed.
Review all OpDecoder unit tests and refactor where/when needed.
This will gather the delay timer and the sound timer all in one. Operations are: FX07, FX15 and FX18.
This feature should also start the fundamental core of the project:
Add continuous integration scripts for Travis. For now the supported systems will be:
Update Travis CI scripts for clang 3.6 and 3.7 support.
This interface will be the connection point between a CHIP-8 actual emulator and the Core8 virtual machine.
core8/test/CPU_random_test.cpp
Line 21 in 1f84d85
Add the font set to the Chip8 namespace.
Add the following missing CPU operations:
Implement a conanfile.py with a recipe for the core8 package.
When running core8 against the game "Blinky" (Hans Christian Egeberg, 1991), there is an unexpected behavior whenever the player moves to the right: the game halts and then the gamer loses a life. Might be related to a wrong register update.
Operations 00EE, 1NNN, 2NNN and BNNN.
core8 is now an emulator and not just a VM anymore. Update the README file to reflect this change in the project.
Add sound support for the sound timer
with a simple sine.
Operatiosn are: ANNN, FX1E, FX29, FX55 and FX65.
Add a cmake generated config file with the lib version.
The segmentation fault occurs when:
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.