Re: [Request] Symphony of War: The Nephilim Saga
Posted: Sun Oct 22, 2023 10:24 am
the game is having DLC, just hoping the cheat would be updated with some new feature
Community Cheat Tables of Cheat Engine
https://fearlessrevolution.com/
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]
can you make a tutorial video?ddadain wrote: ↑Wed Oct 25, 2023 10:49 pmFor anyone interested, here's a way to edit STATS using cheat engine manually
- SeiKur0's script still works so usable item amounts don't get used. I suggest using that since this method will require at least 4 usable items to yield results.
- Add "RPG VX type" to Cheat Engine's "Value Type" by [Right-Clicking] the dropdown menu ( looks like a "V" )at the end of the value type window. Copy-paste the code provided below into the window that will pop-up by selecting "Define new custom type (Auto Assembler)". Once you've added correctly, you'll need to select "RPG VX Type" as your "Value type".- So, to start finding values for A SPECIFIC UNIT, you'll need to use any usable item on it first (XP/CP Codex, or Stat boost items, etc.). Do this FIRST or you won't be able to find the correct address. Note: that Stat Boost Items like STR/MAG/AGI ALWAYS add +2 value, while LDR adds +1/+2/+3 depending on the LDR of level of the unit currently. HP boosts always adds +5.Spoiler
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]
- Once you've done the top part, then start a CE Search using "Unknown Initial value" as the [Scan Type].
- After that, use "Value increased by" and then the number from the note above.
- Do it 2 more times, and you should be able to guess which value it is from scan results.
- Edit the Stats. You can check if it saved correctly by scrolling to another unit then going back to the edited one. This should refresh his stat table.
- Profit. If you don't want to cheat "so much", I suggest just editing LDR as gaining LDR normally is too much of a pain in the @55.
Also, works for "Faction Points" using this method:
- You need to have at least 2 conversations pending at a camp.
- Make Save File
- Search "Unknown Initial Value"
- Then "Increased by" either +5 or +8
- Repeat to get "Actual Value" of "Faction Points". The points shown in the game isn't really the true value... just take note of the value you found. There's some guess-work here as ideally, you have 3 conversations pending to narrow down the options further, but it can be guessed using random tinkering of values to see which sticks. Once you've found the actual value, just jot it down.
- Then load Save File.
- Now search for the actual value of the faction points you have using "Exact Value" scan type.
- Do the first conversation again, then Next Search using "Increased value by..."
- To get maximum tech level, you need 6000-ish faction points. Edit value as so...
- Then do the 2nd conversation again... then get treated to a blank screen with the "level up" sound sounding multiple times until it finishes, then you're good to go~! Maximum tech level as early as Chapter 2.
Yeah. This is basically the most "primitive" way to do this, but in the absence of a working table (only SeiKur0's items never decrease script still works), it's better than nothing Works for Steam and GOG versions -_-;
I don't understand can I have a video example pleaseddadain wrote: ↑Wed Oct 25, 2023 10:49 pmFor anyone interested, here's a way to edit STATS using cheat engine manually
- SeiKur0's script still works so usable item amounts don't get used. I suggest using that since this method will require at least 4 usable items to yield results.
- Add "RPG VX type" to Cheat Engine's "Value Type" by [Right-Clicking] the dropdown menu ( looks like a "V" )at the end of the value type window. Copy-paste the code provided below into the window that will pop-up by selecting "Define new custom type (Auto Assembler)". Once you've added correctly, you'll need to select "RPG VX Type" as your "Value type".- So, to start finding values for A SPECIFIC UNIT, you'll need to use any usable item on it first (XP/CP Codex, or Stat boost items, etc.). Do this FIRST or you won't be able to find the correct address. Note: that Stat Boost Items like STR/MAG/AGI ALWAYS add +2 value, while LDR adds +1/+2/+3 depending on the LDR of level of the unit currently. HP boosts always adds +5.Spoiler
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]
- Once you've done the top part, then start a CE Search using "Unknown Initial value" as the [Scan Type].
- After that, use "Value increased by" and then the number from the note above.
- Do it 2 more times, and you should be able to guess which value it is from scan results.
- Edit the Stats. You can check if it saved correctly by scrolling to another unit then going back to the edited one. This should refresh his stat table.
- Profit. If you don't want to cheat "so much", I suggest just editing LDR as gaining LDR normally is too much of a pain in the @55.
Also, works for "Faction Points" using this method:
- You need to have at least 2 conversations pending at a camp.
- Make Save File
- Search "Unknown Initial Value"
- Then "Increased by" either +5 or +8
- Repeat to get "Actual Value" of "Faction Points". The points shown in the game isn't really the true value... just take note of the value you found. There's some guess-work here as ideally, you have 3 conversations pending to narrow down the options further, but it can be guessed using random tinkering of values to see which sticks. Once you've found the actual value, just jot it down.
- Then load Save File.
- Now search for the actual value of the faction points you have using "Exact Value" scan type.
- Do the first conversation again, then Next Search using "Increased value by..."
- To get maximum tech level, you need 6000-ish faction points. Edit value as so...
- Then do the 2nd conversation again... then get treated to a blank screen with the "level up" sound sounding multiple times until it finishes, then you're good to go~! Maximum tech level as early as Chapter 2.
Yeah. This is basically the most "primitive" way to do this, but in the absence of a working table (only SeiKur0's items never decrease script still works), it's better than nothing Works for Steam and GOG versions -_-;
Did this really used to work at some point? I've never been able to find unit stats (STR,MAG,SKL,LDR) and edit them this way.ddadain wrote: ↑Wed Oct 25, 2023 10:49 pmFor anyone interested, here's a way to edit STATS using cheat engine manually
- So, to start finding values for A SPECIFIC UNIT, you'll need to use any usable item on it first (XP/CP Codex, or Stat boost items, etc.). Do this FIRST or you won't be able to find the correct address. Note: that Stat Boost Items like STR/MAG/AGI ALWAYS add +2 value, while LDR adds +1/+2/+3 depending on the LDR of level of the unit currently. HP boosts always adds +5.
- Once you've done the top part, then start a CE Search using "Unknown Initial value" as the [Scan Type].
- After that, use "Value increased by" and then the number from the note above.
- Do it 2 more times, and you should be able to guess which value it is from scan results.
- Edit the Stats. You can check if it saved correctly by scrolling to another unit then going back to the edited one. This should refresh his stat table.
- Profit. If you don't want to cheat "so much", I suggest just editing LDR as gaining LDR normally is too much of a pain in the @55.
this work in ng+ for the blue item used to buy old unit and equipSpidwey wrote: ↑Mon May 29, 2023 9:24 pmfirst-> sorry for english
second-> how to change resource and consumables(iron,horse,traits,affinity, exp and cp scrolls, etc) (not for tech point). best for new game(resource are storable ??)
-need at least 3 item
-set search for 4bytes
-search for number of item*2+1 ex. 3*2+1 --> 7
-use 1 of item
-search next scan 2*2+1 -->5
-use another 1
- search next scan 1*2+1 --> 3
- now you have one address
-change value of the address with the same formula. ex for 80 item, change value to 161 (80*2+1)