Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
1 user currently in Super Mario World hacking: labmaster | 3 guests
Acmlm's Board - I2 Archive - Super Mario World hacking - Would this be possible with ASM?
  
User name:
Password:
Reply:
 

UserPost
HyperLamer
Posts: 4249/8210
Yes, that's the biggest problem. The floor might wave up and down, but Mario wouldn't.

Also SFX would have been used for any sprite rotation, so not just boss battles. There's a few levels with rotating sprites, the pause screen, etc...
blackhole89
Posts: 665/971
The main problem about it is not the graphical effect... it's not all that hard, as d4s described... the problem are the gameplay-effective modifications that have to be done. If you remember, the dizzy effect in YI
- actually gave the ground that wavey shape, or, in other words, adapted the collision detection to what you see
- crappified the controls
- allowed some interesting effects that aren't possible in "sane mode", like doing the float jump backwards (i.e. Yoshi faces the left while floating to the right)
Neither of these could be done without very deep modifications to the SMW engine. The first one would include totally rewriting the collision detection routine.
Kyoufu Kawa
Posts: 1450/2481
Originally posted by d4s

well, even if no one makes use of the information provided, its still funny to talk about it, isnt it? ;
I think you just enjoy coredumping details like that.

Did you know that I actually take the effort to memorize it all? You never know when you'll need it.
d4s
Posts: 180/325
Originally posted by MathOnNapkins
I'd say knowingly slowing the game down to achieve an effect is just bad programming.

I love how d4s posts in these topics technical details no one is ever going to use in this forum.


well, even if no one makes use of the information provided, its still funny to talk about it, isnt it?

MathOnNapkins
Posts: 1762/2189
I'd say knowingly slowing the game down to achieve an effect is just bad programming.

I love how d4s posts in these topics technical details no one is ever going to use in this forum.
Sukasa
Posts: 451/1981
I was pretty sure the SFX chp was used rarely, and only in boss battles, but I could be wrong. The slowdown could be to an advantage, actually, because wouldn't mario be a little dizzy and isoriented, slowing things down for him and making him feel woozy? The player would then feel the same. Also, do sprites actually touch the GFX part of the level, or only the memory map? if so, scroll only the GFx and there wouldn't be any problems with sprites, right? it might look neat if you could pull it off right!
d4s
Posts: 179/325
Originally posted by ||bass
Anything is possible, but I think it would be obscenely difficult to implement. The fuzzy effect uses a SuperFX2 graphical effect. Although ZSNES seems to have no problem with the usage of SuperFX2 instructions in games not designed for it, I suspect that the graphical engine for SMW would require a signifigant rewrite in order to allow for an effect like the fuzzy effect.


wrong.
have you actually had a look at the effect?

gotta love it when people make assumptions and sell them as hard facts.
this is not against you personally, ive already seen various people do it here on he board.
its just annoying.

anyway, the fuzzy effect has ABSOLUTELY NOTHING to do with the super fx, and could be done in almost every other snes game.
what you see is a clever trick using hdma and the v-irq.
this is how it works:

1.) there are two hdma channels used that update the bg2 horizontal and bg2 vertical scroll registers on a per-scanline basis.
that means every time the snes has rendered a scanline(horizontal line, 1 pixel height), these registers are updated using precalculated tables.
this makes bg2 morph smoothly.

2.) the v-irq is set up to trigger every 8 pixels rendered (thats the fastest the snes can do).
that means every time 8 pixels on a horizontal line are rendered, the bg1 vertical scroll register is updated according to a table.
thats how the floor seems to wave up and down all the time.

although its sometimes hard to differentiate between hdma and v-irq (theres a h-irq aswell, but its only useful if you want to update more than 2 registers mid-frame, otherwise, hdma is faster) effects, you have to understand that they work totally different.
to create the aforementioned bg2 effect, you just have to set up 2 hdma channels by pointing to a data table and setting the target ppu register.
the snes will then execute the list automatically when the next frame starts.
this will result in about 224(forgot how many lines are rendered exactly) short cpu halts each frame.

the v-irq, however, will trigger each 8 pixels on every scanline, thats about 32*224 times each frame.
you have to time your v-irq very well to not exceed the available cycles.

that means that a high frequency v-irq will consume much computing power and thats one of the reasons its used rather rarely.

to answer your question:
yes, its possible to include that effect in super mario world.
although the effect itself can be a daunting task for beginners, it should drop into smw rather smoothly if you are familiar with irqs etc.
you just have to be careful because smw uses the irq to handle bg3 scrolling (bg3 water, for example), but thats it already.
be warned that this will slow the game way down, though!

fun stuff:
to see how much the game will slow down when the irq is triggered at maximum frequency, immediately return from the irq once it triggers.(for starters: change file adress 0x375(thats SNESLO $00:8375) in a rom without header from $78 to $40)
and try my fastrom patch for increased execution speed and less slowdowns!


to make a long story short:
if you can handle hdma and irq timing, im sure you will be able to make this stuff happen in smw.
whats gonna be the really hard part is the physics(making mario tumble across the screen and making sprites interact with the morphing background).


oh, and to prove that this kind of effect has nothing to do with the super fx, run the battletoads in battlemaniacs rom and pay close attention to the waving flag in the intro.
see?
thats about the same effect, just used for something different.

geez, sometimes i wish the snes had the same capabilities as similar arcadebased hardware such as xexex.
i dont know if xexexs cpu is so fast that it can change registers using a triggered v-irq every other pixel or if theres something like v-dma available to the game.
that would rock for sure!
i have to look that up in the mame source
||bass
Posts: 325/817
The exploding mushroom sprite and changing the dot colors both seem reasonable. The rest are probably asking for far too much, even for a seasoned 65816 asm programmer.
BMF98567
Posts: 791/1261
No, that wavy effect was a simple HDMA trick, done by scrolling individual scanlines left and right. I put a similar effect in Super Mario Odyssey, in the Yellow Switch Palace.
XPeter
Posts: 371/963
Wasn't a similar effect used in SMB2 right after entering a warp thingy?
DisruptiveIdiot
Posts: 73/147
Originally posted by BMF3PO
Originally posted by ||bass
I suspect that the graphical engine for SMW would require a signifigant rewrite in order to allow for an effect like the fuzzy effect.
Try "total overhaul."

Basically, if the game wasn't designed with the SuperFX in mind from the beginning, don't even bother. You'd need to learn a completely new programming language anyway, since the SuperFX is just a custom 16-bit CPU. I don't think any homebrew authors have ever attempted to use it...


Something tells me no one has lost every bit of their sanity yet, otherwise someone would've been crazy enough to attempt such a feat.
BMF98567
Posts: 790/1261
Originally posted by ||bass
I suspect that the graphical engine for SMW would require a signifigant rewrite in order to allow for an effect like the fuzzy effect.
Try "total overhaul."

Basically, if the game wasn't designed with the SuperFX in mind from the beginning, don't even bother. You'd need to learn a completely new programming language anyway, since the SuperFX is just a custom 16-bit CPU. I don't think any homebrew authors have ever attempted to use it...
Shyguy
Posts: 679/1998
ASM is hard, cow. I refuse to learn ASM because of it. If you have a full handle on ASM, you can Make SMW into anything!
cowsruleusall
Posts: 23/50
Damn. One of my two major goals in SMW hacking shot down the crapper.

Are any of the others possible without a significantly large rewrite?
||bass
Posts: 324/817
Anything is possible, but I think it would be obscenely difficult to implement. The fuzzy effect uses a SuperFX2 graphical effect. Although ZSNES seems to have no problem with the usage of SuperFX2 instructions in games not designed for it, I suspect that the graphical engine for SMW would require a signifigant rewrite in order to allow for an effect like the fuzzy effect.
cowsruleusall
Posts: 22/50
I've already decided to learn ASM over my summer break, but I just wanted to see if this would be possible. I'd like to make a hallucinogenic mushroom sprite; when you touch it, it gives you the effect from Touch Fuzzy, Get Dizzy, level 1-7 from Yoshi's Island. Is that possible?

While I'm asking, I also had a few other ideas I'd like to check:
Exploding mushroom sprite
Over 150 goals
Ordinary levels with more than 2 possible exits from that level
Changing the colour of the red/yellow dots that represent levels
Increasing the number of possible Information Boxes in one level (can I have three or more different messages in one level?)

If someone could tell me if these ideas can be made possible with ASM, I'd really appreciate it. In fact, I'd appreciate it more if someone could also tell me the degree of difficulty of making these, and if it's even possible to learn ASM over two months with no school.

Thanks very much.
Acmlm's Board - I2 Archive - Super Mario World hacking - Would this be possible with ASM?


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.004 seconds.