it's more fun to emulate

image

I decided to open the kega fusion readme today. I know fusion is pretty old but wow, damn, that’s hardcore

In unrelated news I didn’t see this posted anywhere so here you go:

11 Likes

this is part of the reason why Fusion was god-tier for so long i guess

3 Likes

I really miss when emulators were written by benign psychos

it even continued into the DS era when like, nesDS was written by the guy who originally wrote loopyNES for DOS

13 Likes

I don’t like the idea of Steve Snake being portrayed as a “benign psycho”

he was benign psycho on Sega’s payroll

1 Like

beetle in retroarch

duck station

why are the colors different (walls white instead of yellow) and the top and bottom of the picture cut off in duck station

1 Like

the color is because of imperfect MDEC implementation (PlayStation Motion Decoder - MultimediaWiki) and the crop is likely due to some overscan setting mismatch (the left and right don’t line up between your screenshots)

7 Likes

Yeah ZSNES is also written in ~100% assembly language. Back in the 1990s, it was a big advantage because people still used 486s that were barely powerful enough to emulate 16-bit consoles, and C++ compilers didn’t produce extremely optimized code back then.

Plus, understanding assembly is a requirement to program an emulator regardless

11 Likes

When I was getting my cs degree literally 10 years ago, my professor wondered out loud what language they code video games in nowadays, and I’m so retro-pilled that I confidently said assembly with maybe a little C lmao, much to the bewilderment of my classmates

11 Likes

AAA has been 90% C# for at least that long afaik

1 Like

Really? When I was in it–up through 2008–it was C++, and the way Visual Studio had a lock on the whole dev environment, it didn’t look like that was going to change any time soon. I saw C# used for tools by a few hired-by-their-friend-the-unqualified-associate-producer interns and they were horrid things.

… First page of Google hits for “what programming language is used for AAA games” is C++.

3 Likes

I dunno, it looks like Unreal Engine has no built-in support for C#

What is true to my understanding is that games are rarely built 100% in C++ anymore. It’s usually combined with some higher-level language (C# in the Unity world) for things where ease of change is more important than performance

4 Likes

I think C# is used fairly widely these days to the extent that Unity has become a popular engine in the commercial world, but I also don’t know how many truly “AAA” games are made in Unity even now (depending on how narrowly you’re defining “AAA”). Maybe some…but I’ve gotten the impression that many have their own in-house engines (especially since they often want to target a wide range of platforms and have their giant heavyweight game still be really fast on all of them, which can require being kind of perfectionistic about the fussy innards of the graphics and so on). If you want to write a Vulkan backend for your game, for example, the main official Vulkan API is written in C, and I think if you’re going to bother writing code against Vulkan directly, C++ is just the most obvious choice for that part of the codebase, both because you can use typical C APIs directly within C++ and because if you’re bothering with Vulkan you probably want to squeeze every drop of performance you can get out of your graphics. I think things like that just tend to influence the technical decisions made in those areas overall.

I really like C++ also ^^ so of course I think it makes sense to write games in it. :stuck_out_tongue: It can be fun to embed a scripting language interpreter though, depending on the situation. I don’t quite remember which it was off the top of my head, but I once looked through the code of a FOSS music synthesizer VST that had all the DSP and stuff in C++ but used an embedded mruby interpreter for the UI, and I thought that was cool. I’ve played around with that a bit in the context of game engines, but honestly when I decide to use C++ I often finish what I’m working on before I decide that it would be worth it to go to the trouble of writing bindings for an interpreted language, maybe just because they’re not projects on the scale of a AAA engine. I’ve heard of Lua and Python being used for “glue code” in that context.

2 Likes

I stand corrected! I was under the impression it’d gotten so popular in the 360 era that it shimmed out to all the low level shader code but that people didn’t really need to write Cpp anymore since absolutely no one talks about it in my neck of the woods

3 Likes

As you know, even with the C++ today’s games are still often CPU-bound (cough cough Dragon’s Dogma 2)

And one thing I can say from personal experience about mid-level languages like C#/Java is that the more performance you squeeze out of them, the more their elegance and ease-of-coding dries up at the same time. C++ is one of the only languages where most abstractions are zero-cost by design, and in the others you start repeatedly facing the dilemma of whether it’s worth refactoring your code to be less maintainable to get an optimization worth 3% of CPU

8 Likes

10 Likes

MSTC = Never The Same Color

Haskell can have this problem too; maybe in a way it’s just hard to avoid with languages that target that region of the high-performance-to-human-friendly spectrum. They’re like, high-level enough that optimization can be frustratingly opaque and awkward, but performance-oriented enough that you can be easily tempted to optimize. :stuck_out_tongue: Although, I do sometimes think about FFTW, which is distributed as C and Fortran code generated by an OCaml program—that’s always an option. :smile_cat: It doesn’t matter as much if your build process is a little slow, although it is nice if it goes quickly, so maybe those kinds of languages are well-suited to things like compilers and code generation and so on.

2 Likes

There was a Dolphin post about color integration and boy I could not tell the diffference.

I have played FF7 as intended (on a ps1 Japanese mini, over hdmi.)






5 Likes