aboutsummaryrefslogtreecommitdiff
path: root/source
AgeCommit message (Collapse)Author
2013-02-07EN: Added a German translation. DE: Deutsche Übersetzung hinzugefügt.SignZ
2013-02-07De-interleave the ROM using DMA. This helps the more esoteric jumbo memory ↵Nebuleon Fumika
maps load faster.
2013-02-06Remove 320 KiB of memory allocations in APU emulation that were completely ↵Nebuleon Fumika
unused but constantly re-zeroed. Frees up 320 KiB for other uses, and saves ~4 milliseconds at emulator startup, when resetting the APU and when loading a new game.
2013-02-06gui.c: Require all keys to be released after the B, A or X button or the ↵Nebuleon Fumika
Touch Screen is pressed. This avoids bringing up, or exiting from, multiple menus if you happen to press something for longer than 1/5 second. The modification does not apply to the directional pad in all menus, or the L and R buttons in file selectors.
2013-02-06Use key pictograms from Pictochat to display keys for yes/no dialog(ue)s.Nebuleon Fumika
2013-02-06Yeah... Despite the audio optimisations, sound still crackles with display ↵Nebuleon Fumika
double-buffering. Disable that, again.
2013-02-06When changing languages, quit doing the "Changing language, please wait..." ↵Nebuleon Fumika
as it only takes a few milliseconds.
2013-02-06Raise the sound frequency from 22050 Hz to 32000 Hz, which is like the SNES. ↵Nebuleon Fumika
Use sound interpolation to make it sound even more like the SNES.
2013-02-06Fix 2 compiler warnings in gui.c.Nebuleon Fumika
2013-02-06Quit saving the files so often for nothing; that uses up erase cycles on ↵Nebuleon Fumika
storage cards! Instead, save them once when the menu that contains the settings that the user changed is exited, IF the settings' values changed, OR once when updating the list of most-recently played games. Automatically save the SRAM in most cases, including game changes. This commit also makes it unnecessary to save the game config of the previous game when loading another, makes it load certain settings correctly, and MAY make it avoid creating a file for a game's settings if the user never changes them from the defaults.
2013-02-06Reinstate frame skipping options 0 and 1, but keep the new meaning (>= 2 ↵Nebuleon Fumika
equivalent skip level) for automatic frame skipping. Remove the automatic CPU frequency option, which was making audio emit 0.25 second of silence every so often.
2013-02-06Allow all audio buffers to get full again before declaring underflow.Nebuleon Fumika
2013-02-06Fix the loading screen for a ROM appearing for a split second after the ↵Nebuleon Fumika
splash screen. Fix uninitialised memory access in Check_LoadArg.
2013-02-06Make all gamepak loads call LoadGameAndItsData, that way its "Loading" ↵Nebuleon Fumika
screen, current gamepak variables, game config stuff and so on are all consistent.
2013-02-06Fix settings not getting loaded with a ROM provided by plugin arguments.BassAceGold
2013-02-06Load the game from plug-in launch arguments. Make the CATSFC system ↵BassAceGold
directory become the one transferred via arguments in that case.
2013-02-06Document the auto CPU behavior a bit.Nebuleon Fumika
2013-02-06Implement automatic CPU frequency switching, which improves battery life if ↵Nebuleon Fumika
playing games that don't use all of the MIPS CPU. If all of it is indeed needed, then the game will constantly play at 396 MHz.
2013-02-05Force both manual and automatic frameskipping to be at or above 2. Resets ↵Nebuleon Fumika
the default value for all games which previously had this value configured.
2013-02-05Disable the free space line in the options for the time being. Currently it ↵Nebuleon Fumika
invokes a recursive directory scan to calculate how much space is used first.
2013-02-05Change the upper screen updates to be double-buffered. Require that one ↵Nebuleon Fumika
audio buffer be free (1 out of 4).
2013-02-04Fully integrate BassAceGold's libraries, finally. The README still states ↵Nebuleon Fumika
that 1.2 is required to overwrite 0.13's stuff; really, 0.13 is needed only for `gcc`. So the sequence goes 0.13's `gcc` -> 1.2 -> BassAceGold's libraries -> make `libds2a.a`. DMA function names changed to match BassAceGold's.
2013-02-04Merge pull request #30 from derpking/patch-1Nebuleon Fumika
Update source/dsp1.cpp
2013-02-04Release 1.28 after disabling the controller status sync hack.Nebuleon Fumika
2013-02-03Update source/dsp1.cppderpking
static const uint16 DSP1ROM[1024] snes9x 1.53 updated the dummy loops
2013-02-03Release 1.27.Nebuleon Fumika
2013-02-03Synchronise the controller status more spread out inside a rendered frame:Nebuleon Fumika
* before rendering a background; * before rendering sprites; * while rendering more than 128 samples of audio at once ("Prefer fluid video"); * after every 16 scanlines of CPU execution instead of every 1; * while waiting for an audio buffer to become available; * while killing time between frames with fast-forward disabled. Controller presses and releases are now combined in a DS button bitfield using a shorter 32-bit algorithm. See entry.cpp:NDSSFCAccumulateJoypad and #define ACCUMULATE_JOYPAD in the source. This is still not suitable for playing platformers frame-perfectly, but it's much better than half a second of latency to press or release a button, and one still needs to press buttons a bit more than just light taps. I'd say 50 milliseconds is the latency now. Platformers requiring more precision can be played with frameskip 0. DMA does not require double-buffered displaying, so synchronise the controller more often by disabling double-buffered displaying again.
2013-02-03Faking out the sound synchronisation with a buffer of silence wasn't necessary.Nebuleon Fumika
2013-02-03Write back the data cache before using DMA to draw emulated frames.Nebuleon Fumika
2013-02-03Add some forgotten DMA files.Nebuleon Fumika
2013-02-03Force waiting for a screen to be transferred (update mode 1) because ↵Nebuleon Fumika
otherwise the next screen can go into DMA. Use channel 1 instead of channel 5, which must be busy for some reason.
2013-02-03Fix a name clash between Snes9x's dma.h and the DS2 dma.h by renaming the ↵Nebuleon Fumika
DS2 dma.h to ds2_dma.h. Add preliminary support for drawing emulated screens with DS2 DMA.
2013-02-03Whoops. I forgot to replace an instance of ds2_setCPULevel from the ↵Nebuleon Fumika
experimental branch cherry-pick.
2013-02-03Make it easier to change the "high" and "low" CPU frequencies, as well as to ↵Nebuleon Fumika
switch to the user's chosen frequency for the game. Conflicts: source/nds/ds2_main.c source/nds/entry.cpp source/nds/gui.c
2013-02-02Fix an oddity in the sound when returning from a global mute. Fixes music ↵Nebuleon Fumika
loading in Super Mario World.
2013-02-02Release 1.26.Nebuleon Fumika
2013-02-02Correct overzealous detection of buffer overruns. It was making the sound ↵Nebuleon Fumika
crackle constantly, like a record player. Most audible with earphones.
2013-02-01Release 1.25.Nebuleon Fumika
2013-02-01Add an option that controls which element should be more fluid, per game: ↵Nebuleon Fumika
video or audio. This makes most games playable, but the player can choose to get fluid audio instead of fluid video in sound-test modes or games with epic soundtracks.
2013-02-01Revert the reversed stereo mixing loop. This makes it more consistent with ↵Nebuleon Fumika
mainline Snes9x, in case of merges from 1.53. It also didn't help much, given that the problem was trying to push 92 milliseconds of audio inside 20 milliseconds of time. This reverts commit 2b715684087675747df7cb8995695936f20c782b.
2013-02-01While killing time between frames, process audio instead of doing nothing. ↵Nebuleon Fumika
Also correctly fill the buffer with silence when returning from pause. This reduces or eliminates crackling. The emulator kills time in two circumstances: * In automatic frameskip mode, without fast forwarding, the emulator kills time if it rendered a frame early. * In manual frameskip mode, without fast forwarding, the emulator kills time to wait for the next rendered frame.
2013-02-01Make the audio timing more precise.Nebuleon Fumika
* Fake out the buffer timing by sending a buffer full of silence when returning from pause. Reduces crackling introduced by the next point. * Send buffers only once every 23.22 milliseconds, not up to four buffers at once (92.88 milliseconds) and randomly thereafter. Reduces note-length jumpiness. * Audio may have trouble catching up if external jitter reaches 11.61 milliseconds. That happens if Mode 7 images or filtered modes take a long time to render, or if chips take a long time to execute.
2013-02-01Hook fast-forward into Settings.TurboSkipFrames.Nebuleon Fumika
2013-02-01Don't initialise the ROM memory at startup, since a ROM needs to be loaded ↵Nebuleon Fumika
into it anyway. According to BassAceGold's timings, this should save 179 milliseconds.
2013-02-01When starting CATSFC, assume the backlights are both on, so don't delay 100 ↵Nebuleon Fumika
milliseconds and set both backlights to on.
2013-02-01memcpy vs memmove: memmove correctly handles overlapping source and ↵Nebuleon Fumika
destination memory buffers, but is slower than memcpy in many implementations. When memory buffers don't overlap, memcpy may be more efficient. The DS2 SDK is such an implementation, so change many memmoves into memcpys.
2013-01-29Prevent a file descriptor becoming unusable if the emulator configuration ↵Nebuleon Fumika
file is not in the correct format.
2013-01-27Assign a filter-related variable right after other filter-related variables.Nebuleon Fumika
2013-01-27Reimplement Quicksort correctly for file selection screens. Before this ↵Nebuleon Fumika
commit, the emulator could sometimes give a file out of its order, for example an O* file between two S* files.
2013-01-27Suspend on lid-close in the menu.Nebuleon Fumika