bsnes icon indicating copy to clipboard operation
bsnes copied to clipboard

VOXEL demo regression

Open consolethinks opened this issue 4 years ago • 10 comments

The leaked VOXEL rendering game demo doesn't work anymore on the latest version of BSNES (nor on the 2014 libretro core). There's only a single video of it apparently running correctly on BSNES v0.55: https://www.youtube.com/watch?v=hPR-iSnaCuc

image

However this is how it looks like on the current version.

VOXEL.zip Here's a rom for verification

consolethinks avatar Dec 05 '20 12:12 consolethinks

How does the demo run on real hardware?

Screwtapello avatar Dec 05 '20 22:12 Screwtapello

According to someone who owns an SD2SNES/FXPAK, it runs just like in the video. I could ask them to record a video of it, if need be, although I don't know how accurate is the FPGA core for SuperFX

consolethinks avatar Dec 05 '20 22:12 consolethinks

I don't know when we'll find somebody who's able and available to investigate this, but it sounds like something we should track down eventually. Thanks for reporting it!

Screwtapello avatar Dec 05 '20 23:12 Screwtapello

Here's a screenshot from a SNES (unnamed hardware clone) with an SD2SNES image

consolethinks avatar Dec 06 '20 00:12 consolethinks

I can confirm at least that this works using SD2SNES on a (real) Super Famicom. Unfortunately that's still not quite good enough confirmation, but it's closer.

jchv avatar Dec 06 '20 22:12 jchv

Near fixed this in bsnes v0.051 so I think it was known to be hardware accurate.

  • corrected ROMBR and PBR SuperFX register masking; fixes Voxel demo [MooglyGuy]

Changelog: https://gitlab.com/higan/bsnes-history-kit/-/blob/master/sources/tukuyomi/misc/bsnes_changelog.txt#L5098 v0.051 source code: https://gitlab.com/higan/bsnes-history-kit/-/blob/master/sources/tukuyomi/emus/bsnes/bsnes_v051.tar.bz2

bsnesFan avatar Feb 25 '21 23:02 bsnesFan

Okay, when you compare v0.050 with v0.051, you can see two things that changed in the superfx core:

superfx -> opcodes.cpp (left: old, right: new)

image

superfx->mmio.cpp (left: old, right: new)

image

These lines are still in the newest bsnes version:

https://github.com/bsnes-emu/bsnes/blob/0ab0ab69572a88be6dcc633662d5e2cda807ea45/bsnes/processor/gsu/instructions.cpp#L378

https://github.com/bsnes-emu/bsnes/blob/0ab0ab69572a88be6dcc633662d5e2cda807ea45/bsnes/sfc/coprocessor/superfx/io.cpp#L93

but the code around that changed. Unfortunately, I can't do more than that. I hope it helped.

bsnesFan avatar Feb 26 '21 01:02 bsnesFan

You have closed the wrong issue, @Screwtapello.

Max833 avatar Aug 01 '21 08:08 Max833

Whoops, sorry about that!

We updated the copy of SameBoy that bsnes includes, and one of the updates happened to fix SameBoy's issue 123, looks like GitHub got over-eager and marked this one closed.

Screwtapello avatar Aug 01 '21 09:08 Screwtapello

What's happening here: (it's the same in ares and higan)

  1. the game is 384KB, in commit a937f9b79b7756176842e7ac2489450a3d6408fc some refactoring took place, that basically masks every address in bus_read/write() by rom_mask/ram_mask, you can handle non power-of-2 sizes with "addr = Bus::mirror(addr, rom.size());"

  2. after 106, icarus was basically rewritten, and some heuristics got changed, Voxel needs at least 64k expansion ram (previously 128k was used), that's hardcoded to 32k in SuperFamicom::expansionRamSize() for roms that don't set the extended header flags (i.e. Star Fox)

It's not really suprising that the heuristics don't really work for a prototype, adding an entry to the database would be sensible here

jbo-85 avatar Sep 16 '21 11:09 jbo-85