uo_Snes9x 0.02pd1

Discuss the development of new homebrew software, tools and libraries.

Moderators: cheriff, TyRaNiD

Post Reply
Andon
Posts: 15
Joined: Sun Jul 10, 2005 10:01 pm
Location: Florida

uo_Snes9x 0.02pd1

Post by Andon »

I merged the code in svn://svn.pspdev.org/pspware/trunk/snes9x with my own 0.02y11j3a5 code and renamed the project 0.02pd... Since y has refused to release the source code for his newer versions, the fork was necessary.

Most importantly, aside from the name change and open source nature, the new version adds a sceGu bit blit backend. It's still experimental, and has been known to mess up the GUI among other things, but it's much more advanced than the traditional pg bit blit backend. Many thanks to crazyc and chp for the original patch to use sceGu based blitting.

If you're daring enough to try the sceGu blit backend, it's an option in the display config menu. Once you enable it, the screen may stop updating altogether, this happens if the menu code has swapped the back buffer with the front... Press 'O' a couple of times to fix it. Obviously that needs to be fixed and I'm looking into it right now :)

You can enable HiRes mode (typically pointless, since very few SNES games ever utilized this and those who did only used it for short periods of time, such as title screens... the flicker from interlacing annoyed most players) which renders to a 512x512 texture, rather than the standard 256x256, and change the filter technique. There really is no measurable performance hit for enabling bilinear filtering, but point filtering is the default because that was the normal behaviour for older versions. And since the sceGu blit code isn't double buffered right now, you will notice annoying artifacts at moments - I'll fix that soon. Also, the 'Fit' screen mode becomes 4:3 with the sceGu blit backend enabled.

I also changed the state compress/decompress code so that it will not modify the state save timestamp anymore.

The menu is opened with L Trigger + R Trigger + Select now... If anyone wants to make this a configurable option, by all means feel free. I'm too busy working on the sceGu blit code right now to address this.

See the new CHANGELOG.txt file for any additional info.
emumaniac
Posts: 79
Joined: Sun May 08, 2005 12:22 am

Post by emumaniac »

is there a download ?
Andon
Posts: 15
Joined: Sun Jul 10, 2005 10:01 pm
Location: Florida

Post by Andon »

emumaniac wrote:is there a download ?
No, it's just the source code...

I'll put a build up on my website though:

http://psp.nothing-inc.com/uo_Snes9x-0. ... 15.tar.bz2

I fixed all of the GUI issues mentioned in this snapshot, and in the SVN code.


* BTW, this is not an official release, pd1 is still in development... Once I make the sceGu blit code double buffered I'll formally release pd1.
Warren
Posts: 175
Joined: Sat Jan 24, 2004 8:26 am
Location: San Diego, CA

Post by Warren »

Any chance you could just work off of the snes9x version that's in our SVN 'PSPWare' repository so we don't have even more forks?

Edit: Nevermind you already are
Cpasjuste
Posts: 214
Joined: Sun May 29, 2005 8:28 am

Post by Cpasjuste »

Thanks for you nice work, its impresive.
n1ckn4m3
Posts: 16
Joined: Sun May 22, 2005 7:27 am
Contact:

'y' has released version y28's source code on his website ..

Post by n1ckn4m3 »

I'm not sure if you missed it or what, but the source code for y28 is posted on 'y''s website.

Check out http://ypspdev.hp.infoseek.co.jp/cgi-bi ... cgi?y28src for the source.

Thanks,
... anyone up for some l33th4x?

;)
Andon
Posts: 15
Joined: Sun Jul 10, 2005 10:01 pm
Location: Florida

Re: 'y' has released version y28's source code on his websit

Post by Andon »

n1ckn4m3 wrote:I'm not sure if you missed it or what, but the source code for y28 is posted on 'y''s website.

Check out http://ypspdev.hp.infoseek.co.jp/cgi-bi ... cgi?y28src for the source.
Thanks, I'll look into it. I contacted him a while back asking if he could release the source code but he never responded :-\
Andon
Posts: 15
Joined: Sun Jul 10, 2005 10:01 pm
Location: Florida

Official release

Post by Andon »

I have officially released 0.02pd1 now. Everything's working well enough to make the sceGu bit blit backend default.


From the readme.txt:

Code: Select all

uo_Snes9x 0.02pd1
-----------------

This is the first version of the PSP Dev. unofficial Snes9x PSP port... It is
based off of uo_Snes9x 0.02y11J3a5.

-*- To Open The Menu:  (Left Trigger + Right Trigger + Select) -*-

Most importantly in this release, a new bit blit backend has been added. This
new backend allows the viewport to be stretched without any performance hit, and
also allows for extremely fast bilinear filtering and HiRes mode.

The new bit blit backend is enabled by default, if for some reason you want to
use the old backend (pg), you may select it from the display config menu.

Bilinear filtering is available (and enabled by default) if you're using the
sceGu bit blit backend. Do not worry, enabling this has no impact on perform-
ance at all - it is merely an asthetic preference.

The 'Fit' screen size becomes '4:3' (and is the new default) when using the
sceGu bit blit backend. Again, when using the sceGu bit blit backend, changing
the screen size will not impact performance.

HiRes mode is not suggested, very few games use this feature... The ones that do
typically only use it for short periods of time during gameplay, like the title
screen. If you don't know what this is, you probably don't need to enable it.

The battery info text has been translated to English, the confirmation dialogs
will be translated in 0.02pd2.

Compressing or Decompressing an existing state save will no longer change its
timestamp.

See the included CHANGELOG.txt file for any additional changes... Note that most
of the info in there is pretty technical.

Binary: http://psp.nothing-inc.com/uo_Snes9x-0.02pd1.zip

Obviously you can get the latest source code from SVN ([url]svn://svn.pspdev.org/pspware/trunk/snes9x[/url])... But the final pd1 source code is also available in tarball form.

Source Code: http://psp.nothing-inc.com/uo_Snes9x-0. ... rc.tar.bz2
n1ckn4m3
Posts: 16
Joined: Sun May 22, 2005 7:27 am
Contact:

Post by n1ckn4m3 »

Andon:

Thanks for the great work! It's awesome to see such incredible progress with projects like this. I can't wait to try this out once I get home!

Keep up the great work and thanks again for dedicating your free time to our pleasure :D

EDIT: Played around with it, again, great job! Seeing the different as far as FPS goes on graphically intensive games is impressive! As far as I'm concerned this version of the emulator has the most potential. Utilizing the sceGu is a great step forward. Again, keep up the great work and know that people appreciate your work!
Last edited by n1ckn4m3 on Sat Jul 16, 2005 12:46 pm, edited 1 time in total.
... anyone up for some l33th4x?

;)
DLM
Posts: 5
Joined: Wed Jun 29, 2005 2:01 pm

Post by DLM »

phenomenal work, Andon. Here's to hoping you're able put up with the whiny crowd, complaining about this or that.

Good work :)
mrbrown
Site Admin
Posts: 1537
Joined: Sat Jan 17, 2004 11:24 am

Post by mrbrown »

DLM wrote:phenomenal work, Andon. Here's to hoping you're able put up with the whiny crowd, complaining about this or that.

Good work :)
They won't be doing it here.
eddyjackson
Posts: 2
Joined: Sat Jul 16, 2005 10:15 am

Post by eddyjackson »

Nice work, although
Since y has refused to release the source code for his newer versions, the fork was necessary.
Y posts the source with every release on his webpage.
Thanks, I'll look into it. I contacted him a while back asking if he could release the source code but he never responded :-\
Did you email him in Japanese?[/url]
Warren
Posts: 175
Joined: Sat Jan 24, 2004 8:26 am
Location: San Diego, CA

Post by Warren »

eddyjackson wrote:Nice work, although
Y posts the source with every release on his webpage.
Really, can you link me to the source? I haven't been able to find it anywhere.
eddyjackson
Posts: 2
Joined: Sat Jul 16, 2005 10:15 am

Post by eddyjackson »

Xvoid6f
Posts: 2
Joined: Sun Jul 03, 2005 12:19 pm

sceGu

Post by Xvoid6f »

Correct me if I am wrong. I have not looked at the source code to the new gu blit backend. But, if the blit was implemented using palettized 8-bit textures, each texture being an 8x8 tile, and rendering the tilemaps on screen as such--wouldn't this run at far beyond 60 fps? I've seen the snes9x gu blit backend, and I wasn't all that impressed. With the gu acceleration, I would assume that drawing gfx would be a non-issue, even with transparencies.

Again, correct me if I am wrong on this.
Andon
Posts: 15
Joined: Sun Jul 10, 2005 10:01 pm
Location: Florida

Post by Andon »

Yes, that's indeed a possibility. I've actually been looking into that recently. The majority of the CPU cycles are spent drawing the tiles, without profiler support for the current PSP toolchain I've lost hope trying to optimize the code - all I can go by is the number of cache misses, cpu stalls, etc. between time A and time B, so it's still very much a guess and check process.

I'm going to finish up pd2 before I put any significant effort into optimizing the tile drawing. But it looks like that's our only hope of ever getting the emulator to run at "full speed" on the PSP.
Last edited by Andon on Thu Jul 21, 2005 3:52 pm, edited 1 time in total.
OptiRoc
Posts: 22
Joined: Mon Feb 02, 2004 12:26 am
Location: Sweden

Post by OptiRoc »

One challenge here is to properly support HDMA effects while getting optimal performance. Basically, most backgrounds and sprites can be blitted "straight up", ie. the whole tile or sprite in one fast blit. However, as soon as you use HDMA to dynamically alter PPU registers during the screen drawing process that approach won't suffice. Any sprites, backgrounds or windowing effects that's effected by HDMA must be drawn on a line-by-line basis.

A solution that might gain considerable speed is to "log" the HDMA actions for the current frame, and delay all drawing until vblank is reached. Then you decide which components of the screen can use fast blitting, and which need line-based rendering. Since HDMA action often is delayed for large portions of the screen (for example the ground in Street Fighter 2, where the channel that controls the scrolling only is active for ~1/4 of the screen), there are further optimizations to do if HDMA channels that use delays are treated with line-rendering only for those lines where it's active.

This would require a rewrite of the entire PPU core, though. The SNES9X team (Anomie, really) are currently doing a rewrite with optimal compability in mind (perhaps it's already in use? I haven't kept up with SNES news for some months), I guess there's very little chance of getting that up to speed on the PSP. That might be incentive enough to code an alternative, hi-speed hardware accelerated, PPU core for machines such as the PSP.
Andon
Posts: 15
Joined: Sun Jul 10, 2005 10:01 pm
Location: Florida

Post by Andon »

Indeed, that was one thing I was concerned with. Another is the way depth values can be per-pixel... The PSP doesn't have a programmable fragment pipeline, which would make that difficult to deal with as well. But then again we don't even know how to use its programmable vertex pipeline yet :)

Also, I wanted to point out that I really wasn't expecting the sceGu blit to speed anything up; except for scaling the SNES display and applying bilinear filtering. There's additional overhead every frame when the data cache has to be cleared and the GPU/CPU synchronization (though, I think I disabled that in pd1?), so it runs a slight bit (1 FPS or so) slower than pg would at its "Normal" size. If you compare the pg Fit and sceGu Fit modes on the other hand there's no contest, and if you throw in the software bilinear filtering y ported, it's a truly pathetic comparison :)
Arwin
Posts: 426
Joined: Tue Jul 12, 2005 7:00 pm

Post by Arwin »

Andon wrote:Yes, that's indeed a possibility. I've actually been looking into that recently. The majority of the CPU cycles are spent drawing the tiles, without profiler support for the current PSP toolchain.
I have no idea if that would help, but you could get yourself one of those cheap (=25 euro for 4Mbps, multiple standard, etc.) IrDA USB plugs for your PC, and then write a simple debug printf that outputs to the IrDA port. Then you just need something on the PC to make the incoming IrDA bytes visible.

I don't know if the speed of IrDA is enough for all profiling purposes, but I think it should be a very good way to get a runtime debug output screen for your PSP and you should be able to do at the very least basic profiling with it.
Viper314
Posts: 1
Joined: Tue Jan 17, 2006 3:27 pm

GREAT WORK!

Post by Viper314 »

This is definately a HUGE improvement over the other SNES emulators ive found. However aside from sound (which is understandable) there is one effect that KILLS performance. Transparency.

Seems to me a lot of games I try to play use transparency in one form or another. If I turn it off I have solid textures over my screen and I cant see whats going on, if I turn it on the game slows to a crawl. Theres gota be a way to optimise transparency :)

At the very least you could put in an option like ZSNES has where you can toggle on and off the seperate layers so you could turn off the transparency layer entirely so you wouldnt have the opaque textures covering the screen. This applys to games with fog effects, or more importantly maridia in super metroid where the whole dang zone is covered with transparent water and is impossible to play without transparency turned on.

Other than that it looks great and keep up the good work, using PSP hardware in the emulator is definately the way to go!
TestType
Posts: 23
Joined: Tue Dec 13, 2005 4:04 am
Location: Iceland

Post by TestType »

Viper314, this one is pretty old.. Get snes9xTYL 0.2c, it's got hardware accelerated graphics and is therefore lightyears faster than this.
PSP: Japanese Firmware 1.0 :: 1gb SanDisk Memory Stick
Sorted
Posts: 33
Joined: Fri Jan 06, 2006 4:46 am

Post by Sorted »

does this actually play any games, i have got it to run but its either v slow
or when i press a button it goes back to the start menu.
A list of working games would be cool if there are any.

Looks v promising though
User avatar
Raphael
Posts: 646
Joined: Tue Jan 17, 2006 4:54 pm
Location: Germany
Contact:

Post by Raphael »

Omg, start reading last posts on a thread (or at least take a short glimpse at the date of the last post of the author) and get it! This emu was last updated Jul 2005 and is OUT OF DATE!

Use SNES9X_TYL. It's more compatible and faster. Period.

Sorry if this sounds rude, it isn't. It's just annoying how people don't read anything before asking questions that are already answered in the last 1-line post :/
Sorted
Posts: 33
Joined: Fri Jan 06, 2006 4:46 am

Post by Sorted »

Omg, start reading last posts on a thread (or at least take a short glimpse at the date of the last post of the author) and get it! This emu was last updated Jul 2005 and is OUT OF DATE!

Sorry if this sounds rude, it isn't. It's just annoying how people don't read anything before asking questions that are already answered in the last 1-line post :/

Before you start running your mouth why not ask what version i am using , I AM USING snes9xTYL 0.2c

My question stands as asked!

I have tried sensi soccer looks great but every time i touch a button it goes back to the games menu screen any ideas anyone or what games actually work

Thanks
User avatar
Raphael
Posts: 646
Joined: Tue Jan 17, 2006 4:54 pm
Location: Germany
Contact:

Post by Raphael »

Asking in a outdated thread on "uo_Snes9x 0.02pd1" and asking a question about compatibility of a completely different snes emu without explicitly naming it and then mocking that someone misunderstood you is.... let's keep it friendly - not that foreseeing.
If you have questions on SNES9xTYL, better ask in the appropriate forum in the appropriate thread, or start a new one here. I don't think that many people who could answer your question with TYL will read this thread anyway.

To at least try to answer your question partially: I don't know about sensible soccer, but it run's all games I tried so far very well playable if you run PSP at 333Mhz and set sound to 11khz or turn it completely off (not emulated/no-output). The only games that are slow are games with additional chips on the cartridge, like starfox (FX-Chip) and games that use mode-7 (Mario Kart). If however game xy won't run, it would probably be best to tell the author(s) of the emu about it, with explicit explanation how to replicate the error.

So sorry again if my first post sounded rude.

@Mods:
I'd say this thread should be closed.
Sorted
Posts: 33
Joined: Fri Jan 06, 2006 4:46 am

Post by Sorted »

Dude you have a go about me mocking you when you clearly mocked me is a tad hypocritical.

I did notice the post before mine which said SNES9xTYL is
'light years faster than this' I would be pretty dumb not to try it out wouldnt I?

Anyway thanks for your help I will try out your advice
Post Reply