1. 12 Aug, 2017 1 commit
    • Tim Allen's avatar
      Convert README docs to MkDocs format. · 3c3f1de3
      Tim Allen authored
      The existing documentation was getting *way* too long to be a single
      I've just bulk moved the existing content into the new structure, but it
      definitely needs another pass to make the prose match, fix hyperlinks,
      etc. etc.
  2. 19 Mar, 2016 1 commit
    • Tim Allen's avatar
      Update to v097r27 release. · d3413db0
      Tim Allen authored
      byuu says:
      Absolutely major improvements to the WS/C emulation today.
      Changelog: (all WS/C related)
      - fixed channel 3 sweep pitch adjustment
      - fixed channel 3 sweep value sign extension
      - removed errant channel 5 speed setting (not what's really going on)
      - fixed sign extension on channel 5 samples
      - improved DAC mixing of all five audio channels
      - fixed r26 regression with PPU timing loop
      - fixed sprite windowing behavior (sprite attribute flag is window mode;
        not window enable)
      - added per-scanline register latching to the PPU
      - IRQs should terminate HLT even when the IRQ enable register bits are
      - fixed PALMONO reads
      - added blur emulation
      - added color emulation (based on GBA, so it heavily desaturates colors;
        not entirely correct, but it helps a lot)
      - no longer decimating audio to 24KHz; running at full 3.072MHz through
        the windowed sinc filter [1]
      - cleaned up PPU portRead / portWrite functions significantly
      - emulated a weird quirk as mentioned by trap15 regarding timer
        frequency writes enabling said timers [2]
      - emulated LCD_CTRL sleep bit; screen can now be disabled (always draws
        black in this case for now)
      - improved OAM caching; but it's still disabled because it causes huge
        amounts of sprite glitches (unsure why)
      - fixed rendering of sprites that wrap around the screen edges back to
        the top/left of the display
      - emulated keypad interrupts
      - icarus: detect orientation bit in game header
      - higan: use orientation setting in manifest to set default screen
      [1] the 24KHz -> 3.072MHz sound change is huge. Sound is substantially
      improved over the previous WIPs. It does come at a pretty major speed
      penalty, though. This is the highest frequency of any system in higan
      running through an incredibly (amazing, yet) demanding sinc resampler.
      Frame rate dropped from around 240fps to 150fps with the sinc filter on.
      If you choose a different audio filter, you'll get most of that speed
      back, but audio will sound worse again.
      [2] we aren't sure if this is correct hardware behavior or not. It seems
      to very slightly help Magical Drop, but not much.
      The blur emulation is brutal. It's absolutely required for Riviera's
      translucency simulation of selected menu items, but it causes serious
      headaches due to the WS's ~75hz refresh rate running on ~60hz monitors
      without vsync. It's probably best to leave it off and just deal with the
      awful flickering on Riviera's menu options.
      Overall, WS/C emulation is starting to get quite usable indeed. Couple
      of major bugs that I'd really like to get fixed before releasing it,
      though. But they're getting harder and harder to fix ...
      Major Bugs:
      - Final Fantasy battle background music is absent. Sound effects still
        work. Very weird.
      - Final Fantasy IV scrolling during airship flight opening sequence is
        horribly broken. Scrolls one screen at a time.
      - Magical Drop flickers like crazy in-game. Basically unplayable like
      - Star Hearts character names don't appear in the smaller dialog box
        that pops up.
      Minor Bugs:
      - Occasional flickering during Riviera opening scenes.
      - One-frame flicker of Leda's sprite at the start of the first stage.
  3. 13 Mar, 2016 1 commit
    • Tim Allen's avatar
      Update to v097r16 release. · 810cbdaf
      Tim Allen authored
      byuu says:
      - sfc/ppu/sprite updated to use new .bit(s) functions; masked sizes
        better; added valid flags instead of using magic numbers
      - ws/ppu updates to use new .bit(s) functions
      - ws/ppu: added line compare interrupt support
      - added ws/eeprom; emulation of WS/WSC internal EEPROM and cartridge
        EEPROM (1kbit - 16kbit supported)
      - added basic read/write handlers for remaining WS/WSC PPU registers
      WS EEPROM emulation is basically a direct copy of trap15's code. Still
      some unknown areas in there, but hopefully it's enough to get further
      into games that depend on EEPROM support. Note that you'll have to
      manually add the eeprom line to the manifest for now, as icarus doesn't
      know how to detect EEPROM/sizes yet.
      I figured the changes to the SNES PPU sprites would slow it down a tad,
      but it actually sped it up. Most of the impact from the integer classes
      are gone now.
  4. 07 Jan, 2016 1 commit
    • Tim Allen's avatar
      Update to v096r02 (OS X Preview for Developers) release. · 4d193d7d
      Tim Allen authored
      byuu says:
      Warning: this is not for the faint of heart. This is a very early,
      unpolished, buggy release. But help testing/fixing bugs would be greatly
      appreciated for anyone willing.
      - Mac OS X 10.7+
      - Xcode 7.2+
      Installation Commands:
          cd higan
          gmake -j 4
          gmake install
          cd ../icarus
          gmake -j 4
          gmake install
      (gmake install is absolutely required, sorry. You'll be missing key
      files in key places if you don't run it, and nothing will work.)
      (gmake uninstall also exists, or you can just delete the .app bundles
      from your Applications folder, and the Dev folder on your desktop.)
      If you want to use the GBA emulation, then you need to drop the GBA BIOS
      into ~/Emulation/System/Game\ Boy\ Advance.sys\bios.rom
      You'll now find higan.app and icarus.app in your Applications folders.
      First, run icarus.app, navigate to where you keep your game ROMs. Now
      click the settings button at the bottom right, and check "Create
      Manifests", and click OK. (You'll need to do this every time you run
      icarus because there's some sort of bug on OSX saving the settings.) Now
      click "Import", and let it bring in your games into ~/Emulation.
      Note: "Create Manifests" is required. I don't yet have a pipe
      implementation on OS X for higan to invoke icarus yet. If you don't
      check this box, it won't create manifest.bml files, and your games won't
      run at all.
      Now you can run higan.app. The first thing you'll want to do is go to
      higan->Preferences... and assign inputs for your gamepads. At the very
      least, do it for the default controller for all the systems you want to
      Now this is very important ... close the application at this point so
      that it writes your config file to disk. There's a serious crashing bug,
      and if you trigger it, you'll lose your input bindings.
      Now the really annoying part ... go to Library->{System} and pick the
      game you want to play. Right now, there's a ~50% chance the application
      will bomb. It seems the hiro::pListView object is getting destroyed, yet
      somehow the internal Cocoa callbacks are being triggered anyway. I don't
      know how this is possible, and my attempts to debug with lldb have been
      a failure :(
      If you're unlucky, the application will crash. Restart and try again. If
      it crashes every single time, then you can try launching your game from
      the command-line instead. Example:
          open /Applications/higan.app \
      	--args ~/Emulation/Super\ Famicom/Zelda3.sfc/
      Help wanted:
      I could really, really, really use some help with that crashing on game
      loading. There's a lot of rough edges, but they're all cosmetic. This
      one thing is pretty much the only major show-stopping issue at the
      moment, preventing a wider general audience pre-compiled binary preview.
  5. 21 Aug, 2015 1 commit
  6. 18 Aug, 2013 1 commit
    • Tim Allen's avatar
      Update to v093 release. · 4e2eb238
      Tim Allen authored
      byuu says:
      - added Cocoa target: higan can now be compiled for OS X Lion
        [Cydrak, byuu]
      - SNES/accuracy profile hires color blending improvements - fixes
        Marvelous text [AWJ]
      - fixed a slight bug in SNES/SA-1 VBR support caused by a typo
      - added support for multi-pass shaders that can load external textures
        (requires OpenGL 3.2+)
      - added game library path (used by ananke->Import Game) to
      - system profiles, shaders and cheats database can be stored in "all
        users" shared folders now (eg /usr/share on Linux)
      - all configuration files are in BML format now, instead of XML (much
        easier to read and edit this way)
      - main window supports drag-and-drop of game folders (but not game files
        / ZIP archives)
      - audio buffer clears when entering a modal loop on Windows (prevents
        audio repetition with DirectSound driver)
      - a substantial amount of code clean-up (probably the biggest
        refactoring to date)
      One highly desired target for this release was to default to the optimal
      drivers instead of the safest drivers, but because AMD drivers don't
      seem to like my OpenGL 3.2 driver, I've decided to postpone that. AMD
      has too big a market share. Hopefully with v093 officially released, we
      can get some public input on what AMD doesn't like.
  7. 19 Jan, 2013 1 commit
    • Tim Allen's avatar
      Update to purify v02r01 release. · ba660600
      Tim Allen authored
      Because byuu's Win32 compiler does not yet support the C++11 std::thread
      API, he wrote his own portable wrapper library, so now the new purify
      works on Windows too.
  8. 17 Jan, 2013 1 commit
  9. 26 Dec, 2012 1 commit
    • Tim Allen's avatar
      Update to v091r11 release. · 84e98833
      Tim Allen authored
      byuu says:
      This release refines HSU1 support as a bidirectional protocol, nests SFC
      manifests as "release/cartridge" and "release/information" (but release/
      is not guaranteed to be finalized just yet), removes the database
      integration, and adds support for ananke.
      ananke represents inevitability. It's a library that, when installed,
      higan can use to load files from the command-line, and also from a new
      File -> Load Game menu option.
      I need to change the build rules a bit for it to work on Windows (need
      to make phoenix a DLL, basically), but it works now on Linux.
      Right now, it only takes *.sfc file names, looks them up in the included
      database, converts them to game folders, and returns the game folder
      path for higan to load.
      The idea is to continue expanding it to support everything we can that
      I don't want in the higan core:
      - load *.sfc, *.smc, *.swc, *.fig files
      - remove SNES copier headers
      - split apart merged firmware files
      - pull in external firmware files (eg dsp1b.rom - these are staying
        merged, just as SPC7110 prg+dat are merged)
      - load *.zip and *.7z archives
      - prompt for selection on multi-file archives
      - generate manifest files based on heuristics
      - apply BPS patches
      The "Load" menu option has been renamed to "Library", to represent games
      in your library. I'm going to add some sort of suffix to indicate
      unverified games, and use a different folder icon for those (eg
      manifests built on heuristics rather than from the database.)
      So basically, to future end users:
      File -> Load Game will be how they play games.
      Library -> (specific system) can be thought of as an infinitely-sized
          recent games list.
      purify will likely become a simple stub that invokes ananke's functions.
      No reason to duplicate all that code.
  10. 24 Apr, 2012 1 commit
    • Tim Allen's avatar
      Update to v088 release. · 77bb5b78
      Tim Allen authored
      byuu says:
      Changes to v088:
      - OBJ mosaic Y fix
      - Laevateinn compilation
      - Remove filebrowser extra code
      - Fix -march=native on Windows
      - Fix purify mkdir
      - GBA sound volume
      - Add .gbb
      - free firmware memory after file load
      - Add GBA game to profile list (Yoshi's Island should work)