EDIT 2013/09/23: v1.12 released: http://psx-scene.com/forums/f19/pico...ml#post1087575 (PicoDrive for the PlayStation 2 (port))
EDIT 2013/09/22: v1.11 released.
EDIT 2013/09/21: v1.10 released.
EDIT 2013/09/14: v1.00 released.
This is a port of PicoDrive v1.51b for the PlayStation 2 console. Although another Megadrive emulator called PGEN does exist, I never remembered that it was able to run games like Sonic 3 at full 60 FPS.
I figured that anything good enough for the PSP would be also good enough for the PlayStation 2... especially since its EE (The "main" CPU) is a 64-bit MIPS with some 128-bit instructions. And so I ported PicoDrive v1.51b over from the PSP to the PlayStation 2.
Why port v1.51b? Why not the new v1.85 which was released recently long ago by Notaz himself? It's because the PSP port within it appears to be dysfunctional and outdated. I wanted to have something that already works to work on, so that I would have a higher chance to succeed at porting. Even if the port was successfully made without the missing assembly stub (The C alternative could be used instead), it won't be as fast as a fully working copy of v1.51b.
What can I expect from this port?
- The basic functionality from PicoDrive v1.51b in general (game compatibility rates, SEGA Megadrive and MegaCD support etc.)
- Two-player support (Multitaps are not supported).
- Support for the HDD unit, USB mass storage devices and the memory card.
- Hardware bilinear filtering support.
- Support for the L3 and R3 buttons, as well as the analog sticks (Press the MODE button to enable/disable this functionality).
- Support for the NTSC, PAL, 480P and 240P video modes.
- The progressive scanning option will not be saved. This is a deliberate limitation, since the PlayStation 2 has no built-in recovery mode in the event that the user enables progressive scanning but the connected display does not support progressive scanning (The Sony TRC forbids game developers from storing the HD mode settings too).
- The screen in progressive scanning mode (480P) seems to be cut off at the sides on my TV... but I'm not sure why (hence I can't fix it).
- The emulator must be placed in either a memory card, a USB mass storage device or the HDD unit, for saving to work.
- For the skin to be loaded properly, the emulator must be stored on a memory card or the HDD unit. The USB drivers may take a while to detect the USB device, and hence the USB device cannot be accessed during the emulator's startup process.
- Due to #5, the emulator's required folders may not be created when the emulator is started up. If they don't exist, the emulator will be unable to save. A workaround would be to manually create the "brm", "cfg", "mds" and "srm" folders within the folder that the emulator is stored in.
- Due to #5 and #4, the emulator's configuration may not be loaded at startup if the device cannot be accessed.
Anything under "Future enhancements" isn't going to be done by me for v1.51b because I feel that it's not going to be productive for me at this moment. I hope that somebody will pick up this project though, since this may be one of my last projects for 2013. It's also been really time consuming, since I take about a week at least, for each one of these projects.
- Port PicoDrive v1.85 over, although the assembly memory module stubs need to be written from scratch.
- Connect with Notaz and get the PlayStation 2 port of v1.85 integrated with his repository (So that it'll automatically receive updates whenever PicoDrive gets updated).
- Probably fix up the text colour code within menu.c. It currently works because the default colours are black (for the background) and white (for the text). The alpha bit (Bit 15) is set accordingly because black is 0x0000 (transparent) and white is 0xFFFF (Opaque). Since they are at the extreme ends of the colour values, the fact that the GS doesn't use R5G6B5 (It uses A1B5G5R5, where A1 at 1 = opaque) isn't apparent.
- Optimize the assembly stubs (and certain parts of the platform code) for the EE's 64-bit architecture (and take advantage of its 128-bit instructions too).
Prerequisites for compiling the PlayStation 2 port's source code (Please use their latest available versions!):
- libmad and its dependencies.
- libpng and its dependencies.
- gsKit and its dependencies.
- The homebrew PS2SDK.
Note: Do NOT give game compatibility reports because this is based on an obsolete version of PicoDrive, and I am the wrong person to ask to get games working anyway (I have very little knowledge on how these SEGA consoles work).
PicoDrive for the Playstation 2 project homepage: - PicoDrive (PlayStation 2 port) support page -