Commit 4fb8ce28 authored by Screwtape's avatar Screwtape

Update to v104r12 release.

byuu says:

Changelog:

  - higan: URLs updated to HTTPS
  - sfc/ppu/background: use hires/interlace/mosaic-adjusted X/Y
    coordinates for offset-per-tile mode
  - sfc/ppu/background: hires mosaic seems to advance pixel counter on
    subscreen pixels
  - tomoko: added “Help→Credits” menu option (currently the page does
    not exist; should before v105)
  - tomoko: reduced volume slider from {0% - 500%} to {0% - 200%}.
    Distortion is too intense above 200%.
      - technically, I've encountered distortion at 200% as well in
        Prince of Persia for the SNES
  - nall/run/invoke: use program path for working directory
      - allows you to choose “Library→Import ROMs” from a different
        directory on the command-line

I don't know how to assign credit for the mosaic stuff. It's been a
work-in-progress with me, Cydrak, and hex_usr.

The current design should be correct, but very unpleasant. The code
desperately needs to be refactored, but my recent attempt at doing so
ended in spectacular failure.
parent 3dce3aa3
......@@ -12,10 +12,10 @@ using namespace nall;
namespace Emulator {
static const string Name = "higan";
static const string Version = "104.11";
static const string Version = "104.12";
static const string Author = "byuu";
static const string License = "GPLv3";
static const string Website = "http://byuu.org/";
static const string Website = "https://byuu.org/";
//incremented only when serialization format changes
static const string SerializerVersion = "104";
......
......@@ -84,7 +84,7 @@ auto PPU::Background::getTile() -> void {
uint voffset = vscroll + py;
if(ppu.io.bgMode == 2 || ppu.io.bgMode == 4 || ppu.io.bgMode == 6) {
uint16 offsetX = x + (hscroll & 7);
uint16 offsetX = px + (hscroll & 7);
if(offsetX >= 8) {
uint hval = ppu.bg3.getTile((offsetX - 8) + (ppu.bg3.hoffset() & ~7), ppu.bg3.voffset() + 0);
......@@ -96,12 +96,12 @@ auto PPU::Background::getTile() -> void {
if((hval & 0x8000) == 0) {
hoffset = offsetX + (hval & ~7);
} else {
voffset = y + hval;
voffset = py + hval;
}
}
} else {
if(hval & validMask) hoffset = offsetX + (hval & ~7);
if(vval & validMask) voffset = y + vval;
if(vval & validMask) voffset = py + vval;
}
}
}
......@@ -175,9 +175,9 @@ auto PPU::Background::run(bool screen) -> void {
pixel.tile = tile;
if(x == 0) {
mosaic.hcounter = 1;
mosaic.hcounter = mosaic.size + 1;
mosaic.pixel = pixel;
} else if(x >= 1 && screen == Screen::Above && --mosaic.hcounter == 0) {
} else if((!hires() || screen == Screen::Below) && --mosaic.hcounter == 0) {
mosaic.hcounter = mosaic.size + 1;
mosaic.pixel = pixel;
} else if(mosaic.enable) {
......
......@@ -136,7 +136,10 @@ Presentation::Presentation() {
helpMenu.setText("Help");
documentation.setText("Documentation ...").onActivate([&] {
invoke("http://doc.byuu.org/higan/");
invoke("https://doc.byuu.org/higan/");
});
credits.setText("Credits ...").onActivate([&] {
invoke("https://doc.byuu.org/higan/credits/");
});
about.setText("About ...").onActivate([&] {
aboutWindow->setVisible().setFocused();
......
......@@ -68,6 +68,7 @@ struct Presentation : Window {
MenuItem manifestViewer{&toolsMenu};
Menu helpMenu{&menuBar};
MenuItem documentation{&helpMenu};
MenuItem credits{&helpMenu};
MenuItem about{&helpMenu};
FixedLayout layout{this};
......
......@@ -42,7 +42,7 @@ AudioSettings::AudioSettings(TabFrame* parent) : TabFrameItem(parent) {
volumeLabel.setText("Volume:");
volumeValue.setAlignment(0.5);
volumeSlider.setLength(501).setPosition(settings["Audio/Volume"].natural()).onChange([&] { updateEffects(); });
volumeSlider.setLength(201).setPosition(settings["Audio/Volume"].natural()).onChange([&] { updateEffects(); });
balanceLabel.setText("Balance:");
balanceValue.setAlignment(0.5);
......
......@@ -192,7 +192,8 @@ template<typename... P> inline auto invoke(const string& name, P&&... p) -> void
string_vector argl(forward<P>(p)...);
for(auto& arg : argl) if(arg.find(" ")) arg = {"\"", arg, "\""};
string arguments = argl.merge(" ");
ShellExecute(nullptr, nullptr, utf16_t(name), utf16_t(arguments), nullptr, SW_SHOWNORMAL);
string directory = Path::program().replace("/", "\\");
ShellExecute(nullptr, nullptr, utf16_t(name), utf16_t(arguments), utf16_t(directory), SW_SHOWNORMAL);
}
#else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment