Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Cheat Engine with nullDC emulator fails

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
ner0
Cheater
Reputation: 0

Joined: 10 Dec 2011
Posts: 32

PostPosted: Wed Jan 25, 2017 9:22 am    Post subject: Cheat Engine with nullDC emulator fails Reply with quote

There seems to exist this long standing issue of using Cheat Engine with a Dreamcast emulator called nullDC. Using Cheat Engine with other known emulators of the same platform, like Demul, works perfectly out of the box. Yet using a decade old basic cheat engine (nullDC Cheater) works just fine with nullDC emulator...

My question is why doesn't Cheat Engine play nice with nullDC or vice-versa?

Afaik, there is currently only one cheat engine, more primitive than CE, which is capable of scanning and writing correctly the nullDC emulator's memory. That cheat engine is called "nullDC Cheater", already repacked from the days of an older emulator called Chankast with which it also worked fine.

Anyway, Cheat Engine is one of the most advanced of it's kind so certainly that it is possible to have it work with nullDC. The question is, how?

For example, scanning nullDC with Cheat Engine will find matching results with two addresses for the same value, one of those addresses isn't in the range that you would expect, while the other is exactly the address to expect. What happens then with Cheat Engine is that if you change the value it will work as expected but then that value will be reallocated to a different address.

Here are 3 practical examples:

1. Using Cheat Engine on nullDC to find the value 43A00000, gives two matching addresses:
    0x1C251EF8 <- unknown address/range
    0x02231EF8 <- expected address/range

Now, if I change the value of the first one then the emulator will crash.
If I change the value of the second address the change will be successful but then the address won't hold it anymore and I'll have to search again for the new address.


2. Using nullDC Cheater on nullDC to find the value 43A00000, gives one matching addresses:
    0x02231EF8 <- expected address/range

If I change the value of this address the change will be successful and the address will still be valid for further changes to the same propriety.


3. Using Cheat Engine on Demul to find the value 43A00000, gives one matching address:
    0x2C231EF8 <- expected address/range

Note the different prefix, 2C instead of 02, but everything works fine, changing values is not an issue at all, the change will be successful and the address will still be valid for further changes to the same propriety.

So far the only thing I've tried was to enabled MEM_MAPPED in the memory regions to scan but unfortunately it didn't help.

NOTE: This is not the same thing as dynamic addresses that change with every game boot. In fact the addresses are static.

Does someone have an idea why a decade old piece of software works nicely with nullDC emulator yet Cheat Engine does not (not out of the box at least)?
Any ideas on how to make Cheat Engine work with nullDC?

Much appreciated, thank you!
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 471

Joined: 09 May 2003
Posts: 25814
Location: The netherlands

PostPosted: Wed Jan 25, 2017 9:38 am    Post subject: Reply with quote

assuming you're on 6.6

execute this lua script before targeting the process:
Code:

dbk_initialize()
dbk_useKernelmodeOpenProcess()
dbk_useKernelmodeProcessMemoryAccess()
dbk_writesIgnoreWriteProtection(true)



are you on windows 10 by any chance ?

_________________
Do not ask me about online cheats. I don't know any and wont help finding them.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
ner0
Cheater
Reputation: 0

Joined: 10 Dec 2011
Posts: 32

PostPosted: Wed Jan 25, 2017 9:56 am    Post subject: Reply with quote

Dark Byte wrote:
assuming you're on 6.6

execute this lua script before targeting the process:
Code:

dbk_initialize()
dbk_useKernelmodeOpenProcess()
dbk_useKernelmodeProcessMemoryAccess()
dbk_writesIgnoreWriteProtection(true)



are you on windows 10 by any chance ?


I assume that you mentioning Windows 10 is not a good thing... and yes, I am (x64). Also using latest CE (6.6).

Anyway, I tried what you suggested and it worked in that after changing the values the address' value didn't vanish, nor did it crash the emulator. But Cheat Engine became more unstable and crashed a few times or didn't complete the scan one time or another forcing me to terminate the process. Apart from that, there's also an issue with nullDC where if I open Cheat Engine after the emulator is already opened then the emu will freeze - have to always open CE before the emu for some unknown reason.

Would you say that the key to this is to use Kernel mode to find the addresses and then also initialize kernel mode in a potential trainer?

Thanks!
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 471

Joined: 09 May 2003
Posts: 25814
Location: The netherlands

PostPosted: Wed Jan 25, 2017 10:37 am    Post subject: Reply with quote

windows 10 has this issue where if you change the protection of a mapped page it gets destroyed, which is why dbk_writesIgnoreWriteProtection(true) is needed so it won't change the protection

try without dbk_useKernelmodeProcessMemoryAccess() or only call dbk_useKernelmodeProcessMemoryAccess() when you wish to write.

also, you an run two ce's next to eachother. one scqns, the other writes.

trainers can also use kernelmode, but remember to add the kernel files to the package

_________________
Do not ask me about online cheats. I don't know any and wont help finding them.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
ner0
Cheater
Reputation: 0

Joined: 10 Dec 2011
Posts: 32

PostPosted: Wed Jan 25, 2017 12:09 pm    Post subject: Reply with quote

ner0 wrote:
Apart from that, there's also an issue with nullDC where if I open Cheat Engine after the emulator is already opened then the emu will freeze - have to always open CE before the emu for some unknown reason.


Turns out these are completely unrelated, as soon as Windows UAC overlay comes up it freezes the emulator, no matter what application is opened.

But it is pretty unstable, the trainer freezes a lot during usage.
I'll do more testing and report back. Thanks again!
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites