Question regarding SNES9X CE Editing.

Post your topics and discussions here that you can't find a good section for.
Post Reply
User avatar
Exeter
Table Makers
Table Makers
Posts: 458
Joined: Fri Mar 03, 2017 9:16 am
Reputation: 154

Question regarding SNES9X CE Editing.

Post by Exeter »

Hey guys, I'm messing around trying to create some tables for SNES games, as they're easier to work with than PAR codes (assuming one gets it to work properly). But I'm getting stuck here at some parts.

Example game: Lufia 2.

Money: 120 Gold

Address Found: 00360122 (2 bytes)

Everything goes fine editing this, until you reach 65535 Gold (FF FF). After that CE basically loses track of the money and I can no longer find it via conventional ways no matter what I search for. I think this is due to the limitation that SNES games memory has, meaning it most likely gets split. Is there a way for Cheat Engine to automatically correct this somehow?

I tried looking in the Memory Region for 65539 (01 00 03) and found the values there, but it was written backwards. (03 00 01).

Image

I don't suppose there's an easier way of working with this?

[Edit]
Seems 3 bytes is the max for money values in Lufia at least. (9,999,999 Gold / 98 96 7F (or in the odd CE SNES9x method: 7F 96 98).
Wonder if there's a way for CE to somehow make it read/write backwards... for addresses larger than 2 bytes.

Eric
Hall of Famer
Hall of Famer
Posts: 174
Joined: Thu Mar 02, 2017 11:01 pm
Reputation: 90

Re: Question regarding SNES9X CE Editing.

Post by Eric »

You can try a custom type

User avatar
Exeter
Table Makers
Table Makers
Posts: 458
Joined: Fri Mar 03, 2017 9:16 am
Reputation: 154

Re: Question regarding SNES9X CE Editing.

Post by Exeter »

How would I go about doing that? I can't seem to find anything on how to create custom types in CE6.6

panraven
Table Makers
Table Makers
Posts: 121
Joined: Fri Mar 03, 2017 12:03 am
Reputation: 108

Re: Question regarding SNES9X CE Editing.

Post by panraven »

The arrange of value 0x010003 as memory bytes 03 00 01 is normal for a little endian machine (both for pc as emulator and snes).

[oops, never mind this, CE can scan 123456 with 2bytes scan by auto remove higher bytes~]
May try this to locate at least the low 2byte of the money, if you see the value more than 65536 as, for example, 123456 in decimal,
search for 2 bytes value, enter this expression : 123456 & 0xffff or 123456 & 65535 with [hex] unchecked, this will filter out the higher bytes that 2byte value scan cannot read.

Some snes may encode moeny as 3-bytes integer that each byte is in sequence, some may place the higher bytes somewhere else.
In the first case, it should be told by modifying the higher bytes, ie. 01 in 03 00 01 above (which likely your case).
In the later case, and given you know the lower 2bytes memory location, you can try set these:
1. prepare scan for 1byte value, unknown 1st,
2. set the known lower 2bytes to 0xffff, gain some money in game, it should cause the higher bytes +1
3 search for "increased by 1"
4 repeat until found the higher bytes.

bye~

Post Reply

Who is online

Users browsing this forum: Cuberdon