Name: | HDMA Bugfixes |
Author: | Ice Man |
Added: | |
Version History: | View |
Tool: | Asar |
Requires Free Space: | Yes |
Bug Fix: | Yes |
Featured: | Yes |
Description: | This patch prevents various problems that would normally occur in the vanilla SMW like pipe transitions or sprite priorities when HDMA is used. The only thing you need to add priority on are the Map16 tiles for Pipes, ?-Blocks and Turn Blocks. On top of that, you can enable/disable HDMA on each game mode. So please adjust to your needs. :) |
Tags: | bugfix hdma lorom sa-1 |
Comments: | 8 (jump to comments) |
Download
1.22 KiB | 1,077 downloads
Comments (8)
- Lunar Magic v3.31
- SA-1 Pack v1.40
- Asar v1.81
- UberASM v1.5
- BSNES v115
Added screenshots to show three bugfixes.Most of the patch is a collection of hex edits, the first collection which fixes all instances where HDMA disables all other HDMA channels (which, incidentally, is almost identical to the one from the newly added Tweaks section) and the second one which disables lower priority for most sprites which go behind the foreground (which is a colour maths issue, not an HDMA issue, hence the last two images taking place in level mode 1E, not in a "foreground" HDMA effect).
In addition, the code which fixes HDMA from running in the wrong game modes (the only hijack freespace, by the way), runs in NMI, though it still is an UberASM-less solution. It still would be cool to see a solution which disables HDMA after a fade-to finishes, though.
Keep in mind that the hex edit which removing the windowing parameter thing, affects the credits where the windowing affects the sprites and layer 3, not just layer 2.
Ultimately, I don't really like this patch and would go for alternatives instead. But that's just a personal opinion and doesn't affect moderation.
I changed all instances of $7FXXXX to $41XXXX, that seems to do the trick, I am not sure if this messed up something else, feel free to try it, but make a backup!
Fun fact, this patch copies uses $7FFF00+ has a buffered HDMA table which gets loaded to the HDMA registers ($43x0, etc.), which is useful in case you're doing like double buffered HDMA or a HDMA that is synced with something so your effect won't get out of sync with the other things. If you're interested you may want to look the patch itself for figuring how it works.