Fixed an OpenGL function typedef in drivers/opengl.h.
PC-FX: Writes and reads to the KING and FXVCE chips "mapped" in parts of 0xA0000000 through 0xBFFFFFFF will now go through the respective data port write handlers, instead of directly to KRAM or palette RAM.
If non-power-of-2-sized OpenGL textures are not available, and bilinear interpolation or a pixel shader is enabled, and the emulated system resolution changes(such as on the PCE), two lines of black pixels will be written to the texture buffer to prevent the display of multi-colored garbage at borders, though the right+bottom borders will still be slightly darker than they should be...
PC-FX: Added support for VDC data port writes via writes to 0xB4000000-0xB7FFFFFF and 0xB8000000-0xBBFFFFFF in the V810's memory map. Fixes major graphical problems in "Super Power League FX".
Updated the srwcompressor description in mednafen.cfg.
PC-FX: KING BG1-3 scroll registers are now emulated as 10-bit instead of 11-bit(BG0's are still 11-bit), and BG1-3 virtual screen size is now limited to 512x512(BG0 is still 1024x1024), per the official developer documents.
Non-power-of-2-sized OpenGL textures will now be used if the "GL_ARB_texture_non_power_of_two" extension is detected.
Fixed a bug that sometimes would cause black screens when using the "sdl"(non-default) video driver(SDL surface per-pixel alpha blending was enabled when it shouldn't have been).
PCE: Fixed a line clearing bug when BG is disabled that was causing some minor graphical garbage on some games that use multiple horizontal resolutions per frame.
Changed some nonsensical #ifdef statements that were intended to always evaluate as false with "#if 0".
Renamed SYSTEM_CLOCK to System_Clock in scsicd.cpp to work around a potential macro conflict on OSX.
PC-FX: Added partial support for NEC's "scan" SCSI command, used in the BIOS' CD-DA player screen.
PC-FX, PCE CD: Revamped parts of the subchannel emulation code. The PC-FX BIOS CD player screen's time display works now. Also, an important note regarding cdrdao "TOC" files and "RW_RAW" subchannel data was added to the documentation.
PC-FX: Fixed a bug in the KING BG0 scrolling+rotation code for 16-color and 4-color backgrounds with BATs that was causing graphical corruption in the PC-FX BIOS CD player screen.
Fixed a compilation error when --disable-debugger was passed to the configure script.
Added preliminary support for inputting text directly into the selected address space in the debugger's memory editor.
Moved the temporal video blurring code in mednafen.cpp to vblur.cpp
Added settings "filesys.snap_samedir", "filesys.sav_samedir", "filesys.state_samedir", and "filesys.movie_samedir", default 0, that when set to 1, will read/write the respective files from/to the same directory the game was loaded from. If you want to use these, PLEASE read the documentation first, there are caveats!
PCE CD, PC-FX: Added support for MS WAV file offsets and lengths in TOC files.
PCE CD, PC-FX: Fixed a bug that caused CD-DA playback to be off by one sector(the first sector specified was being skipped).
Began work to allow settings to be temporarily overridden during netplay and movie playback.
PCE, PC-FX: Added settings "pce.disable_softreset" and "pcfx.disable_softreset", default 0, which when set to 1 will disable simultaneous pressing of RUN and SEL. The current implementation kind of abuses the driver-side code that disallows opposing diagonal buttons being pressed at the same time, so if we ever change that (undocumented) feature to go with the last-pressed direction rather than clearing both, the description of these settings in the documentation will need to be updated.
PCE CD, PC-FX: Read operations and CD-DA playback will now be stopped when the RST signal is asserted(fixes soft reset issues on PCE CD games).
Added meaningful descriptions to the command.* settings.
PC-FX: Added an experimental feature to use mmap() to create a virtual 32-bit address space to speed up V810 instruction reads.
Enable by setting "pcfx.use_mmap" to 1. Of course, it won't work on 32-bit CPUs! Please read the documentation, there are caveats!
PC-FX: Removed some redundant logic in the KING BG 8x1 drawing functions.
PC-FX: FX VCE and VDC port access are now emulated as 16-bit, as in the real PC-FX, instead of 8-bit.
PC-FX: Altered the debugger's memory peek and disassembly functions to not read the emulated memory map in the 0x80000000-0xEFFFFFFF region.
(Reading those addresses can cause side effects, and this is a temporary workaround)
PC-FX: Changed the V810 memory read handlers to read RAM faster than BIOS ROM. This will probably increase host CPU usage while in the BIOS
loading screen, but decrease it in the actual game.
PC-FX: Altered the V810 opcode fetch logic to do 16-bit reads instead of 32-bit, fixing potential crash issues
when Mednafen is run on CPUs that don't support unaligned memory accesses.
PC-FX: Factored-out a few address masks in the memory read and write handlers.
PC-FX: Replaced most of the V810 signed-variable bit-size converting code that uses conditional branches to code that uses 2 shifts,
taking advantage of modern 2's-complement CPU's arithmetic right-shift capabilities. It reduces generated machine code size slightly,
and should provide a slight speed boost as well.
PC-FX: Optimized V810 address mode decoding by removing an unnecessary conditional jump.
Added an important warning to the documentation regarding Mednafen's ripped CD image support:
Mednafen does *not* correct bit errors in the user data of "raw" data track rips. It is strongly recommended to use
"cooked" data track rips(2048 bytes/sector for mode 1, not counting any subchannel data) with Mednafen.
PC-FX: Improved exception handling, and added untested emulation of the TRAP instruction.
Debugger: Rewrote the memory load and dump functions to be faster, and also to fix a bug in the load function that would
trash memory if the user tried to load more data than the specified file contained.
Debugger: Using the Goto function will no longer cause memory edit mode to be exited.
Debugger: Fixed a bug that occurred when entering a prompt(goto, change charset, etc.) while in editing mode, that caused
keyboard focus to be misdirected.
SexyAL: The ALSA driver will try to set smaller period sizes when lower playback rates are used.
GBA: Changed the heuristics used to detect SRAM/Flash usage, though they're still not perfect...if a game tries to use flash
memory improperly, it could be detected as using SRAM instead, or silently corrupt parts of flash memory...
GB: Fixed sound register initialization on reset, fixes missing sound in A Boy and His Blob
GB: Slightly increased the contrast of GBC colors.
GB: Reworked blitting of mono GB colors for future features.
GB: Removed a redeclaration of a variable in the same scope in a function in gfx.cpp.
Debugger: Fixed PCE VRAM breakpoints to work with block memory transfer instructions.
Debugger: Fixed parsing of single-address breakpoints after range breakpoints.
Mednafen will now print out SDL version information when it starts.
(The Win32 build will now be distributed with SDL 1.2.12)
Debugger: Fixed -/+ opacity adjustment to not be done when entering text(such as in a dialog).
Debugger: Fixed null termination of the ASCII string buffer displayed in the memory watch section.
PCE, PC-FX: Fixed the frequency of the highest-frequency noise generation register setting, hopefully!
PCE, PC-FX: Changed the LFSR to 16-bit, and to use a maximized tap configuration, to make the noise sound a bit closer to a real
PC Engine's(at least, in my opinion! It still sounds slightly more bassy than a real PC Engine, but that might be due to filters
on the PC Engine's sound output...).
Non-power-of-2-sized-textures will not be used when a pixel shader is selected and enabled, to prevent a severe graphical corruption
regression introduced in 0.8.3-beta. I'm not sure if it's a problem with Mednafen's pixel shaders or the graphics card...
SMS: Fixed soft reset.
SexyAL: Removed smallc.c, and modified the OSS driver to use snprintf() instead of the single function smallc.c provided.
SexyAL: "sexyal.h" is now included before all other header files.
SexyAL: Revamped parts of the ALSA driver to fix reported lockup issues under certain conditions.
PCE: Added preliminary(it works, but the code needs to be cleaned) ADPCM support for HES rips.
PCE: Interrupts will be enabled with a CLI after a HES' init routine is called, to fix rips that neglect to do it themselves.
PCE: Added support for HES rips that try to write data where it really shouldn't be written(some CD-ROM game rips do this), though a warning
will be printed the first time this occurs after loading.
PCE: Added sanity checks to the HES loader to prevent crashes if invalid data is present.
PCE: Reads from the I/O port will now return D7 as clear when emulating a PCE CD game.
PCE: ADPCM RAM is now reset(to 0) on emulated PCE reset.
PCE: Sprites trying to pull tile data from $8000-FFFF of VRAM will now be invisible(probably not correct, but trying to emulate indeterminate
effects is too difficult :b). Fixes a minor sprite garbage issue in Camp California.
PCE, PC-FX: Fixed VRAM DMA source/dest increment/decrement bits(the source and dest were flipped). Fixes a problem with Fushigi no Yume no Alice.
Moved some code in the source root directory to appropriate subdirectories.
Added setting <system>.debugger.disfontsize, valid settings being "xsmall", "small"(default), "medium", and "large", to control the font
size used to draw the disassembly text. Note that there may be overlap with other parts of the debugger at font sizes larger than the default.
Refactored a few address space and register group debugger support functions out of individual system code.
Fixed various low-impact memory leaks.
The version of Mednafen last run is now stored in the configuration file as a comment(this will be necessary for changes in 0.8.5 or later
that will involve proper escaping/unescaping and quoting of strings, to prevent problems with extra whitespace added by manually editing
the configuration file).
Fixed state rewinding on big-endian machines, and removed some unnecessary operations from the state rewinding code path.
Mednafen will now refuse to try to load ROM images larger than 64MiB, as a sanity check.
mmap() and madvise() will now be used to load ROM images, assuming they're available(UN*X only, generally).
Errors during automatic IPS patching are now fatal.
Sped up loading gzip'ed ROM images.
Removed a global variable from the NES emulation code that had invaded state.cpp. Though, this makes the error message when trying to use
save states with authentic Game Genie emulation very unhelpful...
GBA: Added support for loading a real GBA BIOS ROM image, using the setting "gba.bios".
GBA: Added the ability to specify the backup memory type for games by creating a file with the same name as the ROM image,
with the extension replaced with "type", in the "sav" directory under the Mednafen base directory.
Example: SexyPlumbers.gba -> SexyPlumbers.type
One or more of the following strings(on separate lines) may appear in the file:
sram
flash
eeprom
sensor
Additionally, the flash size can be specified by specifying the size(real size, or divided by 1024) after the type, like "flash 128" or
"flash 131072".
PCE: Improved noise LFSR and volume emulation, thanks to cgfm2 for the detailed information.
Fixed a crashing bug when loading an uncompressed file and using the automatic IPS-patching feature when mmap() is available.
PCE, PC-FX: All SCSI CDROM commands are now logged in the debugger's log viewer(when logging is enabled, of course).
Added group support to the debugger's log viewer.
PC-FX: Renamed the type of BIOS ROM font calls in the debugger's log viewer from "BIOS" to "ROMFONT".
PC-FX: BIOS filesystem syscall(for backup memory access) calls are now logged in the debugger's log viewer.
PC-FX: Added internal backup memory and external backup memory address spaces to the debugger's memory editor.
PC-FX: In the 263-line mode, line 262 is now reported as being during blanking time(as on a real PC-FX). Fixes the annoying transparency layer flickering and other weird graphical glitches in Der Langrisser FX.
Added setting "filesys.disablesavegz", to disable gzip compression when saving save states and backup memory. (In the case of backup memory, disabling gzip compression isn't supported for GB yet)
PCE: Removed a statement, that was used for debugging, that broke PC Engine multiplayer support in 0.8.5. (I'm not sure how it got there in the first place...).
GBA: DMA registers were being saved as 32-bit arrays instead of 16-bit arrays in save states, potentially causing memory corruption, and broken save states on big endian platforms. Fixed.
NES: Removed the AltiVec resampling code, as it causes problems on the PS3, and possibly other PPC chips, and I don't have a PowerPC machine to test it on. The NES sound filtering code will be rewritten in 0.9.0, anyway.
GBA: Fixed a startup crashing bug on big-endian platforms.
Changed instances of fprintf() in mempatcher.cpp to trio_fprintf() to work around major issues with pre-C99 standard C libraries.
GBA: The Load() function was returning a largeish integer, instead of 1, after successfully loading a ROM image. Fixed.
- Added to the global include list in mednafen.h.
- Added boolean setting "debugger.autostepmode" that, when set to 1, will cause Mednafen to automatically start the debugger in step mode after a game is loaded(only if Mednafen has a debugger for the emulated system, of course).
- NES: Fixed CNROM emulation initialization bug.
- PCE: ADPCM software reset was erroneously also resetting the playback frequency. Fixed. (Fixes ADPCM voices in Gulliver Boy)
- PCE: Fixed disassembly of the JMP $(AAAA, X) instruction.
- PCE, PC-FX: Improved PSG LFO emulation.
- PC-FX: Emulated gamepad button presses weren´t being decoded from the driver-side data correctly(causing problems on big-endian platforms). Fixed.
- PC-FX: Improved the logging of the ROM font system call in the debugger, to also include the callee address and the size of the glyph being requested.
- PC-FX: Disassembly of the "nop" instruction will no longer show the virtually meaningless operand.
- PC-FX: Fixed alignment and prettified the disassembly of LDSR and STSR instructions.
- SMS: SMS pause and 2-player support were erroneously commented out. Fixed.
NES: Cleaned up the iNES loading code a bit, and added support for WRAM on a few mappers that nominally shouldn't have WRAM, enabled if the battery-backed bit is set in the iNES header. Fixes "Family BASIC", and probably a few bootleg games as well.
NES: Added partially-broken support for mapper 163.
NES: Added support for mapper 241.
Fixed string constant-to-(char *) problems in drivers/cheat.cpp
Added setting "osd.state_display_time", to control the length of time, in milliseconds, the save state/movie screen is displayed after selecting a save state or movie.
The most recently-saved save state slot will now be colored differently when selecting a save state slot. Increased the brightness of non-empty save state slots. Empty save state slots are now black instead of being partially transparent.
PC-FX: Fixed bugs in "Play Audio Track Index" and "Read Subchannel" MMC commands, fixing the totally broken cinematic sequences in "Boundary Gate". There may still be bugs in these commands that don't cause any known problems with games, so I will need to run tests on a real system.
GBA: An error loading the custom colormap file is now treated as fatal.
Win32: The German and Russian translation files are now included in the Win32 precompiled binary distribution ZIP file. Note that Mednafen always assumes the locale to be UTF-8, so the stdio.txt file will need to be opened with a viewer that can handle UTF-8(though filenames with non-7-bit-ASCII components will appear fubar). (I am aware that assuming the locale's character encoding to always be UTF-8 is a design flaw with various insidious consequences when the encoding is not UTF-8).
Updated the Russian translation with the translation done by rubicon.
Added configure script option "--enable-altivec/--disable-altivec (default: enabled)" for compiling on PowerPC architectures where AltiVec is not supported, or causes problems. This configure script option is untested, however.
Input for the virtual device on virtual port N will be disabled when the buttons on the virtual device on virtual port N are being configured. The last button pressed when in button configuration may still be taken as virtual device input, however(a fix for this would be too invasive, and so will be done in the 0.9.x unstable tree).
PCE: Added several missing input-related state variables to save states, fixing several netplay/movie desynchronization issues under certain situations.
Fixed a bug when creating an SDL source surface, whose negative effects(clipping rightmost columns) could be triggered when the "sdl" vdriver setting was used with certain xscale and yscale settings that would cause a 1:1 pixel copy operation.
PC-FX: Improved PSG LFO emulation again(Tyoushin Heiki Zeroigar uses it for some sound effects, other games likely use it as well in similar roles).
PCE: Improved PSG LFO emulation again(Hanii in the Sky, Juuouki, and Flash Hiders use LFO).
PCE: Altered the Street Fighter 2 autodetection code to be data-agnostic. The SF2 mapper will now be enabled for any ROM images 2MiB and over in size.
Fixed a call to putenv(), to pass a static character array initialized to a string constant instead of a string constant directly.
Fixed a few argument descriptions(invoked with the -help command-line switch) that weren't properly gettextized.
Debugger: Fixed a bug in the trace log code. It would cause the emulator to lock up if the user pressed Enter/Return in the prompt popup without any text in the input field.
SMS: Removed the old unused Z80 emulator code from when SMS Plus was assimilated.
Fixed the rectangle calculation for screen rotation with Lynx and WonderSwan to use X scale and Y scale values appropriately(they were reversed before; also, assuming square pixels on your monitor ;)).
Rotation still poses a problem in fullscreen with the default settings, however.
Fixed an off-by-one error in the software SDL graphics rotation code(used for Lynx and WonderSwan).
Fixed a race condition that could cause rapid oscillation between fullscreen and windowed when trying to toggle it.
...and fixed a race condition that could cause oscillations when rotating the screen with Lynx and WonderSwan emulation.
SexyAL: The return values of ALSA functions are now treated as errors only if they're less than 0, rather than non-zero as before. Thanks to R.L. for pointing this out.
The default "nethost" setting is now "fobby.net" instead of "mednafen.com". The latter was allowed to expire and lost to domain squatters some time ago. Domain squatters cause desires to commit grievous face-stabbing. However, the netplay server on "fobby.net" is not guaranteed to be up. :p
PCE: Added the ability to load a custom colormap(palette) by setting "pce.colormap" to the path of the colormap file. The colormap consists of either 512 or 1024 RGB triplets, 8-bits per color component, in the order R,G,B,R,G,B,R,G,B,... .It is recommended that the colormap provide all 1024 entries(the first 512 entries are for normal mode, the second 512 entries are for grayscale/strip-colorburst mode). If it doesn't, Mednafen will calculate the grayscale colors using a formula similar to that used with the real VCE, but with more precision. The colormap may be disabled by setting the "pce.colormap" setting to an empty string, or 0. Command-line examples:
mednafen -pce.colormap /path/to/blueblue.cmap /yarr/pirate/booty.pce [Enable]
mednafen -pce.colormap 0 /some/where/over/the/rainbow/islands.cue [Disable]
PCE: Added a hack to fix games that try to write to VRAM while VRAM DMA is in progress(fixes graphical glitches in "Crest of Wolf", maybe others too?).
This could potentially cause regressions, so please post any on the forum.
PCE: Having "pce.forcesgx" set to 1 with non-SuperGrafx games will no longer cause problems with display timing(and positioning). However, this doesn't fix the underlying issue, and any demos that set the horizontal and vertical timing registers differently on each VDC won't operate as they would on a real
SuperGrafx. (This could affect commercial SuperGrafx games, but AFAIK they keep the VDC timings the same).
NOTE: Setting "pce.forcesgx" to 1 is still not recommended, the preferred way of forcing a game/demo to enable SuperGrafx emulation is by giving it a file extension of "sgx".
PCE: Arcade Card RAM is now initialized to 0 on allocation(it was erroneously being left uninitialized before).
PCE: Added Arcade Card RAM to the memory editor in the debugger.
PCE: Fixed the BRAM initialization(it was wrong, and generated from when Mednafen erroneously emulated 8KiB of BRAM).
Fixes lockups in "Sorcerian".
Note that if you have any existing save states or battery-backed RAM files for "Sorcerian" in "sav" or "mcs" under
Mednafen's base directory from when you attempted to run "Sorcerian", you will need to delete them for this fix to have any effect.
PCE: Reduced the mirroring address space range of the Arcade Card register mapping in HuC6280 banks 0x40-0x43.
It was mirrored throughout 0x40-0x4F, now it's only mirrored at 0x40-0x47. It may not be mirrored at all with a real Arcade Card, tests need to be performed!
Fixes a crashing bug in "Linda Cubed" early into gameplay.
WonderSwan: Fixed a bug that made it impossible to push a direction on one D-pad while the opposing direction was being pressed on the other D-pad.
- SMS: Fixed the input and reset emulation when the territory was set to "domestic"(Japan) and FM emulation was enabled; the emulated system was erroneously being treated as a Game Gear in a few places when those conditions were met.
- GB: Fixed initialization of "HRAM" on virtual power toggle/reset.
- GB: Fixed a bug(still many left) in the external RAM handling code, fixing an emulator crash with "Wizards & Warriors - Chapter X".