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

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
Yeah, that's the address I have in my notes. It's also what's under the cursor when you are you holding your "P1 chip." It's part of some large-ish data structure (188 bytes) for each of the four players. The beginning has a bunch of pointers you could waste days on trying to figuring out what they do. The one at 0x8 is passed to the routine that sets the color/shade for a selected character

Code:
Player Structure Start
0x8013BA88 + [0-3]*0xBC

Character
playerpointer + 0x0048
(also value under cursor if not selected...)

Costume/Color Index
playerpointer + 0x004C

Shade
playerpointer + 0x0050

Data Pointer(? Needed for draw function)
playerpointer + 0x0008
I should really start trying to map out more of the game. I'd probably know so much more if my hacks weren't so surface level. For example, clearly this was a structure that I found months ago (that you just identified) that I didn't even think to look into.

Code:
p1 when s0 = 8013BA88
p2 when s0 = 8013BB44
p3 when s0 = 8013BC00
p4 when s0 = 8013BCBC
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
Is the 0.10 version working on consoles now?
Not at all. Extensive testing through every emulator known including CEN64 (the most accurate emulator) says it should be but it doesn't. DMA calls simply do not work on console which effectively make 0.10 useless.

I'm ordering an Everdrive tomorrow with personal funds to see what the issue is.
 

Jayr

Smash Cadet
Joined
Jan 26, 2011
Messages
38
Lol ok. Thanks for all the effort you're doing on this work. I really appreciate it and I will donate on the future for sure.
 

tehz

Smash Apprentice
Joined
Mar 27, 2010
Messages
188
I should really start trying to map out more of the game.
One day I'll collect everything from the hundred of text files and my nemu bookmarks and try to start documenting things haha.


DMA calls simply do not work on console which effectively make 0.10 useless.
Yeah, it's weird. I should share my rom/asm file/full write-up on my code (i guess there's no hurry until you get your everdrive anyways), but i made a simple color changer for the CSS screen (Z+R to loop through colors like melee, and L to loop through shades. #makethecbuttonsgreatagain). It works fine in emulators etc, and the game run fine until you hover over a character on the CSS. Once you did that, the game would softlock (no input, but the music still plays.) [I really wanted to make a D-PAD to choose Polygon/MM/GDK with changing backgrounds and the announcer saying "FIGHTING POLYGON TEAM", but I made this code first for practice, and now I'm stuck with all this DMA trouble.]

I wrote my code in such a way that it's only active (and only DMA'd) when you are in free-for-all VS mode (It's in the button processing logic, so propbably where you wrote your L/R-c-button for color cycle code). So, if I set VS to teams in the menu, load the CSS, choose a character, and then switch to FFA, my code is DMA'd and active after picking a character. At which point, everything works fine and as expected. Until you try to pick another character, or press start, etc. (presumably anything that is DMA'd, although in the emulator there is constant background DMAs going on that don't cause a softlock...)

From trying every part of my code in isolation, the problem seems to be anything that writes to the DMA transfer size (so the DMA start) register. Even if I write 0 into the address, the game will still softlock when hovering over a character/etc. I started looking into how the game does it's DMA. It uses osEPiStartDMA (and osJamMessage for the DMA calls that seem to softlock my code...maybe), which looks to be way too high level to use from assembly, but I need to look again to see if the game is disabling interrupts, or if there are different interrupts whenever the game DMAs vs when I try to DMA...
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
So I'm not the only one dealing with this.

Even if I write 0 into the address, the game will still softlock when hovering over a character/etc.
That's really interesting. Like really interstesting

I started looking into how the game does it's DMA.
Can't say I knew exacty what I was doing but I also wrote a code that attempted to use the games DMA function (osEPiStart DMA(?)) which, like you said is super complicated. I broke down a few parameters and tried to run it and even got it working on emulator through the in game function. Still soft locked.

This is stupid
 

lzer0

Smash Apprentice
Joined
Jan 31, 2016
Messages
102
Location
Venezuela
Slippi.gg
LULZ#434
One day I'll collect everything from the hundred of text files and my nemu bookmarks and try to start documenting things haha.




Yeah, it's weird. I should share my rom/asm file/full write-up on my code (i guess there's no hurry until you get your everdrive anyways), but i made a simple color changer for the CSS screen (Z+R to loop through colors like melee, and L to loop through shades. #makethecbuttonsgreatagain). It works fine in emulators etc, and the game run fine until you hover over a character on the CSS. Once you did that, the game would softlock (no input, but the music still plays.) [I really wanted to make a D-PAD to choose Polygon/MM/GDK with changing backgrounds and the announcer saying "FIGHTING POLYGON TEAM", but I made this code first for practice, and now I'm stuck with all this DMA trouble.]

I wrote my code in such a way that it's only active (and only DMA'd) when you are in free-for-all VS mode (It's in the button processing logic, so propbably where you wrote your L/R-c-button for color cycle code). So, if I set VS to teams in the menu, load the CSS, choose a character, and then switch to FFA, my code is DMA'd and active after picking a character. At which point, everything works fine and as expected. Until you try to pick another character, or press start, etc. (presumably anything that is DMA'd, although in the emulator there is constant background DMAs going on that don't cause a softlock...)

From trying every part of my code in isolation, the problem seems to be anything that writes to the DMA transfer size (so the DMA start) register. Even if I write 0 into the address, the game will still softlock when hovering over a character/etc. I started looking into how the game does it's DMA. It uses osEPiStartDMA (and osJamMessage for the DMA calls that seem to softlock my code...maybe), which looks to be way too high level to use from assembly, but I need to look again to see if the game is disabling interrupts, or if there are different interrupts whenever the game DMAs vs when I try to DMA...
Wow my brain got broken trying to understand all this but I'm glad you actually tried to at least make Custom CSS screens to make selectable the non-playable characters. Fun fact: In 20XX Pichu and Pikachu are the characters used to toggle "Crazy Hand and Master Hand", (press Z button to toggle alternate character iirc) respectively.
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
tehz tehz @othermipswizards So let's make the assumption that interrupts are the problem (I have no way to test this right now). If I were to do this, would I enable PI interrupts?

Code:
Enable_PI_Interrupts:
lui        a1, $a430            ; load mi regs
ori        a0, r0, $200        ; enable "set pi mask"
sw        a0, 0xc(a1)            ; write
location of MI registers, what I believe is responsible for interupts, 0x0??? and 0xa??? are identical from DMA experience
http://n64.icequake.net/mirror/www.jimb.de/Projects/N64TEK.htm#mipsinterface

confirming the PI set mask is $200
https://dragonminded.com/n64dev/libdragon/doxygen/group__interrupt.html
 

tehz

Smash Apprentice
Joined
Mar 27, 2010
Messages
188
I broke down a few parameters and tried to run it and even got it working on emulator through the in game function. Still soft locked.

This is stupid
Yeah, the structure of the actual DMA thing (OSIoMesg) is easy, but the structure of the "OSPiHandle" is crazy, and probably unmakeable

As far as enabling the PI interrupts (which is definitely already enabled when I'm DMAing), I think you have to get the interrupt register's state first, and then OR in your mask ?

Code:
lui    a1, 0xA430        ;mi_regs
lw     at, 0xC(a1)       ;get mi_reg state
ori    at, at, 0x0200    ;set enable PI bits
sw     at, 0xC(a1)      ;store mask
idk, look at how osSetInt(u32) works in the code (though its bitmasks are different than libdragons....). Do you have a .cod file of the osfunctions for nemu?
 
Last edited:

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
Yeah, the structure of the actual DMA thing (OSIoMesg) is easy, but the structure of the "OSPiHandle" is crazy, and probably unmakeable

As far as enabling the PI interrupts (which is definitely already enabled when I'm DMAing), I think you have to get the interrupt register's state first, and then OR in your mask ?

Code:
lui    a1, 0xA430        ;mi_regs
lw     at, 0xC(a1)       ;get mi_reg state
ori    at, at, 0x0200    ;set enable PI bits
sw     at, 0xC(a1)      ;store mask
idk, look at how osSetInt(u32) works in the code (though its bitmasks are different than libdragons....). Do you have a .cod file of the osfunctions for nemu?
No to the .cod file. I pull my osFunctions from the Zelda debug rom since it's all documented.

From what I've read, it looks like reading from 0xC is the equivalent of reading from 0x8. Since 0x8 is almost always zero unless one of the interupts is enabled, shouldn't I only be writing the set bit of whatever interupt?

Sorry for ignorance I've literally looked at this for 5 minutes haha
 

tehz

Smash Apprentice
Joined
Mar 27, 2010
Messages
188
From what I've read, it looks like reading from 0xC is the equivalent of reading from 0x8. Since 0x8 is almost always zero unless one of the interupts is enabled, shouldn't I only be writing the set bit of whatever interupt?
That's five more minutes than I've looked into it haha. Looking at it more closely, since you write and read to different actual address, just writing to +0xC would probably work. I guess it doesn't hurt to try. I'm sure there's something about setting interrupts in that giant MIPS 4.0 pdf
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
Alright well today may have been the most productive day of hacking I've ever had. The contents of this post will probably make some of you upset with me but honestly, I can't avoid it at this point. The reality is 0.10 would be far to difficult to get working the way I've tried to for the last 2 weeks for 5+ hours a day. I had to step back and make a tough decision so I'll apologize in advance.

Good News
19XXTE 0.11 will work on console. For a while, I was not so sure but I'm glad to say it will.
19XXTE 0.11 will see a release in ~1 week.
I'll be able to devote more time to bigger hacks (clones??)

Mixed News
19XXTE 0.11 will require the expansion pack. So if you want to play it on console you're out roughly $125 for an Everdrive and $20 for an Expansion Pak if you don't have one. However, I now have 4 MBs of RAM to do whatever I want with. To give you an idea, that's 1048576 lines of code. 19XXTE 0.9G used less than 500. This also means that I'll be able to patch your favorite two platform melee stage (textured and all) into the game with ease.

I was hesitant to make this change until I saw 3.77 million copies of DK64 were sold alone...the expansion pak shouldn't be that hard to get a hold of.

Bad News
19XXTE 0.11 will (probably) not work on Dolphin/Virtual Console. I have done very little testing on this so I may have a different answer for you at some point.
 
Last edited:

lzer0

Smash Apprentice
Joined
Jan 31, 2016
Messages
102
Location
Venezuela
Slippi.gg
LULZ#434
Alright well today may have been the most productive day of hacking I've ever had. The contents of this post will probably make some of you upset with me but honestly, I can't avoid it at this point. The reality is 0.10 would be far to difficult to get working the way I've tried to for the last 2 weeks for 5+ hours a day. I had to step back and make a tough decision so I'll apologize in advance.

Good News
19XXTE 0.11 will work on console. For a while, I was not so sure but I'm glad to say it will.
19XXTE 0.11 will see a release in ~1 week.
I'll be able to devote more time to bigger hacks (clones??)

Mixed News
19XXTE 0.11 will require the expansion pack. So if you want to play it on console you're out roughly $125 for an Everdrive and $20 for an Expansion Pak if you don't have one. However, I now have 4 MBs of RAM to do whatever I want with. To give you an idea, that's 1048576 lines of code. 19XXTE 0.9G used less than 500. This also means that I'll be able to patch your favorite two platform melee stage (textured and all) into the game with ease.

I was hesitant to make this change until I saw 3.77 million copies of DK64 were sold alone...the expansion pak shouldn't be that hard to get a hold of.

Bad News
19XXTE 0.11 will (probably) not work on Dolphin/Virtual Console. I have done very little testing on this so I may have a different answer for you at some point.
Wait, does that means the toggles you put in 0.10 testing will work too? Will you include these toggles in 0.11?
Regarding the bad news, is not that of a bad deal. Eventually I have to buy an everdrive anyways. As long as the next version works on any other accurate platform/emulator. BTW, Now that you mention you can do more stuff working with the Expansion Pak. Will you be able to do any of this? Some of them are things that already were discussed earlier in this thread.
Request: Shield Colors (specifically P4's Generic CPU Gray Shield)
Request: Harder/Unpredictable AI
Request: A workaround to make all stages available without having to exclude any (I miss Sector Z for casual plays)
Request: Hitbox toggle (Hitbox only / Hitbox and Overlay / Overlay only)
And with these good news, will you be able to fix the remaining bugs/known issues?
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
Wait, does that means the toggles you put in 0.10 testing will work too? Will you include these toggles in 0.11?
Yes. Everything will be working. 0.11 = what 0.10 should have been + a little.

Request: Shield Colors (specifically P4's Generic CPU Gray Shield)
This is on the to do list.

Request: Harder/Unpredictable AI
Probably not in the near future.

Request: A workaround to make all stages available without having to exclude any (I miss Sector Z for casual plays)
The RANDOM function will likely become a stage in the future.

Request: Hitbox toggle (Hitbox only / Hitbox and Overlay / Overlay only)
Probably not. Definitely not in the near future.

And with these good news, will you be able to fix the remaining bugs/known issues?
The biggest bug were the toggle behaving strangely on Dolphin (no longer supported) and the options bugging out/causing the screen to go red. The source of the issue has been resolved with the new DMA method. I'll scroll through the thread to see if I missed any as well.
 

tehz

Smash Apprentice
Joined
Mar 27, 2010
Messages
188
Request: A workaround to make all stages available without having to exclude any (I miss Sector Z for casual plays)
I think it should be possible to make a "page" button on the SSS, but I really haven't looked into because of the DMA issue. So, we'll see... I start really figuring out if it possible so I might have something when jorgasms releases his console-safe DMA code.
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
I think it should be possible to make a "page" button on the SSS, but I really haven't looked into because of the DMA issue. So, we'll see... I start really figuring out if it possible so I might have something when jorgasms releases his console-safe DMA code.
Can't believe I never thought to do this. I could easily do this with and incorporate a function to retexture it when you "change pages."

@peoplewhocomplainaboutcontrollerslikemyself I attended my first ever actual 64 tournament and got bodied. Now I kinda know how Sakurai feels when he plays his game. However, the controller I used sucked. A lot. I would invest in one of those GameCube sticks but they have issues with the range they read making tilts difficult.

Would we be opposed to adding a player specific toggle that added a dead zone for people who use those controllers or is that cheating?
 

GFD

Smash Cadet
Joined
Nov 2, 2014
Messages
60
Location
Canada
I guess it comes down to whether or not you consider hardware modifications / controller chips that accomplish the same thing to be cheating. The impression I get is that most anything you can plug into an N64 is legal at SSB tournaments. If I were I TO-ing a tournament using something like 19XXTE, I personally would allow it. I would imagine Smash 64 has enough problems attracting significant attendance as it is, and control stick settings of some sort would make it much more accessible. It would help people get into their local scene, and if they later decide they want to become a more widespread presence, they can make the investment of purchasing and transitioning themselves to more customized controller hardware.
 
Last edited:

Jayr

Smash Cadet
Joined
Jan 26, 2011
Messages
38
That is amazing! Btw, if the 0.11 versions and onwards are not going to work on virtual console/dolphin, you should just put the 0.9G version available so people could use it on VC/Dolphin. It is better than nothing imo.
 

Zantetsu

Smash Master
Joined
Sep 1, 2006
Messages
4,413
Location
Springfield, MO
However, the controller I used sucked. A lot. I would invest in one of those GameCube sticks but they have issues with the range they read making tilts difficult.

Would we be opposed to adding a player specific toggle that added a dead zone for people who use those controllers or is that cheating?
I'm confused by your question, because you mention that the GameCube sticks have issues with range, but then begin talking about a toggle for deadzone, which is something completely different. Those GameCube sticks you refer to have a large range and if you were to implement a larger deadzone, that would make them even harder to do tilts and such.

Either way, I'm personally opposed to a toggle that messes with how a controller functions. I can't imagine it being useful since 19XX isn't close to being used on all setups at all tournaments yet since Everdrives are quite pricey. So you would be jumping between joystick configurations when you switch setups anyway, can't see how that would be a good thing.
 

lzer0

Smash Apprentice
Joined
Jan 31, 2016
Messages
102
Location
Venezuela
Slippi.gg
LULZ#434
Can't believe I never thought to do this. I could easily do this with and incorporate a function to retexture it when you "change pages."
I clearly remember that someone suggested this earlier in the thread, but way even before you mentioned the DMA issues and probably even before 0.9G itself. I think maybe, just like many other suggestions, no one did notice it at that time.
Oh and I almost forgot it. Someone else mentioned a request earlier about neutral spawn points. Could this request be implemented in the next version of 19XXTE?

@peoplewhocomplainaboutcontrollerslikemyself I attended my first ever actual 64 tournament and got bodied. Now I kinda know how Sakurai feels when he plays his game. However, the controller I used sucked. A lot. I would invest in one of those GameCube sticks but they have issues with the range they read making tilts difficult.
My friends do play with these sticks, sure it has their pros and cons. It would be useful for those who don't rely on much tilt usage but terrible bad for attacks that need exact accuracy in the tilting like angled tilts, and specially. pivot tilts. HOWEVER, in the real gamecube controllers it is easier to do such stuff since they don't have that much of the sensibility/deadzone analog range. It is easier to perform any tilt related technique in an original gamecube controller, rather than their modded N64 controller counterpart.

Would we be opposed to adding a player specific toggle that added a dead zone for people who use those controllers or is that cheating?
T̶h̶e̶ ̶i̶s̶s̶u̶e̶ ̶w̶i̶t̶h̶ ̶t̶h̶e̶s̶e̶ ̶s̶t̶i̶c̶k̶s̶ ̶i̶s̶ ̶t̶h̶a̶t̶ ̶t̶h̶e̶y̶ ̶h̶a̶v̶e̶ ̶a̶ ̶m̶o̶r̶e̶ ̶l̶i̶m̶i̶t̶e̶d̶ ̶a̶n̶a̶l̶o̶g̶i̶c̶ ̶r̶a̶n̶g̶e̶ ̶i̶n̶ ̶i̶t̶'̶s̶ ̶s̶e̶n̶s̶o̶r̶s̶ ̶/̶ ̶d̶e̶a̶d̶z̶o̶n̶e̶ ̶/̶ ̶w̶h̶a̶t̶e̶v̶e̶r̶ ̶i̶s̶ ̶t̶h̶a̶t̶.̶ ̶F̶o̶r̶ ̶e̶x̶a̶m̶p̶l̶e̶,̶ ̶l̶e̶t̶'̶s̶ ̶a̶s̶s̶u̶m̶e̶ ̶6̶4̶'̶s̶ ̶a̶n̶a̶l̶o̶g̶i̶c̶ ̶r̶a̶n̶g̶e̶ ̶i̶s̶ ̶f̶r̶o̶m̶ ̶0̶ ̶t̶o̶ ̶1̶0̶0̶.̶ ̶T̶h̶e̶ ̶d̶e̶f̶a̶u̶l̶t̶ ̶r̶a̶n̶g̶e̶ ̶f̶o̶r̶ ̶a̶ ̶v̶a̶n̶i̶l̶l̶a̶,̶ ̶u̶n̶m̶o̶d̶i̶f̶i̶e̶d̶ ̶c̶o̶n̶t̶r̶o̶l̶l̶e̶r̶.̶ ̶N̶e̶w̶ ̶g̶e̶n̶e̶r̶a̶t̶i̶o̶n̶ ̶s̶t̶i̶c̶k̶ ̶r̶e̶p̶l̶a̶c̶e̶m̶e̶n̶t̶ ̶(̶t̶h̶e̶ ̶g̶a̶m̶e̶c̶u̶b̶e̶ ̶o̶n̶e̶s̶)̶ ̶h̶a̶v̶e̶ ̶a̶n̶ ̶a̶n̶a̶l̶o̶g̶i̶c̶ ̶r̶a̶n̶g̶e̶ ̶f̶r̶o̶m̶ ̶0̶ ̶t̶o̶ ̶5̶0̶.̶ ̶T̶h̶e̶r̶e̶f̶o̶r̶e̶ ̶m̶a̶k̶i̶n̶g̶ ̶m̶u̶c̶h̶ ̶d̶i̶f̶f̶i̶c̶u̶l̶t̶ ̶d̶o̶i̶n̶g̶ ̶t̶i̶l̶t̶-̶r̶e̶l̶a̶t̶e̶d̶ ̶m̶o̶v̶e̶s̶.̶ ̶S̶o̶ ̶i̶f̶ ̶y̶o̶u̶ ̶c̶a̶n̶ ̶m̶a̶k̶e̶ ̶a̶ ̶t̶o̶g̶g̶l̶e̶ ̶t̶o̶ ̶f̶i̶x̶ ̶t̶h̶i̶s̶,̶ ̶I̶ ̶d̶o̶n̶'̶t̶ ̶s̶e̶e̶ ̶w̶h̶y̶ ̶i̶t̶ ̶w̶o̶u̶l̶d̶ ̶b̶e̶ ̶s̶u̶c̶h̶ ̶a̶ ̶b̶i̶g̶ ̶d̶e̶a̶l̶.̶ ̶B̶u̶t̶,̶ ̶I̶ ̶d̶o̶ ̶h̶a̶v̶e̶ ̶t̶o̶ ̶r̶e̶c̶k̶o̶n̶ ̶t̶h̶a̶t̶ ̶i̶t̶ ̶w̶o̶u̶l̶d̶ ̶g̶i̶v̶e̶ ̶m̶o̶r̶e̶ ̶a̶d̶v̶a̶n̶t̶a̶g̶e̶ ̶f̶o̶r̶ ̶t̶h̶e̶ ̶g̶a̶m̶e̶c̶u̶b̶e̶-̶i̶s̶h̶ ̶s̶t̶i̶c̶k̶ ̶u̶s̶e̶r̶s̶.̶ ̶B̶u̶t̶ ̶I̶ ̶d̶o̶n̶'̶t̶ ̶t̶h̶i̶n̶k̶ ̶t̶h̶a̶t̶ ̶w̶o̶u̶l̶d̶ ̶b̶e̶ ̶u̶n̶f̶a̶i̶r̶ ̶b̶e̶c̶a̶u̶s̶e̶ ̶w̶h̶e̶n̶ ̶S̶m̶a̶s̶h̶ ̶6̶4̶ ̶t̶o̶u̶r̶n̶a̶m̶e̶n̶t̶s̶ ̶a̶r̶e̶ ̶h̶e̶l̶d̶ ̶i̶n̶ ̶P̶C̶ ̶t̶h̶e̶ ̶K̶e̶y̶b̶o̶a̶r̶d̶ ̶a̶n̶d̶ ̶a̶n̶y̶ ̶n̶o̶n̶-̶t̶u̶r̶b̶o̶ ̶c̶o̶n̶t̶r̶o̶l̶l̶e̶r̶s̶ ̶a̶r̶e̶ ̶a̶l̶l̶o̶w̶e̶d̶
Was wrong. Disregard this.

That is amazing! Btw, if the 0.11 versions and onwards are not going to work on virtual console/dolphin, you should just put the 0.9G version available so people could use it on VC/Dolphin. It is better than nothing imo.
0.9G doesn't work on Dolphin/VC. However, it does work on Homebrew emulators like Not64, but I don't recommend it until someone figures out a way to completely disable frameskip to make it playable at a stable framerate. I think it would be a thing of asking the devs of the Not64/Wi64 team and ask them if it is possible to do so. Now that I have mentioned this so many times. Anyone could try it. If you play the game and figure out for yourself you will know what I'm referring to.
 
Last edited:

Zantetsu

Smash Master
Joined
Sep 1, 2006
Messages
4,413
Location
Springfield, MO
The issue with these sticks is that they have a more limited analogic range in it's sensors / deadzone / whatever is that.
For example, let's assume 64's analogic range is from 0 to 100. The default range for a vanilla, unmodified controller.
New generation stick replacement (the gamecube ones) have an analogic range from 0 to 50. Therefore making much difficult doing tilt-related moves.
This isn't right.

The N64 console recognizes 128 units in each direction. The original N64 controller reaches roughly 80-85 units in each direction due to how it's made and the gate. Most developers understood this and programmed their games around this. You can input a complete dash, full stick jump, etc. by hitting somewhere in the 80-85 unit range (I'm not sure where exactly).

The problem with those Gamecube stick replacements, along with some others, is that they reach past the normal 80-85 range that an N64 controller does. You can see an example of that on the character select screen, as the hands move much quicker.

Now I'm not sure how many units you have to perform a tilt, but lets say it's up to 45 for this example. With a normal N64 stick at a max range of 85, you have within 53% of the distance from neutral to edge to perform a tilt. Now for the Gamecube stick, lets say it has a max range of 105. With that, you would have only around 43% of the distance from neutral to edge to perform a tilt. It's a higher range that makes it difficult to tilt, not a smaller one.
 

blaze3927

Smash Ace
Joined
Aug 12, 2009
Messages
832
Location
Melbourne
This isn't right.

The N64 console recognizes 128 units in each direction. The original N64 controller reaches roughly 80-85 units in each direction due to how it's made and the gate. Most developers understood this and programmed their games around this. You can input a complete dash, full stick jump, etc. by hitting somewhere in the 80-85 unit range (I'm not sure where exactly).

The problem with those Gamecube stick replacements, along with some others, is that they reach past the normal 80-85 range that an N64 controller does. You can see an example of that on the character select screen, as the hands move much quicker.

Now I'm not sure how many units you have to perform a tilt, but lets say it's up to 45 for this example. With a normal N64 stick at a max range of 85, you have within 53% of the distance from neutral to edge to perform a tilt. Now for the Gamecube stick, lets say it has a max range of 105. With that, you would have only around 43% of the distance from neutral to edge to perform a tilt. It's a higher range that makes it difficult to tilt, not a smaller one.
also unfixed gc replacement sticks (possibly this years batch fixed the issue still untested) skipped steps. so instead of 1.2.3......50 they went 2-.4.6.8.50 etc. the gc replacement sticks can be fixed and modified in the hardware to have reduced sensitivity.
 

lzer0

Smash Apprentice
Joined
Jan 31, 2016
Messages
102
Location
Venezuela
Slippi.gg
LULZ#434
also unfixed gc replacement sticks (possibly this years batch fixed the issue still untested) skipped steps. so instead of 1.2.3......50 they went 2-.4.6.8.50 etc. the gc replacement sticks can be fixed and modified in the hardware to have reduced sensitivity.
I knew of the inaccurate unit issues in the unfixed gc sticks. But I didn't know that last thing you said. Can you please guide me how to fix these replacement sticks? My friends and sometimes me uses those sticks to competitive play Smash 64 and we would like to know how to fix the sensitivity issues ourselves.
 

tehz

Smash Apprentice
Joined
Mar 27, 2010
Messages
188
Can't believe I never thought to do this. I could easily do this with and incorporate a function to retexture it when you "change pages."

@peoplewhocomplainaboutcontrollerslikemyself I attended my first ever actual 64 tournament and got bodied. Now I kinda know how Sakurai feels when he plays his game. However, the controller I used sucked. A lot. I would invest in one of those GameCube sticks but they have issues with the range they read making tilts difficult.

Would we be opposed to adding a player specific toggle that added a dead zone for people who use those controllers or is that cheating?
yeah, it should be really easy in theory. Just have to get the additional images in memory (and deal with the pointers,etc. unless you just want to load the images over the old ones). There's already a function that draws the images (i just don't know what will happen when you call the routine out of order.) Everything else should be able to be "hot swapped" whenever since it only matters when you hover over it. The only thing that would be missing is "stage previews" for FD/Race to the Finish (lol). One day I'll look into what draws the "random" preview to see if that can be co-opted or used a model for a custom routine. Or, someone could figure out how the other models are stored/loaded and fun stuff like that...

Probably could get something working next week if I wasn't super lazy.
 

blaze3927

Smash Ace
Joined
Aug 12, 2009
Messages
832
Location
Melbourne
I knew of the inaccurate unit issues in the unfixed gc sticks. But I didn't know that last thing you said. Can you please guide me how to fix these replacement sticks? My friends and sometimes me uses those sticks to competitive play Smash 64 and we would like to know how to fix the sensitivity issues ourselves.
either the AVRhttp://nfggames.com/forum2/index.php?topic=5803.0 or pichttps://code.google.com/archive/p/n64-joystick-translator/.
The pic guide also explains how resistors can be used if you are still not satisfied with sensitivity
 
Last edited:

tehz

Smash Apprentice
Joined
Mar 27, 2010
Messages
188
Now I'm not sure how many units you have to perform a tilt, but lets say it's up to 45 for this example. With a normal N64 stick at a max range of 85, you have within 53% of the distance from neutral to edge to perform a tilt. Now for the Gamecube stick, lets say it has a max range of 105. With that, you would have only around 43% of the distance from neutral to edge to perform a tilt. It's a higher range that makes it difficult to tilt, not a smaller one.
afaik, the problem is even worse than this. Basically, the stock gc-replacement sticks hit their full-activation (+/-125-128) before the stick hits the physical edge of the restrictor gate. So, you have an outside deadzone which makes the functional area of stick even smaller than it is (and use already lose 2-4mm going from the stock stick to the gc stick). I think that makes it uncorrectable in software. You could remap 0-125 to 0-85, and maybe make some tilts easier since you're reducing the values (you'll have multiple stick positions that map to the same 0-85 value), but you'll have to make the map really carefully. And, you still have that giant deadzone on the outside of the stick that's just wasted space...

I knew of the inaccurate unit issues in the unfixed gc sticks. But I didn't know that last thing you said. Can you please guide me how to fix these replacement sticks? My friends and sometimes me uses those sticks to competitive play Smash 64 and we would like to know how to fix the sensitivity issues ourselves.
http://nfggames.com/forum2/index.php?topic=5803.0
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
afaik, the problem is even worse than this. Basically, the stock gc-replacement sticks hit their full-activation (+/-125-128) before the stick hits the physical edge of the restrictor gate. So, you have an outside deadzone which makes the functional area of stick even smaller than it is (and use already lose 2-4mm going from the stock stick to the gc stick). I think that makes it uncorrectable in software. You could remap 0-125 to 0-85, and maybe make some tilts easier since you're reducing the values (you'll have multiple stick positions that map to the same 0-85 value), but you'll have to make the map really carefully. And, you still have that giant deadzone on the outside of the stick that's just wasted space...



http://nfggames.com/forum2/index.php?topic=5803.0
I wouldn't map it. I'd just use a multiplier. 120 * 2/3 = 80. Like you said, some stick positions would have the same value but it's still better than nothing. The deadzone on the outside is news to me and you're right, that's unfixable.

I'm confused by your question, because you mention that the GameCube sticks have issues with range, but then begin talking about a toggle for deadzone, which is something completely different. Those GameCube sticks you refer to have a large range and if you were to implement a larger deadzone, that would make them even harder to do tilts and such.

Either way, I'm personally opposed to a toggle that messes with how a controller functions. I can't imagine it being useful since 19XX isn't close to being used on all setups at all tournaments yet since Everdrives are quite pricey. So you would be jumping between joystick configurations when you switch setups anyway, can't see how that would be a good thing.
Adding a deadzone would make it easier to tilt. If the middle ~40 was literally blank space, you could tilt at 41 (because 41 = 1) and up. However that's a bad solution since you couldn't tilt at ~30. Like I said, I was at work and just thinking because making pizzas is boring as ****. The multiplier, however, should work since there will literally be more value for you to hit tilts

Code:
Old   New
000 = 000
001 = 000
002 = 001
003 = 002
004 = 002
005 = 003
006 = 004
007 = 004
008 = 005
009 = 006
010 = 006
011 = 007
012 = 008
013 = 008
014 = 009
015 = 010
016 = 010
017 = 011
018 = 012
019 = 012
020 = 013
021 = 014
022 = 014
023 = 015
024 = 016
025 = 016
026 = 017
027 = 018
028 = 018
029 = 019
030 = 020
031 = 020
032 = 021
033 = 022
034 = 022
035 = 023
036 = 024
037 = 024
038 = 025
039 = 026
040 = 026
041 = 027
042 = 028
043 = 028
044 = 029
045 = 030
046 = 030
047 = 031
048 = 032
049 = 032
050 = 033
051 = 034
052 = 034
053 = 035
054 = 036
055 = 036
056 = 037
057 = 038
058 = 038
059 = 039
060 = 040
061 = 040
062 = 041
063 = 042
064 = 042
065 = 043
066 = 044
067 = 044
068 = 045
069 = 046
070 = 046
071 = 047
072 = 048
073 = 048
074 = 049
075 = 050
076 = 050
077 = 051
078 = 052
079 = 052
080 = 053
081 = 054
082 = 054
083 = 055
084 = 056
085 = 056
086 = 057
087 = 058
088 = 058
089 = 059
090 = 060
091 = 060
092 = 061
093 = 062
094 = 062
095 = 063
096 = 064
097 = 064
098 = 065
099 = 066
100 = 066
101 = 067
102 = 068
103 = 068
104 = 069
105 = 070
106 = 070
107 = 071
108 = 072
109 = 072
110 = 073
111 = 074
112 = 074
113 = 075
114 = 076
115 = 076
116 = 077
117 = 078
118 = 078
119 = 079
120 = 080
121 = 080
122 = 081
123 = 082
124 = 082
125 = 083
126 = 084
127 = 084
128 = 085
 
Last edited:

GamingMaster

Banned via Warnings
Joined
Oct 3, 2013
Messages
227
NNID
AbnormalAdept
just saying do u need a checklist of toggles to keep track
u can add a black bg tgl for tournaments
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
any chance you may also please investigate the ostvtype toggle? for a possible PAM-M (MPAL) rom?
This is what my limited knowledge and 5 minutes of googling has discovered. AFAIK, I can't just change this variable via toggle since you'd never see it. I could maybe make it so you have universal button modifier/button modifier doing boot or produce multiple ROMs. Expect a PM in the future with a test patch for these things but for now, this should solve your problem.

Edit: nevermind I'll look into it at some point


Edit: changed the codetype from 81 (constant write) to F1 (write once). If that doesn't work you can try with 81 but I personally promise nothing.

Play NTSC Smash on PAL TV
F1100A5A 0000

Play NTSC Smash on MPAL TV
F1100A5A 0002
 
Last edited:

GamingMaster

Banned via Warnings
Joined
Oct 3, 2013
Messages
227
NNID
AbnormalAdept
nice profile pic could that be implemented to title screen assuming u could go back to the main menu and then classic or something
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
0.11 is here! It's pretty much a working version of 0.10 with the addition of the "derek stick" per player toggle. I've also removed anti-aliasing and Japanese hit sounds for the time being (both will be revisited as well as neutral spawns, shield colors etc). This does not work on Dolphin as far as I know.

Please be on the look out for serious frame drops and random crashes. This build does not require the expansion pak but if the "free ram space" I've found is not free (where the random crashes will come from, it will in the future). The patching method has changed so be sure to watch the video on the original post.

Happy playing!
 

GFD

Smash Cadet
Joined
Nov 2, 2014
Messages
60
Location
Canada
You might need to include more stuff in the distribution for the patch to work properly for everyone.
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
You might need to include more stuff in the distribution for the patch to work properly for everyone.
10/10 problem. The link has been updated to include all of the other files in the folder (although they're hidden).

Curious, why is it that you decided to remove the anti-aliasing, even just temporarily?
The best answer is it didn't work on console. It cause all sorts of graphical issue
 

Zantetsu

Smash Master
Joined
Sep 1, 2006
Messages
4,413
Location
Springfield, MO
The best answer is it didn't work on console. It cause all sorts of graphical issue
Interesting. I've used the code on original SSB64 and didn't experience any graphical issues, so I assume it has something to do with 19XX specifically? Or maybe I just didn't notice the graphical issues on the original.
 

Cyjorg

tiny.cc/19XXTE
Joined
Nov 18, 2013
Messages
686
Location
Purdue University
Interesting. I've used the code on original SSB64 and didn't experience any graphical issues, so I assume it has something to do with 19XX specifically? Or maybe I just didn't notice the graphical issues on the original.
No it was just my way of implementing the GS code didn't work. If 0.11 is a success, I'll be able to disable anti-aliasing with ease at the hardware level instead.
 
Top Bottom