MCUME/MCUME_pico2/picopce/pce-go/pce-go.h
2025-01-26 17:25:30 +01:00

88 lines
2.3 KiB
C
Executable file

#pragma once
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include "config.h"
#include "ff.h"
#ifdef RETRO_GO
#include <rg_system.h>
#define LOG_PRINTF(level, x...) rg_system_log(RG_LOG_USER, NULL, x)
#define crc32_le(a, b, c) rg_crc32(a, b, c)
#else
//#define LOG_PRINTF(level, x...) printf(x)
#define LOG_PRINTF(level, x...) {}
#define IRAM_ATTR __always_inline
#define crc32_le(a, b, c) (0)
#endif
#define MESSAGE_ERROR(x...) LOG_PRINTF(1, "!! " x)
#define MESSAGE_WARN(x...) LOG_PRINTF(2, " ! " x)
#define MESSAGE_INFO(x...) LOG_PRINTF(3, " * " x)
#define MESSAGE_TRACE(tag, x...) LOG_PRINTF(4, " & (" tag ") " x)
#if ENABLE_DEBUG
#define MESSAGE_DEBUG(x...) LOG_PRINTF(4, " > " x)
#else
#define MESSAGE_DEBUG(x...) {}
#endif
#if ENABLE_SPR_TRACING
#define TRACE_SPR(x...) MESSAGE_TRACE("SPR", x)
#else
#define TRACE_SPR(x...) {}
#endif
#if ENABLE_GFX_TRACING
#define TRACE_GFX(x...) MESSAGE_TRACE("GFX", x)
#else
#define TRACE_GFX(x...) {}
#endif
#if ENABLE_IO_TRACING
#define TRACE_IO(x...) MESSAGE_TRACE("IO", x)
#else
#define TRACE_IO(x...) {}
#endif
#if ENABLE_CPU_TRACING
#define TRACE_CPU(x...) MESSAGE_TRACE("CPU", x)
#else
#define TRACE_CPU(x...) {}
#endif
#undef MIN
#define MIN(a,b) ({__typeof__(a) _a = (a); __typeof__(b) _b = (b);_a < _b ? _a : _b; })
#undef MAX
#define MAX(a,b) ({__typeof__(a) _a = (a); __typeof__(b) _b = (b);_a > _b ? _a : _b; })
#define JOY_A 0x01
#define JOY_B 0x02
#define JOY_SELECT 0x04
#define JOY_RUN 0x08
#define JOY_UP 0x10
#define JOY_RIGHT 0x20
#define JOY_DOWN 0x40
#define JOY_LEFT 0x80
// We need 16 bytes of scratch area on both side of each line. The 16 bytes can be shared by adjacent lines.
// The buffer should look like [16 bytes] [line 1] [16 bytes] ... [16 bytes] [line 242] [16 bytes]
#define XBUF_WIDTH (16 + 320 + 16)
#define XBUF_HEIGHT (242 + 4)
int LoadState(const char *name);
int SaveState(const char *name);
void ResetPCE(bool);
void RunPCE(void);
void ShutdownPCE();
int InitPCE(int samplerate, bool stereo, const void *ROM, size_t fsize);
// int LoadCard(const char *name);
int LoadCard(const char *ROM, size_t size);
void *PalettePCE(int bitdepth);
extern uint8_t *osd_gfx_framebuffer(int width, int height);
extern void osd_input_read(uint8_t joypads[8]);
extern void osd_vsync(void);