1st of all, 0.117u1 has updated input system drastically. The effects are being felt to the cheat engine.
Now you can't change the index of activation key with left/right arrow key in the code edit menu.
And try to save activation key and see the key index...
RedBeam wrote:Sorry if I disturb, but it would be great if you adjust sub/add type too?
It takes a second because I already found what to fix (see the topic...)
I have planed that update current cheat_periodicEntry() because of some new functions so that sorry, your fix is meaningless.
But Add/Subtract is "Unused" code now and I have not created a code used this function at all.
I want to know why it is added as new cheat format.
And if people will permit me, I want to re-organize these "Unused" and "Incomplete" (eg, IgnoreIfDecrementing) function codes...
=============================================================================================================
- Added new condition, called "Branch".
"Branch" means "If a value is matched on the condition code, jump to linked code you specified".
----- FORMAT -----
Code: Select all
MSB LSB
33222222 22221111 11111100 00000000
10987654 32109876 54321098 76543210
[ condition ]
-------- -------- -------- -------x one-shot (reserved by standard one-shot cheat)
-------- -------- -------- ----xxx- comparison
000 = equal
001 = not equal
010 = less
011 = greater
100 = less or equal
101 = greater or equal
110 = bit on
111 = bit off
-------- -------- -------- ---x---- linked condition
00 = and
01 = or
-------- -------- -------- --x----- branch
00 = Off
01 = On
And the value in extend data field is the "jump" index number.
Code: Select all
:sonicwi3:00000000:10E8B0:00000003:FFFFFFFF:Max Power (For Most Characters) PL1
:sonicwi3:00000000:10E8B0:00000002:FFFFFFFF:Max Power (For Mao Mao,Chaika & Pooshka) PL1
:sonicwi3:00000000:10E8B0:00000004:FFFFFFFF:Max Power (For Spanky, Kowful & River) PL1
:sonicwi3:00000000:10E8B0:00000001:FFFFFFFF:Max Power (For Ellen & Cindy) PL1
The above code is 1P Maximum Shot Power for sonicwi3.
Maximum number of fire level is different among the charactes.
If you set incorrect shot level, for example Mao Mao (Max 2) gets Max 3, the game may crash.
The following is rewritten code with Condition Branch.
Code: Select all
:sonicwi3:C0000028:1003AB:00000002:0000000B:1P Maximum Shot Power
:sonicwi3:C0010028:1003AB:00000004:0000000A:1P Maximum Shot Power (02/14):Keaton, Blazers, Hien -> Max 3 / Mao Mao, Chaika & Pooshka -> Max 2
:sonicwi3:C0010020:1003AB:00000005:0000000C:1P Maximum Shot Power (03/14):Spanky -> Max 4
:sonicwi3:C0010020:1003AB:00000006:0000000B:1P Maximum Shot Power (04/14):Malcolm -> Max 3
:sonicwi3:C0010020:1003AB:00000007:0000000C:1P Maximum Shot Power (05/14):Kowful & River -> Max 4
:sonicwi3:C0010020:1003AB:00000008:0000000B:1P Maximum Shot Power (06/14):Alex & Pictus -> Max 3
:sonicwi3:C0010020:1003AB:00000009:00000009:1P Maximum Shot Power (07/14):Ellen & Cindy -> Max 1
:sonicwi3:C0010020:1003AB:0000000A:0000000A:1P Maximum Shot Power (08/14):Kotomi [Secret] -> Max 2
:sonicwi3:C0010020:1003AB:0000000B:0000000D:1P Maximum Shot Power (09/14):? [Secret] -> Max 7
:sonicwi3:00010000:10E8B0:00000001:FFFFFFFF:1P Maximum Shot Power (10/14):Maximum 1
:sonicwi3:00010000:10E8B0:00000002:FFFFFFFF:1P Maximum Shot Power (11/14):Maximum 2
:sonicwi3:00010000:10E8B0:00000003:FFFFFFFF:1P Maximum Shot Power (12/14):Maximum 3
:sonicwi3:00010000:10E8B0:00000004:FFFFFFFF:1P Maximum Shot Power (13/14):Maximum 4
:sonicwi3:00010000:10E8B0:00000007:FFFFFFFF:1P Maximum Shot Power (14/14):Maximum 7
$1003AB is the number of the character you selected.
For example, when you select Mao Mao, the value on $1003AB is 0x03.
The cheat engine starts checking from 1st condition code to the end of one (9th code) when you turn this code "ON".
On 1st code, it means "If the value on $1003AB is <= 0x02, jump to 12th code (Maximum 3) then do this code" so that 0x03 is not matched.
Next, 2nd code means "If the value on $1003AB is <= 0x04, jump to 11th code (Maximum 2) then do this code" and it's matched.
(3rd-9th is "If the value on $1003AB is = xx, jump to xxth code then do this code")
Basic operation is the same as label-selection type.
So it's easily understandable that you replace "jump" by "select".
The main difference is that the cheat engine chooses label automatically by conditions you set.
I have added several condition items in the code edit screen too.
http://www.42ch.net/UploaderSmall/source/1184954950.png
=============================================================================================================
Another sample of condition code.
Deco Casette system loads the program code into RAM.
So if you set a code in loading, Restore Previous Value gets incorrect value and restore it.
Code: Select all
:cbtime:00800000:2725:00000010:FFFFFFFF:Invincibility:Don't set in loading a data from cassette tape to prevent from a problem
In the above "program hack" code, when you set it before finish loading, the cheat engine gets 0x00 as restore value.
But loaded value is 0x04 so that it may causes the game crash when you turn OFF.
Rewritten code with condition is the following.
Code: Select all
:cbtime:C0000000:2725:00000004:00000000:Invincibility
:cbtime:00810000:2725:00000010:FFFFFFFF:Invincibility (2/2):If the value is 0x04 on $2725, store 0x10 into $2725
It means "If the value is 0x04 on $2725, rewrite $2725 with 0x10, otherwise no action".
The cheat engine tries to get restore value when condition is good so that turning OFF restores correct value.
Code: Select all
:grdforce:00100000:060834E2:00000009:FFFFFFFF:Invincibility "ON"
:grdforce:00110000:060834E8:0000E304:FFFFFFFF:Invincibility "ON" (2/2):1st = NOP, 2nd = MOV #$04,R3
:grdforce:00100001:060834E2:00008903:FFFFFFFF:Invincibility "OFF"
:grdforce:00110001:060834E8:000073FF:FFFFFFFF:Invincibility "OFF" (2/2):1st = BT $60834EC, 2nd = ADD #$FF,R3
Also ST-V. In Guardian Force, when boot up, tille or stage finish, stored other value.
Code: Select all
:grdforce:C0100000:060834E2:00008903:00000000:Invincibility
:grdforce:00910000:060834E2:00000009:FFFFFFFF:Invincibility (2/3):If the value is 0x8903 on $60834E2, do 2nd and 3rd codes.
:grdforce:00910000:060834E8:0000E304:FFFFFFFF:Invincibility (3/3):60834E2 - NOP / 60834E8 - MOV #$04,R3
Especially, it will be very useful for CD-ROM type machine, like PSX, Saturn.
These "Limited RAM" machine, different program code is stored even in the same address.
=============================================================================================================
I have succeeded to search "data space" via the cheat engine.
It means that you can find a value in cinemat.c games.
But you need to set User Defined code into cheat.map and changed the format a bit.
Code: Select all
:game:CPU:Space:StartAddress:Length:Status(ON/OFF):Name
New "Space" field has been added between CPU and Start Address.
00 is for normal program space and 01 is for data space.
Code: Select all
:armora:00:01:0000:0100:1:Armora Attack Data Space
Screenshot after find credit code in armora.
http://www.42ch.net/UploaderSmall/source/1184955741.png
But cheat code and watchpoint are still lack of data space accessor right now.