Dirbaio |
Posted on 06-02-13, 01:44 am (rev. 1 by Dirbaio on 06-02-13, 01:45 am)
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3356/4458 Since: 06-08-11 |
Yeah...
It crashes because the OS_Panic() call at loadOverlay() (see LR adress) It is trying to load overlay 28 (see R10). Overlay 28 is sprite set 1-7, which I assume you've choosen in your level... And it can't load it because there's another overlay in that address... And there's no way to know which by looking at the registers in the exact moment OS_Panic() is called. I guess it's another sprite set overlay that's being force-loaded by the MvsL code. Could you get the crash again, then open the RAM viewer by pressing Start (or Select, I don't remember), then go to the address 02085D0C using the arrow keys, then take a pic? (Only top screen is needed) Thanks! Also if you're wondering how I get all that info, it's by looking at the NSMB IDB. If the crash is caused by a call to OS_Panic(), LR contains the address that called it. Otherwise it's PC. And then you look that address up, and have a look at what register is what. I maybe should make a tutorial on how to do it. |
RicBent |
Posted on 06-02-13, 07:56 am (rev. 2 by RicBent on 06-02-13, 08:30 am)
|
Mariomaster
Karma: 8573 Posts: 257/1681 Since: 06-09-12 |
Dirbaio |
Posted on 06-02-13, 03:09 pm (rev. 2 by Dirbaio on 06-02-13, 03:14 pm)
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3357/4458 Since: 06-08-11 |
Yup, that's what I thought :|
See the second line. Overlay 22 (0x16) is loaded. And it can't be loaded at the same time than overlay 28. Merp. I think the used sprite sets in MvsL mode is hardcoded somewhere :| And it's not in the IDB because it's in another overlay... EDIT: Put this code in: repl_02009568: cmp r0, #22 ADDEQ SP, SP, #0x4C LDMEQFD SP!, {R4-R11,PC} MOV R9, #0 bx lr What it does is ignore the request to load overlay 22 (Similar to what we did in Coop experiment: Getting 1-1 into multiplayer). So now the other overlay will load. But it's still a temporary ugly hack. It will disable overlay 22 to be used from anywhere. |
RicBent |
Posted on 06-03-13, 02:16 pm (rev. 3 by RicBent on 06-03-13, 02:33 pm)
|
Mariomaster
Karma: 8573 Posts: 260/1681 Since: 06-09-12 |
Yea it worked !
But let me explain what happens during the Bowser Jr. Fight: At first the Fight is like in Singleplayer, but Jr. is chasing BOTH players. But when you defeat him Mario says the same thing as in Singleplayer and Mario & Luigi stand still and get diconected it looks like they were waiting for Jr. to jump out of the arena. When you try to walk it is only shown on the other DS. You aren't able to get back to the Level-Select-Screen. Sine Bowser Jr. chases both players he seems to be programmed for Multiplayer. I'll try the Mega-Goomba today (or tomorrow if I havn't enough time) EDIT: Nope: Mega-Goomba isn't working (Maybe another Overlay bug?) _________________________ GitHub - Kuribo64 - YouTube |
Dirbaio |
Posted on 06-03-13, 03:06 pm
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3364/4458 Since: 06-08-11 |
Post the crash screen and the ram viewer at the same address than before. We can maybe get it working.
But I think it will be hard, because bosses need the particle effects which are only loaded in their levels, its hardcoded. We'll probably have to fix that. |
RicBent |
Posted on 06-03-13, 03:08 pm (rev. 1 by RicBent on 06-03-13, 03:17 pm)
|
Mariomaster
Karma: 8573 Posts: 261/1681 Since: 06-09-12 |
Dirbaio |
Posted on 06-03-13, 03:15 pm
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3365/4458 Since: 06-08-11 |
Ohhhh, so the boss fight itself works?
Its weird, considering that in single player putting a boss in another level other than its original makes the game crash. Wtf |
Hiccup |
Posted on 06-03-13, 03:17 pm
|
Birdo
Karma: 2789 Posts: 564/2091 Since: 06-26-11 |
Try activating the boss without the boss activator, which might help with the de-syncing.
Could you also post a video. |
RicBent |
Posted on 06-03-13, 03:18 pm (rev. 3 by RicBent on 06-03-13, 03:25 pm)
|
Mariomaster
Karma: 8573 Posts: 262/1681 Since: 06-09-12 |
Dirbaio |
Posted on 06-03-13, 05:57 pm
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3368/4458 Since: 06-08-11 |
Yay. Now the troublecauser is Overlay 20
So here's the code that forbids both overlay 20 and 22. repl_02009568: cmp r0, #22 cmpne r0, #20 ADDEQ SP, SP, #0x4C LDMEQFD SP!, {R4-R11,PC} MOV R9, #0 bx lr If it still fails, try putting in the code from Coop experiment: Getting 1-1 into multiplayer: repl_02009568: cmp r0, #22 cmpne r0, #20 ADDEQ SP, SP, #0x4C LDMEQFD SP!, {R4-R11,PC} MOV R9, #0 bx lr repl_020AF9EC: mov R0, #0 repl_020B39C8: repl_0209C4E0: repl_02020738: repl_020AE018: repl_020AE070: repl_020AE184: repl_020AE1B8: repl_020B39C8: repl_020B3A80: repl_020B3C4C: bx lr It may or may not help. We'll see |
RicBent |
Posted on 06-03-13, 07:28 pm (rev. 1 by RicBent on 06-03-13, 07:31 pm)
|
Mariomaster
Karma: 8573 Posts: 263/1681 Since: 06-09-12 |
Dirbaio |
Posted on 06-03-13, 07:36 pm
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3370/4458 Since: 06-08-11 |
Yup
The cool thing would be to be able to add true coop gameplay to the game. That would mean fixing all the sprites that are broken due to lack of multiplayer support though :| But yeah, we're on the right track |
RicBent |
Posted on 06-03-13, 07:53 pm
|
Mariomaster
Karma: 8573 Posts: 264/1681 Since: 06-09-12 |
Shadey |
Posted on 06-03-13, 10:05 pm
|
Flurry
Karma: 724 Posts: 189/258 Since: 10-14-11 |
Once a couple of sprites are working, the next thing that needs to be tested is loading the over-world.
Is that as straight forward as disabling a couple of overlays or is it far more complex? I'd say it would be far more complex. |
Dirbaio |
Posted on 06-03-13, 10:12 pm
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3371/4458 Since: 06-08-11 |
I think that will be far more complex. Or maybe not. I have no idea.
I guess it could be tested out. I can make a hack that puts you in the overworld when pressing Select, and try to enter it while from MvsL mode. But I see nothing but crashes and more crashes coming :| |
Arisotura |
Posted on 06-03-13, 11:06 pm
|
☭ coffee and cream
Karma: 10543 Posts: 960/2781 Since: 06-26-11 |
RicBent |
Posted on 06-04-13, 01:53 pm (rev. 1 by RicBent on 06-04-13, 01:54 pm)
|
Mariomaster
Karma: 8573 Posts: 265/1681 Since: 06-09-12 |
Shadey |
Posted on 06-04-13, 03:24 pm
|
Flurry
Karma: 724 Posts: 190/258 Since: 10-14-11 |
RicBent could you post a video of the working Bowser Jr fight?
|
RicBent |
Posted on 06-04-13, 03:29 pm (rev. 5 by RicBent on 06-06-13, 02:10 pm)
|
Mariomaster
Karma: 8573 Posts: 267/1681 Since: 06-09-12 |
Yea Shadey! Wait a little bit please
EDIT: When the Overlay 20 isn't loaded all MvsL-Levels will crash! So is there an other way to get the Mega-Goomba to work? EDIT 2: Found another wiered bug: When you press <Sart> and then <Quit> the game will crash! EDIT 3: _________________________ GitHub - Kuribo64 - YouTube |
Dirbaio |
Posted on 06-06-13, 06:33 pm
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3380/4458 Since: 06-08-11 |
LOL of course it crashes when disabling Overlay 20! It's the overlay for sprite set 16-9, which is the one that contains the VS Battle Starts. The game tries to spawn battle stars and crashes.
So we can't get both battle stars AND bosses to work on MvsL, lol. If you remove all the battle stars, it'll maybe work. About the crash on exiting, that's pretty obvious too. It's trying to unload some overlays that aren't laoded because we hacked it not to load them :| With the new IDA Pro DB we can look at the code for all overlays, and I found the code that loads these hardcoded overlays. So now it's easier to remove it and will cause less crashes. I'll try to put together the code sometime later next week. I'm really busy with finals now :| |