-
Posts
6190 -
Joined
-
Last visited
Everything posted by Nyerguds
-
Let me put it this way. HE and fire have the same damage level vs tank armour (3), namely 1/4th. Flame tank has a base damage of 2x50. Chem warrior has a base damage of 70. So your flame tank does 24 damage every double-burst (50/4, rounded down, is 12, x2). Three chem warriors, on the other hand, which can fire from the same cell, do 70/4, x3 = 17 x3 = 51. Their ROF is a little longer (70 vs 50), but that doesn't compensate for the more than double damage they do. Not to mention, the medium tank will do much more damage to tank armour than to infantry, and infantry gets an additional 50% damage decrease when prone Also, for some reason I can't quite fathom from the data, it seems chem spray is less effective against infantry. So I prefer keeping my flame tanks against enemy infantry. Especially grenadiers. Ohh. You mean, don't provide a shortcut, but actually force the player to fight through those turrets? Ugh. There's a reason they simply connected the lower and upper part in the N64 version. There, you can use the lower team to take out the defences at the base entrance... and there's no gunboat
-
I've won Death Squad without losing a single unit Actually, they are built for that. Chem warriors are excellent anti-armour. Just don't use the flame tanks. It's better if you remember the way triggers work - there's nothing stopping you from rushing some DIFFERENT unit to the 'pickup' spot while another one grabs the crate :laugh: Hee, yes, that's a tough one. ORCAs vs flame tanks FTW. Why? That'd just make it easier for the sake of making it easier. No thanks. Oh gods. Yes. That mission is horrible! :laugh: Though, if you handle it well, you can take over the whole Nod base One I found really really tough is the Nod one where you have to recapture the stealth tech. One of the two variants of that is rather easy because you can uncover your construction yard from the north, but the other one... good gods that's tough. You need to get through a narrow corridor to the base, take out two guard towers with bazookas, and rush everything in, and time is so neither the harvester nor the gunboat mess it all up. And during all that you also need to manage your southern troops across the river so they don't die while you're doing all that O_o
-
Tiberian Dawn hit points, cost and prerequisite limitation
Nyerguds replied to Mussuy's topic in Modding Discussion
By the way, the 'female voice' thing only works on civilians. Though in DOS C&C it could be used on non-civilian infantry to enable the Commando voice. (You know, if I ever get around to implementing this all in ini, that'd be a neat logic to bring back, so the voice sets aren't hardcoded anymore. IsCivilian + AlternateVoice = male civilian, IsCivilian + AlternateVoice = female civilian, and IsCivilian + AlternateVoice = Commando. Though, then there's still the hardcoded voice for Moebius...) -
Death Squad is definitely one of those missions where you just have to try and fail a hundred times to find a strategy that works. Though knowing that you can position the two stealth tanks so they can destroy the advanced comm center without being in the nearby AGT's range helps a lot The highest score on that mission, however, is achieved by destroying as few buildings as possible
-
Wow. I absolutely LOVE that mortar infantry!
-
What, by increasing the game speed? (N64 has no game speed regulation IIRC. The whole system was too slow for that)
-
The N64 ones are generally pretty easy, though. There's a guide for the Covert Ops floating around, which gives you hints on how to get through the mission (and, in Hell's Fury's case, how the mission is supposed to be played, because the briefing doesn't really explain.) So, yeah... this might help (a lot): http://nyerguds.arsaneus-design.com/cncstuff/cctxt/covertop.txt As Karpet already mentioned, Christo161's speed runs also reveal interesting exploits in a lot of the missions: https://www.youtube.com/user/Christo161/playlists (his "GDI/Nod playthrough" playlists include Covert Ops etc)
-
Tiberian Dawn hit points, cost and prerequisite limitation
Nyerguds replied to Mussuy's topic in Modding Discussion
Oh, another note on the jump labels. If I remember correctly, the tool has problems with labels that are substrings of other labels. So having a "jump10" and a "jump1" label might mess it up. If you'd add more code to this, I advice either suffixing them with more zeroes ("jump01"), or, the way I normally do it, actually make the labels relevant descriptions ("tmpl_prereq", "eye_prereq", etc). -
Yup. He's here to spy on CnCNet
-
Ah yes, could be. I'm at work; I don't have TS installed on this PC. Not really. UltATK made a completely intelligently-written post that exactly explained the issue
-
That's no way to respond to a helpful reply. There is indeed a known issue in Tiberian Sun with certain calculated animations, like the glow around lasers, the distortion of the disruptor beam, the ion cannon impact ripple effect etc, which crash the game when they're displayed on the very bottom area of the screen. Changing the graphics level makes the game no longer do certain of these effects, which vastly reduces the chance on these internal errors.
-
I assume this was about mouse scroll speed? And yeah, I recently updated my patch to make it correctly support the Origin version as well. EA didn't do a damn thing to actually make it all work properly; they basically just dumped The First Decade on Origin, and even then it's lacking their own official latest TFD patch
-
Even the looped ones are probably samples he recorded himself, though. I've seen many Youtube musicians these days who just record the repeating theme once and then make that auto-repeat
-
Wouldn't be so sure about that. Frank Klepacki is a professional drummer, too. He probably did use electronic drums for some stuff, but I know he recorded a lot of them too.
-
Tiberian Dawn hit points, cost and prerequisite limitation
Nyerguds replied to Mussuy's topic in Modding Discussion
There is no "unknown47" in my inis, and for good reason; that number is the internal ID number of the unit. It's the index you see at the top of my ini files. If you change that in a unit, then the reference it has to refer to itself is wrong, just like you can't put two identical keys in an ini list without it causing problems (or, as you noticed with the construction, downright ignoring the duplicate). The only thing you proved with that is something I already knew: the muzzle flash settings are looked up by unit ID number in some table in the exe. -
Tiberian Dawn hit points, cost and prerequisite limitation
Nyerguds replied to Mussuy's topic in Modding Discussion
Found the voice overrides: The indicated code needs to be replaced by 'nop' instructions. You can do it directly by replacing them by bytes '90'. 10F614: 5 bytes 10F714: 5 bytes And, to make them smoke when damaged like other vehicles: 10F800: 5 bytes -
Tiberian Dawn hit points, cost and prerequisite limitation
Nyerguds replied to Mussuy's topic in Modding Discussion
Oooh. That won't be as easy as it sounds; I haven't actually found the stuff that determines muzzle flash offsets O_o You're going to need help with that. Originally, before patch 1.06, they DID have a vehicle voice, see. I changed it because it sounded rather ridiculous on a visceroid, but the way I did that was simply by including them in the list of checked IDs for identifying units as "dinosaurs" in the "play response sound" code. I'll have to look this up to see where exactly the code is; it's probably already migrated into that new code segment. -
Oh, wow. "known" in "the ts community". Maybe you know names like PD and Hyper, in your TS community, then? We're not players, we're hackers and programmers... you know, the people allowing you people to play games that are more than 15 years old and have no official support whatsoever. I'm also a moderator in the cncnet lobby whenever I feel like it. There. I'm sticking out my own e-penis to measure along with you guys. Now I'm a hypocrite
-
Sorry. In This Thread: a bunch of humorless idiots comparing e-penises. Two rows below my name. Forum title. Check it If you don't know who I am, that's your own problem, really. But without me, CnCNet probably wouldn't even exist beyond a small experiment to play C&C95 online.
-
In This Thread: a bunch of idiots comparing e-penises. Keep it for the chat lobby, sheesh
-
Tiberian Dawn hit points, cost and prerequisite limitation
Nyerguds replied to Mussuy's topic in Modding Discussion
Using "assemble" in the asm tool will give you the bytes as text in the lower text pane. You just copy that, piece by piece, and in the hex editor, go to the offset you got for that piece. Now, in the hex editor, typically, you see the bytes on one side, and the corresponding text on the other. Usually bytes left, characters right. First of all, make sure you set your cursor in the bytes part. Then, make ABSOLUTELY SURE that your 'insert mode' is set to overwrite, and not insert, otherwise you're adding bytes to the exe, which royally messes up the jump/call locations of any code following your edited piece, which will, once again, make the program crash and burn when you try to launch it. (Yeah. That happens a whole lot when hacking ) So, yeah, always overwrite the existing bytes. Now, as to the actual inserting process... in pretty much any hex editor I've used, you can just paste the bytes text in the bytes part of the hex editor, and it'll work. Just make sure you're at the correct byte, that you have the first value of that byte selected (byte is 2 hex values, after all), and that it indeed overwrites when you paste. Save, exit, done. I looked through your code, and, well... it looks pretty good! Just one oddity: you start your custom code at 00680000, and then do +0E for every next one because each one is 0E bytes long... but after 0068002A you skip a bunch and go to 0068009C all of the sudden. Not sure why you do this. By the way, there's a way you can write that in the as tool so you don't have to calculate that at all: instead of giving EIPs for the pieces to jump to, you just use labels. The only disadvantage with this is that the tool is kind of primitive, and can't use labels under #eip's it hasn't read yet, meaning that 1. you need to put the jump-to part ABOVE the original code you replace, and 2. you instead need to calculate the jump back locations manually. Though since this is just "start address + 6" every time in your edits, it's really not hard You'd end up with this: #eip=00680000 ; 1C9600 jump1: push 1 ; old value for 'Unknown42' push 00400000h ; STNK new prerequisite push 6 ; value for Tech Level. jmp 004B6A69 jump2: push 1 ; old value for 'Unknown42' push 00400000h ; SSML new prerequisite push 6 ; value for Tech Level. jmp 004B6D4B jump3: push 0 ; old value for 'Unknown42' push 00400000h ; VICE new prerequisite push 6 ; value for Tech Level. jmp 004B6974 jump4: push 1 ; old value for 'something' push 0 ; old value for 'no idea' push 00040000h ; E4 new prerequisite jmp 0044E5AA jump5: push 1 ; old value for 'something' push 0 ; old value for 'no idea' push 00004000h ; E2 new prerequisite jmp 0044E506 jump6: push 0 ; old value for 'Unknown40' push 00400000h ; TMPL new prerequisite push 7 ; value for Tech Level. jmp 0041996B jump7: push 0 ; old value for 'Unknown40' push 00400000h ; EYE new prerequisite push 7 ; value for Tech Level. jmp 004199F1 jump8: push 1 ; old value for 'Unknown40' push 00400000h ; ATWR new prerequisite push 6 ; value for Tech Level. jmp 00419B77 jump9: push 1 ; old value for 'Unknown40' push 00400000h ; OBLI new prerequisite push 6 ; value for Tech Level. jmp 00419BFA #eip=004B6A63 ; A6E63 jmp .jump1 ; 5 bytes STNK jump nop ; 1 byte #eip=004B6D45 ; A7145 jmp .jump2 ; 5 bytes SSML jump nop ; 1 byte #eip=004B696E ; A6D6E jmp .jump3 ; 5 bytes VICE jump nop ; 1 byte #eip=0044E5A4 ; 3E9A4 jmp .jump4 ; 5 bytes E4 flamethrower jump nop ; 1 byte #eip=0044E500 ; 3E900 jmp .jump5 ; 5 bytes E2 grenadier jump nop ; 1 byte #eip=00419965 ; 9D65 jmp .jump6 ; 5 bytes TMPL jump nop ; 1 byte #eip=004199EB ; 9DEB jmp .jump7 ; 5 bytes EYE jump nop ; 1 byte #eip=00419B71 ; 9F71 jmp .jump8 ; 5 bytes ATWR jump nop ; 1 byte #eip=00419BF4 ; 9FF4 jmp .jump9 ; 5 bytes OBLI jump nop ; 1 byte As you see, there are no #eip definitions between the custom code at 00680000. This means the asm tool will give you one large block to paste for all your custom code in the new segment together Technically, in this case, you don't even need the 'nop' instructions in the original code, since they were for aligning the jump-back. If you just make sure to jump to the start of the next command (as I said, with three 2-byte push instructions replaced, that's always +6), it'll work. Still, it looks cleaner in the code if you leave the NOPs to clean up properly The only other remark I got is that the value before prerequisites for infantry is actually identified; it's "alternate voice (female civilian)"; indicated in the infantry ini as "FemaleCiv' -
The one where you start with just a bit of infantry and need to use an abandoned base of your own? You can literally just walk engineers into the enemy base, there
-
Tiberian Dawn hit points, cost and prerequisite limitation
Nyerguds replied to Mussuy's topic in Modding Discussion
You messed up that first eip; that should be 004B6A65. Think you duplicated the first '4'. But for the rest, that's indeed the location of the STNK prerequisites. You have another problem, though: a far-jmp instruction is FIVE bytes. The instruction you're replacing is TWO bytes. This means that the code you would put there is overwriting the Prerequisites, the TechLevel behind it, and then the start byte of the 5-byte instruction that gives the Stealth tank's filename reference. Your jumpback will end up in the middle of this third instruction, the CPU will try to interpret these bytes as the start of an instruction, and the program will crash and burn. O_o 004B6A65> [2 Bytes] push 10h ; prerequisites 004B6A67> [2 Bytes] push 5 ; multiplayer tech level 004B6A69> [5 Bytes] mov ecx, offset 004F8A42 ("STNK") ; reference to filename string Basically, any instructions you damage need to be migrated to the new spot, where you execute them along with your modified one before jumping back. The 1-byte 'nop' instructions (No Operation) are there to fill up the leftover bytes of instructions you damaged, so the jump back location is at the start of the next full instruction, to avoid the aforementioned "the program will crash and burn" problem caused by jumping back halfway into an instruction. Since "push" instructions are much easier to see in the hex editor (and you don't need a disassembler to figure out the actual command), I'd instead suggest starting one instruction earlier, and migrating three of the two-byte push instructions, meaning you take along the values indicated in the ini as Unknown42, Prerequisites and TechLevel. This will give you 6 bytes of free space in the original code; enough for your five-bytes jump out. You then align with one 'nop' instruction so you clean up the last half of the last push instruction you destroyed, neatly filling up all 6 bytes, and making sure your jumpback location is just before the next undamaged instruction. #eip=004B6A63 ; A6E63 jmp 00680000 ; 5 bytes ; cleaning up the rest of the 6 bytes nop ; 1 byte ; label indicating the jump back location jumpback1: #eip=00680000 ; 1C9600 push 1 ; old value for 'Unknown42' push 00400000h ; new prerequisite push 5 ; old value for Tech Level. jmp .jumpback1 -
I thought cncnet was c/c#? Is there even anything Java in there?
-
Tiberian Dawn hit points, cost and prerequisite limitation
Nyerguds replied to Mussuy's topic in Modding Discussion
Well, that's not exactly related to units and buildings; they're addresses in the exe file, so every single byte of program code and program data has one, really. As for how to find them... I'm not sure what you use for editing the game exe in general, but if you use my UGE modules, they should list the addresses of all the data you edit, as decimal numbers. If I just gave Kilk the start addresses for the units, then he probably used my ini files (which have the stats in the right order) and counted the 'push' command bytes (6A for a 1-byte push, 68 for a 4-byte push) to see where the property he needed was. Uhh... copy the bytes, and paste them in the exe with a hex editor Oh... be warned that, no matter which editor you use to edit C&C95.exe, the data will either look severely corrupted, or the editor will fail to load altogether, after you start messing with moving values around.