Your handheld gaming history, beautifully tracked.
๐ Official Website | ๐บ Video Introduction & Tutorial
GameDiary is a seamless background playtime tracker and stats visualizer for the PlayStation Portable. It bridges the gap between retro hardware and modern ecosystems by automatically building a premium, localized dashboard of your gaming habits.
- Overview
- Features
- Official Website & Web Tools
- Screenshots / UI
- How It Works
- Installation
- Usage
- Project Structure
- Configuration
- Development
- Plugin Details
- Roadmap
- Contributing
- Support
- License
- Credits
- Author
GameDiary is a background kernel-mode plugin (PRX) and a premium user-mode application (EBOOT) for the PlayStation Portable (PSP).
It exists to give PSP power-users modern, console-like play tracking capabilities. GameDiary automatically monitors the games you play (both native PSP titles and PS1 classics via POPS), records your session lengths, extracts the game icons behind the scenes, and presents all your gaming statistics in a beautiful, modern, and fluid UI.
Key Benefits:
- Never lose track of your gaming hours.
- Revisit your gaming history via rich, data-driven graphs.
- Works entirely in the background without affecting game performance.
- Seamless Background Tracking: Minimal footprint kernel plugin starts silently with your games and records your playtime accurately.
- Automatic Icon Management: Automatically extracts
ICON0.PNGfrom EBOOTs and ISOs for a rich visual diary without manual scraping.
- Premium User Interface: Fluid carousel navigation, smooth transitions, depth-sorted overlapping icons, and dynamic backgrounds designed to feel like a native PSP OS experience.
- Detailed Play Statistics: View individual playtime for every game, total accumulated playtime across your entire library, session history, and detailed activity graphs.
- Clean and Scalable Text Rendering: Sharp and readable interface text at any size with full support for multiple languages and character sets.
- Global Internationalization (i18n): Fully localized in English, Spanish, Portuguese, Russian, German, French, Italian, Japanese and Chinese with automatic language detection based on PSP system settings.
- POPS Compatibility: Reliable tracking and icon parsing for PlayStation 1 classics running via the official emulator.
Extend your GameDiary experience with our Official Web App, designed to manage and refine your collection beyond the handheld.
By using the Backup / Export feature in the PSP application, you can generate a backup.json file (located in ms0:/PSP/COMMON/GameDiary/backup.json) that can be used with our specialized web tools:
- Visual Database Editor: A premium web-based editor to manually add, remove, or fix game sessions on an interactive timeline.
- Database Merge Tool: Safely combine multiple
backup.jsonfiles from different Memory Sticks or PSP consoles into a single, unified master database without losing history. - Modern Management: Access and refine your gaming stats from any PC or smartphone with a sleek, responsive interface.
Tip
Go to Settings > Backup > Export in the PSP app to generate the file needed for the web tools.
| Home / Carousel | Session Statistics |
|---|---|
![]() |
![]() |
| Fluid infinite-scrolling game carousel with depth sorting. | Detailed left-aligned session statistics with playtime graphs. |
GameDiary operates in two layers:
- Kernel Plugin (PRX)
- Tracks game sessions in real-time
- User Application (EBOOT)
- Reads and visualizes collected data
- A PlayStation Portable (PSP 1000/2000/3000 or Go).
- Custom Firmware (CFW) installed (such as PRO, ME, or ARK-4).
- A Memory Stick (or MicroSD to MS adapter).
Ensure you have the latest release downloaded from the Releases page. The release contains two main components: the App and the Plugin.
-
Copy the
GameDiary.prxfile to yourSEPLUGINSfolder on your memory stick (ms0:/SEPLUGINS/oref0:/SEPLUGINS/for PSP Go). -
Enable plugin:
- For ARK-4:
โ ๏ธ PSP Go Users If you are using the PSP Go internal storage, replacems0:/withef0:/in all paths.- Open
ms0:/SEPLUGINS/plugins.txtin a text editor. - Add the following line to enable tracking for PSP games:
psp, GameDiary.prx, on- To enable PS1 games tracking also add the following line:
ps1, GameDiary.prx, on- To enable Homebrew tracking also add the following line:
game, GameDiary.prx, on - Open
- For other CFWs:
โ ๏ธ PSP Go Users If you are using the PSP Go internal storage, replacems0:/withef0:/in all paths.-
Enable for PSP games and Homebrew: Add to
ms0:/seplugins/game.txt:ms0:/seplugins/GameDiary.prx 1 -
Enable for PS1 games: Add to
ms0:/seplugins/pops.txt:ms0:/seplugins/GameDiary.prx 1
-
- For ARK-4:
-
Restart your PSP (or reset VSH).
- Extract the
GameDiaryapp folder. - Navigate to
ms0:/PSP/GAME/. - Copy the
GameDiaryfolder there. Your absolute path should look likems0:/PSP/GAME/GameDiary/EBOOT.PBP.
Simply navigate to your PSP's Game menu on the XMB and launch GameDiary like any other homebrew.
| Button | Action |
|---|---|
| D-Pad Left/Right | Navigate carousel / Change tabs |
| Analog Stick | Smooth scrolling through the game carousel |
| Cross (X) / Circle (O) | Confirm / Back (Respects your PSP's X/O region setting) |
| Square (โก) | Toggle Game Category filter |
| START | Open Main Dashboard Menu |
| SELECT | Open Settings Menu (Language, Support, About) |
| L-Trigger | Open context-sensitive Help Popup |
- Playing a game: Boot up a UMD or ISO. The plugin silently detects the game ID, extracts the icon if missing, and begins tracking your playtime.
- Reviewing stats: Run the GameDiary Application from the XMB. Scroll through the carousel to find your game, hit X (or O) to view your weekly and all-time playtime statistics.
A clean, modular architecture separating kernel plugin operations from user-mode presentation.
GameDiary/
โโโ Makefile # Build orchestration
โโโ assets/ # Icons, backgrounds, and font source files. Used resources for the application
โโโ assets-src/ # Editable source assets (e.g., SVGs, ICON0.png) used to build and export final application resources
โโโ lib/ # Third-party libraries and external dependencies
โโโ obj/ # Intermediate build files (.o) generated during compilation (not committed to the repository)
โโโ include/ # Shared headers and public APIs
โโโ src/
โ โโโ app/ # User-mode UI Application (EBOOT)
โ โ โโโ audio/ # Audio management
โ โ โโโ config/ # Configuration management
โ โ โโโ data/ # Data management
โ โ โโโ i18n/ # Internationalization routines and language logic
โ โ โโโ render/ # Graphics, font rendering (MSDF), and components
โ โ โโโ ui/ # UI components and screens
โ โ โโโ main.c # Application entry point
โ โ
โ โโโ plugin/ # Kernel-mode Tracking Plugin (PRX)
โ โ โโโ hooks/ # API hooks for thread & I/O interception
โ โ โโโ main.c # Plugin entry point
โ โ
โ โโโ common/ # Shared logic (Data logging, parser utilities)
โโโ tools/ # Build and asset processing tools (e.g., resource and font converters)
GameDiary data is stored inside the ms0:/PSP/COMMON/GameDiary/ directory to keep your Memory Stick tidy.
games.dat: Master database mapping game IDs to playtime statistics.sessions.dat: Session log for each game.config.dat: User-defined preferences. You can override system language strings or toggle UI features here.icons/: Cloned icons representing your played games, automatically managed by the plugin.
GameDiary is built using the standard pspdev implementation of the PSPSDK.
- Ensure
pspdevis installed and the environment variables (PSPSDK,PATH) are configured. - Clone the repository:
git clone https://github.com/OniMock/GameDiary.git cd GameDiary - Run
maketo compile both the PRX and EBOOT:make
- The output will be in the
objfolder. - EBOOT.PBP and GameDiary.prx will be in the root folder.
Alternatively, use the official Docker image to compile without setting up local tools:
docker run --rm -it -v "${PWD}:/workspace" pspdev/pspdev Make clean allThe user-mode application can be tested using PPSSPP. Testing the kernel-plugin typically requires a real PSP, though specific module debugging can sometimes be simulated with advanced emulator setups.
The tracking system relies on kernel thread manipulation and syscall hooks to calculate precise uptime accurately.
- Tracking: On game boot, the plugin initializes a monitor thread that synchronizes with the
sceKernelGetSystemTimeAPI, appending delta-time entries to disk upon shutdown or hibernation. - Isolation: All file I/O operations inside
GameDiary.prxuse low-levelsceIo*functions guarded by thread-safe mutexes to prevent crashes when interacting with active game threads. - Limitations: Some homebrew that aggressively overwrites RAM boundaries or custom interrupts may temporarily pause tracking intervals.
- Background play tracking and database mapping.
- MSDF font rendering with full Latin, Cyrillic, and CJK fallback chains.
- Multi-language support (EN, PT, ES, RU, DE, FR, IT, JP, CN).
- Auto-extraction of
ICON0.PNGfor PS1/POPS Eboots. - Context-sensitive help and standardized Helper popups.
- Support Homebrew / Ports.
- Beep sound effects.
- Support older CFWs. (Tested in 6.61 PRO C2, 6.60 PRO B9....)
- Official Website for tools.
- Network-based version checker.
- Expand UI features with Dark/Light Theme.
- Export stats to JSON/CSV for external use.
- Fix plugin for UMD games (GTA, etc).
- Ongoing maintenance, fixes, and compatibility improvements.
We welcome contributions! Please adhere to the following guidelines:
- Architecture First: Respect the separation between
app/andplugin/. Avoid kernel functions in the user-mode app unless specifically bridged. - Memory Mindful: The PSP has limited RAM (32MB/64MB). Avoid unnecessary deep copies and dynamic allocation (
malloc). Prefer stack allocation where safe. - No C++: The project is written in C, not C++. Please keep it that way.
- Design: Design and code must be simple and efficient.
- Open a PR: State clearly what your pull request fixes or implements. Ensure your code merges cleanly and builds under
pspdev.
If you like this project and want to support its continuous development, consider buying me a coffee or sending a crypto donation!
Buy Me a Coffee
|
Crypto Wallet (EVM)
|
This project is licensed under the MIT License.
- pspdev SDK and community for maintaining modern PSP toolchains.
- Developers of PRO / ARK-4 CFW for mapping the boundaries of modern PSP kernel development.
- Members of the Reddit PSP community for testing, feedback, and support throughout development.
- Gamebrew and PSPunk for hosting and showcasing the project within the PSP homebrew scene.
Developed by OniMock.




