Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 825469
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T03:15:39+00:00 2026-05-15T03:15:39+00:00

I’m trying to develop an oldschool NES-style video game, with sprite flickering and graphical

  • 0

I’m trying to develop an oldschool NES-style video game, with sprite flickering and graphical slowdown. I’ve been thinking of what type of logic I should use to enable such effects.

I have to consider the following restrictions if I want to go old-school NES style:

  • No more than 64 sprites on the screen at a time
  • No more than 8 sprites per scanline, or for each line on the Y axis
  • If there is too much action going on the screen, the system freezes the image for a frame to let the processor catch up with the action

From what I’ve read up, if there were more than 64 sprites on the screen, the developer would only draw high-priority sprites while ignoring low-priority ones. They could also alternate, drawing each even numbered sprite on opposite frames from odd numbered ones.

The scanline issue is interesting. From my testing, it is impossible to get good speed on the XBOX 360 XNA framework by drawing sprites pixel-by-pixel, like the NES did. This is why in old-school games, if there were too many sprites on a single line, some would appear if they were cut in half. For all purposes for this project, I’m making scanlines be 8 pixels tall, and grouping the sprites together per scanline by their Y positioning.

To clarify, I’d be drawing sprites to the screen in batches of 8×8 pixels, not 1×1.

So, dumbed down I need to come up with a solution that….

  • 64 sprites on screen at once
  • 8 sprites per ‘scanline’
  • Can draw sprites based on priority
  • Can alternate between sprites per frame
  • Emulate slowdown

Here is my current theory

First and foremost, a fundamental idea I came up with is addressing sprite priority. Assuming values between 0-255 (0 being low), I can assign sprites priority levels, for instance:

  • 0 to 63 being low
  • 63 to 127 being medium
  • 128 to 191 being high
  • 192 to 255 being maximum

Within my data files, I can assign each sprite to be a certain priority. When the parent object is created, the sprite would randomly get assigned a number between its designated range. I would then draw sprites in order from high to low, with the end goal of drawing every sprite.

Now, when a sprite gets drawn in a frame, I would then randomly generate it a new priority value within its initial priority level. However, if a sprite doesn’t get drawn in a frame, I could add 32 to its current priority. For example, if the system can only draw sprites down to a priority level of 135, a sprite with an initial priority of 45 could then be drawn after 3 frames of not being drawn (45+32+32+32=141)

This would, in theory, allow sprites to alternate frames, allow priority levels, and limit sprites to 64 per screen.

Now, the interesting question is how do I limit sprites to only 8 per scanline?

I’m thinking that if I’m sorting the sprites high-priority to low-priority, iterate through the loop until I’ve hit 64 sprites drawn. However, I shouldn’t just take the first 64 sprites in the list.

Before drawing each sprite, I could check to see how many sprites were drawn in it’s respective scanline via counter variables . For example:

  • Y-values between 0 to 7 belong to Scanline 0, scanlineCount[0] = 0
  • Y-values between 8 to 15 belong to Scanline 1, scanlineCount[1] = 0
  • etc.

I could reset the values per scanline for every frame drawn. While going down the sprite list, add 1 to the scanline’s respective counter if a sprite gets drawn in that scanline. If it equals 8, don’t draw that sprite and go to the sprite with the next lowest priority.

SLOWDOWN

The last thing I need to do is emulate slowdown. My initial idea was that if I’m drawing 64 sprites per frame and there’s still more sprites that need to be drawn, I could pause the rendering by 16ms or so. However, in the NES games I’ve played, sometimes there’s slowdown if there’s not any sprite flickering going on whereas the game moves beautifully even if there is some sprite flickering.

Perhaps give a value to each object that uses sprites on the screen (like the priority values above), and if the combined values of all objects w/ sprites surpass a threshold, introduce slowdown?

IN CONCLUSION…

Does everything I wrote actually sound legitimate and could work, or is it a pipe dream? What improvements can you all possibly think with this game programming theory of mine?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-15T03:15:40+00:00Added an answer on May 15, 2026 at 3:15 am

    Firstly, I love the idea. When making a retro game, it wouldn’t be the same if you ignored the complexity limitations. By writing a framework that sort of enforced it is a great idea.

    Can I just say, if you abstracted the engine as an open source “Retro Game” graphics engine, that would indeed be cool and I’d be sure to join in!

    • In regards to your highest priority sprites, maybe a Priority Queue would simplify this part in that you can just pull out the 64 highest priority sprites.

    • With the slow down, perhaps in the engine you could have a limitValue. Each sprite as an appropriate limitUse. Add up all the limitUse vars and if this is below limitValue, no slow down. Now, for slowDelay = f(limitUseTotal - limitValue) where f is a function that converts the excess amount of sprites into a calculated slow down value. Is this the general idea you are suggesting or have I misread it?

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am trying to understand how to use SyndicationItem to display feed which is
Basically, what I'm trying to create is a page of div tags, each has
link Im having trouble converting the html entites into html characters, (&# 8217;) i
I have a jquery bug and I've been looking for hours now, I can't
I am trying to loop through a bunch of documents I have to put
I'm parsing an RSS feed that has an ’ in it. SimpleXML turns this
I'm trying to decode HTML entries from here NYTimes.com and I cannot figure out
I'm trying to use string.replace('’','') to replace the dreaded weird single-quote character: ’ (aka
I'm trying to create an if statement in PHP that prevents a single post
I'm new to using the Perl treebuilder module for HTML parsing and can't figure

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.