All Projects → BluestormDNA → Projectpsx

BluestormDNA / Projectpsx

Licence: mit
Experimental C# Playstation Emulator

Programming Languages

csharp
926 projects

Projects that are alternatives of or similar to Projectpsx

Pseudo
PSeudo - The world's simplest PLAYSTATION emulator
Stars: ✭ 31 (-96.45%)
Mutual labels:  mips, emulator
Plotty
C language compiler from scratch for a custom architecture, with virtual machine and all
Stars: ✭ 33 (-96.22%)
Mutual labels:  emulator, net
Bap
Binary Analysis Platform
Stars: ✭ 1,385 (+58.47%)
Mutual labels:  mips, emulator
spym
MIPS ISA toolchain including a (dis)assembler, debugger, and vm.
Stars: ✭ 15 (-98.28%)
Mutual labels:  emulator, mips
kpspemu
PSP Emulator written in Kotlin for JVM, JS and Native. Can work as PWA.
Stars: ✭ 57 (-93.48%)
Mutual labels:  emulator, mips
Unicorn
Unicorn CPU emulator framework (ARM, AArch64, M68K, Mips, Sparc, PowerPC, RiscV, X86)
Stars: ✭ 4,934 (+464.53%)
Mutual labels:  mips, emulator
Assembler Simulator
Simple 8-bit Assembler Simulator with Angular.js
Stars: ✭ 792 (-9.38%)
Mutual labels:  emulator
Gameboy
🎮 Game Boy emulator written in Rust
Stars: ✭ 17 (-98.05%)
Mutual labels:  emulator
Sameboy
Game Boy and Game Boy Color emulator written in C
Stars: ✭ 732 (-16.25%)
Mutual labels:  emulator
Androidnativeemu
Allows you to partly emulate an Android native library.
Stars: ✭ 717 (-17.96%)
Mutual labels:  emulator
Vba M Nx
WIP full featured port of VBA-M for Nintendo Switch
Stars: ✭ 11 (-98.74%)
Mutual labels:  emulator
Keypatch
Multi-architecture assembler for IDA Pro. Powered by Keystone Engine.
Stars: ✭ 939 (+7.44%)
Mutual labels:  mips
Cloud Functions Emulator
A local emulator for deploying, running, and debugging Google Cloud Functions.
Stars: ✭ 836 (-4.35%)
Mutual labels:  emulator
Citra
A Nintendo 3DS Emulator
Stars: ✭ 7,009 (+701.95%)
Mutual labels:  emulator
Go Book Store Api
Go Sample project to understand Mysql CRUD operation with best practises Includes logging, JWT, Swagger and Transactions
Stars: ✭ 18 (-97.94%)
Mutual labels:  net
Androidsdk
🐳 Full-fledged Android SDK Docker Image
Stars: ✭ 776 (-11.21%)
Mutual labels:  emulator
Go Extend
go语言扩展包,收集一些常用的操作函数,辅助更快的完成开发工作,并减少重复代码
Stars: ✭ 839 (-4%)
Mutual labels:  net
Arm now
arm_now is a qemu powered tool that allows instant setup of virtual machines on arm cpu, mips, powerpc, nios2, x86 and more, for reverse, exploit, fuzzing and programming purpose.
Stars: ✭ 719 (-17.73%)
Mutual labels:  mips
Server
Ultima Online Shard Emulator w/ Node.js
Stars: ✭ 6 (-99.31%)
Mutual labels:  emulator
Embeddednes
A portable NES simulator for embedded processors
Stars: ✭ 26 (-97.03%)
Mutual labels:  emulator

ProjectPSX

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 R3000A) 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.
  • CDROM: Implemented the common commands.
  • DMA transfers.
  • Timers.
  • Digital controller support (currently hardcoded to keyboard).
  • A basic BIOS and MIPS disassembler.
  • MDEC for video decoding 16/24 bpp FMV.
  • Display Screen with 24 bpp support.
  • Memory Card support.
  • SPU (Reverb is not supported)

What is not implemented (but should be...):

  • DMA resumable transfers
  • CDROM: Proper timmings.

Note: A valid PlayStation Bios is needed to run the emulator. SCPH1001.BIN is the default bios on the development but some others like SCPH5501 or SCPH7001 have been reported to work.

Compatibility

There's no compatibility list. Many games boot and go ingame althought some may have random problems. Some of the games I tested that woked were: Ridge Racer, Castlevania Symphony of the Night, Final Fantasy 7, Crash Bandicoot 1, 2 and 3, Spyro the dragon, Tekken 1, 2 and 3, Toshinden, Time Crisis, Tobal 1 and 2, Vagrant Story, Street Fighter Zero 3, Rockman/Megaman 8/X4, Parasite Eve, Metal Gear Solid, Crash Team Racing... Some others like Final Fantasy IX, Gran Turismo, Resident Evil 3 or Marvel vs Capcom boot but have random problems to be fixed.

Note: Memory Card files are hardcoded to "memcard.mcr" on the root directory. If there's no one a new one will be generated on save.

Using the emulator

ProjectPSX core itself is a headless library with no dependencies. The solution comes with 2 additional projects ProjectPSX.Winforms and ProjectPSX.OpenTK. The Winforms project uses NAudio to output sound.

When using the Winform project a file dialog will prompt on execution. Select a Bin file (use track1) or a Cue file to generate CD tracks to feed the CDROM.

When using the OpenTK project just drag and drop a bin/cue file to the window.

The bios and expansion files are hardcoded 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

crash rr ff7 ff7B

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 display buffers 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/dma/mdec 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 you did this?

I have been interested in emulating hardware for some time. I started doing a Java Chip8 and a C# Intel 8080 CPU (used on the classic arcade Space Invaders). Some later i did Nintendo 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 at https://discord.gg/dkmJAes was very helpful.

  • What about WinForms?

Winforms was the easiest way to have output for me as it was fast prototyped. At the moment the UI is detached from the core so any windowing system can be added as long as the IHostWindow interface is implemented. There's also am OpenTK project on the solution that runs on Linux.

  • Tell me more about you!

At the start of this project I was a guy with a boring job unrelated to coding. I did'nt want to do it for the rest of my life so I started studying to try to change careers. Eventually learned (a bit) and started to code whatever made me happy. Eventually got a job as an Android Dev...

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].