Tuesday, 18 March 2014

New Release, (Build 14)

I have upgraded it to Build 14. The changes since the last one are :
  • Added checksums for all known cartridges that are dumped in their current state. If this changes because dump errors turn up, the paddles will work differently.
  • Sea Duel now displays the flag properly (see the 2nd picture from the left - it's meant to be the Stars and Stripes ....). The LCD latency trackers do not change when there are no addressable->output latches in a frame - static displays with only one row/column pair.
  • Sea Duel now plays the tune (albeit it sounds terribly stuttery on Windows XP/Virtualbox, though it seems fine on Mac ?).  Might be a VirtualBox issue.
  • Sea Duel assumed TMS Data Memory was all zeroes on start up, the spec doesn't say this, but it probably is in practice. I suspect this is because they aren't cleared on reset, which isn't quite the same things cleared on power up - you can reset a TMS1100 mid program, but you can't do this with Microvision games.
  • The CPU speed now is correct for some programs (Sea Duel sounded squeaky because its clock is half the speed)
  • The Paddle controls are calibrated for known cartridges, so it is possible to play Baseball which has a way-out range. Other new games (e.g. Connect 4, Super Block Buster) now enable the paddles when loaded.
  • It now starts in run mode. To run in debug mode, prefix the name with an @ (e.g. mvem @sbb.bin)
  • The screen size can be changed by adding wwwxhhh e.g. mvem mind.bin 320x200

Windows and OSX executables are downloadable from the sidebar on the right. The source is in the OSX executable (and is the same for Windows, save for the build process).


  1. Hi Paul. I'm bit confused about TMS1100's PC register(Shift Register). Can you point me some doc about it? I'm trying to understand how it's incremented.

  2. I'm not entirely sure how it is wired, but it is an LFSR http://en.wikipedia.org/wiki/Linear_feedback_shift_register because it requires less circuitry.

  3. Ok, thanks. I'm trying to write an microvision emulator. Are you planning to write your own doc about microvision like you did about RCA Studio 2?

  4. Once you understand the Hughes LCD Driver, then it's just wiring it to an 8021 or a TMS1100.

  5. Fig 19 in patent 4024386 shows the LFSR circuit. Here's the sequence:

    0 1 3 7 15 31 63 62 61 59 55 47 30 60 57 51
    39 14 29 58 53 43 22 44 24 48 33 2 5 11 23 46
    28 56 49 35 6 13 27 54 45 26 52 41 18 36 8 17
    34 4 9 19 38 12 25 50 37 10 21 42 20 40 16 32

  6. Hi!
    I've found a 1-bit error in the Sea Duel rom after comparing the binary data with decap photos. At offset $5F9, change $50 to $70. new crc="77a8f71b".

  7. Any way you can update your dead links? I found your an older version of your Microvision work on another page and have really enjoyed it, but it's an older version that did not include Sea Duel.

    1. Try http://www.studio2.org.uk/studio2/mv/

  8. Thank you very much! It's like Christmas in September!

    I'll make sure I comment and link your project on any thread I see talking about historic emulators.

  9. This comment has been removed by the author.

  10. I took the liberty for modifying the source code you so kindly posted.


    This is an updated build of Paul Robson's Microvision emulator, which came out in 2014. All I have done is add some nicer UX and a lot of artwork sourced from the Internet. The intent was to make playing with the emulator something more appealing that could be integrated with a frontend.

    To run the emulator from a frontend, this is the command line:

    mvem %rom% widthxheightx1

    For example

    mvem "Alien Raiders.bin" 1920x1080x1

    This will launch the specified game at full screen on a 1920x1080 monitor.

    If the last parameter isn't included, the game will launch at 800x600 in a window.

    Many thanks to Paul Robson and the others who did all the hard parts!

    May 6th 2017

    * Allow passing in of screen res and full screen from the command line. Format is xx where fullscreen = 1 for full and 0 for windowed.
    * The Enter/Return key now toggles fullscreen.
    * Emulator now chooses optimal size for playfield plus overlay based on the screen size.
    * Default screen to 800x600 windowed.
    * Add 1 pixel gap between pixels on LCD display.
    * Lighten the LCD pixel color so it is a closer match to actual LCD black.
    * Added overlays for all games. These are based on the American editions of the carts except for Super Blockbuster. Replaced the one by Paul Robson for Pinball.
    * Load snaps of carts and display on the side at full screen height.
    * Overlay key mappings on top of the snaps.
    * Created new snaps for the two homebrew games by Paul Robson.
    * Added linear filtering to textures for smoother images.
    * Slide playfield over so that both always fit.
    * There is now a knob that represents the range of motion for the paddle, rather than just the bar.
    * Made the existing bar-shaped render of knob position have alpha transparency, so it would blend into the overlays.