Echt? Wär mir noch nie aufgefallen...

Hab jetzt gerade in den Programmcode der Change Switch Funktion gekuckt, es kann eigentlich nicht nicht funktionieren...

Assemblycode:
Code:
004ACAE0     loc_004ACAE0:                     ; CODE XREF: ProcChangeSwitch+78↑j
004ACAE0 00C                 mov     eax, ds:LcfgSystem
004ACAE5 00C                 mov     eax, [eax]
004ACAE7 00C                 mov     edx, esi
004ACAE9 00C                 call    GetSwitch
004ACAE9
004ACAEE 00C                 mov     ecx, eax
004ACAF0 00C                 xor     cl, 1
004ACAF3 00C                 mov     eax, ds:LcfgSystem
004ACAF8 00C                 mov     eax, [eax]
004ACAFA 00C                 mov     edx, esi
004ACAFC 00C                 call    SetSwitch
Pseudocode:
Code:
// Der RPG Maker verwendet 8-Bit booleans, 1 = true, 0 = false
uint8_t value = getSwitch(switchId);
value ^= 1;  // ^ ist XOR, wer es nicht weiß
setSwitch(switchId, value);
So wird das gemacht, und das kann ja eigentlich nicht schiefgehen... oO

Habt ihr irgendwie ein Beispielprojekt wo es nicht funzt? Ich würde es mir gerne mal ansehen...