simias / rustation

Playstation emulator in the Rust programing language
Other
552 stars 21 forks source link

Is there any way to recognize when a game needs to change cd? #19

Open i30817 opened 8 years ago

i30817 commented 8 years ago

I already tried to ask about this on other emulators and the response i generally got was negative, that the games didn't actually have a bios command for cd change or waiting for new cd, so i don't expect anything different just confirmation.

I was hoping of it being used to auto change cds on games with more than one. Originally i though the psx had a sensible design of a bios barrier function waiting for the game ID and only when the cd was ready verify it and then the dev could read files - the emulator could intercept the game id then load the appropriate cd - then i lowered my expectations and asked if it had any call for 'expect cd change' (as a hint to put in CD++ ).

But as said, this issue is just to ask confirmation that this 'auto'/no user intervention cd changing is impossible.

simias commented 8 years ago

I'm not sure. Maybe you could look at how various games handle CD changes? Which CD-ROM command sequence they use in particular. Maybe there's a pattern that could be detected.

But even then it's not foolproof, imagine a game like Final Fantasy VIII with four discs, you insert disc III and select new game, you're supposed to insert disc 1 but there's no way to know that (unless you're willing to use game-specific hacks to recover this information).

i30817 commented 8 years ago

Sure sure, there would have to be a short circuit after one try in the case that cd product code is not used.

i30817 commented 8 years ago

Another, maybe much simpler possibility is a dedicated key or key combination to change/cycle cds.

For example start + select + (L1 or L2) or something like that.

simias commented 8 years ago

Is this such a common occurence that a dedicated shortcut is needed? I thought you would simply select a new image in a menu or something.

At any rate, that's just a UI issue.