Skip to content

Attempt to add new spells and skills.

User Avatar
#2
Auto-translated
vasik

Let's look into this in a bit more detail, I don't quite understand.
I have the standard NCF.exe 3.1 version of the game, file size 12 783 kb - 13089792 bytes, which hasn't been modified by me since downloading. No Quantomas or anything else is present.

In other words, in my exe you mention bytes with ordinal numbers 0044bf40, 00446cb0, 00988с10
There are a total of 15292 occurrences of bit-221 in the file

Ok, let's dig through using this pattern.

DD 00 00 00 8D 44 24 24  50 8D 4C 24 1C 51 68 FC to 
DE 00 00 00 8D 44 24 24 50 8D 4C 24 1C 51 68 FC

If you put all this into an array of numbers to search the file, it's
[221, 0, 0, 0, 141, 68, 36, 36, 80, 141, 76, 36, 28, 81, 104, 252]
In my ncf exe, such a combination does not exist (at all)
I checked 0044bf40 +16 and for me it looks like this:

[221, 0, 0, 0, 141, 68, 36, 36, 80, 141, 76, 36, 28, 81, 104, 220]

where there is a difference in the last byte (DC).

B8 DD 00 00 00 C3 CC CC  CC CC CC CC CC CC CC CC to
B8 DE 00 00 00 C3 CC CC CC CC CC CC CC CC CC CC

Moving on. The combination above is
[184, 221, 0, 0, 0, 195, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204]
It only exists at byte number 4484272 or 0x446cb0, generally as you wrote.

28 E8 5A AC FF FF 8D 4C  24 24 51 8B 4E 04 68 DD to 
28 E8 5A AC FF FF 8D 4C 24 24 51 8B 4E 04 68 DE
The combination above is
[40, 232, 90, 172, 255, 255, 141, 76, 36, 36, 81, 139, 78, 4, 104, 221]
I don't have that one either. At address 00988c10 +16 it looks like this for me:
[40, 232, 138, 172, 255, 255, 141, 76, 36, 36, 81, 139, 78, 4, 104, 221]

it differs by the third byte (8а)

As a result, it turns out that the combination specified on the site might be incorrect. But apparently, if I change the specified bytes at numbers 0044bf40, 00446cb1, 00988с1f
(in normal decimal system these are 4505408, 4484273 and 9997343) from b'\xdd' to b'\xff'
+ change the xmls, then in theory the skill limit will be increased to 255. (as mentioned above, these are dummy skills without logic)

But thanks to your info, no special tools or Quantomas are needed for this change; I've figured that out.

Now, how do you bypass 255?
Let's start with the fact that nobody did anything with bits here, and all manipulations were performed exclusively with bytes (a bit is the smallest unit of information measurement in the binary system capable of taking one of two permissible values - 0 or 1, a component part of a byte... there are eight bits in a byte)!

What was provided in your link is absolutely correct, but that correctness applies exclusively to the Quantomas version, and it's foolish to look for a full signature consisting of 16 bytes in other versions!

All these bytes should be perceived not just as a set of bytes, but as machine code; for example, this signature:
B8 DD 00 00 00 C3 CC CC  CC CC CC CC CC CC CC CC to
B8 DE 00 00 00 C3 CC CC CC CC CC CC CC CC CC CC
B8 DD 00 00 00 C3 - all subsequent cc are no longer code

translated into assembler, this will be:

mov eax, 000000DDh - places the value 221 (decimal) into processor register EAX
retn - returns to the calling procedure
DD 00 00 00 8D 44 24 24  50 8D 4C 24 1C 51 68 FC to 
DE 00 00 00 8D 44 24 24 50 8D 4C 24 1C 51 68 FC
here, the code 68 is off-screen before DD

68 DD 00 00 00
8D 44 24 24
5D

push 000000DDh - places the value 221 (decimal) on the stack, i.e., puts the value in a memory cell pointed to by the ESP register
lea eax,[esp+24h] - loads into EAX the address of the value located at address ESP + 24h (36 decimal)
push eax - allocates space at the top of the stack and places the value from register EAX there

and so on.
28 E8 5A AC FF FF 8D 4C  24 24 51 8B 4E 04 68 DD to 
28 E8 5A AC FF FF 8D 4C 24 24 51 8B 4E 04 68 DE
Here, the code we need is located with three bytes - 00 00 00 off-screen before the code 68 DD

push 000000DDh - places the value 221 (decimal) on the stack, i.e., puts the value in a memory cell pointed to by the ESP register

---

Bypassing 255 is possible; you just need to enter something larger than 000000FFh... let's say 1000 - 000003E8h

But first, we need to find out if the esteemed comrade Gerter managed to add new functionality to the 222nd skill!
С уважением, Psatkha (Псатха)

---------------------------------------------

Неудачное планирование ведёт к неудаче ...

NCF - мод, добавляющий дополнительных существ в HeroesV 3.1