mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 18:25:35 -04:00
a16e3a4408
CDROM (adapted from v3, 487 lines): - Removed event_deliver() — HLE disease. IRQ delivery is now purely via i_stat bit 2; the recompiled BIOS exception handler processes CDROM events natively through its own EvCB table. - Removed CPUState* from all function signatures — hardware registers don't need CPU state. - Removed hard-coded RAM writes (0x800DEE54 etc.) — BIOS kernel state manipulation disguised as hardware sim. - Removed all fprintf. - Kept: register banking, command processing, sector reads, DMA interface. SPU (new, 89 lines, register map from v2 reference): - Accepts all SPU register reads/writes at 0x1F801C00-0x1F801FFF - 512KB SPU RAM with transfer address tracking and FIFO writes - DMA4 write interface for bulk transfers - SPUSTAT returns 0 (ready, not busy) - No audio synthesis — placeholder for SDL_audio integration later Memory.c: replaced inline spu_regs[] array and stub CDROM handlers with calls to the proper cdrom.c and spu.c modules. Validated: BIOS boots identically (16,859 GP0 writes, 1,149 draws). No regression from previous commit. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
28 lines
508 B
C
28 lines
508 B
C
#ifndef PSXRECOMP_V4_SPU_H
|
|
#define PSXRECOMP_V4_SPU_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
void spu_init(void);
|
|
|
|
/* MMIO read/write (0x1F801C00-0x1F801FFF) */
|
|
uint32_t spu_read(uint32_t addr);
|
|
void spu_write(uint32_t addr, uint32_t value);
|
|
|
|
/* DMA channel 4 interface */
|
|
void spu_dma_write(uint32_t word);
|
|
int spu_dma_ready(void);
|
|
|
|
/* Get pointer to SPU RAM for direct access (512KB) */
|
|
const uint8_t* spu_get_ram(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* PSXRECOMP_V4_SPU_H */
|