mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 10:19:47 -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>
29 lines
588 B
C
29 lines
588 B
C
#ifndef PSXRECOMP_V4_CDROM_H
|
|
#define PSXRECOMP_V4_CDROM_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
void cdrom_init(const char* cue_path);
|
|
|
|
/* MMIO read/write (0x1F801800-0x1F801803) */
|
|
uint32_t cdrom_read(uint32_t addr);
|
|
void cdrom_write(uint32_t addr, uint32_t value);
|
|
|
|
/* Advance CD-ROM state machine. Call per-frame. Sets i_stat IRQ_CDROM
|
|
* when a command completes or data is ready. */
|
|
void cdrom_tick(void);
|
|
|
|
/* DMA channel 3 interface */
|
|
uint32_t cdrom_dma_read(void);
|
|
int cdrom_dma_ready(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* PSXRECOMP_V4_CDROM_H */
|