This here may be a slight bit more appealing to you guys than what I showed before : Layer 1
interaction data.
I found a couple of routines in SMB2 which handle Layer 1 interaction, and how to copy a Map16 tile over an existing other tile on the screen (parallel to SMW's method: LDA #$xx : STA $9C : JSL $00BEB0).
In SMW, however, $9C has a predefined number of Map16 tiles which can be selected. Getting, for example, a lava tile to show up (004/005) is impossible with this simple method - a simple JSL won't do.
In SMB2, however, this is not the case.
What SMB2 does to clear a tile (040), is simply this:
CodeCODE_12869F: A9 40 LDA #$40 ; \ Clear tile.
CODE_1286A1: 22 F4 8B 12 JSL CODE_128BF4 ; /
You simply load the 8-bit value of the tile into the accumulator, and then you JSL to $128BF4. You also need to prepare X (probably defines the player/sprite index) and $0212 (I'm unsure about the purpose of that one, unfortunately, but it seems to relate to the tile position).
Having this said, SMB2 has a much easier way of copying any tile on page 0 to the screen, than SMW does. Each tile on page 0 can be uploaded.
Unfortunately, with this specific JSL $128BF4 and nothing but that, tiles on page 1 cannot be uploaded. I don't think there even IS such a routine, as page 1 holds 'rock platform' tiles - see page 7 of this thread, I have the image posted there -, which are never uploaded mid-level. So it wouldn't make a lot of sense to code a seperate routine for page 1 only.
As for the specific code I just posted, that one's used for the cherry tile. If it's collected, this code is being run (clearing the tile out), along with a few other things such as sound effect generation and whether to generate a starman or not. Were you to change the code from LDA #$40 to LDA #$4E (cherry tile), then the cherry would never disappear - you'd keep collecting it, resulting in an unlimited starman supply.
Yeah... that's a little chaotic, though:
Knowing that [$01] (and $00 is a mirror of that) control which Map16 tile is touched, I could search for more interaction data.
So I found the data which makes you go inside a jar, be it a warp jar (but for that tile, it first checks if you're in the potion room), or just ye' regular one.
Changing this gives some results, which makes me think of cool puzzles for secret warp levels:
Basically use a regular grassy platform for secret warps, instead of a jar. Why not? At least it makes the whole thing a lot less predictable. {B)
Either way, by this code I found out that tile $6F is a warp jar, and tile $6E a regular jar. Very strange - $6A seems to be a jar also, but it's regarded as a different kind of jar than $6E.
Whereas #$00 is stored to $04EF when you're going down a warp jar (to activate 'warp' mode), #$01 is stored to $04EF with tile $6E, and #$02 is stored to $04EF with tile $6A.
I have yet to find their actual difference. So far, I've seen that in level 1-2, tile $6A makes you warp to the 'enclosed' jar room containing a Tweeter, a couple of bombs and some other things, while tile $6E makes you warp to the 'enclosed' jar room containing a couple of Phantos and a key.
Soon, I think I'll make a revision of the Map16 pages, that time with extra information added. It would probably be worth gold to me, and maybe some of you might be interested in it.
--------> Don't follow "Find Roy's Dignity",
my hack. Because it's pretty outdated.
<--------