as long as the sprite color math hdma isnt using channel 4 or 5 then it's ok
Originally posted by Von Fahrenheit
I guess this means SMW does something to disable windows specifically.
like i said before, it writes $41-$43 to $2123-$2125 in NMI, which is what vsnes is detecting. the hdma overwrites that, though vsnes won't detect that in the info tab. since vsnes says the hdma is active, you shouldnt worry
I tried doing it with levelASM now and that doesn't work either. It just does nothing. vSNES confirmed the coordinates are right, so what in the world am I doing wrong?We’re looking for level designers to work onExtra Mario World!
Of course it's possible. The first thing you'll want to do is search the ROM map for the number of options during the 1/2 player select. Change this to 04. Next you want insert a new stripe image to use during the 1/2 player select (so it actually has 4 visible options). Insert this in freespace and repoint the 1/2 player stripe pointer to wherever you inserted your thing (you can find the table by searching for LDY $12 in all.log). Also, you probably need to draw some GFX, since SMW doesn't have a 4 character that matches the rest of the title screen menus.
SMW automatically stores whatever you selected to $0DB2, so don't worry about that. Next, you'll have to rewrite a lot of small things in the player data routines. To name a few, you will need addresses that:
-control player 3/4 coordinates on the OW.
-control player 3/4 powerups (and item boxes).
-control player 3/4 score.
-control player 3/4 Yoshis.
That's what I can think of at the top of my head. There are probably more. Yeah, you'll have to hijack the controller update routine, too. I don't know how the SNES handles joypad 3/4, so you should probably check regs.txt for this.We’re looking for level designers to work onExtra Mario World!
Now that I know what channel 7 was actually doing, I tried disabling it while my windowing HDMA is running on channel 4 and it works perfectly. You're such a big help!We’re looking for level designers to work onExtra Mario World!
Boss fights aren't levels in the way other levels are. Regular levels use mode 1, I believe, while boss fights use mode 7; this means that the data is laid out in a completely different way. If FuSoYa ever decides that editing boss battles is somehow important enough to warrant it, he might at least let you view the rooms in Lunar Magic.We’re looking for level designers to work onExtra Mario World!
Cool. Well maybe instead of blacking out the screen do like a pixelated transition similar to that when you go through a pipe.
In fact, when you go though a pipe how then are the graphics drawn on that new screen that the player sees.
When you go though a pipe it fades and do a pixel transition and then magically you see the ENTIRE screen on the new level.
So I'm sure that this is possible somehow.
If one SNES game does it, then obviously it's possible. If you're skilled enough with ASM you could probably just disable scrolling and add a loop to the level load routine, to make it load an entire screen's worth of map16 columns at once. I have no idea how hard this would be to actually do and I don't know how long it would take to load (probably not very long). Also you have to add/subtract about a block's worth of X distance to Mario when he crosses a screen (maybe).We’re looking for level designers to work onExtra Mario World!
You're using a pretty poor hijack. This is a lot better:
autoclean JML maincode
It saves you the trouble of using NOPs to fill in gaps (both of which you put in freespace, by the way). Also put the overwritten code at the start of your freespace block (so you don't lose track of A). And if you don't mind me asking, why do you even store to freeRAM? I assume you'd want to restore values to the layer 1 position mirrors, but I don't see you doing that. Maybe that's why Mario dies? Also, the RAM map says the earthquake routine changes the layer 1 image position, not the actual position (it doesn't affect interaction); I only see you updating it's actual position. It would be helpful if you were more specific about how Mario dies, too.We’re looking for level designers to work onExtra Mario World!
Ok I unders stand !free ram =0fd9
But I don't understand the two digit ones aka !wallslide =61
I guess I understanding free ram with 4 digit but not two
If you only type the last two digits (lowest byte) of an address, the SNES automatically fills it out with the direct page register. In Super Mario World, DP is set to $7E00. This means that the SNES will read $61 as $7E0061, which matches up with the RAM map, too. If you're wondering why it's free, it's simply because Nintendo's programmers never used it for anything. Yup.
Also you probably want to get in the habit of typing hex in caps. That way the A-F digits are actually the same size as the 0-9 ones and it all looks less terrible.We’re looking for level designers to work onExtra Mario World!
I've been wondering about this for a while, and recently happened to run into a related problem; how do you properly insert data (like GFX) with asar? I was under the impression that the following would work:
When I try it, however, asar gives no complaint. When I apply the patch again, it complains about freespace leaks. If I remove the incbin and apply it again, the ROM breaks (yes, it's a clean ROM).
Edit: With the ROM breaking I mean it doesn't do anything. I try running it and the screen just remains black (and plays no sound). My patch includes an NMI hijack, so I guess the prot somehow clears ALL my freespace and that causes the crash (because JML'ing to something that isn't code turns out to be a bad idea).
Edit 2: How picky are conditionals? Can you put a conditional inside of another one or will it confuse asar? Example:
TL;DR: Title and conditionals.We’re looking for level designers to work onExtra Mario World!
try a cleaner rom. chances are the previous prot failures borked stuff.
But my ROM is clean. All I did was expand it in Lunar Magic. If I apply the patch once, it works; if I apply the patch twice (which is kind of a desired feature), the game doesn't work. I have a feeling my autocleans are cleaning something they're not supposed to.We’re looking for level designers to work onExtra Mario World!
pastebin the patch? could be some small coding error or something
(i recall having issues with prot like this before; would help to see everything)
I set out to make this patch on a request; it turned out to be a really cool idea so I decided to properly release it, which is why I wanted to add a few features that might not be necessary for the requester-man. Anyway, I've inserted GFX before without problems. After messing around a bit, I'm pretty sure the GFX aren't even what's causing it. Also I'm not sure if automatically repairing stuff is actually a good idea.
Edit: Forgot to mention that sometimes when I reapply it (after messing with the conditionals for testing purposes) asar complains about "autocleaning a label at the end of a freespace block". What in the world is that supposed to mean?We’re looking for level designers to work onExtra Mario World!
Ok, thanks for the spellcheck, Alcaro.
I tried what you said and only used prot on the first label. Then I set the GFX hijacks to !False (for testing) and applied the patch. Results were pretty much expected and everything worked like it should. I then tried applying the exact same patch again and asar complained about UPDATE_JUMP, LOCK_JOYPAD and UPDATA_JUMP_Bounce aiming for "the end of a freespace block". I didn't even change anything! Shouldn't the autoclean make this not happen?We’re looking for level designers to work onExtra Mario World!
What exactly are you trying to do? I'm guessing something with a jetpack, but being a bit more specific would help. Also you should put your own explanation at the top; the original one isn't even true since you edited the sprite!
Maybe you should check the code after JSL !SprObjInteract. That might be causing it.We’re looking for level designers to work onExtra Mario World!
Ok, I'll take it you're not familiar with bitwise operations. Each bit has it's own value, and any number 0-255 (0x00-0xFF) can be expressed with eight bits (one byte). The value 0x03 means bits 0 and 1 (1+2). When you do CMP #$03, BEQ will only occur if $77 equals 0x03, which means that Mario is blocked both to the left and the right, but not anywhere else. You see how rarely this will happen? Certainly not whenever he touches a wall. What you want to use is AND. AND will only check the specified bits, so the following will clear Xspeed whenever touching a wall:
STZ $B6,x ; This is so much simpler than an essay's worth of define
Hi I would Like a tutorial on changing the player GFX/Animation/asm
Like if someone wanted to add in a classic castlevania Simon with working whip, a zelda2 Link with working sword or NES Metroid Samus with working weapon. maybe all the above in one grate tutorial
Edit: after reading up a bit more I realize how much work would go into asm'ing a different charter into the game. It would take a genus to program an accurate MegaMan, Link, Samus, Simon or anything
I don't think it's actually that hard, though it would take quite a bit of reading through all.log. You could even program a system for multiple characters that can be selected in-game! Super Mario World Crossover, anyone? Man, that sounds really cool. If no one else does, I'll get right on that after finishing my current project.We’re looking for level designers to work onExtra Mario World!
Using the pipes like that sounds really clunky, at least for whoever is playing. If you don't know much about ASM you should make a request for a patch (do we even have an ASM request thread?).We’re looking for level designers to work onExtra Mario World!
In the sprites I cannot find any regular coins, just moving and directional ones.
You'd have to make your own stationary coin sprite, but that's really easy (and a lot better than sacrificing your background). All you have to do is:
print "MAIN ",pc
JSL $01A7DC ; Check for Mario contact
STZ $14C8,x ; Erase sprite
INC $0DBF ; Increment coin counter
; JSR SPAWN_GLITTER ; I can link a routine I made for this later, if you're interested.
print "INIT ",pc
Yes, that's the entire sprite code.We’re looking for level designers to work onExtra Mario World!