NeoSD Pro mame cheat to NeoSd Dat tool

If you are having problems finding or using cheats for an Emulator (particularly MAME/MESS) or have found a trick that you wish to share this is the place to do it. But please read the Cheat FAQ first.
Post Reply
acem77
Posts: 5
Joined: Sat Jan 18, 2025 4:21 pm

NeoSD Pro mame cheat to NeoSd Dat tool

Post by acem77 »

This may be a bit off subject for this forum.

Since the NeoSD Pro uses mame cheats in a biany dat format
This may be helpful for others as i came here lookingbfor some help originally.

A user from the neosd discord created a conversion tool
Uploaded here.
https://bitbucket.org/fade0ff/neosdchea ... rc/master/

This is working well for me so far.
From the help text

NeoSD Pro Cheat file converter, 0xdeadbeef 2/2025

This is a Java program, so you need a Java Runtime Environment (>=JRE8).

To convert all *.DAT files in the folder "cheats" to a text file called "cheats.txt", use:
java -jar NeoSDCheatConv.jar i ./cheats cheats.txt
To convert the text file cheats.txt back to *.dat files in the folder "test", usw:
java -jar NeoSDCheatConv.jar e cheats.txt ./test3

A typical cheat for a game looks like this:

[alpham2]
P1 Infinite Lives;00;1010f2;0000;Off:0000;On:0003
P1 Weapon Power Up;00;1010dd;0000;Off:0000;On:0018
P1 Invincibility;10;101015;fffd;Off:0000;On:0000
P2 Infinite Lives;00;1011f2;0000;Off:0000;On:0003
P2 Weapon Power Up;00;1011dd;0000;Off:0000;On:0018
P2 Invincibility;10;101115;fffd;Off:0000;On:0000

The string in brackets "[]" is the name of the DAT file. It should match the name of your according NEO file.
Each cheat entry is defined like this:
<cheat description>;<cheat type>;<cheat extension>;<option1 name>:<option1 value>[;<optionN name>:<optionN value>]

Cheat Type:
This is a bit field. If it's 0, the 8bit value from the options is written repeatedly (in VSync).
Note that the following is mainly based on assumptions and comparison with MAME cheat files:
Bit 0 (->0x01): 16bit write
Bit 1 (->0x02): Write only once
Bit 2 (->0x04): Relative address. The address field is used as pointer to an address, the value from the extended field is added to this pointer
Bit 3 (->0x08): Different base address. The 16bit address field is used as offset to 0x2F0000 (PROM?) instead of 0x100000 (RAM) - only used for KOF2003 and its bootlegs.
Bit 4 (->0x10): Masked access. Only the unmasked (0) bits in the extension field are modified.

Note that there seems to be a bug in the NeoSD Pro cheat menu implementation that causes issues when less than 5 cheat entries are used.
If less than 5 cheats should be used, it's recommended to fill the remaining entries with dummy entries.

If both options are 0, there is no selection displayed. This is mainly meant for "write only once" (0x02) types of cheat.
To create comments, it should work to combine this with type "0x12" (write once, write masked) and to set the mask to 0xffff, e.g.
This is a comment;12;0000;ffff;Off:0000;On:0000
acem77
Posts: 5
Joined: Sat Jan 18, 2025 4:21 pm

Re: NeoSD Pro mame cheat to NeoSd Dat tool

Post by acem77 »

Now my question is,
Is there a cheat type to be used for multiple codes to be used with one off/on toggle. Or a different way to format it.

I found the way to offer user selectable values.

Thanks
Post Reply