Jump to content

Photo

Keeping Track of the Scanline Count with Stella


3 replies to this topic

#1 Random Terrain ONLINE  

Random Terrain

    Visual batari Basic User

  • 24,847 posts
  • Controlled Randomness
    Replay Value
    Nonlinear
  • Location:North Carolina (USA)

Posted Tue Apr 26, 2011 8:25 PM

There are 4 ways you can use Stella (the Atari 2600 emulator) to make sure your program isn't taking too long and has a scanline count at a steady 262 for NTSC and PAL/60 games or 312 for PAL/50 games:



The Fast, On the Fly Way

Hit Alt + L while a game is running in Stella to toggle the frame stats. It displays the scanline count, frames per second, display format, and bankswitch type. It's very useful and it might be all you'll need. Sometimes a game will have little sneaky spots you could miss with Alt + L, so you might want to scroll down and try the Faster, Easier Way that uses the debugger to automatically stop the game any time the scanline count goes above 262 (or 312 for PAL/50 games).




The Slow and Clunky Way

Run your program using Stella and hit the key above Tab (`) for the debugger. Watch the box next to Scanline: while holding down Alt + f and see if the number changes from frame to frame. (Holding down Alt + f is like quickly clicking on the Frame +1 button.) If it stays at 262, there's no problem, at least for the moment. The problem with using Alt + f is that it's still kind of slow and you could miss something. The good news is that there is a better way to make sure that no frame ever goes over 262 scanlines (or 312 for PAL/50 games).




The Typing is Fun Way

The next fastest way to check if you're going over 262 is to type breakif {_scan>#262} in the Prompt display, hit the Enter key, then hit the key above Tab (`) to exit the debugger. If your program goes over 262, the debugger will automatically reopen. (Replace 262 with 312 for PAL/50 games.)




The Faster, Easier Way

For an even easier way to do this with no tedious typing, you can make a file that will run every time you open the debugger. This is how to do it using a Windows Vista Computer.
  • Open Notepad, then copy and paste breakif {_scan>#262} in there.
    _
  • Select Save As under the File menu and locate the Stella folder which is now in your User folder under AppData > Roaming.
    _
  • Copy and paste autoexec.stella into the Save As file name box and select All Files (*.*) from the Save as type drop down menu. (That fixes it so you don't have to go back and remove ".txt" from the file name when you're finished.)
That's it. You're done. Now when you test a game you're working on, all you have to do is run it in Stella, hit the key above Tab (`) for the debugger, which activates the code in the autoexec.stella file, then hit the key above Tab (`) again to exit the debugger. From then on (until you close Stella) the debugger will automatically reopen if your program goes over 262. The file only runs after you open and close the debugger, so you can play other games normally as long as you don't open the debugger. (Replace 262 with 312 for PAL/50 games.)



Related Links:

How to Attach Files and Images

Posting Tips for New bB Users


Easy Software Versioning

#2 dwane413 OFFLINE  

dwane413

    Moonsweeper

  • 263 posts
  • Location:Oklahoma

Posted Tue Apr 26, 2011 10:06 PM

Thanks.

#3 Omegamatrix OFFLINE  

Omegamatrix

    Quadrunner

  • 5,504 posts
  • Location:Canada

Posted Sun Nov 11, 2012 2:34 PM

Detecting Too Few Scanlines

Start the game, and hit ~ to enter the debugger. Scroll up just a little bit and look for some code similar to these two examples:

Example 1
Example1.png

Example 2
Example2.png


Using the address (the line that the very first VSYNC is on), enter the following "breakif" statement in the prompt tab inside of the debugger, and then hit enter.

For example 1, the address is 194E, and you would enter:
breakif {pc==194E && _scan<#259}

For example 1, the address is B08E, and you would enter:
breakif {pc==B08E && _scan<#259}


FYI, these scanline settings are tuned for NTSC, VSYNC takes 3 lines or the 262 lines total. So 262 - 3 = 259.

#4 stephena OFFLINE  

stephena

    River Patroller

  • 2,511 posts
  • Stella maintainer
  • Location:Newfoundland, Canada

Posted Sun Nov 11, 2012 3:04 PM

Detecting Too Few Scanlines

FYI, these scanline settings are tuned for NTSC, VSYNC takes 3 lines or the 262 lines total. So 262 - 3 = 259.


At some point, I plan to add a 'pseudo-op' specifically for this case (so you wouldn't have to figure out the actual PC to use). When I find the time ...




0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users