mirror of https://github.com/bsnes-emu/bsnes.git
Update to bsnes v063r14 release.
- libsnes updated ... should be the official syntax now, I don't expect any more changes - added kode54's patch for HQ2x - NOT going to add the libjma Windows Unicode fix, I want something more elegant than hijacking all of std::ifstream, so that can wait for now - fixed status.irq_lock for Power Rangers - went back to blargg's 1.024MHz S-DSP for the fast build - updated mightymo's cheat pack to the latest version
This commit is contained in:
parent
65ff00e28a
commit
7227107d5e
Binary file not shown.
Binary file not shown.
6000
src/data/cheats.xml
6000
src/data/cheats.xml
File diff suppressed because it is too large
Load Diff
|
@ -1,4 +1,4 @@
|
|||
snes_core = sMemory sCPU sSMP aDSP bPPU
|
||||
snes_core = sMemory sCPU sSMP sDSP bPPU
|
||||
|
||||
snes_objects := libco
|
||||
snes_objects += snes-system
|
||||
|
|
|
@ -8,6 +8,7 @@ unsigned sCPU::dma_counter() {
|
|||
}
|
||||
|
||||
void sCPU::add_clocks(unsigned clocks) {
|
||||
status.irq_lock = false;
|
||||
unsigned ticks = clocks >> 1;
|
||||
while(ticks--) {
|
||||
tick();
|
||||
|
@ -142,12 +143,9 @@ void sCPU::dma_edge() {
|
|||
//status.irq_lock is used to simulate hardware delay before interrupts can
|
||||
//trigger during certain events (immediately after DMA, writes to $4200, etc)
|
||||
void sCPU::last_cycle() {
|
||||
if(status.irq_lock) {
|
||||
status.irq_lock = false;
|
||||
} else {
|
||||
if(status.irq_lock == false) {
|
||||
status.nmi_pending |= nmi_test();
|
||||
status.irq_pending |= irq_test();
|
||||
|
||||
status.interrupt_pending = (status.nmi_pending || status.irq_pending);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,6 +52,10 @@ void snes_set_input_state(snes_input_state_t input_state) {
|
|||
interface.pinput_state = input_state;
|
||||
}
|
||||
|
||||
void snes_set_controller_port_device(bool port, unsigned device) {
|
||||
SNES::input.port_set_device(port, (SNES::Input::Device)device);
|
||||
}
|
||||
|
||||
void snes_init() {
|
||||
SNES::system.init(&interface);
|
||||
SNES::input.port_set_device(0, SNES::Input::Device::Joypad);
|
||||
|
@ -70,19 +74,12 @@ void snes_run() {
|
|||
SNES::system.run();
|
||||
}
|
||||
|
||||
void snes_runtosave() {
|
||||
SNES::system.runtosave();
|
||||
}
|
||||
|
||||
void snes_set_controller_port_device(bool port, unsigned device) {
|
||||
SNES::input.port_set_device(port, (SNES::Input::Device)device);
|
||||
}
|
||||
|
||||
unsigned snes_serialize_size() {
|
||||
return SNES::system.serialize_size();
|
||||
}
|
||||
|
||||
bool snes_serialize(uint8_t *data, unsigned size) {
|
||||
SNES::system.runtosave();
|
||||
serializer s = SNES::system.serialize();
|
||||
if(s.size() > size) return false;
|
||||
memcpy(data, s.data(), s.size());
|
||||
|
@ -106,8 +103,9 @@ void snes_cheat_set(unsigned index, bool enabled, const char *code) {
|
|||
}
|
||||
|
||||
void snes_load_cartridge_normal(
|
||||
const char *rom_xml, uint8_t *rom_data, unsigned rom_size
|
||||
const char *rom_xml, const uint8_t *rom_data, unsigned rom_size
|
||||
) {
|
||||
SNES::cheat.reset();
|
||||
SNES::memory::cartrom.copy(rom_data, rom_size);
|
||||
string xmlrom = rom_xml ? string(rom_xml) : snes_information(rom_data, rom_size).xml_memory_map;
|
||||
SNES::cartridge.load(SNES::Cartridge::Mode::Normal, { xmlrom });
|
||||
|
@ -115,9 +113,10 @@ void snes_load_cartridge_normal(
|
|||
}
|
||||
|
||||
void snes_load_cartridge_bsx_slotted(
|
||||
const char *rom_xml, uint8_t *rom_data, unsigned rom_size,
|
||||
const char *bsx_xml, uint8_t *bsx_data, unsigned bsx_size
|
||||
const char *rom_xml, const uint8_t *rom_data, unsigned rom_size,
|
||||
const char *bsx_xml, const uint8_t *bsx_data, unsigned bsx_size
|
||||
) {
|
||||
SNES::cheat.reset();
|
||||
SNES::memory::cartrom.copy(rom_data, rom_size);
|
||||
string xmlrom = rom_xml ? string(rom_xml) : snes_information(rom_data, rom_size).xml_memory_map;
|
||||
SNES::memory::bsxflash.copy(bsx_data, bsx_size);
|
||||
|
@ -127,9 +126,10 @@ void snes_load_cartridge_bsx_slotted(
|
|||
}
|
||||
|
||||
void snes_load_cartridge_bsx(
|
||||
const char *rom_xml, uint8_t *rom_data, unsigned rom_size,
|
||||
const char *bsx_xml, uint8_t *bsx_data, unsigned bsx_size
|
||||
const char *rom_xml, const uint8_t *rom_data, unsigned rom_size,
|
||||
const char *bsx_xml, const uint8_t *bsx_data, unsigned bsx_size
|
||||
) {
|
||||
SNES::cheat.reset();
|
||||
SNES::memory::cartrom.copy(rom_data, rom_size);
|
||||
string xmlrom = rom_xml ? string(rom_xml) : snes_information(rom_data, rom_size).xml_memory_map;
|
||||
SNES::memory::bsxflash.copy(bsx_data, bsx_size);
|
||||
|
@ -139,10 +139,11 @@ void snes_load_cartridge_bsx(
|
|||
}
|
||||
|
||||
void snes_load_cartridge_sufami_turbo(
|
||||
const char *rom_xml, uint8_t *rom_data, unsigned rom_size,
|
||||
const char *sta_xml, uint8_t *sta_data, unsigned sta_size,
|
||||
const char *stb_xml, uint8_t *stb_data, unsigned stb_size
|
||||
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
|
||||
) {
|
||||
SNES::cheat.reset();
|
||||
SNES::memory::cartrom.copy(rom_data, rom_size);
|
||||
string xmlrom = rom_xml ? string(rom_xml) : snes_information(rom_data, rom_size).xml_memory_map;
|
||||
SNES::memory::stArom.copy(sta_data, sta_size);
|
||||
|
@ -154,9 +155,10 @@ void snes_load_cartridge_sufami_turbo(
|
|||
}
|
||||
|
||||
void snes_load_cartridge_super_game_boy(
|
||||
const char *rom_xml, uint8_t *rom_data, unsigned rom_size,
|
||||
const char *dmg_xml, uint8_t *dmg_data, unsigned dmg_size
|
||||
const char *rom_xml, const uint8_t *rom_data, unsigned rom_size,
|
||||
const char *dmg_xml, const uint8_t *dmg_data, unsigned dmg_size
|
||||
) {
|
||||
SNES::cheat.reset();
|
||||
SNES::memory::cartrom.copy(rom_data, rom_size);
|
||||
string xmlrom = rom_xml ? string(rom_xml) : snes_information(rom_data, rom_size).xml_memory_map;
|
||||
SNES::memory::gbrom.copy(dmg_data, dmg_size);
|
||||
|
@ -165,19 +167,39 @@ void snes_load_cartridge_super_game_boy(
|
|||
SNES::system.power();
|
||||
}
|
||||
|
||||
uint8_t* snes_get_cartridge_ram_data() { return SNES::memory::cartram.data(); }
|
||||
unsigned snes_get_cartridge_ram_size() { return SNES::memory::cartram.size(); }
|
||||
uint8_t* snes_get_cartridge_rtc_data() { return SNES::memory::cartrtc.data(); }
|
||||
unsigned snes_get_cartridge_rtc_size() { return SNES::memory::cartrtc.size(); }
|
||||
uint8_t* snes_get_bsx_ram_data() { return SNES::memory::bsxram.data(); }
|
||||
unsigned snes_get_bsx_ram_size() { return SNES::memory::bsxram.size(); }
|
||||
uint8_t* snes_get_bsx_pram_data() { return SNES::memory::bsxpram.data(); }
|
||||
unsigned snes_get_bsx_pram_size() { return SNES::memory::bsxpram.size(); }
|
||||
uint8_t* snes_get_sufami_turbo_a_ram_data() { return SNES::memory::stAram.data(); }
|
||||
unsigned snes_get_sufami_turbo_a_ram_size() { return SNES::memory::stAram.size(); }
|
||||
uint8_t* snes_get_sufami_turbo_b_ram_data() { return SNES::memory::stBram.data(); }
|
||||
unsigned snes_get_sufami_turbo_b_ram_size() { return SNES::memory::stBram.size(); }
|
||||
uint8_t* snes_get_game_boy_ram_data() { return SNES::memory::gbram.data(); }
|
||||
unsigned snes_get_game_boy_ram_size() { return SNES::memory::gbram.size(); }
|
||||
uint8_t* snes_get_game_boy_rtc_data() { return SNES::memory::gbrtc.data(); }
|
||||
unsigned snes_get_game_boy_rtc_size() { return SNES::memory::gbrtc.size(); }
|
||||
#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
|
||||
|
||||
uint8_t* snes_get_memory_data(unsigned id) {
|
||||
switch(id) {
|
||||
case SNES_MEMORY_CARTRIDGE_RAM: return SNES::memory::cartram.data();
|
||||
case SNES_MEMORY_CARTRIDGE_RTC: return SNES::memory::cartrtc.data();
|
||||
case SNES_MEMORY_BSX_RAM: return SNES::memory::bsxram.data();
|
||||
case SNES_MEMORY_BSX_PRAM: return SNES::memory::bsxpram.data();
|
||||
case SNES_MEMORY_SUFAMI_TURBO_A_RAM: return SNES::memory::stAram.data();
|
||||
case SNES_MEMORY_SUFAMI_TURBO_B_RAM: return SNES::memory::stBram.data();
|
||||
case SNES_MEMORY_GAME_BOY_RAM: return SNES::memory::gbram.data();
|
||||
case SNES_MEMORY_GAME_BOY_RTC: return SNES::memory::gbrtc.data();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned snes_get_memory_size(unsigned id) {
|
||||
switch(id) {
|
||||
case SNES_MEMORY_CARTRIDGE_RAM: return SNES::memory::cartram.size();
|
||||
case SNES_MEMORY_CARTRIDGE_RTC: return SNES::memory::cartrtc.size();
|
||||
case SNES_MEMORY_BSX_RAM: return SNES::memory::bsxram.size();
|
||||
case SNES_MEMORY_BSX_PRAM: return SNES::memory::bsxpram.size();
|
||||
case SNES_MEMORY_SUFAMI_TURBO_A_RAM: return SNES::memory::stAram.size();
|
||||
case SNES_MEMORY_SUFAMI_TURBO_B_RAM: return SNES::memory::stBram.size();
|
||||
case SNES_MEMORY_GAME_BOY_RAM: return SNES::memory::gbram.size();
|
||||
case SNES_MEMORY_GAME_BOY_RTC: return SNES::memory::gbrtc.size();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -4,25 +4,70 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
unsigned snes_library_revision();
|
||||
#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)(uint16_t *data, unsigned pitch, unsigned *line, unsigned width, unsigned height);
|
||||
#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
|
||||
|
||||
typedef void (*snes_video_refresh_t)(const uint16_t *data, unsigned pitch, const unsigned *line, unsigned width, unsigned height);
|
||||
typedef void (*snes_audio_sample_t)(uint16_t left, uint16_t right);
|
||||
typedef void (*snes_input_poll_t)();
|
||||
typedef int16_t (*snes_input_state_t)(bool port, unsigned device, unsigned index, unsigned id);
|
||||
|
||||
unsigned snes_library_revision();
|
||||
|
||||
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 snes_term();
|
||||
void snes_unload();
|
||||
void snes_run();
|
||||
void snes_runtosave();
|
||||
|
||||
void snes_set_controller_port_device(bool port, unsigned device);
|
||||
|
||||
unsigned snes_serialize_size();
|
||||
bool snes_serialize(uint8_t *data, unsigned size);
|
||||
|
@ -32,46 +77,32 @@ void snes_cheat_reset();
|
|||
void snes_cheat_set(unsigned index, bool enabled, const char *code);
|
||||
|
||||
void snes_load_cartridge_normal(
|
||||
const char *rom_xml, uint8_t *rom_data, unsigned rom_size
|
||||
const char *rom_xml, const uint8_t *rom_data, unsigned rom_size
|
||||
);
|
||||
|
||||
void snes_load_cartridge_bsx_slotted(
|
||||
const char *rom_xml, uint8_t *rom_data, unsigned rom_size,
|
||||
const char *bsx_xml, uint8_t *bsx_data, unsigned bsx_size
|
||||
const char *rom_xml, const uint8_t *rom_data, unsigned rom_size,
|
||||
const char *bsx_xml, const uint8_t *bsx_data, unsigned bsx_size
|
||||
);
|
||||
|
||||
void snes_load_cartridge_bsx(
|
||||
const char *rom_xml, uint8_t *rom_data, unsigned rom_size,
|
||||
const char *bsx_xml, uint8_t *bsx_data, unsigned bsx_size
|
||||
const char *rom_xml, const uint8_t *rom_data, unsigned rom_size,
|
||||
const char *bsx_xml, const uint8_t *bsx_data, unsigned bsx_size
|
||||
);
|
||||
|
||||
void snes_load_cartridge_sufami_turbo(
|
||||
const char *rom_xml, uint8_t *rom_data, unsigned rom_size,
|
||||
const char *sta_xml, uint8_t *sta_data, unsigned sta_size,
|
||||
const char *stb_xml, uint8_t *stb_data, unsigned stb_size
|
||||
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
|
||||
);
|
||||
|
||||
void snes_load_cartridge_super_game_boy(
|
||||
const char *rom_xml, uint8_t *rom_data, unsigned rom_size,
|
||||
const char *dmg_xml, uint8_t *dmg_data, unsigned dmg_size
|
||||
const char *rom_xml, const uint8_t *rom_data, unsigned rom_size,
|
||||
const char *dmg_xml, const uint8_t *dmg_data, unsigned dmg_size
|
||||
);
|
||||
|
||||
uint8_t* snes_get_cartridge_ram_data();
|
||||
unsigned snes_get_cartridge_ram_size();
|
||||
uint8_t* snes_get_cartridge_rtc_data();
|
||||
unsigned snes_get_cartridge_rtc_size();
|
||||
uint8_t* snes_get_bsx_ram_data();
|
||||
unsigned snes_get_bsx_ram_size();
|
||||
uint8_t* snes_get_bsx_pram_data();
|
||||
unsigned snes_get_bsx_pram_size();
|
||||
uint8_t* snes_get_sufami_turbo_a_ram_data();
|
||||
unsigned snes_get_sufami_turbo_a_ram_size();
|
||||
uint8_t* snes_get_sufami_turbo_b_ram_data();
|
||||
unsigned snes_get_sufami_turbo_b_ram_size();
|
||||
uint8_t* snes_get_game_boy_ram_data();
|
||||
unsigned snes_get_game_boy_ram_size();
|
||||
uint8_t* snes_get_game_boy_rtc_data();
|
||||
unsigned snes_get_game_boy_rtc_size();
|
||||
uint8_t* snes_get_memory_data(unsigned id);
|
||||
unsigned snes_get_memory_size(unsigned id);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ void MappedRAM::map(uint8 *source, unsigned length) {
|
|||
size_ = data_ && length > 0 ? length : -1U;
|
||||
}
|
||||
|
||||
void MappedRAM::copy(uint8 *data, unsigned size) {
|
||||
void MappedRAM::copy(const uint8 *data, unsigned size) {
|
||||
if(!data_) {
|
||||
size_ = (size & ~255) + ((bool)(size & 255) << 8);
|
||||
data_ = new uint8[size_]();
|
||||
|
|
|
@ -40,7 +40,7 @@ private:
|
|||
struct MappedRAM : Memory {
|
||||
inline void reset();
|
||||
inline void map(uint8*, unsigned);
|
||||
inline void copy(uint8*, unsigned);
|
||||
inline void copy(const uint8*, unsigned);
|
||||
|
||||
inline void write_protect(bool status);
|
||||
inline uint8* data();
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
static const char bsnesVersion[] = "063.13";
|
||||
static const char bsnesVersion[] = "063.14";
|
||||
static const char bsnesTitle[] = "bsnes";
|
||||
static const unsigned bsnesSerializerVersion = 10;
|
||||
|
||||
#define CORE_SMEMORY
|
||||
#define CORE_SCPU
|
||||
#define CORE_SSMP
|
||||
#define CORE_ADSP
|
||||
#define CORE_SDSP
|
||||
#define CORE_BPPU
|
||||
|
||||
//S-DSP can be encapsulated into a state machine using #define magic
|
||||
|
|
|
@ -13,8 +13,8 @@ MemoryEditor::MemoryEditor() {
|
|||
setLayout(layout);
|
||||
|
||||
editor = new HexEditor;
|
||||
editor->reader = bind(&MemoryEditor::reader, this);
|
||||
editor->writer = bind(&MemoryEditor::writer, this);
|
||||
editor->reader = { &MemoryEditor::reader, this };
|
||||
editor->writer = { &MemoryEditor::writer, this };
|
||||
editor->setFont(QFont(Style::Monospace));
|
||||
editor->setMinimumWidth((editor->lineWidth() + 3) * editor->fontMetrics().width(' '));
|
||||
editor->setMinimumHeight((16 + 1) * editor->fontMetrics().height());
|
||||
|
|
|
@ -63,8 +63,8 @@ Tracer::Tracer() {
|
|||
traceMaskCPU = new uint8_t[(1 << 24) >> 3]();
|
||||
traceMaskSMP = new uint8_t[(1 << 16) >> 3]();
|
||||
|
||||
SNES::cpu.step_event = bind(&Tracer::stepCpu, this);
|
||||
SNES::smp.step_event = bind(&Tracer::stepSmp, this);
|
||||
SNES::cpu.step_event = { &Tracer::stepCpu, this };
|
||||
SNES::smp.step_event = { &Tracer::stepSmp, this };
|
||||
}
|
||||
|
||||
Tracer::~Tracer() {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
SDL_Surface *screen, *backbuffer;
|
||||
|
||||
void video_refresh(uint16_t *data, unsigned pitch, unsigned *line, unsigned width, unsigned height) {
|
||||
void video_refresh(const uint16_t *data, unsigned pitch, const unsigned *line, unsigned width, unsigned height) {
|
||||
if(SDL_MUSTLOCK(screen)) SDL_LockSurface(screen);
|
||||
if(SDL_MUSTLOCK(backbuffer)) SDL_LockSurface(backbuffer);
|
||||
|
||||
|
@ -38,19 +38,20 @@ int16_t input_state(bool port, unsigned device, unsigned index, unsigned id) {
|
|||
uint8_t *state = SDL_GetKeyState(0);
|
||||
|
||||
if(port == 0) {
|
||||
//B, Y, Select, Start, Up, Down, Left, Right, A, X, L, R
|
||||
if(id == 0) return state[SDLK_z];
|
||||
if(id == 1) return state[SDLK_a];
|
||||
if(id == 2) return state[SDLK_RSHIFT];
|
||||
if(id == 3) return state[SDLK_RETURN];
|
||||
if(id == 4) return state[SDLK_UP];
|
||||
if(id == 5) return state[SDLK_DOWN] & !state[SDLK_UP];
|
||||
if(id == 6) return state[SDLK_LEFT];
|
||||
if(id == 7) return state[SDLK_RIGHT] & !state[SDLK_LEFT];
|
||||
if(id == 8) return state[SDLK_x];
|
||||
if(id == 9) return state[SDLK_s];
|
||||
if(id == 10) return state[SDLK_d];
|
||||
if(id == 11) return state[SDLK_c];
|
||||
if(device == SNES_DEVICE_JOYPAD) {
|
||||
if(id == SNES_DEVICE_ID_JOYPAD_B) return state[SDLK_z];
|
||||
if(id == SNES_DEVICE_ID_JOYPAD_Y) return state[SDLK_a];
|
||||
if(id == SNES_DEVICE_ID_JOYPAD_SELECT) return state[SDLK_RSHIFT];
|
||||
if(id == SNES_DEVICE_ID_JOYPAD_START) return state[SDLK_RETURN];
|
||||
if(id == SNES_DEVICE_ID_JOYPAD_UP) return state[SDLK_UP];
|
||||
if(id == SNES_DEVICE_ID_JOYPAD_DOWN) return state[SDLK_DOWN] & !state[SDLK_UP];
|
||||
if(id == SNES_DEVICE_ID_JOYPAD_LEFT) return state[SDLK_LEFT];
|
||||
if(id == SNES_DEVICE_ID_JOYPAD_RIGHT) return state[SDLK_RIGHT] & !state[SDLK_LEFT];
|
||||
if(id == SNES_DEVICE_ID_JOYPAD_A) return state[SDLK_x];
|
||||
if(id == SNES_DEVICE_ID_JOYPAD_X) return state[SDLK_s];
|
||||
if(id == SNES_DEVICE_ID_JOYPAD_L) return state[SDLK_d];
|
||||
if(id == SNES_DEVICE_ID_JOYPAD_R) return state[SDLK_c];
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -88,10 +89,8 @@ int main(int argc, char *argv[]) {
|
|||
|
||||
unsigned serial_size = snes_serialize_size();
|
||||
uint8_t *serial_data = new uint8_t[serial_size];
|
||||
snes_runtosave();
|
||||
snes_serialize(serial_data, serial_size);
|
||||
|
||||
snes_cheat_reset();
|
||||
//snes_cheat_set(0, true, "DD32-6DAD");
|
||||
|
||||
while(true) {
|
||||
|
@ -102,7 +101,6 @@ int main(int argc, char *argv[]) {
|
|||
if(event.key.keysym.sym == SDLK_ESCAPE) {
|
||||
break;
|
||||
} else if(event.key.keysym.sym == SDLK_F2) {
|
||||
snes_runtosave();
|
||||
snes_serialize(serial_data, serial_size);
|
||||
} else if(event.key.keysym.sym == SDLK_F4) {
|
||||
snes_unserialize(serial_data, serial_size);
|
||||
|
|
Loading…
Reference in New Issue