dolphin-emu/dolphin — pull request #1517 by JosJuice (2014-11-08 19:14:47+00:00)
Title: CAV disc drive

This is my first time writing C++, so apologies if there's something wrong with the code.

This changes the read speed of GC discs from 3 MiB/s to 2-3.3 MiB/s, depending on the location of the data. This should affect all GC games, but it is of particular interest to Metroid Prime speedrunners, who want to have loading times that are comparable to ones on consoles. There hasn't been any rigorous testing of loading times with this code, but it does seem to be more accurate than the previous code: http://tasvideos.org/forum/viewtopic.php?p=391904#391904

I also attempted to change the speeds for Wii discs, but it has very little effect right now because Wii games use IPC_HLE instead of DVDInterface. It does affect Wii homebrew that reads Wii discs, though. This problem is too big for me to do anything about now. One possible approach for fixing it is to make IPC_HLE use DVDInterface (more similar to how it's done on a console), and another possible approach is to refactor the timing code to something that both DVDInterface and IPC_HLE can call (less indirection).