CODE TRACK

Inspiration

While brainstorming Ideas, we came across the idea of creating an emulator for a console. Because we don't have much experience with emulation, we decided on an easy console, such as the Chip8. The Chip8 was originally a virtual machine used on microcomputers in the mid 1970s. Our original idea was to write the emulator in python, but we found way too many chip8 emulators online made by other people, so we thought the idea was too trivial. Instead of completely scrapping the idea, we began thinking of solutions to make the chip8 emulator more challenging, and we finally came to the idea of just writing in an esoteric language (esolang). We looked through some wacky esolangs and came to the conclusion that we should use EmojiCode!

What it does

Our Chip8 emulator is... exactly what it sounds like, an emulator for the Chip8 microcomputer virtual console. It can run any Chip8 rom file (.ch8 file), this includes titles such as BrickBreaker, Pong and SpaceInvaders! All 35 Opcodes have been implemented in EmojiCode and are viewable via our source code on the repo linked below

How we built it

  • We built our Chip8 emulator with EmojiCode, a terribly documented esoteric programming language that is built on C++ and whose syntax primarily consists of emojis.
  • In addition to EmojiCode, we had to insert some C++ code because some features such as display and timing isn't possible due to the limitations of EmojiCode

Challenges we ran into

  • Using EmojiCode! We mainly develop using windows (which EmojiCode doesn't support) so we had to switch to Linux to develop this project
  • Learning EmojiCode! We may have (hopefully) completed this project, but that doesn't mean the documentation for EmojiCode is good (theres a mini-course on codeacademy which is p cool)
  • Figuring out how to display
    • Again, due to EmojiCode's drawbacks, displaying games using a gui isnt possible, so we had to rely on ncurses and tinfo to help us create a CLI (command-line interface).
  • bad roms
    • some of the roms we tested had commands that weren't actual opcodes so figuring that out was something that we got stuck on for a while

Accomplishments that we're proud of

  • We're proud of actually getting down and learning an esoteric language
  • We're also proud of actually using said esoteric language to develop a working application
  • Creating an emulator
  • Being able to actually run the emulator

What we learned

  • We learned a lot about esoteric languages and EmojiCode
  • We learned about new Emojis (📇- card index)

What's next for Chip8 Emulator

  • windows support
  • emojicode windows support

Built With

  • c++
  • cli
  • cmake
  • emojicode
  • esotericlanguage
  • linux
  • ncurses
  • tinfo
Share this project:

Updates