Commit graph

292 commits

Author SHA1 Message Date
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
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
e5869adc44 Merge Registers structures into their respective CPUs to avoid additional memory addresses being loaded every opcode. 2012-12-26 14:42:02 -05:00
Nebuleon Fumika
139c793b58 Smoother sound. Raise the sound sampling frequency to 48000 Hz. 2012-12-26 11:29:51 -05:00
Nebuleon Fumika
9c1742f6cb Universally use update method 2 for the lower screen and 0 for the upper screen. Method 1 causes problems after about 15 minutes; despite the double-buffering, screen updates start to tear in the middle consistently. 2012-12-26 11:29:47 -05:00
Nebuleon Fumika
7f0e1fee81 Wait for keys to be released after the yes/no dialog for deleting saved states, instead of delaying. 2012-12-26 11:29:41 -05:00
Nebuleon Fumika
1fd0171c5f Bump version number to 1.10 for the APU half-carry bug and optimisations. 2012-12-24 04:01:50 -05:00
Nebuleon Fumika
f29c76dc58 End the use of global variables for CPU emulation. This creates fewer memory 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-24 03:53:20 -05:00
Nebuleon Fumika
e7ce8dd66c Bump to v. 1.09. Update the readme for cheats. Update the github link in source.txt. 2012-12-24 02:15:42 -05:00
Nebuleon Fumika
e036c88be6 Merge branch 'optimisation' 2012-12-24 01:25:23 -05:00
Nebuleon Fumika
b90664ac44 Merge branch 'cheats' 2012-12-24 01:25:08 -05:00
Nebuleon Fumika
f843d68bb6 Make the GUI accept and save Snes9x's cheat file format. Improve support for saving the values present in ROM/RAM before a cheat is applied.
Beautify the cheat selection menu, making it more tabular.
2012-12-24 01:15:41 -05:00
Nebuleon Fumika
bb39cc8236 Correctly handle multi-part codes, for all cheat types (GG, PAR, GF).
They are currently loaded as multiple codes, however.
2012-12-23 20:51:14 -05:00
Nebuleon Fumika
7a6ffe8a1e Screen tearing-related fix. 2012-12-23 18:03:54 -05:00
Nebuleon Fumika
d1fe64aef0 Various optimisations in the CPU emulation.
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-23 16:13:54 -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
Nebuleon Fumika
e7f7d0282a Previous update made it impossible to press the Right and Down keys. 2012-12-21 14:56:23 -05:00
Nebuleon Fumika
371058df32 ppu.cpp: Sync fewer bits of the joypad. 2012-12-21 11:57:45 -05:00
Nebuleon Fumika
a0d0c5e7a5 Eliminate the latency of button press recognition, which was bad enough to 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-21 03:50:10 -05:00
Nebuleon Fumika
3972512b2a Looks like only having 'lang' crashes the options dialog. Restore the array of pointers. 2012-12-21 01:44:57 -05:00
Nebuleon Fumika
5585c035fb Fix an off-by-one in the previous commit's touch handling code. 2012-12-21 00:05:07 -05:00
Nebuleon Fumika
712c249e8c Simplify the GUI code.
* 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-20 23:52:09 -05:00
Nebuleon Fumika
8a4343ff8e Bump the version number for NDSSFC.
* gui.c: #define NDSSFC_VERSION "1.08".
2012-12-20 19:34:51 -05:00
Nebuleon Fumika
8085880130 Remove the SNES Open Bus behaviour by default. Also simplify translation again.
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-20 18:14:24 -05:00
Nebuleon Fumika
ea02ffdf42 Widen the space in the font a bit to better match the Pictochat font. 2012-12-19 19:03:38 -05:00
Nebuleon Fumika
100c3bd9e9 Make it easier to add new translations to the menu.
* source/nds/gui.c: Calculate the number of options based on the array size of language_otions.
2012-12-19 18:49:13 -05:00
Nebuleon Fumika
973cd8d5e3 EN: Link the French translation to the interface. FR: Ajout de la traduction 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-19 18:38:04 -05:00
Nebuleon Fumika
eee0a7ecda Change the English labels so they're more descriptive.
Really set the default CPU frequency to the highest.
2012-12-19 03:10:55 -05:00
Nebuleon Fumika
dd06ba36ff Default to Graphics Mode 3, which displays the correct SNES aspect ratio at the cost of some lines at the top and bottom. 2012-12-19 01:37:10 -05:00
Nebuleon Fumika
65b56543ab Raise the CPU's clock speed to 396 MHz while loading ROMs.
Also raise the CPU's clock speed to 396 MHz by default, instead of 360 MHz, when emulating a ROM.
2012-12-19 01:30:30 -05:00
Nebuleon Fumika
6bab708c22 Delete offsets.cpp, which is for a standalone tool that is unrelated to the emulator. 2012-12-19 00:28:32 -05:00
Nebuleon Fumika
e708c127fa Un-inline a bunch of stuff.
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-18 22:53:49 -05:00
Nebuleon Fumika
286bfd5805 Sync sound.
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-18 00:40:18 -05:00
Nebuleon Fumika
8951fdff1a Remove various explicit delays and reduce screen tearing when drawing emulated screens. 2012-12-18 00:02:49 -05:00
Nebuleon Fumika
b935574e53 Remove more unneeded files. 2012-12-17 22:42:09 -05:00
Nebuleon Fumika
83b449ed11 Remove more build stuff. 2012-12-17 21:05:08 -05:00
Nebuleon Fumika
2b23b5cbaf Switch to the more complete Snes9x 1.53 documentation. 2012-12-17 20:59:21 -05:00
Kitty Draper
e0e53e874b Added touchscreen support. Fixed incorrect display of language. 2011-03-06 17:42:03 -05:00
Kitty Draper
03b205db1b Fixed looking for BAGSFC directory 2011-03-05 23:43:19 -05:00
Kitty Draper
d40ae99422 first commit 2011-03-05 21:39:25 -05:00