Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ▤▤▤ What is it?
- It's some chat commands that let you write to my SNES's memory via the SD2SNES.
- ▤▤▤ Why?
- Because it could be fun.
- ▤▤▤ How?
- !write HEX_ADDRESS HEX_VALUE
- !writeEx HEX_ADDRESS HEX_VALUE HEX_ADDRESS HEX_VALUE HEX_ADDRESS HEX_VALUE HEX_ADDRESS HEX_VALUE
- !w HEX_ADDRESS HEX_VALUE HEX_ADDRESS HEX_VALUE
- Now all of these do the same thing, and support up to 8 address value pairs.
- ▤▤▤ What's new in 2.0 Beta?
- Mostly stability fixes. CARL modules are no longer run during NMI, so fewer seizures.
- CARL modules can also be unloaded from the ASM itself. The protocol is documented on the Docs page. I may change this later...but I'll fix y'all's code if I do.
- From 2.0 Alpha:
- Project CARL! https://patcdr.net/carl
- A new way to load assembly directly into Super Mario World and other games.
- How it works? You !load and !unload short assembly modules by name from the Listings page.
- Or you can add new ones! You have to login via Twitch, but after that, you can use the ASM Editor right in your browser.
- You should probably read the Docs page if you're going to write any ASM though. It covers your execution environment and some gotchas.
- From 1.4::
- !wl HEX_ADDRESS HEX_VALUE HEX_VALUE HEX_VALUE
- You can now do linear writes. Makes it a bit easier to do long runs of writes.
- From 1.3:
- !w HEX_ADDRESS $HEX_ADDRESS
- !w HEX_ADDRESS *HEX_ADDRESS
- You can now copy values from memory. It's restricted to WRAM for the time being, and you must prefix your value with a $ or a *.
- ▤▤▤ Examples?
- !w 0x7E0DBE 0x09 -- Sets Mario's lives to 10
- !w 0x7E1493 0xFF -- Ends the level, like Mario touched the ORB
- !w 0x7E0019 0x02 -- Gives Mario a cape.
- And plenty more. Try some random ones and see if they crash the game! Or take a look at this partial memory map and try to do something interesting: https://www.smwcentral.net/?p=nmap&m=smwram
- There's also a bunch of handy diagrams for hacking some of the graphics: https://www.smwcentral.net/?p=viewthread&t=13448
- ▤▤▤ Psudocommands!
- For your convenience, some of the commonly used addresses now are available as !commands:
- !bonus_game_1ups 0xNN
- !bonus_game_end_timer 0xNN
- !can_climb_on_air 0xNN
- !can_scroll 0xNN
- !disable_ground_collision 0xNN
- !end_level_timer 0xNN
- !enemy_hop_counter 0xNN
- !freeze_everything 0xNN
- !generator_type 0xNN
- !invulnerability_timer 0xNN
- !is_multiplayer 0xNN
- !is_paused 0xNN
- !is_player2 0xNN
- !is_player2_overworld 0xNN
- !is_water_current 0xNN
- !is_water_level 0xNN
- !keyhole_timer 0xNN
- !layer_1_shake_timer 0xNN
- !loose_yoshi_flag 0xNN
- !luigi_overworld_x_hi 0xNN
- !luigi_overworld_x_lo 0xNN
- !luigi_overworld_y_hi 0xNN
- !luigi_overworld_y_lo 0xNN
- !luigi_submap 0xNN
- !mario_overworld_x_hi 0xNN
- !mario_overworld_x_lo 0xNN
- !mario_overworld_y_hi 0xNN
- !mario_overworld_y_lo 0xNN
- !mario_submap 0xNN
- !message_box_dispatch 0xNN
- !mode 0xNN
- !mosaic_value 0xNN
- !music_dispatch 0xNN
- !p_meter 0xNN
- !player_mode_dispatch 0xNN
- !player_stun_timer 0xNN
- !powerup 0xNN
- !pswitch_blue_timer 0xNN
- !pswitch_silver_timer 0xNN
- !queued_lives 0xNN
- !reserve_item 0xNN
- !screen_display_value 0xNN
- !scroll_mode 0xNN
- !scroll_screen 0xNN
- !side_exit_flag 0xNN
- !slippery_amount 0xNN
- !sparkle_timer 0xNN
- !star_timer 0xNN
- !switch_palace_flags 0xNN
- !timer_hundreds 0xNN
- !timer_ones 0xNN
- !timer_tens 0xNN
- !transition_counter 0xNN
- !transition_stars 0xNN
- !vx 0xNN
- !vy 0xNN
- !yoshi_egg_sprite 0xNN
- !yoshi_egg_timer 0xNN
- ▤▤▤ Anything else?
- You could also use !read (!r) HEX_ADDRESS to see the current value of anything you're interested in changing.
- Also, using 0x to prefix your hex numbers is optional, but encouraged. They will, however, always be interpreted as hex.
Add Comment
Please, Sign In to add comment