CHIP-8 Emulator/Interpreter
Root / Submissions / [.]
RaichuBenderCreated:
Download:4D4X3EK3Version:0.9.8Size:
Update - 12Me21 made his own version. Check it out here: http://smilebasicsource.com/page?pid=693
This version is pretty much obsolete now, since I'm not going to improve it. You can still download it for the included games.
CHIP-8 is an interpreted language created by Joseph Weisbecker and was meant to be used for the COSMAC VIP and Telmac 1800 8-bit microcomputers in the mid '70s. It was later reintroduced on graphics calculators. Several ports were made for other platforms as well. The reason it was created is that it makes creating games much easier.
Control the games using a 16-key keypad. The display resolution is 64x32, so the sprites are very low-detailed. The only sound output is a beep.
This set comes with a couple of CHIP-8 ROMs that are public domain, meaning everyone can share them without any problems. Here is a list of them:
15PUZZLE
ADDITION
ANIMALRACE
ASTRODOGE - my personal favorite
BLINKY
BLITZ
BRIX
CONNECT4
GUESS
HANOI
HELLO
HIDDEN
INVADERS
KALEID
MAZE
MERLIN
MISSILE
PARTICLES
PONG
PONG2 - a better version of PONG
PUZZLE
SIERPINSKI
SIRPINSKI
STAR
STARFIELD
SYZYGY
TANK
TETRIS
TICTAC
TRIP8
UFO
VBRIX
VERS
WIFEOFF
ZERO
Replying to:snail_
Does the interpreter run at the proper one-point-whatever MHz speed? In other words, how are you timing it/controlling the speed?
Because there is no real CHIP-8 CPU, there is no documented speed. It VSYNCs every time it draws a sprite or clears the screen and when it makes sound. I'll add a speed setting in the future.
Replying to:snail_
Does the interpreter run at the proper one-point-whatever MHz speed? In other words, how are you timing it/controlling the speed?
Ah, ok. That's a very reasonable way to time it since most programs are going to run some kind of graphics anyway.
I know. It's a shame. I can't figure out what the cause of the problem is...
Sure, it'll be in the next update :D
How in the world do I make a program with this? Too complicated. XD Anyways nice emulator! I like it a lot!
Replying to:CodeTrooper
How in the world do I make a program with this? Too complicated. XD Anyways nice emulator! I like it a lot!
Thanks, it means a lot to me!
Back then everything was done using ASM and binary. Programmers were really hardcore. But because the Telmac 1800 was so hard to program for, they invented a much easier type of binary code called CHIP-8. It wasn't really popular, but it succeeded in making programming much easier for that time. Today you can find it everywhere, from small hobbyists to easter eggs in video games.
Man, I need to update this. I have this 1.0 version that I haven't even released yet.
Replying to:SMSbill
I don't see how to download this.
Does it come as source code?
I want to see how you did it all.
There is a public key you need to use to download this in SmileBASIC.
Replying to:12Me21
I fixed the bug that caused some games (like tetris) to not work
simple fix:
1: add V[&HF]=0 at the beginning of the DRW function
2: remove the other line that sets V[&HF]=0
3: replace V[&HF]=1 with IF P[I2] THEN V[&HF]=1
Oh, wow. Thanks! Expect an update very soon!
EDIT: This is a good opportunity for me to fix and optimize the code even more.
Replying to:12Me21
I fixed the bug that caused some games (like tetris) to not work
simple fix:
1: add V[&HF]=0 at the beginning of the DRW function
2: remove the other line that sets V[&HF]=0
3: replace V[&HF]=1 with IF P[I2] THEN V[&HF]=1
here's a video of tetris on my improved version of your interpreter:
https://www.youtube.com/watch?v=hhLuMBrIVIc
Replying to:12Me21
I fixed the bug that caused some games (like tetris) to not work
simple fix:
1: add V[&HF]=0 at the beginning of the DRW function
2: remove the other line that sets V[&HF]=0
3: replace V[&HF]=1 with IF P[I2] THEN V[&HF]=1
hey, 12me21, thanks for the fix bro.
[poll=p64][/poll]
here's my version: P3A3EEZF
(doesn't come with the games)
The "slow" button controls the speed: 0=unlimited, 1=1KHz, 2=500Hz
Change the controls during a game by pressing the "CONTROLS" button and using the D-pad/A button to select a key, then press the button you want to control that key. press B to exit.
Replying to:12Me21
I fixed the bug that caused some games (like tetris) to not work
simple fix:
1: add V[&HF]=0 at the beginning of the DRW function
2: remove the other line that sets V[&HF]=0
3: replace V[&HF]=1 with IF P[I2] THEN V[&HF]=1
Neat!
Tetris is unplayable
Use the the fix two comments below:
I fixed the bug that caused some games (like tetris) to not work simple fix: 1: add V[&HF]=0 at the beginning of the DRW function 2: remove the other line that sets V[&HF]=0 3: replace V[&HF]=1 with IF P[I2] THEN V[&HF]=1