Main » Emulation » SNES DSP initialization and Magical Drop » New reply
    Alert
    You are about to bump an old thread. This is usually a very bad idea. Please think about what you are about to do before you press the Post button.
    New reply
    Post help

    Presentation

    [b]…[/b] — bold type
    [i]…[/i] — italic
    [u]…[/u] — underlined
    [s]…[/s] — strikethrough
    [code]…[/code] — code block
    [spoiler]…[/spoiler] — spoiler block
    [spoiler=…]…[/spoiler]
    [source]…[/source] — colorcoded block, assuming C#
    [source=…]…[/source] — colorcoded block, specific language[which?]
    [abbr=…]…[/abbr] — abbreviation
    [color=…]…[/color] — set text color
    [jest]…[/jest] — you're kidding
    [sarcasm]…[/sarcasm] — you're not kidding

    Links

    [img]http://…[/img] — insert image
    [url]http://…[/url]
    [url=http://…]…[/url]
    >>… — link to post by ID
    [user=##] — link to user's profile by ID

    Quotations

    [quote]…[/quote] — untitled quote
    [quote=…]…[/quote] — "Posted by …"
    [quote="…" id="…"]…[/quote] — ""Post by …" with link by post ID

    Embeds

    [youtube]…[/youtube] — video ID only please
    Thread review
    Jonas Quinn I have everything :)
    I remember Prince of Persia and it needs KON/KOFF set to 0
    Fitzroy: Not sure if you want regression reports yet on the SFC stuff,
    but King of Dragons is missing a lot of sound effects now.

    A public thread:
    http://helmet.kafuka.org/byuubackup2/viewtopic.php@f=4&t=1668&start=10.html
    byuu About 18 months ago, Jonas Quinn found the cause of Magical Drop hanging after a game over.

    It was determined that the game reads from DSP registers that it hasn't yet initialized, and if the values are zero, it will hang.

    This was the original attempt at a fix:
    https://gitlab.com/higan/higan/commit/1ca4609079bf8a8ec21171238da344048daf0de1

    This caused various regressions because it turns out that the underlying 128 bytes of DSP memory isn't directly used for the internal registers. So while the internal registers *do* get initialized, the memory does not.

    We ended up having to back the change out due to the design of blargg's DSP that links the registers and memory as one and the same. And due to the loss of the spc_dsp6 test ROM, that had to go on hold.

    Recently, spc_dsp6 was found, and today, I finally got around to working on this. I've now updated higan's DSP core to separate the two concepts completely. No internal register is directly referenced through the RAM anymore, but the cases where the internal processing updates registers will fall through and also update the underlying RAM for read-out as well.

    spc_dsp6 ended up being absolutely essential. Saved us from four extremely difficult regressions.

    ...

    So now on to the main point: unfortunately I didn't keep a copy of the old board myself, and the development forum posts weren't made public. So, does anyone have a copy of the dev forum post about this issue? And if not, then ... any chance Jonas Quinn is around and still remembers this after 18 months? Heheh ^^;

    I want to know which game regressed with the old register randomization, and the technical details of which registers we found to assuredly be internally initialized.
      Main » Emulation » SNES DSP initialization and Magical Drop » New reply
      Kawa's Github