Language…
19 users online:  AmperSam,  Anorakun, CharlieUltra, Courage2006, CroNo, DanMario24YT, elegist, GamesInTweed, Golden Yoshi, Green Jerry, GRIMMKIN, Metal-Yoshi94, MorrieTheMagpie, Nayfal, PuffleDreemurr, rafaelfutbal, slopcore, TheXander, Tulip Time Scholarship Games - Guests: 313 - Bots: 431
Users: 64,795 (2,370 active)
Latest user: mathew

[DEMO's Secret Exit Reveal]Today Starts the Dynamic Sprite Revolution

ToolPatchSpriteSuper Mario WorldDemoResource ReleaseVideo/TrailerScreenshots

you got the LMPuny seal of aproval #smw{:TUP:}

let the revolution begin let's GOOOOO, the future for smw hacking seems bright again

Userbar by Green Jerry

Also a Fortaleza Reznor user. If you... digo, si hablas español, hackeas, buscas ayuda, o simplemente se te da conocer gente, únete, somos puerta abierta.
I know you work really hard on your project so it's great to see such positive reactions to it. You're doing some awesome things! I think as Dyzen becomes more developed and easier to use it's gonna become more and more of a mainstay here on smwc. I'll gladly join you in the dynamic sprite revolution mate, here's to the new chocolate regime #smrpg{:O}

allow shy guy emojis in post footers you cowards!
Impressive system, impressive tech demo. That sample streaming system reminded of the one I did years ago for C3, I even thought you were using mine until you mentioned that you did for a friend, lol.

The SMW hack is pretty cool and Dynamic Z allows for a lot of things. I would like to eventually revise its API and commands available, for ensuring the implementation is solid and it can become part of SMWC's standard. I think DyZ is pretty close to stability.

The only concern is breaking DSX compatibility completely, which is unneeded in my opinion (technically you can have DSX and DyZ co-existing without problem), but I respect your decision.
GitHub - Twitter - YouTube - SnesLab Discord
Originally posted by Von Fahrenheit
I know you work really hard on your project so it's great to see such positive reactions to it. You're doing some awesome things! I think as Dyzen becomes more developed and easier to use it's gonna become more and more of a mainstay here on smwc. I'll gladly join you in the dynamic sprite revolution mate, here's to the new chocolate regime #smrpg{:O}


Thanks Von, Would be very nice to see what you can do with my system. I am very happy to have you on SMWRR: FB Team.

Originally posted by Vitor Vilela
Impressive system, impressive tech demo. That sample streaming system reminded of the one I did years ago for C3, I even thought you were using mine until you mentioned that you did for a friend, lol.


The system made by my friend, started using your sample streaming system uploaded some years ago as base, but he modified a lot to improve it, optimizing a lot of stuffs, allowing 24 khz samples and improving the API, also editing AMK code to communicate both better. He is still working on that to avoid all flickering problems.

Originally posted by Vitor Vilela
The SMW hack is pretty cool and Dynamic Z allows for a lot of things. I would like to eventually revise its API and commands available, for ensuring the implementation is solid and it can become part of SMWC's standard. I think DyZ is pretty close to stability.


The implementation of Dynamic Sprite System:

* Exists a Double Linked List where each node has the configuration and important data of the Dynamic Sprite. (Max List Size 48 slots)

* Exists a Queue of Dynamic Transfer to VRAM and CGRAM.

* Dynamic Sprites can be 30FPS or 60FPS (Not recommended, in my experience, is almost never necessary use 60FPS), 60FPS uses the double of slots than 30FPS sprites. 30FPS synchronize their Dynamic Routines to avoid flickering problems.

Steps followed by the Sprite:

Init:

1. When the sprite is spawned, Clear the Dynamic Sprite List, removing all invalid slots (sprites that were despawned or die).

2. The sprite check if it is possible to spawn it, for that It send a Request of X number of 16x16 tiles, If exists that available space, the amount of data send by DMA per frame allows to spawn it and exists a free slot on the Dynamic Sprite List, the sprite reserve that slot and is spawned, if not, then the sprite is despawned (in the case of Normal sprites, it can be respawned if mario enters again on the screen and can be spawned then it will be spawned).

Note1: The maximum number of 16x16 tiles allowed for Dynamic Sprites can be changed with Uber ASM, by default It is 0x20 (32 tiles) and that allows 0x10 tiles per frame, This means that you can have a Maximum number of 32 Dynamic sprites of 16x16 (16 per frame at 30 FPS) or any combination of sprites that uses 32 tiles or less, also the max size of a sprite by default is 16 16x16 tiles, allowing a 64x64 dynamic sprite. If you disable vanilla exanimation and use the uber asm code that i posted on the thread, this can be changed to use 48 16x16 tiles allowing 50% more and the max size in this case are 48 tiles allowing a 80x80 dynamic sprite, that is what i used to do my Master Gnawty Sprite.

Note2: All this is made by the macro CheckSlot, i am doing documentation of this. But basically is just 1 line of code.

Note3: The number 16x16 tiles requested by a sprite is the number of tiles required for the bigger frame, this doesn't mean that always that sprite will load to vram that number of tiles, Dynamic Z always will send the minimum data possible.

Main:

1. Call Dynamic Routine, Dynamic Z already includes a macro that do all the Dynamic Routine for you called EasySpriteDynamicRoutineFixedGFX or EasySpriteDynamicRoutine, again, i am doing documentation to explain this. What this routine Does?

1.1 Check Safe Frame: Dynamic Z has a main timer that increase in 1 each time it is executed on NMI Hander, if Safe Frame is different to Dynamic Z Timer then this means that all worked properly, if they are equals then it means that Dynamic Z wasn't executed on the last game loop, then it skip the Dynamic Routine to avoid any DMA Overload problem. When the Dynamic Routine is executed properly Safe Frame = Current value of Dynamic Z Timer after the routine.

1.2 Check synchronization: If Dynamic Z Timer is even, only Dynamic Sprites registered on Even Frames will execute their Dynamic Routine and vice-versa. In the case of 60FPS Dynamic Sprites, This check is not used.

1.3 FindSlot: This is a routine clear the dynamic sprite list and then does Autodefragmentation, basically it works like if the VRAM has gravity, This is a bit hard to explain but basically then i will explain it with an example:

Imagine you have 3 sprites on the list (DS0 (4 tiles), DS1 (2 tiles) and DS2 (10 tiles)) and DS1 is in between of DS0 and DS2 then on the VRAM they will looks like this:



Then imagine that DS1 dissapear (it was killed or despawned for some reason and was removed by the list). Then the VRAM should looks like this:



Then the routine autodefragments the VRAM and compacts space and the space looks like this:



If the space used by the sprite changed, the routine skip the next check.

1.4 Check if the requested frame (I use the defines !FrameIndex for this) is equals to the Aknowledge Frame (The frame that must be used for the graphic routine, I use !LastFrameIndex for this), if both are equals, then the dynamic routine is skipped. This check is skipped if the FindSlot changed the dynamic space of the sprite.

1.5 Do the Dynamic Routine: It set the parameters to the VRAM DMA Queue and say to Dynamic Z what must be loaded on the VRAM, for that it requires 2 tables (one of 16bits values with offsets of the resource, and one with 8bits values with the number of 8x8 tiles used by the the transfer), each entry on the tables have 2 values per frame, one of the start of the frame, and one of the latest line of the frame that must be loaded on the VRAM. Then the routine fix all the VRAM DMA Queue to do the necessary dynamic routines.

Graphic Routine:

1. Must use the macro GetVramDisp to get the offset of the resources in VRAM.

2. must remap tiles with the macroRemapOamTile

Animation Routine:

1. You only can change frame on the correct frames. If not then you will have a desync then if you change of animation or frame you need this check.

Code
	%CheckEvenOrOdd("DZ_DS_Loc_US_Normal")
	BEQ +
	;Here your code to change frame.
+


In the case of clusters, extended or OW sprites you change "Normal" by "Cluster", "Extended" or "OW".

That is the process that happend behind a Dynamic Sprite.

Originally posted by Vitor Vilela
The only concern is breaking DSX compatibility completely, which is unneeded in my opinion (technically you can have DSX and DyZ co-existing without problem), but I respect your decision.


Sadly is more complicate than you think, If I put DSX's Dynamic Sprites and Dynamic Z Dynamic Sprites, they can't coexists in the same screen, basically to do Compatibility with DSX i must Include DSX on the patch like i did in V3.5 and deactivate all features of Dynamic Z if exist a DSX sprite on the screen, now what happend with that? I Already have a Dynamic Z version uploaded to SMWC, V3.5 for a some years that does that, but Staff never though about a Remoderation of Dynamic Sprites because Dynamic Z included that retrocompatibility, I am afair that if i put a retrocompatibility, that will happends again and then people never will enjoy the features of the patch and also people will still do Dynamic Sprites for DSX instead of change to the new system. Then I won't add retro-compatibility with DSX and I am trying to change the Dynamic Sprite standard, it will be the best for community. There is no reason to use DSX with this new standard it is like use AM carol when you have AMK.

Also thanks for the comment :) I am pretty sure that Dynamic Z is very solid, i think you will enjoy it, About the Code quality, it is fine, well It can be a bit optimize it but only some few cycles will be saved. I think that i can improve the quality of the code more, maybe for a future version, to make it more easy to read, It has comments and all but i know that asm could be hard to read sometimes and i think i can add more explanations and sort the code better to make it more readable for others. Now i am pretty sure that Dynamic Z fulfill any standard.

------------------------------------------------------

Youtube
Twitter
SMWControlLibX GitHub
My Discord Server
Snestorage where you can download my resources
It's always a pleasure to see what you come up with for this project, and you certainly did not disappoint. The sheer amount of content here is crazy!

Amazing work!

I do think the system is very big and therefor intrusive, but given the huge possibilities, it's not surprising. Perhaps it'd be worth it to split the project up in the future - it might be helpful for some projects, especially ASM heavy ones, to be able to "mix and match" Dyzen modulen, rather than having to install the entire system.
Originally posted by Ragey
It's always a pleasure to see what you come up with for this project, and you certainly did not disappoint. The sheer amount of content here is crazy!

Amazing work!

I do think the system is very big and therefor intrusive, but given the huge possibilities, it's not surprising. Perhaps it'd be worth it to split the project up in the future - it might be helpful for some projects, especially ASM heavy ones, to be able to "mix and match" Dyzen modulen, rather than having to install the entire system.


Thanks you :). About "Intrusive" it is not. Dynamic Z allows you to select features that you want, you only select the features that you want and the patch only will include those modules.

Also almost all features are fully compatible with others resources, the only problem are those modules that affects player (Player features like Player Graphics and Player Palettes).

If you deactivate them and you install those kind of resources after dynamic z then you shouldn't have any problem. I am working to do versions of those patches compatible with my player features of Dynamic Z then on the future that won't be a problem.

Also The Dynamic Z Installer do all the installation for you then you won't have any problem.

I did a guide an Installation Guide + a Guide to create Dynamic Sprites using Dyzen that you can check =p.

------------------------------------------------------

Youtube
Twitter
SMWControlLibX GitHub
My Discord Server
Snestorage where you can download my resources
I had already seen pretty much all of this before release, it's all widly impressive stuff which certainly deserves a lot of credit, but I had not seen the Momodora boss fight at all before and holy shit that kinda blew me away. I know most of it is because the original animations were really smooth to begin with but it's really astonishing to actually see that sort of pixel animation in a rom hack. 👁
LINKS Twitter | YouTube | SoundCloud | Fortaleza Reznor
to hear birds and see none.
I uploaded more interesting sprites today, in this case i have 2 surprises that i was not sure to upload. They can be downloaded on the Main Thread :D.

DISCLAIMER:

All sprites showed, require some test on vanilla game. If you are not sure to download them, please wait until i upload them to SMWC. A version that works properly in vanilla game 100% test and without any problem will be uploaded to Sprite Section after C3.


Megaman X's Hotario



This is my favorite. I wasn't very sure to upload it, It was my entry on Mad Scientist Contest Second Round, it is a very complex sprite that can be used for a whole level gimmick.

Originally posted by README

This version of Hotario has the following features:

-Makes all BG/FG Color Palette Darker.
-Display a Light Trail Effect.
-The Light Trail reveal hidden platforms.
-Blue Light Trail makes player very Slow.
-Red Light Trail makes player very Fast.
-Can go in 4 directions (Up, Down, Right and Left)
-Has 2 modes, one mode just cross the screen, the other mode stay on screen permanent.
-Autoscroll Screen to right, up or Down.
-Hidden Platform has a very high amount of movement options.


The platform in the same way than my Zingers, use my movement system then it is very flexible.

DKC's Zingers



An iconic enemy of Donkey Kong Country, It is a special kind of Dynamic Sprite, actually it is a Mixed Dynamic Sprite, This system is a bit experimental, but basically It is a system that allows a very big number of Dynamic Sprites if they fulfill some conditions, basically sprites that use almost always the same animation except in some specific cases can share an idle animation, then they acts as Shared Dynamic Sprites when they are in Idle animation but they Acts like Regular Dynamic Sprites during others animations, this allows to skip a lot of Dynamic Sprite Limitations and have a lot of them on the screen.

I was not sure to upload this sprite because It is very complex to use, but basically It has a movement System that allows millions of differents types of movements like:

-Circle
-Spiral
-Ellipse
-Follow Player in X, Y or Both Axys
-Wave Movement
-Arc Movement
-A lot of others indescriptible movements
-ETC...

Unagi from SM64



This was the entry of the Mad Scientist First Round. Unagi is an enemy of SM64. It includes 2 versions:

-Wall Unagi (Unagi.asm): It waits on the background wall and attacks player when it is near.

-Swiming version (Unagi2.asm): Its a version similar to a blurp that swims following player in Y Axys.
If it is out of a water level, it just keeps in the same space like if it is out of water.

???????



I dont know, i just did this because i was bored.

------------------------------------------------------

Youtube
Twitter
SMWControlLibX GitHub
My Discord Server
Snestorage where you can download my resources
Originally posted by anonimzwx


Unsee juice please

allow shy guy emojis in post footers you cowards!
The first boss had no clue how to face it and no indication your attack isn't hurting it, just like Crash Man in Hammer Brother.
Originally posted by CourtlyHades296
The first boss had no clue how to face it and no indication your attack isn't hurting it, just like Crash Man in Hammer Brother.


It has a lot of clues. The most basic attack on mario is jump over enemies, in first and second phase you just jump over it, when it is red It is invulnerable, it is showed in the first level because Krushas at the end of the level are Red and also are invulnerable.

When you can damage the boss it start to do an animation and sound like it is tired, When it is black you only can hurt it with ground pound, if you to jump over it, it just laugh at you, if you already know that you have ground pound, you will try to use it on it because is one of your options of attack. Also the animation, the flash when the boss is damaged and color of the boss shows you all the visual feedback that you need.

Red invulnerability also is very common in DKC bosses, a lot of them use it during all the franchise.

All the clues that you need are in the visual feedback.

------------------------------------------------------

Youtube
Twitter
SMWControlLibX GitHub
My Discord Server
Snestorage where you can download my resources
I just am not used to DKC physics in SMW. I get how you're supposed to fight it now.
Originally posted by CourtlyHades296
I just am not used to DKC physics in SMW. I get how you're supposed to fight it now.


That boss on the next demo will be after 3 levels, during those levels the hack will try to teach all the physics and mechanics that you need for the boss.

------------------------------------------------------

Youtube
Twitter
SMWControlLibX GitHub
My Discord Server
Snestorage where you can download my resources
Some people could be afair about how to edit Dynamic Sprite graphics if they are compressed, i will do a guide about how to do that, but basically you dont edit the gfx, you edit the originak sprite sheet and use dyzen to generate the files and then you replace some part of the code. I Will show the complete process tomorrow on a video.

I know that not all wants to use prerrender style but this is the style of my hack, if i release the sprite sheet and a talented pixel artist edit the sprite sheets, then probably you can use those sprites with an art style similar to smw.

Also tomorrow i will reveal how to enter to secret sublevel of the level, i hope someone figure out how to enter to that sublevel.

------------------------------------------------------

Youtube
Twitter
SMWControlLibX GitHub
My Discord Server
Snestorage where you can download my resources
I did a video showing the Secret Exit of my Demo of Super Mario World Random Revolution: First Blood

I hope you found it before i showed it.

Secret Exit Reveal



How to edit Graphics for Dynamic Sprites made for Dynamic Z with Dyzen?



------------------------------------------------------

Youtube
Twitter
SMWControlLibX GitHub
My Discord Server
Snestorage where you can download my resources
Whoa, you can edit compressed graphics for dynamic sprites now? I'm this tempted to try using it.
I can't imagine how much effort it took you to put out all this stuff, very impressive job! Hopefully with new Dynamic Z and Dyzen people will start working more with dynamic sprites. And other than that, the other features like custom player graphics/hitbox etc. can be very useful.
Thanks Kevin :). I really hope that, There are very few Dynamic Sprites on the Sprite Section, because DSX is not a good support and because do Dynamic Sprites was very hard, that will change now.

I posted my Hack Demo on WIP Sub Forum:

Super Mario World Random Revolution: First Blood WIP Thread

Also I posted a thread about Change Dynamic Sprite Standard:

Change Dynamic Sprite Standard Thread

------------------------------------------------------

Youtube
Twitter
SMWControlLibX GitHub
My Discord Server
Snestorage where you can download my resources
I was so confused when I first saw some of this thread's contents, then I was like "how did you stick Mario in DKC's universe?", and as I scrolled down, my mind has blown completely.

This is easily the most impressive ASM thread so far, hands down. I always knew you were an excellent coder, and as such, I'll give that hack a whirl soon. Nice job!
Windowless ride, feeling alive
Are you alive or just breathing?
Originally posted by Katerpie
I was so confused when I first saw some of this thread's contents, then I was like "how did you stick Mario in DKC's universe?", and as I scrolled down, my mind has blown completely.

This is easily the most impressive ASM thread so far, hands down. I always knew you were an excellent coder, and as such, I'll give that hack a whirl soon. Nice job!


Thanks :D, yeah a lot of people at the start thinks that "I put NSMB Mario on DKC". But I put DKC ,NSMB and SM64 on SMW.

I Uploaded to Sprite Section some sprites of the main post. I will continue posting the others sprites of the main post.

For now:

DKC Contact Effect

DKC Explosions and Grenades

DKC Klaptrap

Also I uploaded to Tool section Dyzen for Normal Sprites:
Dyzen for Normal Sprites V1.0.0.5






------------------------------------------------------

Youtube
Twitter
SMWControlLibX GitHub
My Discord Server
Snestorage where you can download my resources

ToolPatchSpriteSuper Mario WorldDemoResource ReleaseVideo/TrailerScreenshots