Hex edits have long been a tried-and-true way to apply simple changes to a hack. And anyone who makes heavy use of hex edits has likely been met with that same old bit of advice: "put your hex edits in a patch - they're easier to insert, and you'll remember which ones you've added." Well, thanks to the continued beneficence of our resident site coder Telinc1, applying this wisdom has never been easier! We're pleased to announce the establishment of our newest resource section:
SMW Tweaks, the hex edit patch builder!
Using the Tweaks Page
Generating a tweaks patch to insert into your hack is pretty straightforward. Simply click the checkbox in the leftmost column to flag a tweak for insertion. Some tweaks accept additional settings to add, like a number input field or a list of options. Once you've selected and configured all tweaks to your liking, click the "Generate Patch from Selection" button in the top left to download your patch, which will be named "tweaks.asm".
This file can then be patched to your ROM using Asar just like any other patch from the Patches section. If you later wish to add, remove, or modify your patch, you can use the "Import Patch" button to load your file back into the section page. (Do be aware, though, that removing a tweak from the patch and reapplying does not remove the tweak from your ROM.)
The base tweaks.asm file is designed to be modified by way of the Tweaks section page; it isn't recommended to change any part of this file manually unless you know what you're doing. The raw base patch is available here if desired.
Submitting a Tweak
Submitting a tweak can be a bit more involved. Tweaks are ultimately added to the master patch in the form of macros. Tweak submissions take six inputs that determine how the macro is defined, how the macro is called, and how the overall tweak appears on the Tweaks page. It might seem confusing at first glance, especially to those not well versed in using macros, but checking out a few of the tweaks already in the section should make things much clearer. And if you're still unsure, you're always welcome to ask in this thread or contact one of our ASM Moderators. The Tweak Submission Guidelines can be found here. The tweak submission fields are as follows:
With the creation of the Tweaks section, there is now no longer any reason to catalog hex edits in the ROM Map, and we will no longer accept any hex edits that are submitted there. The hex edits already present in the ROM Map will gradually be migrated over to the Tweaks section. The ROM Map Submission Guidelines have been updated with a new rule as follows:
If you know that the tweak you're submitting currently appears in the ROM Map, we would appreciate very much if you could make note of such in the Submission Notes so that we may update the Tweaks section and the ROM Map in tandem.
You may recall that this isn't our first time grappling with the issue of hex edits. Our previous rule for submitting hex edits to the Patches section has been amended:
In brief, a tweak is something that changes some piece of the original game without changing its overall intent or function. Changing a speed value to a different speed value, raising or lowering a threshold number for something, making a "sometimes" behavior into an "always" or "never" behavior, changing the ID of a spawned sprite - these are things that take something the base game already does and make it happen a little differently. If your code significantly alters the overall function of something despite being made up of technically simple edits, it would best be submitted to the Patches section. There's always a grey area, of course, and a moderator may suggest moving your code from one section to the other as appropriate.
On that note, we're taking this opportunity to formalize what has long been an implicit understanding among the SMW ASM sections, namely that moderators may make slight alterations to a submitted resource prior to accepting them:
The above does not reflect a change in policy, it's merely being added for transparency about what has long since been the practice. Please be aware that tweaks in particular are somewhat more technical in nature, and are inherently more likely to be adjusted during moderation. If you have any questions or concerns regarding this guideline, in general or otherwise, please feel free to share.
In summary, the Tweaks section is really cool, and you can find the corresponding submission guidelines here. The ROM Map Submission Guidelines, Patch Submission Guidelines, and General ASM Submission Guidelines have each been updated as detailed above to accommodate the emergence of Tweaks.
You're welcome to use this thread to ask any questions about the Tweaks section or the accompanying guideline adjustments. If you run into any bugs in the Tweaks section, please report them here.
Using the Tweaks Page
Generating a tweaks patch to insert into your hack is pretty straightforward. Simply click the checkbox in the leftmost column to flag a tweak for insertion. Some tweaks accept additional settings to add, like a number input field or a list of options. Once you've selected and configured all tweaks to your liking, click the "Generate Patch from Selection" button in the top left to download your patch, which will be named "tweaks.asm".
This file can then be patched to your ROM using Asar just like any other patch from the Patches section. If you later wish to add, remove, or modify your patch, you can use the "Import Patch" button to load your file back into the section page. (Do be aware, though, that removing a tweak from the patch and reapplying does not remove the tweak from your ROM.)
The base tweaks.asm file is designed to be modified by way of the Tweaks section page; it isn't recommended to change any part of this file manually unless you know what you're doing. The raw base patch is available here if desired.
Submitting a Tweak
Submitting a tweak can be a bit more involved. Tweaks are ultimately added to the master patch in the form of macros. Tweak submissions take six inputs that determine how the macro is defined, how the macro is called, and how the overall tweak appears on the Tweaks page. It might seem confusing at first glance, especially to those not well versed in using macros, but checking out a few of the tweaks already in the section should make things much clearer. And if you're still unsure, you're always welcome to ask in this thread or contact one of our ASM Moderators. The Tweak Submission Guidelines can be found here. The tweak submission fields are as follows:
- Name - Summary of the tweak's effect. This is the name that displays on the Tweaks page. Appears in the generated patch as part of the macro name.
- Description - Detailed description or usage instructions, if applicable. Appears under the name on the Tweaks page. HTML is allowed. Does not appear in the patch in any way.
- Tags - Relevant tags for searching the Tweaks page, same as any other section. Does not affect the patch in any way.
- Parameters - A collection of four sub-options that determine how the tweak's macro arguments are set up and displayed. Only required if your tweak accepts some sort of configurable input. The sub-options are as follows:
- Identifier - The name of the macro parameter identifier as referenced by the code itself. Allows letters and underscores, as well as numbers for the second character onwards. Symbols are forbidden.
- Name - The name of the parameter's data input field as it appears on the Tweaks page. Does not appear in the generated patch.
- Default Value - The value passed to the identifier in the macro call if not changed by the user. This should be set to match base game values whenever possible.
- Type - Defines what values the user may pass to the macro parameter identifier:
- Byte/Word/Long/Double each create a data input field that allows the user to enter an arbitrary one/two/three/four byte number, respectively. Accepted number formats are binary (%XXXXXXXX), hexadecimal ($XX), or decimal (XX).
- Select creates a dropdown menu made up of an arbitrary number of Name/Value pairs. The Tweaks page will display a dropdown menu containing each Name as a selectable option, which will pass its corresponding Value to the parameter identifier if selected. Select-type Values may pass completely arbitrary input.
- Code - The actual change to be applied to the ROM. The Tweaks page itself automatically defines a macro to contain your code, and as such your code should NOT contain the
macro_name()
andendmacro
lines. Otherwise, any Parameters you define on the Tweaks page should be referenced in your code using the normal macro syntax, using the name you enter in the Identifier field. For example, if you create a Parameter with an Identifier named speed, your Code would reference it asorg $01A75E : db <speed>
. Again, this only applies to tweaks that accept user input! If your tweak has no Parameters, your code is simply entered as-is, ex.org $00CDFC : db $80
.
- Submission Notes - A field to relay notes to the moderators, same as our other sections. Not visible to the public. Cleared when the tweak is accepted or rejected.
With the creation of the Tweaks section, there is now no longer any reason to catalog hex edits in the ROM Map, and we will no longer accept any hex edits that are submitted there. The hex edits already present in the ROM Map will gradually be migrated over to the Tweaks section. The ROM Map Submission Guidelines have been updated with a new rule as follows:
Originally posted by ROM Map Submission Guidelines - New Rule
- Don't submit hex edits.
The ROM Map is intended solely to document the function of code as it exists in the Super Mario World ROM. Modifications to data and routines should be submitted to the Tweaks Section or Patches Section. Refer to the Tweaks Section guidelines to determine which section is most appropriate.
If you know that the tweak you're submitting currently appears in the ROM Map, we would appreciate very much if you could make note of such in the Submission Notes so that we may update the Tweaks section and the ROM Map in tandem.
You may recall that this isn't our first time grappling with the issue of hex edits. Our previous rule for submitting hex edits to the Patches section has been amended:
Originally posted by Patch Submission Guidelines - Rule 2 Revision
- Patches that consist exclusively of simple hex edits must be of sufficient functional depth.
Generic singular edits such as "modify Banzai Bill's X speed" are better posted in the Tweaks section. Refer to the Tweaks Section guidelines to determine whether your code is best suited as a patch or a tweak.
In brief, a tweak is something that changes some piece of the original game without changing its overall intent or function. Changing a speed value to a different speed value, raising or lowering a threshold number for something, making a "sometimes" behavior into an "always" or "never" behavior, changing the ID of a spawned sprite - these are things that take something the base game already does and make it happen a little differently. If your code significantly alters the overall function of something despite being made up of technically simple edits, it would best be submitted to the Patches section. There's always a grey area, of course, and a moderator may suggest moving your code from one section to the other as appropriate.
On that note, we're taking this opportunity to formalize what has long been an implicit understanding among the SMW ASM sections, namely that moderators may make slight alterations to a submitted resource prior to accepting them:
Originally posted by General SMW ASM Submission Guidelines - New Rule
- Your resource may be gently modified during moderation.
A moderator may make very small technical changes to a submission, generally to fix small errors that lead to a bug or crash as discovered during moderation (for example, a missing SA-1 conversion). This is done as a courtesy to spare the author the effort of resubmitting after making a trivial fix. Any changes made are documented by the moderator in a comment on the resource and may be freely challenged by the author(s) if desired. Stylistic changes or changes that alter the core function of a resource will not be made in this way.
The above does not reflect a change in policy, it's merely being added for transparency about what has long since been the practice. Please be aware that tweaks in particular are somewhat more technical in nature, and are inherently more likely to be adjusted during moderation. If you have any questions or concerns regarding this guideline, in general or otherwise, please feel free to share.
In summary, the Tweaks section is really cool, and you can find the corresponding submission guidelines here. The ROM Map Submission Guidelines, Patch Submission Guidelines, and General ASM Submission Guidelines have each been updated as detailed above to accommodate the emergence of Tweaks.
You're welcome to use this thread to ask any questions about the Tweaks section or the accompanying guideline adjustments. If you run into any bugs in the Tweaks section, please report them here.