1. 21 Nov, 2017 2 commits
  2. 19 Nov, 2017 1 commit
    • Update to v106 release. · b55783c3
      byuu says:
      Changelog (since v105tr1):
        - added Emulation/AutoSaveMemory/Interval setting to specify number of
          seconds between auto-saves
        - added Game Notes tool
        - added 64 new SNES PAL games to the icarus preservation database
      The Games Notes tool is a new feature that gives you a blank text box to
      enter notes about a game that you're playing: so you can write down
      things like level select codes for games with save RAM, combo moves, or
      whatever other information you'd like quick and easy access to.
      This is kind of an experiment. Ideally, we'd wanna allow more
      personalized information, drawings, etc. But hey, let's try it out and
      see what people think.
      Screwtape committed
  3. 12 Nov, 2017 1 commit
  4. 11 Nov, 2017 2 commits
    • We don't need to override `compiler` when building. · 8d7d4525
      It seems on Windows, `compiler` has defaulted to `g++` for a while now,
      so we didn't need to override it in the `make` invocation.
      Since v105r01, `compiler` defaults to `g++` on Linux too, so we don't
      need to override it there either.
      Screwtape committed
    • Hack around some code-block formatting errors. · 56cb9c01
      By default, mkdocs uses "highlight.js" to apply syntax-highlighting
      to code blocks. Left to its own devices, highlight.js will guess the
      language being used in the code block, apply the "hljs" CSS class
      (so the code block will be given a nice border, a sensible font-size,
      etc.) and apply the appropriate formatting markup. If it guesses wrongly,
      you can give a language hint on the opening line of the block.
      If you use a language that highlight.js does not recognise, or
      the special name "nohighlight", highlight.js will leave the block
      alone. Unfortunately, in mkdocs' default theme, that means it will be
      formatted like *inline* code, with a border and background that wraps
      behind each line of the block.
      In order to make a code-block that looks like a code-block, you have
      to carefully pick a language that highlight.js has heard of, but whose
      syntax is sufficiently different from whatever's in the block that no
      unwanted highlighting will occur.
      This seems to be fixed in the readthedocs theme that comes with mkdocs
      0.16.1, but ReadTheDocs doesn't actually seem to be using that version. :/
      Screwtape committed
  5. 06 Nov, 2017 1 commit
    • Update to v105r1 release. · e9d2d56d
      byuu says:
        - higan: readded support for soft-reset to Famicom, Super Famicom,
          Mega Drive cores (work in progress)
            - handhelds lack soft reset obviously
            - the PC Engine also lacks a physical reset button
            - the Master System's reset button acts like a gamepad button, so
              can't show up in the menu
        - Mega Drive: power cycle wasn't initializing CPU (M68K) or APU (Z80)
        - Super Famicom: fix SPC700 opcode 0x3b regression; fixes Majuu Ou
          [Jonas Quinn]
        - Super Famicom: fix SharpRTC save regression; fixes Dai Kaijuu
          Monogatari II's real-time clock [Talarubi]
        - Super Famicom: fix EpsonRTC save regression; fixes Tengai Makyou
          Zero's real-time clock [Talarubi]
        - Super Famicom: removed `*::init()` functions, as they were never used
        - Super Famicom: removed all but two `*::load()` functions, as they
          were not used
        - higan: added option to auto-save backup RAM every five seconds
          (enabled by default)
            - this is in case the emulator crashes, or there's a power outage;
              turn it off under advanced settings if you want
        - libco: updated license from public domain to ISC, for consistency
          with nall, ruby, hiro
        - nall: Linux compiler defaults to g++; override with g++-version if
          g++ is <= 4.8
            - FreeBSD compiler default is going to remain g++49 until my dev
              box OS ships with g++ >= 4.9
      Errata: I have weird RAM initialization constants, thanks to hex_usr
      and onethirdxcubed for both finding this:
      I'll remove this in the next WIP.
      Screwtape committed
  6. 27 Oct, 2017 4 commits
  7. 25 Oct, 2017 5 commits
  8. 23 Oct, 2017 1 commit
  9. 08 Oct, 2017 8 commits
  10. 07 Oct, 2017 2 commits
    • Update to v105 release. · f8e71b50
      byuu says:
      This release provides several major improvements to Mega Drive emulation
      which enhances compatibility a good deal. It also includes important
      Super Famicom mosaic emulation improvements, plus a much-needed SuperFX
      save state issue fix.
      Changelog (since v104):
        - higan: many improvements to Emulator::Interface to support
        - higan: refreshed program icon
        - icarus: new program icon
        - Game Boy Advance: slight emulation speedup over v104
        - Game Boy Advance: synchronize APU FIFO updates better
        - Mega Drive: added automatic region detection [hex_usr]
        - Mega Drive: support 8-bit SRAM
        - Game Boy Advance: fixed bug when changing to THUMB mode via MSR
        - Master System: fix bug in backdrop color and background 0 priority
        - Mega Drive: backgrounds always update output priority bit [Cydrak]
        - Mega Drive: emulated interlaced video output
        - Mega Drive: emulated shadow/highlight mode [Cydrak]
        - Super Famicom: auto joypad polling clears the shift register when
        - Super Famicom: added new low-entropy RAM initialization mode to more
          closely match hardware
        - Game Boy Advance: rumble will now time out after being left on for
        - ruby: improved rumble support in udev input driver [ma_rysia]
        - M68K: `move.b (a7)[+/-]` adjust a7 by two
        - M68K: illegal/lineA/lineF opcodes do not modify the stack register
        - Mega Drive: emulate VIP status bit
        - uPD7725: improved emulation of OV1/S1 flags [byuu, AWJ, Lord
        - uPD7725: improved handling of DP, RP updates [Jonas Quinn]
        - Super Famicom: improved emulation of mosaic effects in hires,
          interlace, and offset-per-tile modes [byuu, Cydrak]
        - ruby: improved Direct3D exclusive mode monitor selection [Cydrak]
        - Super Famicom: fixed save state bug affecting SuperFX games
        - Mega Drive: added workaround for Clang compiler bug; allowing this
          core to work on macOS [Cydrak, Sintendo]
        - higan: hotkeys now also trigger when the main window lacks focus yet
          higan is set to allow input on focus loss
        - higan: fixed an edge case where `int16_t`  `double` audio
          conversion could possibly result in overflows
        - higan: fixed a crash on macOS when choosing quit from the
          application menu [ncbncb]
      Changelog (since the previous WIP):
        - higan: restored `make console=true`
        - tomoko: if you allow input when main window focus is lost, hotkeys
          can now be triggered without focus as well
        - hiro/cocoa: fix crash on exit from menu [ncbncb]
        - ruby: smarter `double` → `int16_t` conversion to prevent
      Screwtape committed
  11. 05 Oct, 2017 1 commit
    • Update to v104r17 release. · 9a13863a
      byuu says:
        - processor/m68k: fix error in disassembler [Sintendo]
        - processor/m68k: work around Clang compiler bug [Cydrak, Sintendo]
      This is one of the shortest WIPs I've done, but I'm trying not to change
      anything before v105.
      Screwtape committed
  12. 02 Oct, 2017 1 commit
    • Update to v104r16 release. · 5dbaec85
      byuu says:
        - processor/upd96050: always potentially update S1 on ALU ops, sans NOP
            - theory by Lord Nightmare. I'm impartial on this one, but may as
              well match his design
        - sfc: fixed save state hang [reported by FitzRoy; fixed by Cydrak]
        - icarus: do not save settings.bml file when in library mode
      Screwtape committed
  13. 29 Sep, 2017 2 commits
    • Update to v104r15 release. · 6524a718
      byuu says:
        - processor/huc6280,mos6502,wdc65816: replaced abbreviated opcode
          names with descriptive names
        - nall: replaced `PLATFORM_MACOSX` define with `PLATFORM_MACOS`
        - icarus: added `Icarus::missing() -> string_vector` to list missing
          appended firmware files by name
        - ruby, hiro: fix macosx→macos references
      The processor instruction renaming was really about consistency with the
      other processor cores. I may still need to do this for one or two more
      The icarus change should allow a future release of the icarus
      application to import games with external SNES coprocessor firmware once
      again. It will also allow this to be possible when used in library mode.
      Screwtape committed
  14. 24 Sep, 2017 1 commit
    • Update to v104r14 release. · fbc58c70
      byuu says:
        - Emulator::Interface::videoResolution() -\> VideoResolution renamed
          to videoInformation() -\> VideoInformation
        - added double VideoInformation::refreshRate
        - higan: added `binary := (application|library)` — set this to
          `library` to produce a dynamic link library
        - higan: removed `-march=native` for macOS application builds; and for
          all library builds
        - higan: removed `console` build flag; uncomment  `link += -mwindows`
        - nall/GNUmakefile: `macosx` platform renamed `macos`
            - still need to do this for nall/intrinsics.hpp
        - Game Gear: return region=NTSC as the only option, so that the system
          frequency is always set correctly
        - hiro/cocoa: fixed typo [Sintendo]
        - hiro/Windows: removed GetDpiForMonitor, as it's Windows 8+ only; DPI
          is no longer per-monitor aware
        - icarus: core Icarus class now has virtual functions for
          directory::create, <file::exists>, <file::copy>, <file::write>
        - icarus: Sufami Turbo can import save RAM files now
        - icarus: setting `ICARUS_LIBRARY` define will compile icarus without
          main(), GUI components
        - ruby/video/Direct3D: choose the current monitor instead of top-left
          monitor for fullscreen exclusive [Cydrak]
        - ruby/video/Direct3D: do not set `WS_EX_TOPMOST` on fullscreen
          exclusive window [Cydrak]
            - this isn't necessary for exclusive mode, and it just makes
              getting out of the application more difficult
      Screwtape committed
  15. 12 Sep, 2017 1 commit
  16. 09 Sep, 2017 2 commits
  17. 08 Sep, 2017 1 commit
    • Update to v104r13 release. · 1ff31583
      byuu says:
        - nall/GNUmakefile: build=release changed to -O2, build=optimize is
          now -O3
        - hiro: added Monitor::dpi(uint index) → Position [returns logical
          DPI for x, y]
            - Position is a bad name, but dpi(monitor).(x,y)() make more sense
              than .(width,height)()
        - hiro: Position, Size, Geometry, Font changed from using signed int
          to float
        - hiro: Alignment changed from using double to float
        - hiro: added skeleton (unused) Application::scale(), setScale()
        - hiro/cocoa's Monitor::dpi() is untested. Probably will cause issues
          with macOS' automatic scaling.
        - hiro/gtk lacks a way to get both per-monitor and per-axis (x,y) DPI
        - hiro/qt lacks a way to get per-monitor DPI scaling (Qt 5.x has this,
          but I still use Qt 4.x)
            - and just to get global DPI, hiro/qt's DPI retrieval has to use
              undocumented functions ... fun
      The goal with this WIP was basically to prepare hiro for potential
      automatic scaling. It'll be extremely difficult, but I'm convinced that
      it must be possible if macOS can do it.
      By moving from signed integers to floats for coordinates, we can now
      scale and unscale without losing precision. That of course isn't the
      hard part, though. The hard part is where and how to do the scaling. In
      the ideal application, hiro/core and hiro/extension will handle 100% of
      this, and the per-platform hiro/(cocoa,gtk,qt,windows) will not be aware
      of what's going on, but ... to even make that possible, things will need
      to change in every per-platform core, eg the per-platform code will have
      to call a core function to change geometry, which will know about the
      scaling and unscale the values back down again.
      Gonna be a lot of work, but ... it's a start.
      Screwtape committed
  18. 06 Sep, 2017 2 commits
    • Update to v104r12 release. · 4fb8ce28
      byuu says:
        - 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.
      Screwtape committed
  19. 05 Sep, 2017 1 commit
    • Update to v104r11 release. · 3dce3aa3
      byuu says:
        - sfc/ppu/background: minor code cleanup and simplification
        - sfc/ppu/background: $2106 MOSAIC register was implemented
        - sfc/ppu/background: fixed mosaic effects in hires mode (temporary
        - sfc/ppu/background: fixed mosaic effects in interlace mode [Cydrak]
        - sfc/ppu/background/background.cpp:48: should be
          `if(!mosaic.enable) {`
      Turns out there is only one mosaic size, and the other four bits are
      per-BG mosaic enable. This matters a lot for hires/interlace, as
      mosaicSize=0 (2x2) is not the same thing as mosaicEnable=false (1x1).
      Although I've now implemented this, I really don't like how my mosaic
      implementation works right now. I tried to redesign the entire system,
      and completely failed. So I started over from v104r10 again and instead
      went with a more evolutionary improvement for now. I'll keep trying.
      Also, the combination of mosaic + offset-per-tile is still sketchy, as
      is mode 6 offset-per-tile. I'll get to those in the future as well.
      Screwtape committed
  20. 01 Sep, 2017 1 commit
    • Update to v104r10 release. · 28060d3a
      byuu says:
        - processor/upd96050: per manual errata note, SGN always uses SA1;
          never SB1 [fixes v104r09 regression]
        - processor/upd96050: new OV1/S1 calculation that doesn't require OV0
          history buffer [AWJ]
        - processor/upd96050: do not update DP in OP if DST=4 [Jonas Quinn]
        - processor/upd96050: do not update RP in OP if DST=5 [Jonas Quinn]
        - resource: recreated higan+icarus icons, higan logo as 32-bit PNGs
      So higan v104r08 and earlier were 930KiB for the source tarball. After
      creating new higan and icarus icons, the size jumped to 1090KiB, which
      was insane for only adding one additional icon.
      After digging into why, I discovered that ImageMagick defaults to
      64-bit!! (16-bits per channel) PNG images when converting from SVG.
      You know, for all those 16-bit per channel monitors that don't exist.
      Sigh. Amazingly, nobody ever noticed this.
      The logo went from 78.8KiB to 24.5KiB, which in turn also means the
      generated resource.cpp shrank dramatically.
      The old higan icon was 32-bit PNG, because it was created before I
      installed FreeBSD and switched to ImageMagick. But the new higan icon,
      plus the new icarus icon, were both 64-bit as well. And they're now
      So the new tarball size, thanks to the logo optimization, dropped to
      Cydrak had some really interesting results in converting higan's
      resources to 8-bit palletized PNGs with the tRNS extension for alpha
      transparency. It reduces the file sizes even more without much visual
      fidelity loss. Eg the higan logo uses 778 colors currently, and 256
      represents nearly all of it very well to the human eye. It's based off
      of only two colors, the rest are all anti-aliasing. Unfortunately,
      nall/image doesn't support this yet, and I didn't want to flatten the
      higan logo to not have transparency, in case I ever want to change the
      about screen background color.
      Screwtape committed