|
Nugget
Bare-metal libraries and examples for the original PlayStation
|
#include "common/hardware/dma.h"#include "common/hardware/hwregs.h"#include "common/hardware/pcsxhw.h"#include "common/hardware/spu.h"#include "common/syscalls/syscalls.h"#include <stdint.h>
Macros | |
| #define | SPU_DELAY (*(volatile uint32_t *)0xbf801014) |
| #define | SPU_ENDX_LOW (*(volatile uint16_t *)0x1f801d9c) |
| #define | SPU_UPLOAD_ADDR 0x1080u |
| #define | ATTACK(step, shift, exp) ((((step) & 3) << 8) | (((shift) & 31) << 10) | (!!(exp) << 15)) |
| #define | DECAY(shift) (((shift) & 15) << 4) |
| #define | SUSTAIN(step, shift, level, direction, exp) |
| #define | RELEASE(shift, exp) ((((shift) & 31) << 16) | (!!(exp) << 21)) |
| #define | HOLD_AT_PEAK (ATTACK(0, 0, 0) | DECAY(0) | SUSTAIN(3, 0, 15, 0, 0)) |
| #define | MAX_TICKS 512 /* 512 * 5.805ms = 2.97s per bounded wait */ |
| #define | TRACE_LEN 16 |
| #define | FINE_LEN 32 |
| #define | FINE_SPACING 2000 /* volatile loop iterations, ~3 cycles each */ |
Functions | |
| int | main () |
| #define ATTACK | ( | step, | |
| shift, | |||
| exp | |||
| ) | ((((step) & 3) << 8) | (((shift) & 31) << 10) | (!!(exp) << 15)) |
| #define DECAY | ( | shift | ) | (((shift) & 15) << 4) |
| #define FINE_LEN 32 |
| #define FINE_SPACING 2000 /* volatile loop iterations, ~3 cycles each */ |
| #define MAX_TICKS 512 /* 512 * 5.805ms = 2.97s per bounded wait */ |
| #define RELEASE | ( | shift, | |
| exp | |||
| ) | ((((shift) & 31) << 16) | (!!(exp) << 21)) |
| #define SPU_ENDX_LOW (*(volatile uint16_t *)0x1f801d9c) |
| #define SPU_UPLOAD_ADDR 0x1080u |
| #define SUSTAIN | ( | step, | |
| shift, | |||
| level, | |||
| direction, | |||
| exp | |||
| ) |
| #define TRACE_LEN 16 |