mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 02:11:36 -04:00
fe42da2744
Keeps both lines: master's PGXP session, draw-distance clamps, masked rejects and saturated-winding NCLIP; the release's render-pass kit additions, verified media/disc extents, timeline/present rings, cull-scale sites. Overlay ABI v30. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
40 lines
1.2 KiB
C
40 lines
1.2 KiB
C
#ifndef PSXRECOMP_TIMERS_H
|
|
#define PSXRECOMP_TIMERS_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define TIMER_BASE 0x1F801100
|
|
|
|
void timers_init(void);
|
|
void timers_get_snapshot(uint16_t counter[3], uint32_t mode[3],
|
|
uint16_t target[3], int32_t irq_line[3],
|
|
uint32_t frac[3]);
|
|
void timers_set_snapshot(const uint16_t counter[3], const uint32_t mode[3],
|
|
const uint16_t target[3], const int32_t irq_line[3],
|
|
const uint32_t frac[3]);
|
|
|
|
/* MMIO read/write for 0x1F801100..0x1F80112F.
|
|
* Accepts 16-bit or 32-bit access (caller zero-extends). */
|
|
uint32_t timers_read(uint32_t addr);
|
|
void timers_write(uint32_t addr, uint32_t value);
|
|
|
|
/* Advance all timers by guest CPU cycles. Used by native block-cycle builds. */
|
|
void timers_advance(uint32_t cycles);
|
|
|
|
/* Cycle-budgeted precise event slicing: guest CPU cycles until a timer raises a
|
|
* DELIVERABLE IRQ (unmasked in i_mask + mode-armed). UINT32_MAX if none. */
|
|
uint32_t timers_cycles_to_irq(uint32_t i_mask);
|
|
|
|
/* Legacy coarse tick used by interpreter/oracle builds. */
|
|
void timers_tick(int cycles);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* PSXRECOMP_TIMERS_H */
|