Skip to content

Basics of Search

tomvita edited this page Mar 6, 2023 · 17 revisions

Breeze search is file based. Each search will result in a file being created with a list of address value pair. When you continue a search it will search the address stored in the file that the cursor is on. With this system you have unlimited redo at any stage of the search, just point the cursor at the desired file.

If you see a number on game screen and want to change it

Mind the game state

It is not very common for a memory address to be valid for the whole duration of the gaming session. Quite often when there is a major state change the addresses where your targets are at will change. If you need more than one search to narrow down the list of candidates bear this in mind. If you see "loading" most of the time it is back to square one.

Data types

Data types is how the bits in memory are representing numbers

u8, u16, u32, s8, s16, s32

Integer of 8, 16 and 32 bit respectively. u8, u16, u32 are unsigned integer and s8, s16, s32 are signed integers. u32 is the most common, u16 is used by 16 bit games, u8 is sometimes used by game that combine two attribute into one variable. The signed variant is when the most significant bit is the sign bit.

f32, f64

f32 is single precision floating point, f64 is double precision floating point.

What you see is what you search

The most commonly used types are u32, f32, f64. "=*" will perform a search for these two types that equal to the value you enter. Just enter the value and perform the search. Go play the game and see that the value changed then come back and repeat the search. Do this for some iteration until the number of candidates is small enough.

Test the candidates to see which one is the right one

You modify the value and see if you get the desired effect. 2023022812511400-CCFA659F4857F96DDA29AFEDB2E166E6

Edit, ToggleFreeze

If the list is small just do it individually

Freeze100, Unfreeze100, Set1000

If the list is fairly large you may want to try this to know if the list even has the right target to avoid wasting time. Bear in mind that change many targets at once also increase the risk of crashing the game. The action is only from the cursor down and does not affect items above the cursor. You can move the cursor to select any range that is smaller than the number of candidates the button will act on. For example Freeze100 from index 1 then Unfreeze100 form index 4 will means only index 1,2,3 are frozen. Same apply for Inc1000 and Revert1000

Inc1000

Increment the value so it becomes easy for you to identify the right one

Revert1000

Remember to restore the value and this can save you from a crash some of the time

Display value is same as effective value

Change the value and see the update on screen, found the one, job done

Display value is not same as effective value

Sometimes the display value and the effective value are not the same. The effective value is updated on screen only when the game change it, when you change it the update don't happen on screen. The update only comes when the game update the value.

Didn't find any good candidate?

Try a different datatype and repeat the search. Usually u16 is the next one, then u8

Still didn't find any good candidate?

Try unknown value search

Unknown value search

When you can't see a number on screen you need to either do a range search or do a full dump as a first search. Then you need to make a guess of the datatype and follow up with Change from previous value search.

Change from previous value search

++

The value has increased from previous value on file

++Val

The value has increased from previous value on file by val. (sometimes the game will let you know this number)

--

The value has decreased from previous value on file

--Val

The value has decreased from previous value on file by val. (sometimes the game will let you know this number)

same

The value is same as previous value on file

sameB

Search the address on file but use the value stored in file mark with a B. This is useful when you can be sure the value is the same. For example you can expect full bar of health to be the same value.

diff

The value is different from the previous value on file.