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 - Release: HDMA package 1
  
User name:
Password:
Reply:
 

UserPost
d4s
Posts: 281/325
Originally posted by Sukasa
I keep forgetting your code doesn't have the limitations I'm used to. with BMF's, only 2 channels are safely usable, so it's prefereable to keep the channel number low.

If I could make a suggestion, perhaps your code could also be released, sicne it is apparently much mroe powerful and flexible.


yeah, i think im gonna do that.
even someone who doesnt know jackshit about hdma could still use the installed preset effects and assign them to the levels.
AsukaFan2K6
Posts: 69/183
Excellent job putting ripple effects in the water, d4s!

Can you make an animated GIF version?
Sukasa
Posts: 1725/1981
I keep forgetting your code doesn't have the limitations I'm used to. with BMF's, only 2 channels are safely usable, so it's prefereable to keep the channel number low.

If I could make a suggestion, perhaps your code could also be released, sicne it is apparently much mroe powerful and flexible.
d4s
Posts: 280/325
Originally posted by Sukasa
Very impressive. I just use hdmamainv2.bin and hdmasubv2.bin since they do the job for me. I figure though that you may be able to reduce that to 2 channels, by using write mode... I can't remember the number, but it was 2-reg write twice. For me default is one reg write twice. I use hdmamain and palasm since beyond the initial setup, I only have to link the ASM I put in, and can therefore concentrate on the ASM I'm adding.


whats the point in using only 2 channels?
there are 8 channels, reserve one for regular dma transfers and youre still left with a whopping 7 channels.
besides, i dont statically assign hdma channels.
my code dynamically checks wich channels are free each frame and picks one for each transfer, thats why i dont have to worry which are used by smw.
i honestly dont think palasm or the other readily available solutions have the features nor the speed and efficiency to meet my demands.

you are right, theres a transfer mode that can do 4 regs write once, but
thatd mean that youd always have to maintain 4 complete lists for each bg 1 and 2 scroll register, because 4 channels write once mode can only write to registers in sequential order.
thatd be stupid.

the real problem here is that you dont have unlimited processing power because the 65816 is slow and smw uses up most of the available cycles per frame.
my first setup looked like this:
2 tables(bg1 and 2) with 224 entries each, updated every frame using tight loops in fastrom mode.
it made the game run in slowmotion, maybe 1/3 of the usual speed.
now, each table has 112 entries and is updated every second frame.
Sukasa
Posts: 1716/1981
Very impressive. I just use hdmamainv2.bin and hdmasubv2.bin since they do the job for me. I figure though that you may be able to reduce that to 2 channels, by using write mode... I can't remember the number, but it was 2-reg write twice. For me default is one reg write twice. I use hdmamain and palasm since beyond the initial setup, I only have to link the ASM I put in, and can therefore concentrate on the ASM I'm adding.
d4s
Posts: 279/325
Originally posted by Sukasa
impressive... How many HDMA channels did you use? 3, or did you use a different write mode than the default one?


thanks. =)

this mode uses 3 channels and writes to the following regs:
bg1 h-scroll
bg2 h-scroll
cgadsub + coldata

depends on what you call default, but the bgs ones use 1 reg write twice mode and the cgadsub one uses 2 regs write once.


Originally posted by Sukasa
I could see that being done with only two channels... Does it crash much? the yoshi coin animation likes to interfere with HDMA palette stuff, last I heard.


does it crash much, what kind of question is that?
of course it doesnt crash.
no problems with animations or palette stuff.
i think the problems you are referring to might be caused by the hdma implementation you are using (you are using a patch by bmf to do your hdma stuff, right?).

i've written everything from scratch, 714 lines of pure assembler code.

im not using any readily-available code snippets like blocktool or palasm or anything like that.

im using an attribute table containing enable flags for bg1 scroll, bg2 scroll, cgadsub and individually selectable hdma tables for each of these and for every level.
custom main and subscreen designation is included with the cgadsub tables.
pretty flexible and easy to maintain.



Sukasa
Posts: 1710/1981
impressive... How many HDMA channels did you use? 3, or did you use a different write mode than the default one? I could see that being done with only two channels... Does it crash much? the yoshi coin animation likes to interfere with HDMA palette stuff, last I heard.
HyperLamer
Posts: 6503/8210
Heh, that looks like a lake above a nuclear plant or something. If you can get it working relatively simple, at least to the point where people who do know how HDMA works can use it, it'd be nice to see a release.
d4s
Posts: 278/325
Originally posted by smwedit
could you please release that, I have a perfect use for that one in my hack


this stuff will be featured in an upcoming hack.
its an add-on that can be used to assign various
hdma effects to each level without having to program anything at all.
there are lots of possibilities apart from moving water.
you have to know something about hdma to put it to good use, though.

i might release it, but its most likely too complicated for the casual smw hacker.

maybe it will be limited to the above-mentioned hack to set it apart from all the other ones.




ExKeeper
Posts: 463/512
could you please release that, I have a perfect use for that one in my hack
d4s
Posts: 277/325
Originally posted by Sukasa
looks good, except for the two scanlines at the top, they're skewed.


zsnes always fucks up some of the upper lines on screenshots for me.

heres another shot using snes9x.
and i added a nice cgadsub gradient option, too:

Sukasa
Posts: 1707/1981
looks good, except for the two scanlines at the top, they're skewed.
d4s
Posts: 276/325
Originally posted by smwedit
I would also like to see a wavy FG like in coral capers


like this, by any chance?



fyi:
this is no mockup.

Sukasa
Posts: 1702/1981
well, then if it hasn't been done yet, I'll explain the stack. I got to know it well with that code.
Glyph Phoenix
Posts: 469/745
Ugh. The thread doesn't even cover things like the stack (yet). It doesn't cover scan lines. You can't toss something like HDMA in there.
Bio
Posts: 135/458
thank, I think they should add a section for that in the learning ASM thread Because Its the first time I hear about HDMA
blackhole89
Posts: 839/971
http://www.geocities.com/Qwertie256/attic/snesemu/qsnesdoc.html ... that's what I learned to use it from, at least.
Bio
Posts: 133/458
Are there any HDMA tutorial?
BMF98567
Posts: 1081/1261
smwedit: You already posted that. Don't spam.

peter_ac: Not an "ASM technique," a special feature of the SNES (though, yes, you generally use ASM in order to control it). Its function is to change PPU registers mid-frame in order to produce special effects, like waving, split screens, and color gradients. With older consoles, you usually had to time your code just right or use special cartridge hardware in order to produce similar effects. The SNES developers, knowing this effect would be used a lot, simplified things immensely by integrating the feature directly into the graphics hardware.
ExKeeper
Posts: 460/512
I would also like to see a wavy FG like in coral capers
This is a long thread. Click here to view it.
Acmlm's Board - I2 Archive - Super Mario World hacking - Release: HDMA package 1


ABII


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



Page rendered in 0.003 seconds.