8th Wonder of the World: Assistant enhancment

01 Jan 1970 - Nithanim

The following modifications are Cheat Engine scripts and only work with 8th Wonder Of The World/Weltwunder version 1.00 Nov 29 2003. One increases the limit of boys one can request which is normally limited to 20. The other script fixes the oversight that the ctrl key can be used to increase the number 10 at a time instead of one. For example this is possible in carts with resources but for some reason not in the assistant.

Higher limit for boys

[ENABLE]
//code from here to '[DISABLE]' will be used to enable
alloc(newmem,25)
label(returnhere)
label(originalcode)
label(exit)

newmem:
//esi: limit
//ecx: user requested boy quantity
mov esi,#100 //there is another check somewhere which seems to forbid higher values; it is not 100 but some higher value I can't remember

originalcode:
cmp ecx,esi
jnge Game.exe+18C4A
mov ecx,esi

exit:
jmp returnhere

"Game.exe"+18C44:
jmp newmem
nop
returnhere:

 
[DISABLE]
//code from here till the end of the code will be used to disable
dealloc(newmem)
"Game.exe"+18C44:
cmp ecx,esi
jnge Game.exe+18C4A
mov ecx,esi
//Alt: db 3B CE 7C 02 8B CE

Ctrl for boys

[ENABLE]
alloc(newmem,100)
alloc(storage,1)
label(returnhere)
label(notpressed)

newmem:
//ecx: new value
//edx: old value

mov ecx,[ebp+10] //original code

mov [storage],ecx


pushad
pushfd
push 11 //ctrl
call GetAsyncKeyState
shr ax,#15
cmp ax,1
jne notpressed


push ebx
mov ebx,[storage]
pushfd
imul ebx,ebx,#10
popfd
mov [storage],ebx
pop ebx


notpressed:
popfd
popad

mov ecx,[storage]
add ecx,edx //original code


jmp returnhere


//at original place
"Game.exe"+18C39:
jmp newmem
returnhere:


[DISABLE]
dealloc(newmem)
dealloc(storage)
"Game.exe"+18C39:
mov ecx,[ebp+10]
add ecx,edx
//Alt: db 8B 4D 10 01 D1