Views: 367,858 Homepage | Main | Rules/FAQ | Memberlist | Active users | Last posts | Calendar | Stats | Online users | Search 03-20-19 05:57 AM
Guest:

0 users reading Timing test cases | 1 bot

Main - Development - Timing test cases New reply


Arisotura
Posted on 03-30-17 07:34 AM (rev. 9 of 01-19-19 07:23 PM) Link | #15
I'm keeping a list here so we know what may break when altering timings, and can test extensively.


* Aging cart (test ROM)

The ARM9 clears memory at the same time as the ARM7 relocates its binary. Get the timing wrong and the ARM7 binary is erased before having been relocated, resulting in the ROM not booting.


* FF3 intro FMV

Cause unknown, but it is timing-sensitive.

actually seems to just require some form of cart read delay


* Golden Sun: Dark Dawn

bad memory timings result in distorted characters?? the bug disappeared in 0.7 before we touched any timings, tho


* Rayman DS

bad memory timings result in all sorts of weird effects (esp kDataCacheFetch or whatever it was)


* Super Mario 64 DS

very bad timings cause the character to be randomly teleported
also, something is up with the Nintendo screen at the start (takes a lot of CPU, but messing with memory timings changes that)


* Who wants to be a millionaire

FMVs flicker if the FMV decoder and/or DMA take too long


* Burnout Legends

weird slowdown-compensation thing. seems to be based on GX timings.


* Spellbound

The ?'s on the menu. It sends display lists via DMA but doesn't wait for them to complete before doing other things with the GX. GX must be fast enough that the FIFO is always less than empty by the time a DMA transfer ends.


* Colour Cross

dual-screen 3D shits itself when not running the GX often enough.


* Mario & Sonic at the Olympic Games

dual-screen 3D render shits itself big time if it's running way too fast. running too fast causes some 3D sprites to flicker. old GX bugs.


* Over the Hedge - Hammy Goes Nuts!

bad timings (running too fast) causes intro sounds to be garbage. fixed in melonDS by setting kDataCacheTiming to 4 or more.

except kDataCacheTiming needs to be 3 or less for Millionaire's FMVs.

cause unknown. also affects NO$GBA.




affected by 0.7.1 timing renovation:

* NSMB world map cannons (non-USA ROMs)
* Pokémon Platinum sprites
those issues were unrelated to timings and uncovered a bug in how we handled the GXSTAT busy flag

* Etrian Odyssey
game waits ~400 cycles after VBlank (subs/bcs loop that runs 200 times)
then checks GXSTAT to see if it's still busy. if it is, it gives up
otherwise it does all the handling to swap screens etc

____________________
Kuribo64

extherian
Posted on 11-30-18 03:07 PM Link | #770
Now that GX timings are finished, how is progress on CPU/memory timings going? DeSmuME can run many of these games properly as long as the JIT block size is no greater than 12, but I have no idea if it's really accurate or not.

Arisotura
Posted on 11-30-18 03:20 PM Link | #773
still brainstorming how to do it without killing performance, but I think I have ideas

____________________
Kuribo64

extherian
Posted on 11-30-18 06:12 PM Link | #775
Might a cached interpreter help? Dolphin and PPSSPP have this option for platforms that don't support dynarecs.

Arisotura
Posted on 12-12-18 07:13 AM Link | #797
might help, but I'd have to try it someday

there's already a related optimization in place tho, and it helps a little

____________________
Kuribo64


Main - Development - Timing test cases New reply

Page rendered in 0.015 seconds. (2048KB of memory used)
MySQL - queries: 29, rows: 84/84, time: 0.010 seconds.
[powered by Acmlm] Acmlmboard 2.064 (2018-07-20)
© 2005-2008 Acmlm, Xkeeper, blackhole89 et al.