_glook
Got a Passion for Smashin'
First, a video explanation:
This mod has several parts. There's the part where you actually toggle from one to another, the color change (originally by ShamRock), all of the Omega stage files, and the DOL mods for everything.
The toggle part's Gecko code is this:
I repurpose one of the debug menu options (address 803fa3d0) and use this to store whether we are in Omega or Alpha mode. At the Stage Select screen, if we are in Alpha mode, we can switch to Omega mode by pressing "R", and we can do vice versa with "L". When a switch happens, the menu forward sound plays to indicate an action has occured.
Having a sound to indicate change is nice, but we need a reminder for the user about which mode they're currently in. For this, I use ShamRock's code to change the color of the stage icon border, except modified to use the Alpha/Omega toggle.
Edit: flieskiller has an additional code if you want to unset the value back to Alpha whenever entering the SSS:
http://smashboards.com/threads/alpha-and-omega-stage-toggles-mod.404694/#post-19342861
This is all nice and fancy, but it doesn't actually do anything. That's where this next code comes in:
This code hooks into the place where the stage's filename is read and checks if we are in Omega or Alpha mode. If we are in Alpha mode, we proceed as normal. However, if we are in Omega mode, we change the filename. Normally, stages have a filename that start with the letters "Gr". We change that to be "Go". We then check to see if the file exists. If it does, we proceed with the new filename. If the file doesn't exist, we change the name back to "Gr". It should be noted that if we are in Alpha mode, it changes the name to "Gr" no matter what, just in case the filename was changed earlier to "Go".
What this means is that you can include alternate stage files in the ISO. The alternate files HAVE to be the EXACT same size as the old one and they must be the same basic stage, as all the DOL functions will run of the original stage. To add a stage file to your ISO, you can manually edit the ISO hex to insert it somewhere (there's about 28 MBs of free space near the beginning of the ISO, though remember to update the FST) or you can just use GCRebuilder to do it.
Sometimes, though, you just want to toggle some dol mods, not load an entire new file. Besides this uses up a good chunk of free space on the ISO (and there's only about 28 Mbs to begin with). In that case, you can use the Omega toggle (803fa3d0) to do this. I'm gone ahead and taken the liberty of doing just that in a couple of ways.
The first DOL mod I created was one to load a different stage entirely. Here's one such example:
This hooks into the part where the stage id is read. It checks if we're in Alpha mode an proceeds normally if we are. If not, we do a series of ifs to check various stage IDs. If they match, we instead change the stage id to something else. This particular code changes Venom to Snag the Trophies, Icicle Mountain to Brinstar Escape, Flatzone to Majora's Mask, Rainbow Cruise to Goomba, and Pokefloats to Entei.
You'll notice that I included Snag the trophies, but some of you are aware that the trophies that spawn will crash versus mode. However, I don't want to remove functionality from Classic mode. So I toggle the trophy spawn dynamically. This is based off of the "Disable Trophy Spawn" code by wparam, except I check to see if we're in Classic mode first. If we are, we load the trophies as usual. If we're not, we don't load the trophies. This can be used separate from the Omega/Alpha stuff, so feel free to use it if you're going to be using the Trophy stage in the versus mode.
How about normal DOL mods? Well, you can alter DOL mods to check to see if you're in omega mode. If ALPHA mode, do what it normally does. If Omega, do whatever the DOL mod usually does. I've gone ahead and made modified codes of a lot of the existing DOL mods, most originally done by Zauron and flieskiller:
I've gone ahead and created an xdelta patch that you can use to patch a copy of SSBM v1.02. The patch clobbers over the Debug Menu, so keep that in mind. Here's a link to the xdelta patch:
http://www.mediafire.com/download/ou0zv22t1mjon9g/1_2_with_omega_toggles.xdelta
Thanks for reading!
This mod has several parts. There's the part where you actually toggle from one to another, the color change (originally by ShamRock), all of the Omega stage files, and the DOL mods for everything.
The toggle part's Gecko code is this:
Code:
Update: You may only be able to play menu sounds on the SSS, but there are 10 possible menu sounds to choose from. I've updated it to play better sounds, but this should also work
Toggle Between Alpha and Omega at SSS (v1.02) [_glook]
C225A3C4 00000010
3DE08046 61EFB108
3A000000 3A200000
7E4F802E 7E319378
3A10000C 2C100025
4081FFF0 3E00803F
6210A3D0 81F00000
2C0F0000 4082001C
562F0295 41820038
39E00001 91F00000
38600008 48000018
562F0253 41820020
39E00000 91F00000
38600009 3DE08002
61EF4030 7DE903A6
4E800421 FC010040
60000000 00000000
Customize sound with this:
C225A3C4 00000010
3DE08046 61EFB108
3A000000 3A200000
7E4F802E 7E319378
3A10000C 2C100025
4081FFF0 3E00803F
6210A3D0 81F00000
2C0F0000 4082001C
562F0295 41820038
39E00001 91F00000
3860000X 48000018 <--- To Omega
562F0253 41820020
39E00000 91F00000
3860000Y 3DE08002 <--- To Alpha
61EF4030 7DE903A6
4E800421 FC010040
60000000 00000000
Replace X and Y with one of these sounds:
0 is back
1 is Forward
2 is select
3 is "Wrong"
4 is "tingaling"
5 is PEW! (sound when L+R+A+Starting)
6 is snapshot
7 is siren
8 is pick up
9 is drop
A is eat food
Having a sound to indicate change is nice, but we need a reminder for the user about which mode they're currently in. For this, I use ShamRock's code to change the color of the stage icon border, except modified to use the Alpha/Omega toggle.
Code:
Display Unique Icon Borders for Alpha and Omega (v1.02) [ShamRock, _glook]
C225A3C0 00000010
3E00803F 6210A3D0
82100000 2C100000
4082000C 3E0000FF
4800000C 3E000033
62100066 3E20804D
623176DB 8A310000
1E310003 3A400000
5613063F 7E738A14
2C1300FF 40810008
3A6000FF 5610002F
7E109B78 5610C03F
3A520001 2C120003
41A0FFD8 3E2080CA
62313570 92110000
92110004 C001001C
60000000 00000000
Edit: flieskiller has an additional code if you want to unset the value back to Alpha whenever entering the SSS:
http://smashboards.com/threads/alpha-and-omega-stage-toggles-mod.404694/#post-19342861
This is all nice and fancy, but it doesn't actually do anything. That's where this next code comes in:
Code:
If in Omega Mode, try loading Omega version of stage (v1.02) [_glook]
C21C06F4 0000000D
38000000 3C60803F
6063A3D0 80630000
2C030000 41820048
3860006F 98640002
90810004 3821FFFC
7C832378 3CA08001
60A56204 7CA903A6
4E800421 3CA08033
60A5796C 7CA903A6
4E800421 38210004
80810004 2C030000
4080000C 38600072
98640002 00000000
What this means is that you can include alternate stage files in the ISO. The alternate files HAVE to be the EXACT same size as the old one and they must be the same basic stage, as all the DOL functions will run of the original stage. To add a stage file to your ISO, you can manually edit the ISO hex to insert it somewhere (there's about 28 MBs of free space near the beginning of the ISO, though remember to update the FST) or you can just use GCRebuilder to do it.
Sometimes, though, you just want to toggle some dol mods, not load an entire new file. Besides this uses up a good chunk of free space on the ISO (and there's only about 28 Mbs to begin with). In that case, you can use the Omega toggle (803fa3d0) to do this. I'm gone ahead and taken the liberty of doing just that in a couple of ways.
The first DOL mod I created was one to load a different stage entirely. Here's one such example:
Code:
Omega Mode toggles for some stages (v1.02) [_glook]
C225BB40 0000000D
8804000B 3D80803F
618CA3D0 818C0000
2C0C0000 41820050
2C000016 4082000C
38000053 48000040
2C000019 4082000C
38000042 48000030
2C00001B 4082000C
380000F8 48000020
2C00000B 4082000C
380000D7 48000010
2C000017 40820008
380000E3 00000000
You'll notice that I included Snag the trophies, but some of you are aware that the trophies that spawn will crash versus mode. However, I don't want to remove functionality from Classic mode. So I toggle the trophy spawn dynamically. This is based off of the "Disable Trophy Spawn" code by wparam, except I check to see if we're in Classic mode first. If we are, we load the trophies as usual. If we're not, we don't load the trophies. This can be used separate from the Omega/Alpha stuff, so feel free to use it if you're going to be using the Trophy stage in the versus mode.
Code:
Disable Trophy Spawn if in versus mode (Snag the Trophies Stage) (v1.02) [wparam, _glook]
C22199FC 00000005
3D808047 618C9D30
898C0000 2C0C0003
40820014 3D80802F
618C2094 7D8903A6
4E800421 00000000
How about normal DOL mods? Well, you can alter DOL mods to check to see if you're in omega mode. If ALPHA mode, do what it normally does. If Omega, do whatever the DOL mod usually does. I've gone ahead and made modified codes of a lot of the existing DOL mods, most originally done by Zauron and flieskiller:
Code:
Peach's Castle Disable Switches and Bullet Bill (Zauron)
-----------------------------------------------
At 801CD8A8:
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
beq ALPHA
OMEGA:
blr
ALPHA:
mflr r0
C21CD8A8 00000004
3C80803F 6084A3D0
80840000 2C040000
41820008 4E800020
7C0802A6 00000000
Disable Shy Guys on Yoshi's Story (Zauron)
---------------------------------
At 801E3348:
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
bne OMEGA
lis r12, 0x801E
ori r12, r12, 0x3418
mtctr r12
bctrl
OMEGA:
C21E3348 00000005
3D80803F 618CA3D0
818C0000 2C0C0000
40820014 3D80801E
618C3418 7D8903A6
4E800421 00000000
Disable Rising Platforms and Water Jets on Fountain of Dreams (Zauron)
-------------------------------------------------------------
At 801CC8AC:
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
beq ALPHA
OMEGA:
nop # Replace with FC000028
b RETURN
ALPHA:
fmadds f0, f0, f31, f0
RETURN:
C21CC8AC 00000005
3D80803F 618CA3D0
818C0000 2C0C0000
4182000C FC000028
48000008 EC0007FA
60000000 00000000
----
At 801CC8B4:
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
beq ALPHA
OMEGA:
lis r12, 0x801C
ori r12, r12, 0xC9F0
mtctr r12
bctrl
ALPHA:
lwz r0, 0x14(r27)
RETURN:
C21CC8B4 00000006
3D80803F 618CA3D0
818C0000 2C0C0000
41820014 3D80801C
618CC9F0 7D8903A6
4E800421 801B0014
60000000 00000000
Disable Ship Spawn on & Great Fox's Gun on Corneria [Zauron]
------------------------------------------------------------
At 801DDA48:
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
bne RETURN
ALPHA:
lis r12, 0x801D
ori r12, r12, 0xCE1C
mtctr r12
bctrl
RETURN:
C21DDA48 00000005
3D80803F 618CA3D0
818C0000 2C0C0000
40820014 3D80801D
618CCE1C 7D8903A6
4E800421 00000000
----
At 801E1390:
blt RETURN
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
beq ALPHA
OMEGA:
lis r12, 0x801E
ori r12, r12, 0x17C0
mtctr r12
bctr
ALPHA:
lis r12, 0x801E
ori r12, r12, 0x13A8
mtctr r12
bctr
RETURN:
C21E1390 00000008
41800038 3D80803F
618CA3D0 818C0000
2C0C0000 41820014
3D80801E 618C17C0
7D8903A6 4E800420
3D80801E 618C13A8
7D8903A6 4E800420
60000000 00000000
Jungle Japes Everything is disabled and immobile (water, doodads, Klap Traps)(1.02)[flieskiller]
-----------------------------------------------------------------------------------
At 80202c98:
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
bne RETURN
ALPHA:
mulli r0, r28, 0x14
RETURN:
C2202C98 00000004
3D80803F 618CA3D0
818C0000 2C0C0000
40820008 1C1C0014
60000000 00000000
Disable Rising Lava on Brinstar [Zauron]
----------------------------------------
At 801D99E0:
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
beq RETURN
blr
RETURN:
mflr r0
C21D99E0 00000004
3D80803F 618CA3D0
818C0000 2C0C0000
41820008 4E800020
7C0802A6 00000000
Onett Disable cars and Remove Drug Store platforms [flieskiller]
----------------------------------------------------------------
At 801e379c:
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
bne RETURN
ALPHA:
lis r12, 0x801E
ori r12, r12, 0x37F4
mtctr r12
bctrl
RETURN:
C21E379C 00000005
3D80803F 618CA3D0
818C0000 2C0C0000
40820014 3D80801E
618C37F4 7D8903A6
4E800421 00000000
----
At 801e3794:
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
bne RETURN
ALPHA:
lis r12, 0x801E
ori r12, r12, 0x37F4
mtctr r12
bctrl
RETURN:
C21E3794 00000005
3D80803F 618CA3D0
818C0000 2C0C0000
40820014 3D80801E
618C37F4 7D8903A6
4E800421 00000000
Mute City Disable cars [flieskiller]
------------------------------------
At 801f0188:
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
bne RETURN
ALPHA:
lis r12, 0x801F
ori r12, r12, 0x1A34
mtctr r12
bctrl
RETURN:
C21F0188 00000005
3D80803F 618CA3D0
818C0000 2C0C0000
40820014 3D80801F
618C1A34 7D8903A6
4E800421 00000000
Disable Stage Transformations on Pokemon Stadium [Zauron]
---------------------------------------------------------
At 801D1548:
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
bne RETURN
ALPHA:
lis r12, 0x801D
ori r12, r12, 0x4548
mtctr r12
bctrl
RETURN:
C21D1548 00000005
3D80803F 618CA3D0
818C0000 2C0C0000
40820014 3D80801D
618C4548 7D8903A6
4E800421 00000000
Disable Final Destination Background Transitions [Achilles, Dan Salvato]
------------------------------------------------------------------------
At 8021AAE4:
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
bne RETURN
ALPHA:
lis r12, 0x8021
ori r12, r12, 0xB2E8
mtctr r12
bctrl
RETURN:
C221AAE4 00000005
3D80803F 618CA3D0
818C0000 2C0C0000
40820014 3D808021
618CB2E8 7D8903A6
4E800421 00000000
Disable Tree Blow on Dreamland [Zauron]
---------------------------------------
At 80211444:
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
bne RETURN
ALPHA:
lis r12, 0x8021
ori r12, r12, 0x19E0
mtctr r12
bctr
RETURN:
C2211444 00000005
3D80803F 618CA3D0
818C0000 2C0C0000
40820014 3D808021
618C19E0 7D8903A6
4E800420 00000000
Kongo Jungle 64 (past stage) Remove Barrel [flieskiller]
--------------------------------------------------------
At 8020f4c0:
lis r12, 0x803f
ori r12, r12, 0xa3d0
lwz r12, 0(r12)
cmpwi r12, 0
bne RETURN
ALPHA:
lis r12, 0x8020
ori r12, r12, 0xF52C
mtctr r12
bctrl
RETURN:
C220F4C0 00000005
3D80803F 618CA3D0
818C0000 2C0C0000
40820014 3D808020
618CF52C 7D8903A6
4E800421 00000000
I've gone ahead and created an xdelta patch that you can use to patch a copy of SSBM v1.02. The patch clobbers over the Debug Menu, so keep that in mind. Here's a link to the xdelta patch:
http://www.mediafire.com/download/ou0zv22t1mjon9g/1_2_with_omega_toggles.xdelta
Thanks for reading!
Last edited: