A repository of PSP programs performing several tests on the PSP platform.
The main idea behind this is having several files per test unit:
_file_*.expected*
- File with the expected Kprintf's output, preferably from a real PSP_file_*.prx*
- The program that will call Kprintf syscall in order to generate an output_file_*.input*
- Optional file specifying automated actions that should simulate user interaction: pressing a key, releasing a key, selecting a file on the save selector, waiting for a function (for example a vsync) to call before continuing...If you just want to run the tests, you just need to run your emulator on the PRX files and compare with the .expected files. PPSSPP has a convenient script for this called test.py.
If you want to change tests, you'll need to read the rest. This tutorial is focused on Windows but can probably be used on Linux and Mac too, you just don't need to install the driver there.
The rest of this tutorial will assume that you installed the PSPSDK in C:\pspsdk.
C:\pspsdk\psplink\psp\oe\psplink
) to PSP/GAME on the PSP.Tip: If you see PSP Type A, you've connected the PSP in "USB mode". Disconnect, and run the PSPLINK game instead.
C:\pspsdk\bin\driver
or C:\pspsdk\bin\driver_x64
depending on your OS install.brew install libusb-compat
to install libusb.C:\pspsdk\bin
(or equivalent) to your PATH
if you haven't already got it.pspautotests\common
and run make
(might need to start a new cmd shell)You are now ready to roll!
In a standard "cmd" command prompt in the directory that you want the PSP software to regard as "host0:/
" (normally pspautotests/
) if it tries to read files over the cable, type the following:
> cd pspautotests
> usbhostfs_pc -b 3000
Then in a separate command prompt:
> pspsh -p 3000
If you now don't see a host0:/
prompt, something is wrong. Most likely the driver has not loaded correctly. If the port 3000 happened to be taken (usbhostfs_pc would have complained), try another port number.
Now you have full access to the PSP from this prompt.
You can exit it and use gentest.py
(which will start the same prompt) to run tests (e.g. gentest.py misc/testgp
) and update the .expected files.
You can run executables on the PSP that reside on the PC directly from within this the pspsh shell, just cd to the directory and run ./my_program.prx.
Note that you CAN'T run ELF files on modern firmware, you MUST build as .PRX. To do this, set BUILD_PRX = 1 in your makefile.
Also, somewhere in your program, add the following line to get a proper heap size:
unsigned int sce_newlib_heap_kb_size = -1;
For some probably historical reason, by default PSPSDK assumes that you want a 64k heap when you build a PRX.
Maybe join .expected and .input file in a single .test file?
Random Ideas for .test file:
EXPECTED:CALL(sceDisplay.sceDisplayWaitVblank)
ACTION:BUTTON_PRESS(CROSS)
EXPECTED:OUTPUT('CROSS Pressed')
EXPECTED:CALL(sceDisplay.sceDisplayWaitVblank)
ACTION:BUTTON_RELEASE(CROSS)