Description: |
This pack of patches enables the SA-1 enhancement chip on your ROM and modifies most of the SMW engine to use the fast CPU, including regular/non-regular sprites and blocks, removing all slowdown on levels + overworld plus it reduces the loading times. As a bonus, it increases the maximum number of sprites on screen to 20, sprites per level to 255 and the maximum amount of tiles on screen to 128. Additionally, it optimizes some heavily math-based routines, such as the windowing HDMA effects.
With this, almost all slowdown possible in-game disappears.
Features:
- Increases the maximum amount of sprites *on screen* to 22.
- Increases the maximum amount of sprites *per level* to 255.
- Adds MaxTile, a system that allows to place much more sprite tiles on screen.
- Moves the sprite processing code to SA-1, making all sprites run about 4x faster compared to S-CPU.
- Optimizes some routines to make the level/overworld loading faster.
- Moves almost all non standard sprites, such as shooters, generators, cluster, extended, minor extended, bounce, score and smoke to the SA-1 CPU.
- Moves the block/map16 handling to the SA-1 CPU.
- Moves almost all overworld code to SA-1 side, leaving minimal CPU usage on overworld.
- All other SA-1 features such as 6/8MB support, 10.74 MHz CPU clock, Character Conversion DMA, fast RAM, arithmetic functions, etc., can be used.
SA-1 Pack v1.40 changes:- Adds MaxTile, a system responsible for managing OAM slots across the entire game. Via dynamic allocation, the system allows to you use ALL OAM slots for anything, including standard sprites with pretty high compatibility with previous resources. See MaxTile documentation for more information.
- The addition of MaxTile also fixes a few priority issues caused by NoMoreSpriteTileLimits.
- Now it's possible to detect SA-1 Pack and its version. See Programming guide for more information.
SA-1 Pack v1.36 changes:- Fixed a visual glitch in the bonus game, where one of the boxes (and its item) is floating on screen, a bit higher than the ground and scrolling vertically. Thanks goes to RaspberryAlpine for finding out this.
- Made the DMA transfer on the LZ2/LZ3 decompression retry if it gets interrupted. Although NMI/IRQ does not interrupt DMA, HDMAs can actually will DMA get interrupted. Thanks goes to p4plus2 for revealing that detail for me.
- Updated programming guide to include details about common routines on SMW and on which processor SA-1 Pack uses (either SNES or SA-1). Also organized the documentation a bit.
SA-1 Pack v1.35 changes:- Added the "finish OAM" hook, an extremely useful feature for programmers. See $40:0110-$40:0112 for more details on BW-RAM docs.
- Added DMA remap which moves all game DMA logic to channel 2 and Windowing HDMA to channel 1, freeing up channel 7 for custom HDMA. In addition, DMA channel 0 is now reserved for transfers during game play (outside interrupts), fixing a rare bug on the LZ2/LZ3 decompressor when you decompress a GFX file while the game is running and *just* when the DMA executes, a NMI occurs and the DMA settings end up reseted. For the effectiveness of this solution, please change all patches to use DMA channel 2 instead of 0 or 1. This fixes issue #14 on GitHub.
- Made all levels by default use Sprite Memory Header 0x08, allowing to all original levels have up to 22 sprites on screen. Note that I have included some logic to not take in account boss fight levels and levels that has wigglers (Forest of Illusion and Outrageous), since they are not compatible with.
- Fixed bank switching getting incorrectly reset to original values after reapplying SA-1 Pack, which makes ROMs larger than 4 MB completely unplayable. This fixes issue #15 on GitHub
- Fixed an issue where the Layer 3 tilemap would glitch if a custom game over screen was used. Caused by a remap error. Thanks MFG for figuring out and providing the fix. Merges pull request #18 on GitHub.
- Fixed some inconsistencies on the programming guide.
- Minor changes on readme file.
|
Comments (61)
While the latter is accurate, if you're going to apply GFX compression to your rom, note that you should open LM and apply the compression first — which will also prompt you to expand the rom to 1 MB at least — so that you don't have to reapply SA-1.
(If you open it in Lunar Magic to do, though, make sure NOT to make modifications to a level.)
Expanding the ROM before applying SA-1 Pack is fine, I will adjust the quick guide. However, changing GFX compression options before applying SA-1 Pack is NOT fine and that can cause trouble to your ROM because LM will not apply the SA-1 mappings required for it.
If you want to use LZ3, change the decompression options after applying SA-1 Pack and then apply SA-1 Pack again for activating the faster decompression algorithm for LZ3.
While the latter is accurate, if you're going to apply GFX compression to your rom, note that you should open LM and apply the compression first — which will also prompt you to expand the rom to 1 MB at least — so that you don't have to reapply SA-1.
(If you open it in Lunar Magic to do so, though, make sure NOT to make modifications to a level.)
Lunar Magic 3.30, 3.21
Asar 1.81, 1.71
GPS 1.4.21
PIXI 1.31
UberASMTool 1.4
AddmusicK 1.0.8
SA-1 Pack 1.40 (how shocking)
Snes9x v1.60, bsnes-plus v05, Console + SD2SNES
Sorry for this taking so long to moderate, there's a lot to unpack here! Everything that I and some of the other moderators tested worked as intended. From MaxTile to sprite spamming to vanilla game improvements, everything worked beautifully.
Note to end users that if you update to this version, you may have to update some other patches as well due to a change in DMA channels. This is mostly applicable for stuff like player graphics patches, status bar/overworld huds, and retry.
MaxTile allows for more sprites tiles on the screen at the same time (such as multiple banzai bills), but it doesn't come with any management system for uploading graphics to SP1-SP4 dynamically.
However, LX5's https://github.com/TheLX5/DynamicSpritesetSystem does what you're looking for
It's pretty common practice for hackers to periodically port over all of their resources to a new base ROM for various reasons, so that wouldn't cause any serious problems. Plus, most of the people who would use this patch at all are advanced hackers who already have experience / have finished hacks before, so it's not that unreasonable to think that someone would know of this (extremely famous) patch prior to beginning a new hack.
Besides, it's not like there's anything Vitor Vilela can do to fix this issue.
I've been playing SMW since it released and it is so cool to have such high performance and never feel any slow down.
This makes 1 of the best games ever, even better.
Thank you to the authors! <3
Dynamic Sprites patch that uses from its dsx.asm is already implemented on SA-1
This SA-1 Update with More Sprites
+
Mode 7
+
Mega Mushroom for Custom Powerups
=
The most awesome SMW Romhack ever made.
here i have a uberasm "global_code.asm" with the code that i used:
Steps I've followed:
1. Opened new, clean, unmodified rom in Lunar Magic v3.21.
2. Expanded rom to 2mb.
3. Opened ASAR.
4. Put SA-1.asm patch in ASAR.
5. Put rom in ASAR.
6. Hit enter.
7. Read the screen where bites were increased and there were no issues.
8. Opened rom in every emulator I have on my PC to find that nothing works.
Thanks fellas for the help.
autor: seven-ish persons
the best slowdown/disapearing tiles remover in smwc that even makes some resources that work get rejected for not being compatible:
autor: two persons
i see this patch pretty useful and easy for use.
One is from 2011, the other from 2013.
And not everything worked with SA-1. You couldn't even play SA-1 on certain flash cart a few years ago. Easy to criticize the work of others.
eh... i wasn't even criticizing the work... sa-1 is probably the best patch on smwc, and a good alternative for the old sprite tile limit patch, i just found out funny the fact that a special chip was made by two persons, and a patch that fixes the amount of sprite tilemap on screen was made by seven persons, the old one is pretty cool, that would explain it's use on smw hacking, and why would i criticize someone else's work, if it's pure asm, and i don't know asm? lmao
autor: seven-ish persons
the best slowdown/disapearing tiles remover in smwc that even makes some resources that work get rejected for not being compatible:
autor: two persons
i see this patch pretty useful and easy for use.
One is from 2011, the other from 2013.
And not everything worked with SA-1. You couldn't even play SA-1 on certain flash cart a few years ago. Easy to criticize the work of others.
You can use Zsnes 8MB Custom Build by FuSoYa(search on Google).
lol funny
autor: seven-ish persons
the best slowdown/disapearing tiles remover in smwc that even makes some resources that work get rejected for not being compatible:
autor: two persons
i see this patch pretty useful and easy for use.
I'm not sure that's how SA-1 would work, I'm pretty sure that if there was a way to keep everything compatible with SA-1 on it's own, then he would have done that a long time ago. Besides, SA-1 already seems really weird with how it works on the SNES.
Edit: I solved that I follow directions that I have to expand to any mb of 2, 3, or 4.
So never mind. It works fine.
Did you insert it to a clean ROM that's already been expanded to 2MB but otherwise unedited?
Did you insert it to a clean ROM that's already been expanded to 2MB but otherwise unedited?
All of the fixes work, so I'm approving it.
(coders: be careful with NMI-heavy stuff when the lives exchanger is enabled though, it may break it again)
Not much of a problem, since smw bosses are not often used on smw hacks.
The ROM Crashes (Note: I have converted the sprite with sa-1 converter)
I have no problem with making this patch work in higan v099. I haven't tried higan v100, will edit when I try it out.
EDIT: Confirmed, black screen with v100.