JVIC: New web-based Commodore VIC 20 emulator

https://vic20.games/#/basic/24k

Comments

davepdotorgJan 24, 2026, 4:36 PM
Guess it’s time to finally type this out again: https://www.davep.org/misc/grid-bike/
EggpantsJan 24, 2026, 5:27 PM
Young me remembers fondly poking and peeking system memory locations to see what happens. The manual, if I remember right, had a table of memory locations to system settings. Things like font and background colors.

I made a “punch out like” boxing game in basic where the background color blocks was the opponent and the font lines was your character via poking memory locations.

It was slow but I was just a kid at the time. It definitely told me what I wanted to do for a living at an early age.

lance_ewingJan 24, 2026, 5:37 PM
Exactly the same story with me. I got my VIC 20 when I was about 10, in the mid 80s, and that is how I learnt how to program and how I knew what I wanted to do as a career.
technothrasherJan 24, 2026, 6:22 PM
Add me to that list, though my Commodore machine was a PET 2000. In fact, I was young enough at first that all I could do was remove lines from other people's basic programs and see what happened. It all grew from there.
lance_ewingJan 24, 2026, 6:37 PM
I probably started the same way. I remember spending forever typing in BASIC games from magazines and books from the local library. They never worked straight off, so a bit of "debugging" was usually required, i.e. spot the typos.
mixmastamykJan 24, 2026, 6:25 PM
Interesting, did similar. But there was no information available to me about working on them for a living in the early 80s. Only the movie Wargames, which while cool didn’t seem like a realistic path, nor did it pay. Didn’t figure it out until a full decade later.
lance_ewingJan 24, 2026, 6:34 PM
Maybe at 10 years old, I wasn't thinking much about working, but the VIC 20 started me on the programming path, with an IBM PC being our next home computer a few years later.
EggpantsJan 24, 2026, 6:37 PM
Definitely helped that I just missed the punch card era. I know young me would have dropped my stack of cards many times…
pipo234Jan 24, 2026, 4:55 PM
Nice to have this, though I personally find Matt Godbolt's web-based BBC emulator more exciting (and useful)

https://bbc.xania.org/

lance_ewingJan 24, 2026, 5:41 PM
Yeah, that one is a great online emulator. I've played around a bit with that one. I have fond memories of the BBC Micro from my school days, especially the game Castle Quest.

How does it handle being run on a mobile phone? My main focus with JVIC was to try making it as easy as possible to use on mobile devices, although I'll admit that my testing has only been on Android so far. I haven't tried it on iOS yet.

pipo234Jan 24, 2026, 6:56 PM
Castle Quest - an impossibly hard game (to modern standards). I spent so many hours only to die and start al over once more. Great fun!

My Android phone is way too old and slow to load jvic, unfortunately. Let alone jsbeeb.

But works great on my 2013 laptop when plugged into a wall socket!

lance_ewingJan 24, 2026, 7:19 PM
Yeah, it was very difficult, but a lot of fun. We used to book the school library's BBC Micro out after school and spend an hour or two each day trying to beat it. I still remember working out how to use the torches to guide the little men to walk into the room with the spider, and how to escape from the prison cell. - I'd love to try porting this game to the VIC 20 at some point. Same cpu, but the VIC's graphics are more limited. Still, with some of the tricks that people use in some of the games and demos for the VIC, maybe something similar could be achieved. Pitfall for the VIC 20 is really impressive, graphically, given its on the VIC 20:

https://vic20.games/#/pitfall

pipo234Jan 25, 2026, 9:35 AM
Oh yeah pitfall on c64. And loderunner on Spectrum, those were the days... And: Impossible Mission
greenbitJan 25, 2026, 12:42 PM
How about Realm of Impossibility?

Every time someone mentions 'ROI' at work, for a split second I'm back at the old 64, not doing my statistics homework.

lance_ewingJan 24, 2026, 11:55 AM
The code and instructions on how to use it are here: https://github.com/lanceewing/jvic
harelJan 24, 2026, 11:02 PM
Like many others who commented, this was my first computer. I received it as a hand-me-down from a french aunt. Manuals were all in French. The C64 just came out and was all the rage. Couldn't find games to save my life. All I had left was to learn how to program. Still doing that 40 years later.
aenisJan 24, 2026, 7:15 PM
Nostalgia overload.

I got a Commodore/PLUS 4 - With almost no games (just Saboteur, Jet Set Willy and Booty), and my father taught me how to program in Basic 3.5 - and before I was 10 i was making trainers with 7501 assembly learned almost by trial and error. I knew back then what I wanted to do in life and followed that path to the fullest extent.

B1FIDOJan 24, 2026, 4:44 PM

  THI5 1Z A WAY-K00L BBOARDZ D00DZ!!1!

  B1FF
    ...B1FF ... B1FF ?!

   ... ... B1FF B1FF B1FF BB0ARDZ!1

   B1FF ... ... ... B1FF!

  D0EZ THI5 MEAN MY BR0THER CAN KEEP HIZ OWN Vic-20 NOW??!?!????!!!


   ... BIFF B1FF B1FF D00DZ!!1!
bitwizeJan 24, 2026, 10:28 PM
If I were dang or tomhow, I'd give this a pass just this once for the USENET nostalgia. What good is Hackernews if it's all CxO-wannabe bait and not stuff that resonates with actual hackers?
TYPE_FASTERJan 25, 2026, 1:43 AM
That brings back so many memories! The Vic was our first computer. 45ish years later, here I am, still writing code. Thanks for making that and posting it here.
p0w3n3dJan 24, 2026, 6:53 PM
So everything is web-based today I guess? But why? Is this about programming language? Packaging?
pjmlpJan 25, 2026, 10:04 AM
Delivery, and not wanting to target each platform individually.

The Chrome OS Platform (given the browser engines left) is the most successful WORA since UNCOL was introduced as idea in 1958.

I would rather that we kept Web for documents and everything else native with networking protocols.

This isn't new however, Applets, ActiveX, Silverlight, Flash, NaCL and PNaCL, asm.js, plugins,...

Running LibGDX on the browser has a certain Applets revenge feeling to it.

pjmlpJan 24, 2026, 6:11 PM
In LibGDX, that is great!
lance_ewingJan 24, 2026, 6:26 PM
Yeah, libGDX is my go to now for web-based emulators and interpreters. JVIC is the third one I've written now. The other two are JOric and AGILE:

https://oric.games/

https://agi.sierra.games/

They all use the GWT html target. I realise that there is now also a TeaVM target. I might try converting JVIC to use TeaVM at some point.

pjmlpJan 24, 2026, 6:45 PM
I still remember when it used to be all the rage before Unity and Unreal took off, especially in Android indie games.
lance_ewingJan 24, 2026, 6:50 PM
JVIC (the libGDX version of JVIC) actually started out as mainly an Android project 10 years ago, but I didn't release it at that time. It was only a few months ago that I decided to add the html platform as a target, tidied it up in general, and thought it was time to release it. Given that this html version can be installed as an app on android phones, I'm not sure I need the android target anymore :D. It avoids the whole play store / app store process.
bitwizeJan 24, 2026, 10:30 PM
Ah, the VIC-20, my actual first computer. By making the PETSCII birds fly how I chose, I learned the elements of composing and modifying software.

You can play with an emulation of my other early computer, the TI-99/4A, at https://js99er.net

empressplayJan 24, 2026, 3:58 PM
Neat, but crashed when I tried to load Frogger
lance_ewingJan 24, 2026, 5:28 PM
In what way did it crash? What browser and device did you try running it on? - There might be an issue where its possible to start typing before the program load sequence has finished, e.g. where it has queued a "RUN" command for when the disk load has finished, but if you start typing before that, it might interfere with that RUN. I have an idea on how to fix that, if this is the issue. Just need to ignore key presses until all program load commands have been processed.
drzaiusx11Jan 24, 2026, 5:08 PM
Sounds authentic
lance_ewingJan 24, 2026, 6:45 PM
Do you mean specifically the Frogger game? Or in general? - If you mean in general, it hopefully does sound very close to the original VIC 20. I actually reversed engineered the VIC chip schematic from photos of the silicon chip, so the sound emulation is based on what I worked out from the reversed engineered schematic. Some of my discussion on that is covered here:

https://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.p...

drzaiusx11Jan 24, 2026, 7:30 PM
That's awesome! I had access to an electron microscope at my last makespace and always wanted to decap a simple chip for reverse engineering. A close friend of mine did that with a SID and recreated it in verilog with good results, which I always found fascinating. Great work on the VIC20 side! And yeah, my VIC20 was never the most stable machine, crashing frequently but I also had a bunch of janky expansion boards attached so ymmv...
lance_ewingJan 24, 2026, 8:43 PM
I'm also using the knowledge gained from reverse engineering the VIC chip to contribute to a soon to be released VIC chip replacement device called the PIVIC, powered internally by a Pico 2 chip.
drzaiusx11Jan 25, 2026, 3:13 AM
Sounds cool! Similar to the SID project, assuming you're also aiming for pin compatibility.

I'm curious why you choose the pico platform over something like TinyFPGA which could be near 100% gate level compatible over a pico with software emulation. I bet the < $3 ICE40 has enough gates?

I haven't really looked at the pico2 yet, maybe it's one of those new hybrid arm+fpga designs and you'd have the best of both worlds?

EDIT: sadly no CPLD/FPGA on the pico2 front, at least according to [1]. Pico2 does add a new RISC-5 core (as a coprocessor? I only skimmed...) So I guess you'd have to do a bunch of timer interrupts to keep things in your emulator clock aligned if you're going pin compatible.

1. https://pip-assets.raspberrypi.com/categories/1214-rp2350/do...

lance_ewingJan 25, 2026, 9:50 AM
For a couple of reasons: The first is that there are already a couple of projects using FPGA to create a VIC chip replacement, e.g. Victor by Jon Brawn, and FATVIC by Thomas Lövskog. The main trigger to try a Pico 2 version was when I saw sodiumlightbaby's OCULA project for the Oric. The ULA in the Oric is the equivalent of the VIC chip in the VIC 20, i.e. the main custom chip. When it dawned on me that he was using the Pico 2 for the OCULA, I thought, "Hey! Why not try the same thing for the VIC chip?". So we've been collabing on it over the past 12 months. I think you're right though, that devices like the Victor that use FPGA will be able to get closer to 100% compatibility. The PIVIC will be an alternative that might not be 100% compatible but is very close and would suffice for most.

Yeah, the PIVIC is pin compatible, and the same size as the original chip, so no overhanging bits. The PCB is as big as the original VIC chip.

waldrewsJan 24, 2026, 2:09 PM
That's one maxed out RAM configuration. Back in my day, we had 4k RAM, about 3500 bytes usable from BASIC, and that was enough, unless you were rich enough to have a 3k memory expansion cartridge. But really, if you need that extra 3k, you're just not writing code efficiently enough, right.
lance_ewingJan 24, 2026, 5:46 PM
Back in the 80s, I was lucky that my father was an electronics design engineer, so he built a 24K expansion cartridge for us. I agree that there were some great games for the unexpanded VIC 20 though, such as Rockman. I loved that game. So many levels for a small game.
drzaiusx11Jan 24, 2026, 7:56 PM
I had a home brewed ram expansion board (still do actually, in a box somewhere...) I powered everything up a couple years ago when my kids found it and asked what the heck it was. Still works
lance_ewingJan 24, 2026, 8:45 PM
My original VIC 20 machine that I had in the 80s still works as well, but a few things have been replaced along the way. I still have the same 24K expansion cart that my Dad built 40 years ago and it also still works.