VIC 20 Elite Preview (30 Dec 2024)
HTML-код
- Опубликовано: 7 фев 2025
- Released on 20 January 2025: • VIC 20 Elite (20 Jan 2...
Download: vic20elite.wor...
Right on, Commander! Over the past two weeks, I’ve been working on a Commodore VIC 20 port of Elite-the legendary open-world space trading, exploration, survival, combat, and you-name-it game. It’s already quite playable and looking mighty fine!
The dashboard dials aren’t implemented yet, so finding the planet and Coriolis station took some effort. But I managed to dock once and even traded some wares for profit 😎
This port relies heavily on Mark Moxon’s digital archaeology project about Elite on various 8-bit platforms. You can check out his work at elite.bbcelite...
The VIC 20 version is based on the Commodore 64 source code. I’m just coding all the VIC 20 specific graphics, controls, and sound routines on top of it.
Of course, the complete enhanced Elite won’t fit within the VIC 20’s limited memory, so some features had to be left out. Following the original 1984-1985 BBC Cassette and Acorn Electron versions, I’ve currently omitted extended planet descriptions, planetary details (craters and meridians, which are also disabled by default on the C-64), and the missions. I’ve also reduced the number of ship blueprints from 33 to 23 by reusing blueprints for similar looking ships while preserving their original behavioral traits.
(For reference, the BBC Cassette and Electron versions only had 12-13 ships, so the VIC 20 version is actually bigger and better! I even managed to keep the suns, though they do slow things down quite a bit.)
A full 32K + 3K RAM expansion is required to run VIC 20 Elite. At this stage, there’s approximately 1K of free memory left-enough to finish the dashboard, which is my next focus.
Elite for the Commodore 64 was written by Ian Bell and David Braben and is copyright D. Braben and I. Bell, 1985. Mark Moxon’s thoroughly documented and analyzed source code is based on the source disks released on Ian Bell’s personal website: www.elitehomepa...
Visit my Eight Bit Shed at eightbi... and bit.ly/eightbi... (Dropbox) for a load of other 8-bit projects. If you like my work and want to help keeping my code machine (brain) running, do feel free to send me a decaf at ko-fi.com/aleks... ☕️
Very nicely done! I used to play this for hours at a time on a BBC Model B. For the youngsters watching, this may not look much by today's standards, but it was an absolutely groundbreaking game at the time!
This is insanely good. Frame rate is super impressive.
Remarkable! You've achieved something astounding here.
Completely mind blowing! Amazing job. If only we could have had it back in the mid 80's.. Not many boys would have left their bedrooms until the noughties!
*looking around*, still here in the bedroom, coding the nights away :D
The Vic-20 is the little computer that could. It absolutely deserved Shatner's endorsement.
Ah! Got to name one of the save states on the release disk as Shatner ;) Fits the 7 character limit of commander names!
Wow, honestly that is truly amazing to have this running so quick - undoubtedly a nice ram pack to acheive, but none the less!
UK here, Vic 20 was my first computer when all my mates had zx81s lol.
To think REALLY Elite run on vic-20 is just INCREDIBILE.
Wow, that's impressive! Getting Elite on a system has become like a right of passage - like having a 'Bad Apple' demo. It will be nice to see the VIC join the club!
Getting pretty sick of bad apple... it's the never gonna give you up of retro....
@@lowlevelretro Yeah, I know, but any system without it is being left out. When they all have it, I guess we can put it to bed ;-)
@@tgphighscoreruns4111 Doom is next.
Just incredible.
That's amazing! Great job!
Impressive accomplishment on a VIC-20! You really had fast line, circle & solid circle routines going there.
the vic 20 was like a turbo charged atari 2600....its only let down is memory
Will someone just tell Aleksi about the limits of the VIC-20? This is getting silly! ❤
This tells me the limits to some micros were exaggerated in the 80s maybe?
@virtuafighter3 In my opinion (and experience as a fan of programming 80s computers), it's 20% that we have so much more advanced tools these days, and 70% that we're constantly pushing each other to do things with the express purpose of making the other men with gray beards go "waitwhat?".
@@virtuafighter3not necessarily, just the full specs were never known about
@@PeranMewe have much more advanced tools, that’s true. A lot of this would take a long time and be near impossible to code without the technology we have now
@@virtuafighter3you would have to be an engineer to understand what we can find on the internet now without effort
Incredible! Right on!
Amazing! The vic20 doesn’t have a proper bit map mode so this is super impressive
ok, fast line-drawing on the BBC was impressive enough with its memory laid out as character cells, but with no bitmapped graphics at all, that's just insane...
The Vic20 has a sort of bitmapped graphics where you use just a standard character set. The machine has very low horizontal resolution (standard 176x186 px or 22x23 chars) although that can be adjusted. By using two character sets and swap char set pointer mid screen you can create a sort of bitmap graphics layout.
The VIC-20 can easily set up bitmap-modes by using re-defined characters across the screen. Once you set those up, effectively the screen behaves like a full bitmap-mode. You can do this in BASIC in about 4 lines of code. For example: just copy the text below into the VICE-Emulator (right-mouse button):
poke44,31:poke43,241:poke8176,0:new
0v=36864:a=4096:c=37888:g=4336:s=1:fOt=.to7:b(7-t)=s:s=s+s:nE:pOv,pE(v)+2:pOv+2,20
1pOv+1,pE(v+1)-2:pOv+3,25:pOv+5,204:i=15:fOx=.to19:fOy=.to11:pOa+y*20+x,i:i=i+1
2pOc+y*20+x,.:nE:nE:fOi=gto8175:pOi,.:nE:fOx=.to159:y=50*sI(x/30)+100:d=g+24*(xaN248)+y
3pOd,pE(d)orb(xaN7):nE:pO198,.:wA198,1:sY58648
run
@@64jclnot too different from how is it done on the NES
@@64jclActually, you don’t even need to do that. If you carefully select the VIC screen and character-generator start addresses and put it into double-height character mode, you can configure the screen as a 30,720-pixel (240 character) grid in a variety of character row/column combinations (e.g. 12 rows of 20 characters, or 160x192 pixels). No mid-screen characterset swap or raster split necessary.
@@eightbitguru , ok, thanks for that info - been a while since I coded for the Vic20. :)
Looks superb so far.
Thanks! Want to go on a test flight? I guess you've got an 35K expanded VIC there?
One or two hehe. Would love to, you may ruin my productivity though as I won't stop playing once I have it :)
This is amazing! Also, 11 Notes On Sand was the mod that made me want to become a tracker musician a lifetime ago :)
This is excellent! A great effort...
Dang, that's amazing!
This is just insane! I mean, it is even faster that the C64 port!! 😳😱
Winning the 80s internet, since 2025!
That's insane.
ASTOUNDING and OUTSTANDING... That is all !
Ohmygoshwow!
Fantastic achievement ❤❤❤
Great ! And now MITS Altair 680.
Very cool!
there it is
Epic! Yet again just epic! I had my fair change to talk with you on last Zoo, but somehow thigs just ended up so, that we exchanged just few words.... How ever you just don't fail to impress me, what ever you do.
This is insane!
😮 I didn't think that was possible.
Yeah, I knew they could probably have it running with a nice ram expansion pack, but fps for the speed of the processor and vic chip, impressive.
I thought its CPU ran slower than C64 but it actually runs at approx. the same speed. Also some cycles on the C64 are reserved for other chips - which is not the same on the VIC-20 as far as I understand.
wow amazing job
Amazing
madness
Woooow!
Amazing! - just think how fast pc's would be now if they were programmed as efficiently as this...
impressive, moves better than the c64 version
unreal
You Sir are a legend.
Bloody amazing, seems you have the golden touch.
Did you use cmon and ass for this as they are my go-to programs these days
Mark Moxon's commented source is in 'BBC-style' BeebAsm, so I'm using that to compile everything from the C-64 version. And then DASM for all the VIC 20 specific code in low RAM block and building the final binaries
flabbergasted!
Je me demande pourquoi on recherche la vie extraterrestre ailleurs dans l'univers!
Bravo.
Sharopolis! It is time for you to make a new video on pushing the limits of the VIC!
I can hardly believe my eyes.
Nice!
I used to just think Elite was the best C64 game ever. But in recent times the only time I see it mentioned is by some nerd who can't shut up about how incredible it was that they fit it in the 32 KB of the BBC Micro / Acorn. This is the best flex ever.
Tätä on odotettu 😍
That is fantastic. There is an Atari one in the works that appears stalled, which makes me sad.
I saw some clips of that while exploring other versions, it was looking great and I hope they'll finish it! Moxon's source commentary is excellent, but it's easy to get lost in the 50000+ lines of the main source, especially when things start going wrong in the conversion... The code looks and feels OLD in peculiar ways, like having very short labels from the BBC original
Yes mind blowing. Is it me or does it run faster the c64 elite? Amazing.
Yes, it runs faster than the C64. The C64's CPU normally runs a bit slower than the VIC-20 because the VIC-II video chip steals some cycles from it, and also the VIC-20's lower resolution means that it has to render and erase fewer pixels per frame.
@@IsaacKuo On top of that a PAL VIC 20 clocks the 6502 at whopping 1.108 MHz, 12% faster than PAL C-64. (On NTSC there's no difference between the machines.)
That is definitely more than the simple PEEK, POKE and GOSUB routines we learned in the early 80s. How can the VIC do this?
❤👍
❤
Sometime circa 2020 there was a little optimization that was finally brought to the older C64 version. Made for more efficient screen draws, less flicker. It had been in the other 6502 versions that came out after the C64 version was released. I hope you got access to that update.
Yes, M. Moxon has done a detailed description of the flicker-free mod: elite.bbcelite.com/deep_dives/backporting_the_flicker-free_algorithm.html
@@AleksiEeben Given how different the various graphics map to RAM addresses, you have to wonder how the upgrades vary across each 6502 platform.
Liked subscribed writing seven word comment now:)
Good Job 😶 I think a big RAM extension is needed.
Holy heck, I just realized.. Is elite vector based internally, and you use a line draw routine to plot the screen? Are you using a lower endpoint resolution than the bitmap?
Yes, it's all vectors and line drawing. Maths are straight from the C-64 version (256x144 space view), and x-coordinates are just halved for VIC resolution and flatter pixel ratio (128x144 space view).
Similarly, a 4x8 pixel font replaces the original 8x8 one, so text layout stays the same.
Dashboard is 128x56 multicolor pixels on C-64, and it's copied to VIC 20 pixel-by-pixel, but in black&white
I feel it's quicker than the apple II Version.
Next stop: VIC-Doom?
ruclips.net/video/KWIzWntEYcE/видео.htmlsi=zSz7MVJm3CRfFj8B
tfirst thing I thought, theres no way you can fit that on 32k, but wow it looks amazing
Easy.
Line 1 REM MAKE ELITE FOR VIC 20
Line 2 ERMMMM....
Could the scanner be in glorious 80x200 color? Or something else to indicate ship masses?
Multicolor would be too blocky and inaccurate (I'm using multicolor to replace the expanded sprite explosions from C-64, but not yet in this clip). Good options to show mass in radar could be cutting one pixel of the head pin or shading the stick that shows altitude difference. Maybe I'll try that, but it might go too far from the original
Still waiting for Elite for VCS2600 and Atari 8-Bit (yes, i know the previews)
Are you using the 19k expansion module? This is amazing.
This version requires the full 32K+3K expansion, RAM in all possible blocks
Faaark! Can we go back to 1984 and release this? I was so pissed off that I got a vic20 back then cos all I wanted to do was play elite. I didn’t get a zx spectrum for another 4 years! Hahaha
Looks like 1979 Star Raiders.
With its lower-resolution screen, and not having a VIC-II stealing badlines, there's no good reason why this shouldn't end up running a _bit faster_ than the C64 version. In fact, I'd wager the only problem is memory: the Beeb original required 22KB RAM, so I doubt you'll be running this on an unexpanded 5KB VIC-20. 😆
The main binary is now about 30K. That includes the loading picture (4K) which later becomes the bitmap buffer, and VIC 20 specific graphics & interface code (2.5K). The rest is all the Elite code compiled into one block of 23.5K.
I also load the ship blueprints (8K reduced to 5.5K) to the highest RAM block ($a000-$bfff), rest of which is used for runtime workspaces. The 4x8 font is stored in unused color RAM at $9500-$97ff (where only the low 4 bits of each address are connected)
Finally, after blanking the loading picture I load the explosion sprite and a page of literal strings (for title screen text and load/save menu) to the freed half a KB not used by the smaller game screen bitmap.
There's currently about 1-1.5K free for music and perhaps adding back the Dodo station or one more ship
can't you do disk version so you can have all the features of the game, your port is amazing but I don't understand your decision for cassette version instead of disk version, with original disk version of game mainly with BBC 32K ships and missions were loaded when required just saying
Everything is possible, but the C-64 source lacks support for swapping code from disk-implementing that would require a huge effort for relatively little gain. Besides, I don't expect many people today to play the VIC-20 port long enough to even trigger the first mission...
Of course, after finishing this version I should have much better understanding of the codebase and what exactly is needed where and when, and what could be swapped from disk. A disk turbo would be also needed, since the 1541 drive is very slow. You don't want to wait 30 seconds after every docking or launch! But you're right, all that is certainly possible, but would add some thousand pieces to the puzzle
looks brillant and faster than the zx
How?!
Witchcraft?!
WTF ? Targonians on the first flight ? Weird
Just my luck!
Do you have a download for this? I have a VIC-20
Very soon! A few more quirks there to iron out first
WAAT
How much memory is this using?
Found this title “Elite for VIC-20 +35K (preview)”
FYI - this talk on elite is very good and talks about memory usage at 15m 45s
ruclips.net/video/J10vYqqE6oI/видео.htmlsi=p2eXbEmV7JEK43WI
Read the video description and find out!
Kunnollista
This is not supposed to be possible.