Age | Commit message (Collapse) | Author |
|
to avoid buffer overruns. Buffer overruns pause the game for about half a second.
|
|
on-the-fly is just not stable on the DSTwo.
|
|
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.
|
|
Use sound interpolation to make it sound even more like the SNES.
|
|
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.
|
|
|
|
|
|
|
|
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.
|
|
the default value for all games which previously had this value configured.
|
|
audio buffer be free (1 out of 4).
|
|
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.
|
|
* 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.
|
|
|
|
|
|
otherwise the next screen can go into DMA.
Use channel 1 instead of channel 5, which must be busy for some reason.
|
|
DS2 dma.h to ds2_dma.h.
Add preliminary support for drawing emulated screens with DS2 DMA.
|
|
switch to the user's chosen frequency for the game.
Conflicts:
source/nds/ds2_main.c
source/nds/entry.cpp
source/nds/gui.c
|
|
loading in Super Mario World.
|
|
crackle constantly, like a record player. Most audible with earphones.
|
|
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.
|
|
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.
|
|
* 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.
|
|
|
|
milliseconds and set both backlights to on.
|
|
emulation.
|
|
These hotkeys can be overridden per game so that the global version of the hotkey can be ignored.
* Language file fixups related to \n (newlines).
* Pictochat fixups: shorten START and SELECT to ST and SEL. Should still be recognisable.
|
|
#define'd away, GUI volatility is simply removed.
|
|
|
|
|
|
This reverts commit 944d9a729455de435c3d200752308ceedf250196.
Conflicts:
source/nds/entry.cpp
|
|
unused variable, variable used uninitialised, unused function (when not used anywhere else with a #define).
|
|
auto frameskip is delaying because it's early.
|
|
This reverts commit 0d048d05ee50625f15d5235d362df6ee71903fc5.
|
|
controller status every scanline again.
|
|
Wrap the offset into the audio buffer less often.
|
|
ds2_setBacklight() MUST STAY, however, otherwise the emulator can crash with the bottom backlight off if a touch is recognised twice in a row. That happens with some broken styluses, so it's not unexpected.
|
|
carry the state of the GUI.
|
|
FOREVER_16_BIT_SOUND and FOREVER_STEREO and use them throughout the code.
This is essentially commit 6b36e79013d4c9273a96a9783a2bccdb516f174a, but for sound instead of graphics.
|
|
|
|
explain in code comments why they're needed.
I know ds2_setBacklight(unsigned int) needs a delay before it, otherwise if done too close to another call, it crashes.
This partially reverts commit 8951fdff1aada126257e07699ea6f132cb8d2e65.
|
|
before the menu, and restart it after it ends.
|
|
|
|
Hz audio at 2000-microsecond intervals works.
|
|
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.
|
|
the code is drawing a frame early in automatic frame skip mode. Otherwise, overflow occurs, and we skip 4 billion images.
|
|
frameskip mode."
This reverts commit d9b6322caafcbd355848a32acd8b8c0fa1746264.
|
|
Remove old automatic frameskip code.
|
|
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.
|
|
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.
|