Jump to content
Synthpopalooza

Super IRG modes using Graphics 1

Recommended Posts

Looks like I am at it again ... here's a test screen I did up ...

 

post-23798-0-31844000-1313895163_thumb.png

 

 

This is Graphics 1 using GTIA setting 128 (Graphics 10). I am using a font I designed originally for the Super IRG mode. What is happening here, is that the font is being changed every VBLANK, along with the screen memory. You have here a total of 9 color palettes, with the intermixing of 8 colors creating anywhere from 9-16 unique colors per palette. In total, 36 colors can be displayed. You have the first 64 characters of the character set available, as in normal Graphics 1.

 

How it works: You set up a Graphics 0 screen, change the lines to reflect ANTIC 6 (Graphics 1). This essentially creates memory for 2 Graphics 1 screens which will get interchanged every VBLANK. The method I use here is changing the screen memory in the display list.

 

Next, you reserve memory for a double 512K font (1024 bytes in total) and then shift CHBAS (756) every vblank.

 

It will be helpful to know how characters are displayed in Graphics 1.10 ... if you remember, graphics 1 uses only the first 64 characters in the character set, but the screen code determines the color (0-31 is PF0, 32-63 is PF1, 64-95 is PF2, and 96-127 is PF3). Graphics 1.10 is different. You get three palettes of 4x8 characters (which is like ANTIC 4/5) ... the palettes are laid out as such:

 

Screen code range: 00 01 10 11

0-31 704 704 704 704

32-65 704 705 708 709

66-95 704 706 712 712

96-127 704 707 708 711

 

when the high two bits of your screen code are 0, the character is completely blank. Otherwise, you have arrangements of between three and four colors per palette. The trick then, is to print the exact same character at the exact same location on both screens, but change the palette (i.e. print the same character from a different range). This gives you access to 9 unique palettes, with anywhere from 9 to 16 colors per palette. Some colors will be shared between palettes, but in total you can display 36 colors onscreen. This mode reminds me much of how graphics would be displayed on a Commodore 64 in low resolutions.

 

As a further explanation, here are the composite screens used to generate this display:

 

post-23798-0-42860100-1313896387_thumb.png post-23798-0-15871900-1313896413_thumb.png

 

 

These are two seperate Graphics 1.10 screens which are being blended.

 

I have attached an ATR so you can see this for yourself. Other GTIA combinations are possible from this as well.

 

super110.atr

Edited by Synthpopalooza

Share this post


Link to post
Share on other sites

This is APAC 1:

 

post-23798-0-15150800-1313897123_thumb.png

 

 

This time, GTIA is shifted from mode 9 to mode 11 along with the screen and CHBAS shift. This gives off 10 lum x 9 chroma plus the BG color, for 100 colors onscreen at once. Again, 9 unique palettes of 16 colors each in a 4x4 grid are used.

 

Here is the palette layout:

 

Screen code range: 00 01 10 11

0-31 0 0 0 0

32-65 0 1 4 5

66-95 0 2 8 10

96-127: 0 3 12 15

Again the lower range is undisplayable, so this leaves 3 palettes of 3 unique colors plus the background, which are again mixed amongst each other to create the 100 colors (4x4 per char).

Here are the composite screens:

post-23798-0-63478700-1313897609_thumb.png post-23798-0-12622700-1313897629_thumb.png

ATR is here to see for yourself:

apac1.atr

 

 

 

Share this post


Link to post
Share on other sites

And now, HIP 1:

 

post-23798-0-78441400-1313938800_thumb.png

 

 

This is again in Graphics 1, but this time the GTIA is cycled from mode 9 to mode 10. In addition to the 80 colors which can be perceived onscreen at once, there is a pixel shift in graphics 10 which increases the apparent resolution to 160 pixels across. In essence, each character grid is 7 pixels wide with an artifact on either side of the grid.

 

Careful color register selection can produce 3 groups of color palettes, each one of three varying shades of brightness.

 

Here are the composite screens:

 

post-23798-0-40399700-1313938968_thumb.png post-23798-0-99065600-1313938985_thumb.png

 

 

ATR is here:

 

hip1.atr

 

Share this post


Link to post
Share on other sites

Finally, CHIP 1:

 

post-23798-0-57896200-1313939804_thumb.png

 

 

This time, it is the GTIA being flipped from mode 10 to mode 11. As above, you get 80 colors, and the enhanced 160 pixel resolution. Here, I've chosen Graphics 10 color settings that augment the colors which are in the Graphics 1.11 palettes. This gives you 9 unique color palettes to choose from.

 

Composite screens:

 

post-23798-0-05697400-1313939919_thumb.png post-23798-0-91128400-1313939933_thumb.png

 

 

And of course an .ATR

 

chip1.atr

 

 

My next project, of course, will be to do another ICE editor which can edit in these new character modes. :)

Share this post


Link to post
Share on other sites

Another one, this time CIN 1:

 

post-23798-0-93392200-1313947938_thumb.png

 

 

This is in Graphics 1, with the GTIA cycled between normal mode, and gr. 11

 

This time you get a full 8x8 character grid, but with 8 colors possible per char. In addition, you get 12 unique color palettes. The char layout is similar to my DIN (antic 2/antic 4) mode, and I reused a DIN font I had done inspired by the Robbo game, for this demo.

 

In total, 50 colors can be seen here at Graphics 1 resolution.

 

Composite screens:

 

post-23798-0-42424100-1313948043_thumb.png post-23798-0-01410900-1313948053_thumb.png

 

 

And the .ATR (run CIN1.TUR)

 

cin 1.atr

 

Share this post


Link to post
Share on other sites

Another one, this time CIN 1:

 

post-23798-0-93392200-1313947938_thumb.png

 

 

This is in Graphics 1, with the GTIA cycled between normal mode, and gr. 11

 

This time you get a full 8x8 character grid, but with 8 colors possible per char. In addition, you get 12 unique color palettes. The char layout is similar to my DIN (antic 2/antic 4) mode, and I reused a DIN font I had done inspired by the Robbo game, for this demo.

 

In total, 50 colors can be seen here at Graphics 1 resolution.

 

Composite screens:

 

post-23798-0-42424100-1313948043_thumb.png post-23798-0-01410900-1313948053_thumb.png

 

 

And the .ATR (run CIN1.TUR)

 

cin 1.atr

Great work - much easier to visualize with the new graphics.

Share this post


Link to post
Share on other sites

This is PCIN 1:

 

post-23798-0-17859300-1314073710_thumb.png

 

 

Again in graphics 1, with GTIA being shifted between normal (0) and Graphics 10 (128) ... careful selection of color registers creates some subtle gradients on the numbers, plus the color registers of 708, 709, and 711 are common to both display modes, this also helps to reduce flicker. No color register shifting is done here at all, except for 712, which is the BG color in normal mode, but becomes a regular color in mode 10.

 

6-8 colors can be used per character cell, with 12 unique color palettes and 37 colors on screen at once. The font I used here is one I had used on my DIN (Antic 2/Antic 4) mode, as the character grid layout is the same (4x8 overlaid on 8x8).

 

There are 3-4 level gradients in the characters ... you will notice that the last 4 palettes feature only a 4 level gradient, this is because that Gr. 10 palette uses only 3 color registers ... BG + 711 + 712 + 712 ... the other two palettes have 4 color registers, however register 708 gets shared between those two.

 

You will notice the GR. 10 pixels are shifted to the right, this is due to the mode 10 color clock shift. A flip to HSCROL when the display is in normal mode, along with a custom display list, will correct this.

 

Here are the composite screens:

 

post-23798-0-21411400-1314073722_thumb.png post-23798-0-68496500-1314073731_thumb.png

 

 

And here's the ATR ... run PCIN1.TUR

 

pcin 1.atr

 

Edited by Synthpopalooza

Share this post


Link to post
Share on other sites

Revisiting this thread again ... :)

Since completing the beta version of ICE IRG 20 (for editing in the GTIA-Graphics 1 modes) font editor, I've embarked on a project: writing a demo game to show off the Super IRG 20 mode. This is a Super IRG style mode, but set using Graphics 1 or 2, and the GTIA (623) put to value 128 (Graphics 10). What this essentially gets you is a low-resolution version of Super IRG (80 pixels across, 20x24 or 20x12 character resolution) but with the ability to use up to 36 colors onscreen, spread across 9 different color palettes.

To understand how this mode works, it is crucial to have an understanding of how the GTIA chip behaves when setting location 623 to to value 128 (mode 10) while under Graphics 1 or 2. This is a hardware graphics mode that I have named Graphics 1.10 (or 2.10). When set in this manner, you essentially get a low-res version of Antic 4, where the characters are 4x8 pixels in resolution, and 3 to 4 colors usable per character cell. The layout is as follows:

 

post-23798-0-62390900-1392537232_thumb.png

Range 0: uppercase, screen codes 0-31, are undisplayable and should be ignored (all four bitpair settings default to the bg color at 704)

Range 1: lowercase, screen codes 32-63 ... 00 - background (704) 01 - PM1 (705) 10 - BAK (712) 11 - PF1 (709)

Range 2: uppercase inverse, screen codes 64-95 ... 00 - bg (704) 01 - PM2 (706) 10 and 11 - BAK (712)

Range 3: lowercase inverse, screen codes 96-127 .. 00 - bf (704) 01 - PM3 (707) 10 - BAK (712) 11 - PF3 (711)

For this mode, registers PF0 (708) and PF2 (710) are not available here.

Also, register 712 gets used across the last three ranges. In range 2, it makes two of the color settings. Characters in this range can only display three colors, not four.

So in essence, we have three color palettes available here, which I have named A, B, and C.

Using the Super IRG method (which alternates character sets every VBLANK to gain more colors) it is possible to get 10 colors per character cell, or 6 colors, in the case of Range 2. This would normally allow up to 20 colors onscreen at once.

 

However, the number of colors that can be displayed onscreen, is dramatically increased if you double-buffer the screen. What this means is, you allow enough memory for two Graphics 1 (or Graphics 2) screens, and use two display lists, each one pointing to the memory for each screen. These get swapped out every VBLANK along with the font changes. This method allows for the blending of the three color palettes amongst each other, giving you in essence 9 unique color palettes with anywhere from 6 to 15 colors available in each palette.

 

A screenshot of the ICE IRG 20 color tuner gives an example:

 

post-23798-0-16047200-1392533219_thumb.png

 

Each line of colors represents one of the 9 color palettes, The chart below (using these colors as an example) explains things a bit further:

 

post-23798-0-20773400-1392536200_thumb.png

 

The palettes are named after their component ranges (A,B, or C). Palettes AA and CC allow for 10 colors per character cell. Palette BB only allows for 6 (due to the repetition of bit pairs 10 and 11 in range B). Palettes AB, CB, BA, and CA allow for 11 unique colors. Palettes AC and CA allow for the maximum 15 colors per character cell. In all, this mode allows for 36 unique colors onscreen at once divided up among the 9 palettes.

 

So, to use a certain palette, you would print the same character from each range, at the same location on each of the two Graphics 1 screens that are being swapped.

 

The following Turbo BASIC example (along with .ATR) illustrates this.

 

post-23798-0-46986500-1392538313_thumb.png super irg 20 demo.atr

 

Run D:IRG20DEM.TUR from the above .ATR

 

This prints a line of characters, from each of the 9 palettes. An examination of the code will show what is needed to print characters in this mode. So, for example, to plot an "A" at position 0,0 using palette AB, you would need to put a lowercase "a" at 0,0, then an inverse uppercase "A" at 0,20.

 

If you run D:IRG20A.TUR from the .ATR, you will see this:

 

post-23798-0-87698200-1392538322_thumb.png

 

This time, Super IRG 20 is being used from Graphics 2. The characters are larger, with the same aspect ratio as normal Antic 4 (Super IRG) mode.

 

Some further notes:

 

It is possible to use checkerboard dithering (i.e. blending identical colors on different frames) to reduce flicker, just as in regular Super IRG mode, however this technique only works when identical palettes are being blended (i.e. Palettes AA, BB, and CC), In other palettes, the checkerboard pattern will show up and ruin the look of the characters. The exception to this is, of course, blending the BAK (712) register with the PM0 (704) register, as these two colors are common to all 9 palettes and can be checkerboarded to reduce flicker.

 

Also, while some palettes share the same colors (CA and AC, AB and BA, BC and CB) they are not interchangeable with each other. The color ordering is different and the characters will be colored uniquely across these palettes.

 

My next posts to this thread will demonstrate some of the other IRG 20 modes, including modes inspired by the APAC (9+11), HIP (9+10), and CHIP (11+10) modes. The latter two, allowing you to use multicolor Graphics 1 characters with a simulated 160 pixel (or 7x8) resolution.

Edited by Synthpopalooza
  • Like 1

Share this post


Link to post
Share on other sites

The next mode demonstrated: Super IRG+ 20

 

This is like the previous Super IRG 20 except that color palette changes on all the available registers excepting the background (705, 706, 707, 709, 711, and 712) are made each VBLANK instance. This increases the number of colors available to 63, but at a tradeoff of more flicker. Below is an example color chart for Super IRG+ 20

 

post-23798-0-20322400-1392751349_thumb.png

 

The advantage here of course is a wider color selection to make each of the 9 palettes stand out more from each other. The colors per palette are 9 colors (BB), 12 colors (AB, BA, CB, BC), and 16 colors (AA, CC, AC, CA).

 

As before, I have two demos that show the expanded color palette. RUN "D:I20ADEM.TUR" and "D:I20ADEM2.TUR" from the .ATR below

 

post-23798-0-07575600-1392751358_thumb.png Graphics 1

post-23798-0-04356700-1392751370_thumb.png Graphics 2

super irg+ 20 demo.atr

 

For the demos in BASIC, I elected not to shift register 712, leaving it a value of 10 (grey). This reduces the color resolution to 62, but allows for a solid non-flicker color in the mix. This is also a good practice if you ever need to use PMG's in this mode. They won't work with the mode normally as PM0 is the background color, but would work normally if you elected to hardcode bitpair 10 (712) as your character background. This would of course leave a border colored as PM0.

Edited by Synthpopalooza

Share this post


Link to post
Share on other sites

It is interesting to note that while I have termed this group of modes as "IRG 20" modes, they still involve the usage of GTIA modes. The previous two Super IRG 20 demos involved using Graphics 10. It is also possible to use the other GTIA modes 9 and 11 in this fashion too. Using 9 and 11 together while in Graphics 1 creates an IRG 20 mode that I have termed "APAC 20" (named after the mode which combines Graphics 9 and 11).

 

APAC 20 is very different from other modes which combine 9 and 11. To understand this, it helps to understand the behaviour of Graphics 9 and 11 under Antic 6 and 7 (Graphics 1 and 2), which is radically different from under normal Antic F or Antic 2 usage.

 

To start off with, here is a chart for Graphics 1.9 (GTIA 9 monochrome shade mode under Graphics 1)

 

post-23798-0-75018100-1392844122_thumb.png

 

As with Graphics 1.10, the lower range ("uppercase") is not displayable. The other three ranges have shades in each range laid out from darkest to brightest. One limitation which is apparent, is that any gradient level greater than 4 shades per each character is impossible here. Also, as there are only 9 shades plus the background here, we miss out on 6 greyscales here (6, 7, 9, 11, 13, and 14).

 

Basically range A will produce darker characters, range B does brighter ones, and range C does the brightest.

 

Now for the layout of Graphics 1.11 (GTIA 11 hues under Graphics 1).

 

post-23798-0-36337400-1392844146_thumb.png

 

The layout here is analogous to Graphics 1.9, but using hues instead. We are, as before, strictly limited to 9 hues here plus the background color which can (unlike other Graphics 11 modes) be varied between 0 (black), 1 (gold), 2 (orange), and 3 (red-orange) without sacrificing the 9 colors here.

 

So basically, APAC 20 is a mixing of these two hardware modes, which gives you 100 colors at an ordering of 10 hues (9 + background) by 10 shades. While more limiting than other 9+11 modes, some very colorful displays are still possible here. You again get 9 color palettes, with three for each color group of varying brightness. Here is a color chart for APAC 20:

 

post-23798-0-20963600-1392844192_thumb.png

 

The colors shown here are with the NTSC palette.

 

Attached is an .ATR with two demos: D:APC20DEM.TUR (for Graphics 1) and D:APAC20A.TUR (for Graphics 2)

 

post-23798-0-84716900-1392844214_thumb.png D:APC20DEM.TUR

post-23798-0-88786000-1392844227_thumb.png D:APAC20A.TUR

apac 20 demo.atr

 

When you run these demos, press a key on the keyboard to cycle through the four possible background hues for this mode (0 to 3). You will see that the 9 Graphics 11 base colors remain constant when the BG color is changed.

 

It may be possible to access the "hidden" Graphics 11 colors in this mode, but it requires the usage of HSCROL, and the plotting of neighboring characters from different ranges. When such characters are plotted, and the character line is shifted an odd number of color clocks over, the bit pattern shifts as well, and the interface from different ranges unlocks extra hues. An experiment for next time perhaps. :)

 

Other IRG 20 mode combinations are possible. My next posts will be with the HIP (9+10) and CHIP (11+10) settings, which use the famous Graphics 10 1/2 pixel shift to create the illusion of 160 pixel resolution, or 8x8 characters with up to 70 colors or 20 greyscale possible.

Edited by Synthpopalooza
  • Like 1

Share this post


Link to post
Share on other sites

And now, as promised: CHIP 20

 

This mode is a variation on the HIP technique, except that it is Graphics 11 and 10 we are blending here, under Graphics 1 and 2. This mode is mainly useful for making fonts and graphics with subtle gradients. You get between 12 to 16 colors per character cell, with 80 colors onscreen at once.

 

Here is a quick shot of the palette I used for this demo, from the ICE IRG 20 editor:

 

post-23798-0-01015700-1392855320_thumb.png

 

For this one, I chose Graphics 10 colors that subtly gradate from the bright yellow (at 712) that is in all palettes. The PM registers (705-707) are set to a slightly lower luminance than the Graphics 11 colors, while the PF registers (709 and 711) are set to the same luminance as the Graphics 11 colors. Register 712 is set to one step higher luminance. This helps keep flicker to a minimum.

 

Here is a closeup of the letter "A" being edited in this mode:

 

post-23798-0-08542800-1392855346_thumb.png

 

In this font, I am using a diagonal gradient, which subtly changes colors. The pixel shift causes the gradient to shift not only vertically, but horizontally as well.

 

Some tips to edit characters in this mode:

 

Letters and numbers are limited to a virtual resolution of 6x8 ... any more and the letters will collide with each other and make a mess, because your graphics will have one artifact pixel hanging off of either side (Graphics 11 to the left, Graphics 10 to the right).

 

When drawing the letters, it is a bit tricky. Here's a closeup of a sample 16 color palette from ICE IRG 20

 

post-23798-0-63559900-1392855386_thumb.png

 

Color 0 is the BG color.

Colors 1, 2, and 3 are the Graphics 11 component colors for this palette

Colors 4, 8, and C are the Graphics 10 component colors for this palette

 

ICE IRG 20 only allows for editing in 4 columns, but the component colors can be used to shape your character into a higher resolution. The idea is, first draw the character using the composite colors (5 through 7, 9 through B, and D through F). Once you have a rough outline, you can apply the component colors and use them like a chisel to add on the extra transition pixel to make your character into 160 pixel resolution. You will want to use Graphics 11 components to the right of your drawn pixel, and Graphics 10 components to the left. Around the edges, using color 0 will remove any extra stray pixels. This method will round off your characters very well.

 

As before, you get 9 different color palettes to display your characters, with a lot of subtle transitions possible. Good practice here is to make register 712 in Graphics 10 your brightest color, as this color is common to all palettes and will make a good common bright color.

 

If you want to use PMG's, an alteration is necessary: Set 712 in mode 10 to your BG color and use 704 as your brightest color. This is necessary for your PMG's to show up. The downside to this is, you get a flickering border in the color of PM0, which can possibly be hidden with missiles, or with a DLI color change on PM0 to kill off the top border.

 

Here are demos for Graphics 1 (D:CHP20DEM.TUR) and Graphics 2 (D:CHIP20A.TUR) to be run from the .ATR below.

 

post-23798-0-51117500-1392855485_thumb.png D:CHP20DEM.TUR

post-23798-0-35274100-1392855511_thumb.png D:CHIP20A.TUR

chip 20 demo.atr

 

A similar method can be used for HIP 20 mode (9+10) but it is a bit more tricky. For next time. :)

Edited by Synthpopalooza
  • Like 2

Share this post


Link to post
Share on other sites

Nice experiments !

I'm not a huge fan of 'flickering' modes, but I get it that some of the combinations are not so bad.

Share this post


Link to post
Share on other sites

I think that all of these modes would work well using scanline changes (like in APAC, or that Tetris CIN game I remade), except for Super IRG+ 20 which needs too may color register changes. The only downside to this is you would only have three palettes (AA, BB, and CC) instead of 9.

 

Additionally, I think it may be possible to do horizontal fine scrolling on the HIP/CHIP modes at 60 frames per second (50 PAL). The idea involves changing HSCROL with the other registers every VBLANK, and stepping the mode 11 scroll one cycle before the mode 10 scroll, this makes the picture shift one color clock per cycle. Another experiment for next time, but it would work well for a horizontal scrolling shoot em up in CHIP 20 mode I think ... only needs 1K for the char memory, and 12x20 character lines per screen in graphics 2.

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.
Note: Your post will require moderator approval before it will be visible.

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...