ioNes

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
ioNes
by on (#137547)
Hey there guys, first off i'm new here, i'm new to emulation but i'm definitely not new to software development nor web development.

I was looking for a challenge, something totally different then my usual web (app) development for big companies and my love for nostalgia (I own all pre-wii-u nintendo consoles, ps3 and down and a genesis + atari) along with my lack of emulators on my IOS device I started looking how far webbased emulation has gotten. I stumbled upon JSNES by Ben Firshman and that seemed to work quite well on my Iphone 6 plus, i've already talked with him about the project and he was very enthusiastic to see it put to use by someone else and agreed that I can use his code as long as credit is given to him for the hard work.

So from there on I started working out what needed to be done, audio was available on firefox or through flash (a no go on IOS), and input was of course keyboard based. Also nobody likes to (or should) host with their emulator for legal reasons (besides home-brew of course).

So i came up with IoNes ( get it ;-) ), and though far from finished i'm looking for people who might want to join the ride or give some advice. What does it offer right now:

* Rewritten audio engine based on the Web Audio Engine (AudioContext) that enables full audio playback on IOS (but will still need some work)
* Touch controlled input based on touchable 'areas' (instead of buttons)
* Load roms from your Dropbox account (to bypass limitations of file uploads on IOS)
* Almost stable framerate for most tested games

Now as previously mentioned i'm not into emulation and am having a hard time figuring save states and such things that are almost mandatory for a emulator to be proper.

So in a nutshell i'm not going to write a whole new emulator but want to tap into the great things already created. So from here on I'm curious who's into helping this open source project, maybe has some advice on javascript emulators for the nes in Generic (is Jsnes the best out there?) etc

Want to try it yourself? https://github.com/ultimasnake/ioNes download the repository and run anywhere you want
Re: ioNes
by on (#137552)
ultimasnake wrote:
Also nobody likes to (or should) host with their emulator for legal reasons.

If these ROMs are homebrew, what are the "legal reasons"?

Quote:
* Touch controlled input based on touchable 'areas' (instead of buttons)

I saw "emulator" and "iOS" in one paragraph and input was the first thing that came to mind. I don't own an iOS device, but I do own a Nexus 7 (2012) tablet that runs Android 4.4. The one platformer I've tried on a touch screen device (the free version of Pixeline and the Jungle Treasure) lead to a whole bunch of "whiffs" as I touched outside the area that the game recognized as a touch. How would your system work for, say, Mega Man series?

Quote:
* Load roms from your Dropbox account (to bypass limitations of file uploads on IOS)

How would that work given the same-origin limit of XMLHttpRequest? What Access-Control-Allow-Origin headers does Dropbox allow?
Re: ioNes
by on (#137555)
tepples wrote:
If these ROMs are homebrew, what are the "legal reasons"?


Of course, but i'm revering to the experience we used to have as kids playing Super Mario ;-) (and also the main reason for Apple to prevent Emulators since the first apps on the iphone)

tepples wrote:
I saw "emulator" and "iOS" in one paragraph and input was the first thing that came to mind. I don't own an iOS device, but I do own a Nexus 7 (2012) tablet that runs Android 4.4. The one platformer I've tried on a touch screen device (the free version of Pixeline and the Jungle Treasure) lead to a whole bunch of "whiffs" as I touched outside the area that the game recognized as a touch. How would your system work for, say, Mega Man series?


The screen is divided into 5 vertical regions that span over the entire screen, this means that touching anywhere within the vertical set bounds will act as a touch on a button. The d-pad region works quite similar to d-pad in other mobile games (place finger to center, then move in the direction you wish to activate the d-pad direction).

tepples wrote:
How would that work given the same-origin limit of XMLHttpRequest? What Access-Control-Allow-Origin headers does Dropbox allow?
Dropbox offers a great Javascript API that allows to access the dropbox account of a user and from there a single file can be loaded into the emulator. (also saving to the dropbox should be available). Though this works I might look into the PHP implementation which allows for direct saving/loading (I don't think it's user friendly to save/load a state by hand each time)

All of the above is already available in the project and proven to work on IOS7, IOS 8 and Android Kit Kat (one plus one) although it's not as good as on the iPhone
Re: ioNes
by on (#137576)
tepples wrote:
ultimasnake wrote:
Also nobody likes to (or should) host with their emulator for legal reasons.

If these ROMs are homebrew, what are the "legal reasons"?
You would still need explicit permission from the author unless it has already been stated before that one could share them freely for whatever purpose you're doing, right? (and even then it depends on how it's used)

And yeah, what has been said about Apple forbidding emulators, but if I recall correctly what's actually forbidden is the ability to run arbitrary code (so e.g. if it's an emulator but it can only run predesignated programs, it's still OK).