Ask anything your want about Mega/SegaCD programming.
Moderator: Mask of Destiny
-
Eke
- Very interested
- Posts: 885
- Joined: Wed Feb 28, 2007 2:57 pm
-
Contact:
Post
by Eke » Sun Feb 27, 2022 8:59 am
TascoDLX wrote: ↑Sun Mar 07, 2021 3:31 am
Fuuuuuu... the bugs in that Radical Rex code, and that just in the initial loading routine. Really surprised it runs in any emulator at all. Seems like a frickin' miracle!
I know this thread is getting old (and its original author is no more among us sadly) but I recently looked again into this game and figured it might be some interest since you have been actively improving Mega-CD emulation in Ares.
I actually noticed an address error was occurring when the intro starts (I didn't noticed before as I had address error detection disabled in the sub CPU until very recently). I don't think it occurs on real hardware as it results in the sub-cpu program being resetted and game crashing but it might be related to the same issue that makes the sprites list being uninitialized (it seems to be caused by wrong or uninitialized offset value read from prg-ram but I couldn't backtrace much further).
I also noticed a write access to protected prg-ram but it seems to be a bug in original game as it occurs when reading then writing back some Mega-CD registers during initialization and the write is prevented by the write-protection mechanism.
-
TascoDLX
- Very interested
- Posts: 262
- Joined: Tue Feb 06, 2007 8:18 pm
Post
by TascoDLX » Mon Feb 28, 2022 7:50 am
Thanks for the intel, Eke! I will eventually circle back around to this issue, once I'm done clearing up some other stuff. I have only limited time to spend on emudev stuff and this particular issue went a bit deep, but it's definitely on the list.
-
Eke
- Very interested
- Posts: 885
- Joined: Wed Feb 28, 2007 2:57 pm
-
Contact:
Post
by Eke » Sat Apr 20, 2024 7:01 pm
FYI, this long standing issue was finally fixed thanks to the help of irixxxx (developer of a Picodrive fork) who successfuly debuggued the root cause and found the solution : a delay is needed when receiving a CD read command while reading is already in progress to allow at least one additional sector to be read (and decoded) by CDC before seeking to the new sector. More details in the last messages of the original issue report:
https://github.com/ekeeke/Genesis-Plus-GX/issues/290