DAZZLE'S UPGRADE PACK

If you haven't already done so, upgrade your game by downloading Dazzle's all-in-one upgrade pack. It comes with everything you need for today's servers. Does your blue bar freeze when joining servers? Do you lag in games? Do you get an annoying siren in Phobik's Servers? This is what you need. CLICK HERE TO DOWNLOAD.

Any ways of bringing TT back?

Discuss anything.

Moderators: Admin, Moderator

User avatar
ThatGuySam
Site Admin
Site Admin
Posts: 83
Joined: Sun Oct 28, 2012 9:54 am
Location: Hertfordshire, England

Re: Any ways of bringing TT back?

Post by ThatGuySam »

What's the plan if we do get the source code?
Have Fun Always
Sam

Has been playing TT Since: 28th October 2012
Join ThinkTanks' Discord Server: https://discord.gg/H7fGD6E
User avatar
Hyper-X
New Brainjar
New Brainjar
Posts: 81
Joined: Wed May 07, 2008 8:26 pm
Location: California, USA
Contact:

Re: Any ways of bringing TT back?

Post by Hyper-X »

Th eplan would be to update it to the newest version of TGE and update everything from assets to gamemodes to UI. completely revitalize the game and open source it.
Friendship is like peeing your pants, everyone can see it, but only you get that warm feeling it brings.
Image
User avatar
ThatGuySam
Site Admin
Site Admin
Posts: 83
Joined: Sun Oct 28, 2012 9:54 am
Location: Hertfordshire, England

Re: Any ways of bringing TT back?

Post by ThatGuySam »

Cool! :thumbup:

Maybe try and start a Kickstarter project if you need to buy it?

https://www.kickstarter.com/start
Have Fun Always
Sam

Has been playing TT Since: 28th October 2012
Join ThinkTanks' Discord Server: https://discord.gg/H7fGD6E
User avatar
SliMShaDy
New Brainjar
New Brainjar
Posts: 65
Joined: Sun May 18, 2008 5:26 pm

Re: Any ways of bringing TT back?

Post by SliMShaDy »

Well HELLO Ladies and Germs, how have you all been...it's been so long and I don't know why I was typing this website even though I wasn't thinking about it. Anyways this place still looks dead and my old iP is still banned on this site lol. This is why we lost so many players by banning them here or in the game. I have been playing nothing but World of Tanks which is why some moved on to better games I guess. Even though I want to instal/check in on the game I hate to see no one on it playing. So, who still play's this cartoon game now a days?

-woo!-woohoo-TankRaT-
Image

Uploaded with ImageShack.us
ArtCrazy
Veteran Member
Veteran Member
Posts: 290
Joined: Fri Dec 29, 2006 10:14 am

Re: Any ways of bringing TT back?

Post by ArtCrazy »

It's sad that the game is dead, it was a huge part of my childhood. It's the only community left where I still use my ancient nickname "ArtCrazy".

To be fair, the source code isn't strictly necessary for a lot of things. The executable isn't obfuscated in any way (especially if you find a cracked version *somewhere*), so with my current skills a "ThinkTanks Script Extender" wouldn't be impossible. Looking at the open-sourced Torque 3D code, adding extra scripting functionality doesn't seem too hard, mostly a matter of figuring out where to hook!

The DSO format is basically "Torque Script bytecode", and could also be easily disassembled and/or decompiled given some time as there's almost a 1:1 relationship to the actual script (there is a project called Untorque that does that for newer T3D versions; sadly it's not compatible with TT). The only difficulty here would be the fact that the DSO bytecode version used by TT is considerably older than the current T3D version, so the bytecode specification probably differs quite a bit. Still, that could be easily reverse engineered since we can create/compile arbitrary .cs files with only specific commands, and look at the output.

It could even be possible, given enough work, to reverse engineer TT specifics (GUI, DSO, tank treads, and all other things incompatible with T3D), decompile all torque script files, and finally import it into the newer open-sourced engine version. Of course, that could be in a legally gray area unless we had permission from IA/GG (I guess there'd be no issue if we kept it strictly non-profit and/or forced the user to prove they own a copy of ThinkTanks, but IANAL), and I probably don't have enough C++ reverse engineering experience to pull it off.

I can only imagine how far we would have gotten if 10 years ago I would have had the programming/reverse engineering knowledge I do today. And I don't doubt that other modders are in a similar situation.

If I had time, I might actually try and play around with this stuff, get my reverse engineering skills back up to speed (haven't done a game mod since I patched Age of Empires 2 to support any resolution 4 or so years ago; and then contributed the code to the community patch Userpatch when that started being used). Thing is, I'm currently finishing my Master's Thesis (1 month and a half to go!), and that + my job search has priority.
User avatar
CB
Site Admin
Site Admin
Posts: 1277
Joined: Mon Dec 25, 2006 9:11 pm
Location: Pennsylvania
Contact:

Re: Any ways of bringing TT back?

Post by CB »

Hi AC! Well good luck with the masters and landing a good job.
When you get that accomplished we will still be here and would love to see this moved to T3D. We still have a core of players about 20 or so. I bet many older players would return for the 2nd coming Think Tanks! I know you like the challenge so I challenge you :)

CB
They bought their tickets, they knew what they were getting into. I say, let 'em crash.


Image





.

Red still sucks!
User avatar
ThatGuySam
Site Admin
Site Admin
Posts: 83
Joined: Sun Oct 28, 2012 9:54 am
Location: Hertfordshire, England

Re: Any ways of bringing TT back?

Post by ThatGuySam »

@ArtCrazy Nice to see you again! :tankerwinks: As CB said, good luck with the masters!
It would be great to see this game revived with a modern feel! :)
Have Fun Always
Sam

Has been playing TT Since: 28th October 2012
Join ThinkTanks' Discord Server: https://discord.gg/H7fGD6E
ArtCrazy
Veteran Member
Veteran Member
Posts: 290
Joined: Fri Dec 29, 2006 10:14 am

Re: Any ways of bringing TT back?

Post by ArtCrazy »

Yeah, I'll give it a try one of these days, figure out if my initial estimates are correct, and how much work it would take to do all the stuff I mentioned. I'd like to at least build a TT DSO decompiler or something - not necessarily to get much use out of it, considering how dead the game is - mostly out of curiosity, since I used to spend ages trying to figure out how to do stuff in this game years ago, and I've always wanted to know exactly how much I had been able to figure out back then!

Still, real life stuff takes priority (thesis and job search), so don't expect anything any time soon! And no guarantees I'll ever be able to get anything working - but I want to at least try ;)

EDIT: So, I had some time today and decided to check how different the TT DSO implementation is from the latest T3D engine. It's quite different, but in about 4 hours work I've been able to reverse engineer the opcodes list, by comparing the disassembled version in the ThinkTanks executable with the latest T3D engine's source code. There are a ton of differences, and as such I'm not 100% sure the mapping is correct (and there's 2 opcodes for which I can't find a corresponding one in T3D, plus 3 opcodes which don't seem to do anything).

Assuming I had more time, the next step would be to implement a disassembler, using this opcode mapping (wouldn't take long, most of the code can be borrowed from the T3D sources). Then, make very simple "very few instructions" .cs files, compile them, and see what the disassembly looks like. Knowing the script that went into it, the opcode mapping could easily be corrected.

Anyways, if anyone is interested in picking up where I've stopped, this is my current opcode mapping (corresponds to the enum with the same name in Engine/source/console/compiler.h):

Code: Select all

enum CompiledInstructions
{
  OP_FUNC_DECL = 0,
  OP_CREATE_OBJECT = 1,
  OP_2_INEXISTENT = 2,
  OP_3_INEXISTENT = 3,
  OP_ADD_OBJECT = 4,
  OP_END_OBJECT = 5,
  OP_JMPIFFNOT = 6,
  OP_JMPIFNOT = 7,
  OP_JMPIFF = 8,
  OP_JMPIF = 9,
  OP_JMPIFNOT_NP = 10,
  OP_JMPIF_NP = 11,
  OP_JMP = 12,
  OP_INVALID = 13,
  OP_CMPEQ = 14,
  OP_CMPGR = 15,
  OP_CMPGE = 16,
  OP_CMPLT = 17,
  OP_CMPLE = 18,
  OP_CMPNE = 19,
  OP_XOR = 20,
  OP_MOD = 21,
  OP_BITAND = 22,
  OP_BITOR = 23,
  OP_NOT = 24,
  OP_NOTF = 25,
  OP_ONESCOMPLEMENT = 26,
  OP_SHR = 27,
  OP_SHL = 28,
  OP_AND = 29,
  OP_OR = 30,
  OP_ADD = 31,
  OP_SUB = 32,
  OP_MUL = 33,
  OP_DIV = 34,
  OP_NEG = 35,
  OP_SETCURVAR = 36,
  OP_SETCURVAR_CREATE = 37,
  OP_SETCURVAR_ARRAY = 38,
  OP_SETCURVAR_ARRAY_CREATE = 39,
  OP_LOADVAR_UINT = 40,
  OP_LOADVAR_FLT = 41,
  OP_LOADVAR_STR = 42,
  OP_LOADVAR_VAR = 43,
  OP_SAVEVAR_UINT = 44,
  OP_SAVEVAR_FLT = 45,
  OP_SAVEVAR_STR = 46,
  OP_SAVEVAR_VAR = 47,
  OP_30_UNKNOWN = 48,
  OP_31_UNKNOWN = 49,
  OP_LOADFIELD_UINT = 50,
  OP_LOADFIELD_FLT = 51,
  OP_LOADFIELD_STR = 52,
  OP_SAVEFIELD_UINT = 53,
  OP_SAVEFIELD_FLT = 54,
  OP_SAVEFIELD_STR = 55,
  OP_STR_TO_UINT = 56,
  OP_STR_TO_FLT = 57,
  OP_STR_TO_NONE = 58,
  OP_FLT_TO_UINT = 59,
  OP_FLT_TO_STR = 60,
  OP_FLT_TO_NONE = 61,
  OP_UINT_TO_FLT = 62,
  OP_UINT_TO_STR = 63,
  OP_UINT_TO_NONE = 64,
  OP_LOADIMMED_UINT = 65,
  OP_LOADIMMED_FLT = 66,
  OP_TAG_TO_STR = 67,
  OP_LOADIMMED_STR = 68,
  OP_LOADIMMED_IDENT = 69,
  OP_CALLFUNC_RESOLVE = 70,
  OP_CALLFUNC = 71,
  OP_42_INEXISTENT = 72,
  OP_ADVANCE_STR = 73,
  OP_ADVANCE_STR_APPENDCHAR = 74,
  OP_ADVANCE_STR_COMMA = 75,
  OP_ADVANCE_STR_NUL = 76,
  OP_REWIND_STR = 77,
  OP_TERMINATE_REWIND_STR = 78,
  OP_COMPARE_STR = 79,
  OP_PUSH = 80,
  OP_PUSH_UINT = 81,
  OP_PUSH_FLT = 82,
  OP_PUSH_VAR = 83,
  OP_PUSH_FRAME = 84,
};
The switch statement inside CodeBlock::exec (Engine/source/console/compiledEval.cpp), which is the actual bytecode interpreter, and was what I used to reverse engineer the above mappings, is located at ThinkTanks.exe memory address 0x0040EC75 (on Windows).

tl;dr: The DSO disassembler and decompiler should be pretty easy to get working, so we're in luck at least on that front!
ArtCrazy
Veteran Member
Veteran Member
Posts: 290
Joined: Fri Dec 29, 2006 10:14 am

Re: Any ways of bringing TT back?

Post by ArtCrazy »

So... Bored by the writing of my thesis, I decided to take the weekend off working on the DSO decompiler, and it's more or less done (with some bugs). Read more here!

That's all from me for a few months, though! I suggest someone plays around with it, and sees what they can find. Specifically, I'm curious to know how much works if you decompile all ThinkTanks scripts and delete the DSO files (i.e., if the decompiler is working perfectly!) - if not the case, then there's probably some bugs for some very weird cases. In addition, assuming everything works, I'd be interested in knowing what happens if you decompile everything, and replace the ThinkTanks executable with one taken from the latest Torque 3D version. Most things should not work, but I wouldn't be surprised if the menus worked more or less correctly! (Which would be great news)
User avatar
Hyper-X
New Brainjar
New Brainjar
Posts: 81
Joined: Wed May 07, 2008 8:26 pm
Location: California, USA
Contact:

Re: Any ways of bringing TT back?

Post by Hyper-X »

I will absolutely take a look at this, and as an update, still no reply from IAC. They will not release the IP it seems and so the work is in our hands. This is amazing work ArtCrazy, then again, I'm not surprised, you have always been known for your awesome work! :thumbup:
Friendship is like peeing your pants, everyone can see it, but only you get that warm feeling it brings.
Image
Post Reply