GGVm: Port, Package, and Protect NES rom for PC, Mobile

Discuss emulation of the Nintendo Entertainment System and Famicom.

Moderator: Moderators

tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: GGVm: Port, package, and protect NES rom to PC, Mobile

Post by tepples »

GradualGames wrote:
tepples wrote:do you plan to offer a mode that exposes touch coordinates directly to the emulated game, for things like in-game menus and Thwaite?
That's a fun idea. It's certainly possible. I guess games which use a mouse peripheral would benefit from that perhaps (I thought I heard about a game in development which uses a mouse somehow).
Thwaite and Sliding Blaster support the Super NES Mouse. Some eastern games support a Subor Mouse. Oeka Kids has a tablet. But even in games that primarily use a standard controller, touch mode would be ideal for things like menus.
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

Re: GGVm: Port, package, and protect NES rom to PC, Mobile

Post by GradualGames »

Here's The Legends of Owlia (demo) packaged up in GGVm for Android. Once I realized running the cpu in a background thread was actually causing worse performance on Android, I tore all that out and now its running even better on an old phone of mine. Premature optimization is the root of all evil.

Download The Legends of Owlia DEMO APK
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

Re: GGVm: Port, package, and protect NES rom to PC, Mobile

Post by GradualGames »

Thanks to the efforts of KHAN Games, we have confirmed GGVm works well on iOS as well. All promised platforms accounted for. Now I just need to get myself an iOS device so I can really iron out the touch controls for mobile.
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

Re: GGVm: Port, Package, and Protect NES rom for PC, Mobile

Post by GradualGames »

GGVm is now on github. The project is still under active development and all new commits will go there. You are welcome to contribute to the project. I am still happy to help people adapt their games to GGVm so that they do not need to ramp up on the code, and have been doing this on a volunteer or donation basis.
User avatar
YoukaiCountry
Posts: 29
Joined: Tue Mar 07, 2017 4:25 pm
Location: Ohio, USA
Contact:

Re: GGVm: Port, Package, and Protect NES rom for PC, Mobile

Post by YoukaiCountry »

This is a really cool project. In fact, one of my goals when I originally started development on my emulator was to allow it to be used for homebrew PC adaptations. (I am using gradle / libGDX as well for just that reason!)
I'm still a ways off from mine being nearly user friendly enough though!
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

Re: GGVm: Port, Package, and Protect NES rom for PC, Mobile

Post by GradualGames »

YoukaiCountry wrote:This is a really cool project. In fact, one of my goals when I originally started development on my emulator was to allow it to be used for homebrew PC adaptations. (I am using gradle / libGDX as well for just that reason!)
I'm still a ways off from mine being nearly user friendly enough though!
Thanks! I noticed your project just a few days ago, and that you're also using LibGDX. As you see, GGVm makes absolutely no attempt at being cycle-accurate. The huge shortcuts I took make it fairly limited with respect to how many NES games it can play, but my focus was 100% on the homebrew community anyway whose needs are (in general) small subset of what the NES can do. The neat thing is, this gets me really good performance on the games it can support, even on somewhat oldish Android devices. I have a 3 year old Moto X I'm getting smooth 60fps play on. I'd be really curious to know whether a cycle accurate emulator in java could perform just as well on such devices...if it can, then I think you'd have an opportunity to provide something to the homebrew community which would be admittedly much superior to ggvm as no fiddling with adapters would be required to get a game up and running (I don't even do apu emulation). If not...then I'm hoping maybe somebody will put together a suite of native emulators for all the major platforms, and a shell for packaging up and encrypting a ROM with it, and include one totally permissive license with the whole thing. I'm not sure how feasible each idea is, and I definitely don't want to explore them myself, so until that time GGVm will be there for people I suppose ;)
User avatar
YoukaiCountry
Posts: 29
Joined: Tue Mar 07, 2017 4:25 pm
Location: Ohio, USA
Contact:

Re: GGVm: Port, Package, and Protect NES rom for PC, Mobile

Post by YoukaiCountry »

Thanks! I noticed your project just a few days ago, and that you're also using LibGDX. As you see, GGVm makes absolutely no attempt at being cycle-accurate. The huge shortcuts I took make it fairly limited with respect to how many NES games it can play, but my focus was 100% on the homebrew community anyway whose needs are (in general) small subset of what the NES can do. The neat thing is, this gets me really good performance on the games it can support, even on somewhat oldish Android devices. I have a 3 year old Moto X I'm getting smooth 60fps play on. I'd be really curious to know whether a cycle accurate emulator in java could perform just as well on such devices...if it can, then I think you'd have an opportunity to provide something to the homebrew community which would be admittedly much superior to ggvm as no fiddling with adapters would be required to get a game up and running (I don't even do apu emulation). If not...then I'm hoping maybe somebody will put together a suite of native emulators for all the major platforms, and a shell for packaging up and encrypting a ROM with it, and include one totally permissive license with the whole thing. I'm not sure how feasible each idea is, and I definitely don't want to explore them myself, so until that time GGVm will be there for people I suppose ;)
As an aspiring homebrew developer myself, I'd love to be able to turn my emulator into something that can help people out! And I'm definitely watching this project with interest.

The performance in ANy-Yes certainly suffers on lower-end devices, but I actually have a non-cycle-accurate CPU in development, and that one performs much better at the cost of some compatibility. I started on the faster core with android performance in mind, and intend to make a fast PPU as well.
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: GGVm: Port, Package, and Protect NES rom for PC, Mobile

Post by tokumaru »

GradualGames wrote:I have a 3 year old Moto X I'm getting smooth 60fps play on.
You talk of a 3 year old Moto X as if it was a particularly underpowered device... but I used to play NES and Genesis games at full speed on a low end LG phone back back in 2012.
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

Re: GGVm: Port, Package, and Protect NES rom for PC, Mobile

Post by GradualGames »

tokumaru wrote:
GradualGames wrote:I have a 3 year old Moto X I'm getting smooth 60fps play on.
You talk of a 3 year old Moto X as if it was a particularly underpowered device... but I used to play NES and Genesis games at full speed on a low end LG phone back back in 2012.
It's simply the oldest I have tested. For all I know ggvm would run decently on something older due to how little emulation it actually does. I'm well aware native emulators produce the best results; this project was the result of a "what if..." thought on my part and it wound up being useful to me and apparently quite a few others in the scene. I'd love to see something similar be made that is all native.

Funny thing is though people throw out phones so fast it may be a moot point anyway...
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: GGVm: Port, Package, and Protect NES rom for PC, Mobile

Post by tokumaru »

GradualGames wrote:Funny thing is though people throw out phones so fast it may be a moot point anyway...
True. They aren't built to last anyway...
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Re: GGVm: Port, Package, and Protect NES rom for PC, Mobile

Post by Bregalad »

Interesting. I am however surprised by the lack of "features", i.e. have to require to game-specific hacks for raster timing and playing OGG files for audio. It sounds quite chep, there's probably some emulators with GNU licences allowing re-use without asking anyone for permission... or isn't there any ?!
-Smooth 60fps play on pc systems up to ~8 years old
You talk of a 3 year old Moto X as if it was a particularly underpowered device... but I used to play NES and Genesis games at full speed on a low end LG phone back back in 2012.
I used to play NES games full speed with Nesticle running on a 486 PC...
-Due to coding audio adapter, you can gut sound-engine. Thus if anyone extracts your ROM, it'll have no audio and they wasted their time.
Unless they're deaf.
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

Re: GGVm: Port, Package, and Protect NES rom for PC, Mobile

Post by GradualGames »

Bregalad wrote:Interesting. I am however surprised by the lack of "features", i.e. have to require to game-specific hacks for raster timing and playing OGG files for audio. It sounds quite chep, there's probably some emulators with GNU licences allowing re-use without asking anyone for permission... or isn't there any ?!
I imagine there are probably plenty with appropriate licensing---however, I think the barrier for me and probably many homebrewers who would like to use an emulator to distribute their game is simply how to wrap it up in a standalone executable, rather than distributing the emulator and game separately with some kind of launcher script. The second barrier is doing this for several popular modern platforms. When I began on ggvm, I was not aware of any existing solution which could do this, and I don't think there are any others at the moment. I'll be the first to say I'd love to see this niche filled by a suite of native emulators (one for pc, mac, linux, android, ios) and some kind of tool that makes it easy to package up and encrypt a rom into a standalone. That'd be the ideal solution for what homebrewers need for publishing. Since emulation has already been pretty much perfected, if any emulator authors are looking for a niche, replacing ggvm with native emulators, equally permissive license, and no-hack convenience is definitely an opportunity for them. So far, the only solutions I am aware of involved forking over money or royalties to the emulator author. Not that there's anything wrong with that, but I wanted to set myself and fellow homebrewers free of such obligations ;)
-Smooth 60fps play on pc systems up to ~8 years old
You talk of a 3 year old Moto X as if it was a particularly underpowered device... but I used to play NES and Genesis games at full speed on a low end LG phone back back in 2012.
I used to play NES games full speed with Nesticle running on a 486 PC...
I'm not that young you know :D I also used Nesticle, but on a Pentium 133. ;)
-Due to coding audio adapter, you can gut sound-engine. Thus if anyone extracts your ROM, it'll have no audio and they wasted their time.
Unless they're deaf.
:lol:
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Re: GGVm: Port, Package, and Protect NES rom for PC, Mobile

Post by Bregalad »

GradualGames wrote:So far, the only solutions I am aware of involved forking over money or royalties to the emulator author.
Once again, I'm surprised to hear that. It might not be the most accurate emu of all time, but I'm pretty sure FCEUx has been modified by many 3rd parties persons, and it's available on linux, so probably it's licence would allow you to do that. If I understand well, it it's licenced with GPL you'd have to release your game using GPL which is restrictive, however if it's LGPL you can re-use work under any licence you like.
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

Re: GGVm: Port, Package, and Protect NES rom for PC, Mobile

Post by GradualGames »

Bregalad wrote:
GradualGames wrote:So far, the only solutions I am aware of involved forking over money or royalties to the emulator author.
Once again, I'm surprised to hear that. It might not be the most accurate emu of all time, but I'm pretty sure FCEUx has been modified by many 3rd parties persons, and it's available on linux, so probably it's licence would allow you to do that. If I understand well, it it's licenced with GPL you'd have to release your game using GPL which is restrictive, however if it's LGPL you can re-use work under any licence you like.
A lot of homebrewers, myself included, don't even really like fiddling with native projects, even building them from source. What we need is somebody to take fceux or any emulator with appropriate licensing, for multiple platforms, and create some kind of shell for encrypting a rom with the emulator as a standalone binary.

There's a possibility there's still a barrier of some digital distribution platforms not allowing console emulators. With GGVm, you can tell the truth when you say: "It isn't an emulator."
Last edited by GradualGames on Thu Mar 16, 2017 6:37 am, edited 1 time in total.
Sour
Posts: 891
Joined: Sun Feb 07, 2016 6:16 pm

Re: GGVm: Port, Package, and Protect NES rom for PC, Mobile

Post by Sour »

GradualGames wrote:I imagine there are probably plenty with appropriate licensing
A bit offtopic but: Personally, I think pretty much any NES emulator ends up being GPL whether they like it or not. There is so much information, even on the wiki (How many times have you read "FCEUX's code does this", "Nestopia's code does that" while reading the wiki?), that is extracted from the source of current GPL-licensed emulators that it pretty much makes it impossible to not release an emulator as GPL (unless you just ignore the license's restrictions).

I'm not trying to act as the GPL police here, and to be honest, I don't really care what people do.
It is the reason why Mesen is released under GPL though (instead of say MIT) - because I cannot honestly claim that no GPL code has helped its development, and that is enough to force me to license it as GPL.
Post Reply