1675 lines
62 KiB
Plaintext
1675 lines
62 KiB
Plaintext
November 12, 2003 - 0.97.5 Release
|
|
|
|
Windows: Added limited support for arguments that change configuration
|
|
to be passed to FCE Ultra. Example: fceu -pal 1 c:\streetgangs.nes
|
|
It may be useful in frontends.
|
|
|
|
Fixed filename generation for automatic IPS patching when a file
|
|
with no extension is loaded. Before this change, FCEU would
|
|
look for "game..ips" with a file named "game".
|
|
|
|
Converted and updated the cheat guide in(to) HTML.
|
|
|
|
Added support for iNES mappers 202,203,231 from info from cah4e3.
|
|
Fixed support for mappers 60, 200.
|
|
|
|
Fixed various major bugs in the breakpoint deletion code.
|
|
|
|
UN*X: Added support for OSS(/dev/dsp) devices that don't support mono
|
|
sound.
|
|
|
|
Increased PPU startup idle time to 2 frames. Fixes that
|
|
unlicensed "Earthworm Jim 3" game. Does it break anything?
|
|
|
|
November 9, 2003 - 0.97.4 Release
|
|
|
|
Fixed another obscure PPU emulation screen corruption bug.
|
|
|
|
Added support for Game Genie cheats in the cheat interface.
|
|
|
|
Windows: Reworked the cheat interface, merging the cheat search
|
|
and cheat list windows into one.
|
|
|
|
Windows: Greatly improved the CPU debugger.
|
|
The code still needs a lot of cleaning, though.
|
|
|
|
Readjusted VRC6 IRQ emulation timing.
|
|
|
|
Added support for the UNIF MMC3 board TEROM. The maximum PRG/CHR sizes
|
|
may not be correct in this implementation, though.
|
|
|
|
November 8, 2003 - 0.97.3 Release
|
|
|
|
Added a control to set the highest quality sound mode in Windows.
|
|
This change requires that any users who previously set
|
|
"high quality sound" to set it again.
|
|
|
|
Fixed the volume of high-quality sound mode again. The changes
|
|
I made earlier didn't affect all the filter coefficients.
|
|
|
|
November 8, 2003 - 0.97.2 Release
|
|
|
|
Made a minor optimization to writes to palette memory.
|
|
|
|
Altered VRC6 IRQ emulation timing slightly.
|
|
|
|
Fixed a weirdo PPU emulation bug that could cause garbage on the right
|
|
side of the screen in certain situations. Thanks to FrenziedPanda for
|
|
bugging me enough to make me look into the problem and fix it.
|
|
I should be on the lookout to see if the fix breaks anything, though.
|
|
|
|
Fixed the volume of high-quality sound mode(-soundq 1). It was
|
|
at 1/4 the volume it should have been. I compensated by increasing
|
|
the precision of the filter coefficients, which increased the sound
|
|
quality of that mode slightly without hurting performance.
|
|
|
|
November 7, 2003 - 0.97.1 Release
|
|
|
|
Fixed mapper 105 emulation. I had begun merging it into the
|
|
rest of the MMC1 code for 0.97, but I hadn't finished it.
|
|
|
|
Changed things like RdMem(_PC++); to RdMem(_PC); _PC++;
|
|
Darn evil global variables. I need to fix them. Screw speed.
|
|
|
|
Expanded checks for the global variable "fceuindbg"(used in debug
|
|
mode to prevent reads in the debugger from altering any registers).
|
|
|
|
November 6, 2003 - 0.97 Release
|
|
* Note: I still had much more I had wanted to get done for 0.97,
|
|
but I lost even more interest. The Windows port still doesn't
|
|
have a way to enable the "highest" sound emulation mode, nor the
|
|
low pass filter code, not to mention that the lowpass filter code
|
|
isn't complete(I would need to design a high-order FIR filter from an IIR
|
|
filter to work properly-have the correct rolloff, among other
|
|
things-at finite playback rates).
|
|
|
|
Fixed a bug in the IPS patcher. The recorded size wasn't being updated
|
|
after a successful realloc() was made, which could lead to corrupted patch
|
|
data from some patches.
|
|
|
|
Added support for mappers 200, 201 from submitted code.
|
|
|
|
Rewrote mapper 15 support to make more sense(well, depending
|
|
on your point of view...).
|
|
|
|
Fixed 256KB CHR select support for mapper 115.
|
|
|
|
Added support for mapper 12 from code from cah4e3.
|
|
|
|
October 16, 2003 - Snapshot
|
|
|
|
Fixed support for mapper 245(for nonencrypted/non-smynes-screwed up
|
|
ROM images only. Fixes "Yong Zhe Dou E Long [...] Dragon Quest 7".
|
|
|
|
Added support for mappers 60, 62, 230, 244 from submitted code.
|
|
|
|
Modified mapper 90 emulation to allow game-select on reset
|
|
for "Final Fight 3".
|
|
|
|
Modified mapper 45 emulation to allow "Super 8-in-1" to work.
|
|
|
|
Added a low-pass filter, and an option to enable it(CLI ports).
|
|
|
|
0x00 is now written to $4011 in the NSF player code instead of 0x40.
|
|
Fixed some other similar sound register init problems that I had fixed
|
|
in Festalon but forgot to fix in FCEU. Grrr.
|
|
|
|
Removed some unnecessary 64-bit integer usage from FIR sound filtering
|
|
code.
|
|
|
|
Added a new sound quality mode. Higher than high, it's highest(in
|
|
FCE Ultra, for now). Still need to fix the interface to allow
|
|
enabling it in the Windows port.
|
|
|
|
Added some code for lower-level MMC3 IRQ emulation. It isn't completed
|
|
, and will not work properly as-is. I'm still playing around with
|
|
it occasionally.
|
|
|
|
Fixed the sprite overflow flag(I think I fixed it), that was broken in an earlier
|
|
pre-0.97 release.
|
|
|
|
Fixed support for iNES mapper 193.
|
|
|
|
Command line arguments "-pal" and "-gg" now take extra arguments(1/0)
|
|
and are remembered in the configuration file.
|
|
|
|
September 27, 2003 - Snapshot
|
|
|
|
Added support for iNES mapper 50.
|
|
|
|
Modified the UNIF board initialization code. Hopefully, this
|
|
new interface will eventually be used with the iNES code.
|
|
|
|
Miscellaneous code cleanups.
|
|
|
|
/dev/dsp is now set to 8(previously 9) buffers of 128 samples in length
|
|
in the SDL code.
|
|
|
|
Tried to make the save state code more expandable and modular.
|
|
|
|
Moved a lot of the PPU code into ppu.c.
|
|
|
|
Added more extensive debugging code to the 6502 emulator, to allow
|
|
for memory read/write hooks(including zero page addressing modes).
|
|
|
|
Readadjusted DMC timings when PAL emulation is enabled. It looks
|
|
like it was correct before I had made the August 2 change. Thanks
|
|
to Bananmos for the information. I think. :/
|
|
|
|
Added support for iNES mapper 193 from information from virtuanes.
|
|
I think my dump of it is "bad", though. PRG and CHR pages look
|
|
like they are in the wrong order(logical vs physical? Who's to say
|
|
what's physical?).
|
|
|
|
September 1, 2003 - Snapshot
|
|
|
|
Fixed some minor initialization issues with iNES mappers 7 and 34.
|
|
|
|
Added support for UNIF board NES-GNROM.
|
|
|
|
Removed support for save states created with versions of FCE Ultra
|
|
less than 0.56.
|
|
|
|
Replaced SDL sound buffering code with a lock-free FIFO implementation
|
|
written by David Olofson, with a few modifications by myself.
|
|
|
|
Fixed a VRC7 NSF bug(it showed up under the reworked driver/file
|
|
loading order in the cli code).
|
|
|
|
The board in "Rolling Thunder" has "RAMBO 1" on it, not "RAMBO-1".
|
|
|
|
August 9, 2003 - Snapshot
|
|
|
|
Removed the old plain text documentation and replaced it with
|
|
a new document in HTML. It is not completed yet, though.
|
|
|
|
Rewrote the SDL-native audio code to be less wacky and more
|
|
thread-safe(hopefully). I'm still waiting for a new SDL audio
|
|
API...
|
|
|
|
Altered the MMC5 IRQ timing. Fixes minor graphical glitches
|
|
in Castlevania 3. Does it break anything?
|
|
|
|
Removed some debugging code that got into the last snapshot.
|
|
|
|
August 5, 2003 - Snapshot
|
|
|
|
Added some code in the IPS patcher to allow for expanding the size of files.
|
|
|
|
Fixed a double free() bug with a mapper 51 game(in ines.c).
|
|
|
|
Added support for "Alien Syndrome" (US release) as iNES mapper 158.
|
|
It looks like a derivative of the normal RAMBO-1 board(or is that
|
|
the name of the chip?), similar to TKSROM/TLSROM(mapper 118).
|
|
|
|
Improved the "native" SDL sound code. It will now call SDL_Delay(),
|
|
among other nice things. The code could probably be improved more,
|
|
though.
|
|
|
|
Added support for decimal components in xscale/yscale in the SDL
|
|
port. Set the default xscale for windowed mode to 2.40(to get a
|
|
more correct aspect ratio, assuming the display is currently at
|
|
a 4:3 aspect ratio).
|
|
|
|
Modified args.c to handle floating-point numbers.
|
|
|
|
August 2, 2003 - Snapshot.
|
|
|
|
Disabled texture wrapping with OpenGL(there were problems at the edges
|
|
of the screen with linear interpolation). Bah. Now the edges
|
|
are too bright...
|
|
|
|
Improved the accuracy of the DMC timing when PAL emulation is enabled.
|
|
I still don't think it's totally correct, though.
|
|
|
|
Changed the default settings for the SDL code. Full screen
|
|
is now 640x480x8bpp by default, xscale and yscale are 2 for both full
|
|
screen and windowed, opengl support is enabled, linear interpolation
|
|
for OpenGL is enabled, and X-axis stretching is
|
|
enabled(in full screen).
|
|
|
|
"Scanlines" were enabled in 8bpp to 8bpp blits in
|
|
drivers/common/vidblit.c when they shouldn't have been. Fixed.
|
|
|
|
Fixed OpenGL code under big-endian platforms.
|
|
|
|
August 1, 2003 - Snapshot.
|
|
|
|
Various code clean-ups.
|
|
|
|
Played around with adding a GTK+ GUI to the SDL code.
|
|
|
|
Rewrote part of the hq sound rectangle wave code.
|
|
|
|
Replaced the high-quality sound inline assembly filter code with
|
|
slightly faster C code.
|
|
|
|
Hacked around with GP32 support. I don't know if the GP32 would
|
|
be fast enough, though.
|
|
|
|
Skipped frames will now have D5 of $2002 set at the beginning
|
|
of the frame. Fixes "Bee 52". I must see if it breaks anything.
|
|
|
|
Added OpenGL support to the SDL code.
|
|
|
|
Removed the PPU drawing inline assembly code, replacing it with a faster
|
|
algorithm written in C.
|
|
|
|
"Disabling" the 8-sprite limitation will no longer cause
|
|
"Bee 52" to break. However, the "Solstice" wizard will still
|
|
have the weird thing growing out of his face in the introduction,
|
|
since it depends on no more sprites to be rendered.
|
|
|
|
Added entry for that Black Bass game for header corrections in
|
|
ines.c
|
|
|
|
Strip color burst bit(D0 of $2001) is only "emulated" if bg or
|
|
sprite rendering are turned on, at the end of the scanline.
|
|
Doing it with pixel/tile granularity would require modifying
|
|
the sprite graphics data copying routine, which I don't
|
|
feel like doing. Fixes that crazy Sayoonara demo by Chris Covell.
|
|
I also modified the NES RAM initialization code.
|
|
|
|
Adjusted VRC7 IRQ emulation for better Lagrange Point goodness.
|
|
|
|
Added support for iNES mapper 91. (VirtuaNES)
|
|
|
|
0.96:
|
|
Improved RAMBO-1(mapper 64) emulation. "Skull and Crossbones" is
|
|
now playable.
|
|
|
|
0.95:
|
|
|
|
timestamp and timestampbase are no longer saved/loaded to/from
|
|
save states. They were causing too many problems I didn't
|
|
want to fix, and I never intended them to be saved in save states
|
|
when I wrote the code that uses them.
|
|
I think the reason they were being saved was that I wanted to make it
|
|
possible to add movie support and network play save state loading
|
|
(distributing the save state over the network). So if someone in
|
|
the future wants to add these features, the issues(primarily with
|
|
zapper emulation and sound emulation) with saving the time stamp will
|
|
need to be resolved.
|
|
|
|
Fixed some crashing bugs when save states are loaded when
|
|
high-quality sound emulation is enabled. It is like patching
|
|
holes in a swiss-cheese boat. All the holes may be patched, but
|
|
it looks ugly. At least it tastes good...
|
|
TODO: Look into saving more data in the save states, especially
|
|
data that is based off of "timestamp" and "timestampbase". Also
|
|
look into validating this data. Right now, corrupt save state data
|
|
might cause memory corruption in FCE Ultra.
|
|
|
|
Fixed some bugs in the NSF player.
|
|
|
|
Cleaned up more code.
|
|
|
|
Reduced the usage of TriggerIRQ().
|
|
|
|
Split the palette code into a new file, palette.c, from svga.c
|
|
|
|
Low-G-Man(NTSC and PAL versions) are now recognized by CRC32 value,
|
|
and WRAM will be disabled if they are loaded. A warning/status message
|
|
will also be printed regarding this issue.
|
|
|
|
Decreased the volume of the DMC/PCM channel in low-quality sound
|
|
emulation.
|
|
|
|
Low-quality sound emulation now uses 32-bit integers for much
|
|
better speed.
|
|
|
|
FCEUI_CRC32() wasn't returning anything. D'oh. Fixed.
|
|
|
|
Added somewhat crude support for games that switch background CHR data
|
|
mid-scanline (this is needed in games such as Mother, Pirates!,
|
|
Business Wars, and Marble Madness).
|
|
|
|
Altered NMI, IRQ, and BRK emulation again. Fixes some games,
|
|
like Bases Loaded 2 and Dynamite Bowling, and maybe some others.
|
|
I had to increase the size of the IRQlow variable for delayed
|
|
NMI execution... I also had to add a delay between PPU reset
|
|
and the PPU actually doing anything, to fix "Knight Rider".
|
|
|
|
Fixed a mapper 90 save state bug.
|
|
|
|
/dev/dsp code now searches for /dev/dsp before /dev/dspX (where X is
|
|
a non-negative integer).
|
|
|
|
SDL joystick axes configuration is now done from the joystick.
|
|
|
|
Tweaked various Konami mappers' IRQ counter emulation.
|
|
|
|
Added custom SDL throttle code that gives up time slices instead of
|
|
using 100% cpu.
|
|
|
|
Fixed an issue with sprite priorities on MSB-first platforms.
|
|
|
|
Modified powerpad.c to avoid a symbol conflict when compiling on the
|
|
Power PC architecture.
|
|
|
|
0.94r3:
|
|
sound.c:
|
|
Fixed a divide-by-zero bug that occurred when a virtual
|
|
reset(like by pressing F10) occurred when sound emulation was
|
|
disabled.
|
|
|
|
0.94r2:
|
|
drivers/common/vidblit.c:
|
|
Fixed code for 32bpp blur effect.
|
|
|
|
drivers/cli/sdl-video.c:
|
|
Added error message for unsupported bit depths.
|
|
|
|
mappers/simple.c, ines.c:
|
|
Used this bug fix pseudo-release as an excuse to add
|
|
support for mapper 107. Information taken from virtuanes.
|
|
|
|
0.94(fixed release)
|
|
---
|
|
Fixed call to InitUNIXDSPSound in svgalib.c
|
|
|
|
Added man pages.
|
|
|
|
0.94
|
|
---
|
|
Added support for rapid fire A/B buttons on physical joysticks
|
|
in SDL/svgalib/DOS code.
|
|
|
|
Implemented "high-quality" Namco 106 emulation(used for hq sound mode).
|
|
In this case, "high-quality" means sounding more like it should,
|
|
not necessarily cleaner. I'm not certain that it's totally correct,
|
|
but it's in the right direction.
|
|
|
|
RAM cheats should no longer affect Game Genie emulation. I still
|
|
need to completely verify this. There may be some sort of race
|
|
condition.
|
|
|
|
Removed various minor speed hacks in the name of style and
|
|
correctness(and to make maintaining FCE Ultra easier for those
|
|
people who are not me). :)
|
|
|
|
Removed NSF cpu hacks, as I changed code to make them unnecessary.
|
|
|
|
Fixed another FDS IRQ emulation bug. "Famicom Grand Prix II" works
|
|
now.
|
|
|
|
Fixed a memory leak and a heap corruption bug in "file.c".
|
|
|
|
Added support for on-the-fly IPS patching.
|
|
Place the IPS file in the same directory as the file to load,
|
|
and name it filename.ips.
|
|
|
|
Examples: Boat.nes - Boat.nes.ips
|
|
Boat.zip - Boat.zip.ips
|
|
Boat.nes.gz - Boat.nes.gz.ips
|
|
Boat - Boat.ips
|
|
|
|
Some operating systems and environments will hide file extensions.
|
|
Keep this in mind if you are having trouble.
|
|
|
|
Patching is supported for all supported formats(iNES, FDS, UNIF, and
|
|
NSF), but it will probably only be useful for the iNES format. It
|
|
can be used with the FDS format, but be warned that it will permanently
|
|
patch your disk image, as the disk image is written back to disk
|
|
when the game is unloaded(unless the disk image is in a zip file, in
|
|
which case it isn't written back to disk). UNIF files can't be
|
|
patched well with the IPS format because they are chunk-based with no
|
|
fixed offsets. Support for a UNIF patching format may be added
|
|
in the future(probably by someone else.).
|
|
|
|
Added more games to the list in ines.c for having battery-backed
|
|
WRAM, for header corrections.
|
|
|
|
Copied over the 96KHz filter coefficients from Festalon that I forgot
|
|
to do in 0.92. Oops.
|
|
|
|
|
|
0.93
|
|
---
|
|
|
|
Reduced the volume of the FDS sound channel.
|
|
|
|
Fixed a bug in the FDS IRQ emulation code that caused "Lutter" to not work.
|
|
|
|
Fixed a bug in unif.c that would cause a crash if a unif file were
|
|
loaded without a board name being specified(as could happen
|
|
with a corrupted nsf).
|
|
|
|
Fixed a bug in general.c relating to relative filenames(running
|
|
fce ultra like "./fceu ../big.nes" would work, but "./fceu ../big"
|
|
would not work- it crashed).
|
|
|
|
|
|
|
|
0.92r2
|
|
---
|
|
Fixed dpcm irq bug that broke Cobra Triangle.
|
|
|
|
.92
|
|
---
|
|
|
|
Removed NSF player background, and added some special effects goodies.
|
|
|
|
Changed the NSF player to use the emulated gamepad as input instead
|
|
of having special NSF-player-only keys.
|
|
|
|
Added support for mapper 249(using nonencrypted games), thanks to SARO
|
|
for info. SMYNES sucks.
|
|
|
|
Updated video blitting library-thing(vidblit.c) with more special
|
|
effects, and removed 24bpp support.
|
|
|
|
SDL cleanupification.
|
|
|
|
Added support for mapper 61.
|
|
|
|
nnnesterj: Added support for mapper 57.
|
|
|
|
Fixed mapper number for "Golden Game 150 in 1". Changed it to 235
|
|
from 43.
|
|
|
|
DDraw back buffer surfaces are now created in system memory if the
|
|
hardware blitter can't do stretching.
|
|
|
|
Restructured file wrapping code.
|
|
|
|
Added new cheat search methods.
|
|
|
|
Fixed a major cheat unloading memory bug(and memory leak).
|
|
|
|
Emulated that funky nonlinear DAC effect for hi-quality sound.
|
|
|
|
More fixes/cleanups to FDS emulation code.
|
|
|
|
Tweaked PPU timing a bit.
|
|
|
|
Improved network play.
|
|
|
|
Holding the enter key down will no longer do fun stuff to the nsf
|
|
player.
|
|
|
|
Improved NSF player. It should support streaming pcm nsfs now...
|
|
|
|
Changed FDS keyboard keys around a bit. F6 is the disk select key,
|
|
and F8 is the disk insert/eject key.
|
|
F8 to insert VS Unisystem coin, F6 to view/toggle dip switches.
|
|
Hopefully people won't complain after blindly hitting the save state
|
|
buttons. :)
|
|
|
|
Many fixes and improvements to the Windows port. No more cpu-consuming
|
|
wait loops(specifically, sound). Added a message window.
|
|
|
|
FDS sound emulation improvements.
|
|
|
|
FDS disks are now auto-inserted on power on(or was it loading a new
|
|
game...).
|
|
|
|
Changed the default last rendered scanline to 231.
|
|
|
|
ines header corrections are now printed as status messages, not errors.
|
|
|
|
Rearranged input updating code.
|
|
|
|
Fixed a sprite transfer bug. Fixes PAL version of Rainbow Islands.
|
|
|
|
Debugger hooks added.
|
|
|
|
Small optimizations in Refreshline and FetchSpriteData to hopefully
|
|
offset the slight slowdown in the cpu core.
|
|
|
|
MapperHBIRQHook is now called differently(depending on hi/low bg/spr
|
|
addresses).
|
|
|
|
Added support for unif board UNL-8237.
|
|
|
|
Added support for mapper 144(death race).
|
|
|
|
Added partial support for mapper 74.
|
|
|
|
Fixed a cpu emulation bug in GETIYWR. It would sometimes set "target"
|
|
to 0x10000, which was a BAD THING(overflow; now it wraps).
|
|
|
|
Tried to add support for mapper 241. Needs special keyboard emulation.
|
|
I think.
|
|
|
|
Internal RAM is now initialized to something other than 0. Fixes
|
|
Minna no Taabou no Nakayoshi Dai Sakusen.
|
|
|
|
Reassigned "The Money Game" to mapper 155. It doesn't seem to
|
|
respect the WRAM enable/disable bits. Silly game. And
|
|
Tatakae!! Rahmen Man.
|
|
|
|
Added support for mapper 115(still needs 256KB CHR select), 241, 114,88.
|
|
|
|
Attempted to add support for mappers 91, 187.
|
|
|
|
Modified frame IRQ to not break so many damn games.
|
|
|
|
Fixed sprite hit detection loop.
|
|
|
|
Improved support for mappers 80, 90,117,154, 189.
|
|
nnnester and virtuanes.
|
|
|
|
Reassigned "Devil Man" to mapper 154.
|
|
|
|
Removed bogus Trojan header fix in ines.c.
|
|
|
|
|
|
|
|
.81-post:
|
|
----
|
|
Fixed/Worked around(?) compilation problems on gcc 3.2.x.
|
|
|
|
.81:
|
|
----
|
|
|
|
More SDL goodies.
|
|
|
|
Renamed "Makefile.olinuxsdl" to "Makefile.unixsdl"
|
|
|
|
More SDL fixes and cleanups.
|
|
|
|
BeOS port is now compiled with the "-no-fpic" flag, which allows
|
|
me to use my inline assembly. The executable work fine as far as
|
|
I can tell.
|
|
|
|
Added "Makefile.beos". gcc doesn't like my inline assembly
|
|
used in RefreshLine(),so this port will likely be slightly slower than
|
|
other x86 ports.
|
|
|
|
Added a check to make sure SIGBUS is not equal to SIGSEGV in
|
|
drivers/cli/main.c. Needed for compiling under BeOS.
|
|
|
|
Renamed the "PI" member of the X6502 structure due to conflicts with
|
|
a defined symbol with some math header files.
|
|
|
|
Merged fcelineasm.h into fceline.h
|
|
|
|
Fixed(possibly) a possible problem in fcelineasm.h with input register
|
|
clobbering.
|
|
|
|
More SDL changes.
|
|
|
|
Added speed throttling code to the CLI code, and added a command
|
|
line switch "-nothrottle".
|
|
|
|
Lots of restructuring/rewriting/merging of the MMC3 code.
|
|
|
|
Updated DOS code to use the generic CLI wrapper.
|
|
|
|
Reads from $4090 and $4092 now return the current envelope setting
|
|
in FDS sound emulation. I'm not sure if this is correct... Affects
|
|
"Ai Senshi Nicole" and "Bio Miracle Bokutte Upa".
|
|
|
|
Added native SDL sound support to the SDL code. the "olinuxsdl"
|
|
now uses this code by default instead of the unixdsp sound code.
|
|
|
|
Modified MMC3 IRQ counter emulation. I'll need to watch out to see
|
|
if it breaks any games. Fixes: MegaMan 3, Gun Nac, Klax(Japanese).
|
|
|
|
Changed a few memory reads in x6502.c to use RdRAM instead of RdMem,
|
|
resulting in a slight speed increase.
|
|
|
|
Cleaned up mapper 250 emulation code.
|
|
|
|
Added support for iNES mapper 51(thanks to Kevin Horton for the
|
|
information).
|
|
|
|
Merged some iNES mappers corresponding to bootleg multicarts
|
|
based on MMC3s with mbshare/mmc3.c.
|
|
|
|
Added support for iNES mapper 52(thanks to Kevin Horton for the
|
|
information).
|
|
|
|
Made some hacks to the MMC3 emulation code so that I can add support
|
|
for pirate MMC3 multicarts more easily. I should clean it up later.
|
|
Moved mapper 44 emulation code to mbshare/mmc3.c.
|
|
|
|
Saving screen snapshots will no longer corrupt the frame buffer
|
|
for one frame(unless memory couldn't be allocated).
|
|
|
|
Fixed screen snapshot saving(it was sort of broken due to the
|
|
changes made to the driver<->emulator interface code; status
|
|
messages were being saved to the image). FCEUI_SaveSnapshot()
|
|
no longer returns a value(the request to save a screen snapshot is
|
|
serviced before status information would be written in the next frame).
|
|
|
|
nosprites is now set to 0 before RefreshSprite() returns, to prevent
|
|
problems if a game turns off the bg and sprites when FetchSpriteData()
|
|
for the next scanline is called but then turns on sprites when
|
|
the actual scanline is drawn.
|
|
|
|
PPU_hook() is now called more often if PPU_hook is non-null.
|
|
Made changes to mappers 118, 95, 9, and 10 to compensate.
|
|
No games seem to be broken, and I added support for mapper 96
|
|
(though the games aren't very playable because the special controller
|
|
isn't emulated).
|
|
|
|
Romance of the 3 Kingdoms is now recognized to use 16KB ex-WRAM.
|
|
|
|
Added support for mapper 185...sort of. I think this is another
|
|
instance of incompatible hardware being lumped onto one mapper number.
|
|
Sigh.
|
|
|
|
Added support for "Famicom Jump 2" as iNES mapper 153.
|
|
If a good(as far as I can tell) dump is loaded, FCE Ultra will
|
|
automatically fix the mapper number.
|
|
I also made some changes to the mapper 16 IRQ emulation code.
|
|
|
|
BRK now sets the I flag.
|
|
|
|
Reads from $4015 no longer reset DPCM IRQ.
|
|
|
|
Changed emulation of RTI instruction slightly.
|
|
|
|
X.IRQlow is now set to 0 in PowerNES().
|
|
|
|
The VS Unisystem bit in the iNES header is no longer looked at(
|
|
I was having too many problems with this bit being set when it
|
|
shouldn't have been). Now, VS Unisystem emulation is enabled
|
|
when a known VS Unisystem game is loaded. I also rewrote the VS
|
|
Unisystem detection function.
|
|
|
|
iNES mapper 1 now supports pageable CHR RAM if no CHR ROM is present.
|
|
Fixes "Family School".
|
|
|
|
Mapper 70 no longer has a mirroring control emulated, and I extended
|
|
the number of 8KB CHR pages supported to 16.
|
|
|
|
Cleaned up iNES MMC5 save RAM loading/saving code and added
|
|
support for MMC1 games with 16KB of RAM(the second 8KB are saved),
|
|
via CRC32s(currently only Genghis Khan(USA) and Nobunaga's Ambition(
|
|
USA and Japan) are recognized).
|
|
|
|
Added support for the MMC5 Koei game "Ishin no Arashi", in the iNES
|
|
format(I added an entry with its CRC32 value and the number of 8KB
|
|
WRAM banks it needs).
|
|
|
|
Better iNES mapper 33/48 IRQ counter emulation.
|
|
|
|
Added the game "Uchuusen - Cosmo Carrier" to this list. I'm
|
|
beginning to hate the iNES format more and more...or maybe
|
|
just Fanwen. :)
|
|
|
|
Added the mapper 32 game "Major League" to the list of games
|
|
that usually need iNES header correction...but in this case, the
|
|
iNES header cannot specify that this game needs to have one-screen
|
|
mirroring.
|
|
|
|
iNES header information is now printed before any header corrections
|
|
are made based on a database.
|
|
|
|
Fixed a bug in mapper 32 emulation. "Ai Sensei no Oshiete"
|
|
works now.
|
|
|
|
Tried to add support for iNES mappers 245 and 249.
|
|
|
|
Fixed the MMC5 read handler to return the data last on the data
|
|
bus instead of 0xFF when a read was made to an unmapped address.
|
|
This seems to fix the lockup problems in "Bandit Kings of Ancient
|
|
China".
|
|
|
|
Reversed "Modified the time at which the "y scroll" register is updated
|
|
during hblank." The changes broke Klax.
|
|
|
|
Added an unsigned 64-bit base timestamp variable "timestampbase".
|
|
Adding this to the 32-bit variable "timestamp" will return
|
|
the number of cycles executed since emulation started(in the future
|
|
I'll probably change it to since reset or power toggle).
|
|
This allowed me to replace "lastn" hack in the MMC1 code with
|
|
something better.
|
|
|
|
Changed my mind and undid the removal of support for old save states.
|
|
|
|
Removed support for old save states and in general I won't
|
|
try to support save states made with previous versions.
|
|
|
|
MMC1: Writes to $8000-$FFFF with D7 set will now cause
|
|
the first MMC1 register to be OR'ed with 0x0C. I'm not sure
|
|
if this is correct, but it doesn't seem to break anything
|
|
and it fixes Robocop 3. I'll see if anyone reports games
|
|
not working in .81 that worked in .80.
|
|
|
|
Worked on a generic driver interface wrapper very similar
|
|
to the driver interface FCE Ultra used to use(I'm getting
|
|
tired of all of the duplicated driver code). Eventually,
|
|
the DOS, SVGAlib, and SDL ports will use this wrapper.
|
|
|
|
Similar change to the argument parsing code.
|
|
|
|
Changed configuration file saving-loading routines and the
|
|
configuration structure to allow for linking config structures
|
|
to each other).
|
|
|
|
Small fix to the emulation of the MMC5 split screen mode.
|
|
|
|
Made Linux SDL code compilable again.
|
|
|
|
Changes to MMC5 EXRAM emulation(read/write).
|
|
|
|
Fixes to the emulation of the MMC5's split screen mode, based on
|
|
observations while using CastleVania 3 and a Game Genie(on a real
|
|
NES).
|
|
|
|
Fixed a bug in ines.c that caused any calls to AddExState() from
|
|
a mapper initialization function to be effectively "erased"(ResetExState()
|
|
was called after the mapper was initialized). Fixes the VRC7 sound
|
|
state saving/loading stuff.
|
|
|
|
Finished adding support for the MMC5's split screen mode(this does
|
|
not mean that the support is complete, but at least the intro in
|
|
"Uchuu Keibitai SDF" works correctly now).
|
|
|
|
Worked on adding support for the MMC5's split screen mode. Not
|
|
completed.
|
|
|
|
Reverted to .80's FDS sound code.
|
|
|
|
Modified the time at which the "y scroll" register is updated
|
|
during hblank.
|
|
|
|
NSF playing code will now disable FDS sound output on song init
|
|
(fixes some problems with the Zelda no Densetsu NSF rip).
|
|
|
|
Increased the emulated clock speed of the FDS sound emulation code
|
|
to give better quality output.
|
|
|
|
Modified NMI to occur a few cycles later. Fixes BattleToads...but
|
|
it may have broken other games. Also modified the way NMI's are
|
|
handled in x6502.c.
|
|
|
|
Modified ines.c to memset() GameMemBlock to 0 on virtual power toggle.
|
|
Also, trainers are now loaded into their own buffer instead of
|
|
directly into emulated WRAM and copied into emulated WRAM on
|
|
power toggle; I've been meaning to do this for quite some time.
|
|
|
|
Changes to the way the zapper cursor is drawn on the screen.
|
|
|
|
FCEUD_WriteSoundData(), FCEUD_BlitScreen(), and FCEUD_UpdateInput()
|
|
have been combined into one function: FCEUD_Update().
|
|
|
|
More fixes to the network play code, and a fix to the Windows network
|
|
play driver code that fixes(hopefully) a rather evil bug that caused
|
|
lockups when the remote stopped network play.
|
|
|
|
Added code to set the battery-backed bit in RAM if a game needs it,
|
|
based on CRC32.
|
|
|
|
Added more games to the list of games that commonly have bad iNES
|
|
headers, in ines.c
|
|
|
|
Updated docs and usage.h for DOS and Linux regarding the new video
|
|
mode and the new refresh rates.
|
|
|
|
Linux: Fixed a bug with video mode 6(a few upper scanlines were being
|
|
cut off). Increased the refresh rate of video mode 3 to 120hz.
|
|
|
|
Increased the refresh rate of video mode 2 to 65 hz in the Linux port.
|
|
|
|
Screen snapshots can now be taken while playing an NSF.
|
|
|
|
Added a new sexy tweaked vga mode that I created to the Linux svgalib
|
|
port. It's 256x224 at a refresh rate of 103hz. Hopefully it won't
|
|
blow up anyone's monitor. ;)
|
|
DOS port will follow eventually.
|
|
|
|
Modified Makefile.base to produce an executable named "fceu" instead
|
|
of "fce".
|
|
|
|
The plans(cycle-accurate ppu emulation) for .90 were a bit ambitious,
|
|
and I still need to make other fixes before then.
|
|
|
|
Fixed some minor(usually) bugs with setting 256x240 tweaked VGA mode
|
|
in DOS and Linux ports.
|
|
|
|
.80:
|
|
----
|
|
|
|
Cleaned/fixed a few things in the mapper 19 emulation code.
|
|
Family Circuit '91 still doesn't work quite right... I wonder if
|
|
it's a bad dump.
|
|
|
|
Added input override code to Windows port.
|
|
|
|
Added code to fix iNES header information in RAM and suggest
|
|
changes to the user.
|
|
|
|
Added support for iNES mapper 152(to be used with games set to
|
|
mapper 70, that use one-screen mirroring instead of h/v mirroring).
|
|
|
|
Blits using the DirectX blitting function(method?) to the primary
|
|
surface are now done with the asynchronous flag set(if that
|
|
fails, a "normal" blit is tried).
|
|
|
|
The DirectX blit buffer(secondary surface that FCE Ultra writes to
|
|
directly and then uses the DirectDraw blit function on to blit
|
|
to the primary buffer) is now created without specifying it
|
|
should be in system memory or video memory, except in the case
|
|
when no hardware blitting is available, and then DDraw is explicitly
|
|
told to create the surface in system memory.
|
|
|
|
Added Family Keyboard support to the DOS port.
|
|
|
|
Cleaned up the VRC7 sound emulation code. I need to find a way
|
|
to save the current sound state in a save state.
|
|
|
|
Found out the real name of the "Space Shadow" gun; it's
|
|
called the "Hyper Shot". I'm still not sure who made it, though.
|
|
Possibly Bandai did. The interesting thing is that Konami
|
|
also made a Famicom accessory(dual square boxy things with two buttons
|
|
on each) with the same name(though there might not be a space in the
|
|
name).
|
|
|
|
Only the upper two bits read from $4016/$4017 are undefined.
|
|
Bit5 is always 0, though. Fixed the bug in "input.c".
|
|
Silly kevtris' old documents. New kevtris' brain is always good.
|
|
|
|
Family Keyboard support for the Windows port.
|
|
|
|
Added support for the Family Basic Keyboard to the Linux port, other
|
|
ports todo.
|
|
Might want to add support for the tape recorder at some time.
|
|
Also mapped the "Scroll Lock" key to disable/enable command keys
|
|
so that the FBK is more useable. It doesn't disable CTRL C,
|
|
though...
|
|
|
|
Changed a lot of inlined functions in x6502.c to macros so that
|
|
I could test out some optimization ideas.
|
|
|
|
DOS code updates for game input override support.
|
|
|
|
Small optimzation to opcode $4c, and relative jumps.
|
|
|
|
Added some code to ines.c to set controller information in
|
|
FCEUGameInfo(returned by FCEUI_LoadGame()) based on crc32 values.
|
|
|
|
Updated user documentation and usage.h for DOS and SVGAlib input
|
|
command-line changes.
|
|
|
|
Added an option to disable the four-score(to Windows and Linux ports
|
|
so far).
|
|
|
|
Updated Windows interface to support the new Famicom expansion
|
|
devices.
|
|
|
|
(Re)Added support for the Famicom 4-player device.
|
|
|
|
Improved Zapper emulation...sort of. It still needs a lot of work. :/
|
|
|
|
Added *partial* support for the "Space Shadow" gun.
|
|
|
|
Added support for the Arkanoid controller(both NES and Famicom style).
|
|
|
|
Added code to support the extension Famicom input devices.
|
|
|
|
Added PAL scanline start/end drawing settings to Windows port.
|
|
|
|
Added pause emulation key(F2) to Windows port.
|
|
|
|
In the process of rewriting/fixing up input code stuff.
|
|
|
|
Minor bug fix to Power Pad emulation code.
|
|
|
|
VS Hogan's Alley and VS Duck Hunt automatically select the zapper
|
|
now(though it only works on the SVGAlib port).
|
|
|
|
Undid some FDS sound code changes introduced in 0.76 that totally
|
|
screwed up sound. Oops.
|
|
|
|
Added code to allow different settings for first/last scanline
|
|
drawn while in PAL emulation mode, to the Linux and DOS ports.
|
|
|
|
Added convenience(it's not necessary, but it reduces redundant and
|
|
confusing code in the driver code) function
|
|
FCEUI_GetCurrentVidSystem(int *slstart, int *slend).
|
|
|
|
Updated file "TODO".
|
|
|
|
Changed #include <unzip.h> to #include "zlib/unzip.h"
|
|
in file.c.
|
|
|
|
NSF 6502 player now initialized the stack pointer on reset.
|
|
|
|
Worked on de-emphasis emulation code quite a bit.
|
|
The deemphasized palette calculated at the end of the frame is now
|
|
based on what deemphasis bits were set for the longest during
|
|
the screen(sampling interval is a scanline) update loop.
|
|
Added a "static" deemphasized palette at $40-$7F in the palette table.
|
|
This corresponds to the colors when all of the deemphasis bits are set.
|
|
I did this to fix the PAL game "Noah's Ark", without breaking
|
|
anything else. The only downside is a slight speed loss(~2% on
|
|
my system when sound is disabled), but this is acceptable to me,
|
|
at least.
|
|
Maybe it's time to write hi/true-color ppu drawing code...
|
|
|
|
|
|
Fixed an out of bounds array access in svga.c in SetNESDeemph().
|
|
The variable "lastd" in svga.c was being initialized to the wrong value.
|
|
Thanks to "Jarod CANAL" for pointing this out.
|
|
|
|
Removed FCEUI_SetFirstRenderedLine or whatever it was called and
|
|
the function to set the last line. Replaced with:
|
|
void FCEUI_SetRenderedLines(int ntscf, int ntscl, int palf, int pall);
|
|
|
|
Changed SetVidSys(int w) to ResetVidSys() in fce.c. Reenabled
|
|
PAL/NTSC emulation overrides based on game loaded(really only useful
|
|
for NSFs and UNIFs now).
|
|
|
|
UNIF loading code now recognizes the chunk "CTRL" and tries
|
|
to use it. Only the svgalib code supports overriding of input
|
|
settings based on game loaded, now, though...
|
|
The user is still going to have to configure powerpad settings
|
|
on his/her own.
|
|
|
|
Fixed return values of FCEU_fseek() and fixed a problem in unif.c
|
|
related to it.
|
|
|
|
Changed mechanism for how FCE Ultra tells the driver
|
|
code what type of system is being emulated. A structure of
|
|
type "FCEUGI" is returned from FCEUI_LoadGame().
|
|
|
|
Fixed a major mapper 64 emulation bug introduced in 0.76.
|
|
|
|
Modified BlitVidHi() in drivers/win/video.c to speed it up.
|
|
|
|
Added support for loading the iNES-format Game Genie ROM image.
|
|
|
|
Removed ggrom.h and added code to load the Game Genie ROM
|
|
image from a file.
|
|
|
|
Added Windows netplay.c. (new: the user exiting the emulator
|
|
while stuck in a blocking recv() or send() loop now works.)
|
|
|
|
Fixed a vram address register bug in fce.c that I created when I got
|
|
rid of the pair/dpair data types.
|
|
|
|
Added new mappers/92.c
|
|
|
|
Removed mappers/92.c until I can contact LULU or rewrite it.
|
|
|
|
drivers/win changes. Removed netplay.c until I can rewrite it.
|
|
|
|
Got rid of pair/dpair data types.
|
|
|
|
Got rid of silly "TempArray" thing.
|
|
|
|
Began adding GPL headers to files. FCE Ultra is going to be in
|
|
a state of legal limbo for the next few days...
|
|
|
|
Replaced crc32.c and crc32.h, and added some #ifdef's and #defines
|
|
to use the crc32 code in zlib instead if zlib is linked with
|
|
FCE Ultra.
|
|
|
|
More fixes to sb.c.
|
|
|
|
Cleaned up drawing.h and ggrom.h(even though ggrom.h will *probably*
|
|
be removed before the next release).
|
|
|
|
Redid frameskip code.
|
|
|
|
Rewrote necessary pieces of sb.c and sb.h and fixed quite a few
|
|
bugs. I still need to test it on various other sound cards, though.
|
|
|
|
Rewrote(more like "recreated in my own image") DOS keyboard driver.
|
|
Removed unused "keyscan.h" from drivers/svgalib
|
|
|
|
Rewrote part of(the parts that Marat wrote - the connection and
|
|
closing parts) the Linux TCP/IP network play code. I guess it works,
|
|
but I haven't tested it very much. In any case, it's still dangerous
|
|
to use network play in FCE Ultra with SVGAlib, since recv() or send()
|
|
might block and since the keyboard is in raw mode, you have a problem.
|
|
Maybe a future SVGAlib will fix the general problem of lockups if
|
|
keyboard_update() isn't called, though it is only partly SVGAlib's
|
|
problem...
|
|
|
|
Fixed FCEU_fseek() when used with a compressed file in the PKZIP
|
|
format that has been loaded. Fixes a UNIF loading problem.
|
|
Also added a check to the return value of FCEU_fseek() in unif.c.
|
|
|
|
Replaced Marat's 6502 emulation core with my own.
|
|
It should be fully functional, but as always, I don't know if
|
|
I implemented the undocumented instructions correctly.
|
|
Several things are correct in this new core that were not in
|
|
Marat's(D flag is no longer cleared by interrupts, for example).
|
|
|
|
Altered mapper 16 irq counter emulation slightly.
|
|
|
|
Fixed the behavior of the SXA, SYA, and XAS opcodes based on the
|
|
documentation I have. I'm not sure what happens when page crossing
|
|
occurs with those instructions on a real NES, though.
|
|
Also CHANGED(not fixed) emulation of opcode $8B("XAA").
|
|
|
|
Changed some of the M* functions(absolute indexed and maybe some others)
|
|
to perform dummy reads.
|
|
|
|
Changed some of the macros in m6502.c to inlined functions so
|
|
that I can modify and examine them more easily.
|
|
|
|
.77:
|
|
----
|
|
|
|
Fixed a silly network play bug(in the global network play code)
|
|
that caused excessive lag.
|
|
|
|
Added a "niceness" setting to the sound configuration dialog.
|
|
Removed obsolete information from the dialog.
|
|
|
|
Fixed speed throttling code in Windows port when PAL emulation is
|
|
disabled/enabled and a new game hasn't been loaded yet.
|
|
|
|
Commented out a printf() to debug stuff in fds.c(oops).
|
|
|
|
Applied PK's joystick patch to the osdl code. It allows the user
|
|
to map axes and it fixes a joystick button mapping configuration saving
|
|
bug.
|
|
|
|
Added two command line options new to Linux port to DOS port.
|
|
Just need to test them...
|
|
|
|
Added some stuff to unif.c to allow for boards that can support
|
|
CHR RAM instead of CHR ROM(darn Sachen boards...). Fixes UNIF
|
|
version of "Q-Boy".
|
|
|
|
Added command line option "-snapname" to Linux port. I'll add it
|
|
to the Windows port as well, but probably not to the DOS port.
|
|
|
|
Added clip option to Linux port.
|
|
|
|
Fixed sound logging(in Windows port) so that multiple recording
|
|
sessions now work.
|
|
|
|
Added an option to clip the leftmost and rightmost 8 columns
|
|
of graphics in the Windows port.
|
|
|
|
Added a submenu that lists recently opened files, in the Windows
|
|
port.
|
|
|
|
.76:
|
|
----
|
|
|
|
Updated porting.txt.
|
|
|
|
Added speed throttling code to Windows port that's used when sound is
|
|
disabled(and an option in the "Miscellaneous"
|
|
configuration window to disable it).
|
|
|
|
Added cheat interface to DOS build.
|
|
|
|
A few tweaks to the text cheat interface code in the cheat listing code.
|
|
Added a command to quickly toggle the status of the cheat(though a
|
|
cheat can still be disabled/enabled by (M)odifying the cheat).
|
|
|
|
Support for UNIF UNL-TC-U01-1.5M board added. Same credits as below.
|
|
|
|
Rewrote mapper 228 code just for the heck of it(actually, I couldn't
|
|
figure out why some(about two) of the games in the Action 52 cart
|
|
weren't working in .75(and .76). I traced it back to .71, where an apparent bug in
|
|
the undocumented 6502 opcode emulation allowed it to work, which
|
|
was later fixed for the .72 release(opcode 0x7C)). I'm thinking
|
|
that the dump is bad...
|
|
|
|
Added a few crc32 checks to ines.c to check for and report when
|
|
a known(by me) bad(hacked or bad dump) game is loaded.
|
|
|
|
Added support for the following UNIF boards. Thanks to Quietust
|
|
and Kevin Horton for the information. Some problems still exist
|
|
with a few games that use these boards, though...
|
|
|
|
UNL-Sachen-8259B
|
|
UNL-Sachen-8259A
|
|
UNL-Sachen-74LS374N
|
|
UNL-SA-016-1M
|
|
UNL-SA-72007
|
|
UNL-SA-72008
|
|
UNL-SA-0036
|
|
UNL-SA-0037
|
|
|
|
Fixes to some stuff in cart.c(for example, calling setprg32() when
|
|
only 16kb of prg data is present now works).
|
|
|
|
Added support for iNES mapper 189.
|
|
|
|
Tried to add support for the UNIF board "UNL-H2288". Failed.
|
|
|
|
Updated "cheat.txt" to fix a few typos and added an example of finding
|
|
and adding a cheat using the Linux port's text interface. The actual
|
|
section on the Linux cheat interface still needs to be written, however.
|
|
|
|
Changed network play code in the Windows port and fixed a bug.
|
|
Fixed a similar bug in the Linux netplay code....sort of.
|
|
|
|
A few cosmetic changes to the dialogs in the Windows port.
|
|
|
|
Fixed sound initialization on the Windows port(it was being initialized
|
|
when FCE Ultra started even if it was disabled by the user. Oops.).
|
|
|
|
Joystick button configuration code in Windows port changed slightly
|
|
to be more useable.
|
|
|
|
Changed reference to video mode 5 in the linux port to "1 per 4".
|
|
It may not be very meaningful, but it is certainly better
|
|
than "TV Emulation". I'll change the Windows port reference later.
|
|
|
|
Documented video mode 7(320x240) for the Linux port. Also added
|
|
a check for the FBDev driver in order to use this mode instead
|
|
of a tweaked vga mode if that driver is being used.
|
|
|
|
Added/Fixed cheat interface for Linux port. It's still not perfect,
|
|
though. The code is ugly...
|
|
|
|
Callback function for FCEUI_ListCheats() now receives
|
|
status information(enabled/disabled).
|
|
|
|
Callback functions for cheat functions now must return 0 to
|
|
stop listing cheats or 1 to continue.
|
|
|
|
Fixed a problem(the cheat code was reading in cheats
|
|
for address $0000 from cheat files if any blank lines were present).
|
|
|
|
SDL port zlib changes(linked dynamically to zlib now).
|
|
|
|
More changes to envelope decay + looping on code. No longer
|
|
depends on value @ $4017. It now sounds correct based on some
|
|
tests I did with SMB3 and a GG, but Goonies 2 doesn't sound right(
|
|
based on a sound file sent to me by another person).
|
|
|
|
Added support for iNES mapper 140. Thanks to Quietust for the
|
|
information.
|
|
|
|
I need to figure out how to deal with the problem of so many
|
|
bad NSFs that most people consider good...
|
|
|
|
Changed envelope decays a bit. Their behavior now depends on bit
|
|
7 of $4017. I don't know if this is right...
|
|
|
|
Addition of debug.c for some debugging stuff.
|
|
|
|
Updated zlib to 1.1.4.
|
|
|
|
Modified code in various files to allow UNIF games to override
|
|
current selected video system emulation(NTSC or PAL). Need to
|
|
make sure this really works.
|
|
|
|
Changed sound.c to prevent desynchronization during network play.
|
|
This might slow down sound emulation slightly, especially when
|
|
sound emulation is disabled. I really don't care...
|
|
|
|
Updating network play code. More info later...
|
|
|
|
Moved the sound/video/etc output code in EmLoop() to the top of the
|
|
for(;;) loop so that initialization prior to calling EmLoop() will
|
|
be the same as initialization done during a call to a FCEUD_* function.
|
|
|
|
A few very small changes to sound emulation in fds.c.
|
|
|
|
Changed unlink() to remove() in cheat.c and removed the including
|
|
of the header file unistd.h.
|
|
|
|
Split up the cc=... statement in RefreshLine() to make it easier
|
|
to read and not ambiguous(to Borland's C compiler).
|
|
|
|
Changed a lot of the function declarations in cheat.c. I'll need
|
|
to verify that cheat searching still works ok and that cheats still work
|
|
ok. I'll also need to update the Windows(and Linux console) cheat code
|
|
to prevent compiler warnings.
|
|
|
|
Fixed various minor code problems(not minor if you want to use a
|
|
compiler besides gcc). This is an ongoing process...
|
|
|
|
Removed bit fields after reading about and thinking about possible
|
|
portability problems, though I kept some optimizations in fceline.h
|
|
|
|
Minor code simplification in drivers/win/joystick.c(replaced
|
|
"case 200 ... 207" and "case 208 ... 215".
|
|
|
|
Modified some code to use bit-fields in the graphics rendering code
|
|
in fce.c and fceline.h. gcc seems to be able to optimize the new
|
|
code to run faster.
|
|
|
|
Fixed m6502.c and fce.c to initialize variables on virtual power
|
|
toggle. This should fix network play on the Windows port.
|
|
I'm also in the process of cleaning up fce.c.
|
|
|
|
.75:
|
|
----
|
|
Fixed directories configuration stuff in Windows port(corresponds
|
|
to .75r2).
|
|
|
|
More changes to square wave channel envelope/volume emulation...
|
|
Changes described in the large paragraph some lines down have been
|
|
abandoned.
|
|
|
|
Added a command line switch to set the volume in the dos port.
|
|
|
|
Changed Windows sound configuration dialog. Now buffer length is
|
|
specified in time, not samples. I also added a volume control.
|
|
|
|
Reduced the volume on 8-bit sound output on all ports by 1/2.
|
|
|
|
Added a function FCEUI_SetSoundVolume(). Added support for setting
|
|
the volume via the command line in the Linux port, other ports coming
|
|
soon.
|
|
|
|
Changed FCEUD_WriteSoundData() again. No longer has a "Check"
|
|
argument. All clipping(ugh) is done internally now.
|
|
|
|
Added a directories configuration dialog to the Windows port. I worked
|
|
on it too long and I became a zombie, so it might have a few bugs.
|
|
That's what guine...err...users are for. ;) Don't expect me to do
|
|
anything like this for any other port, though. I don't feel like
|
|
doing it on the DOS port, and the Linux and other UNIXy ports shouldn't
|
|
really need it.
|
|
|
|
Made some changes to the rectangle/square wave channel emulation to
|
|
fix the pops in SMB. I have no idea if what I did is correct. To
|
|
be honest, I'm not sure I know EXACTLY what I did, but it's something
|
|
like this: Writes to $4003/$4007 now reset the duty cycle count
|
|
and reload the cycle counter with the current wavelength. Writes to
|
|
$4003/$4007 now do not update the amplitude output of the channels; they
|
|
will be updated after the cycle counter hits 0(or below).
|
|
|
|
More information in iNES informational output.
|
|
|
|
Minor changes to mappers/16.c.
|
|
|
|
Increased the volume of the VRC6's sawtooth wave channel.
|
|
|
|
Added more information to the RAM cheat guide.
|
|
|
|
Changed the triangle wave generation code slightly. I decided
|
|
to remove support for the higher-frequency triangle waves, as they
|
|
are too cpu-costly to create and are probably not very audible on a
|
|
real NES anyway.
|
|
|
|
Major changes to how sound is mixed. This necessitated a high pass
|
|
DC-offset removing filter, and a low-pass filter just to make things
|
|
sound better. ^_^
|
|
Note: FCEUD_WriteSoundData() no longer needs to clear the waveform
|
|
data referenced by the passed pointer; it's done internally now.
|
|
|
|
Fixed JMP ($xxxx) - now handles wrapping like it occurs on a real 6502
|
|
(hopefully; I'm assuming that the same holds true for the NES' cpu).
|
|
|
|
Added the ability to load a custom global palette in the DOS port.
|
|
|
|
Fixed bug in drivers/common/unixdsp.c(wrong return value if sample
|
|
rate was out of range).
|
|
|
|
Many sound fixes... - Frequency sweeps, length counter stuff,...
|
|
|
|
Changed Windows port to use IDirectInput7 and IDirectInputDevice7
|
|
interfaces.
|
|
|
|
Fixed a Game Genie bug in the core emulation code. It only appeared
|
|
in the Windows port, though. (Enabling gg emulation, loading a game,
|
|
and then disabling gg emulation and loading a new game while in the
|
|
gg code entry screen would cause the new loaded game to not work
|
|
correctly).
|
|
|
|
Modified windows port to use the config saving/loading stuff in
|
|
drivers/common/config.c
|
|
|
|
Mapper 45 cleanups/fixes.
|
|
|
|
Added the ability to load a custom global palette in the Linux port.
|
|
Yay.
|
|
|
|
Fixed a large number of overcomplicated code and silly bugs in
|
|
drivers/common/config.c. This changes the format of the configuration
|
|
structure, too. Also added support for saving/loading strings with
|
|
automatic memory allocation when strings are loaded.
|
|
|
|
Minor change in InitNetplay().
|
|
|
|
Fixed bad type conversions for pointers to functions and fixed
|
|
some bad declarations of functions.
|
|
|
|
Reenabled zlib support for the sdl build. I need to pay attention
|
|
to patches that modify lines than don't fit on my screen.
|
|
|
|
Fixed vidblit.c to not emit so many warnings when compiling.
|
|
|
|
.74:
|
|
----
|
|
|
|
Stop sound in Windows port when user clicks l/m/r mouse buttons
|
|
in the non-client area of the window.
|
|
|
|
Added "Drag and drop" file open support to Windows port.
|
|
|
|
Various code cleanups.
|
|
|
|
mappers/33.c optimization.
|
|
|
|
Rewrote the function "FCEU_MakeFName()".
|
|
|
|
Removed crc32.h from mappers directory.
|
|
|
|
Modified some of the window resizing code in the Windows port.
|
|
|
|
Added support for waiting for vblank/double buffering to the Windows
|
|
port.
|
|
|
|
Added/Fixed support for iNES mapper 248.
|
|
|
|
After an NSF file is loaded, information about its header is now
|
|
displayed.
|
|
|
|
Fixed a typo in the Namco 106 extra ram handling code.
|
|
|
|
Improved the quality of the Namco 106's extra sound channels.
|
|
- Thank Mamiya and Applepie(real name?) for info.
|
|
|
|
When an NSF file is being played, FCE Ultra will no longer go through
|
|
its scanline rendering loop. This speeds up NSF playback considerably.
|
|
|
|
Updated "porting.txt".
|
|
|
|
Moved some stuff from DriverInterface() to their own functions.
|
|
|
|
Fixed some iNES mapper 18 IRQ counter emulation bugs. "Ninja Jajamaru -
|
|
Ginga Dai Sakusen" now works.
|
|
|
|
Rewrote large pieces of the mapper 64 code. "Skull and Crossbones"
|
|
still doesn't work, though.
|
|
|
|
Changed format of iNES header information output, added "ROM CRC32" info.
|
|
|
|
Modified the way cycle timing is done slightly. No change
|
|
for NTSC emulation, but PAL emulation is a little more accurate.
|
|
|
|
Changed the behavior of indirect indexed(I hope I got that right ;))
|
|
instructions to behave more like a real 6502(junk reads are now
|
|
performed).
|
|
|
|
A few optimizations/cleanups in m6502.c.
|
|
|
|
0.73
|
|
----
|
|
|
|
* Fixed several bugs with sprite emulation. Several games(such
|
|
as "Trojan" and "VS Duck Hunt") that were broken in .71 and .72 now
|
|
work ok.
|
|
* Added support for iNES mapper 82. Thanks to those who work on
|
|
"unofficial nester".
|
|
* Added support for iNES mapper 250(used by "Time Diver Avenger").
|
|
* Fixed the documentation to show that iNES mappers 48, 83, and 232
|
|
are supported.
|
|
* Removed various pieces of stale code and fixed a few minor bugs.
|
|
* Fixed a triangle wave channel bug(the channel was sometimes enabled
|
|
when it shouldn't have been).
|
|
* Writing to $4010 with the upper bit clear now acknowledges the DPCM
|
|
IRQ. This appears to fix "Stunt Buggies".
|
|
* Rewrote pieces of the Zapper emulation code to be cleaner and more
|
|
accurate.
|
|
* Rewrote the VS Unisystem dip switch drawing code.
|
|
* Simplified the setting of VS Unisystem dip switches. The "V" key
|
|
now toggles viewing AND editing of dip switches.
|
|
|
|
0.72
|
|
----
|
|
|
|
* Various minor bug fixes.
|
|
* Various code cleanups and size and speed optimizations.
|
|
* Removed some (apparently) unused MMC5 sound emulation code.
|
|
* Changed the behavior of $2003 and $4014 to better simulate what occurs
|
|
in a real NES.
|
|
* Fixed a few bugs in the undocumented 6502 opcode emulation code.
|
|
The Game Genie code "NUTANT" for SMB 3 works correctly now, at
|
|
least(previously it caused the game to lock up at the end of levels).
|
|
* Rewrote large pieces of the 6502 memory fetching code, resulting
|
|
in a slight slowdown in the speed of emulation. Benefits include:
|
|
Game Genie emulation now works(again) and 6502 emulation is more
|
|
accurate.
|
|
* Added support for iNES mapper 72. Thanks to rinao for the information.
|
|
* Fixed support for iNES mapper 77(used by Napoleon Senki).
|
|
* Fixed/Added support for iNES mapper 226. Apparently I made a mistake
|
|
in the documentation. Thanks to Mark K. for the information.
|
|
* Added support for iNES mapper 227. Thanks to Mark K. for the
|
|
information.
|
|
* Added support for iNES mapper 234(used by the Maxi-15). Thanks
|
|
to Mark K. for the information. Note that many of the Maxi-15
|
|
ROM images on the Internet have corrupt CHR data(graphics), or the
|
|
mapper number is set incorrectly(usually to 11). Use a utility to
|
|
fix the mapper number.
|
|
* Added support for the following UNIF boards(prefixes omitted):
|
|
- EKROM (and fixed the reference to "Gemfire" in the documentation).
|
|
- HKROM
|
|
* Added the ability to enable and disable individual RAM cheats.
|
|
* Fixed some problems with the cheat search code(the NES' internal
|
|
RAM was being searched differently than any external RAM, which
|
|
was being search incorrectly).
|
|
|
|
0.71
|
|
----
|
|
|
|
* Fixed a 6502 emulation bug that was causing some Koei games
|
|
(ex: Nobunaga's Ambition, Genghis Khan) to not work.
|
|
* Extensive PPU/CPU timing adjustments.
|
|
* Fixed support for iNES mapper 40.
|
|
* Added support for the following UNIF boards(prefixes omitted):
|
|
- ETROM
|
|
- ELROM
|
|
- EWROM
|
|
* Fixed a few bugs in the UNIF code.
|
|
* Added support for loading and saving cheat files and an interface
|
|
to search for/add/delete/list cheats(no interface yet on Linux/DOS).
|
|
* Fixed a few minor bugs in the Windows DX code.
|
|
* Command line options to control the number of sound fragments
|
|
and the fragment size have been added(Linux).
|
|
|
|
0.70
|
|
----
|
|
|
|
* Adjusted PPU/CPU timing.
|
|
* Removed(until I understand the problem) a hack to get one of the
|
|
games in the Caltron 6-in-1 to work.
|
|
* Fixed an MMC3 IRQ emulation bug("Project Q" works better now).
|
|
* Fixed a problem/misunderstanding regarding the upper scanline.
|
|
It can now be displayed again.
|
|
* More accurate sprite hit emulation(fixes the title screen of
|
|
"Ultimate Stuntman").
|
|
* VRAM bank switching for iNES mapper 4 is now possible(and enabled
|
|
for all mapper 4 games without CHR ROM). Fixes "Tenchi o Kurau 2".
|
|
* Added support for the Famicom's four-player adapter and the ability
|
|
to enable it(it is disabled by default to prevent compatibility
|
|
problems).
|
|
* Added an option(under miscellaneous configuration) to automatically
|
|
open the "File Open" dialog box when FCE Ultra is started.
|
|
* Sound sampling rate is now configurable.
|
|
* Fixed some bugs in the DirectSound code.
|
|
* Joystick button configuration is a little more user friendly(and
|
|
stable, hopefully) (Linux).
|
|
|
|
0.62
|
|
----
|
|
|
|
* Added support for the Famicom Disk System's extra sound channel.
|
|
* Updated the version of Tatsuyuki Satoh's OPL2 emulator used in
|
|
FCE Ultra from .36f to .37a. The sound quality in "Lagrange Point"
|
|
seems to have improved.
|
|
* Added support for iNES mapper 242(used by "Wai Xing Zhan Shi").
|
|
* Fixed a network play bug that could cause desynchronizations
|
|
if more than one network play session occured since FCE Ultra
|
|
was started. This bug only showed up on the Windows port, though.
|
|
* Increased the volume of the noise and triangle sound channels.
|
|
* Fixed a save state loading bug.
|
|
* Fixed a small memory leak that was being caused by the VRC7
|
|
state loading code.
|
|
* Fixed a bug that could cause FCE Ultra to crash if a virtual disk
|
|
was being read and the user ejected the virtual disk.
|
|
* Various minor bug fixes/code cleanups.
|
|
* NTSC color "emulation" can now be enabled again(the code to
|
|
enable it was broken in the last version). (Linux)
|
|
|
|
0.61
|
|
----
|
|
|
|
* Speed optimizations in sprite rendering code.
|
|
* Screen snapshots are now saved in the PNG format instead of the PCX
|
|
format.
|
|
* Fixed Game Genie emulation(it wasn't working in the last release).
|
|
Also added support for Game Genie emulation to the UNIF code.
|
|
* Rewrote command line option parsing code.
|
|
* Fixed a problem(if FCE Ultra was configured to connect to a remote
|
|
host and the remote host was given as an IP address, and the IP
|
|
address couldn't be reverse resolved, which is commonly the case
|
|
on home LANs, the connection attempt would fail) in the network
|
|
play code. I had misinterpreted the Winsock API documentation
|
|
when I wrote the code. (Windows)
|
|
|
|
0.60
|
|
----
|
|
|
|
* Various speed optimizations.
|
|
* Sound is no longer messed up when a JAM/KIL opcode is emulated.
|
|
* Fixed an overflow bug that occured when $4014 was written to
|
|
during certain(rare) conditions.
|
|
* Fixed a few save state bugs.
|
|
* Fixed a MMC1 CHR bank switching bug.
|
|
* Added emulation of the MMC5's WRAM write-enable/disable registers.
|
|
* Fixed a sound frame IRQ emulation bug. "Qix" works now.
|
|
* Added UNIF support. Some of the board emulation is still a bit
|
|
buggy, though. Look at the documentation for a list of supported
|
|
boards.
|
|
* Updated the "Palette Notes" section of the documentation. Also
|
|
fixed a few other problems with the documentation.
|
|
* Added support for loading files in the PKZIP and gzip
|
|
compressed file formats via zlib.
|
|
* Added the ability to configure the first scanline and the last
|
|
scanline to draw to the screen. Enabling PAL emulation no longer
|
|
will cause all 239 scanlines to be displayed, though an option
|
|
to override these settings for when PAL emulation is enabled may
|
|
be in the next version.
|
|
* Fixed a bug that would cause the emulated D-pad of virtual gamepads
|
|
emulated through the keyboard to be duplicated through "higher"
|
|
virtual gamepads(gamepad 1 would affect 2,3,4; gamepad 2 would
|
|
affect 3,4; etc.). (Windows)
|
|
|
|
0.55
|
|
----
|
|
* Rewrote window resizing code. The window will now resize itself
|
|
to a multiple of the NES' screen dimensions nearest to the user
|
|
selected dimensions. (Windows)
|
|
* Added an option to use buttons instead of axes on physical joysticks
|
|
for the emulated D-Pad. This is useful for some digital joysticks. (Windows)
|
|
* Fixed a bug that would cause FCE Ultra to crash if sound were
|
|
disabled during emulation. (Windows)
|
|
* Added the ability to "fast forward" emulation.
|
|
* Added an option to allow more than 8 sprites per scanline to be
|
|
displayed.
|
|
* Added an option to save all extra non-volatile game data
|
|
(such as battery-backed RAM) in a directory under FCE Ultra's
|
|
base directory(as opposed to the directory the game is located in).
|
|
* Added an option to allow the emulator to change to a full screen
|
|
video mode once a new game is loaded. (Windows)
|
|
* Rewrote pieces of DirectInput joystick handling code. Hopefully
|
|
it should increase compatibility. (Windows)
|
|
* Added the ability to automatically obtain button numbers when
|
|
configuring joysticks, by pressing buttons on the joystick.
|
|
* Added the ability to close the current game(decreases CPU usage). (windows)
|
|
* Increased the speed of various function calls by passing
|
|
arguments to functions through registers instead of through the
|
|
stack.
|
|
* Added emulation of the MMC5's raw PCM register.
|
|
* Added the ability to save/load save states while network play
|
|
is occuring.
|
|
* Having PAL emulation enabled will no longer override the
|
|
NTSC/PAL settings in NSF headers.
|
|
* Fixed a bug that got into the .54 release. Extraneous data was
|
|
being returned on reads from $2002, which caused problems
|
|
with some games(such as "Choujin Sentai Jetman").
|
|
|
|
0.54
|
|
----
|
|
* Fixed a bug that would cause a wrong battery-backed WRAM file
|
|
name to be produced if FCE Ultra was passed a file name without
|
|
any directory component(such as "fceu SuperBlah.nes").
|
|
* Fixed an iNES mapper 118 emulation bug that got into the code
|
|
in a recent code cleanup. "Armadillo" is playable again.
|
|
* Fixed a typo(and bug) in the MMC5 emulation code.
|
|
* Data returned from emulated reads to "unmapped" areas or
|
|
memory locations where bits are undefined should now be correct.
|
|
* Fixed emulation of the sprite memory transfer register $4014.
|
|
It now takes into account the last value written to $2003 and
|
|
starts the transfer to that location in sprite memory(like on
|
|
a real NES).
|
|
* Added a video configuration dialog box. (Windows)
|
|
* Added the ability to configure a custom video mode. Aspects
|
|
that are configurable include width, height, bits per pixel,
|
|
and size transforming(stretching and scaling). (Windows)
|
|
|
|
0.53
|
|
----
|
|
|
|
* Fixed a bug with joysticks that occured on systems with multiple
|
|
joysticks. (Windows)
|
|
* Added support for iNES mappers 77 and 92(thanks to LULU for the code for both).
|
|
* Added partial(timer is non-configurable) support for iNES mapper 105.
|
|
* Changed save state format again. Save states made with previous
|
|
versions should still be compatible, though this may change in
|
|
future versions.
|
|
* Small optimization to sprite emulation code.
|
|
* Rewrote color-deemphasis code to use integer math instead of
|
|
floating-point math.
|
|
* Rewrote and restructured input code. (Linux)
|
|
* Added command line option "-f8bit" to force 8-bit sound. (Linux)
|
|
* Rewrote and restructured input code. Among other new features,
|
|
keyboard keys are now somewhat configurable. (Windows)
|
|
* Writes to $4003/$4007 will now reset the emulated square wave
|
|
duty cycle generator.
|
|
* Added emulation of the Power Pad.
|
|
* Rewrote joystick device reading code to use the event-driven
|
|
interface. This should fix various problems regarding support
|
|
for joysticks with many buttons. (linux)
|
|
|
|
0.52
|
|
----
|
|
|
|
* Fixed a PCM emulation bug(digitized voices in "Ikari Warriors 2"
|
|
and "The Immortal", among others, work now).
|
|
* Fixed noise channel's LSFR update frequencies(hopefully).
|
|
* Various minor bug fixes.
|
|
|
|
0.51
|
|
----
|
|
|
|
* Added support for iNES mappers 86 and 89.
|
|
* Reduced byte size of the NSF player's background.
|
|
* Adjusted CPU/PPU timing.
|
|
* Fixed sound channel frequency calculations for when PAL emulation is enabled.
|
|
* Rewrote large pieces of the sound code and got rid of the sound queue. Sound quality should be slightly better now.
|
|
* Various minor bug fixes.
|
|
|
|
Windows:
|
|
|
|
* Fixed an FDS side reset bug when a new game is loaded.
|
|
* Screen width/depth/height changes while FCE Ultra is in windowed mode are handled now.
|
|
* Changed the configuration file format.
|
|
* Added a palette configuration dialog.
|
|
* Added the ability to load a custom NES palette.
|
|
* Added an option to double 16-bit sound volume.
|
|
* Added an option to force 8-bit sound.
|
|
* Added an option to use a secondary sound buffer(versus the primary).
|
|
* Added an option to wait for vertical blank if sound is disabled.
|
|
* Added an option to run while focus is lost.
|
|
|
|
0.50
|
|
----
|
|
|
|
* Many bug fixes.
|
|
* Sound code partially rewritten to improve quality(near-perfect
|
|
raw PCM now) and eliminate the need for a separate thread.
|
|
This created a small problem with network play, though, so read
|
|
the network play notes section. Also, synchronizing to
|
|
vertical blank has been removed.
|
|
* Rewrote other pieces of sound code. No more "buzzing" in MegaMan 2,
|
|
Codemasters games' intros, etc.
|
|
* Added support for the NES Zapper and the VS Unisystem's light
|
|
gun. Be sure to read "Light Gun Notes".
|
|
* Changed save state format. Save states should now be much
|
|
smaller for most games. Most(not all) save states created with
|
|
an older version should work.
|
|
* Added support for VS Duck Hunt and VS Hogan's Alley.
|
|
|