VIC 20 Graphics Artist

Basic and Machine Language

Moderator: Moderators

User avatar
Wilson
Vic 20 Enthusiast
Posts: 190
Joined: Mon Sep 28, 2009 7:19 am
Location: Brooklyn, NY

Re: VIC 20 Graphics Artist

Post by Wilson »

This is incredibly cool stuff.
Thanks for sharing and welcome to the forum, Neil!
User avatar
darkatx
Vic 20 Afficionado
Posts: 471
Joined: Wed Feb 04, 2009 2:17 pm
Location: Canada

Re: VIC 20 Graphics Artist

Post by darkatx »

Wilson wrote: Mon Nov 06, 2023 7:47 pm This is incredibly cool stuff.
Thanks for sharing and welcome to the forum, Neil!
I second that! Welcome and thanks for sharing - really cool stuff indeed!
Learning all the time... :)
User avatar
javierglez
Vic 20 Hobbyist
Posts: 107
Joined: Sat Jun 03, 2017 3:33 pm

Re: VIC 20 Graphics Artist

Post by javierglez »

It would be nice to rescue the different pieces of data or code and and put together a demo.
Neil Huggett
Vic 20 Newbie
Posts: 5
Joined: Sat Nov 04, 2023 7:07 pm
Website: https://www.neilhuggett.com/index.html
Location: Adelaide, Australia
Occupation: retired

Re: VIC 20 Graphics Artist

Post by Neil Huggett »

Thank you Mike, Sven Vasterling, and all you guys,

I have put together a zip file of some of my stuff (
NHuggett_Vic-20.zip
(9.11 MiB) Downloaded 72 times
), including an installer for WinVICE 2.1 (because all of the WinVICE snapshots I have are for version 2.1). I have attached the zip file to this posting, so I hope that works okay. WinVICE 2.1 appears to be able to run from just about anywhere it is extracted to, and it even still runs nicely on my 64-bit Windows 10 laptop. One of the files included is a pdf document explaining how to load 'one of my programs' from the 4 'Vic files' I have included. These files should be able to be loaded into a real Vic-20 (with full memory loaded), or any recent version of WinVICE. Good luck!

In putting this stuff together, I realised just how time consuming it is to look back at Vic-20 stuff written more than 30 years ago (trying to reverse-engineer machine code and other Vic-20 stuff because I have lost or misplaced the documentation I made at the time)!

Kind regards,
Neil Huggett
User avatar
Mike
Herr VC
Posts: 4841
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Re: VIC 20 Graphics Artist

Post by Mike »

Hi, Neil,
Neil Huggett wrote:I have attached the zip file to this posting, so I hope that works okay.
I downloaded the *.zip archive, and as a first measure, I put a mirror up at my own web space (download here).

Next action then will be extracting the relevant data from the *.vsf files. This will take some time over the next weeks, though.
In putting this stuff together, I realised just how time consuming it is to look back at Vic-20 stuff written more than 30 years ago (trying to reverse-engineer machine code and other Vic-20 stuff because I have lost or misplaced the documentation I made at the time)!
In any case, this is a big time capsule you have unearthed here. A find like this shows how important it is to preserve and document one's own works.

Greetings,

Michael
User avatar
MrSterlingBS
Vic 20 Enthusiast
Posts: 174
Joined: Tue Jan 31, 2023 2:56 am
Location: Germany,Braunschweig

Re: VIC 20 Graphics Artist

Post by MrSterlingBS »

Hi Neil,

thank you from the other side of the world. Maybe this forum will encourage you to continue publishing such great graphics.

greetings from Germany
Sven
User avatar
huffelduff
Vic 20 Hobbyist
Posts: 118
Joined: Sat Sep 05, 2020 9:14 am

Re: VIC 20 Graphics Artist

Post by huffelduff »

Hi there Neil,

Echoing everyone in the thread: Great work!
I love the half tones you produced and the crystal shapes.
Anyway really superb.

Greetings

H
User avatar
pixel
Vic 20 Scientist
Posts: 1357
Joined: Fri Feb 28, 2014 3:56 am
Website: http://hugbox.org/
Location: Berlin, Germany
Occupation: Pan–galactic shaman

Re: VIC 20 Graphics Artist

Post by pixel »

Warm, fuzzy feeling here as well. Cudo!
A man without talent or ambition is most easily pleased. Others set his path and he is content.
https://github.com/SvenMichaelKlose
User avatar
Ola H
Vic 20 Enthusiast
Posts: 171
Joined: Thu Aug 20, 2015 6:08 pm
Website: http://www.athleticdesign.se/
Location: Sweden

Re: VIC 20 Graphics Artist

Post by Ola H »

Welcome Neil, I am in awe of what you accomplished with the Vic 20. I don't think anything else I have seen in 2023 has impressed me quite as much.
Neil Huggett
Vic 20 Newbie
Posts: 5
Joined: Sat Nov 04, 2023 7:07 pm
Website: https://www.neilhuggett.com/index.html
Location: Adelaide, Australia
Occupation: retired

Re: VIC 20 Graphics Artist

Post by Neil Huggett »

Hi Michael,

The thought of you 'extracting the relevant bits' from my WinVICE 2.1 snapshots, and the time it may take you made me wonder if I could help the process a bit. I have put together an archive:
BIGART2.zip
(28.24 KiB) Downloaded 65 times
that relates to loading the 'BigArt' routines into WinVICE 3.7.

I have included some more documentation in the form of a txt document. Hopefully this saves you some precious time, and provides more information on using the routines already written.

Kind regards,
Neil
User avatar
Mike
Herr VC
Posts: 4841
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Re: VIC 20 Graphics Artist

Post by Mike »

Hi, Neil,
Neil Huggett wrote:The thought of you 'extracting the relevant bits' from my WinVICE 2.1 snapshots, and the time it may take you made me wonder if I could help the process a bit. I have put together an archive: [...] I have included some more documentation in the form of a txt document. Hopefully this saves you some precious time, and provides more information on using the routines already written.
thank you for this. :)

Just as an example where I am heading: I started out with the snapshot file "Crystal_8K_Basic02.vsf". In BLK5, the main BASIC program is located:

Code: Select all

1 AX=.5:AY=AX:A=0:B=0:D=400:O=560:M=1184:W=1170:EY=12:IW=-5:X2=1:Y2=1
2 MT=0:P=1:L=1:CX=0:CY=0:CZ=0:E=1:F=1:Q=1:I=1:J=1:C=1:S=1
3 X=0:Y=0:Z=0:G=1:IM=0:A1=20:B1=25:IA=0:A7=5:L7=10:T=1:U=1:H=1:K=1:X1=1:Y1=1
4 SH=1:SL=1:YS=1:AZ=1:ML=13008:WL=13008:MD=0
5 DIMX(26),Y(26),Z(26),S%(56),E%(56),XP(26),YP(26)
70 RESTORE:DATA-25,0,-25,25,0,-25,25,0,25,-25,0,25,-25,-50.0,-25,25,-50.0,-25
71 DATA25,-50.0,25,-25,-50.0,25,0,-85.35,0,0,35.36,0
72 DATA-25,28.87,-65.82,25,28.87,-65.82,0,64.22,-40.82,0,64.22,-90.82
73 DATA-25,28.87,65.82,25,28.87,65.82,0,64.22,40.82,0,64.22,90.82
74 DATA65.82,28.87,-25,65.82,28.87,25,40.82,64.22,0,90.82,64.22,0
75 DATA-65.82,28.87,25,-65.82,28.87,-25,-40.82,64.22,0,-90.82,64.22,0
80 DATA1,2,2,3,3,4,4,1,5,6,6,7,7,8,8,5,1,5,2,6,3,7,4,8,5,9,6,9,7,9,8,9
81 DATA1,10,2,10,3,10,4,10,1,11,2,12,10,13,11,12,12,13,13,11,11,14,12,14,13,14,25,26
82 DATA3,16,4,15,10,17,15,16,16,17,17,15,15,18,16,18,17,18,2,19,3,20,10,21,19,20
83 DATA20,21,21,19,19,22,20,22,21,22,1,24,4,23,10,25,23,24,24,25,25,23,23,26,24,26
90 P=26:L=56:CX=0:CY=0:CZ=0
92 FORI=1TOP:READX(I),Y(I),Z(I):NEXT
94 FORI=1TOL:READS%(I),E%(I):NEXT
112 IFMT=0THEN118
114 C=COS(MT):S=SIN(MT):FORI=1TOP:Y=Y(I)-CY:X=X(I)-CX:F=Y*C-X*S:G=X*C+Y*S
116 Y(I)=CY+F:X(I)=CX+G:NEXT
118 PRINT"{CLR}"
120 PRINT"{CLR}":PRINTTAB(45)"DISTANCE=";D
125 PRINTTAB(45)"TH=";A1;"{2 SPACE}ALT=";B1
130 PRINTTAB(45)"SCX=";M+MD;" SCY=";W+WD
132 PRINTTAB(45)"SEP=";IW;" IM.ROT=";IA
135 PRINTTAB(45)"SC.DIST=";O+D:PRINTTAB(89)"{2 SPACE}HIT 'X' WHEN OK"
140 GETA$:IFA$=""THEN140
142 IFA$="C"THEND=D-L7:GOTO120
144 IFA$="F"THEND=D+L7:GOTO120
146 IFA$="L"THENA1=A1+A7:GOTO120
148 IFA$="R"THENA1=A1-A7:GOTO120
150 IFA$="U"THENB1=B1+A7:GOTO120
160 IFA$="D"THENB1=B1-A7:GOTO120
162 IFA$="X"THEN210
164 IFA$="{UP}"THENWD=WD-5:GOTO120
166 IFA$="{DOWN}"THENWD=WD+5:GOTO120
168 IFA$="{RIGHT}"THENMD=MD+5:GOTO120
170 IFA$="{LEFT}"THENMD=MD-5:GOTO120
172 IFA$="+"THENIW=IW+5:GOTO120
174 IFA$="-"THENIW=IW-5:GOTO120
176 IFA$="{SHIFT-C}"THENO=O-L7:GOTO120
178 IFA$="{SHIFT-F}"THENO=O+L7:GOTO120
180 IFA$="0"THENIA=IA-A7:GOTO120
182 IFA$="9"THENIA=IA+A7:GOTO120
185 GOTO140
210 PRINT:PRINT:PRINT" OK -NOW CALCULATING"
215 A=A1*{PI}/180:B=B1*{PI}/180:IM=IA*{PI}/180
218 C=COS(A):S=SIN(A)
220 FORI=1TOP:X=X(I)-CX:Z=Z(I)-CZ:E=X*C-Z*S:G=Z*C+X*S
230 X(I)=CX+E:Z(I)=CZ+G:NEXT
240 C=COS(B):S=SIN(B):FORI=1TOP:Y=Y(I)-CY:Z=Z(I)-CZ:F=Y*C+Z*S:G=Z*C-Y*S
250 Y(I)=CY+F:Z(I)=CZ+G:NEXT
260 C=COS(IM):S=SIN(IM):FORI=1TOP:Y=Y(I)-CY:X=X(I)-CX:F=Y*C-X*S:G=X*C+Y*S
270 Y(I)=CY+F:X(I)=CX+G:NEXT
360 G=M+MD:F=CX
435 SYS1166:SYS1230:SYS1264:GOSUB500
450 SYS13680
455 GETB$:IFB$=""THEN455
458 IFB$=" "THEND=D:SYS1122:PRINT"{CLR,2 RIGHT,DOWN}PLEASE WAIT":GOTO70
480 GOTO455
500 T=D+O:K=W+WD:FORI=1TOP:U=D+Z(I)-CZ:IFU=0THENU=.5
502 X=(X(I)-F)*T*AX/U:Y=(Y(I)-CY)*T*AY/U
505 XP(I)=INT(G+X):YP(I)=INT(K-Y):NEXT
510 FORI=1TOL:X1=XP(S%(I)):Y1=YP(S%(I)):X2=XP(E%(I)):Y2=YP(E%(I)):GOSUB550
520 NEXT
525 RETURN
550 IFX1<0ORX1>32000THENRETURN
555 IFY1<0ORY1>32000THENRETURN
560 IFX2<0ORX2>32000THENRETURN
565 IFY2<0ORY2>32000THENRETURN
570 X=INT(X1/256):POKE3045,X:POKE3044,X1-X*256
571 Y=INT(Y1/256):POKE3049,Y:POKE3048,Y1-Y*256
572 X=INT(X2/256):POKE3047,X:POKE3046,X2-X*256
573 Y=INT(Y2/256):POKE3051,Y:POKE3050,Y2-Y*256
575 SYS1576:SYS1264:RETURN
I extracted the tokenized code, and let an own de-tokenizer work on it, which incidentally also replaces control characters by quoted descriptions in curly brackets.

As such the program of course is still incomplete, as it misses the machine code parts. My aim now is to reconstruct the whole application (including the ML parts) so it can be run as supposed - either as *.d64 disk image or as collection of files in a directory for a SD2IEC device.

Greetings,

Michael
Neil Huggett
Vic 20 Newbie
Posts: 5
Joined: Sat Nov 04, 2023 7:07 pm
Website: https://www.neilhuggett.com/index.html
Location: Adelaide, Australia
Occupation: retired

Re: VIC 20 Graphics Artist

Post by Neil Huggett »

Hi Michael,

That all looks impressive. I am sure you know what you are doing. Good luck with the ML parts of it.

I was putting together a bunch of programs relating to my TonePaint series of programs (for the colour displays shown on my website) for WinVICE 3.7, but found that WinVICE 3.7 can't cope with the video arrangement, so I can't really test it out. If you would like the stuff I have, please ask, but the programs included in the WinVICE 2.1 archive I have already put up are probably all you need (and they work properly under WinVICE 2.1, like they did on my real Vic-20).

I was curious about the SD2IEC device you referred to, and after some searching through Google, found a good description of them. They sound interesting, and would be excellent with a real Vic-20.

If you need any clarification of any of my stuff, please email me at: neil.huggett@yahoo.com

Thank you to all you guys on Denial doing interesting things with the Vic-20, and passing on kind messages about the Vic-20 graphics on my website. The Vic-20 is an excellent little computer!

Kind regards,
Neil
User avatar
Mike
Herr VC
Posts: 4841
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Re: VIC 20 Graphics Artist

Post by Mike »

It was more easier than I thought. :)

For a starter: the whole BIGART setup revolves around the two files "BART3K" and "BARTMC". These two files are loaded to $0400..$0FFF and $2E00..$4900, respectively. The 320x352 off-screen bitmap is located at $4900..$7FFF (implying the byte at $4900 from BARTMC gets overwritten by the bitmap). The 160x176 display bitmap is located at $1000..$1DBF, with the screen at $1E00 and the addressing into the screen bitmap is done in row-major order. As whole, this leaves either $2000..$2DFF (3.5 KB) or $A000..$BFFF (8 KB) for BASIC programs that 'script' the machine code.

For convenience, I prepared this small boot program that pre-loads the machine code libraries, re-organises BASIC memory and then autostarts a client program, here, "Crystal".

Code: Select all

1 POKE55,0:POKE56,32:CLR:DN=PEEK(186)
2 POKE648,30:SYS58648
3 N$="BART3K":GOSUB9:N$="BARTMC":GOSUB9
4 PRINT"{CLR}LOAD"CHR$(34)"BASIC.PRG"CHR$(34)","MID$(STR$(DN),2)
5 POKE631,19:POKE632,131:POKE198,2
6 POKE40960,0:POKE43,1:POKE44,160:POKE55,0:POKE56,192:NEW
7 REMPOKE8192,0:POKE43,1:POKE44,32:POKE55,0:POKE56,46:NEW
8 :
9 SYS57809(N$),DN,1:POKE780,0:SYS65493:RETURN
Download. This example needs a full +35K RAM expansion (i.e. +24K in BLK1..3, +8K in BLK5 and +3K in RAMx!). Load the file "BOOT" and run it. There's a working preset of rotation/zoom parameters and upon confirming that preset with the X key, the crystal is rendered into the off-screen bitmap. The top-left corner of the off-screen bitmap is displayed on screen. The number keys 1..9 allow for a quick change of view, otherwise the cursor keys can be used to scroll around.

I'll experiment around with this over the next days. :mrgreen:

Cheers,

Michael

Image
User avatar
MrSterlingBS
Vic 20 Enthusiast
Posts: 174
Joined: Tue Jan 31, 2023 2:56 am
Location: Germany,Braunschweig

Re: VIC 20 Graphics Artist

Post by MrSterlingBS »

Hello,

The program really runs very smoothly.

:D
Neil Huggett
Vic 20 Newbie
Posts: 5
Joined: Sat Nov 04, 2023 7:07 pm
Website: https://www.neilhuggett.com/index.html
Location: Adelaide, Australia
Occupation: retired

Re: VIC 20 Graphics Artist

Post by Neil Huggett »

Hi Michael,

That analysis of my machine code program, and the boot loader are very impressive. Thank you for doing all of that. The boot loader works a treat.

Kind regards,
Neil
Post Reply