#CHIP8# (Or Chip8Sharp) CHIP8# is a library created in C# to help me learn about emulation and lower level programming, as well as things like how hardware deals with memory.
#About the CHIP8 CHIP8 is an interpreted programming language from the 70s which was used in several home micro computers. They are very simple machines and an ideal target for a first emulation project - even if people think it's badly designed! Read more about CHIP8 here.
There was also an extension, SUPERCHIP, later released.
#About the author I have been programming for almost 15 years, but always as a hobbyist, mainly in web dev (PHP, JS, (X)HTML) and usually never finishing projects. So go lightly on me if I make mistakes! I'm new to emulation and not super well versed in C#, although it is my desktop language of choice (even as a Mac user ;) )
As a note, this will be primarily tested on OS X. This should mean it'll run on anything that uses Mono, but let me know if there are any cross platform issues.
#Project goals
- Learn emulation programming
- Learn about how hardware works
- Be a "drop in, ready to go" library that is not dependent on the frontend
- Do it "C# style" (no int i = 0; where I can avoid it, always strive for readable names - int Counter = 0;) - verbose and easy to read over less space taken up. Abstract where it makes sense and is possible.
- Create a frontend that can take advantage of the library I have created here
- Be fully dyanmic on tech specs! If you wanna boot up Chip8Sharp with 16K of memory, that's no problem!'
- Finish the project! ;)
- Possibly RetroArch support?
- SuperChip support
#Can I use this code for...? Yes, absolutely. Commercial, open source purposes, whatever. I have put this up so you can do what you like with it :)
#How to read comments
/* THIS IS A HEADER */
// This is usage instructions
/// This is descriptive or useful information
/* HELLO WORLD PROGRAM */
public class HelloWorld
{
// Output hello world message
public HelloWorld()
{
Console.Log("Hello, world!");
/// uses Console.Log to output "Hello, world!" to the terminal
}
}
Hopefully my comments are less inane than that, though ;)
#Thanks and resources