mirror of
https://github.com/libretro/bsnes-libretro-cplusplus98.git
synced 2025-04-16 00:50:24 +00:00
Update libsnes to v72
This commit is contained in:
parent
a0bd5b45b3
commit
3e96924d2f
@ -5,7 +5,7 @@ uint8 CPU::pio() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool CPU::joylatch() {
|
bool CPU::joylatch() {
|
||||||
return 0;
|
return status.joypad_strobe_latch;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CPU::interrupt_pending() {
|
bool CPU::interrupt_pending() {
|
||||||
|
@ -75,7 +75,7 @@ void PPU::render_line_mode7(uint8 pri0_pos, uint8 pri1_pos) {
|
|||||||
palette = memory::vram[(((tile << 6) + ((py & 7) << 3) + (px & 7)) << 1) + 1];
|
palette = memory::vram[(((tile << 6) + ((py & 7) << 3) + (px & 7)) << 1) + 1];
|
||||||
} break;
|
} break;
|
||||||
case 2: { //palette color 0 outside of screen area
|
case 2: { //palette color 0 outside of screen area
|
||||||
if(px < 0 || px > 1023 || py < 0 || py > 1023) {
|
if((px | py) & ~1023) {
|
||||||
palette = 0;
|
palette = 0;
|
||||||
} else {
|
} else {
|
||||||
px &= 1023;
|
px &= 1023;
|
||||||
@ -87,7 +87,7 @@ void PPU::render_line_mode7(uint8 pri0_pos, uint8 pri1_pos) {
|
|||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case 3: { //character 0 repetition outside of screen area
|
case 3: { //character 0 repetition outside of screen area
|
||||||
if(px < 0 || px > 1023 || py < 0 || py > 1023) {
|
if((px | py) & ~1023) {
|
||||||
tile = 0;
|
tile = 0;
|
||||||
} else {
|
} else {
|
||||||
px &= 1023;
|
px &= 1023;
|
||||||
|
@ -43,10 +43,10 @@ void PPU::Background::offset_per_tile(unsigned x, unsigned y, unsigned &hoffset,
|
|||||||
void PPU::Background::scanline() {
|
void PPU::Background::scanline() {
|
||||||
if(self.vcounter() == 1) {
|
if(self.vcounter() == 1) {
|
||||||
mosaic_vcounter = regs.mosaic + 1;
|
mosaic_vcounter = regs.mosaic + 1;
|
||||||
y = 1;
|
mosaic_voffset = 1;
|
||||||
} else if(--mosaic_vcounter == 0) {
|
} else if(--mosaic_vcounter == 0) {
|
||||||
mosaic_vcounter = regs.mosaic + 1;
|
mosaic_vcounter = regs.mosaic + 1;
|
||||||
y += regs.mosaic + 1;
|
mosaic_voffset += regs.mosaic + 1;
|
||||||
}
|
}
|
||||||
if(self.regs.display_disable) return;
|
if(self.regs.display_disable) return;
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ void PPU::Background::render() {
|
|||||||
hscroll = regs.hoffset;
|
hscroll = regs.hoffset;
|
||||||
vscroll = regs.voffset;
|
vscroll = regs.voffset;
|
||||||
|
|
||||||
unsigned y = Background::y;
|
unsigned y = (regs.mosaic == 0 ? self.vcounter() : mosaic_voffset);
|
||||||
if(hires) {
|
if(hires) {
|
||||||
hscroll <<= 1;
|
hscroll <<= 1;
|
||||||
if(self.regs.interlace) y = (y << 1) + self.field();
|
if(self.regs.interlace) y = (y << 1) + self.field();
|
||||||
|
@ -31,7 +31,6 @@ struct Background {
|
|||||||
const unsigned id;
|
const unsigned id;
|
||||||
unsigned opt_valid_bit;
|
unsigned opt_valid_bit;
|
||||||
|
|
||||||
unsigned y;
|
|
||||||
bool hires;
|
bool hires;
|
||||||
signed width;
|
signed width;
|
||||||
|
|
||||||
@ -48,6 +47,7 @@ struct Background {
|
|||||||
unsigned vscroll;
|
unsigned vscroll;
|
||||||
|
|
||||||
unsigned mosaic_vcounter;
|
unsigned mosaic_vcounter;
|
||||||
|
unsigned mosaic_voffset;
|
||||||
|
|
||||||
LayerWindow window;
|
LayerWindow window;
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ void PPU::Background::render_mode7() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 2: {
|
case 2: {
|
||||||
if(px < 0 || px > 1023 || py < 0 || py > 1023) {
|
if((px | py) & ~1023) {
|
||||||
palette = 0;
|
palette = 0;
|
||||||
} else {
|
} else {
|
||||||
px &= 1023;
|
px &= 1023;
|
||||||
@ -63,7 +63,7 @@ void PPU::Background::render_mode7() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 3: {
|
case 3: {
|
||||||
if(px < 0 || px > 1023 || py < 0 || py > 1023) {
|
if((px | py) & ~1023) {
|
||||||
tile = 0;
|
tile = 0;
|
||||||
} else {
|
} else {
|
||||||
px &= 1023;
|
px &= 1023;
|
||||||
|
@ -283,7 +283,7 @@ void PPU::mmio_write(unsigned addr, uint8 data) {
|
|||||||
|
|
||||||
switch(addr & 0xffff) {
|
switch(addr & 0xffff) {
|
||||||
case 0x2100: { //INIDISP
|
case 0x2100: { //INIDISP
|
||||||
if(regs.display_disable && vcounter() == display.height) oam.address_reset();
|
if(regs.display_disable && cpu.vcounter() == display.height) oam.address_reset();
|
||||||
regs.display_disable = data & 0x80;
|
regs.display_disable = data & 0x80;
|
||||||
regs.display_brightness = data & 0x0f;
|
regs.display_brightness = data & 0x0f;
|
||||||
return;
|
return;
|
||||||
|
@ -115,7 +115,6 @@ void PPU::Background::serialize(serializer &s) {
|
|||||||
s.integer(regs.main_enable);
|
s.integer(regs.main_enable);
|
||||||
s.integer(regs.sub_enable);
|
s.integer(regs.sub_enable);
|
||||||
|
|
||||||
s.integer(y);
|
|
||||||
s.integer(hires);
|
s.integer(hires);
|
||||||
s.integer(width);
|
s.integer(width);
|
||||||
|
|
||||||
@ -132,6 +131,7 @@ void PPU::Background::serialize(serializer &s) {
|
|||||||
s.integer(vscroll);
|
s.integer(vscroll);
|
||||||
|
|
||||||
s.integer(mosaic_vcounter);
|
s.integer(mosaic_vcounter);
|
||||||
|
s.integer(mosaic_voffset);
|
||||||
|
|
||||||
window.serialize(s);
|
window.serialize(s);
|
||||||
}
|
}
|
||||||
|
@ -17,9 +17,11 @@ Dsp1::Dsp1()
|
|||||||
uint8 Dsp1::getSr()
|
uint8 Dsp1::getSr()
|
||||||
{
|
{
|
||||||
mSrLowByteAccess = ~mSrLowByteAccess;
|
mSrLowByteAccess = ~mSrLowByteAccess;
|
||||||
if (mSrLowByteAccess)
|
//Overload: only high 8-bits are accessible externally
|
||||||
return 0;
|
//this is required for "Ace wo Nerae!"
|
||||||
else
|
// if (mSrLowByteAccess)
|
||||||
|
// return 0;
|
||||||
|
// else
|
||||||
return mSr;
|
return mSr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,8 +100,8 @@ private:
|
|||||||
uint8 wrdivb;
|
uint8 wrdivb;
|
||||||
|
|
||||||
//$4207-$420a
|
//$4207-$420a
|
||||||
uint10 hirq_pos;
|
uint9 hirq_pos;
|
||||||
uint10 virq_pos;
|
uint9 virq_pos;
|
||||||
|
|
||||||
//$420d
|
//$420d
|
||||||
unsigned rom_speed;
|
unsigned rom_speed;
|
||||||
|
@ -38,7 +38,7 @@ unsigned snes_library_revision_major(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsigned snes_library_revision_minor(void) {
|
unsigned snes_library_revision_minor(void) {
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void snes_set_video_refresh(snes_video_refresh_t video_refresh) {
|
void snes_set_video_refresh(snes_video_refresh_t video_refresh) {
|
||||||
@ -61,6 +61,10 @@ void snes_set_controller_port_device(bool port, unsigned device) {
|
|||||||
SNES::input.port_set_device(port, (SNES::Input::Device::e)device);
|
SNES::input.port_set_device(port, (SNES::Input::Device::e)device);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void snes_set_cartridge_basename(const char *basename) {
|
||||||
|
SNES::cartridge.basename = basename;
|
||||||
|
}
|
||||||
|
|
||||||
void snes_init(void) {
|
void snes_init(void) {
|
||||||
SNES::system.init(&interface);
|
SNES::system.init(&interface);
|
||||||
SNES::input.port_set_device(0, SNES::Input::Device::Joypad);
|
SNES::input.port_set_device(0, SNES::Input::Device::Joypad);
|
||||||
|
@ -205,6 +205,7 @@ void snes_set_input_state(snes_input_state_t);
|
|||||||
it safe to call this method from inside the input state callback?
|
it safe to call this method from inside the input state callback?
|
||||||
*/
|
*/
|
||||||
void snes_set_controller_port_device(bool port, unsigned device);
|
void snes_set_controller_port_device(bool port, unsigned device);
|
||||||
|
void snes_set_cartridge_basename(const char *basename);
|
||||||
|
|
||||||
// Initializes library
|
// Initializes library
|
||||||
void snes_init(void);
|
void snes_init(void);
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
namespace SNES {
|
namespace SNES {
|
||||||
namespace Info {
|
namespace Info {
|
||||||
static const char Name[] = "bsnes";
|
static const char Name[] = "bsnes";
|
||||||
static const char Version[] = "070";
|
static const char Version[] = "072";
|
||||||
static const unsigned SerializerVersion = 13;
|
static const unsigned SerializerVersion = 14;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,6 +92,9 @@ void System::init(Interface *interface_) {
|
|||||||
video.init();
|
video.init();
|
||||||
audio.init();
|
audio.init();
|
||||||
input.init();
|
input.init();
|
||||||
|
|
||||||
|
input.port_set_device(0, config.controller_port1.i);
|
||||||
|
input.port_set_device(1, config.controller_port2.i);
|
||||||
}
|
}
|
||||||
|
|
||||||
void System::term() {
|
void System::term() {
|
||||||
@ -173,8 +176,6 @@ void System::power() {
|
|||||||
|
|
||||||
scheduler.init();
|
scheduler.init();
|
||||||
|
|
||||||
input.port_set_device(0, config.controller_port1.i);
|
|
||||||
input.port_set_device(1, config.controller_port2.i);
|
|
||||||
input.update();
|
input.update();
|
||||||
//video.update();
|
//video.update();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user