Jump to content
pixelpedant

I think I might have changed my mind a bit about the 9918 palette

Recommended Posts

I've kind of always wished the 9918 palette had fewer similar colours, more diversity, and more desaturated or darker colours.  Does it really need three shades of green and three reds?  Couldn't we wedge a brown and a darker grey in there somewhere?

 

But you know, I think I've started to look at it in a new light as I take a closer look at some of the beloved games for the TI-99, and consider just how often I actually really like the subtle, muted contrast between relatively vivid but similar shades. 

 

So for example, get rid of these "redundant" shades, and you don't get the more muted contrast in Arcturus, here, which gives the appealing impression that some surfaces are "shadowed":

 

image.png.2f4977515a1141056da2565c0313587a.png

 

Or the green on green in Fathom, here:

 

image.png.f04a9ed44e469bdad0d4a4f7b0cb1335.png

 

 

I'm not a very artistic person.  I don't think about palettes and colour combinations much, outside computing.  But I think I might have come around, on the merits of multiple fairly similar, relatively vivid shades, on this palette. 

 

 

  • Like 4

Share this post


Link to post
Share on other sites

You know, I always thought Arcturus (and a couple of other games) would be more enjoyable and playable updated to the full F18A palette, but I've already made enough suggestions over the years here so I've kept it to myself until now.   I only mention it because it's been brought up in this thread.

Share this post


Link to post
Share on other sites
Posted (edited)

 

I really do think that Arcturus shows off the merit of the palette precisely as it exists better than any other game on the system. 

 

Because it specifically exploits the fact that the TI-99/4A palette has

 

 

Three Blues:

 

image.png.b2222ada49d3d7cc5f95596897612a8f.png

 

Three Reds:

 

image.png.d0b4ff2d31e9567b99caa5820f4615d8.png

 

And Three Greens:

 

 

image.png.064b818d511e0d2ea127a688428114c7.png

 

To create that sense of perspective and light and shadow, which wouldn't be possible in quite the same way on a palette featuring 13 more regularly distributed and/or more naturalistic hues (excluding white, black and transparent).

 

I'm not saying this is the be all and end all of 15 colour graphics.  But I do want to recognise that having more vivid and closely grouped hues actually does have functional utility, as it does here.

 

 

 

 

Edited by pixelpedant
  • Like 2

Share this post


Link to post
Share on other sites

Add in the Arcturus programmer's artful eye!

 

So, I had to try Fathom, which I happen to have in my bin pile. Too bad they didn't continue the subtle color scheme beyond the title screen. Aside from the colored sprites, game play was pretty much basic single-hue blue and green.

-Ed

Share this post


Link to post
Share on other sites

 

Slymoids is another game that does green-on-green and blue-on-blue in game.  And dithering, even!

image.png.366fe40de964dbf5958847d871cf7f3d.png    Slymoids Screenshots for TI-99/4A - MobyGames

Share this post


Link to post
Share on other sites

I agree. The 9918 palette does have some excellent gradient shades that work very well! I've tried to use a mix of colors with a lot of my artwork in the CRPG and it's worked pretty well.

 

I discovered, for example, that light red and magenta actually compliment each other well. Magenta is one of the few oddball colors that tends to stick out against the others, so it's a good one to use for contrast.

 

Something else I found out is that the grey is really more "off white" than a true mid-tone grey. If you want a darker tone, use light blue instead.

Share this post


Link to post
Share on other sites
Posted (edited)

There is an XB program to create "pastel" colors by alternating pixels of different colors. I have it in my library somewhere - I just have to find it.

 

I couldn't find the program in my library. However, I did find the original article and listing. It appears in the January 1997 issue of MICROpendium on page 38. It purports to create 120 shades of color. Enjoyi

Edited by atrax27407
  • Like 1

Share this post


Link to post
Share on other sites
18 hours ago, atrax27407 said:

There is an XB program to create "pastel" colors by alternating pixels of different colors. I have it in my library somewhere - I just have to find it.

 

I couldn't find the program in my library. However, I did find the original article and listing. It appears in the January 1997 issue of MICROpendium on page 38. It purports to create 120 shades of color. Enjoyi

 

or this one ?

 

Spoiler

100 ! VASARELY - L. Dorais / Ottawa UG / March-May 1991
110 !
120 CALL CLEAR :: CALL S(12):: DK$="1" :: DG$="0123456789"
130 GOTO 150 :: A$,AC,AS,B$,C,C$,C1,C2,C3,C4,CC,CH,F$,K,OCH,PN,R,R1,R2,RC,S,V
140 CALL KEY :: CALL CHAR :: CALL HCHAR :: CALL VCHAR :: CALL GCHAR :: CALL SPRITE :: CALL PATTERN :: CALL LOCATE :: [email protected]
150 CALL CHAR(136,"007E424242427E000000001818000000FFC3A59999A5C3FF")! pen
160 DISPLAY AT(1,1):"DRAW WITH 3 COLORS  VASARELYactive keys are     --------": :"SCREEN 1: PICK COLOR HARMONY"
170 DISPLAY AT(5,1):RPT$("-",28):" 1-blue  4-black/white/grey  2-red   5-any three colors  3-green 6-start drawing"
180 DISPLAY AT(10,1):"SCREEN 2: DRAW PICTURE":RPT$("-",22):"    < >: pick/draw toggle":"   left: PICK from 48 chars"
190 DISPLAY AT(14,1):"  right: DRAW on 20x20 grid": :" PICK  EX> move up-down":" MODE  SD> switch left/right"
200 DISPLAY AT(19,1):" DRAW  EXSDWRZC> move cursor MODE  P> pen up " &CHR$(136)&" / down " &CHR$(137):"       O> erase " &CHR$(138)&" (pen up)"
210 DISPLAY AT(23,1):" BOTH   K> save  L> load":" MODES  N> new   Q> quit"
220 ACCEPT AT(24,28):A$ :: CALL CLEAR ! press ENTER to start
230 ! init
240 CALL CHAR(42,"FF818181818181FF",43,"0",58,"08183878381808",59,"10181C1E1C181")! grid/arrows
250 CALL CHAR(113,"0000007C4078407C",35,"0044444428281010003844447C4444440038444038044438",123,"0000000000003030")! redefs "eVAS."
260 CALL CHAR(117,"0000004464544C440000007C4444447C",122,"000000404040407C")! redefs "nol"
270 CALL CHAR(124,"00000078242424780000002428302824",120,"0000003C4040403C")! redefs "dkc"
280 A$="FFFFFFFFFFFFFFFFFF818181818181FFFFFFC3C3C3C3FFFFFFFFFFE7E7FFFFFF" :: CALL CHAR(64,A$,80,A$,96,A$)! squares
290 A$="0000000000000000007E7E7E7E7E7E0000003C3C3C3C00000000001818000000" :: CALL CHAR(68,A$,84,A$,100,A$)! inv. squares
300 A$="FFFEFCF8F0E0C08080C0E0F0F8FCFEFFFFFFE7C3C3E7FFFF3C7EFFFFFFFF7E3C" :: CALL CHAR(72,A$,88,A$,104,A$)! diag/circles
310 A$="000103070F1F3F7F7F3F1F0F070301000000183C3C180000C3810000000081C3" :: CALL CHAR(76,A$,92,A$,108,A$)! inv. diag/circles
320 A$="AA55AA55AA55AA55" :: CALL CHAR(68,A$,84,A$,100,A$)! pastels
330 GOTO 430
340 ! color choice
350 C=1 :: FOR R=1 TO 24 :: CALL HCHAR(R,2,C+63):: CALL HCHAR(R,4,C+67):: IF R/4=INT(R/4)THEN C=C+4
360 C=C+1 :: NEXT R ! put the 48 chars on screen
370 A$="FFFFFFFFFFFFFFFF" :: CALL CHAR(40,A$,41,"0",128,A$,129,"0")
380 CALL COLOR(0,16,1,1,16,1,2,6,9,3,16,1,4,16,1,11,16,1,12,16,1,13,3,15)
390 CALL S(2):: CALL D(9,"(  )  " &CHR$(128)&"  " &CHR$(129)&"  $3  ;")
400 CALL D(11,"1  2  3  4  5   6"):: CALL D(13,"      prqss")
410 CALL KEY(0,K,S):: IF S=0 OR K<49 OR K>54 THEN 410 ELSE CALL D(22,""):: CALL D(24,""):: IF K=54 THEN 510
420 ON K-48 GOTO 430,440,450,460,470
430 C1=5 :: C2=6 :: C3=8 :: GOTO 490 ! blue
440 C1=7 :: C2=9 :: C3=10 :: GOTO 490 ! red
450 C1=3 :: C2=4 :: C3=13 :: GOTO 490 ! green
460 C1=2 :: C2=16 :: C3=15 :: GOTO 490 ! grey
470 CALL D(22,"qutqr 3 xvzvr uv{"):: CALL D(24,"x1>    x2>    x3>")! enter any three colors
480 CALL A(12,C1,DG$):: CALL A(19,C2,DG$):: CALL A(26,C3,DG$)
490 GOSUB 1030 :: IF R THEN 410 ELSE 350
500 ! painting
510 CALL DS(9,13,""):: IF C1=2 THEN CALL S(13)
520 A$=RPT$("*",20):: CALL DS(2,21,A$):: CALL COLOR(2,15,16)! grid
530 CALL HCHAR(11,19,43,2):: CALL HCHAR(12,19,43,2)! define centre
540 R=2 :: C=10 :: RC=1 :: CC=3 :: AC,AS=58 :: CH=64 :: PN=0 :: CALL SPRITE(#1,136,14,9,73)
550 CALL HCHAR(RC,CC,AC):: CALL HCHAR(9,7,CH):: CALL HCHAR(12,7,AS):: CALL HCHAR(14,7,12*AS-584)
560 CALL KEY(0,K,S):: IF S=0 THEN 560 ELSE A$=CHR$(K):: S=POS("NPOKL,.Q",A$,1)+1
570 ON S GOTO 660,580,610,610,860,860,650,650,1010
580 CALL D(24,"uqw? 1> yqs  2> uv 1"):: CALL A(27,S,"12"):: IF S=2 THEN CALL D(24,""):: GOTO 560 ! new screen?
590 CALL D(24,"uqw xvzvrs? 1>y 2>u 1"):: CALL A(28,S,"12"):: CALL D(24,"")! new colors?
600 IF S=2 THEN CALL HCHAR(RC,CC,32):: GOTO 520 ELSE CALL LOCATE(#1,194,1):: CALL DS(2,21,""):: CALL VCHAR(9,7,32,6):: GOTO 380
610 IF R>21 OR C>29 OR AS=58 THEN 560 :: IF K=79 THEN 630 ! pen check
620 IF CH=42 THEN 560 :: IF PN=1 THEN PN=0 :: GOTO 640 ELSE PN=1 :: GOTO 640 ! pen toggle
630 IF PN<2 THEN PN=2 :: OCH=CH :: CH=42 ELSE PN=0 :: CH=OCH ! erase toggle
640 CALL PATTERN(#1,136+PN):: GOTO 830
650 GOSUB 1040 :: AS=K/2+36 :: CALL HCHAR(12,7,AS):: CALL HCHAR(14,7,28+12*S):: GOTO 560 ! pick/draw toggle
660 IF AS=59 THEN 720 ELSE CALL HCHAR(RC,CC,32)! pick mode
670 IF K=68 THEN AC=59 ELSE IF K=83 THEN AC=58
680 IF K=69 THEN RC=RC-1 :: IF RC<1 THEN RC=1
690 IF K=88 THEN RC=RC+1 :: IF RC>24 THEN RC=24
700 CALL HCHAR(RC,3,AC):: CALL GCHAR(RC,2*AC-114,CH):: CALL HCHAR(9,7,CH):: GOTO 560 ! put picked char on screen
710 ! draw mode
720 ON POS("DSXEWRZC",A$,1)+1 GOTO 560,730,740,750,760,770,780,790,800
730 C=C+1 :: GOTO 810 ! D> right
740 C=C-1 :: GOTO 810 ! S> left
750 R=R+1 :: GOTO 810 ! X> down
760 R=R-1 :: GOTO 810 ! E> up
770 R=R-1 :: GOTO 740 ! W> up>left
780 R=R-1 :: GOTO 730 ! R> up>right
790 R=R+1 :: GOTO 740 ! Z> down>left
800 R=R+1 :: GOTO 730 ! C> down>right
810 S=32+3*(PN>0):: IF C>S THEN C=S ELSE IF C<10 THEN C=10
820 S=24+3*(PN>0):: IF R>S THEN R=S ELSE IF R<2 THEN R=2
830 CALL LOCATE(#1,8*R-7,8*C-7):: IF PN>0 THEN CALL HCHAR(R,C,CH)
840 IF R2<>22 THEN 560 ELSE R2=0 :: GOTO 550 ! R2=22 means coming fm load
850 ! keep(save)/load picture
860 GOSUB 1040 :: IF F$<>"" THEN 880
870 CALL D(24,"|s} 1"):: ACCEPT AT(24,12)SIZE(-1)VALIDATE("1234")BEEP:DK$ :: F$="DSK" &DK$&".VASA"
880 CALL D(24,"#$%$     0>qsx"):: CALL A(12,K,DG$)! "VASA.  0>esc"
890 DISPLAY AT(24,17):"" :: IF K=0 THEN CALL D(24,""):: GOTO 560
900 F$=SEG$(F$,1,9)&STR$(K):: OPEN #1:F$,INTERNAL,FIXED 201
910 IF A$="L" THEN 960 ELSE PRINT #1:R,C,RC,CC,CH,PN,AC,AS,C1,C2,C3
920 A$,B$="" :: FOR R1=2 TO 21 :: CALL LOCATE(#1,8*R1-7,65):: FOR C4=10 TO 29
930 CALL GCHAR(R1,C4,K):: IF R1<12 THEN A$=A$&CHR$(K)ELSE B$=B$&CHR$(K)
940 NEXT C4 :: NEXT R1 :: PRINT #1:A$ :: PRINT #1:B$
950 CLOSE #1 :: A$,B$="" :: GOTO 830
960 CALL HCHAR(RC,CC,32):: INPUT #1:R,C,RC,CC,CH,PN,AC,AS,C1,C2,C3
970 GOSUB 1030 :: IF C1=2 THEN CALL S(13)ELSE CALL S(2)
980 INPUT #1:A$ :: INPUT #1:B$ :: CLOSE #1 ! load
990 FOR R2=2 TO 21 :: IF R2<12 THEN C$=A$ :: R1=2 ELSE C$=B$ :: R1=12
1000 DISPLAY AT(R2,8)SIZE(20):SEG$(C$,20*(R2-R1)+1,20):: NEXT R2 :: A$,B$="" :: GOTO 640
1010 END
1020 [email protected]+ sub and user-def subs
1030 CALL COLOR(5,C1,C2,6,C1,C2,7,C2,C3,8,C2,C3,9,C3,C1,10,C3,C1):: RETURN
1040 PN=0 :: CALL PATTERN(#1,136):: RETURN ! pen up
1050 SUB D(R,A$):: DISPLAY AT(R,8):A$ :: SUBEND
1060 SUB A(C,V,V$):: ACCEPT AT(24,C)SIZE(-2)VALIDATE(V$)BEEP:V :: SUBEND
1070 SUB S(C):: CALL SCREEN(C):: SUBEND
1080 SUB DS(A,B,A$):: FOR R=A TO B :: CALL D(R,A$):: NEXT R :: SUBEND

 

 

  • Like 3

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...