Saturday, August 31, 2013


In year 2002 I started to work on Glide64 – a graphics plugin for Nuntendo 64 emulators. 10 years I was spending most of my free time on that hobby. The goal was ambitious: to make the best graphics plugin with hardware rendering. Today several top N64 emulators use Glide64-based builds as their main graphics plugin, so the goal seems to be achieved. For those 10 years I fed up with emulation development. In 2012 I stopped to work on the project and stopped to deal with emulators. Only work, family and native applications.


After one year of such simple life I found that something is missing. I've been working on the same projects using the same tools. No need to learn new stuff. When I participated in the emu project, I had to learn a lot of stuff, which did not intersect with my main work at that moment. Later situation changed and some of that “redundant” knowledge became indispensable. Permanent learning is essential. But learning “in advance” is boring, and I'm lazy. So, I had to find interesting topic to learn and motivation to work on it.


From the other side, while I was happy to forget about debugging all these strange graphics glitches and digging in old manuals, I felt regret that some my ideas left unimplemented. Some ideas were impossible to implement with Glide API, for others I just did not find time.


Thus some day in 2013 I decided to return to N64 emulation and start new graphics plugin project. Due to severe lack of spare time, project's goals are not ambitious:

·         implement my old ideas

·         support features and games, which I failed to implement with Glide64

·         make Linux port

·         make Android port

So, main focus is on new stuff. Problems which are already solved in Glide64 (e.g. hi-res textures support) have low priority. All end-user features and demands like GUI, stability, speed, compatibility also have low priority. Such minimalist and selfish approach makes development much easier.


Next topics describe milestone features implemented in the project.


  1. Awesome! I agree, learning new things outside of your day job can have a huge impact on professional development and happiness.

    Questions -
    - Are you starting from a blank canvas, or are you building off of Glide64 (10th anniversary edition)?
    - Is there a particular emu plugin API you are developing against (e.g. Mupen64Plus, RetroArch, Project64, etc.)?

    Comments -
    - Android porting will be trivial if you use only the OpenGL ES2 api (you probably already know that).
    - In case you missed it, an OpenGL ES2 port of Glide64 10th anniversary was made earlier this year for the Mupen64Plus Android Edition (AE) project. In case you find it useful, https://github.com/paulscode/mupen64plus-ae

    1. Answers:
      -My work is made on top of existing OpenGL plugin. Glide64 is not suitable for my goals.
      -The plugin currently supports only ZilmarGFX 1.3 specification. I think, that Mupen64Plus support will be necessary for ports.

      Thanks for Mupen64Plus Android Edition link. I missed it :)

  2. Question:
    Are most of the major problems with N64 emulation contained within the arena of the graphics plugins, or are they also majorly related to the emulator cores? In other words, assuming GLideN64 ends up as a nearly perfect graphics plugin, are there still major bugs in the cores that will need fixing for near-perfect emulation?

  3. You may answer on this question yourself. Run games with Angrylion's software LLE graphics plugin. It produces pixel-accurate image. You will see, how many games are unplayable due to core issues.