mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-04-02 10:42:14 -04:00
This represents a major code restructuring. The dot-based and scanline-based renderers are now split into two separate core libraries, asnes and bsnes. For now at least, these are -internal- names. I'm not entirely decided on how I'm going to handle releasing these two separate builds. Regardless, the folders need names. asnes has had all of the processor subfolders collapsed back into their parent folders. In other words, ppu's functions were moved into ppu/sppu, and then ppu was deleted, and then ppu/sppu became the new ppu. Repeat this for the cpu, smp and dsp and there you go. asnes/dsp also removed the DSP_STATE_MACHINE option. This was done for the sake of consistency with the rest of the core. asnes' debugger mode is currently extremely broken, but I will be fixing it in time. And for now, bsnes has kept the processor abstraction layer. I may keep it around, not sure yet. It doesn't hurt speed or anything, so I'm not too worried about making a decision right away. I may throw snesfilter, snesreader and supergameboy into this folder, just to have everything in one place. The alternate GUI forks are definitely going in there as dotnet, cocoa and python. Compiled output goes to the out/ folder now, to prevent conflicts with a file and folder named bsnes, for instance.
123 lines
3.8 KiB
C++
123 lines
3.8 KiB
C++
#ifndef LIBSNES_HPP
|
|
#define LIBSNES_HPP
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define SNES_PORT_1 0
|
|
#define SNES_PORT_2 1
|
|
|
|
#define SNES_DEVICE_NONE 0
|
|
#define SNES_DEVICE_JOYPAD 1
|
|
#define SNES_DEVICE_MULTITAP 2
|
|
#define SNES_DEVICE_MOUSE 3
|
|
#define SNES_DEVICE_SUPER_SCOPE 4
|
|
#define SNES_DEVICE_JUSTIFIER 5
|
|
#define SNES_DEVICE_JUSTIFIERS 6
|
|
|
|
#define SNES_DEVICE_ID_JOYPAD_B 0
|
|
#define SNES_DEVICE_ID_JOYPAD_Y 1
|
|
#define SNES_DEVICE_ID_JOYPAD_SELECT 2
|
|
#define SNES_DEVICE_ID_JOYPAD_START 3
|
|
#define SNES_DEVICE_ID_JOYPAD_UP 4
|
|
#define SNES_DEVICE_ID_JOYPAD_DOWN 5
|
|
#define SNES_DEVICE_ID_JOYPAD_LEFT 6
|
|
#define SNES_DEVICE_ID_JOYPAD_RIGHT 7
|
|
#define SNES_DEVICE_ID_JOYPAD_A 8
|
|
#define SNES_DEVICE_ID_JOYPAD_X 9
|
|
#define SNES_DEVICE_ID_JOYPAD_L 10
|
|
#define SNES_DEVICE_ID_JOYPAD_R 11
|
|
|
|
#define SNES_DEVICE_ID_MOUSE_X 0
|
|
#define SNES_DEVICE_ID_MOUSE_Y 1
|
|
#define SNES_DEVICE_ID_MOUSE_LEFT 2
|
|
#define SNES_DEVICE_ID_MOUSE_RIGHT 3
|
|
|
|
#define SNES_DEVICE_ID_SUPER_SCOPE_X 0
|
|
#define SNES_DEVICE_ID_SUPER_SCOPE_Y 1
|
|
#define SNES_DEVICE_ID_SUPER_SCOPE_TRIGGER 2
|
|
#define SNES_DEVICE_ID_SUPER_SCOPE_CURSOR 3
|
|
#define SNES_DEVICE_ID_SUPER_SCOPE_TURBO 4
|
|
#define SNES_DEVICE_ID_SUPER_SCOPE_PAUSE 5
|
|
|
|
#define SNES_DEVICE_ID_JUSTIFIER_X 0
|
|
#define SNES_DEVICE_ID_JUSTIFIER_Y 1
|
|
#define SNES_DEVICE_ID_JUSTIFIER_TRIGGER 2
|
|
#define SNES_DEVICE_ID_JUSTIFIER_START 3
|
|
|
|
#define SNES_MEMORY_CARTRIDGE_RAM 0
|
|
#define SNES_MEMORY_CARTRIDGE_RTC 1
|
|
#define SNES_MEMORY_BSX_RAM 2
|
|
#define SNES_MEMORY_BSX_PRAM 3
|
|
#define SNES_MEMORY_SUFAMI_TURBO_A_RAM 4
|
|
#define SNES_MEMORY_SUFAMI_TURBO_B_RAM 5
|
|
#define SNES_MEMORY_GAME_BOY_RAM 6
|
|
#define SNES_MEMORY_GAME_BOY_RTC 7
|
|
|
|
typedef void (*snes_video_refresh_t)(const uint16_t *data, unsigned width, unsigned height);
|
|
typedef void (*snes_audio_sample_t)(uint16_t left, uint16_t right);
|
|
typedef void (*snes_input_poll_t)(void);
|
|
typedef int16_t (*snes_input_state_t)(bool port, unsigned device, unsigned index, unsigned id);
|
|
|
|
unsigned snes_library_revision_major(void);
|
|
unsigned snes_library_revision_minor(void);
|
|
|
|
void snes_set_video_refresh(snes_video_refresh_t);
|
|
void snes_set_audio_sample(snes_audio_sample_t);
|
|
void snes_set_input_poll(snes_input_poll_t);
|
|
void snes_set_input_state(snes_input_state_t);
|
|
|
|
void snes_set_controller_port_device(bool port, unsigned device);
|
|
|
|
void snes_init(void);
|
|
void snes_term(void);
|
|
void snes_power(void);
|
|
void snes_reset(void);
|
|
void snes_run(void);
|
|
|
|
unsigned snes_serialize_size(void);
|
|
bool snes_serialize(uint8_t *data, unsigned size);
|
|
bool snes_unserialize(const uint8_t *data, unsigned size);
|
|
|
|
void snes_cheat_reset(void);
|
|
void snes_cheat_set(unsigned index, bool enabled, const char *code);
|
|
|
|
bool snes_load_cartridge_normal(
|
|
const char *rom_xml, const uint8_t *rom_data, unsigned rom_size
|
|
);
|
|
|
|
bool snes_load_cartridge_bsx_slotted(
|
|
const char *rom_xml, const uint8_t *rom_data, unsigned rom_size,
|
|
const char *bsx_xml, const uint8_t *bsx_data, unsigned bsx_size
|
|
);
|
|
|
|
bool snes_load_cartridge_bsx(
|
|
const char *rom_xml, const uint8_t *rom_data, unsigned rom_size,
|
|
const char *bsx_xml, const uint8_t *bsx_data, unsigned bsx_size
|
|
);
|
|
|
|
bool snes_load_cartridge_sufami_turbo(
|
|
const char *rom_xml, const uint8_t *rom_data, unsigned rom_size,
|
|
const char *sta_xml, const uint8_t *sta_data, unsigned sta_size,
|
|
const char *stb_xml, const uint8_t *stb_data, unsigned stb_size
|
|
);
|
|
|
|
bool snes_load_cartridge_super_game_boy(
|
|
const char *rom_xml, const uint8_t *rom_data, unsigned rom_size,
|
|
const char *dmg_xml, const uint8_t *dmg_data, unsigned dmg_size
|
|
);
|
|
|
|
void snes_unload_cartridge(void);
|
|
|
|
bool snes_get_region(void);
|
|
uint8_t* snes_get_memory_data(unsigned id);
|
|
unsigned snes_get_memory_size(unsigned id);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|