Jump to content

Photo

7800basic beta, the release thread


608 replies to this topic

#601 RevEng ONLINE  

RevEng

    River Patroller

  • Topic Starter
  • 4,448 posts
  • Bitnik
  • Location:Canada

Posted Wed Apr 19, 2017 6:06 AM

Yup, you can use a split screen with topscreenroutine, and it works fine with double buffering. topscreenroutine now gets called from an interrupt at the top of the screen, so there's no stopping it.

It's a better situation all around. Even if you're not using double buffering, the topscreenroutine method avoids split-glitching if you take too long to prepare the frame and it gets drawn before you actually call drawscreen.

#602 PacManPlus OFFLINE  

PacManPlus

    River Patroller

  • 4,600 posts
  • Atari 7800 & NES Developer
  • Location:Florida

Posted Wed Apr 19, 2017 6:36 AM

 

They look stationary to me.   :-D

 

Now these guys are moving...

 

 

;)

 

40 non-flickering moving sprites!    :o

 

That's really impressive, RevEng.

... At the risk of sounding stupid, con someone explain to me what double buffering means?  Is it something that I've done in one of my games without knowing the term?  I guess I don't quite understand how you keep a stable screen and speed while not working with the screen frame rate...

 

Also, how many 160A sprites are you able to get in a single zone there?  It's a little difficult to count with them moving around so much :D  It looks like quite a bit more than the 'norm'.

 

Thanks!

Bob


Edited by PacManPlus, Wed Apr 19, 2017 6:41 AM.


#603 RevEng ONLINE  

RevEng

    River Patroller

  • Topic Starter
  • 4,448 posts
  • Bitnik
  • Location:Canada

Posted Wed Apr 19, 2017 9:10 AM

When it comes to the 7800, double buffering means you have 2 DLLs (that point to different sets of DLs). You point DPPH/DPPL at whichever DLL+DLs you're not actively modifying, and modify the other non-displayed set at your leisure. When you're done, flip DPPH/DPPL to the DLL+DLs that was recently updated, wait for the next non-visible to visible transition, and then you can start working on the other (newly non-displayed) set of DLL+DLs. Rinse and repeat.

Thats enough to keep the screen stable. If you want to ensure a steady framerate between buffer flips, you can enforce a minimum framerate. To do this, track the actual frames displayed between buffer flips with a variable that gets incremented via display interrupts, and just burn extra frames if required just prior to each DPPH/DPPL buffer flip. (The 7800basic implementation has this minimum framerate setting as an option)

The demo isn't defying Maria's DMA cycle limits, but it is close to a best case scenario. When I create the men in the demo, I spread them out vertically as evenly as possible, so any one zone doesn't get hit that hard.

I'm at work, so I don't have an exact count for how many guys start off in one zone. Even if I knew, I can't easily give a running maximum in each zone - when the guys bounce vertically they overlap more, and its hard to count.

#604 PacManPlus OFFLINE  

PacManPlus

    River Patroller

  • 4,600 posts
  • Atari 7800 & NES Developer
  • Location:Florida

Posted Wed Apr 19, 2017 9:14 AM

Ah... I understand now... thank you...  that explains why you need more memory to pull this off...

 

I've never tried doing that...  I think Defender might benefit from that... :ponder:



#605 RevEng ONLINE  

RevEng

    River Patroller

  • Topic Starter
  • 4,448 posts
  • Bitnik
  • Location:Canada

Posted Wed Apr 19, 2017 12:30 PM

No problem. Glad to hear you may have use for it. :)

#606 Mord OFFLINE  

Mord

    River Patroller

  • 2,441 posts
  • Location:Canada

Posted Sun Apr 23, 2017 9:17 PM

I've been fiddling around to add double buffering and the splitscreen routine into graze. Mainly works although there's still work to do. One thing I did notice however is that when I use plotvalue commands to show bonus points between waves, they were blinking. Looking at my code they should be plotted properly ever frame, so wondering if this means the command isn't looking at the second DL list when it should be?



#607 RevEng ONLINE  

RevEng

    River Patroller

  • Topic Starter
  • 4,448 posts
  • Bitnik
  • Location:Canada

Posted Mon Apr 24, 2017 6:06 AM

Thanks for the bug report - it seems I missed the double-buffer adjustment for plotval.

I'm possibly reworking the pokey detection for another release right now, so for now you can stick this assembly file into the 7800basic includes directory, and it should fix it.

I'll get an official release with this file out in a few days, but it will be the same fix here.

[edit - put into the official download]

#608 RevEng ONLINE  

RevEng

    River Patroller

  • Topic Starter
  • 4,448 posts
  • Bitnik
  • Location:Canada

Posted Mon Apr 24, 2017 5:55 PM

Ok, I updated the official 7800basic release, with the plotvalue double-buffering fix, and the pokey detection was updated to better handle pokey carts missing the pokey.

No difference between the latest official release and using the modified std_routines.asm with the previous release. (also, no updates to the docs, RT)

#609 Heaven/TQA ONLINE  

Heaven/TQA

    Quadrunner

  • 10,068 posts
  • Location:Baden-Württemberg, Germany

Posted Tue Apr 25, 2017 10:50 PM

Much information in the thread and guide for me as 7800 noob :) still fighting with bmp7800 to get pixels as wanted on screen.

I think the concept of Maria is too different to the consoles at the same time (nes,sms,c64/800) :) but get used to it




0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users