Using Breeze's Search Manager

Should have written this since day one. Not sure how many have given up using it but here it is.
If you have tried to do search with Breeze and given up due to this not being written please try again

https://github.com/tomvita/Breeze-Beta/wiki/Using-Search-Manager

Now that you know how to use Search Manager, this next one may finally be useful to you
https://github.com/tomvita/Breeze-Beta/wiki/Basics-of-Search

You may want to check this one out too
https://github.com/tomvita/Breeze-Beta/wiki/Setup-Profile-to-launch-Breeze-(optional)
 

dsrules

Well-Known Member
Member
Joined
Sep 20, 2005
Messages
8,715
Trophies
2
XP
6,279
Country
There are two problem. One is the extra buffer size that I allocate, it's only 0x200 which can only support distance of 0x100 bytes. The other is the start of you target is very near the start of segment, I suppose when the distance is bigger than that it won't work.
yeah, it's behaving strangely, on another game, if I used 0xb0 distance it could find the 1 result, but if I use 0x7C , it returns many results whether 0x7C matches ValueB or not, Edizon SE always found the only 1 result using multisearch

anyways, here are my test results for beta79b

1. Toggle Skip still crashes

2. with custom shortcut on, Progress Information window, X End Search and B Pause Search could not be programmable, also push the default shortcuts X and B have no effect

3. Advance Cheat menu > More > all the "Choose any file, Load file" options will crash if you push A in an empty folder
 
Last edited by dsrules,

TomSwitch

Well-Known Member
OP
Member
Joined
Jan 10, 2019
Messages
4,493
Trophies
1
Age
44
XP
14,636
Country
United States
yeah, it's behaving strangely, on another game, if I used 0xb0 distance it could find the 1 result, but if I use 0x7C , it returns many results whether 0x7C matches ValueB or not, Edizon SE always found the only 1 result using multisearch

anyways, here are my test results for beta79b
This is the code
"
#define tvr(t) options.tvp_distance *sizeof(t)
#define _TVP(t) if (_value1(t) == _Memory(t)) { s64 save_i = i; for (i = save_i - tvr(t); i <= save_i + tvr(t); i += sizeof(t)) if (_value2(t) == _Memory(t) && i != save_i) {i = save_i; _add_address _add_data(t); break;}; i = save_i;}
"

Anything within this search range that match will give you a candidate:
for (i = save_i - tvr(t); i <= save_i + tvr(t); i += sizeof(t))

As to why 0x7C has less candidate it is probably because some of the candidates is closer than 0x7C from the start of the segment so the read that try to read beyond what is readable failed.

For speed I read a block of memory when there are candidates that are within my allocated buffer size so the 0x100 limit it only applies when the candidate is at the beginning or the end of this group.
Here is the code:
"
rc = dmntchtReadCheatProcessMemory(addr - extra_buffer_pre, buffer, len + extra_buffer_pre + extra_buffer_post); if (R_FAILED(rc)) { \
this->menu->LogText("break1 rc= %x \n", (int)rc); \
return rc; \
};
"
When the read fail the all the candidates that falls within this range is dropped

I will think about whether to improve this algorithm. This starts to become problematic when the distance increases but I think when the distance increase the usefulness of this search reduces as the large amount of candidates becomes too much for human to process
Post automatically merged:

As to why 0x7C has less candidate it is probably because some of the candidates is closer than 0x7C from the start of the segment so the read that try to read beyond what is readable failed.

For speed I read a block of memory when there are candidates that are within my allocated buffer size so the 0x100 limit it only applies when the candidate is at the beginning or the end of this group.
Here is the code:
"
rc = dmntchtReadCheatProcessMemory(addr - extra_buffer_pre, buffer, len + extra_buffer_pre + extra_buffer_post); if (R_FAILED(rc)) { \
this->menu->LogText("break1 rc= %x \n", (int)rc); \
return rc; \
};
"
When the read fail the all the candidates that falls within this range is dropped

I will think about whether to improve this algorithm. This starts to become problematic when the distance increases but I think when the distance increase the usefulness of this search reduces as the large amount of candidates becomes too much for human to process
Actually this was already taken care of ( so I think ) 15 months ago when I wrote this code.
Do you see any "break1 rc=" message?
Post automatically merged:

https://github.com/tomvita/Breeze-Beta/releases/tag/beta79c

toggle skip don't crash for me, if you have no target you will crash when you start the search and there is still no guard against that, is that the reason? target is indicated by a house icon, if you skip the target you have to designate another before you start the search

With the 0x100 byte extended to 0x400 byte your 7C should be within range for all candidates now
 
Last edited by TomSwitch,

dsrules

Well-Known Member
Member
Joined
Sep 20, 2005
Messages
8,715
Trophies
2
XP
6,279
Country
This is the code
"
#define tvr(t) options.tvp_distance *sizeof(t)
#define _TVP(t) if (_value1(t) == _Memory(t)) { s64 save_i = i; for (i = save_i - tvr(t); i <= save_i + tvr(t); i += sizeof(t)) if (_value2(t) == _Memory(t) && i != save_i) {i = save_i; _add_address _add_data(t); break;}; i = save_i;}
"

Anything within this search range that match will give you a candidate:
for (i = save_i - tvr(t); i <= save_i + tvr(t); i += sizeof(t))

As to why 0x7C has less candidate it is probably because some of the candidates is closer than 0x7C from the start of the segment so the read that try to read beyond what is readable failed.

For speed I read a block of memory when there are candidates that are within my allocated buffer size so the 0x100 limit it only applies when the candidate is at the beginning or the end of this group.
Here is the code:
"
rc = dmntchtReadCheatProcessMemory(addr - extra_buffer_pre, buffer, len + extra_buffer_pre + extra_buffer_post); if (R_FAILED(rc)) { \
this->menu->LogText("break1 rc= %x \n", (int)rc); \
return rc; \
};
"
When the read fail the all the candidates that falls within this range is dropped

I will think about whether to improve this algorithm. This starts to become problematic when the distance increases but I think when the distance increase the usefulness of this search reduces as the large amount of candidates becomes too much for human to process
Post automatically merged:


Actually this was already taken care of ( so I think ) 15 months ago when I wrote this code.
Do you see any "break1 rc=" message?
Post automatically merged:

https://github.com/tomvita/Breeze-Beta/releases/tag/beta79c

toggle skip don't crash for me, if you have no target you will crash when you start the search and there is still no guard against that, is that the reason? target is indicated by a house icon, if you skip the target you have to designate another before you start the search

With the 0x100 byte extended to 0x400 byte your 7C should be within range for all candidates now
yeah, I just open Breeze and go straight to Toggle Skip for no reason lol

with 79c, push A in an empty folder still crashes for me, Select File disappears when push A then crash screen after a few seconds

and Distance A,,B search is still the same
https://gbatemp.net/attachments/n1-jpg.384830/
like, I am using the value 0x1032AAAA for valueA, and +4 or +8 for ValueB, it could found the 1 result, but if I use +0x10 for ValueB then no result found
 

TomSwitch

Well-Known Member
OP
Member
Joined
Jan 10, 2019
Messages
4,493
Trophies
1
Age
44
XP
14,636
Country
United States
yeah, I just open Breeze and go straight to Toggle Skip for no reason lol

with 79c, push A in an empty folder still crashes for me, Select File disappears when push A then crash screen after a few seconds

and Distance A,,B search is still the same
https://gbatemp.net/attachments/n1-jpg.384830/
like, I am using the value 0x1032AAAA for valueA, and +4 or +8 for ValueB, it could found the 1 result, but if I use +0x10 for ValueB then no result found
1690298245740.png

Silly mistake and I was so confident that I didn't even test it. Now it's fixed and I tested it.
release 79c is updated with this fix
 

dsrules

Well-Known Member
Member
Joined
Sep 20, 2005
Messages
8,715
Trophies
2
XP
6,279
Country
79c updated again, this time perhaps you can do long distance :)
for u32 ValueA +0xC =ValueB, I need to use distance = 3 to get a good result,
it seems that it searches for all results within a certain range , if distance = 100 , it returns all results from no matter ValueB is at +4,+0x20, -0×18, or -0xc, 0x40, -0x60 instead of aiming at the exact ValueB set distance like Edizon SE
was that how it was intended to do?
 
Last edited by dsrules,

TomSwitch

Well-Known Member
OP
Member
Joined
Jan 10, 2019
Messages
4,493
Trophies
1
Age
44
XP
14,636
Country
United States
for u32 ValueA +0xC =ValueB, I need to use distance = 3 to get a good result,
it seems that it searches for all results within a certain range , if distance = 100 , it returns all results from no matter ValueB is at +4,+0x20, -0×18, or -0xc, 0x40, -0x60 instead of aiming at the exact ValueB set distance like Edizon SE
was that how it was intended to do?
yes A,,B means B can be anywhere that is infront or behind A by a distance of 100 * size of the data type you search

if you know the distance where B is at from A you should use advance search with the precise gap

EdiZon SE's multi search is designed to find items you already found before, you need to know the data structure already as well as it's alignment. ( most of the time data are 128 bit aligned so that is the default, you can change it if needed )

Breeze's advance search is a more flexible.
 
Last edited by TomSwitch,

dsrules

Well-Known Member
Member
Joined
Sep 20, 2005
Messages
8,715
Trophies
2
XP
6,279
Country
yes A,,B means B can be anywhere that is infront or behind A by a distance of 100 * size of the data type you search

if you know the distance where B is at from A you should use advance search with the precise gap

EdiZon SE's multi search is designed to find items you already found before, you need to know the data structure already as well as it's alignment. ( most of the time data are 128 bit aligned so that is the default, you can change it if needed )

Breeze's advance search is a more flexible.
yeah, I misunderstood how it's suppose to work
Thanks for the explanations, it's all good now :)
 

dsrules

Well-Known Member
Member
Joined
Sep 20, 2005
Messages
8,715
Trophies
2
XP
6,279
Country
cool, that was quick!
Post automatically merged:

minor issue
when searched in Hex then Show Candidates, it will still only shows 8 digits instead of 10, need to use Mode toggle to display 10 digits

also, it is possible to keep Hex mode search after exit Breeze? like Start Search in Decimal will still be Decimal after reopen Breeze , float will still be float, but Hex becomes Decimal
 
Last edited by dsrules,

dsrules

Well-Known Member
Member
Joined
Sep 20, 2005
Messages
8,715
Trophies
2
XP
6,279
Country
@TomSwitch, maybe the previous message went unnoticed because of auto merged
79d
minor issue
when searched in u32 Hex then Show Candidates, it will still only shows 8 digits instead of 10, need to use Mode toggle to display 10 digits

also, it is possible to keep Hex mode search after exit Breeze? like Start Search in Decimal will still be Decimal after reopen Breeze , float will still be float, but Hex becomes Decimal
 

dsrules

Well-Known Member
Member
Joined
Sep 20, 2005
Messages
8,715
Trophies
2
XP
6,279
Country
@TomSwitch , could you test and see if you could replicate this or not on beta80?
setup search as u32 == in Search Manager then close Breeze, open Breeze again and goto Gen2 Action menu once then go to Search Manager , u32 == becomes A..B
It happens only when goto Gen2 Action, all other menus no problem
 

TomSwitch

Well-Known Member
OP
Member
Joined
Jan 10, 2019
Messages
4,493
Trophies
1
Age
44
XP
14,636
Country
United States
@TomSwitch , could you test and see if you could replicate this or not on beta80?
setup search as u32 == in Search Manager then close Breeze, open Breeze again and goto Gen2 Action menu once then go to Search Manager , u32 == becomes A..B
It happens only when goto Gen2 Action, all other menus no problem
I notice A..B too. Thanks for nailing it down to gen2 menu. Will investigate
Post automatically merged:

https://github.com/tomvita/Breeze-Beta/releases/tag/beta80a
 
Last edited by TomSwitch,

Visntse

Active Member
Newcomer
Joined
Apr 27, 2023
Messages
33
Trophies
0
XP
175
Country
United States
hey, i use beta81a with 16.1.0, fresh install, not overwrite old version.
and use the "010000000000000D" folder.(if no this folder, breeze can't be run.)

i install the gen2 and profileshortcut, but when i click profile, it's not show breeze, it's show look like album menu, and must click breeze again.
click profile on 16.0.3 with beta80 it's work fine, i don't know that is 16.1.0's bug?
or maybe you can fix this?
please, thx so much.
 

TomSwitch

Well-Known Member
OP
Member
Joined
Jan 10, 2019
Messages
4,493
Trophies
1
Age
44
XP
14,636
Country
United States
hey, i use beta81a with 16.1.0, fresh install, not overwrite old version.
and use the "010000000000000D" folder.(if no this folder, breeze can't be run.)

i install the gen2 and profileshortcut, but when i click profile, it's not show breeze, it's show look like album menu, and must click breeze again.
click profile on 16.0.3 with beta80 it's work fine, i don't know that is 16.1.0's bug?
or maybe you can fix this?
please, thx so much.
OK, I guess you gave me one good reason to update to 16.1
Post automatically merged:

It has been reported to be working. Did you go to setting and toggle profile short cut to on?

PS: there is a profilehbm.zip inside Breeze.zip and if you unzip that to the root of SD you will get profile launching hbmenu
 
Last edited by TomSwitch,

Visntse

Active Member
Newcomer
Joined
Apr 27, 2023
Messages
33
Trophies
0
XP
175
Country
United States
yes, that's my use all 81a files.
i install gen2 and turn on shortcut in the breeze, and reboot console.
please u check what problem?
 

Attachments

  • 81A.zip
    2.8 MB · Views: 23

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
  • Xdqwerty @ Xdqwerty:
    good night
  • BakerMan @ BakerMan:
    as to you
  • K3Nv2 @ K3Nv2:
    How do you know if the night will be good when you're asleep
  • BakerMan @ BakerMan:
    because i didn't say i was asleep
  • BakerMan @ BakerMan:
    i said i was sleeping...
  • BakerMan @ BakerMan:
    sleeping with uremum
  • K3Nv2 @ K3Nv2:
    Even my mum slept on that uremum
  • TwoSpikedHands @ TwoSpikedHands:
    yall im torn... ive been hacking away at tales of phantasia GBA (the USA version) and have so many documents of reverse engineering i've done
  • TwoSpikedHands @ TwoSpikedHands:
    I just found out that the EU version is better in literally every way, better sound quality, better lighting, and there's even a patch someone made to make the text look nicer
  • TwoSpikedHands @ TwoSpikedHands:
    Do I restart now using what i've learned on the EU version since it's a better overall experience? or do I continue with the US version since that is what ive been using, and if someone decides to play my hack, it would most likely be that version?
  • Sicklyboy @ Sicklyboy:
    @TwoSpikedHands, I'll preface this with the fact that I know nothing about the game, but, I think it depends on what your goals are. Are you trying to make a definitive version of the game? You may want to refocus your efforts on the EU version then. Or, are you trying to make a better US version? In which case, the only way to make a better US version is to keep on plugging away at that one ;)
  • Sicklyboy @ Sicklyboy:
    I'm not familiar with the technicalities of the differences between the two versions, but I'm wondering if at least some of those differences are things that you could port over to the US version in your patch without having to include copyrighted assets from the EU version
  • TwoSpikedHands @ TwoSpikedHands:
    @Sicklyboy I am wanting to fully change the game and bend it to my will lol. I would like to eventually have the ability to add more characters, enemies, even have a completely different story if i wanted. I already have the ability to change the tilemaps in the US version, so I can basically make my own map and warp to it in game - so I'm pretty far into it!
  • TwoSpikedHands @ TwoSpikedHands:
    I really would like to make a hack that I would enjoy playing, and maybe other people would too. swapping to the EU version would also mean my US friends could not legally play it
  • TwoSpikedHands @ TwoSpikedHands:
    I am definitely considering porting over some of the EU features without using the actual ROM itself, tbh that would probably be the best way to go about it... but i'm sad that the voice acting is so.... not good on the US version. May not be a way around that though
  • TwoSpikedHands @ TwoSpikedHands:
    I appreciate the insight!
  • The Real Jdbye @ The Real Jdbye:
    @TwoSpikedHands just switch, all the knowledge you learned still applies and most of the code and assets should be the same anyway
  • The Real Jdbye @ The Real Jdbye:
    and realistically they wouldn't

    be able to play it legally anyway since they need a ROM and they probably don't have the means to dump it themselves
  • The Real Jdbye @ The Real Jdbye:
    why the shit does the shitbox randomly insert newlines in my messages
  • Veho @ Veho:
    It does that when I edit a post.
  • Veho @ Veho:
    It inserts a newline in a random spot.
  • The Real Jdbye @ The Real Jdbye:
    never had that i don't think
    The Real Jdbye @ The Real Jdbye: never had that i don't think