(Link to AcmlmWiki) Offline: thank ||bass
Register | Login
Views: 13,040,846
Main | Memberlist | Active users | Calendar | Chat | Online users
Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album
05-19-24 11:38 AM
0 users currently in ROM Hacking.
Acmlm's Board - I3 Archive - ROM Hacking - SMW level memory map data
  
User name:
Password:
Reply:
 
Options: - -
Quik-Attach:
Preview for more options

Max size 1.00 MB, types: png, gif, jpg, txt, zip, rar, tar, gz, 7z, ace, mp3, ogg, mid, ips, bz2, lzh, psd

UserPost
Sukasa
Posts: 504/2068
All right. It's just level mode $00, so based on that, there shouldn't be a problem finding out the offsets.

Thanks!
HyperHacker
Posts: 507/5072
Yeah, it stays the same no matter what the level length is (length just defines how far you can scroll), but other factors such as the level type will affect it.
Sukasa
Posts: 499/2068
Yea, All I really want to know is if it changes sepending on the length of the level, i.e. is it the same in a 1-screen level as a 20-screen level (would block at x, y in one be in the RAM RAM address for both memory maps)? If I knew, then I could easily create a program that would let people find out which RAM address to change.
HyperHacker
Posts: 483/5072
At 7E8000-7EFFFF and 7F8000-7FFFFF is what's known as the Map16 data (low and high bytes respectively), which is the decoded level layout. Each entry in this array is a 16x16 tile number. This is what you need to modify if you want your changes to stick, however, nobody who's found out how to determine a block's address will tell anyone. The address can vary depending on the level style (horizontal/vertical, 1 or 2 layers, memory options, etc), so it's complicated. You might have to update VRAM as well, I've never actually done it, so I dunno.
Sukasa
Posts: 473/2068
I get the feeling I don't understand how SMW changes the Layer 1 tilemap.

I thought that it worked by DMA'ing parts of the level's tilemap into the VRAM, and worked off of that. If not, what should I change to make bother the gameplay tilemap and the VRAM tilemap work when scrolling back?
HyperHacker
Posts: 456/5072
They'll only reappear if you edit the Map16 or re-apply the VRAM changes.
Sukasa
Posts: 468/2068
But as soon as I scroll back, they would reappear, would they not?

That doesn't matter thougj, this level is only 1 screen large, so there is no scrolling, at all.
d4s
Posts: 13/98
Originally posted by Sukasa
Also, I can just DMA parts of the memory map to VRAM to make the changes appear in-game, right?


unless you dont mind that your changes will be erased once they scroll out of the screen boundary:
yes.
BMF54123
Posts: 119/876
I've wanted to do this for a long time as well. I'm probably going to dissect some routines pretty soon and try to figure it out myself...
Sukasa
Posts: 401/2068
I didn't say that . I just prefer PalASM because It works, for me
ghettoyouth
Posts: 72/332
Originally posted by Sukasa
Nah, I prefer PalASM because it works.

why should LevelASM not work?
Sukasa
Posts: 365/2068
Nah, I prefer PalASM because it works.

No, I need to get the location of a tile in the Memory Map, so that I can change the layout of the level on-the-fly.

I.E. changing the block at X: 6 Y: 8 from A to b, for example.

That sort of data is what I need, how to find out where X: xx Y: yy is.
spel werdz rite
Posts: 296/1796
Do you mean a tile in the map16?
If so, it's A0 xx A9 yy 8D 93 16
A0 loads the first two numbers (xx)
A9 loads the last two numbers (yy)
8D stores it at 7E1693 the map16 memory address (noted 93 16 is 1693 backwards and without 7E)

P.S. Try Level ASM rather than PalASM.
Sukasa
Posts: 357/2068
Does anyone know how to calculate the RAM address of a tile in SMW's memory map? I need to know how to change a specific block through PalASM, and to do that I need to know this.

Also, I can just DMA parts of the memory map to VRAM to make the changes appear in-game, right?
Acmlm's Board - I3 Archive - ROM Hacking - SMW level memory map data


ABII

Acmlmboard 1.92.999, 9/17/2006
©2000-2006 Acmlm, Emuz, Blades, Xkeeper

Page rendered in 0.003 seconds; used 352.68 kB (max 402.84 kB)