Language…
6 users online: cletus_deletus,  Donut, masl, playagmes169, sinseiga, toady - Guests: 242 - Bots: 298
Users: 64,795 (2,375 active)
Latest user: mathew

SA-1 Pack - v1.40 released

SA-1 Pack v1.35 released!

After a long hiatus, this version of SA-1 Pack integrates DMA remap, changes default sprite memory to 0x08 for all compatible levels (when it's a clean ROM), adds custom OAM hooks and fixes a few bugs.

Full 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.

Download
GitHub - Twitter - YouTube - SnesLab Discord
Vitor!
It's easily the best thing I've done
So why the empty numb?
NES Boy!

Making this post less pointless, is there a document anywhere about which parts of the game code run on which processor, like how sprites run on the SA-1 but UberASM level code runs on the SNES?

Also, you said that the SA-1 arithmetic registers only take 5 cycles, but is that regular cycles or master clock cycles? If it's the former, it's not 62% of an NOP, but if it's the latter, it wouldn't require NOP and BRA $00 to wait.

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

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Originally posted by Koopster
Vitor!


girino!! :o

Originally posted by imamelia
NES Boy!

Making this post less pointless, is there a document anywhere about which parts of the game code run on which processor, like how sprites run on the SA-1 but UberASM level code runs on the SNES?


I just made the documentation for you: https://github.com/VitorVilela7/SA1-Pack/blob/master/docs/programming.md#cpu-context. However, I don't remember all of the details since most of the modifications related to which CPU to run I made 7 years ago. In case you find anything wrong let me know.

Quote
Also, you said that the SA-1 arithmetic registers only take 5 cycles, but is that regular cycles or master clock cycles? If it's the former, it's not 62% of an NOP, but if it's the latter, it wouldn't require NOP and BRA $00 to wait.


Regular, 10.74 MHz cycles. Only a single NOP is required, since LDA $2306 already takes three cycles to "reach" $2306.
GitHub - Twitter - YouTube - SnesLab Discord
Good stuff as usual.

Originally posted by imamelia
NES Boy!

What!
HackPortsASM"Uploader"

SA-1 Pack v1.36 released

This version contains bug fixes and improvements on the documentation.

SA-1 Pack v1.36:
- 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.

Download: https://github.com/VitorVilela7/SA1-Pack/releases/tag/v1.36
GitHub - Twitter - YouTube - SnesLab Discord
This may or may not be intended but the latest versions seems to break compatibility with the SA-1 hybrid patches I used. I don't know if it's just those patches or if the entire section is just borked with this new update.
Originally posted by Polaris
This may or may not be intended but the latest versions seems to break compatibility with the SA-1 hybrid patches I used. I don't know if it's just those patches or if the entire section is just borked with this new update.

It'd help to have a list of the patches you have conflicts with. The only thing that may have broke something is the DMA remapping, but that was on v1.35.

Originally posted by SA-1 Pack v1.35 changelog
- 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.
Originally posted by lx5
Originally posted by Polaris
This may or may not be intended but the latest versions seems to break compatibility with the SA-1 hybrid patches I used. I don't know if it's just those patches or if the entire section is just borked with this new update.

It'd help to have a list of the patches you have conflicts with. The only thing that may have broke something is the DMA remapping, but that was on v1.35.

I tried this with my new baserom specifically and the patch that seems to cause some issues is the 32x32 tilemap patch--though it might be what you said with the DMA remapping as 32x does the same for the 8x8 Mario tiles in GFX00
Just a clarification about v1.36: The SNES CPU never interrupts an on-going DMA request (thanks, Near!); HDMA pauses the CPU and then the transfer is resumed, pretty much like how WRAM refreshes pauses the CPU, including DMA processes.

As most of the people might know, v1.40 is available for download since January and features MaxTile. Here is the change log:

- 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.



v1.40 is available on the Patches section and at GitHub.
GitHub - Twitter - YouTube - SnesLab Discord