What's new

Cheat Engine and RPG Maker


MrGable

Jungle Girl
Joined
Jun 23, 2014
Messages
42
Reputation score
18
While save editor works only with RPG XP type games I thought that maybe Cheat Engine would cut down grinding parts. But I can't find variables for gold or stats.

Is there some trick behind it or it's incompatible?
 

shortxdude

Jungle Girl
Joined
Feb 14, 2011
Messages
101
Reputation score
17
Re: Cheat Engine and RPG Maker

y = x * 2 + 1

y = what you tell cheat engine to look for

x = number shown in game
 

Aloysia

Demon Girl
Joined
Nov 25, 2014
Messages
61
Reputation score
1
Re: Cheat Engine and RPG Maker

Search for value*2+1. So if you're looking for 123 gold that you want to change, search for 247.

*edit lol beaten to the punch
 
OP
MrGable

MrGable

Jungle Girl
Joined
Jun 23, 2014
Messages
42
Reputation score
18
Re: Cheat Engine and RPG Maker

y = x * 2 + 1

y = what you tell cheat engine to look for

x = number shown in game
Aloysia said:
Search for value*2+1. So if you're looking for 123 gold that you want to change, search for 247.

*edit lol beaten to the punch
Thank you for answers : ).
 

BlueBurn

Mystic Girl
Joined
Sep 29, 2011
Messages
227
Reputation score
48
Re: Cheat Engine and RPG Maker

Make sure that any number you put in is a valid result of the equation x*2+1, meaning it has to be an odd number.

So for anything where you just want a very large number it's always safe to put in a bunch of 9's but it's going to crash your game if you put in like 100000 or something.
 

hyperk2

Demon Girl Pro
Joined
Apr 21, 2011
Messages
130
Reputation score
161
Re: Cheat Engine and RPG Maker

I feel like it'd be easier to just get the associated RPG Maker program (xp,vx, ect.) for whichever game, and then just mod the game itself. Like, add an npc that gives you money or equipment. Depending on the game, getting what you want could be really easy, or fairly complicated. I've seen games that have a really simple structure, and really really complicated ones.
 

habisain

Tentacle God
Joined
Jul 15, 2012
Messages
1,447
Reputation score
465
Re: Cheat Engine and RPG Maker

If you're prepared for a little one-off setup, Dark Bytes instructions at the Cheat Engine forums ( 3rd+5th post) will net you a custom type in Cheat Engine where you can simply use the actual values (rather than using the 2x+1 method). It's pretty handy.
 

BetaCodeX

Lurker
Joined
Sep 17, 2009
Messages
57
Reputation score
18
Re: Cheat Engine and RPG Maker

Just as a heads up, there are a number of games out there that have anti-cheat measures that make using Cheat Engine a drag (like MaiDenSnow). For everything else, it'd be slightly easier to simply give yourself exp in order to level up, rather than directly alter stats. Happy game-breaking!
 

PeanutGallery

Demon Girl Pro
Joined
Sep 14, 2014
Messages
102
Reputation score
17
Re: Cheat Engine and RPG Maker

1. Open CheatEngine
2. Right click on the value type dropdown box in the main window.
3. Select "Define new custom type (Auto Assembler)"
4. Paste the following code in:

Code:
alloc(TypeName,256)
alloc(ByteSize,4)
alloc(PreferedAlignment, 4)
alloc(ConvertRoutine,1024)
alloc(ConvertBackRoutine,1024)

TypeName:
db 'RPG VX type',0

ByteSize:
dd 4

PreferedAlignment:
dd 1


//The convert routine should hold a routine that converts the data to an nteger (in eax)
//function declared as: stdcall int ConvertRoutine(unsigned char *input);

//Note: Keep in mind that this routine can be called by multiple threads at the same time.

ConvertRoutine:
[32-bit]
push ebp
mov ebp,esp
push ecx
mov ecx,[ebp+8]
[/32-bit]

//at this point ecx contains the address where the bytes are stored

//put the bytes into the eax register
mov eax,[ecx] //second fun fact, addressing with 32-bit registers doesn't work in 64-bit, it becomes a 64-bit automatically (most of the time)
shr eax,1 //shift right by 1 bit (divide by 2)

//and now exit the routine
[64-bit]
ret
[/64-bit]
[32-bit]
pop ecx
pop ebp
ret 4
[/32-bit]

//The convert back routine should hold a routine that converts the given integer back to a row of bytes (e.g when the user wats to write a new value)
//function declared as: stdcall void ConvertBackRoutine(int i, unsigned char *output);
ConvertBackRoutine:
[32-bit]
push ebp
mov ebp,esp
push edx //save the registers
push ecx
mov edx,[ebp+0c]
mov ecx,[ebp+08]
[/32-bit]

//at this point edx contains the address to write the value to
//and ecx contains the value

push eax
push edx


mov edx,[edx] //edx now contains the original value
and edx,1 //only save the first bit

mov eax,ecx //eax gets the user input value
shl eax,1 //shift left by 1 bit (multiply by 2)
or eax,edx //add the bits of the original value

pop edx
mov [edx],eax //write the new value into the old value
pop eax

[64-bit]
//everything is back to what it was, so exit
ret
[/64-bit]

[32-bit]
//cleanup first
pop ecx
pop edx
pop ebp
ret 8
[/32-bit]
5. Hit the "Ok" button.
6. Select "RPG VX Type" from the dropdown box.
7. Search for the values as usual, no need to do the 2x+1 conversion.
 

Sarav

Evard's Tentacles of Forced Intrusion
Joined
Aug 2, 2013
Messages
1,051
Reputation score
323
Re: Cheat Engine and RPG Maker

For the new RPG Maker that came out recently, MV I think, the old #*2+1 doesn't work. I think so anyway, only tried it on one game.
 

Selius

Tentacle God
Joined
Aug 19, 2011
Messages
1,000
Reputation score
40
Re: Cheat Engine and RPG Maker

dont forget you can put

# * 2 + 1 in the cheat engine value box and it'll do it for you
 

freeko

Banned
Joined
Dec 9, 2010
Messages
1,892
Reputation score
160
Re: Cheat Engine and RPG Maker

MV may as well not even be an rpgmaker game. It certainly looks like it from the outside. It does not use ruby script like the other ones do. So that may make things easier, or near impossible.
 

cavecricket48

Sex Demon
Joined
Oct 12, 2013
Messages
284
Reputation score
18
Re: Cheat Engine and RPG Maker

One more thing that people haven't touched on, whatsoever: When you type in the 2 x + 1 value, where x is the current displayed value in-game for the variable you're looking to change, you will very often wind up with a massive list. Since the addresses will be in hexadecimal, you figuring out what exactly anything is is going to be a stretch. To find your desired value from that last, follow these steps:

1. Find the initial list. So for example, if you had 5000 gold, search for 10001 (2 * 5000 + 1)

2. After the list initializes, in the game acquire/spend gold, and make sure it's an easily calculable amount you end up with to save some time- or just use the calculator program, either way.

3. With your new number, replace what you initially searched with the value of what you changed your desired variable to. For example, if you spent 100 gold, the total is now 4900, or 9801 (2 * 4900 + 1)

4. Press enter, or click the Next Search button. You will now find a list of all values within the first list that NOW has a value of 9801.

5. To further confirm if you didn't end up with a single value, repeat steps 3 and 4 (i.e. alter your desired value further; for example, spend another 100 gold until you end up with one variable on the list)

6. When you do have one variable, remember that you can alter it to whatever you want, but in Cheat Engine it must always be odd due to the +1 being present in the formula; you may trigger the game crashing if you don't follow this rule.

This method does not work for variables that have bugged displays in game, which means you can't see the real value, or values that you currently can't readily change to discover their address.
 

autizboyz

Evard's Tentacles of Forced Intrusion
Joined
Apr 24, 2014
Messages
1,108
Reputation score
1,517
Re: Cheat Engine and RPG Maker

Well since the topic is about CE and RPG maker game, i still wondering about random encounter tho, i can make random encounter rate to 0 on normal rpg but non in Hrpg.

For anyone dont know how to make that happend, basicly you go to open world/dungeon than set your CE scan type to "unknown inital value" hit first scan, after that choose the scan type again to "decrease value" than move 1 step your character hit the next scan, repeat next scan everytime you move your character untill you got the right value. After you got the right value basicly you just freeze it or check the active box

Oh yeah and if you want to cheat gold or something, basicly you just use the formula and that is #*2+1 (Example 3*2+1 never ever you forgot about the +1, cuz new rpgmaker game value start from +1 not 0 if you forgot about it, the game will crash
 

Dyhart

Demon Girl Pro
Joined
Mar 23, 2014
Messages
128
Reputation score
13
Re: Cheat Engine and RPG Maker

1. Open CheatEngine
2. Right click on the value type dropdown box in the main window.
3. Select "Define new custom type (Auto Assembler)"
4. Paste the following code in:

Code:
alloc(TypeName,256)
alloc(ByteSize,4)
alloc(PreferedAlignment, 4)
alloc(ConvertRoutine,1024)
alloc(ConvertBackRoutine,1024)

TypeName:
db 'RPG VX type',0

ByteSize:
dd 4

PreferedAlignment:
dd 1


//The convert routine should hold a routine that converts the data to an nteger (in eax)
//function declared as: stdcall int ConvertRoutine(unsigned char *input);

//Note: Keep in mind that this routine can be called by multiple threads at the same time.

ConvertRoutine:
[32-bit]
push ebp
mov ebp,esp
push ecx
mov ecx,[ebp+8]
[/32-bit]

//at this point ecx contains the address where the bytes are stored

//put the bytes into the eax register
mov eax,[ecx] //second fun fact, addressing with 32-bit registers doesn't work in 64-bit, it becomes a 64-bit automatically (most of the time)
shr eax,1 //shift right by 1 bit (divide by 2)

//and now exit the routine
[64-bit]
ret
[/64-bit]
[32-bit]
pop ecx
pop ebp
ret 4
[/32-bit]

//The convert back routine should hold a routine that converts the given integer back to a row of bytes (e.g when the user wats to write a new value)
//function declared as: stdcall void ConvertBackRoutine(int i, unsigned char *output);
ConvertBackRoutine:
[32-bit]
push ebp
mov ebp,esp
push edx //save the registers
push ecx
mov edx,[ebp+0c]
mov ecx,[ebp+08]
[/32-bit]

//at this point edx contains the address to write the value to
//and ecx contains the value

push eax
push edx


mov edx,[edx] //edx now contains the original value
and edx,1 //only save the first bit

mov eax,ecx //eax gets the user input value
shl eax,1 //shift left by 1 bit (multiply by 2)
or eax,edx //add the bits of the original value

pop edx
mov [edx],eax //write the new value into the old value
pop eax

[64-bit]
//everything is back to what it was, so exit
ret
[/64-bit]

[32-bit]
//cleanup first
pop ecx
pop edx
pop ebp
ret 8
[/32-bit]
5. Hit the "Ok" button.
6. Select "RPG VX Type" from the dropdown box.
7. Search for the values as usual, no need to do the 2x+1 conversion.

Well that worked for Ariadne. Thanks!
 
Top