Skip to content

Releases: plasticbugs/n-gage

N-Gage for Analogue Pocket v1.2.0

Choose a tag to compare

@plasticbugs plasticbugs released this 24 Oct 06:28

N-Gage for Analogue Pocket — 1.2.0

A feature release:

  • Game saves. Each game's saves now live on the SD card and are still
    there the next time you play;
  • Add N-Gage games.html, on the card beside the core's files, turns
    your game zips into games for the Pocket: drop them on it, all at once,
    and they go onto the SD card with their names in the Pocket's menu. No
    Python, no command line, and it works offline;
  • the menu's Scanlines and Shadow Mask are now one list, Screen Effect.

The core boots the Nokia N-Gage's own firmware on the Pocket and runs
games.

This core does not rebuild the phone's board. It runs NGVM, a small
machine with just enough of an ARM phone for the Symbian user side of your
own phone's firmware to run unchanged. The CPU, an ARMv4T, is gateware; a
small kernel (ngvm.bin) stands in for the phone's.

No firmware or games are included. You need your own N-Gage's firmware
dump and your own games.

Install

  1. Unzip onto the SD card root, keeping the folders.

  2. Into Assets/ngage/common/, next to ngvm.bin, put:

    • sym.rom: the N-Gage's firmware (the "BIOS"), about 18 MB. Dump it
      from your own phone. A compatible one is bios/Nokia/N-Gage/SYM.ROM
      in the retrobios repository on
      GitHub: the firmware this core was tested on, 18,612,224 bytes, md5
      64a95a4a884cf4cc15a566b856603193. Rename it to sym.rom, in lower
      case;
    • one .img per game, made from the game's files.

    The easy way does both. With the SD card in your computer, open
    Assets/ngage/common/Add N-Gage games.html from it in Microsoft Edge
    or Google Chrome, on Windows or a Mac. Press "Choose my SD card", pick
    the card's Assets folder, then drop your game zips (and SYM.ROM)
    on the page. Each game gets a green tick when it is on the card, with
    its entry in the Pocket's menu. A short film on the page shows every
    step. Other browsers download the files for you to copy over.

    Or, with Python 3, the builder in this zip:

    python3 mkdrive.py --from vcop.zip --out vcop.img

    The game list (Assets/ngage/plasticbugs.ngage/*.json) names the .img
    and the .sav each game uses. The page writes these entries; by hand,
    add a JSON there for any other game.

  3. Loading takes a while: up to about 50 MB go through the Pocket's loader,
    and the screen stays black until it is done. The phone then boots as it
    would, Nokia logo first.

From 1.1.0 or earlier, copy the whole zip over: the bitstream,
ngvm.bin and the game list have changed. Your sym.rom and .img
files are not in it, and your menu settings are kept, except a Shadow
Mask setting, which goes back to Off: choose it again under Screen Effect.

Games you added to the list yourself need a save entry, or they all
share one save file, ngage.sav. In the game's JSON, after the .img
entry, add { "id": 4, "filename": "<game>.sav" }, as the games in this
zip have.

Rebuild your .img files with this zip's mkdrive.py if you made them
for 0.1.0-alpha and the game is larger than 24 MB, or is Tomb Raider, Tony
Hawk's Pro Skater or Pandemonium.

Controls

Pocket phone
d-pad arrows
A / B 5 / 7
X OK
Y 9
L / R the soft keys
Select #
Start OK
Select + R the on-screen keypad, and put it away

The core's menu has a slider for each of A, B, X, Y, L and R: at 0 to 9
the button is that digit key of the phone, at 10 it is as in the table.

The on-screen keypad is for every key the buttons do not reach.
Press Select and R together and the phone's keypad comes up over the
bottom of the picture: the soft keys, C, 0 to 9, * and #. The d-pad moves
the highlight, A or B presses the key for as long as you hold it, and Y
moves the keypad to the top of the screen and back. Select and R together
put it away. While it is up, the game sees only the keys it presses.

New since 1.1.0

  • Game saves. A game keeps its saves on the phone's own C: drive.
    Until now that drive was erased at every start, so nothing outlived
    the Pocket's power. Each game's C: drive is now its save file,
    Saves/ngage/plasticbugs.ngage/<game>.sav on the card (1 MB). The core
    writes it a couple of seconds after the game saves, and when the
    Pocket's menu opens with a save still waiting. A game's first start on
    this release formats its new drive, as a new phone would, so that start
    is slower. Later starts skip that, and are quicker than on 1.1.0, which
    formatted the drive every time.
  • Add N-Gage games.html makes the same .img files as mkdrive.py,
    byte for byte, in the browser. It takes any number of game zips or
    unzipped game folders at once, checks SYM.ROM and saves it as
    sym.rom, and never overwrites a file already on the card.
  • Screen Effect. The Pocket allows 20 menu entries and data slots
    together, and the save slot is a new data slot. Scanlines (25, 50, 75%)
    and Shadow Mask (1x, 2x, 3x) are now options of one list, so the two
    can no longer be on at once.
  • mkdrive.py takes a zip of the game's folder, and a zip made on a
    Mac, as well as a zip of the card's contents. Snakes no longer needs
    --app.

What to expect

  • This build was tried on a Pocket before release: its tester
    reported that save games work. Which games, and whether the Analogizer
    was used, was not said; 1.1.0's Analogizer output is unchanged.
  • Seen on a Pocket: with 1.0.0, Virtua Cop, SSX: Out of Bounds and
    Puzzle Bobble VS play. With 0.3.1-alpha's build, The Elder Scrolls
    Travels: Shadowkey and The Sims Bustin' Out play, and Call of Duty
    plays slowly; with 0.3.0-alpha's, Pocket Kingdom plays well. With
    0.2.0-alpha's, Atari Masterpieces Vol. 1 and 2, Rayman 3 and The Roots
    play well. On the builds before it, Colin McRae Rally 2005 plays
    perfectly, Tony Hawk's Pro Skater and Ghost Recon play well, and
    Requiem of Hell starts after a long pause. Sonic N played on
    0.1.0-alpha. The games not named for 1.0.0 have not been reported on
    it or on this build yet.
  • The on-screen keypad has been checked in simulation (every key
    presses its own, and nothing else reaches the game), and has not been
    reported on from a Pocket.
  • Tested in the reference emulator only: of 54 games, 46 run for
    45 s past the boot logos with a picture and sound, with A and X pressed
    a few times from 30 s. Puzzle Bobble VS and Pandemonium reach their
    menus too and start their sound later.
  • Not yet compared with the phone. On the alphas, 3D games ran below
    the phone's frame rate; the heaviest may still.
  • Sound lags the picture by 32–64 ms.
  • Games take some 0.3 s longer to start: the phone's connection
    settings are written at boot.

Known problems

  • Reported from a Pocket with 0.3.0-alpha, and not reported on this
    build: Puzzle Bobble VS has no sound, though the game itself has sound.
  • Reported from a Pocket with 0.2.0-alpha, and not yet tried on this
    build, which is faster:
    • X-Men Legends II returns to the N-Gage logo partway through its
      attract mode. It needs a faster CPU: in the reference emulator it
      plays at 45 MIPS, and at 0.2.0-alpha's speed it starved its own view
      events until the phone's view server gave up on it.
    • Puyo Pop has no music in the game; its attract mode and intro have
      sound. It fell behind its music stream at 0.2.0-alpha's speed and
      dropped it for good.
  • Copy protection that checks the memory card the game was installed on
    stops Asphalt Urban GT 2, Warhammer 40,000: Glory in Death and One:
    the card here is an image, with nothing behind it to identify.
  • In the reference emulator, not yet tried on a Pocket: Civilization and
    Splinter Cell: Chaos Theory stop during startup, and the Payload trial
    does not get past its first screens.
  • The game keeps running behind the Pocket's menu (no pause).
  • No sleep or link port.
  • Key clicks and the phone's tone player are silent. Game music and effects
    play.
  • Bluetooth multiplayer (Snakes and others) has no radio and cannot start.

This build

file md5
Cores/plasticbugs.ngage/bitstream.rbf_r 0c74766f7471e7649a1fbd905d2cf75f
Assets/ngage/common/ngvm.bin 86c89494eae24bf2d0c5932e90dadc51

CPU at 80 MHz. docs/bringup.md in the source says what each screen
should look like and when, and what to report if it does not.

N-Gage for Analogue Pocket v1.1.0

Choose a tag to compare

@plasticbugs plasticbugs released this 24 Oct 02:08

N-Gage for Analogue Pocket — 1.1.0

A feature release for the Analogizer, with one game fixed:

  • TATE sends the CRT the picture turned a quarter turn, for a tube
    stood on its side;
  • the Analogizer's picture is now centred on a CRT, with nothing lost
    at the bottom;
  • Rifts: Promise of Power no longer stops on a black screen after its
    intro cutscenes.

The core boots the Nokia N-Gage's own firmware on the Pocket and runs
games.

This core does not rebuild the phone's board. It runs NGVM, a small
machine with just enough of an ARM phone for the Symbian user side of your
own phone's firmware to run unchanged. The CPU, an ARMv4T, is gateware; a
small kernel (ngvm.bin) stands in for the phone's.

No firmware or games are included. You need your own N-Gage's firmware
dump and your own games.

Install

  1. Unzip onto the SD card root, keeping the folders.

  2. Into Assets/ngage/common/, next to ngvm.bin, put:

    • sym.rom: the N-Gage's firmware (the "BIOS"), about 18 MB. Dump it
      from your own phone. A compatible one is bios/Nokia/N-Gage/SYM.ROM
      in the retrobios repository on
      GitHub: the firmware this core was tested on, 18,612,224 bytes, md5
      64a95a4a884cf4cc15a566b856603193. Rename it to sym.rom, in lower
      case;

    • one .img per game, built from the game's files with the builder in
      this zip (Python 3 only):

      python3 mkdrive.py --from vcop.zip --out vcop.img

    The game list (Assets/ngage/plasticbugs.ngage/*.json) names the .img
    each game expects. Add a JSON there for any other game.

  3. Loading takes a while: up to about 50 MB go through the Pocket's loader,
    and the screen stays black until it is done. The phone then boots as it
    would, Nokia logo first.

From 1.0.0 or any alpha, copy the whole zip over: both the bitstream
and ngvm.bin have changed. Your sym.rom and .img files are not in
it, and your menu settings are kept.

Rebuild your .img files with this zip's mkdrive.py if you made them
for 0.1.0-alpha and the game is larger than 24 MB, or is Tomb Raider, Tony
Hawk's Pro Skater or Pandemonium.

Controls

Pocket phone
d-pad arrows
A / B 5 / 7
X OK
Y 9
L / R the soft keys
Select #
Start OK
Select + R the on-screen keypad, and put it away

The core's menu has a slider for each of A, B, X, Y, L and R: at 0 to 9
the button is that digit key of the phone, at 10 it is as in the table.

The on-screen keypad is for every key the buttons do not reach.
Press Select and R together and the phone's keypad comes up over the
bottom of the picture: the soft keys, C, 0 to 9, * and #. The d-pad moves
the highlight, A or B presses the key for as long as you hold it, and Y
moves the keypad to the top of the screen and back. Select and R together
put it away. While it is up, the game sees only the keys it presses.

New since 1.0.0

  • TATE on the Analogizer. The N-Gage's screen is taller than it is
    wide, so on a CRT stood on its side the picture can fill the tube's
    height. The "Analogizer" menu has four more options:

    • "On, TATE CW" for a tube turned clockwise (its top to the right);
    • "On, TATE CCW" for one turned anticlockwise;
    • each of those again with "Pocket off".

    The CRT gets one line per column of the picture, 176 lines of 208
    dots, at 15.71 kHz and 59.95 Hz. The Pocket's own screen stays
    upright. The on-screen keypad turns with the picture.

  • The Analogizer's picture is centred on a CRT. On 1.0.0 vertical
    sync came 3 lines after the picture, so a CRT lost the picture's
    bottom lines in its overscan, and V Position could move it only 2
    lines. The picture now sits 13 lines higher, its middle where an NES's
    is, and V Position moves it from 16 lines up to 12 down.

  • Rifts: Promise of Power stopped on a black screen at the end of its
    story cutscenes. The game reads one row above a bitmap of its own,
    where the phone would have had other bitmaps; the kernel now keeps a
    blank page there.

What to expect

  • This build was tried on a Pocket before release and reported as
    great by its tester, who uses an Analogizer and a CRT.
  • Seen on a Pocket: with 1.0.0, Virtua Cop, SSX: Out of Bounds and
    Puzzle Bobble VS play. With 0.3.1-alpha's build, The Elder Scrolls
    Travels: Shadowkey and The Sims Bustin' Out play, and Call of Duty
    plays slowly; with 0.3.0-alpha's, Pocket Kingdom plays well. With
    0.2.0-alpha's, Atari Masterpieces Vol. 1 and 2, Rayman 3 and The Roots
    play well. On the builds before it, Colin McRae Rally 2005 plays
    perfectly, Tony Hawk's Pro Skater and Ghost Recon play well, and
    Requiem of Hell starts after a long pause. Sonic N played on
    0.1.0-alpha. The games not named for 1.0.0 have not been reported on
    it or on this build yet.
  • The on-screen keypad has been checked in simulation (every key
    presses its own, and nothing else reaches the game), and has not been
    reported on from a Pocket.
  • Tested in the reference emulator only: of 54 games, 46 run for
    45 s past the boot logos with a picture and sound, with A and X pressed
    a few times from 30 s. Puzzle Bobble VS and Pandemonium reach their
    menus too and start their sound later.
  • Not yet compared with the phone. On the alphas, 3D games ran below
    the phone's frame rate; the heaviest may still.
  • Sound lags the picture by 32–64 ms.
  • Games take some 0.3 s longer to start: the phone's connection
    settings are written at boot.

Known problems

  • Reported from a Pocket with 0.3.0-alpha, and not reported on this
    build: Puzzle Bobble VS has no sound, though the game itself has sound.
  • Reported from a Pocket with 0.2.0-alpha, and not yet tried on this
    build, which is faster:
    • X-Men Legends II returns to the N-Gage logo partway through its
      attract mode. It needs a faster CPU: in the reference emulator it
      plays at 45 MIPS, and at 0.2.0-alpha's speed it starved its own view
      events until the phone's view server gave up on it.
    • Puyo Pop has no music in the game; its attract mode and intro have
      sound. It fell behind its music stream at 0.2.0-alpha's speed and
      dropped it for good.
  • Copy protection that checks the memory card the game was installed on
    stops Asphalt Urban GT 2, Warhammer 40,000: Glory in Death and One:
    the card here is an image, with nothing behind it to identify.
  • In the reference emulator, not yet tried on a Pocket: Civilization and
    Splinter Cell: Chaos Theory stop during startup, and the Payload trial
    does not get past its first screens.
  • The game keeps running behind the Pocket's menu (no pause).
  • Saves last until the Pocket is switched off: nothing is written back to
    the SD card. No sleep or link port.
  • Key clicks and the phone's tone player are silent. Game music and effects
    play.
  • Bluetooth multiplayer (Snakes and others) has no radio and cannot start.

This build

file md5
Cores/plasticbugs.ngage/bitstream.rbf_r b7b65bb3d179257456d0910545397c5a
Assets/ngage/common/ngvm.bin 9e7b7a4eda38f57a9d22c299288391cf

CPU at 80 MHz. docs/bringup.md in the source says what each screen
should look like and when, and what to report if it does not.

N-Gage for Analogue Pocket v1.0.0

Choose a tag to compare

@plasticbugs plasticbugs released this 23 Oct 20:09

N-Gage for Analogue Pocket — 1.0.0

The first full release. It boots the Nokia N-Gage's own firmware on the
Pocket and runs games, the 3D ones about 1.7 times as smoothly as the
alphas did.

This core does not rebuild the phone's board. It runs NGVM, a small
machine with just enough of an ARM phone for the Symbian user side of your
own phone's firmware to run unchanged. The CPU, an ARMv4T, is gateware; a
small kernel (ngvm.bin) stands in for the phone's.

No firmware or games are included. You need your own N-Gage's firmware
dump and your own games.

Install

  1. Unzip onto the SD card root, keeping the folders.

  2. Into Assets/ngage/common/, next to ngvm.bin, put:

    • sym.rom: the N-Gage's firmware (the "BIOS"), about 18 MB. Dump it
      from your own phone. A compatible one is bios/Nokia/N-Gage/SYM.ROM
      in the retrobios repository on
      GitHub: the firmware this core was tested on, 18,612,224 bytes, md5
      64a95a4a884cf4cc15a566b856603193. Rename it to sym.rom, in lower
      case;

    • one .img per game, built from the game's files with the builder in
      this zip (Python 3 only):

      python3 mkdrive.py --from vcop.zip --out vcop.img

    The game list (Assets/ngage/plasticbugs.ngage/*.json) names the .img
    each game expects. Add a JSON there for any other game.

  3. Loading takes a while: up to about 50 MB go through the Pocket's loader,
    and the screen stays black until it is done. The phone then boots as it
    would, Nokia logo first.

From any alpha, copy the whole zip over: both the bitstream and
ngvm.bin have changed. Your sym.rom and .img files are not in it.

Rebuild your .img files with this zip's mkdrive.py if you made them
for 0.1.0-alpha and the game is larger than 24 MB, or is Tomb Raider, Tony
Hawk's Pro Skater or Pandemonium.

Controls

Pocket phone
d-pad arrows
A / B 5 / 7
X OK
Y 9
L / R the soft keys
Select #
Start OK
Select + R the on-screen keypad, and put it away

The core's menu has a slider for each of A, B, X, Y, L and R: at 0 to 9
the button is that digit key of the phone, at 10 it is as in the table.

The on-screen keypad is for every key the buttons do not reach.
Press Select and R together and the phone's keypad comes up over the
bottom of the picture: the soft keys, C, 0 to 9, * and #. The d-pad moves
the highlight, A or B presses the key for as long as you hold it, and Y
moves the keypad to the top of the screen and back. Select and R together
put it away. While it is up, the game sees only the keys it presses.

New since 0.3.1-alpha

  • Faster, most of all in 3D. In a simulation of the Pocket's hardware,
    Virtua Cop in play draws about 1.7 times as many screens a second as
    with 0.3.1-alpha (12.5 against 7.5). It runs 43% more instructions a
    second, and its first level loads well before 0.3.1-alpha's has. That
    was measured on a build just before this one; over the game's first
    25 s, this one draws 6% more screens again. What changed:
    • the CPU runs at 80 MHz, on a clock of its own (73.85 MHz before);
    • the instruction and data caches are 64 KB each (16 KB before), and a
      store that misses no longer waits for its line;
    • branch prediction has twice the entries and predicts returns made by
      a load (POP with pc), and a multiply holds the pipeline a cycle less;
    • the memory controller sends a burst's writes one a clock, starts the
      next burst as soon as the last one's data is in, and puts the CPU's
      requests on the bus sooner;
    • the kernel's scheduler and its most frequent calls take less time.
  • The on-screen keypad (above), so that games can be given numbers
    and the keys the buttons do not have.

What to expect

  • Seen on a Pocket: with this build, Virtua Cop, SSX: Out of Bounds
    and Puzzle Bobble VS play. With 0.3.1-alpha's build, The Elder Scrolls
    Travels: Shadowkey and The Sims Bustin' Out play, and Call of Duty
    plays slowly; with 0.3.0-alpha's, Pocket Kingdom plays well. With
    0.2.0-alpha's, Atari Masterpieces Vol. 1 and 2, Rayman 3 and The Roots
    play well. On the builds before it, Colin McRae Rally 2005 plays
    perfectly, Tony Hawk's Pro Skater and Ghost Recon play well, and
    Requiem of Hell starts after a long pause. Sonic N played on
    0.1.0-alpha. The games not named for this build have not been reported
    on it yet.
  • The on-screen keypad has been checked in simulation (every key
    presses its own, and nothing else reaches the game), not yet on a
    Pocket.
  • Tested in the reference emulator only: of 54 games, 46 run for
    45 s past the boot logos with a picture and sound, with A and X pressed
    a few times from 30 s. Puzzle Bobble VS and Pandemonium reach their
    menus too and start their sound later.
  • Not yet compared with the phone. On the alphas, 3D games ran below
    the phone's frame rate; the heaviest may still.
  • Sound lags the picture by 32–64 ms.
  • Games take some 0.3 s longer to start: the phone's connection
    settings are written at boot.

Known problems

  • Reported from a Pocket with 0.3.0-alpha, and not reported on this
    build: Puzzle Bobble VS has no sound, though the game itself has sound.
  • Reported from a Pocket with 0.2.0-alpha, and not yet tried on this
    build, which is faster:
    • X-Men Legends II returns to the N-Gage logo partway through its
      attract mode. It needs a faster CPU: in the reference emulator it
      plays at 45 MIPS, and at 0.2.0-alpha's speed it starved its own view
      events until the phone's view server gave up on it.
    • Puyo Pop has no music in the game; its attract mode and intro have
      sound. It fell behind its music stream at 0.2.0-alpha's speed and
      dropped it for good.
  • Copy protection that checks the memory card the game was installed on
    stops Asphalt Urban GT 2, Warhammer 40,000: Glory in Death and One:
    the card here is an image, with nothing behind it to identify.
  • In the reference emulator, not yet tried on a Pocket: Civilization and
    Splinter Cell: Chaos Theory stop during startup, and the Payload trial
    does not get past its first screens.
  • The game keeps running behind the Pocket's menu (no pause).
  • Saves last until the Pocket is switched off: nothing is written back to
    the SD card. No sleep or link port.
  • Key clicks and the phone's tone player are silent. Game music and effects
    play.
  • Bluetooth multiplayer (Snakes and others) has no radio and cannot start.
  • The Analogizer adapter is supported but has not been tried on one.

This build

file md5
Cores/plasticbugs.ngage/bitstream.rbf_r 0c44e9e693b3c62dfbccbd30da78328f
Assets/ngage/common/ngvm.bin 4ef9e13431949931c2af713441108b44

CPU at 80 MHz. docs/bringup.md in the source says what each screen
should look like and when, and what to report if it does not.

N-Gage for Analogue Pocket v0.3.1-alpha

Pre-release

Choose a tag to compare

@plasticbugs plasticbugs released this 21 Oct 23:28

N-Gage for Analogue Pocket — alpha

An early test release. It boots the Nokia N-Gage's own firmware on the
Pocket and runs games, but slower than the phone, and much of it is
untested on hardware.

This core does not rebuild the phone's board. It runs NGVM, a small
machine with just enough of an ARM phone for the Symbian user side of your
own phone's firmware to run unchanged. The CPU, an ARMv4T, is gateware; a
small kernel (ngvm.bin) stands in for the phone's.

No firmware or games are included. You need your own N-Gage's firmware
dump and your own games.

Install

  1. Unzip onto the SD card root, keeping the folders.

  2. Into Assets/ngage/common/, next to ngvm.bin, put:

    • sym.rom: the N-Gage's firmware (the "BIOS"), about 18 MB. Dump it
      from your own phone. A compatible one is bios/Nokia/N-Gage/SYM.ROM
      in the retrobios repository on
      GitHub: the firmware this core was tested on, 18,612,224 bytes, md5
      64a95a4a884cf4cc15a566b856603193. Rename it to sym.rom, in lower
      case;

    • one .img per game, built from the game's files with the builder in
      this zip (Python 3 only):

      python3 mkdrive.py --from vcop.zip --out vcop.img

    The game list (Assets/ngage/plasticbugs.ngage/*.json) names the .img
    each game expects. Add a JSON there for any other game.

  3. Loading takes a while: up to about 50 MB go through the Pocket's loader,
    and the screen stays black until it is done. The phone then boots as it
    would, Nokia logo first.

From 0.3.0-alpha or 0.2.0-alpha, only ngvm.bin has changed: the
bitstream is the same. Copying the whole zip over is fine too; your
sym.rom and .img files are not in it.

Rebuild your .img files with this zip's mkdrive.py if you made them
for 0.1.0-alpha and the game is larger than 24 MB, or is Tomb Raider, Tony
Hawk's Pro Skater or Pandemonium.

Controls

Pocket phone
d-pad arrows
A / B 5 / 7
X OK
Y 9
L / R the soft keys
Select #
Start OK

The core's menu has a slider for each of A, B, X, Y, L and R: at 0 to 9
the button is that digit key of the phone, at 10 it is as in the table.

New since 0.3.0-alpha

The phone's software side only; the gateware is 0.2.0-alpha's.

  • The Elder Scrolls Travels: Shadowkey plays. After its Nokia
    copyright screen it used to return to the N-Gage logo: it times its
    frames by the milliseconds between two readings of the clock, and read
    to the microsecond, two readings could differ by less than one, so it
    divided by zero. The clock a game reads now moves once a tick (1/64 s),
    as on the phone.
  • Call of Duty uses the same timing and could crash the same way. It
    did in a simulation of the core, though not on a Pocket.

New in 0.3.0-alpha

  • The Sims Bustin' Out gets past its loading screen and plays. It
    saves from near the top of its stack and copies past it; a phone has
    memory there, and now so does this one.
  • Call of Duty plays, slowly. It needed three things a phone has: a
    message server that stays up, a modem record in the phone's connection
    settings, and an identity for the phone and its SIM.
  • Pocket Kingdom: Own the World plays. It asks for the phone's and
    the SIM's identity, and waited for ever for an answer.
  • The phone has a made-up identity: IMEI 001010124628312 and IMSI
    001010123456789, from the number ranges kept for test equipment, so
    they belong to no real phone or SIM. Games that read them get these.
    They cannot stand in for a particular phone: a game tied to the phone it
    was installed on will not accept them.
  • The Elder Scrolls Travels: Shadowkey got past the N-Gage logo to
    its own Nokia copyright screen (and stopped there; fixed above).
  • Asphalt Urban GT 2 gets further: it decrypts its own code, which used
    to fail. It then stops at its copy protection (below).

What to expect

  • Seen on a Pocket: with this build, The Elder Scrolls Travels:
    Shadowkey and The Sims Bustin' Out boot and play, and Call of Duty
    plays slowly. With 0.3.0-alpha's build, Pocket Kingdom plays well.
    With 0.2.0-alpha's build (the later ones change it only for the games
    above), Atari Masterpieces Vol. 1 and 2, Rayman 3 and The Roots play
    well; on the builds before it, Colin McRae Rally 2005 plays perfectly,
    Tony Hawk's Pro Skater and Ghost Recon play well, and Requiem of Hell
    starts after a long pause. Sonic N played on 0.1.0-alpha.
  • Tested in the reference emulator only: of 54 games, 46 run for
    45 s past the boot logos with a picture and sound (46 with 0.3.0-alpha,
    42 with 0.2.0-alpha), with A and X pressed a few times from 30 s.
    Puzzle Bobble VS and Pandemonium reach their menus too and start their
    sound later.
  • The Sims Bustin' Out may run a little slower than with 0.3.0-alpha:
    it paces itself by the clock above, and in the reference emulator it
    drew 11% fewer screens in its first 45 s. Not measured on a Pocket.
  • Slower than the phone. 3D games run at a lower frame rate than on
    the phone, and Puyo Pop too slowly to keep its music (below).
  • Sound lags the picture by 32–64 ms.
  • Games take some 0.3 s longer to start: the phone's connection
    settings are written at boot.

Known problems

  • Reported from a Pocket with 0.3.0-alpha, and unchanged here: Puzzle
    Bobble VS has no sound, though the game itself has sound.
  • Reported from a Pocket with 0.2.0-alpha, and unchanged here:
    • X-Men Legends II returns to the N-Gage logo partway through its
      attract mode. It needs a faster CPU: in the reference emulator it
      plays at 45 MIPS, and at this core's speed it starves its own view
      events until the phone's view server gives up on it.
    • Puyo Pop has no music in the game; its attract mode and intro have
      sound. It falls behind its music stream at this CPU's speed and
      drops it for good.
  • Copy protection that checks the memory card the game was installed on
    stops Asphalt Urban GT 2, Warhammer 40,000: Glory in Death and One:
    the card here is an image, with nothing behind it to identify.
  • In the reference emulator, not yet tried on a Pocket: Civilization and
    Splinter Cell: Chaos Theory stop during startup, and the Payload trial
    does not get past its first screens.
  • The game keeps running behind the Pocket's menu (no pause).
  • Saves last until the Pocket is switched off: nothing is written back to
    the SD card. No sleep or link port.
  • Key clicks and the phone's tone player are silent. Game music and effects
    play.
  • Bluetooth multiplayer (Snakes and others) has no radio and cannot start.
  • The Analogizer adapter is supported but has not been tried on one.

This build

file md5
Cores/plasticbugs.ngage/bitstream.rbf_r 3abc5ef3b671449903455e69d1784251
Assets/ngage/common/ngvm.bin 62f62252cdcf5a6cf0ec632009744e74

CPU at 73.85 MHz. docs/bringup.md in the source says what each screen
should look like and when, and what to report if it does not.

N-Gage for Analogue Pocket v0.3.0-alpha

Pre-release

Choose a tag to compare

@plasticbugs plasticbugs released this 21 Oct 03:40

N-Gage for Analogue Pocket — alpha

An early test release. It boots the Nokia N-Gage's own firmware on the
Pocket and runs games, but slower than the phone, and much of it is
untested on hardware.

This core does not rebuild the phone's board. It runs NGVM, a small
machine with just enough of an ARM phone for the Symbian user side of your
own phone's firmware to run unchanged. The CPU, an ARMv4T, is gateware; a
small kernel (ngvm.bin) stands in for the phone's.

No firmware or games are included. You need your own N-Gage's firmware
dump and your own games.

Install

  1. Unzip onto the SD card root, keeping the folders.

  2. Into Assets/ngage/common/, next to ngvm.bin, put:

    • sym.rom: the N-Gage's firmware (the "BIOS"), about 18 MB. Dump it
      from your own phone. A compatible one is bios/Nokia/N-Gage/SYM.ROM
      in the retrobios repository on
      GitHub: the firmware this core was tested on, 18,612,224 bytes, md5
      64a95a4a884cf4cc15a566b856603193. Rename it to sym.rom, in lower
      case;

    • one .img per game, built from the game's files with the builder in
      this zip (Python 3 only):

      python3 mkdrive.py --from vcop.zip --out vcop.img

    The game list (Assets/ngage/plasticbugs.ngage/*.json) names the .img
    each game expects. Add a JSON there for any other game.

  3. Loading takes a while: up to about 50 MB go through the Pocket's loader,
    and the screen stays black until it is done. The phone then boots as it
    would, Nokia logo first.

From 0.2.0-alpha, only ngvm.bin has changed: the bitstream is the
same. Copying the whole zip over is fine too; your sym.rom and .img
files are not in it.

Rebuild your .img files with this zip's mkdrive.py if you made them
for 0.1.0-alpha and the game is larger than 24 MB, or is Tomb Raider, Tony
Hawk's Pro Skater or Pandemonium.

Controls

Pocket phone
d-pad arrows
A / B 5 / 7
X OK
Y 9
L / R the soft keys
Select #
Start OK

The core's menu has a slider for each of A, B, X, Y, L and R: at 0 to 9
the button is that digit key of the phone, at 10 it is as in the table.

New since 0.2.0-alpha

The phone's software side only; the gateware is 0.2.0-alpha's.

  • The Sims Bustin' Out gets past its loading screen and plays. It
    saves from near the top of its stack and copies past it; a phone has
    memory there, and now so does this one.
  • Call of Duty plays, slowly. It needed three things a phone has: a
    message server that stays up, a modem record in the phone's connection
    settings, and an identity for the phone and its SIM.
  • Pocket Kingdom: Own the World plays. It asks for the phone's and
    the SIM's identity, and waited for ever for an answer.
  • The phone has a made-up identity: IMEI 001010124628312 and IMSI
    001010123456789, from the number ranges kept for test equipment, so
    they belong to no real phone or SIM. Games that read them get these.
    They cannot stand in for a particular phone: a game tied to the phone it
    was installed on will not accept them.
  • The Elder Scrolls Travels: Shadowkey now gets past the N-Gage logo
    to its own Nokia copyright screen (it then stops; below).
  • Asphalt Urban GT 2 gets further: it decrypts its own code, which used
    to fail. It then stops at its copy protection (below).

What to expect

  • Seen on a Pocket: with this build, The Sims Bustin' Out and Pocket
    Kingdom play well, and Call of Duty plays slowly. With 0.2.0-alpha's
    build, which this one changes only for the games above: Atari
    Masterpieces Vol. 1 and 2, Rayman 3 and The Roots play well; on the
    builds before it, Colin McRae Rally 2005 plays perfectly, Tony Hawk's
    Pro Skater and Ghost Recon play well, and Requiem of Hell starts after
    a long pause. Sonic N played on 0.1.0-alpha.
  • Tested in the reference emulator only: of 54 games, 46 run for
    45 s past the boot logos with a picture and sound (42 with 0.2.0-alpha),
    with A and X pressed a few times from 30 s. Puzzle Bobble VS and
    Pandemonium reach their menus too and start their sound later.
  • Slower than the phone. 3D games run at a lower frame rate than on
    the phone, and Puyo Pop too slowly to keep its music (below).
  • Sound lags the picture by 32–64 ms.
  • Games take some 0.3 s longer to start: the phone's connection
    settings are written at boot.

Known problems

  • Reported from a Pocket with this build:
    • The Elder Scrolls Travels: Shadowkey returns to the N-Gage logo after
      its Nokia copyright screen.
    • Puzzle Bobble VS: sound is still missing, though the game itself has
      sound.
  • Reported from a Pocket with 0.2.0-alpha, and unchanged here:
    • X-Men Legends II returns to the N-Gage logo partway through its
      attract mode. It needs a faster CPU: in the reference emulator it
      plays at 45 MIPS, and at this core's speed it starves its own view
      events until the phone's view server gives up on it.
    • Puyo Pop has no music in the game; its attract mode and intro have
      sound. It falls behind its music stream at this CPU's speed and
      drops it for good.
  • Copy protection that checks the memory card the game was installed on
    stops Asphalt Urban GT 2, Warhammer 40,000: Glory in Death and One:
    the card here is an image, with nothing behind it to identify.
  • In the reference emulator, not yet tried on a Pocket: Civilization and
    Splinter Cell: Chaos Theory stop during startup, and the Payload trial
    does not get past its first screens.
  • The game keeps running behind the Pocket's menu (no pause).
  • Saves last until the Pocket is switched off: nothing is written back to
    the SD card. No sleep or link port.
  • Key clicks and the phone's tone player are silent. Game music and effects
    play.
  • Bluetooth multiplayer (Snakes and others) has no radio and cannot start.
  • The Analogizer adapter is supported but has not been tried on one.

This build

file md5
Cores/plasticbugs.ngage/bitstream.rbf_r 3abc5ef3b671449903455e69d1784251
Assets/ngage/common/ngvm.bin 273a9af95aa31434479aadba9b8d106e

CPU at 73.85 MHz. docs/bringup.md in the source says what each screen
should look like and when, and what to report if it does not.

N-Gage for Analogue Pocket v0.2.0-alpha

Pre-release

Choose a tag to compare

@plasticbugs plasticbugs released this 21 Oct 01:46

N-Gage for Analogue Pocket — alpha

An early test release. It boots the Nokia N-Gage's own firmware on the
Pocket and runs games, but slower than the phone, and much of it is
untested on hardware.

This core does not rebuild the phone's board. It runs NGVM, a small
machine with just enough of an ARM phone for the Symbian user side of your
own phone's firmware to run unchanged. The CPU, an ARMv4T, is gateware; a
small kernel (ngvm.bin) stands in for the phone's.

No firmware or games are included. You need your own N-Gage's firmware
dump and your own games.

Install

  1. Unzip onto the SD card root, keeping the folders.

  2. Into Assets/ngage/common/, next to ngvm.bin, put:

    • sym.rom: the N-Gage's firmware (the "BIOS"), about 18 MB. Dump it
      from your own phone. A compatible one is bios/Nokia/N-Gage/SYM.ROM
      in the retrobios repository on
      GitHub: the firmware this core was tested on, 18,612,224 bytes, md5
      64a95a4a884cf4cc15a566b856603193. Rename it to sym.rom, in lower
      case;

    • one .img per game, built from the game's files with the builder in
      this zip (Python 3 only):

      python3 mkdrive.py --from vcop.zip --out vcop.img

    The game list (Assets/ngage/plasticbugs.ngage/*.json) names the .img
    each game expects. Add a JSON there for any other game.

  3. Loading takes a while: up to about 50 MB go through the Pocket's loader,
    and the screen stays black until it is done. The phone then boots as it
    would, Nokia logo first.

Rebuild your .img files with this zip's mkdrive.py if you made them
for 0.1.0-alpha and the game is larger than 24 MB, or is Tomb Raider, Tony
Hawk's Pro Skater or Pandemonium.

Controls

Pocket phone
d-pad arrows
A / B 5 / 7
X OK
Y 9
L / R the soft keys
Select #
Start OK

The core's menu has a slider for each of A, B, X, Y, L and R: at 0 to 9
the button is that digit key of the phone, at 10 it is as in the table.

New since 0.1.0-alpha

  • Faster. A cache miss now restarts the CPU on the word it missed, and
    a dirty line is written back behind the fill. SDRAM reads at a word a
    clock, which crashed 0.1.0-alpha's games, now capture at the right
    clock and are the default. In simulation of the Pocket's hardware,
    Sonic N's first 40 s run 1,347 million instructions against 1,083
    million in 0.1.0-alpha (+24%), and show 578 frames against 337.
  • Games up to 32 MB (the whole drive the core has), such as Worms
    World Party.
  • Sound in Puzzle Bobble VS, which a key click used to silence for good,
    in Puyo Pop's attract mode and intro, and in Tony Hawk's Pro Skater and
    Pandemonium, which never got their audio stream.
    Tomb Raider's menus are silent; it speaks and plays its effects in the
    game.
  • More games start (seen in the reference emulator): System Rush and
    Xanadu Next, which load a program from the card or ask the phone's state;
    Requiem of Hell, whose mixer runs on an exception; Colin McRae Rally 2005,
    Tomb Raider, Tony Hawk's Pro Skater and Pandemonium, which keep their
    pointers in 24 or 25 bits; Atari Masterpieces Vol. 2 and Rifts: Promise
    of Power, which ask whether the keypad is locked.
  • Atari Masterpieces Vol. 1 and Rayman 3 play: a game's shortest
    timer waits now last at least 1 ms, as the phone's lasted until its next
    tick. Waits that ended at once kept Atari on the N-Gage logo, and threw
    Rayman back to it when a game was started.
  • Ghost Recon no longer locks up when a new profile is chosen: the
    phone's Bluetooth server now runs, as on a phone. There is still no
    radio behind it.
  • Any digit key on any button, from the menu.

What to expect

  • Seen on a Pocket: with this build, Atari Masterpieces Vol. 1 and 2,
    Rayman 3 and The Roots play well, with no regression seen elsewhere.
    On the builds just before it: Colin McRae Rally 2005 plays perfectly,
    Tony Hawk's Pro Skater and Ghost Recon play well, and Requiem of Hell
    starts after a long pause. Sonic N played on 0.1.0-alpha.
  • Tested in the reference emulator only: of 54 games, 42 run for
    45 s past the boot logos with a picture and sound, with A and X pressed
    a few times from 30 s. Puzzle Bobble VS and Pandemonium reach their
    menus too and start their sound later.
  • Slower than the phone. 3D games run at a lower frame rate than on
    the phone, and Puyo Pop too slowly to keep its music (below).
  • Sound lags the picture by 32–64 ms.

Known problems

  • Reported from a Pocket with this build:
    • Asphalt Urban GT 2 freezes at startup.
    • The Elder Scrolls Travels: Shadowkey stays on the N-Gage logo.
    • The Sims Bustin' Out stalls on its loading screen (the crowd of
      people).
    • X-Men Legends II returns to the N-Gage logo partway through its
      attract mode.
    • Puyo Pop has no music in the game; its attract mode and intro have
      sound. It falls behind its music stream at this CPU's speed and
      drops it for good.
  • In the reference emulator, not yet tried on a Pocket: Civilization,
    One and Splinter Cell: Chaos Theory stop during startup, and Call of
    Duty, Pocket Kingdom and the Payload trial do not get past their first
    screens.
  • The game keeps running behind the Pocket's menu (no pause).
  • Saves last until the Pocket is switched off: nothing is written back to
    the SD card. No sleep or link port.
  • Key clicks and the phone's tone player are silent. Game music and effects
    play.
  • Bluetooth multiplayer (Snakes and others) has no radio and cannot start.
  • Warhammer 40,000: Glory in Death stops at its own splash screen: its copy
    protection checks the phone it runs on.
  • The Analogizer adapter is supported but has not been tried on one.

This build

file md5
Cores/plasticbugs.ngage/bitstream.rbf_r 3abc5ef3b671449903455e69d1784251
Assets/ngage/common/ngvm.bin d8ff20df4fb8a6afbbf7156c702883b1

CPU at 73.85 MHz. docs/bringup.md in the source says what each screen
should look like and when, and what to report if it does not.

N-Gage for Analogue Pocket v0.1.0-alpha

Pre-release

Choose a tag to compare

@plasticbugs plasticbugs released this 20 Oct 03:00

N-Gage for Analogue Pocket — alpha

An early test release. It boots the Nokia N-Gage's own firmware on the
Pocket and runs games, but slowly, and much of it is untested on hardware.

This core does not rebuild the phone's board. It runs NGVM, a small
machine with just enough of an ARM phone for the Symbian user side of your
own phone's firmware to run unchanged. The CPU, an ARMv4T, is gateware; a
small kernel (ngvm.bin) stands in for the phone's.

No firmware or games are included. You need your own N-Gage's firmware
dump and your own games.

Install

  1. Unzip onto the SD card root, keeping the folders.

  2. Into Assets/ngage/common/, next to ngvm.bin, put:

    • sym.rom: your N-Gage's firmware, dumped from your phone (about 18 MB);

    • one .img per game, built from the game's files with the builder in
      this zip (Python 3 only):

      python3 mkdrive.py --from vcop.zip --out vcop.img

    The game list (Assets/ngage/plasticbugs.ngage/*.json) names the .img
    each game expects. Add a JSON there for any other game.

  3. Loading takes a while: about 35 MB go through the Pocket's loader, and
    the screen stays black until it is done. The phone then boots as it
    would, Nokia logo first.

Controls

Pocket phone
d-pad arrows
A / B 5 / 7
X OK
Y 9
L / R the soft keys
Select #
Start OK

What to expect

  • Seen on a Pocket: Sonic N, from boot into gameplay with sound, on
    the build before this one. This build has run games on the Pocket too.
    What it was made to fix (a picture that combed in motion, late sound)
    is not yet confirmed there.
  • Tested in simulation only: Virtua Cop reaches its title, and in the
    reference emulator six of the seven games tried reach their menus or
    play (Bomberman, Puyo Pop, Puzzle Bobble VS, Snakes, Sonic N, Super
    Monkey Ball, Virtua Cop).
  • Slow. The CPU delivers about 19–25 million instructions a second,
    where the phone managed roughly 45–50. The 3D games run at a lower frame
    rate than on the phone.
  • Sound lags the picture by 32–64 ms.

Known problems

  • Leave Menu → SDRAM fast reads off. It makes the games crash at once.
  • The game keeps running behind the Pocket's menu (no pause).
  • No saving, sleep or link port.
  • Key clicks and the phone's tone player are silent. Game music and effects
    play.
  • Snakes' multiplayer needs Bluetooth and cannot start.
  • The Analogizer adapter is supported but has not been tried on one.

This build

file md5
Cores/plasticbugs.ngage/bitstream.rbf_r 42a6ceb0fc00f8e8a03dc8d806bd09cb
Assets/ngage/common/ngvm.bin c4369fba680bae31d19806a044f4d91c

CPU at 73.85 MHz. docs/bringup.md in the source says what each screen
should look like and when, and what to report if it does not.