a project by david.anes
Project Description
The idea is to learn about the PlayStation 1 CPU and GPU.
Goal for this Hackweek
- Learn specifics of PlayStation 1 architecture: CPU, GTE, GPU, MMC, etc.
- Understand differences between common MIPS1 architecture and PS1.
- Build a simple assembler/disassembler (as PS executables aren't relocatable).
Eventually, building an emulator would be awesome!
Resources
- MIPS:
- IDT R30xx Family Software Reference Manual (PS1 CPU, PS2 IOP): https://cgi.cse.unsw.edu.au/~cs3231/doc/R3000.pdf
- Guide to writing a PSX emulator: https://github.com/simias/psx-guide
- Rendered: https://cdn.discordapp.com/attachments/492036343376117778/492037613721616406/guide.PDF
- psx-spx: https://psx-spx.consoledev.net/ (original: https://problemkaputt.de/psx-spx.htm)
- PSX reverse engineering project: https://github.com/ogamespec/psxdev/tree/master/reverse
- BIOS info: http://wiki.psxdev.ru/index.php/BIOS
- Translated: https://translate.google.com/translate?sl=auto&tl=en&u=http://wiki.psxdev.ru/index.php/BIOS
- The PSX GPU texture pipeline and how to emulate it: https://www.reddit.com/r/EmuDev/comments/fmhtcn
- PSX EXE header (also see "CDROM File Formats" section in psx-spx): http://www.emulatronia.com/doctec/consolas/psx/exeheader.txt
- PSX system software reverse engineering project: https://github.com/ogamespec/psxdev/tree/master/reverse
- Other PSX documentation (including a CPU reference manual): http://hitmen.c02.at/html/psx_docs.html
- PSX GTE docs/reverse engineering: https://github.com/ogamespec/pops-gte
- PSX MDEC & CD-ROM info: https://github.com/m35/jpsxdec/blob/readme/jpsxdec/PlayStation1STRformat.txt
- Dithering on the PSX: https://www.youtube.com/watch?v=3XDyQnY5GHI
- PlayStation emulator development info: https://drhell.web.fc2.com/ps1/index.html
- Translated: https://translate.google.com/translate?sl=auto&tl=en&u=http%3A%2F%2Fdrhell.web.fc2.com%2Fps1%2Findex.html
- Test ROMs:
- Amidog's tests: https://emulation.gametechwiki.com/index.php/PS1_Tests
- https://github.com/PeterLemon/PSX
- https://github.com/JaCzekanski/ps1-tests
- https://github.com/simias/psx-hardware-tests/tree/master/tests
- PSX demos: https://www.pouet.net/prodlist.php?order=thumbup&platform%5B0%5D=Playstation&page=1
- Open-source BIOS: https://github.com/grumpycoders/pcsx-redux/tree/main/src/mips/openbios
Looking for hackers with the skills:
This project is part of:
Hack Week 21
Activity
Comments
Be the first to comment!
Similar Projects
FizzBuzz OS by mssola
Project Description
FizzBuzz OS (or just fbos
) is an idea I've had in order to better grasp the fundamentals of the low level of a RISC-V machine. In practice, I'd like to build a small Operating System kernel that is able to launch three processes: one that simply prints "Fizz", another that prints "Buzz", and the third which prints "FizzBuzz". These processes are unaware of each other and it's up to the kernel to schedule them by using the timer interrupts as given on openSBI (fizz on % 3 seconds, buzz on % 5 seconds, and fizzbuzz on % 15 seconds).
This kernel provides just one system call, write
, which allows any program to pass the string to be written into stdout.
This project is free software and you can find it here.
Goal for this Hackweek
- Better understand the RISC-V SBI interface.
- Better understand RISC-V in privileged mode.
- Have fun.
Resources
Symbol Relations by hli
Description
There are tools to build function call graphs based on parsing source code, for example, cscope
.
This project aims to achieve a similar goal by directly parsing the disasembly (i.e. objdump) of a compiled binary. The assembly code is what the CPU sees, therefore more "direct". This may be useful in certain scenarios, such as gdb/crash debugging.
Detailed description and Demos can be found in the README file:
Supports x86 for now (because my customers only use x86 machines), but support for other architectures can be added easily.
Tested with python3.6
Goals
Any comments are welcome.
Resources
https://github.com/lhb-cafe/SymbolRelations
symrellib.py: mplements the symbol relation graph and the disassembly parser
symrel_tracer*.py: implements tracing (-t option)
symrel.py: "cli parser"
Linux on Cavium CN23XX cards by tsbogend
Before Cavium switched to ARM64 CPUs they developed quite powerful MIPS based SOCs. The current upstream Linux kernel already supports some Octeon SOCs, but not the latest versions. Goal of this Hack Week project is to use the latest Cavium SDK to update the Linux kernel code to let it running on CN23XX network cards.