forked from uniskie/MSX_MISC_TOOLS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCOLCOMBG.BAS
51 lines (51 loc) · 1.54 KB
/
COLCOMBG.BAS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
1000 DEFINTA-Z:DIM C(15,255),F(15),P(15),L(15),T(15)
1010 SC=7:SCREEN SC:COLOR15,0,0:CLS:OPEN"GRP:"AS#1:PSET(0,0),0
1020 '
1030 '-- READ VRAM PALETTE TABLE--
1040 VA=VAL("&H"+MID$("0400,0F00,2020,1B80,2020,1B80,7680,7680,FA80,FA80,7680,FA80,FA80,FA80",(SC+1)*5+1,4))
1050 'GET PALETTE & CALC LUMINUS
1060 FOR I=0 TO 15
1070 RB=VPEEK(VA+I*2):G=VPEEK(VA+I*2+1):P(I)=G*256+RB
1080 L(I)=(RB AND 15)/2+(RB\16)+G*3
1090 NEXT
1100 'AVERAGE,MAX,MIN LUMINUS
1110 FOR I=0 TO 15
1120 ML=ML+L(I)
1130 IF L(DC)>L(I) THEN DC=I 'DARK COLOR
1140 IF L(BC)<L(I) THEN BC=I 'BRIGHT COLOR
1150 NEXT
1160 ML=ML/16
1170 ' USE DARK OR BRIGHT
1180 FOR I=0 TO 15
1190 IF ML<=L(I) THEN T(I)=DC ELSE T(I)=BC
1200 NEXT
1210 ' LIST UP COMBO
1220 FOR I=0 TO 15:FOR J=0 TO 15
1230 C=I OR J:V=I*16+J
1240 IF I>J THEN 1270 'SKIP
1250 C(C,F(C))=V
1260 F(C)=F(C)+1
1270 NEXT J,I
1280 ' DISPLAY
1290 PSET(0,0),0:PRINT#1,"SPRITE COLOR COMBINATION LIST"
1300 X=0:Y=0:OX=3:OY=13+8:W=7:H=8:M=13*H
1310 FOR C=0 TO 15
1320 PSET(OX+X,OY-11),0:COLOR T(C),C:PRINT#1,HEX$(C)
1330 Y=0
1340 LINE(OX+X-3,OY-13)-(OX+X-3,OY+M+2),14
1350 FOR I=0 TO 255
1360 IF I>=F(C) THEN I=256:GOTO 1410
1370 IF Y>=M THEN X=X+3*W:Y=0
1380 A=C(C,I)/16:PSET(OX+X,Y+OY),0:COLOR T(A),A:PRINT#1,HEX$(A)
1390 A=C(C,I)AND 15:PSET(OX+X+W,Y+OY),0:COLOR T(A),A:PRINT#1,HEX$(A)
1400 Y=Y+H
1410 NEXT
1420 X=X+3*W:Y=0
1430 LINE(OX+X-3,OY-13)-(OX+X-3,OY+M+2),14
1440 NEXT
1450 LINE(OX-3,OY-13)-(OX+X-3,OY-13),15
1460 LINE(OX-3,OY-2)-(OX+X-3,OY-2),15
1470 LINE(OX-3,OY+M+2)-(OX+X-3,OY+M+2),15
1480 '
1490 COLOR 15,0,0:I$=INPUT$(1)