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

[Updated 06/09/16] 19XXTE 0.11, ROM Hack (Working on Console!)

Shears

Smash Master
Joined
Mar 13, 2008
Messages
3,146
Location
disproving indeterminism
This looks so dope! I wanna get into 64! The only things bugging me were the 1 stage and the music for that stage. Is 19xx ever used on anther's ladder? Anyone know?
1 stage and music shouldn't matter. No one really uses anthers ladder as far as I know. Best bet is to play people on console locally and go to majors. You can try online but everyone is a big meanie stupid doodoo head.
 

madrush21

Smash Journeyman
Joined
Apr 29, 2010
Messages
315
Location
Colorado Springs
Is it possible to have 19XX force neutral starts on dreamland (maybe other stages too)? 20XX does this for melee but I'm not sure if spawn points work the same in 64. It'd be nice to have for singles and doubles
 
Last edited:

tehz

Smash Apprentice
Joined
Mar 27, 2010
Messages
188
I'll open source it when it's bug free (there are two ways I'm testing right now, one is probably more traditional and the other shouldn't even work but does!)
good luck! A tool sounds way better than what I do.

My current method is (i)have a generic DMA routine, (ii) have a file moving routine that calls (i) to get the data into RAM, and then replace the jump to (ii) with a jump to (iii), and (iii) the actual, moved routine. I mean it works, but it's not fun to keep track of.

I also tracked down a fun bug today. It seems some of the existing routines don't like to allocate as much memory as the use on the stack. fun.
 
Last edited:

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
Is it possible to have 19XX force neutral starts on dreamland (maybe other stages too)? 20XX does this for melee but I'm not sure if spawn points work the same in 64. It'd be nice to have for singles and doubles
I'm looking into it.

good luck! A tool sounds way better than what I do.

My current method is (i)have a generic DMA routine, (ii) have a file moving routine that calls (i) to get the data into RAM, and then replace the jump to (ii) with a jump to (iii), and (iii) the actual, moved routine. I mean it works, but it's not fun to keep track of.

I also tracked down a fun bug today. It seems some of the existing routines don't like to allocate as much memory as the use on the stack. fun.
Ew that sounds awful haha. Once I get mine flawlessly I'll be sure to let you know how I did it.

Did you fix it and if you did, did you notice any results?
 

GFD

Smash Cadet
Joined
Nov 2, 2014
Messages
60
Location
Canada
Jorgasms, I know you have a lot on your plate with 19XXTE already, but I thought I'd mention another toggle for you to consider: disabling anti-aliasing. It looks like there's been some interest and progress in disabling anti-aliasing on N64 games recently. Here's a thread with some technical discussion and discoveries on this topic; a post on the second page has a Gameshark code for the PAL version of Super Smash Bros., but I don't see a code for the NTSC version yet. This might be be worth researching, or at least keeping an eye on the discussions about it to see what other people find. Besides producing a "sharper" image that might be preferred for certain video setups, perhaps this would be able to reduce lag for doubles...? I'm not sure—my grasp on how the N64's unusual graphics pipeline works is very weak.
 
Last edited:

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
Jorgasms, I know you have a lot on your plate with 19XXTE already, but I thought I'd mention another toggle for you to consider: disabling anti-aliasing. It looks like there's been some interest and progress in disabling anti-aliasing on N64 games recently. Here's a thread with some technical discussion and discoveries on this topic; a post on the second page has a Gameshark code for the PAL version of Super Smash Bros., but I don't see a code for the NTSC version yet. This might be be worth researching, or at least keeping an eye on the discussions about it to see what other people find. Besides producing a "sharper" image that might be preferred for certain video setups, perhaps this would be able to reduce lag for doubles...? I'm not sure—my grasp on how the N64's unusual graphics pipeline works is very weak.

Disable Anti Aliasing (NTSC)
Code:
8103D55C 0000
8103D55E 0212
8103D58C 0000
8103D58E 0212
I'll look into incorporating this into 19XXTE
 
Last edited:

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
tehz tehz this is my method. I think some of the math is slightly off on lines after changing it so many times but it's working properly.

Edit: jk cache issues :(
 

Attachments

Last edited:

GamingMaster

Banned via Warnings
Joined
Oct 3, 2013
Messages
227
NNID
AbnormalAdept
so with the item switch there could be 15 toggles max or could there be a pg 2 or something with the appearance?
 
Last edited:

lzer0

Smash Apprentice
Joined
Jan 31, 2016
Messages
102
Location
Venezuela
Slippi.gg
LULZ#434
That's a lot of space to put any needed toggles, more than you may need.
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
That's a lot of space to put any needed toggles, more than you may need.
You're just thinking to small ;)

Honestly this way of doing it means I have room to do stuff that I wouldn't have even considered before. I can also do SOME of the Gameshark codes directly (like the Japanese hit sounds code hint hint) and manipulate things like the stage loading table.

Don't want to give away too much more I think the toggles are going to be used.
 

lzer0

Smash Apprentice
Joined
Jan 31, 2016
Messages
102
Location
Venezuela
Slippi.gg
LULZ#434
It should be good if we start to organize ideas to fill these slot toggles, like, for example, core game toggles and the remaining slots be used for optional toggles.

1. Rules (YES=Tournament Mode Rules / NO= Vanilla Rules*)
2. SSS (YES=Custom SSS / NO= Vanilla SSS) this way ALL stages could be accesed without excluding any.
3. Hitboxes (YES=ON / NO=OFF)
4. Music (YES=ON / NO=MUTE)
5. Widescreen (YES=ON / NO=OFF)
6. Stereo (YES=Stereo / OFF=Mono)
7. Japanese Sounds (YES=NTSC-J / OFF=NTSC-U)
8. Japanese characters moveset (YES=NTSC-J / OFF=NTSC-U)
9. European characters Moveset (YES=PAL / OFF=NTSC-U)
10.-15 YOLO TOGGLES and YES FUN ALLOWED TOGGLES, haven't think of anything yet.

I am suggesting these toggles. I don't know if would work this way but hope it does.

*With vanilla rules I mean no 8min timer with 5stock, since that breaks the Results Screen Scoring System, or whatever toggle would be needed to restore Results Screen displaying scores correctly without having to screw up everything else.
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
It should be good if we start to organize ideas to fill these slot toggles, like, for example, core game toggles and the remaining slots be used for optional toggles.

1. Rules (YES=Tournament Mode Rules / NO= Vanilla Rules*)
2. SSS (YES=Custom SSS / NO= Vanilla SSS) this way ALL stages could be accesed without excluding any.
3. Hitboxes (YES=ON / NO=OFF)
4. Music (YES=ON / NO=MUTE)
5. Widescreen (YES=ON / NO=OFF)
6. Stereo (YES=Stereo / OFF=Mono)
7. Japanese Sounds (YES=NTSC-J / OFF=NTSC-U)
8. Japanese characters moveset (YES=NTSC-J / OFF=NTSC-U)
9. European characters Moveset (YES=PAL / OFF=NTSC-U)
10.-15 YOLO TOGGLES and YES FUN ALLOWED TOGGLES, haven't think of anything yet.

I am suggesting these toggles. I don't know if would work this way but hope it does.

*With vanilla rules I mean no 8min timer with 5stock, since that breaks the Results Screen Scoring System, or whatever toggle would be needed to restore Results Screen displaying scores correctly without having to screw up everything else.
Spoiler: I'm never doing character editing via toggles
 
Last edited:

Smesh_Newb123

Smash Rookie
Joined
Nov 8, 2015
Messages
3
When I try patching the rom, I get an error saying "xdelta3: source file too short: XD3_INTERNAL". Can you help me please?
 

lzer0

Smash Apprentice
Joined
Jan 31, 2016
Messages
102
Location
Venezuela
Slippi.gg
LULZ#434
just saying stereo and mono is already there, rite?
If the Main Menu becomes available again, and not just VS Mode, then yes. Remember that in 0.9G (current), Main Menu can't be accessed along with 1P Mode, Options and Data since exiting VS Mode returns you to Custom Debug Menu,
 

GamingMaster

Banned via Warnings
Joined
Oct 3, 2013
Messages
227
NNID
AbnormalAdept
makes sense but everything else should return since he abandoned debug mode. btw jorgasms, if the game boots to css but has togles on debug will the wad still crash?
 

Finnhat

Smash Rookie
Joined
Mar 17, 2015
Messages
17
Location
West MI
NNID
Meduka666
3DS FC
3067-6904-0212
[collapse="Full List"]
I'm pretty sure it's possible to do by editing the ROM data base file (.rdb) file. How exactly? I'm not sure entirely sure. I'll look into it.
I'm still having trouble getting mine to work with Unknown ROM status and the "Bad ROM? Use GoodN64 & check for updated INI" message, has anyone found a workaround for this yet?
 

Zantetsu

Smash Master
Joined
Sep 1, 2006
Messages
4,413
Location
Springfield, MO
The all black background (will probably be changed to one of the shades blue) showed a slight increase in framerate (~10 fps) and will definitely be in 0.10.
If that doesn't completely make doubles lag-free, then what are your thoughts on this?

In short, this person claims that disabling anti aliasing can increase frame rate. I already saw that you created the code for SSB64, so I was wondering if you had plans to implement this as one of your toggles.
 
Last edited:

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
If that doesn't completely make doubles lag-free, then what are your thoughts on this?

In short, this person claims that disabling anti aliasing can increase frame rate. I already saw that you created the code for SSB64, so I was wondering if you had plans to implement this as one of your toggles.
something to think about
 

tehz

Smash Apprentice
Joined
Mar 27, 2010
Messages
188
Did you fix it and if you did, did you notice any results?
I "fixed" it by taking a little more stack space and not using the lowest addresses (so it doesn't matter when they get trashed). It changes $sp just fine, so it's not major. I guess the compiler just knows where not to use certain stack addresses.

Of course, one of the bad routines is the "playSFX" routine, which seems pretty basic/universal. I have no idea how this game manages to function.

Your DMA function looks good! I need to start using HI and LO for register storage... I'm bummed that using those never crossed my mind.

For final, DMA-loading loop, is there a reason why you just count down from 0xFFFF instead of checking for a clear DMA Status?
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
For final, DMA-loading loop, is there a reason why you just count down from 0xFFFF instead of checking for a clear DMA Status?
Because I only work on this when my brains fried. I've changed it since then.

Right now I'm trying to figure out how the CACHE instruction works/how to use osInvalICahce, osInvalDCache, and osWritebackDCache[All] so I can actually swap which function is there (currently only the first function used works). It's really sad because it's the only thing delaying 0.10 at this point :(

Edit:

This is somewhat important to. I've seen code along the lines of this in several rom hacks and I don't understand how you know this is free stack space.

Code:
addiu sp, sp, 0xFFF8
sw t0, 0x0(sp)
sw t1, 0x4(sp)
...
lw t0, 0x0(sp)
lw t1, 0x4(sp)
Addiu sp, sp, 0x8
 
Last edited:

lzer0

Smash Apprentice
Joined
Jan 31, 2016
Messages
102
Location
Venezuela
Slippi.gg
LULZ#434
Is there a possibility to have both the character models and hitboxes displayed at the same time. Hitbox mode is great but if it was overlayed it would be even better. Something like we see on http://framedisplay.onlinessb.com/
You mean something like 20XX does with Collision Bubbles?
(X+D-Pad Right) Collision Bubbles - Single Character [Achilles]
  • Collision Bubble Counter increases by 1 for only the character who activated the code.

  • Collision Bubble Counter:
    • 01 = Default.
    • 02 = Collision bubbles with no character texture. *[first press]
    • 03 = Character textures with overlayed collision bubbles. *[second press]
    • 04 = Repeat back to 01. *[third press]
---> gif <---
 
Last edited:

tehz

Smash Apprentice
Joined
Mar 27, 2010
Messages
188
Because I only work on this when my brains fried. I've changed it since then.

Right now I'm trying to figure out how the CACHE instruction works/how to use osInvalICahce, osInvalDCache, and osWritebackDCache[All] so I can actually swap which function is there (currently only the first function used works). It's really sad because it's the only thing delaying 0.10 at this point :(
Well, I never knew about those functions, but looking at the documentation for them, it explains a lot of the "only on the actual hardware" problems I've had. Finding the routine hopefully won't be too hard (symbol map? compare to OoT Debug ROM?); using it might be another matter...

Edit:

This is somewhat important to. I've seen code along the lines of this in several rom hacks and I don't understand how you know this is free stack space.

Code:
addiu sp, sp, 0xFFF8
sw t0, 0x0(sp)
sw t1, 0x4(sp)
...
lw t0, 0x0(sp)
lw t1, 0x4(sp)
Addiu sp, sp, 0x8
I thought that this was just MIPS convention? Anything below the stack pointer is considered invalid/garbage, so you can use it.
 

tehz

Smash Apprentice
Joined
Mar 27, 2010
Messages
188
This is everything I could figure out about CACHE and osInvalICache from a very unproductive morning at work. CACHE seems to be very confusing, so hopefully we can just match the function data from the OoT Debug Rom with data from SSB, and just call osInval*Cache(). Though, the online memory map for oot has the invalidate functions, but not the writeback function...
 

Attachments

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
This is everything I could figure out about CACHE and osInvalICache from a very unproductive morning at work. CACHE seems to be very confusing, so hopefully we can just match the function data from the OoT Debug Rom with data from SSB, and just call osInval*Cache(). Though, the online memory map for oot has the invalidate functions, but not the writeback function...
It does have the write back function, I've already located it in RAM. Using those functions is kinda problematic though so I'm trying to write my own functions. Right now, I have like a 75% success rate on the functions so I'm close.

I found a very well written MIPS manual that whoever wrote n64op03.txt likely based their guide on. I'll link it when I get home
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
tehz tehz do you understand what needs to happen in order to "flush cache" if that's the right term.

edit: jk the source you linked in your file is really helpful in explaining what's happening with cache. I should have it working tonight after my smashfest (hopefully)
 
Last edited:
Top Bottom