User:Xusilak

From UFOpaedia
Jump to navigation Jump to search

For various real life reasons, I've more or less given up working on the TFTD patcher for now; it hasn't been updated since April. I am uploading the current state of the source code and patcher in case anyone might benefit from it.

Disclaimer: You use this at your own risk. I cannot guarantee that it works properly, and most likely, it does not work properly in many different ways. However, it should not be dangerous. If you need to know something, you can email me at Xusilak@gmail.com. If I know the answer, I'll try to respond quickly.

The patcher enables TFTD to be run on Win7-64 and WinXP-32, among other recent Windows platforms, by using the D3D mode. It also includes a few other functional patches. The vast majority of the patches will do nothing or crash. A list of patches that probably, but might not, work:

  • Radar Stacking
  • Force Language
  • MP3 music playing
  • Music change freeze fix
  • D3D
  • Autosell
  • Show Money
  • Crash on First Move
  • Doubleclick Dovement
  • Underwater Weapons in Air

The source code is extremely messy and unfinished. Generally, most unnecessary/unfinished things are sectioned out with preprocessor #if 0/endif blocks. However, this should not be taken as a given.

All credit should go to Seb76 for his excellent work on the original UFO Extender.

Releases

  • Unfinished Terror from the Deep patcher and source code:
  • Terror from the Deep IDC file:
    • File:TFTDIDC.zip
    • This contains function and variable names for the Terror from the Deep EXE, and can be imported into IDA to build a full database. It can also be viewed as text, for those without IDA, although it will take some effort to sort through it. Special thanks to Seb76 for most of the work, here. I just translated it from his work.

Finished Projects

  • AutoSell
    • This patch allows the player to activate an automatic production and automatic selling mode in manufacturing. By pressing the down arrow button to reduce the quantity of desired items below zero, the mode will switch to the autosell mode, represented by three dollar signs ("$$$"). In this mode, production will never cease unless resources become unavailable, and all produced items will be immediately sold. By pressing the down arrow a second time, it will switch to autoproduce mode, represented by three asterisks ("***"). This functions in the same way as autosell, but the results will not be sold, merely stockpiled forever; caution should be used with this mode, as it can drain resources quickly.
  • Show Money
    • This patch shrinks the clock in the date/time panel on the main geoscape screen, and adds a funds display above it. It is useful for examining remaining funds during manufacturing projects, while waiting for time to pass.
  • Doubleclick Movement
    • The Doubleclick Movement patch changes the requirement for moving a unit in the battlescape from clicking a tile once, to doubleclicking it (within 500ms). Failing to doubleclick will result in no action being taken. This allows for a considerable safety margin with movement, as the default movement controls are easy to accidentally trigger on the wrong tiles.

Current Projects

  • Working on TFTD.
    • Adding to my TFTD IDA database.
      • The translation from the X-COM IDA database to the TFTD IDA database is essentially complete. From here on out, work on the database will focus on uncovering the purpose of unknown code.
      • As an aside, I've been working on a way to easily convert IDA data definitions to C data definitions. I have a preliminary system set up that starts off using a 'diff' file generation tool that compares a clean TFTD IDC with the finished TFTD IDC, giving me a list of all of the updated definitions. Next, I take the diff file and use a regular expression to convert it from the diff file into C definitions. The technique works for the most part, but I haven't yet figured out how to get the data types along with the names and addresses. Hopefully I'll come up with something in the future, as being able to directly import my data definitions to the patcher source code from my IDA database would make coding patches much, much faster. Right now, I just have an enormous list of all of them defined as integers. Still, it's better than nothing; now I just need to update the data type when I'm adding definitions from IDA.
    • Translating patches from Seb's X-COM patcher to TFTD. Current progress:
      • D3D, D3D Windowed, Scale Mouse, Force Language are all implemented and functional. Plus, they haven't crashed yet.
      • Autosell has been translated.
      • Doubleclick Movement has been translated.
      • Show Money has been translated.
      • Base Facility Dismantle-Construction Crash is translated, but I don't know if it actually does anything, as I couldn't get the crash itself to happen. When I release the patcher, please let me know if you find any issues with this.
      • Crash On First Move has been translated, but I haven't bothered to check if it works or not, as it's very difficult with a Triton (no ramp) so let me know. The old crash could happen any time you moved down a level without flying, such as falling or walking down stairs.
      • MP3 music works, on the chance that you happen to have the TFTD soundtrack.
      • My observations of the code so far indicate that Tactical Scroll (there's a framerate limiter in TacticalMainLoop()), Pay For Dirt, and Phantom Radar are all fixed in TFTD by default. Please let me know if you have solid evidence otherwise.
      • Radar Stacking is translated.
      • Door Jam is translated.
    • Adding new TFTD-specific patches.
      • Underwater Weapons In Air is complete.
    • Expect the initial release of the TFTD patcher and its source code around the end of the month.

Potential Projects

This is a list of the projects I may consider working on in the future (it's basically my personal wish list). Don't modify it directly; if you wish to comment, please do it in my discussion page. Feel free to make suggestions regarding things I'm working on or considering working on; my imagination is limited, after all. I have read the UFOpaedia wish list, so you don't need to repeat things from there.

X-COM: UFO Defense (both where applicable)

Features

Limits Expansion

  • (Will break old saves) Expand Object Limit.
    • Increase the size of the objects array to 256, and increase the objects allowed to each side to fill up the space. (115 xcom?)
    • (Maybe) Increase the size of the objects array even more. 4096 shouldn't be difficult, and will most likely be more objects than anyone could ever need in X-COM's current state.
      • I'm not sure if stockpiling thousands of ammo magazines and having them fill up a base defense mission is a good thing, though.
  • (Will break old saves) 2-byte scientists and engineers.
  • (Will break old saves) Increase the unit limit in battles to at least 256.
  • Advanced Difficulty: Allows you to manually set the skill number (which is used as a modifier for many things). This would let you use much higher difficulties than Superhuman.
    • This will require capping various things and (potentially) using formulae instead of tables for other things.

Miscellaneous

  • Improved UFO Behavior:
    • UFOs telegraph their intentions more apparently; e.g. as they're finishing their mission they start increasing their height and speed gradually, instead of instantly to max. This will allow you to trail a UFO to find out if it's going to land or not, making interceptors more useful.
  • Improved Grenade Throwing Arcs; make throwing more realistic by allowing soldiers to try more methods of throwing. Ideally this would try all possible throwing angles and velocities available (with throwing velocity capped by strength); throwing range can be increased by increasing the elevation or the velocity of the throw. This allows for many, many combinations of throws, and should greatly increase the utility of throwing, as soldiers with extremely high strength could throw grenades down long corridors with ceilings.
  • Infiltrations Can Be Stopped.
    • Move the infiltration success point to after the second Battleship takes off. If the second Battleship never takes off, the infiltration fails completely; funding is uninterrupted.
    • The alien base is created after the infiltration success. If all alien bases in the infiltrated country are destroyed, the nation's funding reactivates but starts at a minimal level.
  • Stacking Hyperwave. Make the Hyperwave Decoder only provide 34% detection each, and allow it to stack.
  • Deconstruct Items: Allow players to deconstruct any researched item and receive a portion of the special materials used to make it (e.g. receive 1-2 elerium for deconstructing a heavy plasma magazine).
  • Replace the random number generator with a mersenne twister-based system.
    • Toss in a patch that allows one to configure how random various aspects of X-COM are (e.g. change weapon damage range from 0-200% to 75-125%).
  • (Maybe) Improved AI. It would make a lot of patches considerably more balanced if the AI used better tactical consideration when taking actions. As it is, I find it difficult to justify using any kind of patch that makes the game easier for X-COM, because it's simply too easy as it is (for me, anyway). This is one reason I don't plan to work on patches that alter game balance in X-COM's favor much.
  • (Maybe) Explosions!
    • Make explosions able to propagate around corners until they run out of energy.
    • Make explosions have a (weak, since X-COM is limited to 2-4 stories) vertical component.
    • Make explosions use more realistic damage fall-off scaling, so they're not quite as overpowered with these changes.
  • (Very distant future) Multiplayer!
    • Currently, Alien Pets already allows for an improved form of multiplayer over the normal system of using XCOMutil swapping. It should be possible to write some net code on top of it that transfers the appropriate gamestate information to the other player, forcing one player to wait during 'next turn', and so on. There are various levels of implementation for this, like showing enemy movement during the "Hidden Movement" phase properly; it would be far easier to simply transfer the gamestate after the turn is done, rather than updating it in real time, but it is not impossible.
      • Essentially, the easiest (?) implementation of this takes a 'save state' of the game as the turn finishes, transfers it to the other player, replaces that player's gamestate with the new 'save state', and runs from there. It is basically automated XCOMutil swapping, with greatly improved functionality since Alien Pets works much better (e.g. grenades work).
      • Next would be tracking visibility properly; the players shouldn't share visibility with each other, but in the raw save state system, they would. So, visibility needs to be excluded from the save states. This shouldn't be too much harder, barring unforeseen difficulties.
      • Next would be showing enemy movement. This essentially requires a total rewrite of the "easy" system to transfer each player's actions in real time, instead of in bulk at the end of turns. This is much more difficult, and probably not worth the pay-off. Far easier would be analyzing the differences in the gamestates at the end of the enemy's turn and reporting to the player anything important that happened, like units dying, being stunned, or firing off reaction fire (and whether or not any enemies were killed from it).
      • Next would be taking multiplayer to the Geoscape level, which is simply so far out there at the moment that speculating about it isn't terribly worthwhile. Most likely, implementing such a feature would be so arduous that rewriting the entire game would be easier (and there are plenty of X-COM remakes as-is).
  • (Extremely distant future) Merge the two games into one, with the superset of all equipment from both games, all aliens, all terrain types, all ships, etc. This has been discussed elsewhere, so until actual progress is being made on it, this will be kept short. This is also another feature that may be so difficult that it would be easier to do in a total rewrite.

User Interface

  • Add special materials overlays to the Geoscape.
  • Fix autosell/autoproduce "time to produce" indicator to display nothing when they're enabled.
  • (Distant future) Add a 'load game' button to the Battlescape.
  • (Distant future) Tooltips. Add tooltips to buttons, objects, and similar entities, that display relevant data and information about them.

Bugs

Crashes

  • Geoscape->Battlescape Crash. Fix the crash upon transitioning from the Geoscape to the Battlescape.
    • Probably resolved, unless there's more than one cause.
  • Alt-Tab Crash. Fix existing alt-tab crashes. These primarily occur in the Battlescape.
  • Unknown Battlescape Crash. Probably related to base defense or object table being full. Happened when walking down stairs from general stores, tank semi-under soldier.
    • Probably resolved.
  • Unknown Battlescape Crash. Situation: Alien base, 10 soldiers, 1 tank, varied equipment including flying suits, two blaster launchers, heavy plasma, an assortment of grenades and flares, and so on. First turn. Click next turn. Hear a door opening. Crash.
    • Maybe related to the previous crash, but maybe not.
  • Make "all tanks" base defense missions work properly.
  • Extremely rare "just transitioned from battlescape to geoscape and passed a few seconds" crash. Skyranger was lost; maybe that has something to do with it?

Miscellaneous

  • Various bugs with the mission phase transfer process. Primarily a TFTD issue, so will probably wait until work on TFTD starts.

X-COM: Terror from the Deep (specific)

Features

Miscellaneous

  • Port existing patches over to TFTD.
  • Allow Melee On Environment; allow drills to attack walls, etc.
  • Remove underwater limitations from everything.
    • Weapons
    • Magnetic ion flight
    • Alien types, such as tentaculats, allowing them in terror missions.
  • Aliens Use Drills.

Bugs

Miscellaneous

  • Look into the weird alien spawning behavior on floor 2 of alien colonies. I'm not sure what versions this applies to.
  • Fix any remaining research bugs.

Notes

None at this time.