Commit Graph
24 Commits
Author SHA1 Message Date
PugsyMAME 0ebb791323 New F6 Cheat Type (IF,ELSE IF, ELSE structure)
Cheat Type F6 lets you perform cheats in IF / ELSE IF / ELSE constructs along 
with multiple conditions for each one.

It supports conditions  D0, D1, D2, D3, E0, E1, E2, E3, A0, A1, A2, A3, D7 and 
two new types that will only be available in the F6 conditions :- 
E4 & E5 which are bit comparisons on bytes (set and clear). 

Any of those types which are "block conditionals" like D7 will be treated as a 
single condition with the other conditions so you wont need to worry about 
extra 00000000 FFFFs just for them (infact you can drop them completely apart
from the last 00000000 FFFF, which you can also drop if you have no trailing
cheat lines after the end of the construct.


#IF / ELSE IF / ELSE Statement Example with Notes
80001000 00000001   Setup Test Condition 1
80001004 00000002   Setup Test Condition 2
80001008 00000003   Setup Test Condition 3
8000100C 00000004   Setup Test Condition 4

                    1F = IF, last two digits determine the number of conditions to check
                    F600000x  x = 0 All conditions must be true, x = 1 At least One condition must be true                  
F6000000 1F000004   Check the next 4 lines as the conditions for the IF loop to be taken

D0001000 00000001  )
D0001004 00000002  )Conditions
D0001008 00000003  )
D000100C 00000004  )

80001010 00005555    Poke(s)
00000000 0000FFFF  End of IF Statement

F6000000 E15E1F02  E15E1F = ELSE IF (same format as IF) - Can have multiple ELSE IF Blocks or none at all
D0001008 00000003  )
D000100C 00000005  )Conditions
80001010 00008888     Poke(s)
00000000 0000FFFF  End of ELSE IF Statement 

F6000000 E15E0000  E15E = ELSE (no need for conditions - this will poke if the others dont)
80001010 0000AAAA    Poke(s)
00000000 0000FFFF End of ELSE Statement



#Multiple Test Using Joypad Left Thumb Directions, Look at Address 1100 in Debugger
F6000000 1F000001  
D7020002 00100000
90001100 50205055
90001104 53534552 
90001108 20204445
9000110C 20202020
F6000000 E15E1F01
D7020002 00400000
90001100 4E574F44
90001104 45525020
90001108 44455353
9000110C 20202020
F6000000 E15E1F01
D7020002 00800000
90001100 5446454C
90001104 45525020
90001108 44455353
9000110C 20202020
F6000000 E15E1F01
D7020002 00200000
90001100 48474952
90001104 52502054
90001108 45535345
9000110C 20202044
F6000000 E15E0000
90001100 20202020
90001104 20202020
90001108 20202020
9000110C 20202020
00000000 0000FFFF
2021-08-21 15:08:34 +01:00
PugsyMAME f835db6b4f Improved Cheat Memory Scanner functionality
Work done :
** Made the columns sortable (someone asked for this GH I think)
** Moved the Add to Watch button to under the search parameters, and renamed it.
** Made the selection work on a block level so we can block "add results" and block "Remove Watch" on multiple entries
** Made the description show the raw code - so either 3xxxxxxx, 8xxxxxxx, 9xxxxxxx depending on the Data Size and the memory being under 0x200000. This can be edited still.
** Changed the Watch value field to take a hex number in the form 0xX as well as a decimal number.
** Moved the freeze box to the right column, I originally did this prior to finding out about ContiguousSelection and I think it makes more sense next to the value you want to freeze
** Removed the message about 5000 results limitation (it made searching painful) and added a text box showing it permanently along with the number of results (which you can observe going down as you continue the search)
** Hidden the "Save Watch" & "Load Watch" buttons, they have no functionality (yet) and making them invisible in the mean time makes it less confusing.
2021-08-06 12:24:14 +01:00
PugsyMAME 7025cc3382 Improved Cheat Memory Scanner functionality
Work done :
** Made the columns sortable (someone asked for this GH I think)
** Moved the Add to Watch button to under the search parameters, and renamed it.
** Made the selection work on a block level so we can block "add results" and block "Remove Watch" on multiple entries
** Made the description show the raw code - so either 3xxxxxxx, 8xxxxxxx, 9xxxxxxx depending on the Data Size and the memory being under 0x200000. This can be edited still.
** Changed the Watch value field to take a hex number in the form 0xX as well as a decimal number.
** Moved the freeze box to the right column, I originally did this prior to finding out about ContiguousSelection and I think it makes more sense next to the value you want to freeze
** Removed the message about 5000 results limitation (it made searching painful) and added a text box showing it permanently along with the number of results (which you can observe going down as you continue the search)
** Hidden the "Save Watch" & "Load Watch" buttons, they have no functionality (yet) and making them invisible in the mean time makes it less confusing.
2021-08-06 12:11:22 +01:00
PugsyMAME 106dc2951d Fixed cheat type 52 only working with 1st subtype
Fixed typo in ExtCheatRegistersCompare, which made it so that only 52 type 5200 worked,
2021-07-31 11:14:15 +01:00
PugsyMAME d0dd27d46d Renamed various sports related genres
Fixed various genres so they come under the larger Sports Genre with the other sports games
"Boxing" to "Sports / Boxing"
"Soccer" to "Sports / Soccer"
"Baseball" to "Sports / Baseball"
"Basketball" to "Sports / Basketball"
"Bowling" to "Sports / Bowling"
"Fishing" to "Sports / Fishing"
"Football" to "Sports / American Football"
"Golf" to "Sports / Golf"
"Hockey" to "Sports / Ice Hockey"
"Ice Hockey" to "Sports / Ice Hockey"
"Motocross" to "Sports / Motocross"
"Skateboard" to "Sports / Skateboarding"
"Skateboarding" to "Sports / Skateboarding"
"Snowboard" to "Sports / Snowboarding"
"Snowboarding" to "Sports / Snowboarding"
"Squash" to "Sports / Squash"
"Tennis" to "Sports / Tennis"
"Wrestling" to "Sports / Wrestling"
Billiard(s) - changed to less generic name  - either pool or snooker
Fixed typo: "Plataformer" to "Platformer"
2021-04-18 16:07:06 +01:00
PugsyMAME d605d03995 Make Genre/Publisher/Developer/Year/Players fields sortable
Added the new gamelist fields to the GameListModel::lessThan routine to make them sortable.
2021-04-17 16:17:32 +01:00
PugsyMAME 0fd593eb42 Updated chtdb.txt and added new types F5, 52 & 53. Cleaned up type 51
Chtdb.txt
=========
Updated the header to document all the new cheat types, added some more cheats
and cleaned up others.

New Cheat Types:-
=================
F5 - 16-Bit toggle cheat, predominatly used with the D7 cheat to enable/disable
      ASM cheats with the same key presses. See chtdb.txt for more information.

52 - Register Block Conditionals for use with the type 51 cheats. There are 128 
      sub types. See chtdb.txt for more information.
      
53 - Improved Slide Code cheat type, with support for 65536 addresses and a 16
      bit step and easily configurable step direction for value and address.
      See chtdb.txt for more information.      

Other Changes:-
===============
51 - Cleaned up - renumbered/renamed, Tested & Bugfixed. See chtdb.txt for more 
      information.
2021-03-13 15:21:40 +00:00
PugsyMAME bcd3bace83 Chtdb.txt update 2021-03-13 15:20:49 +00:00
PugsyMAME 74b2b2ddfe Added new cheat cheat types: C3, C4, C5, C6, D7&52
C3-C7 are variants of C0
D7 is a BIT based joker to rule them all. It includes the analog sticks (@ggrtk thanks for adding the analog reading capability). Also added the facility of making dual single key joker by varying the amount of time a button is held down.
51 is a complicated beast that I still need to document

* C3XXXXXX 00YY - 8-Bit Master Code, if ($XXXXXX) is less than 0xYY poke all
  00000000 FFFF       following codes for rest of the cheat or until it reaches the
                      00000000 FFFF line.
* C4XXXXXX 00YY - 8-Bit Master Code, if ($XXXXXX) is greater than 0xYY poke all
  00000000 FFFF       following codes for rest of the cheat or until it reaches the
                      00000000 FFFF line.
* C5XXXXXX YYYY - 16-Bit Master Code, if ($XXXXXX) is less than 0xYYYY poke all
  00000000 FFFF       following codes for rest of the cheat or until it reaches the
                      00000000 FFFF line.
* C6XXXXXX YYYY - 16-Bit Master Code, if ($XXXXXX) is greater than 0xYYYY poke all
  00000000 FFFF       following codes for rest of the cheat or until it reaches the
                      00000000 FFFF line.
* D7PQRRRR TTYYYYYY - 24-Bit Universal BIT Joker, OR the hex values to
                     combine into a multi-button joker. Because it is BIT
                     based it is better than D4, D5, D6 or using a D0 joker as you
                     do not need to worry about any other buttons being
                     pressed at the same time and you get both analog
                     sticks for extra functionality. Note if you want to use it
                     just as a enhanced joker just use D7000000 00YYYYYY when
                     the buttons/directions are pressed or D7100000 00YYYYYY
                     when you want to ensure they are not all pressed.
                     QRRRR TT provides the capability of only activating the
                     following codes after the keys have been held in for a set
                     amount of frames. 003C = 60 Frames = 1 Second at 100% Speed
                        YYYYYY = 000001 L2 Button
                        YYYYYY = 000002 R2 Button
                        YYYYYY = 000004 L1 Button
                        YYYYYY = 000008 R1 Button
                        YYYYYY = 000010 Triangle Button
                        YYYYYY = 000020 Circle Button
                        YYYYYY = 000040 X Button
                        YYYYYY = 000080 Square Button
                        YYYYYY = 000100 Select Button
                        YYYYYY = 000200 L3 Button
                        YYYYYY = 000400 R3 Button
                        YYYYYY = 000800 Start Button
                        YYYYYY = 001000 Up (Digital)
                        YYYYYY = 002000 Right (Digital)
                        YYYYYY = 004000 Down (Digital)
                        YYYYYY = 008000 Left (Digital)
                        YYYYYY = 010000 Up (Right Thumb)
                        YYYYYY = 020000 Right (Right Thumb)
                        YYYYYY = 040000 Down (Right Thumb)
                        YYYYYY = 080000 Left (Right Thumb)
                        YYYYYY = 100000 Up (Left Thumb)
                        YYYYYY = 200000 Right (Left Thumb)
                        YYYYYY = 400000 Down (Left Thumb)
                        YYYYYY = 800000 Left (Left Thumb)
                      NOTE: The 0s in the code are reserved for possible
                            future use.
                       TT=Temp Internal Variable 00-FF, 00 will mean it wont be
                            used, if it's not 00 do not use the same value for
                            jokers using different keypress combinations for
                            the same game.
                       P = 0 or 1. 0 = Check ALL YYYYYY Bits are ON
                                   1 = Check ALL YYYYYY Bits are OFF
                       Q = Frame Comparison 0 = Dont do any comparison
                                            1 = Check that the button combination
                                                has been held down for exactly
                                                RRRR frames.
                                            2 = Check that the button combination
                                                has been held down for more than
                                                RRRR frames.
                                            3 = Check that the button combination
                                                has been held down for less than
                                                RRRR frames.
                                            4 = Check that the button combination
                                                has been held down for anything
                                                but RRRR frames.
                       RRRR = 0000 to FFFF, Frame Comparison Value
                      It will then poke all following codes for rest of cheat
  00000000 FFFF       or until it reaches the 00000000 FFFF line.
2021-03-03 23:06:08 +00:00
PugsyMAME f98f8ed726 Cheat Database maintenance
Cleaned up more cheats and added some more cheats, imported a bunch of widescreen cheats.
2021-01-30 15:37:52 +00:00
PugsyMAME c9b75f7490 Updated DebuggerWindow Files for Tracer 2021-01-04 03:11:14 +10:00
PugsyMAME 4b7820d1e5 Icon For Tracer 2021-01-04 03:11:14 +10:00
PugsyMAME 3284a18ad3 Add new Cheat Type F4, Find & Replace Bytes (#1345)
* Add new Cheat Type F4, Find & Replace Bytes

Also knows as 'AOB' apparently. Information about how it works will be in the next chtdb.txt header or you can read/ask about it on the discord channel.

* Add new Cheat Type F4, Find & Replace Bytes 

Also knows as 'AOB' apparently. Information about how it works will be in the next chtdb.txt header or you can read/ask about it on the discord channel.

* Added error trapping for cheat type F4

As suggested
2020-12-30 00:55:49 +10:00
PugsyMAME 90073ac1d0 Cheat Manager Memory Scanner improvements
Updated Memory Scanner to use sized hexadecimal in results and manual watches.
Enforced Halfword,Word address settings so that it's a valid word or halfword that is being watched.
2020-12-27 16:12:10 +00:00
PugsyMAME 67f6bd2bcb Fixed Pattern found address in Debugger Search
"Pattern found at 0x%1" was passing a decimal value to %1 instead of a hexadecimal one
2020-12-27 11:20:26 +00:00
PugsyMAME 31423ef697 Changed debugger "Enter memory address" to accept hex only (#1317)
* Changed debugger "Enter memory address" to accept hex only

The "Enter memory address" prompt by default expects a decimal address unless it's preceded by 0x. Or it expects an number starting with 0 is an octal.
The disassembly address should be hexadecimal regardless as that is how it it displays the address.
Also changed it so that it changes any address entered to be divisible by 4 as there was an observed issue that would cause the disassembly addresses to get locked to a address that was not divisible by 4

* Translation updates for Debugger memory address change

Updated the three translation files that mentioned the original "Invalid address. It should be in hex" string.

* Changed debugger "Enter memory address" to accept hex only

UPDATE TO PR #1316
The "Enter memory address" prompt by default expects a decimal address unless it's preceded by 0x. Or it expects an number starting with 0 is an octal.
The disassembly address should be hexadecimal regardless as that is how it it displays the address.
Also changed it so that it changes any breakpoint or disassembly address entered to be divisible by 4 as there was an observed issue that would cause the disassembly addresses to get locked to a address that was not divisible by 4 and a breakpoint address that is not divisible by 4 would never be hit.
2020-12-27 00:43:43 +10:00
PugsyMAME c0cc0a371b Fixed Slide Code cheat type
Address increment is a u8 and value increment is a u16. The changes will make this work correctly:-

50000AA4 FFFF
801CC760 0400
which is a example slide code representing:-
801CC760 0400
801CC804 03FF
801CC8A8 03FE
801CC94C 03FD
801CC9F0 03FC
801CCA94 03FB
801CCB38 03FA
801CCBDC 03F9
801CCC80 03F8
801CCD24 03F7
2020-12-25 13:53:28 +10:00
PugsyMAME 295f369519 Added PAL games to cheat database + other modifications
1. Cleaned up and added cheats for non-softwarelist games, mainly for PAL regions this has doubled the size of the database.
2. Added information about the various 32 bit by 32 bit cheat types to the cheat file header.
3. Added information for cheat types 31, 32 ,81, 82, 91 & 92 which are BIT set and clear cheat types - I'll do a PR for these in the next week.
4. Grouped some more cheats
2020-12-22 00:58:34 +10:00
PugsyMAME f2db25e697 More Cheat File Housekeeping
More cheat clean ups and added some more cheats
Added button info to the code format at the top of the file for the R4 type
Added placeholders for the games in the softwarelist with no cheats so that there is somewhere to insert the cheats quickly
2020-12-07 23:42:45 +00:00
PugsyMAME 044d806b2a Added Cheat Code Information & More Housekeeping
Added cheat format information to the header of the cheat file and done some more housekeeping - reordering and converting more cheats into groups.
2020-12-06 12:48:24 +00:00
PugsyMAME 9556ad8a55 Changed all repetitive D0 codes into shorter C0 codes
Changed all repeating D0 codes with C0 types including a 00000000 FFFF terminator
2020-12-04 15:57:46 +00:00
PugsyMAME 9edf71d4de Merge pull request #1 from PugsyMAME/PugsyMAME-patch-1
General Cheat File Housekeeping #1
2020-12-04 13:31:18 +00:00
PugsyMAME f561392136 General Housekeeping
Added basic header to top of cheat file. Started work on further cleaning up the cheats to work better with Duckstation -  grouping, re-sorting, fixing typos and format discrepancies, adding some cheats and removing a few duplicate cheats.
2020-12-04 13:26:23 +00:00
PugsyMAME b7b15fe540 New conversion of my original database
Converted MAME format cheats into DS format, fixed issue with some games having multiple headings and made the headers more verbose with square brackets to help them stand out.
2020-12-02 23:33:57 +00:00