Vircon32 game console
English Spanish


Home page What is Vircon32? ▶ F.A.Q. Links


Emulator Games Test ROMs Development tools Libraries


Specification Quick guides Tutorials C API reference


Physical versions Art
Vircon32: F.A.Q.

This section lists questions that people commonly ask about Vircon32 in general. Here you can find them grouped into categories and with all the answers.

General questions

Did you do all of this on your own?

Yes. I designed the system, coded the emulator and development tools, wrote documentation, made test programs and games, created this website, etc. I did have bits of help here and there. A colleague helped with 3D printing. I hired people at Fiverr to make some game assets. And some people in the community also helped with CMake scripts and several ideas and testing.

Why are you not selling any of your work on this?

I do this because I love it, and don't expect to make any money. What I want is to have as many people as possible playing the console and creating games for it. Charging for anything, or not having open design and source code would mean trying Vircon32 is less accessible. I could consider opening a patreon if that gave me the chance to create Vircon32 content full time, but that would only make sense if there a large enough userbase.

Will you abandon the project if the console gets no userbase?

No. I would like the project to grow a community, but I am ultimately doing this for myself. Still, I will also keep making the project as accessible as I can for other people, by writing tutorials, making examples, etc.

Do you intend to sell physical versions of the console and games?

No, I design and build physical versions for fun, but do not expect to make any commercial release. It would be too much work and prices would have to be very expensive to be profitable. Also I don't think enough people would be interested.

Will you be making an FPGA version of the console?

I would like to, but this would require extensive knowledge in FPGA design and VHDL or Verilog, which I don't have. Still, since the console is fully documented, anyone could do it.

Emulator and implementation

Will your emulator support savestates or graphic filters?

No. My emulator is the "official implementation" of the console. It is meant to work just like the console setup would, without any extra features or additional player advantages. Of course anyone could fork my emulator to include these features, or make their own emulators as they like.

Can I play Vircon32 on my phone or browser?

Not so far. I am a PC desktop developer, so I don't have the knowledge to port the emulator to those systems. Still, there are a couple of options. The current C++ emulator could maybe be compiled for web using Emscripten. Also, anyone can make their own emulator for these systems if they wish, since everything is open source and fully documented.

Will you add <X feature> to the console?

No. Vircon32 is meant to be a standardized system aiming for maximum compatibility of its games in any compliant implementation. As such, it is a closed system with a same, single version for everybody. No newer versions or future changes will be released unless major design flaws are found.

Console specs and capabilities

So, is Vircon32 like a PSX but with no 3D?

Mostly. That would be a good summary, but of course there are many other (less relevant) differences. This is because Vircon32 does not try to be a clone of the PSX or any other console, and the way it works is different. Still, if you think of 2D PSX-era games, Vircon32 should be able to replicate most of them.

Can it run DOOM?

The way Vircon32 works is not well suited to render the screen the way DOOM does. Maybe it could run a very compromised version (with low resolution and frames per second). Still, the console has already shown first person graphics using raycasting like in Wolfenstein 3D.

Isn't CPU speed a bit slow?

Yes: machines like PSX ran at 30MHz. But Vircon32's CPU is more powerful than it may seem, since it runs 1 instruction per cycle and has floating point support. Still, I wanted to keep the requirements to run Vircon32 low enough that smartphones or Raspberries are able to run Vircon32.

Why so much RAM?

Vircon32 RAM is not as granular as in other systems: even if you work with a single byte you will need to use 32 bits. Since memory is a bit less efficient, this is compensated with a bigger amount. Still, any current system has lots of RAM in comparison. 16 MB is not too much to ask for, and it should be plenty for mostly any type of game.

Can Vircon32 support online multiplayer?

This console itself can't: it is a closed system and will not support any external connectivity or expansion modules. Still, there could be implementations that support connecting different machines via additional software layers. Something like this was done, for instance, on the Super Nintendo emulator Kaillera.

Technical and development stuff

Is there a way to change screen resolution or video mode?

No. The environment is meant to be the same for everybody, for better compatibility and to make things as simple as possible. Still you can use some tricks such as drawing using a scale factor of 2 to fake a 320x180 screen.

Is there a way to access the video memory/audio memory?

No. Graphics and sound chips are very simple, and don't provide direct access to pixels and sound samples. You can only use their standard functions to produce images and sound. In addition to this, Vircon32 graphics and sound are modeled after current video and audio libraries such as OpenGL and OpenAL. These are models thought for working with higher level operations, instead of using a low level approach like accessing video/audio memory directly.

Why does your compiler use a variant of C?

There are several reasons. First, the architecture of this console has some quirks that make some standard features of C difficult or inefficient to implement. For this same reason the existent compiler had to be hand-crafted. I'm not a compiler expert, so my limitations also had an impact on the language. Something else to keep in mind is that, being a console, the language standard library needs to be adapted. Some features of the standard C library (for instance: file I/O) make no sense in the console, while other parts (such as reading gamepad inputs) had to be added.

Will your compiler support standard C language?

No for the same reasons given in the previous answer I will not be able to make a compiler that supports standard C. There could also be the option to automate the process using tools like LLVM. Unfortunately, writing an LLVM backend for this custom CPU seems way too complex to be feasible.

Will you support other languages aside from C and assembly?

For now I don't intend to. Still, this console ultimately runs programs as mere CPU instructions, so compilers or interpreters for mostly any language could be made if anyone wants to write them. Still, keep in mind that interpreted languages will probably have poor performance in this console. They would also be less useful compared to other platforms, since there is no convenient way to write or edit text from within the console.