Banner
Views: 778,987,267
Time:
19 users online: 0Zerp, autisticsceptile1993, Bensalot, Brutapode89, chickaDEE Magazine, Christian07, dfade, DPBOX, Gamer Appledash, Green Jerry, MarkVD100,  Meirdent,  musicalman,  Ninja Boy, SiameseTwins,  Tahixham, TheMorganah, TomCube, Zandro - Guests: 54 - Bots: 205 Users: 40,840 (1,676 active)
Latest: GoldenWarrior
Tip: Test your levels as all forms of Mario (small, super, fire, cape). If it's possible to enter a level with Yoshi, make sure to test that as well.Not logged in.
Posts by Von Fahrenheit
Von Fahrenheit's Profile - Posts by Von Fahrenheit
Pages: « 1 2 3 4 5 639 40 »
Originally posted by Ladida
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 on Extra Mario World!
I put the savestate on my files. It's the only .zst file so it should be easy to find. Thanks a lot for your help so far, Ladida!

We’re looking for level designers to work on Extra 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 on Extra 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 on Extra Mario World!
Further explanation:

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 on Extra Mario World!
Originally posted by Final Theory
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 on Extra Mario World!
You're using a pretty poor hijack. This is a lot better:

Code
	org $00A2D1

		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 on Extra Mario World!
Originally posted by zacmario
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 on Extra 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:

Code
freedata : prot GFX_Source

GFX_Source:
incbin "GFX.bin"



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:

Code
if !ThisDefine
else

	if !ThatDefine

	org !SomeAddress
	LDA #!SomeValue
	STA !SomeRAM

	endif

endif




TL;DR: Title and conditionals.

We’re looking for level designers to work on Extra Mario World!
Originally posted by Ladida
you're supposed to prot from an autocleaned freespace area. example:

Code
org $address
autoclean JSL something

freecode
prot GFX_Source
something:
LDA GFX_Source
RTL

freedata
GFX_Source:
incbin GFX.bin



yes you can nest conditionals



I tried putting the port command right after freecode (and putting the data in free data) and reapplying the patch still breaks the ROM.

We’re looking for level designers to work on Extra Mario World!
Originally posted by Ladida
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 on Extra Mario World!
Originally posted by Ladida
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.

Patch: http://bin.smwcentral.net/u/23783/AcornPatch1.3Beta.asm

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 on Extra 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 on Extra 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 on Extra 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:

Code
		LDA $77
		AND #$03
		BEQ +
		STZ $B6,x				; This is so much simpler than an essay's worth of define
		+


We’re looking for level designers to work on Extra Mario World!
No problem. And if you want to do things like this in the future, reading up on how bitwise operations work ought to be quite helpful.

We’re looking for level designers to work on Extra Mario World!
Originally posted by ChrisP
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 on Extra 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 on Extra Mario World!
Originally posted by Final Theory
could someone please tell me what uberasm is.

how is it different from regular asm.


UberASM is a patch. It inserts a bunch of hijacks for you to run code at different places. It's not different from regular ASM.

We’re looking for level designers to work on Extra Mario World!
Originally posted by B1T_G0D
Thanks for the feedback, it's really appreciated.

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:

Code
print "MAIN ",pc
SPRITECODE:
	JSL $01A7DC		; Check for Mario contact
	BCC .Return
	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
.Return		RTL



Yes, that's the entire sprite code.

We’re looking for level designers to work on Extra Mario World!
Pages: « 1 2 3 4 5 639 40 »
Von Fahrenheit's Profile - Posts by Von Fahrenheit

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