Java Game 240x320 Gameloft · Full Version

If you had a feature phone and wanted a game that didn't look like a calculator app, you looked for one logo: Gameloft.

Founded in 1999 by the Guillemot brothers (the same family behind Ubisoft), Gameloft understood something early on: mobile phones could be legitimate gaming devices if you treated them with respect.

Don't sleep on the casual games. This was Arkanoid on steroids.

You can relive this era perfectly on a modern device: Java Game 240x320 Gameloft

Pro Tip: When downloading ROMs, always search for "240x320" or "Nokia N73" or "Sony Ericsson K800i" versions. If you download a 128x160 version, it will look tiny and stretched.


Long before we had PUBG Mobile or Call of Duty Mobile, we had Modern Combat. It was an unapologetic homage to Call of Duty 4: Modern Warfare. Despite the limitations of Java, Gameloft managed to include iron sights, grenade throwing, and scripted explosive moments. Playing this on a D-pad was clunky, but the immersion was undeniable.

In an age where smartphones boast 6.7-inch OLED screens, 120Hz refresh rates, and ray tracing, it is easy to forget the humble beginnings of mobile gaming. Before the iPhone changed everything in 2007, and long before "Play Store" and "App Store" were household names, there was Java ME (Micro Edition). If you had a feature phone and wanted

For millions of gamers in the mid-to-late 2000s, the magic numbers were not 1080p or 4K. They were 240x320.

And the king of this pixelated realm was Gameloft.

If you ever owned a Sony Ericsson K750i, Nokia N73, or a Samsung D900, you know exactly what we are talking about. This article is a deep dive into the history, the technology, and the unforgettable library of Java games designed for the 240x320 screen resolution, with a spotlight on the French publisher that set the standard: Gameloft. Pro Tip: When downloading ROMs, always search for


These games are abandonware — no longer sold. To play them today:

Note: Modern touchscreens are terrible for these games (unless you map keys to an external controller).


| Title | Genre | Notable | |--------|-------|---------| | Asphalt 3 / 4 | Racing | Fake 3D perspective, track split | | Block Breaker Deluxe 2 | Arkanoid | Smooth ball physics, powerups | | Gangstar (first) | GTA clone | Top-down action, mission based | | Heroes of Might & Magic | Turn-based strat | Isometric tiles | | Midnight Bowling / Pool | Sports | Pre-rendered 3D sprites |

For a game, you often need to handle graphics and user input manually.

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
public class MyGame extends MIDlet
private GameCanvas gameCanvas;
public MyGame() 
        gameCanvas = new GameCanvas(this);
        Display.getDisplay(this).setCurrent(gameCanvas);
protected void startApp() throws MIDletStateChangeException 
        gameCanvas.start();
protected void pauseApp()
protected void destroyApp(boolean unconditional) throws MIDletStateChangeException
class GameCanvas extends Canvas
private MyGame midlet;
    private Image background;
    private int screenWidth, screenHeight;
public GameCanvas(MyGame midlet) 
        this.midlet = midlet;
        screenWidth = getWidth(); // 240
        screenHeight = getHeight(); // 320
        try 
            background = Image.createImage("/background.png");
         catch (Exception e) 
            // Handle exception
public void start() 
        // Game loop
        while (isShown()) 
            try 
                Thread.sleep(50); // Adjust for game speed
             catch (InterruptedException ex) 
                // Handle exception
repaint();
protected void paint(Graphics g) 
        g.drawImage(background, 0, 0, Graphics.TOP_LEFT);
        // Draw game elements here