mirror of https://github.com/bsnes-emu/bsnes.git
b2331ddb85
New WIP. About 12 hours of non-stop programming ... I've added full mouse support to nall::input, hiro and ruby::DirectInput. With that, I added some really hacked-together support for the mouse, super scope and justifiers. Yes, all there -- now _please_ stop bugging me about this already. Caveats: - Mouse support doesn't honor the speed setting. - Super Scope doesn't currently let you go offscreen, which I should allow by at least a few pixels to allow the offscreen flag to be set for any games that might need it. - Dual Justifier mode is fucked. I don't understand where PIO is supposed to be raised, and I used a hack to get the "shoot offscreen to reload" thing to work for the single Justifier mode for now. The dual one tends to desync when you go offscreen and stuff, not very pleasant. - I'm not going to support SS / Justifiers in port 1. Since they can't latch counters anyway, and no games make use of them, I don't see much point in cluttering the menu more and confusing new people. Both multitap and mouse have games that can use port 1, so they stay. - There's no input config panel to map buttons. You have to edit the config file directly. - The mouse delta absolutely sucks. It's just a simple div 5, so moving the mouse really slowly won't even register, and moving it fast has only a linear curve. This one's going to be a real pain in the ass to get right on everyone's system, as the ranges DirectInput gives for mice tends to vary based on resolution, software and hardware mouse speed settings. - Joystick delta range is -32768 to +32767, so div 5 means it'll be pretty much unplayable with the joystick. - Input capture window binds mouse clicks now. This needs to be expanded quite a lot to support selective axis and mouse assignment. - The software-rendered cursor doesn't work right in hires / interlace modes. - To get the PIO latching behavior 100% correct without a dead spot during DRAM refresh, I'd have to test the cursor coordinates every single clock cycle. That would be way too damn slow, so I used a huge hack instead. I just test once per scanline and fake the latch counters to the cursor position. This is really shitty, and some timing-sensitive code that was looking for this could easily detect the emulator because of this, but it's either a ~10-20% speed hit, or no speed hit at all and hacky SS / Justifier support. Since it seems to work with all the games anyway, I'll go with the latter for now. - No Linux support for any of this stuff yet, sorry. If you want to try it, the config file keysyms are: "x_axis" - mouse x axis "y_axis" - ... "button_00" - "button_07" - mouse buttons; hope you have the side buttons on your mouse for the Super Scope, otherwise have fun using a keyboard + mouse at the same time. "joypad00.axis_00" - "joypad00.axis_03" - joypad axes (only 0,1 work with DirectInput; 0-3 for SDL.) Yes, I'll rename the mouse ones to "mouse.foo" in the future. Aside from all that, not really looking for bug reports at the moment. Way too preliminary for that. Oh, and you have to click inside the video output to acquire the mouse. You'll know as the mouse cursor goes away. You can release the mouse by pressing escape on the keyboard. If the mouse is acquired, escape overrides any GUI key assignment to that button. You can also toggle fullscreen mode and the mouse will stay acquired. You can't acquire the mouse unless you have a mouse/SS/justifier attached to a controller port, and a game loaded. [No archive available] |
||
---|---|---|
src | ||
license.txt | ||
readme.txt |
readme.txt
bsnes Version: 0.036 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. ============== Configuration: ============== bsnes has two configuration files: bsnes.cfg, for program settings; and locale.cfg, for localization. For each file, bsnes will start by looking inside the same folder where the bsnes executable is located. If said file is not found, it will then check your user profile folder. On Windows, this is located at "%APPDATA%/.bsnes". On all other operating systems, this is located at "~/.bsnes". If said file is still not found, it will automatically be created in your user profile folder. If you wish to use bsnes in single-user mode, be sure that both files exist inside the same folder as the bsnes executable. If they do not, you can simply create new blank files and bsnes will use them in the future. If you wish to use bsnes in multi-user mode, simply delete these two files from the bsnes executable directory if they exist. If you wish to have multiple configuration profiles for the same user, you will need to make copies of the bsnes executable, and use each one in single-user mode. ==================== Known Limitation(s): ==================== S-CPU - Multiply / divide register delays not implemented - "Glitch" when reading joypad registers during auto polling 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 =============== Known Issue(s): =============== On Windows, attempting to load a ZIP, GZ or JMA compressed archive with non-ANSI characters in the filename will fail. This is because Windows requires UTF-16 encoding, but these libraries only work with UTF-8. Note that loading uncompressed images (SMC, SFC, etc) with non-ANSI characters works properly on all platforms. ===================== 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 ST-011 SETA DSP used by Quick-move Shogi Match with Nidan Rank-holder Morita ST-018 SETA RISC CPU used by Quick-move Shogi Match with Nidan Rank-holder Morita 2 Super Gameboy Cartridge passthrough used for playing Gameboy games ========================== Unsupported Controller(s): ========================== Mouse Super Scope Justifier ============= Contributors: ============= Andreas Naive, anomie, blargg, DMV27, FitzRoy, GIGO, Jonas Quinn, kode54, krom, mudlord, Nach, neviksti, Overload, RedDwarf, Richard Bannister, tetsuo55, TRAC, zones