[stella] disassemblies and other stuff

Subject: [stella] disassemblies and other stuff
From: Glenn Saunders <cybpunks@xxxxxxxxxxxx>
Date: Mon, 08 Jan 2001 10:09:29 -0800

I was wondering if there was a sure-fire disassembly method out there anyone could share with me. The two methods I know of are diStella and using PCAtari.

I tried disassembling Super Challenge Football with diStella and it left large patches.

SCF won't even run on PCAtari for some reason. It runs fine on Stella so I have to assume it's the emulator, not the ROM image.

I'd like to get a good disassembly of that, Surround, and Indy500.

Speaking of Surround, or any pseudobitmap game, generally speaking, what's the best approach to storing and accessing the bitmap?

So far in my game I'm setting the playfield mode to reflect and will only update PF1 and PF2.

What is the safe range of cycle counts for rewriting these registers?

Also, there is a lot of "reinventing the wheel" I seem to be easing into regarding simple assembly algorithms. Is there somewhere I could go that has a lot of general routines that everybody always uses??

For instance, In modifying How to Draw a Playfield, I want to change the playfield graphics every 8 scanlines, but the scanline kernel still needs to update the sprites every scanline (visually, every two if I use the usual VDEL routines to produce 2-scanline tall sprites).

I'm not worrying about the sprites right now but I need to leave room in the kernel for them later. The only tricky sprite stuff will be the missiles as the horizontal position and width need to change from scanline to scanline. The cars are like Combat, with the horizontal positions pre calculated once before screentime begins. I know there is enough time for this kernel as Super Challenge Football features a nonreflective (scrolling, which I won't do) playfield and the missile tricks.

But anyway, for things like this, my immediate thinking process is:

I switched around Nick's code to count up instead of down. This is going to make things a lot easier for me to conceptualize the screen. (I realize that counting down has benefits in that the branch routines test for zero.):

if scanlinecounter is divisible by 8
LDA BorderLoc
EOR the border graphic by itself to toggle between 128 and 0 (creates dashed line).
STA BorderLoc (for next time)
Increment an index offset into playfield RAM
Grab PF1 and PF2 data using ABS,X indexing and write to PF1 and PF2
Grab second set of PF1 and PF2 data and write to PF1 and PF2 at the proper cycle range.
ELSE (just repeat the writes to playfield registers as above but without incrementing or EORing)

So I'm thinking, what's an easy way to figure out if a number is divisible (evenly) by another number?
I played around with Nick's LSR/AND stuff but I don't quite understand what it's doing, as I'm thinking more in terms of decimal rather than bitwise or binary math.

-- Archives (includes files) at http://www.biglist.com/lists/stella/archives/ Unsub & more at http://www.biglist.com/lists/stella/

Current Thread