libretro / libretro-meta

The Unlicense
4 stars 3 forks source link

[J2ME/MIDLET][BOUNTY 50$]Cross compatible j2me emulator #100

Closed meepingsnesroms closed 6 years ago

meepingsnesroms commented 6 years ago

To get the bounty it needs to at least work on Linux(x86-32,x86-64,armv7), Android(x86-32,armv6,armv7), MacOS and iOS.

Windows, 3ds and vita support can come later but should work instantly if no OS specific code is used.(Referring to use of file apis since fopen(char*) does not work on 3ds or vita and porting existing code that uses fopen is allowed.)

Some users are worried that the platforms I chose are an issue so here is my response. From reddit: (START) All the listed OSes use the same file I/O functions and no dynarec is needed, if a 10 year old phone can run it without one a 1.4ghz phone with 4 cpus can too.

Windows has its own file functions that sometimes dont work with fopen.

3ds and psvita use urls for files and have there own file I/O functions.

What I require is actually easier than adding windows and removing iOS and if made from scratch properly it will work on windows from the start anyway, those restrictions are there because it will make porting existing code easier and faster.

If you are still worried, if it gets ported and windows does not work within the first 2 months of release I promise to fix it myself! (END)

--- There is a **[$50 open bounty](https://www.bountysource.com/issues/49552245-j2me-midlet-bounty-50-cross-compatible-j2me-emulator?utm_campaign=plugin&utm_content=tracker%2F56438981&utm_medium=issues&utm_source=github)** on this issue. Add to the bounty at [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F56438981&utm_medium=issues&utm_source=github).
jan-kleks commented 6 years ago

It looks like some users are unhappy with the platforms chosen for this bounty (check out the comments): https://www.reddit.com/r/emulation/comments/71f9ci/bounty_libretro_cross_compatible_j2memidlet_java/

andres-asm commented 6 years ago

From what I could understand this would be still using java, oracle java at it. So you would need to get a port of that, or iced tea or whatever to the platform first.

meepingsnesroms commented 6 years ago

Oracle java is not needed. Midpath This was ported to the dingoo a320 using the cacao vm.

jan-kleks commented 6 years ago

There are also other interesting cellphone platforms. Some seem to be J2ME-based, but I'm not sure if it would make them easier to implement even if we get this emulator to work.

andres-asm commented 6 years ago

But java is needed, can you even port java to 3ds or wiiu or whatever? can you work around the memory requirements?

I think this may work, an work nicely, on modern open platforms. Not really on consoles.

jan-kleks commented 6 years ago

One of the developers of the J2ME RetroPie emulator has replied regarding the bounty: "The AWT build runs on Windows and Linux just fine. It should run on MacOS now, but I haven't had the opportunity to try it out. It could probably be ported to Android and iOS fairly quickly with Oracle's ADF Mobile (though I believe recordstores and configs would also need changed -- though that's just two additional files.) Though for iOS, I'd need to buy a Mac and some other Apple thing to test it out. That's a big investment for just one hobby project. I can pick up an Android phone for around $100. That's not much of burden, but seems so silly to invest twice the prize to claim it. If it needs to use libretro on those platforms as well, I don't know that I'd bother. The only reason I'm using it now is to make it work neatly on my pi3. The Java requirement makes it a poor fit for Libretro. While making it, I felt like I was doing something that shouldn't be allowed. Someone else (who, I'd assume, has already invested in the necessary Apple things) can claim that prize once I've put out the source. I'll try to find a few hours this weekend to get it out and available. It's really nice to see some interest in J2ME preservation beyond this thread. A good community should be able to take this and make something much better out of it. It would be nice to see other projects pop-up as well. As you'll see, it's not exactly difficult. For the most part, it's just a lot of tedious work. With people more comfortable with Java than I, and familiar with the subtleties of J2ME development, I expect we'll see some fantastic projects appear that leave this one in the dust."

meepingsnesroms commented 6 years ago

These consoles all have more memory than the dingoo a320 and it was ported to that.

jan-kleks commented 6 years ago

FreeJ2ME is a simple J2ME emulator with a focus on old mobile phone games. It was designed to run on Windows, desktop Linux, and on the Raspberry Pi 3 using Libretro and Retroarch as provided by RetroPie.

It supports some games not playable using MicroEmulator and Kemulat0r, though it does not support every game those play. At the moment, it's best to have all three if you're interesting in those types of games.

Some games only run at specific resolutions. Per-game configuration is available from the menu (by pressing esc). Preferences are saved and will automatically load.

Games automatically scale with the window size, making it easy to play games designed for smaller screen sizes.

The Java portion can be built using Apache Ant with the build.xml file provided. The Libretro core can be built using the build.sh script. Installation instructions for the Libretro core for RetroPie are included.

hex007 commented 6 years ago

Hey I am the other dev for this project (freej2me) and I am taking myself out from this bounty too. I will be actively maintaining this project here on and people are encouraged to contribute code.

https://github.com/hex007/freej2me

meepingsnesroms commented 6 years ago

Where will this bounty be moved since this issue is closed?

inactive123 commented 6 years ago

Yeah, the JVM thing is still an issue. I think it's inherently non-portable to rely on some system JVM to just be there. Not sure if anybody can come up with a real solution there.

meepingsnesroms commented 6 years ago

Since the only money on this bounty is my 50$ from nestopia overclocking you can just move it to the beetle psx dynarec.

saftle commented 6 years ago

I agree. Let's get that beetle psx dynarec going!

Ferk commented 6 years ago

Just a note, in case this ever gets reconsidered: J2ME is restricted to Java 1.3, which means you don't need a full version of the modern OpenJDK/IcedTea libraries.

Something that is more portable could be used, like jamvm with the good old GNU classpath (http://jamvm.sourceforge.net/). I've had that JVM running in OpenWrt devices with less RAM than a 3DS.

meepingsnesroms commented 6 years ago

I tried porting jamvm(https://github.com/libretro/libretro-JamVM) and it was almost compiling but it required thread support to compile so I tried to work with SquirrelJME instead and am still waiting for the C JVM they said they would make.