Jump to content
IGNORED

Atari v Commodore


stevelanc

Recommended Posts

I thought you were also a good Atari programmer. You can change the font at any DLI.

 

It's not the same as having a single 256 character font you can arbitarily place around the screen and if you're rendering software sprites on character screens with detailed backgrounds, that's around the time you start running out of space in a 128 character font. That's the problem i had with Reaxion on the Atari 8-bit, eventually it needed three fonts for the in-game display to retain even that much detail and the Plus/4 version just uses the one and requires far less CPU overhead to maintain it.

 

Yeah, great they have Raster interrupt, but Atari has the DLI, IRQs, and simply writing cycle exact code that stays in sync.

 

It's swings and roundabouts, we come back to the subjective opinions as to if it's better to have the DLI helping out or the ability to do stuff whenever you want with raster interrupts; C64 coders like being able to use character modes and kick interrupts in halfway down a character for example, the Atari can't do that with the DLI as far as i'm aware and has to trip an interrupt early and wait for the remaining scanlines. Staying in sync on the C64 isn't as big an issue as you're trying to make it sound either, demos do it all the time and games like Mayhem In Monsterland or Fred's Back have to be cycle accurate for their scrolling routines - in the majority of cases it's not really a need to be more accurate than triggering on the right scanline anyway, though.

 

As supercat suggested, all those color registers would be lot more useful if they had a good palette. If they kept adding sprites, they would end up with more color registers than colors!

 

Actually, there are almost that many anyway; two shared and eight individual for sprites with border, screen and three multicolour registers for characters. But you say that as though having individual registers for each element is a bad thing or something...

 

As i said previously, the "hybrid" machine that Heaven was asking for nearly exists in the C64DTV - essentially it acts like a C64 but with a 256 colour palette (which is laid out similarly to the Atari) and extra functions to allow window scrolling. It also adds a large block of extra RAM and a memory window system like the Ataris use and a DMA (and two source blitter on the later PAL models) to shunt data to and from expansion RAM like C64 RAM expansions do.

Link to comment
Share on other sites

In bandwidth terms the Vic is better as it has a 12 bit bus :) - that's 50% more.

 

Even if a 16 colour mode took most of the b/w it would still be usefull for graphics.

 

80 column text would be extremely difficult ... If you spread the character fetch you could run 80+10 fetches per line though - widescreen would be 96+12 which would probally be every possible cycle :)

80+16 fetches woud fill the char buffer in five lines - leaving 3 lines with a little more cpu activity :)

Link to comment
Share on other sites

Yeah, great they have Raster interrupt, but Atari has the DLI, IRQs, and simply writing cycle exact code that stays in sync. As supercat suggested, all those color registers would be lot more useful if they had a good palette. If they kept adding sprites, they would end up with more color registers than colors!

 

on the c64 wsync takes extra code, but it "stay in sync" after that naturally. all those color registers would be not so useful with a big palette. 8 bit colors means instead of 3 different colors/chars the machine ends up with 1.5.. not a lot more useful I'd say. There was a reason why the designers decided beside 4 bit colors.

Link to comment
Share on other sites

']aehm... and please upgrade my Atari with

 

- 8 24x21 mono or 12x21 sprites multi

- colour ram per cell

- 256/512 chars font

- "shadow ram"

- hscrol per highres pixel

 

that would be enough for me... ;)

 

btw. you don't need to have Wsync as there are ways around, DLI = Raster Interrupt

btw. more text modes... the c64 has already more text modes than we Atarians know... check out www.codebase64.org

 

I thought you were also a good Atari programmer. You can change the font at any DLI. 512 chars-- how are you selecting the char using 8-bit value?

 

--- please look in the c64 hardware manual what I ment with 512 char... remember pressing shift + commodore key? and of course you can select fonts on via IRQ. Only restriction is the VIC-Bank but there are aways to avoid that too. And please ask Tezz and co what the main issue was with Bomb Jack... it was the font restricitons 128 char per "zone".

 

and this leads to c64 conversion to 800... you are not able to take the gfx directly as 256 redefinable chars per font vs 128 chars.

 

Yeah, great they have Raster interrupt, but Atari has the DLI, IRQs, and simply writing cycle exact code that stays in sync. As supercat suggested, all those color registers would be lot more useful if they had a good palette. If they kept adding sprites, they would end up with more color registers than colors!

 

--- please again.... yes... I thought Wsync is great, too... but there are "standard" methods for c64, too to get the same... or how do you think would all these demo tricks possible without syncing the IRQs with the raster beam? so...now I tell you some other few important details... I can set on c64 at any raster position not only where display list bit is set... handy, too... but have you ever tried to do vertical scrolling plus DLIs? see my Boinxx... it is tricky, too as the DLI will move when doing vscroll.... so you have to correct that...on c64...scrolling is not binded to raster IRQs.

 

Yes, I am programmer and touched the evil one and my love. But please have you ever coded a game on both? then you realise the 256 char font vs 128 char font... sure you can come cross like in my game with 7 fonts (3 per charline = 1 zone) but for what? just to gain 1 extra colour and to have char modes instead of bitmap mode or using hardware sprites.

 

sure you can try to rebuild everything by software plus antic/gtia techniques but in terms of games I have to state that the c64 has more to offer "out of the box" esp. when using assembler.

 

 

but I forgot what I am missing on c64 side... a linear bitmap mode...

Link to comment
Share on other sites

I thought you were also a good Atari programmer. You can change the font at any DLI.

 

It's not the same as having a single 256 character font you can arbitarily place around the screen and if you're rendering software sprites on character screens with detailed backgrounds, that's around the time you start running out of space in a 128 character font. That's the problem i had with Reaxion on the Atari 8-bit, eventually it needed three fonts for the in-game display to retain even that much detail and the Plus/4 version just uses the one and requires far less CPU overhead to maintain it.

 

Yeah, great they have Raster interrupt, but Atari has the DLI, IRQs, and simply writing cycle exact code that stays in sync.

 

It's swings and roundabouts, we come back to the subjective opinions as to if it's better to have the DLI helping out or the ability to do stuff whenever you want with raster interrupts; C64 coders like being able to use character modes and kick interrupts in halfway down a character for example, the Atari can't do that with the DLI as far as i'm aware and has to trip an interrupt early and wait for the remaining scanlines. Staying in sync on the C64 isn't as big an issue as you're trying to make it sound either, demos do it all the time and games like Mayhem In Monsterland or Fred's Back have to be cycle accurate for their scrolling routines - in the majority of cases it's not really a need to be more accurate than triggering on the right scanline anyway, though.

 

As supercat suggested, all those color registers would be lot more useful if they had a good palette. If they kept adding sprites, they would end up with more color registers than colors!

 

Actually, there are almost that many anyway; two shared and eight individual for sprites with border, screen and three multicolour registers for characters. But you say that as though having individual registers for each element is a bad thing or something...

 

As i said previously, the "hybrid" machine that Heaven was asking for nearly exists in the C64DTV - essentially it acts like a C64 but with a 256 colour palette (which is laid out similarly to the Atari) and extra functions to allow window scrolling. It also adds a large block of extra RAM and a memory window system like the Ataris use and a DMA (and two source blitter on the later PAL models) to shunt data to and from expansion RAM like C64 RAM expansions do.

 

I have one here at work... maybe I should upgrade that with keyboard & power supply... ;)

 

And TMR is right regarding the 128/256 font.... I was just posting my message before I read his post.

Link to comment
Share on other sites

I have been playing around with 160*200*8, 160*200*10, and 160*200*11 modes (w/o interlace) on Atari and I don't have any problem setting up my palette using the OR player mode. For example, set register 704 to 2, 705 to 4 and the OR will be 6 and you have 3 shades of gray using 2 indices.

 

And what about if you want three colours and the third isn't the value produced by the OR?

 

C64 would have been better off doing the OR or some logical operation rather than having two fixed color registers. So on Atari if I have two multicolored sprites, I can get 6 unique colors. On C64, if I use two multicolored sprites I can get 4 unique colors.

 

Well yes... although that does mean you're running the Atari sprite hardware at full tilt and the C64 is leaving three quarters of it's sprites idle so as comparisons go it's a rather weak way of "winning". Even if we turn off half the C64 sprites and only use the same number that the Atari is using for those two three colour objects, if the C64 overlays two multicolour sprites and each object uses both unique sprite registers and just one of the shared multicolours (so they get one each) then it can match exactly what you're doing with the Atari except that the third of those colours isn't governed by a calculation based on the other two and can be selected by the programmer.

 

If we use the C64 hardware at "full tilt" rather than hobbling it for the example, with half the hardware sprites overlaid to create one of two objects per scanline (which is what the Atari is doing) that's four unique and two shared colours per object or five totally unique colours if we distribute the shared colours between the two as before.

Link to comment
Share on other sites

In bandwidth terms the Vic is better as it has a 12 bit bus :) - that's 50% more.

 

 

The Atari has 2 graphics chips. One that has a 16 Bit Adress bus and one that has 8 Bit registers for colour counting... The colours are only limited by the GTIA.

 

Even if a 16 colour mode took most of the b/w it would still be usefull for graphics.

 

80 column text would be extremely difficult ... If you spread the character fetch you could run 80+10 fetches per line though - widescreen would be 96+12 which would probally be every possible cycle :)

80+16 fetches woud fill the char buffer in five lines - leaving 3 lines with a little more cpu activity :)

 

The Char fetch would not be necessary if they were stored in the external memory. Antic only was needed for down-compatibility to the older machines and for extensive screenusage.

Only some command was needed then. a command that tells "E-GTIA" -> now compatibility mode -> now extended mode...

 

The extended mode could be controlled by ANTIC's DMA. The Screendata is pre loaded and the DMA controls what's happening on the screen.

There were two ways to store the screen data into the external RAM

1. Simply Data polling via writing into registers (good for Business use and 80 coloumns)

2. An "E-GTIA" Mode that can be loaded through a special command via ANTIC's DMA

Link to comment
Share on other sites

And what about if you want three colours and the third isn't the value produced by the OR?

 

Good point, but let's look at VIC2 sprites. 2 out of 3 colours are shared by all sprites. This doesn't happen on atari ;)

 

That's the reason why us atarians may use softwaresprites instead. Then, all we need to do is add one PM underlay to give us the 'same' freedom as on C64 (at least when the first 2 palette-colours of the sprites are the same as the gfx palettes)

 

....but, what's left to discuss? we don't need to say 1000 times that c64 sprites are way more powerful. I wouldn't even call PMG sprites.

 

So, in fact, when we compare c64 to atari, we could say it's an improvement in a lot of aspects (far not all though). To make a 'fair' comparison, I'd only like to add memory (which could be put into a cartridge). Let's say 64kb --> 320kb. Then, some of the sprites can be simulated by unrolled loops of code. Maybe there's some space left to include one digi-channel of sound to add some SID-like features. With a lot of memory, even analogue filters could be 'emulated'.

 

Standard atari 8bit including a (external) memory expansion is very close to C64 in my opinion. That's all we can add without making it a totally different machine. I think a memory expansion is a fair upgrade, from the 1978 point of view, to lift a8 to the 1982 level.

Edited by Analogue Multiplexer
Link to comment
Share on other sites

And what about if you want three colours and the third isn't the value produced by the OR?

Good point, but let's look at VIC2 sprites. 2 out of 3 colours are shared by all sprites. This doesn't happen on atari ;)

As I mentioned above: You need 4 players to have two 3-color players on Atari with the OR-restriction on the 3rd color. Take 4 C64 sprites and join them similar to A8 player joining -> you have 3 independent colors for both resulting sprites and even 4 spare sprites left with another 4 free colors + 2 combined colors. On A8 the missile colors are 100% shared with the player colors, so by using the C64 sprites that way you have much more freedom on color choice and still much bigger sprites.

 

....but, what's left to discuss? we don't need to say 1000 times that c64 sprites are way more powerful. I wouldn't even call PMG sprites.

"Sprites" is just a more general term than "Players" and "Missiles".

 

Standard atari 8bit including a (external) memory expansion is very close to C64 in my opinion. That's all we can add without making it a totally different machine. I think a memory expansion is a fair upgrade, from the 1978 point of view, to lift a8 to the 1982 level.

320k in 1982?

Link to comment
Share on other sites

In bandwidth terms the Vic is better as it has a 12 bit bus :) - that's 50% more.

 

 

The Atari has 2 graphics chips. One that has a 16 Bit Adress bus and one that has 8 Bit registers for colour counting... The colours are only limited by the GTIA.

 

That's got almost nothing to do with bandwidth though...

 

Even if a 16 colour mode took most of the b/w it would still be usefull for graphics.

 

80 column text would be extremely difficult ... If you spread the character fetch you could run 80+10 fetches per line though - widescreen would be 96+12 which would probally be every possible cycle :)

80+16 fetches woud fill the char buffer in five lines - leaving 3 lines with a little more cpu activity :)

 

The Char fetch would not be necessary if they were stored in the external memory. Antic only was needed for down-compatibility to the older machines and for extensive screenusage.

Only some command was needed then. a command that tells "E-GTIA" -> now compatibility mode -> now extended mode...

 

The extended mode could be controlled by ANTIC's DMA. The Screendata is pre loaded and the DMA controls what's happening on the screen.

There were two ways to store the screen data into the external RAM

1. Simply Data polling via writing into registers (good for Business use and 80 coloumns)

2. An "E-GTIA" Mode that can be loaded through a special command via ANTIC's DMA

 

That's a really complex scheme though - why have external memory when the internal memory is fast enough

If you were redesigning the XL(or XE ) you could just use faster memory - colclk/1.5 rather than 2 would give you a lot more clock cycles for antic dma during a line.

The changes I'm thinking of are probally more limited, because I thinking what could have been put in for use in the 800XL ( or 130XE ) by Atari at that time - for the price they wanted to sell the machine

Link to comment
Share on other sites

Overscan not useful?

 

Then why do more than half the C-64 demos out there get the C= owners dribbling with joy over something as trivial (to an Atarian) as sprites in the border?

 

IMO, one of the biggest shortcomings by far of the C-64 was the 320x200 fixed architecture. Using sprites in the border is useful only in the context of things like status displays for games.

 

its just a technical stunt, appart from that its not useful. and why is 320x200 is a shortcoming? how many % of the a8 games use overscan ?

 

the biggest shortcoming by far of the c64 is the slow cpu believe me. but if you look at it with a perspective its the price it pays for having VICII being able to do all the sprites, and colors etc.

C64's biggest shortcoming is that is was a poorly made POS.

Link to comment
Share on other sites

C64's biggest shortcoming is that is was a poorly made POS.

 

When i got my 800XL for Christmas it didn't work properly, it would throw up a red screen four or five times a day on average so i returned it a few days after new years day, described the fault to the clerk in the shop and he didn't even bother firing it up to test the problem because the chain of stores had already received several hundred returns with the same issue by that point. Compared to my first C64, a 1984 issue machine that had been thrashed by it's previous owners (a local software development firm) and subsequently took a major pounding from me as well but still works to this day, i know which one i'd call poorly made and it doesn't tally with what you've said...

Link to comment
Share on other sites

And what about if you want three colours and the third isn't the value produced by the OR?

 

Good point, but let's look at VIC2 sprites. 2 out of 3 colours are shared by all sprites. This doesn't happen on atari ;)

 

No, but running out of sprites when there are two on a scanline doesn't happen on the C64 either and i know which of the two i consider to be less of a disadvantage...

 

That's the reason why us atarians may use softwaresprites instead. Then, all we need to do is add one PM underlay to give us the 'same' freedom as on C64 (at least when the first 2 palette-colours of the sprites are the same as the gfx palettes)

 

That's a bloody huge "at least when" you have there mister... =-)

 

i'd disagree about the "same" freedom too, since the CPU load per software sprite is vast compared to what the C64 needs to juggle it's hardware; it may be only two thirds the CPU power (give or take) but we're talking a significant amount of data being chunked around per frame and all the pre-stored stuff to account for.

 

Lets "keep it simple" (since some people seem to like doing that =-) and assume a static screen and two objects with three colours that are 8x16 pixels and yes i'm weighting this in the Atari's favour by not asking for C64-sized objects; to move both every frame the Atari has to clear and then write 32 bytes per object, so 132 bytes per frame including the four horizontal position registers compared to the C64's twelve register writes (since we're using four hardware sprites in pairs for this theoretical example, same as the Atari to get the same colour control). Unless someone plans on making some wild claim about the Atari being eleven times faster than the C64 that's a huge chunk of bytes more to transfer...

Link to comment
Share on other sites

Errr... sprites.

 

And all those G2F examples reproducing C64 pictures use sprites as well, nobody said that using sprites on one to simulate the abilities of the other wasn't allowed...

 

And 2/3rds (or even more on NTSC) of your CPU cycles gone as a result.

 

That and the utter bitchiness of the cycle exact timing is exactly why C64 bunnies get excited about the C64 doing overscan; if it was just a matter of setting a register or similar, nobody would shout about it.

Link to comment
Share on other sites

Nice picture but unfortunate example.

The nice thing about overscan is when you have it in a game so you can see much more and borders do not bother you (or at least when you scroll text so it does not pop up in the middle of the screen).

 

any a8 game examples of overscan ?

Link to comment
Share on other sites

Venus Express... ;)

 

http://atari.fandal.cz/detail.php?files_id=5488

 

venus_express.png

 

Schreckenstein:

 

http://atari.fandal.cz/detail.php?files_id=4420

 

schreckenstein.png

 

Rally Speedway:

 

http://atari.fandal.cz/detail.php?files_id=2802

rally_speedway.png

 

Ballblazer:

 

http://atari.fandal.cz/detail.php?files_id=1387

ballblazer.png

 

Blue Max:

 

http://atari.fandal.cz/detail.php?files_id=1438

blue_max.png

 

just to name few... ;)

Edited by Heaven/TQA
Link to comment
Share on other sites

Oswald, do not know... I mean overscan can be usefull for such things but I never played around with these new techniques. I am enabling in general overscan if possible...

 

and for softsprites in general does not make a real difference as instead of 40 bytes scanlines f.e. you have 48 instead....?

 

I personally found games strange when they used standard screen size but used PMs which crossed the (small) borders.... that was lame imho.

Edited by Heaven/TQA
Link to comment
Share on other sites

For the Pacman demo running 4 ghosts + Pacman is taking most of a frame at the moment ( at 60Hz ) This is not fully optimised code, and implements a mask/data sprite, rather than simple Xor.

5 sprites - 16x16 pixels each, renderer as 20x16y for horizontal, and 16x24y for vertical.

 

Real H/W sprites are way,way better :)

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...