Skip to content
/ PSX Public
forked from PeterLemon/PSX

PlayStation Bare Metal Mips Assembly Programming

Notifications You must be signed in to change notification settings

RobertPeip/PSX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PSX Tests

Collection of assembler applications. Many tests and library by Krom.

Expanded with the following tests to cover more details of the original PSX hardware:

Timing:

  • TimingCPU: test internal CPU performance - normal commands, mul and div
  • TimingLoadRAM: test sdram read performance and pipelinging behavior
  • TimingStoreRAM: test sdram write performance and writefifo behavior
  • TimingLoadReg: test read performance from different busses
  • TimingStoreReg: test write performance to different busses

Timer:

  • TimerCalib: test resetting timer and reading it for calibration. Also TMR2 in Div8 mode and wraparound at 0xFFFF
  • TimerWrap: test wraparounds at different target values
  • TimerSet: Test various combinations of writing current, target and reset

Bus:

  • LoadStoreReg: check 4 byte aligned reads/writes to different busses
  • LoadStoreRegUnalign8: check byte reads/writes to different busses with offset 1,2 or 3
  • LoadStoreRegUnalign16: check halfword reads/writes to different busses with offset 0 and 2
  • Load816Unalign: check readback with bus rotation from different busses

GTE:

  • GTETransfer: check all GTE opcodes timing and pipeline behavior
  • GTETiming: check execution time of all GTE commands

DMA:

  • DMATimingToDevice: testing DMA to SPU performance and delays. TODO: should be renamed or contain more devices
  • DMAOTCData: check data integrity and speed of different OTC DMA sizes
  • DMACD: check speed of different DMA sizes
  • DMAGPU: check speed of different DMA sizes
  • DMAMDECIN: check speed of different DMA sizes
  • DMAMDECOUT: check speed of different DMA sizes
  • DMASPU: check speed of different DMA sizes

Pipeline:

  • PipelineInternelRegs: testing write pipelining and write queue using writes and (stalling) reads to Timer registers
  • PipelineRAMwrite: testing write pipelining and write queue using writes and Main RAM
  • PipelineRAMread: testing timing of reads from Main RAM
  • PipelineSPU: testing write pipelining and write queue using writes and (stalling) reads to SPU registers
  • PipelineCD: testing write pipelining and write queue using writes and (stalling) reads to CD registers
  • PipelineCPULoadDelay: testing loaded data for various load and load-after-load situation
  • PipelineInstructionCache: testing cache fetch timing from aligned and unaligned addresses
  • PipelineInstructionNoCache: testing execution timing without instruction cache and combination with parallel store/load
  • PipelineInstructionBIOS: testing execution timing with cached and uncached BIOS instruction (tested against 7502)

ExtBUS:

  • ExtBusBusWidth: testing timing using different width
  • ExtBusDelay: testing timing using different read/write delays
  • ExtBusFloatRelease: testing timing with FloatRelease on/off
  • ExtBusHold: testing timing with Hold on/off
  • ExtBusPreStrobe: testing timing with Pre-Strobe on/off
  • ExtBusRecovery: testing timing Recovery on/off

Hint: most timing tests will fail if the basic TimerCalib tests are not pass


Original readme from Krom


PSX Bare Metal Code by krom (Peter Lemon).

All code compiles out of box with the Armips assembler by Kingcom.
https://github.com/Kingcom/armips/
http://buildbot.orphis.net/armips/
I have included binaries & executables of all the demos.

Special thanks to the Hitmen demo group, who with their asm sources, helped me get into PSX Coding =D
http://hitmen.c02.at/html/psx_sources.html

Also I'd like to thank ARM9, who made the bin2exe.py file, to convert my PSX binaries into PSX exectuables.
https://github.com/ARM9/psxdev/blob/master/libpsx/tools/bin2exe.py

Please check out NO$PSX, a PSX emulator/debugger by Martin Korth:
http://problemkaputt.de/psx.htm

Also MAME has a great PSX emulator/debugger by smf:
https://www.mamedev.org/

Howto Compile:
All the code compiles into a single binary & executable (NAME.EXE) file.
Using Armips Run: make.bat

Howto Run:
I only test with a real PSX.

You can also use PSX emulators like NO$PSX which can load PSX executables directly, & MAME using this command:
mame pse -quik NAME.EXE

About

PlayStation Bare Metal Mips Assembly Programming

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Assembly 94.1%
  • Python 5.4%
  • Other 0.5%