Mednafen’s VB emulation is not CPU-timing-accurate, and it was not designed to be CPU-timing-accurate, for performance and other reasons(it runs code faster than the CPU on an actual VB, mostly due to lack of wait state emulation and lack of register hazard pipeline stall emulation or whatever it’s called).
It’s not VIP draw timing accurate either, but that was a bit more due to lack of test data.
This reply was modified 10 years, 10 months ago by Mednafen.
You can bypass the simple anti-emulator check in Mednafen’s debugger if you know what you’re doing, but you probably don’t want to do that because it sounding like crap due to noise emulation deficiencies kind of ruins the experience. 😉
VirtualBoyX wrote:
Thanks the way I had to make my profile picture(sonic in red and black) was only to use microsoft paint and then make custom colors to the certain shades of sonics color
In GIMP, Colors->Map->Rotate Colors can change the hue of colors like so:
You could do a hybrid static-recompiler(using hints of what data is code from running the game in a specialized emulator)/interpreter(for paths the static-recompiler didn’t handle) emulation along with extra code to translate in real-time the video, audio, etc. port reads and writes.
There aren’t too many VB-relevant changes with this WIP release; there’s the new “vb.sidebyside.separation” setting, and VB emulation will work on big-endian(PowerPC, SPARC, etc.) platforms now.
When copying where length is sufficiently large(for cache miss/loading and register spilling reasons), and (src_addr & 0x3) == (dest_addr & 0x3), movbsu should always be slower than a well-optimized loop running from cache due to movbsu having a dummy read slot(IIRC, at least on a stock V810) for every 32-bit quantity transferred.
Code as in: 8 ld.w followed by 8 st.w.
If you want to be (too) clever, you could perform calculations that don’t, or have minimal, memory accesses, and interleave the instructions in-between the store instructions to take advantage of the write buffer and “absorb” some of the wait states(in addition to somewhat avoid use-immediately-after-set penalties in your calculations).