JayFoxRox interview by Rayi19

I was recently interviewed by YouTube user @Rayi19.

This interview started in December 2016 and continued through January 2017 for follow-up questions.
Warning: As I don’t speak spanish myself I can’t validate the credibility of the translation.

@wwylele also did an interview before which probably deserves its own topic(?).
I think it’s a good idea to speak to people from other communities to bridge the gap and avoid decentralization. Centralization is an important aspect for open-source and avoids misconceptions. If people don’t realize that Citra is being worked on by average joes like them it’s easy to get a wrong picture or to confuse personal opinions with a hidden agenda.

I’m aware that I might come off as negative during the interview, but I’m just being straight and honest in most cases. So don’t be scared away if I say that “I hate” or “don’t care” about things you like - it’s not criticism or even an attack on a personal level.

Some questions were kind of “odd” because they were about technical portions of the project when the rest of the questions were just scratching the surface. Feel free to skip the more technical answers. I might put some of these in laymans terms.
Please tell me if I got anything wrong. I’m not an expert about some of those things and probably should have made that more clear.

Follow-up questions to my answers or about clarifications are welcome.

You can find the video here (Spanish):

Also, here is the text version which includes some of the original english questions / responses (re-formated for readability). Any changes and notes by me will be in cursive.


Primera parte: ¿Quién és JayFoxRox?:

1. First of all whats ur role with citra. r u “hacker” “modifier” “builder”? how do u introduce urself?

A contributor. And troll. Troll mostly.
My contributions mainly consist of code, documentation, support (helping new users to get started), moderating the official channels and organizing stuff so contributing is (hopefully) made easier for others.

2. When did u meet project citra and start “modifying”?

pcmaker was helping testing the Xbox emulator I’ve been helping with ( xqemu.com ) and Citra had an issue similar to those experienced in xqemu earlier, so he asked me for help (Around February this year (2016)). I just stuck around after fixing that issue.

3. When u r “modifing” “improving” a build, whats ur main focus, speed or stability both or other things?

Accuracy (with preservation in mind).
Often accuracy means increasing compatibility but reducing performance.
What users should realize is that it’s very hard to improve compatibility AFTER performance. So the goal is achieving high accuracy / compatibility now, then improve performance in a couple of years.
We have this situation with the Xbox where most consoles are already broken and it’s getting incredibly hard to find working Xbox’es to play some of the consoles exclusives and to capture the essence of this 15 year old gem.
To preserve our digital heritage it’s important to me that the emulator stays maintainable and will accurately represent the original system in the next 20 or even hundreds of years.
Some of your viewers might also know the situation from N64 where we have a ton of “good” emulators which still don’t play all games perfectly without changing a ton of hacks for each game.
Only very recently there has been work towards good N64 emulation (which means you are able to run any game without changing weird hacks, just like you did on a real system).

4. What’s the game u played most on citra?

This also came up in a talk with a Dolphin developer yesterday. What users don’t realize is that development of these emulators takes a very long time. For me it can easily be up to 10 hours per day on weekend.
Some of the developers never even played a single game on their emulator (!).
Similar for me: Despite my involvement since February, I’ve only started playing the first game in Citra like… 4 weeks ago?
I’ve been playing Zelda: OoT 3DS and I’m at the water temple now. I only play an couple of hours per week so progress is kind of slow. I’ve also started playing Kirby Triple Deluxe and intend to play most Mario games once Citra has improved some more.

Segunda parte: Pokémon:

5. Pokemon sun moon was an extra motivation to citra dev to improve citra?

No, absolutely not. I hate Pokemon with a passion. I never enjoyed any of the Pokemon games (except for Minigames in Stadium and Snap on N64).
I even think it’s a huge demotivator as Pokemon fans are often rude or don’t understand the purpose and value in emulation.
They often see Citra as a tool for piracy and not as something which preserves the system in the future. There are other benefits too (such as giving disabled persons a chance to play these games for the very first time).

6. Why is pokemon x y dnt playable yet and pokemon S/M that is newer yes? Its the same qüestion 4 games like monster hunter etc…

Because they work differently on a technical level. We are creating a 3DS emulator, not a Pokemon (Game) player. We care about recreating different technical aspects of the hardware. Either we provide a feature used by a game or we don’t.
Wether the game uses a certain feature is beyond our control. You’d have to ask the developers why they switch technologies between games.

7. Thanks 4 fix bugs in ORAS a lot of people was congratulated with it, pokemon X Y will be the next “pokemon” focus to reach the experience without bugs?

I personally don’t care if Pokemon (or any other game) works. I just try to recreate the hardware as accurate as possible.
A side-effect of that will be better support for games. - We often don’t know which games will be fixed by a patch. A single feature sometimes fixes zero games, sometimes hundreds.

Tercera Parte: Futuro del Citra:

8. With citra, when better is the pc best fps u can get playing, r u working to make citra works better in worse devices?

No. It will be a sideeffect of improving the emulator code and optimizing it. However I’m not actively working in that direction at the moment.

9. Did citra devs try to make a citra to 32 bits and ios or android?

Yes but not the way people think we do.
What I do work on is to improve the portability of the emulator. In my opinion the emulator should “work” (= slow as hell but otherwise fine) on most platforms (such as your mobile phone, your ancient Windows 32-Bit machine etc.).
However, we will never officially support 32-Bit (you won’t get assistence running it and we won’t provide precompiled versions for it). Most people have a 64-Bit system but running a shitty 32-Bit OS on it (so it’s usually a software issue).
Actual 32-Bit systems are very rare and we are talking 10+ year old PCs here which would be far too slow anyway.
There will probably be Android support in the future, but it’s not a focus and it won’t be usable for years to come as it would be too slow. Such tasks are better done in a couple of years once we have made emulation more stable and accurate.

10. When do u believe we’ll have the perfect citra?

Never, there is always room for improvement. I’m at an event (33C3 in Hamburg, Germany) right now and talked to a couple of Dolphin devs. Even they still struggled with a lot of very basic problems / ugliness despite dolphin being considered close-to-perfect by most users.
Developers not only care about the usability of the emulator from a user perspective, but also how it looks behind the facade.

11.Who is citrabot, its a programm who order it to release citra builds.

Source code for the bot (bleeding-edge) can be found here: https://github.com/citra-emu/bleeding-edge-bot .
(I’m not sure if we use the same bot for bleeding-edge and nightly).

12. What process follow a citra build since its start to made or compile until citrabot release it.

The code linked above is ran roughly once per day on one of our servers. It will download the latest Citra source code (text files which describe how Citra works) from github, make changes for bleeding-edge and re-upload it to github. github sees these changes and automaticly uploads the code to travis and appveyor which will then compile (make an “exe” file etc.) the source code.
(nightly builds would be similar but the code wouldn’t be modified before re-uploading it)

We don’t have a particular workflow for creating new builds. They just happen along the way.
So we don’t say: “let’s create bleeding-edge-146”.
Instead we just add more and more features to Citra source code and the bot will create a “snapshot” (copying the current state of the code) for nightly builds after every change.
For bleeding edge we take the Citra source code and add experimental features which are still being reviewed (which may or may not work). However, we only tell the bot which features to pick and it’s up to the bot to create a snapshot and mix all features for the final build. If that fails we don’t care.

Developers rarely use nightly or bleeding-edge builds either. They usually compile directly from the Citra source code (Hence, having a custom build, similar to nightly builds).
They don’t even know which official build is the latest available online and they usually don’t care either.

Última parte: Soporte al proyecto.

13. Whats the main obstacle to reach the perfect citra?

Unofficial builds and a broken community which doesn’t understand how Open-Source works.
Also piracy and illegal actions by our users could pose a risk to the emulation community as a whole.

14. R u looking 4 new citra devs, that could help the project o citra dev its a closed team?

It’s open-source software.
In short this means: The source-code (which will be “compiled” into the exe for Windows) is public, and anybody can help to improve Citra. I’m a past contributor but that doesn’t mean my code is treated any different than those by others. Everybody is welcome to submit patches or help us with the code.
As our code is public this also means it can be copied by others for similar projects. However, we’d like to get these improvements back in Citra. So we depend on people respecting the GPL (the license we use).
Some people such as GDMK (“Chinese Builds”) or drwhojan have violated those licenses often so their changes can not be moved back to Citra (also their changes sucked, but the point still stands).
Also, I’ve been known for aggressively pushing in a direction to make the community more open.
I’m against marking “Developers” on the forums or Discord because every user is as much as a Citra developer as me, wwylele or any other of the past contributors. If you have changes you can propose them and other developers (wether they have a history with the project or not) will look over it.
Good code gets accepted, bad code will be rejected.

15. I found this channel “Citra official YT channel” but seems nobody driving it.

It’s the official channel we use to host videos for blog posts etc.
Creating videos or blog posts is a time consuming task though, so we rarely create anything for those.
(Also most information is quickly outdated as Citra is progressing rapidly)
Channel: https://www.youtube.com/channel/UC_dcdgzuapBtAY4ol3x-90Q

16. I believe that gdmk has popularity cause it compiles ur work and makes a “fusion” of all things in one build, why citra dev dnt do it with a oficial version.

That is precisely what bleeding-edge is.

17. Could some “devs” work together?

Yes. And it’s an important part of the development process.
Some people document how the 3DS works (Usually here: https://www.3dbrew.org/wiki/Main_Page ), someone else usually implements it. Also when first versions of the code are uploaded, people will start reviewing and criticizing it.
The entire review process (which usually takes longer than implementing the feature) is a collaborative effort by a handful of people (person who created the code, developers who reviews code, users testing and giving feedback, person who finally accepts code into Citra).
We also have an active community on Discord, IRC and the forums where you can ask for help with development / implementation of certain features. There is also always someone around who can explain how certain parts of the 3DS work or how you could find out yourself.

18. To conclude.What could do the people to help citra project? How can the people help this project?

Get involved. Learn how to code or be nice on the forums and Discord.
Use the official channels (IRC, Discord, Forums) to communicate to centralize the project so it’s easier for people to learn from the community.
Even if you can’t code you can help us to moderate the forums etc. by reporting posts which violates our rules or calling people out who violate our license.

Muchísimas gracias a JayFoxRox por atenderme y accede a la entrevista para el canal! Apoyar el vídeo si quereis más entrevistas!
Thanks a lot to JayFoxRox 4 accept the interview! Leave a like if u want more citra dev interviews.


Common theme throughout: Developers don’t really care about using the emulator. (I know for a fact that’s not true for all maintainers though.) I’m the same way, and while that’s a problem in a sense (It’s hard to make a good product if you don’t care about the product.) I think that you can more accurately picture it as the developers being their own audience: They’re in the business of creating an accurate emulator, while most users are actually looking for something else (something to play games with.)

Sometimes, in some scenes you seem to also get people in the later camp also writing the emulators. :slight_smile:

No real point here, just thought it was an interesting thing to point out.

1 Like