Home » Personal collection » Commodore disks » disk65a_programs_1.d64 » colour sprite
colour sprite
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Personal collection » Commodore disks » disk65a_programs_1.d64 |
Filename: | colour sprite |
Read OK: | ✔ |
File size: | 0FF8 bytes |
Load address: | 0801 |
Exec address: | 0000 |
Duplicates
There are 2 duplicate copies of this file in the archive:
- Personal collection » Commodore disks » disk50a2_progs1.d64 » colour sprite
- Personal collection » Commodore disks » disk65a_programs_1.d64 » colour sprite
- Personal collection » Commodore tapes » Commodore_64 » drawer_tr_tape01a_d60_c64_tape.wav » colour sprite
File contents
10 REM MULTI-COLOUR SPRITE-DESIGNER 50 PRINTCHR$(147); 110 GOSUB 1020 120 GOSUB 1510 130 GOSUB 2010 140 GOSUB 5010 150 PRINT"<cursor down><cyan>DO YOU WANT TO DESIGN ANY MORE?" 160 GET ANS$:IF ANS$="" THEN 160 170 POKEVC+21,0 180 IF ANS$<>"N" THEN 50 190 END 200 : 1000 REM 1010 REM 1020 POKE 53281,0:POKE 53280,0:PRINT"<yellow>" 1030 PRINT"<home>MULTI-COLOUR SPRITES INVOLVE FOUR COL-" 1040 PRINT"OURS. PLEASE INDICATE YOUR CHOICE FOR" 1050 PRINT"EACH OF THE FOLLOWING.<cursor down>" 1060 INPUT"BACKGROUND";BACK 1070 INPUT"MULTI-COLOUR 1";C1 1080 INPUT"MULTI COLOUR 2";C2 1090 INPUT"SPRITE COLOUR";SCOL 1100 INPUT"<cursor down><cursor down>WHICH SPRITE DO YOU WANT TO DESIGN";NSPRITE 1110 VCHIP=53248 1120 REM 1130 PTR=192+NS:POKE2040+NS,PTR:PTR=PTR*64 1140 PRINT"<cursor down><cursor down>HOW DO YOU WANT TO DESIGN IT?" 1150 PRINT"S. FROM SCRATCH?" 1160 PRINT"M. MODIFYING ITS PRESENT DESIGN?" 1170 PRINT"B. BASING IT ON ANOTHER SPRITE?" 1180 GET MANNER$:IF MANNER$<>"S" AND MANNER$<>"M" AND MANNER$<>"B" THEN 1180 1190 REM 1200 IF MANNER$="S" THEN FORI=0TO62:POKEPTR+I,0:NEXT 1210 IF MANNER$="B" THEN GOSUB 3510 1220 C1=C1-1:C2=C2-1:SCOL=SCOL-1:BACK=BACK-1 1230 POKE VC+2*NS,65:POKEVC+2*NS+1,200 1240 REM 1250 POKE VC+29,0:POKEVC+23,0:POKEVC+16,0 1260 REM 1270 POKEVC+28,2^NS:POKEVC+37,C1 1280 POKEVC+38,C2:POKE39+VC+NS,SCOL 1290 REM 1300 POKEVC+21,2^NS 1310 RETURN 1320 : 1500 REM 1510 PRINTCHR$(147);SPC(13)"┌🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸┐" 1520 FORI=1TO21 1530 PRINTSPC(13)"│"SPC(24)"🭲" 1540 NEXT 1550 PRINTSPC(13)"└🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸┘<home>" 1560 REM 1570 REM 1580 FORY=0TO20:FORX=0TO23STEP2 1590 POKE1078+X+40*Y,160:POKE1079+X+40*Y,160 1600 ADDR=55350+X+40*Y 1610 IF MANNER$="S" THEN POKE ADDR,BACK:POKEADDR+1,BACK:GOTO1670 1620 BITS=PEEK(PTR+INT(X/8)+3*Y)/2^(6-(X AND 7)) AND 3 1630 IF BITS=0 THEN POKE ADDR,BACK:POKE ADDR+1,BACK 1640 IF BITS=1 THEN POKE ADDR,C1:POKE ADDR+1,C1 1650 IF BITS=2 THEN POKE ADDR,SCOL:POKE ADDR+1,SCOL 1660 IF BITS=3 THEN POKE ADDR,C2:POKE ADDR+1,SCOL 1670 NEXT:NEXT 1680 PRINT"<home>USE:-" 1690 PRINT"<cursor down>Q TO QUIT" 1700 PRINT"<cursor down>SPACE OR":PRINT"DELETE TO":PRINT"CLEAR" 1710 PRINT"<cursor down>1,2,OR S":PRINT"TO FILL WITH" 1720 PRINT"MULTI COLOURS":PRINT"1 OR 2 OR" 1730 PRINT"SPRITE COLOUR" 1740 PRINT"<cursor down>CURSOR KEYS":PRINT"TO MOVE" 1750 RETURN 1760 : 2000 REM 2010 X=0:Y=0:PSN=1078:HUE=PEEK(PSN+54272) 2020 POKE PSN,214 2030 IF HUE=0 THEN POKE PSN,86:POKEPSN+54272,SCOL 2040 GET COM$:IF COM$="" THEN 2040 2050 IF COM$="Q" THEN POKE PSN+54272,HUS:RETURN 2060 IF COM$="<cursor up>" THEN GOSUB2510 2070 IF COM$="<cursor down>" THEN GOSUB2610 2080 IF COM$="<cursor left>" THEN GOSUB2710 2090 IF COM$="<cursor right>" THEN GOSUB2810 2100 IF COM$=" " THEN HUE=BACK:HNUM=0:GOSUB2420:GOSUB2810 2110 IF COM$="1" THEN HUE=C1:HNUM=1:GOSUB2420:GOSUB2800 2120 IF COM$="2" THEN HUE=C2:HNUM=3:GOSUB2420:GOSUB2810 2130 IF COM$="S" THEN HUE=SCOL:HNUM=2:GOSUB2420:GOSUB2810 2140 IF COM$=CHR$(20) THEN GOSUB 2910:GOSUB2420 2150 IF PSN<>1078+X+40*Y THEN PSN=1078+X+Y*40:HUE=PEEK(PSN+54272) AND 15 2160 IF HUE<>BACK THEN POKE PSN,214 2170 IF HUE=BACK THEN POKE PSN,86:POKE PSN+54272,SCOL 2180 GOTO 2040 2190 : 2400 REM 2410 REM 2420 ADDR=PTR+INT(X/8)+3*Y:BYTEPSN=7-X+8*INT(X/8) 2430 REM 2440 POKE ADDR,PEEK(ADDR) AND 255-3*2^(BYTEPSN-1) 2450 REM 2460 IF HUE<>BACK THEN POKE ADDR,PEEK(ADDR) OR HNUM*2^(BYTEPSN-1) 2470 RETURN 2480 : 2500 REM 2510 GOSUB3010 2520 Y=Y-1:IF Y<0 THEN Y=20 2530 RETURN 2540 : 2600 REM 2610 GOSUB 3010 2630 Y=Y+1:IF Y>20 THEN Y=0 2640 RETURN 2650 : 2700 REM 2710 GOSUB 3010 2720 X=X-2:IF X<0 THEN X=22:Y=Y-1 2730 IF Y<0 THEN Y=20 2740 RETURN 2750 : 2800 REM 2810 GOSUB 3010 2820 IF COM$<>"<cursor right>" THEN POKE PSN+54272,HUE:POKE PSN+54273,HUE 2830 X=X+2:IF X=24 THEN X=0:Y=Y+1 2840 IF Y=21 THEN Y=0 2850 RETURN 2860 : 2900 REM 2910 GOSUB 2710:HUE=BACK 2920 PSN=1078+X+40*Y:POKEPSN+54273,BACK 2930 RETURN 2940 : 3000 REM 3010 POKE PSN,160:IF HUE=BACK THEN POKE PSN+54272,BACK 3020 RETURN 3030 : 3500 REM 3510 INPUT"<cursor down><cursor down>WHICH SPRITE IS IT TO BE BASED ON";OLD 3520 OLD=12288+64*OLD 3530 PRINT"<cursor down>YOU CAN MAKE FOUR TYPES OF COPY:-" 3540 PRINT"1. DIRECT COPY" 3550 PRINT"2. HORIZONTAL REFLECTION" 3560 PRINT"3. VERTICAL REFLECTION" 3570 PRINT"4. 180-DEGREE ROTATION" 3580 INPUT"<cursor down>WHICH TYPE WOULD YOU LIKE";TYPE 3590 PRINT"<cursor down><cursor down><cyan>PLEASE BE PATIENT-THIS TAKES A WHILE.<yellow>" 3600 ON TYPE GOSUB 3810,4010,4210,4310 3610 RETURN 3620 : 3800 REM 3810 FOR I=0 TO 63 3820 POKE PTR+I,PEEK(OLD+I) 3830 NEXT 3840 RETURN 3850 : 4000 REM 4010 FOR J=0 TO 20 4020 BYTE=PEEK(OLD+3*J+2):GOSUB 4110:POKE PTR+3*J,REFLECT 4030 BYTE=PEEK(OLD+3*J+1):GOSUB 4110:POKE PTR+3*J+1,REFLECT 4040 BYTE=PEEK(OLD+3*J):GOSUB 4110:POKE PTR+3*J+2,REFLECT 4050 NEXT 4060 RETURN 4070 : 4100 REM 4110 REFLECT=0 4120 FOR I=0 TO 6 STEP 2 4130 BITS=BYTE/2^(6-I) AND 3 4140 REFLECT=REFLECT+BITS*2^I 4150 NEXT 4160 RETURN 4170 : 4200 REM 4210 FOR J=0 TO 20:FOR I=0 TO 2 4220 POKE PTR+3*J+I,PEEK(OLD+3*(20-J)+I) 4230 NEXT:NEXT 4240 RETURN 4250 : 4300 REM 4310 GOSUB 4010 4320 FOR I=0 TO 62:POKE 832+I,PEEK(PTR+I):NEXT:OLD=832 4330 GOSUB 4210 4340 RETURN 4350 : 5000 REM 5005 PRINTCHR$(147) 5010 PRINT;CHR$(147);"THE 63 NUMBERS DEFINING THE SPRITE ARE:-" 5020 FOR I=0 TO 6 5030 PRINT"<cursor down>DATA"; 5040 FOR J=0 TO 7 5050 NUM$=STR$(PEEK(PTR+9*I+J)) 5060 PRINT MID$(NUM$,2)","; 5070 NEXT 5080 NUM$=STR$(PEEK(PTR+9*I+8)) 5090 PRINT MID$(NUM$,2) 5100 NEXT 5110 RETURN
$ � MULTI-COLOUR SPRITE-DESIGNER 12 ��(147); <n � 1020 Gx � 1510 R� � 2010 ]� � 5010 �� �"�DO YOU WANT TO DESIGN ANY MORE?"