Skip to content

Latest commit

 

History

History
32 lines (18 loc) · 2.08 KB

README.MD

File metadata and controls

32 lines (18 loc) · 2.08 KB

Chip 8 Emulator in Typescript

What's a Chip-8

Chip-8 is a simple, interpreted, programming language which was first used on some do-it-yourself computer systems in the late 1970s and early 1980s. The COSMAC VIP, DREAM 6800, and ETI 660 computers are a few examples. These computers typically were designed to use a television as a display, had between 1 and 4K of RAM, and used a 16-key hexadecimal keypad for input. The interpreter took up only 512 bytes of memory, and programs, which were entered into the computer in hexadecimal, were even smaller.

In the early 1990s, the Chip-8 language was revived by a man named Andreas Gustafsson. He created a Chip-8 interpreter for the HP48 graphing calculator, called Chip-48. The HP48 was lacking a way to easily make fast games at the time, and Chip-8 was the answer. Chip-48 later begat Super Chip-48, a modification of Chip-48 which allowed higher resolution graphics, as well as other graphical enhancements.

Chip-48 inspired a whole new crop of Chip-8 interpreters for various platforms, including MS-DOS, Windows 3.1, Amiga, HP48, MSX, Adam, and ColecoVision. I became involved with Chip-8 after stumbling upon Paul Robson's interpreter on the World Wide Web. Shortly after that, I began writing my own Chip-8 interpreter.

- copied from Technical Reference

Implementation

Chip 8 TS is usig immutable library. There're several advantages of using immutable in this project. One of them is thah every instructions will create new state, so you can iterate over all instructions backwards. It's not good choice to using immutable in project like this, but it's just experiment.

Run

To run app, type in terminal

$ npm install
$ webpack-dev-server

and then open localhost:8080 in browser

Credits

In order to create Chip 8 emulator, you should read Technical Reference how Chip-8 works first

I also found article Javascript Chip-8 Emulator as source of good informations