Commit graph

26 commits

Author SHA1 Message Date
Nebuleon Fumika
4b5a5a15d7 Add an option to put the game on the Lower Screen.
* Before entering the menu, copy the game screen to the Upper Screen if it's on the Lower Screen.
* Now, the frame that's shown in the menu doesn't appear to be the previous frame for a fraction of a second anymore.
2013-05-20 03:17:02 -04:00
Nebuleon Fumika
55b5c8ff65 Increase the row count from 6 to 8 in the GUI, file selector and cheats. Remove the useless "dynamic cheat" functions. 2013-03-30 01:08:07 -04:00
Nebuleon Fumika
805ccda32c Uniformise the location of the title icon across all interfaces, default and custom. 2013-03-26 19:58:17 -04:00
Nebuleon Fumika
2fd480b4f3 Uniformise the location of the back button across all interfaces, default and custom. 2013-03-26 19:53:13 -04:00
Nebuleon Fumika
936cb38b5e Center text without needing endless spaces; also support \n in centered text.
* Text positioning in message boxes is now controlled by #defines.
* The various MSG_PLAY_SLIDE<n> messages are now one, MSG_SCREENSHOT_SLIDESHOW_KEYS, with \n between lines.
* Use \n in some more message pairs.
* Lengthy scrollers broke. This will be investigated in a later commit.
2013-03-10 21:21:37 -04:00
Nebuleon Fumika
edda8744ad Start option text more to the left to fit more text in a line. Widen cheat descriptions and file names in selectors, to the left AND to the right, to make the interface consistent again (and for practical purposes). 2013-02-19 23:33:43 -05:00
Nebuleon Fumika
a8c2fcdb2c Add hotkeys to quickly load from and save to saved state #1, as well as to toggle full-screen (going from mode 3, middle of screen, to mode 4, full-screen smoothed).
This commit uses text that has not been validated in some languages.
2013-02-14 03:02:33 -05:00
Nebuleon Fumika
18e56b68fd Add retro sound as a setting in all languages except Chinese. 2013-02-09 23:41:06 -05:00
Nebuleon Fumika
ebf48b1bf7 Yeah... Despite the audio optimisations, sound still crackles with display double-buffering. Disable that, again. 2013-02-06 15:51:23 -05:00
Nebuleon Fumika
772e24ae50 Reinstate frame skipping options 0 and 1, but keep the new meaning (>= 2 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-06 03:46:48 -05:00
Nebuleon Fumika
9e87a7a2b2 Implement automatic CPU frequency switching, which improves battery life if 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-06 00:34:01 -05:00
Nebuleon Fumika
f2adea7bb2 Force both manual and automatic frameskipping to be at or above 2. Resets the default value for all games which previously had this value configured. 2013-02-05 19:39:09 -05:00
Nebuleon Fumika
3cd1e03278 Change the upper screen updates to be double-buffered. Require that one audio buffer be free (1 out of 4). 2013-02-05 16:05:16 -05:00
Nebuleon Fumika
b3a7f8f1fc Synchronise the controller status more spread out inside a rendered frame:
* 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-03 19:26:34 -05:00
Nebuleon Fumika
9b75c09a7f Force waiting for a screen to be transferred (update mode 1) because otherwise the next screen can go into DMA.
Use channel 1 instead of channel 5, which must be busy for some reason.
2013-02-03 06:25:12 -05:00
Nebuleon Fumika
02f8184fe0 Make it easier to change the "high" and "low" CPU frequencies, as well as to 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-03 03:20:47 -05:00
Nebuleon Fumika
d4dd98e8c1 Add an option that controls which element should be more fluid, per game: 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-01 20:09:24 -05:00
Nebuleon Fumika
60f6ffcc70 When starting CATSFC, assume the backlights are both on, so don't delay 100 milliseconds and set both backlights to on. 2013-02-01 00:36:51 -05:00
Nebuleon Fumika
31c9101699 Prepare data structures for adding hotkeys. 2013-01-20 18:14:18 -05:00
Nebuleon Fumika
2bb2ee8c0a Prepare code to ask for a hotkey. Prepare a temporary fast-forward switch. 2013-01-19 02:24:37 -05:00
Nebuleon Fumika
bf5cb54162 Fix multiple compiler warnings: forward declaration, implicit declaration, unused variable, variable used uninitialised, unused function (when not used anywhere else with a #define). 2013-01-18 02:41:32 -05:00
Nebuleon Fumika
c01c25febe Add support for user-selected and automatic frame skipping. Add support for 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-07 02:16:34 -05:00
Nebuleon Fumika
7c2a30c5b5 Sleep when the lid is closed AND emulation is running. I don't know to what extent this will save on battery usage, though I do set the DSTWO's CPU to the lowest frequency while it sleeps. 2013-01-02 03:20:47 -05:00
Nebuleon Fumika
0f60f047f5 Add the update methods for the upper and lower screen into defines. 2012-12-26 15:40:35 -05:00
Nebuleon Fumika
a194b85003 Preliminary Snes9x-based cheat code support. Not tested, because the file selection interface freezes when it gets to the folder containing Mightymo's cheat files, whereas it did not do this before with the converted Mightymo cheats. (335 files -> 679, though.) 2012-12-22 22:16:55 -05:00
Kitty Draper
d40ae99422 first commit 2011-03-05 21:39:25 -05:00