Hacking Nintendont

  • Thread starter Thread starter sabykos
  • Start date Start date
  • Views Views 10,170,328
  • Replies Replies 42,894
  • Likes Likes 194
There's a good chance it's the SD card reading process, sometimes i have random freezes on games too. 1.30 was the last version with fast SD speeds. I already reported that the speeds changed in 1.31.
Hum, I see.. Thanks for the info! Do you know if reformatting or changing the cluster size to 64k would help?

Some people don't know acronyms...
Sorry if I wasn't clear :( I get a bit lazy when writing down game names lol
 
guess they could but kinda pointless to have them in two places anyway , as they are all here anyway
You never know when tueidj is going to falsely accuse them of stealing and get their project removed again. On that note, I find it hilarious that Joostinonline thought tueidj would take legal action against them. IIUC, they legally obtained the DSP code through reverse engineering and teuidj even admitted to this himself on gc-forever forums (too lazy to find the link again). AFAIK, tueidj hasn't provided any source code for the engine nor has it been leaked or shown to the Nintendont developers. Why they chose to create the project on Google Code again? I have no idea.
 
You never know when tueidj is going to falsely accuse them of stealing and get their project removed again. On that note, I find it hilarious that Joostinonline thought tueidj would take legal action against them. IIUC, they legally obtained the DSP code through reverse engineering and teuidj even admitted to this himself on gc-forever forums (too lazy to find the link again). Why they chose to create the project on Google Code again? I have no idea.


Well, you know him, he tends to have bouts of, well, anger. Methinks he's just jealous.
 
They implemented the DSP code using another means, and not borrowed code. Had you been following the pages, you would know full well that this time around, that has been resolved and doesn't need to be brought up again. They won't put it on Github, so what? The stolen code was removed and new code was implemented.
I didn't say he would report the project for the DSP code again. You never know when he's going to get in a bad mood, think their code is too similar too his, get jealous/annoyed and report the project again. Google doesn't appear to care and will just remove the project.

Also, you appear to of failed to understand my post or I yours because I clearly explained that they didn't copy the code.
 
I didn't say he would report the project for the DSP code again. You never know when he's going to get in a bad mood, think their code is too similar too his, get jealous/annoyed and report the project again. Google doesn't appear to care and will just remove the project.

Also, you appear to of failed to understand my post or I yours because I clearly explained that they didn't copy the code.


Well you know him, he does seem to have a bit of a short fuse, I hope he doesn't try to pull a fast one again. Google is pretty bad for removing something on dubious claims, same with YouTube videos.
 
So, can we obtain the code of Wii-Remote support by tueidj?


I wouldn't recommend it, we need to do it by legit means, that's what caused this BS in the first place, we did something that shouldn't have been done (lifting DSP code), hence the project was removed from Google Code. We don't want history to repeat itself. AFAIK, Bluetooth will be done eventually, we just need to be patient ;)
 
I didn't say he would report the project for the DSP code again. You never know when he's going to get in a bad mood, think their code is too similar too his, get jealous/annoyed and report the project again. Google doesn't appear to care and will just remove the project.

Also, you appear to of failed to understand my post or I yours because I clearly explained that they didn't copy the code.

As far as I know, it was never explained how the dsp codes were implemented, even if it wasn't a copy paste the truth remains that it was the same code devo used. All of that is in the past though, and whatever you think of tueidj (i don't know him and have never talked to him) i doubt him or anyone else in this forum would bring down a project without a reason.

and you might think it's funny to avoid legal actions that may have not been taken, but why would anyone choose to take the risk? It would be too troublesome a situation for something that's more like a hobby..

So, can we obtain the code of Wii-Remote support by tueidj?

Devo is closed source, you can't get anything from it.
 
I wouldn't recommend it, we need to do it by legit means, that's what caused this BS in the first place, we did something that shouldn't have been done (lifting DSP code), hence the project was removed from Google Code. We don't want history to repeat itself. AFAIK, Bluetooth will be done eventually, we just need to be patient ;)
but it could be release as Nintendont v1.47 Mod01 as example? is the unofficially way.

Devo is closed source, you can't get anything from it.
I think this is it...
Code:
/***** BEGIN WIIMOTE *****/
 
typedef struct wpad_driver
{
    input_driver driver;
    input_driver *next;
    struct wiimote_t** wiimotes;
    int wpad_initted;
    int wpad_connected;
    uint8_t wm_data[WPAD_MAX_WIIMOTES][64];
} wpad_driver;
 
static wpad_driver *_wpad;
 
static void wpad_shutdown(input_driver *driver)
{
    wpad_driver *wpad = (wpad_driver*)driver;
 
    if (wpad==NULL)
        return;
 
    if (wpad->wpad_initted)
    {
        WPAD_Shutdown();
        wpad->wpad_initted = 0;
    }
 
    if (wpad->next)
        wpad->next->shutdown(wpad->next);
 
    wpad->next = NULL;
}
 
static void wm_read_cb(struct wiimote_t *wm, ubyte *data, uword len)
{
    int i;
    if (len != 16 || _wpad==NULL || _wpad->wiimotes==NULL)
        return;
 
    for (i=0; i < WPAD_MAX_WIIMOTES; i++)
    {
        if (_wpad->wiimotes[i]==wm)
            break;
    }
 
    if (i==WPAD_MAX_WIIMOTES)
        return; // don't know which wiimote this is
}
 
static int wpad_poll(input_driver *driver, unsigned int *pressed)
{
    wpad_driver *wpad = (wpad_driver*)driver;
    int read = 0;
    const WPADData *wd;
 
    if (wpad && wpad->wpad_initted)
    {
        int i;
 
        // This stuff isn't used yet
        for (i=0; i < WPAD_MAX_WIIMOTES; i++)
        {
            if (wpad->wpad_connected & (1<<i) && WPAD_Probe(i, NULL)==WPAD_ERR_NO_CONTROLLER)
            {
//                printf("Wiimote %d disconnected\n", i);
                wpad->wpad_connected &= ~(1<<i);
            }
            else if ((wpad->wpad_connected & (1<<i))==0 && WPAD_Probe(i, NULL) == WPAD_ERR_NONE)
            {
//                printf("Wiimote %d connected (%p)\n", i, wpad->wm_data[i]);
                wpad->wpad_connected |= (1<<i);
//                wiiuse_read_data(wpad->wiimotes[i], wpad->wm_data[i], , sizeof(wpad->wm_data[0]), wm_read_cb);
            }
        }
 
        if (WPAD_ReadPending(WPAD_CHAN_0, NULL)>0 && (wd = WPAD_Data(WPAD_CHAN_0)) && (wd->data_present&WPAD_DATA_BUTTONS))
        {
            if (wd->btns_d & WPAD_BUTTON_DOWN)
                *pressed |= INPUT_BUTTON_DOWN;
            if (wd->btns_d & WPAD_BUTTON_UP)
                *pressed |= INPUT_BUTTON_UP;
            if (wd->btns_d & WPAD_BUTTON_LEFT)
                *pressed |= INPUT_BUTTON_LEFT;
            if (wd->btns_d & WPAD_BUTTON_RIGHT)
                *pressed |= INPUT_BUTTON_RIGHT;
            if (wd->btns_d & WPAD_BUTTON_A)
                *pressed |= INPUT_BUTTON_OK;
            if (wd->btns_d & WPAD_BUTTON_B)
                *pressed |= INPUT_BUTTON_CANCEL;
            if (wd->btns_d & WPAD_BUTTON_1)
                *pressed |= INPUT_BUTTON_1;
            if (wd->btns_d & WPAD_BUTTON_2)
                *pressed |= INPUT_BUTTON_2;
            if (wd->btns_d & WPAD_BUTTON_HOME)
                *pressed |= INPUT_BUTTON_START;
 
            if (wd->exp.type == WPAD_EXP_CLASSIC)
            {
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_DOWN)
                    *pressed |= INPUT_BUTTON_DOWN;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_UP)
                    *pressed |= INPUT_BUTTON_UP;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_LEFT)
                    *pressed |= INPUT_BUTTON_LEFT;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_RIGHT)
                    *pressed |= INPUT_BUTTON_RIGHT;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_B)
                    *pressed |= INPUT_BUTTON_OK;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_Y)
                    *pressed |= INPUT_BUTTON_CANCEL;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_X)
                    *pressed |= INPUT_BUTTON_1;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_A)
                    *pressed |= INPUT_BUTTON_2;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_HOME)
                    *pressed |= INPUT_BUTTON_START;
            }
 
            read = 1;
        }
    }
 
    if (wpad->next)
        read += wpad->next->poll(wpad->next, pressed);
 
    return read;
}
 
static input_driver* wpad_init(input_driver *in)
{
    wpad_driver *wpad = _wpad;
 
    if (wpad && wpad->wpad_initted)
        return in;
 
    if (wpad == NULL)
    {
        wpad = (wpad_driver*)malloc(sizeof(wpad_driver));
        if (wpad==NULL)
            return in;
        _wpad = wpad;
        // get wiimote_t array before WPAD_Init() calls wiiuse_init()
        wpad->wiimotes = wiiuse_init(WPAD_MAX_WIIMOTES, NULL);
        wpad->wpad_connected = 0;
    }
    else if (wpad->wpad_initted)
        return in;
 
 
    WPAD_Init();
    wpad->wpad_initted = 1;
 
    wpad->driver = wpad_interface;
    wpad->next = in;
 
    return &wpad->driver;
}
 
/***** END WIIMOTE *****/
I think i copied the wrong code as far.
 
but it could be release as Nintendont v1.47 Mod01 as example? is the unofficially way.


I think this is it...
Code:
/***** BEGIN WIIMOTE *****/
 
typedef struct wpad_driver
{
    input_driver driver;
    input_driver *next;
    struct wiimote_t** wiimotes;
    int wpad_initted;
    int wpad_connected;
    uint8_t wm_data[WPAD_MAX_WIIMOTES][64];
} wpad_driver;
 
static wpad_driver *_wpad;
 
static void wpad_shutdown(input_driver *driver)
{
    wpad_driver *wpad = (wpad_driver*)driver;
 
    if (wpad==NULL)
        return;
 
    if (wpad->wpad_initted)
    {
        WPAD_Shutdown();
        wpad->wpad_initted = 0;
    }
 
    if (wpad->next)
        wpad->next->shutdown(wpad->next);
 
    wpad->next = NULL;
}
 
static void wm_read_cb(struct wiimote_t *wm, ubyte *data, uword len)
{
    int i;
    if (len != 16 || _wpad==NULL || _wpad->wiimotes==NULL)
        return;
 
    for (i=0; i < WPAD_MAX_WIIMOTES; i++)
    {
        if (_wpad->wiimotes[i]==wm)
            break;
    }
 
    if (i==WPAD_MAX_WIIMOTES)
        return; // don't know which wiimote this is
}
 
static int wpad_poll(input_driver *driver, unsigned int *pressed)
{
    wpad_driver *wpad = (wpad_driver*)driver;
    int read = 0;
    const WPADData *wd;
 
    if (wpad && wpad->wpad_initted)
    {
        int i;
 
        // This stuff isn't used yet
        for (i=0; i < WPAD_MAX_WIIMOTES; i++)
        {
            if (wpad->wpad_connected & (1<<i) && WPAD_Probe(i, NULL)==WPAD_ERR_NO_CONTROLLER)
            {
//                printf("Wiimote %d disconnected\n", i);
                wpad->wpad_connected &= ~(1<<i);
            }
            else if ((wpad->wpad_connected & (1<<i))==0 && WPAD_Probe(i, NULL) == WPAD_ERR_NONE)
            {
//                printf("Wiimote %d connected (%p)\n", i, wpad->wm_data[i]);
                wpad->wpad_connected |= (1<<i);
//                wiiuse_read_data(wpad->wiimotes[i], wpad->wm_data[i], , sizeof(wpad->wm_data[0]), wm_read_cb);
            }
        }
 
        if (WPAD_ReadPending(WPAD_CHAN_0, NULL)>0 && (wd = WPAD_Data(WPAD_CHAN_0)) && (wd->data_present&WPAD_DATA_BUTTONS))
        {
            if (wd->btns_d & WPAD_BUTTON_DOWN)
                *pressed |= INPUT_BUTTON_DOWN;
            if (wd->btns_d & WPAD_BUTTON_UP)
                *pressed |= INPUT_BUTTON_UP;
            if (wd->btns_d & WPAD_BUTTON_LEFT)
                *pressed |= INPUT_BUTTON_LEFT;
            if (wd->btns_d & WPAD_BUTTON_RIGHT)
                *pressed |= INPUT_BUTTON_RIGHT;
            if (wd->btns_d & WPAD_BUTTON_A)
                *pressed |= INPUT_BUTTON_OK;
            if (wd->btns_d & WPAD_BUTTON_B)
                *pressed |= INPUT_BUTTON_CANCEL;
            if (wd->btns_d & WPAD_BUTTON_1)
                *pressed |= INPUT_BUTTON_1;
            if (wd->btns_d & WPAD_BUTTON_2)
                *pressed |= INPUT_BUTTON_2;
            if (wd->btns_d & WPAD_BUTTON_HOME)
                *pressed |= INPUT_BUTTON_START;
 
            if (wd->exp.type == WPAD_EXP_CLASSIC)
            {
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_DOWN)
                    *pressed |= INPUT_BUTTON_DOWN;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_UP)
                    *pressed |= INPUT_BUTTON_UP;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_LEFT)
                    *pressed |= INPUT_BUTTON_LEFT;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_RIGHT)
                    *pressed |= INPUT_BUTTON_RIGHT;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_B)
                    *pressed |= INPUT_BUTTON_OK;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_Y)
                    *pressed |= INPUT_BUTTON_CANCEL;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_X)
                    *pressed |= INPUT_BUTTON_1;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_A)
                    *pressed |= INPUT_BUTTON_2;
                if (wd->btns_d & WPAD_CLASSIC_BUTTON_HOME)
                    *pressed |= INPUT_BUTTON_START;
            }
 
            read = 1;
        }
    }
 
    if (wpad->next)
        read += wpad->next->poll(wpad->next, pressed);
 
    return read;
}
 
static input_driver* wpad_init(input_driver *in)
{
    wpad_driver *wpad = _wpad;
 
    if (wpad && wpad->wpad_initted)
        return in;
 
    if (wpad == NULL)
    {
        wpad = (wpad_driver*)malloc(sizeof(wpad_driver));
        if (wpad==NULL)
            return in;
        _wpad = wpad;
        // get wiimote_t array before WPAD_Init() calls wiiuse_init()
        wpad->wiimotes = wiiuse_init(WPAD_MAX_WIIMOTES, NULL);
        wpad->wpad_connected = 0;
    }
    else if (wpad->wpad_initted)
        return in;
 
 
    WPAD_Init();
    wpad->wpad_initted = 1;
 
    wpad->driver = wpad_interface;
    wpad->next = in;
 
    return &wpad->driver;
}
 
/***** END WIIMOTE *****/
I think i copied the wrong code as far.


Dude, just don't effing do this. This is how things went to shit with the old Google Code. It'll be done when it's done. If the Google Page gets removed from his BS claim, don't come crying to us. I suggest this be stopped and removed ASAP, we don't need anymore trouble from Tueidj, he's given the team enough hell as it is. Unless you get permission from him, no, just no. PLEASE.

It is REALLY that hard to wait for the team to add it legitimately? Let the devs do it on their own without stealing code, that's just bad karma.
 
  • Like
Reactions: JnL_SSBM and NEP
Dude, just don't effing do this. This is how things went to shit with the old Google Code. It'll be done when it's done. If the Google Page gets removed from his BS claim, don't come crying to us.
I know, i'm just sayin' that could be released as Unofficial mod here on this post; on filetrip, mega, firedrive, depositfiles, or other download page. (no google code, no official revision) as the other mods made by Cyan
or i think that's still being a bad idea.. forget it. you're right..
 


We've already discussed this, we really don't need to mention the fiasco again, yeah? We don't need to upset him again ;)


I know, i'm just sayin' that could be released as Unofficial mod here on this post. (no google code, no official revision) as the other mods made by Cyan

or i think that's still being a bad idea.. forget it. you're right..

I'm just saying it's a bad idea, we would upset him again, that's all. He would find out about the mod sooner or later. We just need to wait for it to happen legitimately.
 
  • Like
Reactions: NEP
We've already discussed this, we don't need to mention the fiasco again, this is derailment. We get it, he was uppity about this, we should move on and not dig it up.
I was posting that in reply to faku1810. I didn't mean to derail, just pisses me off a bit that everyone thinks it was a straight copy 'n paste illegal thing which is impossible.
 
  • Like
Reactions: JnL_SSBM
I was posting that in reply to faku1810. I didn't mean to derail, just pisses me off a bit that everyone thinks it was a straight copy 'n paste illegal thing which is impossible.


It's fine, the whole thing was just a sore spot is all. I don't want that kind of thing to happen again, since Nintendont has so much potential :P
 
I know, i'm just sayin' that could be released as Unofficial mod here on this post; on filetrip, mega, firedrive, depositfiles, or other download page. (no google code, no official revision) as the other mods made by Cyan
or i think that's still being a bad idea.. forget it. you're right..

Yeah, and you'd get a ban from the forum for doing something like that. If not worse, leave it be. don't look at devo, don't breath on it, nintendont devs are good enough to get things working on their own, just give them time.

I was posting that in reply to faku1810. I didn't mean to derail, just pisses me off a bit that everyone thinks it was a straight copy 'n paste illegal thing which is impossible.

I know it wasn't a straight copy/paste (read my post again) as I know Devo is closed source, and I had read what tueidj said in gc-forever.. Honestly, I think he's right, does it matter HOW you get the code if it's identical to the one in his project? I'd get pissed off in his place too, but it's okay, I admit my knowledge about legality/illegality in these things is close to nil.

Just like the_randomizer, I think this is all in the past already and there's no need to argue about it. The devs were smart enough to find a way to get sound to work with their own method and that's even better in my opinion, comes to show how good they really are.
 
  • Like
Reactions: felipecabralf
Yeah, and you'd get a ban from the forum for doing something like that. If not worse, leave it be. don't look at devo, don't breath on it, nintendont devs are good enough to get things working on their own, just give them time.
That's true. Better safe than sorry..
 
two pages of useless banter , when any person could easily just post the controller.ini files here with mirrors to mediafire/mega/filetrip/uploadto/whereverthefuk if they were really worried about loosing the progress
 
two pages of useless banter , when any person could easily just post the controller.ini files here with mirrors to mediafire/mega/filetrip/uploadto/whereverthefuk if they were really worried about loosing the progress
I'd assume it's easier for them to maintain a github repository because they can easily track upstream and add user made configs. In case the project is removed again you still have easy access to the configs. Uploading to a file host would just be a PITA to maintain.

IMO, it wasn't useless. Everyone seems to think that what the developers did was horribly wrong, illegal and basically a copy & paste.

A lot of time goes into reverse engineering and most of the time it takes less time to implement something yourself than go through the process of reverse engineering. However, for something like this it's usually justified.
NVIDIA and AMD have teams dedicated to reverse engineering each others hardware and drivers. Most open-source hardware drivers are made through reverse engineering the original/Windows version. It's not uncommon for competing software products to reverse engineer the others either.
 

Site & Scene News

Popular threads in this forum