My Generic PSF (Portable Sound Format: PSF1, GSF) Ripping Strategy
Here I introduce my PSF ripping method.
Introduction
I assume you already know about the following things:
- What is PSF? - A format for video game music rips. In most cases, a PSF is a compressed game ROM whose non-sound stuff is removed by ripper.
- "Streamed?" "Sequenced?" What's the difference? etc. - Read PSF Frequently Asked Questions - Neill Corlett's Home Page
- What is pointer)? - For this purpose, I recommend you to learn C.
- Do I need to learn assembly? - At least you need to know basics. (for example: "What is a register?" "What is a stack?") If you already know one of assemblies, I think you can solve your problems during ripping by pinpoint googling.
Prerequisites
- Emulator (Debugger) - such as no$psx or no$gba debugger
- It must have step execution function. (Step Into, Step Over, Run To Return)
- It definitely should have a function that can change instructions by using assembly.
- It should change register value. (If not available, use an external tool such as MHS.)
- IDA Pro - it will help you in reading assembly a lot. See also: IDA Pro - How To Load Game ROM
- Memory Scanner - such as Cheat Engine or Memory Hacking Software (MHS).
- This tool is optional. It is handy when the emulator does not have built-in RAM search function.
- It can be used to set a memory breakpoint, when the emulator does not have a memory breakpoint feature. (thankfully, nocash debuggers has the feature)
Typical structure of unaltered game
I think a game has routines like the following typically:
Read more