bsnes-emu / bsnes

bsnes is a Super Nintendo (SNES) emulator focused on performance, features, and ease of use.
Other
1.67k stars 154 forks source link

VOXEL demo regression #123

Open consolethinks opened 3 years ago

consolethinks commented 3 years ago

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

Screwtapello commented 3 years ago

How does the demo run on real hardware?

consolethinks commented 3 years ago

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

Screwtapello commented 3 years ago

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!

consolethinks commented 3 years ago

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

jchv commented 3 years ago

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.

bsnesFan commented 3 years ago

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

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 commented 3 years ago

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.

Max833 commented 3 years ago

You have closed the wrong issue, @Screwtapello.

Screwtapello commented 3 years ago

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.

jbo-85 commented 2 years ago

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