• 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!

Stage Hacking: NEW Research + Documentation

The Shadow

Smash Apprentice
Joined
Dec 22, 2013
Messages
131
Location
Minnesota
Remember, these backgrounds are multiple 3D models you're trying to remove.

If we could adjust that then we would have advanced model hacks.
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
Code:
***************************
* Doraki Edge Angle Limit *
***************************
(-94.09, -54.4985)
(-89.9821,-100)
Testing coords that are on the limit of not Doraki'ing (changed the second Y value to -105 and Doraki did happen, but not with -100).
Gives angle of 84.84 degrees.

Basically,

--------------------
\ x)
\
  \
   \
    \

if x > 85 degrees then Doraki will take effect.
Is there a version of Milun's MK2 with this done? If not, I'll make it.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
As it stands, there are two main issues with grabbable ledges that include 90 degree vertical long walls.

1) Insta-walljumping (Doraki) is so easy to do that it frequently happens unintentionally. We're lucky that none of the vanilla competitive legal stages suffer from this issue.

2) Scar-jumping, in the conventional sense, cannot be done because the character's x-coordinate frame delta upon falling from the ledge and holding in toward the stage is not large enough to cause the "wallride frame counter" to reset. The counter will stay at 254 instead of resetting to 0 and the character will not be able to walljump because walljumping is disabled after wallriding for 130 or more frames.

My flexible solution to this problem is as follows...

Stage File Wall Flags (1.02) [Achilles]
Code:
C208183C 0000000E
887F0856 C1E289AC
FC0FF840 41820008
887F086A 2C030000
41820050 546007FF
40820040 546007BD
41820024 FC010040
4181001C 889F210C
2C0400FE 40820010
38800000 989F210C
D3FF2110 5460077B
41820018 809F2064
2C04001A 4081000C
386000FE 48000008
887F210C 00000000
[COLLAPSE="Some sloppy ASM Notes"]
STAGE FILE WALL FLAGS
inject @ 8008183c
- in function Interrupt_Walljump

lbz r3,0x856(r31) # load right wall type ID
lfs f15,-0x7654(rtoc)#load 1.00
fcmpo cr0,f15,f31
beq- WALL_CONTINUE # check if character in contact w/

right wall
WALL_ON_LEFT:
lbz r3,0x86a(r31) # load left wall type ID
WALL_CONTINUE:
cmpwi r3,0 # is wall flag 0?
beq- END # if so, skip to default code line
rlwinm. r0,r3,0,31,31 # load first bit
bne- DISABLE_WALLJUMP
rlwinm. r0,r3,0,30,30 # load second bit
beq- CHECK_LEDGE_REGRAB
fcmpo cr0,f1,f0 # compare x coord frame delta, etc
bgt- END # if less than, check to reset

wallride timer to allow walljumping
lbz r4,0x210c(r31) # load wallride timer
cmpwi r4,0xfe #
bne- END
li r4,0
stb r4,0x210c(r31) # store 0 into wallride timer
stfs f31,0x2110(r31) # store -1 or 1 (whichever side

wall is on)

CHECK_LEDGE_REGRAB:
rlwinm. r0,r3,0,29,29 # load third bit
bne- END
lwz r4,0x2064(r31) # load ledge regrab disable timer
cmpwi r4,0x1A # dont walljump for first four frames after letting go
ble- END


DISABLE_WALLJUMP:
li r3,0xFE # load 254 as wallride timer to not

walljump
b END_END

END:
lbz r3,0x210c(r31) # load wallride timer
END_END:
[/COLLAPSE]
---------------------------------

Apply this Gecko code or inject in into your DOL file and you now have access to 3 new flag values to be added to left/right wall links in a stage DAT file.

New Wall Flag Values:
0x00 = default, no changes
0x01 = disable walljump
0x02 = enable walljump anytime character is in contact with the wall
- aka enable scarjumping on 90 degree long walls
- solely enabling this flag will cause the ledge to always insta-walljump

0x04 = disable walljump during first 4 frames of fall from ledge
- aka disable insta-walljump (Doraki)

If you want to enable more than one at a time, just add the flag values.

So, a byte flag of 0x06 will disable insta-walljumping and also allow scar-jumping which seems quite ideal to me.

These byte flags are added in the stage link table, immediately following the byte (or halfword?) that designates the collision link as a wall/ground/ceiling. This is the same location that describes a ground link type as being grabbable/passable.

Example:
linknew.png


Speaking of Luigi's Target Test stage...

Nintendo Gamecube [Achilles]
Nintendo Gamecube (GrTLg.dat)
  • An exact clone of Final Destination (camera, blastones, main stage coords) but with 90 degree long walls. Still only a single spawn point but that is fixed with another code at some other time.
  • Test with the above code enabled for scar-jumping and no insta-walljumping.
Capture.PNG


Use 20XX to play on Luigi's Target Stage in Vs. Mode or a code like this.

EDIT: code updated on 8/15/15
 
Last edited:

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
As it stands, there are two main issues with grabbable ledges that include 90 degree vertical long walls.

Apply this Gecko code or inject in into your DOL file and you now have access to 3 new flag values to be added to left/right wall links in a stage DAT file.

New Wall Flag Values:
0x00 = default, no changes
0x01 = disable walljump
0x02 = enable walljump anytime character is in contact with the wall
- aka enable scarjumping on 90 degree long walls
- solely enabling this flag will cause the ledge to always insta-walljump

0x04 = disable walljump during first 2 frames of fall from ledge
- aka disable insta-walljump (Doraki)

If you want to enable more than one at a time, just add the flag values.

So, a byte flag of 0x06 will disable insta-walljumping and also allow scar-jumping which seems quite ideal to me.
Great stuff. But from the sound of it the code probably disables doraki walljumping on all stages. I can get it pretty consistently with fox on fd so itd be cool if it only applied to stages with a right angled ledge.
 
Last edited:

The Shadow

Smash Apprentice
Joined
Dec 22, 2013
Messages
131
Location
Minnesota
I can almost never do a Doraki with Captain Falcon, and never with Falco on any legal stage.

Even then Captain Falcon can just dash attack fly off and scar jump that way on any stage except battlefield. (I assume any other char can do this too)
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Great stuff. But from the sound of it the code probably disables doraki walljumping on all stages. I can get it pretty consistently with fox on fd so itd be cool if it only applied to stages with a right angled ledge.
It does not automatically apply it to every stage. You manually select stage links to apply it to by editing the stage files.

It can be done purely from a code but it would just get too messy for my liking.
 

Milun

Smash Ace
Joined
Oct 29, 2009
Messages
516
Location
Australia
Whoa! Nice GC man!

You know... it makes me think. We need a place where all stage hacks can be accessed. At the moment, they're all a bit scattered, and half have dead links. Should I turn the first post on this into a repository (we'd still have the dead link issues)?
 

Myougi

My posts are gluten free.
Joined
Mar 14, 2014
Messages
484
Location
WEST COAST BEST COAST
Nintendo Gamecube [Achilles]
Nintendo Gamecube (GrTLg.dat)
  • An exact clone of Final Destination (camera, blastones, main stage coords) but with 90 degree long walls. Still only a single spawn point but that is fixed with another code at some other time.
  • Test with the above code enabled for scar-jumping and no insta-walljumping.
View attachment 68395
Wait wait WAIT.
Super Smash Bros. Melee for the Nintendo Gamecube, ON A NINTENDO GAMECUBE?

Anyway, I'm excited for the doraki jump fix and also the soon-to-be-released-hopefully fix for the spawns on the new stage and also Snag the Trophies. Awesome stuff as usual, Achilles. :3
 
Last edited:

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
@achilles when you moved the platforms on battlefield for 20XX how did you go about it. Currently youd have to change the collision points, arean, and bone structure to do it.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
For the current 20XX, I do not modify the area table. In 4.0 I do, though, and this is done by "patching" the Battlefield file contents, which happens between the game loading the file in the RAM and the game actually reading its values. I would suggest using this method for any RAM modifications that need to happen once.

You can modify bone structures and collision points midgame, they just get put in a different, weird format when placed in the RAM. I was using a pointer at line 80458e88 and then navigating to various portions of code below the address it points to, to get to collision points and platform texture bones. I really haven't done a lot of research on it.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
For anyone interested. Yaks notes are basically a ported over copy of brawls collision data. That also explains why its a bit off. I always wondered how he figured everything out so fast and then left after 2 post.
 

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
For anyone interested. Yaks notes are basically a ported over copy of brawls collision data. That also explains why its a bit off. I always wondered how he figured everything out so fast and then left after 2 post.
Interesting. If I remember correctly, one thing I noticed a while back is that the "number of bot links" and "lowest index of bot links" halfword sections are switched. (along with the other collision types).
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Yeah thats what it should be. Its the same case for the coll data. Brawl differs here a bit.
 

VikingSteeez

Smash Cadet
Joined
Jul 26, 2015
Messages
31
Hey everyone, was there every made/uploaded a tiny stage? I want a stage so small that only one player is every really grounded.
I remember seeing this stage:


But this is much too wide. I'm thinking about the width of one of battlefield's platform, but with walls like the picture.

It would basically be a game of king of the hill, and to get back on the stage would be a fantastic exercise to practice your recovery.

I doubt you guys do requests, but I can't imagine making this sort of stage would be impossible nor difficult to make. (but what do I know)
The plainer the stage the better. I think I saw something like this using assets from temple, but I can't find it.. :(
 

CeLL

Smash Lord
Joined
Jan 26, 2014
Messages
1,026
Location
Washington
Hey everyone, was there every made/uploaded a tiny stage? I want a stage so small that only one player is every really grounded.
I remember seeing this stage:


But this is much too wide. I'm thinking about the width of one of battlefield's platform, but with walls like the picture.

It would basically be a game of king of the hill, and to get back on the stage would be a fantastic exercise to practice your recovery.

I doubt you guys do requests, but I can't imagine making this sort of stage would be impossible nor difficult to make. (but what do I know)
The plainer the stage the better. I think I saw something like this using assets from temple, but I can't find it.. :(
Why not just make the characters bigger?
 

Yax

Smash Rookie
Joined
May 25, 2011
Messages
13
Location
France
Hey everyone, was there every made/uploaded a tiny stage? I want a stage so small that only one player is every really grounded.
I remember seeing this stage:


But this is much too wide. I'm thinking about the width of one of battlefield's platform, but with walls like the picture.

It would basically be a game of king of the hill, and to get back on the stage would be a fantastic exercise to practice your recovery.

I doubt you guys do requests, but I can't imagine making this sort of stage would be impossible nor difficult to make. (but what do I know)
The plainer the stage the better. I think I saw something like this using assets from temple, but I can't find it.. :(

Hey ya, I may have one for you:

Does this suit you?
It's an empty version of Hyrule temple, with just that plateform left.
Here is the .dat file https://github.com/Yax42/ssbm_stage_edit/raw/master/custom_stages/GrSh.dat (although is it the way .dat files are shared? No compatibility problems?)
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Yax, it's good to see you back. Thank you for the stage hacking documentation you posted a while back. Did you make a stage editing program??
Well the problem with a stage editing program is that you need a model viewer. TCLL is the only one I know whos made progress on that end. Could probably add just a general editing script to UMC if he got stages working.
 

Yax

Smash Rookie
Joined
May 25, 2011
Messages
13
Location
France
Yax, it's good to see you back. Thank you for the stage hacking documentation you posted a while back. Did you make a stage editing program??
Well, I kinda did, but it's very limited and far from being friendly user, and the visual is in 2D (I have never worked on the 3D meshes).

I'm glad that sheet helped you :)
 

Yax

Smash Rookie
Joined
May 25, 2011
Messages
13
Location
France
Interesting. If I remember correctly, one thing I noticed a while back is that the "number of bot links" and "lowest index of bot links" halfword sections are switched. (along with the other collision types).
Yeah thats what it should be. Its the same case for the coll data. Brawl differs here a bit.
Oh, damn, I just realized what the problem actually is! I haven't been working on any Brawl. This simply is an endian problem! Let me explain.The .dat file is in little endian. My computer is in big endian. Therefore to operate on the values I had first to reverse every bits of every 32 bits (turning 001 into 100). Well, that's great, now I can operate on the values, and if I wanna save the data I just have to turn them back into little endian before writing the file. But... while reversing every 32 bits had no side effects on int4 and floats... it actually also reversed the order of the bytes inside the "32bits". That's the reason why every time I used substructures smaller than 4 bytes, their order was reversed \o/


I'm currently trying to improve my understanding of stage files (mostly by reverse engineering). You people seem to have done some pretty sick work around it, and I think it'd be pointless from me to work on what have already been discovered by others.

I want to know the state of art.

I'm currently working on those sections
  • coll_data
  • grGroundParam
  • itemdata
  • yakumono_param
  • ALDYakuAll
What do you guys know about it that I don't? :shyguy:
 
Last edited:

Achilles1515

Smash Master
Joined
Jun 18, 2007
Messages
3,211
Location
Cincinnati / Columbus OH
Oh, damn, I just realized what the problem actually is! I haven't been working on any Brawl. This simply is an endian problem! Let me explain.The .dat file is in little endian. My computer is in big endian. Therefore to operate on the values I had first to reverse every bits of every 32 bits (turning 001 into 100). Well, that's great, now I can operate on the values, and if I wanna save the data I just have to turn them back into little endian before writing the file. But... while reversing every 32 bits had no side effects on int4 and floats... it actually also reversed the order of the bytes inside the "32bits". That's the reason why every time I used substructures smaller than 4 bytes, their order was reversed \o/


I'm currently trying to improve my understanding of stage files (mostly by reverse engineering). You people seem to have done some pretty sick work around it, and I think it'd be pointless from me to work on what have already been discovered by others.

I want to know the state of art.

I'm currently working on those sections
  • coll_data
  • grGroundParam
  • itemdata
  • yakumono_param
  • ALDYakuAll
What do you guys know about it that I don't? :shyguy:
I'd like to know how to change the angle of the light source that casts shadows.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
It was pretty late when I was going through this, but the groundparam documentations a bit off.
The pause cam angles start at 60 and not 64 and pause angle down should be there and not at 76.
Also the first delta camera thing is actually shadow opaqueness.
 
Last edited:

Itaru

MasterGanon
Joined
Jun 25, 2014
Messages
279
Location
日本 茨城県
By the way, for those of you who've seen my Mushroom Kingdom tutorial, I did a dump of the models for Kirby 64 in Blender:

https://www.mediafire.com/?vkbv7sv0v6yrfy7

When you're done working with the models, you need to select ONE of the two that are in the scene and go export > obj.
When in the export window, be sure to have "selection only" and "keep vert order" selected.

Then, after exporting go to the .obj file, open it in notepad, and remove all rows of text that don't begin with data in the format of:

v 1.4390 3221.34 392.324234

You can then use my terrible program to convert them back into Hex:

https://www.mediafire.com/?z1a89nxgvofowhd

Finally, open the file the program spits out and copy all the Hex text. In your .dat, paste it in one of the following:

If you edited the part of the model which has the tree in it (the back half of the stage) paste it here: 0000480
If you edited the part of the model which was twice as large (the front half of the stage) paste it here: 0000E920
What is version of blender in this video?
https://youtu.be/tw6sxxZ9J1M
 

Milun

Smash Ace
Joined
Oct 29, 2009
Messages
516
Location
Australia
Hm... not sure, but I'd assume 6.49b. That was the one I used for a while, but it's really not important which version you use (I've been using the latest without adverse affects).
 

Gehis514

Smash Apprentice
Joined
Jul 25, 2015
Messages
119
Switch FC
SW 4004 9260 8249
I'm curious, what work would need to be done to have it so that final destination can have the background of the hyrule maze when you initiate the fight with link?
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
I'm curious, what work would need to be done to have it so that final destination can have the background of the hyrule maze when you initiate the fight with link?
If I were to guess Id say its not too feasible. Youd have to ask achilles though. If the data for that background is in the dol then it could be done through asm hacking.
 

ELITEWarri0r115

Smash Ace
Joined
Mar 24, 2015
Messages
990
Would it be possible to take a Pm stage model and use it in melee, or re-code it into melee? (Final Destination for example)
 

Milun

Smash Ace
Joined
Oct 29, 2009
Messages
516
Location
Australia
Thanks. and my first attempt XD (Ganon)View attachment 85234

How do you find model data starting offset?
(Ex. in this video, 7:09 "30B0" https://youtu.be/tw6sxxZ9J1M)
The method I use isn't very "scientific". Basically, you look at the start of the file, and there'll be a visible beginning to the vertice data (what I mean is, instead of 00 00s everywhere it becomes a whole array of values). Then I search for the first occurrence of 00 00 00 00 00 00 after that point (model data is usually followed by blank hex), and copy from start to finish. Like I said; not professional at all, but for my purposes it gets the job done.

Would it be possible to take a Pm stage model and use it in melee, or re-code it into melee? (Final Destination for example)
I'm not sure. I've seen 20XX use imported models (I think. Just look at the Greece stage), but I have no clue how they do it.
 

Milun

Smash Ace
Joined
Oct 29, 2009
Messages
516
Location
Australia
Hm...... I'd say enough to import the Love Giant trophy over the Goomba in Trophy Tussle. I'm quite used to doing things manually (heck I texture hacked the really old way up until recently). I didn't know that Brawls models were in the same format as Melee's though.
 

zankyou

Smash Lord
Joined
Sep 12, 2014
Messages
1,055
Hm...... I'd say enough to import the Love Giant trophy over the Goomba in Trophy Tussle. I'm quite used to doing things manually (heck I texture hacked the really old way up until recently). I didn't know that Brawls models were in the same format as Melee's though.
Its not. Which is why i havent made a guide on how to go between them. Theyre similar though so after assaulting tcll with questions I figured it out.
 
Top Bottom