Session
FOSDEM Schedule 2021
Emulator Development

Do you even emulate, (Super Mario) bro?

D.emulator
Panayiotis Talianos
Even to this day, there's something utterly captivating about bringing to life a piece of software effectively frozen in time, designed to run on what was originally a black box, by means of a device that one uses to check up on cat facts. Adding to this, it can even be enhanced and possibly perform better than its developers ever hoped for. If you're like me, gaming console emulators were amongst the first pieces of software you've ever run on a computer. Submitting this talk was an endeavour to explore this unexplainable (or is it?) fascination by what seems to conceptually be a compatibility layer. More importantly, it aims to have you intrigued about emulation development and the scene in general in the year 2021, by presenting the significance of the emulation community in the context of education and history preservation. It will also highlight how emulation development is more accessible today compared to the early days of the likes of PSEmu Pro, Project64 and NO$GMB - thanks, in no small part, to the FOSS community. TLDR: this will focus on the "why" (rather than on the "how") you should start writing emulators.

This will hopefully provide people that can relate to the below points...

solid programming background

naturally curious about the inner workings of computers

a little too sceptical as to what business they could have entering territory of the emudev Gandalfs of the 2000s that they looked up to during their school years

[optional, but desired] having fond memories of getting absolutely no choppy sound whatsoever with Tekken 3 running on Bleem! off of a CD on their even-then ancient Pentium 3 computer

... with good reasons as to why dipping their toes in emulation development is worth their time, and how writing an emulator is an awesome all-round learning experience, out of of which you'll become a better engineer.

What's more, how you get to do it in a context that you find meaningful, rewarding and worthwhile because it's one you can relate to: seeing your childhood games come to life (or, on the remaining 99% of occasions: using the debugger that you wrote trying to figure out why you can't get past the first screen)

Additional information

Type devroom

More sessions

2/6/21
Emulator Development
Steven Goodwin
D.emulator
Ever wanted to write an emulator? Or understand how they work? In this talk you learn how to start writing your own emulator from the ground up. You'll see the basic methods used to emulate CPUs, memory, and graphics cards. For the keen, we'll also cover advanced emulation techniques, licensing issues, and history.
2/6/21
Emulator Development
Gauvain Roussel-Tarbouriech
D.emulator
The PlayStation 2, being the best-selling game console of all time, is a surprisingly complex beast. So, isn't it only fitting that its emulation in software is equally complicated? With PCSX2 developer GovanifY, we carefully peel back the layers of the world's most popular game console, and its most popular emulator. See why, twenty years later, it's now easier than ever to PL△︎Y IN Y◯︎UR W╳︎RL□.
2/6/21
Emulator Development
Thomas Harte
D.emulator
Many emulators offer a CRT filter, an artist's rendition of classic video. This presentation describes emulation of the an entire NTSC or PAL video device, to produce an engineer's rendition — starting from sync discrimination and separation, through PLLs into scan placement and via QAM to extracting colour.
2/6/21
Emulator Development
Will Hawkins
D.emulator
I will demonstrate how to write a vectorized (parallel) Caesar cipher in RISC-V (in assembler) using the project's emulator. Using the emulator is necessary at this point for such an application because the vectorized extension to the RISC-V ISA is not standardized. I will further demonstrate how the emulator itself is able to emulate the execution of a single user-space application when it is actually designed to emulate an entire system. This will involve a demonstration and explanation of ...
2/6/21
Emulator Development
Ben Widawsky
D.emulator
For years now, driver development has been starting earlier in the product life-cycle. Using QEMU for liberating driver developers from being bound to hardware schedules isn't new. Not so common however, is adding support for new hardware to QEMU while the spec is still being revised. The coupling of driver development and emulation development helped find spec issues early, and allowed us to submit patches for a basic driver on the day that the specification wasreleased. This talk will discuss ...
2/6/21
Emulator Development
Thomas Harte
D.emulator
Emulator authors often like to measure themselves by invoking the concept of cycle perfection. In practice that under- or over-samples many real machines. This talk instead floats a bus-centric model of emulation.
2/6/21
Emulator Development
Rob Loach
D.emulator
RetroArch is a free, open-source and cross-platform frontend for emulators, game engines, video games, media players and other applications. The libretro API is designed to be fast, lightweight, portable, and without dependencies. Due to the number of systems and games it can play under a single user interface, RetroArch has grown immensely over the years, and has been well adopted by the emulation scene.