Banner
Views: 779,309,148
Time:
10 users online: Bugsbunny205, CuteBattlePunny, Darolac,  MarioFanGamer, NathanWarford, Necro_Mantis, Ragey, shadowboyultra,  Tahixham, Zandro - Guests: 52 - Bots: 96 Users: 40,851 (1,671 active)
Latest: jacklin456
Tip: Do not set the music bypass to 00 in a level with a P-switch/star; the music will endlessly loop.Not logged in.
SMW Memory Map
Displaying 25 out of 2960 addresses. Show Waiting Addresses (13)
Filter
Link
Address
Hexadecimal number for a partial address. 6-digit number for a full address. Use - to denote a range. Use , to list more than one address.
Length
Type
Enable JavaScript to use multiple regions.
Region
Hold control to select multiple. Check "All" to select all at once.

Type
Description
Separate each individual keyword with spaces. Surround a phrase with quotes to look for the exact phrase, or with / to use a PCRE regular expression. Prepend with - to exclude a keyword or phrase, with + to require a whole word or phrase, or with -+ to exclude a whole word or phrase. ? matches any character, * matches any amount of characters.
 
Pages: « 1 2 3 4 5118 119 » Per Page: 25 50 75 100 150 500 All
ROM Address Length Type Description Details
$008000 39 bytes ASM This is the starting address of SMW. This takes care of basic initialization such as disabling IRQ, HDMA, DMA, clearing the SPC ports, enabling F-blank, disabling emulation mode, disabling decimal mode, initializing the direct page, and setting up the stack.
$008027 43 bytes ASM This is code is responsible for uploading the OAM clear routine to $7F8000. The uploaded routine is essentially an unrolled loop which stores #$F0 to all of the OAM mirror($0200) Y positions.
$008052 25 bytes ASM This is the main part of the SMW initialization routine. SPC engine upload, sample upload, OAM setup, windowing setup, and RAM clearing all happens here.
$00806B 14 bytes ASM This is the main game loop of SMW. It is used to wait for V-blank to complete before executing the code of the next frame. One of the frame counters ($13) is also incremented here.
$00810E 15 bytes Subroutine (JSR) OW Music uploader.
$008134 37 bytes Subroutine (JSR) Uploads level music bank.
$008159 17 bytes Subroutine (JSR) Credit music uploader.
$008179 49 bytes ASM Handles transfers to and from the SPC700 (I/O). Changing all values to [EA] (NOP) or jumping over the code effectively mutes all sound.
$008293 1 byte Misc. How many scanlines the status bar uses during a regular level.
$00835D 1 byte Layer 3 How many scanlines the status bar uses during the battles with Bowser, Ludwig, and Reznor.
$008370 1 byte Layer 3 How many scanlines the status bar and ceiling use during the battles with Morton and Roy.
$0084C8 8 bytes Subroutine (JSL) Wrapper for the stripe image uploader (pointer lies in $12). Because it upload tiles, it must run in either f- or v-blank (e.g. in NMI).
$0084D0 258 bytes Stripe Image Stripe image pointer table. Each 24-bit pointer here corresponds to a value of $12, but only multiples of 3 are used. (The first pointer is for value 00, the second is for value 03, the third for 06, etc.)
$0085FA 86 bytes Subroutine (JSR) Fills the entire layer 3 tilemap with tile 0x0FC (transparent tile) i.e. the code "empties" it. Also wipes the OAM before returning.
$008650 119 bytes Subroutine (JSR) This is the routine that polls the controller and updates $15, $16, $17, $18.
$0086A0 (x8A0) - Change to [9C A0 0D AD A0 0D A2 00] to cause both player 1 & 2 to be controlled by controller 1.
$0086DF 27 bytes Subroutine (JSL) Pointer subroutine: Jump to a 2-byte pointer, the position of the pointer used is "Position after the JSL + 1 + (A*2)". The subroutine should always be accessed by a JSL.
$0086FA 36 bytes Subroutine (JSL) Pointer subroutine: Jump to a 3-byte pointer, the position of the pointer used is "Position after the JSL + 1 + (A*3)". The subroutine should always be accessed by a JSL.
$00871E 143 bytes Stripe Image Stripe Image Uploader. Uses $00-$02 as a 24-bit pointer to tile data. See this thread how the stripe image format works. Must be run during a blank, usually NMI.

To call from a custom routine, do this:
- Store stripe image pointer (24-bit) to $00-$02
- Push 24-bit return address (bank -> mid -> lo)
- PHB : LDA #$00 : PHA : PLB
- PEA $84CD
- JSL $00871E
$0087AD 617 bytes Subroutine (JSL) This routine is the DMA routine in charge of updating layers one and two as needed. This is controlled by the addresses $1BE4 and $1CE6 when they are a non-zero value.
$008A4E 43 bytes Subroutine (JSR) Clear RAM subroutine. This is part of the reset routine.
$008A79 59 bytes ASM The routine that sets up certain VRAM-related registers in normal levels.
- $008A80: Default value for $2107 [23].
- $008A85: Default value for $2108 [33].
- $008A8A: Default value for $2109 [53].
- $008A8F: Default value for $210B [00].
- $008A94: Default value for $210C [04].
- $008AAB: Default value for $2130 [02], although it's actually stored to the mirror here (i.e. $44).
$210A is never set, since it is only ever used in Mode 0.
$008C59 40 bytes Layer 3 Tile array for numbers in bonus star counter.
$008C81 126 bytes Layer 3 Default status bar tiles. Format for each 8x8 tile:
TTTTTTTT YXPCCCTT

*$008C81-$008C88: top line of status bar (4 top tiles of the item box)
*$008C89-$008CC0: Second line of status bar
*$008CC1-$008CF6: Third line of status bar
*$008CF7-$008CFE: bottom line of status bar (4 bottom tiles of item box)
$008D8B 1 byte Timer Timer speed (USE WITH $008E2E)
$008D90 28 bytes Misc. These four tables indicate the DMA settings and the source address to use for the status bar tiles (the ones that are uploaded at the very beginning of the level). The tables get stored in the order of $43x0-$43x6.
Pages: « 1 2 3 4 5118 119 » Per Page: 25 50 75 100 150 500 All

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2019 - SMW Central
Legal Information - Privacy Policy - Link To Us


Total queries: 7

Menu

Follow Us On

  • YouTube
  • Twitch
  • Twitter

Affiliates

  • Talkhaus
  • SMBX Community
  • GTx0
  • Super Luigi Bros
  • ROMhacking.net
  • MFGG
  • Gaming Reinvented