Snes9X EX (port for Android, iOS, WebOS)

This is for people involved in the developement of Snes9x, or SNES emulators in general.
BUG REPORTS BELONG IN TECH SUPPORT/BUG TRACKING!
Post Reply
Rakashazi
Official iOS & Android Porter
Posts: 79
Joined: Sat Jan 01, 2011 9:51 pm
Location: Washington DC, USA

Snes9X EX (port for Android, iOS, WebOS)

Post by Rakashazi »

Hi everyone, I'm getting ready to release a port of Snes9x for Android, iOS, and WebOS very soon. It's based off of version 1.43 and the feature-set is very similar to the TG16 and NES emulators I've ported previously. I tried to use the GIT version initially but it runs over 2x slower than 1.43. After doing some profiling the culprit appears to the tile rendering code. Hopefully some optimizations can be made in the future to make the current 1.5x versions usable. I'm also going to release the source after I clean things up a bit (note: this is not based on SNesoid's code base). There's a video preview here and info on my site (more to come after release).

I've noticed a large number of Snes9x ports being used commercially on Android and iOS (2 more were released for Android just this past week) so I'm placing a note in the app description to try and warn people about them. Any devs who have copyrights in pre-1.5 Snes9x should figure out a plan of action about what to do with all these illegal apps.

Edit: Android version is on the Market, iOS version is on Cydia
SparroHawc
Official Android Porter
Posts: 303
Joined: Mon Feb 07, 2011 9:20 pm
Location: All up in your business

Post by SparroHawc »

Frankly, there's not going to be much use to chasing down the people selling ports of SNES9x. They're popping up like weeds, and shutting one down is only going to make the person release it under another name. The only way to deal with it is to undercut them, like you're doing. I've been watching it as it happens.

--edit--

Also, THANK YOU for this port. It runs significantly better than SNesoid in compatibility mode.
SparroHawc
Official Android Porter
Posts: 303
Joined: Mon Feb 07, 2011 9:20 pm
Location: All up in your business

Post by SparroHawc »

One thing I've noticed is that the Android version doesn't appear to have support for the Classic Controller. It's not a huge deal as I can just use the standalone Wiimote Controller app, but if I could help in any way to get support for it in the application without the workaround, I'd be glad to!
Rakashazi
Official iOS & Android Porter
Posts: 79
Joined: Sat Jan 01, 2011 9:51 pm
Location: Washington DC, USA

Post by Rakashazi »

Classic Controller support is in the works, just need to finish looking up some info on the protocol :)

Btw, what device are you running? I have some Android-specific updates including backgrounding support coming soon.
adventure_of_link
Hero of Hyrule | Official Port Recruiter
Posts: 2588
Joined: Mon May 24, 2004 5:06 pm
Location: 255.255.255.255

Post by adventure_of_link »

...you mean the wii remote can actually work as a controller for the Androids? :shock:

it's clunky, but that's pretty darn cool!!! just another reason for me to get a Droid soon.. :)
Image

Unofficial Test Monkey For:
* Snes9X GX (Wii)
* Snes9X EX (Android)
* Snes9X 64-bits (PC/Mac)

ZSNES|Ben Heck|NSRT|Bob Smiley
Vague Rant
Snes9x White Belt
Posts: 7
Joined: Wed Oct 13, 2010 12:17 pm

Post by Vague Rant »

I just got an old hand-me-down iPhone (3G), and this was one of my first apps post-jailbreak. While it's not really all that playable on the 3G, one thing I'd suggest for all devices is an option to disable scaling on landscape mode. The 3G's 480*320 screen wouldn't look horribly underused at 1x scale, and I, at least, would prefer it to the current full-height scaling.

I've tried the Wiimote controls, but they have about a 1s delay which make them pretty unusable for some games. Will definitely give CC controls a try if they're implemented in the iOS version.
yoshi1080
Snes9x White Belt
Posts: 2
Joined: Sun Apr 10, 2011 12:31 am

Post by yoshi1080 »

I have both SNES9x and SNESoid lite on my Xperia Play and frankly, the latter works better. The Xperia's circle button has the same keycode as the back button, which leads SNES9x to quit when pressed. SNESoid on the other hand simply re-assigns the back button to a new function. On the Xperia this makes a huge difference, but I imagine this could be useful on other Androids as well if you wanted to use the hardware buttons for controlling the games.

I understand the license problem with SNESoid, but since Google doesn't feel responsible for copyright infringements and the like, I think the only option is distributing it for free and making it better than the other apps.

(side-note: the forum software doesn't seems to support Unicode characters and cuts everything after the first such character is used)
Rakashazi
Official iOS & Android Porter
Posts: 79
Joined: Sat Jan 01, 2011 9:51 pm
Location: Washington DC, USA

Post by Rakashazi »

yoshi1080 wrote:The Xperia's circle button has the same keycode as the back button, which leads SNES9x to quit when pressed.
Right, you need to go into the menu and unbind or change the "Exit" key, it's at the very bottom.
yoshi1080
Snes9x White Belt
Posts: 2
Joined: Sun Apr 10, 2011 12:31 am

Post by yoshi1080 »

Oh, thanks for the tip! I thought that was standard Android behavior if you are at the root level of the app! :)
Vague Rant
Snes9x White Belt
Posts: 7
Joined: Wed Oct 13, 2010 12:17 pm

Post by Vague Rant »

Vague Rant wrote:I've tried the Wiimote controls, but they have about a 1s delay which make them pretty unusable for some games. Will definitely give CC controls a try if they're implemented in the iOS version.
I've now tried both CC and iControlPad controls in the emu, they all work quite well minus the input lag, which is probably reduced on more powerful devices. I didn't see any options to remap the controls within the menu though, and found I kept hitting the "cancel" button unexpectedly. Even an option for "Nintendo-style" vs "MS-style" layout would be nice, in lieu of full customisation.

Incidentally, I'm curious if the hosts modifications you do are lawful. It looks like when users launch your app, you silently block sources of cracked/pirated apps, but since you're modifying a core system file without notifying users (so far as I'm aware), it seems like there might be some laws there of which to run afoul. Obviously, you need to protect your work, but two wrongs, etc.
Rakashazi
Official iOS & Android Porter
Posts: 79
Joined: Sat Jan 01, 2011 9:51 pm
Location: Washington DC, USA

Post by Rakashazi »

Vague Rant wrote: I've now tried both CC and iControlPad controls in the emu, they all work quite well minus the input lag, which is probably reduced on more powerful devices. I didn't see any options to remap the controls within the menu though, and found I kept hitting the "cancel" button unexpectedly.
Scroll down to Wiimote Key Config near the bottom of the menu to change or unbind any of the buttons.
Vague Rant wrote: Incidentally, I'm curious if the hosts modifications you do are lawful. It looks like when users launch your app, you silently block sources of cracked/pirated apps
The admins of the site in question have attempted to harass me and are hijacking updates for all my paid packages to anyone adding their repo in Cydia. For now I'm forced to block them to protect my current installs or else the apps will auto-update to their versions and mask the official ones. The code will be removed once the situation is resolved.
Vague Rant
Snes9x White Belt
Posts: 7
Joined: Wed Oct 13, 2010 12:17 pm

Post by Vague Rant »

Rakashazi wrote:Scroll down to Wiimote Key Config near the bottom of the menu to change or unbind any of the buttons.
Sorry, I did a terrible job of explaining what I meant there. Within the actual SNES9x EX menu, the south button (B on Classic Controller, X on the iControlPad) is the "Accept" button and the east button (A on CC, B on iCP) is the "Cancel" button. This is what I meant by "MS-style"; in Nintendo consoles (and also Japanese versions of Sony consoles), this layout is generally reversed, with the east button for "Accept" and south for "Cancel". I find I keep accidentally cancelling things in the emulator menus. Since SNES games typically follow the "Nintendo-style", it might be prudent to include an option to have the menu behave in this manner.

I wasn't aware of that hijacking issue, that does makes your emulator's actions seem a lot more legitimate.

EDIT: By the way, what size is the image you're using for the icon? It looks like you might be using 57*57, which the iPhone is then stretching to the correct 59*60. This makes the SNES9x icon look larger than all the others, which use a 57*57 visible area with a single pixel of transparency at left and right, and 3 pixels of transparency at the bottom. The top of the icon should have none.
Rakashazi
Official iOS & Android Porter
Posts: 79
Joined: Sat Jan 01, 2011 9:51 pm
Location: Washington DC, USA

Post by Rakashazi »

Vague Rant wrote:Within the actual SNES9x EX menu, the south button (B on Classic Controller, X on the iControlPad) is the "Accept" button and the east button (A on CC, B on iCP) is the "Cancel" button. This is what I meant by "MS-style"; in Nintendo consoles (and also Japanese versions of Sony consoles), this layout is generally reversed, with the east button for "Accept" and south for "Cancel".
Ah, you meant the menu controls. Sure, I can easily add an option to swap confirm/cancel as it's set to US-Sony/MS style currently.
Vague Rant wrote:By the way, what size is the image you're using for the icon? It looks like you might be using 57*57, which the iPhone is then stretching to the correct 59*60. This makes the SNES9x icon look larger than all the others, which use a 57*57 visible area with a single pixel of transparency at left and right, and 3 pixels of transparency at the bottom. The top of the icon should have none.
That makes sense, I'll re-render the 3 iOS icons for the next update.
Rakashazi
Official iOS & Android Porter
Posts: 79
Joined: Sat Jan 01, 2011 9:51 pm
Location: Washington DC, USA

Post by Rakashazi »

Sent out version 1.3.23 which includes the updates mentioned above :)

Also for iOS users, the package hijacking issue from the other Cydia repo has been resolved peacefully so the hosts code is removed.
mrbonner
Snes9x White Belt
Posts: 2
Joined: Sat Apr 23, 2011 1:32 pm
Location: US

Post by mrbonner »

Rakashazi Bless You.

Someone finally released an SNES emu for IOS thats about 90% compatible with the wireless classic controller that I have. Im going to do a vid on youtube later to show you. If its possible to get the analog sticks working, Id be extatic.

For now tho, im just hyped. Vid will be up soon.


Edit: Vid is up!

http://www.youtube.com/watch?v=SC3pn2SKf3c
SparroHawc
Official Android Porter
Posts: 303
Joined: Mon Feb 07, 2011 9:20 pm
Location: All up in your business

Post by SparroHawc »

mrbonner wrote:Rakashazi Bless You.

Someone finally released an SNES emu for IOS thats about 90% compatible with the wireless classic controller that I have. Im going to do a vid on youtube later to show you. If its possible to get the analog sticks working, Id be extatic.

For now tho, im just hyped. Vid will be up soon.


Edit: Vid is up!

http://www.youtube.com/watch?v=SC3pn2SKf3c
ARGH. I want one of those controllers, but I don't know if it works well with Android. :[
mrbonner
Snes9x White Belt
Posts: 2
Joined: Sat Apr 23, 2011 1:32 pm
Location: US

Post by mrbonner »

Hey was wondering will cheats be available soon for these ports?
MechaBouncer
Snes9x White Belt
Posts: 6
Joined: Wed May 11, 2011 2:39 am

Post by MechaBouncer »

Hello everyone. This is my first post here and I wanted to say "Thank you" for porting Snes9x to Android. It's definitely one of my favorite emulators and I've recommended it to all of my friends looking for SNES emulators. I had just purchased SNesoid when I saw the note that it was using source code from Snes9x, so I got a refund immediately.

Unfortunately Snes9x EX is a little sluggish on my current phone. I have a Motorola Backflip, which only has an ARM11/ARMv6 CPU in it. I have a port of CyanogenMod 6 installed on it and am overclocking it to 691MHz from 528MHz, which does help a bit. However it seems like SNesoid does work just a bit better because it will run smoothly without dropping frames and only minimal slow-down. Snes9x EX constantly needs to drop frames to keep up.

I'm not sure if it's because it's old hardware, but I know it runs fine on my friend's Droid. I'm also planning to upgrade to an Xperia Play in the near future, so it won't really be a problem for me much longer. However, there may be others that had the same issues on older hardware. Hopefully correcting this could boost overall performance.

Anyway, keep up the great work!
-MB out
SparroHawc
Official Android Porter
Posts: 303
Joined: Mon Feb 07, 2011 9:20 pm
Location: All up in your business

Post by SparroHawc »

MechaBouncer wrote:Unfortunately Snes9x EX is a little sluggish on my current phone. I have a Motorola Backflip, which only has an ARM11/ARMv6 CPU in it. I have a port of CyanogenMod 6 installed on it and am overclocking it to 691MHz from 528MHz, which does help a bit. However it seems like SNesoid does work just a bit better because it will run smoothly without dropping frames and only minimal slow-down. Snes9x EX constantly needs to drop frames to keep up.
The reason SNesoid runs faster is because it has two separate cores - and the one that's used by default is taken entirely from PocketSNES, a port for PocketPC that's optimized for the ARM processor. The second is more-or-less the same core as SNES9x EX uses, which is slower but more accurate. There's undoubtedly some speed tricks used by PocketSNES that could be implemented to speed things up for Android, but that hasn't come down the pipe yet - and the sound emulation for SNesoid's 'speed core', as I'll call it, is awful.

I think most Android phones with a 1GHz processor can run SNES9x EX at full speed with very few frame drops. I do hope to, at some point, pick up enough Java (and maybe some ARM assembly if it'll help) to assist Rakashazi. Especially if I can get the author of PocketSNES on board, there may be a version in the future that can run full-speed on your phone as well. For now, it's a sad fact of life that you'll get frame drops. :(
MechaBouncer
Snes9x White Belt
Posts: 6
Joined: Wed May 11, 2011 2:39 am

Post by MechaBouncer »

Ah, thanks for clarifying that. I'm not really worried about it for myself as I'll be replacing this phone. It was more to mention it for people with older hardware. It seems that even the 550MHz Cortex-A8 in the original Droid is sufficient to run games like Chrono Trigger at full speed (at least according to a friend of mine). That should cover the majority of people.

Although there is one feature that SNesoid has that would be awesome if it could be eventually added to Snes9x: Netplay. Even though it's not that fast, it would still be nice to have. Although it seems that the feature was taken out of Snes9x 1.43, which Snes9x EX is derived from. Hopefully it will happen some day. My dream is to one day be able to play Rock n' Roll Racing with friends wirelessly on a mobile device. :)
-MB out
Post Reply