M.A.X. Port is an SDL library based runtime executable for the 1996 DOS game M.A.X.: Mechanized Assault & Exploration developed and published by Interplay Productions.

The goal of the project is to fix the game breaking defects present in the original game executable and to create a runtime that natively runs on modern operating systems.

M.A.X. Port requires the original game data. The port only provides a modernized executable.

Latest News

  • The original MS-DOS M.A.X. Scenario Editing Process

    Debug builds of M.A.X. incorporated several features that in combination enabled the original developers to create the scenario and campaign missions for the game within the game itself. M.A.X. Port reintegrated all of these features into Debug builds. The video demonstrates how to create a new stand alone mission.


    Used Debug Features

    The first feature is the debug panel within the preferences window. This can be enabled via the settings.ini file’s special [Debug] ini section. The section must be the first in front of the ini file.

    [DEBUG]
    debug=0
    all_visible=0
    disable_fire=0
    quick_build=0
    real_time=0
    

    debug Enable the debug settings within the preferences window.

    Debug Menu

    The menu allows to change the type of players too. A value of 1 means a human player, a value of 2 means computer player a value of 0 means the player is disabled.

    The complete list of possible values is as follows, but some are not meaningful to set within this use case.

      TEAM_TYPE_NONE = 0,
      TEAM_TYPE_PLAYER = 1,
      TEAM_TYPE_COMPUTER = 2,
      TEAM_TYPE_REMOTE = 3,
      TEAM_TYPE_ELIMINATED = 4,
    

    all_visible This is not the same as the in-game cheat [MAXSPY], this setting actually reveals all to every player in-game.

    disable_fire Prevent all unit attacks. Can be toggled in game via the debug menu.

    quick_build Every unit and building costs 1 material to build, therefore 1 turn to build, for every player in-game.

    real_time Switches to real time mode where units have no speed points per turn, instead their speed points determine their travel speed. Can be toggled in game via the debug menu.

    For the scenario editing use case I found the debug, quick_build and real_time parameters very useful while I do not like to use the all_visible parameter. To activate any of these just change their values from 0 to 1.



    The second feature is the quick build menu which allows to deploy or remove any unit that is available in game. Note that this is a debug feature so it is quite buggy and could break if the user wants to do “sophisticated” things. To activate the quick build menu hit ALT + Z or ALT + Y depending on your keyboard locale. To go back to the menu after selecting a unit press ESC. Press ESC a second time to exit the menu. To place a unit left click with the mouse pointer. To remove any unit under the mouse pointer press right click while the quick build mode is active.

    Quick Build Menu



    The third feature is the save file type selector interface which allows to change the normal save file type into any other type.

    Save Type Selector Interface

    To activate the interface press F1 or F2 within the in game File menu. F1 increments the file type by one decimal value, F2 decrements it by one. E.g. if the current menu shows GAME_TYPE_CUSTOM files, pressing F1 switches to GAME_TYPE_TRAINING files.

    The complete list of possible values is as follows, but some of them are not meaningful to set within this use case.

      GAME_TYPE_CUSTOM = 0x0,
      GAME_TYPE_TRAINING = 0x1,
      GAME_TYPE_CAMPAIGN = 0x2,
      GAME_TYPE_HOT_SEAT = 0x3,
      GAME_TYPE_MULTI = 0x4,
      GAME_TYPE_DEMO = 0x5,
      GAME_TYPE_DEBUG = 0x6,
      GAME_TYPE_TEXT = 0x7,
      GAME_TYPE_SCENARIO = 0x8,
      GAME_TYPE_MULTI_PLAYER_SCENARIO = 0x9
    

    The title screen starts an attract demo after 60 seconds of idling. The first few CD-ROM releases, like CD-ICD-082-EU, had only a single dmo map, but later CD-ROM releases, like CD-ICD-082-1, added two additional maps for variety. If you want to create such attract demos use the GAME_TYPE_DEMO save file type.

    The GAME_TYPE_TEXT format saved games in human readable text format for easy editing, but as the original developers abandoned the format during development now it is not supported anymore. Use ImHex and the M.A.X. save file profile to hack save game files, e.g. to change a unit’s stored raw amterials or hit points or to remove messages from the in game message log.

    The GAME_TYPE_DEBUG format saved games were made during desynchronization issues in network play. They are pretty much useless for this use case.

    To create stand alone missions, use GAME_TYPE_SCENARIO. To create campaign missions use GAME_TYPE_CAMPAIGN.

    Tips & Tricks

    1. Every saved game file, or mission has a decimal mission index that is equal to their save game slot when the mission is exported via the save file type selector interface. E.g. above I used slot 25 which sets the mission index to 25. The Save File Format article describes the unique mission Victory and Loss Conditions. E.g. to create a stand alone mission that is won as soon as Green Team has no Research Centers left, use save slot 18 to “export” the mission, and then rename it to a free file slot, e.g. rename the file to SAVE25.SCE and create a mission briefing for it with a text file called DESCR25.SCE. The mission index will remain to be 18 having unique victory and loss conditions.

    2. It is possible to use the Hot Seat game mode to create missions to make it sure that computers do not do anything while we are editing the map, but then we cannot use any of the cheat codes as the game will punish us direly. Keep in mind that when we change the team type via the debug menu we end up in the same situation, BUT it is important that we can activate cheat codes with a single human player and then we are free to change the team types afterwards as the punishment only comes when we perform a cheating event with human player count greater than 1.

    3. Aircrafts are placed onto the ground by the quick build menu! If we want them to hover, to fly, we need to make them move.

    4. If we want to make it sure that all units start with maximum speed points, we can activate the real time mode in the debug menu.

    5. Any campaign mission could have a mission briefing screen as well as a victory briefing screen. We just need to create files like INTRO<mission index>.CAM or WIN<mission index>.CAM. E.g. INTRO25.CAM would be shown before campaign mission 25.

Posts

  • M.A.X. 2 closed beta test program

    Back in January, 1998 the M.A.X. 2 development team organized a huge closed beta test program that lasted for several months even though the team wanted to release the game by March that year. The version showcased by this video is the first released version from 16th of January, 1998. This initial release was very raw, e.g. the version number on the title screen says Alpha, and limited in features. The demo is very unstable, tripping on failed assertion tests as soon as the computer player starts to do something meaningful so the video is somewhat short. Only human, or Concord, land units are in the game, their sprites are often disproportionate, the 3D map is a flat texture, many UI elements are disabled or just placeholders, but the core game play in real time mode is there. Turn based modes lock up on the first end turn event. You might rightfully ask yourselves why did the developers release such an obviously broken version to the voluntary beta testers wasting everybody’s time? We get a clear answer from the readme file of the release: Quite honestly, we don’t yet know who we can trust. Testers who are looking for a free game will be disappointed with this version. People who are seriously interested in testing will not. Those who respond with good bug reports to this version will be eligible for the next version.

  • New audio engine

  • Full HD game play

  • Graphics renderer work in progress

  • Status report

  • The game is over

    At long last I was able to finish the single player custom game I started back in 2009. M.A.X. Port is not yet stable, but when the original M.A.X. repeatedly crashes with stack overflows or heap memory allocation issues M.A.X. Port can already help. So with a combination of M.A.X. Port and the original game I not only fought the enemies, but also the game breaking defects turn after turn. Finally after 322 turns all three enemies were eradicated from the map and the game ended with my glorious victory.

  • Work work

  • First mission of an alternative Concord campaign

    Ever wondered about what would have happened if you, as a M.A.X. Commander, would have taken side with the Concord and their faithful servants within the Circuit? Is it in humanity’s best interests to abandon the contract that the Dealer in Worlds offered to them? Is treachery and deceit the only options to reach one’s goals? Oh right… We are humans.

    With the save file format fully documented it will eventually become possible to develop new missions for M.A.X. that could tell us the story of the Clans that did not join the Secret Council of Freedom. Crash those impudent rebels and bask in the glory of our Concord Masters!

    Can you find Waldo?

  • Debugging the AI in M.A.X.

    The AI or Task Manager of M.A.X. distinguishes more than 44 different types of tasks and 5 or more reminder events that are related to tasks. There is a built-in AI debugger within the game with two major features. It is possible to inspect the task tree hierarchy at any given time and it is possible to log the timeline of task manager events into a file for later offline analysis. The video in this post demonstrates the first feature.

  • Debugging the Pathfinding module in M.A.X.

    The path finding algorithm of M.A.X. was very powerful compared to other strategy games of the time. Of course it is not fair to compare turn based, simultaneous real-time and real-time games, but I do not care. Pathfinding in M.A.X. is outstanding.

  • Videos render correctly

    Those wicked x86 opcodes tricked me…

  • Mech Commander - Carlton L.

    Who is Carlton L.? Why is he a Mech Commander instead of a M.A.X. Commander? Why would a mechanical engineer fix that sealing plate with so many screws? This is not cost effective… immersion ruined! :P

  • Easter eggs

    Found some easter eggs :)

  • Hidden secrets

    M.A.X. has many hidden secrets.

  • Messing around with demo versions of M.A.X.

  • Winter holidays gone

    I wasted my winter holidays, but made a lot of progress. A very basic sound manager is in place.

  • Sprites finally render correctly

  • Played a game

    Played a game against an invisible enemy.

  • In game

  • Moving around the menus

    Made some progress with mouse and keyboard handling.

  • The mouse is moving

    Basic mouse handling had been reimplemented in SDL.

  • Fixed color mapping

  • The first rendered screen

    After several months of monotone grindy work the first rendered screen appears.

  • A new start

    The first news entry sets the mark for the start of the project.

Subscribe