Homebrew CTRX - PS1 Emulator

  • Thread starter Thread starter machinamentum
  • Start date Start date
  • Views Views 183,835
  • Replies Replies 502
  • Likes Likes 62
Hopefully, it'll be able to run .cue files (CDROM images) eventually.
Screw .cue, .iso and .cso is where it's at. Hell, I'd be even further impressed if it could boot PSP's PS1 eboots. XD
 
Hello,
About 1 month ago I began working on an experimental PS1 emulator. This is the very first release. It's still missing many core functions, but I believe it is ready to be shown as a bare-bones proof-of-concept. Included in the download is a freeware BIOS replacement; this is necessary to use the emulator as other BIOS aren't designed with CTRX's current state in mind. Also included is a freeware PS1 homebrew (boot.exe) that prints text to the screen using the GPU. It is built using nextvolume's PSXSDK and its source can be found in the attachment(s) to this post.

The emulator will attempt to run any PSX EXE file found at sdmc:/3ds/CTRX/boot.exe but bear in mind, that chances are it won't run at this point in time.

CTRX is a new and free emulator. It has been written from the ground up. It is not a port. It is also free. It has no price and does not bind the user's soul to a document written in legalese. Contributions to the project (including donations) are always appreciated.

Plans:

Dynamic recompilation:
Hypothetically, a dynamic recompiler can be written to work on all firmwares (without a kernel exploit) by using gspwn to write the output to memory pages that are already marked as executable. MIPS is an interesting platform because the most significant byte of the current program counter controls which memory segment the code is running. All the memory segments mirror each other, however, one of the segments has the CPU cache enabled and the user code can choose which segment to run in using absolute memory jumps; this is a good starting point for determining which code is viable for dynamic recompilation in real time.​

Source: https://github.com/machinamentum/CTRX
Download/Releases: https://github.com/machinamentum/CTRX/releases/

Screenshots:

Correct me if I'm wrong, but doesn't the 3DS also mark executable pages as read only? If not, this would be something awesome for other emulators to try out!
 
More than just a PSX emulator for 3DS, this is built from ground up, and that's great. The world needs a fast and compatible open source PS1 emulator, so hopefully if you finish this up it'll be ported to libretro or something like that.
 
  • Like
Reactions: SLiV3R
Correct me if I'm wrong, but doesn't the 3DS also mark executable pages as read only? If not, this would be something awesome for other emulators to try out!
Please note that memory access bits only restrict page access internally by the CPU. Asking the GPU to write data to main memory allows writing to arbitrary locations (although the GPU can only access a limited portion of main memory). This is how ninjhax ROP-chains load the payload that loads the homebrew menu. See gspwn info on 3dbrew. All we need to know is which memory pages are safe to be written to at run time without overwriting parts of the emulator or other important data.
 
Will it ever be able to run anything at a playable level? I had already taken it for granted that decent PSX emulation on 3DS was impossible.
 
  • Like
Reactions: Margen67
People said the same about Snes emulation :P
hummm... then I may have faith.
Though I have a potato computer: SNES runs perfect, PSX barely does. And I'm under the impression that my potato computer is quite more powerful than my n3DS.
 
hummm... then I may have faith.
Though I have a potato computer: SNES runs perfect, PSX barely does. And I'm under the impression that my potato computer is quite more powerful than my n3DS.
This guy have the skills and confidence to achieve it, we just let him do his work or at least help him :lol:
 
hummm... then I may have faith.
Though I have a potato computer: SNES runs perfect, PSX barely does. And I'm under the impression that my potato computer is quite more powerful than my n3DS.

Keep in mind that the 3DS is not going to render the games at nearly the same resolutions that your computer would, and that the hardware will pretty much be entirely dedicated to the emulator (as opposed to your computer, which is likely doing a lot more than that at any given time).
 
Please note that memory access bits only restrict page access internally by the CPU. Asking the GPU to write data to main memory allows writing to arbitrary locations (although the GPU can only access a limited portion of main memory). This is how ninjhax ROP-chains load the payload that loads the homebrew menu. See gspwn info on 3dbrew. All we need to know is which memory pages are safe to be written to at run time without overwriting parts of the emulator or other important data.
The only problem is that it's somewhat slow to do for massive memory writes, at least compared to just writing normally. Plus you still need a way to flush icache.
 
i highly doubt the 3ds can run any ps1 game at full speed, just look at the wii strugling and it has a much stronger processor, the new3ds maybe it can run some games at full speed but the o3ds will likley play games under 20 fps imo.
 
  • Like
Reactions: SLiV3R
i highly doubt the 3ds can run any ps1 game at full speed, just look at the wii strugling and it has a much stronger processor, the new3ds maybe it can run some games at full speed but the o3ds will likley play games under 20 fps imo.
Plus the old 3ds is missing the two new shoulder buttons, meaning it would require touch screen implementation to fully map the control scheme of the PS.
 
Plus the old 3ds is missing the two new shoulder buttons, meaning it would require touch screen implementation to fully map the control scheme of the PS.
Remember that the first controller of the ps1 didn't had sticks, not all the games require those buttoms and L2R2 can be easilly implemented in touchscreen
 
  • Like
Reactions: Margen67
Remember that the first controller of the ps1 didn't had sticks, not all the games require those buttoms and L2R2 can be easilly implemented in touchscreen
he didnt mention sticks but shoulder buttons the original ps1 controller always had 4 shoulder buttons wich the 3ds doesnt without that adpter wich name escapes me.
 

Site & Scene News

Popular threads in this forum