Subject: [stella] Don't say you weren't warned.... From: Pete Holland <petehollandjr@xxxxxxxxx> Date: Fri, 13 Aug 1999 14:30:13 -0700 (PDT) |
Okay, gang. A ton of questions requiring your expertise. Open your hymn books to Nick Bensema's "How To Draw A Playfield" and follow the bouncing ball. The actual space for the programs is from $F000 on up. Where is the stack located so I don't accidentally write instructions onto it? Also, is the memory that I would use to store scores, cards, etc. located in the $F000 on up, or is it lower? Once the cartridge is loaded and the game switched on, can I, say, write to location $F555 and read from it, write something different to it, etc? What are my memory limitations as far as the values generated and tracked by the game? The memory limitations for the program is 4K at a time, right? It mentions setting up VBLANK at the start of the overscan period. Why? Is there that much of a difference between VSYNC 3 times/start VBLANK and VBLANK/VSYNC 3 times? I'm working on an IBM. Keeping in mind I've been told DASM (which I haven't had a chance to play with yet) lets you label a location with a name (like TEMP, presumably) and any operations that require that memory spot don't need the hex number in the instructions, just type in the label and DASM will convert it later. Assuming this is how it works, I think I remember seeing TIM64T in the Stella manual. Is this an actual part of memory, like the VSYNC register, or is this just a label generally used so everyone can keep track of it, a sort of standardization for programmers? And what function does setting TIM64T serve? I thought the TIA takes care of the linear movement itself and the programmer only has to worry about the top-to-bottom counting. Checking the console switches: by my count, there are five switches on the console--color, select, reset, and the two difficulty (mine has a TV channel switch, but I would bet that that's attatched to the actual video unit and has nothing to do with the CPU). Since these are just switches, I imagine that individual bits (on/off) are used to keep track of their position. But a byte is 8 bits long, right? Which bit tracks the switches, and, if it is 8 bits long, what are the other three used for? The program gets to: LDA INTIM BNE DrawScreen STA WSYNC STA VBLANK INTIM is not listed previously in the document. Since the Atari powers up in a random state, INTIM might not necessarily be 0 and might not switch off the WSYNC and VBLANK. Or was it assigned 0 and I didn't notice it? By the way, WSYNC has to be shut off? Is this placed after the WSYNC command so that the CPU does whatever it does as the scanline is moving, gets here, waits for the beam to catch up, then move to the next instruction? I guess what I'm asking is, is WSYNC an automatic command (computer waits until raster catches up then continues) or is it like a switch that the program throws (computer waits until a command tells it to stop waiting)? And if it gets turned on and off by the program, will putting in fewer commands that produce fewer cycles to do than for the raster to move throw everything off? How close in cycle counting do you have to get to make the program flow properly? Also, referring to the program nugget above, I don't see a Compare command before the Branch instruction. Is the Compare IN the Branch instruction, or is this something Bensema left out to make us catch and pay attention? "This is a decremental loop...which is why the graphics at the end of this file are stored 'bottom-up'. In a way, one could say that's how the screen is drawn." In the disassembled code for Adventure, I can make out the paterns for drawing the dragons, bat, chalice, etc. But they're right-side up. Or is what Bensema is refering to just for the background graphics? Finally, I'm a little confused with the layout of the Graphics data. What part of this is just commentary and not part of the program? And what does all this do? PFData0; H 4 5 6 7 .byte $00 $f0 $00 $A0 $E0 $A0 $A0 If the playfield generator looks at the bits and draws where a 1 is and leaves blank where a 0 is, can't the letter H be drawn using just one byte at the most? Or is this complication necessary? What am I missing? Thank you for this. _________________________________________________________ Do You Yahoo!? Bid and sell for free at http://auctions.yahoo.com -- Archives (includes files) at http://www.biglist.com/lists/stella/archives/ Unsub & more at http://www.biglist.com/lists/stella/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [stella] INV & the new CD, Ruffin Bailey | Thread | Re: [stella] Don't say you weren't , Erik Mooney |
Re: [stella] A couple of questions, Pete Holland | Date | Re: [stella] Don't say you weren't , Erik Mooney |
Month |