Major Havoc Level Editor

The Major Havoc Level Editor will allow you to create mazes and play them one at a time in MAME.

The purpose of this Level Editor is twofold. The first goal is to make this tool fancy enough so people can make their own ROM'sets and play them in their game. In the end, I would like to make it so people can share their .mhz files and create different custom maze sets.

Here is what the Level Editor will not yet do...

  • Build entire maze collections and run them as new levels in the existing game of Major Havoc
  • Run without bugs and oddities!

News about the level editor are in the readme below or posted at The CoinOpSpace Major Havoc Forum

Welcome to my little experiment... dreams come slow in life sometime but this is a step in the right direction. My story with Major Havoc began in 1983 at the wonderful arcade called 'Playland' in State College, PA. I remember when the Major Havoc game arrived in it's Atari box and sat in the corner waiting for Gene Steele to unpack it. Alas, he was on task and had it up and running. I was only 13 so I couldn't make it nearly as far into the game as the older kids and it was amazing when someone actually made it to the upper levels (13+).

I was working at a local electronics shop about 2 years later when games such as Major Havoc and were falling out of value and they were typically sitting in backrooms, waiting to be converted. My friend Bryan Roth and myself saved up our money and bought a Major Havoc PCB from M&P Amusements in York, PA. We quickly make a conversion harness and had it up and running in his Star Wars cabinet with a Whirly-Gig from a tempest. Since this was not a conversion board, it was quite difficult to get far into the game. I decided that I would attempt to hack the ROM to give us unlimited lives so we could find the 'Homeworld' that is promised in the game. After some disassembly of the ROM's using a Commodore 64 and a PROMQueen EPROM programmer, I had a nice hex dump of every ROM in the game. I quickly sat down with pen paper and the 6502 opcodes and started decoding from the RESET vector. Remarkably after about 1 month, I had found the lives per game lookup table and modified it to give 0x7F lives per game (127 in decimal) :-). Bryan and I stayed up all night playing beyond level 20 into the random colored mazes. We gave up after level 48 and decided that there must not be a homeworld.

That little drawback didn't seem to stop me for some reason... I continued decoding the ROM's on a 386 PC using Wordstar for the next summer. I even called Atari and spoke to Ed Logg about using Major Havoc as a project in school to show how games are programmed if they would just send me the source code for a demonstration of a compiler... well, he didn't go for it unfortunately, so it was back to Wordstar.

About 5 years later (1993) I had started my own Electronics Repair shop in Laramie, WY and I seemed to be accumulating games in my storage area (It didn't help that I was located next to the local vending company and fixed their games for them). I kept disassembling and documenting the ROM's routine by routine late into the nights. At this point RGVAC was growing fairly quickly and there was a small group of very technical people getting into the 'collecting' hobby. People were just discovering that games such as Major Havoc and I,Robot actually existed and they started being discussed on the internet. I had learned enough about Major Havoc at this point to release 'Return to Vaxxx' on RGVAC around 1995. It had a few new mazes and support for speech but I had done this strictly via hacking the hex in the ROMS, it was pretty messy. Through this time, I eventually found out that Owen Rubin had developed Major Havoc and a friend from RGVAC (Al Kossow) actually knew how to contact Owen. I think at that point Owen must have felt sorry for me spending all this fanatical time on Major Havoc, but he spent time explaining how the code worked and some facts about some of the routines and structures in the code. Eventualy, through some massive help from Owen and Al Kossow, I had a fully dissassembled and compilable version of Major Havoc (with comments even!). I created a compiler that even worked like the original Macro assembler used at Atari.

In 2004, I started making the Level Editor using the .NET Framework 1.0. It has been a project that I worked on during plane trips for the last 5 years. You might say that most of this was developed above 30,000 feet. Around 2005 I spoke to Owen about working on a final version that included a Homeworld but both of our schedules were quite busy.

The Major Havoc Level Editor is a Microsoft Click Once Application (Chrome is the same thing interestingly enough). The advantages are that if there is an update, you will automatically be notified and also be able to seamlessly download the newest version.

To start the install... CLICK HERE!

If you have troubles getting the installer to work please initially download the .NET Framework 4.5

History:

0.2.6.0 - 7/20/20016
  • Migrated to .NET Framework 4.5
  • Fixed bugs relating to placement of objects.
  • Started work on Loading of Production Mazes from Production ROM's
0.2.2.0 - 7/2/2009
  • Added emulator support for De Hand
  • Fixed maze snapping for De Hand from 4 to 64 pixels
0.2.1.0 - 7/1/2009
  • Added emulator support for Trip Pads
  • Added MAME configuration parameter to run MAME in DEBUG mode.
  • Changed default MAME path in configuration to c:/mame/mame.exe
0.2.0.6 - 6/16/2009
  • Added emulator support for Ion Cannons
  • Changed underlying datatype for 'Velocity' to sbyte instead of byte to allow negative values. This will unfortunately cause some problems with loading of previously saved mazes if you had an IonCannon placed within it. If this causes anyone issues, please email me [jess@askey.org] and I can fix the file and send it back too you.
  • Added Drop Down List above PropertyGrid for selecting of Maze Objects by name
  • Fixed some odd splitter behavior between the toolbox and the propertygrid
  • Fixed Dynamic Walls (again!)
  • Fixed misplaced vertical lightning objects between editor and emulation
0.2.0.5 - 6/10/2009
  • Added better exception handling and reporting features
  • Removed dependency of .NET Framework 1.1 Microsoft.DirectX library
0.2.0.4 - 6/7/2009
  • Published into new location at root of mhedit.askey.org
0.2.0.3 - 6/6/2009
  • Added emulation support for Transporters
  • User may now rename maze and collections directly from Tree or PropertyGrid
  • Saving a new maze or collection will default save file name to name of maze or collection.
  • Added emulation support for Maze Hint text shown at top of screen upon entry of maze by Rex.
  • Fixed Dynamic Wall Rendering in MAME....must have broken this recently
0.2.0.2 - 6/2/2009
  • Added emulation hint text to MAME run tooltip, changed icon a bit to better insinuate 'run'
  • Fixed link to homepage in upper right corner of application
  • Removed copyright during attract mode text
  • Added emulation support for Clock
  • Added emulation support for Boots
0.2.0.1 - 6/1/2009
  • Added emulation of Escape Pod
  • All space scenes are now skipped in both Attract mode and gameplay mode. This keeps you from wasting precious rex's in space.
0.2.0.0 - 5/31/2009
  • Turned Mazes back on (accidentially disabled buttons in last release) - Thanks Ataricade!
  • Fixed Issue with only Maze Type A being emulated, you may now emulate all Maze types. There are probably still some oddities in non-Type A mazes due to assumptions in the original code about attract mode always running level 1.
  • Added checking for MAME running with compressed ROM archives rather than folder + files. If the MAME roms folder contains a .zip file that matches the driver being used, the user will be given a warning and the emulation will not continue until MAME is reconfigured to not use compressed ROM's. Thanks Lee Bender!
  • Fixed 'Phantom' perkoid that was always present way up in upper left corner of all mazes due to ROM dumping error.
  • Added emulator rendering for One Way signs
  • Added emulator rendering for Stalactites (Ouch!)
  • Added emulator rendering for Locks & Keys
  • Added Rector exit time property to emulation
  • Lives hardcoded to 5 per game now, independent of DIPS
  • Removed start wave bonus score on Level 1+
  • Associated .mhz and .mhc files with the Level Editor so if you double click on them, they 'might' open directly ;-)
0.1.0.9 - 5/30/2009
  • Added required ROM template files to ClickOnce deployment
0.1.0.8 - 5/28/2009
  • Added emulator rendering for Dynamic Maze Walls
  • Fixed issue where configuration dialog box button was always disabled.
  • Updated copyright
  • Updated ClickOnce bootstrapper to include .NET Framework 3.5 SP1
0.1.0.7 - 5/28/2009
  • Added emulator rendering for Force Fields (Lightning)
  • Added emulator rendering for Maze Arrows
  • Added eumlator rendering for Static Maze Walls
  • Fixed issue where actually playing a game would crash MAME... DOH!
0.1.0.6 - Released 5/27/2009
  • Added Major Havoc Level Editor Text to attract mode screen in emulation along with other informational text
  • Fixed issue where deleting all items from the tree would cause a crash.
  • Added rendering in emulation for Oxoids
  • Corrected screen rendering of objects that have low resolution positions (Oxoids, Boots, Transporters, Doors, Keys, etc)
  • Removed annoying BETA dialog on startup
  • Added version number in Title Block and BETA message
0.1.0.5 - Released 5/26/2009
  • Added ability to 'run' a maze using MAME
  • Only supports Pyroids, Perkoids and Reactor right now
  • MAME must already be installed
  • ROM's are not required for your MAME install, editor will update the 'mhavoc' ROM's directly
  • Added Cannon Movement Editor interface (incomplete)
  • Removed old application animation code
  • Cleaned up some of the unneeded properties in the Toolbox by making them invisible to the user
0.1.0.4 - Released 3/2/2009
  • Fixed issue with ClickOnce URL
  • Updated Homepage URL in .exe
  • Added annoying BETA message dialog. :-)
0.1.0.3 - Released 3/1/2009
  • First BETA release to public
  • Added clickOnce to solution