TURRICAN 2004 - Versão 132x176 Universal (Nokia / Sony Ericsson)
================================================================

RESOLUÇÃO
---------
  Tela : 132 x 176 px  (resolução original Siemens M65 - mantida)
  HUD  : 39 px          (original)
  Jogo : 132 x 137 px  (área de jogo sem HUD)

  Constantes em GameState.java:
    SCREEN_W  = 132    SCREEN_H  = 176
    SCREEN_HW = 66     SCREEN_HH = 88
    HUD_HEIGHT = 39    VIEWPORT_H = 137

SISTEMA DE INPUT UNIVERSAL (GameScreen.java)
--------------------------------------------
  Problema original: o código Siemens usava keyCodes fixos negativos
  (-1, -4, -12, etc.) que NÃO funcionam em Nokia/Sony Ericsson.

  Solução implementada: camada de input em 3 níveis:

  NÍVEL 1 - getGameAction() [universal MIDP 2.0]
    Canvas.UP / DOWN / LEFT / RIGHT / FIRE
    Funciona em 100% dos aparelhos MIDP 2.0 certificados.

  NÍVEL 2 - KEY_NUM fallback [Nokia/SE numérico]
    KEY_NUM2 = cima      KEY_NUM8 = baixo
    KEY_NUM4 = esquerda  KEY_NUM6 = direita
    KEY_NUM5 = fogo/OK   KEY_NUM0 = pular
    KEY_POUND (#) = fogo  KEY_STAR (*) = trocar arma
    KEY_NUM7 = arma       KEY_NUM9 = pause
    KEY_NUM1/3 = fogo diagonal

  NÍVEL 3 - Softkeys universais
    -6 = Soft Left   -7 = Soft Right
    (funciona em Nokia S40/S60 e Sony Ericsson K/W/Z)

  Booleans públicos (use diretamente no game loop):
    GameScreen.inputUp, inputDown, inputLeft, inputRight
    GameScreen.inputFire, inputJump, inputWeapon, inputPause
    GameScreen.inputSoftL, inputSoftR

  Exemplo de uso no game loop:
    if (GameScreen.inputLeft)  playerX--;
    if (GameScreen.inputRight) playerX++;
    if (GameScreen.inputFire)  shoot();

LIMITADOR DE FPS (GameScreen.java linha 25)
-------------------------------------------
  public static int FPS_LIMIT = 17;  // padrão

  Valores recomendados:
    Nokia 3100, SE K310 (lento) : 8 - 12 FPS
    Nokia 6300, SE W800 (médio) : 15 - 17 FPS
    Emulador / celular rápido   : 17 - 19 FPS

  Alterar em runtime: GameScreen.setFpsLimit(12);

APIS SIEMENS REMOVIDAS
-----------------------
  com.siemens.mp.game.Light    → no-op (backlight indisponível)
  com.siemens.mp.media.Player  → javax.microedition.media.Player
  com.siemens.mp.media.Manager → javax.microedition.media.Manager
  Manager.createPlayer(path)   → createPlayer(stream, "audio/midi")

ERROS CORRIGIDOS (vs. versão original decompilada)
----------------------------------------------------
  - GameState.java: referência antecipada VIEWPORT_H antes de HUD_HEIGHT
  - var10000/var10001/var10002/var10003 inutilizados (7 arquivos)
  - var2/var3 inutilizados em LevelData.java
  - var4/var5/var6 inutilizados em HudDisplay.java
  - var5 inutilizado em ParticleSystem.java
  - HudDisplay var10001 orphan em GameScreen.java

ECLIPSE - CONFIGURAÇÃO DO PROJETO
-----------------------------------
  1. File > New > Java ME Project
  2. Device: qualquer perfil CLDC 1.1 + MIDP 2.0
  3. Java source: 1.3
  4. src/com/thq/Turrican/ → todos os 24 .java
  5. Recursos (*.png, theme.mid) na raiz do JAR
  6. MIDlet: com.thq.Turrican.TurricanMidlet
  7. JSR-135 (Mobile Media API) ativado para áudio

COMPATIBILIDADE
---------------
  Nokia  : 3100, 3220, 6020, 6230, 6300, N70, N95 (S40/S60)
  Sony E : K310, K500, K750, W200, W800, Z610 (K/W/Z series)
  Samsung: SGH-D500, E900 e similares MIDP 2.0
  Emulador: J2ME Loader (Android), KEmulator, MicroEmulator
  Siemens: M65, S65, CX65 (original - funciona normalmente)
