J2ME emulators: Difference between revisions

Update freej2me-plus ver.
Some changes and updates, sorry if i messed something up by accident
Line 13: Line 13:
Currently, the Android-exclusive [[J2ME Loader]] is able to run most 2D and 3D (including [[Mascot Capsule 3D]]) J2ME games. On desktops, [[FreeJ2ME|FreeJ2ME-Plus]] is excellent for 2D games, but there's a minority of games making use of obscure vendor-specific APIs supported only on their respective SDK tools. Given the scarcity of such tools, this list aims to comprehensively list the available ones for convenience.
Currently, the Android-exclusive [[J2ME Loader]] is able to run most 2D and 3D (including [[Mascot Capsule 3D]]) J2ME games. On desktops, [[FreeJ2ME|FreeJ2ME-Plus]] is excellent for 2D games, but there's a minority of games making use of obscure vendor-specific APIs supported only on their respective SDK tools. Given the scarcity of such tools, this list aims to comprehensively list the available ones for convenience.


While J2ME phones are not manufactured anymore, various J2ME game/app storefronts are still open and functional, operating on either a store or a subscription basis, with the two major content providers being [http://wapshop.gameloft.com/ Gameloft Store] (redirects to the applicable version of the store if available and opened on a phone) and [https://server.appsclub.com/web/chooser.html Bemobi Apps Club] (store list per country). Note that not all versions of the stores continue to have the J2ME sections open.
While J2ME phones are not manufactured anymore, various J2ME game/app storefronts are still open and functional, operating on either a store or a subscription basis, with the two major content providers being Gameloft Store and Bemobi Apps Club. More info on them can be seen [https://lpcwiki.miraheze.org/wiki/Dumping_games_from_J2ME_stores in this article].
==Emulators==
==Emulators==
; If you don't want to mess with these tools, just use [[Kahvibreak]] - preservation effort for J2ME games.
{|class="wikitable" style="text-align:center;width:100%"
{|class="wikitable" style="text-align:center;width:100%"
!Name
!Name
Line 34: Line 33:
|FreeJ2ME
|FreeJ2ME
|Host JVM
|Host JVM
|align="left" |{{Icon|Windows|Lin|macOS|Web}}
|align="left" |{{Icon|Java|Windows|Lin|macOS|Web}}
|[https://github.com/TASEmulators/freej2me-plus/releases 1.52]<br>[https://github.com/TASEmulators/freej2me-plus/releases/tag/nightlies Nightly]||{{Ya}}
|[https://github.com/TASEmulators/freej2me-plus/releases 1.52]<br>[https://github.com/TASEmulators/freej2me-plus/releases/tag/nightlies Nightly]||{{Ya}}
|{{Green}} {{License|GPLv3}}<br>{{License|BSD3}}
|{{Green}} {{License|GPLv3}}<br>{{License|BSD3}}
|{{Emulator compatibility|link=https://tasemulators.github.io/freej2me-plus/|730|769}}
|{{Emulator compatibility|link=https://tasemulators.github.io/freej2me-plus/|730|769}}
|High
|High
|{{Ya}}<ref group="lower-alpha" name=MascotJ2SE></ref>||{{Ya}}
|{{Ya}}<ref group="lower-alpha" name=MascotJ2SE>KEmulator nnmod has the choice between JL-Mod's implementation and iDKDoJa's software renderer, the latter also available as an addon for FreeJ2ME and the original KEmulator: [https://drive.google.com/file/d/1T-xZO_iY46zx3JN1hYxAiIHY5lhvAhG0/view 1.0.3 modded + Mascot Capsule 3D support]</ref>||{{Ya}}
|-
|-
|[https://nnproject.cc/kem/ KEmulator nnmod / nnx64]
|[https://nnproject.cc/kem/ KEmulator nnmod / nnx64]
|KEmulator 1.0.3
|KEmulator 1.0.3
|Host JVM
|Host JVM
| align="left" |{{Icon|Windows|Lin|macOS}}
| align="left" |{{Icon|Java|Windows|Lin|macOS}}
|[https://nnproject.cc/dl/kemnnmod.zip win32 2.20]<br>[https://nnproject.cc/dl/kemnnx64.zip multi-platform 2.20]||{{Ya}}
|[https://nnproject.cc/dl/kemnnmod.zip win32 2.20]<br>[https://nnproject.cc/dl/kemnnx64.zip multi-platform 2.20]||{{Ya}}
|{{Red}} {{License|Proprietary}}<ref group="lower-alpha">The decompiled code used in KEmulator nnmod/nnx64 is available.</ref>
|{{Red}} {{License|Proprietary}}<ref group="lower-alpha">The decompiled code used in KEmulator nnmod/nnx64 is available.</ref>
|
|
|High
|High
|{{Ya}}<ref group="lower-alpha" name=MascotJ2SE>KEmulator nnmod has the choice between JL-Mod's implementation and iDKDoJa's software renderer, the latter also available as an addon for FreeJ2ME and the original KEmulator: [https://drive.google.com/file/d/1T-xZO_iY46zx3JN1hYxAiIHY5lhvAhG0/view 1.0.3 modded + Mascot Capsule 3D support]</ref>
|{{Ya}}
|{{Ya}}
|{{Ya}}
|-
|[[KEmulator]]
| —
|Host JVM
| align="left" |{{Icon|Java|Windows}}
|[https://web.archive.org/web/*/https://6983c158-a-62cb3a1a-s-sites.googlegroups.com/* 0.9.3]<br>[https://archive.org/details/KEmulator103 1.0.3]||{{Na}}
|{{Red}} {{License|Proprietary}}
|
|Mid
|{{~}}<ref group="lower-alpha" name=MascotJ2SE></ref>||{{~}}
|-
|MicroEmulator
| —
|Host JVM
| align="left" |{{Icon|Java|Windows|macOS|Lin}}
|[https://sourceforge.net/projects/microemulator/files/microemulator/2.0.4 2.0.4]||{{Na}}
|{{Green}} {{License|Apache2}} ({{License|Permissive}})
|
|Mid
|{{Na}}||{{~}}
|-
|-
|[[EKA2L1]]
|[[EKA2L1]]
Line 61: Line 80:
|Mid
|Mid
|{{Na}}
|{{Na}}
|{{~}}<br /><small>(Only MIDP 1.0 - S60v1)</small>
|{{Na}}<br /><small>(Only MIDP 1.0 - S60v1)</small>
|-
|-
|[[FreeJ2ME]] (fork)
|[[FreeJ2ME]] (fork)
|FreeJ2ME
|FreeJ2ME
|Host JVM
|Host JVM
| align="left" |{{Icon|Windows|Linux|Mac}}
| align="left" |{{Icon|Java|Windows|Linux|Mac}}
|[https://github.com/zb3/freej2me/releases Releases]||{{Ya}}
|[https://github.com/zb3/freej2me/releases Releases]||{{Ya}}
|{{Green}} {{License|GPLv3}}<br>{{License|BSD3}}
|{{Green}} {{License|GPLv3}}<br>{{License|BSD3}}
|
|
|High-Mid
|Mid
|{{Ya}} (impl. from [[JL-Mod]])
|{{Ya}} (impl. from [[JL-Mod]])
|{{~}}
|{{Na}}
|-
|-
|[[SquirrelJME]]
|[[SquirrelJME]]
| —
| —
|Custom
|Custom
| align="left" |{{Icon|Java}}
| align="left" |{{Icon|Java|Windows|Linux|Mac}}
|[https://multiphasicapps.net/uv/download.mkd 0.3.0]<br/> [https://buildbot.libretro.com/nightly/ libretro core]<br/>||{{Ya}}
|[https://multiphasicapps.net/uv/download.mkd 0.3.0]<br/> [https://buildbot.libretro.com/nightly/ libretro core]<br/>||{{Ya}}
|{{Green}} {{License|MPL2}} ({{License|Copyleft}})
|{{Green}} {{License|MPL2}} ({{License|Copyleft}})
Line 97: Line 116:
| —
| —
|Host JVM
|Host JVM
| align="left" |{{Icon|Windows|Lin|LiA}}
| align="left" |{{Icon|Java|Windows|Lin|LiA}}
|[https://github.com/hex007/freej2me/actions?query=branch%3Amaster git]||{{Na}}
|[https://github.com/hex007/freej2me/actions?query=branch%3Amaster git]||{{Na}}
|{{Green}} {{License|GPLv2}}<br>{{License|BSD3}}
|{{Green}} {{License|GPLv2}}<br>{{License|BSD3}}
|
|Mid
|{{~}}<ref group="lower-alpha" name=MascotJ2SE></ref>||{{Na}}
|-
|[[KEmulator]]
| —
|Host JVM
| align="left" |{{Icon|Windows}}
|[https://4pda.to/forum/index.php?showtopic=99949 0.9.7]<br>[https://web.archive.org/web/20201015020355/https://sites.google.com/site/lyodev/KEmulator_lite_release_093_200803052.zip?attredirects=0 0.9.3]<br>[https://archive.org/details/KEmulator103 1.0.3]||{{Na}}
|{{Red}} {{License|Proprietary}}
|
|
|Mid
|Mid
Line 150: Line 159:
|[https://web.archive.org/web/20060720210353/http://www.volny.cz/molej/pstros/download.htm 1.5.2]<br/>[https://web.archive.org/web/20171028060614/http://mujweb.cz/molej/pstros/download.htm 1.6.1]||{{Na}}
|[https://web.archive.org/web/20060720210353/http://www.volny.cz/molej/pstros/download.htm 1.5.2]<br/>[https://web.archive.org/web/20171028060614/http://mujweb.cz/molej/pstros/download.htm 1.6.1]||{{Na}}
|{{Red}} {{License|Proprietary}}
|{{Red}} {{License|Proprietary}}
|
|Mid
|{{Na}}||{{Na}}
|-
|MicroEmulator
| —
|Host JVM
| align="left" |{{Icon|Java|Windows|macOS|Lin}}
|[https://sourceforge.net/projects/microemulator/files/microemulator/2.0.4 2.0.4]||{{Na}}
|{{Green}} {{License|Apache2}} ({{License|Permissive}})
|
|
|Mid
|Mid
Line 647: Line 646:
|-
|-
! colspan="11" |Browser
! colspan="11" |Browser
|-
|web-j2me
|phoneME
|phoneME
| align="left" |{{Icon|Web}}
|[https://mulfyx.github.io/web-j2me/ Website]
|{{Ya}}
|{{Dunno}}
|
|{{Dunno}}
|{{Dunno}}
|{{~}}
|-
|FreeJ2ME-Plus
| —
|CheerpJ
| align="left" |{{Icon|Web}}
|[https://tasemulators.github.io/freej2me-plus/ Website]
|{{Ya}}
|{{Green}} {{license|GPLv3}}<br>{{license|BSD3}}
|
|High-Mid
|{{Dunno}}
|{{~}}
|-
|-
|JS2ME
|JS2ME
Line 668: Line 691:
|{{Na}}||{{Dunno}}
|{{Na}}||{{Dunno}}
|}
|}
 
===Running emulators on emulators===
{|class="wikitable" style="text-align:center;width:100%"
{|class="wikitable" style="text-align:center;width:100%"
!scope="col"|Name
!scope="col"|Name
Line 732: Line 755:


;[[SquirrelJME]]
;[[SquirrelJME]]
:Unlike most J2ME emulators, which recreate the J2ME APIs on top of the host system’s Java runtime, SquirrelJME is '''a project that reimplements the Java Virtual Machine itself''' (aiming for Java ME 8 and MIDP, as well as numerous vendor-specific APIs such as DoJa, JSCL, Nokia UI, WIPI, and more<ref>[https://github.com/SquirrelJME/SquirrelJME/issues?q=is%3Aissue%20state%3Aopen%20label%3Aapi Issues · SquirrelJME/SquirrelJME]</ref>), By taking this approach, SquirrelJME aims to provide deeper emulation with full low-level compatibility, such as accurate memory management and thread behavior, while also enabling portability to environments where no JVM is available. Under heavy development. Note that while the standalone builds are capable of running a few games as of this writing (albeit with various bugs), the libretro core is non-functional.
:Unlike most J2ME emulators, which recreate the J2ME APIs on top of the host system’s Java runtime, SquirrelJME is a project that reimplements the Java Virtual Machine itself (aiming for MIDP, DoJa and Java ME 8, as well as numerous vendor-specific APIs such as JSCL, Nokia UI, WIPI, and more<ref>[https://github.com/SquirrelJME/SquirrelJME/issues?q=is%3Aissue%20state%3Aopen%20label%3Aapi Issues · SquirrelJME/SquirrelJME]</ref>), By taking this approach, SquirrelJME aims to provide deeper emulation with full low-level compatibility, such as accurate memory management and thread behavior, while also enabling portability to environments where no JVM is available. Under heavy development. Note that while the standalone builds are capable of running a few games as of this writing (albeit with various bugs), the libretro core is non-functional.


;[[KEmulator]] / KEmulator nnmod
;[[KEmulator]] / KEmulator nnmod
Line 805: Line 828:
!FreeJ2ME-Plus
!FreeJ2ME-Plus
!KEmulator nnmod / nnx64
!KEmulator nnmod / nnx64
!EKA2L1
!J2ME Loader
!FreeJ2ME (fork)
!web-j2me / PSPKVM
|-
|-
|Automatic DRM soft-patching
|Automatic DRM soft-patching
|{{Ya}} (vServ, Flexion)
|{{Na}}
|{{Ya}} (vServ, Flexion)
|{{Ya}} (vServ, Flexion)
|
|
Line 852: Line 875:


==Hardware features==
==Hardware features==
<!-- Please double-check all this -->
{|class="wikitable sortable" style="text-align:center;width:100%"
{|class="wikitable sortable" style="text-align:center;width:100%"
! colspan=1 style="width:50%" |Name
! colspan=1 style="width:50%" |Name
!FreeJ2ME-Plus
!FreeJ2ME-Plus
!KEmulator nnmod / nnx64
!KEmulator nnmod / nnx64
!EKA2L1
!J2ME Loader
!FreeJ2ME (fork)
!web-j2me / PSPKVM
|-
|-
|CLDC-1.1
|Nokia monophonic tone (.ota/.rng) playback support
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{~}}
|
|
|
|
|-
|-
|CMF (.pmd) playback support
|Siemens monophonic tone playback support
|{{~}} <ref group="*">Pseudo playback using MIDI.</ref>
|{{Ya}}
|{{Na}}
|
|
|-
|MFi (.mld) playback support
|{{~}} <ref group="*">Pseudo playback using MIDI. And the level of completeness is still not very high.</ref>
|{{Na}}
|{{Na}}
|
|
|-
|MIDP-2.0
|{{Ya}}
|{{Ya}}
|
|
|
|
|-
|-
|SMAF (.mmf) playback support
|SMAF (.mmf) playback support
|{{~}} <ref group="*">Pseudo playback using MIDI. And the level of completeness is still not very high.</ref>
|{{~}} <ref group="*">Pseudo playback using MIDI. The playback quality depends on the type of SMAF.</ref>
|{{Ya}} (Win32 only<ref group="*">You need to copy <code>M7_EmuSmw7.dll</code> and <code>M7_EmuHw.dll</code> from the MEXA emulator.</ref>)
|{{Ya}} (Win32 only<ref group="*">You need to copy <code>M7_EmuSmw7.dll</code> and <code>M7_EmuHw.dll</code> from the MEXA emulator.</ref>)
|
|
|
|
|-
|-
|SMF (.mid) playback support
|Standard MIDI file (.mid) playback support
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
Line 896: Line 906:
|
|
|}
|}
==APIs==
==Additional APIs==
{|class="wikitable sortable" style="text-align:center;width:100%"
{|class="wikitable sortable" style="text-align:center;width:100%"
! colspan=1 style="width:50%" |Name
! colspan=1 style="width:50%" |Name
!FreeJ2ME-Plus
!FreeJ2ME-Plus
!KEmulator nnmod / nnx64
!KEmulator nnmod / nnx64
!EKA2L1
!J2ME Loader
!FreeJ2ME (fork)
!web-j2me / PSPKVM
|-
|-
|CJSP API <small>(<code>com.gcjsp.v10</code>)</small>
|CJSP API <small>(<code>com.gcjsp.v10</code>)</small> <ref group="*">This is a derivative of Vodafone VSCL 1.0/1.1 API used on some devices.</ref>
|{{Na}}
|{{Dunno}}
|{{Ya}}
|{{Ya}}
|
|
|
|
|-
|-
|DoCoMo DoJa API <small>(<code>com.nttdocomo</code>)</small>
|FarEasTone FSCL API <small>(<code>tw.com.fareastone.v10</code>)</small> <ref group="*">This is a derivative of Vodafone VSCL 1.0/1.1 API used on some devices.</ref>
|{{~}}
|{{Dunno}}
|{{~}}
|
|
|-
|DoCoMo Star API <small>(<code>com.docomostar</code>)</small>
|{{Na}}
|{{~}}
|
|
|-
|FarEasTone FSCL API <small>(<code>tw.com.fareastone.v10</code>)</small>
|{{Na}}
|{{Ya}}
|{{Ya}}
|
|
Line 935: Line 933:
|-
|-
|JSR211 - Content Handler API <small>(<code>javax.microedition.content</code>)</small>
|JSR211 - Content Handler API <small>(<code>javax.microedition.content</code>)</small>
|{{Dunno}}
|{{~}}
|{{~}}
|{{~}}
|
|
Line 971: Line 969:
|-
|-
|Mascot Capsule V3 API <small>(<code>com.mascotcapsule.micro3d.v3</code>)</small>
|Mascot Capsule V3 API <small>(<code>com.mascotcapsule.micro3d.v3</code>)</small>
|{{Na}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|
|
Line 995: Line 993:
|-
|-
|Project Capuchin API <small>(<code>com.sonyericsson.capuchin</code>)</small>
|Project Capuchin API <small>(<code>com.sonyericsson.capuchin</code>)</small>
|{{~}}
|{{Na}}
|{{Na}}
|{{Na}}
|
|
Line 1,001: Line 999:
|-
|-
|Samsung API <small>(<code>com.samsung.util</code>)</small>
|Samsung API <small>(<code>com.samsung.util</code>)</small>
|{{Dunno}}
|{{Ya}}
|{{Ya}} (Win32 only)
|{{Ya}}
|
|
|
|
|-
|-
|Siemens API <small>(<code>com.siemens</code>)</small>
|Siemens API <small>(<code>com.siemens</code>)</small>
|{{Ya}}
|{{~}}
|{{Ya}}
|{{~}}
|
|
|
|
Line 1,031: Line 1,029:
|-
|-
|Sprint API <small>(<code>com.sprintpcs</code>)</small>
|Sprint API <small>(<code>com.sprintpcs</code>)</small>
|{{Dunno}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|
|
Line 1,043: Line 1,041:
|-
|-
|Vodafone VSCL 1.0/1.1 API <small>(<code>com.vodafone.v10</code>)</small>
|Vodafone VSCL 1.0/1.1 API <small>(<code>com.vodafone.v10</code>)</small>
|{{Na}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|
|