6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Sat May 04, 2024 4:22 am

All times are UTC




Post new topic Reply to topic  [ 24 posts ]  Go to page Previous  1, 2
Author Message
PostPosted: Fri Jun 22, 2018 4:35 am 
Offline
User avatar

Joined: Fri Aug 14, 2015 5:19 pm
Posts: 27
Location: ENCOM mainframe.
White Flame wrote:
One very strange assumption here is the notion of 8-bit games running at 30fps. Since most of them were tied to the raster, the vast majority ran at 60fps update speed, with their main game loop running every frame.

The platforms that were purely framebuffer, like the Apple II of ZX spectrum, would be the exceptions. They'd usually run slower but wouldn't be consistent, either. Most weren't double buffered, so the screen partially updated instead of slamming all pixels at once.

I remember most 8-bit systems having framebuffers which allowed the gameloop to span multiple frames.

The Atari 2600 architecture seems pretty unique in having to race the beam to draw the frames in real time. Only other 8-bit systems I can think of doing that is perhaps the ZX-80 and ZX-81.

In terms of full screen animation I think the framerates for 8-bit systems were lower than 30 fps though the Nintendo PPU and the Atari ANTIC chips could do it with mixed graphics/semigraphics modes, likely the C64 as well.

ANTIC was basically a GPU that could blitter variable sized horizontal sections of the screen via display lists that would run during the vertical blanks. With the semigraphics modes you could render 30 FPS or 60 FPS of full sceen animation.

I implemented display lists for Atari Flashback BASIC in the soft blitter, called during the vertical blanks to scroll just sections of the screen in different directions at variable frame and Hz rates at any factor of 60 like in this demo:

http://javatari.org/?ROM=http://relationalframework.com/Flashback_BASIC_DLI_Demo.bin

The demo has 30 fps, 15 fps and 10 fps display zones all at 60 Hz causing 2, 4 and 6 doubled images respectively in those zones. Replacing all the doubles with black to synch Hz and fps would make even the 10 fps zone appear smoothly animated, though at a trade-off of flicker.

_________________
Load BASIC from tape on your Atari 2600:
http://RelationalFramework.com/vwBASIC.htm


Top
 Profile  
Reply with quote  
PostPosted: Fri Jun 22, 2018 4:55 am 
Offline
User avatar

Joined: Fri Aug 14, 2015 5:19 pm
Posts: 27
Location: ENCOM mainframe.
Chromatix wrote:
I occasionally have similar discussions about this with PCMR folks, where the object is to properly explain why modern 144Hz gaming monitors are superior to 60Hz office monitors, and even more so than 30fps game consoles. My approach is to talk about motion tracking, not retinal persistence. That's also the measurement approach taken by testufo.com.

It helps that I've finally managed to get a 144Hz Freesync monitor of my own...

Let's suppose you have an object (a small ball, perhaps, or a mouse cursor) crossing the screen in 1 second. At 30fps and with 8-bit standard graphics, that's about 10 pixels per frame; on a modern PC at 60fps, it would be about 35 pixels per frame. If you simply stare at the background while that object crosses in front of your eyes, you'll see it occupy those discrete positions in rapid succession; with persistence of vision, you'll perceive multiple copies of the object spaced at regular intervals. This effect actually increases with higher framerates, such that you'll see a larger number of copies of the object, spaced more closely together. Such effects are countered in the movie industry by applying motion blur, so that you see a continuous smear of the object instead of discrete copies.

But let's suppose that the ball is actually a target important to gameplay - an enemy vehicle, perhaps, or the more common use of a mouse cursor - so that you need to track its position by eye and predict its future motion both precisely and accurately. The more accurately you hold the computing gunsight over the MiG, the more of your shots are likely to hit it, even though it's desperately trying to turn out of your line of fire. In such a case, ideally your eye would always point towards the target and you would see a perfectly sharp image of it, with no duplicates and no blur, while the background scenery gets equivalent effects to the above. Applying motion blur to the ball would be counter-productive!

Late-model CRTs approached this ideal when driven at high refresh rates and with a newly rendered frame per refresh, because they had very short persistence phosphors, usually less than a millisecond, and relied on retinal PoV to give the impression of a steady image. That's why 60Hz was slightly flickery on later CRT monitors; TVs often had longer persistence to reduce flicker on typical broadcast signals (60fps NTSC, 50fps PAL). At 75Hz most people stopped noticing the flicker; many monitors could be driven as high as 120Hz at lower resolutions, limited mainly by horizontal scan frequencies and pixel bandwidth, and that was taken advantage of by competitive gamers.

LCD panels work differently; they tend to hold each pixel with a steady colour and require active work to change it. The latest LCD panels can change a pixel very quickly (less than 5ms), but that only occurs in response to a refresh cycle passing it, which even on a 144Hz display happens only every 7ms. So a game console producing 30fps will have the ball in the same place for 33ms at a time, during which it should have moved as much as 70 pixels to simulate smooth motion across the screen in 1 second. If your eyes are trying to follow that, you won't see a sharp (if flickery) image of the ball, but a 70-pixel-long smear that seems to jump rapidly forwards and slide backwards.

At 30fps, a standard 60Hz monitor is refreshing twice per frame. On a CRT, that results in the ball being briefly displayed twice in the same place before moving to the next position. This effect is not noticeable if you stare at the background, but you will see a double image of the ball if you're tracking it - which one is real? Black frame insertion effectively removes the second image, at the cost of increasing flicker and reducing brightness. On an LCD, it effectively reduces the inherent persistence time to 16ms, so the image you see is smeared across only 35 pixels and doesn't jump quite as far within your field of view.

Blur reduction technology for LCDs mostly revolves around strobing the backlight, which is similar in principle to black frame insertion on a CRT. Essentially, the backlight is pulsed very briefly during the vertical blanking interval, when the panel has settled to the contents of a particular frame, thereby simulating the short-persistence phosphor of a CRT and removing the smear on eye-tracked objects. The downside is that it re-introduces flicker to the display - and because it's the whole display pulsing simultaneously, not a scan, it's even more noticeable - so it can only be used safely on high refresh rates, about 75Hz upward. Many monitors with this technology restrict it to 100Hz or higher.


Awesome descriptions! Testufo.com is from the BlurBusters site - we are on the same page measuring motion tracking and motion blur.

Some people are more tolerant of fllicker, I'd rather see smooth animation at 60 Hz than blurry motion at 120 Hz or 144 Hz.

Good point about phosphor persistence being formulated to match the FPS spec on the CRT, but the NTSC and PAL signals were 60 and 50 Hz, not FPS. Important distinction because the fps was only half the Hz due to the two fields. Too much phosphor is noticeable and causes interesting effects when games push 60 FPS of animation at 240p instead of 240i on classic Televisions.

_________________
Load BASIC from tape on your Atari 2600:
http://RelationalFramework.com/vwBASIC.htm


Top
 Profile  
Reply with quote  
PostPosted: Fri Jun 22, 2018 5:05 am 
Offline
User avatar

Joined: Fri Aug 14, 2015 5:19 pm
Posts: 27
Location: ENCOM mainframe.
BigEd wrote:
Possibly useful to understand Phi, Beta, and Persistence...
http://mesosyn.com/mental8-14.html

(If there's a hard white ball moving against a hard black background, I'd only want to refer to blur if there are some grey pixels being displayed. Possibly in the community of gamers who discuss such things, my preferred terminology would be non-standard, and only give rise to confusion.)


This is interesting stuff, I've been reading the page.

Non-standard terminology welcome! Some possibly related effects to this I've noticed that may add to the confusion is the smoothly scrolling city in STARBLITZ flickering when you focus on the ship, but not when you focus on the city.

_________________
Load BASIC from tape on your Atari 2600:
http://RelationalFramework.com/vwBASIC.htm


Top
 Profile  
Reply with quote  
PostPosted: Fri Jun 22, 2018 5:08 am 
Offline

Joined: Mon May 21, 2018 8:09 pm
Posts: 1462
Well, you could interpret "fps" as "fields per second" where appropriate.

However, a standard CRT-based TV can be driven in non-interlaced mode by removing the half-line shift in the horizontal sync timing; it is then capable of displaying 50 or 60 frames per second with half the vertical resolution. Frequently, 8-bit micros actually did this, or at least behaved as though they had even if they actually left the interlaced timing in. The latter could be seen as a slight shimmer in the vertical position.


Top
 Profile  
Reply with quote  
PostPosted: Fri Jun 22, 2018 2:31 pm 
Offline

Joined: Tue Jul 24, 2012 2:27 am
Posts: 672
Signals from 60fps game consoles and video cameras can also be generating 60 half-frame fields per second, which isn't 30 frames per second. Each frame is only half the visual information for a new 16ms snapshot; the other half is simply lost.

_________________
WFDis Interactive 6502 Disassembler
AcheronVM: A Reconfigurable 16-bit Virtual CPU for the 6502 Microprocessor


Top
 Profile  
Reply with quote  
PostPosted: Sat Jul 07, 2018 12:02 pm 
Offline
User avatar

Joined: Fri Aug 14, 2015 5:19 pm
Posts: 27
Location: ENCOM mainframe.
Chromatix wrote:
Well, you could interpret "fps" as "fields per second" where appropriate.

However, a standard CRT-based TV can be driven in non-interlaced mode by removing the half-line shift in the horizontal sync timing; it is then capable of displaying 50 or 60 frames per second with half the vertical resolution. Frequently, 8-bit micros actually did this, or at least behaved as though they had even if they actually left the interlaced timing in. The latter could be seen as a slight shimmer in the vertical position.


Yes that is how these experiments were done, they compare such a setup where the standard CRT based TV is overclocked to display 60 FPS by removing the half-line offset.

What's being compared to illustrate motion blur (and motion blur reduction) is when frames are doubled - 30 FPS encapsulated in 60 FPS by doubling the frames, compared to when the doubled frame is replaced by a blank frame. Try the second example below to see the difference.

White Flame wrote:
Signals from 60fps game consoles and video cameras can also be generating 60 half-frame fields per second, which isn't 30 frames per second. Each frame is only half the visual information for a new 16ms snapshot; the other half is simply lost.


Great example - yes the other half is lost if you take a snapshot of it. But when we look at it, it's maintained on the retina and we are able to assemble it into the full image.

It's interesting that our eyes have what amounts to a variable shutter speed on a camera.

Try looking directly at the City in STARBLITZ (press space to start the game) and then look directly ath the Ship and the City will go from clear to flickery because we can't track it fast enough if we're not focused on it.

Then flip the BW switch (lower left) and look directly at the City and you will see motion blur, our eyes creates visual artifacts that can't be photographed.

http://javatari.org/?ROM=http://relationalframework.com/StarBlitz_double_fun.bin

_________________
Load BASIC from tape on your Atari 2600:
http://RelationalFramework.com/vwBASIC.htm


Top
 Profile  
Reply with quote  
PostPosted: Mon Jul 09, 2018 12:32 pm 
Offline

Joined: Tue Jul 24, 2012 2:27 am
Posts: 672
Mr SQL wrote:
Great example - yes the other half is lost if you take a snapshot of it. But when we look at it, it's maintained on the retina and we are able to assemble it into the full image.

That's not exactly what I mean. The brain can still conceptually reconstruct where the objects are, and what they look like, but in these examples the retina itself is not combining half-images into a full image, as would happen with 30fps. There's a full 60fps of onscreen movement (objects, camera, etc motion), even though only half an image is seen every 16ms. To be precise, no pair of consecutive images are combinable into a single clear non-combed image.

Quote:
It's interesting that our eyes have what amounts to a variable shutter speed on a camera.

Our electrical systems likely trigger based on how much "unexpected" information there is. Our brains' sensory systems have far more feedback connections than feedforward ones, presumably to filter out that which is uninteresting to think about further.

Quote:
Try looking directly at the City in STARBLITZ (press space to start the game) and then look directly ath the Ship and the City will go from clear to flickery because we can't track it fast enough if we're not focused on it.

Then flip the BW switch (lower left) and look directly at the City and you will see motion blur, our eyes creates visual artifacts that can't be photographed.

http://javatari.org/?ROM=http://relationalframework.com/StarBlitz_double_fun.bin

I'm sorry, I still don't see much difference. Presumably this still a 30fps game in both settings? If the eye is smoothly tracking the average horizontal movement of the cityscape, obviously there's a lot of discontinuity because of the low resolution of movement the 2600 can display for background graphics, and there's a bit of visual "trailing" to the same intensity of effect in both settings, as the cityscape slides & snaps relative to the eyes as it aliases that movement. If the eyes aren't tracking that movement but rather fixed to the screen or ship, there's no blur in the cityscape movement at all, but a noticeable jerkiness of motion, in both settings.

_________________
WFDis Interactive 6502 Disassembler
AcheronVM: A Reconfigurable 16-bit Virtual CPU for the 6502 Microprocessor


Top
 Profile  
Reply with quote  
PostPosted: Fri Feb 26, 2021 8:05 am 
Offline
User avatar

Joined: Fri Aug 14, 2015 5:19 pm
Posts: 27
Location: ENCOM mainframe.
Attachment:
SUPERBLITZ_BASIC_10_LINE_GAME_ENTRY_WRITTEN_FOR_ATARI_2600_IN_SUPERCHARGER_BASIC.JPG
SUPERBLITZ_BASIC_10_LINE_GAME_ENTRY_WRITTEN_FOR_ATARI_2600_IN_SUPERCHARGER_BASIC.JPG [ 17.8 KiB | Viewed 558 times ]


Here are two fun new tech demo games in BASIC that work really well on classic CRT and even on modern monitors -

This game is based on SUPERBLITZ - the colorful screenshot is from my 1986 port of BLITZ for the TRS-80 with the same name!

Here's the description with the instructions from basic10liners.com and the 10 lines of BASIC for the Atari 2600!

Code:
 rem ----------------------------------------------------------------------------
 rem --- SUPERBLITZ Throttle Control 3/2021
 rem --- basic10liner.com competition version
 rem --- Waves and Missions                 
 rem ----------------------------------------------------------------------------
 rem --- Insignia on Plane revealed after Night Mission is completed!
 rem --- Multiple Waves over differently colored Sky's and Cities
 rem --- More optical illusions: Some color combinations create unreal artifacting such as textured bricks -
 rem --- complete several rounds and describe what you encounter!
 rem --- note: Classic hardware and a CRT required to experience artifacting textures and additional illusions
 rem --- unique features - you control your speed and difficulty increases as you play
 rem --- BW switch pegs the throttle (Advanced)
 rem --- Each wave achieved keeps it's colors in Attract mode!
 rem --- Unlimited continues until powering off the console!

0 data city 5,9,6,9,7,6,7,5,9,5,5,5,5,6,6,7,5,8,5,8,7,5,8,8,5,5,6,6,7,5,7,8,9,8,8,7,8,9,5,6,8,5,9,6,6,7,5,7,5,5,8,5
1 if g=0 or CXP0FB>126 then CXCLR=0:for j=0 to 9:player1(j)=189:player0(j)=pl(j):rowcolors(j)=178+w:next j else goto 3
2 for j=20 to 71:k=j-20:k=city(k):for i=k to 9:vwpixel(j,i,on):next i,j:player0y=96:player0x=84:y=11:g=1:w=16*z
3 if f<player0y/52 and joy0right=0 and SWCHB|247=255 then f=f+1:goto 9 else AUDC1=7:AUDF1=BITIndex/5:AUDV1=BITIndex:f=0
4 AUDV0=f:scrollvirtualworldtoggle=1:BITIndex=BITIndex+1:missile0x=missile0x+2:data pl 0,224,127,231,252,192,128,0
5 if joy0fire=1 and y>8 then AUDF0=12:AUDC0=9:SUSTAINFORFRAMES=7:x=BITIndex+9:i=96-player0y:i=i/10:y=1+i:remPlayahTune
6 if y<10 then vwpixel(x,y,bindplayer1):COLUP1=M(y):y=y+1:data M 122,138,12,170,154,250,234,218,202,186,42,58,74,28   
7 if y<10 and vwpixel(x,y,poll)>0 then vwpixel(x,y,flip):player1x=0:player1y=0:AUDC0=y:y=21:AUDF0=4:AUDV0=15:rem Hit!
8 if BITIndex>71 then BITIndex=0:player0y=player0y-2 else missile1x=missile1x+1:missile1y=missile1y+3:rem SUPERBLITZ 86
9 if player0y=0 then g=0:player0colors(3)=14:player0colors(4)=112+z:COLUBK=M(z)-10:z=z+1 else missile0y=missile0y+2

Links to play the game online at different Hz rates, MBR Fx should be discernable when playing on an LCD monitor if you maximize the display to full screen after start up:

SUPERBLITZ running at 30 Hz and variable FPS:
https://javatari.org/?ROM=http://relationalframework.com/SUPRBLITZ.bin&SCREEN_FULLSCREEN_MODE=1

FLUID CITY running at 60 Hz and variable FPS:
https://javatari.org/?ROM=http://relationalframework.com/SillyVenture2019_Fluid_City_B_Side_PAL.bin&SCREEN_FULLSCREEN_MODE=1


Attachments:
SuperBlitz.jpg
SuperBlitz.jpg [ 19.18 KiB | Viewed 558 times ]

_________________
Load BASIC from tape on your Atari 2600:
http://RelationalFramework.com/vwBASIC.htm
Top
 Profile  
Reply with quote  
PostPosted: Mon Dec 13, 2021 12:26 am 
Offline
User avatar

Joined: Fri Aug 14, 2015 5:19 pm
Posts: 27
Location: ENCOM mainframe.
This is a really clear MBR demo for the Atari 2600 from the SillyVenture Atari Art party Winter festival in Gdansk this weekend!

You can see it pretty clearly on the youtube video and in the Javatari online emulation link but it did not render properly in the emulator at the show. This is the first time emulators were used instead of real hardware.

Attachment:
File comment: 4-in 1 demo from SillyVenture 2021 Atari Art Party in Gdansk!
SillyVenture2021MBRDemo4in1.jpg
SillyVenture2021MBRDemo4in1.jpg [ 43.25 KiB | Viewed 427 times ]


emu from show stream:
https://youtu.be/xXDjtDJf69E

real Atari 2600 hardware and CRT Television:
https://youtu.be/iDB0HiE4l-s

Try the demo and see if you can see the MBR difference, if you hold the spacebar when you see party in Gdansk you can activate the hidden part of the demo:
https://javatari.org/?ROM=http://relati ... EEN_MODE=1

Note: Maximize the screen for best display and activate the audio.

_________________
Load BASIC from tape on your Atari 2600:
http://RelationalFramework.com/vwBASIC.htm


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 24 posts ]  Go to page Previous  1, 2

All times are UTC


Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: