Jump to content
IGNORED

Stella 6.0 released


stephena

Recommended Posts

Great to hear! What a tricky mess to sort out. :lol:

I think @stephena proposed to make changes to the Stella emucore (32-bit framebuffer alignment) if the test worked. Then it'll all show up on buildbot with the corrections. And we can be happy again until another (libretro) problem comes along.

Link to comment
Share on other sites

3 hours ago, snes2600 said:

Great to hear! What a tricky mess to sort out. :lol:

I think @stephena proposed to make changes to the Stella emucore (32-bit framebuffer alignment) if the test worked. Then it'll all show up on buildbot with the corrections. And we can be happy again until another (libretro) problem comes along.

You mentioned that your fix may potentially cause a slowdown.  Can you point to the specific code that would cause this?  I want to see (a) how you did it, and (b) if integrating it at a lower level will cause slowdowns too.  I guess my main question is, where are your changes??

 

Also, going forward, I really need to set up an Android VM or something.  Can anyone point me to a good tutorial for that?  Some of these bugs are really hard to diagnose without seeing the error myself, and being able to test fixes directly.

Link to comment
Share on other sites

https://github.com/snes2600/stella/commit/0c43b1daea4c818a290ff6be7572f4349bbfe03e

I created a temporary framebuffer which is 32-bit aligned. For every getVideoBuffer() call, it does a lazy memcpy loop from (stella fb) to (temp fb) which is passed to libretro frontend. It's a small hit which most people won't notice I bet, compared to this one



https://github.com/stella-emu/stella/blob/master/src/libretro/StellaLIBRETRO.cxx#L153

That line would create a bigger slowdown I'd expect (128 poke calls). Which is probably for achievements. A necessary slowdown. And not worth exposing Stella ram from const to writable.



https://github.com/stella-emu/stella/blob/master/src/common/tv_filters/AtariNTSC.cxx

If you make the emucore aligned, you'll run into some fun problems with the ntsc files. Because the whole code I think expects 565 out pitch? Seems easier to just force the conversion in the libretro side.



https://www.android-x86.org/releases -- Android-x86 Lineage OS 14.0

I could not reproduce the pitch bug on this Android VM. Because I (think) real ARM hardware uses OpenGL ES which I've heard does funny stuff with texture caching.

1) But I used VMWare Player. Created a 10 GB HDD (SCSI). 2 CPUs. 2 GB RAM. Turned on graphics acceleration.
2) Booted cdrom. Created logical partition. Let installer use Ext4. Grub yes.
3) On bootup, use cmdline. 'e' twice. Add vga=999 nomodeset xforcevesa. 'b' for boot. Select manual resolution.
4) Wait forever for 1st time install. Afterwards it'll auto-detect your NAT and you should be online connected.
5) To root device, go to settings:tablet:build number. Keep tapping it lots of times.

Tried other Android images but couldn't get internet or past the boot stage.

Link to comment
Share on other sites

Also wanted to bring this up for discussion instead of github.


https://github.com/libretro/libretro-common/blob/master/vfs/vfs_implementation.c#L1038

int retro_vfs_mkdir_impl(const char *dir)


I didn't know this existed but it looks useful. Because you can create Stella folders similar to standalone.


Examples on how to get libretro system, save directories.
https://github.com/libretro/Genesis-Plus-GX/blob/master/libretro/libretro.c#L2614
https://github.com/libretro/Genesis-Plus-GX/blob/master/libretro/libretro.c#L2621


/Stella/nvram
/Stella/stella.pro
/Stella/stella.pal


Converting the save files to use libretro save api (memory streams) is not happening anytime soon.

Note that Atari Lynx Handy libretro core currently writes eeprom saves to folder atm; using same format and name as standalone. So same can be done for Stella.

Link to comment
Share on other sites

Thanks for the work on this; I will try to find some time soon to integrate the changes.  Regarding 32-bit alignment; the old TV effects code did do it that way.  This non-alignment is a new thing, so we can probably rework it.  Even if the final column or two is all black pixels, you'd never know the difference.  But at least it would be efficient.

 

Also wanted to improve on the directory structuring, so seeing how another core does it will be very helpful.

Link to comment
Share on other sites

16 minutes ago, stephena said:

Regarding 32-bit alignment; the old TV effects code did do it that way.  This non-alignment is a new thing, so we can probably rework it.  Even if the final column or two is all black pixels, you'd never know the difference.  But at least it would be efficient.

 

Does that mean the rightmost column of pixels would be missing from the final output image? Or am I totally misunderstanding what's going on here?

Link to comment
Share on other sites

3 minutes ago, Keatah said:

 

Does that mean the rightmost column of pixels would be missing from the final output image? Or am I totally misunderstanding what's going on here?

No, we could add an extra column or two to make it be a multiple of 4, then make those columns blank.  That way, we get the efficiency and correctness, and you would never notice the difference.

  • Like 1
Link to comment
Share on other sites

On 7/24/2019 at 4:13 PM, snes2600 said:

Great to hear! What a tricky mess to sort out. :lol:

I think @stephena proposed to make changes to the Stella emucore (32-bit framebuffer alignment) if the test worked. Then it'll all show up on buildbot with the corrections. And we can be happy again until another (libretro) problem comes along.

Seeing that you have a setup where you're able to test this stuff, can you try the following:

  • Start with current code, no extra modifications
  • Edit 'src/common/tv_filters/AtariNTSC.hxx': on line 111 change the "+ 5" at the end of the line to "+ 8"
  • Re-test and see if that changes anything

If that fixes the problem, then I can rearrange some code to make this permanent.  I don't want to make any invasive changes here until we know for sure that this is the part of the code causing problems.

Link to comment
Share on other sites

There may be other changes required.  For now I just want to see if that change has any effect at all, since I'm unable to duplicate the problem on my systems.  At least it would point us in the direction to work on.

Link to comment
Share on other sites

  • 2 weeks later...
12 minutes ago, israelg said:

I can confirm that the latest Stella core (nightly) works OK without artifacts on android (multi threaded rendering is disabled) 

OK, good to hear that this is finally fixed.  Now we can move on to other issues ...

Link to comment
Share on other sites

I'll add to the news regarding the 32-bit aligned saga..

 

I have confirmed that the PSC version is corrected.  I downloaded the latest build bot and the problem is corrected.  The frame rate on Galaga and Mappy, however does drop some.  The problem did not exist on the previous version. 

 

After some tinkering I discovered that turning on threaded video solves the framerate on those two games.  All other DPC games run just so fine.  So it is just those two games which probably push the DPC a little more than other games.  Threaded video seems to help enough to bring them up to speed.
 

This seems to pretty much confirm what stephena was saying in the above issue thread regarding more use of the ARM emulation.  So consider problem solved, no degredation,  This is about as good as it is going to get for PSC owners.

Thanks to all for your help and involvement!

Link to comment
Share on other sites

Two ideas came to mind for Libretro.

1) Create new CPU method that allows us to memcpy a new RAM block. Avoiding the 128 pokes that creates some slowdown to support achievements. Although I doubt Mappy would drop to 53 fps because of it.

2) Create a libretro option to control framebuffer size: Full, Resize. Full will always create the 568x312 or something buffer. Resize will recreate lores 256x240 (ish) or hires 568.

This can greatly affect shader fps on potato graphic cards with non-blargg, as it's 256x256 vs 1024x1024 for glsl.


I might try pushing for both, to close performance "loopholes" on weaker systems like Core2. Or I suppose future generations of $5 RPI Zeroes.

Link to comment
Share on other sites

Thank you once again for stella.
I have one question/request - when debugging in standard theme I get green text on red background like the image. This is totally unreadable for me, even with the screen a few inches from my face. Very difficult anyway. But other than that, I like the theme colours. The "light" theme makes everything readable but is otherwise ugly as. Would it be possible to address the contrast in this red/green area and perhaps consider alternate colours? Yellow on blue is readable. White on red is probably readable. green on red... isn't!  Of course I may just be colourblind :P

 

Screen Shot 2019-08-10 at 11.43.20 pm.png

Link to comment
Share on other sites

18 minutes ago, Andrew Davie said:

Thank you once again for stella.
I have one question/request - when debugging in standard theme I get green text on red background like the image. This is totally unreadable for me, even with the screen a few inches from my face. Very difficult anyway. But other than that, I like the theme colours. The "light" theme makes everything readable but is otherwise ugly as. Would it be possible to address the contrast in this red/green area and perhaps consider alternate colours? Yellow on blue is readable. White on red is probably readable. green on red... isn't!  Of course I may just be colourblind :P

Please create an issue on Github for this.  Thomas J. is our resident 'UI-looks' guy, and I'd like him to see this too.

 

https://github.com/stella-emu/stella/issues

Link to comment
Share on other sites

  • 3 weeks later...

I'm not sure if this is a bug or if it's intentional behaviour or if it's 'a Windows thing' in Stella 6.0.1 (Win10Pro). When I have Stella in full screen in one monitor and then click on another program running in a different monitor, Stella minimizes. It doesn't minimize when Stella is windowed, only when full screen.

 

This may not be a big deal to people with one monitor (it may actually be preferable) but when I'm capturing/streaming video and want to adjust the position or size of the captured full screen of Stella in my streaming software, Stella minimizes and I can't see what I'm adjusting for anymore.

Edited by ZeroPage Homebrew
Link to comment
Share on other sites

I like and prefer the behavior of Stella as it is now. Changing basic behaviors as such described starts to confuse or create discord. And that gives a bad rap to emulators. 

 

A compromise could be including options to change the behavior as long as the original long-standing behavior is available and defaulted to.

 

in other words no changes to OOTB operation.

Edited by Keatah
  • Like 1
Link to comment
Share on other sites

It's not surprising that there might be 'strange' behaviour in multi-monitor setups.  I personally don't have such a system, and hence have never tested in this scenario.  Going forward, it seems that multi-monitor is becoming more common, so I guess we will have to look into that kind of setup.

 

I just created an issue for this: https://github.com/stella-emu/stella/issues/531.  No idea when we can get to it, but I agree that it's something that needs to be fixed.

  • Like 1
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...