• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

Cloning stages?

Luigimitsu

Smash Apprentice
Joined
Nov 6, 2005
Messages
199
Location
London
How hard is it to simply make a copy of a stage? I basically want to replace all the non-tournament legal stages with copies of the legal ones. Then I can change the music for each stage then play with all stages on during friendlies and have a variety of music instead of just 1 track on each stage (with specific music for each stage and not just random music).

It's probably going to be more complicated than I'm hoping but I thought I'd ask anyway lol, if it's not too hard I might try to learn the process.
 
Last edited:

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
You can have multiple versions of the same stage already. Just cope the file, change the file extension and rebuild your iso. tTen write a code to change the file extension of the stage upon button press.
 

Luigimitsu

Smash Apprentice
Joined
Nov 6, 2005
Messages
199
Location
London
Well I knew that it's possible, but I just didn't know how to go about doing it, I just copied Dreamland and replaced Kongo Jungle with the Dreamland file by renaming it, doesn't work of course and I have no idea how to write a code for it. Are there any guides on that which I could use? Since both stages have the .dat extension I assumed I don't change that.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
No keep the file name and change the file extension. Look at shamrocks notes or the patching files thread. Also youd have to write a code to change the music yourself when the extension is changed. You could just write a code to manually change the song based on button press and skip the cloning stage part. Lucky for you I actually made a code like this while testing how to make functions.


lis r3,0x8046
ori r3,r3,0xb108
lbz r5,0x01(r3)
cmpwi r5,0x04
bne Exit
lis r5,0x8002
ori r5,r5,0x3f28
li r3,0x04
mtctr r5
bctrl
Exit:
lis r3, 0x804A


This changes the song to whats loaded in register 3 if dpad down is pressed. Youd have to find an injection point (mine was in match), add a list of songs for stages and a way to change them though.
 

Luigimitsu

Smash Apprentice
Joined
Nov 6, 2005
Messages
199
Location
London
Definitely complicated for me, I have no clue what any of the code means or where to put it. Would have thought just making copies of stages would be easier. It's more convenient as well since I won't have to remember each time to hold a button to change song.

Would you be able to do the code stuff for me?
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
I got a lot on my plate already. Put in a request in the codes section.
 

CeLL

Smash Lord
Joined
Jan 26, 2014
Messages
1,026
Location
Washington
I wrote a code that let you have up to 10 copies of each legal stage on your ISO, and upon selecting that stage on the SSS, it would pick a random copy to load.
 

Luigimitsu

Smash Apprentice
Joined
Nov 6, 2005
Messages
199
Location
London
I wrote a code that let you have up to 10 copies of each legal stage on your ISO, and upon selecting that stage on the SSS, it would pick a random copy to load.
That sounds perfect, where can I get it? Thanks to both of you for the help :)
 
Last edited:

CeLL

Smash Lord
Joined
Jan 26, 2014
Messages
1,026
Location
Washington
Code:
#inject @ 0x8025bb44
#r0 = stage ID

cmpwi r0, 0x2
blt FINISHED
cmpwi r0, 0x15
beq FINISHED
cmpwi r0, 0x1A
beq FINISHED
cmpwi r0, 0x20
bgt FINISHED #if the stage is not on the SSS, skip to the end

mr r6, r0
mr r7, r3 #save needed information that would be overwritten by RNG function

li r3, 0x9 #number of options for RNG
lis r0, 0x8038
ori r0, r0, 0x0580 #load RNG function address
mtctr r0
bctrl #bl to RNG function, r3 is now a random int (0-8)

addi r5, r6, -0x2 #used later

cmpwi r3, 0x8
bne ALTSTAGE

#use original stage
lis r3, 0x8000
ori r3, r3, 0x35DE #load table offset

mulli r4, r5, 0x2
add r3, r3, r4 #add 2 * (stage ID - 2) to get offset of stage name
lhz r3, 0x0 (r3) #load stage name
b STORENAME

ALTSTAGE:
mulli r4, r5, 0x8 #get lowest alt ID
add r3, r4, r3 #add a random number between 0 and 7
cmpwi r3, 0xBB #Big Blue >_<
blt ASCII
addi r3, r3, 0x1

ASCII:
#r3 = ones digit
li r4, 0x0 #tens digit

ASCIILOOP:
cmpwi r3, 0x10
blt CONVERT #if the ones digit is less than ten, break out of the loop
addi r3, r3, -0x10 #subtract ten from the ones digit
addi r4, r4, 0x1 #add one to the tens digit
b ASCIILOOP #loop

CONVERT: #convert the digits to ASCII
cmpwi r3, 0xA
blt LESS1 #if the ones digit is less than 0xA, add 0x30, else add 0x37
addi r3, r3, 0x37
b TENS

LESS1:
addi r3, r3, 0x30

TENS: #if the tens digit is less than 0xA, add 0x30, else add 0x37
cmpwi r4, 0xA
blt LESS10
addi r4, r4, 0x37
b ASCIICOMPLETE

LESS10:
addi r4, r4, 0x30

ASCIICOMPLETE:
mulli r4, r4, 0x100 #multiply 0x10's by 0x100 to shift it over two columns
add r3, r3, r4 #add 0x10's to 0x1's

STORENAME:
lis r4, 0x8000
addi r4, r4, 0x361C #load table offset
mulli r5, r5, 0x4
add r5, r5, r4
lwz r5, 0x0 (r5) #get RAM address of name from table
sth r3, 0x0 (r5) #store name

mr r0, r6 #original r0 value (stage ID)
mr r3, r7 #original r3 value

FINISHED:
sth r0, 0x001E (r3) #store stage ID (original code line)
I haven't touched it in forever, I'll fix everything up and get you the file names it uses for the custom textures some time today or tomorrow, unless you or someone else wants to. And did I say legal stage because apparently I meant every stage. Not sure lol I'll figure out later. And it's only 8, not 10.
 

Luigimitsu

Smash Apprentice
Joined
Nov 6, 2005
Messages
199
Location
London
I literally don't know anything about modifying code, is it the Start.dol file that I change? So with this code, can I for example pick Pokefloats, but have it start up as FD (a clone), using the music file that Pokefloats normally uses (which I will replace myself)?

That's basically all I want but with every illegal stage starting up as a clone of a legal one. Even 3 or 4 clones of each neutral is enough.
 

CaptainJazz

Smash Cadet
Joined
Oct 1, 2014
Messages
42
Location
Mute City
CeLL CeLL and Z zankyou , Making this accessible would be really helpful to the community. We could make multiple textures and music themes for final destination, etc.. You just gotta dumb it down for us please :)

@achilles1515, any clue? Maybe I can help you build a guide?
 

CeLL

Smash Lord
Joined
Jan 26, 2014
Messages
1,026
Location
Washington
Code:
Random Stage Textures (1.02) [CeLL]
060035D8 000000B8
00000000 0000497A
50734373 4B675A65
436E5374 4F744D63
52634764 47625368
4B725974 47724673
49314932 00005665
50754262 496D0000
467A4F70 4F794F6B
4C614261 803E0E53
804D45EB 803E119B
803E17F7 803E1B23
804D4653 803E2743
804D468B 803E33D3
803E4EC3 803E52D7
803E3F63 803E5127
803E4D03 803E51C3
803E76C7 803E3D8B
803E4947 803E4BF7
00000000 804D47BB
803E6A33 803E2D17
803E47F7 00000000
803E79F7 803E673F
803E6503 803E65DF
803E7E30 803E7F88
C225BB44 0000001D
2C000002 418000D8
2C000015 418200D0
2C00001A 418200C8
2C000020 418100C0
7C060378 7C671B78
38600009 3C008038
60000580 7C0903A6
4E800421 38A6FFFE
2C030008 4082001C
3C608000 606335DE
1C850002 7C632214
A0630000 48000060
1C850008 7C641A14
2C0300BB 41800008
38630001 38800000
2C030010 41800010
3863FFF0 38840001
4BFFFFF0 2C03000A
4180000C 38630037
48000008 38630030
2C04000A 4180000C
38840037 48000008
38840030 1C840100
7C632214 3C808000
3884361C 1CA50004
7CA52214 80A50000
B0650000 7CC03378
7CE33B78 B003001E
60000000 00000000
And the names of the alternate stages:
Code:
GrIz:
    Gr00.dat
    Gr01.dat
    Gr02.dat
    Gr03.dat
    Gr04.dat
    Gr05.dat
    Gr06.dat
    Gr07.dat


GrPs:
    Gr08.usd
    Gr09.usd
    Gr0A.usd
    Gr0B.usd
    Gr0C.usd
    Gr0D.usd
    Gr0E.usd
    Gr0F.usd


GrCs:
    Gr10.dat
    Gr11.dat
    Gr12.dat
    Gr13.dat
    Gr14.dat
    Gr15.dat
    Gr16.dat
    Gr17.dat


GrKg:
    Gr18.dat
    Gr19.dat
    Gr1A.dat
    Gr1B.dat
    Gr1C.dat
    Gr1D.dat
    Gr1E.dat
    Gr1F.dat


GrZe:
    Gr20.dat
    Gr21.dat
    Gr22.dat
    Gr23.dat
    Gr24.dat
    Gr25.dat
    Gr26.dat
    Gr27.dat


GrCn:
    Gr28.usd
    Gr29.usd
    Gr2A.usd
    Gr2B.usd
    Gr2C.usd
    Gr2D.usd
    Gr2E.usd
    Gr2F.usd


GrSt:
    Gr30.dat
    Gr31.dat
    Gr32.dat
    Gr33.dat
    Gr34.dat
    Gr35.dat
    Gr36.dat
    Gr37.dat


GrOt:
    Gr38.usd
    Gr39.usd
    Gr3A.usd
    Gr3B.usd
    Gr3C.usd
    Gr3D.usd
    Gr3E.usd
    Gr3F.usd


GrMc:
    Gr40.dat
    Gr41.dat
    Gr42.dat
    Gr43.dat
    Gr44.dat
    Gr45.dat
    Gr46.dat
    Gr47.dat


GrRc:
    Gr48.dat
    Gr49.dat
    Gr4A.dat
    Gr4B.dat
    Gr4C.dat
    Gr4D.dat
    Gr4E.dat
    Gr4F.dat


GrGd:
    Gr50.dat
    Gr51.dat
    Gr52.dat
    Gr53.dat
    Gr54.dat
    Gr55.dat
    Gr56.dat
    Gr57.dat


GrGb:
    Gr58.dat
    Gr59.dat
    Gr5A.dat
    Gr5B.dat
    Gr5C.dat
    Gr5D.dat
    Gr5E.dat
    Gr5F.dat


GrSh:
    Gr60.dat
    Gr61.dat
    Gr62.dat
    Gr63.dat
    Gr64.dat
    Gr65.dat
    Gr66.dat
    Gr67.dat


GrKr:
    Gr68.dat
    Gr69.dat
    Gr6A.dat
    Gr6B.dat
    Gr6C.dat
    Gr6D.dat
    Gr6E.dat
    Gr6F.dat


GrYt:
    Gr70.dat
    Gr71.dat
    Gr72.dat
    Gr73.dat
    Gr74.dat
    Gr75.dat
    Gr76.dat
    Gr77.dat


GrGr:
    Gr78.dat
    Gr79.dat
    Gr7A.dat
    Gr7B.dat
    Gr7C.dat
    Gr7D.dat
    Gr7E.dat
    Gr7F.dat


GrFs:
    Gr80.dat
    Gr81.dat
    Gr82.dat
    Gr83.dat
    Gr84.dat
    Gr85.dat
    Gr86.dat
    Gr87.dat


GrI1:
    Gr88.dat
    Gr89.dat
    Gr8A.dat
    Gr8B.dat
    Gr8C.dat
    Gr8D.dat
    Gr8E.dat
    Gr8F.dat


GrI2:
    Gr90.dat
    Gr91.dat
    Gr92.dat
    Gr93.dat
    Gr94.dat
    Gr95.dat
    Gr96.dat
    Gr97.dat


GrVe:
    GrA0.usd
    GrA1.usd
    GrA2.usd
    GrA3.usd
    GrA4.usd
    GrA5.usd
    GrA6.usd
    GrA7.usd


GrPu:
    GrA8.dat
    GrA9.dat
    GrAA.dat
    GrAB.dat
    GrAC.dat
    GrAD.dat
    GrAE.dat
    GrAF.dat


GrBb:
    GrB0.dat
    GrB1.dat
    GrB2.dat
    GrB3.dat
    GrB4.dat
    GrB5.dat
    GrB6.dat
    GrB7.dat


GrIm: (only 7 alts because of GrBb.dat (Big Blue))
    GrB8.dat
    GrB9.dat
    GrBA.dat
    GrBC.dat (this skin gets a 2/9 chance instead of 1/9 because I'm lazy)
    GrBD.dat
    GrBE.dat
    GrBF.dat


GrFz:
    GrC8.dat
    GrC9.dat
    GrCA.dat
    GrCB.dat
    GrCC.dat
    GrCD.dat
    GrCE.dat
    GrCF.dat


GrOp:
    GrD0.dat
    GrD1.dat
    GrD2.dat
    GrD3.dat
    GrD4.dat
    GrD5.dat
    GrD6.dat
    GrD7.dat


GrOy:
    GrD8.dat
    GrD9.dat
    GrDA.dat
    GrDB.dat
    GrDC.dat
    GrDD.dat
    GrDE.dat
    GrDF.dat


GrOk:
    GrE0.dat
    GrE1.dat
    GrE2.dat
    GrE3.dat
    GrE4.dat
    GrE5.dat
    GrE6.dat
    GrE7.dat


GrNLa:
    GrNE8.dat
    GrNE9.dat
    GrNEA.dat
    GrNEB.dat
    GrNEC.dat
    GrNED.dat
    GrNEE.dat
    GrNEF.dat


GrNBa:
    GrNF0.dat
    GrNF1.dat
    GrNF2.dat
    GrNF3.dat
    GrNF4.dat
    GrNF5.dat
    GrNF6.dat
    GrNF7.dat
You'll need every alternate stage to exist, even if it is just a copy of the original, or else the game may crash when you select that stage. Might have to make room in the ISO to use GCR to do it.

So what does this code do? You put 9 copies of every stage in your ISO, and whenever you choose a stage on the SSS it gives you a random copy, so you can have up to 9 different skins for each stage.

I finished this code in April, sorry it's so late.
 
Last edited:

KegMaster7000x

Smash Rookie
Joined
Jan 29, 2016
Messages
6
Has anyone been able to get this to random code work? This looks pretty complicated and don't really understand how to get it to load the 9 different stages even after adding.. ex... Grst.dat then adding Gr30.dat, Gr31.dat, etc..
 
Top Bottom