Skip to content

Comments

Added option to force ARM9 67MHz Clock Speed in DSi mode#157

Merged
Gericom merged 7 commits intoGericom:developfrom
Dartz150:feature/force-DS-clock-speed
May 18, 2025
Merged

Added option to force ARM9 67MHz Clock Speed in DSi mode#157
Gericom merged 7 commits intoGericom:developfrom
Dartz150:feature/force-DS-clock-speed

Conversation

@Dartz150
Copy link
Contributor

@Dartz150 Dartz150 commented Apr 24, 2024

This is based on Gericom´s previous implementation in other project.

Fixes issues in these games:

BJXE - Harry Potter and the Order of the Phoenix (USA,EUR)
BWWE - WWE - Survivor Series (USA,EUR) - Fixes running too fast
AH3E - Hamtaro - Ham-Ham Heartbreak (USA) - Fixes hanging in the title screen
AH3P - Hamtaro - Ham-Ham Heartbreak (Europe) (En,Fr,De,Es,It) - Fixes hanging in the title screen
AMVJ - Magical Vacation (JAP) - Fixes hanging in the title screen
BAVE - Activision Anthology (USA) - Fixes sound issues
A9ME - Moto Racer Advance (USA) - Fixes running too fast
A9MP - Moto Racer Advance (EUR) - Fixes running too fast
ABZE - NFL Blitz 20-02 (USA,EUR) - Fixes running too fast

This setting can be used later if more issues related to clock speeds are found.

Json setting example:

{
    "runSettings": {
        "forceDSModeArm9Clock": true
    }
}

Tested in both DSi and 3DS consoles, in both SD card and DSpico in DSi mode.

This fixes #120, #110, #81 and #63

Fixes issues in these games:

BJXE - Harry Potter and the Order of the Phoenix (USA,EUR)
BWWE - WWE - Survivor Series (USA,EUR)
AH3E - Hamtaro - Ham-Ham Heartbreak (USA)
AH3P - Hamtaro - Ham-Ham Heartbreak (Europe) (En,Fr,De,Es,It)
AMVJ - Magical Vacation (JAP)
BAVE - Activision Anthology (USA)
A9ME - Moto Racer Advance (USA)
A9MP - Moto Racer Advance (EUR)
ABZE - NFL Blitz 20-02 (USA,EUR)
@cotodevel
Copy link

cotodevel commented Jun 12, 2024

I kinda had the same issue when porting TGDS-multimediaplayer from NTR mode to TWL mode. Turns out the bios calls in DKARM are NTR mode-only (r45), thus when the games are calling them internally through GBA mode, they don't act properly in TWL mode (they'll run twice as fast).

As a workaround I made TGDS homebrew timing consistent, thus, I could use the default BIOS @ 0xFFFF0000 and it'd magically work for both NTR/TWL modes, sounds, interrupts overall worked incredibly well.

Thus:

  1. Reverse engineer what NTR bios does, and apply these fixes in custom BIOS @0x00000000 vectors
  2. Reverse engineer what TWL bios does, and apply these fixes in custom BIOS @0x00000000 vectors
  3. detect TWL mode and use each one accordingly. Pretty sure it'll fix plenty of timing issues.

As for M&L: SS, the issue is cache regions in DS mode in GBA IO segments where caches should be disabled.

--

Edit: Apr 8 2025
Turns out the "wait for interrupt" bios calls in TWL mode are botched at the BIOS (0xFFFF0000) level. This commit provides a neat fix which will, for instance, fix Dual 3D on TWL mode/hardware as well TWL mode BIOS

@Gericom Gericom merged commit 0d11ce9 into Gericom:develop May 18, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Game] Motoracer Advance - EUR version of the game plays very fast

3 participants