Giter VIP home page Giter VIP logo

core8's People

Contributors

benvenutti avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

core8's Issues

Create memory abstraction

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).

Update compiler flags

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.

Update README

Complete the README update with the following items:

  • overview
  • build instructions
  • compiling
  • running tests

Create VM class

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:

  1. a CPU;
  2. a MMU;
  3. a random number generator;
  4. an i/o connector.

Refactor word decoder

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.

Create Opcode decoder

This feature should also start the fundamental core of the project:

  1. folder structure;
  2. cmake files;
  3. add Catch (for unit testing) as a external project.

Add CI scripts for travis

Add continuous integration scripts for Travis. For now the supported systems will be:

  1. Linux (gcc and clang);
  2. Mac OSX (clang).

Create I/O interface

This interface will be the connection point between a CHIP-8 actual emulator and the Core8 virtual machine.

Unexpected behavior when running binary

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.

Update README with emulator

core8 is now an emulator and not just a VM anymore. Update the README file to reflect this change in the project.

Add sound

Add sound support for the sound timer with a simple sine.

Segmentation fault when loading ROM with MMU

The segmentation fault occurs when:

  1. a rom larger than the memory is loaded;
  2. when a rom (with a size smaller than the memory) is loaded at an address that will cause the rom to go over the memory's boundaries.

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.