aboutsummaryrefslogtreecommitdiff
path: root/source
AgeCommit message (Collapse)Author
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.
2012-12-18Sync sound.Nebuleon Fumika
In addition to having less sound skipping going on, certain platformer games (I'm looking at you, Super Mario World) are helped by having more synchronised controls. In other words, synchronising the audio also synchronises the controls a bit more.
2012-12-18Remove various explicit delays and reduce screen tearing when drawing ↵Nebuleon Fumika
emulated screens.
2012-12-17Remove more unneeded files.Nebuleon Fumika