Jump to content
Random Terrain

Keeping Track of the Scanline Count with Stella

Recommended Posts

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 PC:

  • 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.script 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.script 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.)

 

Update


For older versions of Stella

Below is the autoexec.stella file, so all you have to do is unzip it and put it in the Stella folder under AppData > Roaming.

autoexec.zip

 

For newer versions of Stella
Below is the autoexec.script file (the file extension changed from .stella to .script), so all you have to do is unzip it and put it in the Stella folder under AppData > Roaming.

 

autoexec.zip
 

 

Windows 10
The AppData folder (C:\Users\YOUR_USER_NAME\AppData\Roaming\Stella) is hidden on Windows 10, so you'll have to go to your user folder, make sure the ribbon is showing, click on the View tab, click on Options, select Change Folder and Search Options, select the View tab in the dialog box, click on Show hidden files, folders and drives, then click the OK button.

 

 

Test Program

 

Here is a program that goes over 262 when you move the sprite. You can use it to see if the Faster, Easier Way is working correctly:

test_over_262_find_border_coordinates.bin



Related Links:

How to Attach Files and Images

Posting Tips for New bB Users


Easy Software Versioning

  • Like 5

Share this post


Link to post
Share on other sites

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

post-7074-0-23630200-1352665331_thumb.png

 

Example 2

post-7074-0-81463300-1352665777_thumb.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.

  • Like 1

Share this post


Link to post
Share on other sites

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 ...

Share this post


Link to post
Share on other sites

This comment was made before Stella was at Github. Now that it is, the proper way to address it is to create an issue here. The fact that it wasn't mentioned anywhere else is why I forgot about it for 6 years :(

Share this post


Link to post
Share on other sites

I was referring to RT's note on how to activate breakpoints for overcycling, not any issue logging with Stella

 

I spent about an hour trying to find that post :)

Share this post


Link to post
Share on other sites

OK, fair enough. That being said, if anyone want the functionality to detect undercycling (is that even a word), I still suggest adding an issue for it on Stella Github.

Share this post


Link to post
Share on other sites

OK, fair enough. That being said, if anyone want the functionality to detect undercycling (is that even a word), I still suggest adding an issue for it on Stella Github.

So is the symptom of under cycling a black screen?

Share this post


Link to post
Share on other sites

The file extension for autoexec changed from .stella to .script in newer versions of Stella, so I put the new version and what to do on Windows 10 in the first post.

  • Like 1

Share this post


Link to post
Share on other sites

Thanks RT, I'll be sure to change that on mine, although I am still using Win 7.  It sounds like the new version uses .script regardless of what OS you have.  I use this feature to make sure I'm not going over cycle count on Zed.

Share this post


Link to post
Share on other sites
41 minutes ago, Sprybug said:

Thanks RT, I'll be sure to change that on mine, although I am still using Win 7.  It sounds like the new version uses .script regardless of what OS you have.  I use this feature to make sure I'm not going over cycle count on Zed.

 

Thanks. I probably shouldn't have combined Stella/Windows 10 in the same section. I'll split them apart later tonight.

Share this post


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

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...