MTrop Posted January 10, 2022 (edited) by Matt Tropiano Official WebsiteOfficial ReleasesGithub | Issues Latest Release Screenshots: Spoiler Why, hello there! This thread is the official DoomWorld thread for DoomTools. All feedback and questions should be posted to this thread, as well as some tips and tricks for other users. If you've heard of DECOHack or DoomMake or WadMerge, you'll find them in this thing. Please follow this thread (or just pay attention to it) in order to be notified of when updates get released. This will be actively read and updated. To install, unzip/untar the release to its own directory, and then add that directory to the list of directories in your PATH environment variable. OR, optionally, if you use Windows: Use one of the provided Windows Installers, which will do that stuff automatically! You can even download a version that contains a minified Java Runtime Environment so that you don't need to install Java separately. Or, if you already have DoomTools installed, you can type this at the command prompt/terminal to update (you may need to elevate privileges on some systems): doomtools --update DoomTools requires Java 1.8 or better. Packages are available for CMD (Windows) or Bash (Cygwin, macOS, Linux, WSL). Where to get Java if you aren't using an installer (and also in case you never played Minecraft) in descending order of recommendation: Azul Systems: https://azul.com/downloads/ Adoptium: https://adoptium.net/temurin/releases/Microsoft: https://microsoft.com/openjdkOracle: https://java.com/en/download/ What is (or are) DoomTools? DoomTools is a set of command-line utilities (with GUI implementations) for building projects or for other things related to Doom Engine games. Lots of useful stuff. You can even use DoomTools (and specifically DoomMake) to build your projects via some kind of Continuous Integration solution. Be the nerd you want to see in the world! You said these tools need Java? Yup. DoomTools requires Java, and is built on the DoomStruct library, also made by the guy who made these tools! You can run them anywhere! But I hate Java! Horsefeathers. You know you installed Minecraft at some point! That thing was practically the only reason anybody installed a JVM in the past decade or two! But I hate Oracle! Yeah, me too. Luckily, other JDKs exist, like Azul Zulu (OpenJDK) or Adoptium Temurin (also OpenJDK) or OpenJDK Builds from Microsoft! Fully compatible with DoomTools - DoomTools was built and tested in OpenJDK. Or, you can use one of the installers that embed Java into DoomTools. Easy-peasy! What sorts of utilities are included? I'm glad you asked! There's a whole bunch of them! DoomTools — A program that just displays info about the toolset that you are using (or manage other things, in the future). DecoHack — A utility that uses a DECORATE-like language scheme for creating DeHackEd patches. DImgConv — A utility that bulk converts images to Doom formats. DMXConv — A utility that converts all sorts of sounds to DMX digital sounds using either the Java SPI or FFmpeg. DoomFetch — A utility that fetches WAD files from different sources. Can serve as a dependency manager. DoomMake — A project build utility that is agnostic to all operating systems (for the most part). WadMerge — A utility that performs Script-based WAD compilation and merging. WSwAnTbl — A utility that reads DEFSWANI/SWANTBLS data files and compiles it into ANIMATED and SWITCHES lumps. Can also export a set of ANIMATED and SWITCHES lumps to a definition file. WadTex — A utility that reads a DEUTEX-style texture file and imports it into a WAD file as TEXTUREx and PNAMES lumps. Can also export TEXTUREx/PNAMES in the same way. WTexScan — A utility that scans maps in a WAD and outputs a list of found textures and flats, suitable for import into the next program... WTEXport — A utility that exports textures from one WAD into another, including associated ANIMATED and SWITCHES textures. WadScript — A scripting system for doing practically anything with Doom stuff. Also includes Rookscript, a subset script. Other DoomTools and the accompanying materials are made available under the terms of the MIT License. Older Threads With Some Other Info DoomMake Thread (Up to date)Older DoomTools Thread (DMXConv, DImgConv, DECOHack, DoomMake)First DoomTools Thread (WadTex, WSWANTBL, WTexScan, WTEXport, WadMerge, WadScript) Don't delay! Use DoomTools today! Edited December 11, 2023 by MTrop Added DoomFetch 20 Quote Share this post Link to post
MTrop Posted January 10, 2022 (edited) Short descriptions of DoomTools utilities: WadTex A utility that imports or exports a DEUTEX-style texture file into/from a WAD file with a set of TEXTUREx/PNAMES lumps. SLADE does an excellent job of doing texture management, but if you're the kind of weirdo that likes managing stuff via text files, this is for you! wadtex doom2.wad --export texture1.txt wadtex d2tex.wad --import texture1.txt WSWANTBL A utility that, like SWANTBLS, imports or exports SWITCHES/ANIMATED data into/from a WAD file, creating/reading a file that is formatted like DEFSWANI.DAT from way back when. Again, for big nerds that like big text files. wswantbl boomstuf.wad --export DEFSWANI.txt wswantbl boomstuf.wad --import DEFSWANI.txt WTexScan A utility that scans one or more WAD files for maps and dumps the list of flats and textures that it finds. Works for DOOM, ZDOOM/HEXEN, and UDMF maps. wtexscan maps.wad The output may look strange, because it is best used with.... WTEXport The second version of TEXtract, WTEXport is a utility that extracts a set of flats and textures from a source WAD and adds the extracted textures to a new WAD or an existing WAD, using the output piped in from WTexScan. Also uses ANIMATED/SWITCHES in order to figure out extra textures to copy over to complete full sets. wtexscan maps.wad | wtexport texturepack.wad --base-wad doom2.wad --output maps.wad --add wtexscan maps.wad | wtexport texturepack.wad --base-wad doom2.wad --output mapstex.wad --create It has some limitations though - doesn't read ANIMDEFS yet. In that case you may be better off doing things more manually via WadTex. WadMerge A utility for making simple build scripts for compiling together projects made of several files into a single WADs, or merging WADs of different kinds together. Very flexible. wadmerge build.txt You can make snazzy build scripts that look like this! create outwad datemarker outwad __VER__ # Merge in maps. mergewad outwad maps/map01.wad mergewad outwad maps/map02.wad mergewad outwad maps/map03.wad # Merge in textures. marker outwad pp_start mergedir outwad textures/patches marker outwad pp_end marker outwad ff_start mergedir outwad textures/flats marker outwad ff_end mergedeutexfile outwad textures/texture1.txt # Export to file. finish outwad build/mymod.wad end Go crazy! WadScript This utility is a doozy - it employs a sophisticated scripting language called RookScript (made by yours truly) with some function extensions for manipulating WAD data! It's SO FLEXIBLE! There are even functions for doing byte-by-byte reading and streaming in case you want to do something not covered in the built-in functions! WHOA! Check this! Open a WAD and print its entry list: entry main(args) { if (args[0] === null) { return error("NoWAD", "No WAD specified."); } check (err) { wad = wadfile(args[0]); each (i, e : wad->waditerate()) { println(i + ": " + e.name + ", " + e.size + " bytes, at offset " + e.offset); } } close(wad); if (err != null) { return err; } } Then you just run the script with: wadscript filenameOfScript.wscript file.wad NOTE: The arguments after the script file are passed in via that args variable, so "file.wad" is readable from args[0]. Or if you're using Bash, you can just slap #!/usr/bin/env wadscript into the first line and flag the script as executable! Wow! (You can even do a similar thing with WadMerge scripts) Built-in function documentation for WadScript is included in the release archives, or you can type: wadscript --function-help ...and send the output to a file or what-have-you. To get it in HTML format, use --function-help-html. A quick guide to RookScript is here (and included in the utilities): https://mtrop.github.io/DoomTools/rookscript-guide.html You also get the regular RookScript utility without the Doom extensions for FREE! rookscript [scriptfile] DMXConv SLADE3 does an okay job at converting sounds from WAV to Doom's DMX format, but you are like me and chuck your sounds in a project tree and want to convert all of them at once for importing later, this'll do it! Works best if you have FFmpeg on your PATH or somewhere on your computer - then you can convert practically EVERY SOUND FORMAT THAT EVER EXISTED to DMX! If not, it'll still use the existing Java SPI framework for conversion, if you want. dmxconv sounds/*.wav -o ./converted/sounds Typing `--help` will give you more options and explanations. Keep in mind that this is a one-way utility - it does not convert from DMX back to other formats. DECOHack Have you ever wanted to create some kind of insane mod for Vanilla Doom (and other classic Dooms) but wished that there was a better programmatic way to write weapon, ammo, sound, string, par time, and thing definitions with a DECORATE-like language? Introducing DECOHack, the thing that does exactly that! DECOHack takes a file (or series of files) written in a DECORATE-ish language and turns it into a DEH/BEX file that can be loaded into your favorite source port, or patched into your favorite executable via DeHackEd! Supports all patch schemes up to DSDHACKED. decohack code.dh --output dehacked.deh Hate backpacks? Turn them into BFGs! #include <doom19> #include <friendly> // copy BFG pickup into backpack thing MTF_BACKPACK : thing MTF_BFG { //keep ednum, though ednum 8 } Make an Imp with a worse attack! #include <doom19> #include <friendly> thing MTF_IMP free states thing MTF_IMP "Worse Imp" { health 200 speed 12 clear states States { Spawn: TROO AB 10 A_Look Loop See: TROO AABBCCDD 3 A_Chase Loop Melee: Missile: TROO EF 8 A_FaceTarget TROO G 6 A_BruisAttack Goto See Pain: TROO H 2 TROO H 2 A_Pain Goto See Death: TROO I 8 TROO J 8 A_Scream TROO K 6 TROO L 6 A_Fall TROO M -1 Stop XDeath: TROO N 5 TROO O 5 A_XScream TROO P 5 TROO Q 5 A_Fall TROO RST 5 TROO U -1 Stop Raise: TROO ML 8 TROO KJI 6 Goto See } } The sky's the limit (within reason, as it is still limited to Doom engine quirks and limitations)! If you're worried about how many states you have left (in total or action-pointer allocated), you can run DECOHack with the `--budget` switch. Full help available via the `--help-full` switch. You can do a lot! It's all documented, even the worst of Doom's hardcodings! DoomMake Have you ever wanted to start a new project, but didn't want to organize everything, and still have it produce WADs that you can maintain in a code versioning system like Git, compile together in an automated fashion, or keep providing builds via an ultra-nerdy thing like Continuous Integration? Well, in case that's you, you're in luck! DoomMake is here to help you build that giant project with all sorts of bells and whistles with a single command, and produce something compiled together and playable (and with some setups, a reduced texture set)! It leverages WadScript and turns it into a do-anything-you-want build tool that isn't tied to one operating system or environment. You can even call all the rest of the tools in the DoomTools toolset! You can start a new project with maps and new textures sourced from WADs: doommake newproj --new-project maps texturewads Or even a giant vanilla mod from scratch with all sorts of things, and make it Git-repository-ready: doommake newproj --new-project maps assets textures decohack run git And then when you want to build your project in it's current state, you just switch to its project directory, and... doommake It's that easy! Want to feel its power? Try cloning and building this project for starters: https://github.com/MTrop/doommake-example A project quick starter is here: https://mtrop.github.io/DoomTools/doommake-quickstart.html As always, chuck some issues my way if stuff doesn't work, or if you've got some feature requests. Follow the GitHub repository to be notified of updates and releases. Edited January 10, 2022 by MTrop 3 Quote Share this post Link to post
Kinsie Posted January 10, 2022 16 minutes ago, MTrop said: Where to get Java (in case you never played Minecraft) in descending order of recommendation 16 minutes ago, MTrop said: But I hate Java! Horsefeathers. You know you installed Minecraft at some point! That thing was practically the only reason anybody installed a JVM in the past decade or two! Minecraft has bundled its own JVM in since early 2015 or so, nobody's really had a reason or excuse to inflict such horrors upon their computers (unless they're reliant on some other Java-based util for something or other, and sometimes even then some apps pack in their own portable JREs!) for nearly seven years now. 0 Quote Share this post Link to post
MTrop Posted January 10, 2022 5 minutes ago, Kinsie said: Minecraft has bundled its own JVM in since early 2015 or so, nobody's really had a reason or excuse to inflict such horrors upon their computers (unless they're reliant on some other Java-based util for something or other, and sometimes even then some apps pack in their own portable JREs!) for nearly seven years now. I've considered it. I did that for this thing: https://tame-if.com/ I'm just worried that some bundles are gonna be really chunky (~45MB each, already pared back to java.desktop modules), and I'll need to maintain packages for separate OSes. If you have a compatible embedded JRE, you can put that in a jre folder off of the DoomTools root if you don't want a full install, and it'll find that one. Java's ubiquitous enough at this point that installing it isn't even that great an issue, anymore. 0 Quote Share this post Link to post
MTrop Posted March 27, 2022 (edited) Hey, all. New release! Changes ------- - **2022-03-14** GUI uses the FlatLaf Look and Feel. - **2022-03-06** DoomTools has a GUI now! - **2022-03-06** Cygwin pathing fixes (thanks, @dmcmahill). This release fixes/updates the following utilities: DECOHack -------- ### Changed for 0.23.0 * `Added` A patch format for the Unity port, `doomunity`, which is `udoom19` but with no string limits (thanks, Xaser!). (PR #65). * `Added` A way to dump all known action pointers to DECOHack to STDOUT via the `--dump-pointers` runtime switch. * `Fixed` MBF21's `A_SeekTracer` parameters needed to check for FIXED angles, not UINT. * `Fixed` Some Action Pointer parameter interpretation - if a field needs a fixed expression, integer values are coerced to fixed, and vice-versa. * `Changed` Stricter (but safer) checking for types in parameters, such as Fixed values, and auto-detecting sounds, things, and states. * `Changed` Better string length error messages (Issue/Enhancement #64). DoomMake -------- ### Changed for 0.15.0 * `Added` DoomMake Agent for listening for project changes. See help for more info! * `Added` DoomMake GUI for individual projects and creating new ones. * `Added` A `justrun` target for new projects using the `run` template to execute the project without building it. The biggest change to DECOHack: DECOHack is now smarter about converting integers to fixed-point values, or fixed-point to integers, depending on the parameter types, as well as understanding other parameter types like Things, States, and Sounds: A_Spawn(Demon, 0.0) // Thing alias A_Scratch(10, punch) // Sound name A_RandomJump(pain2, 128) // State label A_HealChase(heal, slop) // State label, sound name A_WeaponSound(shotg3, 1) // Sound name A_WeaponProjectile(CacodemonBall, 0, 0, 0, 0) // Thing alias And you read that right, DoomTools has a GUI! ...but so far, it's just DoomMake, but you can now start builds, open projects in Explorer or SLADE (or even VSCode), and also create new projects! You can start it up from the doomtools-gui.exe file. Eventually I'll have an installer to make things smoother, but for now, you've got a "beta" to tinker with. So far, you can open the DoomMake New Project window by running (or making a shortcut to): doommake-gui.exe doommake-new Or to open the DoomMake Open Project window: doommake-gui.exe doommake-open Or to open a specific project folder: doommake-gui.exe doommake-open C:\Path\To\Project In non-Windows platforms: doomtools --gui doommake --new-project-gui doommake --gui (in working directory of project) Currently, there's a small (rare) issue where the GUI may not quit completely on close, so I'm gonna be working on fixing that. But for now, enjoy the new fixes and stuff. Edited March 27, 2022 by MTrop 1 Quote Share this post Link to post
MTrop Posted April 16, 2022 (edited) New release for DoomTools (2022-04-16). This release now adds Windows Installers (including one with a minified embedded JRE), so that you can install and run without needing to tinker with your system PATH! Installer Notes If you choose NOT to add DoomTools to your system PATH in the installer, you can still access the tools in the command line using the DoomTools CMD shortcut that it creates in the Start Menu, which will add DoomTools to PATH for that shell session. Uninstalling reverses all changes to PATH and/or Explorer Shell, if chosen during install. The JRE version will embed a minified JRE in DoomTools, should you also choose to do so. If you install a JRE/JDK separately for your system, it will not affect DoomTools's embedded JRE. Changes ------- - **2022-04-15** Changed DoomTools's update system to pull the JAR ZIP for the update. - **2022-04-05** Updated DoomStruct to `2.14.2`. (Entry/Texture name fixes). This release fixes/updates the following utilities: DECOHack -------- ### Changed for 0.24.0 * `Added` The ability to read a DECOHack patch from STDIN. * `Added` The ability to add custom action pointers. (Enhancement #72) DoomMake -------- ### Changed for 0.16.0 * `Fixed` (GUI) GUI still checked for DoomMake on PATH in order to run. This was unnecessary. (Issue #69) * `Added` The `TOOL::DECOHACK(...)` function was changed to support reading DECOHack source from STDIN. Yup, that's right: you now have support for custom action pointers in case a port has one that may not be part of an official "generation" of patch - necessary for code pointers like A_MonsterRail and A_FireRailgun that were around in the times between MBF and ZDoom's additions, pre DECORATE. From the documentation: ============================================================================== ===== Custom Action Pointers ============================================================================== There may be some patches that accept bespoke actions or action functions that are not known to DECOHack, or actions that port authors include that may not be "standard". For those, you can specify custom pointers for use on Thing or Weapon states: custom thing pointer <PatchType> A_PointerName ( <ParameterType> [ , <ParameterType> ...] ) custom weapon pointer <PatchType> A_PointerName ( <ParameterType> [ , <ParameterType> ...] ) Where <PatchType> is: boom // no parameters, allow Offset mbf // two parameters max, store in Misc fields, disallow Offset if at least one parameter mbf21 // ten parameters max, store in Args fields, allow Offset ...which describes how many parameters the function can take and how it's stored in the patch (misc fields, or args). <ParameterType> is: bool // 0 or 1 byte // -127 to 127 ubyte // 0 to 255 short // -32767 to 32767 ushort // 0 to 65535 int // -2147483648 to 2147483647 uint // 0 to 2147483647 angleint // -359 to 359 angleuint // 0 to 359 anglefixed // -359.99998 to 359.99998 fixed // -32768.99998 to 32767.99998 state // 0 to 2147483647, verify valid state index, reference, or label. thing // 0 to 2147483647, verify valid thing index. weapon // 0 to 2147483647, verify valid weapon index. sound // valid sound name. flags // -2147483648 to 2147483647, flag expression For example, a popular non-standard pointer, MonsterRail: custom thing pointer boom A_MonsterRail() ...and its counterpart, FireRailgun: custom weapon pointer boom A_FireRailgun() ...the Mushroom pointer from MBF: custom thing pointer mbf A_Mushroom(anglefixed, fixed) ...the WeaponMeleeAttack pointer from MBF21: custom weapon pointer mbf21 A_WeaponMeleeAttack(ushort, uint, fixed, sound, fixed) /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ IMPORTANT: This is only supported for Boom and higher, since those patch formats refer to action pointers by mnemonic - defining a custom pointer as "A_PointerName" will write "PointerName" to the correct place in the [CODEPTR] section of the patch. Name your experimental pointers accordingly! /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ Edited April 16, 2022 by MTrop 7 Quote Share this post Link to post
Ralphis Posted April 16, 2022 Very good release. Thanks @MTrop!! 2 Quote Share this post Link to post
MTrop Posted April 21, 2022 Quick (and very important fix): 2022.04.21-RELEASE DECOHack -------- ### Changed for 0.24.1 * `Fixed` MBF Action Pointers were not recognized. This has been fixed. * `Fixed` An error is now thrown if you are attempting to define a custom action pointer that already exists. Sorry for the inconvenience. Grab it now! 1 Quote Share this post Link to post
HavoX Posted April 22, 2022 Thanks again for all your hard work @MTrop, keep it up! 0 Quote Share this post Link to post
CrazyDoomguy Posted May 6, 2022 (edited) How can I open this software and work? There miss doomtools-gui.exe... I cant add doomtools-gui.exe in doomtool folder because it says "there already exist this file", but app doomtools-gui cant find this doomtools-gui.exe file... is that bug? In doomtool there is no doomtools-gui.exe file I restarted my pc and now i can copy doomtools-gui.exe. But if I switch this software on, antivirus block it and this exe will disappear... Edited May 6, 2022 by CrazyDoomguy 0 Quote Share this post Link to post
boris Posted May 6, 2022 You need admin rights for write access to "Program Files". Either run it as admin (not recommended) or don't put it in "Program Files". 1 Quote Share this post Link to post
CrazyDoomguy Posted May 6, 2022 (edited) 19 minutes ago, boris said: You need admin rights for write access to "Program Files". Either run it as admin (not recommended) or don't put it in "Program Files". I switched antivirus for 10 minutes off and added Doomtool on desktop. Startet doomtools-gui.exe and there error The files are from there https://github.com/MTrop/DoomTools/releases/tag/2022.03.27-RELEASE Edited May 6, 2022 by CrazyDoomguy 0 Quote Share this post Link to post
CrazyDoomguy Posted May 6, 2022 (edited) Got it. I stopped antivirus software for 10 minutes, installed Doomtools and now its work. Is there any tutorial video how I can work with MBF21? I want create dehacked file for boom maps or for TAS run. I expected, this file will look like WhackEd4. As I understand - I writte in main.dh a script like decorate.txt (zdoom) and Doomtool convert this into DEHACKED? Edited May 6, 2022 by CrazyDoomguy 0 Quote Share this post Link to post
MTrop Posted May 8, 2022 On 5/6/2022 at 5:45 PM, CrazyDoomguy said: As I understand - I writte in main.dh a script like decorate.txt (zdoom) and Doomtool convert this into DEHACKED? Pretty much. You'll be using DECOHack as a compiler of some kind: decohack main.dh --output dehacked.deh Its language isn't exactly the same as DECORATE though. Full documentation is here: https://mtrop.github.io/DoomTools/decohack.html Though what I'm curious about is the method in how you installed DoomTools. Did you use one of the installers, or did you unzip one of the non-installer archives into a folder off of Program Files? Antivirus shouldn't be that strict for programs installed via installer. 1 Quote Share this post Link to post
CrazyDoomguy Posted May 8, 2022 (edited) 11 hours ago, MTrop said: Though what I'm curious about is the method in how you installed DoomTools. Did you use one of the installers, or did you unzip one of the non-installer archives into a folder off of Program Files? Antivirus shouldn't be that strict for programs installed via installer. I use Avira Security and it bans it every time I install or open this program. I installed the program "doomtools-setup-jre-2022.04.21.071908288.exe" under program files (automatic installation). Before installation I turned off antivirus, otherwise this protection pushes exe. file in the quarantine and then can not install or copy exe. again. I need restart pc before install doomtool again. After that when antivirus is active, I added this file to exception rule. I have exe. as well as entire "DoomTool" folders as an exception. Otherwise this programm by opening will be deleted by antivirus It took me hours to figure that out :/ Edited May 8, 2022 by CrazyDoomguy 0 Quote Share this post Link to post
MTrop Posted June 19, 2022 In case you aren't watching the project repository, lots of progress has been made on GUI stuff. No new release yet, but that's because I'm putting some finishing touches on some helpful utilities. Here's a sneak peek: 8 Quote Share this post Link to post
hobomaster22 Posted July 14, 2022 I'm going to carry this over here from the DSDA thread. https://github.com/MTrop/DoomTools/issues/77 I found a way around my issue by spawning a dummy thing with WeaponProjectile and then using SpawnThing off of that to give the thing that I wanted to have speed. Basically, I wanted Doom guy to 'throw' something onto the ground and it can't have the MISSILE flag or it would explode. I could have entered the speed in the thing as a fixed point value without the MISSILE flag except DECOHack spits an error saying it's not in a signed short range. What I did is probably wrong in most cases, but I think this maybe should be a warning instead. I also noticed that when I called WeaponProjectile, I stupidly put some values in as fixed point. I wouldn't get any errors or warnings in the build, but the output for the parameters were zeroed out in the dehacked file. Can the build output just be a window that stays? It would be nicer to leave it if I prefer instead of it being a modal that blocks everything. This is a great tool, I'm going to have to play around with it some more. 0 Quote Share this post Link to post
MTrop Posted July 15, 2022 (edited) 4 hours ago, hobomaster22 said: I could have entered the speed in the thing as a fixed point value without the MISSILE flag except DECOHack spits an error saying it's not in a signed short range. What I did is probably wrong in most cases, but I think this maybe should be a warning instead. I should probably add warnings for any type coercion that happens under the covers (fixed to integer or integer to fixed). It currently does not do so, and would definitely be helpful. EDIT: Made a tiny enhancement issue so I don't forget: https://github.com/MTrop/DoomTools/issues/78 4 hours ago, hobomaster22 said: Can the build output just be a window that stays? It would be nicer to leave it if I prefer instead of it being a modal that blocks everything. You can always build from the command line via decohack or doommake if you want the output to persist, for now. The next version of the DoomTools GUI is coming soon and will hopefully ease some more pain points, as well as provide more opportunities for some additional features. Edited July 15, 2022 by MTrop 1 Quote Share this post Link to post
MattFright Posted July 15, 2022 (edited) Are there any plans to add support in decohack for the colored blood feature shared between dsda, doom retro, woof and eternity (maybe more i dont know of)? Because right now the alternative is writing it in manually right into the .deh every time :p Edited July 15, 2022 by MattFright 1 Quote Share this post Link to post
MTrop Posted July 16, 2022 On 7/14/2022 at 9:17 PM, MattFright said: Are there any plans to add support in decohack for the colored blood feature shared between dsda, doom retro, woof and eternity (maybe more i dont know of)? Because right now the alternative is writing it in manually right into the .deh every time :p That will be coming when I get around to adding custom properties, which will require quite a bit of re-jiggering of how DECOHack stores properties. It will probably look similar to how custom action pointers get defined. A ticket for this enhancement is here: https://github.com/MTrop/DoomTools/issues/55 1 Quote Share this post Link to post
MTrop Posted July 16, 2022 (edited) Hey, everybody. Been a while. New release is up for DoomTools (2022-07-16): https://github.com/MTrop/DoomTools/releases/tag/2022.07.16-RELEASE NOTE: You should probably re-install if you used an installer - a lot of helpful shortcuts get added to the Start Menu, as well as some JRE updates that could keep the editor utilities from starting! There's a lot going on in this one, but here's some key ones: All utilities have graphical representations, including DECOHack, WadScript, and WTexScan-WTexport (that's right, no command-line required for your project texture extraction!). DECOHack got a lot of fixes and features, and more to come! All editors have autocomplete and templates and documentation (Ctrl-SPACE by default) for known identifiers and functions (but NOT for user tokens - I need to fix/implement that, somehow). Stuff I need help on: macOS shortcuts for everything. There's a ticket up, but I might need help making shorcuts that make sense on macOS: https://github.com/MTrop/DoomTools/issues/79 General QA. If you find a a bug or difficulty, add it to this thread or make an issue: https://github.com/MTrop/DoomTools/issues Full Changes: Changes ------- - **2022-07-05** Imported the `jdk.charsets` module for the embedded JRE. - **2022-07-04** Fixed a small updater display bug on command prompt. - **2022-06-30** Updated RookScript to `1.15.0`. (Includer encoding). DECOHack -------- ### Changed for 0.25.0 * `Fixed` Changed the z-position parameter type for MBF's A_Spawn pointer to "fixed". * `Fixed` Changed the range parameter type for MBF21's A_MonsterMeleeAttack pointer to "fixed". * `Fixed` Some inconsistent error messages around flag setting/removal. * `Fixed` Thing `dropitem` didn't allow 0 as a viable value. * `Added` The DECOHack GUI, plus a switch to start it (`--gui`). * `Added` Documentation for all pointers when dumped with `--dump-pointers`. * `Added` A `--charset` switch for specifying the encoding of the input source files (if not system default). * `Added` The ability to write the patch and the source directly into a WAD. * `Changed` MBF's A_FireOldBFG pointer should have been a weapon pointer instead of a thing pointer. * `Changed` Added a better error message for bad action pointers. * `Changed` Added an error message if the user does "flag mixing" on the same expression (see Issue #76). DImgConv -------- ### Changed for 1.2.0 * `Added` The GUI version of DImgConv. DMXConv ------- ### Changed for 1.1.0 * `Added` GUI Version of DMXConv. * `Added` Additional error output to diagnose FFmpeg issues. DoomMake -------- ### Changed for 0.17.0 * `Added` The `TOOL::WADTEX(...)` function was changed to support entry name override. * `Added` The `TOOL::WSWANTBL(...)` function was changed to support source import. * `Added` The `TOOL::WADMERGE(...)` function was changed to support alternate input charset encoding. * `Added` The `TOOL::WADSCRIPT(...)` function was changed to support alternate input charset encoding. * `Added` The `TOOL::DECOHACK(...)` function was changed to support alternate input charset encoding. * `Added` Support for project-wide text encoding setting. * `Changed` Default DECOHack source code output file was changed from `dehsrc.dh` to `decohack.dh`. More to the point. WadMerge -------- ### Changed for 1.8.0 * `Added` A `--charset` switch for specifying the encoding of the script files (if not system default). * `Added` The WadMerge GUI, plus a switch to start it (`--gui`). WadScript --------- ### Changed for 1.5.0 * `Fixed` The `--entry` switch didn't parse the command line properly after its use. * `Added` The WadScript GUI, plus a switch to start it (`--gui`). * `Added` A `--charset` switch for specifying the encoding of the script files (if not system default). WadTex ------ ### Changed for 1.2.0 * `Added` The GUI version of WadTex. * `Added` Entry name override for texture entry lump. WSwAnTbl -------- ### Changed for 1.1.0 * `Added` The GUI version of WSwAnTbl. * `Fixed` Bad newline in export header comments. * `Added` An `--import-source` switch for adding the source file to the WAD on import as `DEFSWANI`. WTEXport -------- ### Changed for 1.5.0 * `Fixed` Textures/Flats in ANIMATED were added in an incorrect order if the provided texture/flat was not the start of an animation loop. (Issue #75) * `Added` More output info during the extraction process. * `Added` The GUI version of WTEXport. * `Changed` Removed some potential sorts that could ruin things. WTexScan -------- ### Changed for 1.2.0 * `Added` GUI Version of WTexScan. As always, let me know what you think, and keep those bug reports coming! Edited July 16, 2022 by MTrop 3 Quote Share this post Link to post
hobomaster22 Posted July 16, 2022 This looks great. I really wanted to check out the DECOHack editor but it's not opening for me on Windows 10. Tried through the command line and no error messages. The only tool that seems to open right now is WTexScan-WTExport. 1 Quote Share this post Link to post
MTrop Posted July 16, 2022 (edited) 1 hour ago, hobomaster22 said: I really wanted to check out the DECOHack editor but it's not opening for me on Windows 10. Did you re-install the JRE version? That should contain the packages to run the editor. You might be missing some encoding packs that it requires. EDIT: I have updated the release post to remind people to re-install the application due to the above issue. Edited July 16, 2022 by MTrop 0 Quote Share this post Link to post
hobomaster22 Posted July 16, 2022 14 minutes ago, MTrop said: Did you re-install the JRE version? That should contain the packages to run the editor. You might be missing some encoding packs that it requires. EDIT: I have updated the release post to remind people to re-install the application due to the above issue. Yeah, that did it. I selected the one without JRE assuming because I installed it last time thinking I was good. Strange that no errors are printed running it through the command prompt. All is well now. 0 Quote Share this post Link to post
MTrop Posted July 21, 2022 Coming soon to a DoomMake near you. That's right - I'm an insane person who decided to write an IDE. Pray for me. 6 Quote Share this post Link to post
eev Posted July 21, 2022 This does seem nice! Might convince me to switch over to doing all the modding on this GUI. 1 Quote Share this post Link to post
hobomaster22 Posted July 21, 2022 9 hours ago, MTrop said: Coming soon to a DoomMake near you. That's right - I'm an insane person who decided to write an IDE. Pray for me. This is kind of what I was getting at with the build output being a modal and blocking. I was expecting it to be like an IDE where there is a build output window and I can look at it if I want, or not and just leave it. I wonder if basing off of Eclipse would make your life easier. But I've had to dig deep into the source code for the editor (long story) and it's not great... so it may or may not be worth it. Just throwing it out there. 0 Quote Share this post Link to post
MTrop Posted July 21, 2022 (edited) The only time you get any kind of output is via actually executing a tool, so I thought a pop-up modal was still okay for utility-invoking actions that were user-initiated, as opposed to passively logging them in some location. This may change in the future, but in order to get a passive text box going, I'll have to change a bit of plumbing. If it's any consolation, closing the modal does not interrupt the process, but then again, you'd be closing a modal every time. I could maybe include an option to not show logging output. Hmmm.... EDIT: On second thought, this may not be as difficult as I imagined. There's a single place in the code that creates the modals - if I return the same one, several outputs can go to one text area! Edited July 21, 2022 by MTrop 2 Quote Share this post Link to post
eev Posted July 23, 2022 Decohack Bug? State freeing for weapons is a little faulty, when doing: weapon 1 free Fire weapon 1 "Pistol" { states { fire: PISG A 3 PISG B 6 A_FirePistol PISG C 3 PISG B 4 A_RefireTo(Fire) goto ready } } It seems like it should only free the states under "fire", but it also frees the state on "ready" and it caused the weapon to fire uncontrollably the moment it got ready at starting the game, so I had to add: states { ready: PISG A 1 A_WeaponReady loop fire: PISG A 3 PISG B 6 A_FirePistol PISG C 3 PISG B 4 A_RefireTo(Fire) goto ready } This just ends up not modifying the ready state on the patch at all, only prevents decohack from modifying it, so it ends up being redundant when specifying to only free the fire state. 1 Quote Share this post Link to post
MTrop Posted July 23, 2022 (edited) 1 hour ago, dusk-iv said: It seems like it should only free the states under "fire", but it also frees the state on "ready" and it caused the weapon to fire uncontrollably the moment it got ready at starting the game That is, unfortunately, intended behavior. Freeing from a state will keep following and freeing the next state it until it reaches a "protected" (which is, out-of-the-box, state 0 or 1) or an already-freed state. Weirdly enough, it's safer to free a whole weapon and rewriting it than a single label. I'm starting to think that I need to add the ability to protect a state via current label to stop the "freeing traversal," or some kind of "safe free" that follows until it hits a defined label. EDIT: Added enhancement: https://github.com/MTrop/DoomTools/issues/80 Edited July 23, 2022 by MTrop Added issue 1 Quote Share this post Link to post
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.