cristian64 / mkdd-extender

A tool for extending Mario Kart: Double Dash!! with extra courses.
GNU General Public License v3.0
18 stars 4 forks source link

Going on "Records" after extending sometimes crashes #9

Open Miepee opened 1 year ago

Miepee commented 1 year ago

Not sure what causes it, there isn't any crash message from dolphin afaik, it just does the "beeeep" and black screen.

cristian64 commented 1 year ago

My guess is that some of the game instructions in memory have been inadvertently overridden by the injected code that make the button combination possible. When the game tries to execute that overridden code path, the crash occurs.

The fix for this is not clear, but being able to reproduce this crash would be necessary to verify a potential fix in the future.

So, some questions would be:

Miepee commented 1 year ago
  1. All of these:
    'Daisy Circuit v1.0.zip'               'lanayru mining facility.zip'  'pianta village v1.2.zip'
    DKSummit.zip                           mariocircuit1.zip              Royal64_V1_1.zip
    'DS Desert Hills V.1.zip'              'Moonview Highway v1.2.zip'    'Shroom Ridge 1.0.zip'
    'DS Mario circuit V.1.zip'             'N64 Choco Mountain 1.0.zip'    ShyGuyGBA_v1_1_DBCherry_Riidefi.zip
    'DS - Peach Gardens.zip'                N64_Frappe_Snowland_v1.0.zip   SNES-Mario-Circuit-3-v1.1a.zip
    "funky kong's hideaway.zip"             N64_Kalimari_Desert_v1.0.zip  'SNES Rainbow Road 2.0.zip'
    'FZGPL White Land Flower II v1.0.zip'  'N64 Mario Raceway v1.0.zip'    toads-turnpike-v1.2.zip
    GBA_Luigi_Circuit_v1.0.zip             old_choco_sfc.zip             'WII DS Delfino Square v1.1.zip'
    GBA_Riverside_Park_v1.0.zip           'peach circuit.zip'             Wii-Luigi-Circuit-v1.0.zip
    GBA-Sky-Garden-v1.3.zip               'pianta parlor.zip'            'wii rainbow road.zip'

    all of them are available on the mkdd ct wiki. The order is the following:

    
    #DPAD RIGHT:
    (all vanilla)

DPAD LEFT:

(all empty / DS Test Circuit)

DPAD UP:

Mushroom

Flower

Star

Special

DPAD DOWN

Mushroom

Flower

Star

Special

  1. Happened with both no options, as well as --sample-rate=2400 --use-auxiliary-audio-track

  2. Cheats were disabled

  3. Can't really clarify this. I know it only happened after I played a little bit of some cups at varying ccm's with a german locale. I can't remember though which cups i played at which ccm's in which order. I just tried replicating it by playing DOWN 100CCM Flower, but couldn't actually manage to repro the crash this way.

cristian64 commented 1 year ago

(I'll assume you meant 24000 Hz, as otherwise 2400 Hz is incredibly low.)

Thanks for the detailed description. My current hypothesis is that memory fragmentation eventually makes the game run out of memory. So, when it needs to load something new (e.g. the RECORDS screen), it crashes.

I'll try to reproduce this at some point, but I can't imagine there is much I can do to address it.

...except superseding the injected Gecko codes with injected functions written directly in C/assembly, which I am planning to do eventually for adding support for arbitrary number of pages.

I guess we can retest this then.

Miepee commented 1 year ago

(I'll assume you meant 24000 Hz, as otherwise 2400 Hz is incredibly low.)

Correct, accidentally had a typo there.

Miepee commented 1 year ago

Slightly offtopic but

to do eventually for adding support for arbitrary number of pages

How do you plan to move between the different ones? How it's done in most MKW modpacks right now, where one can just scroll infinitely to the right/left?

cristian64 commented 1 year ago

How do you plan to move between the different ones? How it's done in most MKW modpacks right now, where one can just scroll infinitely to the right/left?

I haven't really seen how it is done in Mario Kart Wii. In this case, it wouldn't be an infinite scroll, but rather the same approach that is currently followed.

At the moment, pressing a key combination (Z + D-pad <direction>) triggers the page change, using the four directions to choose between four different pages, which is pretty limiting. The idea would be to use only two directions (up and down), and then cycle through the pages, which would no longer be limited by the controls.

Miepee commented 1 year ago

I see. Since GCN has the combined cup, where mushroom+flower+star+special are all played in random order, this probably makes more sense.

If you go for that, may i request to drop the Z input, and make it cycle via analog stick up/down? AFAIK they currently don't do anything in the cup (not track) selection.

cristian64 commented 1 year ago

If you go for that, may i request to drop the Z input, and make it cycle via analog stick up/down? AFAIK they currently don't do anything in the cup (not track) selection.

Even if it is possible to determine whether the user is currently selecting cup, or track, I find it convenient that course pages can be changed while selecting tracks. I was thinking of sticking with the D-pad, but we'll see it. The Z button will be hopefully dropped.

cristian64 commented 1 year ago

Hopefully this has been addressed by b6602f47304c4c1be3e917cd964d543eb7a4200f (although I am still to give a good test).

Miepee commented 1 year ago

Thanks, my testing will sadly have to wait a few weeks though. Is there any reason why the legacy method is still implemented? I assume it's there to find out whether the new method has any bugs/regressions?

cristian64 commented 1 year ago

I think the legacy implementation can stay for one or two releases more, in case there are any unforeseen problems with the new approach. Once users confirm things work as expected (also on GameCube and Wii), the Gecko codes can be removed.