Mastema: Out of Hell

Ask about cheats/tables for single player games here
Post Reply
User avatar
Takagi
Novice Cheater
Novice Cheater
Posts: 23
Joined: Fri Apr 28, 2017 6:06 am
Reputation: 0

Mastema: Out of Hell

Post by Takagi » Tue Feb 06, 2018 11:55 pm

Game: Mastema: Out of Hell
Genre: Platformer (retro style)
Steam link: http://store.steampowered.com/app/595550/

Very nice looking platformer in retro style. Looks a lot like Amiga, or SNES games. OST is also nice. The problem is - it has awful jump detection and you'll die a lot. Thanks to that, I wanted to cheat and just see the ending (there's also a story in the game). Like in good old Game Genie times. But guess what? I can't find a single value. And that's why I'm kinda shocked here. It's a pretty much basic platformer, but... I can't find anything. I can't find lives, I can't find health, I can't even find crystals. Usually I'm not that noobish (I can't make scripts, but I can at least find current values), but this time... It's like a real challenge to me. The whole game is a like a single .exe file. And I can't find ANY values. What I need:

1.Health
2.Lives
3.The ability to keep the sword after dying (if possible).

If there's any Cheat Engine gurus here, can you, guys, please, help me with this surprisingly hard to hack title? :) Thank you.

WarCOzes
Expert Cheater
Expert Cheater
Posts: 116
Joined: Tue Mar 28, 2017 7:09 pm
Reputation: 103

Re: Mastema: Out of Hell

Post by WarCOzes » Wed Feb 07, 2018 4:04 am

Hi,
The game uses the most basic encryption. For find values use this script.


1-Open Cheat Engine
2-Right click on the "value type" drop box->define new custom type
(auto assembler) ->paste this:

Code: Select all

alloc(ConvertRoutine,1024)
alloc(ConvertBackRoutine,1024)
alloc(TypeName,256)
alloc(ByteSize,4)
alloc(UsesFloat,1)

TypeName:
db 'Multimedia Fusion crypted int',0

ByteSize:
dd 4

UsesFloat:
db 0 //Change to 1 if this custom type should be treated as a float

//The convert routine should hold a routine that converts the data to an integer (in eax)
//Note: Keep in mind that this routine can be called by multiple threads at the same time.

//stdcall int ConvertRoutine(unsigned char *input);
ConvertRoutine:
[64-bit]
//rcx=address of input (per Cheat Eagine design)
mov eax,[rcx] //eax=CryptedValue
not eax         //eax is decrypted
ret
[/64-bit]

[32-bit]
mov eax,[esp+4] //eax=&CryptedValue
mov eax,[eax]   //eax=CryptedValue
not eax         //eax is decrypted
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)
//stdcall void ConvertBackRoutine(int i, unsigned char *output);
ConvertBackRoutine:
[64-bit]
//per (per Cheat Eagine design)
//ecx=input
//rdx=address of output
not ecx       //encrypt ecx
mov [rdx],ecx //place the integer the 4 bytes pointed to by rdx
ret
[/64-bit]

[32-bit]
push edx              //save edx,eax
push eax
mov edx, dword [esp+10] //edx=output
mov eax,[esp+c]        //eax=i
not eax                //encrypt eax
mov [edx],eax          //*output=!i
pop eax                //restore eax,edx
pop edx
ret 8
[/32-bit]
3-Disable Fast scan and use value type : Multimedia Fusion crypted int
4-Do your scans as usual

My help, only for Inf. lives. The rest is to hard for me.
Attachments
MASTEMA_OOH.CT
Infinite Lives
(2.27 KiB) Downloaded 4 times

User avatar
Takagi
Novice Cheater
Novice Cheater
Posts: 23
Joined: Fri Apr 28, 2017 6:06 am
Reputation: 0

Re: Mastema: Out of Hell

Post by Takagi » Wed Feb 07, 2018 12:04 pm

Thanks for all the info and for the table! The lives will do :)

Post Reply

Who is online

Users browsing this forum: No registered users