Patch Available - GMS 1.25
#1
Nexon posted a patch for GMS version 124 upgrade to version 125.
You may download this patch from their official site and begin [thread=13610]creating your pre-patcher[/thread] now.
Extractions and database updates will be forthcoming (if supported)!

Size: 39176814 (bytes) (37.36 mb)
Posted:

Want quick and easy notification of just patches & updates? Follow PatchWatcher on twitter, or visit http://www.PatchWatcher.net/ and monitor just the patches you're interested in.
Reply
#2
This was unexpected o_O I figured this would come later tomorrow. Cool! Can't wait to see the modifications they made to Kaiser.

....I lurk the boards too much these days.
Reply
#3
Already? o_O
Reply
#4
eets tiem
Reply
#5
i be so happy if it was 1 day early
Reply
#6
I can't wait to go get pwned by Magnus!!
Reply
#7
Yay, three characters that'll get Hypers.
Reply
#8
ChronosXIII Wrote:Yay, three characters that'll get Hypers.

Three? I think you mean 6? o.o;
Reply
#9
Justin Wrote:Three? I think you mean 6? o.o;

probably for him i guess.
Reply
#10
Oh, right, that makes sense. Derp.
Reply
#11
Wait so it's coming out... on Sunday?
Reply
#12
I will be incredibly impressed if this patch has Kaiser in it, and it is already available a day in advance.
Reply
#13
The day is nearly here!
Reply
#14
I knew we were getting this Monday, but Jesus. I can't remember the last time a patch was two days early (if ever).

Nexon's really stepping it up. On the weekend, no less. Wink
Reply
#15
[video=youtube;YociursCeto]http://www.youtube.com/watch?v=YociursCeto[/video]

EDIT: Checksum failure
Reply
#16
LOL seriously? *head desk* Nexon, this is the 2nd time in a row now.
Reply
#17
As I've said in the other thread - these checksum failures are not a mistake. It's the correct move by Nexon. They're doing it right.
Reply
#18
You're saying it's intentional? :f6: What for? to prevent people from manual patching?
Reply
#19
Well is not like we can't wait for a bit longer
Reply
#20
Justin Wrote:You're saying it's intentional? :f6: What for? to prevent people from manual patching?

They're testing the patch on their servers.

Remember the old days when we would patch instantly when they put it up, then they would change the patch? Making our checksums fail (because we don't have the algorithm) means that we can't patch, but they can because they know the algorithm. So this allows them to use their Tespia client to test the game and update the patch to the correct checksum algorithm when they're ready to push a patch public. I think this is a good reaction from Nexon due to a good amount of people that prefer pre-patching. Also, I'm sure Nexon prefers pre-patchers as well because it spreads out the bandwidth requirements. It's just annoying to them that we prepatched at first because there'd be a chance that we would get a patch we weren't meant to get.

EDIT: I've tried other standard checksum CRC seeds and all of them fail too. I think they're using a custom CRC seed and/or crc table generation algorithm so that they come up with a different CRC table. There are different ways you can affect the CRC, such as using XOR-in, XOR-out, and bit reflection.

EDIT EDIT: In case anyone was wondering, below is the CRC32 code that Nexon used to generate the crc table in their program and this code is part of NXPatcher. In the actual Nexon patching client it doesn't include the algorithm and instead has the entire crc table statically which consumes 4 * 256 = 1024 bytes.

EDIT EDIT EDIT: Technically, there is a way that I could still patch my game. I could tell my program to simply disregard the checksum and patch my game regardless. However, I think this would be an unwise move. Nexon did this for a reason.

Code:
void CChecksum::InitializeSbox()
{
    int remain;
    int dividend;
    int bit;

    for(dividend = 0; dividend < 256; dividend++)
    {
        remain = dividend << 24;
        for(bit = 0; bit < 8; bit++)
        {
            if(remain & 0x80000000)
            {
                remain = (remain << 1) ^ 0x04C11DB7;
            }
            else
            {
                remain = (remain << 1);
            }
        }
        this->sbox[dividend] = remain;
    }    
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)