Language…
12 users online: Alex No,  AmperSam, Anas,  Anorakun, DinoMom, Green, Heitor Porfirio, Hiro-sofT, Kerd, Papangu, SomeGuy712x, yoshisisland - Guests: 271 - Bots: 630
Users: 64,795 (2,368 active)
Latest user: mathew

SA-1 Pack - v1.40 released

Is it possible to patch SA-1 on an edited rom? In anyway?
If you have nothing but levels on it, yes. Otherwise, no.
No. You must port everything to a new ROM. Even a ROM edited only by Lunar Magic won't work.
GitHub - Twitter - YouTube - SnesLab Discord
Are there other patches planned for release, after conversion?
Uh, just wanted to give a warning: Locking SA-1 Hacks with Lunar Magic CANNOT be undone. Recover Lunar Fix doesn't support SA-1 addressing and hacks.

Consider taking a full LM restore before locking the hack, if anything, replace the locked ROM with a clean one and restore to that point.
GitHub - Twitter - YouTube - SnesLab Discord
Is there a way to make SA-1 compatible with these three patches:

1. health2.asm (SMB2 Health Bar)
2. spritemessagebox.asm (Makes the text of Message Boxes into Sprite rather than Layer 3)
3. MultiMidwayPoint.asm (Multiple Midway Points)


I had many other patches that are incompatible with SA-1, but these three are the most important to me.

EDIT1: Or to make things easier, how would I make the patches compatible with SA-1 myself? Do I just replace "header & lorom" with "sa1rom"?
My YouTube Channel
Best SMW Hacks Compilation
Originally posted by chineesmw
Or to make things easier, how would I make the patches compatible with SA-1 myself? Do I just replace header : lorom with "sa1rom"?

You do that and then change just about every single value in the ASM file to SA-1 addresses.

Here for more info.
@chineesmw

health2.asm (now uses asar)

The other two later I'll take a look and I'll edit this post or make another post if I get them to work.

Oh, and reading the Programming section of the readme will help too.
Originally posted by chinesesmw
EDIT1: You were right by the way LXS, I tried attempting to convert the Multi-Midway Patch to become compatible with SA-1, but my ROM crashes... hmmm...


How would I convert these patches into SA-1?:

- Classic Fireball by Alcaro
- Three-Digit Coin Counter by Nimono
- Sprite Message Box by edit1754
- Custom Mario Palettes by Roy


EDIT1: I attempted to pull off converting the Classic Fire into SA-1 addressing... however, when Mario shoots the fireball at the enemy, the enemy bounces back rather than dying. I think the main problem with this is that the enemy is still detecting the ground being there.

Here are the thingies mcjingies:

My Attempt on Classic Fireball [SA-1]

Video of the Glitch

What did I do wrong with the code?

My YouTube Channel
Best SMW Hacks Compilation
Originally posted by chineesmw

You somehow managed to make it so that the fireball doesn't kill the sprite. You probably missed/messed up a few addresses here and there.
You must use different sprite addresses because they are 22 bytes and not like without the chip 12 bytes large. The new addresses are on "docs/sprite remap.txt".
Here is the SA-1 classicfireball, hopefully if Vitor Vilela sees this he/she can put it on the compatible list.


Am I using the wrong address conversion, I feel like there is some remap that I'm missing out on. I went on the sprite remap file and none of the RAM addresses that I've seen in the spritemessagebox.asm file. For example:

Originally posted by spritemessagebox.asm
!RAM_SpriteTilesReserved = $13E6 ; / a certain amount of tiles at the end of the OAM

!FREERAM_DecompBuffer = $7EAD00 ; 0x1000 bytes (borrows ExAnimation slot)
!FREERAM_TileBackups = $7F837E ; 0x1200 bytes (borrows part of stripe RAM)
!FREERAM_SpriteTilesUsed = $7F957E ; 0x200 bytes
!FREERAM_UploadTileNumbers = $7F977E ; 0x48 bytes
!FREERAM_MessageBuffer = $7F97C6 ; 0x90 bytes
!FREERAM_OpenFinalizedFlag = $7F9856 ; 1 byte

!SpriteTileVRAMHalfPtr = $6000 ; VRAM/2 address of start of SP1/2/3/4
!TileUnused = $FF ; Unused tile
!TileReserved = $FE ; Tile used by what's already in the OAM
!Message_End = $FE ; byte to stop copying message text
!MessageTileCount = 8*18 ; Number of 8x8 tiles in a message
!MessageIndicesCount = (!MessageTileCount/4) ; Numbe of 16x16 tiles in a message
!TileIndicesCount = $EA ; Number of tiles in tile index table
!Tile_Space = $1F

!RAM_FrameCounter = $13
!RAM_ControllerA = $15
!RAM_ControllerAPulse = $16
!RAM_ControllerB = $17
!RAM_ControllerBPulse = $18
!RAM_SpritesLocked = $9D
!RAM_LevelNum = $010B
!RAM_OAM = $0200
!RAM_OAM_Entry_X = !RAM_OAM+0
!RAM_OAM_Entry_Y = !RAM_OAM+1
!RAM_OAM_Entry_Tile = !RAM_OAM+2
!RAM_OAM_Entry_Bits = !RAM_OAM+3
!RAM_OAMExtraBits = $0420
!RAM_TransLevelNumber = $13BF
!RAM_PlayerFrozen = $13FB
!RAM_MessageBoxTriggerType = $1426
!RAM_OnYoshi = $187A
!RAM_MessageBoxGrowShrinkFlag = $1B88
!RAM_MessageBoxGrowShrinkTimer = $1B89
!RAM_AllowDismissMessageTimer = $1DF5


Originally posted by spritemessagebox(SA).asm
!RAM_SpriteTilesReserved = $73E6 ; / a certain amount of tiles at the end of the OAM

!FREERAM_DecompBuffer = $40AD00 ; 0x1000 bytes (borrows ExAnimation slot)
!FREERAM_TileBackups = $41837E ; 0x1200 bytes (borrows part of stripe RAM)
!FREERAM_SpriteTilesUsed = $41957E ; 0x200 bytes
!FREERAM_UploadTileNumbers = $41977E ; 0x48 bytes
!FREERAM_MessageBuffer = $4197C6 ; 0x90 bytes
!FREERAM_OpenFinalizedFlag = $419856 ; 1 byte

!SpriteTileVRAMHalfPtr = $3000 ; VRAM/2 address of start of SP1/2/3/4
!TileUnused = $FF ; Unused tile
!TileReserved = $FE ; Tile used by what's already in the OAM
!Message_End = $FE ; byte to stop copying message text
!MessageTileCount = 8*18 ; Number of 8x8 tiles in a message
!MessageIndicesCount = (!MessageTileCount/4) ; Numbe of 16x16 tiles in a message
!TileIndicesCount = $EA ; Number of tiles in tile index table
!Tile_Space = $1F

!RAM_FrameCounter = $13
!RAM_ControllerA = $15
!RAM_ControllerAPulse = $16
!RAM_ControllerB = $17
!RAM_ControllerBPulse = $18
!RAM_SpritesLocked = $9D
!RAM_LevelNum = $610B
!RAM_OAM = $6200
!RAM_OAM_Entry_X = !RAM_OAM+0
!RAM_OAM_Entry_Y = !RAM_OAM+1
!RAM_OAM_Entry_Tile = !RAM_OAM+2
!RAM_OAM_Entry_Bits = !RAM_OAM+3
!RAM_OAMExtraBits = $6420
!RAM_TransLevelNumber = $73BF
!RAM_PlayerFrozen = $73FB
!RAM_MessageBoxTriggerType = $7426
!RAM_OnYoshi = $787A
!RAM_MessageBoxGrowShrinkFlag = $7B88
!RAM_MessageBoxGrowShrinkTimer = $7B89
!RAM_AllowDismissMessageTimer = $7DF5


I used this method for the conversion:

Originally posted by SA-1 Conversion
Addresses with 4 digits need to be changed:

- $0000-$00FF -> $3000-$30FF;
- $0100-$0FFF -> $6100-$6FFF;
- $1000-$1FFF -> $7000-$7FFF.

These are the conversions for 6-digits addresses:

- $7E:C800-$7E:FFFF -> $40:C800-$40:FFFF;
- $7F:C800-$7E:FFFF -> $41:C800-$41:FFFF;
- $7F:9A7B-$7F:9C7A -> $41:8800-$41:89FF;
- $70:0000-$70:07FF -> $41:C000-$41:C7FF;
- $70:0800-$70:27FF -> $41:A000-$41:BFFF.


This is the video.

Can't seem to figure this problem out.
My YouTube Channel
Best SMW Hacks Compilation
Did the Super GFX Bypass address change in SA-1? Right now the address is $0FF7FF, I'm wondering if I should change it to $6FF7FF.
My YouTube Channel
Best SMW Hacks Compilation
What do you mean?
Anything used by LM works fine with SA-1.
GitHub - Twitter - YouTube - SnesLab Discord
Originally posted by Vitor Vilela
What do you mean?
Anything used by LM works fine with SA-1.


Nevermind, I'm trying to see what else in this patch I'm using needs to be changed. I conversed everything correctly (atleast I hope) and some things are still messing up. The only two problems is that the text will not show and the tilemaps of sprites and Mario gets thrown all over the place once I hit the message box. I will not give up on such thing...
My YouTube Channel
Best SMW Hacks Compilation
Well about your thing above:

!SpriteTileVRAMHalfPtr = $3000 ; VRAM/2 address of start of SP1/2/3/4

^ this still should be $6000, VRAM has nothing to do with SA-1


!FREERAM_DecompBuffer = $40AD00 ; 0x1000 bytes (borrows ExAnimation slot)
!FREERAM_TileBackups = $41837E ; 0x1200 bytes (borrows part of stripe RAM)
!FREERAM_SpriteTilesUsed = $41957E ; 0x200 bytes
!FREERAM_UploadTileNumbers = $41977E ; 0x48 bytes
!FREERAM_MessageBuffer = $4197C6 ; 0x90 bytes
!FREERAM_OpenFinalizedFlag = $419856 ; 1 byte

^ you DON'T need to change those. Keep the original defines.
GitHub - Twitter - YouTube - SnesLab Discord
Originally posted by Vitor Vilela
Well about your thing above:

!SpriteTileVRAMHalfPtr = $3000 ; VRAM/2 address of start of SP1/2/3/4

^ this still should be $6000, VRAM has nothing to do with SA-1


!FREERAM_DecompBuffer = $40AD00 ; 0x1000 bytes (borrows ExAnimation slot)
!FREERAM_TileBackups = $41837E ; 0x1200 bytes (borrows part of stripe RAM)
!FREERAM_SpriteTilesUsed = $41957E ; 0x200 bytes
!FREERAM_UploadTileNumbers = $41977E ; 0x48 bytes
!FREERAM_MessageBuffer = $4197C6 ; 0x90 bytes
!FREERAM_OpenFinalizedFlag = $419856 ; 1 byte

^ you DON'T need to change those. Keep the original defines.


Yeah, I figured that out yesterday. Even though I've change it to those settings, the glitch still somehow occurs. The problem probably lies within the actual code itself, but that will be quite a long journey to find out the problem in there, am I right? #smw{^_^;}

Anyway, one thing I've tried was going into docs\Sprite Remap.txt and to see if any of the addresses in this file was in the spritemessagebox.asm file. Didn't seem to find any match. Right now, I'm going to try and see if I can find a specific address within the Main Coding Section that can be converted into SA-1 Addressing. I'll edit this post to update if I've found anything or not...

EDIT1: Well, all I'm currently finding are 4-digit addresses that are above $1FFF and by looking at your conversion table I'm assuming that I'm not supposed to change those addresses.

My YouTube Channel
Best SMW Hacks Compilation
Is there anyway to play a SMW rom hack with the SA-1 chip on an actual cartridge?

Didn't super mario RPG have the SA-1?

Is it possible to make a brand new chip that's like 100 times faster than the SNES?

:)
easily, not yet

yes

yes


your questions went from relevant to irrelevant; this thread pertains only to sa-1 for smw
IIRC there are some flash carts with a slot in the top to put SNES cartridges in so as to borrow their chips. So you could stick in SMRPG to use its SA-1 chip to play your hack with.