Some answers about memory addresses:
1 - Are menu addresses preloaded or loaded on the fly
Every menu option must have a number, so for example, the very first item in any menu is typically identified as option 0, then below would be option 1, then below that would be option 2 etc. The menu options don't need to be "together" because this single value will track the currently selected menu option. However - submenus will commonly use a different memory location to track their submenu currently selected option.
Because there's typically only a few levels of menu these menu tracking values are created on launch and kept throughout the lifetime of the process.
2 - Does an entire menu reside at a single memory address (pillow/billow/willow)
Haha, pillows/billows/willows. You're getting the hang of it. No, the currently selected menu option is a single value. Submenus are also single values but may be stored at a different memory address. In fact, this is the entire reason behind the idea of "dependent triggers" in SoniFight - because if the same memory address is used to track the currently selected option of a main menu AND a sub-menu then the sub-menu would sound like the main menu. By using dependent triggers we're trying to find the "level" of menu that we're on (0 for main, 1 for pillow, 2 for billow etc, haha).
Dependent triggers are discussed further in the SoniFight user guide.
3 - Does the active memory address change as you highlight different menu options.
Nope - only the the value of the currently selected menu option changes, the memory address remains constant (thank heavens).
4 - What happens when we go from a main menu to a sub-menu (paraphrased)
When you select a menu option something happens, but precisely what that thing is depends on the option selected. If we're going into a submenu because you selected "Options" then that's what happens, if you select "Arcade mode" then you'll go into the character select screen etc. There is generally no pattern to this - so the same currently selected option memory address may be used if we're going into a submenu, or it may not.
5 - Are menu selections strings
Well, they can be - but typically they're numerical values as discussed above. However, the Street Fighter 4 config DOES use string matches for menus in a way because each menu item has a "subtext" which explains what that item is. For example "Arcade mode" might have the subtext "Play against the CPU in a series of battles". This is actually non-desirable because users may not be playing the game in English, or may have a different default "culture" - that is, the native language and keyboard layout.
When I was doing the SF4 config I was relatively new to the game and I couldn't find the menu values numerically so I was forced to use the subtext to identify options, although if I tried again I would increase the pointer hop max spacing from 2K to 4K in Cheat Engine and I'm sure they'd turn up.
If you're unsure about what I mean by culture, this Microsoft article will explain all:
Performing Culture Insensitive String Comparisons
6 - Can you search for strings in Cheat Engine
Hells yes. Further, you can search for UTF-8 and UTF-16 strings - and SoniFight also supports UTF-8 and UTF-16 encoded strings in triggers.
7 - There is no number seven, I just wanted to say thank you to JLove for asking the most informed and detailed questions about SoniFight that I've ever fielded. You absolutely get it, and I am delighted that you do. Well done, sir.