Jump to content
IGNORED

Examples of the most advanced side scrolling?


ZackAttack

Recommended Posts

I don't really get how you're measuring the scrolling speed in fps. In the case of 30fps does it mean that 30 of the 60 frames in a given second will have a movement of one pf pixel? Wouldn't it make more sense to measure the scrolling speed in pf pixels per second? That way you could easily have a speed of 42.5 pixels per second, etc.

In this case 30 FPS means, that the playfield moves every 2nd frame. So that's 4 pixel moving at 30Hz = 30 PF pixel = 120 pixel per second.

Link to comment
Share on other sites

Now I understand what you mean. A 4 pixel increment at 60fps would have the same scroll speed as a 12 pixel increment at 20fps, but the 4@60 would appear smoother.

 

I bet the difference in smoothness becomes more apparent when you vary the scroll speed. For example if you had a scroll speed of 160 pixels/sec. The 60fps would have a 3 frame pattern of 0,4,4. The 30fps would have a 6 frame pattern of 0,4,0,4,0,8. I wonder how noticeable the difference would be.

Link to comment
Share on other sites

I am pretty sure that a more even speed (0,4,4) would look significantly better. But still more jerky than a completely even speed even at a lower FPS.

 

Moving the PF at 60 FPS results in the smoothest scrolling, but usually the resulting speed is too fast for a game. The Empire Strikes Back gets away only because the fast scrolling bottom is just icing on the cake, the relevant action is the much slower scrolling speed of the AT-ATs.

Edited by Thomas Jentzsch
Link to comment
Share on other sites

  • 1 month later...

I found another amazing horizontal scroller.

Lots of tricks and unfortunately it uses P0 P1 and background.

Seems that playfield, ball, M0 & M1 are unused.

 

Another problem using this demo to make a game, is it flips the whole background to white while the P0 & P1 are black, then the players turn white against a black horizontally striped background.

 

Movable Grid Demo (PD).a26

 

EDIT: Well that above is wrong. All it is doing is a black, white repeated background top top bottom, and when you push left or right it is cycling P1 & P0 3 frames (both always white), with a 4th frame of background all white.

Link to comment
Share on other sites

  • 3 months later...

Some other scrolling stuff I've done in the past:

 

14 Vertical Bars. This uses JSR with the stack pointer aligned to the color registers to do quick updates.

 

SP pointing to hardware registers!?! THIS is REALLY crazy!!! ;-)

 

Very cool!! How did you get this idea??

 

 

This has potential!

Maybe this technique could be used to modify other registers instead of the colors... e.g. PF or NUSIZ0+1 etc.

Edited by MacrosCode
Link to comment
Share on other sites

 

SP pointing to hardware registers!?! THIS is REALLY crazy!!! ;-)

 

Very cool!! How did you get this idea??

 

 

This has potential!

Maybe this technique could be used to modify other registers instead of the colors... e.g. PF or NUSIZ0+1 etc.

Yes, you can use it for other registers. It is particularly useful for registers that can be strobed (write value doesn't mater) such as the RESxx registers.

 

Other than that it just depends on what address you can JSR or BRK from. Here is another example where I'm using JSR to change the color of the playfield and background. I'm doing this in the six byte display because at the time the update needs to be done I already have A, X, and Y preloaded to update the digit graphics. That kernel is even a little more nuttier as I'm also using the timer as a loop counter and index for the graphics. So there is a lot more than meets the eye going on there.

  • Like 1
Link to comment
Share on other sites

The combat stack trick uses the stack pointer to enable missiles and/or ball in O(1) time. According to Joe Decuir, the hardware was specifically aligned to allow this, and was a result of the hardware and software being developed in tandem.

 

Oh that's new for me. So designers itself thought of that possibilities... very clever!!

Link to comment
Share on other sites

Yes, you can use it for other registers. It is particularly useful for registers that can be strobed (write value doesn't mater) such as the RESxx registers.

 

Other than that it just depends on what address you can JSR or BRK from. Here is another example where I'm using JSR to change the color of the playfield and background. I'm doing this in the six byte display because at the time the update needs to be done I already have A, X, and Y preloaded to update the digit graphics. That kernel is even a little more nuttier as I'm also using the timer as a loop counter and index for the graphics. So there is a lot more than meets the eye going on there.

 

This idea has potetial to do far more. With no other assembly command you can change 2 registers so fast.

 

I looked at your example.. if you did not tell me i would have suggested to do this 2 colors like the one in the star castle title screen.

As you wrote: there is a lot more behind as you could see.

 

Really intersting stuff!

Edited by MacrosCode
Link to comment
Share on other sites

Nope. :)

 

It's the same as with Omega's JSR trick, but you only have the (fixed) break vector (instead of an address). Additionally it pushes the status flags register. So it is even less flexible than the JSR trick, but might be useful for (very) special cases.

Link to comment
Share on other sites

The common thread with these tricks, is that you're using the dedicated circuitry in the 6507 to do a series of writes in quick succession, which otherwise would not be possible. These tricks just happen to be possible because both page 0 and page 1 decode to exactly the same space. (Yay for very partial address decoding!)

 

-Thom

Link to comment
Share on other sites

Nope. :)

 

It's the same as with Omega's JSR trick, but you only have the (fixed) break vector (instead of an address). Additionally it pushes the status flags register. So it is even less flexible than the JSR trick, but might be useful for (very) special cases.

I have always dreamed of a cartridge where the break vector was ram (for doing these type of tricks).

Link to comment
Share on other sites

Here is an example of BRK being used to do fast color changes. You have to start reading from about post #7 of that thread to figure out what is going on.

 

TestColors.zip is an amazing demo of what could be done from a technical point of view!

 

If transformed into a real picture with many colors then it would be REALLY impressive.

But I think that needs a very good graphic artist to take care of all limitations.

Link to comment
Share on other sites

Nope. :)

 

It's the same as with Omega's JSR trick, but you only have the (fixed) break vector (instead of an address). Additionally it pushes the status flags register. So it is even less flexible than the JSR trick, but might be useful for (very) special cases.

 

Nope?! :-D

 

Anyway now I understand the difference (BRK vs. JSR). You are right. That has some even more limitations!

For very special circumstances it may be working, but JSR is far more flexible.

Edited by MacrosCode
Link to comment
Share on other sites

  • 3 months later...

Never say never -http://atariage.com/forums/topic/224946-smooth-scrolling-playfield-i-think-ive-done-it/

 

I got burnt out on the back and forth of this with no CRT of my own to test it on, hopefully someone else will pick it up, or I'll get a CRT and have another crack myself...

 

It is perhaps a very well tuned code but on a CRT TV it just flickers... yes it is smooth but it flickers.

Link to comment
Share on other sites

 

It is perhaps a very well tuned code but on a CRT TV it just flickers... yes it is smooth but it flickers.

 

Not sure if you read the whole thread etc.. , but I thought my comment made it clear it doesn't work properly/universally - but there's at least a lead as to how a smooth scrolling playfield might be achieved. Difficult to know what you mean by flickering in this context, but the likelihood is your TV doesn't like the various butchered signals being sent out by the VCS.....

Link to comment
Share on other sites

Not sure if you read the whole thread etc.. , but I thought my comment made it clear it doesn't work properly/universally - but there's at least a lead as to how a smooth scrolling playfield might be achieved. Difficult to know what you mean by flickering in this context, but the likelihood is your TV doesn't like the various butchered signals being sent out by the VCS.....

If you do have a display this works on, you appreciate what an amazing machine the Atari 2600 really is and also the amazing creativity of people still making it do new things it was never intended for!

 

Amazingly beautiful:

https://www.dropbox.com/sc/n4g444x2y4qe0fa/AAAzD2aO2N04bSZxlqViY9Cma

  • Like 2
Link to comment
Share on other sites

Well, it certainly doesn't look that clean on my TV (the text tends to flicker horizontally). Seems like this is something really really picky even when connected to real CRT. OR, and this could be very well true, my Atari 2600 Jr., the Chinese model, has got different TIA timing... proved with good number of games so far.

Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

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