Hi,

Up to now I implemented in midp 1.0 on 3650 and such devices but now
I have a serious problem with 6600 device. ( using now midp 2.0 )

I know that many times, there has been discussed this setFullScreenMode
but believe me I have searched all the forums titles however I have still problems.

If I use setFullScreenMode(true) and even hardcode sizeChanged by width=176 and height = 208 , it is fine on emulator but on my Nokia 6600 device height reacts as 144. The screen seems in full screen but when I press
a soft key the 64 pixels from bottom ( 208 - 144 ) is not rendered. I mean it reacts as height = 144.

Secondly,
I have read the 6600 issues document, it says:

----------------------------------------------------
2.10 Changing the FullScreenMode of Canvas to True
Description:

If the FullScreenMode of Canvas is changed to true, the Commands in the Options menu don’t have any effect. If any soft key is pressed, the Options menu is shown, but choosing a Command does nothing.

Solution:
No solutions exist for software version 3.42.1 or 4.09.1.




Known Issues In The Nokia 6600 MIDP 2.0 Implementation 11
2.11 Commands in Full Screen
Description:
Commands can be added to full screen but they do not work.

Solution:
No solutions exist for software version 3.42.1, but this issue has been corrected in software version 4.09.1.
---------------------------------------------------------------------

and this document also says:
---------------------------------------
This document presents known issues related to the MIDP 2.0 implementation in the first commercial software versions of the Nokia 6600 device. The software version numbers are 3.42.1 and 4.09.1. The software version can be checked by typing *#0000#. Note that new software versions will not be released for the Nokia 6600 device.
----------------------------------------

Well when I type *#0000# my software version is 5.53.0

Is my problem related with this version ? I mean I have tried all the ways to correct the setFullScreenMode and the command issues when full screen.
Although the emulator runs correct now, my Nokia 6600 does not run correctly, it behaves as height is 144, the 64 pixels from bottom is not rendered.

The 6600 issue says from above that;
"Note that new software versions will not be released for the Nokia 6600 device."
What does it mean ? Is my 5.53.0 the wrong software, but it is higher, if so
how can I sell my game to 6600 devices ? That is a big problem.

To show my code:

public class GameScreen extends GameCanvas implements Runnable, CommandListener {

private static final int MILLIS_PER_TICK = 50;

private Command backCommand = new Command( Locale.getString( "General.Exit" ), Command.EXIT,1);


private boolean isPlay; // Game Loop runs when isPlay is true
private int width; // To hold screen width
private int height; // To hold screen height

private int scnViewWidth; // Hold Width Screen View Port
private int scnViewHeight; // Hold Height Screen View Port

private Thread gameThread = null;


private static final int MOVE = 6;



int x, y;

// Constructor and initialization
public GameScreen() throws Exception {
super(true);
addCommand(backCommand);
setCommandListener(this);

setFullScreenMode(true);

try{ Thread.sleep( 100 ); }catch(InterruptedException e){ }

this.sizeChanged( getWidth(), 208 );
width = getWidth(); // get screen width
height = 208; // get screen height
scnViewWidth = width; // Set View Port width to screen width
scnViewHeight = height; // Set View Port height to screen height


........

}

// Start thread for game loop
public void start() {
gameThread = new Thread(this);
gameThread.start();
}

// Stop thread for game loop
public void stop() {
gameThread = null;
}

// Main Game Loop
public void run() {
Graphics g = getGraphics();

Thread currentThread = Thread.currentThread();

try {
while (currentThread == gameThread) {
long startTime = System.currentTimeMillis();
if (isShown()) {
if (isPlay) {
tick();
}
render(g);


}
long timeTake = System.currentTimeMillis() - startTime;
if (timeTake < MILLIS_PER_TICK) {
synchronized (this) {
wait(MILLIS_PER_TICK - timeTake);
}
} else {
currentThread.yield();
}
}
} catch (InterruptedException ex) {
// won't be thrown
}

}

// Handle dynamic changes to game including user input
public void tick() {
this.sizeChanged( getWidth(), 208 );
// Scroll Terrain
gameMap.scrollTerrain();

// Player Actions
int keyStates = getKeyStates();

... here key actions..


}

public void commandAction(Command c, Displayable d) {
if (c == backCommand) {
MyMidlet.getApp().activateMenu(); // I want to go to main menu
}
}

// Method to Display Graphics
private void render(Graphics g) {



g.setColor(0x000000);
g.fillRect(0,0,176,208);

// LayerManager Paint Graphics
this.sizeChanged( getWidth(), 208 );


layerManager.paint(g,0,0);


flushGraphics();
}

protected void sizeChanged(int w, int h)
{
width = getWidth();
height = 208;
}


}