This is a list of relevant links, a table of catered ASM snippet names, a list of helpful commands, and a table of RAM addresses for use with Chat Hacks SMW by PatCdr, streamed peroidically at twitch.tv/patcdr.
These official pages will explain Chat Hacks SMW much better than anybody else can:
Website: https://patcdr.net/chathacks.html
ASM / Project CARL main page: https://patcdr.net/carl
Pastebin (oldish; obsoleted by first link): https://pastebin.com/enaY5yn8
Searchable RAM map (ultra helpful): https://www.smwcentral.net/?p=memorymap&game=smw
Sprite data RAM: https://docs.google.com/spreadsheets/d/1YuEyTkBXl-BvXyAf6C7EPXo20CdVlbwUttp2RXHoY2U
Sprite ID #s: https://smwspeedruns.com/Sprites
These are ASM snippets that I have used or seen the effects of and personally find fun or useful. Keep in mind that people can change or delete their code after they upload it — the descriptions I have listed here may not accurately describe the effects forever. This is not a replacement for PatCdr's own automatically updated list; it is simply a reduction and alphabetization of the massive list so that I can make decisions more quickly. I probably left some out, but that doesn't mean I don't like them.
Name | User | User's Desc | Description/Notes |
---|---|---|---|
aimedbills | perryman1138 | Shoots bullet bills at Mario's y-pos from side of screen | |
airjump | tjb0607 | jump literally anytime | |
AntiAutoscroll | fiskbit | Scrolls opposite the direction is Mario facing | |
BGMorph2 | smwagent09af | Periodically changes background color based on screen position and Mario's speed | Much less seizure-inducing than the original bgmorph. |
blowshi | snydej | Yoshi? More like Blowshi! 🤣 | Yoshi will explode after a bit of time |
boosprites2 | snydej | Sprites are boos when not being looked at | |
bsbs | snydej | Block snake stops when not stood on | |
CoinPoser | mrmeyham | Coins = Pose | See $7e13e0 below. Great for use with coinrun and/or xycoin |
coinrun | snydej | Running costs coins | Great for use with xycoin |
cointimer | lineprinter | coins decrease the timer | Great for use with xycoin |
Darkness | fiskbit | Brightness ($7e0dae) goes up and down repeatedly. If the code is unloaded at the wrong moment, $dae will be "stuck" at its most recent value. | |
disco_sprites | furyfulfawful | Make all sprites fallow mario like disco shells | recommended for use with boosprites2 |
DontLetGo | fiskbit | Pushes Mario left when not holding any buttons | |
dropout | smwagent09af | Periodically disables ground collision | Includes sound cues |
Ebb | fiskbit | Periodically toggles water level flag | |
flymetothestars | tjb0607 | infinite cape flight | Powerup is fixed to cape |
hurry | tjb0607 | keeps speeding up the music | Plays annoying warning sfx everytime music is sped up |
hwrap | perryman1138 | Wraps top and bottom of screen in horizontal rooms. Behaves funny in vertical rooms | |
LeapOnce | circlefriendo | Leap, but sets vx once | Makes player go forward very quickly when jumping |
LRDash | fiskbit | L and R give left and right dashes | |
lrmorton | snydej | Pressing L or R takes you to Morton's Castle | Wonderful troll when player expects a different L+R function. Warning displayed on HUD. Do not confuse with Irmorton (with I as in India) |
mansbesthorse | snydej | He's there for you whether you want him or not. | Jumping gives a Yoshi |
oddraft | snydej | Skull raft pauses when not stood on | |
oddwater | snydej | Toggles water level flag based on player direction | |
oftenstar | circlefriendo | Toggles star power on and off at steady intervals | |
Palette | circlefriendo | Edit Palette | See $7f9f00 below |
pbpowerup | snydej | Every powerup is a p-balloon | Includes midway points |
porcusprites2 | smwagent09af | snydej's boosprites2 except with porcupuffers | May cause sprite lag and despawn important sprites |
r_stars | circlefriendo | R button toggles star power | |
rand64 | tjb0607 | randomizes $64 | See $7e0064 below |
randomlag | furyfulfawful | See $7f9696 below | |
rdoor | snydej | Randomizes doors/pipes | |
reservelottery | smwagent09af | Every possible value | Cycles the item box |
RHover | circlefriendo | R button hovers | |
rwarpdash | furyfulfawful | player can warp in the direction of the dpad by pressing R | Can cause suffocation and cause tiles to visually render improperly |
save | snydej | Allows saving after every level | |
ShakeIt | smwagent09af | constantly sets Layer 1 shake timer | Now with sound effect! |
shells | tjb0607 | gives mario a shell if he doesn't have one | |
sideexit | snydej | Enables side exit flag | |
Sleappery | circlefriendo | Combining multiple scripts into one to save slots | Combines slippery and leap |
spawner | circlefriendo | Summons a configurable sprite | See $7f9d0a and $7f9d0b below |
Spin2Win | fiskbit | All jumps are spin jumps | |
spread | tjb0607 | dtothefourth's "duplicating tiles" patch | |
stickyhands | perryman1138 | If player grabs an item, that item stays until snippet is unloaded, item "wakes up" (goombas, mechakoopas), etc. | |
walkout | snydej | Enables the side exit flag | |
warp | tjb0607 | allows for a chat command to initiate a warp to a specific level | see https://patcdr.net/carl/asms/warp |
xycoin | smwagent09af | Pressing X/Y gives coins | Great for use with coinposer, coinrun, cointimer, etc. |
These are RAM addresses (normally left free by vanilla SMW) that users have picked out for using with their CARL snippets. I have compiled this list in case anyone has the ability to write ASM for CARL and doesn't want to overwrite other people's free RAM. The list is mostly complete (many entries were copied and sorted from CircleFriendo's "Addresses" reference file), but I don't know what every single snippet uses.
Please let me know if you would like your addresses added to this list.
Visit this filtered RAM map to see other free regions of RAM you can use.
#1 Iggy's Castle: !w 7E1F11 01 7E1F17 98 7E1F18 00 7E1F19 28 7E1F1A 00 mode b
#2 Morton's Castle: !w 7E1F11 00 7E1F17 D8 7E1F18 00 7E1F19 C8 7E1F1A 00 mode b
#3 Lemmy's Castle: !w 7E1F11 02 7E1F17 C8 7E1F18 00 7E1F19 28 7E1F1A 01 mode b
#4 Ludwig's Castle: !w 7E1F11 00 7E1F17 A8 7E1F18 01 7E1F19 38 7E1F1A 00 mode b
Forest of Illusion 1: !w 7E1F11 03 7E1F17 88 7E1F18 00 7E1F19 78 7E1F1A 01 mode b
#5 Roy's Castle: !w 7E1F11 00 7E1F17 88 7E1F18 01 7E1F19 28 7E1F1A 01 mode b
#6 Wendy's Castle: !w 7E1F11 00 7E1F17 C8 7E1F18 00 7E1F19 B8 7E1F1A 01 mode b
Valley of Bowser 1: !w 7E1F11 04 7E1F17 b8 7E1F18 01 7E1F19 78 7E1F1A 00 mode b
#7 Larry's Castle: !w 7E1F11 04 7E1F17 78 7E1F18 01 7E1F19 58 7E1F1A 00 mode b
Back door: !w 7E1F11 04 7E1F17 98 7E1F18 01 7E1F19 38 7E1F1A 00 mode b
Star World 1: !w 7E1F11 6 7E1F17 48 7E1F18 1 7E1F19 A8 7E1F1A 1 mode b
Gnarly (Special world 1): !w 7E1F11 05 7E1F17 18 7E1F18 01 7E1F19 38 7E1F1A 01 mode b
Funky (Special world 8): !w 7E1F11 05 7E1F17 38 7E1F18 01 7E1F19 18 7E1F1A 01 mode b
You can make your own teleport command by running SMW locally in emulators with a RAM editor (snes9x, BizHawk, no$sns, etc), walking to your desired location on the overworld, opening the emulator's memory/RAM viewer, locating the addresses used in the above commands ($7E1F11, $7E1F17, $7E1F18, $7E1F19, and $7E1F1A), and putting the displayed values in place of the ones in the commands above.
To turn Autumn palette and sprites off, paste !w 7E1EEB 0
.
To turn Autumn palette and sprites on (not recommended), paste !w 7E1EEB 80
.
Changes to the autumn bit are applied when the overworld is reloaded.
If the player is stuck in a level (especially level 0/Bonus Game), pasting !mode b
will instantly take the player back to the overworld, providing the game hasn't frozen.
Alternatively, pasting !mode f
will restart the level from the beginning, provided that some joker hasn't changed the player's overworld position. If that has happened, see above.
If you don't want to start the level over, try simply pasting !end_level_timer FF
for the normal exit and !keyhole_timer 30
for the secret exit. If you want to end the level in style with the regular exit and give the player a blue yoshi, paste !player_mode_dispatch 8
. Note that none of these commands will end the Bowser fight! (That is also possible with Chat Hacks, but I will leave that for a later time.)
If the player needs some health, paste one of the following: !19 1
for big Mario, !19 2
for cape Mario, or !19 3
for fire Mario.
If the player needs star invincibility for some reason, load the "starman" ASM with !load starman
.
If the screen is dark for some reason unrelated to the disco spotlight in Bowser's castle (e.g. if the "darkness" ASM is unloaded at the wrong time), try pasting !dae f
. This might fix it.
Some of the addresses below were copied from a couple of the SMW RAM maps on smwcentral.net, and the rest were directly copied from the credited users while a stream was happening. The "✓" column means that I have tested the address personally or know that it works (fairly) consistently. At the moment there are no untested addresses, but if one gets added later without this check, this may be because the effect I associate with it may rely on some external ASM that was already loaded, have other requirements for working, or be caused by some other value changes that I didn't catch.
The following list was manually converted from a messy Google Keep document into Google Sites because I needed more features and less page load time, and subsequently reformatted to here through some semi-automated processes. I don't remember why I put some of this stuff in the original Keep document, but I copied it all into here anyway.Start Address | Name ⇳ | Description ⇳ | Type ⇳ | Example ⇳ | Credited User ⇳ | SMWC Link ⇳ | ✓ ⇳ |
---|---|---|---|---|---|---|
$7e0012 | Stripe image loader — value "should" be divisible by 3. Some values will crash the game, but some are fine. | Graphics | !12 0x3d |
SuperMaks64 | 7E0012 | ✓ |
$7e0019 | !powerup | Player's powerup (2 = cape 3 = flower >3 = weird) | Help | !19 92 |
N/A | 7E0019 | ✓ |
$7e0040 | CGADSUB Settings | Graphics | Dark + translucent Layer 1: !40 ff |
unknown | 7E0040 | ✓ |
$7e0044 | Initial settings for color addition. | Graphics | !44 c2 |
unknown | 7E0044 | ✓ |
$7e005d | Screens in level (if the value is changed to lower than expected the player will fall through the floor where the specified screen begins) | Troll | !5d 0 |
SMWAgent09AF | 7E005D | ✓ |
$7e0064 | First byte of some sprite properties | Graphics | !64 2 |
tjb0607 | 7E0064 | ✓ |
$7e0071 | !player_mode_dispatch | Player mode trigger | Help | !player_mode_dispatch 7 |
N/A | 7E0071 | ✓ |
$7e0075 | Mario is in water flag (reset every frame) | Fun | !w 0x7E0075 0x01 |
N/A | 7E0075 | ✓ |
$7e0082 (linear) | Slope height pointer | Misc | !wl 7e0082 34 34 34 |
Perryman1138 | 7E0082 | ✓ |
$7e0085 | !is_water_level | Water level flag | Help | !is_water_level 1 |
N/A | 7E0085 | ✓ |
$7e0086 | !slippery_amount | Slippery physics (also try "slippery" ASM) | Troll | !w 7e0086 ff |
N/A | 7E0086 | ✓ |
$7e009e (multi) | Give P-Balloon status | Fun | !w 7e009e 7d 7E14C8 0b 7E13F3 09 7E167A 9a 7E1686 29 7E1DF9 01e |
snydej | ✓ | |
$7e0100 | !mode | Game mode. Mode 0 soft resets, Mode B fades into OW, Mode F enters the current OW level. Do not overuse. | Help | !mode f |
N/A | 7E0100 | ✓ |
$7e0109 | Override OW loading on level exit and go to specified other level minus 0x24. May cause OOB on overworld or messed up events. | Fun | Top secret area: !w 0x7E0109 0x03 |
N/A | 7E0109 | ✓ |
$7e0701 | BG color | Graphics | !w 0x7e0701 0x9c |
N/A | 7E0701 | ✓ |
$7e0dae | !screen_display_value | Brightness (expected value is 0f) | Graphics | !dae 0f |
N/A | 7E0DAE | ✓ |
$7e0dba (linear) | Yoshi color (on overworld, carried into levels): $dba = Mario, $dbb = Luigi. 0x04=yellow; 0x06=blue; 0x08=red; 0x0A=green | Misc | !wl 7e0dba 8 8 |
SMWAgent09AF | 7E0DBA | ✓ |
$7e0dc0 | Green star block coin counter (decrements from 0x1e). When this reaches 0, the green star block in YI3 will give a 1-up instead of a coin. | Misc | !dc0 0 |
N/A | 7E0DC0 | ✓ |
$7e0dc2 | !reserve_item | Item in reserve box: https://smwspeedruns.com/Sprites | Fun | !dc2 c2 |
N/A | 7E0DC2 | ✓ |
$7e0dd3 | Player movement direction on OW paths; may cause OOB. 0 = up, 2 = down, 4 = left, 6 = right | Misc | !w 0x7E0DD3 0x02 |
SMWAgent09AF | 7E0DD3 | ✓ |
$7e0ef9 (linear) | Status Bar GFX. Writing through chat commands is off limits; use CARL if necessary. | Graphics | StatusBarMap.png | N/A | 7E0EF9 | ✓ |
$7e0f31 (linear) | !timer_hundreds !timer_tens !timer_ones | Hundreds/Tens/Ones place in timer. Technically each digit is a hex value, but of course timer is in base 10 | Fun | !wl f31 1 0 1 |
N/A | 7E0F31 | ✓ |
$7e0fae (linear) | Low byte of the angle of the Boo rings. $7e0fae is for the first Boo ring active; $7e0faf is for the second Boo ring active. | Fun | !fae 0x88 |
N/A | 7E0FAE | ✓ |
$7e13cb | When this is set to 0x80 in levels, the player is automatically given star power for the normal duration. Reset every frame in levels. | Fun | !w 7e13cb 80 |
SMWAgent09AF | 7E13CB | ✓ |
$7e13cc | Queued coins. Fun for use with CoinPoser asm | Misc | !w 7e13cc 63 |
N/A | 7E13CC | ✓ |
$7e13e0 | Player's "pose", used in "CoinPoser" . See MarioPoses.png for expected values. | Graphics | !w 13e0 42 |
LouisDoucet | 7E13E0 | ✓ |
$7e13e3 | Player is running along a wall (like from a pink triangle). See SMWC link for expected values. | Misc | !w 0x7E13E3 0x06 |
SMWAgent09AF | 7E13E3 | ✓ |
$7e13f9 | Behind the scenes: 01 will send player behind objects, 02 will send player behind objects and sprites, and 03 will only send player behind sprites. | Misc | !w 7e13f9 02 |
N/A | 7E13F9 | ✓ |
$7e13fb | Player is frozen (any sprite interaction while frozen will cause game to softlock until this byte is set to 0 again) | Troll | !w 0x7e13fb 0x01 |
SMWAgent09AF | 7E13FB | ✓ |
$7e13f3 | Fake P-balloon status — player conserves horizontal momentum but is unable to move until someone sets the value back to 0. | Troll | !wl 7e13fe 09 |
SMWAgent09AF | 7E13F3 | ✓ |
$7e13fd (linear) | Temporary pause and scroll screen (Effect of pressing shoulder) | Fun | !wl 7e13fd 01 04 00 ff |
Perryman1138 | 7E13FD | ✓ |
$7e1403 | !is_water_current | Water/Layer 3 tide flag (0x00-0x02) (will randomly kill player in levels with layer 3 BG) | Troll | !is_water_current 1 |
SMWAgent09AF | 7E1403 | ✓ |
$7e1411 | Horizontal scroll enabled flag. If this is disabled, the player cannot go beyond the limits of the screen. If it was disabled and gets enabled, the level will "jump" and graphical glitches will occur. | Troll | !1411 0 |
SMWAgent09AF | 7E1411 | ✓ |
$7e1413 | Horizontal scroll setting for Layer 2. 0x00 = none; 0x01 = constant; 0x02 = variable. | Graphics | !w 7e1413 02 |
SuperMaks64 | 7E1413 | ✓ |
$7e1414 | Vertical scroll setting for Layer 2. Expected values 0x00-0x03. Setting it to 0x01 in certain levels may cause weird graphical artifacts in the background. | Graphics | !w 7e1414 01 |
SMWAgent09AF | 7E1413 | ✓ |
$7e1419 | Pipe animation effect: affects Yoshi and carried items. Similar to "stickyhands" ASM. | Graphics | !w 0x7E1419 0x02 |
SMWAgent09AF | 7E1419 | ✓ |
$7e141a | !transition_counter | # of times any room was entered after level was first entered. Will either go to back to the first room or warp elsewhere on the next screen transition if set to $FF. | Troll | !141a ff |
SMWAgent09AF | 7E141A | ✓ |
$7e1425 | Will enter bonus game flag. Only works for goal tape exits. | Fun | !1425 1 |
SMWAgent09AF | 7E1425 | ✓ |
$7e1434 | !keyhole_timer | Start keyhole animation and end level (expected values 0x00 or 0x30) | Help | !keyhole_timer 30 |
N/A | 7E1434 | ✓ |
$7e1493 | !end_level_timer | Course clear march timer — the lower the value, the glitchier the colors will be. Can be set before a level is entered to end that level immediately. | Help | !end_level_timer 1 |
N/A | 7E1493 | ✓ |
$7e14ae | !pswitch_silver_timer | Silver P-switch timer | Fun | !w 7e14ae ff |
SMWAgent09AF | 7E14AE | ✓ |
$7e14b6 (linear) | Used for brown chain platforms (updated every frame) and some boss processes. Can speed up Bowser fight | Help | !w 14b6 80 |
MrMeyham | 7E14B6 | ✓ |
$7e185c | !disable_ground_interaction | Mario does not interact with ground/objects flag | Troll | !w 0x7E185C 0x01 |
SMWAgent09AF | 7E185C | ✓ |
$7e186b | Multi-coin block timer — decrements from 0xFF when a multi-coin block is hit | Fun | !w 0x7E186B 0xFF |
N/A | 7E186B | ✓ |
$7e1887 | !layer_1_shake_timer | Ground shake timer | Fun | !w 0x7E1887 0xFF |
SMWAgent09AF | 7E1887 | ✓ |
$7e18bc | !skull_platform_speed | Skull raft is moving flag | Troll | !w 7e18bc 0 |
SMWAgent09AF | 7E18BC | ✓ |
$7e18c2 | !is_on_lakitu_cloud | Lakitu cloud flag — reset each frame. | Fun | !w 0x7e18c2 0x01 |
wolfman2000 | 7E18C2 | ✓ |
$7e18e4 (multi) | Shoots player up-left, gives star power, cape, and a 3-up | Fun | !w 18e4 3 1dfb d 1490 ff dc2 1c 19 2 7b 80 7d 80 |
LouisDoucet | ✓ | |
$7e18e4 | !queued_lives | Queued lives to give to player | Help | !queued_lives a |
N/A | 7E18E4 | ✓ |
$7e1b95 | When set to 0x02, the player will go to a Yoshi bonus on the next screen transition/level load. This will not beat the level — try !player_mode_dispatch 8 if you want to progress. |
Troll | !w 0x7E1B95 0x02 |
SMWAgent09AF | 7E1B95 | ✓ |
$7e1ba0 | Bowser head shake on OW | Fun | !w 7e1ba0 ff |
N/A | 7E1BA0 | ✓ |
$7e1dea | Which OW event at level end (modifying may mess up OW) | Misc | !w 0x7E1DEA 0x01 |
N/A | 7E1DEA | ✓ |
$7e1df9 (linear) | Play SFX / Music (see $7e1dfb below) | Fun | !wl 0x7E1DF9 0xC3 0x27 0x98 0x7A |
unknown | 7E1DF9 | ✓ |
$7e1dfb | !music_dispatch | Play music: List of songs/FX | Fun | !music_dispatch 12 |
N/A | 7E1DFB | ✓ |
$7e1f11 (multi) | TP somewhere on OW (emergency measure) | Help | Morton's Castle: !w 7e1f11 00 7e1f17 d8 7e1f18 00 7e1f19 c8 7e1f1a 00 mode b (See OW Teleport section above this table) |
snydej | ✓ | |
$7e1f27 (linear) | switch_palace_flags | Switch palace pressed flags: $1f27 = G $1f28 = Y $1f29 = B $1f2a = R | Misc | !wl 7e1f27 00 00 00 00 |
SuperMaks64 | 7E1F27 | ✓ |
$7f9696 | Degree to which "randomlag" ASM lags the game | Troll | !w 7f9696 0a |
FuryfulFawful | Free RAM | ✓ |
$7f9d0a | Address used for "spawner" ASM: See sprites list | Fun | !wl 7f9d0a d7 1f |
CircleFriendo | Free RAM | ✓ |
$7f9d0b | Time between "spawner" spawns | Fun | see "spawner" above | CircleFriendo | Free RAM | ✓ |
$7f9f00 (linear) | Modify L1 palette. Used with "palette" ASM | Graphics | !wl 7f9f00 0c 36 fc 24 45 05 00 00 20 2e |
CircleFriendo | Modifies these addresses | ✓ |
$7fb3c0 (linear) | Warp Dispatch for use with "warp" ASM. See https://patcdr.net/carl/asms/warp | Troll | !wl 7FB3C0 00 01 20 |
tjb0607 | Free RAM | ✓ |