Jump to content
IGNORED

Perhaps a "second-time-around" I will demystify th


zenassem

Recommended Posts

Hello,

 

intro:

=====

I am new to the site and I am embarking on my second journey into understanding and programming my Atari. I will post a small BIO at the end to inroduce myself and my past Atari experience. It's been a long time since my first experience with Atari and I am excited to see that there are still people like all of you keeping it alive. I am surprised and excited about the new things available (ie. emulators, sio2pc, cross-compilers, information/archives, disk images etc...). Perhaps this time around I will achieve my goal of fully understanding the Atari's inner-workings. I do have some questions that I am hoping people have answers to.

======

 

Questions: (sorry to people who hate lists)

======

1. Is there a method to produce color text in a (basic mode 0) like resolution? Like the colored text that is available on the c64. This has always eluded me.

 

2. Is there a place where I can find the source code for actual commercial atari games (especially those that pushed the boundaries of the quality and color that antic & gtia could produce)?

 

3. Am I on the right track this time (in being able to produce professional looking titles) in using&understanding Display Lists, DLI's, Advanced P/M tricks-techniques, assembly language?

 

4. Anyone know of articles, publications of actual professional Atari game developers discussing, teaching, disclosing the techniques they used?

 

Thanks to anyone who can offer some insight into these questions.

 

A brif BIO:

======

I started programming with basic on the Atari 600xl in 1982 when I was 7. I tried my best to get as much info on programming the Atari as I could from Public Library, Local Computer Shop, and mainly Compute! Magazine (some reason Antic! wasn't available here). I fumbled my way through, getting a pretty good understanding of "STANDARD" Atari basic, and some Peek & Poke locations, but never was able to really go beyond simple programs. (Perhaps because I was 7, chose the wrong books or didn't know the good one's, no-one around me had knowledge of programming the Atari or they had a C64, no internet or modem etc...). I'm sure they each played a role as well as (I thought professional games were written in Basic, my first attempt at assembly (when i heard of it) I tried typing the instructions in the basic editor, and more mistakes by the hundred!)

 

I eventually stopped attempting programming the Atari when I was 12. Never truly Demystifying how to produce something of quality.

 

Well now I'm 29. Have more experience, math skills, studied computer science and programming for the PC, and I am armed with the power of communication with the internet, forums, new technologies to aide in my pursuit of conquering my Atari 65XE.

 

I hope this time around I will finally understand how all of those magnificent games that enterained me for hours on end were created.

I just receieved my ebay purchase of a new copy of "De Re Atari". So for it has totally blown me away. So much of the infromation that I craved for years ago, right here in my hands. Truly exciting, even if it is the "second-time-around"!

 

 

Thanks

ejomisko

Link to comment
Share on other sites

though not the answer you seek for #1 there is a way to get 'colored' text by manipulating the BG color and luminance of the text - a darker luminance will take on a darker shade of the bgcolor - you see this in alot of games - However, its not a great solution since you cant really do multicolored text.

 

Part 2 - You can redefine the char set in the atari to be 1/2 as wide and then use it as a disaply in one of the graphic modes - Without DLI you can then have 3 text colors the same as the graphic mode - Text is a bit scrunched and some letters look off but it works - You also see this alot in games. With DLI's you can have many colors of the text. I believe there is a 'HIP' mode that allows 5 colors on the screen - Alt Reality the Dungeon has this in some of its pictures. Donkey Kong uses this text type for its scoreboard and such.

 

Part 3 - I believe some coders clip PMgraphics over the text to provide color - This is prob the best way to achieve crisp colored text - but there is a price to pay for this also.

 

Im sure the 'real' coders will chime in but these are the basic ways that I know of. I used #2 in a basic game I did long ago.

Link to comment
Share on other sites

I think some source-code listings were pushed at www.jetbootjack.com but there's been discussion of all kinds of advanced audio and visual techniques in this forum and in the programming forum. Oh, and do look at the super mario clone by analmux (also in this forum) and space harrier conversion at www.sheddyshack.co.uk, plus the numen demo (http://numen.scene.pl/) and the IK+ project - http://uce.pl/ikplus/

Link to comment
Share on other sites

Thanks to everyone for the suggestions thus far. I am going to look at them immediately. From some of the other threads I have been reading, I can see that there are other people who have some of the same questions and confusion I have about Atari 8-bit programming, but I also see promise... In the fact that there are many talented individuals here who I'm sure I will learn a great deal from.

 

Thanks for being kind and welcoming to a new comer, and taking time to answer questions that probably seem simple to many of you.

 

Another question (especially for those familiar with c64)

======

Is there? or has anyone ever programmed an extension to Atari Basic to add commands similar to C64's Simon's Basic? I have seen some seperate routines that mimick some of it's functionality but nothing in one neat package nor all the extensions.

 

for example the data @ command to redefine character sets.

data @........

data @..bb..

data @..b....

 

auto numbering, sprite, audio, advanced editing commands etc...

======

 

In my experience tasks (like color text, and color'graphics in general) are pretty straight foward on the c64, and are made available from basic. The approach to screen memory and color are fairly simple to get one's head around. I was also envious of c128's built-in sprite editor and Assembly debugger.

 

But for some reason I have always been hooked by the process of manipulating the Atari graphics modes, and have found it more enjoyable (even if certain things have eluded me).

Link to comment
Share on other sites

Thanks Goochman. I remember seeing that language mentioned in the AtariFaq, but never gave it much thought nor looked into it further. Now I will!

 

 

From my research on the web it seems that Poland has a lot of sites and programmers devoted to Atari. Not sure why the scene is so big there. I'll have babblefish those pages to find out.

Link to comment
Share on other sites

I'm in somewhat the same boat as you, in regards to having owned an Atari computer for a long time, discovering SIO2PC and the Internet Atari Scene and subsequently getting back into the machine and doing some programming for it.

 

I'll try to answer some of your questions the best I can.

 

1. Multi-color text in Graphics 0 is very difficult on the Atari, because it wasn't designed to do that. The C64 was, but remember it was built 3 years later!

 

I've seen people use the ANTIC mode 4 to do multi-color text, but the aforementioned limitations apply (you need to redesign the character set usually making the characters skinner.)

 

Look into a mode called SIFE, by Bill Kendrick and an editor by him as well, that uses two character sets in mode 4 and flips between them every frame in the VBI. You can do some neat stuff with this, like anti-aliased text, multi color text, etc... but you get some flickering.

 

Finally, you could use one of the bit-mapped modes and write your own text handling functions, and then multi-color text should be possible. You lose resolution, but gain colors. It's also slower.

 

Short answer is that there is no easy way to do this.

 

2. Not much commercial source code has been released, aforementioned websites are about the only place.

 

3. Assembly language is essential for game coding. You may get away with a mixture of a compiled language (or even BASIC) and assembly though. Your VBI and DLIs will have to be written in asm. You need to understand all the aspects of programming the system to write games (display lists, pm graphics, screen modes, etc...)

 

Using VBI and DLIs are essential, so make sure you understand these. There are some really neat things you can do using PMG and overlaying them on background graphics or each other to produce more colors. Using DLIs you can "cut" the vertical players and reuse them further down the screen. The DLIs are the most powerful feature of the Atari computer for making games, IMO.

 

4. No idea, but there is weeks of reading on http://www.atariarchives.org/. Mapping the Atari is essential, or some other detailed memory map. You will refer to it constantly.

 

Good luck and program some great games for us!

Link to comment
Share on other sites

There is also a basic XE language by (OSS?) which has even more functionality then turbo basic XL.

 

One of the nice things about turbo basic XL is it has alot of extra routines for manipulating player missile sprites, fonts, etc.

 

Without these extra functions you will need to know some machine language to get some speeds for moving sprites. The atari has an address that will let you move sprites right/left, but unfortunately moving them up/down requires manual code.

 

DLI's can be created without knowledge of assembly, but you will need to know what the DLI codes stand for. If you wanna do any vert or horizontal interrupts (for executing code line 2 line or from screen refresh to refresh) your gonna need to know assembly.

 

It is possible to actually add commands to Atari basic... I forget exactly how it is done, but I have seen it done. But it may be too tedious for your needs. Hopefully my memory is right on this one.

 

You definetly want a memory mapping guide so you know what all the addresses are and what they do. See the aforementioned sites.

 

Have fun!

Link to comment
Share on other sites

DLI's can be created without knowledge of assembly, but you will need to know what the DLI codes stand for.  If you wanna do any vert or horizontal interrupts (for executing code line 2 line or from screen refresh to refresh) your gonna need to know assembly.

 

An honest mistake, but a DLI is a Display List Interrupt, what you call an horizontal interrupt. Changing the display list can be done in BASIC pretty easily, to mix graphics modes on one screen, like you say.

Link to comment
Share on other sites

i always use turbo basic xl for rappid testing some ideas or converting BMPs in native mode, lookup tables generation, etc... and when running in emulator

 

i was always wondering why in states just few people know about turbo basic XL and it's compiler... (maybe because it's published and coded in germany... holy happy computer magazine... ;))

 

and the guy who wrote turbo basic xl... is the one who did gfx basic on atari st (amiga as well?))

Link to comment
Share on other sites

Well, to add some answers on question #1:

 

there are two other ways to do multicolored text in gr.0:

*1)

You need a PAL machine for this: vertical interlace (NOT flickering!)

you make a displaylist of gr.15/gr.8/gr.15/gr.8/gr.15 ...etc. lines

 

then define setcolors in a certain way, then half of the lines is in horizontal resolution 160, and the other (alternating) half is in hor.res. 320 Like this:

(example of mixed graphicsmodes)

gr.15: <>  <>  <>

gr.8:  ***  **  *

gr.15: <><><>

gr.8:   ****

 

( <> = one gr.15 pixel, * = one gr.8 pixel)

 

NOTE: In PAL you'll see that the hires gr.8 graphics will take the same color (not luminance!) as the graphics that's located above.

 

To see an example of this, watch the Admirandus Demo/game from emkay.

 

*2)

Another trick that should work on all machines is PlayerMissile 'underlay'.

You set priority register (623 shadow or 53276 hard) to players behind graphics, and set background and textcolor to black. Then use inverted characters and put blocks of PM-graphics at the places where you need other colors than the normal color (register 710) Then you have 5 available textcolors. However you ARE limited to regions of max. 8 characters wide (PER color).

 

 

Message for all:

 

I'll be back on the net soon, as now I'm using the university PC's to communicate to the Forum. In a few weeks I'll have high speed ADSL on my home-PC. :)

Link to comment
Share on other sites

@Heaven,

I think (and this is my personal oppinion only) that , at least here in Long Island NY, US many of the people I knew were more interested in playing games for their 8-bit computers. I hardly new anyone who was working on programming or interested in programming languages like I was. Therefor, I believe many of the stores around me were only concerned about having the latest game in-stock. Also by the time I got into the computer scene everyone here was into gaming on the Commodore 64. I was young, and didn't know about user groups, and I didn't have a modem. I was lucky if my parents would buy me Compute! magazine every other month or so, from the grocery market. It seems to me that in europe and other countries, people were more eager to program and understand their machines.

 

@Analmux,

Thanks for the comprehensive answers to my questions. I am quite new here and I don't know where to find Emkay's demo. Is it available as an .atr?

 

@Emkay,

I would really like to check out your demo. Where can i get it? Do you provide the source code as well? Thanks for any help.

 

~zen

Link to comment
Share on other sites

DLI's can be created without knowledge of assembly, but you will need to know what the DLI codes stand for.  If you wanna do any vert or horizontal interrupts (for executing code line 2 line or from screen refresh to refresh) your gonna need to know assembly.

 

An honest mistake, but a DLI is a Display List Interrupt, what you call an horizontal interrupt. Changing the display list can be done in BASIC pretty easily, to mix graphics modes on one screen, like you say.

 

No I'm talking about interrupts that call machine code to do things within the small amount of time available during the interrupt. Something basic is incapable of doing.

 

The DLI has commands that allow you to reroute the cpu to execute your own code. That is what I was referring to.

 

I dont remember the specifics but when you set up a DLI you can have machine code excuted at the end of each line as well as during the period the tv gun is repositioning itself back to the top.

Link to comment
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...