{"id":13691051,"url":"https://github.com/hex007/freej2me","last_synced_at":"2025-05-02T11:32:10.472Z","repository":{"id":38849938,"uuid":"104606622","full_name":"hex007/freej2me","owner":"hex007","description":"A free J2ME emulator with libretro, awt and sdl2 frontends.","archived":false,"fork":false,"pushed_at":"2024-02-16T20:06:19.000Z","size":923,"stargazers_count":456,"open_issues_count":60,"forks_count":69,"subscribers_count":32,"default_branch":"master","last_synced_at":"2024-05-21T11:30:25.502Z","etag":null,"topics":["awt","emulator","emulator-frontend","j2me","libretro","sdl2","sdl2-frontends"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hex007.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-23T23:59:36.000Z","updated_at":"2024-06-12T12:17:15.153Z","dependencies_parsed_at":"2024-01-14T08:14:20.509Z","dependency_job_id":"8ae26b84-b80d-4a26-865f-b3f7fd223078","html_url":"https://github.com/hex007/freej2me","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hex007%2Ffreej2me","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hex007%2Ffreej2me/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hex007%2Ffreej2me/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hex007%2Ffreej2me/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hex007","download_url":"https://codeload.github.com/hex007/freej2me/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252030245,"owners_count":21683312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["awt","emulator","emulator-frontend","j2me","libretro","sdl2","sdl2-frontends"],"created_at":"2024-08-02T17:00:39.272Z","updated_at":"2025-05-02T11:32:08.418Z","avatar_url":"https://github.com/hex007.png","language":"Java","funding_links":[],"categories":["Emulators"],"sub_categories":["SDKs"],"readme":"# freej2me\n\n![Java CI](https://github.com/hex007/freej2me/workflows/Java%20CI/badge.svg)\n\nA free J2ME emulator with libretro, awt and sdl2 frontends.\n\nAuthors :\n- David Richardson [Recompile@retropie]\n- Saket Dandawate  [Hex@retropie]\n\n---\n\n## Controls\n\n* `Q` and `W` for left and right softkeys.\n* Arrow keys for nav, unless phone is set to \"Standard\", when arrow keys become 2, 4, 6, and 8.\n* Numbers work as expected, the number pad is inverted (123 swap with 789, like a phone)\n* `E` and `R` are alternatives to `*` and `#`.\n* Enter functions as the Fire key or `5` on \"Standard\" mode\n* ESC brings up the settings menu\n* In the AWT frontend (freej2me.jar) `Ctrl+C` takes a screenshot and `+`/`-` can be used to control the window scaling factor\n\nClick [here](KEYMAP.md) for information about more keybindings\n\n## Links\nScreenshots:\n  https://imgur.com/a/2vAeC\n\nDiscussion/Support thread:\n  https://retropie.org.uk/forum/topic/13084/freej2me-support-thread\n\nDevelopment thread:\n  https://retropie.org.uk/forum/topic/11441/would-you-like-to-play-nokia-j2me-games-on-retropie/\n\n----\n**FreeJ2ME Jar Compilation:**\n\n\u003eFrom the root directory, running the following commands:\n\u003e```\n\u003e \u003e cd freej2me/\n\u003e \u003e ant\n\u003e```\n\u003e Will create three different jar files inside `build/`:\n\u003e\n\u003e `freej2me.jar` -\u003e Standalone AWT jar executable\n\u003e \n\u003e `freej2me-lr.jar` -\u003e 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)\n\u003e\n\u003e`freej2me-sdl.jar` -\u003e Jar executable meant to be used in conjunction with SDL2\n\u003e\n\u003eBoth 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.\n\n**Building the SDL2 binary:**\n\u003e\n\u003eTo build the SDL2 binary, run the following commands from the root directory:\n\u003e ```\n\u003e # SDL2 binary compilation\n\u003e \u003e cd src/sdl2\n\u003e \u003e make\n\u003e \u003e make install\n\u003e ```\n\u003e\n\u003e SDL2 allows FreeJ2ME to run on a Raspberry Pi.\n\n**Building the Libretro core**\n\n\u003e **For linux:**\n\u003eTo build the libretro core, open a terminal in freej2me's folder run the following commands from there:\n\u003e```\n\u003e# libretro core compilation\n\u003e \u003e cd src/libretro\n\u003e \u003e make\n\u003e```\n\u003eThis will build `freej2me_libretro.so` on `src/libretro/`, which is the core libretro will use to interface with `freej2me-lr.jar`.\n\u003e\n\u003eMove 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.\n\u003e\n\u003eNOTE: 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.\n\u003e\n\n\u003e **For windows:**\n\u003eTo 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.\n\u003e\n\u003e 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.\n\u003e\n\u003e 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:\n\u003e```\n\u003e # Installing 'mingw-w64' and 'make' on msys2\n\u003e \u003e pacman -S mingw-w64-ucrt-x86_64-gcc\n\u003e \u003e pacman -S make\n\u003e\n\u003e # libretro core compilation\n\u003e \u003e cd freej2mefolder/src/libretro\n\u003e \u003e make\n\u003e```\n\u003eThis will build `freej2me_libretro.dll` on `freej2mefolder/src/libretro/`, which is the core libretro will use to interface with `freej2me-lr.jar`.\n\u003e\n\u003eMove 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.\n\u003e\n\u003eNOTE: The windows core has only been tested on Windows 10 x64.\n\n----\n**Usage (applies to AWT and SDL):**\n\nLaunching the AWT frontend (freej2me.jar) will bring up a filepicker to select the MIDlet to run.\n\nAlternatively it can be launched from the command line: `java -jar freej2me.jar 'file:///path/to/midlet.jar' [width] [height] [scale]`\nWhere _width_, _height_ (dimensions of the simulated screen) and _scale_ (initial scale factor of the window) are optional arguments.\n\nThe SDL2 frontend (freej2me-sdl.jar) accepts the same command-line arguments format, aside from the _scale_ option which is unavailable.\n\nWhen 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`\n\nFreeJ2ME 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.\n\n---\n**How to contribute as a developer:**\n  1) Open an Issue\n  2) Try solving that issue\n  3) Post on the Issue if you have a possible solution\n  4) Submit a PR implementing the solution\n\n**If you are not a developer:**\n  1) Post on discussion thread only\n\n**Roadmap:**\n  - Get as many games as possible to work well.\n  - Document games that work well in the wiki\n  - Reduce as many bugs as possible\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhex007%2Ffreej2me","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhex007%2Ffreej2me","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhex007%2Ffreej2me/lists"}