|
||||
|
We all know that the Atari is an incredibly versatile machine but there are some tasks that most people believe it cannot do. I would like to take a couple of these 'impossible' tasks and prove that the Atari is even more versatile than you thought. Everyone should know that display lists can be mixed horizontally by building a new display list but ask many experts if you can combine different graphics modes vertically across the screen and they will say it can't be done. The program GRAPHDEM here proves that it is possible to mix Graphics 8 and 9 in this way and there is no reason why you cannot amend it to include graphics 10 or 11.
A CONSISTENT MODE Both programs presented here use a graphics 8 screen as it is one of the most consistent graphics modes as far as DMA is concerned. In fact every scan line uses the same amount of DMA with the exception of the two lms scan lines. The first lms scan line is two machine cycles ahead of a normal scan line while the second is three cycles ahead. We have to take account of the differences in our timing loop. All graphics modes are, in fact, more consistent than text modes. GRAPHDEM
This program generates a screen consisting of a margin of Graphics 8 down the left hand side of the screen with the rest of the screen in Graphics 9. To add further variety, the normal 4 line Graphics 0 text window is retained. One use of this arrangement is the ability to draw graphs in 16 intensities neatly labelled with 40 column text. The technique is performed by changing the GTIA selecion in PRIOR ($D01B) at a particular point during every scan line. We end up with every scan line comprising 32 pixels of Graphics 8 followed by the rest of the screen in Graphics 9. We can access these from Basic by fooling the OS into thinking that we are in either Graphics 8 or 9 (subroutines GR8 and GR9) and then drawing to the relevant section of the screen. The DLI used is provided in source form with this article and obviously by increasing or decreasing the delay between changes to PRIOR we may increase or decrease the proportions in which the screen is split between the two modes. Obvious other applications are graphs such as pie charts and so on whilst graphic adventures could be drawn in Graphics 9 with text or status information down the side in Graphics 8. There are many other applications where labelling is required. One immediate question which arises is is whether it would be possible to do the same with ANTIC, that is, on a single scan line, change between ANTIC #E and ANTIC #F display mode. Unfortunately it doesn't look like this is possible as according to the Hardware Manuals, ANTIC's Display List Instruction Register (IR) cannot be directly accessed by the programmer. PLAYDEM
For the second example I would like to quote from De Re Atari, page 5-8 under the section Applications of Display List Interrupts. "Of course, no two sections of the player can be on the same horizontal line, so two incarnations of the player cannot be on the same horizontal line." This statement is completely incorrect and is disproved by the program PLAYDEM. By using a very precise timing loop, the program allows two incarnations of player 0 to be present in separate halves of the screen. The first incarnation can take horizontal positions 0 to 122, while the second incarnation can take horizontal positions 123 to 255. If either incarnation is outside of this range it will not be visible. The timing loop is contained within a DLI and the source listing is provided. The timing involved every scan line requires waiting until the first incarnation has been displayed before altering the player's horizontal position. Obviously this technique could quite easily be extended to all of the players (by using NOPs within the timing loop). It would also be possible to change PMBASE as well and thus have comletely independent incarnations of each player as long as they are within certain screen bounds. To position these incarnations of player 0, the horizontal position for the first incarnation should be stored in location 203 and the horizontal position for the second in 204. In the program I have also displayed all the other players and missiles and the playfield to prove that there is no cheating!! This is, obviously, a very powerful technique and it is feasible that in a game such as PAC-MAN we could generate all the ghosts from merely one player.
|
||||