hate to be that guy who comes in with a problem and then goes "I don't know what it was or what I did but I fixed it," but it is what it is.
So, I think I figured out what I did.
TL;DR: just delete the BIOS files dc_flash.bin and/or dc_nvmem.bin if they exist. These files are generated by the emulators and do not need provided by the user. I think dc_flash.bin should be removed from the online docs.
"@SM, what have you been up to lately?"
Revisiting this because I encountered it again when putting some Dreamcast onto a new setup *(well, back onto my old setup anyway, that had prior been scrubbed of all traces, until later when I got a USB stick for some extra storage and decided to put them back on now that I could afford the space. Anyway...)
Using lr-flycast I would get the same black-screen behavior in Hydro Thunder, and then also SF Rush 2049 would not load but would boot straight to the BIOS menu instead.
Re: BIOS, I'm using the same World dc_boot.bin and USA dc_flash.bin as noted in posts above, (checksums match the docs, etc.) Additional, there is another file present dc_nvmem.bin which I did not provide, but was created automatically when it doesn't exist.
I also have an older backup from back when it "magically worked" (after trying Redream the first time), which includes another version this file.
When no dc_nvmem.bin exists, or after it makes one automatically, the games don't work. But when I apply the backup dc_nvmem.bin, then they do begin working.
...
Testing various iterations to see what works or not. Some observations. So far these are 100% reproducible:
After playing lr-flycast, dc_nvmem.bin is updated, or is created if not exist.
After playing redream, dc_flash.bin instead is updated, or is created if not exist.
With neither file present, HT (Hydro Thunder) works in lr-flycast and produce a "good" dc_nvmem.bin on exit.
lr-flycast only writes the nvmem but clearly it does reads from dc_flash if exist, because:
With just the docs version file dc_flash.bin 0a93f... present, HT not work in flycast and produce a "bad" dc_nvmem.bin on exit.
With just an "updated" (by running redream once) dc_flash.bin present, HT works in flycast and produce a "good" dc_nvmem.bin on exit.
If dc_nvmem exist, it seem to override dc_flash, because:
A "bad" dc_nvmem.bin, with or without any dc_flash.bin (docs or modified), HT not work and produce a "bad" nvmem.
A "good" dc_nvmem.bin, with or without any dc_flash.bin (docs or modified), HT works and produce a "good" nvmem.
After playing redream, the new/updated dc_flash.bin can be copied as a "good" dc_nvmem.bin by which will HT works in flycast.
... so the solution seems to be, delete both dc_flash.bin, dc_nvmem.bin if they exist then play the game once, and then...then do I even need a flash.bin after that, or am I good with just the new nvmem? It seems to work at this point, whether I add back the documented flash.bin file afterwards, or not. No, just delete them and play. The emulator that you use will generate the file that it needs and you don't need to do anything else. You just need the boot BIOS if you want, but even that is optional.
...
Digging further:
Both redream and flycast say they want the boot bios (redream calls it optional), but neither mention the flash/nvmem one at all. Reicast is dead in the water and I can't find any information regarding BIOS requirements at all, there.
https://docs.libretro.com/library/flycast/#bios
https://github.com/reicast/reicast-emulator.git
...
Flycast do also say the boot BIOS is optional, if you look at the stand-alone source:
"A Dreamcast BIOS file is optional but NAOMI and Atomiswave BIOS files are required."Here, it also calls out that you specifically don't need the dc_nvmem.bin file unless you are importing your own setup:
"...a table of Dreamcast files, all of which (except dc_boot.bin) are generated and used by the emulator (so, for example, it is recommended that you only have a dc_boot.bin file inside if you are starting, unless you are importing your stuff from another setup)"...
As shown, user-provide dc_flash.bin is not require and in some cases, can even prevent games from working.
Does anyone know source for requiring it in the first place?
If other user can confirm these behavior and interpretations, I propose that dc_flash.bin removed from the docs, and note also that dc_boot.bin optional but not required.