Jump to content
ibogost

CRT simulation for Stella

Recommended Posts

I'm really excited to let you know about a forthcoming CRT television simulation system, which a handful of Georgia Tech CS students have been developing with me as their senior capstone project. My goal was to bring more of the visual features of the television to the Stella emulator, including beam separation, screen texture, color bleed, and even more frame-to-frame afterimage.

 

I've attached a sample but invite you to read more here.

 

crt_enduro.jpg

 

The students (Edward Booth, Michael Cook, Justin Dobbs, Will Rowland, and Prince Yang) are working to roll this back into the Stella codebase, so hopefully it will be available for everyone as an option in the program's video configuration soon. There is still more refinement that can be done, not to mention optimization, but I'm really happy with the results; they did a great job.

Share this post


Link to post
Share on other sites

Can you add in where you have to whack the monitor on the side occasionally to get the picture to come back in after it randomly drifts out a bit... and an occasional snippet of a TV program interrupting gameplay for a quick second? I remember both of those in the '80s!

 

j/k... this looks really great. Getting just a step closer to truly making emulation a replacement for hardware. Good work!

 

EDIT: I just looked at the other pictures. That does more for me that I would expect to really set the mood for how the games were back in the day. Truly great work. This is a major step forward for emulation.

Edited by Mirage1972

Share this post


Link to post
Share on other sites

Nice work. Yar's looks very CRT-like.

 

When you use openGL as a renderer, maybe you could add barrel distortion effects too, as old crt's are curved.

Edited by roland p

Share this post


Link to post
Share on other sites
Is this being done together with Stephena also?

 

We've indeed been in touch with Stephen regarding the project and integrating it into the Stella codebase.

Share this post


Link to post
Share on other sites
Nice work. Yar's looks very CRT-like.

 

When you use openGL as a renderer, maybe you could add barrel distortion effects too, as old crt's are curved.

 

Yes, I thought about this too! It's not in there yet, but it's a good idea for a future release. I think some GL optimization is required first (it can really chug at 4x size). I also considered a tube reflection, as one might see on the curved glass surface.

Share this post


Link to post
Share on other sites
EDIT: I just looked at the other pictures. That does more for me that I would expect to really set the mood for how the games were back in the day. Truly great work. This is a major step forward for emulation.

 

Awesome, glad to hear it!

Share this post


Link to post
Share on other sites
Nice work. Yar's looks very CRT-like.

 

When you use openGL as a renderer, maybe you could add barrel distortion effects too, as old crt's are curved.

 

Yes, I thought about this too! It's not in there yet, but it's a good idea for a future release. I think some GL optimization is required first (it can really chug at 4x size). I also considered a tube reflection, as one might see on the curved glass surface.

 

I know someone who did the barrel-distorion effects in his emulator. You can see it here:http://www.gagaplay.com/jemu2/jemu2.jnlp (java) choose for renderer-3d

Share this post


Link to post
Share on other sites

It would be great if the end results looked like Blargg's NTSC Libraries, here:

 

http://slack.net/~ant/libs/ntsc.html

 

kat5200 has incorporated an NTSC filter - and it really is fantastic. As shown in the link above there has been NTSC filters incorporated in various other system emulators (including Nestopia). It would be great to see an Atari 2600 emulator and an Atari 7800 emulator with such an effect.

 

All the best with this endeavor, ibogost. I'm looking forward to the end results.

 

-Trebor

Edited by Trebor

Share this post


Link to post
Share on other sites
kat5200 has incorporated an NTSC filter - and it really is fantastic. As shown in the link above there has been NTSC filters incorporated in various other system emulators (including Nestopia). It would be great to see an Atari 2600 and an Atari 7800 with such an effect.

 

These are indeed fantastic, thanks for sharing them.

Share this post


Link to post
Share on other sites

Interesting. So much effort going into making the picture from an emulator look more like the old original hardware CRT images while in another camp we have people working hard to make the original hardware render images less like the original hardware.

Share this post


Link to post
Share on other sites
Interesting. So much effort going into making the picture from an emulator look more like the old original hardware CRT images while in another camp we have people working hard to make the original hardware render images less like the original hardware.

 

Yeah, different approaches. Just shows the breadth of interest in the VCS, I suppose.

Share this post


Link to post
Share on other sites
Interesting. So much effort going into making the picture from an emulator look more like the old original hardware CRT images while in another camp we have people working hard to make the original hardware render images less like the original hardware.

At first glance it may seem strange, but it really isn't when you think about it. First of all, each camp is completely separate. For example, the typical RF output is absolutely horrible, so people try to get a better image. I'm personally in that camp; I'm waiting for an S-Video mod for my heavy sixer right now. But then there's the emulation camp, where the image really is too sterile, so it would be nice to 'dirty it down' a little.

 

Both groups want to improve the images on their systems for various definitions of 'improve'. In the end, it's about having choice (particularly on the emulation side, where all this is completely configurable).

 

And BTW, I just wanted to add how excited I am about all this. Better filtering was one of my main goals back when I first started working on Stella, and it's absolutely wonderful to see it being finally added. :D

Share this post


Link to post
Share on other sites

I just found this thread due to Stephen's post at [stella]. :thumbsup:

 

This is fantastic stuff and I hope it will become integrated into the Stella codebase soon.

 

A few questions:

- Will there be PAL emulation too? I suppose some effects might look different on PAL TVs (e.g. color bleeding).

- Will the effects be adjustable or just on and off? I would like them to be adjustable and maybe the parameters could be stored into a property file, so people can exchange them.

- How about the palettes? Is there a chance that the palettes will be profiting from this new code too? Adjustable palettes (property file again) would be great.

Share this post


Link to post
Share on other sites
I just found this thread due to Stephen's post at [stella]. :thumbsup:

 

This is fantastic stuff and I hope it will become integrated into the Stella codebase soon.

 

A few questions:

- Will there be PAL emulation too? I suppose some effects might look different on PAL TVs (e.g. color bleeding).

- Will the effects be adjustable or just on and off? I would like them to be adjustable and maybe the parameters could be stored into a property file, so people can exchange them.

- How about the palettes? Is there a chance that the palettes will be profiting from this new code too? Adjustable palettes (property file again) would be great.

I haven't seen the code yet, but based on the UML diagrams I have seen, it looks to be an 'on or off' thing. And I think the first pass will be just that as well. I'm not opposed to making the parameters adjustable and exposing them through the UI, but I think that will have to come in a later release, when I'm more familiar with the new code.

Share this post


Link to post
Share on other sites

Cool!

 

I've messed with a number of these options in MAME. The one I like best is raster lines - makes the images look a lot less pixelated.

Share this post


Link to post
Share on other sites

If implemented as a library, this could show up in other emulators and join the other scalers and filters emulators offer. If it were an SDL driver then these effects could be applied to any SDL software. There's a lot of things that could happen.

 

The thing I've always thought needed more thought is vector monitor behavior. I know there is no way an LCD or even a plasma can draw the super bright lines of a vector monitor but there is much that can be done. I don't play vector games in MAME much. Take Asteroids for instance. On the original displays, a shot looked like a Great Ball Of Glowing Plasma Death. In MAME, shots are dim little points. Even playing around with settings like Beam Width and Brightness don't really help much as the best I can create are shots that are fuzzy squares. And some of that glowing effect wasn't just the vector monitor alone. The monitor was under glass that reflected some of the light back and created a penumbra effect around objects. Take the shots in Asteroids again. Thanks to the glass, a shot was a bright round point surrounded by a round aura at perhaps 5% of the brightness of the central point. All of this contributed to the look of the original game. Emulators turn the great vector games into dim uninspired lines.

Edited by frogstar_robot

Share this post


Link to post
Share on other sites
I just found this thread due to Stephen's post at [stella]. :thumbsup:

 

This is fantastic stuff and I hope it will become integrated into the Stella codebase soon.

 

A few questions:

- Will there be PAL emulation too? I suppose some effects might look different on PAL TVs (e.g. color bleeding).

- Will the effects be adjustable or just on and off? I would like them to be adjustable and maybe the parameters could be stored into a property file, so people can exchange them.

- How about the palettes? Is there a chance that the palettes will be profiting from this new code too? Adjustable palettes (property file again) would be great.

 

It's a great point about PAL. I don't know that we're familiar enough with the PAL TV appearance here in the States. I'd love to learn more about those differences anyway (differences in subtle appearance, I mean).

 

We also talked about palettes, because the filters do alter the perceived colors in undesirable ways at some stages. But we didn't bake in any auto-paletting solution. It might be worthwhile to create some palette revisions to use (manually) in tandem with these.

 

I haven't seen the code yet, but based on the UML diagrams I have seen, it looks to be an 'on or off' thing. And I think the first pass will be just that as well. I'm not opposed to making the parameters adjustable and exposing them through the UI, but I think that will have to come in a later release, when I'm more familiar with the new code.

 

Yes, currently it's on/off. It could be parameterized, but I'd prioritize that after optimization.

Share this post


Link to post
Share on other sites
If implemented as a library, this could show up in other emulators and join the other scalers and filters emulators offer. If it were an SDL driver then these effects could be applied to any SDL software. There's a lot of things that could happen.

 

I agree, lots to think about. Check out the C SDL code linked above too.

 

Take Asteroids for instance. On the original displays, a shot looked like a Great Ball Of Glowing Plasma Death. In MAME, shots are dim little points. ...

 

Yes! I think about this a lot. In addition to everything you've said, different Asteroids cabinets would have different intensities of beam strength and different phosphor coatings, so each one had a kind of signature.

 

Interesting Asteroids port tidbit (I think we mention this in Racing the Beam): Asteroids was the only original Xbox game to run at 1080i (on one of those Arcade Collections). They couldn't recreate phosphor glow on an LCD, but they could recreate very high resolution graphics.

Share this post


Link to post
Share on other sites
Interesting. So much effort going into making the picture from an emulator look more like the old original hardware CRT images while in another camp we have people working hard to make the original hardware render images less like the original hardware.
Not to mention all the time, money and effort people put into upgrading old consoles to support S-video outputs and 2 channel audio! :)

 

I'm glad that someone is offering this, but honestly I can't imagine I'd use it.

Share this post


Link to post
Share on other sites
Nice work. Yar's looks very CRT-like.

 

When you use openGL as a renderer, maybe you could add barrel distortion effects too, as old crt's are curved.

 

Yes, I thought about this too! It's not in there yet, but it's a good idea for a future release. I think some GL optimization is required first (it can really chug at 4x size). I also considered a tube reflection, as one might see on the curved glass surface.

 

I'm not to worried about a tube reflection, you can always get glare-free viewing by playing with your orientation with respect to the other lights in the room. But if you want, you can overlay a .png file or something as the reflected image.

 

What is more important, to me, is somehow simulating the crt electrical noise. The pictures on the the old tubes were never really stable like today's lcd monitors. There was some random fuzziness always present. and you could see it by looking real close. there was always some tiny static and shakiness in the image.

 

I have seen some of the mame filters and only a few look halfway good. It is nowhere near enough to just round the edges, you have to round them due to bleeding and glowing.

 

 

Everybody remembers playing these games on crappy crts. Some of us had good ones, some not so good. It is important to allow us to adjust the parameters based on what tv we had. It would be too much of a hassle to emulate all the types of tv tubes, but not much of a hassle to put in adjustable controls. Fuzziness, bleed, noise, stability, convergence, mis-convergence, saturation, brightness, luminance, chroma, type of phosphor mask, persistence, aperture grille. etc.. etc..

 

 

Someone previously said vector emulation pales in comparison to the real thing. Sure that's probably true, bit it *is* getting better. And yes, they have made a basic attempt at emulating phosphor glow too!

 

look at these -

 

http://xout.blackened-interactive.com/Gravitron.html

http://wiebo.wordpress.com/my-pc-games/

http://worldofstuart.excellentcontent.com/grid/wars.htm

 

and then there's this -

http://typhoon.kuto.de/shots.html

 

Not really emulation related or anything, but I do like the openGL glow effects. So it can be done to a certain extent.

Edited by Keatah

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