Views: 1,004,454,810
18 users online: 7 up, Ahrion,  Alex, alviiiN, Davey_Arcade, deporteed, Domokun007, JupiHornet, le4che, MarioBaggins, MarioFan22, OhMuramatsu, Ralshi02, Stivi, SubconsciousEye, TheOrangeToad, Uncle Steve-Pup,  Vitor Vilela - Guests: 92 - Bots: 123 Users: 54,881 (2,029 active)
Latest: Judas
Tip: Read Lunar Magic's help file and SMW Central's F.A.Q., as they cover most of the basics of SMW hacking.
Not logged in.
Details for SA-1 Pack v1.40
SMW Patches - SA-1 Pack v1.40 Link - Show random
File Name: SA-1 Pack v1.40
Version History: View
Authors: Arujus, Vitor Vilela
Tool: Asar
Requires Free Space: Yes
Bug Fix: No
Featured: Yes
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.

  1. Increases the maximum amount of sprites *on screen* to 22.
  2. Increases the maximum amount of sprites *per level* to 255.
  3. Adds MaxTile, a system that allows to place much more sprite tiles on screen.
  4. Moves the sprite processing code to SA-1, making all sprites run about 4x faster compared to S-CPU.
  5. Optimizes some routines to make the level/overworld loading faster.
  6. Moves almost all non standard sprites, such as shooters, generators, cluster, extended, minor extended, bounce, score and smoke to the SA-1 CPU.
  7. Moves the block/map16 handling to the SA-1 CPU.
  8. Moves almost all overworld code to SA-1 side, leaving minimal CPU usage on overworld.
  9. 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.

Tags: chip, maxtile, sa-1, speedup, sprites
Download: Download - 188.30 KiB
damn these screenshots look like mario maker lul
Posted by: kaitri - | Link
Moderated with:
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.
Posted by: MarkAlarm - | Link
Vitor Vilela
Originally posted by BlueToad
I don't quite understand how Maxtile works. Is it like when a sprite is onscreen its tiles are stored in the two graphics pages and are removed when it desapawns, thus potentially allowing sprites from different headers to coexist?

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 does what you're looking for
Posted by:  Vitor Vilela - | Link
I don't quite understand how Maxtile works. Is it like when a sprite is onscreen its tiles are stored in the two graphics pages and are removed when it desapawns, thus potentially allowing sprites from different headers to coexist?
Posted by: BlueToad - | Link
Blizzard Buffalo
Imagine the following equation:

This SA-1 Update with More Sprites
Mode 7
Mega Mushroom for Custom Powerups
The most awesome SMW Romhack ever made.
Posted by: Blizzard Buffalo - | Link
When i try to use Widescreen using the system provided for SA-1, doesn't work properly because it generates random inputs, for example when I press right the player spinjumps.

here i have a uberasm "global_code.asm" with the code that i used:

    LDA.b #$E0
    STA $1D01
    LDA.b #$00
    STA $1D00

    LDA $6100
    CMP #$1E
    BEQ .pass2
    CMP #$1F
    BEQ .pass2
    CMP #$10
    BCS .pass1
    BRA .noLowerRes
    CMP #$17
    BCC .pass2
    BRA .noLowerRes

    REP #$20
	LDA #$0000
    STA $4360
	LDA #bright_table
    STA $4362
    SEP #$20
    LDA.b #bright_table>>16
    STA $4364

    LDA.b #$E0-$08
    STA $1D01
    LDA.b #$01
    STA $1D00

    LDA #%01000000
    TSB $0D9F|!addr
    LDA $0D9F|!addr
    STA $420C


db $08,$80 ;0-1
db $68,$0F ;2-3
db $68,$0F ;4-5
db $08,$80 ;6-7
db $00
Posted by: anonimzwx - | Link

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2022 - SMW Central
Legal Information - Privacy Policy - Link To Us


Follow Us On

  • YouTube
  • Twitch
  • Twitter


  • Super Mario Bros. X Community
  • Mario Fan Games Galaxy
  • sm64romhacks