# State of Retro Gaming in Emacs Vasilij "wasamasa" Schneidermann [[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8--vasilij-wasamasa-schneidermann.webm"]] [Download compressed .webm video (7.2M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8--vasilij-wasamasa-schneidermann--vp9-q56-video-original-audio.webm) - [chip8 demo - alien, .webm video, 720p, 2M](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8-demo-alien--vasilij-wasamasa-schneidermann.webm) - [chip8 demo - brix, .webm video, 720p, 1M](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8-demo-brix--vasilij-wasamasa-schneidermann.webm) - [chip8 demo - car, .webm, 720p, 1M](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8-demo-car--vasilij-wasamasa-schneidermann.webm) - [chip8 demo - joust, .webm video, 720p, 2M](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8-demo-joust--vasilij-wasamasa-schneidermann.webm) - [chip8 demo - kaleidoscope, video, 720p, 2M](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8-demo-kaleidoscope--vasilij-wasamasa-schneidermann.webm) - [chip8 demo - sierpinski, video, 720p, 357K](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8-demo-sierpinski--vasilij-wasamasa-schneidermann.webm) - [chip8 demo - tetris, video, 720p, 843K](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8-demo-tetris--vasilij-wasamasa-schneidermann.webm) Many jokes have been made about the true nature of Emacs, such as it being a fully-fledged operating system. This talk will demonstrate its suitability for playing retro games, then explore the inner workings of a [CHIP-8](https://en.wikipedia.org/wiki/CHIP-8) emulator capable of smooth video game emulation. [1]: [2]: - Actual start and end time (EST): Start: 2020-11-29T13.23.01; End: 2020-11-29T13.33.00 - Alternative stream for extended talk: or . # Questions ## Q5: Do you think would be possible to write some compiler in order to write chip-8 games on elisp? It could be possible if you restrict yourself to some very limited Elisp subset or lispy assembler. For the latter, here's some projects to draw inspiration from: - . - -> . - -> . ## Q4: What's the biggest perf bottleneck for your emulator? does it spend time executing your Lisp or something else in the Emacs infrastructure (eg redisplay)? Redisplay was super slow, it's like 3-4x as slow as executing the CPU cycles. - Okay that's the reason why GCCEmacs does not help :) ## Q3: Do you think that you make our tiny console based in the chip ATMega like Arduboy? I'm sorry, I didn't quite understand the question, could you please clarify it? I'm not exactly a hardware person, might have to defer it to someone else. I've looked at Arduboy and I believe the DEFCON CHIP-8 Badge is the closest to this: ## Q2: Any tutorial to start? I want to make my game now, no, for chip8 I'm not aware of tutorials, but there's CHIP-8 resources online. You can of course study the assembly of existing games, that's how I figured out the tricks that broke my emulator :> ## Q1: How did you manage to present a game engine without showing any game? :-) Show us!! See the alt stream, it has several demos not shown due to time constraints. # Notes - Slides available at . - Repository available at . - Blog post available at .