Nebuleon Fumika
dfa2d3cc68
Add include files from BassAceGold's library, release 2 fix 2.2.
2013-02-05 01:33:39 -05:00
Nebuleon Fumika
d1a7bf5eb5
Fully integrate BassAceGold's libraries, finally. The README still states 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-04 23:45:44 -05:00
Nebuleon Fumika
b1c298ab50
Merge pull request #30 from derpking/patch-1
...
Update source/dsp1.cpp
2013-02-04 15:06:39 -05:00
Nebuleon Fumika
1c9094d99f
Release 1.28 after disabling the controller status sync hack.
2013-02-04 05:57:53 -05:00
derpking
cb610fd0c2
Update source/dsp1.cpp
...
static const uint16 DSP1ROM[1024]
snes9x 1.53 updated the dummy loops
2013-02-03 21:44:15 -08:00
Nebuleon Fumika
4096050f40
Release 1.27.
2013-02-03 20:12:29 -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
1ddc8b53fe
Faking out the sound synchronisation with a buffer of silence wasn't necessary.
2013-02-03 16:17:06 -05:00
Nebuleon Fumika
538718997f
Write back the data cache before using DMA to draw emulated frames.
2013-02-03 15:52:45 -05:00
Nebuleon Fumika
397bf5192a
Add some forgotten DMA files.
2013-02-03 15:29:05 -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
461f240655
Fix a name clash between Snes9x's dma.h and the DS2 dma.h by renaming the DS2 dma.h to ds2_dma.h.
...
Add preliminary support for drawing emulated screens with DS2 DMA.
2013-02-03 05:59:48 -05:00
Nebuleon Fumika
fd92545013
Whoops. I forgot to replace an instance of ds2_setCPULevel from the experimental branch cherry-pick.
2013-02-03 04:20:51 -05:00
Nebuleon Fumika
8693ae1bd8
Add SDK modifications by BassAceGold as of 2011-04-14, as well as modified DMA functions as of 2013-01-29.
2013-02-03 04:19:11 -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
82cac4333f
DMA the screen with Display Modes 0, 1, 2 and 3. Remove lots of controller synchronisation at HBlank that was ironically causing more communication to take place, thus less controller synchronisation. (Huh?!)
2013-02-03 02:43:39 -05:00
Nebuleon Fumika
0568880af3
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.
2013-02-02 17:37:51 -05:00
Nebuleon Fumika
c6f9898023
Isolate free-space gathering problems...
2013-02-02 15:01:58 -05:00
Nebuleon Fumika
952ba79ad0
mdelay becomes ds2_mdelay.
2013-02-02 14:45:29 -05:00
Nebuleon Fumika
035ec0327e
Makefile change: Do not copy CATSFC inside EXPSFC if it exists.
2013-02-02 14:35:22 -05:00
Nebuleon Fumika
50f2cc70c1
For consistency, rename mdelayOC and udelayOC to ds2_mdelay and ds2_udelay in libsrc/core/ds2_cpuclock.h. This doesn't affect compilation.
2013-02-02 14:15:32 -05:00
Nebuleon Fumika
3109a94e8b
Replace remaining references to ds2_setCPUclocklevel with ds2_setCPULevel.
2013-02-02 14:08:22 -05:00
Nebuleon Fumika
30b0cd94d9
Add updated delay functions provided by BassAceGold that deal with overclocking.
...
References:
<http://gbatemp.net/threads/libds2a-unofficial.288736/#post-4539983 >
<http://filetrip.net/dl?CCv0QSb7k8 >
2013-02-02 13:54:59 -05:00
Nebuleon Fumika
0bbaa2e1c0
Include BassAceGold's modified SDK as of 2013-01-31. Include overclocking options up to level 18, 456 MHz.
2013-02-02 03:51:19 -05:00
Nebuleon Fumika
666ad3cd8a
Merge branch 'master' into experimental
...
Conflicts:
README.md
source/nds/gui.c
2013-02-02 02:25:38 -05:00
Nebuleon Fumika
7aeebe97e7
Fix an oddity in the sound when returning from a global mute. Fixes music loading in Super Mario World.
2013-02-02 02:21:52 -05:00
Nebuleon Fumika
984682682c
Release 1.26.
2013-02-02 01:39:50 -05:00
Nebuleon Fumika
30e7498f22
Add the experimental branch's files to .gitignore.
2013-02-02 01:38:32 -05:00
Nebuleon Fumika
91d7bf5b91
Correct overzealous detection of buffer overruns. It was making the sound crackle constantly, like a record player. Most audible with earphones.
2013-02-02 01:37:16 -05:00
Nebuleon Fumika
2e6ee590b5
Set up the experimental branch.
...
* Explain what version this is in the readme.
* Add a warning to the emulator when it starts.
* Set up a visually distinct theme, in red.
* Set up a distinct system folder, EXPSFC.
* Change the Makefile to build to expsfc.plg.
2013-02-02 01:24:29 -05:00
Nebuleon Fumika
25aeb83f7b
Release 1.25.
2013-02-01 20:47:46 -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
e61731a524
Revert the reversed stereo mixing loop. This makes it more consistent with 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 2b71568408
.
2013-02-01 19:02:38 -05:00
Nebuleon Fumika
30fe9eaf6a
While killing time between frames, process audio instead of doing nothing. 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-01 18:27:03 -05:00
Nebuleon Fumika
58948ffd1d
Make the audio timing more precise.
...
* 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-01 06:11:59 -05:00
Nebuleon Fumika
58a3dc9b17
Hook fast-forward into Settings.TurboSkipFrames.
2013-02-01 06:10:57 -05:00
Nebuleon Fumika
c9c91f327a
Don't initialise the ROM memory at startup, since a ROM needs to be loaded into it anyway. According to BassAceGold's timings, this should save 179 milliseconds.
2013-02-01 00:59:12 -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
f385752705
memcpy vs memmove: memmove correctly handles overlapping source and 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-02-01 00:33:30 -05:00
Nebuleon Fumika
f0fab191e4
Prevent a file descriptor becoming unusable if the emulator configuration file is not in the correct format.
2013-01-29 22:24:20 -05:00
Nebuleon Fumika
4ff8eab0d0
Assign a filter-related variable right after other filter-related variables.
2013-01-27 15:36:49 -05:00
Nebuleon Fumika
cfa1c811c6
Reimplement Quicksort correctly for file selection screens. Before this commit, the emulator could sometimes give a file out of its order, for example an O* file between two S* files.
2013-01-27 00:45:59 -05:00
Nebuleon Fumika
362b28e937
Suspend on lid-close in the menu.
2013-01-27 00:30:48 -05:00
Nebuleon Fumika
dded216137
Turn off the lower screen's backlight when returning from suspend during emulation.
2013-01-26 20:31:11 -05:00
Nebuleon Fumika
e473daf461
8 is NUM_CHANNELS. (magic constant)
2013-01-26 20:16:02 -05:00
Nebuleon Fumika
365a69d72e
Release 1.24.
2013-01-26 19:44:37 -05:00
Nebuleon Fumika
6e69c6201b
Fix uninitialised memory access in pitch modulation.
2013-01-26 19:19:18 -05:00
Nebuleon Fumika
f2f7ef3fe9
Fix Tools/Global hotkeys/* refusing to work by touch.
2013-01-26 17:07:26 -05:00
Nebuleon Fumika
2b71568408
Reverse the loop in MixStereo such that instead of "for each channel, for each playback sample, add into the mix buffer", the playback sample is instead written to the mix buffer only when fully mixed from the 8 SNES sound channels.
...
Verified working with Secret of Mana, Super Bomberman 5 and Super Mario World.
2013-01-26 14:49:18 -05:00
Nebuleon Fumika
2b9a9dc05b
Decide whether SuperFX and SA-1 chips are enabled only once per frame. This saves a few million instructions per second. (Inspired by Snes9x-Euphoria)
2013-01-26 14:47:59 -05:00