in ,

BluestormDNA / ProjectPSX, Hacker News

BluestormDNA / ProjectPSX, Hacker News


                    

        

psx

ProjectPSX is a C # coded emulator of the original Sony Playstation (Playstation 1 / PS1 / PSX)

This is a personal project with the scope to learn about hardware and the development of emulators.

ProjectPSX dosn’t use any external dependency and uses rather simplistic C # code.

At the moment the following is implemented:

  • CPU (MIPS R) A) with the Coprocessor 0 and Geometry Transformation Engine (GTE) Coprocessor.
  • A BUS to interconnect the components.
  • GPU with all the commands implemented with a software polygonal rasterizer.
  • Partial CDROM: Implemented the common cd access commands.
  • DMA transfers.
  • Partial TIMERS.
  • Digital controller support (currently hardcoded to keyboard).
  • A basic BIOS and MIPS disassembler.
  • MDEC for video decoding 16 bpp and 24 bpp.
  • Display Screen with 24 bpp support.

What is not implemented (but should be …):

  • Fix display to respect the hardware tv output sizes (actually some games can look not correctly centered)
  • CDROM: Proper timmings and a .cue parser.
  • TIMERS: dotclock, h and vsync cases.
  • JOYPAD: Memory Card support.

Note:A valid PlayStation Bios is needed to run the emulator. SCPH 1001. BIN is the default bios on the development but some others like SCPH 5501 or SCPH 7001 have been reported to work.

Compability

The emulator is in very early development and there are constant rewrites. Somehow and although with some limitations there are some games that already “work” like: Ridge Racer, Castlevania Symphony of the Night, Final Fantasy 7, Crash Bandicoot 1, 2 and 3, Spyro the dragon, Tekken 1 and 3, Toshinden, Time Crisis, Toabal 1 and 2, Vagrant Story, Street Fighter Zero 3, Rockman / Megaman 8 / X4, Parasite Eve … Some others like Final Fantasy IX, Gran Turismo boot but have random problems to be fixed.

Note:Memory Card files are unsupported so any progress will be lost upon exit.

Using the emulator

The emulator should work dragging a BIN iso or a PSX EXE to the GUI. Yet this is still unimplented and the CD names are hardcoded as strings on the CD Class and the Bios on the Bus Class.

Once power on, Input is mapped as:

  • D-Pad UP:Up
  • D-Pad Left:Left
  • D-Pad Down:Down
  • D-Pad Right:Right
  • Triangle:W
  • Square:A
  • X:S
  • Circle:D
  • Start:Enter
  • Select:Space
  • L1:Q
  • R1:E
  • L2:1
  • R2:2

Screenshots

cpugtecrashrrff7ff7B

Quick Faq

  • Can i use this emulator to play?

Yes you can, but you shouldn’t. There are a lot of other more capable emulators out there. This is a work in progress personal project with the aim to learn about emulators and hardware implementation. It can and will break during emulation as there are a lot of unimplemented hardware features.

  • What’s up with that window with all the weird colors and the double game screen?

It’s the VRAM viewer. It includes all the textures, color lockup tables and displaybuffers used by the playstation software. It’s used for debugging purposes. You can toggle it by pressing TAB on your keyboard.

  • Why “insert game here” doesn’t work?

Probably due to not implemented hardware or incorrect implemented one, mainly cdrom timmings.

  • How can i get console TTY or BIOS output?

Uncomment the bios.verbose () or TTY () functions on the CPU main loop. You can also dissasemble () the MIPS CPU instructions and printRegs () on the current opcode.

  • Why both RTPS and RTPT Geometry Transformation Engine Coprocessor commands give wrong values ​​on tests?

At the moment i just use common division where the original PSX uses a fastest, but less accurate division mechanism (based on Unsigned Newton-Raphson (UNR) algorithm.

  • Why you did this?

I have been interested in emulating hardware for some time. I started doing a JavaChip8and a C #Intel 8080 CPU(used on the classic arcade Space Invaders) . Some later i didNintendo Gameboy. I wanted to keep forward to do some 3D so i ended with the PSX as it had a good library of games …

  • How you did this?

I mainly used Martin Korth PSX-SPX documentation about the Playstation hardware at (https://problemkaputt.de/psx-spx.htm) Also the people at the #playstation channel on the emudev discord athttps://discord.gg/dkmJAeswas very helpful.

  

Brave Browser
Read More
Payeer

What do you think?

Leave a Reply

Your email address will not be published. Required fields are marked *

GIPHY App Key not set. Please check settings

How Apple Stacked the App Store With Its Own Products, Hacker News

How Apple Stacked the App Store With Its Own Products, Hacker News

Fitbit Versa 2 review: A solid replacement, but not totally remade, Ars Technica

Fitbit Versa 2 review: A solid replacement, but not totally remade, Ars Technica