1. 16 Jul, 2018 1 commit
    • Screwtape's avatar
      Update to v106r48 release. · 393c2395
      Screwtape authored
      byuu says:
      
      The problems with the Windows and Qt4 ports have all been resolved,
      although there's a fairly gross hack on a few Qt widgets to not destruct
      once Application::quit() is called to avoid a double free crash (I'm
      unsure where Qt is destructing the widgets internally.) The Cocoa port
      compiles again at least, though it's bound to have endless problems. I
      improved the Label painting in the GTK ports, which fixes the background
      color on labels inside TabFrame widgets.
      
      I've optimized the Makefile system even further.
      
      I added a "redo state" command to bsnes, which is created whenever you
      load the undo state. There are also hotkeys for both now, although I
      don't think they're really something you want to map hotkeys to.
      
      I moved the nall::Locale object inside hiro::Application, so that it can
      be used to translate the BrowserDialog and MessageDialog window strings.
      
      I improved the Super Game Boy emulation of `MLT_REQ`, fixing Pokemon
      Yellow's custom border and probably more stuff.
      
      Lots of other small fixes and improvements. Things are finally stable
      once again after the harrowing layout redesign catastrophe.
      
      Errata:
      
        - ICD::joypID should be set to 3 on reset(). joypWrite() may as well
          take uint1 instead of bool.
        - hiro/Qt: remove pWindow::setMaximumSize() comment; found a
          workaround for it
        - nall/GNUmakefile: don't set object.path if it's already set (allow
          overrides before including the file)
      393c2395
  2. 14 Jul, 2018 1 commit
    • Screwtape's avatar
      Update to v106r47 release. · 6090c639
      Screwtape authored
      byuu says:
      
      This is probably the largest code-change diff I've done in years.
      
      I spent four days working 10-16 hours a day reworking layouts in hiro
      completely.
      
      The result is we now have TableLayout, which will allow for better
      horizontal+vertical combined alignment.
      
      Windows, GTK2, and now GTK3 are fully supported.
      
      Windows is getting the initial window geometry wrong by a bit.
      
      GTK2 and GTK3 work perfectly. I basically abandoned trying to detect
      resize signals, and instead keep a list of all hiro windows that are
      allocated, and every time the main loop runs, it will query all of them
      to see if they've been resized. I'm disgusted that I have to do this,
      but after fighting with GTK for years, I'm about sick of it. GTK was
      doing this crazy thing where it would trigger another size-allocate
      inside of a previous size-allocate, and so my layouts would be halfway
      through resizing all the widgets, and then the size-allocate would kick
      off another one. That would end up leaving the rest of the first layout
      loop with bad widget sizes. And if I detected a second re-entry and
      blocked it, then the entire window would end up with the older geometry.
      I started trying to build a message queue system to allow the second
      layout resize to occur after the first one completed, but this was just
      too much madness, so I went with the simpler solution.
      
      Qt4 has some geometry problems, and doesn't show tab frame layouts
      properly yet.
      
      Qt5 causes an ICE error and tanks my entire Xorg display server, so ...
      something is seriously wrong there, and it's not hiro's fault. Creating
      a dummy Qt5 application without even using hiro, just int main() {
      TestObject object; } with object performing a dynamic\_cast to a derived
      type segfaults. Memory is getting corrupted where GCC allocates the
      vtables for classes, just by linking in Qt. Could be somehow related to
      the -fPIC requirement that only Qt5 has ... could just be that FreeBSD
      10.1 has a buggy implementation of Qt5. I don't know. It's beyond my
      ability to debug, so this one's going to stay broken.
      
      The Cocoa port is busted. I'll fix it up to compile again, but that's
      about all I'm going to do.
      
      Many optimizations mean bsnes and higan open faster. GTK2 and GTK3 both
      resize windows very quickly now.
      
      higan crashes when you load a game, so that's not good. bsnes works
      though.
      
      bsnes also has the start of a localization engine now. Still a long way
      to go.
      
      The makefiles received a rather substantial restructuring. Including the
      ruby and hiro makefiles will add the necessary compilation rules for
      you, which also means that moc will run for the qt4 and qt5 targets, and
      windres will run for the Windows targets.
      6090c639
  3. 08 Jul, 2018 1 commit
    • Screwtape's avatar
      Update to v106r46 release. · 0c557960
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - bsnes, higan: simplified make output; reordered rules
        - hiro: added Window::set(Minimum,Maximum)Size() [only implemented in
          GTK+ so far]
        - bsnes: only allow the window to be shrunk to the 1x multiplier size
        - bsnes: refactored Integral Scaling checkbox to {Center, Scale,
          Stretch} radio selection
        - nall: call fflush() after nall::print() to stdout or stderr [needed
          for msys2/bash]
        - bsnes, higan: program/interface.cpp renamed to program/platform.cpp
        - bsnes: trim ".shader/" from names in Settings→Shader menu
        - bsnes: Settings→Shader menu updated on video driver changes
        - bsnes: remove missing games from recent files list each time it is
          updated
        - bsnes: video multiplier menu generated dynamically based on largest
          monitor size at program startup
        - bsnes: added shrink window and center window function to video
          multiplier menu
        - bsnes: de-minimize presentation window when exiting fullscreen mode
          or changing video multiplier
        - bsnes: center the load game dialog against the presentation window
          (important for multi-monitor setups)
        - bsnes: screenshots are not immediate instead of delayed one frame
        - bsnes: added frame advance menu option and hotkey
        - bsnes: added enable cheats checkbox and hotkey; can be used to
          quickly enable/disable all active cheats
      
      Errata:
      
        - hiro/Windows: `SW_MINIMIZED`, `SW_MAXIMIZED `=> `SW_MINIMIZE`,
          `SW_MAXIMIZE`
        - hiro/Windows: add pMonitor::workspace()
        - hiro/Windows: add setMaximized(), setMinimized() in
          pWindow::construct()
        - bsnes: call setCentered() after setMaximized(false)
      0c557960
  4. 02 Jul, 2018 1 commit
    • Screwtape's avatar
      Update to v106r45 release. · 372e9ef4
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - sfc/ppu-fast: added hires mode 7 option (doubles the sampling rate
          of mode 7 pixels to reduce aliasing)
        - sfc/ppu-fast: fixed mode 7 horizontal screen flip [hex_usr]
        - bsnes: added capture screenshot function and path selection
            - for now, it saves as BMP. I need a deflate implementation that
              won't add an external dependency for PNG
            - the output resolution is from the emulator: (256 or 512)x(240 or
              480 minus overscan cropping if enabled)
            - it captures the NEXT output frame, not the current one ... but
              it may be wise to change this behavior
            - it'd be a problem if the core were to exit and an image was
              captured halfway through frame rendering
        - bsnes: recovery state renamed to undo state
        - bsnes: added manifest viewer tool
        - bsnes: mention if game has been verified or not on the status bar
          message at load time
        - bsnes, nall: fixed a few missing function return values
          [SuperMikeMan]
        - bsnes: guard more strongly against failure to load games to avoid
          crashes
        - hiro, ruby: various fixes for macOS [Sintendo]
        - hiro/Windows: paint on `WM_ERASEBKGND` to prevent status bar
          flickering at startup
        - icarus: SPC7110 heuristics fixes [hex_usr]
      
      Errata:
      
        - sfc/ppu-fast: remove debug hires mode7 force disable comment from
          PPU::power()
      
      [The `WM_ERASEBKGND` fix was already present in the 106r44 public
      beta -Ed.]
      372e9ef4
  5. 28 Jun, 2018 2 commits
    • Screwtape's avatar
      Update to v106r44 public beta release: · 40a5fbe6
      Screwtape authored
      byuu says (in the public announcement):
      
      I'm releasing a beta version of bsnes, for the purpose of gathering feedback and
      ensuring that the first official release of bsnes is as solid as possible.
      
      With the exception of dynamic rate control for automatic audio/video sync, and
      no pack-in video shaders or cheat code database, it is mostly feature complete.
      However, please do not form a lasting opinion of bsnes based on this beta.
      40a5fbe6
    • Screwtape's avatar
      Update to v106r44 release. · ec960c51
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - hiro/Windows: use `WS_CLIPSIBLINGS` on Label to prevent resize
          drawing issues
        - bsnes: correct viewport resizing
        - bsnes: speed up window resizing a little bit
        - bsnes: fix the cheat editor list enable checkbox
        - bsnes: fix the state manager filename display in game ROM mode
        - bsnes: fix the state manager save/rename/remove functionality in
          game ROM mode
        - bsnes: correct path searching for IPS and BPS patches in game ROM
          mode
        - bsnes: patch BS-X town cartridge to disable play limits
        - bsnes: do not load (program,data,expansion).(rom,flash) from disk in
          game pak mode
            - this is required to support soft-patching and ROM hacks
        - bsnes: added speed mode selection (50%, 75%, 100%, 150%, 200%);
          maintains proper pitch
        - bsnes: added icons to the menubar
            - this is particularly useful to tell game ROMs from game paks in
              the load recent game menu
        - bsnes: added emblem at bottom left of status bar to indicate if a
          game is verified or not
            - verified means it is in the icarus verified game dump database
            - the verified diamond is orange; the unverified diamond is blue
        - bsnes: added an option (which defaults to off) to warn when loading
          unverified games
            - working around a bug in GTK, I have to use the uglier
              MessageWindow instead of MessageDialog
        - bsnes: added (non-functional) link to <https://doc.byuu.org/bsnes/>
          to the help menu
        - bsnes: added GUI setting to toggle memory auto-save feature
        - bsnes: added GUI setting to toggle capturing a backup save state
          when closing the emulator
        - bsnes: made auto-saving states on exit an option
        - bsnes: added an option to auto-load the auto-saved state on load
            - basically, the two combined implements auto-resume
        - bsnes: when firmware is missing, offer to take the user to the
          online help documentation
        - bsnes: added fast PPU option to disable the sprite limit
            - increase from 32 items/line + 34 tiles/line to 128 items/line +
              128 tiles/line
            - technically, 1024 tiles/line are possible with 128 sprites at
              64-width
            - but this is just a waste of cache locality and worst-case
              performance; it'll never happen
      
      Errata:
      
        - hiro/Windows: fallthrough on Canvas `WM_ERASEBKGND` to prevent
          startup flicker
      ec960c51
  6. 27 Jun, 2018 1 commit
    • Screwtape's avatar
      Update to v106r43 release. · b14c6bf1
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - bsnes: added video settings panel
        - bsnes: added audio settings panel
        - bsnes: disable assign/clear buttons at startup for hotkeys panel
        - bsnes: program initialization restructured: drivers initialize last
            - this lets me reinitialize the settings panel values on driver
              changes
            - so eg things like input/hotkey remappings should work after
              input driver changes now
            - ... but I had to disable the window icon for this ... it takes
              too long to show up this way
        - bsnes: added synchronize video/audio options to settings menu
        - bsnes: added audio skew slider for video/audio synchronization
        - bsnes: state manager edit/remove works on game ROM .bsz archives now
        - bsnes: removed View→Color Emulation; default to 150% gamma instead
          (it's a touch brighter but similar)
      
      At this point, I'm pretty much ready to make an initial beta release for
      wider testing.
      
      Please use this WIP to indicate any must-fix issues before I do so.
      b14c6bf1
  7. 26 Jun, 2018 1 commit
    • Screwtape's avatar
      Update to v106r42 release. · 5b97fa24
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - emulator: added `Thread::setHandle(cothread_t)`
        - icarus: added special heuristics support for the Tengai Maykou Zero
          fan translation
            - board identifier is: EXSPC7110-RAM-EPSONRTC (match on SPC7110 +
              ROM size=56mbit)
            - board ROM contents are: 8mbit program, 40mbit data, 8mbit
              expansion (sizes are fixed)
        - bsnes: show messages on game load, unload, and reset
        - bsnes: added support for BS Memory and Sufami Turbo games
        - bsnes: added support for region selection (Auto [default], NTSC,
          PAL)
        - bsnes: correct presentation window size from 223/239 to 224/240
        - bsnes: add SA-1 internal RAM on cartridges with BS Memory slot
        - bsnes: fixed recovery state to store inside .bsz archive
        - bsnes: added support for custom manifests in both game pak and game
          ROM modes
        - bsnes: added icarus game database support (manifest → database →
          heuristics)
        - bsnes: added flexible SuperFX overclocking
        - bsnes: added IPS and BPS soft-patching support to all ROM types
          (sfc,smc,gb,gbc,bs,st)
            - can load patches inside of ZIP archives (matches first “.ips” or
              “.bps” file)
        - bsnes/ppu: cache interlace/overscan/vdisp (277 → 291fps with fast
          PPU)
        - hiro/Windows: faster painting of Label widget on expose
        - hiro/Windows: immediately apply LineEdit::setBackgroundColor changes
        - hiro/Qt: inherit Window backgroundColor when one is not assigned to
          Label
      
      Errata:
      
        - sfc/ppu-fast: remove `renderMode7Hires()` function (the body isn't in
          the codebase)
        - bsnes: advanced note label should probably use a lighter text color
          and/or smaller font size instead of italics
      
      I didn't test the soft-patching at all, as I don't have any patches on
      my dev box. If anyone wants to test, that'd be great. The Tengai Makyou
      Zero fan translation would be a great test case.
      5b97fa24
  8. 24 Jun, 2018 1 commit
    • Screwtape's avatar
      Update to v106r41 release. · f70a20bc
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - hiro: added Label::set(Background,Foreground)Color (not implemented
          on Cocoa backend)
        - hiro: added (Horizontal,Vertical)Layout::setPadding()
            - setMargin(m) is now an alias to setPadding({m, m, m, m})
        - hiro/Windows: update Label rendering to draw to an offscreen canvas
          to prevent flickering
        - sfc: reverted back to 224/240-line height (from 223/239-line height
          in earlier v106 WIPs)
        - bsnes: new multi-segment status bar added
        - bsnes: exiting fullscreen mode will resize and recenter window
            - this is required; the window geometry gets all scrambled when
              toggling fullscreen mode
        - bsnes: updated to a new logo [Ange Albertini]
      
      Errata:
      
        - hiro/Windows: try to paint Label backgroundColor quicker to avoid
          startup flicker
            - `WM_ERASEBKGND` fallthrough to `WM_PAINT` seems to work
        - hiro/Qt: use Window backgroundColor for Label when no Label
          backgroundColor set
        - bsnes: update size multipliers in presentation.cpp to 224/240 (main
          window size is off in this WIP)
      f70a20bc
  9. 11 Jun, 2018 2 commits
    • Screwtape's avatar
      470e2732
    • Screwtape's avatar
      Update to v106r40 release. · 5a8c814e
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - hiro: added BrowserDialog::openObject() [match file *or* folder
          by filters]
        - hiro: BrowserDialog accept button is now disabled when it would
          otherwise do nothing
            - eg openFile without a folder to enter or file to open selected
            - eg saveFile without a file name or with a file name that matches
              a folder name
        - bsnes: added support for gamepaks (game folders)
        - bsnes: store all save states inside per-game .bsz (ZIP) archives
          instead of .bst/ folders
            - this reduces the number of state files from 10+ to 1; without
              having folders sort before files
        - hiro: both gtk2 and gtk3 now use cairo to render Canvas; supports
          sx,sy [BearOso]
        - higan, bsnes: fast PPU/DSP are now run-time options instead of
          compile-time options
        - bsnes: disable fast PPU when loading Air Strike Patrol / Desert
          Fighter
        - bsnes: disable fast DSP when loading Koushien 2
        - bsnes: added options to advanced panel to disable fast PPU and/or
          fast DSP
      5a8c814e
  10. 10 Jun, 2018 2 commits
    • Screwtape's avatar
      Update to v106r39 release. · 91bb781b
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - ruby/video: implement onUpdate() callback to signal when redraws are
          necessary
        - ruby/video/GLX,GLX2,XVideo,XShm: implement onUpdate() support
        - bsnes: implement Video::onUpdate() support to redraw Viewport icon
          as needed
        - bsnes: save RAM before ruby driver changes
        - sfc/sa1: clip signed multiplication to 32-bit [Jonas Quinn]
        - sfc/sa1: handle negative dividends in division [Jonas Quinn]
        - hiro/gtk3: a few improvements
        - bsnes: added empty stub video and audio settings panels
        - bsnes: restructured advanced settings panel
        - bsnes: experiment: input/hotkeys name column bolded and colored for
          increased visual distinction
        - bsnes: added save button to state manager
      91bb781b
    • Screwtape's avatar
      Update to v106r38 release. · 15b67922
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - hiro: added Qt5 support
        - hiro: added GTK3 support (currently runs very poorly)
        - bsnes: number of recent games and quick state slots can be changed
          programmatically now
            - I may expose this as a configuration file setting, but probably
              not within the GUI
        - nall: use -Wno-everything when compiling with Clang
            - sorry, Clang's meaningless warning messages are just endless ...
      15b67922
  11. 07 Jun, 2018 1 commit
    • Screwtape's avatar
      Update to v106r37 release. · 173a5d67
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - bsnes: cheat code “enabled” option changed to “enable”
        - bsnes: connected “Cancel” action on add/edit cheat code window
        - hiro: improved BrowserDialog::selectFolder() behavior
            - can choose “Select” inside of a target folder when no items are
              selected
        - bsnes: implemented state manager
        - bsnes: save a recovery state before loading a state, quitting, or
          changing drivers
        - bsnes: input settings, hotkey settings, cheat editor, state manager
          entries are now batchable
            - this allows bulk clearing/deleting of entries
        - bsnes: cheat code list now auto-sorts alphabetically instead of
          using up/down move arrows
      
      I know most people will probably prefer to order cheat codes the way
      they want, but the issue is that the state manager can't really work
      this way. Each state is a file on disk. So yes, we could store a
      states-manifest.bml to track the order of the states, or try to insert
      numbers into the filenames and do bulk filesystem rename operations on
      sorting, but then we would run into oddities when users delete state
      files manually. And really, manual sorting is just clumsy. If you really
      want a specific ordering, you can prefix cheats/states with numeric
      indices instead.
      173a5d67
  12. 04 Jun, 2018 1 commit
    • Screwtape's avatar
      Update to v106r36 release. · ec9729a9
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - nall: renamed array to adaptive_array; marked it as deprecated
        - nall: created new array class; which is properly static (ala
          std::array) with optional bounds-checking
        - sfc/ppu-fast: converted unmanaged arrays to use nall/array (no speed
          penalty)
        - bsnes: rewrote the cheat code editor to a new design
        - nall: string class can stringify pointer types directly now, so
          pointer() was removed
        - nall: added array_view and pointer types (still unsure if/how I'll
          use pointer)
      ec9729a9
  13. 03 Jun, 2018 3 commits
    • Screwtape's avatar
      Update to v106r35 release. · 77ac5f9e
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - sfc/ppu-fast: fixed overscan crash
        - sfc/ppu-fast: fixed direct color mode
        - sfc: reconnected MSU1 support
            - higan: game.sfc/msu1/data.rom, game.sfc/msu1/track-#.pcm
            - bsnes: game.msu, game-#.pcm
        - bsnes: added cheat code editor
        - bsnes: added cheat code database support
        - sfc/ppu-fast: clear overscan lines when overscan disabled
        - sfc: output 223/239 lines instead of 224/240 lines
        - bsnes: fix aspect correction calculation
        - bsnes: crop line 224 when overscan masking is enabled
        - bsnes: exposed Expansion Port menu; but hid “21fx” from the list of
          devices
        - bsnes: tools menu is hidden until a game is loaded
        - ruby/input/keyboard/quartz: fixed compilation error
      
      So only bsnes the automated overscan cropping option. In higan, you can
      crop however many lines you like from the top or bottom of the image.
      But for bsnes, it automatically eats sixteen lines. My view right now is
      that if bsnes is meant to be the casual gaming emulator, that it should
      eat line 224 in this mode. Most games show content here, but because of
      the way the SNES PPU works, the very last line ends up on its very own
      tile row (line 0 isn't rendered), if the scroll registers don't account
      for it. There's a small number of games that will draw junk data to the
      very last scanline of the frame as a result of this. So I chose, at
      least for now, to hide it. Users can obviously disable overscan cropping
      to see this scanline. I'm open to being convinced not to do this, if
      someone has a compelling reason.
      
      We're pretty much screwed one way or the other with no overscan masking.
      If we output 239 lines, then most games will render 7 blank lines + 224
      drawn lines + 8 blank lines, and the black top and bottom aren't
      centered. But if we output 240 lines to get 8 + 224 + 8, then games that
      do use overscan will have a blank line at the very bottom of the window.
      
      I'm also trying out a modified cheat code file format. It's been forever
      since I bothered to look at it, and the “cartridge” parent node doesn't
      match what I'm doing with trying to rename “cartridge” to “game” in
      manifests. And indeed, the idea of requiring a root node is rather
      superfluous for a cheat code file. Current format looks like this:
      
          cheat
            description: foo
            code: 7e2000=20+7e2001=30?40
            enabled
      
          cheat
            description: bar
            code: 7e4000=80
      
      Open to discussing this, and I'd like to sync up with Snes9X before they
      push out a new release, and I'll agree to finalize and never change this
      format again.
      
      I chose to use .cht for the extension when using game files (eg
      gamename.cht)
      77ac5f9e
    • Screwtape's avatar
    • Screwtape's avatar
      Add another task to the release procedure. · 73354923
      Screwtape authored
      73354923
  14. 02 Jun, 2018 3 commits
    • Screwtape's avatar
      3aa90590
    • Screwtape's avatar
      Now that byuu is ready for bsnes bug reports, I'll enable automated builds. · 52d0cd8d
      Screwtape authored
      Also, since byuu changes the defaults according to what he's working on, let's
      be explicit tat higan gets the accuracy core and bsnes gets the performance
      core.
      52d0cd8d
    • Screwtape's avatar
      Update to v106r34 release. · c67fb2c7
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - sfc/ppu-fast:
            - don't use mosaicSize unless mosaicEnable is set
            - fix background tiles that aren't 8x8 in size
            - flush (render) queued lines whenever VRAM or OAM are modified
              mid-frame
            - queue tile outputs to buffer for object rendering final pass
            - fix object window mask indexing
            - disable color bleed when output width is 256 pixels
            - handle reset(bool) events
            - implemented save states
        - icarus: fixed SPC7110-RAM-EPSONRTC mapping typo [hex_usr]
        - bsnes: fixed overscan masking mode when output height is 240
      
      Todo:
      
        - sfc/ppu-fast: should not have deleted the tilecache freeing in
          ~PPU()
        - ruby/input/carbon: change setPath() call to setPathID()
      
      Errata:
      
        - Rendering Ranger R2 crashes at startup, seems to be an issue with
          the expansion port device
      
      Bug reports on the new fast SNES PPU are now welcome.
      c67fb2c7
  15. 31 May, 2018 1 commit
    • Screwtape's avatar
      Update to v106r33 release. · 5d29700f
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - nall/GNUmakefile: added `openmp=(true,false)` option; can be toggled
          when building higan/bsnes
            - defaults to disabled on macOS, because Xcode doesn't stupidly
              doesn't ship with support for it
        - higan/GNUmakefile: forgot to switch target,profile back from
          bsnes,fast to higan,accurate
            - this is just gonna happen from time to time, sorry
        - sfc/dsp: when using the fast profile, the DSP syncs per sample
          instead of per clock
            - should only negatively impact Koushien 2, but is a fairly
              significant speedup otherwise
        - sfc/ppc,ppu-fast: optimized the code a bit (ppu 130fps to 133fps)
        - sfc/ppu-fast: basic vertical mosaic support (not accurate, but
          should look okay hopefully)
        - sfc/ppu-fast: added missing mode7 hflip support
        - sfc/ppu-fast: added support to render at 256-width and/or 240-height
            - gives a decent speed boost, and also allows all of the older
              quark shaders to work nicely again
            - it does violate the contract of Emulator::Interface, but oh
              well, it works fine in the bsnes GUI
        - sfc/ppu-fast: use cached CGRAM values for mode7 and sprites
        - sfc/ppu-fast: use global range/time over flags in object rendering
            - may not actually work as we intended since it's a race condition
              even if it's only ORing the flags
            - really don't want to have to make those variables atomic if I
              don't have to
        - sfc/ppu-fast: should fully support interlace and overscan modes now
        - hiro/cocoa: updated macOS Gatekeeper disable support to work on
          10.13+
        - ruby: forgot to fix macOS input driver, sorry
        - nall/GNUmakefile: if uname is present, then just default to rm
          instead of del (fixes Msys)
      
      Note: blur emulation option will break pretty badly in 256x240 output
      mode. I'll fix it later.
      5d29700f
  16. 29 May, 2018 1 commit
    • Screwtape's avatar
      Update to v106r32 release. · 5e7fdbe2
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - sfc/ppu-fast: everything other than vertical mosaic and interlace
          support is in
      
      Games are quite playable now, and you're welcome to try things out, but
      please don't report bugs yet. It's still too early for that.
      5e7fdbe2
  17. 28 May, 2018 4 commits
    • Screwtape's avatar
      Update to v106r31 release. · 51e3fcd3
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - sfc/ppu-fast: added a barebones background renderer; very incomplete
      
      Right now, the 2bpp Mega Man X2 splash screen is rendering correctly,
      but everything else looks really garbled. I'm thinking my tile cache
      conversions from 4bpp to bitmap pixels is wrong, but I'm not seeing any
      obvious issues.
      
      If anyone wants to take a look at it, I'd appreciate it. The renderer is
      mostly modeled after ppu-performance's.
      51e3fcd3
    • Screwtape's avatar
      18852bcb
    • Screwtape's avatar
      Don't hack up nall/GNUmakefile for Windows builds. · bcc26277
      Screwtape authored
      All our changes are now in official nall releases, so we don't need to mess with
      it anymore.
      bcc26277
    • Screwtape's avatar
      Update to v106r30 release. · 685cec65
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - nall/GNUmakefile: fixed findstring parameter arguments [Screwtape]
        - nall/Windows: always include -mthreads -lpthread for all
          applications
        - nall/memory: code restructuring
      
      I really wanted to work on the new PPU today, but I thought I'd spend a
      few minutes making some minor improvements to nall::memory, that was
      five and a half hours ago. Now I have a 67KiB diff of changes. Sigh.
      685cec65
  18. 26 May, 2018 2 commits
    • Screwtape's avatar
      Update to v106r29 release. · 6882bd98
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - sfc/ppu: collapsed folders to a single directory to match all other
          emulated processors
        - sfc/ppu-fast: implemented I/O registers
      6882bd98
    • Screwtape's avatar
      Update to v106r28 release. · 6c8e3c88
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - SNES: started on skeleton of the new parallel PPU core
      
      To build the new PPU core, set profile=fast via GNU make. The old core
      is profile=accurate.
      
      The names of the profiles, and the name of the folder for the fast PPU
      are subject to change.
      
      The new PPU core doesn't do anything but demonstrate the proof of
      concept: every scanline, make a copy of all the PPU registers and CGRAM.
      Share the VRAM and OAM. Batch render all scanlines at once using OpenMP
      at the end of each frame and blit the result.
      
      With no PPU core at all, bsnes runs 91% faster than with the accuracy
      PPU (230fps vs 120fps.) That's the absolute theoretical best-case
      scenario. With the skeleton in place, we're already around 220fps. It'll
      go down more as the PPU line renderer starts to do real work. I don't
      know where things will end up yet. I suppose we'll find out in time.
      
      My own copy of TDM/GCC can't use OpenMP on Windows, so ... it won't
      parallelize if you build with that. I'm going to have to switch to a
      different MinGW distribution once this is complete, I suppose.
      6c8e3c88
  19. 25 May, 2018 2 commits
    • Screwtape's avatar
      Ignore generated file dependency information. · 8f5bc80f
      Screwtape authored
      8f5bc80f
    • Screwtape's avatar
      Update to v106r27 release. · 2b8df2e7
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - nall: merged Path::config() and Path::local() to Path::userData()
            - ~/.local/share or %appdata or ~/Library/ApplicationSupport
        - higan, bsnes: render main window icon onto viewport instead of
          canvas
            - should hopefully fix a brief flickering glitch that appears on
              Windows
        - icarus: improved Super Famicom heuristics for Starfox / Starwing RAM
        - ruby/Direct3D: handle viewport size changes in lock() instead of
          output()
            - fixes icon disappearing when resizing main window
        - hiro/Windows: remove WS_DISABLED from StatusBar to fix window
          resize grip
            - this is experimental: I initially used WS_DISABLED to work
              around a focus bug
            - yet trying things now, said bug seems(?) to have gone away at
              some point ...
        - bsnes: added advanced settings panel with real-time driver change
          support
      
      I'd like feedback on the real-time driver change, for possible
      consideration into adding this to higan as well.
      
      Some drivers just crash, it's a fact of life. The ASIO driver in
      particular likes to crash inside the driver itself, without any error
      messages ever returned to try and catch.
      
      When you try to change a driver with a game loaded, it gives you a scary
      warning, asking if you want to proceed.
      
      When you change a driver, it sets a crash flag, and if the driver
      crashes while initializing, then restarting bsnes will disable the
      errant driver. If it fails in a recoverable way, then it sets the driver
      to “None” and warns you that the driver cannot be used.
      
      What I'm thinking of further adding is to call emulator→save() to
      write out the save RAM contents beforehand (although the periodic
      auto-saving RAM will handle this anyway when it's enabled), and possibly
      it might be wise to capture an emulator save state, although those can't
      be taken without advancing the emulator to the next frame, so that might
      not be a good idea.
      
      I'm also thinking we should show some kind of message somewhere when a
      driver is set to “None”. The status bar can be hidden, so perhaps on the
      title bar? Or maybe just a warning on startup that a driver is set to
      “None”.
      2b8df2e7
  20. 24 May, 2018 2 commits
    • Screwtape's avatar
      Update GitLab CI settings. · ec4ab1dc
      Screwtape authored
      We shouldn't need to specify static compiler helpers anymore,
      and ruby now uses SDL2.0 rather than 1.2.
      ec4ab1dc
    • Screwtape's avatar
      Update to v106r26 release. · 5961ea9c
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - nall: added -static-libgcc -static-libstdc++ to Windows/GCC link
          flags
        - bsnes, higan: added program icons to main window when game isn't
          loaded
        - bsnes: improved recent games menu sorting
        - bsnes: fixed multi-game recent game loading on Windows
        - bsnes: completed path override support
        - bsnes, higan: added screensaver suppression on Windows
        - icarus: add 32K volatile RAM to SuperFX boards that report no RAM
          (fixes Starfox)
        - bsnes, higan: added automatic dependency generation [Talarubi]
        - hiro/GTK: appending actions to menus restores enabled() state
        - higan: use board node inside manifest.bml if it exists
        - bsnes: added blur emulation and color emulation options to view menu
        - ruby: upgraded input.sdl to SDL 2.0 (though it makes no functional
          difference sadly)
        - ruby: removed video.sdl (due to deprecating SDL 1.2)
        - nall, ruby: improvements to HID class (generic vendor and product
          IDs)
      
      Errata:
      
        - bsnes, higan: on Windows, Application::Windows::onScreenSaver needs
          `[&]` lambda capture, not `[]`
            - find it in presentation/presentation.cpp
      5961ea9c
  21. 23 May, 2018 1 commit
    • Screwtape's avatar
      Update to v106r25 release. · 3353efd3
      Screwtape authored
      byuu says:
      
      Changelog:
      
        - bsnes:
            - added full input mapping support (multi-mapping, digital+analog
              inputs, rumble, hotkeys, etc)
            - can now load multi-part games (eg Super Game Boy) from the
              command-line
            - added recent games menu with list clear function; supports
              multi-part games (sorting logic incomplete)
            - added automatic binding of gamepads on new configuration files
            - added view scaling support with aspect correction, overscan
              cropping, and integral scaling modes
            - added video shader support
            - added status bar (can be hidden)
            - added save states (both menu and hotkeys)
            - added fullscreen mode support
            - added support for loading compressed (ZIP) archives for any
              supported media type (SNES, GB, etc)
            - added frame counter
            - added auto-memory saving
            - added pause / block-input modes when main window loses focus
            - added --fullscreen command-line option to start bsnes in
              fullscreen mode
            - added input settings panel
            - added hotkeys settings panel
            - added path settings panel (paths aren't actually used set, but
              can be assigned)
        - higan: fixed macOS install rule [Sintendo]
        - higan: minor UI code cleanups
        - nall: renamed Processor to Architecture to fix macOS builds
          [Sintendo]
      
      Yeah, you read right: recent games menu, path settings. And dynamic rate
      control + screensaver suppression is on the todo list. I'm not fucking
      around this time. I really want to make something special here.
      3353efd3
  22. 20 May, 2018 1 commit
    • Screwtape's avatar
      Update to v106r24 release. · a73a94f3
      Screwtape authored
      byuu says:
      
      Changelog:
      * yes.
      
      But seriously, a list of changes on a pre-alpha GUI is going to get annoying.
      
      Basically, work on embedding stuff in the binary, firmware loading (both
      appended to the ROM and in a firmware/ subfolder) added, SGB games can be
      loaded, config file holds more values for driver settings, added ruby drivers to
      other platforms, etc.
      a73a94f3
  23. 19 May, 2018 5 commits