Breeze Switch

From GameBrew
Breeze
Breezenx.png
General
Authortomvita
TypeSave Managers and Editors
Versionbeta 89
LicenseMixed
Last Updated2024/03/31
Links
Download
Website
Source

Breeze is a Nintendo Switch game cheating tool designed to work with Atmosphere's cheatVM.

This tool has been created by taking the features from EdiZon SE and rewriting them to improve the user interface to make it more user-friendly for a broader audience.

Features

  • Manage cheat codes for atmosphere cheat VM with features such as:
    • Toggling code on/off.
    • Easy adding/removing of conditional key.
    • Loading cheats from cheat database.
    • Picking cheats from multiple cheat files.
    • Editing cheats in the app.
  • Cheat code editor with:
    • Disassembler.
    • Assistant to assemble cheat code.
    • Assistant to create loop code starting with code with a single starget.
  • ARM64 instruction assembly and disassembly support.
  • Search memory, edit memory, freeze memory, and create bookmark with static offset from main and heap.
  • Set memory break point to catch instruction that access the memory.
  • Set instruction watch to see what memory the instruction access.
  • ASM composer to create ASM cheat.
  • Auto-update of app and database.
  • Consistent and easy-to-use UI.

Installation

Copy the contents of Breeze.zip to the root of your SD card.

Updating from an old version

This app support in app updating. Use "Download" "Check for app update" and if there is an update available then "Install app update" will be enabled, use it to update the app. If you just want to reinstall the app use "Redownload" to enable the "Install app update" button.

You can manually install/update by downloading Breeze.zip and place the contents from this zip file on the root of your sd card, go ahead to overwrite existing file if present.

Cheat file locations

You can add your own cheat files containing cheat codes in either one of the following locations:

  • Atmosphere - sdmc:/atmosphere/contents/(titleid)/cheats/(buildid).txt
  • Breeze - sdmc:/switch/breeze/cheats/(titleid)/(anyname).txt

Differences between Atmosphere and Breeze:

  • Atmosphere - Only works when (buildid).txt matches the version of the game (BID), allows only one cheat file per game, can be used for EdiZon SE and Breeze.
  • Breeze - No restriction for filename, support multiple cheat files for the same game, however cannot be used with other apps.

Cheat code database

Breeze will make use of a database of cheats and automatically load it for you when you launch Breeze if there isn't any cheat that is already loaded. To get the database you can use the in app download feature. Activate these buttons "Download" "Check for cheat database update" "Install Cheat database update".

If your Switch is not connected to the internet you can download it manually and place in sdmc:/switch/breeze/cheats/titles.zip.

User guide

Launching the app

This is a designed to run as an applet. It is not an overlay. Can only be launched via the home screen.

For faster access in addition to launching via the hbmenu a forwarder hooked to profile is available. To enable profile to launch Breeze enable it with "Setting" "Profile shortcut =" buttons. Once enabled press "Home" "Up" "A" to launch Breeze from your game. To return to game press "Home" "Home".

This may not work with older version of Atmosphere, in that case the "Switch to HBM on Breeze directory" button can be use to enable profile to launch hbmenu made to focus on the breeze directory (so it is the only app for quicker launch). Once enabled, press "Home" "Up" "A" "A" to launch Breeze from game. To return to game press "Home" "Home".

Navigating the UI

This app has two type of panels. Data panel and button panel. Buttons on button panel is use to activate actions and data panel present data and allow users to pick which data to be act on by the buttons. When there is two panel shown, data panel is on the left and button panel is on the right. When data panel is shown either lstick or dpad is used for choosing items on this panel. (Configurable in setting). Up and down move the cursor one step and left and right move the cursor 10 steps.

The unused Left Stick or D-Pad is used to navigate the button panel. Use this control to choose the buttons and press A to activate it. Short cut keys may be assigned to the buttons. Pressing these also will activate the buttons.

This app support full touch control. Use touch and scroll to select data and touch the button to activate the associated actions.

Menu options

  • Toggle Cheat - Switch on/off the selected cheat code from the left panel.
  • Erase all in Group - Delete the group created in the outline.
  • Write Cheat to atm - Save the cheat to sdmc:/atmosphere/contents/(titleid)/cheats/(buildid).txt
  • Cut Cheat - Remove the selected cheat code from the left panel.
  • Add conditional key - Add a conditional block key (effects of 8 codes).
  • Remove conditional key - Delete a conditional block key.
  • Lord Cheats from file - Load cheats from sdmc:/switch/breeze/cheats/(titleid)/(buildid).txt
  • Lord Cheats from atm - Load cheats from sdmc:/atmosphere/contents/(titleid)/cheats/(buildid).txt
  • Write Cheat to file - Save the cheat to sdmc:/switch/breeze/cheats/(titleid)/(buildid).txt
  • Lord from DB - Load downloaded cheat database.
  • Add to bookmark - Add to bookmarks.
  • Bookmark - Move to bookmarks.
  • Edit Cheat - Edit the selected cheat code from the left panel.
  • More - Open the extended cheat menu.
  • Paste/Duplicate Cheat - Duplicate the cheat code.
  • Back - Go back.
  • key hint to file.
  • Assemble all ASM.

Extended cheat menu

  • Turn off all Cheats.
  • Remove atm cheats - Delete all cheats created with Atmosphere.
  • Delete all Cheats - Delete all cheat codes.
  • Add freeze game code - Add a pause and resume code to the cheat file.
  • Turn on all Cheats.
  • Expand Data Screen - Expand the left panel.
  • any cheats from Breeze’s TID directory - Select cheat file from sdmc:/switch/breeze/cheats/(titleid).
  • any cheats from Breeze / cheats - Select the file from sdmc:/switch/breeze/cheats.
  • any cheats from atm's TID directory - Select cheat file from sdmc:/atmosphere/contents/(titleid)/cheats.
  • Choose individual cheats from breeze/cheats - Select cheat code from sdmc:/switch/breeze/cheats.
  • testing.
  • Back.
  • Edit m_titleName.
  • Create Cheat.
  • Clear clipboard.

How to use Breeze to load any cheat code

If you wish to attempt to use a cheat code that was not designed for the current BID, you can still try to load it using this method (although it is unlikely to work).

Search concepts

  • 1. Objective
    • Memory locations used for storing data of interest can remain static for a window of time.
    • The objective of the search is to locate these locations while it is still valid.
  • 2. Memory locations
    • Game stat where such memory locations remain static can vary between games. For most games, many locations of interest stay between the loading screen. Some location only stay for a certain mode, for example in a specific screen and is lost upon exiting the screen.
    • It is for the user to guess the condition (where memory address of the data of interest stay static) and hope that the search converge within the window of opportunity.
  • 3. Data types
    • Data type is the format how data is stored in memory.
    • Commonly use data types are u32, f32, f64, u16, u8, obfuscate type, packed integer (in is advised try your search in the following order).
  • 4. What you see is what you search(first)
    • Normally you will start with a known(you think you know the data format and value) search.
    • Guess the data type and make search for the number that you see on screen.
  • 5. Fast unknown(fuzzy) search
    • Sometimes the value is not directly represented. For example a heart may be not 1 in data representation but is 4 or 5 or 10 ... or you may see a bar on screen.
    • Guess the datatype and try range search first, for example you see three hearts, search for number between 3 and 300(make the range too big it will take longer time to converge, make the range too small and you risk excluding the data and the whole search exercise in vain), play until you loose heart, search for less(current value < previous value), continue to search for less or more(in case you have potion to recover heart) until you have a smaller list of candidates.
  • 6. Full unknown search
    • When 4 and 5 above fail to give you the results that you seek first examine you assumption on point 2 above and decide if you want to repeat 4 and 5.
    • When you are sure you want to do full unknown search then continue as full unknown search is time consuming.
    • First do a dump on memory. See that the item you want to search has changed, now you have another decision to make, if you think you know that the number is increasing or decreasing do "increasing" or "decreasing" search, if you have no idea do "different" search.

Game hacking concept

There are two ways to hack a game, you can either change game data directly or you can change the game code that modify the data.

Searching memory help you find memory address that are changing in tandem with the game value you want to hack. The only way to know which one is effective in changing the game prpoerty is by hacking the value. Some changes the effective value and some changes the display value. Most of them will appear to have no effect to the game.

The most valuable memory address is of course the one that store the effective value but sometimes the game don't fetch this and update the display regularly and instead only update the display when the game code make the change to the value. So you may miss it and think that the address isn't the right one, instead you may think that the display value is the one, only to be disappointed later when you found out that you have been fooled. Display value and those other value that only change in tandem are useful in code tracing that leads to effective value.

ASLR cause memory address of a Switch game to be always different when you start a game. What is call "static" address are those that are static relative to the start of game code(main) or relative to the start of dynamic storage(heap). For static address once you have found it you are done as main and heap are both easy to locate and will be automatically supplied by (probably)all hacking tools. Unfortunately, not all memory of interest are "static", for these either a game code hack(often referred to as ASM hack) is needed or a pointer chain is needed(to find this chain is often referred to as pointer search).

Tutorials/Useful links

Controls

A - Select option

D-Pad or Left Stick - Navigate options

Screenshots

breezenx2.pngbreezenx3.png

Changelog

Release notes.

Credits

Acknowledgement:

The UI framework is derived from daybreak. The knowledge on game hacking is gained from making edizon se and many thanks to Werwolv for showing the way both in the work he did and the advice he gave. Thanks to the many people who share their knowledge in coding and game hacking. A big thanks to the Atmosphere team, without atmosphere, there can be no breeze.

External links

Advertising: