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!
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.
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!
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!
@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?".
@@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
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
@@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.
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.
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.
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
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.)
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
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
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.
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
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.
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
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
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
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 th-cam.com/video/J10vYqqE6oI/w-d-xo.htmlsi=p2eXbEmV7JEK43WI
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
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.
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!
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, 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.
That's amazing! Great job!
To think REALLY Elite run on vic-20 is just INCREDIBILE.
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
Just incredible.
Incredible! Right on!
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
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...
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 :)
Amazing! The vic20 doesn’t have a proper bit map mode so this is super impressive
Dang, that's amazing!
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. :)
Fantastic achievement ❤❤❤
Great ! And now MITS Altair 680.
This is just insane! I mean, it is even faster that the C64 port!! 😳😱
This is insane!
That's insane.
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.
😮 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.
ASTOUNDING and OUTSTANDING... That is all !
Winning the 80s internet, since 2025!
wow amazing job
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
Amazing
Amazing! - just think how fast pc's would be now if they were programmed as efficiently as this...
Ohmygoshwow!
impressive, moves better than the c64 version
Nice!
I can hardly believe my eyes.
Je me demande pourquoi on recherche la vie extraterrestre ailleurs dans l'univers!
Bravo.
madness
Sharopolis! It is time for you to make a new video on pushing the limits of the VIC!
flabbergasted!
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.)
Good Job 😶 I think a big RAM extension is needed.
unreal
Woooow!
Tätä on odotettu 😍
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
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
looks brillant and faster than the zx
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.
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
❤👍
❤
That is definitely more than the simple PEEK, POKE and GOSUB routines we learned in the early 80s. How can the VIC do this?
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.
Are you using the 19k expansion module? This is amazing.
This version requires the full 32K+3K expansion, RAM in all possible blocks
Next stop: VIC-Doom?
th-cam.com/video/KWIzWntEYcE/w-d-xo.htmlsi=zSz7MVJm3CRfFj8B
I feel it's quicker than the apple II Version.
Liked subscribed writing seven word comment now:)
tfirst thing I thought, theres no way you can fit that on 32k, but wow it looks amazing
Looks like 1979 Star Raiders.
Still waiting for Elite for VCS2600 and Atari 8-Bit (yes, i know the previews)
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
How?!
Witchcraft?!
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
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
Do you have a download for this? I have a VIC-20
Very soon! A few more quirks there to iron out first
WTF ? Targonians on the first flight ? Weird
Just my luck!
Easy.
Line 1 REM MAKE ELITE FOR VIC 20
Line 2 ERMMMM....
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
th-cam.com/video/J10vYqqE6oI/w-d-xo.htmlsi=p2eXbEmV7JEK43WI
Read the video description and find out!
Kunnollista
This is not supposed to be possible.