Commit graph

356 commits

Author SHA1 Message Date
Nebuleon Fumika
3dd99ccae4 Reinstate FAST_ALIGNED_LSB_WORD_ACCESS for 24-bit jumps. 2013-01-08 16:01:22 -05:00
Nebuleon Fumika
cdd85a7ce6 Reinstate SNES Open Bus. It was making Secret of Mana's introduction screen sound like a NES with a rusty audio controller. 2013-01-08 15:55:55 -05:00
Nebuleon Fumika
36ad810c10 Release 1.16. 2013-01-08 15:24:21 -05:00
Nebuleon Fumika
b89385cc0a Merge branch 'master' of https://github.com/ShadauxCat/CATSFC 2013-01-08 15:11:30 -05:00
Nebuleon Fumika
e070871850 Remove Open Bus again. Stop synchronising controls so often, now that the audio variable latency problem is fixed. 2013-01-08 15:10:13 -05:00
Nebuleon Fumika
4f9bd94497 Configurable interrupt interval for the sound timer. Right now, only 22050 Hz audio at 2000-microsecond intervals works. 2013-01-08 15:08:53 -05:00
Nebuleon Fumika
1beb671de1 Configurable interrupt interval for the sound timer. Right now, only 22050 Hz audio at 2000-microsecond intervals works. 2013-01-08 15:04:53 -05:00
Nebuleon Fumika
12c5afbe60 GLORIOUS interrupt-based sound playback. Now, the note-length-hopping 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 dac11c74ac, because that doesn't play well with interrupts.
2013-01-08 03:23:55 -05:00
Nebuleon Fumika
e4d3aeac2a Release 1.15. 2013-01-07 21:15:43 -05:00
Nebuleon Fumika
7d57e5aa45 Require auto_equivalent_skip to be greater than 0 before decrementing it if the code is drawing a frame early in automatic frame skip mode. Otherwise, overflow occurs, and we skip 4 billion images. 2013-01-07 20:46:10 -05:00
Nebuleon Fumika
377c6bcadb Revert "Add a bit that tolerates 1/16 latency per frame in automatic frameskip mode."
This reverts commit d9b6322caa.
2013-01-07 19:41:29 -05:00
Nebuleon Fumika
42c8a90d38 Add a bit that tolerates 1/16 latency per frame in automatic frameskip mode.
Remove old automatic frameskip code.
2013-01-07 16:21:32 -05:00
Nebuleon Fumika
dac11c74ac Smooth out the automatic frame skipping such that it doesn't go from 1 FPS 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-07 04:38:35 -05:00
Nebuleon Fumika
8447b6304c Fix an off-by-one in the manual frameskip code. It would raise the sound 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-07 03:28:22 -05:00
Nebuleon Fumika
9bdda53d2e Add a section about frame skipping in the readme. 2013-01-07 02:38:03 -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
6c5bd75716 Language file overhaul, part 2. Remove unused messages in all languages.
It's actually reloading icons that takes so much time.
2013-01-06 03:45:11 -05:00
Nebuleon Fumika
81cf5b3cd1 Language message overhaul, part 1.
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-06 01:07:42 -05:00
Nebuleon Fumika
6afa4a432b Release 1.14. 2013-01-05 20:22:25 -05:00
Nebuleon Fumika
1c48900fda Sync ALL bits of the joypad again. This may make controls a bit slower to parse, but is required by Super Mario All-Stars at least. 2013-01-05 04:01:01 -05:00
Nebuleon Fumika
6df0031bdb Mess with Mode 5 some more. Secret of Mana's menu sprite is fixed; however, as of commit 3cd20e203f (still not fixed in this commit!), Donkey Kong Country's Rareware icon is split by black columns. 2013-01-05 02:19:00 -05:00
Nebuleon Fumika
7c1327bd24 Move all CPU cycle calculations into cpuops.cpp. 2013-01-04 23:12:10 -05:00
Nebuleon Fumika
bfef6f17bd Move some CPU cycle calculation from address resolution to the opcodes. This is to eventually move it from the resolved-address ops as well, reducing the number of memory stores. 2013-01-04 15:54:12 -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
378f5a0e3f Release 1.13. 2013-01-02 01:43:11 -05:00
Nebuleon Fumika
ac4de708b5 Make Display Mode 4 an antialiased whole-screen mode.
* 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-02 01:18:18 -05:00
Nebuleon Fumika
c43b58481f Remove unused files. This reduces the plugin's size by 214 KB.
unicode.c, unicode.h, charsets.c, charsets.h: UTF-8 is universally used in CATSFC. Drop unused support for GBK/SJIS encodings.
2013-01-01 21:31:25 -05:00
Nebuleon Fumika
3cd20e203f Render double-width-res tiles from Background Mode 5 as half-width tiles. 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...
2013-01-01 03:53:45 -05:00
Nebuleon Fumika
73f8077a2a Release 1.12. 2012-12-31 23:52:52 -05:00
Nebuleon Fumika
2572e07369 ppu.cpp: Store multiplicands and quotients using aligned 16-bit writes (little-endian). Fold more identical case statements in the huge switch. 2012-12-31 19:38:36 -05:00
Nebuleon Fumika
4846dfa867 Fix PPU resets. This fixes Legend of Zelda: A Link to the Past. 2012-12-31 19:09:18 -05:00
Nebuleon Fumika
c5d385d664 MIPS requires 2-byte reads to be aligned to even addresses. #define 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-31 13:46:47 -05:00
Nebuleon Fumika
22fa90a3b3 Image modifications.
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-30 17:00:24 -05:00
Nebuleon Fumika
2c5b72137b 'make release' is now a thing. It makes the .zip file for a release. 2012-12-30 16:32:30 -05:00
Nebuleon Fumika
22dbf08665 source.txt: Merged to ShadauxCat's repository. Update the source link. 2012-12-30 16:22:43 -05:00
Nebuleon Fumika
cd108dbd18 Update list of contributors in the copyright file. 2012-12-30 16:21:10 -05:00
Nebuleon Fumika
2587113139 Bump to version 1.11 for another release. 2012-12-30 16:12:51 -05:00
Nebuleon Fumika
1bdf314192 Return to 22050 Hz audio. 48000 Hz was just too much to handle, apparently. 2012-12-30 15:56:36 -05:00
Nebuleon Fumika
8956d5cff2 Clean up some backslashes at the end of lines. 2012-12-30 15:30:14 -05:00
Nebuleon Fumika
b7867f01cc Memory access optimisations in sprite rendering. 2012-12-30 14:34:12 -05:00
Nebuleon Fumika
d1d0c81af8 Rendering optimisations.
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-30 00:20:45 -05:00
Nebuleon Fumika
e5a0c9146a Transform macros into loops to render tiles.
At -O3 these get unrolled; at -Os they become shorter code, fitting into the cache with other code.
2012-12-28 22:19:23 -05:00
Nebuleon Fumika
097d5f2e75 Revert "Test commit, look for write privilege."
This reverts commit a3fa0c23ad.
2012-12-28 02:30:51 -05:00
Nebuleon Fumika
a3fa0c23ad Test commit, look for write privilege. 2012-12-28 02:29:48 -05:00
Jaedyn Draper
3fff289e60 Merge pull request #26 from Nebuleon/master
Merge to CATSFC 1.10+
2012-12-27 23:19:47 -08:00
Nebuleon Fumika
c01a2a4216 Keep the audio processing unit (APU) enabled even when the user disabled the audio for a game. This allows some games that synchronise on the APU's actions to continue working. 2012-12-28 01:45:40 -05:00
Nebuleon Fumika
09b5fdb861 Revert "Switch to the more complete Snes9x 1.53 documentation." It doesn't match the version used in NDSSFC, and I failed to port to 1.53 anyway.
This reverts commit 2b23b5cbaf.
2012-12-27 18:51:20 -05:00
Nebuleon Fumika
c8935c352c Make cleanly without -DCPU_SHUTDOWN. 2012-12-27 18:46:37 -05:00
Nebuleon Fumika
963c3459e5 Accidentally committed the previous revision with sound functions emptied. 2012-12-27 18:10:31 -05:00
Nebuleon Fumika
6b36e79013 Speed up rendering by an unknown amount.
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-27 18:02:03 -05:00