GithubHelp home page GithubHelp logo

hex007 / freej2me Goto Github PK

View Code? Open in Web Editor NEW
446.0 32.0 69.0 923 KB

A free J2ME emulator with libretro, awt and sdl2 frontends.

License: Other

Java 77.28% C 20.83% HTML 1.13% C++ 0.50% Makefile 0.15% Objective-C 0.11% Perl 0.01%
j2me emulator emulator-frontend libretro sdl2 sdl2-frontends awt

freej2me's Introduction

freej2me

Java CI

A free J2ME emulator with libretro, awt and sdl2 frontends.

Authors :

  • David Richardson [Recompile@retropie]
  • Saket Dandawate [Hex@retropie]

Controls

  • Q and W for left and right softkeys.
  • Arrow keys for nav, unless phone is set to "Standard", when arrow keys become 2, 4, 6, and 8.
  • Numbers work as expected, the number pad is inverted (123 swap with 789, like a phone)
  • E and R are alternatives to * and #.
  • Enter functions as the Fire key or 5 on "Standard" mode
  • ESC brings up the settings menu
  • In the AWT frontend (freej2me.jar) Ctrl+C takes a screenshot and +/- can be used to control the window scaling factor

Click here for information about more keybindings

Links

Screenshots: https://imgur.com/a/2vAeC

Discussion/Support thread: https://retropie.org.uk/forum/topic/13084/freej2me-support-thread

Development thread: https://retropie.org.uk/forum/topic/11441/would-you-like-to-play-nokia-j2me-games-on-retropie/


FreeJ2ME Jar Compilation:

From the root directory, running the following commands:

> cd freej2me/
> ant

Will create three different jar files inside build/:

freej2me.jar -> Standalone AWT jar executable

freej2me-lr.jar -> Libretro executable (has to be placed on the frontend's system/ folder, since it acts as a BIOS for the libretro core and runs J2ME jars)

freej2me-sdl.jar -> Jar executable meant to be used in conjunction with SDL2

Both the Libretro and SDL2 jar files need additional binaries to be compiled before use. Look at the additional steps below if you're going to use one of them.

Building the SDL2 binary:

To build the SDL2 binary, run the following commands from the root directory:

# SDL2 binary compilation
> cd src/sdl2
> make
> make install

SDL2 allows FreeJ2ME to run on a Raspberry Pi.

Building the Libretro core

For linux: To build the libretro core, open a terminal in freej2me's folder run the following commands from there:

# libretro core compilation
> cd src/libretro
> make

This will build freej2me_libretro.so on src/libretro/, which is the core libretro will use to interface with freej2me-lr.jar.

Move it to your libretro frontend's cores/ folder, with freej2me-lr.jar on system/ and the frontend should be able to load j2me files afterwards.

NOTE: The core DOES NOT WORK on containerized/sandboxed environments unless it can call a java runtime that also resides in the same sandbox or container, keep that in mind if you're running a libretro frontend through something like flatpak or snap for example.

For windows: To build the libretro core for windows, first you'll need mingw, or MSYS2 64. This guide uses MSYS2 as it's easier to set up and works closer to linux syntax.

Download MSYS2-x86_64 and install it on your computer. By default it will create a linux-like 'home' folder on C:\msys64\home\ and will put a folder with your username in there. This is where you have to move the freej2me folder to, so: C:\msys64\home\USERNAME\freej2mefolder for example.

With the folder placed in there you can build the core, open the MSYS2 UCRT64 terminal from your pc's start menu, and run the following commands:

# Installing 'mingw-w64' and 'make' on msys2
> pacman -S mingw-w64-ucrt-x86_64-gcc
> pacman -S make

# libretro core compilation
> cd freej2mefolder/src/libretro
> make

This will build freej2me_libretro.dll on freej2mefolder/src/libretro/, which is the core libretro will use to interface with freej2me-lr.jar.

Move it to your libretro frontend's cores/ folder, with freej2me-lr.jar on system/ and the frontend should be able to load j2me files afterwards.

NOTE: The windows core has only been tested on Windows 10 x64.


Usage (applies to AWT and SDL):

Launching the AWT frontend (freej2me.jar) will bring up a filepicker to select the MIDlet to run.

Alternatively it can be launched from the command line: java -jar freej2me.jar 'file:///path/to/midlet.jar' [width] [height] [scale] Where width, height (dimensions of the simulated screen) and scale (initial scale factor of the window) are optional arguments.

The SDL2 frontend (freej2me-sdl.jar) accepts the same command-line arguments format, aside from the scale option which is unavailable.

When running under Microsoft Windows please do note paths require an additional / prefixed. For example, C:\path\to\midlet.jar should be passed as file:///C:\path\to\midlet.jar

FreeJ2ME keeps savedata and config at the working directory it is run from. Currently any resolution specified at the config file takes precedence over the values passed via command-line.


How to contribute as a developer:

  1. Open an Issue
  2. Try solving that issue
  3. Post on the Issue if you have a possible solution
  4. Submit a PR implementing the solution

If you are not a developer:

  1. Post on discussion thread only

Roadmap:

  • Get as many games as possible to work well.
  • Document games that work well in the wiki
  • Reduce as many bugs as possible

freej2me's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

freej2me's Issues

Pac-Man Championship Edition flashing screen

I'm not sure if this emulator is still under development, but Pac-Man Championship Edition has one issue that prevents it from being an enjoyable experience. It looks like the game plays perfectly in this emulator, but the whole screen constantly flashes white making it impossible to play unless you want to trigger a seizure.

Close MIDI Player to prevent memory leak

public void deallocate() { state = Player.CLOSED; }

Hello Hex007!
I think calling MidiSequencer.close() when deallocating a player which is an instance of a MIDI player can help prevent memory leak. (There is a particular game that re-creates a MIDI player every time when the character enters a new scene, so after entering 100 scenes or so the program starts to consume ~600 MB of memory and have ~200 running threads.)

On Linux, having more than a few MIDI players will cause the music to stop, but this doesn't happen on Windows.

The fix may look like the following:

public void deallocate() {
	stop();
	if (player instanceof midiPlayer) {
		((midiPlayer)player).midi.close();
	}
	player = null;
	state = Player.CLOSED;
}

Thanks!

p.s. A similar issue and the usage of close() is mentioned in this Stackoverflow post: Java Sequencer using all memory? (7kb midi file)

M3D(O) license question

As a J2ME Loader developer, I'm really interested in your M3D implementation. So I want to ask, can I use your code under Apache License? Because my project is distributed under this license and that's why I can't use GPL code.

Game screen "slides to the right"

I've experienced this behavior in:
Road Warrior [Gameskitchen] (128x128):
rwarrior-2
Title screen and game playfield show the same exact problem. The screen output appears to slide out of the screen, interestingly only on some parts of the game. Also, please note, this game exposes another common bug in FreeJ2ME, the flickery menus. I do believe the menu is meant to be always drawn on top of game canvas (every frame?), not only when created.

Halley Wars [Taito] (128x128)
hwars-2
Title screen appears to slide out of the screen. You can't see anything further.
Halley Wars menu on a real phone (Nokia 3100), for reference:
hwars

I don't really know if they are caused by the same bug in both games. Given their similar appearance I've decided to put both them on the same issue.

Thank you!

freej2me-lr.jar build error [Ubuntu 17.10]

Trying to build freej2me-lr.jar on Ubuntu 17.10, getting those errors.

I installed:

  • openjdk-8-jdk (8u151-b12)
  • openjdk-8-jdk-headless
  • ant
  • ant-optional

... do I need more packages?

Btw, some more info on how to build things & dependencies in README.md would help a lot

ant
Buildfile: /home/libretro/freej2me/freej2me/build.xml
     [echo] Building FreeJ2ME
     [echo] FreeJ2ME - AWT | JavaFx | Libretro | SDL
    [javac] Compiling 278 source files to /home/libretro/freej2me/freej2me/build/classes
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:35: error: package javafx.application does not exist
    [javac] import javafx.application.Application;
    [javac]                          ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:36: error: package javafx.application does not exist
    [javac] import javafx.application.Platform;
    [javac]                          ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:37: error: package javafx.event does not exist
    [javac] import javafx.event.ActionEvent;
    [javac]                    ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:38: error: package javafx.event does not exist
    [javac] import javafx.event.EventHandler;
    [javac]                    ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:39: error: package javafx.scene does not exist
    [javac] import javafx.scene.Scene;
    [javac]                    ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:40: error: package javafx.scene.layout does not exist
    [javac] import javafx.scene.layout.BorderPane;
    [javac]                           ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:41: error: package javafx.scene.layout does not exist
    [javac] import javafx.scene.layout.Background;
    [javac]                           ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:42: error: package javafx.scene.layout does not exist
    [javac] import javafx.scene.layout.BackgroundFill;
    [javac]                           ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:43: error: package javafx.scene.paint does not exist
    [javac] import javafx.scene.paint.Color;
    [javac]                          ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:44: error: package javafx.scene.image does not exist
    [javac] import javafx.scene.image.Image;
    [javac]                          ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:45: error: package javafx.scene.image does not exist
    [javac] import javafx.scene.image.WritableImage;
    [javac]                          ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:46: error: package javafx.scene.image does not exist
    [javac] import javafx.scene.image.PixelWriter;
    [javac]                          ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:47: error: package javafx.scene.image does not exist
    [javac] import javafx.scene.image.ImageView;
    [javac]                          ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:48: error: package javafx.stage does not exist
    [javac] import javafx.stage.Stage;
    [javac]                    ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:49: error: package javafx.stage does not exist
    [javac] import javafx.stage.Screen;
    [javac]                    ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:50: error: package javafx.geometry does not exist
    [javac] import javafx.geometry.Rectangle2D;
    [javac]                       ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:51: error: package javafx.scene.input does not exist
    [javac] import javafx.scene.input.KeyEvent;
    [javac]                          ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:52: error: package javafx.scene.input does not exist
    [javac] import javafx.scene.input.KeyCode;
    [javac]                          ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:53: error: package javafx.scene.input does not exist
    [javac] import javafx.scene.input.MouseEvent;
    [javac]                          ^
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:58: error: cannot find symbol
    [javac] public class JavaFx extends Application
    [javac]                             ^
    [javac]   symbol: class Application
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:67: error: cannot find symbol
    [javac] 	private ImageView lcdview;
    [javac] 	        ^
    [javac]   symbol:   class ImageView
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:69: error: cannot find symbol
    [javac] 	private WritableImage[] frames;
    [javac] 	        ^
    [javac]   symbol:   class WritableImage
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:70: error: cannot find symbol
    [javac] 	private PixelWriter[] pixelwriters;
    [javac] 	        ^
    [javac]   symbol:   class PixelWriter
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:73: error: cannot find symbol
    [javac] 	private Stage stage;
    [javac] 	        ^
    [javac]   symbol:   class Stage
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:77: error: cannot find symbol
    [javac] 	Rectangle2D screenRect;
    [javac] 	^
    [javac]   symbol:   class Rectangle2D
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:86: error: cannot find symbol
    [javac] 	public void start(Stage startStage)
    [javac] 	                  ^
    [javac]   symbol:   class Stage
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:231: error: cannot find symbol
    [javac] 	private int findKeyCode(KeyCode code)
    [javac] 	                        ^
    [javac]   symbol:   class KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/ClassWriter.java:1298: warning: [unchecked] unchecked call to isAssignableFrom(Class<?>) as a member of the raw type Class
    [javac]         if (c.isAssignableFrom(d)) {
    [javac]                               ^
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/ClassWriter.java:1301: warning: [unchecked] unchecked call to isAssignableFrom(Class<?>) as a member of the raw type Class
    [javac]         if (d.isAssignableFrom(c)) {
    [javac]                               ^
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/ClassWriter.java:1309: warning: [unchecked] unchecked call to isAssignableFrom(Class<?>) as a member of the raw type Class
    [javac]             } while (!c.isAssignableFrom(d));
    [javac]                                         ^
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/GeneratorAdapter.java:583: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]             localTypes.add(null);
    [javac]                           ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/GeneratorAdapter.java:585: warning: [unchecked] unchecked call to set(int,E) as a member of the raw type List
    [javac]         localTypes.set(index, type);
    [javac]                       ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AdviceAdapter.java:266: warning: [unchecked] unchecked call to add(int,E) as a member of the raw type List
    [javac]                     stackFrame.add(s - 2, stackFrame.get(s - 1));
    [javac]                                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AdviceAdapter.java:271: warning: [unchecked] unchecked call to add(int,E) as a member of the raw type List
    [javac]                     stackFrame.add(s - 3, stackFrame.get(s - 1));
    [javac]                                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AdviceAdapter.java:276: warning: [unchecked] unchecked call to add(int,E) as a member of the raw type List
    [javac]                     stackFrame.add(s - 2, stackFrame.get(s - 1));
    [javac]                                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AdviceAdapter.java:277: warning: [unchecked] unchecked call to add(int,E) as a member of the raw type List
    [javac]                     stackFrame.add(s - 2, stackFrame.get(s - 1));
    [javac]                                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AdviceAdapter.java:282: warning: [unchecked] unchecked call to add(int,E) as a member of the raw type List
    [javac]                     stackFrame.add(s - 3, stackFrame.get(s - 1));
    [javac]                                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AdviceAdapter.java:283: warning: [unchecked] unchecked call to add(int,E) as a member of the raw type List
    [javac]                     stackFrame.add(s - 3, stackFrame.get(s - 1));
    [javac]                                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AdviceAdapter.java:288: warning: [unchecked] unchecked call to add(int,E) as a member of the raw type List
    [javac]                     stackFrame.add(s - 4, stackFrame.get(s - 1));
    [javac]                                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AdviceAdapter.java:289: warning: [unchecked] unchecked call to add(int,E) as a member of the raw type List
    [javac]                     stackFrame.add(s - 4, stackFrame.get(s - 1));
    [javac]                                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AdviceAdapter.java:294: warning: [unchecked] unchecked call to add(int,E) as a member of the raw type List
    [javac]                     stackFrame.add(s - 2, stackFrame.get(s - 1));
    [javac]                                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AdviceAdapter.java:546: warning: [unchecked] unchecked call to ArrayList(Collection<? extends E>) as a member of the raw type ArrayList
    [javac]         branches.put(label, new ArrayList(stackFrame));
    [javac]                             ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in class ArrayList
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AdviceAdapter.java:546: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type Map
    [javac]         branches.put(label, new ArrayList(stackFrame));
    [javac]                     ^
    [javac]   where K,V are type-variables:
    [javac]     K extends Object declared in interface Map
    [javac]     V extends Object declared in interface Map
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AdviceAdapter.java:558: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]         stackFrame.add(o);
    [javac]                       ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/Method.java:63: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type Map
    [javac]         DESCRIPTORS.put("void", "V");
    [javac]                        ^
    [javac]   where K,V are type-variables:
    [javac]     K extends Object declared in interface Map
    [javac]     V extends Object declared in interface Map
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/Method.java:64: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type Map
    [javac]         DESCRIPTORS.put("byte", "B");
    [javac]                        ^
    [javac]   where K,V are type-variables:
    [javac]     K extends Object declared in interface Map
    [javac]     V extends Object declared in interface Map
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/Method.java:65: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type Map
    [javac]         DESCRIPTORS.put("char", "C");
    [javac]                        ^
    [javac]   where K,V are type-variables:
    [javac]     K extends Object declared in interface Map
    [javac]     V extends Object declared in interface Map
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/Method.java:66: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type Map
    [javac]         DESCRIPTORS.put("double", "D");
    [javac]                        ^
    [javac]   where K,V are type-variables:
    [javac]     K extends Object declared in interface Map
    [javac]     V extends Object declared in interface Map
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/Method.java:67: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type Map
    [javac]         DESCRIPTORS.put("float", "F");
    [javac]                        ^
    [javac]   where K,V are type-variables:
    [javac]     K extends Object declared in interface Map
    [javac]     V extends Object declared in interface Map
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/Method.java:68: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type Map
    [javac]         DESCRIPTORS.put("int", "I");
    [javac]                        ^
    [javac]   where K,V are type-variables:
    [javac]     K extends Object declared in interface Map
    [javac]     V extends Object declared in interface Map
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/Method.java:69: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type Map
    [javac]         DESCRIPTORS.put("long", "J");
    [javac]                        ^
    [javac]   where K,V are type-variables:
    [javac]     K extends Object declared in interface Map
    [javac]     V extends Object declared in interface Map
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/Method.java:70: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type Map
    [javac]         DESCRIPTORS.put("short", "S");
    [javac]                        ^
    [javac]   where K,V are type-variables:
    [javac]     K extends Object declared in interface Map
    [javac]     V extends Object declared in interface Map
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/Method.java:71: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type Map
    [javac]         DESCRIPTORS.put("boolean", "Z");
    [javac]                        ^
    [javac]   where K,V are type-variables:
    [javac]     K extends Object declared in interface Map
    [javac]     V extends Object declared in interface Map
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:147: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                 locals.add(Opcodes.UNINITIALIZED_THIS);
    [javac]                           ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:149: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                 locals.add(owner);
    [javac]                           ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:161: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                     locals.add(Opcodes.INTEGER);
    [javac]                               ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:164: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                     locals.add(Opcodes.FLOAT);
    [javac]                               ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:167: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                     locals.add(Opcodes.LONG);
    [javac]                               ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:168: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                     locals.add(Opcodes.TOP);
    [javac]                               ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:171: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                     locals.add(Opcodes.DOUBLE);
    [javac]                               ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:172: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                     locals.add(Opcodes.TOP);
    [javac]                               ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:175: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                     locals.add(types[i].getDescriptor());
    [javac]                               ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:179: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                     locals.add(types[i].getInternalName());
    [javac]                               ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:218: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]             result.add(type);
    [javac]                       ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:220: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                 result.add(Opcodes.TOP);
    [javac]                           ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:257: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                 labels.add(l);
    [javac]                           ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:263: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type Map
    [javac]                 uninitializedTypes.put(labels.get(i), type);
    [javac]                                       ^
    [javac]   where K,V are type-variables:
    [javac]     K extends Object declared in interface Map
    [javac]     V extends Object declared in interface Map
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:309: warning: [unchecked] unchecked call to set(int,E) as a member of the raw type List
    [javac]                         locals.set(i, u);
    [javac]                                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:314: warning: [unchecked] unchecked call to set(int,E) as a member of the raw type List
    [javac]                         stack.set(i, u);
    [javac]                                  ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:341: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]         labels.add(label);
    [javac]                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:431: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]             locals.add(Opcodes.TOP);
    [javac]                       ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:433: warning: [unchecked] unchecked call to set(int,E) as a member of the raw type List
    [javac]         locals.set(local, type);
    [javac]                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/AnalyzerAdapter.java:437: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]         stack.add(type);
    [javac]                  ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/MemberNode.java:93: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]             visibleAnnotations.add(an);
    [javac]                                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/MemberNode.java:98: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]             invisibleAnnotations.add(an);
    [javac]                                     ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/MemberNode.java:112: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]         attrs.add(attr);
    [javac]                  ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/MethodNode.java:183: warning: [unchecked] unchecked call to addAll(Collection<? extends E>) as a member of the raw type List
    [javac]             this.exceptions.addAll(Arrays.asList(exceptions));
    [javac]                                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/MethodNode.java:195: warning: [unchecked] unchecked call to add(E) as a member of the raw type ArrayList
    [javac]                 return super.add(o);
    [javac]                                 ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in class ArrayList
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/MethodNode.java:214: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]             visibleParameterAnnotations[parameter].add(an);
    [javac]                                                       ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/MethodNode.java:223: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]             invisibleParameterAnnotations[parameter].add(an);
    [javac]                                                         ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/MethodNode.java:327: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]         tryCatchBlocks.add(new TryCatchBlockNode(getLabelNode(start),
    [javac]                           ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/MethodNode.java:341: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]         localVariables.add(new LocalVariableNode(name,
    [javac]                           ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/MethodNode.java:405: warning: [unchecked] unchecked call to <T>toArray(T[]) as a member of the raw type List
    [javac]         this.exceptions.toArray(exceptions);
    [javac]                                ^
    [javac]   where T is a type-variable:
    [javac]     T extends Object declared in method <T>toArray(T[])
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/JSRInlinerAdapter.java:129: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type Map
    [javac]             subroutineHeads.put(ln, new Subroutine());
    [javac]                                ^
    [javac]   where K,V are type-variables:
    [javac]     K extends Object declared in interface Map
    [javac]     V extends Object declared in interface Map
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/JSRInlinerAdapter.java:340: warning: [unchecked] unchecked call to add(E) as a member of the raw type LinkedList
    [javac]         worklist.add(new Instantiation(null, mainSubroutine));
    [javac]                     ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in class LinkedList
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/JSRInlinerAdapter.java:469: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                 worklist.add(newinst);
    [javac]                             ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/JSRInlinerAdapter.java:508: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]             newTryCatchBlocks.add(new TryCatchBlockNode(start,
    [javac]                                  ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/JSRInlinerAdapter.java:527: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]             newLocalVariables.add(new LocalVariableNode(lvnode.name,
    [javac]                                  ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/JSRInlinerAdapter.java:638: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type Map
    [javac]                     rangeTable.put(ilbl, duplbl);
    [javac]                                   ^
    [javac]   where K,V are type-variables:
    [javac]     K extends Object declared in interface Map
    [javac]     V extends Object declared in interface Map
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/SerialVersionUIDAdder.java:233: warning: [unchecked] unchecked call to add(E) as a member of the raw type Collection
    [javac]                     svuidConstructors.add(new Item(name, mods, desc));
    [javac]                                          ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface Collection
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/SerialVersionUIDAdder.java:235: warning: [unchecked] unchecked call to add(E) as a member of the raw type Collection
    [javac]                     svuidMethods.add(new Item(name, mods, desc));
    [javac]                                     ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface Collection
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/SerialVersionUIDAdder.java:273: warning: [unchecked] unchecked call to add(E) as a member of the raw type Collection
    [javac]                 svuidFields.add(new Item(name, mods, desc));
    [javac]                                ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface Collection
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/SerialVersionUIDAdder.java:461: warning: [unchecked] unchecked call to <T>toArray(T[]) as a member of the raw type Collection
    [javac]         Item[] items = (Item[]) itemCollection.toArray(new Item[size]);
    [javac]                                                       ^
    [javac]   where T is a type-variable:
    [javac]     T extends Object declared in method <T>toArray(T[])
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/TryCatchBlockSorter.java:54: warning: [unchecked] unchecked method invocation: method sort in class Collections is applied to given types
    [javac]         Collections.sort(tryCatchBlocks, comp);
    [javac]                         ^
    [javac]   required: List<T>,Comparator<? super T>
    [javac]   found: List,Comparator
    [javac]   where T is a type-variable:
    [javac]     T extends Object declared in method <T>sort(List<T>,Comparator<? super T>)
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/TryCatchBlockSorter.java:54: warning: [unchecked] unchecked conversion
    [javac]         Collections.sort(tryCatchBlocks, comp);
    [javac]                          ^
    [javac]   required: List<T>
    [javac]   found:    List
    [javac]   where T is a type-variable:
    [javac]     T extends Object declared in method <T>sort(List<T>,Comparator<? super T>)
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/commons/TryCatchBlockSorter.java:54: warning: [unchecked] unchecked conversion
    [javac]         Collections.sort(tryCatchBlocks, comp);
    [javac]                                          ^
    [javac]   required: Comparator<? super T>
    [javac]   found:    Comparator
    [javac]   where T is a type-variable:
    [javac]     T extends Object declared in method <T>sort(List<T>,Comparator<? super T>)
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/AnnotationNode.java:89: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]             values.add(name);
    [javac]                       ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/AnnotationNode.java:91: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]         values.add(value);
    [javac]                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/AnnotationNode.java:103: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]             values.add(name);
    [javac]                       ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/AnnotationNode.java:105: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]         values.add(new String[] { desc, value });
    [javac]                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/AnnotationNode.java:116: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]             values.add(name);
    [javac]                       ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/AnnotationNode.java:119: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]         values.add(annotation);
    [javac]                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/AnnotationNode.java:128: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]             values.add(name);
    [javac]                       ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/AnnotationNode.java:131: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]         values.add(array);
    [javac]                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/ClassNode.java:167: warning: [unchecked] unchecked call to addAll(Collection<? extends E>) as a member of the raw type List
    [javac]             this.interfaces.addAll(Arrays.asList(interfaces));
    [javac]                                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/ClassNode.java:196: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]         innerClasses.add(icn);
    [javac]                         ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/ClassNode.java:207: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]         fields.add(fn);
    [javac]                   ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/ClassNode.java:223: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]         methods.add(mn);
    [javac]                    ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/ClassNode.java:239: warning: [unchecked] unchecked call to <T>toArray(T[]) as a member of the raw type List
    [javac]         this.interfaces.toArray(interfaces);
    [javac]                                ^
    [javac]   where T is a type-variable:
    [javac]     T extends Object declared in method <T>toArray(T[])
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/FrameNode.java:175: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                 clone.local.add(l);
    [javac]                                ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/FrameNode.java:185: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                 clone.stack.add(s);
    [javac]                                ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/LookupSwitchInsnNode.java:83: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                 this.keys.add(new Integer(keys[i]));
    [javac]                              ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/LookupSwitchInsnNode.java:87: warning: [unchecked] unchecked call to addAll(Collection<? extends E>) as a member of the raw type List
    [javac]             this.labels.addAll(Arrays.asList(labels));
    [javac]                               ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/LookupSwitchInsnNode.java:110: warning: [unchecked] unchecked call to addAll(Collection<? extends E>) as a member of the raw type List
    [javac]         clone.keys.addAll(keys);
    [javac]                          ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/TableSwitchInsnNode.java:90: warning: [unchecked] unchecked call to addAll(Collection<? extends E>) as a member of the raw type List
    [javac]             this.labels.addAll(Arrays.asList(labels));
    [javac]                               ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/analysis/Analyzer.java:125: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                 insnHandlers.add(tcb);
    [javac]                                 ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/analysis/Analyzer.java:139: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type Map
    [javac]                 subroutineHeads.put(jsr.label, sub);
    [javac]                                    ^
    [javac]   where K,V are type-variables:
    [javac]     K extends Object declared in interface Map
    [javac]     V extends Object declared in interface Map
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/analysis/Analyzer.java:142: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                 sub.callers.add(jsr);
    [javac]                                ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/analysis/Analyzer.java:321: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                     calls.add(node);
    [javac]                              ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/analysis/Frame.java:584: warning: [unchecked] unchecked call to add(int,E) as a member of the raw type List
    [javac]                     values.add(0, pop());
    [javac]                               ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/analysis/Frame.java:588: warning: [unchecked] unchecked call to add(int,E) as a member of the raw type List
    [javac]                     values.add(0, pop());
    [javac]                               ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/analysis/Frame.java:618: warning: [unchecked] unchecked call to add(int,E) as a member of the raw type List
    [javac]                     values.add(0, pop());
    [javac]                               ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/analysis/Subroutine.java:62: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]         callers.add(caller);
    [javac]                    ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/analysis/Subroutine.java:70: warning: [unchecked] unchecked call to ArrayList(Collection<? extends E>) as a member of the raw type ArrayList
    [javac]         result.callers = new ArrayList(callers);
    [javac]                          ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in class ArrayList
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/analysis/Subroutine.java:86: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
    [javac]                     callers.add(caller);
    [javac]                                ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in interface List
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/analysis/SimpleVerifier.java:294: warning: [unchecked] unchecked call to isAssignableFrom(Class<?>) as a member of the raw type Class
    [javac]         return tc.isAssignableFrom(getClass(u));
    [javac]                                   ^
    [javac] /home/libretro/freej2me/freej2me/src/org/objectweb/asm/tree/analysis/SmallSet.java:116: warning: [unchecked] unchecked call to add(E) as a member of the raw type HashSet
    [javac]         r.add(e1);
    [javac]              ^
    [javac]   where E is a type-variable:
    [javac]     E extends Object declared in class HashSet
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:81: error: cannot find symbol
    [javac] 		Application.launch(args);
    [javac] 		^
    [javac]   symbol:   variable Application
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:84: error: cannot find symbol
    [javac] 	public void stop() { Platform.exit(); System.exit(0); }
    [javac] 	                     ^
    [javac]   symbol:   variable Platform
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:90: error: cannot find symbol
    [javac] 		args = getParameters().getRaw();
    [javac] 		       ^
    [javac]   symbol:   method getParameters()
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:96: error: cannot find symbol
    [javac] 		stage.getIcons().add(new Image(getClass().getResourceAsStream("/org/recompile/icon.png")));
    [javac] 		                         ^
    [javac]   symbol:   class Image
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:96: error: cannot find symbol
    [javac] 		stage.getIcons().add(new Image(getClass().getResourceAsStream("/org/recompile/icon.png")));
    [javac] 		                               ^
    [javac]   symbol:   method getClass()
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:98: error: cannot find symbol
    [javac] 		screenRect = Screen.getPrimary().getVisualBounds();
    [javac] 		             ^
    [javac]   symbol:   variable Screen
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:100: error: cannot find symbol
    [javac] 		BorderPane Root = new BorderPane();
    [javac] 		^
    [javac]   symbol:   class BorderPane
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:100: error: cannot find symbol
    [javac] 		BorderPane Root = new BorderPane();
    [javac] 		                      ^
    [javac]   symbol:   class BorderPane
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:102: error: cannot find symbol
    [javac] 		BackgroundFill bgfill = new BackgroundFill(Color.rgb(0,0,64), null, null);
    [javac] 		^
    [javac]   symbol:   class BackgroundFill
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:102: error: cannot find symbol
    [javac] 		BackgroundFill bgfill = new BackgroundFill(Color.rgb(0,0,64), null, null);
    [javac] 		                            ^
    [javac]   symbol:   class BackgroundFill
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:102: error: cannot find symbol
    [javac] 		BackgroundFill bgfill = new BackgroundFill(Color.rgb(0,0,64), null, null);
    [javac] 		                                           ^
    [javac]   symbol:   variable Color
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:103: error: cannot find symbol
    [javac] 		Root.setBackground(new Background(bgfill));
    [javac] 		                       ^
    [javac]   symbol:   class Background
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:124: error: cannot find symbol
    [javac] 		lcdview = new ImageView();
    [javac] 		              ^
    [javac]   symbol:   class ImageView
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:135: error: cannot find symbol
    [javac] 		frames = new WritableImage[]{ new WritableImage(lcdWidth, lcdHeight), new WritableImage(lcdWidth, lcdHeight) };
    [javac] 		             ^
    [javac]   symbol:   class WritableImage
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:135: error: cannot find symbol
    [javac] 		frames = new WritableImage[]{ new WritableImage(lcdWidth, lcdHeight), new WritableImage(lcdWidth, lcdHeight) };
    [javac] 		                                  ^
    [javac]   symbol:   class WritableImage
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:135: error: cannot find symbol
    [javac] 		frames = new WritableImage[]{ new WritableImage(lcdWidth, lcdHeight), new WritableImage(lcdWidth, lcdHeight) };
    [javac] 		                                                                          ^
    [javac]   symbol:   class WritableImage
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:136: error: cannot find symbol
    [javac] 		pixelwriters = new PixelWriter[]{ frames[0].getPixelWriter(), frames[1].getPixelWriter() };
    [javac] 		                   ^
    [javac]   symbol:   class PixelWriter
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:164: error: cannot find symbol
    [javac] 		stage.setScene(new Scene(Root));
    [javac] 		                   ^
    [javac]   symbol:   class Scene
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:167: error: cannot find symbol
    [javac] 		stage.addEventHandler(KeyEvent.KEY_PRESSED, e->
    [javac] 		                      ^
    [javac]   symbol:   variable KeyEvent
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:172: error: cannot find symbol
    [javac] 		stage.addEventHandler(KeyEvent.KEY_RELEASED, e->
    [javac] 		                      ^
    [javac]   symbol:   variable KeyEvent
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:177: error: cannot find symbol
    [javac] 		lcdview.addEventHandler(MouseEvent.MOUSE_PRESSED, e->
    [javac] 		                        ^
    [javac]   symbol:   variable MouseEvent
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:187: error: cannot find symbol
    [javac] 		lcdview.addEventHandler(MouseEvent.MOUSE_RELEASED, e->
    [javac] 		                        ^
    [javac]   symbol:   variable MouseEvent
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:233: error: cannot find symbol
    [javac] 		if(code==KeyCode.DIGIT0) { return Mobile.KEY_NUM0; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:234: error: cannot find symbol
    [javac] 		if(code==KeyCode.DIGIT1) { return Mobile.KEY_NUM1; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:235: error: cannot find symbol
    [javac] 		if(code==KeyCode.DIGIT2) { return Mobile.KEY_NUM2; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:236: error: cannot find symbol
    [javac] 		if(code==KeyCode.DIGIT3) { return Mobile.KEY_NUM3; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:237: error: cannot find symbol
    [javac] 		if(code==KeyCode.DIGIT4) { return Mobile.KEY_NUM4; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:238: error: cannot find symbol
    [javac] 		if(code==KeyCode.DIGIT5) { return Mobile.KEY_NUM5; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:239: error: cannot find symbol
    [javac] 		if(code==KeyCode.DIGIT6) { return Mobile.KEY_NUM6; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:240: error: cannot find symbol
    [javac] 		if(code==KeyCode.DIGIT7) { return Mobile.KEY_NUM7; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:241: error: cannot find symbol
    [javac] 		if(code==KeyCode.DIGIT8) { return Mobile.KEY_NUM8; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:242: error: cannot find symbol
    [javac] 		if(code==KeyCode.DIGIT9) { return Mobile.KEY_NUM9; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:243: error: cannot find symbol
    [javac] 		if(code==KeyCode.ASTERISK) { return Mobile.KEY_STAR; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:244: error: cannot find symbol
    [javac] 		if(code==KeyCode.NUMBER_SIGN) { return Mobile.KEY_POUND; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:245: error: cannot find symbol
    [javac] 		if(code==KeyCode.UP)    { return Mobile.GAME_UP; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:246: error: cannot find symbol
    [javac] 		if(code==KeyCode.DOWN)  { return Mobile.GAME_DOWN; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:247: error: cannot find symbol
    [javac] 		if(code==KeyCode.LEFT)  { return Mobile.GAME_LEFT; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:248: error: cannot find symbol
    [javac] 		if(code==KeyCode.RIGHT) { return Mobile.GAME_RIGHT; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:249: error: cannot find symbol
    [javac] 		if(code==KeyCode.ENTER) { return Mobile.GAME_FIRE; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:250: error: cannot find symbol
    [javac] 		if(code==KeyCode.Z) { return Mobile.GAME_A; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:251: error: cannot find symbol
    [javac] 		if(code==KeyCode.X) { return Mobile.GAME_B; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:252: error: cannot find symbol
    [javac] 		if(code==KeyCode.C) { return Mobile.GAME_C; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:253: error: cannot find symbol
    [javac] 		if(code==KeyCode.V) { return Mobile.GAME_D; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:254: error: cannot find symbol
    [javac] 		if(code==KeyCode.W) { return Mobile.NOKIA_UP; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:255: error: cannot find symbol
    [javac] 		if(code==KeyCode.S) { return Mobile.NOKIA_DOWN; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:256: error: cannot find symbol
    [javac] 		if(code==KeyCode.A) { return Mobile.NOKIA_LEFT; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:257: error: cannot find symbol
    [javac] 		if(code==KeyCode.D) { return Mobile.NOKIA_RIGHT; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:258: error: cannot find symbol
    [javac] 		if(code==KeyCode.Q) { return Mobile.NOKIA_SOFT1; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:259: error: cannot find symbol
    [javac] 		if(code==KeyCode.E) { return Mobile.NOKIA_SOFT2; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:260: error: cannot find symbol
    [javac] 		if(code==KeyCode.R) { return Mobile.NOKIA_SOFT3; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:261: error: cannot find symbol
    [javac] 		if(code==KeyCode.M) { stop(); }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:262: error: cannot find symbol
    [javac] 		if(code==KeyCode.O) { needsUpdated = true; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] /home/libretro/freej2me/freej2me/src/org/recompile/freej2me/JavaFx.java:263: error: cannot find symbol
    [javac] 		if(code==KeyCode.P) { needsUpdated = false; }
    [javac] 		         ^
    [javac]   symbol:   variable KeyCode
    [javac]   location: class JavaFx
    [javac] Note: Some input files additionally use unchecked or unsafe operations.
    [javac] 80 errors
    [javac] 100 warnings

BUILD FAILED
/home/libretro/freej2me/freej2me/build.xml:19: Compile failed; see the compiler error output for details.

Total time: 1 second

Organizational matters

It looks like FreeJ2ME has made news. Congrats! Because more and more people are getting interested in your project I think it might be a good idea to tackle a few organizational matters:

-- write about project goals (how people can help)

-- some simple roadmap would be nice (no particular dates are necessary)

-- focus development efforts in one place, GitHub is the most popular, so I guess it's the best choice. I don't agree with recompile when it comes to this "I'm not on github, which is why I put it on sourceforge. I've found that github can be difficult for casual users to use. (unintentional alliteration)" Look for the best place for developers, users would probably want to download FreeJ2ME with RetroArch anyway.

-- if you want to use Retropie forums for discussion, you may want to put a link here as well

-- what is the official spelling? "freej2me" or "FreeJ2ME"? :P

how to use on android tv?

use this project on android tv ?

How to set the resolution 640x530 or 1280x720 or 1920x1080 ?

How do you use it in the Android project?

"Softkey choices" not properly working

Many games making use of "softkey choices" are unplayable because such "choices" disappear on FreeJ2ME and can't be selected. Mostly, you can't get past title screens or pause while ingame.
For example, Asteroid Zone:
FreeJ2ME / KEmulator / Microemulator
Asteroids-Fj2me Asteroids-KEmu Asteroids-microemu
Such "softkey choices" are meant to take a small part of the screen for displaying of the options unless Canvas.setFullScreenMode(true) is called (they will not be shown but they will still be activated by softkey presses). Microemulator properly does so (it adds an unnecessary bar at top too) , and Kemulator does it in it's own GUI, but takes up the small portion of the screen with a warning for midlet developers.

I've found 3 freeware games that fail, so I'm sharing them here for your convenience:
bug-report-games.zip
Asteroid Zone (http://jfdoue.free.fr/): Can't get past title screen.
Astro 3003 (Free demo version): Can't get past title screen.
MeBoy Gameboy emulator (http://arktos.se/meboy/): Can't open the options menu while ingame. On such menu there's a "Fullscreen" option that, I suppose, alternates between Canvas.setFullScreenMode(boolean) values.

Support for common malformed manifests.

After testing many games, I've found that a small amount of them fail because of the main class not being found. It's always due to two problems:

  • /META-INF/MANIFEST.MF is not always uppercase.
    For example, in Enigma by iomo , the manifest is at meta-inf/MANIFEST.MF.
    For some reason this is very common on Chinese games.

  • There's a newline (CR+LF+Space) splitting long MIDlet-1 lines, likely due to a bug in the SDK.
    For example, Nokia's Kart Racing

Manifest-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MIDlet-Name: Button_s40
Created-By: 1.4.1_01 (Sun Microsystems Inc.)
MIDlet-Vendor: Nokia
MIDlet-1: ButtonMidlet, /res/carmark.png, com.kuju.j2me.button.ButtonM
 idlet
MIDlet-Version: F1.1
MicroEdition-Profile: MIDP-1.0

Hex view:

...
000140   65 6E 64 6F 72 3A 20 4E 6F 6B 69 61 0D 0A 4D 49 44 6C 65 74 2D 31 3A 20 42 75 74 74   endor: Nokia..MIDlet-1: Butt
000168   6F 6E 4D 69 64 6C 65 74 2C 20 2F 72 65 73 2F 63 61 72 6D 61 72 6B 2E 70 6E 67 2C 20   onMidlet, /res/carmark.png, 
000196   63 6F 6D 2E 6B 75 6A 75 2E 6A 32 6D 65 2E 62 75 74 74 6F 6E 2E 42 75 74 74 6F 6E 4D   com.kuju.j2me.button.ButtonM
000224   0D 0A 20 69 64 6C 65 74 0D 0A 4D 49 44 6C 65 74 2D 56 65 72 73 69 6F 6E 3A 20 46 31   .. idlet..MIDlet-Version: F1
...

I've loaded such jarfiles on my Nokia 3100 phone and games run fine despite of the malformed manifests. Maybe the phone is designed to workaround the newline bug from some broken Nokia SDKs. It would be great if FreeJ2ME could workaround those since it would allow playing such games without tampering their original form.

Bounce Tales is bugged

Gameplay lags a lot and some background is missing. Even if it can't be fixed just yet, is it possible to know why the game can't work correctly?

wmqHJ1r

Interestingly, the game seems to be fully playable, the physics work and I can complete the level. And sometimes it almost doesn't lag, but mostly it does. Missing BG is maybe just some sprite that has to be stretched around? Right now it consists of small squares.

Font implementation incorrect

The implementation for Font returns incorrect height and width. It is only the first page that exhibits this behaviour

Eg : ShadowWalkers 240x320

screenshot from 2017-09-23 14-49-38

SE's Super Real Tennis emulation

There is a good old SE K750 game called Super Real Tennis

As impressing as it is, I can't get the game emulated on anything. There are two branches of the game,

While the original never runs on anything, KK gets stuck on 50% on everything, except FreeJ2ME. FreeJ2ME manages to complete the loading screen, start the music, but go no farther than this.

Any chance any or both of these games to be well supported by FreeJ2ME?

Compile failed

I'm no longer able to build freej2me.
When I try to build it, I get 2 errors:
[javac] C:\Users\Urosh\freej2me\src\javax\microedition\lcdui\Canvas.java:137: error: hideNotify() in Canvas cannot override hideNotify() in Displayable
[javac] protected void hideNotify() { }
[javac] ^
[javac] attempting to assign weaker access privileges; was public
[javac] C:\Users\Urosh\freej2me\src\javax\microedition\lcdui\Canvas.java:191: error: showNotify() in Canvas cannot override showNotify() in Displayable
[javac] protected void showNotify() { }
[javac] ^
[javac] attempting to assign weaker access privileges; was public

AWT error on android

I have compiled openjdk-9 for android armv7 and android x86 and there is no awt port since that requires native librarys.

When I try to run freej2me libretro I get an exception on awt functions.

I dont know how hard this would be but android wont even take memory only awt functions even if they dont try to display anything as is the case with freej2me-lr.jar

For this to work on android with the openjdk it would require porting the memory only awt functions or not using awt since there is no android version available.

The best route would be to port an actual jvm to RetroArch but this may be extremely hard.

Handset compatibility - configurable softkeys to support other handsets.

Hi,
I used to be a J2Me developer, so knew the hell of getting things working on different handsets.

The main thing that was different (apart from screen sizes and all sorts of bugs), was the keycodes for the softkeys.

If you can make these configurable in your emulator then it may be possible to use games for other handsets.

Nokia and Sony used the same keycodes.

Motorola were fairly consistent.

Samsung were terrible as the JVM they used could vary from handset to handset - so these seemed to change all the time.

DOOM RPG results in crash

The emulator will load the title screen, however after selecting start the game studders until the emulator stops responding and crashes. This happens with the original DOOM RPG, but not DOOM II RPG or Wolfenstein RPG. The last 2 will load and allow you to play, but I believe that there is a small issue with sound in them. (Sound gets "choppy," sound effects don't play, etc.)

Can't play SU30

Game loading bar goes to end, then just freezes, while task manager shows heavy cpu usage by javaw process.

Nokia APIs

Nokia S40 + S60 had some extra graphics APIs, that were also available on Sony Ericssons.

If these are used in any games it might be worth supporting.

More info should be available in the SDKs for these (they were supported in their own J2ME emulators)

Request: Change background colors

The current FreeJ2ME build has dark blue as the only color in the background. Would it be possible to add a function to select a different color for the background instead i.e. black?

How do i run this emulator?

Hi

so im completly new to this emulator and i dont know how to run it, could you compile it to an exe/make a tutorial on how to get this program running thank you

Images fail to load on Taito's Rainbow Islands

Game / Version: Rainbow Islands: The Story of Bubble Bobble 2 (s40v2) (128x128)
(Tried some other versions and they appear to work the same way)

Game contents:

a.class   e.class    guy.png        i1l2.dat       i2l1.bin  i3boss.png     i3l4.bin    l.class   t2.dat   ts3.bin
back.png  emy.dat    h.class        i1l3.bin       i2l1.dat  i3emyang1.png  i3l4.dat    m.class   t3.dat   ts3.png
b.class   end.png    hs.mid         i1l3.dat       i2l2.bin  i3emy.png      i.class     META-INF  t4.dat
bo.mid    f.class    i1boss.png     i1l4.bin       i2l2.dat  i3l1.bin       icon.png    ml.png    t5.dat
c.class   files.txt  i1emyang1.png  i1l4.dat       i2l3.bin  i3l1.dat       Init.class  m.png     ti.mid
d.class   g.class    i1emy.png      i1.mid         i2l3.dat  i3l2.bin       io.dat      n.class   ts1.bin
de1.png   goal.dat   i1l1.bin       i2boss.png     i2l4.bin  i3l2.dat       items.png   o.class   ts1.png
de2.png   go.mid     i1l1.dat       i2emyang1.png  i2l4.dat  i3l3.bin       j.class     ri.dat    ts2.bin
dy.mid    gr.mid     i1l2.bin       i2emy.png      i2.mid    i3l3.dat       k.class     t1.dat    ts2.png

Problem: Level graphics fail to load
fail-screenshot

MIDlet-1: Rainbow Islands, /icon.png, Init
Create MIDlet
Create Canvas:128, 128
Couldn't Load Image Stream (can't find /ts1)
Couldn't Load Image Stream (can't find /i1emy)
Couldn't Load Image Stream (can't find /i1emyang1)
Couldn't Load Image Stream (can't find /i1emyang2)

At first i thought the problem was related to it expecting a .png extension to be appended.
With the following hacky fix, some of the graphics appeared to load:
at org/recompile/mobile/PlatformImage.java

	public PlatformImage(String name)
	{
		// Create Image from resource name
		// System.out.println("Image From Resource Name");
		BufferedImage temp;

		InputStream stream = Mobile.getPlatform().loader.getMIDletResourceAsStream(name);

		if(stream==null)
		{
			 // System.out.println("Couldn't Load Image Stream (can't find "+name+") (Trying with appended .png)");
			 name = name + ".png";
			stream = Mobile.getPlatform().loader.getMIDletResourceAsStream(name);
		}
		if(stream==null)
		{
			System.out.println("Couldn't Load Image Stream (can't find "+name+")");
		}
		else
		{
			try
			{
				temp = ImageIO.read(stream);
				width = (int)temp.getWidth();
				height = (int)temp.getHeight();

				canvas = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
				createGraphics();

				gc.drawImage(temp, 0, 0);
			}
			catch (Exception e)
			{
				System.out.println("Couldn't Load Image Stream " + name);
				e.printStackTrace();
			}
		}
		platformImage = this;
	}

fix-screenshot

But there was still an image not loading: (and an invisible enemy killing you somewhere)

MIDlet-1: Rainbow Islands, /icon.png, Init
Create MIDlet
Create Canvas:128, 128
Couldn't Load Image Stream (can't find /i1emyang2.png)

KEmulator is showing this at it's memory view debugger:
kemu
That second "red bad guy" image is not present between the game files. So the game is recoloring the /i1emyang1.png image to build up that /i1emyang2 one. My initial guess about the extension appending was wrong (it was based on similar behavior with class files, please forgive me! ).

So this is where my script kiddie next-to-zero knowledge about Java let me get so far.

BTW, my fix might not be that wrong at all. KEmulator log shows this, among other stuff:

...
Custom.jar.getResourceStream: /i1emy (null)
Custom.jar.getResourceStream: /i1emy.png (886)
Custom.jar.getResourceStream: /i1emyang1 (null)
Custom.jar.getResourceStream: /i1emyang1.png (1007)
Custom.jar.getResourceStream: /i1emyang2 (null)
Custom.jar.getResourceStream: /i1emyang2.png (null)
Custom.jar.getResourceStream: /i1emyang2.jpg (null)
Custom.jar.getResourceStream: i1emyang2.png (null)
Custom.jar.getResourceStream: i1emyang2.jpg (null)
Custom.jar.getResourceStream: i1emyang1.png (1007)
Custom.jar.getResourceStream: i1l1.dat (111)
...

It first tries for /i1emyang1, and when failing, it tries to load it appending a .png extension, then a .jpg one. May it be that /i1emyang2 load attempt is just from leftover code and the problem is somewhere else?

Thank You!

Crash due to unable to find startApp method

Game is Fantasy Warrior 2 - Evil (fantasy_warrior_2.evil.jar).

Steps to reproduce:

  1. Launch FreeJ2ME (freej2me.jar)
  2. Select fantasy_warrior_2.evil.jar
  3. Game crashes and FreeJ2ME exits

I debugged this briefly and it seems that when loading jar it could not find startApp method. I investigated Fantasy Warrior jar with jadx and it seems that main class (FantasyWarrior2_Evil) inherits GameMIDlet class that should have startApp method. Method has following signature:

protected final void startApp()

I can share game privately but it should be also easy to find it using Google.

Game breakage on commit 15da0af

Nokia's Kart Racing gets garbage-ish since such commit. (Ok, I've not checked them one by one, but I'm pretty sure it's 15da0af since every other commit is mascotcapsule-related)

Screenshot from 2019-12-12 19-15-49

Add numpad support

Adding numpad support would be beneficial for a lot of games. I have created a pull request regarding the same (#31). The PR adds numpad support in a vertically inverted manner i.e. (1,2,3->7,8,9) and (7,8,9->1,2,3) since mobile keypad layouts are vertically inverted compared to keyboard numpads.

Munkiki's Castles and so-called M3D(O) related issues

For the context, read the related article on LMW

For a gameplay on Nokia 3410 (i.e. how exactly it is supposed to be) refer to this video and for the current emulation state refer to that video

First of, thanks for the working M3D(O) implementation to @recompileorg . It is really a breakthrough

The game runs mostly fine, however there are several (mostly minor) issues with how it runs. From what was noticed so far,

  • No sound (although probably unrelated to M3D(O) )

  • No back-light changes emulation (although not sure how to emulate)

  • No/improper background lattice emulation refer to a screenshot

  • Improper notes' (and probably not only them) alpha outline alpha handling. It is white but not transparent.

Other than that, it runs really well. Very grateful for all your hard work

MascotCapsule V3?

Hi,
I didn't attempt to compile freej2me yet, but I'd like to ask if there is any support for the M3D API (used for example by Fishlab's Abyss engine -- Galaxy on Fire 1/2, Deep etc.)

If not, would you be interested in adding support? The docs and tools seem to have been recently pulled from the web, but I have most if not all backed up.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.