How similar is the DMD and TMS file formats in TM1 to TM2 and Rogue Trip? #1
Replies: 7 comments
-
While reading tm2 files should be possible, understanding them will be tough. A rough guess is that they probably added new nodes or even modified some. Plus of course a bunch of new things. I figured this stuff using live unit testing for fast iteration, but then, to get the first level mostly right, it was a lot more involved. You can see that node 5 which does the positioning was just a guess and it only works on level 1... There are symbols on the Japanese version of tm1 which is extremely interesting, but even then, figuring it out won't be easy. Warhawk appears to be using the same kit, more or less, didn't check. No discord for me but we can talk here. Keep in mind that the guys who wrote it are from Evans and Sutherland, the pioneers in 3D acceleration, it's incredibly verbose and baffling when you look at the decompilation, i.e. they were not game devs in first instance. I'd suggest you to look at the code and the tool so you can get familiar with the inner guts of the files, it ain't pretty 😅. |
Beta Was this translation helpful? Give feedback.
-
Looked at stuff gathered back then in my hard drive, turns out many games use DMD format: Animorphs - Shattered Reality, Critical Depth, Jet Moto 2, Streak Hoverboard Racing, Warhawk - The Red Mercury Missions... All use same version but Streak Hoverboard Racing use a more recent one. It could be interesting to try load DMD/TMS pairs in the viewer to see whether they load or not, cheap and fast way to assess the stuff. TM2 has an OVR directory, expect some serious fun in trying to understand these overlays! And while understanding the file formats is a thing, there's no silver bullet for game logic, it will be either IDA or Ghidra and deciding on whether to attack the PSX or PC version. Each have pros and cons, PSX have save states which is nice for testing, PC de-compilation might be slightly easier to understand, etc... But most importantly, fun factor plays a big role, if there's none, you won't have/make the patience/time needed. In regards to your first post, from experience, PSX games intertwine game logic with rendering logic which makes it difficult to understand compared to today's coding standards. The pseudo C produced by de-compilers is sometimes good, sometimes terrible, e.g. swapping endianness might be all around making things even more messy than they already are. For instance, swapping a model might be impossible unless you edit the binary, if ever:
All in all, it totally depends of the game... e.g. look, in TM1 it was much of a surprise to me that Minion, the final boss is a specific node in the level's DMD as opposed to players which are all in CARS.DMD, i.e. basically it's tied to final stage. The addresses in the DMD format are in PSX memory space ( I believe that to be able to produce a valid DMD file, one should have some tool that checks for overlapping regions, much like Sony's TIMTool which shows how TIMs are stacked in VRAM in a graphical way. From memory,
It took me significant time to get that UX-friendly tool up but it was worth the trouble, you can click most nodes to get an instant preview. I'd say, focus on CARS.DMD as it's the smallest, once you understand all the parts making a car you can proceed to next step of trying to replace it. In this regards, the DMD format seems relatively agile due to the use of relative addresses all around, it should be possible to extend relatively easily. (not saying it's gonna be a piece of 🍰 though) ✌️😁 |
Beta Was this translation helpful? Give feedback.
-
@jdcodes2day any progress? 😁 |
Beta Was this translation helpful? Give feedback.
-
Sorry, I didn't get a notification about this message. I haven't been able to accomplish much, I've only done little things like get rid of machine gun overheating in TM1, converted Sweet Tooth's Lost Ending to a .STR and got it to play where the intro normally plays, and I made 30 FPS and 60 FPS codes for TM1 and TM2 that are compatible with emulators that have emulated CPU overclocking like DuckStation. They need a lot more work though because some jumps are impossible to make in TM1 above 60 FPS, and in TM2 at 60 FPS the car physics gets really messed up. Speaking of DuckStation I wish the debugger in it was like the one in no$psx lol |
Beta Was this translation helpful? Give feedback.
-
Possibly good news: I'm working on a hobby project of rebuilding sources of a PSX game from its symbols. Not there yet though, got symbol parsing right but still have to write the scripts that will generate the stuff... |
Beta Was this translation helpful? Give feedback.
-
Honestly, that sounds amazing. I've been renaming the functions manually by hand in the US Twisted Metal using the Japanese debug symbols whatnot and it has been a very tedious, grindy, time-consuming task. |
Beta Was this translation helpful? Give feedback.
-
You could have used this I wrote back then: https://github.com/aybe/dumpsym/releases/tag/latest Anyway, I have some more bad news... Looked at TM symbols and well, they are not as fully featured as in Hi-Octane. So it's a yes but it's a no at the same time... my idea still applies to it but it won't be as appealing as Hi-Octane looks like it will be. TBC |
Beta Was this translation helpful? Give feedback.
-
Hi, I have an insatiable interest for the old SingleTrac engines on the PSX and I'm looking to hopefully see about having them fully reverse engineered, disassembled, decompiled, documented, etc, hopefully before the end of this decade. I'm wondering about small modding tasks for now like maybe doing what someone did with the PC ports of Twisted Metal 1 and 2, and trying to swap Shadow's model in TM2 with Darkside's model from TM1 as a test. If you have a Discord I'd love to talk about it further on there if possible please, thanks.
Beta Was this translation helpful? Give feedback.
All reactions