|
|
|
|
|
by ddnb
887 days ago
|
|
I have absolutely no idea how emulator development is but I always wondered how specific bugs like these are fixed; is it just adding an if statement specific to this game or are these just general bugs that get fixed and could just as well also fix something undiscovered in other games as well? |
|
There’s a slew of different approaches to emulation, such as bytecode interpretation (you read the ROM on the fly and try to “do the intended thing” using platform native APIs), bytecode translation (you convert the ROM into platform native code), hardware emulation (you simulate the original chips directly, and the ROMs “just work”), and more. In many cases all those techniques are used together for different parts of the system (such as emulating a CPU vs a GPU). Depending on what the issue is, how well the hardware is documented (you may even hit an undocumented hardware bug!), and how difficult it is to create a general-purpose fix for your particular approach to emulation, or how computational expensive it is to emulate correct behavior, you may choose to add a workaround.
Some emulation projects put more emphasis on 100% correct emulation than others. Console emulators tend to be biased towards performance.