mirror of https://github.com/bsnes-emu/bsnes.git
![]() Another WIP, this one's really just for myself to look over at work tomorrow. Changed any.hpp again to not auto upcast fundamental types, as it causes problems such as downcasting references to long doubles and such. Sucks how limited the any type is by forced casting 100% of the time, but whatever ... no endian issues possible now, at least. I added property.hpp and bound that to the Audio class (not to Video or Input yet). It's a lot more complicated than the old integral identifier cap/get/set functions, but I need the char*-named list functionality to allow changing driver-specific settings from the GUI one day. Not too much done there yet. Need to work on it more, I'd like to make bconfig use property.hpp rather than the IntegerSetting + StringSetting classes. Tried to make property.hpp read in a config file without bstring, talk about pain ... ugh. Tried to move bstring into nall, failed miserably. When strcpy(char*, const char*) is in the global namespace and strcpy(string&, const char*) is not, the compiler gets angry. Not going to work. Really should go object-oriented entirely and ditch libc functions, but ... that's a _lot_ of code rewriting on my part. Need to think about it more first. Removed bbase.h dependency from bstring, miu and xkas. Now I just need to do something about bkeymap.h, and things will be looking a lot better for code sanity. Nach wrote the _seventh(!!)_ libco driver tonight, an implementation using setjmp / longjmp. Pretty neat, overhead is ~20x, which puts it only slightly worse off than Windows Fibers on my machine. Using it in bsnes slows the emulator down by <1%, but it should be portable across all Unix-derivative systems now. This means eg a PS3, Alpha, SPARC, etc port should be completely doable now, just need someone to compile it. Planning to position libco as a competitor to GNU Pth, so that leaves me with: SDL -> vai wxWidgets -> miu GNU Pth and pthreads -> libco boost and Loki -> nall std::string -> bstring Good times. Now I just need to register inventedhere.org for all of these libraries. > but it's pointless since the sound quality of the S-DSP isn't good > enough to make a difference. The only thing we could possibly bypass would be the driver / API resampling our audio (eg 32khz -> 44khz native). Running each SNES channel through its own hardware channel is just silly. Either use an API that bypasses the mixer, or don't. And yes, there's lots of ways to "enhance" the audio. Replacing gaussian with a higher end interpolation, bypassing the clipping, etc. But then you end up with "better" (in most cases), but less accurate sound. > is anyone currently working on an enhancement snes emu? ZSNES adds cubic spline audio interpolation, SNES9x adds "hi-res" mode7, ZSNES/XBOX adds rumble pad support to most games. Other than smaller things like that, not really. I've talked about adding things like rumble, a new MMC to map more than 64mbits, CD-audio and video playback capabilities. Nobody seemed all that interested. Eh, maybe if someone finds and sends me one of those SNES CD player addons used by that one English teaching game, I'll add support for that to bsnes and then rig something like Der Langrisser to use it :P [No archive available] |
||
---|---|---|
src | ||
license.txt | ||
readme.txt |
readme.txt
bsnes Version 0.027 Author: byuu -------- General: -------- bsnes is a Super Nintendo / Super Famicom emulator that began on October 14th, 2004. The latest version can be downloaded from: http://byuu.org/ Please see license.txt for important licensing information. -------------- Shortcut Keys: -------------- Esc - Toggle menubar visibility F11 - Toggle fullscreen mode ------------------ Known Limitations: ------------------ S-CPU - Invalid DMA / HDMA transfers not fully emulated - Multiply / Divide register delays not implemented S-PPU - Uses scanline-based renderer. This is very inaccurate, but few (if any) games rely on mid-scanline writes to function correctly - Does not support FirstSprite+Y priority - OAM / CGRAM accesses during active display not supported correctly - RTO flags are not calculated on frames that are skipped when frameskipping is enabled. This provides a major speedup, however it will cause in issues in games that test these flags, eg the SNES Test Program Electronics Test. Turning frameskipping off will allow RTO flag calculation on every frame Hardware Bugs - S-CPU.r1 HDMA crashing bug not emulated - S-CPU<>S-SMP communication bus conflicts not emulated --------------------- Unsupported Hardware: --------------------- SA-1 Coprocessor used in many popular games, including: - Dragon Ball Z Hyper Dimension - Kirby Super Star - Kirby's Dreamland 3 - Marvelous - SD Gundam G-NEXT - Super Mario RPG Super FX Coprocessor used in many popular games, including: - Doom - Star Fox - Star Fox 2 (unreleased beta) - Super Mario World 2: Yoshi's Island SPC7110 Coprocessor used only by the following games: - Far East of Eden Zero - Far East of Eden Zero: Shounen Jump no Shou - Momotarou Densetsu Happy - Super Power League 4 ST-011 SETA DSP used only by Quick-move Shogi Match with Nidan Rank-holder Morita ST-018 SETA RISC CPU used only by Quick-move Shogi Match with Nidan Rank-holder Morita 2 Super Gameboy Cartridge passthrough used for playing Gameboy games ------------------------ Unsupported Controllers: ------------------------ Mouse Super Scope Justifier Multitap (4-port and 5-port)