Meka 2019-12-13
We have never tagged builds on github since Meka went into it's long 0.80 journey.. let's do this now..
What has changed since Meka 0.72:
Emulation (Main)
- Z80: Fixed emulation of R register (fixes 'Bubble Bobble', 'Hong Kil Dong' among others) [Calindro]
- Z80: Fixed CPDR running fully and ignoring interrupts. [Calindro]
- Z80: Fixed HALT timing. [Calindro]
- VDP: Setting address via palette write preserve upper address bits. Fixes tests #4 and #15 of FluBBA's VDP Tester. [Omar]
- VDP: Writing to palette sets the read buffer. Fixes test #10 of FluBBA's VDP Tester. [Omar]
Emulation (Audio)
- PSG: Added support for Game Gear stereo emulation! [Maxim]
- PSG: Emulate the PSG volumes "ideally" rather than matching some real systems' suboptimal output. [Maxim]
- Emu2413: Fixed commands 0x26-0x28 from turning off the drums. [ValleyBell]
- Rewrote sound engine and fixed audio issues that many users had. Still issues and PAL mode are broken... The sound is also now functional under Linux and MacOS. [Omar]
Emulation (Memory System, Mappers, Peripherals)
- Added support for variant of MSX-based Korean 8KB mapper used by 'Nemesis'. [Omar]
- Added support for '4 PAK All Action' mapper. [Omar]
- Added support for 'Janggun-ui Adeul' mapper. [Omar]
- Added support for Taiwanese DahJee/Jumbo SG-1000 II RAM extension adapter. [Omar]
- Added support for Sega Graphic Tablet v2.0 prototype hardware. [Maxim,Omar]
- Added support for Korean Hi-Com 3-in-1 and 8-in-1 mapper. [Omar]
- Added support for SC-3000 Survivors Multicart mapper. [Omar,Honestbob]
- Fixed 32K "No Mapper" mapper from forwarding 3-D Glasses writes. Fixes '3D Gunner'. [Omar]
- SMS/GG ROM images smaller than 48KB default to using no mapper. [Omar]
- Hardware reset leaves RAM cleared with $F0 patterns on Japanese SMS. This allow 'Ali Baba' and 'Block Hole' to run properly. Better clearing patterns could be implemented for other systems/countries after we've done more research. [Omar]
- Added support for mirrored VDP ports in $80..$BF range, as required by some Korean games such as 'Pooyan', 'Sky Jaguar' or 'E.I.'. [Omar]
- Light Phaser: Adding per-game hacky light phaser function to reduce drift between perceived cursor and what the game will end up using, particularly useful for 'Missile Defense 3-D' and '3D Gunner'. [Omar]
Misc
- Changed default key mapping for Player 1 buttons to use Z/X. [Omar]
- Setup panel allows to select display driver and resolution. [Omar]
Debugger
- Added support for setting breakpoint from ROM addresses (perform reverse mapping to validate address). [Omar]
- Referring to a symbol using with the : prefix (in the form ":xxxx") returns the ROM address instead of the CPU address. [Omar]
- Added
STEPOUT
command ("Continue to nextRET*
instruction at same stack-frame level."). [Omar] - Added
STACK
command ("Dump stack", with dual 8/16 bits display and with symbol resolving). [Omar] - Added
VARS
command ("Variables") to display content pointed by symbols in RAM. [Omar] - Added
TRACE
command to trace past execution. [Omar] - Improved the range of disassembly before PC cursor when running loops. [Omar]
- Fixed
CLOCK
command display for period longer than 10 minutes. [Maxim] - Added support for parsing the bank in NO&GMB/WLA symbol format. Symbols are turned into ROM addresses. [Omar]
- Added support for parsing SJASM symbol format. [Omar]
- Added support for parsing TASM symbol format. [Omar]
- Added a "Reload Symbols" menu option (useful when manually crafting symbols while reverse engineering). [Omar]
- Added shortcuts button in interface for "Stop/Continue", "Step", "StepOver", "StepOut", "Stack". [Omar]
- Disassembler: uses recorded Z80 execution history to allow semi-freely scrolling up and down in disassembly. [Omar]
- Disassembler: display symbols given their full ROM bank mapping (if bank information is provided by symbols file). [Omar]
- Disassembler: display symbols in 'RST xx' instructions. [Omar]
- Disassembler: opcodes shown in lower-case, increased spacing for readability. [Omar]
- Disassembler: display symbols+offset on JP/JR/CALL/RET/DJNZ instructions. [Omar]
- Disassembler: display symbols on IX/IY indexed instructions given the current value of IX/IY. [Omar]
- Disassembler: fixed issues with prefixed instructions. [Omar]
- Improved disassembler view centering, increased the track-back buffer, fixed issues with prefixed instructions. [Omar]
- Better support for 24-bits constants (for
PRINT
, etc.). [Omar] - Debugger is always available at runtime. Obsoleted /DEBUG command-line parameter. [Omar]
- Debugger window can be resized. [Omar]
Tools
- CheatFinder: added a new cheat finder application. [Omar]
- Can search for 1-bit, 8-bit, 16-bit, 24-bit values.
- Can search in RAM,ROM,VRAM,VREG,PRAM,SRAM,Z80 spaces for maximum flexibility,
although for actual cheat-finding purpose RAM is likely to be more searched for. - Reduce the match set by using ==,!=,<,>,<=,>= operators, compare with a constant
or the old value stored in each match memory location. - Highlight matches in the memory editor for easier visibility.
- Undo button.
- TilemapViewer: support for legacy graphic mode 2 used by SG-1000 games. [Omar]
- TilemapViewer: support for 256x256 tilemap used in PAL/SECAM wide screen mode. [Omar]
- TileViewer: support for showing full 16 KB range of tiles in legacy graphic modes. [Omar]
- MemoryEditor: fixed editing of 93c46 EEPROM memory. [Omar]
- MemoryEditor: fixed display of address when number of columns is not 16. [Omar]
- Wav Logging: recording in Stereo. [Maxim]
Translations
- Added Polish translation. [thr]
- Updated Dutch translation. [Mark van Tilburg]
Ports
- MacOSX: Preliminary MacOSX port. MEKA NEEDS A MAC MAINTENER!
GUI
- Now possible to resize the game window and some of the tools. [Omar]
- Now possible to change the font of the tools in the .CFG file. [Omar]
- Made "Ocean" the default theme and increased default GUI resolution. [Omar]
- Made "SMS Power! theme more readable. [Omar]
- TextInput: support for text selection, hold SHIFT+Left/Right keys to select text. [Omar]
- TextInput: support for CTRL+Left/Right to jump to previous/next word. [Omar]
- TextInput: support for clipboard (CTRL+X,CTRL+C,CTRL+V) shortcuts, tied to OS clipboard. [Omar]
- Depth order of windows is preserved accross sessions. [Omar]
- Increased mouse horizontal range when using scrollbars. [Omar]
- Added 'game_window_scale' directive on configuration file to resize game window. [Omar]
- Discontinued ALT+P (=F12) and CTRL+X (=F10) shortcuts. [Omar]
- Added ALT+V shortcut to start/stop VGM logging. [Omar]
- Menu entries display their shortcuts. Tidied up some menu entries. [Omar]
- Pressing DEL key in a text input box delete the character ahead of cursor. [Omar]
- FileBrowser: search for known extension when opening ZIP file (instead of picking first). [Maxim]
- FileBrowser: holding CTRL key while using the mouse wheel fasten scrolling. [Omar]
- FileBrowser: returning to parent directory position cursor on last child. [Omar]
- FileBrowser: BackSpace key is shortcut to return to parent directory. [Omar]
- FileBrowser: display JP flag when a game is JP/KR or JP/TW in the database. [Omar]
- FileBrowser: alphabetical shortcuts ignore disk drivers under Windows. [Omar]
- 3-D Glasses mode doesn't halve framerate of the interface anymore. [Omar]
Sources/Development
- Now build with a C++ compiler, fixed all incompatible C constructs + lots of cleanup. Codebase can now freely take advantage of all C++ compiler features. [Omar]
- Updated from Allegro 4 (software rendering based) to Allegro 5.2.40 (with OpenGL/DirectX backends). This required a lot of changes and rewrite in the codebase. It probably added new bugs, and performances seems to vary depending on computer settings and video drivers. [Omar, Maxim] Please do report if you have any issue/slowdown so we can fix them!
- Added a batch script 'tools/dist_bin_win32.bat' to create binary Win32 package. [Omar]
- Removed #ifdef-out code that was used by the MS-DOS version. [Omar]
- Removed code for the old OPL3 based YM2413 emulator. [Omar]
- Removed easter egg code for emulating the NES. [Omar]
- Removed easter egg mini-games and various other obsolete features. [Omar]
- Removed mekaw.txt and mekanix.txt documentation files (obsolete). [Omar]
- (Win32) Updated project to using Visual Studio 2017. [Maxim]
- (Win32) Grabbing dependencies via nuget. [Maxim]
- (Win32) Using precompiled header for faster compilation (MSVC). [Omar]
- Configuration file is created early on startup if missing. [Omar]
Database
Added and modified entries in the checksum and compatibility lists. [Omar]
Some particular renaming includes:
SMS - c4bb1676 - E-SWAT [A] --> E-SWAT [v0]
SMS - c10fce39 - E-SWAT [B] --> E-SWAT [v1]
SMS - d1a7b1aa - Olympic Gold (KR, BR) --> Olympic Gold [v0]
SMS - 6a5a1e39 - Olympic Gold --> Olympic Gold [v1]
GG - a6bf865e - Beavis and Butt-Head (MTV's) (EU) --> Beavis and Butt-Head (MTV's) (US, EU)
GG - 3858f14f - Beavis and Butt-Head (MTV's) (US) --> Beavis and Butt-Head (MTV's) [Proto]
GG - f3ca6676 - Columns (JP) --> Columns [v0]
GG - 83fa26d9 - Columns --> Columns [v2]
GG - a8ef36a7 - Junction --> Junction (JP)
GG - 23f9150a - Kawasaki Superbike Challenge --> Kawasaki Superbikes (EU) (now dumped US version)
GG - a45fffb7 - Riddick Bowe Boxing --> Riddick Bowe Boxing (JP)
GG - de25e2d8 - Sports Illustrated - Championship F..--> Sports Illustrated - Championship Football & Baseball [BAD] (was bad dump)
GG - 5b5de94d - Sports Trivia - Championship Edition --> Sports Trivia - Championship Edition [Proto] (from old Image dump stash)
GG - e678f264 - Yogi Bear in Yogi Bears Goldrush.. --> Yogi Bear in Yogi Bear's Goldrush [Proto]
GG - f397f041 - Zoop (US) --> Zoop [Proto] (US)
SG1 - 26f947d1 - Champion Boxing [cart] --> Champion Boxing [v0]
SG1 - f8b2ac1d - Champion Boxing [card] --> Champion Boxing [v1]
SG1 - 868419b5 - Champion Golf [cart] --> Champion Golf [v0]
SG1 - 5a904122 - Champion Golf [card] --> Champion Golf [v1]
SG1 - 5eb48a20 - Congo Bongo [v1] --> Congo Bongo [v0] (made a mistake originally ordering the versions. see thread on SMS Power! forum)
SG1 - 5a24c7cf - Congo Bongo [v0] --> Congo Bongo [v1]
SG1 - f7eb94c5 - Congo Bongo [v0] (TW) --> Congo Bongo [v1] (TW)
OMV - 90160849 - 007 James Bond --> 007 James Bond [v2.7] (version v2.6 found)
OMV - 76d6c64d - 007 James Bond (TW) --> 007 James Bond [v2.7] (TW)
OMV - d5fdb4a3 - Space Armor [v0] --> Space Armor [v2.0] [v1] (earlier build found replacing [v0], v2.0 is found on title screen but doesn't differenciate both v20 builds)
OMV - ac4f0a5c - Space Armor [v1] --> Space Armor [v2.0] [v2]
SC3 - 22f4f92a - Nihonshi Nenpyou (JP) --> Nihonshi Nenpyou [BAD] (JP) (was bad dump, correct dump confirmed multiple times)