Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Aug 27, 2016 13:17:27 GMT -8
Exactly, there's tons of different applications for editing *.EXE resources. The link I've provided earlier was literally my first hit after googling. I've been using the program called "Resource Editor" myself for a while and it's working quite nicely, although its name is so surprisingly generic that it'd be quite a challenge to actually google it and find it
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Aug 27, 2016 8:45:58 GMT -8
That's great news! Glad I could help
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Aug 26, 2016 15:00:35 GMT -8
Unfortunately the texts for all help boxes are not stored in the GRUNTZ.REZ file, so you cannot modify it easily. The text is stored in the Gruntz.exe file itself and therefore it's way more difficult and cumbersome to play with them. If you still want to change these texts, you have to download any resource editor (this one for example: www.resedit.net ). Then open the Gruntz.exe file in the resource editor and look for the String Table. From there changing the texts should be rather straightforward. After altering the exe file you have to save it and you're done. IMPORTANT: don't forget to back up your original Gruntz.exe file in case you want to revert the changes!
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Aug 21, 2016 10:33:48 GMT -8
Haha, I'm aware of that And for all the programmers out there, I have good news - I have ambitious plans of creating a series of articles on my programming blog (link in the signature). Gruntz-related articles that is. They will containt pretty much everything the Gruntz (and to some extent - Claw) community has come up with. Most of it will be obviously related to programming and reverse engineering. All format specifications (PID, WWD, ...), some tools required to edit them, and some background stories on the subject. It'll be filled with the whole process of me figuring out all the juicy, programming details, I won't be just presenting the results. Some articles will even be illustrated. The articles will be available in two languages - English and Polish. I first write a Polish version of an article and then translate it. Only then I'll be releasing a full and complete article (unless some will have objections and would love to decipher the Polish version of the article or admire the illustrations ). At this point I have two articles ready for translation; one of them covers the ATTRIBUTEZ.TXT file in great detail. Others will be about: CHEATZ.TXT, how to dig up the cheat codes from the binary file, how cheat codes actually work in the game itself (how to take advantage of that) ... as I said, it's quite ambitious. We'll see how it all plays out and how many topics I will cover in the end. Oh how I'd love to have more time for this project than I already have ... Cheers
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Aug 4, 2016 12:44:17 GMT -8
I've spent few hours on decrypting CHEATZ.TXT and here are the results. Only recently I've been playing with disassembling Gruntz and looking at its machine code, it's pretty rewarding at the times. The problem with CHEATZ.TXT though is that the game is NOT loading that file. Ever. And so I couldn't peek at how it's decrypting the file. I had to come up with something else. Skipping all juicy and programming details, I've deduced that the file is encrypted with the same algorithm as in the case of ATTRIBUTEZ.TXT file (the blowfish symmetric encryption), but with a different key. The encryption key for CHEATZ.TXT is: " K3V1". I had to brute-force the key. Just as a reminder, the encryption key for ATTRIBUTEZ.TXT was "1212". It contains cheat codes, as the file name would suggest. And just like with ATTRIBUTEZ.TXT, the actual cheat codes were additionally encoded within the file (note that I said it was "encoding", not "encryption"). After encoding all the cheat codes, the following list appeared: pastebin.com/WbQ81T2RIt contains 6 cheat codes. Let me reiterate: this file is NOT loaded by the game and thus the cheat codes mentioned there are not accessible from within the game. Few of these cheat codes were stripped from the final version of the game. And these are: - the Warpstone cheat code
- creation of goo puddlez on demand
- the ability to clear all cheat codes, so that you are able to save the game after using any major cheats
Other three remained in the final version of the game, though under different names. These are: - mplc -> mpilovethisgame
- mppd -> mpihatethisgame
- mpfire -> mpletsblowstuffup
I've experimentally enabled these three new cheat codes and they work wonderfully! I'm in the process of making tools that would enable these cheats. They will also make entering any cheat codes way, way, way easier. But more on that - later
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Aug 4, 2016 11:20:59 GMT -8
...do I get this right: There is only one secret level in the REZ, but there is a trigger in every level? Yup, that is correct! That means, that if we add 31 other secret levels into GRUNTZ.REZ with proper naming, the game will load them just fine when an appropriate SecretLevelTrigger gets triggered.
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Jul 27, 2016 10:58:38 GMT -8
Here's funny thing - this value turns out to be fully customizable. The values are defined in ATTRIBUTEZ.TXT (further information here: gooroosgruntz.proboards.com/post/22450/thread). Below's the listing where all mobile toys are defined. So you can modify how long a toy lasts or how fast they can travel. [BABYWALKERGRUNT] ToyTime = (DWORD)5000 TimePerTile = (DWORD)1200 ToyTiles = (DWORD)1
[BIGWHEELGRUNT] ToyTime = (DWORD)15000 TimePerTile = (DWORD)600 ToyTiles = (DWORD)3
[GOKARTGRUNT] ToyTime = (DWORD)20000 TimePerTile = (DWORD)600 ToyTiles = (DWORD)4
[POGOSTICKGRUNT] ToyTime = (DWORD)10000 TimePerTile = (DWORD)600 ToyTiles = (DWORD)2
The ToyTiles parameter defines how many tiles a toy is supposed to cover before a new direction would be picked.
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Jul 23, 2016 12:29:27 GMT -8
Hello, here I finally find an Iso but in English, there did it are French patch? otherwise or to download French Iso? thank you Searching for a French version of Gruntz might be hard. As far as I know there are no active French users on the forum at this time. Or are there? If you'd find French players, you could just ask them nicely whether they'd be willing to share the game with you. If that's not an option, well - you're out of luck. Perhaps if you googled really hard you would find such version of the game in the deepest and darkest corners of the internet. But the chances of succeeding are slim. However, when I come to think of it, we might already be in possession of tools required to create a new version of the game in a different language. That would require new fonts (*.FNT files in the main directory), altered string table in the EXE file, translated texts in GRUNTZ.REZ (including plain text, new PCX and new PID files) and new voiceovers in GRUNTZ.VRZ. Sounds like a good full-time and well paid job to me though
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Jul 22, 2016 12:09:03 GMT -8
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Jul 22, 2016 11:57:41 GMT -8
One day I've decided to find out what the naming pattern for secret levels actually is. After a week-or-so of research I can finally say that secret levels are, well, not really that secret after all. When the name of the only secret level was revealed (LEVEL101.WWD) the first assumption was that it's simply the level number increased by 100. That was the correct assumption. I've updated the GRUNTZ.REZ archive with the file LEVEL102.WWD and I have successfully loaded the level via the SecretLevelTrigger from the second level in the Rocky Roadz area. The same applies to every other level in all the areas. Standard levels have IDs 01-32 (01 - 04 are the Rocky Roadz levels, 05 - 08 are the Gruntziclez levels and so on) and thus all the secret levels have names LEVEL101.WWD - LEVEL132.WWD (of course the files themselves should be placed in their corresponding AREA# folders). Why NO ONE has ever succeeded at applying custom secret levels with such simple and obvious naming pattern - I have genuinely no idea. My only assumption is, that the files were injected to the archive with lowercase names - the game engine is case sensitive when loading the archive from disk to memory. Any change to the name LEVEL###.WWD will result in this level not being loaded properly. So watch out for that. If that was the case ... ah well. It'd be quite embarrassing to know that for so many years the Gruntz community was convinced there was a problem with the naming pattern while it was just a matter of a simple typo.
As a side note, since I made secret levels finally work, I've decided to experiment with them a little. And so: - I put a SecretLevelTrigger in a secret level itself and triggered it. Unfortunately it didn't jump to the level named LEVEL2##.WWD as I had hoped - it just reloaded the same secret level I was in. The game remembers the original ID of the base level. If the player fails in the secret level, the original base level is then loaded. So under the hood the player is actually still in the base level when playing a secret level.
- The training levels also have a unique ID, just like the levels 01-32. Those IDs are ... 37-40 and the game uses them internally. If you decide to put SecretLevelTriggers in those levels and decide to (coincidentally) trigger them, the game would then load one of the levels named LEVEL137.WWD - LEVEL140.WWD.
Happy Gruntzing people. One of the greatest mysteries has just been solved! Cheers
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Jul 18, 2016 13:14:27 GMT -8
Well, surely a level is time consuming when you try to break everything and leave only rubble behind. One of the charms of beta testing And I remember I did all I could in order to break the level apart. Like operating multiple Gruntz at the same time and managing to do something in an extremely narrow gap of time. Ah, those were the times, I'm fond of these little challenges There's no Custom Level I wouldn't obliterate and turn to ashes
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Jul 18, 2016 12:56:34 GMT -8
It's one of those things you get used to rather quickly and don't think of at all. Indeed, after all those years of playing the game, I can't imagine Big Wheelz changing direction every tile like Baby Walkers do, it just feels so unnatural! And yet it didn't even cross my mind that there would be such a surprising pattern behind it - deep inside it just felt "random" and that's all I had to say on that matter.
It's a really great find! Especially the one that makes you wonder: what other mundane game elements (which we pass by every play without putting much thought into them) incorporate some interesting things and surprising patters in them? What if we just pay attention to the most pedestrian elements and see them in a different light, think of them in a different context?
Man, it just ... made me think.
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Jul 18, 2016 9:18:42 GMT -8
I have on my disk one half finished Custom Level with quite a crafty idea and a devious title Though I bet it won't be finished in a long time, since I have lots of more appealing tasks to complete first. Gruntzy tasks that is.
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Jul 18, 2016 8:52:43 GMT -8
Just for the completeness of the thread: recently it's been extremely important for me to be able to run the game in a windowed mode. And so, after trying a dozen of programs I've found dgVoodoo2 to work really well for me, with no problems whatsoever. I've noticed this application is mentioned in the thread regarding Windows 10. I'm working on Windows 7, so I don't have any problems running the game. However the application proved to be really handy nonetheless
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Nov 19, 2015 11:24:13 GMT -8
If I recall correctly, the Shovel Grunt is stuck in the Boxing Glovez area only temporarily. Once the Secret Switch is activated, watch the immediate surroundings of the Shovel Grunt and you'll see a passage opening.
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Nov 18, 2015 6:15:02 GMT -8
Unfortunately the only legitimate way to get that coin is to step through the toggling bridges. And yes - the timing there is unforgiving.
And why exactly should anyone email you instead of replying here? Also - giving out your email address to the public is not really a wise choice.
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Nov 15, 2015 4:27:36 GMT -8
Yes, sorry I forgot to clarify what assumptions I had made: since the plane is expanding left/upwards, all objects and tiles will shift right/downwards. One tile is 32 pixels wide, so if I added one row of tiles at the top of the map, all objects would be shifted down by 32 pixels. That would be quite straightforward and fully automatic and there's nothing to be added here. So not only EyeCandies would be shifted, but also TileTriggers, Teleporters, GooPuddles ... pretty much every single object on the map. However some of the objects have tile OR pixel-based coordinates hardcoded into their logic properties. All of them would immediately become invalid since they would be still referring to old positions of the old plane. Now I would have to catch all the relevant objects and process them separately. And that's the list in the original post. The important thing to note here is that this list doesn't consist of objects only - see the World Settings and the pixel coordinates of the starting screen for instance. SpotLight (if radius currently at maximum ... to new radius) I don't quite understand this one. As far as I know SpotLights don't have the maximum radius. Or perhaps you meant the check whether the radius goes out of the plane boundaries? expanding size: generate (semi-)random Ground Tilez 1 through 8 (or 9 through 16) in the new area perhaps analyzing tile statistics to determine which set to use Changing graphics set? Validate Tile numbers for the new graphics set. Particularly for CoveredPowerupz and Giant Rockz. (This is just one of those things I have been thinking about since the PacMan series.) Tile randomizer is yet another great idea for an application! There would be even a configuration file for associating weights with particular tiles. Let's take Gruntz in Space for instance: it would be possible for craters to be generated in place of only 20% of 1-9 tiles. It all would be fully configurable and could be chained with the application for expanding planes. Changing a graphics set is a little more complicated than this, as this would require adding/removing planes on the fly, changing image sets ... even then the designer would realign all the EyeCandies, since lots of them will be of a different size now and would simply not match the new setting. I don't think there is a simple recipe for such one-to-one conversion. But if someone provides me with a reasonable algorithm, I might think on making such an app afterwards. I wonder though how many people would use it anyways - such a tool would be far more sophisticated than the former (generic) ones.
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Nov 12, 2015 12:40:12 GMT -8
Expanding the plane right- or downwards is plain and easy. But there have been numerous moments where I had started designing a level just too much to the top or to the left. I've got a loose idea lumbering around in my head of making a program that would do just that - expand the level in all four cardinal directions. Don't take it for granted though, just treat it as a loose thought for now. Now if I would ever come around doing that at some point in the future, however distant, I'd need a comprehensive list of things to change when moving everything around. Switches and their IDs, updating the pyramids/secret tiles are the most obvious things. Unfortunately I would have to have a full and exhaustive list of such things. Of everything. I just can't wrap my head around it, but perhaps the community itself could give me a hand at assembling such a list Surely reading the entire GLE manual or the GLE indices on the forums will more than suffice. Perhaps once I decide to start working on it I'll try to read through it all, but it's gonna be a long, long read. If somebody is willing to do that for me (which would genuinely surprise me), he'd be more than welcome. However, I rather expect people to add to the list only once something interesting pops up in their minds. At this point I have the following: - TileTriggerSwitch - calculate new IDs + update the IDs in the Rect (Orange Switches)
- TileTrigger & TileSecretTrigger & CheckpointTrigger - update the IDs of the switches in the Rect
- Teleporter & SecretTeleporterTrigger - update the destinations
- GlobalAmbientSound - calculate new bounds of the ambient sound
- RainCloud & UFO - update the route in the Rect
- KitchenSlime - update the new opposite corner of the rectangle a slime would follow
- GruntStartingPoint(Object Guard) - update the tile coordinates the Grunt is circling
- World Settings - new Start position
Any ideas what I am missing? Cheers
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Nov 12, 2015 11:59:43 GMT -8
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Nov 12, 2015 11:26:24 GMT -8
I could swear there was an option in GLE to add planes to the level ... but can't find it anywhere. You can delete them permanently though, which is quite odd.
I'm 100% sure that *.WWD file format allows for multiple planes to be defined and it can successfully be done by manually editing the structure of a binary file. The Claw for instance utilizes plenty of planes simultaneously. I've never tried it though. And since that is/would possible, you could easily add up to three planes to the level: a moving backdrop, a helper plane for transparent tiles and the action plane. The game engine is likely to go bonkers though, but again: I've never tried it.
It's worth a try nonetheless.
|
|