aboutsummaryrefslogtreecommitdiff
path: root/source
AgeCommit message (Collapse)Author
2013-01-08Try fixing a crash in the sound interrupt.Nebuleon Fumika
2013-01-08Permanently remove NO_OPEN_BUS hacks. It was a premature optimisation.Nebuleon Fumika
2013-01-08Release 1.16.Nebuleon Fumika
2013-01-08Configurable interrupt interval for the sound timer. Right now, only 22050 ↵Nebuleon Fumika
Hz audio at 2000-microsecond intervals works.
2013-01-08GLORIOUS interrupt-based sound playback. Now, the note-length-hopping ↵Nebuleon Fumika
problem isn't as apparent anymore, and automatic frame skipping doesn't go to 8 FPS all the time in Super Mario World. Thank the deities! Reverses the auto frameskip synchronisation from commit dac11c74ac112728016e51625ac9f2a727152ddd, because that doesn't play well with interrupts.
2013-01-07Release 1.15.Nebuleon Fumika
2013-01-07Require auto_equivalent_skip to be greater than 0 before decrementing it if ↵Nebuleon Fumika
the code is drawing a frame early in automatic frame skip mode. Otherwise, overflow occurs, and we skip 4 billion images.
2013-01-07Revert "Add a bit that tolerates 1/16 latency per frame in automatic ↵Nebuleon Fumika
frameskip mode." This reverts commit d9b6322caafcbd355848a32acd8b8c0fa1746264.
2013-01-07Add a bit that tolerates 1/16 latency per frame in automatic frameskip mode.Nebuleon Fumika
Remove old automatic frameskip code.
2013-01-07Smooth out the automatic frame skipping such that it doesn't go from 1 FPS ↵Nebuleon Fumika
to 8 FPS right away and constantly. The equivalent frame skip will be 2, 3, 5 or 8 most of the time, depending on the game, and will vary a bit depending on rendering demands. For example, the frame skipping in Super Mario World is 3 on the map and in graphically simple levels, and 5 in complex levels.
2013-01-07Fix an off-by-one in the manual frameskip code. It would raise the sound ↵Nebuleon Fumika
speed by 25% if frame skip 3 (Show 1 in 4) rendered a frame early. Optimise the controller code. I don't expect to allow remapping any time soon, because the DS has buttons for every single SNES controller button and nothing more.
2013-01-07Add support for user-selected and automatic frame skipping. Add support for ↵Nebuleon Fumika
PAL timings (20 ms per frame). User-selected frameskip causes slowdowns if the game runs slower than the resulting frame rate, but synchronises correctly if the game runs faster. Automatic frame skipping is still the default. It now only skips up to 8 frames, but in some games still skips that entire 8 frames. What's needed is an algorithm that averages frame latencies over a few seconds and skips while the latency is LOWER than the average.
2013-01-06Language file overhaul, part 2. Remove unused messages in all languages.Nebuleon Fumika
It's actually reloading icons that takes so much time.
2013-01-06Language message overhaul, part 1.Nebuleon Fumika
Clean up the names of messages. Mark those that are unused as such in code comments. Raise the CPU level while loading a message file, because it really does take half a second to load a 16 KB file on the lowest frequency (what the eff?).
2013-01-05Release 1.14.Nebuleon Fumika
2013-01-05Sync ALL bits of the joypad again. This may make controls a bit slower to ↵Nebuleon Fumika
parse, but is required by Super Mario All-Stars at least.
2013-01-05Mess with Mode 5 some more. Secret of Mana's menu sprite is fixed; however, ↵Nebuleon Fumika
as of commit 3cd20e203f3b0af8c32921f86547a126d74b34eb (still not fixed in this commit!), Donkey Kong Country's Rareware icon is split by black columns.
2013-01-04Move all CPU cycle calculations into cpuops.cpp.Nebuleon Fumika
2013-01-04Move some CPU cycle calculation from address resolution to the opcodes. This ↵Nebuleon Fumika
is to eventually move it from the resolved-address ops as well, reducing the number of memory stores.
2013-01-02Sleep when the lid is closed AND emulation is running. I don't know to what ↵Nebuleon Fumika
extent this will save on battery usage, though I do set the DSTWO's CPU to the lowest frequency while it sleeps.
2013-01-02Release 1.13.Nebuleon Fumika
2013-01-02Make Display Mode 4 an antialiased whole-screen mode.Nebuleon Fumika
* source/nds/displaymodes.cpp: Rewritten, assigned copyright to myself (GPLv2). * CATSFC/system/language.msg: Changed the English and French text for display modes.
2013-01-01Remove unused files. This reduces the plugin's size by 214 KB.Nebuleon Fumika
unicode.c, unicode.h, charsets.c, charsets.h: UTF-8 is universally used in CATSFC. Drop unused support for GBK/SJIS encodings.
2013-01-01Render double-width-res tiles from Background Mode 5 as half-width tiles. ↵Nebuleon Fumika
This makes the menu text in Secret of Mana readable. Sprites in Background Mode 5 are still messed up. At least they're at the right X coordinate, roughly...
2012-12-31Release 1.12.Nebuleon Fumika
2012-12-31ppu.cpp: Store multiplicands and quotients using aligned 16-bit writes ↵Nebuleon Fumika
(little-endian). Fold more identical case statements in the huge switch.
2012-12-31Fix PPU resets. This fixes Legend of Zelda: A Link to the Past.Nebuleon Fumika
2012-12-31MIPS requires 2-byte reads to be aligned to even addresses. #define ↵Nebuleon Fumika
FAST_ALIGNED_LSB_WORD_ACCESS and use it to read absolute 24-bit addresses as either 1 byte & 1 halfword, or 1 halfword & 1 byte.
2012-12-30Image modifications.Nebuleon Fumika
CATSFC/system/gui/boot.bmp: Remove the Engrish, although it was funny ("Enjoy yourself! All pleasure in it"). Replace it with a controller and the text "Loading...". catsfc.bmp: Remove the CAT and replace it with a controller. In the .ini, it's already written as CATSFC anyway. copyright: Update with image attribution per CC-BY-NC-ND 3.0. source/images: Create, with .psd files for the two modified .bmp files.
2012-12-30Bump to version 1.11 for another release.Nebuleon Fumika
2012-12-30Return to 22050 Hz audio. 48000 Hz was just too much to handle, apparently.Nebuleon Fumika
2012-12-30Clean up some backslashes at the end of lines.Nebuleon Fumika
2012-12-30Memory access optimisations in sprite rendering.Nebuleon Fumika
2012-12-30Rendering optimisations.Nebuleon Fumika
tile.cpp: Optimise the common case of drawing an unclipped but possibly flipped 8x8 tile. Instead of calling WRITE_4PIXELS16 16 times, each performing setup and teardown, move the loop into DrawTile16. tile.h, tile.cpp, gfx.h, gfx.cpp: End the use of global variable GFX.ScreenColors to pass around the current frame's palette. This saves on memory stores/loads.
2012-12-28Transform macros into loops to render tiles.Nebuleon Fumika
At -O3 these get unrolled; at -Os they become shorter code, fitting into the cache with other code.
2012-12-28Keep the audio processing unit (APU) enabled even when the user disabled the ↵Nebuleon Fumika
audio for a game. This allows some games that synchronise on the APU's actions to continue working.
2012-12-27Revert "Switch to the more complete Snes9x 1.53 documentation." It doesn't ↵Nebuleon Fumika
match the version used in NDSSFC, and I failed to port to 1.53 anyway. This reverts commit 2b23b5cbaf15bccc2aae0ff3ee91cedd26f101bd.
2012-12-27Make cleanly without -DCPU_SHUTDOWN.Nebuleon Fumika
2012-12-27Accidentally committed the previous revision with sound functions emptied.Nebuleon Fumika
2012-12-27Speed up rendering by an unknown amount.Nebuleon Fumika
gfx.cpp, others: Avoid always checking for Settings.SixteenBit if FOREVER_16_BIT is defined. port.h: Define FOREVER_16_BIT below PIXEL_FORMAT.
2012-12-26Add the update methods for the upper and lower screen into defines.Nebuleon Fumika
2012-12-26Merge Registers structures into their respective CPUs to avoid additional ↵Nebuleon Fumika
memory addresses being loaded every opcode.
2012-12-26Smoother sound. Raise the sound sampling frequency to 48000 Hz.Nebuleon Fumika
2012-12-26Universally use update method 2 for the lower screen and 0 for the upper ↵Nebuleon Fumika
screen. Method 1 causes problems after about 15 minutes; despite the double-buffering, screen updates start to tear in the middle consistently.
2012-12-26Wait for keys to be released after the yes/no dialog for deleting saved ↵Nebuleon Fumika
states, instead of delaying.
2012-12-24Bump version number to 1.10 for the APU half-carry bug and optimisations.Nebuleon Fumika
2012-12-24End the use of global variables for CPU emulation. This creates fewer memory ↵Nebuleon Fumika
store instructions in many SNES, SA1 and APU opcodes. Fix the APU half-carry bug, which may be audible. globals.cpp: Get rid of A1, A2, A3, A4, W1, W2, W3, W4, Int8, Int16, Int32, Work8, Work16, Work32, Ans8, Ans16, Ans32.
2012-12-24Bump to v. 1.09. Update the readme for cheats. Update the github link in ↵Nebuleon Fumika
source.txt.
2012-12-24Merge branch 'optimisation'Nebuleon Fumika
2012-12-24Merge branch 'cheats'Nebuleon Fumika