<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://sneslab.net/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Corrosive</id>
	<title>SnesLab - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://sneslab.net/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Corrosive"/>
	<link rel="alternate" type="text/html" href="https://sneslab.net/wiki/Special:Contributions/Corrosive"/>
	<updated>2026-05-17T09:09:51Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://sneslab.net/mw/index.php?title=SMW_Resource_Memory_Map&amp;diff=714</id>
		<title>SMW Resource Memory Map</title>
		<link rel="alternate" type="text/html" href="https://sneslab.net/mw/index.php?title=SMW_Resource_Memory_Map&amp;diff=714"/>
		<updated>2019-09-30T07:32:03Z</updated>

		<summary type="html">&lt;p&gt;Corrosive: /* RAM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Organization comes later. Feel free to add major patches here as well.&amp;lt;br&amp;gt;&lt;br /&gt;
Also feel free to suggest a good way to represent SA-1 addresses (if applicable).&lt;br /&gt;
&lt;br /&gt;
== Lunar Magic == &lt;br /&gt;
=== RAM ===&lt;br /&gt;
Most of these addresses were acquired from Lunar Magic&#039;s help file and files floating around the internet.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Address !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| $7E0BF5 || 0x1 || ExLevel flags (to be filled later).&amp;lt;br&amp;gt;&lt;br /&gt;
Used on Lunar Magic 3.00+&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $7E0BF6 || 0x100 || ExLevel RAM (to be filled later).&amp;lt;br&amp;gt;&lt;br /&gt;
Used on Lunar Magic 3.00+&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $7E13D7 || 0x2 || Screen vertical size.&amp;lt;br&amp;gt;&lt;br /&gt;
Used on Lunar Magic 3.00+&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $7E1936 || 0x2 || Screen vertical size - #$0010. Used to adjust smkdan&#039;s patch&amp;lt;br&amp;gt;&lt;br /&gt;
Used on Lunar Magic 3.00+&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $7FC004 || 0x1 || Legacy ExAnimations frame counter. Used to be the frame counter for every ExAnimation slot, now it&#039;s only accurate for slots 0, 8, 10 and 18.&lt;br /&gt;
|-&lt;br /&gt;
| $7FC060 || 0x10 || Conditional Direct Map16 flags.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $7FC070 || 0x10 || Manual ExAnimation triggers.&amp;lt;br&amp;gt;&lt;br /&gt;
Each byte corresponds to one manual ExAnimation slot. This block of RAM addresses isn&#039;t initialized unless you use the Trigger Init button in the ExAnimation dialog.&lt;br /&gt;
|-&lt;br /&gt;
| $7FC080 || 0x20 || Level ExAnimations frame counter. Each byte corresponds to one slot.&lt;br /&gt;
|-&lt;br /&gt;
| $7FC0A0 || 0x20 || Global ExAnimations frame counter. Each byte corresponds to one slot.&lt;br /&gt;
|-&lt;br /&gt;
| $7FC0F8 || 0x4 || One Shot Exanimation triggers.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $7FC0FC || 0x2 || Custom ExAnimation triggers.&amp;lt;br&amp;gt;&lt;br /&gt;
Each bit corresponds to each custom ExAnimation slot. If a bit is on it means the trigger is enabled. This block of RAM addresses isn&#039;t initialized unless you use the Trigger Init button in the ExAnimation dialog.&lt;br /&gt;
|-&lt;br /&gt;
| $7FC00B || 0x2? || Purpose unknown. Used in $0EFD00 to perform a bit 2 check.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $7F8183 || 0x1A4? || Used for VRAM modification.&amp;lt;br&amp;gt;&lt;br /&gt;
*$7F8185 holds a 16-bit value. Written to on $0FB054.&lt;br /&gt;
*$7F8327 is used on $0FB054 to store either 0x01B0 or 0x200. Maybe it&#039;s related to Layer 2 BG height?&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $000000 || 0x0 || To be edited later.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ROM/Routines ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SNES Address !! Description&lt;br /&gt;
|-&lt;br /&gt;
| $0FF900 || GFX decompression routine.&amp;lt;br&amp;gt;&lt;br /&gt;
It can&#039;t decompress GFX files 32 or 33.&amp;lt;br&amp;gt;&lt;br /&gt;
On entry:&amp;lt;br&amp;gt;&lt;br /&gt;
* A should contain the 16-bit GFX/ExGFX file number you want to decompress.&amp;lt;br&amp;gt;&lt;br /&gt;
* $00-$02 should contain the 24-bit address of where to decompress the data to.&amp;lt;br&amp;gt;&lt;br /&gt;
On exit:&amp;lt;br&amp;gt;&lt;br /&gt;
* Processor bits are preserved.&amp;lt;br&amp;gt;&lt;br /&gt;
* Contents of X are preserved.&amp;lt;br&amp;gt;&lt;br /&gt;
* Contents of Y are preserved.&amp;lt;br&amp;gt;&lt;br /&gt;
* A is not preserved.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $0EFD00 || LM Routine? Does something related to Layer 2 tilemaps. Returns the value of $7E1928 in A.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $000000 || To be edited later.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== AddMusicK ==&lt;br /&gt;
=== RAM ===&lt;br /&gt;
Note: AddMusicK&#039;s RAM addresses ($7FB000-$7FB00A) are reset during the SPC Program upload.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Address !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| $7E1DFA || 0x1 || Command list.&amp;lt;br&amp;gt;&lt;br /&gt;
*$01 - Jump SFX. Sounds glitched due to it overwritting part of arpeggio&#039;s RAM with unexpected data. See L_0A14 for more details.&amp;lt;br&amp;gt;&lt;br /&gt;
*$02 - Turns on Yoshi Drums.&amp;lt;br&amp;gt;&lt;br /&gt;
*$03 - Turns off Yoshi Drums.&amp;lt;br&amp;gt;&lt;br /&gt;
*$04 - Grinder SFX. Potentially glitched.&amp;lt;br&amp;gt;&lt;br /&gt;
*$05 - Disables echo effect on SFXs.&amp;lt;br&amp;gt;&lt;br /&gt;
*$06 - Enables echo effect on SFXs.&amp;lt;br&amp;gt;&lt;br /&gt;
*$07 - Pauses music.&amp;lt;br&amp;gt;&lt;br /&gt;
*$08 - Unpauses music.&amp;lt;br&amp;gt;&lt;br /&gt;
*$09-$FE - Unused&amp;lt;br&amp;gt;&lt;br /&gt;
*$FF - Jumps to L_099C. It &#039;&#039;seems&#039;&#039; to prepare the SPC700 to receive data. Disables echo, sets delay to 0, turns off channels, resets the song number (SPC Output 2 = 0). Needs testing.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $7FB000 || 0x1 || Current song playing.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $7FB001 || 0x1 || Flag used to disable sample upload when switching to a new song.&amp;lt;br&amp;gt;&lt;br /&gt;
Reset when a song finishes being uploaded to ARAM.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $7FB002 || 0x2 || Unused. Meant to be:&amp;lt;br&amp;gt;&lt;br /&gt;
ARAM/DSP Address.&lt;br /&gt;
* To write to ARAM: Set $7FB002 to the address, and $7FB004 to the value to write.  Note that the address cannot be $FFxx.&lt;br /&gt;
* To write to the S-DSP: Set $7FB002 to the address, $7FB003 to #$FF, and $7FB004 to the value to write.&lt;br /&gt;
|-&lt;br /&gt;
| $7FB004 || 0x4 || SPC Output.&amp;lt;br&amp;gt;&lt;br /&gt;
* $F4 $05 will reset $7FB004 and $7FB005.&amp;lt;br&amp;gt;&lt;br /&gt;
* $F9 $XX $YY will send $XX and $YY to $7FB004 and $7FB005 respectively. (Needs verification)&amp;lt;br&amp;gt;&lt;br /&gt;
* $7FB006 and $7FB007 are unused and most likely have garbage sent by the program.&lt;br /&gt;
|-&lt;br /&gt;
| $7FB008 || 0x1 || Unused. Meant to have the same purpose as $7E0DDA.&lt;br /&gt;
|-&lt;br /&gt;
| $7FB009 || 0x1 || Sample count in the current song.&lt;br /&gt;
|-&lt;br /&gt;
| $7FB00A || 0x400 || ARAM SRCN table.&lt;br /&gt;
Used as a buffer for the sample pointer/loop table.  Could be up to 1024 bytes long, but this is unlikely (4 bytes per sample; do the math).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ROM/Routines ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SNES Address !! Description&lt;br /&gt;
|-&lt;br /&gt;
| $008079 || UploadSPCData.&amp;lt;br&amp;gt;&lt;br /&gt;
This is an ever-so-slightly modified version of SMW&#039;s SPC upload routine. You can jump here at any time to upload data to the SPC.&amp;lt;br&amp;gt;&lt;br /&gt;
Input:&amp;lt;br&amp;gt;&lt;br /&gt;
* $00-$02 - Address of the block to upload to ARAM&amp;lt;br&amp;gt;&lt;br /&gt;
* $03-$04 - Position in ARAM to jump to upon completion&amp;lt;br&amp;gt;&lt;br /&gt;
* $05-$06 - Clobbered.  Unused on entry; will be the size of the transferred data when finished.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $008135 || UploadSPCDataDynamic. This address needs to be checked.&lt;br /&gt;
This is an alternate version of the upload routine. Call this if it is impossible to determine ahead of time where data will go. This routine is used to upload samples by default, but it can upload anything.&amp;lt;br&amp;gt;&lt;br /&gt;
Input:&amp;lt;br&amp;gt;&lt;br /&gt;
* $00-$02 - Address of the block to upload to ARAM&amp;lt;br&amp;gt;&lt;br /&gt;
* $03-$04 - Position in ARAM to jump to upon completion&amp;lt;br&amp;gt;&lt;br /&gt;
* $05-$06 - Size of the data to upload (this address is NOT clobbered).&amp;lt;br&amp;gt;&lt;br /&gt;
* $07-$08 - Address in ARAM to upload to (recommended to increment it by ($05) when you finish to upload consecutive data)&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PIXI ==&lt;br /&gt;
=== RAM ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Address !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| $000000 || 0x0 || To be edited later.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ROM/Routines ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SNES Address !! Description&lt;br /&gt;
|-&lt;br /&gt;
| $000000 || To be edited later.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== GPS ==&lt;br /&gt;
=== RAM ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Address !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| $000000 || 0x0 || To be edited later.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ROM/Routines ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SNES Address !! Description&lt;br /&gt;
|-&lt;br /&gt;
| $000000 || To be edited later.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom Powerups ==&lt;br /&gt;
=== RAM ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Address !! Size !! Description&lt;br /&gt;
|-&lt;br /&gt;
| $7E2000 || 0x800 || RAM with different purposes. Only uses 0x1D4 bytes at the moment.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $7E2800 || 0x2000 || Reserved as a decompression buffer for the 5th tile GFX.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $7E4800 || 0x2000 || Reserved as a decompression buffer for dynamic items GFX.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $7E6800 || 0x800 || Reserved as a copy of the first 2KiB of the latest decompresed GFX file.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $7E7000 || 0xCFF || Free to use.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| $000000 || 0x0 || To be edited later.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ROM/Routines ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SNES Address !! Description&lt;br /&gt;
|-&lt;br /&gt;
| $000000 || To be edited later.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Corrosive</name></author>
	</entry>
</feed>