1. 21 Feb, 2018 3 commits
    • Update to v106r08 release. · 5c55cc2c
      byuu says:
        - Game Boy: fixed RAM/RTC saving¹
        - Super Famicom: ICD2 renamed to ICD (there exists an SGB prototype
          with a functionally identical ICD1)
        - Sufami Turbo: removed short-circuiting when loading an unlinkable
          cartridge into slot A²
        - Super Game Boy: the 20971520hz clock of the SGB2 is now emulated
        - Super Famicom: BSC-1Lxx (SA1) boards now prompt for BS memory
          cartridges; and can make use of them³
        - Super Famicom: fixed a potential for out-of-bounds reads with BS
          Memory flash carts
      ¹: I'm using a gross hack of replacing `type: ` with `type:` so that
      `memory(type=...)` will match without the extra spaces. I need to
      think about whether I want the BPath query syntax to strip whitespace or
      not. But longer term, I want to finalize game/memory's design, and build
      a higan/emulation/manifest parser that produces a nicer interface to
      reading manifests for all cores, which will make this irrelevant for
      higan anyway.
      ²: I don't think it's appropriate for higan to enforce this. Nothing
      stops you from inserting games that can't be linked into a real Sufami
      Turbo. I do short-circuit if you cancel the first load, but I may allow
      loading an empty slot A with a populated slot B. I think the BIOS does
      something when you do that. Probably just yells at you.
      ³: I know it's emulated correctly now, but I still don't know what
      the heck changes when you load the SD Gundam G Next - Unit & Map
      Collection BS Memory cartridge with SD Gundam G Next to actually test
      Screwtape authored
    • Update to v106r07 release. · c49d3b20
      byuu says:
        - Super Game Boy: for the 50th time, higan won't segfault if you
          cancel the Game Boy cartridge load request
        - icarus: moved to new manifest syntax for all remaining systems
        - Game Boy: moved to new manifest syntax
        - Game Boy: save RAM does not appear to be working for some reason
        - Famicom: higan won't even start to run this system; it just acts
          like a cartridge was never loaded ...
        - cores outside of the Super Famicom and Game Boy/Color will not run
          due to icarus/higan manifest syntax differences
      Screwtape authored
  2. 16 Feb, 2018 4 commits
  3. 10 Feb, 2018 1 commit
    • Update to v106r05 release. · 5e330da4
      byuu says:
        - Super Famicom: added remaining generic board types
        - icarus: improved Super Famicom heuristics
        - icarus: reworked BS Memory heuristics
        - icarus: reworked Sufami Turbo heuristics
      Notes: this is really complicated, and is going to take a long time to
      work 100% smoothly again.
      Starting off, I am trying to get rid of the weird edge case zero-byte
      SRAM mapping for the Cx4. It has the RAM region present, but returns
      logic low (0x00) instead of open bus, when SRAM isn't present. I started
      by making it `map=ram` instead of `ram/map`, which is gross, and then it ended
      up detecing the map tag ending in RAM and pulling the Cx4 data RAM into that
      slot. Ugh. The preservation board mapping is still as it was before and will
      need to be updated once I get the syntax down.
      The BS Memory and Sufami Turbo moving to the new `game/memory`
      ending means I can't use the SuperFamicom::Cartridge::loadMemory
      function that looks at the old-style rom/ram tags. Because I didn't
      write more code, the result is those sub-carts won't load now.
      The old heuristics were short-circuiting on SA1 before bothering with
      BS-X slots, so that's why SD Gundam G-Next wasn't asking for a data
      pack. The problem is, I don't know where the BS-X pack maps to on this
      cartridge. It's at c0-ef on the other BS-X slotted cartridges, but
      that's mapped to the SA1 on regular SA1 cartridges, so ... for now, it's
      not actually mapped in.
      I'm still struggling with naming conventions on all these boards. I'll
      make a public post about that, though.
      Screwtape authored
  4. 08 Feb, 2018 1 commit
    • Update to v106r04 release. · c38a771f
      byuu says:
        - nall: `Markup::Node::operator[]` now uses `find()` instead of `lookup()`
          behind the scenes
        - Super Famicom: RAM memory ordering is now independent of ROM memory
        - Super Famicom: added 19 new generic board definitions
        - icarus: improved Super Famicom heuristics generation
      Not putting it in the changelog, but the SPC7110 RAM now has write
      protection disabled again.
      99% of games should now be playable with heuristics. The exceptions
      should be:
        - 4MB LoROM games with SRAM (Ys 3, FE: Thracia 776)
        - 2MB DSP LoROM games
        - BS-X Town
        - BS-X slotted games
        - SA1 BSX slotted games
        - SPC7110 games without the RTC (Momotarou Dentetsu Happy, Super Power
          League 4)
        - SPC7110 7MB fan translation (wasn't supported earlier either)
        - ExLoROM games (wasn't supported earlier either)
        - Sufami Turbo
        - Campus Challenge '92 and Powerfest '94
        - ST010 is going to run at 15MHz instead of 11MHz
        - MSU1 (needs to be supported in higan, not icarus)
      I'll add support for most of these before the release of v107.
      Screwtape authored
  5. 05 Feb, 2018 1 commit
    • Update to v106r3 release. · 3d8be925
      byuu says:
        - Super Famicom: update to newer board markup syntax
        - Super Famicom: update all mapped ROMs to be write-protected
            - errata: SPC7110 set ram.writeProtect(true), I'll fix it in the
              next WIP
        - icarus: rewrote the Super Famicom heuristics module from scratch
      Instead of icarus heuristics generating higan-specific mappings, it now
      generates generic board IDs that can be used by any emulator. I had
      originally planned to print out real PCB ID codes here, but these board
      mappings are meant to be more generic, and I don't want them to look
      real. The pseudo-codes are easy to parse, for example: `DSP-LOROM-NVRAM`
      for Super Mario Kart, `SUPERFX-RAM` for Doom.
      I'm going to make a `Boards (Generic).bml` file that will contain mapping
      definitions for every board. Until this is done, any games not in the SNES
      preservation database will fail to play because the mapping information is
      now missing.
      Screwtape authored
  6. 01 Feb, 2018 3 commits
    • Update to v106r2 release. · 2f81b5a3
      byuu says:
        - Super Famicom: added support for loading manifests without embedded
          mapping information¹
        - genius: initial commit
        - various Makefile cleanups
      ¹: so the idea here is to try and aim for a stable manifest format,
      and to allow direct transposition of icarus/genius database entries into
      manifest files. The exact mechanics of how this is going to work is
      currently in flux, but we'll get there.
      For right now, `Super Famicom.sys` gains `boards.bml`, which is the raw
      database from my board-editor tool, and higan itself tries to load
      `boards.bml`, match an entry to game/board from the game's `manifest.bml`
      file, and then transform it into the format currently used by higan. It
      does this only when the game's `manifest.bml` file lacks a board node.
      When such a board node exists, it works as previous versions of higan
      The only incompatible change right now is information/title is now
      located at game/label. I may transition window title display to just use
      the filenames instead.
      Longer term, some thought is going to need to go into the format of the
      `boards.bml` database itself, and at which point in the process I should
      be transforming things.
      Give it time, we'll refine this into something nicer.
      Screwtape authored
  7. 26 Dec, 2017 1 commit
    • Update to v106r1 release. · aef8d5e9
      byuu says:
        - Z80: infinite DD/FD prefixes will no longer cause an emulator crash;
          but will still deadlock savestates
        - Z80: emulated R incrementing on M1 cycles
        - Z80: `LD a, [ir]` should update flags [hex_usr]
        - Z80: minor code cleanups
        - tomoko: added “Pause Emulation” toggle to Tools menu
            - you can still use the hotkey to pause emulation before starting
              a game if you really want to
            - this will be useful if and when I re-add trace logging to
              capture instructions from power-on
        - icarus: more PAL games added to the SNES database
      I hope I've implemented R correctly. It should only increment twice on
      DD,FD CB xx instructions. LDI/LDD/LDIR/LDDR should work as expected as
      well. It increments once when interrupts are executed (and not maksed.)
      The top bit is ignored in increments.
      Screwtape authored
  8. 21 Nov, 2017 2 commits
  9. 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 authored
  10. 12 Nov, 2017 1 commit
  11. 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 authored
    • 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 authored
  12. 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 authored
  13. 27 Oct, 2017 4 commits
  14. 25 Oct, 2017 5 commits
  15. 23 Oct, 2017 1 commit
  16. 08 Oct, 2017 8 commits
  17. 07 Oct, 2017 1 commit