|
||||||
Views:
11,099,316 |
Main | FAQ | IRC chat | Memberlist | Active users | Latest posts | Stats | Ranks | Online users | Search | 12-03-24 06:14 PM |
||||
Guest: Register | Login |
0 users currently in Super Mario Bros. 3 Hacking | 1 bot |
Main - Super Mario Bros. 3 Hacking - SMB3 Data Mining and Wiki construction (START HERE FIRST!) |
KP |
| ||
Retired Staff
NES Game Aficionado Level: 73 Posts: 1338/1354 EXP: 3422776 Next: 63092 Since: 01-02-12 Last post: 2192 days Last view: 1701 days |
I've combed the general hacking forum and moved SMB3 related stuff here. What needs to happen is any SMB3 related data needs to be posted here in this thread where I (or other moderators) will update the post. As for organization, I want to have each aspect of editing SMB3 have its own page, sorted into sections.
Title Screen Credits Level Data Format and Management TSA Data Object Set Data Autoscrolling In-Game Timers Music Graphics Palettes Text Bonus Games Using SMB3 Workshop Using [insert editor name here] I think any information gathered should just be put right here in this thread. Make sure to credit who posted the information and where it came from. This is the gathering place for information right now which will eventually be put on a wiki for easy reference. A very bare SMB3 Wiki has gone live. |
KP |
| ||
Retired Staff
NES Game Aficionado Level: 73 Posts: 1342/1354 EXP: 3422776 Next: 63092 Since: 01-02-12 Last post: 2192 days Last view: 1701 days |
Here's a couple of images I made that shows how to edit the ending screens and warp zone. (Source: Quick Curly, board2)
|
KP |
| |||
Retired Staff
NES Game Aficionado Level: 73 Posts: 1344/1354 EXP: 3422776 Next: 63092 Since: 01-02-12 Last post: 2192 days Last view: 1701 days |
Super Mario Bros. 3 Hacking Notes (By DahrkDaiz)
============================ RAM MAP ============================ Terminology: $ denotes a ram address in hex, 0x denotes a ROM address in the .nes file Button Press Status Format, a 1 indicates it's pressed, 0 means it's not. 1 2 3 4 5 6 7 8 | | | | | | | | | | | | | | | - Right | | | | | | --- Left | | | | | ----- Down | | | | ------- Up | | | --------- Start | | ----------- Select | ------------- B --------------- A Sound and music explanation: 4F1 through 4F6 are bytes used to initiate sound effects. Each bite in these RAM bytes plays a different sound (except for 4F2). A byte is stored in these locations, then the game will reset them after the sound routines are initiated. So if you're ASM hacking and would like to play a new sound, do 1 store to the appropriate location and the game takes care of the rest. RAM MAP: $0E = Current level page. $14 = Setting this byte to 1 ends a level $15 = This byte is increased once every game cycle and used as a timer. $17 = Controller status for held buttons. $18 = Controller status for just pressed buttons. $5E = PPU Buffer loading offset. This will determine where to read a pointer in a table to load the PPU buffer from. $69 & $6A = PPU Buffer pointer. $75 = Vertical position on the map screen. $79 = Horizontal position on the map screen. $BD = Direction and speed of Mario. 00-7F is moving right, 80-FF (FF is slowest) is moving left. $CF = Direction and speed of Mario verticlaly. 00-7F is moving down, 80-FF (FF is slowest) is moving up. $E4 = The vertical tile offset in the current level page $E5 = Current Tile Number Mario is on. $ED = Current Power Up $160 = Debug mode enable/disable. If it's $80, then debug controls are enabled (select switches power-ups, B+select toggles Kuribo's shoe on/off, etc). $300~$350 = PPU Buffer. The buffer works as follows. $300 is the current size of the buffer. $301 and beyond is data for the PPU in the following format: AA AA SS XX XX XX 00 AA = address of PPU to write to, this is written in big endian format. SS = Size of the data to write. XX = The actual data itself 00 = End of the PPU Buffer. When writing to the buffer, always end it with 00 and update the buffer size. $3DD = This byte is the Turbo running speed. At FF, Mario can start flying. This byte is also used to draw the P-Meter. Each bit depicts the tile type. There are 8 tiles [|>|>|>|>|>|>(p)] the (p) is two tiles. Lets say $3DD were 0000 0101 then the first and 3rd arrow tiles will light up. $3EC = Coin addition byte. Any coin grabbing you do causes this to go up by 1. $462 = This byte keeps track of the current level music for when invincibility or p-switch music switches back to the level music $4F1 = Another sound play switch byte. 01 = Deep jump sound 02 = Block bounce 04 = Swim sound 08 = Shell kicked 10 = Down a pipe 20 = Fireball throwing 40 = nothing 80 = high pitched jump sound. $4F2 = This is the sound play switch byte. If it's 00, no sound effect plays, but if it's not 00, then a sound effect will play. 01 = Coin sound. 02 = Power-up coming out/vine grow 04 = longer sound of 02 08 = Boom sound (cannon fireing) 10 = 'Tick' sound 20 = Powerup! 40 = 1-up 80 = Poof sound 90 = Odd "poof" sound A0 = Lost Kuribo Shoe B0 = Tail Wag C0 = dragged out 1-up sound $4F3 = Another sound byte 01 = broken bricks 02 = fire sound 04 = Going through Brush? 08 = Woosh! Sound Airship makes when it moves on map. 10 = Hammer Bros. moving on map. 20 = no sound 40 = no sound 80 = Skidding sound. $4F4 = Fanfare music player. 01 = Death 02 = Game Over/Continue 04 = Classic Ending 08 = King Rescued 10 = Bowser Defeated 20 = Level Complete 40 = Time's running out! 80 = Play current level song. $4F5 = This is the music change switch byte. If it's 00, the music doesn't change (current music continues to play). But if it's not 00, then the music will change. 01 = World 1 Map Screen 02 = World 2 Map Screen 03 = World 3 Map Screen 04 = World 4 Map Screen 05 = World 5 Map Screen 06 = World 6 Map Screen 07 = World 7 Map Screen 08 = World 8 Map Screen 09 = World 9 Map screen/Coin heaven 0A = Star Power 0B = Warp Whistle 0C = Music Box 0D = Returning to Earth with the wand 0E = Game Theme 0F = Princess Saved 10 = Plains 20 = Underground 30 = Water 40 = Dungeon 50 = Boss Battle 60 = Doomship 70 = Hammer Bros. Stage 80 = Mushroom House 90 = Hilly Theme A0 = P-Switch B0 = Bowser Fight C0 = Glitched Boss fight D0 = Theme Song rotation (ends with music box infinite loop) E0 = Underground to Song rotation F0 = Water to Song rotation $4F6 = Another Sound byte 01 = Sound made when Mario is generated on the start tile of a world map. 02 = Moved on the map 04 = Enter a level 08 = Status bar flip 10 = Secret revealed on the map 20 = nothing 40 = nothing 80 = Error sound $4F7 = Another sound byte 01 = Pause (stops music) 02 = Resume music All other values = pause. $516 = This is the timer for multi-coin blocks. If $581 reaches 0 first, getting more coins stops. $552 = Invisibility timer for after you get hit. $553 = Invincibility Timer $566 = Enemy generator byte. This will generator a pre-set enemy based on the value. $567 = P-switch effect timer $56E = Flight timer for Racoon/Tanooki Mario $56F = Pressing down indicator $570 = Timer when holding down on a magical white block to let you go behind the bg. $575 = Indicates you're in water and what you're doing in water (coming out of, going into, swimming, just walking, etc). Not sure what values tell what though. $577 = Kuribo Shoe indicator (0 = no shoe, 1 = shoe) $578 = This is the transformation byte. When Mario gets a power-up or is injured, this byte contains the power-up he will go to + 1. Thus, if he's going to be small, this byte is 0x01. A value of 00 means there's no change. A value of 0x80 will give you the shoe.\ $57A = Tanooki's Statue Timer. $581 = This is the max number of coins you can get in a multi-coin blocks. If $516 reaches 0 first, getting more coins stops. $588 = Behind the background timer $589 = Traction byte: 0 = no slip, 1 = slip, 2 = extra slip $5EE = Hundreds place of timer $5EF = Tens place of timer $5F0 = Ones place of timer $602 = Current tile to the left and above Mario $603 = Current tile to the left and under Mario $604 = Current tile to the right and under Mario $605 = Current somewhere under Mario $606 = Current tile to the right and above Mario $676 = Power up sprite number. This byte is seperate from the other sprite buffer. When another power-up appears, this byte is over written, thus the first power up disappears. $69C & $69D = Score addition bytes. When these bytes are set, then that amount of the score will be added to your main score. $69C = high byte, $69D = low byte $70A = Current Object Set/Level Type $711 = Timer used during World/Lives status screen before Mario generates onto the map. $713 = This is level beaten byte. 1 means that the level is being beaten. It's changed to 0 when you die, so when you return to the map screen, the level you were on doesn't flip over. $715-$717 = Score (24-bit value) $719 = First 2K Bank of GFX (upper left of pattern table, $0000-$07FF) $71A = Second 2K Bank of GFX (lower left of pattern table, $0800-$0FFF) $71B = First 1K bank of GFX (upper right of pattern table, $1000-$13FF) $71C = Second 1K bank of GFX (second from upper right of pattern table, $1400-$17FF) $71D = Third 1K bank of GFX (second from lower right of pattern table, $1800-$1BFF) $71E = Fourth 1K bank of GFX (lower right of pattern table, $1C00-$1FFF) $71F = Current bank @ 0xA000 $720 = Current bank @ 0xC000 $726 = Current player (0 = player 1, 1 = player 2) $727 = Current World $736 = Player 1's Lives Counter $737 = Player 2's Lives Counter $73A = This is where the palette for the current level is stored. The palette is loaded before the level is drawn, so changing this byte doesn't have any effect after the level loads. $7C1-$7E0 = This is where the palette current stored. Changing this won't have much effect on the palette. To force a change, set $5E to 0x06 $6000-$794f = This is where the 16x16 block numbers are kept that corresponds directly to the level. An example is that 0x40 is the value for a coin. This also applies to the map screen. $7965 = White Mushroom House indicator, if it's 1, your coins are checked to see if they meet the requirements $7966 = Number of coins needed to make a white mushroom house appear $7967 = Number of coins obtained in the current level $7A0A and $7A0C = used in combination to determine the current scrolling point in an autoscroll level. $7CF4 = Frozen Mario byte. 01 = Mario can't move. 00 = Mario can move. $7CFB = Flash timer, this will make the bg flash through rainbow colors. If it's above 80, then the 9th palette instead. $7B41 - $7C40 (?) = Sprite data buffer. All sprites found in a level are stored here for easy reference. $7D80-$7D9B = Player 1's item inventory $7D9C-$7D9E = Goal cards for player 1. 00 = no card, 01 = mushroom, 02 = flower, 03 = star $7DA2 = Player 1's Coin counter $7DA3-7DBE = 2nd Player's Inventory box $7DBF-$7DC1 = Goal cards for player 2. 00 = no card, 01 = mushroom, 02 = flower, 03 = star $7DE0 - $7DFF = Current Palette. $7EB6 = Stop scrolling byte (stops scrolling altogether). $7F3E-$7F43 = Arrow tile numbers. $7F44 and $7F45 = ( P ) Bar tile numbers. $7F46 and $7F47 = Coin tiles (not the coins counter, but the tiles used to display it) $7F48 and $7F49 = Lives counter tiles (not the lives counter, but the tiles used to display it) $7F4A-$7F4F = Score tiles (note, not the score itself, just the tiles displayed for it) $7F50-$F52 = Timer tiles (same for score tiles) $7F9A = Seems to be the start of some buffer. Setting this to anything but 2 will prevent bricks from animating when broken. Lock Data: I kept this seperate since everyone is so eager to get their hands on the data, thus I kept this a seperate section for quicker reference. 0x14877 = Start of a table of tiles used to replace lock blocks. 0x1498E = Start of a table of locations used to determine where the lock block will be (or any tile to replace). Format: XXXX SSSS X = X co-ordinate of the tile (relative to the current screen) S = Screen to change it on. 0x14955 = Start of table of locations used to determine where the lock block will be (or any tile to replace). Format: YYYY 0000 Y = Y co-ordinate 0 = Nothing. ============== ROM MAP ============== Some routines/data tables used the global item table, which is a table that indicates an item number directly into your inventory. 00 = Nothing 01 = Mushroom 02 = Fire Flower 03 = Leaf 04 = Frog Suit 05 = Tanooki Suit 06 = Hammer Bros. Suit 07 = Jugem's Cloud 08 = P-Wing 09 = Starman 0A = Anchor 0B = Hammer 0C = Whistle 0D = Music Box This is used for things like Mushroom House item values or Princess gift item values. 0x3F0-0x3F6 = This is a properties table for power-ups. The bits do the following: xxxx xxSF S = Sliding disabled. If this is 1, you can't slide on hills. F = Flying ability. If this is 1, you can fly. Each index into the table corresponds to a power-up status. Thus, if you change 0x3F2 to 03 (0000 0011), then Fire Mario (index here is 2, 2 is fire power) will be able to fly and not be able to slide on hills. The x's have no effect. 0x133C = Amount of stay-in-shell time for most enemies who have shells. 0x1A3E = What Mario turns into after getting hit while having a power above Super Mario. 0x24EE = Table of sprites to output from certain ? blocks. 0x24EF = Sprite to put out of blocks that normally output a Flower 0x24F0 = Sprite to put out of blocks that normally output a Leaf 0x24F1 = Sprite to put out of blocks that normally output a Star 0x24F2 = Sprite to put out of blocks that normally output a Mushroom 0x24F3 = Sprite to put out of blocks that normally output a Vine 0x24F4 = Sprite to put out of blocks that normally output a 1-Up 0x2A56 = The bounce force to the right when hitting a 4 way bouncing note block from the left. 0x2A50 = The bounce force to the left when hitting a 4 way bouncing noteblock from the right. 0x6EA9 = Sprite that Boom-boom will leave behind when he explodes. 0x80A4 = This is the sprite that a Green Koopa Para-Troopa will turn into when they lose their wings. 0x80AE = This is the sprite that a Para-Goomba will turn into when it's wings are destroyed. 0x9368 = Left speed of many enemies 0x9369 = Right speed of many enemies 0xA837 = Amount of time a Venus Fire Trap will take from going into a pipe and going back into it divided by 2. (default is 30, but it's multiplied by 2 for a total time of 60). 0xBDC3 = ParaBeetle right flying speed (x2 for "fast" beetles) 0xBDCD = ParaBeetle left flying speed (x2 for "fast" beetles) 0xFD75 = Sprite number that's generated from a Goomba generator. 0x103F1 = Amount of time Tanooki Mario can be a statue. 0x104F8 = Maximum running speed (must be atleast 7F to be able to fly). 0x10CAA = Amount of time Raccoon/Tannoki Mario can fly 0x11618 = Which tile acts like a coin. 0x11634 = Which tile acts like a P-switch. 0x11653 = Amount of time the P-switch will last. (default: 0x80) 0x11657 = The song value to be played during the P-Switch effect. (default: 0xA0) 0x1167E = Amount of time needed for an ice block to melt. 0x118A5 = Max number of coins you can get from the multi block coin. 0x118BA = Amount of time you have to get coins from a multi block coin. 0x11E6A = Amount of time required to hold down on magic white blocks to take effect. 0x11E6F = Amount of time the Magic white blocks take effect for. 0x1451F = Amount of time delay between the start of a world and when Mario generates onto the screen. 0x14DF8 = Sound used when Mario moves over the map screen. (4F1 sound byte useD) 0x14DFA = Sound byte used when Mario goes over a map screen. 0x16190 = Hammer Bros. Item table. Here there is a big chunk of 00s and a few bytes that are not 00. The groups of bytes that are _not_ 00 represent the items you receive from a Hammer Bros. Examples are the first byte, 09, is world 1's Hammer Bros. item (a star). Next is 0D0B0C which is world 2's (music box, hammer, whistle) and so on. The item values are the exact same for the item values listed above. Note, world 8 has NO Hammer Bros. item groups. Instead, the items in the treasure chests found there are defined by enemy level data. When using the Help Sprite as a Hammer Bros. the item control is 2 bytes before the normal Hammer Bros. group for that world. The Airship sprite uses the one after that 0x1625B = Horizontal starting position on every map screen (applies to all maps). 0x17C35 = Table of graphics banks used to animate map screen tiles. 0x1D233-0x1D235 = 16x16 tile id's that are used to draw the mushroom, star and flower background in some plains levels. 0x2D1AD-0x2D1b0 = Number of 1-Ups you will receive from the roulette game. There are two bytes that are 02, this is because there are two mushroom pictures in the roulette you can match up. 0x2D721-0x2D732 = N-Spade card matching game initial deck. The deck is always shuffled from code, so there's only 1 deck you can modify without ASM hacking. The values for each card is as follows: 00 = Mushroom 01 = Flower 02 = Star 03 = 1-Up 04 = 10 Coins 05 = 20 Coins 0x309B0 = This is the left side of the curtains tile. This must be an even number, then the tile to the right of this one will be the right side of the curtain. You cannot change the number of tiles used to draw the curtains without ASM hacking. 0x309D5 = Debug mode activation/deactivation Activated = 0xCC Deactivated = 0x35 0x30C68 = Button to press to change game type. 0x30C6C = Sound to play when you press select at title screen. (4F6 sound byte) 0x30C6E = Sound byte to write to when you press select. 0x30C99 = Button to Press to start the game. 0x30C9D = The Sound to play when you start the game. (4F2 Sound byte) 0x30C9F = The sound byte to write to when you start the game (can change to music bytes too). 0x34123 = Status Bar's palette on the map screen after returning from the inventory box. 0x3509B = Number of coins needed for a 1-Up. 0x350AB = Sound played when you receive 100 coins (1up sound) (4F2 sound byte used) 0x350AD = Sound byte used when 100 coins are obtained. 0x360DE = Table of items the Princess will give you after completing a world. There are 7 bytes in all, but the 7th byte is 00, you can change this so that you gain an item for beating world 7. For values, see Global item table. 0x3B14B = Table of items used to create Mushroom House treasure chests. Some bytes affect the "all same items" mushroom houses. Meaning, if all the chest have the same items, then only 1 byte is needed to define the chests, rather than 3. The first 5 bytes affect these type of mushroom houses. The 3rd is for all Frogs, 4th is all Tanooki, 5th is all Hammer. 1st is All Whistles (never seen in the game), 2nd is all P-Wings (also never seen in the game).I believe these two are used for White Mushroom houses. The rest are 3 item houses. One type is 0A 0A 0A, all three anchors. This is the ONLY exception to the same-type house rule. And remember, the definitions come in groups of three. Example: The second set (bytes 9, 10, and 11) is 01, 02, 03, a set of three defining the Mushroom, Flower, and Leaf type houses. For item values, see global item table. 0x3C474 = Graphics bank used for the title screen (upper half, bg side) 0x3C479 = Graphics bank used for the title screen (lower half, bg side) 0x3C47E = Graphics bank used for the title screen (first 1/4th, sprite side) 0x3C483 = Graphics bank used for the title screen (second 1/4th, sprite side) 0x3C488 = Graphics bank used for the title screen (third 1/4th, sprite side) 0x3C47D = Graphics bank used for the title screen (fourthg 1/4th, sprite side) Routine Explanations: BG tile animation routine: Used for action stages (not maps) for animating common objects, such as bricks, coins, munchers, water, lava, etc. $8E35 (0x3C345)
Bank swapping routine
Curtain drawing routine:
|
KP |
| ||
Retired Staff
NES Game Aficionado Level: 73 Posts: 1345/1354 EXP: 3422776 Next: 63092 Since: 01-02-12 Last post: 2192 days Last view: 1701 days |
NES Super Mario Bros. 3 Level format (by DahrkDaiz)
------------------------------------ CORRECTNESS NOT GUARANTEED. Header (9 bytes): 11 22 33 44 55 66 77 88 99 AB AB AB AB AB AB AB AB AB 1x = level pointer 2x = level pointer 3x = enemy pointer 4x = enemy pointer 5A = level start Y (first 3 bits) 5B = level length 6A = level start X (first 3 bits) 6x = enemy color palette # (bits 4, 5) 6B = level color palette # 7A = level scrolling type 7B = level object set 8A = level start action (first 3 bits) 8x = level graphic set (last 5 bits) 9A = time (first 2 bits) 9B = music Level objects (3/4 bytes each): Y position (3 leftmost bits = object bank ["domain"]) X position Type Length (only if 4 byte object) Enemy objects (3 bytes each): Type X Y Level data: Header followed by all level objects followed by byte $FF Enemy objects (NOT after level objects) followed by byte $FF Objects rendered in the order they appear in the level data. Palettes (size for one obj.set = $C0): Object set 1 at $36CA2, Object set 2 at $36D62 ... |
KP |
| ||
Retired Staff
NES Game Aficionado Level: 73 Posts: 1346/1354 EXP: 3422776 Next: 63092 Since: 01-02-12 Last post: 2192 days Last view: 1701 days |
Below are IDs of items you can receive from treasure
chests and Princess Peach upon completing a level. Table of items Princess Peach gives starts at ROM location $360DE, and there is no entry for level 8. The vertical location of sprite 214 ("Puts item in treasure chest") in the editor determines which item to put in the treasure chest, corresponding to the values below. 0 = Nothing 1 = Mushroom 2 = Fire Flower 3 = Leaf 4 = Frog Suit 5 = Tanuki Suit 6 = Hammer Bros. Suit 7 = Jugem's Cloud 8 = P-Wing 9 = Starman 10 ($A) = Anchor 11 ($B) = Hammer 12 ($C) = Whistle 13 ($D) = Music Box |
KP |
| ||
Retired Staff
NES Game Aficionado Level: 73 Posts: 1347/1354 EXP: 3422776 Next: 63092 Since: 01-02-12 Last post: 2192 days Last view: 1701 days |
Special notes on SMB3 object drawing routines
--------------------------------------------- Data collected by DahrkDaiz, some additional notes by hukka Block platforms that extend to ground: The code looks for the two tile id's defined at $1D0D7 and $1D0DB. The drawing stops upon encountering either of these tiles below the block platform. If neither of these tiles is encountered, the game will crash(?). Green platforms: This object looks for any tile id that differs from the value defined at offset $22638 and stops drawing. If the drawing routine reaches the bottom, it overlaps to the next page at the top row. At least on Sky type levels, this will effectively stop the drawing because the top row on these levels is filled with tile id $86. Wooden poles: These work like the Green platforms explained above, but the tile id is defined at offset $22789. Block platform shadows ---------------------- Shadow tiles cannot be forced by level data; the game will dynamically draw shadows on certain objects, depending on the tile being drawn over, but the data can still be edited. There are 2 tables, one at $1D06B and the other at $1D084. The game will start at the first table, and take the current tile it's about to overwrite and match it to a value in the table. Then it will take the position it found the matching tile in table #1 and overwrite the tile with the value using the position of table #1 in table #2. Example below: $1D06B: Table #1 07 09 0A 0D 47 49 4A 4D 87 89 8A 8D C7 C9 CA CD 90 94 91 95 92 96 93 97 98 ** $1D074: Table #2 0C 0C 0F 0F 4C 4C 4F 4F 8C 8C 8F 8F CC CC CF CF 99 9E 9A 9F 9B 9E 9C 9E 9E ** ------------------------- 80 80 80 80 80 01 80 80 ------------------------- 80 80 4F 80 80 80 80 91 <- Lets say the game is about to overwrite this tile. ------------------------- It loads the value 91 and matches it in table #1. 80 80 80 9B 80 80 80 80 You can see that in table #2, below #1, is 9A, thus ------------------------- the game will overwrite this value with 9A. 80 80 80 80 80 80 80 80 ------------------------- The only objects that will force shadow tiles are the white, orange, green and blue block platforms. Shadows against the sky do have data that can be edited normally, listed below. $1D17C = Right side shadow against sky Corner shadows against other objects has an odd "table", but the data isn't consecutively lined up. Overwrite tile Replace tile --------------------------------------------- $1D146 $1D13A * Range: $1D14F to $1D153 $1D157 * The two values at $1D14F and $1D153 denote a range of tiles to look for. The value at $1D14F is $90 and the value at $1D153 is $9F, thus if the tile you're overwriting is between $90 and $9F, it will be replaced. So effectively, $1D153 should be greater than $1D14F. Shadows over platform blocks are sort of "hard coded" and cannot be edited without using assembly hacking. Read DD's Object_Def.txt for more info. |
KP |
| ||
Retired Staff
NES Game Aficionado Level: 73 Posts: 1348/1354 EXP: 3422776 Next: 63092 Since: 01-02-12 Last post: 2192 days Last view: 1701 days |
Data collected by DahrkDaiz
0x1E41B = Tile used to clear Plains type levels. 0x2041B = Tile used to clear out the very top row of tiles on Hilly type levels. 0x20427 = Tile used to clear out Hilly type levels. 0x22420 = Tile used to clear out the very top row of tiles of Sky/Ice type levels. 0x22429 = Tile used to clear the rest of the level of a Sky/Ice type level. 0x1A41B = Tile used to clear out the very top row of tiles on Underground type levels. 0x1A427 = tile used to clear out the rest of the level of Underground type levels. 0x2642C = Tile used to clear Cloudy type levels. 0x2A420 = Tile used to clear out the top row of tiles in Dungeon type levels. 0x2A429 = Tile used to clear out the mid-way row (vertically) of tiles in Dungeon type levels. 0x2A42E = Tile used to clear out the 2nd row of tiles in Dungeon type levels. 0x2A437 = Tile used to clear out the rest of the tiles except for the bottom 2 rows in Dungeon type levels. 0x2A443 = Tile used to clear out the next to last row of tiles in Dungeon type levels, except these tiles alternate, starting with the 1st tile. 0x2A449 = Tile used to clear out the next to last row of tiles in Dungone type levels, except these tiles alternate, starting with the 2nd tile. 0x2A453 = Tiles used to clear out the very bottom row of tiles in Dungeon type levels, except these tiles alternate, starting with the 1st tile. 0x2A459 = Tiles used to clear out the very bottom row of tiles in Dungeon type levels, except these tiles alternate, starting with the 2nd tile. 0x2841B = Tile used to clear out the level of Desert type levels. 0x28427 = Tile used to clear out the very bottom row of tiles in Desert type levels. 0x2E41B = Tile used to clear out Ship/Airship level types. 0x2441B = Tile used to clear out Water type levels. 0x2641B = Tile used to clear out Giant type levels. |
KP |
| ||
Retired Staff
NES Game Aficionado Level: 73 Posts: 1349/1354 EXP: 3422776 Next: 63092 Since: 01-02-12 Last post: 2192 days Last view: 1701 days |
TSA Locations (DahrkDaiz)
Map Screen $18010 - $1840F Underground $1A010 - $1A40F Plains $1E010 - $1E40F Hilly $20010 - $2040F Sky/Ice $22010 - $2240F Water/Pipe $24010 - $2440F Giant/Cloudy $26010 - $2640F Desert $28010 - $2840F Dungeon $2A010 - $2A40F Ship $2E010 - $2E40F |
Mari42 |
| ||||||||
Normal User
Flurry Level: 34 Posts: 260/265 EXP: 241069 Next: 12582 Since: 05-16-16 From: None of your business ;D Last post: 2058 days Last view: 1850 days |
Misc:
New info for World 5 map function x144E0 World 5 cloud decoration for sprites. (Use 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 to erase the cloud in the OW) Autoscroll Autoscroll Move End Loop Select x13944 - World 3-6 / 1-4 (00) x13945 - World 3 Airship (04) x13946 - World 6-2 (00) x13947 - World 5 Airship (04) x13948 - World 2 Airship (04) x13949 - world 4 Airship (04) x1394A - World 6 Airship (04) x1394B - World 5-6 (00) x1394C - Unknown??? (00) x1394D - Unknown??? (00) x1394E - World 6-7 (00) x1394F - World 1 Airship (04) x13950 - World 7 Airship (04) x13951 - World 8 Airship (Crappy ship) (04) x13952 - World 8 Battelship (03) x13953 - World 7-4 (00) x13954 - World 1 Clouds (Bonus from 1-3) (00) x13955 - World Coin ship (04) x13956 - Unknown??? (00) x13957 - World 8 Tank 1 (00) x13958 - World 8 Tank 2 (00) Autoscroll Movement
Autoscroll Repeat Movements
An "Autoscroll movement" is what it moves the screen to scroll within different paths, and "Autoscroll Repeat Movement" means thats it contains coding for you set the the timer and speed for the movements of the scroll. Note: This maybe confusing! As you know, I have a bit of experience of how it works when the scroll is functionally possible as much as the game reads the execution of the binary format depending of how its accumulated the action of scroll to change. You might need a notepad in order to follow where you want the scroll to go, but ALWAYS increase you level length before you add any enemies. Otherwise if you have the autoscroll goes further the screen and the enemies are not in the current screen in any position as you added further to any screen, then it is ABSOULTE REASON WHY YOU NEED TO INCREASE YOUR LEVEL LENGTH! As I meant to say its "confusing" as is depending what movements you want to change is what you will see that the numbers were the opposites! On the Autoscroll Repeat Movement part, you could see that: Biggest number is on the left, and lowest numbers on the right meaning:
If the lowest numbers on the left, and the biggest number on the right then it means that:
Autoscroll Repeatable movement is known as the autoscroll timer! Tips: Always make sure you know what you're doing when you going to make a new scroll in terms of what you know how to make it work as you're reading this tutorial. Example: So, lets say you want to edit the autoscroll from lost level 9 to use for world 1 airship (unknown):
I've edited the autoscroll myself to make it more consumable:
You can try this code to test this out, but also do your levels before doing so! The autoscroll loop means that once the autoscroll stops at the end, then it loops the movement as it count of the scroll as ENDING scroll! For instance "00" disables the autoscroll loop. "03", or "04" goes up and down as it goes on within ending movements. Example: x13945 - World 3 Airship (04) World 3 Airship was defaulted for an autoscroll to loop at the end. So, if I edited this by putting "00" in HxD then that means the autoscroll won't loop as the game functions its coding. Thats all I can give you for now! |
Jamie |
| ||
Banned
Excessive drama. Level: 74 Posts: 1332/1480 EXP: 3526392 Next: 127152 Since: 06-03-14 Last post: 2070 days Last view: 753 days |
>using Wikia
Sorry, but I hate Wikia... why not use the server and get wiki.kafuka.org for a ROM hacking wiki? ^^ Maybe kafuka.org could serve the purpose of a homepage. I could easily get some sort of draft to what it could look like. ____________________ Good riddance! |
KP |
| ||
Retired Staff
NES Game Aficionado Level: 73 Posts: 1350/1354 EXP: 3422776 Next: 63092 Since: 01-02-12 Last post: 2192 days Last view: 1701 days |
What don't you like about it? I'm not partial to any wiki service. If there are better alternatives, I'll definitely hear them out. |
Jamie |
| ||
Banned
Excessive drama. Level: 74 Posts: 1343/1480 EXP: 3526392 Next: 127152 Since: 06-03-14 Last post: 2070 days Last view: 753 days |
The fact that most (if not all) Wikia sites I visit tend to have a ton of ads. Maybe ask Emuz to set up a MediaWiki instance on the domain, that'd be pretty awesome ____________________ Good riddance! |
KP |
| ||
Retired Staff
NES Game Aficionado Level: 73 Posts: 1352/1354 EXP: 3422776 Next: 63092 Since: 01-02-12 Last post: 2192 days Last view: 1701 days |
We are talking about it as staff. Thanks for the input! |
Jamie |
| ||
Banned
Excessive drama. Level: 74 Posts: 1346/1480 EXP: 3526392 Next: 127152 Since: 06-03-14 Last post: 2070 days Last view: 753 days |
Nice
StapleButter, I'm pretty sure, has an old Acmlm-Inspired wiki system as a matter of fact that was never released, which could be cleaned up and worked on again for this site. IDK if they still have the source, however. ____________________ Good riddance! |
Main - Super Mario Bros. 3 Hacking - SMB3 Data Mining and Wiki construction (START HERE FIRST!) |
Acmlmboard v2.5.6 (06/11/2024) © 2005-2024 Acmlm, Emuz, et al. |
MySQL - queries: 159, rows: 649/682, time: 0.065 seconds. |