Yay! ZarPSX has been released!
Grab ZarPSX v0.01 at:http://www.friggingames.com/zarpsx.zip
So, I named the emu ZarPSX. It's a working title. It's ZarPSX and not ZaurPSX since I have a tendancy to prefix things with a 3 letter name. Any suggestions for a final name?
Stuff that works in ZarPSX so far:
- A few games. I'm playing R-Types right now. Most games have graphical glitches or run slow in 640x480 mode. Let me know if you get a game working well. My guess is games like Bust A Move 4 and Buster Bros, will run well. Vandal Hearts runs pretty well but with a graphical glitch at the top of the screen. Compatibility list anyone?
- Saving/Loading from memory cards should work.
- BIN/Z/ZNX ISO support. I use XDuplicator (CDRTAO open source project frontend) for ripping to raw BIN format, then compress to Z or ZNX with PocketISO 2.0.
- Frameskipping works. Right now I only have it so the frameskip setting makes the actual blit skip, not the rendering. I can get a good speed up if I skip rendering of frames, but it causes graphical glitches as you could imagine.
- GPU is now my own custom version of Dr Hell's GPU. I like it a lot, but it needs more tweaking.
- 640x480 build for full screen 640x480 screen, as well as a 320x240 build for a huge speed increase (60 FPS in Final Fantasy 7 with frameskip of 1-2, though FF7 crashes pretty quickly into the game, more on that later).
- All the default controls work. They're mapped as noted below. They'll change as the emulator progresses, I just had this button layout set before people started suggesting there own.
- File menu for loading ISO's. It sucks, but it works!
- HLE support works. Hold down the 'H' key when selecting an ISO to run the game using HLE. HLE should improve performance, and perhaps fix or cause glitches by the way it handles emulating the PSX BIOS. When HLE is used, no BIOS ROM is needed, and no PSX splash screen is seen.
Stuff that doesn't work in ZarPSX yet:
- Final Fantasy 7 as well as some other games don't work when they should. As you can see in the code for ZarPSX, it's based off of PCSX. Yeah, PCSX. :/ ...Good thing is, PCSX works with a lot of games, including FF7, which is why I'm unsure as to the reason my small modifications to the core of PCSX made these games not work. I was thinking it might actually have to do with some of the "plugin" code I jammed into ZarPSX such as PlugCD.c. If someone feels like getting these games working with ZarPSX, please PM me.
- MDEC timings are off. This is probably a quick fix, but I timed the MDEC interrupt wrong. MDEC is the "movie codec" the PSX uses. So if you get really jittery or slideshow-like movies, this is why. I'll fix it asap.
- Games that span multiple ISOs won't work currently.
As I've explained to Urielka, ZarPSX's code is horrid imho. I think we can make this emulator much better as a community. So take a look at the code, clean it up, edit it, and submit it back to me, and I'll keep everything in order and keep the ZarPSX project humming along. Urielka is researching dynamic recompilers, and if a dynamic recompiler is made for ZarPSX, we will see a fairly good speed increase from it. Right now, 320x240 ZarPSX is pretty fast, full speed for most games with a single frameskip. But 640x480 ZarPSX needs about a 3 or 4 frameskip to reach the same speed, yet appears choppy. So let's get 640x480 full screen ZarPSX fullspeed!
Things to help out:
- Get a compatibility list for ZarPSX up and running. This will help me out greatly, especially when the emu progresses. A wiki would be good for this most likely.
- Fix bugs in ZarPSX and submit them to me.
- Get a CVS going?
- Help me figure out how to use the framebuffer on the Zaurus Cxxxx line.
- Get ZarPSX running on Zaurus' other than the Cxxxx line.
Keep in mind it's "normal" to wait a minute or so for the stupid PSX splash screen to finish. I'll speed this process up for the next release, in the meantime, wait for it or use HLE to skip the process.
How to use ZarPSX:
Run zarpsxhi for a full 640x480 resolution. Games will go slower.
Run zarpsxlow for 320x240 resolution. Games will go faster but will appear in a small window in the center of the screen. :/
PSX -> Zaurus
UP/DOWN/LEFT/RIGHT -> Digital Pad
X/SQUARE/O/TRIANGLE -> A/S/D/F (might have these in the wrong order, i'll get the correct order in a bit)
L1/R1/L2/R2 -> Z/X/C/V
START -> ENTER
SELECT -> SPACE
SELECT ISO -> ENTER/OK
QUIT EMU -> BACKSPACE
LOWER FRAMESKIP -> K
RAISE FRAMESKIP -> L
Every once and awhile an issue comes along that a game reads from the wrong coord in the VRAM set for the PSX. I made a little fix for this by using the 'P' key to toggle this graphics fix. Don't use it unless you think it's needed (such as when the game seems frozen or is stuck on a blank screen).
If you do not use HLE, you will *NEED* a PSX BIOS. The BIOS should be named scph1001.bin and be located where zarpsx is. Please DO NOT ask for this file. If you can't find the file, try using HLE by holding down the 'H' key when selecting an ISO. HLE should give a slight speed increase as well, but may cause glitches.
Currently only saving through a memory card file is supported. That's why the two formatted memory card files (.mcr files) are included. Saving within the game to the memory card files should be the same as if it were being saved to an actual memory card on a PSX. So nothing to worry about here. Just keep the .mcr files in the same directory as zarpsx.
You will need the SDL library as well as the Zlib library installed on your Zaurus.
This version will probably only work on the Cxxxx line of Zaurus' from the sounds of things. But maybe not, let me know!
Hope you enjoy ZarPSX! There's a long ways for it to go, but it's coming along. Once the compatibility goes up and things speed up enough to be able to use 640x480 over 320x240, things will be smooth. I really do think a fullspeed PSX emulator with sound is possible on the Zaurus Cxxxx. Let's get this project nice and polished.
P.S. Anyone interested in a port of OpenTTD (Transport Tycoon Deluxe) to the Zaurus? I've ported it to many other handhelds, and can probably get it up and running on the Zaurus fairly easily if it hasn't been done already.
Also, I just remembered I forgot the makefile to compile zarpsx. It's simple to compile though. If anyone needs help compiling, let me know.