Giter VIP home page Giter VIP logo

chip-8's Introduction

CHIP-8

A WIP CHIP-8 emulator and compiler made in C.

Take a look at the technical reference here

Usage

Simply run the program specifying the program you want to load as an argument

$ ./chip8 program.chip8

Tests

To run all tests:

$ ctest

To run individual tests:

$ test/./c8_intructions_tests

Compiler

To use the compiler, pass the source file and the desired output file as arguments

$ ./chip8c input.src output.chip8

How to insert data into your programs

The compiler output is loaded by the chip8 interpreter starting at location 0x200 (initial location of the program counter). To insert a data segment, use the keyword '!DATA' plus a valid address after you are done with the code segment:

!DATA <ADDRESS>
<16 bit word>
<16 bit word>
<16 bit word>
...

The 16 bit words you input after '!DATA

' are copied as a block into memory. You may specify more than one '!DATA' segment to keep you memory organized, but you shall not try to overwrite already set memory positions.

Ex:

!DATA 270
A4BB
B0CC
11DD

!DATA 3F0
1911
B022
D733
FF44

Note: Remember that all numbers are hex and that each instruction is 16 bit long

Compiler tests

The 'test' folder contains a sample program all_instructions.src and a reference.txt file that contains the expected compilation result. Compile the program with:

$ ./chip8c test/all_instructions.src test/all_instructions.chip8

Then run the check program:

$ ./compiler_test

chip-8's People

Contributors

santiagomunoz avatar

Watchers

 avatar  avatar

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.