aboutsummaryrefslogtreecommitdiff
path: root/source
AgeCommit message (Collapse)Author
2013-01-02Make Display Mode 4 an antialiased whole-screen mode.Nebuleon Fumika
* 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-01Remove unused files. This reduces the plugin's size by 214 KB.Nebuleon Fumika
unicode.c, unicode.h, charsets.c, charsets.h: UTF-8 is universally used in CATSFC. Drop unused support for GBK/SJIS encodings.
2013-01-01Render double-width-res tiles from Background Mode 5 as half-width tiles. ↵Nebuleon Fumika
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...
2012-12-31Release 1.12.Nebuleon Fumika
2012-12-31ppu.cpp: Store multiplicands and quotients using aligned 16-bit writes ↵Nebuleon Fumika
(little-endian). Fold more identical case statements in the huge switch.
2012-12-31Fix PPU resets. This fixes Legend of Zelda: A Link to the Past.Nebuleon Fumika
2012-12-31MIPS requires 2-byte reads to be aligned to even addresses. #define ↵Nebuleon Fumika
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-30Image modifications.Nebuleon Fumika
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-30Bump to version 1.11 for another release.Nebuleon Fumika
2012-12-30Return to 22050 Hz audio. 48000 Hz was just too much to handle, apparently.Nebuleon Fumika
2012-12-30Clean up some backslashes at the end of lines.Nebuleon Fumika
2012-12-30Memory access optimisations in sprite rendering.Nebuleon Fumika
2012-12-30Rendering optimisations.Nebuleon Fumika
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-28Transform macros into loops to render tiles.Nebuleon Fumika
At -O3 these get unrolled; at -Os they become shorter code, fitting into the cache with other code.
2012-12-28Keep the audio processing unit (APU) enabled even when the user disabled the ↵Nebuleon Fumika
audio for a game. This allows some games that synchronise on the APU's actions to continue working.
2012-12-27Revert "Switch to the more complete Snes9x 1.53 documentation." It doesn't ↵Nebuleon Fumika
match the version used in NDSSFC, and I failed to port to 1.53 anyway. This reverts commit 2b23b5cbaf15bccc2aae0ff3ee91cedd26f101bd.
2012-12-27Make cleanly without -DCPU_SHUTDOWN.Nebuleon Fumika
2012-12-27Accidentally committed the previous revision with sound functions emptied.Nebuleon Fumika
2012-12-27Speed up rendering by an unknown amount.Nebuleon Fumika
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-26Add the update methods for the upper and lower screen into defines.Nebuleon Fumika
2012-12-26Merge Registers structures into their respective CPUs to avoid additional ↵Nebuleon Fumika
memory addresses being loaded every opcode.
2012-12-26Smoother sound. Raise the sound sampling frequency to 48000 Hz.Nebuleon Fumika
2012-12-26Universally use update method 2 for the lower screen and 0 for the upper ↵Nebuleon Fumika
screen. Method 1 causes problems after about 15 minutes; despite the double-buffering, screen updates start to tear in the middle consistently.
2012-12-26Wait for keys to be released after the yes/no dialog for deleting saved ↵Nebuleon Fumika
states, instead of delaying.
2012-12-24Bump version number to 1.10 for the APU half-carry bug and optimisations.Nebuleon Fumika
2012-12-24End the use of global variables for CPU emulation. This creates fewer memory ↵Nebuleon Fumika
store instructions in many SNES, SA1 and APU opcodes. Fix the APU half-carry bug, which may be audible. globals.cpp: Get rid of A1, A2, A3, A4, W1, W2, W3, W4, Int8, Int16, Int32, Work8, Work16, Work32, Ans8, Ans16, Ans32.
2012-12-24Bump to v. 1.09. Update the readme for cheats. Update the github link in ↵Nebuleon Fumika
source.txt.
2012-12-24Merge branch 'optimisation'Nebuleon Fumika
2012-12-24Merge branch 'cheats'Nebuleon Fumika
2012-12-24Make the GUI accept and save Snes9x's cheat file format. Improve support for ↵Nebuleon Fumika
saving the values present in ROM/RAM before a cheat is applied. Beautify the cheat selection menu, making it more tabular.
2012-12-23Correctly handle multi-part codes, for all cheat types (GG, PAR, GF).Nebuleon Fumika
They are currently loaded as multiple codes, however.
2012-12-23Screen tearing-related fix.Nebuleon Fumika
2012-12-23Various optimisations in the CPU emulation.Nebuleon Fumika
Run the opcode as a tail call from the address calculation. This cuts on the needed return instructions. Pass the opcode address as a parameter; this keeps it in a register most of the time and avoids memory stores.
2012-12-22Preliminary Snes9x-based cheat code support. Not tested, because the file ↵Nebuleon Fumika
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-21Previous update made it impossible to press the Right and Down keys.Nebuleon Fumika
2012-12-21ppu.cpp: Sync fewer bits of the joypad.Nebuleon Fumika
2012-12-21Eliminate the latency of button press recognition, which was bad enough to ↵Nebuleon Fumika
lose keys entirely sometimes, and could otherwise delay a button press or release by 200 ms. This was the entire reason I created the fork, and I finally did it! It syncs the controls every scanline of a frame, which costs about 60,000 MIPS instructions per frame to deal with. Luckily, the processor runs at 396 MHz, which means the cost of checking the controls is 1% of the CPU's power.
2012-12-21Looks like only having 'lang' crashes the options dialog. Restore the array ↵Nebuleon Fumika
of pointers.
2012-12-21Fix an off-by-one in the previous commit's touch handling code.Nebuleon Fumika
2012-12-20Simplify the GUI code.Nebuleon Fumika
* gui.c: Simplify row and column checks when handling touch events. * draw.c, err_msg: Use ConsoleInit instead of a custom drawstring function when an initialisation error that is NOT related to DS2 I/O occurs. This allows \r\n to work. * gui.c, initialisation: Remove the Engrish in the "initial <subsystem name> error" messages. Make them appear in English and French. Unfortunately, the console doesn't support Chinese characters, and I don't know Chinese.
2012-12-20Bump the version number for NDSSFC.Nebuleon Fumika
* gui.c: #define NDSSFC_VERSION "1.08".
2012-12-20Remove the SNES Open Bus behaviour by default. Also simplify translation again.Nebuleon Fumika
SNES Open Bus is a quirk of the memory subsystem that allow reads of invalid addresses to return the last byte read from memory. However, it is seldom needed by a game, and it costs 1 to 3 MIPS instructions per SNES instruction to emulate. If you need SNES Open Bus, you can remove -DNO_OPEN_BUS from the Makefile.
2012-12-19Widen the space in the font a bit to better match the Pictochat font.Nebuleon Fumika
2012-12-19Make it easier to add new translations to the menu.Nebuleon Fumika
* source/nds/gui.c: Calculate the number of options based on the array size of language_otions.
2012-12-19EN: Link the French translation to the interface. FR: Ajout de la traduction ↵Nebuleon Fumika
française à l'interface. EN: * bdf_font.c: Add support for having a main font, [0], of more than 128 characters. Refactor character width checks into a new function, BDF_width16_ucs. * bdf_font.h, draw.h, gui.c: Use UTF-8 for all strings to allow more translations. Use BDF_width16_ucs where possible. FR: * bdf_font.c: Prendre en charge une police principale, [0], de plus de 128 caractères. Diriger les vérifications de la largeur d'un caractère vers une nouvelle routine, BDF_width16_ucs. * bdf_font.h, draw.h, gui.c: Utiliser le codage UTF-8 pour toutes les chaînes pour permettre d'autres traductions. Utiliser BDF_width16_ucs là où c'est possible.
2012-12-19Change the English labels so they're more descriptive.Nebuleon Fumika
Really set the default CPU frequency to the highest.
2012-12-19Default to Graphics Mode 3, which displays the correct SNES aspect ratio at ↵Nebuleon Fumika
the cost of some lines at the top and bottom.
2012-12-19Raise the CPU's clock speed to 396 MHz while loading ROMs.Nebuleon Fumika
Also raise the CPU's clock speed to 396 MHz by default, instead of 360 MHz, when emulating a ROM.
2012-12-19Delete offsets.cpp, which is for a standalone tool that is unrelated to the ↵Nebuleon Fumika
emulator.
2012-12-18Un-inline a bunch of stuff.Nebuleon Fumika
With the MIPS instruction cache, this means that two consecutive SNES CPU instructions using e.g. the same addressing style or the same opcode have a chance that the second one will use the first one's code and that it will be cached.