Would you like to play Nokia (J2ME) games on Retropie?
-
Since @recompile is taking a break I can't say much. On the ui interface side it is mostly complete. The backend is a continuous process
-
@allanbuzzy said in Would you like to play Nokia (J2ME) games on Retropie?:
Is development still going on? It seems a bit quiet now.
Yes, but rather slowly. I've been a bit busy, and haven't had much time to work on it lately. Things should slow down in a couple of months, so don't expect too much in the near-term.
Still, I guess an update wouldn't hurt. There's a lot of new stuff on the front-end and some neat additions to the back-end that open up games like X-Men Origins: Wolverine across all builds and like Doom II RPG to the Libretro build.
The latest Libretro build:
http://drichardson-shared.s3.amazonaws.com/freej2me_libretro_2017-09-19.zipAmong the more important additions are per-game configs, accessible by pressing ESC or L+R+Start on the controller. This lets you change resolutions, toggle Sound and Nokia keys, rotate the display, or quickly quit.
Mouse support is also enabled for games that require you to touch the display. For joypad users, the left analog stick will let you move the pointer. Clicking is activated by the "Y" button when the pointer is visible. ("Y" behaves normally when the pointer is not visible, or when made visible by using a mouse.) The pointer automatically hides after a "click" and will vanish on its own in about a second when it's not being moved.
Controls are mostly the same. Changes include the addition of the menu key (ESC) and it's joypad equivalent (L+R+Start), mouse support, the pretend joypad mouse described earlier, and the d-pad defaulting to Nokia nav keys. (That last change seems crazy, but Nokia keys seem to be near-universally supported. Don't worry, this can be quickly switched to the previous 2,4,6,8 per-game from the menu).
Installation is a bit different than before, but I don't think they'll need to change again going forward. Installation instructions should also be correct this time. I had a mistake in the previous build, so if you had trouble getting it working before, that's probably why. Instructions are included in the zip, but I'll post them here for convenience:
Step 1:
Install Oracle's JDK:sudo apt-get update
sudo apt-get install oracle-java8-jdksudo update-alternatives --config javac
sudo update-alternatives --config javaStep 2:
Create the necessary directories:sudo mkdir /home/pi/Retropie/roms/j2me
sudo mkdir /opt/retropie/configs/j2me
sudo mkdir /opt/retropie/BIOS/freej2me
sudo mkdir /opt/retropie/libretrocores/lr-freej2meStep 3:
Copy the file:
freej2me_libretro.so
to:
/opt/retropie/libretrocores/lr-freej2me
Be sure to set permissions to 755:
sudo chmod 755 /opt/retropie/libretrocores/lr-freej2me/*
Step 4:
Copy the file:
freej2me-lr.jar
to:
/home/pi/Retropie/BIOS/freej2me
Step 5:
Add the files:emulators.cfg
retroarch.cfg
to:
/opt/retropie/configs/j2me
Step 6:
Add the following to:
/etc/emulationstation/es_systems.cfg
<system> <name>J2ME</name> <fullname>Java 2 MicroEdition</fullname> <path>/home/pi/RetroPie/roms/j2me</path> <extension>.jar</extension> <command>/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ j2me %ROM%</command> <platform>j2me</platform> <theme>j2me</theme> </system>
There's still a lot to be done on the UI side of things, but it's serviceable for now. The additions here will, at least, let you play many more games on your pi3 than the previous version.
-
Is the source code available anywhere?
I might be able to help with this. -
@recompile Are we completely switching to libretro?
-
@guicrith I'll have something soon. Following GNU's recommendations, I've got to add a tiny notice to every source file. It's rather tedious.
-
your work has been noticed :) there is now a $50 bounty on a J2ME libretro core: https://github.com/libretro/libretro-meta/issues/100
i know $50 in no way reflects the work you've done - it's just a gesture. are the conditions something you'd be interested in satisfying, eventually?
-
@dankcushions said in Would you like to play Nokia (J2ME) games on Retropie?:
are the conditions something you'd be interested in satisfying, eventually?
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.
-
Do you need oracle java or could you use Midpath?
I have a mac and can test iOS and Android for you. -
@guicrith MIDPath isn't an alternative to a JRE. It's written in Java, after all, and so requires a JRE to run. If you just don't like Oracle, you could use OpenJDK but it's significantly slower.
I wish I'd had known about MIDPath before. It would have saved quite a bit of effort. If anyone is looking to make a J2ME "emulator" themselves, that would be a really good place to start.
I'll try to get the source of mine out sometime tomorrow, though I don't know if I'll do much with it going forward. There seems to be enough interest to keep it going in the care of the community, so it's not like development will end here. There's still a lot of big things to do, so it should make a nice project for quite a few people.
I'll see about making a write-up to go over the basic ideas and a few of the stranger things, but it should be easy enough to follow after an hour or so.
-
I dont have any feelings toward oracle, are you using phoneME as the runtime(JRE)?
I am just wondering how it would run on android and ios if you are using the oracle JRE binarys since they dont exist for those platforms. -
This would be amazing when complete, I used to love Zombie Infection on my old Sony Ericsson!
In fact, the library for this would be massive.
-
@guicrith You can use whatever JRE you prefer. Like any Java application, it uses whatever is available on the system.
If you're looking to port it to iOS and Android, you could try wrapping it in an Oracle MAF app.
@morrisav10 said in Would you like to play Nokia (J2ME) games on Retropie?:
I used to love Zombie Infection on my old Sony Ericsson!
As luck would have it, Zombie Infection works just fine. The version I have runs in 320x240. You can change the display size per-game from the configuration menu (ESC from the keyboard, L+R+Start from the controller)
-
@recompile Will you be making an updated version for Linux too (non-libretro)?
-
Here it is:
https://sourceforge.net/projects/freej2me/
Alt:
http://drichardson-shared.s3.amazonaws.com/freej2me/freej2me_2017-09-23.zipThe AWT build will run on Windows and most desktop Linux distributions. It should run on MacOS, though I haven't tried it. With any luck, a Mac user will let us know.
To build, you'll want to install Apache Ant Just run
ant
from the directory that contains thebuild.xml
file. Builds are provided in thebuilds
directory, if you don't want to build it yourself.For the libretro core, you'll need
libretro.h
andfreej2me_libretro.c
Runbuild.sh
to producefreej2me_libretro.so
A pre-compiled binary for the pi3 is supplied.With that, I leave it in the capable hands of the community.
-
@recompile Which one of the compiled jar files is the one we have been testing with SDL?
-
@hex You'll need to compile that one yourself. Just add an entry to build.xml and run ant.
-
@recompile Thanks
-
This is very cool, the terminal I/O part will be very useful to run linux games on android if I ever try to set that up again.
I will try to get this on android soon using openjre8 and linux, it wont help most users but should work on any rooted android phones.
-
@recompile I noticed you got the languages to work. Can you guide me how I can fix this? (From ShadowWalker)
Linux OpenJDK8
Using MicroEmu
Using FreeJ2ME
-
You'll need to properly implement javax.microedition.lcdui.Font.stringWidth, javax.microedition.lcdui.Font.subStringWidth and possibly fix anchors for text in org.recompile.mobile.PlatformGraphics.drawString, which implements javax.microedition.lcdui.Graphics.drawString
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.