This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
wheremyfoodat, the author of Panda3DS
#1
DS 
How old are you, and are you working as a programmer in real life? Studies? 
Maybe you can also describe what the dev team looks like at the moment, members, testers, important previous contributors etc.
wheremyfoodat: Hey! So I’m a 20-year-old university student from Greece studying electrical and computer engineering. I haven’t actually worked as a programmer professionally before, surprisingly my IRL “occupation” is occasionally doing locksmith work with one of my family members. I’d like to work as a programmer sometime, but actually getting hired as an undergrad student and being able to balance work and studies is a bit too much.

At the moment the active dev team is fairly small, as other team members are busy with other projects and/or real life, though there’s a lot of important recurring contributors to talk about. In no particular order, going by their github usernames:

@fleroviux, @skylersaleh: Helped a lot with getting more complex graphics to render early on when the emulator had just been open sourced. Implemented texture environment emulation and fragment lighting respectively, among other stuff, as well as providing other graphics-related feedback

@OFFTKP (Or Paris as he’s called),: Did a ton of GPU-related work recently, such as getting lighting working correctly on most games, adding fog rendering, implementing an async shader compile backend (not yet merged) & more. Put in a lot of effort in other places, such as adding the cheats menu to the Qt frontend, starting off the Android porting process (In fact, we originally got the emu working on Android together under his own multi-system emulator frontend, Hydra), improved the emulator’s input code to make it possible to do things like configurable keybinds later, added support for parsing and dumping the filesystems of games, and more.

@Wunkolo: Worked on quite a lot of stuff, from starting work on a Vulkan backend, improving shader emulation & helping with shader emulation on arm64 devices, maintenance work, implementing some filesystem stuff, et al

@raphaelthegreat: Also helped a lot with GPU work early on, and got most of a Vulkan backend working (before it was accidentally deleted off of Github, though thankfully there’s still a backup of it on Discord)

@GabrielBRDeveloper: Did an enormous amount of work on the Android port. He almost single-handedly made the frontend & UX good.

@noumidev: Implemented one of the most complicated 3DS OS features, CROs, which are sort of like the 3DS equivalent of DLL files. Also has a decent amount of work waiting to be merged, including an implementation of the Y2R module, which handles decoding & playing movies (Often called FMVs).

@PSI-Rockin: Helped with fixing CROs, did some of the initial work on audio emulation, and has an ongoing PR that fixes the emulator’s memory subsystem, making a lot more games work and opening up new possibilities for the future.

@jonian: Made the Panda3DS libretro core and is currently making the Panda3DS desktop UI a lot better than it is.

@marysaka: Helped with 3DS kernel emulation & implemented initial cartridge decryption support.

@SamoZ256: Is currently making a Metal renderer for Apple devices, and has an initial implementation that can play a lot of games already.

@nadiaholmquist: Implemented the emulator’s initial joypad support & helps a lot with build system stuff,

@LiquidFenrir: Added support for loading homebrew in 3dsx format.

Can you name a few emulators that inspired you to enter an emulation development journey?
wheremyfoodat: I was a fan of a lot of emulators before I got into emulator development (around 2019). Some major inspirations before doing emudev would be Dolphin, PPSSPP, Citra, PCSX2, DraStic, ePSXe (Duckstation didn’t exist yet) and VisualBoyAdvance (Funnily I hadn’t discovered mGBA or even VBA-M yet).

Throughout my emudev journey I discovered even more emulators that inspired me. Off the top of my head, and in no particular order, I’d like to show appreciation for the following:

All of the no$ emulators. The fact a single person was able to emulate so many insanely complicated systems entirely in x86 assembly is nothing short of impressive and makes me itch to reach that skill level at some point in my life.

NanoBoyAdvance: Seeing it become better and more accurate as time passed on the emudev discord server was quite exciting, and the amount of testing and effort that went into it is honestly kind of insane.

Duckstation: Similarly to NBA, I also got to witness its development little by little on the emudev server and was stunned at how fast it evolved.

SkyEmu: A feature-filled multi-system emulator that runs on everything makes me quite jealous >_<. Similarly to the above two, I also got to saw it being built in real time.

PCSX-Redux: Impressed me so much that I decided to work on it too, learning a lot of new things in the process and being pretty critical to me becoming a better programmer.

All of the emulators listed on the Panda3DS readme (MelonDS, shadPS4, Dust, and so on)

Which was the first project of yours in terms of writing an emulator?
wheremyfoodat: I actually started off by writing a Gameboy emulator around 2019, following Imran Nazar’s guide (https://imrannazar.com/series/gameboy-em...script/cpu). Sadly this attempt at making an emulator didn’t quite go super well, though after hanging out on the emudev server I did manage to get better with time.

When did you start working on Panda3DS?
wheremyfoodat: I first made the empty (private) git repo for it on September 2022, around a month before starting my first year at university.

Do you enjoy working on Panda3DS? What are your goals and plans for the project? Maybe you can give us a rough percentage of completion according to your standards?
wheremyfoodat: Working on it can be both pretty fun, but also fairly stressful and daunting at times. Personally I’ll be pretty happy with it when I am able to play most of my favourite games on it without too many hiccups. That doesn’t currently feel all that distant, and I can already enjoy a lot of them, though the road to achieving this goal is paved with quite a few challenges (Putting the finishing touches in HLE audio emulation, fixing the emulator’s texture cache which causes most of the remaining graphics bugs, fixing some OS emulation inaccuracies preventing certain games from booting, and so on)

Which are the biggest challenges in the development for all those host systems (android/pc/mac etc)?
wheremyfoodat: For Windows/Linux/MacOS, there were not many OS-specific woes. Most of the pain was in actually making a 3DS emulator, rather than platform-specific problems, though some of those also existed (Eg having to write per-platform code for some things like 3DS filesystem emulation, working around driver bugs in Apple’s M1 GPU drivers, setting up & maintaining builds for all 3 OSs, trouble getting some parts like the UI working on all 3, and so on)

Android, on the other hand, is a whole other beast. For one, programming on Android can be an absolutely miserable experience, especially when it comes to things like handling files, though most of that suffering was handled by Paris and Gabriel. Then you have other “fun” oddities, such as desktop OpenGL and mobile OpenGL (OpenGL ES) being really different in some aspects, so the Panda3DS GPU code needed a lot of changes just to (barely) run on Android.

And even though we did get it running after a lot of effort, the pain wasn’t close to being over. Despite it running pretty well on the Android Studio phone simulator, running it on a Pixel 6, a pretty good phone, gave us ~4 fps, and even less on my own phone. During a conversation with Gabriel, I got the idea of testing the emulator with rendering disabled, and, to my surprise it ran well above fullspeed like that. At that moment I realized that the way Panda3DS’ GPU code needed a massive rewrite if it were to be able to run on the pathetic (by PC standards) CPUs & GPUs in most mobile phones. Some of the things it did, like emulating 3DS shaders on the CPU, running gigantic “ubershaders” for every rendered pixel, not using indexed rendering, etc, would never fly on any 2024 mobile chip.

So, I set out to amend all of that. I started a fairly massive GPU emulation rewrite which lasted throughout most of the summer and fall. I only really “finished” and merged this rewrite 2 days ago (19/10/2024), and it completely changed how the emulator performed on Android devices.

I was absolutely ecstatic when I saw the performance boost from the rewrite. When I saw that the same Pixel 6 that could barely get ~4 fps could now run games at above fullspeed, I instantly had to tell everyone (Relevant Twitter post: https://x.com/Panda3DS_emu/status/1842999853930139678). And this is how I ended up finally shipping Android builds the day after the GPU rewrite was finalized, ie 20/10/2024.

Why panda? What’s the story behind this name?
wheremyfoodat: A lot of my friends and I are totally obsessed with red pandas. So of course, I had to set out and spread the gospel about them in order to hire new members to our cult. Or uhhh, friend group, I mean.

Let’s say Panda3DS gets perfect tomorrow, what’s next? Will you consider emulating another system in the future?
wheremyfoodat: Definitely, emulation is really fun, though I’d probably opt to do something out of the public eye or potentially work on an existing emulator. There’s a lot of systems I’d like to play with emulating but haven’t yet. The Wii U, PSP, Vita, and more…

For anyone that enjoys this emulator and wants to help out, please note the ways we can support the project, be it contribution with testing/developing or otherwise.
wheremyfoodat: Supportive words for one mean a lot to me and devs in general, we could all totally use some of that at times. Of course, code contributions are really welcome! Making a 3DS emulator involves a lot of work, and it’s good to have more hands on board! Additionally, testing games people haven’t tested and providing logs is really helpful for finding and solving bugs. Finally, there’s also donation links on the website if anybody wants to help me get me some coffee and make it through the day.

https://panda3ds.com/

Thank you! emunewz.net wishes you the best for your emu projects and even better for your personal life!
wheremyfoodat: <3
Reply


Messages In This Thread
wheremyfoodat, the author of Panda3DS - by nickblame - 01-08-2025, 08:42 PM

Forum Jump:


Users browsing this thread: 2 Guest(s)