Full Code of ocornut/meka for AI

master 4455e1683fbf cached
352 files
3.2 MB
839.9k tokens
1399 symbols
1 requests
Download .txt
Showing preview only (3,370K chars total). Download the full file or copy to clipboard to get everything.
Repository: ocornut/meka
Branch: master
Commit: 4455e1683fbf
Files: 352
Total size: 3.2 MB

Directory structure:
gitextract_alfk4aa8/

├── .editorconfig
├── .gitignore
├── README.md
├── appveyor.yml
└── meka/
    ├── Data/
    │   ├── cursor_lightphaser.tga
    │   ├── cursor_main.tga
    │   ├── cursor_sportspad.tga
    │   ├── cursor_tvoekaki.tga
    │   ├── cursor_wait.tga
    │   ├── flag_au.tga
    │   ├── flag_br.tga
    │   ├── flag_ca.tga
    │   ├── flag_ch.tga
    │   ├── flag_de.tga
    │   ├── flag_eu.tga
    │   ├── flag_fr.tga
    │   ├── flag_hk.tga
    │   ├── flag_it.tga
    │   ├── flag_jp.tga
    │   ├── flag_kr.tga
    │   ├── flag_nz.tga
    │   ├── flag_pt.tga
    │   ├── flag_sp.tga
    │   ├── flag_sw.tga
    │   ├── flag_tw.tga
    │   ├── flag_uk.tga
    │   ├── flag_unknown.tga
    │   ├── flag_us.tga
    │   ├── font_0.tga
    │   ├── font_1.tga
    │   ├── font_2.tga
    │   ├── gfx_dragon.tga
    │   ├── gfx_glasses.tga
    │   ├── gfx_graphicboardv2.tga
    │   ├── gfx_heart1.tga
    │   ├── gfx_heart2.tga
    │   ├── gfx_inputs.tga
    │   ├── gfx_joypad.tga
    │   ├── gfx_keyboard.tga
    │   ├── gfx_lightphaser.tga
    │   ├── gfx_paddlecontrol.tga
    │   ├── gfx_sportspad.tga
    │   ├── gfx_superheropad.tga
    │   ├── gfx_tvoekaki.tga
    │   ├── icon_bad.tga
    │   ├── icon_bios.tga
    │   ├── icon_hack.tga
    │   ├── icon_homebrew.tga
    │   ├── icon_proto.tga
    │   ├── icon_trans_jp.tga
    │   ├── icon_trans_jp_us.tga
    │   ├── machine_coleco.tga
    │   ├── machine_sms.tga
    │   ├── machine_sms_cartridge.tga
    │   ├── machine_sms_light.tga
    │   ├── rom_coleco.rom
    │   ├── rom_sf7000.rom
    │   ├── rom_sms.rom
    │   └── rom_smsj.rom
    ├── TODO.txt
    ├── Themes/
    │   └── README.txt
    ├── changes.txt
    ├── compat.txt
    ├── debugger.txt
    ├── history.txt
    ├── meka.blt
    ├── meka.inp
    ├── meka.msg
    ├── meka.nam
    ├── meka.pat
    ├── meka.thm
    ├── meka.txt
    ├── multi.txt
    ├── setup.bat
    ├── sources.txt
    ├── srcs/
    │   ├── Makefile
    │   ├── allegro4to5.cpp
    │   ├── allegro4to5.h
    │   ├── app_about.cpp
    │   ├── app_about.h
    │   ├── app_cheatfinder.cpp
    │   ├── app_cheatfinder.h
    │   ├── app_filebrowser.cpp
    │   ├── app_filebrowser.h
    │   ├── app_game.cpp
    │   ├── app_game.h
    │   ├── app_mapview.cpp
    │   ├── app_mapview.h
    │   ├── app_memview.cpp
    │   ├── app_memview.h
    │   ├── app_options.cpp
    │   ├── app_options.h
    │   ├── app_palview.cpp
    │   ├── app_palview.h
    │   ├── app_techinfo.cpp
    │   ├── app_techinfo.h
    │   ├── app_textview.cpp
    │   ├── app_textview.h
    │   ├── app_tileview.cpp
    │   ├── app_tileview.h
    │   ├── areplay.cpp
    │   ├── areplay.h
    │   ├── beam.cpp
    │   ├── beam.h
    │   ├── bios.cpp
    │   ├── bios.h
    │   ├── blit.cpp
    │   ├── blit.h
    │   ├── blit_c.cpp
    │   ├── blit_c.h
    │   ├── blitintf.cpp
    │   ├── blitintf.h
    │   ├── bmemory.cpp
    │   ├── bmemory.h
    │   ├── build.cpp
    │   ├── build.h
    │   ├── capture.cpp
    │   ├── capture.h
    │   ├── checksum.cpp
    │   ├── checksum.h
    │   ├── coleco.cpp
    │   ├── coleco.h
    │   ├── commport.cpp
    │   ├── commport.h
    │   ├── config.cpp
    │   ├── config.h
    │   ├── country.cpp
    │   ├── country.h
    │   ├── cpu.cpp
    │   ├── cpu.h
    │   ├── data.cpp
    │   ├── data.h
    │   ├── datadump.cpp
    │   ├── datadump.h
    │   ├── datasrc/
    │   │   ├── README.txt
    │   │   ├── fonts/
    │   │   │   ├── README.txt
    │   │   │   ├── mekafont-0-modified.tga
    │   │   │   ├── mekafont-0.tga
    │   │   │   ├── mekafont-1 (xen6).tga
    │   │   │   ├── mekafont-2.tga
    │   │   │   └── mekafont-maiandra-11.pcx
    │   │   ├── keyboard/
    │   │   │   ├── README.txt
    │   │   │   └── c1.pal
    │   │   ├── machines/
    │   │   │   ├── coleco-04.tga
    │   │   │   └── sms-07.tga
    │   │   ├── meka-gfx-all-v12.tga
    │   │   └── wb3.ans
    │   ├── db.cpp
    │   ├── db.h
    │   ├── debugger.cpp
    │   ├── debugger.h
    │   ├── desktop.cpp
    │   ├── desktop.h
    │   ├── drivers.cpp
    │   ├── drivers.h
    │   ├── eagle.asm
    │   ├── eagle.h
    │   ├── eeprom.cpp
    │   ├── eeprom.h
    │   ├── effects.cpp
    │   ├── effects.h
    │   ├── errors.cpp
    │   ├── errors.h
    │   ├── fdc765.cpp
    │   ├── fdc765.h
    │   ├── file.cpp
    │   ├── file.h
    │   ├── fonts.cpp
    │   ├── fonts.h
    │   ├── fskipper.cpp
    │   ├── fskipper.h
    │   ├── g_action.cpp
    │   ├── g_action.h
    │   ├── g_box.cpp
    │   ├── g_box.h
    │   ├── g_init.cpp
    │   ├── g_init.h
    │   ├── g_menu.cpp
    │   ├── g_menu.h
    │   ├── g_menu_i.cpp
    │   ├── g_menu_i.h
    │   ├── g_menu_t.cpp
    │   ├── g_menu_t.h
    │   ├── g_mouse.cpp
    │   ├── g_mouse.h
    │   ├── g_tools.cpp
    │   ├── g_tools.h
    │   ├── g_update.cpp
    │   ├── g_update.h
    │   ├── g_widget.cpp
    │   ├── g_widget.h
    │   ├── glasses.cpp
    │   ├── glasses.h
    │   ├── gui.cpp
    │   ├── gui.h
    │   ├── hq2x.cpp
    │   ├── hq2x.h
    │   ├── hq2x16.asm
    │   ├── hq2x32.asm
    │   ├── inputs.cpp
    │   ├── inputs.h
    │   ├── inputs_c.cpp
    │   ├── inputs_c.h
    │   ├── inputs_f.cpp
    │   ├── inputs_f.h
    │   ├── inputs_i.cpp
    │   ├── inputs_i.h
    │   ├── inputs_t.cpp
    │   ├── inputs_t.h
    │   ├── inputs_u.cpp
    │   ├── inputs_u.h
    │   ├── ioports.cpp
    │   ├── ioports.h
    │   ├── keyinfo.cpp
    │   ├── keyinfo.h
    │   ├── libmisc.cpp
    │   ├── libmisc.h
    │   ├── libparse.cpp
    │   ├── libparse.h
    │   ├── lightgun.cpp
    │   ├── lightgun.h
    │   ├── machine.cpp
    │   ├── machine.h
    │   ├── mainloop.cpp
    │   ├── mainloop.h
    │   ├── mappers.cpp
    │   ├── mappers.h
    │   ├── meka.cpp
    │   ├── meka.h
    │   ├── message.cpp
    │   ├── message.h
    │   ├── misc.cpp
    │   ├── misc.h
    │   ├── palette.cpp
    │   ├── palette.h
    │   ├── patch.cpp
    │   ├── patch.h
    │   ├── periph.cpp
    │   ├── periph.h
    │   ├── platform/
    │   │   └── macosx/
    │   │       ├── osxhelpers.h
    │   │       └── osxhelpers.mm
    │   ├── projects/
    │   │   ├── msvc/
    │   │   │   ├── Meka.opt
    │   │   │   ├── Meka.plg
    │   │   │   ├── Meka.rc
    │   │   │   ├── Meka.sln
    │   │   │   ├── Meka.vcxproj
    │   │   │   ├── Meka.vcxproj.filters
    │   │   │   ├── meka.RES
    │   │   │   ├── meka.manifest
    │   │   │   ├── packages.config
    │   │   │   └── resource.h
    │   │   └── xcode/
    │   │       └── meka/
    │   │           └── meka.xcodeproj/
    │   │               ├── project.pbxproj
    │   │               └── project.xcworkspace/
    │   │                   └── contents.xcworkspacedata
    │   ├── rapidfir.cpp
    │   ├── rapidfir.h
    │   ├── saves.cpp
    │   ├── saves.h
    │   ├── sdsc.cpp
    │   ├── sdsc.h
    │   ├── setup.cpp
    │   ├── setup.h
    │   ├── sf7000.cpp
    │   ├── sf7000.h
    │   ├── sg1ksc3k.cpp
    │   ├── sg1ksc3k.h
    │   ├── shared.cpp
    │   ├── shared.h
    │   ├── sk1100.cpp
    │   ├── sk1100.h
    │   ├── skin.cpp
    │   ├── skin.h
    │   ├── skin_bg.cpp
    │   ├── skin_bg.h
    │   ├── skin_fx.cpp
    │   ├── skin_fx.h
    │   ├── smsid/
    │   │   ├── packages.config
    │   │   ├── smsid.cpp
    │   │   ├── smsid.vcxproj
    │   │   ├── smsid.vcxproj.filters
    │   │   └── smsid_stubs.cpp
    │   ├── sound/
    │   │   ├── emu2413/
    │   │   │   ├── 2413tone.h
    │   │   │   ├── emu2413.cpp
    │   │   │   ├── emu2413.h
    │   │   │   ├── emutypes.h
    │   │   │   ├── mekaintf.cpp
    │   │   │   ├── mekaintf.h
    │   │   │   └── sample.cpp
    │   │   ├── fmeditor.cpp
    │   │   ├── fmeditor.h
    │   │   ├── fmunit.cpp
    │   │   ├── fmunit.h
    │   │   ├── psg.cpp
    │   │   ├── psg.h
    │   │   ├── s_misc.cpp
    │   │   ├── s_misc.h
    │   │   ├── sound.cpp
    │   │   ├── sound.h
    │   │   ├── sound_logging.cpp
    │   │   ├── sound_logging.h
    │   │   ├── vgm.cpp
    │   │   ├── vgm.h
    │   │   ├── wav.cpp
    │   │   └── wav.h
    │   ├── sportpad.cpp
    │   ├── sportpad.h
    │   ├── system.h
    │   ├── textbox.cpp
    │   ├── textbox.h
    │   ├── tools.cpp
    │   ├── tools.h
    │   ├── tvoekaki.cpp
    │   ├── tvoekaki.h
    │   ├── tvtype.cpp
    │   ├── tvtype.h
    │   ├── unzip.cpp
    │   ├── unzip.h
    │   ├── vdp.cpp
    │   ├── vdp.h
    │   ├── video.cpp
    │   ├── video.h
    │   ├── video_c.cpp
    │   ├── video_c.h
    │   ├── video_m2.cpp
    │   ├── video_m2.h
    │   ├── video_m5.cpp
    │   ├── video_m5.h
    │   ├── video_sp.cpp
    │   ├── video_t.cpp
    │   ├── vlfn.cpp
    │   ├── vlfn.h
    │   ├── vmachine.cpp
    │   ├── vmachine.h
    │   └── z80marat/
    │       ├── Codes.h
    │       ├── CodesCB.h
    │       ├── CodesED.h
    │       ├── CodesXCB.h
    │       ├── CodesXX.h
    │       ├── Debug.cpp
    │       ├── Tables.h
    │       ├── UNDOC.TXT
    │       ├── Z80.cpp
    │       ├── Z80.h
    │       ├── Z80Call.cpp
    │       ├── Z80DebugHelpers.cpp
    │       ├── Z80DebugHelpers.h
    │       ├── Z80OpcodeEnums.h
    │       ├── dasm.cpp
    │       └── todo
    ├── tech.txt
    └── tools/
        ├── dist_bin_osx.sh
        ├── dist_bin_win32.bat
        └── dist_osx/
            └── Meka.app_template/
                └── Contents/
                    └── Info.plist

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
# editorconfig.org

# top-most EditorConfig file
root = true

# Default settings:
# Use 4 spaces as indentation
[*]
indent_style = space
indent_size = 4

[Makefile]
indent_style = tab
indent_size = 4


================================================
FILE: .gitignore
================================================
# User data
meka/Debug
meka/Music
meka/Saves
meka/Screenshots

# Builds
meka/Dist

# Developer data
meka/objs
meka/meka
meka/meka.cfg
meka/meka.dsk
meka/meka.fdb
meka/meka
meka/mekaw.cfg
meka/mekaw.exe
meka/mekaw.ilk
meka/smsid.exe
meka/smsid.ilk
meka/srcs/obj
meka/srcs/projects/msvc/Meka.ncb
meka/srcs/projects/msvc/.vs
meka/srcs/projects/msvc/packages/
meka/libs/allegro
meka/libs/allegro_deps
allegro.log
imgui.ini
*.opensdf
*.sdf
*.suo
*.ipch
.vs/
*.vc.db
*.user
.*.swp
*~
.*~


================================================
FILE: README.md
================================================
MEKA
====

- Homepage: http://www.smspower.org/meka
- Forum: http://www.smspower.org/forums/f7-MEKA

Latest Beta Windows binaries:
- https://github.com/ocornut/meka/releases
- Also may want to follow this thread: http://www.smspower.org/forums/13019

MEKA is a multi-machine emulator. The following machines are supported by MEKA:

- Sega Game 1000 (SG-1000)
- Sega Computer 3000 (SC-3000)
- Sega Super Control Station (SF-7000)
- Sega Mark III (+ FM Unit)
- Sega Master System (SMS)
- Sega Game Gear (GG)
- ColecoVision (COLECO)
- Othello Multivision (OMV)

Along with a wide range of peripherals and exotic games support. 

MEKA should compile for MS-Windows, GNU/Linux and OSX (older versions support MS-DOS).

MEKA was started in 1998 and first released on April 3rd 1999. It was my first major C project, so the codebase is old, ugly and messy! It is still being updated sometimes.

In spite of its old age and very clunky technology, MEKA is among the most exhaustive Sega 8-bit emulator in term of coverage of obscure games, peripherals. And also provide competent debugging and reverse engineering tools. It is still maintained for those purpose but doesn't has much use for the average player. 

Credits
-------
(old pre-github credits from meka.txt)
 
```
Omar Cornut (Bock): Main development, coordination
Marat Fayzullin (RST38H): Zilog Z80 CPU emulation core. Implemented with modifications in MEKA.
Mitsutaka Okazaki: Software Yamaha 2413 emulator (EMU2413).
Maxim: Software PSG emulator.
Hiromitsu Shioya (Hiro-shi): Original sound engine (now obsolete).
Ulrich Cordes: FDC765 emulator for SF-7000. Implemented with modifications by Marc Le Douarain.
Valerie Tching (Kittie): Initial version of the Memory Editor.
Johan Euphrosine (Proppy): GNU/Linux+OSX tweaks.
DJRobX: Blitters and video improvements, HQ2X interface.
Maxim Stephin (MaxSt): HQ2X graphics filter.
Dirk Stevens: Eagle graphics filter.
```

Clone
-----

```
git clone --recursive https://github.com/ocornut/meka.git meka
```

Build
-----

- Windows: Using Visual Studio 2022 (free community edition is ok), open `meka/srcs/projects/msvc/Meka.sln` and build. The project is setup to grab dependencies (Allegro, Nasm) using Nuget.
- Linux: `cd meka/srcs ; make`
- OSX: `cd meka/srcs ; make` or open `meka/srcs/projects/xcode` with xcode (may be not up to date)

This project is looking for Linux and OSX maintainers.

Gallery
-------

![Debugger Screenshot](http://www.smspower.org/forums/files/meka_080_wip_debugger_823.png)

![Debugger Screenshot](http://www.smspower.org/meka/gallery/meka072-wip-sagaia.png)


================================================
FILE: appveyor.yml
================================================
version: 0.8.{build}
image: Visual Studio 2022
configuration: Release
before_build:
- cmd: nuget restore meka/srcs/projects/msvc/meka.sln
build:
  project: meka/srcs/projects/msvc/meka.sln
  verbosity: minimal
after_build:
- cmd: pushd meka\tools
- cmd: echo | dist_bin_win32.bat
artifacts:
- path: 'meka/Dist/*.zip'

================================================
FILE: meka/TODO.txt
================================================
feature request: add game name to the front of the window title text because the video capture uses that for the capture filename

dasm 81e1 in wb3 is broken

If you are going to work on it, maybe you can take the opportunity to also add full support for graphics modes 1 & 2 in the Tiles Viewer and Tilemap Viewer?
Right now the Tiles Viewer only shows up to 512 tiles but graphics 2 supports up to 768. Also Tiles Viewer doesn't seem to use the color table (even though the game screen view seems to use it properly)
Memory Leak

Border Color emulation

Debugger: STEP OVER broken on line with breakpoint
MemoryViewew: input register/expr in ADDR field

<48 KB rom should heuristically detect possible use of sega mapper by counting of LD (FFFx),A and discarding those who have also have load in E000.FFF0 range.

Trackback: optimistically assume that disassembled lines (after >PC) can be included in trackback
Trackback: replace by ROM sized bitfield?

Easy save slot select in menu?

- it crashes when I lock the workstation (WinXP)
- single key shortcuts (with F6 and F7 keys for example) for run over (continue to next) and run into (enter) calls so that I can debug with two fingers on the keyboard and two eyes on the screen :)

I just noticed this thread and after fixing this, it appeared that the Korean version of "Circus Charlie" also needs 2KB of RAM at $c000-$ffff


breakpoint crashes

fm registrers viewer
http://www.smspower.org/forums/viewtopic.php?p=76979#76979


Menu note:
- CTRL+F12 in SK-1100 mode
- FPS counter toggle
- F1,F2,F3,F4

--

Hey there,

I was so happy to see my favourite SMS emulator was having another update! I downloaded the most recent beta in this thread, and discovered that it doesn't like being installed over 0.73, throwing up sound buffer errors. Doing a clean install removes this.

I've not had time to do much further testing, however one small UI issue that's always been there, and I'd like to see fixed if possible please, is the inability to set controllers outside of the order that Windows sees them in.

To explain: You can't change 3/6 Joypad 1 to Player 2, nor can you click it's controls and input any other controller except the one listed first by Windows. In my case, I have currently an MS Sidewinder Pro Flightstick and a Logic3 Arcade Stick both in USB ports, and Joypad 1 will only take input from the Sidewinder. 4/6 Joypad 2 takes the Arcade stick input, but not the Flightstick in turn.

Suggested Solution: Drop down box to map specific controller to Player X, or allowing Player 1 to be swapped with Player 2 with a click on that line in the box, thus swapping what controller it maps too.

--

My build is the 2012/12/31.

markvt: The 'delete' key does not work in the cheat finder for me, only the 'backspace' key does allow to remove a value in the search box.

Is there any emulator/setting that handles the Sports Pad input in a way that makes the games playable? Meka allows to use the mouse for it, but it always stops where the mouse pointer would reach the border of the screen. I've tried some other emulators, but none of them seemed to support it at all...

[B] Debugger: Variables window with live filter.
[B] Debugger: Preview memory regions on hovering register/instruction.

Add a super-fast mode (faster than 1/9 for CLOCK-ing things like zexall)

Debugger seems generally weird at 1/9 frameskip, stepping instructions when not expected?)
> As for the 1/9 bug: I think it is to do with the keyboard repeat code. Entering "j 0" gets me to 0 + however many instructions the debugger thinks I have held down Enter for. In frameskip mode I guess it is interpreting repeats after a very short pause. It ought to be realtime-based instead of emulated-frame-based?


E-SWAT http://smspower.org/forums/viewtopic.php?t=8069

Mapper_Get_RAM_Infos: Support for multiple RAM regions (eg: Taiwanese 8 KB RAM adapter mapper)

Debugger: option to auto-start on ROM load (one can always do a RESET)
Debugger: Add "Did you mean $XX" when parsing register name that matches two digit hex number (eg: DE)

SF-7000 emulation: write always access to RAM (even when ROM is mapped) - via honestbob

Z80 PC history command (great to figure out caller)
Z80 branch history command

  callee address
  loop 1
     loop 2
       ..
     loop 3
       ..
  ret


Meka 0.80 check list
[A]- fix sound: latency, 50 hz, other modes?
- obsolete/hide blitter interface
- debug version leaves allegro.log is current directory
- start window is in background when running from explorer
- solve vsync and refresh rate issues, at least be able to enable vsync?
- have a pass at checking all features
//- tilemap viewer: mode 2: print more infos. add more addr settings.
- new feature: sprite viewer?
- new feature: audio channel disable? (psg & fm)
- reorganize inputs configuration panel?
- pro action replay
- end-user timing (message time, double click) shouldn't be measured in emulated frames
- incorrect rom on command-line leaves a zombie thread? (sometimes?)
//- gui: show shortcuts
- GUI HOVERING SCROLL BAR BROKEN

In Hang-On (Safari Hunt) -> glitch even in PAL mode
I've noticed that part of the track shows in the background where it shouldn't (shown in screen shot with a highlighted red square box), also in regards to the track itself when it turns left or right, the track kind of looks like it judders.

Other than that not noticed any other problems and nice work on the sound :), works fine with my Creative X-Fi Xtreme Gamer, also forgot to mention I'm using the latest 0.80 build.
- bug reports:
  - "When pausing with the F12 button, the screen becomes out of align by showing a bottom border and a right border. "
  - "Sometimes the mouse freezes for a couple of seconds. (I got this 3 times in about a 20 minute play). "
  - "I plugged in a USB-PSX converter before starting again and it did not crash then but any input instantly went Stick 0 Axis 0 -"

----------

Super Boy II (KR).sms is 48 KB with duplicated 16 KB

5 GG dumps
http://smspower.org/forums/viewtopic.php?p=64723#64723

I would like Meka v0.74 to contain a Extra Debug mode called ''Sprite/OAM Viewer'' as seen by some modern emulators such as
BGB/No$GMB/NO$C64/Etc.

Not only that, SG1000/SC3000/Ect. and compatible Sprite and Name Table viewer. Can be used as a reference to
gain more programmers for older SEGA systems

But the only SEGA console emulators with Sprite viewer capability is a few 16bit Genesis/Mega Drive, Which I could not
find a modern one yet besides NES/GB(Color) stuff.

So I think it will be more helpful to debuggers for doing Sprites, if there is one for MEKA, It will become superior to
the other Z80+VDP emulators. Beating MSX(2/+) Somehow

- Speed above 1/9 (for zexall)
Debugger: Count point. or full memmap count points.

(Actually, some way to enter a super-turbo-fast-forward mode (more than 1/9 frameskip) might be nice, especially if it can still hit a breakpoint directly. Debugger seems generally weird at 1/9 frameskip, stepping instructions when not expected?)

Fix default .sc mapper (eigo sakubun)
Namely if ROM is bigger than 32 KB don't stupidely ignore the rest of the data!!

Debugger: Many interesting mails from Maxim!
Debugger: Add support for F register in SET command (or individual flag, ZF, CF, etc.)

Command line file not found = Win32 console crash

  /------------------\
/-|  MEKA TODO LIST  |-------------------------------------------------\
| \------------------/                                                 |
| Todo:                                                                |
| - Clean this list, add a bug-priority system.                        |
|   Maybe switch to an internet bug tracking software?                 |
|----------------------------------------------------------------------|
| Note:                                                                |
| - MEKA IS FULL OF INCORRECT EMULATION BEHAVIOURS.                    |
|   MEKA IS NOT THE BEST REFERENCE OF HOW THINGS ARE OR WORKS.         |
|   CONSULT TECHNICAL DOCUMENTATION INSTEAD (eg: SMS Power! dev wiki). |
|   IF YOU HAVE ANY DOUBT, FEEL FREE TO ASK.                           |
|----------------------------------------------------------------------|
| Packager Note: Always make plenty of verifications before packaging. |
| - Check MEKA.INP                                                     |
| - Check MEKA.MSG content, WIP, merge updates                         |
| - Package a default generated .CFG file                              |
|----------------------------------------------------------------------|
| Main axises of work:                                                 |
| - fix sound engine (timing problem, ask me, I can explain why)       |
| - improved video (blitters, stretching, sync, triple buffering)      |
| - inputs system improvement (analog sources, map all features, etc)  |
| - full featured debugger/hacking tools                               |
| - fill new database entries (redump/sort)                            |
| - tape emulation                                                     |
| - better SF-7000 disk support (write & save)                         |
| - new savestate format + better manager (icons, etc)                 |
\----------------------------------------------------------------------/

-----------------------------------------------------------------------------
THE YET UNSORTED MESS (this is my notepad basically)
-----------------------------------------------------------------------------

Define a string in the config file, eg:
 debug_breakpoint_label_prefix = "break_"
Then, when loading .sym files, automatically add breakpoints on
matching labels. This saves me typing "b <label>", and is designed for
"temporary" breakpoints on lines that normally would not otherwise
have a label.

http://www.smspower.org/forums/viewtopic.php?t=9478
Now I have a question. In some Master System games (made at 1993 to be exact) such as
Sonic Chaos, Deep Duck Trouble have problems. Sometimes they are fine, other times the
games crash after they get to the title card(Level Name) as these problems have been
in previous releases.

Proppy session debugger notes:
- 'breakpoint' window list
  - show list
  - with enable checkbox
  - edit/add fields
- breakpoint write: only when values changing, !=
- datadump sprite output is weird
Debugger: bind RELOAD rom on a key, or add 'reload' command

<cgfm2> can I increase the SMS display window size in GUI mode?

Jacko: Also I was playing Shanghai before with the FM Chip enabled and the music slowed down gradually
(like a record slowly stopping) and then it slowly speed up again, MEKA has only done it once
so it is hard to tell if it was my PC doing something or it was MEKA.

- Data
  - Update/remove Themes section from web page.
  - Tweak country flags for proper color now that there's no more palette.

Game Recording:
- Topic
  http://bisqwit.iki.fi/nesvideos/forum/viewtopic.php?t=3726
- VBM Format
  http://bisqwit.iki.fi/nesvideos/VBM.html
- Desired Features Wiki
  http://bisqwit.iki.fi/nesvideos/DesiredFeatures.html

- Add PAL/SECAM/NTSC (Auto) mode to be more clear
  See http://www.smspower.org/forums/viewtopic.php?t=6656

"if you have the option fullscreen on load enabled it only fullscreens
 if you load a rom manualy form the filebrowser but if you startup meka
 from the command line with a rom name it loads the rom but doesnt go
 full screen."
 --> add a separate option for both cases.

-----------------------------------------------------------------------------
PRIORITY / FOR UPCOMING NEXT VERSIONS
-----------------------------------------------------------------------------
Alright, those things right here may not be always super important, it's
just that I noted them at the top of the file, thinking it would be worth
doing them now and some are quick work.
-----------------------------------------------------------------------------

- Check galaxy force (supposed bug, couldn't reproduce)
  http://www.smspower.org/forum/messages/19568.html

- Add auto SK-1100 enable.

-----------------------------------------------------------------------------

-----------------------------
 WINDOWS PORT PRIORITY/NOTES
-----------------------------
 - THE AUTO FRAME SKIPPER SUCKS
 - SOUND SUCKS
 - Windowed mode should fit the actual game screen size instead of having
   a screen-resolution based size (320x240)
   - This is a problem with how the blitter system works now.

-----------------------------
 CODE
-----------------------------
 - Write a MEKA coding style documentation.

-----------------------------
 WEBSITE
-----------------------------
 - MEKA 0.59 is missing from all archives?

-----------------------------
 VGM
-----------------------------
 - Built-in VGM player (implement Maxim VGM stub)
 - GD3:
   - Japanese GD3 (for systems at least)
   - Option to create VGM without GD3.
   - Store user name somewhere, now that MEKA.KEY file is obsolete.
 - Check http://isweb38.infoseek.co.jp/art/rophon/data/download.htm
 - Tool:
   - Automatic trimming.
   - PSG access addresses logger/hacker (see notes under DEBUGGER).
 - Add feature to only start logging "when sound start" (for WAV log)

-----------------------------
 ROM INFORMATION
-----------------------------
 - Add an applet showing ROM+DB information (checksum, country, version, etc.)

-----------------------------
 NAMES / DATABASE
-----------------------------
 - Add Pirate flag ?
 - Better syntax error verbosing (currently there's none).
 - Generally:
   - Check Maxim's old & new e-mails.
   - Check Kevin Chase e-mails.
   - Fixes missing "the".

-----------------------------
 PERIPHERALS/INPUTS EMULATION
-----------------------------
 - Emulate port 3F properly.
   Currently, its implementation is a joke.
   This however introduce some "interface"/"user-side" problems:
   - In-game changing of country may be fatal to non-joypad games.
     Warn for them? What else could be done?
 - Test Handle Controller / Bike Controller for SG-1000/SC-3000.
   How does they actually works? Why do they mention only a few games
   on the box, are they actually any different or it is just because
   one is left/right and other is up/down only?
 - SDI might supports Sports Pad, figure out hardware detection if so
 - Proper/better Light Phaser emulation.
   - Again, implementation is a joke. / but, it works.
   - Check Charles' SmsGun test.

-----------------------------
 PERIPHERALS/INPUTS HOST
-----------------------------
 - Support analog axis, damnit!
 - Add Message when changing Player 2 input (?)
 - Configuration of ALL inputs keys (functions keys, etc...)
 - Support mouse wheel for emulation.
 - Paddle Controller emulation:
   - Allows to setup sensitivity
   - It is possible to do something better ?
 - Support for MD direct pro driver (see unfunk's e-mail)
 - Inputs Recording
 - Interface mouse driver (who cares anymore).
 - Keyboard not qwerty
 - Player 2 default inputs on right side of the keyboard ?
 - Add both buttons & combo inputs
 - Be able to configure Rapid Fire speed.
 - Cursor is repositionned when enabling light phaser within GUI
 - Support for more than one mouse (for light phaser game)

-----------------------------
 SEGA KEYBOARD (SK-1100)
-----------------------------
 - Automatically enable (based on DB directive).
   - Keep a flag to know if was automatically or user activated.
     If automatically, then on ROM change it then can be disabled.
 - Clickable picture on the GUI (with sticky keys).
 - When SK-1100 is enabled, Monaco GP difficulty selection runs slower.
   It is normal behavior?
 - Show sticky keys with PC keyboard leds.
 - SK-1100 is difficult to type with, and Mekaw's keyboard is strange:
     "]" is "["  "[" is "@"  "\" is "]"
     "yen",":","^"and"@" don't type.
   Maybe more. Please check it.
   I think this is solved.

-----------------------------
 BLITTERS
-----------------------------
 - Fallback to safe mode
 - Completely revamp the blitter systems.
   - Be able to handle blitter per system (SMS, GG..) and mode.
   - Add x3, x4 blitters, separate X and Y (be able to do a 2x3 blit, etc..).
     All combinations should be working.
   - Add stretching blitters (especially for windows version)
   - Lots of info in mind or on paper. Need to sort out, and maybe write
     a short specification document.
 - Selection of GUI video mode in interaction configuration window.
 - Avoid to quit when video mode is invalid
   - Handle video mode priority list, etc..
 - For Game Gear:
    H*2/Y*3 in 320*480, H*4/Y*3 in 640x480..
 - Filters:
   - Implement 2xSai filter.
   - Implement Scale2x filter (scale2x.sourceforge.net)
   - HQ filters
     - 32 bits version
     - HQ2X, HQ4X
 - Resize window
   - Easy to do for GUI.
   - Support for fullscreen blitter (hmm..?)
 - [Win32] Support OS resolution change.

-----------------------------
 VIDEO
-----------------------------
 - 3D glasses:
   - red/green mode (blending)
   - http://www.edimensional.com/products/edglasses.htm

-----------------------------
 VDP/VIDEO EMULATION
-----------------------------
 - SMS VDP Tester http://smspower.org/forums/viewtopic.php?t=10695
- 224/240 lines mode should only be activated if both bits are set (see Charles's doc)
 - VDP Model differences
   - Add VDP Model selection somewhere in GUI (useful for programmers).
   - VDP Model 315-5124: Doubled sprites bug (see Earthworm Jim)
   - Write to CRAM on legacy VDP (which?) should not update palette (only CRAM).
 - Fix interrupt emulation and VDP control over the Z80 IRQ Line.
 - Other VDP Model differences (see Interactive Sprite Test, bug on SMS 1)
 - Palette
   - Support TMS9918 palette as on Japanese SMS (and Mark III)
     http://www.purose.net/befis/halloffame/msx_col/
   - Support TMS9918 palette from http://junior.apk.net/~drushel/pub/coleco/twwmca/wk961118.html
 - TMS9918
   - Render on a line basis to fix "Zoom Effect #1" demo (grr..)
 - Border emulation (this is a big miss)
 - Handle VRAM Accesses while refresh is ongoing (for programmers)
   See http://www.smspower.org/forums/viewtopic.php?t=7849
 - Emulate sprite overflow (9th sprite) (VDP status bit 6 set). Should be fairly easy.

-----------------------------
 TECHINFO APPLET
-----------------------------
 - Standardize names, registers names, etc.
 - Redo from stratch? Separate applets for different system components?

-----------------------------
 DEBUGGER
-----------------------------
 - Bugs:
   - inst_after > pc-temp appearing in several cases (eg: Super Basketball demo).
   - Savestate/reset/bios seems to mess with breakpoints?
     Check coherency and switching between mainloops (emulation standard/debug, no emulation)
   - Backspace in memory editor widget reset machine
 - Debugger:
   - Console log: add full print history + a scrollbar.
   - Button to enable/disable exclusive focus.
   - Auto reload ROM option
     - Win32: possible to setup a notification
 - Disassembly
   - Option to display cycle count next to each instruction.
 - Breakpoint:
   - Add breakpoint from memory editor and/or disassembly window.
     - Simple version: click on disassembly window for breakpoint.
   - Conditionnal breakpoints:
     - Simple masking feature
     - Full expression evaluation/test?
     - At nop nop break (macro or helper).
     - Break at register write ?
   - Z80 read/execute are not perfectly differenciated (opcode 1st byte is X, then it is R)
   - Hooks:
     - VDP register/status
     - PSG/VRAM/dedicated break (per channel/address/tile/whatever).
     - Generally, much more possible things to add.
 - Datadump could be redirected to debugger console.
 - Small Bug (may not considered as one bug actually): Debugger ON, play, pause, debugger OFF -> machine gets unpaused.
 - Scroll thru disassembly
 - Completion
   - Better contextual completion, supporting per-command kind of parameter
     (eg: break cl[tab] -> clear)
     - Make the command line parser take additionnal flags, and be able to execute
       commands as well as just returning a list of words depending on the parsing
       context.
 - Profiling feature
   - Display line/cycles better
   - User settable timer, global cycle counter.
 - Print
   - Find a solution to the problem of not being able to print result that are not 16-bits
 - Symbols
   - Automatically select name/addr symbols find in "SYM" command
   - Keep track of source symbol, by keeping t_debugger_value all along the chain.
   - Figure out a way to keep symbol references and have them updated on ROM reload.
 - SET command
   - Access to non Z80 registers.
   - Indexing.
     eg: "set RAM[0] = 0"
 - MEMEDIT command
   - Specify address
   - Specify bus (standardize)
 - SEARCH command
   - Bytes/ascii search
   - Access to all kind of memory, once we have the proper abstract (see above)
 - VAR (?) command
    " As promised, here's my idea.
      v address var1 [var2 [var3...]]
      When execution reaches "address", the contents of var1, var2 etc are reported in the
      message window and execution is not stopped. var1 etc can be a register or an address
      in the Z80 memory map. In other words, it allows one to spy on parameters being passed
      to functions, as well as intermediate variable values inside functions, without having
      to set breakpoints and watch those values manually using memory dumps or the register
      display.
      Letter v is for "variable", since I can't think of a better letter to use. "
    - "wv" (watch variables) ?
 - Tilemap viewer:
   - Support vertical lock (gauntlet, golvellius...).
   - Proper support for extended modes requires resizing window (tilemap becomes 256*256).
 - SOURCE command:
   Load commands from a text file. Useful for storing per-project breakpoints.
 - Expression evaluator:
   - Unary operators -, !, ~
   - Proper operator priority. Currently two level: +/- gets low priority and
     all other higher priority. Requires building a proper evaluation tree.
   - Access to data table RAM[0] (this gets more complex...)
 - Memory Editor:
   - Memory editor page focus is lost on ROM change.
   - Button to enable/disable exclusive focus.
   - 2/3 byte display/editing
   - Highlight edited digits, add backspace support
   - Dump button (calling datadump)
   - Edit ASCII
   - Lock a writing value
   - Show modified/written values.
     How do I do that? Modified since when? Could be useful when stepping in code.
     - Use debugger hooks + highlight feature to show read/written values.
 - Memory find:
   - MEMFIND command.
 - Access to machine data in a standardized way (code/library for programmer,
   standardized syntax for end-user functionnalities)
   - 8/16-bits differenciation:
     - WLA DX uses nnnn.b and nnnn.w for ambigous opcodes on other CPUs
       Use a similar system to remove ambiguity!
   - Extract generic code to access memory blocks from memory editor, stick
     them in a generic interface in t_machine. Usable by memory editor, data
     dumper, debugger M command.
   - eg: registers: HL,AF,A, etc. memory: mem[HL]
   - User shortcuts. HL would be in fact cpu.hl ?
   - Z80 access:
    - Register edit
    - CALL command
      - Execute a CALL on the Z80, allow easy quick hack
      - Or more generally, allow inline instruction execution
   - Abstract Marat's core to be able to switch later.
   - Access to the previous state (automatic save state on each user step)
     - Require changing savestate code to work on a memory buffer.
   - User constructed GUI panels showing you info you want.
     Could display registers, any part of memory, tiles, etc.
     Allowing to create panels for custom debugging.
 - Input locker
   - Set input bits manually using check boxes, being able to set inputs
     at any point.
 - Scripting
    - A breakpoint can trigger a call.
    - Support for debug configuration file/script per ROM/project.
 - Call Stack
   - Keep a call stack updated (using a modified Z80 core?)
   - Log wether each memory location was written as 8 or 16 bits?
 - Tools:
   - Sprite viewer
     - Select individual sprites, shows infos
   - Sprite ripper
     " One of the first modified versions of Gens included a sprite ripper. It would
       examine the coordinates of the sprites, and when sprites lined up exactly it
       would export them to a separate image. So long as a regular grid of 8x8 hardw
       are sprites is used to build up arbitrarily-sized character sprites (the
       majority of games), this should work well. "
   - Cycle counter.
   - SDSC Debug Console.
   - Warn incorrect (non standard) VRAM/port accesses.
   - Warn interrupt if VDP latch is set (98% of the time I guess it
     can lead to a bug).
   - Warn on return of interrupts if Z80 registers are differents from entering (except shadow)
   - PSG access addresses logger/hacker
     Show checkbox for all location accessing to PSG, allows to disable some.
     Could be super useful for VGM hacking/logging.

-----------------------------
 PATCH
-----------------------------
 - Be able to reload MEKA.PAT in runtime (helpful for hackers), as a quick
   solution to the lack of features.
 - Add info about what's being patched (especially when using * as CRC).
 - Add IPS support.
 - Add ASM opcodes supports (-> embed an Assembler).
 - Start thinking about this feature in the bigger picture as a part of
   the debug/hack/cheat stuff. Avoid implementing 2 or 3 times to same
   stuff in different components.

-----------------------------
 CHEATING
-----------------------------
 - Cheat entry database (equivalent to live .pat)
 - Action Replay SMS/GG
 - Game Genie GG
 - Persistant cheat database?
 - Cheat masters:
   - MugUK
   - Sweater Fish Deluxe
   - rouken (rouken AT bol.com.br)

-----------------------------
 KEYBOARD MAPPING
-----------------------------
 - Generally, hotkeys with ALT/CTRL are not a good idea
   (what does the above statement suggest? I don't remember now.. argh)

-----------------------------
 FILE LOADER / BROWSER
-----------------------------
 - Multi roms in single ZIP file support
   - At least, pick the biggest one with correct extension (the 'rom')
   - Warn user ?
 - Sort should give low priority to .ext -> "test.sms" before "test (jp).sms"
 - Still a problem with FB directory name load? (Don't think so.)
 - Key should work based on focus, to function even with SK-1100 enabled
 - Can "read names" made faster?
 - Different color/icon per system
 - Loaded ROM history
 - Global computer file database (to run a game from its ID/CRC/whatever)
   Then you can even imagine SMS Power! producing URL/links/datafile read
   by MEKA to run a given game from its museum page entry.
 - Mouse wheel handling should not set selection, just scroll.
 - Directory change notification:
   - [WIN] There's something, I know.
   - [LINUX] See SIGIO, linux/documentations/dnotify.txt

-----------------------------
 GUI
-----------------------------
 - Change resolution / video mode: need to interface in menus.
 - Fade: only 32-bits mode. supported
 - Font: Move the standalone tilde lower if possible (where does it apply? forgot)
 - Background filling is not correct is GUI resolution ratio is not 4:3
 - Switch fullscreen font to contains bold black+white
   (currently multiple draw pass are done, which is hell slow)
 - Leaks:
   - gui_box_delete() doesn't delete widgets
 - Documentation viewer
   - Add generic text viewer applet (that user can use to load his stuff).
   - Fix bouncing with pageup/pagedown
 - Move windows bug (press mouse 1, keep 2 pressed, release 1, etc..)
 - Online contextual help (using text viewer applet maybe?)
   - Eg: You would press F1 anywhere and it pop some info about the current
     applet or widget focus.
 - Rewrite popup menu code
    - Menu moves instead of going off-screen (see non-english languages!)
      - Would be useful to use within windows (as a combo box)
    - Support for more than MAX_ENTRYS entrys
    - Support keyboard
    - Show Hotkeys
    - Multi part menus for like the big theme menu
 - Message box: load success/infos message order

-----------------------------
 GUI MENUS
-----------------------------
 - Consistant hotkey behavior.
 - Menu cleanup:
  - Add volume control.
  - Remove "screens"?
  - Messages:
    'Tiles Viewer' -> 'Tile Viewer'
    'Country' -> 'Region'
    'TV Type' -> 'TV Mode'
    'Fullscreen mode -> Game mode
    ?

-----------------------------
 TILE VIEWER
-----------------------------
 - Show everything in modes 0->3.
 - Mini bg/fg palette selectors in modes 0->3.
 - Zoom tile.

-----------------------------
 SC-3000
-----------------------------
 - Printer emulation
 - Tape drive emulation
   - Find out if encoding used in Music/Lode Runner/C_So! is standard
   - Common, do it. The world (and A.Wheeler) deserve it.

-----------------------------
 SF-7000
-----------------------------
 - Verify sprite collision on Gold Miner & Froggy ??
   - This crazy code seems to requires line-per-line collision detection on a TMS9918 mode!
 - Floppy disk
   - Correct way of handling disk swapping
   - Writeable disks (how good/bad does it works?), -> and, to file (need a policy or different extensions)
   - Write protection
   - Be able to create empty disk image
   - Disk viewer utility
 - Centronics port emulation
 - RS-232 port emulation
 - Sort out new SF-7000 disks
 - Find docs about the FDC

-----------------------------
 COLECOVISION
-----------------------------
 - May want to drop ColecoVision? Why adding more weight...
 - ROMs:
   - New Roms from MyColeco (gamepack + space invaders)
   - Sort out homebrewn coleco Roms
   - Just drop everything and import a GoodCOL set (or similar).
 - Check out Colecovision NMI fix from MESS
 - Check FLICKER for Colecovision roms: Antartic Adventure, Sewer Sam, Squish'em Sam
 - Problem with Dragon Fire savestate.
 - The Christmas demo is buggy because MEKA remove what it think is a footer (the ROM
   is not a 4k multiple and it's exactly +256 bytes, so my code think it is a footer)
 - Games:
    - Super Cobra display is off
    - Christmas needs to run in PAL/SECAM mode, without footer removing.
    - Donkey Kong: freeze after level 1
    - Fix Dragon Fire (see Dennis Stith, try Koleko 1.31)
    - Buck Rogers -> 5617
    - Fathom -> 7313
    - Space Panic -> sometimes freeze
 - Fix player 2 control
 - Add weird controllers emulation (make "Turbo" (coleco) works for Opi :)
 - Check cabellero bug reports

-----------------------------
 GAME GEAR
-----------------------------
 - Option to show entire effective screen
 - Option to stretch SMS size back to 160x144 screen. Figure out the pattern.
 - LCD persistance simulation
   (Super Monaco GP 2, Space Harrier, Ninja Gaiden)
   > Ninja Gaiden:
   > In 3rd act there are some flickering (windows on skyscraper).
   > In 2nd act, a strange "flying" & flickering sprite may appear (gunman).
   > Will there be more...? ;)
 - Gear-to-gear emulation.

-----------------------------
 ARCADE
-----------------------------
 - Emulate SMS arcade board (Opa Opa, Tri Formation, Solomon no Kagi)
   - The ports are figured out.
   - Need to figure out the dipswitches.
   - Add a proper interface.
 - Emulate SG-1000 arcade board (Champion Boxing, Champion Pro Wrestling)
   - Require encryption emulation.
   - Separare OPCODE read and DATA read in Z80 emulator (for encryption).
     That's useful anyway for debugger trapping.
 - Interface coin insertion.

-----------------------------
 BIOS
-----------------------------
 - Use external BIOS files.
   - Load from a given directory.
   - Implement hack (disablable) to remove cart checks within BIOS.
     This is not "accurate" emulation but much better for users.
     As long as it is disablable.
 - Implement port 3E properly.
 - Support for the different slots. How does the user work with that?
   I certainly don't want to make it "MesaDX complicated" for a gamer.
   Automatically select cartridge slot (or cart is ROM < 32 kb), and
   maybe allow a manual setup.
 - How would old savestate works once this is properly emulated?
   - Can we assert that games keep value stored in C000?
     - Replace the value?
   - Should maintain legacy emulation?
\ - Check Super Racing interesting boot code (hmm? it is an obsolete thought?).
 - Sort BIOS dumps.
 - Allow to boot up other machines (Colecovision/GG) without ROM.
   - Need to be able to select machine.

-----------------------------
 HARDWARE IO
-----------------------------
 - Port 3E
   - I/O (especially YM2413 could help Maxim's SMS VGM player)
 - Port F2
   - Bit 0 disable PSG/FM mixing?
 - Read from 0x7E on SG-1000/SC-3000 return a value based on R register.
 - I/O map differs between SMS1/SMS2/etc.
   - Wonder Boy in Monster World relies on that to distinguish them!
 - Check GG pirate cards menu dumps and emulate mapper
 - Implement horizontal counter latch.

-----------------------------
 MAPPER
-----------------------------
 - Move default MAPPER in driver structure (code)
 - Mappers emulation based on mask is incorrect if ROM is not power of 2
   and attempt to map a non existing page in a range MEKA think is ok.
 - Emulate 3-in-1 mapper (Master Games 1, etc..).
 - Emulate 0xFFFC bits to shift starting pages by a certain amount.
 - Check out Earthworm Jim / Arena cartridges for an EPROM?
 - SG-1000 RAM is only 2 kbyte
 - Check out Monaco GP 40k having Safari Hunting included - pirate cartridge?
   - Was figured out elsewhere. See dev forum post.
 - Check Flash / Desert Speedtrap cartridge -> the chip is 8kb!
   - Data should not be saved. DB directive?

-----------------------------
 SMS TESTS
-----------------------------
 - Write a program that print out at which line/cycle NMI "trigger".
   Can the bug I have in Fantastic Dizzy be reproduced on a real SMS with
   some bad luck, that is what I want to know. (Otherwise, seems like a Z80 bug.)
 - Write a program to be able to find out at which cycle/h-pos the h-scroll
   is latched. // Didn't Charles figured that out now?
 - Write a program that print R - can its 'period' be simulated better?
   - This is nonsense. Just implement a proper Z80 emulator and it'll do it.
 - Write a program to find original Rapid Fire speed/period.
 - Write a SMS program to figure out exactly which pixel are shown on GG
   screen when is SMS mode (this has been discussed on SMS Power dev).

-----------------------------
 Z80 CPU
-----------------------------
 - Register R:
   - Investigate Rastan, register R (bit 7), use for bonus?
   - Differently emulated with different Z80 cores?
 - Implement a good Z80 emulator.
   - Common, do it.
 - Test with Zexall
   - http://www.mdfsnet.f9.co.uk/Software/Z80/Exerciser/
   - Proper SMS port. See forum.
 - Support Z80 overclocking -> increase iperiod for all lines, or only VBL
 - Try to implement Dayvee's Z80 emulator
 - Undocumented flags (ref: http://www.srcf.ucam.org/~pak21/cssfaq/tech_z80.html#UNDOC)
 - Proper iperiod pal/secam + CPU speed pal/secam!! (3.54689)
 - OUT (C), 0 variant
   http://www.smspower.org/forums/viewtopic.php?t=9412

-----------------------------
 SPEED
-----------------------------
 - Those should be calculated on frame rate:
   - Double-click speed
   - Message speed
   - Key repetition speed
 (currently using frame display counter, which is obviously bad)

-----------------------------
 MISC
-----------------------------
 - Detect empty overdump (00/FF).
   It used to be ok with MekaCRC but not with CRC32.
 - Detect empty half (eg: 256 kb game with another 256 kb full of FF).
   This is often the case on some ROM chip. This would help ROM dumpers.
 - Display AUTHOR field from database (and others?).
 - Support for other compression format:
   - GZ
   - RAR
 - /_SYS_INFOS doesn't show correct OS version since Allegro is not yet installed
 - Remove SPACE problem in MEKA.CFG (and other files, maybe)
   - Can use new tools used by MEKA.NAM parser and add quotes to the sentences
 - Frame-per-frame (ALT-F12) done correctly (this is coder luxury...)
 - Be able to change pcx/, saves/ directories, etc.. with templates
 - Implement quizz. :)
   - Hardcode mode: need to answer a question to play.
 - Check Richard Bush' ASM Stuff (ooooold)
 - Static cartridge loaded (keep track of loaded cart when quitting).
 - Auto pause (pause when click on menu, etc..)
 - Command line parameter to start in fullscreen.

-----------------------------
 NETWORK
-----------------------------
 - Standard 2 player gaae.
 - Gear-to-gear with 1 GG on each side.
 - Sharing games, multi-games, SMS party project.
   - Need to cleanup a lot of side-effects, globals, determinism issues.

-----------------------------
 SAVESTATES
-----------------------------
 - Savestates slots showing with filled/empty boxes.
 - Thumbnails?
 - Press Fx and select slot. Much easier. Reuse that for blitter!
   - Generally, allow some kind of GUI widgets in fullscreen mode.
 - Format: add MEKA version field (text?)
 - Separate savestates in directory per system.
 - Message save + snail game/BIOS
 - Importer:
   - Frozen format (http://www.smspower.org/forum/messages/18383.html)
   - BrSMS format ?
 - Savestates manager
   - Scan/move everything. Avoid the plagging "renaming" problem.
 - Design a whole new, documented, shared, chunked savestates file format
   - This is the way to go.

-----------------------------
 MESSAGES / LOCALIZATION
-----------------------------
 - Add code to verify sync/order of message definitions & tables.
 - Switching to full multi languages:
   1. Switch to using TTF font.
   2. Cleanup fontsize dependant things / GUI code
   3. Implement non european language support (Japanese!) and add proper fonts.

-----------------------------
 GAMES NOTES
 Some may be obsolete.
-----------------------------
 - Safari Hunting: original cartridge has $4000-$BFFF unconnected,
   (allowing to use this area as a pseudo-random number generator ?)
   Check out if the game use this area and how.
 - Excellent Dizzy: Go-Dizzy-Go! attract mode screws up in MEKA.
 - Out Run: PSG noise leftover in FM mode.
 - Daffy Duck in Hollywood menus (verify on a real PAL/SECAM system)
 - Sangokushi 3: try to finds why demonstration is not the same as on a real system (R?)
 - Championship Hockey: reset, glitches ? See on real system.
 - Fix formula 1 !! ? (any moer problem?)
 - 20-em-1 timing problem (currently patched)
 - F-16 Fighting Falcon: keyboard two players mode? See MK3 Page
 - Rise of the Robots - raster ok? This game is too ugly for my eyes
 - Shining Force 2 bug :( try to play the game from scratch again
 - Sonic Blast in European mode
 - Why does Psycho Fox run in Japanese when keyboard is enabled ?
   - Well, it's safe to say that my country/D? ports emulation is a joke.
 - Hang On / Safari Hunt (cartridge, NOT bios) raster glitches are
   not located at the same place between SMS and Meka (timing?).
 - Cosmic Spacehead: verify scroll glitch during demo when switching scenes

 - (
    "European Prince of Persia has occasional minor graphical glitches
     in 60Hz mode, but is still playable.
     Jungle Book has (from memory) more serious glitches in 60Hz mode."

     buggy Super Monaco Gp 1&2 are buggy when you turn right as far as you can
     go. some times nba jam will lock up and i dont think it is a jp game.
   )

-----------------------------
 SCREEN CAPTURE
-----------------------------
 - Advanced capture:
   - Set transparency png_set_tRNS().
   - Separate layers
 - Be able to map Screenshot to the pad, for opi and others.
 - Keep a way to use windows printscreen
 - Document PrintScreen weirdness in docs (NB-what weirdness?)
 - Add applet to configure everything (template/counter/automatic capture..)

-----------------------------
 CONFIGURATION FILE
-----------------------------
 - Document some things better:
   - Eg: "start_in_gui" is not mentionned anywhere!
 - Do a big cleaning/renaming/sorting of configuration variables.
   Some includes:
   - Current soundcard should be stored in meka.cfg as an ID string

-----------------------------
 NICE STUFF
-----------------------------
 - TV snow noise
 - Black & white TV mode
 - Screensaver
 - Blood layer have priorities over menus

-----------------------------
 DESKTOP
-----------------------------
 - Background filename should be case sensitive (especially for Mekanix)
 - Add ratio background stretch.
 - Unable to load pictures error only on start or theme switch (not when
   switching back to the GUI, everytime).

-----------------------------
 VIRTUAL MACHINE
-----------------------------
 - Clean up virtual machine handling.
 - Power light should be on on Sega Keyboard picture.
 - Find someone to draw nice looking systems.
 - Allows to show machine even with theme picture.

-----------------------------
 CONSOLE
-----------------------------
 - Error on first video init (init -> GUI|Fullscreen) should show in console.
   Currently, in WIN32, because Meka_State is not MEKA_STATE_INIT anymore,
   they show as a popup. The console was already killed anyway

-----------------------------
 ICONS
-----------------------------
 - Sort and add new icons to the executable.
   - All media icons from MEKA (SMS/GG/SG/SC games, etc)
   - Maxim's icon
   - Casiopea's icon
   - Golden Axe Warrior (amibe.ico in my e-mails)

-----------------------------
 SOURCES
-----------------------------
 - Sort machine_reset stuff, too many are done ?
 - Add pointer to reset for each drivers.
 - Improve the whole driver system.

-----------------------------
 SOUND
-----------------------------
 - Volume Control
 - Disabling sound:
   - Be able to disable sound within the program.
   - Support runtime /nosound switch (does not alter configuration).
   - With sound disabled, is emulation all the same ?
     What about PSG/FM registers, saved into a savestate ?
 - WAV logging does not saves FM.
   - Require mixing on our side, or retrieval of mixed buffer.
 PSG:
 - Different PSG feedback/noise for SG-1000/SC-3000/etc.. (SN76489AN variant)
 - Higher PSG Volume
 - Enhanced PSG via samples (using Dave's idea) / or generating sinuses / other ways.
 FM:
 - Static sound in FM. -> kind of crackle. See sound/y's hiss.wav.
 - Add YM-2413 channel muting - and others things.
 - Be able to disable YM2413HD from compilation
 - Add ROMEO card support (yeah).
 - Instrument editor is obsolete.
 - Maxim tells me:
   > 3. Also, I updated to EMU2413 v0.60 and noticed that it sounds very
   > different, in particular the Phantasy Star title screen music where
   > the drums sound badly "clipped" as if played at too high volume.
   > Maybe you can check it out (EMU2413 is inside the MSXPLUG archive on
   > the author's website) and compare to a real system? I'm sure you're
   > interested in having the latest version for Meka :) Otherwise I can
   > send some in_vgm.dlls with the 0.55 and 0.60 cores.
 - Support CPU speed change.
 Notes:
 - AUpdateAudio() in starting init: it is necessary ?

 - Some (old) unsorted feedback:

   - "I have detected a error in PSG sound emulation in the game Sonic the
      Hedgehog (Sonic 1). The "ring" sound in the scene is 'consecutive' in
      real Master System, but in the MEKA is not."
   - Little Mermaid -> missing notes (MIGHT)
   - Games that have fast music: (verify)
     - Cool Spot (title screen, two different tempos)
     - Out Run
     - Sonic 1
     - Sonic Chaos
     - Strider
     - World Grand Prix, Engine noise has extra pitch also
     (maybe the guy was just a PAL freak, but better check)

   - "> Also, in Dynamite Dux, a soft beep sound can be heared when the music
      > of the first stage begins.
      I think I hear what you mean. Disable channel 2 and the noise channel
      and you can hear it alone, before any proper notes come in. I also hear
      a lot of crackling because of the vibrato-type effect it uses by changing
      the volume really quickly. If you listen to channel 1 or 3 alone then you
      don't hear it, so it's a Meka problem."
      - see Maxim e-mail
      - This is just the standard effect of the main sound bug described above.

-----------------------------------------------------------------------------
 NAMING CONVENTION
-----------------------------------------------------------------------------
 - Export/Japan
 - Everything in MEKA.CFG
 - Everything in MEKA.MSG
 - ...

-----------------------------------------------------------------------------


================================================
FILE: meka/Themes/README.txt
================================================

 MEKA Themes Backgrounds
 http://www.smspower.org/meka/themes

 Credits for the images in this directory:
 Most are screenshots or composition from other sources.
 The credits thus only mention the submitter/composer of the image.
 Game, scene and characters pictured are properties of their owner.
 
 Don't hesitate to submit new Sega 8-bit related themes, or
 tweaked existing themes.

Default package:

 AlexKidd.png                   Myau of Algol
 NinjaGaiden.png                Kurt Roliz
 PhantasyStar.png               Myau of Algol
 PsychoFox.png                  Barry McLarnon
 WonderBoyIII.png               Andrea Ballandino



================================================
FILE: meka/changes.txt
================================================
-----------------------------------------------------------------------------
 MEKA - ChangeLog
-----------------------------------------------------------------------------
 Note: for a more developer/hacker centric ChangeLog, download
 source code and refer to HISTORY.TXT file.
-----------------------------------------------------------------------------

 MEKA 0.80 WIP
 -------------
  <see history.txt for developer facing changes>


 MEKA 0.74 WIP xxxxxxxx
 ----------------------
  - (Win32) Updated project file to Visual Studio 2008 format + compilation fixes.
  - (Win32) Updated Allegro library to 4.2.3 (using precompiled binary from 'allegro-msvc9-4.2.3').
  - (Win32) Updated LibPNG library to 1.2.8 (precompiled binary package included in repository).
  - (Win32) Including minimal DirectX 7.0 package (precompiled binary package 'dx70_min' included in repository)
     because newer DirectX SDK tends to cause problem with 4.2.x Allegro branches.
  - SC-3000:
    - Fixed the ':' (colon) key not working on Sega Keyboard emulation under certain host keyboard/OS configuration. [Omar]
  - GUI:
    - Added Taiwanese flag (for DB and File Browser). [Omar]
  - Added and modified entries in the checksum and compatibility lists. [Omar]
    Some particular renaming includes:
          SMS - 84665648 - Great Soccer (JP) [Hack]             --> Great Soccer (TW)
          SMS - 656d1a3e - Hokuto no Ken [BAD] (CH)             --> Hokuto no Ken (TW) [Hack] (the "bad" data is on the original cart, but this version has additional modifications)
          SMS - 69538469 - Monopoly [A]                         --> Monopoly (US)
          SMS - 026d94a4 - Monopoly [B]                         --> Monopoly (EU)
          SMS - 311d2863 - Prince of Persia [SMS-GG] [A]        --> Prince of Persia [SMS-GG] (US)
          SMS - 45f058d6 - Prince of Persia [SMS-GG] [B]        --> Prince of Persia [SMS-GG] (EU)
          SMS - 01686d67 - Suho Cheonsa (KR)                    --> Suho Jeonsa (KR)
          SG1 - 868419b5 - Champion Golf [A]                    --> Champion Golf [cart]
          SG1 - 5a904122 - Champion Golf [B]                    --> Champion Golf [card]
          SG1 - fdc095bc - Doki Doki Penguin Land (HK)          --> Doki Doki Penguin Land (TW)
          SG1 - 60f30138 - Dragon Wang [B]                      --> Dragon Wang [v0]
          SG1 - 7c7d4397 - Dragon Wang (TW)                     --> Dragon Wang [v0] [chinese logo] (TW) (because a second Taiwanese version exists)
          SG1 - 99c3de21 - Dragon Wang [A]                      --> Dragon Wang [v1]
          SG1 - bd24d27b - Flicky                               --> Flicky [v0]
          SG1 - 191ffe0a - GP World [A]                         --> GP World [v1]
          SG1 - 191ffe0a - GP World [B]                         --> GP World [v0]
          SG1 - 6d909857 - Mahjong                              --> Mahjong [small 1983]
          SG1 - 8572d73a - Monaco GP [24k]                      --> Monaco GP [24k] [v0] [40k map]
          SG1 - da2d57f3 - Monaco GP [32k]                      --> Monaco GP [32k] [v1] (provision for newly found [v2] build).
          SG1 - 37fca2eb - Pitfall II ~The Lost Caverns~ [A]    --> Pitfall II ~The Lost Caverns~ [v0] (dumps and versionning finally confirmed)
          SG1 - 3db74761 - Pitfall II ~The Lost Caverns~ [B]    --> Pitfall II ~The Lost Caverns~ [v1]
          SG1 - 160535c5 - Wonder Boy [A]                       --> Wonder Boy [v0]
          OMV - 90160849 - James Bond 007                       --> 007 James Bond
          GG  - f85a8ce8 - 5 in 1 Fun Pak                       --> 5 in One Fun Pak
          GG  - a6bf865e - Beavis and Butt-Head (MTV's)         --> Beavis and Butt-Head (MTV's)
          GG  - 3858f14f - Beavis and Butt-head (MTV's) (US)    --> Beavis and Butt-head (MTV's) (US)
          GG  - 03d28eab - Crayon Shin-chan - Taiketsu! Tankam..--> Crayon Shin-chan - Taiketsu! Kantamu Panic!! (JP) (embarassing typo)
          GG  - 7ec95282 - Madoh Monogatari A [...] Bake~shon   --> Madoh Monogatari A - Doki Doki Vacation (JP)
          GG  - 4e279baa - PGA TOUR Golf 2                      --> PGA TOUR Golf II
          GG  - 786dd67b - Skweek (JP)                          --> Skweek [BAD] (JP)
          GG  - 88618afa - Tails' Sky Patrol (JP)               --> Tails' Skypatrol (JP)
          GG  - e678f264 - Yogi Bear [Proto]                    --> Yogi Bear in Yogi Bears Goldrush [Proto]
    Other smaller changes not recorded, please refer to meka.nam SVN history for exact changes.


 MEKA 0.73
 ---------
  - Updated MEKA license, data are now licensed under the same term as sources.
    The license is now unrestrictive BSD-like. [Omar]
  - Removed "k" and associated donation rambling from the documentation.
    Donations are still welcome, at your own discretion.
  - Emulation:
    - Added support for "no bank switching" mapper. Used by Korean games such
      as "FA Tetris" and "Flash Point" which write to $fffe-$ffff range for
      its RAM usage but do not expect bank-switching. [Omar]
    - Added support for Korean 8KB banks mapper. Used by Korean games ported
      from MSX such as "Penguin Adventure", "Street Master" or "Won-Si-In". [Omar]
  - SC-3000:
    - Fixed the ;/+/RAD key not working on Sega Keyboard emulation under
      certain host keyboard/OS configuration. Thanks Jacko. [Omar]
    - Fixed crash in the X86 assembly implementation of the 32KB RAM mapper
      writer when the upper 16 bits were not cleared by the Z80 emulator. [Omar]
  - Debugger:
    - Added "SYM @addr" command to search for symbols given an address. [Omar]
    - Added "RMAP addr" command to reverse map of a Z80 address and display
      the source of data based on machine state (mapper registers, etc).
      eg:
        RMAP $8001      ; eg: print 'ROM $14001 (Page 5 +0001)'
        RMAP $E001      ; eg: print 'RAM $C001'
      The feature doesn't work 100% in all mappers & bus mirroring cases,
      but should be ok with the standard SMS/GG mapper. [Omar]
    - Duplicate commands are automatically removed from history. [Omar]
    - Increased default height of the debugger. [Omar]
    - Changed watch point per-frame flood limit from 100 to 50. Will expose in
      configuration file if requested. [Omar]
    - Fixed crash when loading symbols with debugger disabled. [Djbass,Omar]
    - Fixed labels showing one instruction early in "DASM" command. [Omar]
    - Added breakpoint '!' mark in disassembly window. [Omar]
  - GUI:
    - Fixed Light Phaser and Terebi Oekaki cursor shape when switching from
      32-bits GUI mode to 16-bits game only mode. [Omar]
    - File browser: fixed positionning of BAD and HACK icons, which aren't
      overlays anymore. [Omar]
    - Added Canadian flag (for DB and File Browser). [Omar]
    - Fixed crash when empty gradient range are specified in theme file. [Omar]
    - File browser: country flag now displayed even on BIOS, Prototypes
      or Homebrew images. [Omar]
    - Inputs configuration: right-click on input source selection goes
      backward, in addition to regular left-click to go forward. [Omar]
  - Localization:
    - Updated Dutch localization [Mark van Tilburg]
  - Miscellaenous:
    - Added "Capture" menu with screen capture menu access and options. [Maxim]
    - Added "Capture All" mode, capturing all emulation frames to disk. [Maxim]
    - Added "Include GUI" capture option. Disable to only capture game screen
      when MEKA GUI is enabled. [Maxim]
    - Renamed "Automatically crop and align screen captures" option to
      more explicit "Crop and align screen captures to 8x8 boundaries".
      Previous name was sounding too "cool" and was sometimes activated
      by innocent users who then got their capture all cropped. [Omar]
    - Added "screenshots_crop_scrolling_column" option in configuration
      file (default to enabled), to disable cropping the empty left-most
      column in horizontally scrolling games. [Omar]
  - Project:
    - (Win32) Fixed standard libraries used by debug builds (using unusual
      combination led to various problems). Fixed various link warnings.
      Fixed shared directories between DLL and No DLL builds. [Omar]
  - Added and modified entries in the checksum and compatibility lists. [Omar]
    Some particular renaming includes:
          SMS - d91b340d - Action Fighter (JP)                  --> Action Fighter [v1] (also released in Germany and Italia)
          SMS - 3658f3e0 - Action Fighter                       --> Action Fighetr [v2]
          SMS - f4b3a7bd - Ariel - The Little Mermaid (BR)      --> Ariel - The Little Mermaid (Disney's) (BR)
          SMS - b3768a7a - Bonkers Wax Up! (BR)                 --> Bonkers Wax Up! (Disney's) (BR)
          SMS - 1b10a951 - Bram Stoker's Dracula                --> Dracula (Bram Stoker's)
          SMS - c0e25d62 - California Games II                  --> California Games II [50 Hz]
          SMS - 46340c41 - Cheese Cat-astrophe                  --> Cheese Cat-Astrophe - Starring Speedy Gonzales
          SMS - 89b79e77 - Dodgeball King (KR)                  --> Dallyeora Pigu-Wang (KR)
          SMS - b8b141f9 - Fantasy Zone II                      --> Fantasy Zone II - The Tears of Opa-Opa
          SMS - c722fb42 - Fantasy Zone II (JP)                 --> Fantasy Zone II - Opa-Opa no Namida (JP)
          SMS - 45c50294 - Jogos de Verão II                    --> California Games II [50-60 Hz] (also found in Korea).
          SMS - 5b5f9106 - Nekyuu Kousien (JP)                  --> Nekkyuu Koushien (JP)
          SMS - 0e333b6e - Miracle Warriors - Seal of the Dar.. --> Miracle Warriors - Seal of The Dark Lord (casing on 'The')
          SMS - be57a9a5 - Pacmania                             --> Pac-Mania (the other way, sorry! It seems like the official name of the game)
          SMS - 294e0759 - Paperboy                             --> Paperboy [v0] (scoring bug)
          SMS - 327a0b4c - Paperboy (US)                        --> Paperboy [v1] (also found in Brasil)
          SMS - 97d03541 - Sangokushi 3 (KR)                    --> Samgukji III (KR), Japanese Name "Sangokushi III".
          SMS - e1fff1bb - Shinobi (JP)                         --> Shinobi [v0] (also found in Brasil in Game Box Serie Lutas compilation)
          SMS - 0c6fac4e - Shinobi                              --> Shinobi [v1]
          SMS - c93bd0e9 - Slap Shot [B]                        --> Slap Shot [v0]
          SMS - d33b296a - Slap Shot [A]                        --> Slap Shot [v1]
          SMS - 702c3e98 - Slap Shot (US)                       --> Slap Shot [v2] (US)
          SMS - e2fcb6f3 - Super Wonder Boy (JP)                --> Wonder Boy [v0] (also released in Italia)
          SMS - 93ca8152 - T2 - The Arcade Game                 --> T2: The Arcade Game
          SMS - 11ce074c - Taz in Escape From Mars              --> Taz in Escape from Mars
          SMS - ac56104f - Terminator 2 - Judgment Day          --> Terminator 2: Judgment Day
          SMS - bf7b7285 - Tom and Jerry - The Movie            --> Tom and Jerry: The Movie
          SMS - 0c2fc2de - Tom and Jerry - The Movie [Proto]    --> Tom and Jerry: The Movie [Proto]
          SMS - 20f40cae - Vampire                              --> Master of Darkness / Vampire [Proto]
          SMS - 73705c02 - Wonder Boy                           --> Wonder Boy [v1]
          GG  - f85a8ce8 - 5 in 1 Fun Pak                       --> 5-in-1 FunPak
          GG  - 3e549b7a - Aerial Assault                       --> Aerial Assault [v0]
          GG  - ffe4ed47 - Alien Syndrome                       --> Alien Syndrome (JP)
          GG  - 97e3a18c - Ariel - The Little Mermaid           --> Ariel - The Little Mermaid (Disney's)
          GG  - 8d8bfdc4 - Baku Baku Animal (US)                --> Baku Baku (US)
          GG  - 10ac9374 - Baku Baku Animal (EU)                --> Baku Baku (EU)
          GG  - a6bf865e - Beavis and Butt-head                 --> Beavis and Butt-head (MTV's)
          GG  - 325b1797 - Berlin no Kabe - The Berlin Wall (JP)--> Berlin no Kabe - The BerlinWall (JP) (clearly spelled without space)
          GG  - bfceba5f - Bonkers Wax Up!                      --> Bonkers Wax Up! (Disney's)
          GG  - 69ebe5fa - Bram Stoker's Dracula                --> Dracula (Bram Stoker's)
          GG  - 2c758fc8 - Cool Spot                            --> Cool Spot (US)
          GG  - 03d28eab - Crayon Shin Chan - Taiketsu! T.. (JP)--> Crayon Shin-chan - Taiketsu! Tankam Panic!!
          GG  - 4457e7c0 - Donald Duck no Yottsu no Himitsu (JP)--> Donald Duck no Yottsu no Hihou (JP)
          GG  - 19e1cf2b - Dragon Crystal - Tsurani no M.. (JP) --> Dragon Crystal - Tsurani no Meikyuu (JP)
          GG  - 152f0dcc - Drop Zone                            --> Dropzone (Archer MacLean's)
          GG  - 5d3f23a9 - Earthworm Jim                        --> Earthworm Jim (US)
          GG  - 2b60873e - Ecco the Dolphin                     --> Ecco the Dolphin [BAD]
          GG  - d0a93e00 - F1                                   --> Formula One / F1 (alternative names)
          GG  - d69097e8 - Fantasy Zone Gear                    --> Fantasy Zone / Fantasy Zone Gear - Opa Opa Jr. no Bouken
          GG  - 449787e2 - Fatal Fury Special                   --> Fatal Fury Special (US)
          GG  - e123d9b8 - Fray (JP)                            --> Fray ~Shugyou hen~ (JP)
          GG  - 751dad4c - From TV animation - Slam Dunk.. (JP) --> Slam Dunk - Shouri-e no Starting 5 (From TV animation) (JP)
          GG  - 695cc120 - GG Portrait - Pai Chan (JP)          --> GG Portrait - Pai Chen (JP)
          GG  - 4cf97801 - Godzilla - Kaiju Dai-Shingeki (JP)   --> Godzilla - Kaijuu Daishingeki (JP)
          GG  - a93e8b0f - Griffin                              --> Griffin (JP)
          GG  - 398f2358 - Kuni Chan's Game Paradise (JP)       --> Kuni Chan no Game Tengoku (JP)
          GG  - f3774c65 - Kuni Chan's Game Paradise 2 (JP)     --> Kuni Chan no Game Tengoku Part 2 (JP)
          GG  - 42389270 - Hyokkori Hyoutan Jima (JP)           --> Hyokkori Hyoutan Jima - Hyoutan Jima no Daikouka (JP)
          GG  - 9fb5c155 - James Pond II - Codename: Robocod    --> James Pond II - Codename: Robocod (US)
          GG  - 30c09f31 - Jungle Book, The (Walt Disney'..(US) --> Jungle Book, The (Walt Disney's) (US) (US version do not mention 'Classic'. Alternate name have only 'Disney's').
          GG  - 87b8b612 - McDonald's - Donald no Magical World --> Donald no Magical World (Ronald in the Magical World) (JP) (Japanese only release, Western name is unused)
          GG  - 75c71ebf - Madden NFL '95                       --> Madden NFL 95
          GG  - 75e273eb - Madden '96                           --> Madden 96 [BAD]
          GG  - 00c34d94 - Madoh Monogatari I - Mittsu no..(JP) --> Madoh Monogatari I - Mittsu no Madoukyuu (JP)
          GG  - 0a634d79 - Madoh Monogatari III - K.. [v0] (JP) --> Madoh Monogatari III - Kyuukyoku Joou-sama [v0] (JP)
          GG  - 568f4825 - Madoh Monogatari III - K.. [v1] (JP) --> Madoh Monogatari III - Kyuukyoku Joou-sama [v1] (JP)
          GG  - 7ec95282 - Madoh Monogatari A - Dokidoki.. (JP) --> Madoh Monogatari A - Doki Doki Bake~shon (JP)
          GG  - 8f82a6b9 - Magic Knight Ray Earth (JP)          --> Magic Knight Rayearth (JP)
          GG  - 1c2c2b04 - Magic Knight Ray Earth 2 ~mak.. (JP) --> Magic Knight Rayearth 2 ~making of magic knight~
          GG  - 6e1cc23c - Magical Taruruto-kun (JP)            --> Magical Taruruuto-kun (JP)
          GG  - 36ebcd6d - Majors Pro Baseball                  --> Majors Pro Baseball, The
          GG  - 2e4ec17b - Megami Tensei Gaiden Last Bible (JP) --> Megami Tensei Gaiden: Last Bible (JP)
          GG  - 4ec30806 - Megami Tensei Gaiden Last Bibl..(JP) --> Megami Tensei Gaiden: Last Bible Special (JP)
          GG  - 4d5d15fb - Moldorian (JP)                       --> Moldorian ~Hikari to Yami no Shisutaa~ (JP)
          GG  - dbff0461 - Mortal Kombat (JP)                   --> Mortal Kombat - Shinken Kourin Densetsu (JP)
          GG  - 54ab42a4 - Nazo Puyo Aruru no Ru (JP)           --> Nazo Puyo Aruru no Ruu (JP)
          GG  - 4c874466 - Nazo Puyo Aruru no Ru [Editor.. (JP) --> Nazo Puyo Aruru no Ruu [Editor Proto] (JP)
          GG  - 3679be80 - Neko Daisuki! (JP)                   --> Neko Dai Suki! (JP)
          GG  - c3056e15 - Ninku (JP)                           --> Ninkuu (JP)
          GG  - 06247dd2 - Ninku 2 ~Tenkuryu-e no Michi~ (JP)   --> Ninkuu 2 ~Tenkuuryuu-e no Michi~ (JP)
          GG  - 9140f239 - Ninku Gaiden - Hiroyuki Daika.. (JP) --> Ninkuu Gaiden - Hiroyuki Daikatsugeki
          GG  - 19030108 - NBA Action                           --> NBA Action - Starring David Robinson
          GG  - 4680c7aa - NHL All Stars                        --> NHL All-Star Hockey
          GG  - a2f9c7af - Olympic Gold [SMS-GG] [B]            --> Olympic Gold [v0] [SMS-GG]
          GG  - 1d93246e - Olympic Gold [SMS-GG] [A]            --> Olympic Gold [v1] [SMS-GG]
          GG  - d58cb27c - Out Run                              --> Out Run (JP)
          GG  - f037ec00 - Out Run Europa [SMS-GG]              --> Out Run Europa [SMS-GG] (US)
          GG  - a16c5e58 - Pac-Man                              --> Pac-Man (JP)
          GG  - b42d8430 - Pet Club Inu Daisuki! (JP)           --> Pet Club Inu Dai Suki! (JP) (coherent with Neko Dai Suki!)
          GG  - 3ef66810 - Popeye's Beach Volleyball (JP)       --> Popeye Beach Volley Ball (JP)
          GG  - d173a06f - Puzlow Kids / Puyo Puyo              --> Puyo Puyo (Puzle Kids) (JP) (Japanese only release, Western name is unused)
          GG  - 96045f76 - Road Rash                            --> Road Rash (US)
          GG  - 445d7cd2 - Royal Stone ~Hikarishi Toki n.. (JP) --> Royal Stone ~Hirakareshi Toki no Tobira~ (JP)
          GG  - fe7374d2 - Sailor Moon S (JP)                   --> Bishoujo Senshi Sailor Moon S (JP)
          GG  - 2ae8c75f - Shanghai II (JP)                     --> Shanghai II [v0] (JP)
          GG  - 9c5c7f53 - Shikinjou (JP)                       --> Shikinjo (JP) (official transcription)
          GG  - 0f3e3840 - Sokoban World (JP)                   --> Soukoban (JP)
          GG  - d23a2a93 - Sonic Triple Trouble                 --> Sonic The Hedgehog Triple Trouble
          GG  - 80156323 - Star Trek The Next Generation - Th.. --> Star Trek: The Next Generation - The Advanced Holodeck Tutorial
          GG  - 1ebfa5ca - Strider Returns                      --> Strider Returns (Journey from Darkness)
          GG  - 2ea26930 - Surf Ninjas                          --> Surf Ninjas [BAD] (confirmed correct dump)
          GG  - 9479c83a - T2 - The Arcade Game                 --> T2: The Arcade Game
          GG  - cf9c607c - Taisen Mahjong HaoPai (JP)           --> Taisen Mahjong Hao-Pai (JP)
          GG  - 20527530 - Taisen Mahjong HaoPai 2 (JP)         --> Taisen Mahjong Hao-Pai 2 (JP)
          GG  - dd1d2ebf - Tama & Friends - 3chome Koen.. (JP)  --> Tama & Friends - 3 Choume Kouen Tamalympic (JP)
          GG  - f1732ffe - TaleSpin                             --> TaleSpin (Disney's)
          GG  - eebad66b - Taz in Escape From Mars              --> Taz in Escape from Mars
          GG  - 1bd15773 - Terminator 2 - Judgment Day          --> Terminator 2: Judgment Day
          GG  - a1453efa - Tom and Jerry - The Movie (JP)       --> Tom and Jerry: The Movie
          GG  - 5cd33ff2 - Tom and Jerry - The Movie            --> Tom and Jerry: The Movie (US)
          GG  - 7ec64025 - Vampire: Master of Darkness          --> Vampire - Master of Darkness (US)
          GG  - 9977fcb3 - Wonder Boy                           --> Wonder Boy (JP)
          GG  - d9ce3f4c - Yaiba Adventures (JP)                --> Kenyuu Densetsu Yaiba (JP)
          GG  - 88ebbf9e - Yuu Yuu Hakusho (JP)                 --> Yu Yu Hakusho - Horobishi Mono no Gyakushuu (JP)
          GG  - 46ae9159 - Yuu Yuu Hakusho II (JP)              --> Yu Yu Hakusho II - Gekitou! Nanakyou no Tatakai (JP)
          SG  - 37fca2eb - Pitfall II [A]                       --> Pitfall II ~The Lost Caverns~ [A]
          SG  - 3db74761 - Pitfall II [B]                       --> Pitfall II ~The Lost Caverns~ [B]
          SG  - 5a917e06 - Shinnyushain Tooru Kun (Konami no)   --> Shinnyuushain Tooru-Kun (Konami no)
          OMV - 77db4704 - Q*Bert                               --> Q*bert


 MEKA 0.72
 ---------
  - Updated k.
  - Ports:
    - Preliminary MacOSX port. [Proppy]
      Compile and run under a x86-based MacOSX system. Missing sound (due
      to Seal) and debugger (unknown problem to resolve).
      Looking for someone who wish to improve and maintain this port.
  - Video/Blitters:
    - Upgraded everything to hi-color video modes and got rid of old,
      8-bit indexed video modes. This is a major change in MEKA core.
      Some of the benefits are:
      - No more snow and/or color flickering on video card drivers
        which disliked palette changes.
      - Better integration with desktop (usually run faster).
      - Getting possible to use various kind of graphics filters.
      - No more hassle with color limitation for the programmer
        (meaning more features implemented for the end-user).
      - Finally possible to show all Game Gear colors at once,
        and to implement LCD screen persistence (not yet done).
      Some of the features above goes hand to hand with the blitter
      system, which will be improved soon. [Omar]
    - Fixed HQ2X stretched blitter when target output was not 16-bits. [Omar]
    - Stretching works on all blitters. [Omar]
    - Video depth, Vsync, Triple Buffering and Page flipping are now global
      video settings, removed from each specific blitter. Greatly simplify
      configuration and tweaking. [Omar]
    - Triple buffering doesn't interfere with the refresh is not supported
      by the current settings (eg: windowed mode), making it safe and more
      simple to always leave it enabled. [Omar]
    - Changed default fullscreen blitter configuration in the hope of getting
      something more compatible (640x480 by default), as so many people have
      problems with fullscreen modes.
    - Removed obsolete "scanlines" blitter, in favor of "tvmode". [Omar]
    - Removed "parallel" blitter that displayed both odd and even frame
      next to each other. Seems useless now. Could be brought back if some
      four-eyed person request it. [Omar]
  - Sound:
    - Added support for VGM 1.10 header type. [Omar]
  - Emulation:
    - Fixed data corruption/overflow in VDP emulation when seeking and
      writing to an invalid palette address. Thanks Maxim. [Omar]
    - VDP palette write do not mask out current VDP address, so performing
      the (unprobable) set address/access palette/access VRAM sequence will
      keep address in the full 16KB range. [Omar]
    - Fixed VDP line interrupts not properly running in overscan area in
      224 lines mode. Fixes bottom of the screen in Charles Mac Donald's
      BB2K6 demo. [Omar]
    - CPU:
      - Z80: Fixed cases were address arithmetic would not wrap in the
        16-bit address space, effectively crashing the emulator (those cases
        were mostly happening on corrupted data, but it also legit Z80 code,
        and in any case we don't want the emulator to crash). [Omar]
      - Z80: Fixed RETI behavior (same as RETN, copying IFF2 to IFF1).
        Fixes pausing in SMS Robocop 3 during legal screens/introduction,
        probably other infrequent cases. [FluBBa, Omar]
      - Z80: Accepting NMI doesn't copy IFF1 over IFF2, as suggested
        by Sean Young's "The Undocumented Z80 Documented". [Omar]
    - ColecoVision:
      - Fixed emulation of pending NMI, pending flag is cleared when
        reading VDP status. Fixes "Rock 'N Bolt" among other.
        Thanks to the anonymous poster on SMS Power! forums. [Omar]
      - Note that the compatibility list for ColecoVision titles is
        severly outdated. At some point, James Carter worked on a new,
        more accurate list, but I lost all contact with him.
      - Removed detection of supposed 128-bytes headers and 512-bytes footers
        (from some old soft/copiers?), due to many false detections,
        particularly on homebrew ROM images (the code was introduced in 2001
        when Dig Dug and Pac-Man prototypes were released with such header,
        but ROM images now circulating are without the header). [Omar]
  - GUI:
    - Sorted default themes, removed non Sega 8-bit related themes.
      Now embedding background pictures in regular binary distribution.
      CALL FOR NEW OR IMPROVED THEMES SUBMISSION! Please contribute.
    - KeyPad Enter key now works on input boxes. [Omar]
    - Added shortcut CTRL-F4: closes current window. [Omar]
    - Added shortcut CTRL-TAB: cycles thru windows taking inputs. [Omar]
    - Reworked theme (skin) system from stratch: [Omar]
      - Changed MEKA.THM file format.
      - Using explicit names for variables.
      - Added more variables, making the skin system a little more
        complicated but also more configurable.
      - Using de-facto standard of specifying colors in #RRGGBB format.
      - Rewrote most code since it was all legacy from old MEKA 0.10.
    - Added link to debugger documentation in HELP menu. [Omar]
    - Removed closing fadeout since the current hi-color implementation
      is way inefficient and cannot garantee proper speed. [Omar]
  - Development:
    - Debugger:
      - Fixed various command-line parsing bugs. [Omar]
      - Added line history. Navigate history by pressing Up/Down.
        List or search in history using HISTORY (HI) command. [Omar]
      - Added conditionnal breakpoints. [Omar]
        eg:
          BREAK r C000.. =01,02,03,04   ; break on read of 01020304 in RAM
          BREAK x =C9                   ; break on CPU execution of RET
          BREAK x =0,0                  ; break on CPU execution of NOP NOP
          BREAK w pram 0 =03            ; break on PRAM write of color 0 as red
      - Added display line event breakpoints/watchpoints. [Omar]
        Useful for debugging line interrupts.
        eg:
          BREAK line #13                ; break on display line 13
      - Added "B nopnop" shortcut to break on two successives NOP instructions.
        This is basically equivalent to "B x =0,0". [Omar]
      - REGS (R) command in debugger now display shadow registers as well. [Omar]
      - Added cursor before current instruction in disassembly. [Omar]
      - Added access to shadow registers in expression evaluator. [Omar]
        eg:
          PRINT AF',BC',DE',HL'
      - Added SET command to modify Z80 registers. [Omar]
        eg:
          SET BC=$1234    ; set BC register to $1234
          SET DE=HL,HL=0  ; set DE=HL, then zero HL
      - Added MEMEDIT command to spawn a new memory editor. [Omar]
      - Added CLOCK command, to display/reset a Z80 cycle counter.
        Very simple but can be helpful to time Z80 routines. [Omar]
      - (Win32) Forward debugging log to Windows debugging stream via
        OutputDebugString(), so running MEKA from Microsoft Visual studio
        will display log in the 'Output' window. [Omar]
    - Memory Editor:
      - Added viewing and editing of VDP registers (VREG). [Omar]
      - Added configuration file directive for resizing window. [Omar]
      - Fixed cursor position when inputing an address on last page. [Omar]
      - Added NES PRAM support. [Omar]
    - Tiles viewer:
      - Added NES palette switching (8 palettes). [Omar]
    - Tilemap viewer:
      - Added tilemap viewer. [Omar]
        Shows tilemap, hovering or clicking a tile shows specific info
        about it, allows filtering BG/FG, disabling tile flipping, display
        of scrolling box, with or without raster effects, manual selection
        of tilemap address, etc.
    - Made '$' default prefix for hexadecimal values in various places. [Omar]
    - Datadump: [Ambil, Omar]
      - Fixed "palette" dumping. Blue and green components were inverted.
        Replaced dumping of target host RGB values by actual SMS/GG components.
      - Added sprite pattern base address in "sprites" dumping.
    - Cleaned Technical Information Viewer content, renamed a few fields
      to their official names, removed redundant information. It's not
      yet all clean. [Omar]
  - Miscellaenous:
    - Various fixes.
    - Increased max length of directory/filenames. [Musuruan]
    - Added "Automatically crop and align screen captures" option.
      This option aligns screen captures on the nearest visible tile,
      helping to simplify the process of creating game maps by pasting
      captures next to each other. [Omar]
      Note: May not work properly on game using scanline based effects.
    - Updated various tidbits in the configuration file. [Omar]
    - (Win32) Removed flickering from initialization message console. [Maxim]
    - (UN*X) Renamed main executable to 'meka' (instead of 'meka.exe').
  - Sources/Project
    - (Win32) Added new targets supporting shared standard libraries. [Omar]
    - (Win32) Updated Allegro library from WIP 4.1.18 to 4.2.0, including
       various fixes/improvements:
         http://www.talula.demon.co.uk/allegro/onlinedocs/en/changes.html
    - (Win32) Now linking to zlib.lib instead of zlibs.lib (name for standard
       static build of ZLIB). [Omar]
    - Removed password encryption from MEKA datafile (became useless). [Omar]
    - Fixed a bunch of warnings on higher warning levels. [Omar]
    - Hacked a lot of old GUI code (box, widgets, menus among others), cleaned
      and renamed various structures, replaced several usage of indexes by
      pointers, added const qualifiers, rewrote parts of various applets,
      got rid of some old obsolete code, etc. Hopefully broke nothing. [Omar]
    - (Win32) Fixed MSVC project to reference LIBPNGDIR.
    - (Win32) Including statically compiled libpng.lib in package. [Omar]
    - (UN*X) No more need to manually edit .ASM files to compile. [Omar]
    - Updated SOURCES.TXT documentation. [Omar]
  - Added and modified entries in the checksum and compatibility lists. [Omar]
    Some particular renaming includes:
      SMS - 0e21e6cf - Astro Flash (JP)                     --> Astro Flash [Hack] (JP)
      SMS - e5ff50d8 - Back to the Future II                --> Back to the Future Part II
      SMS - 2d48c1d3 - Back to the Future III               --> Back to the Future Part III
      SMS - 953f42e1 - Castle of Illusion                   --> Castle of Illusion - Starring Mickey Mouse
      SMS - b9db4282 - Castle of Illusion (US)              --> Castle of Illusion - Starring Mickey Mouse (US)
      SMS - 59840fd6 - Castle of Illusion [SMS-GG]          --> Castle of Illusion - Starring Mickey Mouse [SMS-GG]
      SMS - 9942b69b - Castle of Illusion [SMS-GG] (JP)     --> Castle of Illusion - Starring Mickey Mouse [SMS-GG] (JP)
      SMS - 42fc3a6e - Deep Duck Trouble                    --> Deep Duck Trouble - Starring Donald Duck
      SMS - 65d7e4e0 - Fantasy Zone                         --> Fantasy Zone [v2]
      SMS - 5d08e823 - Fushigi no Oshiro Pit Pot (JP)       --> Fushigi no Oshiro Pit Pot [Hack] (JP)
      SMS - a4ac35d8 - Galaxy Force [50 / 60 Hz]            --> Galaxy Force
      SMS - 6c827520 - Galaxy Force [60 Hz]                 --> Galaxy Force (US)
      SMS - dabcc054 - Ghost house (JP)                     --> Ghost House [Hack] (JP)
      SMS - c1e699db - Great Baseball [JP] (JP)             --> Great Baseball [JP] [Hack] (JP)
      SMS - 84665648 - Great Soccer (JP)                    --> Great Soccer [Hack] (JP)
      SMS - 695a9a15 - Jungle Book, The                     --> Jungle Book, The (Walt Disney's Classic)
      SMS - 24e97200 - Land of Illusion                     --> Land of Illusion - Starring Mickey Mouse
      SMS - 6350e649 - Legend of Illusion (BR)              --> Legend of Illusion - Starring Mickey Mouse (BR)
      SMS - c352c7eb - Lion King, The                       --> Lion King, The (Disney's)
      SMS - 87b9ecb8 - Satellite 7 (JP)                     --> Satellite 7 [Hack] (JP)
      SMS - bcd91d78 - Seishun Scandal (JP)                 --> Seishun Scandal [Hack] (JP)
      SMS - a71bc542 - Spy vs Spy (JP)                      --> Spy vs Spy [Hack] (JP)
      SMS - 1de2c2d0 - Strategic Defense Initiative (JP)    --> SDI (JP)
      SMS - 95cbf3dd - Super Tennis (JP)                    --> Great Tennis / Super Tennis (JP) (note: this one is tricky. Official game name is "Great Tennis" but title screen says "Super Tennis").
      SMS - 9dfa67ee - Teddy Boy Blues (JP)                 --> Teddy Boy Blues [Hack] (JP)
      SMS - 60c19645 - Zillion                              --> Zillion [v0]
      SMS - 5718762c - Zillion (US)                         --> Zillion [v1] (US)
      GG  - bb4f23ff - Adventures of Batman and Robin       --> Adventures of Batman & Robin, The
      GG  - 7a41c1dc - Aladdin                              --> Aladdin (Disney's)
      GG  - 770e95e1 - Aladdin (JP)                         --> Aladdin (Disney's) (JP)
      GG  - 4457e7c0 - Deep Duck Trouble / Donald Duck no.. --> Donald Duck no Yottsu no Himitsu (JP) (was Japanese dump)
      GG  - f6af4b6b - Dynamite Headdy                      --> Dynamite Headdy (JP) (note: US/EU version is another dump)
      GG  - 36aaf536 - Evander Holyfield Boxing             --> Evander Holyfield's "Real Deal" Boxing
      GG  - 423803a7 - Gambler Jikochuushin Ha (JP)         --> Gyuwanburaa Jikochuushin Ha (JP)
      GG  - 9f64c2bb - Ichidanto-R (JP)                     --> Ichidant~R (Puzzle & Action)
      GG  - 8c048325 - Indiana Jones and the Last Crusade   --> Indiana Jones and the Last Crusade [BAD]
      GG  - 4a98678b - Joe Montana Football                 --> Joe Montana Football (JP)
      GG  - 90100884 - Jungle Book, The                     --> Jungle Book, The (Walt Disney's Classic)
      GG  - 30c09f31 - Jungle Book, The (US)                --> Jungle Book, The (Walt Disney's Classic) (US)
      GG  - 52dbf3e1 - Land of Illusion                     --> Land of Illusion - Starring Mickey Mouse
      GG  - 0117c3df - Land of Illusion (JP)                --> Mickey Mouse no Mahou no Crystal (JP)
      GG  - 0cd9c20b - Lion King, The                       --> Lion King, The (Disney's) (EU)
      GG  - 9808d7b3 - Lion King, The (US)                  --> Lion King, The (Disney's) (US)
      GG  - 00c34d94 - Madou Monogatari I - Mittsu no.. (JP)--> Madoh Monogatari I - Mittsu no Madokyuu (JP)
      GG  - 12eb2287 - Madou Monogatari II - Aruru 16.. (JP)--> Madou Monogatari II - Aruru 16-sai (JP)
      GG  - 0a634d79 - Madou Monogatari III - Kyukyok.. (JP)--> Madou Monogatari III - Kyuukyoku Joo-sama [v0] (JP)
      GG  - 7ec95282 - Madou Monogatari A - Dokidoki-.. (JP)--> Madoh Monogatari A - Dokidoki-Bake Shon
      GG  - cc90c723 - Pocket Jong Sou (JP)                 --> Pocket Jansou (JP)
      GG  - afcc7828 - Psychic World                        --> Psychic World (JP)
      GG  - 445d7cd2 - Royal Stone (JP)                     --> Royal Stone ~Hikarishi Toki no Tobira~ (JP)
      GG  - 95efd52b - Ryu Kyu (JP)                         --> Ryuu Kyuu (JP)
      GG  - 09f9ed60 - Shadam Crusader (JP)                 --> Shadam Crusader ~Harukanaru Oukoku~ (JP)
      GG  - 2ae8c75f - Shanghai 2 (JP)                      --> Shanghai II (JP)
      GG  - 4d1f4699 - Shining Force Gaiden (JP)            --> Shining Force Gaiden ~Ensei Jashin no Kuni e~ (JP)
      GG  - 30374681 - Shining Force Gaiden II (JP)         --> Shining Force Gaiden II ~Jashin no Mezame~ (JP)
      GG  - 6019fe5e - Shining Force Gaiden Final Con.. (JP)--> Shining Force Gaiden ~Final Conflict~ (JP)
      GG  - 742a372b - Spider-Man and the X-Men in Arcade'..--> Spider-Man / X-Men: Arcade's Revenge
      GG  - f1732ffe - Tale Spin                            --> TaleSpin
      GG  - 09151743 - Tanto-R (JP)                         --> Tant~R (Puzzle & Action)
      GG  - 3d8d0dd6 - World Series Baseball [A]            --> World Series Baseball [v0]
      GG  - bb38cfd7 - World Series Baseball [B]            --> World Series Baseball [v1]
      SG1 - 545fc9bb - Ashizawa's Hatchidan Tsumeshogi (JP) --> Serizawa Hachidan no Tsumeshogi (JP)
      SG1 - 5970a12b - Champion Baseball                    --> Champion Baseball [16k]
      SG1 - 6d909857 - Sega Mah-Jong (JP)                   --> Mahjong (Sega) (JP)
      SG1 - e7e0f0e3 - Home Mah-Jong (JP)                   --> Home Mahjong [v1] (JP)
      SG1 - 09196fc5 - N-Sub (1988)                         --> N-Sub [16k] (1988)
      SC3 - 622010e1 - Sega Music Editor                    --> Music
      SC3 - b67ea1c4 - Sega Music Editor                    --> Music [BAD]
      SC3 - 2ec28526 - Sega Music Editor (JP)               --> Music (JP)
      SC3 - ae4f92cf - Uranai Angel Cuty (JP)               --> Uranai Angel Cutie (JP)


 MEKA 0.71
 ---------
  - Now that MEKA is open-source, welcoming other developpers!
    - New contributor: Robert Raper (DjRobX)
    - New contributor: Maxim Stephin (MaxSt)
    Names between brackets refers to the person(s) involved in a change.
  - Blitter/Video:
    - Added triple buffering support on fullscreen blitters. [DjRobX]
      Made triple buffering the default for appliable video modes. It might
      or not work on all configuration. Please report if any problem arise.
    - Added max stretch support on fullscreen blitters. [DjRobX]
      This is currently only available on normal and HQ2X filter.
      Integer/ratio stretch not yet supported, so it is recommended to use
      a resolution multiple of the emulated system screen size.
    - Added support for internally converting the 8-bit video buffer to
      another video depth and blitting that. [DjRobX]
    - Integrated Maxim Stephin's HQ2X graphics filter, and added a dedicated
      blitter. Only 16-bits output is supported as of yet. [MaxSt,DjRobX]
  - GUI:
    - Fixed input box widget missing keys on skipped frames. [Omar]
      This made key inputs very annoying on certain configuration, and
      especially with 3-D glasses auto-frame-skipping enabled.
    - Fixed a problem losing focus while dragging GUI windows with certain kind
      of widgets (happened on tile viewer & memory editor, among other). [Omar]
  - Development:
    - Updated debugger documentation. [Omar]
    - Added symbol loading in NO$GMB format, as generated by the commonly
      used WLA DX linker (-s parameter). [Omar]
    - Added label/symbol viewing in Z80 disassembly window. [Omar]
    - Relative offsets are now resolved in Z80 disassembly window. [Omar]
    - Added expression evaluator. [Omar]
      Supports integer operators +,-,*,/, binary operators &,|,^,
      parenthesis, symbols and CPU registers replacement.
      Yet missing: unary operators -,!,~.
      All commands uses the expression evaluator to get their numeric
      parameters, so you can use it everywhere.
      eg:
        B function    ; break at given 'function' symbol
        M my_data     ; memory dump from 'my_data' symbol
    - Added PRINT (P) command to evaluate and print expressions. [Omar]
      eg:
        P IX,IY       ; print IX and IY registers
        P 1200+34     ; print $1234
        P %00101010   ; print 42
        P HL+(BC*4)   ; print HL+BC*4
        P label       ; print label
    - Added contextual command line completion. [Omar]
      Press TAB to complete current input with matching command/symbols.
      eg:
        b[tab]        ; -> BREAK
        b[tab]la[tab] ; -> BREAK label
    - Added SYMBOLS (SYM) command to list and search for a symbol. [Omar]
    - Changed breakpoint/watchpoint range syntax to '..' to avoid any
      syntaxical ambiguity with substraction (eg: B 1000..2000). [Omar]
    - Added "B ENABLE/DISABLE ALL" shortcuts to enable/disable all
      breakpoints at once. [Omar]
    - Added "B CLEAR DISABLED" shortcut to clear disabled breakpoints. [Omar]
    - Added "Reload ROM" functionnality in the debug menu, for quicker reload.
    - Palette viewer now shows color entry data while hovering colors. [Omar]
    - Fixed display of CPU flags (only bit 0 was properly interpreted,
      because of a typo). Added display of undocumented flags bits 3
      and 5 (partially emulated). [Omar]
    - Made it that debugger log to file is immediately flushed. This allows
      reading the log file in live while the debugger is running. [Omar]
    - Added REGS (R) command to dump Z80 registers to the log console. [Omar]
    - Added animation displaying weither CPU is running or not. [Omar]
    - Fixed behavior of step/step over/continue when executing while being
      located on a breakpoint. [Omar]
    - Fixed behavior of step over an infinite loop. [Omar]
  - Miscellaenous:
    - (Win32) Added a "setup.bat" command file to run the interactive setup.
      Seems like few people were aware of the command-line option. [Omar]
    - (Win32) The interactive setup now offers to enable/disable the debugger,
      so you don't have to manually enable it. [Omar]
    - (Win32) Updated Allegro library from WIP 4.1.12 to 4.1.18, which includes
      various fixes/improvements:
        http://www.talula.demon.co.uk/allegro/onlinedocs/en/changes.html
    - (Win32) Fixed crash on early aborting (eg: command line error) due to non
      properly stopping joystick polling thread. [Omar]
    - Fixed loading of corrupted or incorrectly sized ROM images that would
      sometimes made the engine crash. [Omar]
    - Updated various tidbits of documentation. [Omar]
  - Added and modified entries in the checksum and compatibility lists. [Omar]
    Some particular renaming includes:
      SMS - 60c19645 - Akai Koudan Zillion (JP)             --> Zillion / Akai Koudan Zillion  (note: this ROM was released in both Japan and Europe)
      SMS - a1710f13 - Lucky Dime Caper, The                --> Lucky Dime Caper, The - Starring Donald Duck
      SMS - 5718762c - Zillion                              --> Zillion (US)
      GG  - 7b7717b8 - Big War / Daisenryaku G (JP)         --> Taisen-gata Daisenryaku G (JP)
      GG  - a49e9033 - NBA JAM                              --> NBA JAM (JP)

  Note that DjRobX's video/blitter changes were integrated but some features
  may not be compatible with all others, and some need improvements. You are
  welcome to experiment different configuration settings in MEKA.BLT but not
  everything may work properly. The preset "HQ2X" blitter should works, though.

  The current blitter system makes it not trivial to do everything we want,
  it is too limited in configuration, and was first made with MS-DOS and low
  end computers in mind. As of next versions, I will work on reoverhauling the
  system, trying to better fits needs of the 21st century (resizing, multiple
  depth, hi-color, windowed modes without borders, non 4:3 ratio screens,
  different refresh rates...) and improve ease of setupping.
  Expect many changes in this area (hopefully). [Omar]

  - Sources/Project
    - (Linux) Updated Makefile and some sources tidbits for proper compilation.
      [Omar,Belegdol,Proppy]
    - (Linux,DOS) Object directories are now created automatically. [Omar]
    - (Linux,DOS) Removed "smscheck" tool building from Makefile. Has nothing
      to do with MEKA. [Omar]
    - (Linux,DOS) Added 'BUILD' switch in Makefile to select between release
      and debug builds.
    - (Win32) Make it that build date/time stamp in build.c is updated when
      rebuilding the solution. Removed buildupd.exe executable from sources. [Omar]
    - (DOS) I'm stopping to maintain the MS-DOS port. A maintener is welcome. [Omar]


 MEKA 0.70
 ---------
  - Released source code.
    Added SOURCES.TXT file with some information for programmers.
  - Registration key is a thing of the past. It never served a real purpose
    other than identifying donators. All donators are publicly listed at:
        http://www.smspower.org/contrib.htm
    Big thanks to all of them for their great and useful support!
    I'll keep sending news/e-mails to donators.
    MEKA is now officially not having a registration procedure anymore, but
    your donations are still greatly welcome and are helping me to cover a
    part of my never-ending Sega 8-bit expenses, including buying cartridges
    for dumping and preservation purpose.
    I updated documentation to reflect this, and changed occurences of the
    "registration" word by "donation", as it was always meant to be anyway.
  - In SMS mode, fixed color filling when VDP rendering is disabled.
    Previously disabled parts where filled with black, instead of the current
    border color. No commercial game exhibited the problem. Chris Covell's
    port of Aleste 2 from GG to SMS did.
  - Disabling background display now shows a yellow-ish color instead of the
    black/border color, to help sprite ripping. Sorry it's not FF00FF pink,
    but I am currently lacking free palette entries, and anyway, a screen full
    of FF00FF pink would damage your eyes in a matter of seconds. :)
  - Development:
    - Added new full-featured breakpoints and watchpoints!
      - Manage multiple breakpoints/watchpoints. Add/remove/enable/disable.
      - Break and watch on CPU (rwx), IO (rw), VRAM (rw) and PRAM (w) buses.
      - Break and watch on specific access (read/write/execute).
      - Break and watch on single address or whole range.
      - Previous "B" command changed to "S" (step over).
      - Previous "B xxxx" command (one-time breakpoint) is still accessible
        using the "C" (continue) command.
    - Added detailed help for each command.
      (eg: "HELP B" to get help on breakpoints).
    - Instruction flow disassembly now attempt to display instructions before
      the current one, based on some magical voodoo technique of mine.
      Don't expect it to work in all cases - it is theorically impossible to
      do with variable-sized instructions anyway - but it can be improved.
      This feature helps figuring out what's being executed contextually.
    - The current instruction is now highlighted.
    - ROM edition in the memory viewer was not taken into account without
      a hard reset in region 0x0400-0x3FFF. Fixed.
    - Fixed savestate saving/loading which didn't restore scanline number
      properly, affecting debugging using those features.
    - Tile viewer now display tile starting address.
    - Tile viewer now update information while mouse hovering.
    - Added optional length parameter to "MEM" and "DASM" commands.
    - Fixed ASCII display of memory in "MEM" command.
    - Added "debugger_console_lines" and "debugger_disassembly_lines"
      variables in configuration file, allowing to change debugger size.
      Combine with a high-resolution MEKA desktop, and you can't be unhappy.
    - Added debugger session logging to file "debug/debuglog.txt".
      Can be disabled by clearing "debugger_log" in configuration file.
    - Fixed a bug using the memory editor to write to RAM in Coleco Vision mode.
    - Hacked a way so that you can affect controller inputs data while debugging
      (press a direction, it immediately apply on the emulated system state).

  - When used in the interface, analog peripherals supported by the mouse now
    only perform their action if the mouse has focus on the game window.
    This prevent accidental in-game shooting when using tools or debugging.
    Of course, you should not use the interface if you only intend to play.
  - Fixed /LOG command line parameter (broken recently).
  - Added and modified entries in the checksum and compatibility lists.
    Redumped more games, sorted more versionning/country confusion.
    To avoid certain confusion, all Game Gear games originally running
    in Master System mode were moved back in the Game Gear section.
    This makes the list consistant with actual cartridge releases.
    Some particular renaming includes:
      SMS - 17a40e29 - Alex Kidd in Miracle World (US)      --> Alex Kidd in Miracle World [v0] (US)
      SMS - aed9aac4 - Alex Kidd in Miracle World           --> Alex Kidd in Miracle World [v1] (note: this was released in both US and Europe)
      SMS - 08c9ec91 - Alex Kidd in Miracle World (JP)      --> Alex Kidd no Miracle World (JP)
      SMS - 0df8597f - Basket Ball Nightmare                --> Basketball Nightmare
      SMS - e421e466 - Borgman (JP)                         --> Chouon Senshi Borgman (JP)
      SMS - 11645549 - Solomon no Kagi (JP)                 --> Solomon no Kagi - Oujo Rihita no Namida (JP)
      SG  - 0b4bca74 - Border Line (JP)                     --> Borderline
      SG  - 922c5468 - Souko Ban (JP)                       --> Soukoban (JP)
      SG  - 1ae94122 - Star Jacker [old] (JP)               --> Star Jacker [v0] (JP)
      SG  - 7f25deca - Star Jacker [new] (JP)               --> Star Jacker [v1]
      GG  - fe12a92f - Densetsu no Houguku (JP)             --> Mickey Mouse Densetsu no Oukoku (JP) (terrible typo)
      GG  - 937fd52b - Kaito Saint Tail (JP)                --> Kaitou Saint Tail (JP)
      GG  - dfa805a0 - Hanou no Toukyuuji Dodge Danpei (JP) --> Honoo no Toukyuuji Dodge Danpei (JP)


 MEKA 0.69b
 ----------
  - [DOS/UN*X] Fixed ZIP file support which was accidently disabled
    in version 0.69.
  - Improved auto frame-skipper precision by a minor amount.
    (on another hand, it still manage to skip frames badly).
  - Disabled keys 0 to 9 to set a save state slot directly.
    Those conflicted with some existing and future features.
    Hope that noone will be annoyed!
  - Added ALT-ENTER hotkey to switch between fullscreen and windowed drivers.
    It works in both GUI and Game mode, although the setting is not saved in
    Game mode (due to the way the MEKA.BLT file works now).
  - Added an option to allows pressing opposite directions on the joypad.
    Although standard SG/SMS/GG controllers do not allow that, certain
    type of controllers (or a modified or broken one) may allow it.
    This serve the purpose of demonstrating a bug in "Wonder Boy in Monster
    Land", where pressing Left and Right on the same time confuses the game.
    It is also useful in the case some creative genius SMS programmer would
    want to take advantage of that weird feature to do unusual things for a
    soon-to-be released SMS software.
  - Fixed priority of Sega Keyboard (SK-1100) emulation, so that not colliding
    hotkeys are still available while SK-1100 is enabled.
  - Memory Editor now share inputs focus with game. It makes hacking easier.
    Of course you can always pause (F12) or remap controls if needed.
  - Fixed state of debugger window (bug introduced in 0.69).
  - Updated translations:
    - Dutch translation (by Mark van Tilburg).
    - Swedish translation (by Henrik Sankala).
    - Redneck translation (by some redneck in UK).

  - Added and modified entries in the checksum and compatibility lists.
    Some particular renaming includes:
      SMS - 31ffd7c3 - Castelo RETim Bum (BR)              --> Castelo RETim-Bum (BR)
      SMS - b137007a - Desert Speedtrap                     --> Desert Speedtrap - Starring Road Runner and Wile E. Coyote
      SMS - 7abc70e9 - Party Games / Family Games (JP)      --> Family Games (Party Games) (JP)
      GG  - 7174b802 - Baku Baku Animal (JP)                --> Baku Baku Animal - Sekai Shiikugakari Senshu-ken (JP)
      GG  - 03d28eab - Crayon Shin Chan (JP)                --> Crayon Shin Chan - Taiketsu! Tankam Panic!! (JP)
      GG  - ec808026 - Desert Speedtrap                     --> Desert Speedtrap - Starring Road Runner and Wile E. Coyote
      GG  - c2e111ac - Desert Speedtrap (US)                --> Desert Speedtrap - Starring Road Runner and Wile E. Coyote (US)
      GG  - a1a19135 - GG League '94 (JP)                   --> Pro Yakyuu GG League '94 (JP)
      GG  - 4cf97801 - Godzilla (JP)                        --> Godzilla - Kaiju Dai-Shingeki (JP)
      GG  - 86c32e5b - NBA Jam TE                           --> NBA JAM Tournament Edition
      GG  - 751dad4c - Slam Dunk (JP)                       --> From TV animation - Slam Dunk - Shouri-e no Starting 5 (JP)
      GG  - dd1d2ebf - Tamalympic (JP)                      --> Tama & Friends - 3chome Koen Tamalympic (JP)
    And an awful typo saying "Carmen Sandegio" instead of "Carmen Sandiego".


 MEKA 0.69
 ---------
  - Updated k.
  - Updated documentation.
  - Added a Memory Editor, long awaited by programmers, hackers and cheaters!
    It allows reading and writing to Z80 memory map, ROM, RAM, VRAM, Palette
    and Battery Backed RAM. Although it is not yet full-featured, it is
    already very possible to create your own Pro Action Replay codes, and
    perform various real-time hacks.
    Please share your questions and hacks on SMS Power forums:
        http://www.smspower.org/forum
    This tool is the result of joint work with my beloved girlfriend, who
    submitted a first version of it that she developped.
  - Added support for loading and saving pictures in PNG format. PNG is now
    the default format for screenshots, instead of the badly outdated PCX.
    (thanks to libpng).
  - Screenshots are now saved in the "Screenshots/" subdirectory.
  - Tweaked some themes, reordered them, removed a few. Themes backgrounds
    are now in PNG format. Please be sure to download the new picture pack at:
        http://www.smspower.org/meka/themes
  - [Windows] Added a message console that shows up on startup and magically
    disappear before you have time to read anything. If any problem occurs,
    the console will actually stay to let you read it.
  - [Windows] Fixed runtime application icon that wasn't showing.
  - [Windows] Removed command line parameters uppercase conversion (eg: when
    ran from Windows explorer). This inconveniently created uppercase output
    filenames for savestates, screen captures, etc. This was MS-DOS legacy.
  - Slighty optimized VRAM accesses emulation.
  - Incremented message buffer size to cope with SMS Chip-8 Interpreter 1.1
    11k embedded comment. There is still buffer overflows in the code and
    I'm not trying to fix most of them now, so this is just a work-around.
  - Various other fixes and code tweaking.

  - Added and modified entries in the checksum and compatibility lists.
    Some particular renaming includes:
      SMS - 655fb1f4 - Bank Panic                           --> Bank Panic
      SMS - b4dfb825 - Bank Panic                           --> Bank Panic [BAD]
      SMS - 102d5fea - James Pond 2 - Codename Robocod      --> James Pond II - Codename: Robocod
      SMS - e8ea842c - Marksman Shooting / Trap Shooting    --> Marksman Shooting & Trap Shooting
      SMS - 00bef1d7 - Phantasy Star                        --> Phantasy Star [v3]
      SMS - 07301f83 - Phantasy Star [Saturn]               --> Phantasy Star [Saturn]
      GG  - c01293b0 - Devilish                             --> Devilish (US)
      GG  - 06247dd2 - Ninku 2 (JP)                         --> Ninku 2 ~Tenkuryu-e no Michi~ (JP)
      GG  - 00c34d94 - Madou Monogatari I (JP)              --> Madou Monogatari I - Mittsu no Madokyu (JP)
      GG  - 0a634d79 - Madou Monogatari II (JP)             --> Madou Monogatari II - Aruru 16-sai (JP)
      GG  - 12eb2287 - Madou Monogatari III (JP)            --> Madou Monogatari III - Kyukyoku Joo-sama (JP)
      GG  - 7ec95282 - Madou Monogatari A                   --> Madou Monogatari A - Dokidoki-Bake Shon (JP)
      GG  - c169c344 - X-Men - Gamesmaster's Legacy         --> X-Men - GamesMaster's Legacy

    Use SMS Checker for your ROM renaming needs!
        http://www.smspower.org/maxim/smschecker


 MEKA 0.68b
 ----------
 As an experiment, I have enabled vsync in all default blitters and enabled
 it by default in the GUI. Blitters are still a bit complicated to configure
 so few people seems to actually tweak them or even enable the "smooth"
 blitter. Does it works better for you?
 I'll be working on synchronisation and blitter improvement (stretching...)
 in the future.

  - Removed the 2-byte tolerance in overdump detection. Overdumps with two
    slighty different half will be added in the database and marked as bad.
  - Emulation:
     - Fixed a major bug in the driver system, which resulted in corrupted
       savestates in F-16 Fighter / F-16 Fighting Falcon (the savestate
       system recognized them as SG-1000 games and so saved only part of RAM).
       Previous ingame states for the game are unrecoverable :(
     - Removed immediate palette update when CRAM is written in a legacy
       video mode (the palette isn't updated on a SMS). It only affected
       F-16 Fighter / F-16 Fighting Falcon, but in a non game-visible way.
     - Tweaked heuristical SMS/GG mapper detection.
     - Fixed SMS/GG scanline counter emulation which was ignoring TV type
       (NTSC or PAL/SECAM) override directive from the database.
       (eg: one game would be forced to PAL/SECAM mode, but scanline counter
        emulation still mimic an NTSC system if it is the user selection).
  - Fixed mouse button mapping in the Input Configuration applet.
  - Fixed file browser showing Japanese names after loading SMS Woody Pop
    or GG Pop Breaker (why those games only? because they both have a default
    country information in the DB, as they only works on Japanese systems).
  - Added and modified entries in the checksum and compatibility lists.
    Some particular renaming includes:
      GG  - Ganbare Golby! (JP)             --> Ganbare Gorby!


 MEKA 0.68
 ---------
 Please report any problems you encounter.
 Suggestions are always welcome.

  - Updated MEKA.NAM database with a new format.
    The new format is more robust, includes CRC32, additionnal flags, and
    allows specifiying multiple countries for a same ROM file.
    In addition, while the MEKA database is being repopulated with entries
    in the new format, a high amount of verifications are being done on a
    case by case basis (redump, verified name based on original game media,
    box and manual, analysis of different versions of a same game, etc...).
    I have already redumped more than a hundred games. This will unsure
    having a near-perfect database after the transition. Old formatted
    entries are kept during the transition period.
  - SMS-mode Game Gear games are now autodetected and forced to run into
    SMS mode even with a .GG extension. This is because those games are
    often spread with a .GG extension, although there is no way in software
    to distinguish between a native GG game and one running in SMS mode,
    since the selection is done via a connected pin in the cartridge itself.
  - Updated file browser:
      - Added dedicated icons to known bad dumps, BIOS images, unofficial
        hacks, homebrew programs (also incorrectly called "public domain"),
        prototypes and unofficial translation. A translation is defined as
        a hack whose primary purpose is to alter the language of a game.
        How do you like my icons?
      - Added European, German, Italian, New-Zealand, Portuguese, Spanish,
        Swedish and United-Kingdom flags. All flags are now displayed with
        a border, because some themes may choose a window color matching
        some flags.
      - The "Load Names" feature is now faster and does not verbose any
        data to the message box while loading all files.
      - Made file browser window bigger by default.
      - Removed the auto-generated MEKA.VFN file, which was crap anyway.
        Instead, added a new auto-generated MEKA.FDB file, which store
        association between user ROM file names and MEKA DataBase entries.
  - Emulation:
      - Emulated VDP 315-5124 behavior of using register 5 bit 0 and
        register 6 bits 0-1 as masks on sprite x/tile attributes address
        and tile index. No known game relies on this feature, but it is
        good for the sake of accuracy and for developpers to check against
        this particularity in their code (it is often a coding mistake).
        VDP 315-5124 must be selected for that.
  - Updated TECH.TXT with SMS controller pinouts, simple SMS/DB-9 controller
    adapter instructions from Gary Pierce, and GNU/Linux notes.
  - Various other fixes and code tweaking.

  - Added and modified entries in the checksum and compatibility lists.
      - Naming and database field usage convention has been changed,
        based on the new format.
        - "Title (The)" now becomes "Title, The".
        - Unless specified by the game title, "Name: Subtitle" now
          becomes formatted "Name - Subtitle".
        - A few other things related to versionning/country.
      - Replaced all instances of "Tectoy" by "Tec Toy".
      - Added some missing accents.
      - Added many missing subtitles.
      - Added many new product numbers.
    Some particular renaming includes:
      SMS - Alex Kidd BMX Trial (JP)        --> BMX Trial - Alex Kidd (JP)
      SMS - Ninja Gaiden [B]                --> Ninja Gaiden
      SMS - Ninja Gaiden [A]                --> Ninja Gaiden [Proto]
      SMS - Putt & Putter [B]               --> Putt & Putter
      SMS - Putt & Putter [A]               --> Putt & Putter [Proto]
      SMS - Smash TV                        --> Super Smash T.V.
      SMS - World Games [B]                 --> World Games
      SMS - World Games [A]                 --> World Games [Proto]
      GG  - GG Portrait: Akira (JP)         --> GG Portrait - Yuuki Akira (JP)
      GG  - Halley Wars                     --> Halley Wars (JP)
      GG  - Ninku Gaiden 2 (JP)             --> Ninku 2 (JP)
      GG  - Pet Club Neko Dai Suki (JP)     --> Neko Daisuki! (JP)
      GG  - Pet Club Inu Dai Suki (JP)      --> Pet Club Inu Daisuki! (JP)
      GG  - Putt & Putter                   --> Putt & Putter (JP)
      GG  - Shinkinjoh (JP)                 --> Shikinjou (JP)
      GG  - Tempo JR                        --> Tempo Jr.
      GG  - Winter Olympics                 --> Winter Olympics (JP)
    The list above doesn't include ALL renaming, but only those I felt are
    the most important to be propagated. Many other renaming were done.


 MEKA 0.67
 ---------
  - Updated documentation.
  - Tweaked the auto-frame skipper. Please let me know if you notice any
    improvement or new problem.
  - The analog Paddle Control is now usable using a digital keyboard or
    joystick input, although it is HIGHLY recommended to use a mouse.
    Playing with a keyboard or joystick may be sometimes frustrating and
    does not allows fast movements.
  - Updated debugging mode:
      - Scrapped old, buggy, and unusable MS-DOS only text mode debugger.
      - Added new debugger, well integrated into the GUI and functionnal
        with all versions of MEKA. It is a primitive debugger, but it can
        be helpful and it is definitively better than nothing.
        Supports step-into, step-over, breakpoint, jump, disassembly and
        memory dump. Expression are not evaluated and syntax is primitive.
        Enable with the /DEBUG command line parameter.
      - [Windows] Data dumping facilities are now working.
  - Updated patching system (see MEKA.PAT file):
      - Updated syntax.
      - Support for long awaited RAM patches!
        One of the side effect to that is that you can now apply
        PRO ACTION REPLAY codes easily. This feature is unfortunately
        not backuped by a full-featured interface and cheats database,
        but is helpful and better than nothing - while waiting for
        advanced cheating functionnalites to be added in the future.
      - Support for CRC32 to specify the game to apply patches on,
        as well as using MEKA proprietary checksum format.
      - Putting * in the CRC field will apply a patch to all games.
      - Minor bug fixes.
  - Inputs:
      - [Windows] Fixed joystick sliders support (DirectInput < 8.00
        usually reports the fourth and fifth axis of a joystick as
        being sliders, which is a weird little known behavior).
      - File browser now takes exclusive inputs so the emulated game
        is not affected by keypresses.
  - Fixed file browser "Load Names" feature. It was broken in version 0.66,
    and sometimes (not always) went into an infinite loop in earlier version.
  - [Windows] Command line parameters help is now displayed in a message box.
  - Closing a box now automatically focus the next one in focus order.
  - Various other fixes.
  - Updated Dutch translation (by Mark van Tilburg).

  - Added and modified entries in the checksum and compatibility lists,
    on the road to perfection. Added many missing (J) flags in the Game Gear
    compatibility list. Added a few missing accents.
    Some particular renaming includes:
      SMS - Back to the Future 2            --> Back to the Future II
      SMS - Back to the Future 3            --> Back to the Future III
      SMS - Blade Eagle 3D                  --> Blade Eagle 3-D
      SMS - California Games 2              --> California Games II
      SMS - Chuck Rock 2                    --> Chuck Rock II: Son of Chuck
      SMS - Ecco 2: the Tides of Time       --> Ecco: The Tides of Time
      SMS - Fantazy Zone 2                  --> Fantazy Zone II
      SMS - Fantasy Zone 3: the Maze        --> Fantasy Zone: The Maze
      SMS - Golvellius                      --> Golvellius: Valley of Doom
      SMS - High School Kimengumi           --> High School! Kimengumi
      SMS - Jogos de Verao 2                --> Jogos de Verão II
      SMS - Maze Hunter 3D                  --> Maze Hunter 3-D
      SMS - Missile Defense 3D              --> Missile Defense 3-D
      SMS - Out Run 3D                      --> Out Run 3-D
      SMS - Pac-Mania                       --> Pacmania
      SMS - Poseidon Wars 3D                --> Poseidon Wars 3-D
      SMS - Rambo: First Blood Part 2       --> Rambo: First Blood Part II
      SMS - Secret Commando                 --> Secret Command
      SMS - Space Harrier 3D [Export]       --> Space Harrier 3-D
      SMS - Sport Pad Football              --> Sports Pad Football
      SMS - Sport Pad Soccer                --> Sports Pad Soccer
      SMS - Super Monaco GP 2               --> Super Monaco GP II (Ayrton's Senna)
      SMS - Turma da Mônica em o Resgate    --> Turma da Mônica em: O Resgate
      SMS - Wonder Boy in Monster Land [A]  --> Wonder Boy in Monster Land
      SMS - Wonder Boy in Monster Land [B]  --> Wonder Boy in Monster Land [Hack]
      SMS - Wonder Boy in Monster Land [C]  --> Super Wonder Boy Monster Land / World [Japan]
      SMS - World Cup '92 (Tecmo)           --> World Cup '93 (Tecmo) (Proto)
      SMS - Wimbledon 2                     --> Wimbledon II
      SMS - Winter Olympic '94              --> Winter Olympics
      SMS - Ys: Vanished Omen				--> Y's: The Vanished Omens
      SMS - Ys: Vanished Omen [Japan]		--> Ys [Japan]
      SMS - Zaxxon 3D [Export]              --> Zaxxon 3-D
      SMS - Zillion 2 [Export]              --> Zillion II: The Tri Formation
      GG  - Chuck Rock 2                    --> Chuck Rock II: Son of Chuck
      GG  - Desert Speedtrap                --> Desert Speedtrap [USA]
      GG  - Ecco 2: the Tides of Time       --> Ecco: The Tides of Time
      GG  - Gun Star Heroes [Japan]			--> Gunstar Heroes [Japan]
      GG  - Super Monaco GP 2               --> Super Monaco GP II (Ayrton's Senna)
      SG  - Championship Lode Runner [B]    --> Championship Lode Runner
      SG  - Hang On 2                       --> Hang On II
      SG  - Hyper Sports                    --> Hyper Sports (Konami no)
      SG  - Pitfall 2                       --> Pitfall II
      SG  - Rockn' Bolt                     --> Rock n' Bolt
      SG  - Shinnyushain TooruKun           --> Shinnyushain Tooru Kun (Konami no)
      SG  - Sindbad Mystery [A]             --> Sindbad Mystery

    Please use SMS Checker for your ROM renaming needs!
    http://www.smspower.org/maxim/smschecker


 MEKA 0.66
 ---------
 Blitting & synchronisation are still very bad in many cases. This is my
 top priority but I still cannot find a good solution to improve it and
 please everyone (slow and fast computers). I can't sleep! :(
 Use the "smooth" blitter if possible.

  - Updated default blitters (MEKA.BLT).
  - Video mode is not reinitialized anymore when switching blitters with
    the same resolution/refresh rate. This saves a bit of time.
  - [Windows] Fixed page flipping, for those using it (see MEKA.BLT file).
  - [Windows] Sega 3-D Glasses support is now properly working in MEKAW!
    If you build the simple 3-D Glasses to COM adapter (as described in
    the TECH.TXT file), it is possible to plug original 3-D glasses and
    enjoy 3-D games as they were meant to be played - and additionnally,
    damage your eyes due to intense flickering :)
    Best results are achieved by enabling page flipping or vsync.
  - [DOS] Sega 3-D Glasses support now also works under a Windows 95/98
    command prompt.
  - Increased maximum number of joystick buttons to 32 (instead of 16).
  - Partly fixed incorrect joystick axis reporting. It was a problem for
    many people, and made it impossible or difficult to configure joysticks
    using the interface. One extended joystick axis may be missing now,
    until I can find a solution to this other problem.
  - Tile viewer can now be configured to displayed all 512 tiles, instead
    of the first 448 only. The bottom tiles looks awful with most SMS/GG
    games but some games use this area so it's good to see them.
  - Tile viewer now allows to select all 15 colors to display tiles in
    TMS9918 video modes (used by SG-1000, SC-3000, Coleco Vision, etc.).
  - Loading a ROM now display the full name in the message box.
  - [Windows] Upgraded MSVC compiler from version 5.0 to 7.1 (might bring
    a small improvement on performance). Removed ZLIB.DLL from the
    distribution and statically linked it to the executable.
  - [Windows] Fixed mekaw.cfg saving location. It was saving in a wrong
    place in some cases (depending how you run it).
  - Updated Danish translation (by Mark Klemp).
  - Added and modified entries in the checksum and compatibility lists.
    Some particular renaming includes:
      SMS - Asterix [A]                     --> Asterix [V0]
      SMS - Asterix [B]                     --> Asterix [V1]
      SMS - Chuck Rock 2 [A]                --> Chuck Rock 2 [Europe]
      SMS - Chuck Rock 2 [B] [Brasil]       --> Chuck Rock 2 [Brasil]
      SMS - Golfamania [1990]               --> Golfamania
      SMS - Golfamania [1989]               --> Golfamania (Proto)
      SMS - James Pond 2: Robocod           --> James Pond 2: Codename Robocod
      SMS - Lemmings [A]                    --> Lemmings
      SMS - Lemmings [B]                    --> Lemmings (Proto)
      SMS - Mortal Kombat 2                 --> Mortal Kombat II
      SMS - Pit Fighter [A]                 --> Pit Fighter [Europe]
      SMS - Pit Fighter [B] [Brasil]        --> Pit Fighter [Brasil]
      SMS - Rainbow Island [A]              --> Rainbow Island [Europe]
      SMS - Rainbow Island [B] [Brasil]     --> Rainbow Island [Brasil]
      SMS - Seishyun Scandal [Japan]        --> Seishun Scandal [Japan]
      SMS - Taz-Mania [A]                   --> Taz-Mania
      SMS - Taz-Mania [B]                   --> Taz-Mania (Proto)
      SMS - Tom and Jerry: the Movie [A]    --> Tom and Jerry: The Movie
      SMS - Tom and Jerry: the Movie [B]    --> Tom and Jerry: The Movie (Proto)
      SMS - Ultima IV [A]                   --> Ultima IV
      SMS - Ultima IV [B]                   --> Ultima IV (Proto)
      SMS - Wonder Boy 3: the Dragon's Trap --> Wonder Boy III: The Dragon's Trap (Proto)
      SMS - Woody Pop [Japan]               --> Woody Pop: Shinjinrui no Block Kuzushi [Japan]
      GG  - Lemmings [A]                    --> Lemmings
      GG  - Lemmings [B]                    --> Lemmings (Proto)
      GG  - Monster World 2 [Japan]         --> Monster World II
      GG  - Mortal Kombat 2                 --> Mortal Kombat II
      GG  - Wonder Boy 3: the Dragon's Trap --> Wonder Boy III: The Dragon's Trap (Proto)
    Please use SMS Checker for your ROM renaming needs!
    http://www.smspower.org/maxim/smschecker


 MEKA 0.65c
 ----------
  - Fixed Z80 interruption timing.
    I have tested several "sensitive" games and nothing should have been
    broke, but please e-mail me if you notice anything unusual.
    In addition, the fix allowed to remove the need for a custom parameter
    in MEKA.NAM for 5 more games.
  - Fixed MEKA.PAT which added a bug to pausing in Wonder Boy III [SMS].
    The bug was a leftover of one of my working session, and I forgot to
    remove it before releasing the official distribution of version 0.65b.
  - Fixed user inputs during the next frame after loading a savestate.
    Previously, they were reseted on savestate loading, meaning that your
    inputs were ignored on the first 1/60th second after loading. Although
    this is not dramatic in most cases, in a few it made savestates unusable
    because the player would die on loading without being able to react.
    Now you have that missing 1/60th second.
  - Attempted to fix the occasionnal crash on shutdown. I don't know if it
    happens anymore or not.
  - Updated Swedish translation (by Henrik Sankala).
  - Added and modified entries in the checksum and compatibility lists.
    Some particular renaming includes:
      SMS - Double Target [Japan]   --> Double Target Cynthia no Nemuri [Japan]
      SMS - Formula 1               --> F1
      SMS - Machine Gun Joe [Japan] --> Comical Machine Gun Joe [Japan]
      SMS - Pit Pot [Japan]         --> Fushigi no Oshiro Pit Pot [Japan]
      SMS - Sonic the Hedgehog [A]  --> Sonic the Hedgehog [V0]
      SMS - Sonic the Hedgehog [B]  --> Sonic the Hedgehog [V1]
      SMS - Transbot                --> TransBot
      GG  - Columns                 --> Columns [Japan]
      GG  - Formula 1               --> F1
      GG  - Pengo                   --> Pengo [Japan]
      GG  - Jungle Book             --> Jungle Book [USA]
      GG  - Woody Pop               --> Woody Pop [V0]
    Please use SMS Checker for your ROM renaming needs!
    http://www.smspower.org/maxim/smschecker/smschecker.htm


 MEKA 0.65b
 ----------
  - Updated k.
  - Fixed TV Mode which was accidentaly broken in version 0.65 (due to
    recent palette system rewrite). Sorry for the inconvenience. I also
    took the occasion to slighty optimize it.
  - Fixed still screens corruption in Game Gear version of "Bart vs. the
    Space Mutants". It was affected by a timing issue introduced in a
    previous version. The fix (using a MEKA.NAM feature) is temporary until
    a better one can be found.
  - [Win] Added a simple first-run setup screen, to select soundcard,
    sample rate and language. Additionally, you can show the setup screen
    on startup by passing the -SETUP command line parameter to MEKA.
  - Added "cabinet_mode" setting in MEKA.INP, to invert ESCAPE and F10 keys.
    Arcade/emulation cabinet owners often have ESCAPE mapped to a key they
    want to use to quit. This feature is a quick addition until full key
    redefinition is supported.
  - Added auto-repetition on keys F6/F8 (savestate selection).
  - Added support for mouse wheel in file browser and documentation viewer.
  - Fixed state saving crash that could happen when sound is completely
    disabled and no FM emulator was selected.
  - Started migrating from my own general purpose C library to standard
    C library (LibC) for various functions.  This should provides speed
    improvements in the initialization process.
  - Added and modified entries in the checksum and compatibility lists.
  - Various minor changes. Can you stop them all?


 MEKA 0.65
 ---------
  - Rewrote palette system in the attempt of reducing palette changes
    even more. As some people noticed, on some computer, the Windows
    version had terrible slowdown and incorrect colors at some occasion
    and especially in Game Gear games.
    This is due to some DirectX video drivers which force waiting for
    a screen refresh before each palette change. Problem is that some
    drivers does that and some other do not. Palette changes in MEKA
    are now better grouped so that the wait should not affect gameplay
    in most cases.
    Please report if you notice any palette related problem in this version.
    Windows users, note that you can still get color flickering in some
    video modes. But overally, things should be much better.
  - Rewrote hardware sprite collision emulation for video modes 1, 2 and 3
    (used by SG-1000/SC-3000/SF-7000/Coleco Vision software, mainly).
    Sprite collision are now processed line per line, for a very accurate
    result - at the cost of a slighty slower emulation. Although machines
    using those video modes usually can't poll for the current line, some
    software can manually do a similar job, making this precise value useful.
    This fixes "Froggy" and "Gold Miner" (SF-7000), and maybe more.
    Please report if you notice any collision related problem in this version.
  - Fixed SMS/GG scanline counter to return accurate values.
  - PAL/SECAM modes now have 313 lines instead of 312.
  - Fixed "Daffy Duck in Hollywood" (SMS) which in some cases had
    incorrect scrolling on the level score screen.
  - Fixed palette switching in "F-16 Fighter" / "F-16 Fighting Falcon",
    colors were incorrect during one single frame after the title screen.
    This bug was introduced in a previous release.
  - [Windows] Fixed screen capture (did crash with some DirectX drivers
    in version 0.64c).
  - Added Chinese flag in the file loader and associated the early dump
    of Hokuto no Ken with it.
  - Added and modified entries in the checksum and compatibility lists.
    Fixed a few inconsistent entries.
    Some particular renaming includes:
      Chase H.Q.        --> Taito Chase H.Q.        (official name)
      Story of Mio      --> Hoshi Wo Sagashite...   (official name)
      Hokuto no Ken [B] --> Hokuto no Ken
      Hokuto no Ken [A] --> Hokuto no Ken [China]
  - Updated documentation.
  - [UN*X] Released a quick & dirty GNU/Linux build, codenamed "MEKANIX".
    It is not perfect and I do not plan to completely support it, but I hope
    it can be useful to some people (some asked for it).
    Please read MEKANIX.TXT if you want to use it.


 MEKA 0.64c
 ----------
  - Fixed the bug that would sometimes shut down sound when resetting
    or loading a savestate in full-screen mode.
  - Fixed the bug that would not save battery backed memory when switching
    the virtual machine Off (thanks Ian Hodgkinson for the precise report!).
  - Fixed Light Phaser border limit when left column is blanked. In some
    cases, the limit was enabled where it should not have.
  - Light Phaser is now usable inside of the GUI, although this is obviously
    not recommended since you can move the game window accidentally.
  - Redumped and verified plenty more cartridges. Added and modified entries
    to the checksum and compatibility lists, including new alternate dumps.
    Some particular renaming includes:
      James Bond 007: The Duel [B] --> James Bond 007: The Duel
      James Bond 007: The Duel [A] --> James Bond 007: The Duel [Brasil]
      Paperboy [B]                 --> Paperboy
      Paperboy [A]                 --> Paperboy [USA]
    Also modified compatibility list to be coherent with checksum list
    regarding alternate version naming.
  - MEKA now switch back to interface if fullscreen video mode cannot be set,
    instead of quitting.
  - Virtual machine picture positionning in the GUI now takes account of the
    resolution (in GUI another resolution than default 640x480 is used).
  - Updated history section of the documentation.
  - Added and modified entries in the checksum and compatibility lists.
  - [Windows] Fixed some of the screen corruptions when another application
    is getting the focus or writing to the screen (untested).
  - Added SG-1000 games to the multiplayer games list file (MULTI.TXT).
  - Updated Danish translation (by Marc Klemp).
  - Added CPU state dumping feature in debug mode.


 MEKA 0.64b
 ----------
  - Added patches to be able to run SMS BIOS images (Alex Kidd in Miracle
    World, Hang On / Safari Hunt, Sonic the Hedgehog...) as standard games.
  - Fixed an amazingly stupid problem that's been around since years, which
    was that Game Gear colors were considered as 9-bits instead of 12-bits.
    Colors are now more precise, and you can notice a clear difference by
    looking at the ground in FIFA International Soccer.
    Thanks goes to Carleton Handley (the FIFA programmer on Game Gear) for
    clearly pointing that out to me.
  - Fixed VDP IE1 bit controls on Z80 IRQ Line.
  - Fixed top of the screen in video mode 3, and optimized its refresh.
    (used by Cabbage Patch Kids Picture Show and Smurf Paint & Play Workshop)
  - Added Danish translation (by Marc Klemp).
  - Patches write commands (in MEKA.PAT) now support multiple bytes in
    a single line.
  - Added and modified entries in the checksum and compatibility lists.
  - Added "Skydrop" theme by Peter Deas (need to uncomment it in MEKA.THM).
  - [Windows] Removed some unused bits in Allegro library and statically
    linked it within the executable, reducing the ZIP file by 150 Kb!


 MEKA 0.64
 ---------
 Important changes were applied to the sound engine. As always, please
 contact me if notice something unusual, if you have any comment or doubt.

 PSG fixes that were applied in version 0.63 are apparently causing a bug
 to Out Run (SMS) running in FM mode. I searched but was unable to fix it
 as of yet. :(

  - Cleaned and modified various part of the sound engine.
    Please report if you notice anything unusual.
  - [Windows] Disabled access to hardware YM-2413 emulation using OPL
    under Windows 2000 and XP, avoiding crashes in certain cases... Well,
    this time it should works :-)
  - [Windows] FM Sound through OPL is now muted when switching to other
    applications. PSG can not muted yet due to a technical constraint.
  - Fixed muting of OPL on pause and quit (previously you were sometimes
    able to hear very low hanging notes with a very high volume).
  - Implemented software YM-2413 emulator by Mitsutaka Okazaki.
    Although hardware YM-2413 emulation using OPL sounds cooler, this
    emulator seems more faithful to the original chipset. It also works
    on all systems, including Windows 2000 and XP. The downside is that
    doing software synthesis takes a lot of time, and thus a fast computer
    is recommended (at least 600 Mhz) to play MEKA with software YM-2413
    emulation.
  - Implemented a new software PSG emulator by Maxim (with modifications).
    PSG emulation is pretty straightforward, but this emulator takes
    account of several Maxim finds, such as the real sequence of pseudo
    random numbers, as generated by the noise channel.
  - Added refresh rate settings to GUI and Blitters. An advanced user
    can now setup a video mode at 60 Hz with vsync enabled and auto frame
    skipping disabled, for a smooth video refresh.
  - Fixed PSG output that was previously too low and unsigned.
  - [Windows] Attempted to fix some crashes subsequent to freeing a ROM.
  - Added entries to the checksum and compatibility lists.
  - Updated documentation.


 MEKA 0.63b
 ----------
  - [Windows] Disabled access to hardware YM-2413 emulation using OPL
    under Windows 2000 and XP, avoiding crashes in certain cases.
  - Removed rare PSG debugging messages that were accidentally left.
  - Fixed timing of the {LD,CP,IN,OT}[ID]R transfer/comparaison Z80 opcodes,
    which were made too slow by 8 cycles in version 0.63.
    "The Castle" (SG-1000) was affected.
  - Fixed Sega Keyboard mapping for the "Yen" key on Japanese keyboard
    (untested). Note that the mapping for certain specials keys seems not
    to be right yet using the Windows version.
  - Performed some minor calling optimizations.
  - Updated Dutch, Deutsch, Italian, Spanish and Swedish translations
    with missing messages. (Thanks to their respective mainteners!)


 MEKA 0.63
 ---------
  - Implemented a cyclic color allocation algorythm, reducing palette
    changes even more in some games. Users with videocard/drivers having
    problems changing palette can expect less slowdown in Game Gear games.
  - Tested every single Master System games, and wrote a multiplayer games
    list out of them. It is included in the emulator (MULTI.TXT).
  - Added 21 missing undocumented Z80 opcodes in the ED instruction set,
    including the wonderful OUT (A), 0.
  - Fixed PSG emulation. The holding note after text boxes shows in
    "Alex Kidd in Miracle World" is no more, and noise channel writes were
    fixed (as used by CodeMasters games: Micro Machines drums now sounds
    correctly, etc...). Thanks to the great Maxim for his informations!
  - Fixed Light Phaser shooting position for when left column blanking is
    enabled (a bug leaked in since a few version).
  - Fixed 64-bytes ROM footer detection.
  - Fixed a bug affecting Hardware Reset and ROM reloading on SG-1000/SC-3000
    and Colecovision emulation. As far as I know, only "Pac-Man" (Coleco)
    was affected after an Hardware Reset, but other ROMs could as well.
    Thanks to James Carter for the bug report.
  - Fixed a two-years-old bug that may lead MEKA to crash when loading
    a savestate that was previously used under the debugger.
  - Fixed Sega Keyboard mapping for the unusual "Pi" / "Ro" key, so
    Japanese users can use it at its standard mapping location.
    Thanks to Yujiro for the bug report.
  - FPS Counter is now enabled/disabled by pressing Alt+F, instead of
    keeping F pressed.
  - [Windows] Fixed time display.
  - Updated to newer GCC version, hopefully little improving performances.
  - Added and modified entries to the checksum and compatibility lists.
    Some interesting ones I could rename after redumping:
      Alex Kidd in Miracle World [A] --> Alex Kidd in Miracle World [Export]
      Alex Kidd in Miracle World [B] --> Alex Kidd in Miracle World [USA]


 MEKA 0.62c
 ----------
  - Various fixes.
  - Added "compatibility list" and "changes list" items in the help menu,
    allowing you to open them with the internal text viewer.
  - Released Windows version.


 MEKA 0.62b
 ----------
  - Sorry for the huge delay in such a minor update. I've tweaked the Z80
    core a bit again to fix a little bug that I introduced myself and which
    puzzled me for a while. I took the occasion also to upgrade to Marat's
    latest debugger (now showing inline interrupt informations).
  - Battery backed RAM is now scanned so unnecessary pages are not saved
    in the .SAV file (this was previously already done, but only inside
    of save states).
  - Added new entries to the checksum and compatibility lists.
  - Updated Spanish localisation.


 MEKA 0.62
 ---------
 Compatibility notes:
  - Sonic Blast [GG] minor glitches on title screen in non Japanese mode
    has been confirmed to appear on a real Game Gear, so the game is now
    marked as perfectly working.
  - Thanks to the new 93c46 EEPROM emulator, Game Gear perfect compatibility
    has now increased to 98.09% (counting like FreezeSMS does, that gives us
    a whooping 150.00% :)
  - Statistics: as far as I know, out of the 7 Game Gear games marked as
    NON-WORKING, 5 games requires a simulation of LCD blurry persistance to
    show up without flickering, 1 may be severly broken (not possible to
    complete the game), and 1 is minorly broken.

 As always, please report if you find out anything you feel as not emulated
 PERFECTLY: even a single suspicious pixel, etc.. Thank you!

  - Rewrote 93c46 EEPROM emulation from stratch, it now works and saves
    data properly. This fixes the following Game Gear games:
      - Majors Pro Baseball
      - Nomo's World Series Baseball (J)
      - Pro Yakyuu GG League (J)
      - World Series Baseball [A]
      - World Series Baseball [B]
      - World Series Baseball 95
  - Emulated onboard 64 kb RAM chip of Ernie Els Golf (GG).
  - For the sake of accuracy, started to implement emulation of the four
    slighty different VDP chipsets used in Master System 1/2, Game Gear and
    Megadrive (compatibility mode). They all have subtle differences, causing
    some games not to work perfectly on all of them.
  - Fixed glitches in Ys (Japanese version), using 315-5124 VDP emulation.
  - Fixed bugs in Z80 emulation, letting the Game Over screen for Rambo III
    to appears normally - and this required many many hours of work! (thanks
    to Jonas Persson for reporting the bug). Also changed behavior of EI
    instruction, fixing Double Dragon for Game Gear (again).
  - Fixed VDP refresh disable emulation for Game Gear.
  - Fixed YM-2413 state restoring when loading a save with FM playing.
  - Now store YM-2413 state initialization in VGM files.
  - If available, store Japanese game name (in romanji form) in VGM files.
  - Fixed shifted instruction offset in debugger.
  - Updated TECH.TXT with instructions about how to build a DB-9 adapter
    to connect SMS Joypads on your PC.
  - Added full French (by Overture 1928) and Swedish (by Henrik Sankala)
    localisations. Complete Italian localisation (by Andra Ballandino).
  - Fixed minor display bug in the Inputs configuration tool.


 MEKA 0.61
 ---------
 This version may or not have minor glitches on certain games (like, a single
 pixel or a single blinking row at the top or the bottom of the screen).
 Please DO report those glitches if you notice any. Thanks!

  - Moved 104 messages to MEKA.MSG, allowing for full localization of
    the menus. 99% of MEKA is now localizable. Updated the following
    languages: English, German, Redneck, Dutch, Portuguese and Spanish.
  - Improved Z80 core (timing and interrupt emulation bug).
  - Fixed Rise of the Robots (GG), MEKA being the first emulator to play
    it without glitches (and even without, it sucks! :)
  - Fixed most or all (?) glitches in Formula 1 (SMS) two-players mode
    (maybe not the right way yet).
  - Fixed Double Dragon (GG) which was not working since an update of
    the Z80 core (from fMSX) several version ago.
  - Country changes now immediately takes effects (no need to reset).
  - Tweaking interrupt emulation for SG-1000/SC-3000/SF-7000 and Coleco
    Vision drivers. Those changes should not affect anything.
  - Fixed 'Parallel' video blitter, odd frames were not updated when
    using the blitter with software 3-D Glasses mode enabled.
  - Fixed crash of SF-7000 driver when loading a corrupted floppy disk.
  - Fixed YM-2413 logging in VGM files (Register & Value were reversed!)
  - Updated SDSC Header support for version 1.01 (adding Author field).
  - Added Golden Axe theme by Death Adder. (uncomment to use in GUI)
  - Updated to Allegro WIP 3.9.39 and reapplied all custom patchs.
    Changed SideWinder autodetection process a bit. Hope it works!
  - Reduced executable.


 MEKA 0.60
 ---------
  - Improving timing in Z80 core.
  - Fixed voices that weren't ok (Alex Kidd: the Lost Stars..).
    Voices in many many games were tested, finally marked them as 'Ok' in
    the compatibility list.
  - Due to timing improvments, now Space Harrier [50 Hz version] has correct
    glitches (like on a real system) when running in NTSC mode. It is now
    configured to automatically use PAL/SECAM by default.
  - Removed the need of specific IPeriod setting for some Codemasters
    games, meaning that they will now run even if you delete MEKA.NAM.
  - Added sample accurate VGM logging, allowing to log voices. The option
    was previously grayed, it is activated now that all voices are Ok.
  - Updated to VGM version 1.01, to include original TV type information
    (NTSC or PAL/SECAM) in the file, allowing to play at a different rate.
  - Fixed minor sprite masking bug affecting scrolling games in certain
    conditions. Evander Holyfield Boxing (Game Gear) was affected.
  - Added support for Coleco Vision header/footer in order to load the
    newly released "Pac Man" and "Dig Dug" ROMs from CGE 2001.
  - Fixed a minor bug when loading an in-game savestate from the BIOS.
  - Fixed file loader sorting so that if present, ".." is always on top.
  - Added/fixed entrys to the checksum and compatibility lists.
  - Added two Sonic themes by H Hog. (uncomment to use in GUI)


 MEKA 0.59b
 ----------
  - Fixed vertical scanline counter emulation.
  - Fixed a minor hardware collision bug introduced in version 0.59.
  - Fixed usage of '%' in ROM comment field.
  - Changed message logging (with /LOG) to avoid cutting text in the file
    when it doesn't fit on the GUI message box.


 MEKA 0.59
 ---------
  - Various changes to the sound engine:
     - Fixed PSG Periodic Noise emulation (bass in some Marble Madness tunes,
       Daffy Duck in Hollywood, and few other games). Thanks Ziria and Maxim!
     - Added PAL/SECAM machines accurate base clock for PSG wave generation
       (pitch is around 1% off from NTSC machines).
     - Added VGM logging. VGM (for Video Game Music) is a new file format
       recently developed on S8-Dev with collaboration of Dave, Maxim and
       some other people. Maxim has wrote a WinAMP plugin already.
       Check out the newly created Music Section on SMS Power at
       http://www.smspower.org/music !
     - Added PSG registers to the technical information window.
  - Fixed a very weird bug introduced in version 0.58, where a certain sprite
    configuration and positionning could screws up the whole emulator! This
    caused problems in Terminator 2: The Judgment Day and Ghouls'n Ghosts.
  - Added Korean mapper (9) emulation, as used by Dodgeball King.
  - Added Italian messages translations (by Andrea Ballandino).
  - Added German messages translations (by Tilman Hesse).
  - Fixed some PortuguE messages.
  - Fixed/added accentued characters in some Brazilian game names.
  - Added new "Mario Must Die" theme, with a nice handdrawn picture :-)
  - Added new entrys to the checksum and compatibility lists.
  - Fixed and improved various minor things.


 MEKA 0.58c
 ----------
  - Fixed the missing soundcard selection menu in some cases.
  - Added printing of SDSC Header informations when found. The SDSC Header
    has been defined and created by the SMS Power developement team (based
    on Eric Quinn's idea) for homebrewn programs.
  - Drawn Latin-Extended characters (Unicode 0080-00FF) in the big font.
    Accents are now usable everywhere in MEKA. Be sure to use accents from
    the Latin-Extended table (usually used by Windows programs, not DOS ones).
  - Added Spanish messages translations (by Antonio J. Bazalo).
  - Added PortuguE messages translations (by Rodrigo C. Rubio).
  - Added "WIP" (Work In Progress) parameter in language definition, to
    disable warnings and informations when the language is uncomplete.
  - Squashed one very minor flag bug in the browser when a ROM had an
    number after a space, at the end of its filename.


 MEKA 0.58b
 ----------
  - Fixed various minor bugs.
  - Fixed two scrolling emulation bugs in video mode 5. They did not
    affect any game, but for the sake of accuracy, better fixing them!
  - Added Dutch messages translations (by Mark van Tilburg) and Redneck
    messages translations (by Maxim, using Dialectizer). Fry mah hide!
  - Added /LOAD command line parameter, to start directly with a savestate
    loaded (so you can make yourself batchfile loading a certain state.)
  - Added several new entrys to the checksum and compatibility lists, and
    fixed some existing ones. Added an USA flag and set the flag to all
    SMS games only released in USA (Alf, King's Quest, Montezuma's Revenge).
  - Added one new happy theme from the french movie "Am‚lie Poulain".


 MEKA 0.58
 ---------
 Again, please report if you notice any bug/glitche with any game, that is
 not mentionned in the compatibility list. The VDP fix applied in this
 version is also a massive compatibility test, and I would like to know
 if it has any unexpected behavior on other games. So play, play, play! :)

  - Added PSG sound logging to WAV files, accessible from the Sound menu.
  - Rewrote messaging system, added localization support.
    Moved all messages to an external file, MEKA.MSG. You can now change
    80% of the texts used in MEKA, and translate it to the language of your
    choice. I am however NOT YET sure about how accents will work, since it
    depends on the font used.
    This feature required a pass on all existing code and so took plenty
    of time to do (10+ hours), I might have screwed a few messages during
    the change, so be sure to send me an e-mail if you notice anything
    unusual.
  - Implemented a VDP quirk found in Master System 2 but not Master System 1
    or Game Gear, discovered by Charles Mac Donald (thanks Charles!). This
    one fixes Cosmic Spacehead *BUT* might screws up few other games. I did
    a bit of testing but couldn't do them all again, so please report if you
    notice anything unusual with another game.
  - Improved hardware sprite collision accuracy, fixed a bug in some
    cases where it was previously framerate dependant, and rewrote the
    whole code in assembly.
  - Changed initializations messages and some other messages.
  - Fixed an incorrect numbers of TV lines in PAL/SECAM TV emulation (due
    to a typo - thanks goes to cgfm2 for pointing me this stupid error!),
    allowing removal of a few custom MEKA.NAM parameters (Daffy Duck in
    Hollywood..).
  - Fixed the annoying bug that caused crashes on startup under DOS when
    sound was enabled.
  - Fixed a minor bug in Codemaster mapper emulation, that affected the
    checksum check of 'Drop Zone' (although the game worked).
  - Fixed crash when using a patch defined in MEKA.PAT that write outside
    of any existing data.
  - Added (very) quick and (very) dirty frame-per-frame advance by pressing
    ALT-F12. In fact, it will unpause the game then pause it back next frame.
  - Updated Colecovision compatibility list and added some product IDs,
    thanks to Tincho DJ.
    The current state with Colecovision games is: a mess :(
    Someone will lots of Colecovision knowledge would be very helpful
    to help sorting out all bad dumps, testing games and redumping others.


 MEKA 0.57b
 ----------

 Lots of fixes, for a total of twenty working hours.
 Please also note in documentation that *I HAVE MOVED HOUSE*, that is
 in case you planned to send something.

  - Various minor fixes and improvements.
  - Fixed startup delay (and sometimes crash) when autodetecting Sidewinders.
  - Fixed and improved the new dynamic palette handler, avoiding palettes
    overflow on some Game Gear games such as Sonic & Tails 2 / Triple Trouble,
    Sonic 1 or Deep Duck Trouble. The fourth level of Sonic 1 is however
    not yet perfect when both air and water are shown on screen.
    Thanks to ICEknight for pointing the bug out.
  - Made various clean and corrections to the main sound engine structure.
    It should not have broken anything, but please report if you notice
    something unusual. Noticable changes are that:
     - MEKA refuse to start if sound initialization has failed.
     - Sound is now muted while certain long operations are being processed.
     - Sound card type is not lost if you only disable sound.
     - An incorrect BLASTER environnement variable is now reported.
  - Added an algorithm to automatically detect certain mappers and select
    them when the ROM is unknown.
  - Fixed vertical scrolling emulation in certain special cases.
  - Fixed zoomed sprites in SMS/GG video mode. They were accidentally
    screwed up by a typo (!) in previous version, and affected Virtua
    Fighter Mini.
  - Fixed a bug with checksum handling. In some cases, ROMs with only a
    few different bytes were previously not recognized as different.
  - Fixed usage of the ';' key in the input system (now usable), previously
    the character was considered as beginning a comment in MEKA.INP.
  - Fullscreen messages are now correctly displayed when the current emulated
    system uses a resolution higher than your fullscreen resolution.
  - Fixed debugger breakpoint when loading a save state.
  - Added some new entrys to the checksum and compatibility lists,
    and fixed few existing ones. Added a french flag, currently used
    for games translated in french.


 MEKA 0.57
 ---------
 Note: I made lots of little sources changes in this version. Things have
 been tested, but in case you notice anything unusual, please contact me.

  - Rewrote dynamic palette handler, minimizing actual hardware palette
    changes, reducing snow and generally reducing flickering when games
    were abusing of palette changes (like the "Happy Birthday" demo, or
    some Game Gear games). Due to that change, Palette and Tile viewers
    are now slighty slower than before, but since they are not used for
    playing, it is fine.
  - Rewrote hardware sprites collision emulation a more accurate way,
    fixing Cheese Catastrophe (SMS) bonus catching. There was an easy
    way to get it to work, but technically speaking, it was not the
    right one. Instead I emulated the feature a better way so that
    theorically, any tricky uses of it should be working. Speed might
    have dropped of about 1 FPS on slow computers.
    (Thanks to nop.nop for the bug report.)
  - Added data dumping facilities for developers and hackers.
    You can now dump the following to a file:
      - RAM (raw or text hex/ascii)
      - VRAM (raw or text hex/ascii)
      - Palette (raw or text colors definitions)
      - Sprites (raw or text sprites definition)
      - VDP Regs (raw or text binary/hex)
      - OnBoard Memory (raw or text hew/ascii)
    Those functionnalities are available by starting MEKA with /DEBUG.
  - Added Sega Keyboard (SK-1100) hardware detection emulation. You can
    know use the emulated keyboard to play SG-1000 (and early SMS) games
    supporting it.
  - Added a 'none' value for joypad driver, to disable any kind of
    detection (as it may be slow on some computers). See MEKA.INP.
  - Battery backed RAM optional pages are now not saved when their
    content is null.
  - Optimized the technical information viewer that was previously
    too slow. Also made cosmetic changes to the informations shown.
  - Fixed error message that said MEKA was unable to write SaveRAM
    to write, while it did correctly.
  - Fixed savestate loading bug in some very specific cases when using
    a custom mapper.
  - Fixed sprite drawing in overscan video mode.
  - The selected tile in the tile viewer is now refreshed if modified.
  - Fixed PSG volume bug, where volumes 14 and 15 were actually the same.
    (thanks to Martin Konrad for noticing it)
  - Changed the 'palette_bright' option to a 'palette' option that can
    be either 'muted' or 'bright', the later being now the default, since
    many people suggested that it was better than the old default one.
    Also added a switch in the GUI options box to change it dynamically.
  - VSync is now automatically avoided if a speed faster than 70 hz is
    being used. So you can use a blitter with VSync enabled and still
    profit of accelerations if you want them sometimes (skip intros, etc..).
  - Partially rewrote popup menu code. Also hacked a bit to fixed the bug
    when more than 32 themes were enabled on the same time.
  - Added the usual amount of new themes and new database entries.
  - Added some new comments to the configuration file.
  - Converted all ASM code to NASM format, for better portability.
  - Ported MEKA to Windows. Cool.


 MEKA 0.56
 ---------
  - Added Sega Super Control Station emulation, codename SF-7000.
    The SF-7000 is a rare addon for the Sega Computer 3000, providing it
    with a 3" Floppy Disk Drive, 64 kbytes of RAM, a parallel printer port
    and a RS-232C port. The later two are only partially emulated as anyway
    there is no way to use the emulated connection (ex: for printing) yet.
    Many thanks goes to Marc Le Douarain for his help and dumps of his old
    disks, and Ulrich Cordes for the FDC-765 emulation (see documentation).

    I added in the documentation a paragraph about how to use SC-3000 and
    SF-7000 Basic software, as it is needed to load programs for the later.
    Also, I am still looking for a real SF-7000 and any softwares!

  - Added sprite flickering emulation in video mode 5 (SMS/GG), and
    interfaced so you can now enable it if you feel like playing shooters
    with invisible bullets. It is available in the VIDEO->FLICKERING menu.
  - MEKA is now ignoring those rarely present 64 bytes footers.
  - Fixed Ninja Gaiden (GG version) hand on intermission animation.
  - Fixed PAUSE button which was broken in version 0.55b.
  - Fixed blinking sides when a program was using text mode (Sega Basic, ..)
    with a border color different than black.
  - Fixed Sega Keyboard letters color.
  - Fixed /LOG command line option which was ignoring the given filename.
  - Added and fixed entrys in the compatibility and checksum lists.
  - Various minor changes - changed messages, fixed typos..


 MEKA 0.55b
 ----------
  - Added configurable mouse speed values in the MEKA.INP file.
  - Fixed mouse under Windows NT / Windows 2000.


 MEKA 0.55
 ---------
  - Added builtin documentation, accessible from the "HELP" menu.
  - Entirely revamped the input system. I originally fixed Paddle Control
    emulation then noticed the problem I was having with Super Racing was
    due to a bug in the original game. I did not feel like adding a cheap
    hack and beside it was time to clean it up, I just needed a reason :)
    Inputs related changes you will notice are:

      - Added configuration tool, showing small pictures of peripherals
        being used (hope you like the pictures, as I spent a long time
        drawing them). This tool allows you to see currently available inputs
        sources, enable/disable them, and change their key/buttons mapping.
        No more dealing with obscure scancodes numbers (finally).
        To keep going with the MEKA tradition, every configuration bit is
        stored in a human-readable and manually editable file: MEKA.INP.
        You can access most of the functionnalities from under the interface
        but experienced users might want to check this file out. The new
        input system is high-level oriented and allows you to do many nice
        things like playing with two pads on the same time or mapping pause
        to a mouse button. Whatever you feel.
      - Any joypad/joystick corresponding to the driver selected in MEKA.INP
        should be automatically enabled on starting, and available for use.
      - Renamed left occurences of peripherals that were incorrectly named
        (Paddle Controller -> Paddle Control, Light Gun -> Light Phaser)
      - Improved Paddle Control emulation so that they will work in Japanese
        mode, and allowing Super Racing to detect a paddle when plugged on,
        instead of the regular joypad.
      - Fixed a precision bug in Paddle Control 2 emulation.
      - Added support for a second Sport Pad / Trackball.
      - Added digital input source emulation with the mouse, so basically
        you can play any joypad game with a mouse now. Expect being really
        frustrated with most games, but it is actually very cool for shooters
        and games where you do not have to do 'long' movements. Try R-Type.

  - Added 3-D Glasses emulation, with both software and hardware modes:
      - Software mode let you play 3-D games by showing only
        images of a choosen side (left or right).
      - Hardware mode supports REAL Sega 3-D Glasses connected on
        your PC through the communication port! See TECH.TXT for more
        informations about how to build a Sega 3-D Glasses adapter
        and enjoy a new dimension of videogaming :-)
        Warning: 3-D Glasses support through the COM port is still not
        in perfect stage, meaning that you may experience flickering.
        A blitter with VSync enabled is *strongly* recommended.
        Also stop playing every 30 minutes eyes you'll become blind :)

  - Tweaked VDP code for potentially more accurate side effect emulation.
  - Fixed sprite collisions in certain cases. The following Colecovision
    games are now perfectly playable:
      - Carnival (Bonus Level is ok)
      - Jumpman Junior (Ladders on level 3 are ok).
      - Pitfall 2 (No false hit on the third screen).
      - Venture.
    Thanks goes to the one who sent me a long e-mail about collision
    detection some months ago, but which I unfortunately lost and was
    then unable to answer. E-mail me if you are still around :)
  - Fixed hard pausing. You can now safely take screenshots after pausing
    with a message shown on the screen, as it will not be shown in the shot.
  - Fixed loading of very small ROMs, which affected Tic Tac Toe on
    Colecovision, and maybe your very own demos programs.
  - Implemented Antiriad's hack to Allegro - used in Raine - to permit
    usage of Sidewinders while their driver is loaded (not tested). Thanks!
  - Fixed the Eagle blitter which was not centered and showed garbage
    in some machines. Also fixed the default Eagle blitter configuration
    which limited speed to 30 FPS even on a very fast system. What a loss!
    By the way, Eagle does in fact looks nice with a few games. Try R-Type.
  - Slighty optimized memory accesses and tile refresh.
  - Changed the key to save screenshots from F12 to PrintScreen. If you
    are using Windows, be sure to configure the properties of your DOS box
    to enable the use of the PrintScreen key if you want to make screenshots.
  - Added F12 shortcut to hard pause emulation.
  - Added access to enabling/disable GUI Vertical Sync in the options box.
  - Fixed a bug that prevented Battery Backed RAM or EEPROM to be saved when
    freeing ROM.
  - Added a technical document (TECH.TXT) with basis informations about
    the systems, as well as the schematic for the 3-D Glasses adapter.
  - Reduced default FM writing delay, that should speed up the two games
    over-abusing of FM writes. Try R-Type title screen.
  - Added various name and checksum entries, and corrected many existing ones.
    Should have noted out all Game Gear games running in Master System mode,
    fixed some Colecovision names and date, and generally improved accuracy.
    Thanks goes to Maxim and Luke2 for their precious help! :)
  - Added Korean flag in the file loader and associated Super Tetris with it.
    There are still several Korean games to dump, however.
  - Fixed leap year calculation (for display of dates).
  - Fixed a crashing bug when passing too many parameters on command line.
  - Added the usual bunch of new GUI themes, and more pictures are available
    from the homepage.
  - Plenty of minor fixes here and here.


 MEKA 0.54b
 ----------
  - Made some very minor fixes.
  - Added two new themes (Deep Purple and Deep Brown).


 MEKA 0.54
 ---------
  - Updated to the documentation, improved many parts and added new things.
    Please read it!
  - Fixed invalid vertical sprite wrapping in video mode 2 (bug introduced
    in version 0.51, slighty affecting The Castle and maybe other games).
  - Added PSG wave synthesis sound rate setting in the configuration file.
    Rate is no more fixed to a weird value like in all previous versions,
    avoiding the clicks and noise with certains soundcards. You can also
    change the rate to the default values of 11025, 22050 and 44100 Hz from
    the GUI pop-up menus.
  - Added separate PSG channel enabling/disabling. Mainly useful for
    musicians who want to listen to different channels separately, but
    it is also very fun to disable some channels and play games with
    somewhat new musics :)
  - Fixed FM bug when hard pausing and unpausing in some games.
  - Addams Family, Operation Wolf and Sonic Blast now automatically run in
    PAL/Secam mode when NTSC is selected, due to the games having bugs in
    NTSC mode.
  - Fixed the badly positionned line of Hang On in Hang On / Safari Hunt.
  - If brutally forced to close (like when switching to a blitter using an
    invalid resolution), MEKA now switch back to its starting directory.
  - Added screenshot filename template to the configuration file. You can
    now configure weither you want padding, short or long filenames, etc..
    Also changed screenshot numbering starting value from 0 to 1.
  - Added "integer stretched" display of the themes background pictures
    (see MEKA.THM).
  - Added new themes, some of them using nice background pictures you are
    invited to download at http://www.smspower.org/meka/themes.


 MEKA 0.53c
 ----------
 Game Gear compatibility rate is now of 95.80%. It is the only unperfect
 system and that's mainly due to the lack of LCD screen persistence of
 vision emulation.

  - Kishin Douji Zenki very minor graphic bug was a bug in the game itself,
    not in MEKA. Thanks goes to Adol brothers for their help on this one.
  - Added a patch to fix a bug in Walter Payton Football (in the game itself)
    preventing it to works on machines with a FM Chipset.
  - Fixed Wanted patch, I had accidentally commented a line out.
  - Fixed California Games 2 minor graphic bug when selecting the top left
    entry of the menu (screwed in version 0.52). Thanks Pieter!
  - Added new entries to checksum and compatibility list.


 MEKA 0.53b
 ----------
 I finally figured out what was the problem of the major slow down in
 some video modes when page flipping was enabled. Actually using page
 flipping need to force vertical synchronisation in most video modes, so
 enabling them both will make the program synchronise twice per frame to
 the vertical refresh, causing speed to be limited to about 30/35 FPS.
 The default blitter definition files now have Page Flipping modes enabled
 by mode, replacing the obsolote VSync modes.

  - Fixed a bug preventing files to appear in the file browser under DOS.
  - Added all known Colecovision dumps to the checksum/names list.
    Names are based on Cowering's GoodColeco utility.
  - Game name is now dynamically updated under the GUI is a country change
    affect the current name.
  - Fixed "Rise of the Robots" by forcing NTSC mode when it is not enabled.
  - Added a patch to fix a bug in Wanted (in the game itself) preventing it
    to works on machines with a FM Chipset.
  - Fixed a bug sometimes happening where disabling background layer
    display wouldn't work.
  - Added 5 new themes (commented by default).


 MEKA 0.53
 ---------
 Master System compatibility rate has now reached the perfect 100.00%
 assuming out of the 373 tested ROMs none was broken in a recent version.
 Something major have changed in this version and which might screw just
 about any game. So if you find anything unusual that might be a bug,
 please report it to me. As soon as possible I'll spend a week trying
 all games again.

 Enabling page flipping is known to cut down the speed by a factor of two.
 This is obviously a bug as page flipping should not affect performances
 so at the moment I suggest avoiding it and enabling VSync instead.

 As a side news, I have ported MEKA to FreeBSD/NetBSD. It probably compiles
 under Linux also, and whenever I can get my hands on a computer running
 Windows applications at a correct speed, a Windows port will be worked on.

  - Fixed temporary sound bug when loading savestates in certains cases.
  - Added TV Type switch to change between NTSC and PAL/SECAM.
  - Improved tile viewer so that a click on a tile shows its number and
    the tile itself. Might be useful for developers and ROM hackers.
  - Improved file browser: added a "Reload Directory" button and a
    "Load Names" button to load full game names for all files.
  - Fixed Y's (SMS/J).
  - Added full TV Oekaki Graphic Board and Pen emulation, using mouse.
    Button 1 simulate a pen press and button 2 simulates the pen being away
    of the graphic board - when it is away you can use standard inputs. Now
    you will be able to draw with the emulator ^_^
    Thanks to Toshi for sending out the Graphic Board.
  - Fixed GP Rider (GG) road corruption.
  - Fixed NBA Action (GG) abnormal flickering.
  - Fixed NBA Jam TE (GG, previously unknown bug) and Surfs Ninja (GG).
  - Fixed reset key in Sega Keyboard emulation.
  - Fixed Gear Game communication port emulation somewhat broken in
    previous version and which affected Pac Attack.
  - Fixed secret games left side of the screen bug in fullscreen mode.
  - Improved auto frame skipper synchronization to the choosen speed.
  - Compiled with the newest patched Seal Audio Library, improving overall
    sound quality (16-bit mode was somewhat useless in previous versions),
    and ALLOWING SOUND TO WORK ON SOUND BLASTER 128 SOUND CARDS, finally.
    A big thanks goes to whoever patched Seal for that.
    (I guess it is someone to the MAME team, but I am not sure.)
  - File browser now go in the root of drive if current directory is invalid.
  - Removed a broken line in the MEKA.NAM file causing Back to the Future 3
    to show a black screen.
  - Added even more new entries in the compatibility and checksum lists.
  - Lot of sources changes and improvments.


 MEKA 0.52
 ---------
 Compatibility rates as of version 0.52:

  Master System: 99.72%
    (not perfect because of the Japanese version of Ys).
  Sega Game 1000: 100.00%
  Sega Computer 3000: 100.00%
    (excluding emulation of optional peripherals such as the Sega Printer)
  Game Gear: 95.03%
    (excluding gear-to-gear emulation used by certains two players games)

  - Fixed the minor glitches in:
   - Back to the Future 2
     (black section flickering between the road and status bar)
   - Gangster Town
     (little line of skyblue pixels on the top of the car in the first scene)
   - Operation Wolf
     (minor graphic glitches on the top of the bottom bar when shooting)

 Tested Wonderboy in Monsterworld on a real system and confirmed the minor
 glitch when the menu is vertically scrolling is a bug in the game itself.

 Did some research about Ys (J/FM), with help from Toshi.
 It is not considered anymore as a bad dump. The bug happening in MEKA also
 happens when using a real Game Gear or a Megadrive with an adapter.
 However the game show a perfect status bar on a Japanese Master System,
 so the bad behavior is considered as a bug of MEKA, even if in the first
 place it is due to a bug in the game code taking advantage of an odd
 behavior of the Japanese Master System.

 Also:
  - Improved run-time TMS9918 video mode detection.
  - Fixed Hyper Pro Yakyuu 92 (GG).
  - Reduced flickers in NBA Action (GG).
  - Fixed freezing until a key is pressed when loading the Japanese BIOS.
  - Fixed yet another silly bug introduced in previous version and screwing
    some SC-3000 software such as the Sega Basic.
  - Added new entries to compatibility and checksum lists. Also redone
    SC-3000 list with names corrections for Japanese educational softwares.
  - Fixed potential VDP bug - wasn't affecting any games, but could have.
  - Implemented MAME Z80 CPU Core but did not enabled it in the public
    version as it doesnt bring anything better than Marat's core: they
    are on par, but MAME license is quite limiting.
  - Improved documentation inside of the MEKA.BLT file.
  - Fixed a bunch of minor bugs. Fixed handing of ROM smaller than eight
    kilobytes. Fixed empty entry creation in the VFN database. Fixed a bug
    in windows repositionning when changing resolution.
  - Reduced executable size.

 And also:
  - Added background picture caching for a faster switch to the GUI when
    a big image is used on background.
  - Added a bunch of new themes into the distribution package.
    Background pictures for some of the themes are available on a new
    site at http://www.emucamp.com/meka/themes
  - As of now the PICS/ directory should be considered as the one everyone
    have to use to share themes easily. You can still have your own themes
    pictures stored anyway, anyway.


 MEKA 0.51 - OverClocked Edition
 -------------------------------
 SG-1000 perfect compatibility rate is now of 100%

  - Added the possibility of adding a custom background picture in themes.
    Keyword to be used in MEKA.THM is "background_pic". Pictures need to
    be in PCX format and a maximum of 128 colors will be used. You can
    zoom, tile or center the picture using the appropriate keywords.
  - Added desktop saving. Active windows and their position are now saved
    and restored back when loading MEKA.
  - Rewrote sprite engine for video modes 1/2/3, fixing the minor bug in
    Pitfall 2 (SG-1000) and Rockn'Bolt (SG-1000). Probably also fixed some
    Colecovision games. Added optional flickering emulation.


 MEKA 0.50
 ---------
 Master System perfect compatibility rate is now of 98.90%
 Games still causing problems are:
   Back to the Future 2
     (black section flickering between the road and status bar)
   Gangster Town
     (little line of skyblue pixels on the top of the car in the first scene)
   Operation Wolf
     (minor graphic glitches on the top of the bottom bar when shooting)
   Wonderboy in Monsterworld
     (minor glitche on the menu vertical scrolling line when pressing pause)
 Found out that the bug in Aerial Assault was happening on a real system.
 So it's not considered as a bug anymore.

 Next step will be to improve Game Gear perfect compatibility rate (94% now).

 First, reparing bugs introduced in MEKA 0.40:
  - Fixed accidentally left bug in SG-1000 interrupt emulation, fixing
    Championship Lode Runner and probably other games.
  - Fixed accidentally left minor scrolling bug in a few games (Castle of
    Illusion to name one. I forgot about the others).

 New stuff being:
  - Rewrote Light Phaser emulation. The following games are now playable:
      - Laser Ghost (Light Phaser is optional)
      - Missile Defense 3D
      - Operation Wolf
      - Shooting Gallery
      - Wanted
  - Improved various bit of emulation to fix the following games:
      - Robocop 3 (SMS): does not crash anymore when pausing.
      - Back to the Future 3 (SMS): have minor title screen bug fixed.
      - Sonic Drift 2 (GG): bottom of screen is correct now.
      - Out Run (GG): music now plays.
  - Added Game Gear vertical scrolling lock emulation (fixing Fray).
  - Added wide effective area emulation (2 Star Trek games on Game Gear).
  - Implemented better systems hardware differences to allow detection.
    Renaming Pit Pot (SMS) to the .SG extension and running it will
    now show a custom error screen! Thanks goes to Yujiro to the notice.
  - Slighty optimized Master System and Game Gear screen refresh.
  - Rewrote blitters handling system:
      - Added blitters definition file (MEKA.BLT) where you can configure
        fullscreen video modes drivers, resolution and effects, and create
        your own video modes this way.
      - Added "TV Mode" blitter that simulate accurates TV scanlines.
      - Added "Double" blitter. Nice uses of it are:
          - Doubling screen with 512x384 mode (getting true Fullscreen).
          - Doubling screen in a tweaked mode (Game Gear with big pixels).
            If you find any suitable mode for Game Gear other than the ones
            listed in the MEKA.BLT file, please tell me about it.
      - Added "Page Flipping" option to blitter (reducing flickers)
      - Included "Perfect" blitter definition with all best features enabled
        (512x384 resolution, TV Mode, Doubled Fullscreen, Page Flipping and
        Vertical Synchronisation) for people with *very* fast computer.
      - Removed hotkeys to enable/disable the Scanlines, Eagle and Parallel
        effects. They are now part of blitters configuration. The current
        blitter can be changed by pressing F1.
  - Rewrote frameskip handling system and added speed throttling.
      - F2 key now switch between standard and automatic frameskipping.
      - F3 decrease speed in automatic mode, else decrease frameskip.
      - F4 increase speed in automatic mode, else increase frameskip.
  - Added icons package from various contributors (see ICONS.ZIP).
  - Added Massage savegame converter. Rename a .MSD file in the MEKA
    naming convention and it will be automatically converted when loading.
    You might in some cases experience sound or various other problems
    with certain games. The usual solution is to pause and unpause the
    game, else try to change screen/level.
  - Slighty improved voice emulation.
  - Rewrote drivers handling system. It is easier to maintain internally now.
  - Color related stuff:
      - Fixed potentiel palette problems with some video card/mode couples.
      - Revamped whole palette update handling (reducing snow).
      - Palette viewer now show no more than the correct number of colors
        in SG-1000/SC-3000/Coleco mode.
  - Fixed configuration file problem when using PSX and N64 joypads.
  - Added new games and product numbers to compatibility and checksum lists.
  - Added mouse button 2 shortcut to switch between the two Light Phasers.
  - Added some new GUI themes - uncomment in MEKA.THM file to use them.
  - Fixed file browser bug when overwriting recognized ROMs with unknown
    ones would keep the old, recognized name showing.
  - Fullscreen captures now ignore status message and filters/effects.
  - Made some structural optimisations, increasing speed of a few percents.
  - Fixed bug virtual longfile name self created list saving.
  - Fixed a screenshot naming bug with short ROM names.
  - Fixed rare crashing bug with the blood cursor GUI effect.
  - Sega Basic Level 3 Version 1.1 Japanese now works with a patch.
  - Reduced savegame size for SG-1000 and Colecovision systems.
  - Compiled with latest Allegro library, adding support for the following
    joysticks/pads drivers:
      - DB9 pads through parallel ports (allow to plug real SMS pads!)
      - PC Engine pads through parallel ports
      - Saturn pads with IF-SEGA interface cards for PC.

 Now Phantasy Star runs at 49 frame per seconds on my computer !


 MEKA 0.40
 ---------
 Master System perfect compatibility rate is now of 97.78%
 Games still causing problems are:
   Aerial Assault (minor scrolling glitch on the beginning of a level)
   Back to the Future 3 (minor bug on title screen)
   Missile Defense 3D (buggy lightgun emulation)
   Operation Wolf (buggy lightgun emulation)
   Robocop 3 (pausing crashes the game)
   Shooting Gallery (buggy lightgun emulation)
   Wanted (buggy lightgun emulation)
   Wonderboy in Monsterworld (glitches when pressing pause)

 Game Gear perfect compatibility rate is 94.55%
 17 games are still causing problems, including 5 which requires simulation
 of LCD screen visual persistance to produces transparency effect, 3 using
 an internal EEPROM to save custom teams, 2 having bad scrolling positions,
 and the 7 others:
   GP Rider (road distort itself after a moment)
   Kishin Douji Zenki (one line of clouds is not scrolling in fighting level)
   NBA Action (sprites flickering, might be the real game behavior)
   Out Run (no music for some reasons)
   RBI Baseball '94 (sprites not visible in top view, might be a bad dump)
   Sonic Blast / G-Sonic (micro title bug in US/Euro mode)
   Sonic Drift 2 (bottom line has a bad scrolling offset)

 Sega Game 1000 perfect compatibility rate is 97.40%
 Games still causing problems are:
   Pitfall 2 (minor glitch at the top when dying)
   Rockn' Bolt (sprite priorities bug on lift when starting)

  - Improved emulation on various point, fixing:
      - Altered Beast (SMS): title screen effect is now ok
      - Cool Spot (SMS): no more minor flickering
      - Evander Holyfield Boxing (GG): no more blue screen every odd frame
      - Global Gladiator (SMS): no more minor flickering
      - Gun Star Heroes (GG): no more glitches here and here
      - Hang On / Safari Hunt (SMS): fixed a bug preventing to start sometimes
      - Heavy Weight Champ (SMS): music play on introduction
      - Hurricanes (GG): no more blue screen every odd frame
      - Impossible Mission (SMS): room are showing properly when entering
      - NBA Jam (GG): playfield is ok
      - PGA Tour Golf (SMS): playfield is ok before game start
      - Legend of Illusion (SMS): does not hang anymore at the sunken ship stage
      - Out Run (GG): no more flickering
      - Orguss (SG-1000): no hang when exploding with the small robot
      - Safari Hunting (SG-1000): no hang when entering in the game area
      - Safari Race (SG-1000): better response of button on title screen
      - Shining Force 1 (GG): fixed random crashes
      - Shining Force 2 (GG): fixed random crashes
      - Shining Force 3 (GG): fixed random crashes
      - Speedball 2 (SMS): no more flickering
      - Sonic Drift (GG): now works perfectly
      - Sonic Drift 2 (GG): now works almost perfectly, minor bug on bottom
      - Terminator 2: Judgement Day (GG): no more blackout every odd frame
      - WWF Steel Cage Challenge (SMS): no more moving bug on barriers
      - Xenon 2 (SMS): no more flickering
  - Custom IPeriod values for Aerial Assault (SMS), Barcelona 92 (SMS),
    Gokuaku Doumei Dump Matsumoto (SMS) and Pro Wrestling (SMS) are not
    needed anymore due to improved emulation, and were removed. The only
    game left needing a custom IPeriod value is "Shadow of Beast" which
    sometimes crash on title screen with the default value.
  - Improved voice emulation, many games sound correct now (not all).
  - Updated to Allegro WIP in prevision to future improvments. In the
    meanwhile, the new version provides drivers for Gravis Grip, PSX and
    Nintendo 64 joypads, as well as better Sidewinder support (untested).
  - Rewrote hardware sprite collision emulation. Might break some games,
    please report if you discover anything unusual!
  - Improved Master System Sportpad controller emulation.
    Games are easier to play now, even if it is not perfect.
  - Improved default mapper emulation.
  - Added (buggy) EEPROM model 93c46 emulation. This chipset is used by
    three Game Gear baseball games to save custom teams and game progress.
    Pretty though one to emulate, but that's the only way to reach perfect
    emulation ^_^
  - Added Rapid Fire emulation.
  - Improved video mode 2 emulation, fixing Cosmo Fighter 2 (Coleco).
  - Added video mode 3 emulation, used by two painting programs for the
    Colecovision, and very probably by many SC-3000 programs.
  - Definitively removed the snow effect that pissed everyone :-(
    I would have stopped on the 28 of December, anyway.
    Instead, added the "special=snow" parameter in the theme file, to
    create your own themes using that effect.
  - Added Christmas and Sunrise GUI themes.
  - Compatibility and checksum lists changes:
     - Added a bunch of new names.
     - Added new Game Gear Japanese games (thanks to Casiopea).
     - Differencied names for alternate versions (thanks to Luke).
     - Added product numbers for about 150 Japanese Game Gear games.
  - Added IPERIOD_SG1000_SC3000 setting in the configuration file.
  - Added a patch to fix the bug in Sport Pad Soccer which make it hang on
    systems without the FM chipset.
  - Fixed bad screen size bug in certain cases after freeing ROM.
  - Added improved filter for old configuration file. As the keyboard
    keycodes have changed in this version they cannot be imported.
  - Added /LOG command line parameters to log all messages to a file.
  - Rewrote message applet from scratch. It does not slow down anymore
    when the number of messages per second is too important (+1000).
  [sources changes]
  - Revamped mapper handling.
  - Revamped backed memory handling.


 MEKA 0.32c
 ----------
  (minor update - version number still the same in the executable)
  - Fixed a stupid little damned bug causing the program to crash under DOS.
  - Added IPERIOD_COLECO setting in the configuration file.
    Do not touch unless you know what it means!


 MEKA 0.32b
 ----------
  (minor update - version number still the same in the executable)
  - Fixed slodown bug when loading a non Coleco ROM after a Coleco ROM.
  - Fixed a bug preventing from switching the machine Off in certain cases.
  - Fixed a minor file browser bug (selection was lost when using mouse).
  - Added some new checksums for various hacks.
  - Added a new GUI theme.


 MEKA 0.32
 ---------
  - Fixed the following games:
      - Andre Agassi Tennis [SMS, GG]
      - Greendog [GG] (Sega logo now shake, it did not before)
      - Panzer Dragoon Mini [GG]
      - Pit Fighter [SMS]
  - Improved emulation in the following games:
      - PGA Tour Golf [SMS] (level presentation now scroll - buggy)
      - Sonic Spinball [SMS, GG] (lake in introduction now scroll - buggy)
  - Fixed a VDP bug introduced in 0.31 that affected Rescue Mission (and
    probably many other games, too).
  - Added .BIN extension in the file browser (for some Colecovision ROMs).
  - Fixed incorrect palette of Colecovision picture after freeing ROM.
  - Updated Colecovision compatibility list, Added a new GUI theme,
    Added checksum and names for a bunch of SMS hacks.
  - Improved debugger (still not for public consumption).


 MEKA 0.31
 ---------
 (YM-2413 emulation is disabled by default because of many people who
  do not know about the existence of that chipset and complain about the
  musics and sound effects not being the same as they used to hear. Now
  that you know about it, feel free to enable YM-2413 emulation yourself).

  - Updated various chapters of the documentation. Please read it!
  - Added ZIP files support. Also improved file handling in general.
    Warning: loading ZIP files which do not contains valid ROM images may
    crash the program when it comes to emulating a non Z80-code file.
  - Made some minor optimizations of screen refresh.
  - Fixed a bug that caused games not to run before being reseted
    when in Japanese mode with the BIOS enabled.
  - Fixed a bug which cause the START button to be randomly pressed just
    after loading a Game Gear savegame.
  - Added a patch to fix the bug in American Pro Football that make it
    hang on systems with the FM chipset.
  - Fixed too early palette setting when loading a SG-1000/SC-3000/Coleco
    game from the command line.
  - Added support for sprites both doubled and zoomed.
  - Added options box with various flags modifiable directly under the GUI:
     - Enable/disable startup BIOS logo.
     - Keep file browser open after loading game.
     - Switch to fullscreen mode after loading game (new option).
     - Enable/disable virtual long file names (new option).
     - Enable/disable messages in fullscreen mode.
  - Slighty improved dynamic palette system, fixing Moldorian and other
    games, until a better fix could be applied.
  - Added an option to show games product numbers.
  - Game comments are now displayed under the GUI, and a warning is given
    on known bad dumps. Any cool informations and comments that could be
    included in the default distribution are welcome.
  - Updated Colecovision support (finally):
     - Improved keypad emulation. Mapped # and * keys on the keyboard.
       Their corresponding keys are minus and equals, next to the 0.
     - Fixed garbage sound on the beginning of some games.
     - Improved interrupt emulation.
     - Fixed joypad emulation in some cases.
     - Added Colecovision picture in the graphical user interface.
  - Reorganized and cleaned various parts of the sources. Improved
    widgets and configuration file handling (no visible changes).
  - Updated compatibility and checksum lists with new entries. Added and
    fixed even more Japanese names. Added flags here and here.


 MEKA 0.30
 ---------
  - Hiroshi added a preliminary FM Voice Editor.
  - Fixed FM emulation bug in Wonderboy 2 / Monster World 1 / Monica 1.
  - FM writes are now delayed, and FM musics are now in better sync with PSG.
  - Hiroshi dumped the original Japanese Master System BIOS. Then I hacked
    and interfaced it to includes it in MEKA. To watch the demo included
    in the Japanese SMS: change the machine country to Japanese, remove
    cartridge if any is loaded and switch the power ON.
  - Fixed a bug in VRAM access emulation (AX Battler sprites now works).
  - Improved dynamic palette system:
      - No more color bug in Itchy & Scratchy (GG) and Bust a Move (GG)
      - Less flickering in Space Harrier (GG) menu
  - Improved palette handling when a game quickly change the video mode
    in the middle of a frame, fixing Back to the Future 2 (SMS).
  - Fixed title screen bug in California Games 2 (SMS).
  - Fixed top screen flickering in Addams Family (SMS)
  - Fixed Pop Breaker (GG). I did introduce a bug just before releasing 0.10.
  - Fixed dirty first column when reseting some SG-1000 games.
  - Fixed dirty first column on badly programmed SMS games (Jurassic Park).
  - Improved file browser:
      - Added keyboard input (arrows, page up/down, home/end, letters)
      - Added little flags next to Japanese, Brazilian and Australian games.
      - Added a configuration switch to keep the browser open after loading.
      - Selected file is now kept after loading a game.
  - Rewrote some parts of the GUI engine (no visual changes).
  - Fixed a command line bug.
  - The pause/start button has been moved to the SPACE key for two reasons:
    first, some games use it as an action button, and secondly, when the file
    browser is open it would interfer with it because of the ENTER key.
  - Added patch to fix Sega logo color in the Ninja Gaiden bad dump.
  - Added tons of new entries to the checksum, name and compatibility lists.
  - Added 3 new GUI themes (uncomment manually or enable with WonderTheme).
  - A bunch of other minor fixes and improvements.


 MEKA 0.20
 ---------
  - Removed delays when accessing to soundblaster hardware registers,
    resulting in a 20 frame per seconds speedup in R-Type, and no more
    slowdowns in Wonderboy 3 with YM2413 emulation enabled. If you have
    problems with this version, try setting the value back to 16 in the
    configuration file, and be sure to contact me.
  - Added automatic peripheral type switching.
  - Added Sport Pad controller emulation.
  - Improved Paddle controller emulation (much more precise).
  - Finally managed to understand peripheral detection, so you can
    play Out Run with the Paddle controller enabled (ala Steering Wheel)
    for the first time in your life :-)
  - Fixed Light Phaser emulation bug in Operation Wolf.
  - Added a switch to enable/disable YM-2413 emulation inside of the GUI.
  - Added a switch to change country inside of the GUI.
  - Emusphere.com sucks (just checking if they ever read what they paste).
  - Messages are now shown in fullscreen mode, making things a bit slower.
    You can disable that feature in the configuration file.
  - Fixed snow when VSync is enabled and colors are being updated. Check the
    Star Wars introduction to notice the difference. (thanks to Lord_B).
  - Major checksum, name and compatibility lists update. Added more than
    200 new entries, fixed some names, and added more product numbers and
    Japanese name equivalents. (special thanks to Jossa and Tincho DJ)
  - Fixed a potential nationalization bug.
  - Added hard pause feature, available from the menu or with CTRL-P.
  - Added ALT-F11 hotkey to enable/disable the background layer (for
    sprites ripping).
  - Added values in the configuration file to resize the file browser.
  - Added values in the configuration file to remap the joystick buttons.
  - Added necessary menu entries to swap keyboard and gamepad buttons.
  - Added two new GUI themes, courtesy of Tincho DJ. Uncomment them in the
    default theme file or enable them with Wonder Theme.
  - Updated savegame format (backward compatible, of course).
  - Increased end delay for non registered users.
  - A few other cosmetic changes.

 Special thanks for this release goes to James McKay for having figured the
 big part of the controller thing by originally hacking Sport Pad Football.


 MEKA 0.13.1
 -----------
  - Fixed many crashing bug introduced in version 0.13.
  - Fixed FM persistant sound when loading a PSG game after a FM game.
  - Fixed a bug when trying to free a ROM when the BIOS logo is running.
  - Now you can load a savegame while the BIOS logo is running.
  - Fixed Shining Force 3 (Game Gear).
  - Added some more entries in the compatibility and checksum lists.


 MEKA 0.13
 ---------
  - Various non emulation bug fixed.
  - Added an option to free the current loaded ROM (to play the snail game).
  - Added Colecovision emulation.
  - Color themes are no more hardcored into the executable, so you can create
    your own ones by editing the MEKA.THM file. Added the following new ones:
      - Girl's Power (by me)
      - Monochrome (by Limbs a Flyin')
      - Necro (by Roni)
      - Grey Box (by Puyolin and me)
  - Added the necessary code for handling registration keys. Now registered
    users have a permanent keyfile that unlock MEKA.
  - All pause buttons bug with or without joypads enabled should be fixed
    now, although I still cannot test the code.
  - Fixed snow in SG-1000/SC-3000/Colecovision games.
  - Fixed a keyboard lock bug that happened sometimes (mainly when starting
    "BrAin waSH" but also in some other cases).
  - Update savegame file format. Old files can still be loaded with this
    version, but you won't be able to play the new savegames with an older
    version. Oh well, who cares ?
  - Removed SMS background picture anti-aliasing to fit with all color themes
    and added a picture when no cartridges is inserted.
  - Some optimizations in SG-1000/SC-3000/Colecovision games.
  - Added FM patch for Monica Em: O Resgate.
  - Added a few more titles to the compatibility and checksum lists.


 MEKA 0.12
 ---------
  - Added preliminary voice emulation.
  - Added joystick and video drivers entry in the configuration file
    (you can now use four-buttons joypads, VESA modes, etc..).
  - Fixed PSG/FM volumes.
  - Fixed a bug that prevented Battery RAM to be saved in certain cases.
  - Fixed a BIOS bug when no ROM was loaded in Japanese mode.
  - Added an option to disable background refresh (for GFX ripping).
  - Fixed virtual long filename duplicates creation.
  - Changed default IPeriod to 228 and updated the list.
  - Fixed Shining Force 2.
  - Added new entries into checksum and compatibily lists.
  - Improved double dump detection, via a tolerance system.
  - Some minor optimizations.


 MEKA 0.11
 ---------
  - Fixed sound crashing.
  - Improved FM sound emulation.
  - Mapped start/pause button on joystick (button 3).
  - Fixed Orguss (SG-1000).
  - Fixed Power Strike (SMS).


 MEKA 0.10
 ---------
  - Initial public release.



================================================
FILE: meka/compat.txt
================================================
-----------------------------------------------------------------------------
 MEKA - Compatibility List
-----------------------------------------------------------------------------
 Please contact me or post on MEKA forum if you suspect any game or having
 a problem not mentioned here.
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
 SEGA MASTER SYSTEM (SMS) COMPATIBILITY LIST
-----------------------------------------------------------------------------
 FM:        Supports FM Music
 LP/(LP):   Requires/Supports Light Phaser
 PAD/(PAD): Requires/Supports Paddle Control (ala Steering Wheel)
 SP/(SP):   Requires/Supports Sports Pad Controller
 3D:        Uses 3-D Glasses
 SMS-GG:    This version is a GG cartridge using the SMS compatibility mode
 SMS-MD:    This version is an MD cartridge using the SMS compatibility mode
-----------------------------------------------------------------------------
 11 Hap Gam-Boy (KR)                            -       Ok
 128 Hap (KR)                                   -       Ok
 2 Hap in 1 (Moai-ui bomul, David-2) (KR)       -       Ok
 20 em 1 (BR)                                   -       Ok
 3D Gunner [Proto]                              LP,3D   Ok
 4 PAK All Action (AU)                          -       Ok
 94 Super World Cup Soccer (KR)                 -       Ok
 Ace of Aces                                    -       Ok
 Action Fighter [v0] [Proto]                    -       Ok
 Action Fighter [v1]                            -       Ok
 Action Fighter [v2]                            -       Ok
 Action Fighter (TW)                            -       Ok
 Addams Family, The                             -       Ok
 Aerial Assault                                 -       Ok
 Aerial Assault (US)                            -       Ok
 Aerial Assault [HTH] [SMS-GG] (TW)             -       Ok
 After Burner                                   FM      Ok
 Agigongnyong Dooly (KR)                        -       Ok
 Air Rescue                                     -       Ok
 Aladdin (Disney's)                             -       Ok
 Aleste (JP)                                    FM      Ok
 Alex Kidd: High-Tech World                     -       Ok
 Alex Kidd: High-Tech World [Proto]             -       Ok
 Alex Kidd in Miracle World [v0] (US)           -       Ok
 Alex Kidd in Miracle World [v1]                -       Ok
 Alex Kidd no Miracle World (JP)                -       Ok
 Alex Kidd in Miracle World [HTH] [SMS-GG] (TW) -       Ok
 Alex Kidd in Shinobi World                     -       Ok
 Alex Kidd: The Lost Stars                      FM      Ok
 Alf                                            -       Ok
 Alibaba and 40 Thieves (KR)               
Download .txt
gitextract_alfk4aa8/

├── .editorconfig
├── .gitignore
├── README.md
├── appveyor.yml
└── meka/
    ├── Data/
    │   ├── cursor_lightphaser.tga
    │   ├── cursor_main.tga
    │   ├── cursor_sportspad.tga
    │   ├── cursor_tvoekaki.tga
    │   ├── cursor_wait.tga
    │   ├── flag_au.tga
    │   ├── flag_br.tga
    │   ├── flag_ca.tga
    │   ├── flag_ch.tga
    │   ├── flag_de.tga
    │   ├── flag_eu.tga
    │   ├── flag_fr.tga
    │   ├── flag_hk.tga
    │   ├── flag_it.tga
    │   ├── flag_jp.tga
    │   ├── flag_kr.tga
    │   ├── flag_nz.tga
    │   ├── flag_pt.tga
    │   ├── flag_sp.tga
    │   ├── flag_sw.tga
    │   ├── flag_tw.tga
    │   ├── flag_uk.tga
    │   ├── flag_unknown.tga
    │   ├── flag_us.tga
    │   ├── font_0.tga
    │   ├── font_1.tga
    │   ├── font_2.tga
    │   ├── gfx_dragon.tga
    │   ├── gfx_glasses.tga
    │   ├── gfx_graphicboardv2.tga
    │   ├── gfx_heart1.tga
    │   ├── gfx_heart2.tga
    │   ├── gfx_inputs.tga
    │   ├── gfx_joypad.tga
    │   ├── gfx_keyboard.tga
    │   ├── gfx_lightphaser.tga
    │   ├── gfx_paddlecontrol.tga
    │   ├── gfx_sportspad.tga
    │   ├── gfx_superheropad.tga
    │   ├── gfx_tvoekaki.tga
    │   ├── icon_bad.tga
    │   ├── icon_bios.tga
    │   ├── icon_hack.tga
    │   ├── icon_homebrew.tga
    │   ├── icon_proto.tga
    │   ├── icon_trans_jp.tga
    │   ├── icon_trans_jp_us.tga
    │   ├── machine_coleco.tga
    │   ├── machine_sms.tga
    │   ├── machine_sms_cartridge.tga
    │   ├── machine_sms_light.tga
    │   ├── rom_coleco.rom
    │   ├── rom_sf7000.rom
    │   ├── rom_sms.rom
    │   └── rom_smsj.rom
    ├── TODO.txt
    ├── Themes/
    │   └── README.txt
    ├── changes.txt
    ├── compat.txt
    ├── debugger.txt
    ├── history.txt
    ├── meka.blt
    ├── meka.inp
    ├── meka.msg
    ├── meka.nam
    ├── meka.pat
    ├── meka.thm
    ├── meka.txt
    ├── multi.txt
    ├── setup.bat
    ├── sources.txt
    ├── srcs/
    │   ├── Makefile
    │   ├── allegro4to5.cpp
    │   ├── allegro4to5.h
    │   ├── app_about.cpp
    │   ├── app_about.h
    │   ├── app_cheatfinder.cpp
    │   ├── app_cheatfinder.h
    │   ├── app_filebrowser.cpp
    │   ├── app_filebrowser.h
    │   ├── app_game.cpp
    │   ├── app_game.h
    │   ├── app_mapview.cpp
    │   ├── app_mapview.h
    │   ├── app_memview.cpp
    │   ├── app_memview.h
    │   ├── app_options.cpp
    │   ├── app_options.h
    │   ├── app_palview.cpp
    │   ├── app_palview.h
    │   ├── app_techinfo.cpp
    │   ├── app_techinfo.h
    │   ├── app_textview.cpp
    │   ├── app_textview.h
    │   ├── app_tileview.cpp
    │   ├── app_tileview.h
    │   ├── areplay.cpp
    │   ├── areplay.h
    │   ├── beam.cpp
    │   ├── beam.h
    │   ├── bios.cpp
    │   ├── bios.h
    │   ├── blit.cpp
    │   ├── blit.h
    │   ├── blit_c.cpp
    │   ├── blit_c.h
    │   ├── blitintf.cpp
    │   ├── blitintf.h
    │   ├── bmemory.cpp
    │   ├── bmemory.h
    │   ├── build.cpp
    │   ├── build.h
    │   ├── capture.cpp
    │   ├── capture.h
    │   ├── checksum.cpp
    │   ├── checksum.h
    │   ├── coleco.cpp
    │   ├── coleco.h
    │   ├── commport.cpp
    │   ├── commport.h
    │   ├── config.cpp
    │   ├── config.h
    │   ├── country.cpp
    │   ├── country.h
    │   ├── cpu.cpp
    │   ├── cpu.h
    │   ├── data.cpp
    │   ├── data.h
    │   ├── datadump.cpp
    │   ├── datadump.h
    │   ├── datasrc/
    │   │   ├── README.txt
    │   │   ├── fonts/
    │   │   │   ├── README.txt
    │   │   │   ├── mekafont-0-modified.tga
    │   │   │   ├── mekafont-0.tga
    │   │   │   ├── mekafont-1 (xen6).tga
    │   │   │   ├── mekafont-2.tga
    │   │   │   └── mekafont-maiandra-11.pcx
    │   │   ├── keyboard/
    │   │   │   ├── README.txt
    │   │   │   └── c1.pal
    │   │   ├── machines/
    │   │   │   ├── coleco-04.tga
    │   │   │   └── sms-07.tga
    │   │   ├── meka-gfx-all-v12.tga
    │   │   └── wb3.ans
    │   ├── db.cpp
    │   ├── db.h
    │   ├── debugger.cpp
    │   ├── debugger.h
    │   ├── desktop.cpp
    │   ├── desktop.h
    │   ├── drivers.cpp
    │   ├── drivers.h
    │   ├── eagle.asm
    │   ├── eagle.h
    │   ├── eeprom.cpp
    │   ├── eeprom.h
    │   ├── effects.cpp
    │   ├── effects.h
    │   ├── errors.cpp
    │   ├── errors.h
    │   ├── fdc765.cpp
    │   ├── fdc765.h
    │   ├── file.cpp
    │   ├── file.h
    │   ├── fonts.cpp
    │   ├── fonts.h
    │   ├── fskipper.cpp
    │   ├── fskipper.h
    │   ├── g_action.cpp
    │   ├── g_action.h
    │   ├── g_box.cpp
    │   ├── g_box.h
    │   ├── g_init.cpp
    │   ├── g_init.h
    │   ├── g_menu.cpp
    │   ├── g_menu.h
    │   ├── g_menu_i.cpp
    │   ├── g_menu_i.h
    │   ├── g_menu_t.cpp
    │   ├── g_menu_t.h
    │   ├── g_mouse.cpp
    │   ├── g_mouse.h
    │   ├── g_tools.cpp
    │   ├── g_tools.h
    │   ├── g_update.cpp
    │   ├── g_update.h
    │   ├── g_widget.cpp
    │   ├── g_widget.h
    │   ├── glasses.cpp
    │   ├── glasses.h
    │   ├── gui.cpp
    │   ├── gui.h
    │   ├── hq2x.cpp
    │   ├── hq2x.h
    │   ├── hq2x16.asm
    │   ├── hq2x32.asm
    │   ├── inputs.cpp
    │   ├── inputs.h
    │   ├── inputs_c.cpp
    │   ├── inputs_c.h
    │   ├── inputs_f.cpp
    │   ├── inputs_f.h
    │   ├── inputs_i.cpp
    │   ├── inputs_i.h
    │   ├── inputs_t.cpp
    │   ├── inputs_t.h
    │   ├── inputs_u.cpp
    │   ├── inputs_u.h
    │   ├── ioports.cpp
    │   ├── ioports.h
    │   ├── keyinfo.cpp
    │   ├── keyinfo.h
    │   ├── libmisc.cpp
    │   ├── libmisc.h
    │   ├── libparse.cpp
    │   ├── libparse.h
    │   ├── lightgun.cpp
    │   ├── lightgun.h
    │   ├── machine.cpp
    │   ├── machine.h
    │   ├── mainloop.cpp
    │   ├── mainloop.h
    │   ├── mappers.cpp
    │   ├── mappers.h
    │   ├── meka.cpp
    │   ├── meka.h
    │   ├── message.cpp
    │   ├── message.h
    │   ├── misc.cpp
    │   ├── misc.h
    │   ├── palette.cpp
    │   ├── palette.h
    │   ├── patch.cpp
    │   ├── patch.h
    │   ├── periph.cpp
    │   ├── periph.h
    │   ├── platform/
    │   │   └── macosx/
    │   │       ├── osxhelpers.h
    │   │       └── osxhelpers.mm
    │   ├── projects/
    │   │   ├── msvc/
    │   │   │   ├── Meka.opt
    │   │   │   ├── Meka.plg
    │   │   │   ├── Meka.rc
    │   │   │   ├── Meka.sln
    │   │   │   ├── Meka.vcxproj
    │   │   │   ├── Meka.vcxproj.filters
    │   │   │   ├── meka.RES
    │   │   │   ├── meka.manifest
    │   │   │   ├── packages.config
    │   │   │   └── resource.h
    │   │   └── xcode/
    │   │       └── meka/
    │   │           └── meka.xcodeproj/
    │   │               ├── project.pbxproj
    │   │               └── project.xcworkspace/
    │   │                   └── contents.xcworkspacedata
    │   ├── rapidfir.cpp
    │   ├── rapidfir.h
    │   ├── saves.cpp
    │   ├── saves.h
    │   ├── sdsc.cpp
    │   ├── sdsc.h
    │   ├── setup.cpp
    │   ├── setup.h
    │   ├── sf7000.cpp
    │   ├── sf7000.h
    │   ├── sg1ksc3k.cpp
    │   ├── sg1ksc3k.h
    │   ├── shared.cpp
    │   ├── shared.h
    │   ├── sk1100.cpp
    │   ├── sk1100.h
    │   ├── skin.cpp
    │   ├── skin.h
    │   ├── skin_bg.cpp
    │   ├── skin_bg.h
    │   ├── skin_fx.cpp
    │   ├── skin_fx.h
    │   ├── smsid/
    │   │   ├── packages.config
    │   │   ├── smsid.cpp
    │   │   ├── smsid.vcxproj
    │   │   ├── smsid.vcxproj.filters
    │   │   └── smsid_stubs.cpp
    │   ├── sound/
    │   │   ├── emu2413/
    │   │   │   ├── 2413tone.h
    │   │   │   ├── emu2413.cpp
    │   │   │   ├── emu2413.h
    │   │   │   ├── emutypes.h
    │   │   │   ├── mekaintf.cpp
    │   │   │   ├── mekaintf.h
    │   │   │   └── sample.cpp
    │   │   ├── fmeditor.cpp
    │   │   ├── fmeditor.h
    │   │   ├── fmunit.cpp
    │   │   ├── fmunit.h
    │   │   ├── psg.cpp
    │   │   ├── psg.h
    │   │   ├── s_misc.cpp
    │   │   ├── s_misc.h
    │   │   ├── sound.cpp
    │   │   ├── sound.h
    │   │   ├── sound_logging.cpp
    │   │   ├── sound_logging.h
    │   │   ├── vgm.cpp
    │   │   ├── vgm.h
    │   │   ├── wav.cpp
    │   │   └── wav.h
    │   ├── sportpad.cpp
    │   ├── sportpad.h
    │   ├── system.h
    │   ├── textbox.cpp
    │   ├── textbox.h
    │   ├── tools.cpp
    │   ├── tools.h
    │   ├── tvoekaki.cpp
    │   ├── tvoekaki.h
    │   ├── tvtype.cpp
    │   ├── tvtype.h
    │   ├── unzip.cpp
    │   ├── unzip.h
    │   ├── vdp.cpp
    │   ├── vdp.h
    │   ├── video.cpp
    │   ├── video.h
    │   ├── video_c.cpp
    │   ├── video_c.h
    │   ├── video_m2.cpp
    │   ├── video_m2.h
    │   ├── video_m5.cpp
    │   ├── video_m5.h
    │   ├── video_sp.cpp
    │   ├── video_t.cpp
    │   ├── vlfn.cpp
    │   ├── vlfn.h
    │   ├── vmachine.cpp
    │   ├── vmachine.h
    │   └── z80marat/
    │       ├── Codes.h
    │       ├── CodesCB.h
    │       ├── CodesED.h
    │       ├── CodesXCB.h
    │       ├── CodesXX.h
    │       ├── Debug.cpp
    │       ├── Tables.h
    │       ├── UNDOC.TXT
    │       ├── Z80.cpp
    │       ├── Z80.h
    │       ├── Z80Call.cpp
    │       ├── Z80DebugHelpers.cpp
    │       ├── Z80DebugHelpers.h
    │       ├── Z80OpcodeEnums.h
    │       ├── dasm.cpp
    │       └── todo
    ├── tech.txt
    └── tools/
        ├── dist_bin_osx.sh
        ├── dist_bin_win32.bat
        └── dist_osx/
            └── Meka.app_template/
                └── Contents/
                    └── Info.plist
Download .txt
SYMBOL INDEX (1399 symbols across 171 files)

FILE: meka/srcs/allegro4to5.cpp
  function al_draw_hline (line 4) | void al_draw_hline(int x1, int y, int x2, ALLEGRO_COLOR c)
  function al_draw_vline (line 9) | void al_draw_vline(int x, int y1, int y2, ALLEGRO_COLOR c)
  function alx_color_equals (line 14) | bool alx_color_equals(const ALLEGRO_COLOR* c1, const ALLEGRO_COLOR* c2)
  function alx_locked_draw_filled_rectangle (line 20) | void alx_locked_draw_filled_rectangle(ALLEGRO_LOCKED_REGION* dst_region,...

FILE: meka/srcs/app_about.cpp
  function AboutBox_Switch (line 28) | void    AboutBox_Switch()
  function AboutBox_Layout (line 40) | static void     AboutBox_Layout(bool setup)
  function AboutBox_Init (line 75) | void            AboutBox_Init()
  function AboutBox_Update (line 91) | void        AboutBox_Update()

FILE: meka/srcs/app_about.h
  type t_app_about_box (line 10) | struct t_app_about_box

FILE: meka/srcs/app_cheatfinder.cpp
  function t_cheat_finder (line 79) | t_cheat_finder *    CheatFinder_New(bool register_desktop)
  function CheatFinder_Delete (line 122) | void    CheatFinder_Delete(t_cheat_finder *app)
  function CheatFinder_Layout (line 128) | void    CheatFinder_Layout(t_cheat_finder *app, bool setup)
  function CheatFinder_Update (line 263) | void    CheatFinder_Update(t_cheat_finder* app)
  function u32 (line 363) | static u32 CheatFinder_IndexToAddr(t_cheat_finder* app, const t_cheat_fi...
  function u32 (line 370) | static u32 CheatFinder_ReadValue(t_cheat_finder* app, const t_memory_ran...
  function CheatFinder_AddNewMatches (line 410) | void CheatFinder_AddNewMatches(t_cheat_finder* app, const t_memory_range...
  function CheatFinder_ResetMatches (line 433) | void CheatFinder_ResetMatches(t_cheat_finder* app)
  function CheatFinder_ReduceMatches (line 457) | void CheatFinder_ReduceMatches(t_cheat_finder* app, t_cheat_finder_compa...
  function CheatFinder_UndoReduce (line 526) | static void CheatFinder_UndoReduce(t_cheat_finder* app)
  function CheatFinder_SelectOneMatch (line 535) | static void CheatFinder_SelectOneMatch(t_cheat_finder* app, int match_in...
  function CheatFinder_CallbackMemtypeSelect (line 545) | static void CheatFinder_CallbackMemtypeSelect(t_widget* w)
  function CheatFinder_CallbackValuetypeSelect (line 552) | static void CheatFinder_CallbackValuetypeSelect(t_widget* w)
  function CheatFinder_CallbackCompareToSelect (line 559) | static void CheatFinder_CallbackCompareToSelect(t_widget* w)
  function CheatFinder_CallbackReset (line 565) | static void CheatFinder_CallbackReset(t_widget* w)
  function CheatFinder_CallbackComparer (line 571) | static void CheatFinder_CallbackComparer(t_widget* w)
  function CheatFinder_CallbackUndoReduce (line 577) | static void CheatFinder_CallbackUndoReduce(t_widget* w)
  function CheatFinder_CallbackSelectOneMatch (line 583) | static void CheatFinder_CallbackSelectOneMatch(t_widget *w)
  function CheatFinder_CallbackClose (line 590) | static void CheatFinder_CallbackClose(t_widget* w)
  function CheatFinder_SwitchMainInstance (line 610) | void    CheatFinder_SwitchMainInstance()
  function CheatFinders_Update (line 620) | void    CheatFinders_Update()

FILE: meka/srcs/app_cheatfinder.h
  type t_cheat_finder_value_type (line 18) | enum t_cheat_finder_value_type
  type t_cheat_finder_comparer (line 28) | enum t_cheat_finder_comparer
  type t_cheat_finder_compare_to (line 39) | enum t_cheat_finder_compare_to
  type t_cheat_finder_match (line 45) | struct t_cheat_finder_match
  type t_cheat_finder (line 52) | struct t_cheat_finder

FILE: meka/srcs/app_filebrowser.cpp
  function t_filebrowser_entry (line 64) | t_filebrowser_entry *       FB_Entry_New(int type, char *file_name)
  function FB_Entry_Delete (line 75) | void    FB_Entry_Delete(t_filebrowser_entry *entry)
  function FB_Entry_FindVLFN (line 82) | void    FB_Entry_FindVLFN(t_filebrowser_entry *entry)
  function FB_Return_File_Area_Y (line 94) | static int FB_Return_File_Area_Y()
  function FB_Switch (line 99) | void    FB_Switch()
  function FB_Init (line 106) | void    FB_Init()
  function FB_Init_2 (line 133) | void    FB_Init_2()
  function FB_Layout (line 139) | void    FB_Layout(t_filebrowser *app, bool setup)
  function FB_Free_Memory (line 221) | void    FB_Free_Memory()
  function FB_Close (line 228) | void    FB_Close()
  function FB_Add_DiskDrives (line 235) | void    FB_Add_DiskDrives()
  function INLINE (line 257) | static INLINE int   FB_Sort_Files_GetEntryPriority (t_filebrowser_entry ...
  function FB_Sort_Files (line 286) | void    FB_Sort_Files(int start, int end)
  function FB_Ext_In_List (line 318) | int     FB_Ext_In_List(const t_list *ext_list, const char *ext)
  function FB_Add_Entries (line 329) | void    FB_Add_Entries(t_list *ext_list, int type)
  function FB_Load_Directory_Internal (line 440) | static void     FB_Load_Directory_Internal()
  function FB_Draw_Infos (line 497) | void        FB_Draw_Infos()
  function FB_Draw_List (line 511) | void    FB_Draw_List()
  function FB_Check_and_Repos (line 699) | void    FB_Check_and_Repos()
  function FB_Update (line 717) | void    FB_Update()
  function FB_Load_Directory (line 844) | void    FB_Load_Directory()
  function FB_LoadAllNames (line 861) | void    FB_LoadAllNames()
  function FB_OpenSelectedEntry (line 893) | void    FB_OpenSelectedEntry()
  function FB_OpenDirectory (line 917) | void    FB_OpenDirectory(const char* name)
  function FB_OpenFile (line 953) | void    FB_OpenFile(const char* name)
  function FB_SelectEntryByFileName (line 974) | bool    FB_SelectEntryByFileName(const char* file_name)
  function FB_Click_List (line 989) | void    FB_Click_List (t_widget *w)
  function FB_Reload_Names (line 1009) | void    FB_Reload_Names()

FILE: meka/srcs/app_filebrowser.h
  type t_db_entry (line 31) | struct t_db_entry
  type t_filebrowser_entry (line 33) | struct t_filebrowser_entry
  type t_filebrowser (line 41) | struct t_filebrowser

FILE: meka/srcs/app_game.cpp
  function gamebox_draw (line 24) | void        gamebox_draw(t_gui_box *box, ALLEGRO_BITMAP *game_buffer)
  function gamebox_compute_size (line 52) | void        gamebox_compute_size(int *x, int *y)
  function t_gui_box (line 58) | t_gui_box * gamebox_create(int x, int y)
  function gamebox_resize_all (line 84) | void    gamebox_resize_all()
  function gamebox_rename_all (line 103) | void    gamebox_rename_all()

FILE: meka/srcs/app_mapview.cpp
  function t_tilemap_viewer (line 49) | t_tilemap_viewer *  TilemapViewer_New(bool register_desktop)
  function TilemapViewer_Delete (line 94) | void    TilemapViewer_Delete(t_tilemap_viewer *app)
  function TilemapViewer_ChangeLayout (line 101) | void    TilemapViewer_ChangeLayout(t_tilemap_viewer *app, t_tilemap_view...
  function TilemapViewer_SetupLayoutSizes (line 110) | void    TilemapViewer_SetupLayoutSizes(t_tilemap_viewer *app)
  function TilemapViewer_Layout (line 174) | void         TilemapViewer_Layout(t_tilemap_viewer *app, bool setup)
  function TilemapViewer_CallbackTilemapClick (line 266) | void         TilemapViewer_CallbackTilemapClick(t_widget *w)
  function TilemapViewer_CallbackTilemapAddressScroll (line 275) | void        TilemapViewer_CallbackTilemapAddressScroll(t_widget *w)
  function TilemapViewer_Switch (line 289) | void         TilemapViewer_Switch(t_widget *w)
  function TilemapViewer_SwitchMainInstance (line 309) | void         TilemapViewer_SwitchMainInstance()
  function TilemapViewer_Update (line 322) | void         TilemapViewer_Update(t_tilemap_viewer *app)
  function TilemapViewer_UpdateAddresses (line 466) | static void     TilemapViewer_UpdateAddresses(t_tilemap_viewer *app)
  function TilemapViewer_UpdateInfos (line 508) | static void     TilemapViewer_UpdateInfos(t_tilemap_viewer *app)
  function TilemapViewer_UpdateScrollDrawLineWrap (line 597) | static void     TilemapViewer_UpdateScrollDrawLineWrap(t_tilemap_viewer ...
  function TilemapViewer_UpdateScroll (line 640) | static void     TilemapViewer_UpdateScroll(t_tilemap_viewer *app)
  function TilemapViewers_Update (line 698) | void    TilemapViewers_Update()

FILE: meka/srcs/app_mapview.h
  type t_tilemap_viewer_layout (line 14) | enum t_tilemap_viewer_layout
  type t_tilemap_viewer (line 21) | struct t_tilemap_viewer

FILE: meka/srcs/app_memview.cpp
  function MemoryRange_GetDetails (line 60) | void    MemoryRange_GetDetails(t_memory_type memtype, t_memory_range* mr)
  function u8 (line 144) | u8      t_memory_range::ReadByte(int addr) const
  function t_memory_viewer (line 226) | t_memory_viewer *   MemoryViewer_New(bool register_desktop, int size_col...
  function MemoryViewer_Delete (line 301) | void    MemoryViewer_Delete(t_memory_viewer* app)
  function MemoryViewer_Layout (line 307) | static void MemoryViewer_Layout(t_memory_viewer* app, bool setup)
  function MemoryViewer_IsAddressHighlighted (line 461) | static bool MemoryViewer_IsAddressHighlighted(const std::vector<u32>* hi...
  function MemoryViewer_Update (line 468) | static void        MemoryViewer_Update(t_memory_viewer* app)
  function MemoryViewer_Switch (line 607) | static void MemoryViewer_Switch(t_memory_viewer* mv)
  function MemoryViewer_Switch (line 626) | static void MemoryViewer_Switch(t_widget* w)
  function MemoryViewer_SwitchMainInstance (line 632) | void    MemoryViewer_SwitchMainInstance()
  function MemoryViewer_ViewPane (line 643) | static void MemoryViewer_ViewPane(t_memory_viewer* app, t_memory_type me...
  function MemoryViewer_ViewPaneCallback (line 666) | static void MemoryViewer_ViewPaneCallback(t_widget* w)
  function MemoryViewer_UpdateAllMemoryRanges (line 673) | static void MemoryViewer_UpdateAllMemoryRanges(t_memory_viewer* app)
  function MemoryViewer_MediaReload (line 689) | static void MemoryViewer_MediaReload(t_memory_viewer* app)
  function MemoryViewer_GotoAddress (line 695) | void    MemoryViewer_GotoAddress(t_memory_viewer* app, t_memory_type mem...
  function MemoryViewer_InputBoxAddress_EnterCallback (line 733) | void      MemoryViewer_InputBoxAddress_EnterCallback(t_widget* w)
  function MemoryViewer_InputBoxValue_EditCallback (line 752) | static void      MemoryViewer_InputBoxValue_EditCallback(t_widget *w)
  function MemoryViewer_InputBoxValue_EnterCallback (line 791) | static void      MemoryViewer_InputBoxValue_EnterCallback(t_widget *w)
  function MemoryViewer_ClickBottom (line 809) | static void     MemoryViewer_ClickBottom(t_widget* w)
  function MemoryViewer_ClickMemoryHex (line 817) | static void     MemoryViewer_ClickMemoryHex(t_widget* w)
  function MemoryViewer_ClickMemoryAscii (line 849) | static void        MemoryViewer_ClickMemoryAscii(t_widget *w)
  function MemoryViewer_SetupEditValueBox (line 863) | static void    MemoryViewer_SetupEditValueBox(t_memory_viewer* app)
  function MemoryViewer_UpdateInputs (line 916) | static void     MemoryViewer_UpdateInputs(t_memory_viewer *mv)
  function MemoryViewers_Update (line 1044) | void      MemoryViewers_Update()
  function MemoryViewers_MediaReload (line 1053) | void      MemoryViewers_MediaReload()

FILE: meka/srcs/app_memview.h
  type t_memory_type (line 12) | enum t_memory_type
  type t_memory_range (line 29) | struct t_memory_range
  type t_memory_pane (line 42) | struct t_memory_pane
  type t_memory_viewer (line 49) | struct t_memory_viewer

FILE: meka/srcs/app_options.cpp
  function Option_Switch_Uses_VLFN (line 36) | static void    Option_Switch_Uses_VLFN()
  function Option_Switch_NES_Crap (line 41) | static void    Option_Switch_NES_Crap()
  function Options_Init_Applet (line 47) | void    Options_Init_Applet()
  function Options_Layout_AddLine (line 65) | static void     Options_Layout_AddLine(t_app_options* app, bool setup, t...
  function Options_Layout (line 75) | static void     Options_Layout(t_app_options* app, bool setup)
  function Options_Update (line 115) | void    Options_Update(void)
  function Options_Switch (line 131) | void    Options_Switch()

FILE: meka/srcs/app_options.h
  type t_app_options (line 10) | struct t_app_options

FILE: meka/srcs/app_palview.cpp
  function PaletteViewer_Init (line 30) | void    PaletteViewer_Init()
  function PaletteViewer_Layout (line 67) | void    PaletteViewer_Layout(t_app_palette_viewer* app, bool setup)
  function PaletteViewer_Switch (line 97) | void    PaletteViewer_Switch()
  function PaletteViewer_Update (line 110) | void    PaletteViewer_Update()
  function PaletteViewer_SetPaletteSize (line 211) | void    PaletteViewer_SetPaletteSize(t_app_palette_viewer *pv, int palet...
  function PaletteViewer_CallbackSelectColor (line 216) | void    PaletteViewer_CallbackSelectColor(t_widget *w)

FILE: meka/srcs/app_palview.h
  type t_app_palette_viewer (line 10) | struct t_app_palette_viewer

FILE: meka/srcs/app_techinfo.cpp
  function TechInfo_Layout (line 29) | static void TechInfo_Layout(t_app_tech_info *app, bool setup)
  function TechInfo_Init (line 42) | void        TechInfo_Init()
  function TechInfo_Redraw (line 68) | static void TechInfo_Redraw(t_app_tech_info* app)
  function TechInfo_SetLine (line 89) | static void TechInfo_SetLine(t_app_tech_info *app, const char *line, int...
  function TechInfo_Update (line 100) | void        TechInfo_Update(void)
  function TechInfo_Switch (line 255) | void    TechInfo_Switch (void)

FILE: meka/srcs/app_techinfo.h
  type t_app_tech_info (line 17) | struct t_app_tech_info

FILE: meka/srcs/app_textview.cpp
  function TextViewer_Init (line 31) | void    TextViewer_Init(t_app_textviewer* app)
  function TextViewer_Close (line 66) | void    TextViewer_Close(t_app_textviewer* app)
  function TextViewer_Layout (line 77) | void    TextViewer_Layout(t_app_textviewer* app, bool setup)
  function TextViewer_Open (line 110) | int     TextViewer_Open(t_app_textviewer* app, const char* title, const ...
  function TextViewer_Switch_Doc_Main (line 160) | void            TextViewer_Switch_Doc_Main()
  function TextViewer_Switch_Doc_Compat (line 165) | void            TextViewer_Switch_Doc_Compat()
  function TextViewer_Switch_Doc_Multiplayer_Games (line 170) | void            TextViewer_Switch_Doc_Multiplayer_Games()
  function TextViewer_Switch_Doc_Changes (line 175) | void            TextViewer_Switch_Doc_Changes()
  function TextViewer_Switch_Doc_Debugger (line 180) | void            TextViewer_Switch_Doc_Debugger()
  function TextViewer_Switch (line 185) | void    TextViewer_Switch(t_app_textviewer* tv, const char* title, const...
  function TextViewer_Switch_Close (line 208) | void    TextViewer_Switch_Close()
  function TextViewer_ScrollbarCallback (line 217) | static void     TextViewer_ScrollbarCallback()
  function TextViewer_Update (line 223) | void    TextViewer_Update(t_app_textviewer *tv)
  function TextViewer_Update_Inputs (line 300) | static void     TextViewer_Update_Inputs(t_app_textviewer *tv)

FILE: meka/srcs/app_textview.h
  type t_app_textviewer (line 19) | struct t_app_textviewer

FILE: meka/srcs/app_tileview.cpp
  function TileViewer_Init_Values (line 35) | void    TileViewer_Init_Values()
  function TileViewer_Init (line 51) | void    TileViewer_Init()
  function TileViewer_Layout (line 79) | void    TileViewer_Layout(t_app_tile_viewer *app, bool setup)
  function TileViewer_Update (line 112) | void    TileViewer_Update(t_app_tile_viewer *app)
  function TileViewer_Change_Palette (line 276) | void    TileViewer_Change_Palette()
  function TileViewer_Configure_PaletteMax (line 285) | void        TileViewer_Configure_PaletteMax (int palette_max)
  function TileViewer_SelectedTile_Select (line 295) | void    TileViewer_SelectedTile_Select(t_widget *w)
  function TileViewer_Switch (line 301) | void    TileViewer_Switch()

FILE: meka/srcs/app_tileview.h
  type t_app_tile_viewer (line 10) | struct t_app_tile_viewer

FILE: meka/srcs/beam.cpp
  function Beam_Calc_X (line 22) | int         Beam_Calc_X()
  function Beam_X (line 41) | int         Beam_X()
  function INLINE (line 59) | INLINE int  Beam_Calc_Y()
  function Beam_Y (line 98) | int         Beam_Y()

FILE: meka/srcs/bios.cpp
  function BIOS_Switch_to_Game (line 20) | void    BIOS_Switch_to_Game()
  function BIOS_Unload (line 27) | void    BIOS_Unload()
  function BIOS_Load (line 34) | void    BIOS_Load()
  function BIOS_Free_Roms (line 49) | void    BIOS_Free_Roms()

FILE: meka/srcs/blit.cpp
  type t_blitters_table_entry (line 38) | struct t_blitters_table_entry
  type t_blit_cfg (line 45) | struct t_blit_cfg
  function Blit_Init (line 61) | void    Blit_Init()
  function Blit_DestroyVideoBuffers (line 75) | void    Blit_DestroyVideoBuffers()
  function Blit_CreateVideoBuffers (line 89) | void    Blit_CreateVideoBuffers()
  function Blit_Fullscreen_Misc (line 107) | static void Blit_Fullscreen_Misc()
  function Blit_Fullscreen_Message (line 131) | static void Blit_Fullscreen_Message(ALLEGRO_BITMAP* dst, int time_left)
  function Blit_Fullscreen_UpdateBounds (line 154) | void Blit_Fullscreen_UpdateBounds()
  function Blit_Fullscreen_CopyStretch (line 195) | static void Blit_Fullscreen_CopyStretch(ALLEGRO_BITMAP *src_buffer)
  function Blit_Fullscreen_Normal (line 217) | void    Blit_Fullscreen_Normal()
  function Blit_Fullscreen_HQ2X (line 223) | void    Blit_Fullscreen_HQ2X()
  function Blit_Fullscreen_TV_Mode (line 241) | void    Blit_Fullscreen_TV_Mode()
  function Blit_Fullscreen_TV_Mode_Double (line 268) | void    Blit_Fullscreen_TV_Mode_Double()
  function Blit_Fullscreen (line 300) | void    Blit_Fullscreen()
  function Blit_GUI (line 328) | void    Blit_GUI()

FILE: meka/srcs/blitintf.cpp
  function t_blitter (line 29) | t_blitter *     Blitter_New(char *name)
  function Blitter_Delete (line 61) | void Blitter_Delete(t_blitter *b)
  function Blitters_Close (line 69) | void Blitters_Close()
  function Blitters_Parse_Line (line 83) | static int  Blitters_Parse_Line(char *s, char *s_case)
  function Blitters_Init_Values (line 145) | void    Blitters_Init_Values()
  function Blitters_Init (line 151) | void    Blitters_Init()
  function t_blitter (line 205) | t_blitter * Blitters_FindBlitterByName(const char *name)
  function Blitters_Str2Num (line 230) | static int     Blitters_Str2Num(const char *s)
  function Blitters_Switch_Common (line 238) | void    Blitters_Switch_Common()
  function Blitters_SwitchNext (line 247) | void    Blitters_SwitchNext()
  function Blitters_Switch_Handler (line 259) | static void    Blitters_Switch_Handler (t_menu_event *event)
  function Blitters_Menu_Init (line 265) | void    Blitters_Menu_Init (int menu_id)

FILE: meka/srcs/blitintf.h
  type t_blitter_stretch (line 14) | enum t_blitter_stretch
  type t_blitter (line 25) | struct t_blitter
  type t_blitters (line 48) | struct t_blitters

FILE: meka/srcs/bmemory.cpp
  function BMemory_Verify_Usage (line 17) | void    BMemory_Verify_Usage()
  function BMemory_Get_Infos (line 32) | void    BMemory_Get_Infos(void** data, int* len)
  function BMemory_Load (line 51) | void        BMemory_Load()
  function BMemory_Save (line 70) | void        BMemory_Save()
  function BMemory_Load_State (line 93) | void    BMemory_Load_State(FILE* f)
  function BMemory_Save_State (line 102) | void    BMemory_Save_State(FILE* f)
  function BMemory_SRAM_Load (line 115) | void    BMemory_SRAM_Load(FILE* f)
  function BMemory_SRAM_Save (line 133) | void    BMemory_SRAM_Save(FILE* f)
  function BMemory_SRAM_Load_State (line 141) | void    BMemory_SRAM_Load_State(FILE* f)
  function BMemory_SRAM_Save_State (line 148) | void    BMemory_SRAM_Save_State(FILE* f)
  function BMemory_SRAM_Get_Infos (line 154) | void    BMemory_SRAM_Get_Infos(void** data, int* len)

FILE: meka/srcs/capture.cpp
  function Capture_Init (line 27) | void        Capture_Init()
  function Capture_Init_Game (line 36) | void        Capture_Init_Game()
  function Capture_Request (line 42) | void        Capture_Request()
  function Capture_FileName_Get (line 48) | static void Capture_FileName_Get(char* dst)
  function Capture_Screen (line 83) | static void     Capture_Screen()
  function Capture_Update (line 168) | void    Capture_Update()
  function Capture_MenuHandler_Capture (line 183) | void    Capture_MenuHandler_Capture()
  function Capture_MenuHandler_AllFrames (line 188) | void    Capture_MenuHandler_AllFrames()
  function Capture_MenuHandler_IncludeGui (line 198) | void    Capture_MenuHandler_IncludeGui()

FILE: meka/srcs/capture.h
  type t_capture (line 30) | struct t_capture

FILE: meka/srcs/checksum.cpp
  function mekacrc (line 15) | static void     mekacrc(t_meka_crc *dst, const u8 *data, int data_size)
  function Checksum_Perform (line 47) | void            Checksum_Perform(const u8 *data, int data_size)

FILE: meka/srcs/coleco.cpp
  function WRITE_FUNC (line 29) | WRITE_FUNC (Write_Mapper_Coleco)
  function Coleco_Port_Out (line 48) | void    Coleco_Port_Out (word Port, byte Value)
  function byte (line 67) | byte    Coleco_Port_In (word Port)
  function byte (line 84) | byte    Coleco_Inputs (word Port)
  function byte (line 104) | byte    Coleco_Keypad_1()
  function byte (line 128) | byte        Coleco_Keypad_2()
  function Coleco_Init_Table_Inputs (line 138) | void        Coleco_Init_Table_Inputs()
  function word (line 164) | word    Loop_Coleco()

FILE: meka/srcs/commport.cpp
  function Comm_Reset (line 60) | void    Comm_Reset()
  function Comm_Read_01 (line 67) | int     Comm_Read_01()
  function Comm_Write_01 (line 72) | void    Comm_Write_01(int value)
  function Comm_Read_02 (line 79) | int     Comm_Read_02()
  function Comm_Write_02 (line 85) | void    Comm_Write_02(int value)
  function Comm_Read_03 (line 91) | int     Comm_Read_03()
  function Comm_Write_03 (line 97) | void    Comm_Write_03(int value)
  function Comm_Read_04 (line 104) | int     Comm_Read_04()
  function Comm_Read_05 (line 110) | int     Comm_Read_05()
  function Comm_Write_05 (line 119) | void    Comm_Write_05(int value)

FILE: meka/srcs/commport.h
  type t_gear_to_gear (line 10) | struct t_gear_to_gear

FILE: meka/srcs/config.cpp
  function CFG_Write_Line (line 27) | static void  CFG_Write_Line(const char* fmt, ...)
  function CFG_Write_Int (line 35) | static void  CFG_Write_Int(const char *name, int value)
  function CFG_Write_Str (line 39) | static void  CFG_Write_Str(const char *name, const char *str)
  function CFG_Write_StrEscape (line 44) | static void  CFG_Write_StrEscape (const char *name, const char *str)
  function Font_FindByName (line 58) | static void     Font_FindByName(const char* name, int* out)
  function Configuration_Load_Line (line 71) | static void     Configuration_Load_Line (char *var, char *value)
  function Configuration_Load (line 200) | void Configuration_Load()
  function Configuration_Save (line 240) | void Configuration_Save()
  function Param_Check (line 383) | static void     Param_Check(int *current, const char *msg)
  function Command_Line_Parse (line 390) | void    Command_Line_Parse()
  function Command_Line_Help (line 457) | void    Command_Line_Help()

FILE: meka/srcs/country.cpp
  function Set_Country_Export (line 24) | void    Set_Country_Export()
  function Set_Country_Japan (line 41) | void    Set_Country_Japan()
  function Nationalize (line 58) | void    Nationalize (byte *v)

FILE: meka/srcs/country.h
  type t_country (line 10) | enum t_country

FILE: meka/srcs/cpu.cpp
  function Interrupt_Loop_Misc_Line_Zero (line 26) | void Interrupt_Loop_Misc_Line_Zero()
  function Interrupt_Loop_Misc_Common (line 35) | bool Interrupt_Loop_Misc_Common()
  function Interrupt_Loop_Misc (line 52) | bool Interrupt_Loop_Misc(int* out_interrupt)
  function word (line 69) | word    Loop_SMS()
  function CPU_Loop (line 172) | void    CPU_Loop()
  function CPU_Loop (line 192) | void    CPU_Loop()
  function PatchZ80 (line 212) | void  PatchZ80(Z80 *R) { }
  function INLINE (line 216) | INLINE int Get_Active_CPU()         { return (0);    }
  function INLINE (line 217) | INLINE int Get_IRQ_Vector(int p)    { return (0x38); }

FILE: meka/srcs/data.cpp
  function Data_LoadBitmap (line 52) | static bool Data_LoadBitmap(ALLEGRO_BITMAP** pbitmap, const char* name)
  function Data_LoadMouseCursor (line 89) | static bool Data_LoadMouseCursor(ALLEGRO_MOUSE_CURSOR** pcursor, ALLEGRO...
  function Data_LoadFont (line 111) | bool Data_LoadFont(ALLEGRO_FONT** pfont, const char* name, int size)
  function Data_Init (line 145) | void Data_Init()
  function Data_ProcessVideoBitmaps (line 158) | void Data_ProcessVideoBitmaps()
  function Data_LoadBinaries (line 236) | void Data_LoadBinaries()
  function Data_Close (line 253) | void    Data_Close()
  function Data_CreateVideoBuffers (line 258) | void    Data_CreateVideoBuffers()
  function Data_DestroyVideoBuffers (line 264) | void    Data_DestroyVideoBuffers()

FILE: meka/srcs/data.h
  type t_data_graphics (line 36) | struct t_data_graphics

FILE: meka/srcs/datadump.cpp
  function DataDump_Init (line 30) | void    DataDump_Init (void)
  function DataDump_Init_Menus (line 39) | void    DataDump_Init_Menus (int menu_id)
  function DataDump_Mode_Ascii (line 59) | void    DataDump_Mode_Ascii (void)
  function DataDump_Mode_Raw (line 74) | void    DataDump_Mode_Raw (void)
  function DataDump_Write_Filename (line 85) | static void     DataDump_Write_Filename (char *s, const char *name)
  function DataDump_Main_Raw (line 92) | static void     DataDump_Main_Raw (const char *name, const u8 *data, int...
  function DataDump_Main_Ascii (line 116) | static void     DataDump_Main_Ascii (const char *name, const u8 *data, i...
  function DataDump_Handler_Ascii_Standard (line 155) | static int  DataDump_Handler_Ascii_Standard (FILE *f_dump, int pos, u8 c...
  function DataDump_Handler_Ascii_CPURegs_Reg (line 173) | static void DataDump_Handler_Ascii_CPURegs_Reg (FILE *f_dump, const char...
  function DataDump_Handler_Ascii_CPURegs (line 190) | static int  DataDump_Handler_Ascii_CPURegs (FILE *f_dump, int pos, const...
  function DataDump_Handler_Ascii_VReg (line 224) | static int  DataDump_Handler_Ascii_VReg (FILE *f_dump, int pos, const u8...
  function DataDump_Handler_Ascii_Palette (line 238) | static int  DataDump_Handler_Ascii_Palette (FILE *f_dump, int pos, const...
  function DataDump_Handler_Ascii_Sprite (line 269) | static int  DataDump_Handler_Ascii_Sprite (FILE *f_dump, int pos, const ...
  function DataDump_RAM (line 318) | void        DataDump_RAM()
  function DataDump_VRAM (line 333) | void        DataDump_VRAM()
  function DataDump_Palette (line 344) | void        DataDump_Palette()
  function DataDump_Sprites (line 368) | void    DataDump_Sprites()
  function DataDump_BgFgMap (line 397) | void    DataDump_BgFgMap()
  function DataDump_CPURegs (line 404) | void    DataDump_CPURegs()
  function DataDump_VRegs (line 415) | void    DataDump_VRegs()
  function DataDump_OnBoardMemory (line 426) | void        DataDump_OnBoardMemory (void)

FILE: meka/srcs/datadump.h
  type t_data_dump (line 17) | struct t_data_dump

FILE: meka/srcs/db.cpp
  function DB_FindDriverIdByName (line 51) | int         DB_FindDriverIdByName(const char* name)
  function DB_FindCountryFlagByName (line 94) | int  DB_FindCountryFlagByName(const char* name)
  function t_db_entry (line 118) | t_db_entry*     DB_Entry_New (int system, u32 crc32, t_meka_crc* mekacrc)
  function DB_Entry_Delete (line 149) | void            DB_Entry_Delete (t_db_entry* entry)
  function t_db_name (line 173) | t_db_name*     DB_Name_New(t_db_entry* entry, char* name, int country, i...
  function DB_Name_Delete (line 200) | void            DB_Name_Delete (t_db_name* dbname)
  function DB_Init (line 207) | bool            DB_Init(const char* filename, bool verbose)
  function DB_Load_Entry (line 218) | static int      DB_Load_Entry (char* line)
  function DB_Load_EntryOldFormat (line 412) | static int      DB_Load_EntryOldFormat(char* line)
  function DB_Load_Line (line 566) | static int      DB_Load_Line (char* line)
  function DB_Load (line 587) | static bool     DB_Load (const char* filename, bool verbose)
  function DB_Close (line 639) | void            DB_Close()
  function t_db_entry (line 653) | t_db_entry*     DB_Entry_Find(u32 crc32, const t_meka_crc* mekacrc)
  function t_db_name (line 694) | const t_db_name*    DB_Entry_GetNameByCountry (const t_db_entry* entry, ...
  function DB_Entry_SelectDisplayFlag (line 709) | int             DB_Entry_SelectDisplayFlag(const t_db_entry* entry)
  function DB_Entry_GetTranslationFlag (line 747) | int             DB_Entry_GetTranslationFlag  (const t_db_entry* entry)

FILE: meka/srcs/db.h
  type t_db_name (line 48) | struct t_db_name
  type t_db_entry (line 57) | struct t_db_entry
  type t_db (line 83) | struct t_db

FILE: meka/srcs/debugger.cpp
  function Debugger_GetAccessString (line 64) | static void     Debugger_GetAccessString(int access, char buf[5])
  type t_debugger_command_info (line 143) | struct t_debugger_command_info
  type t_debugger_shortcut (line 429) | struct t_debugger_shortcut
  type t_debugger_app (line 436) | struct t_debugger_app
  function Debugger_Init_Values (line 459) | void        Debugger_Init_Values()
  function Debugger_Init_LogFile (line 550) | static void Debugger_Init_LogFile()
  function Debugger_Init (line 565) | void        Debugger_Init()
  function Debugger_Close (line 580) | void        Debugger_Close()
  function Debugger_Enable (line 592) | void        Debugger_Enable()
  function Debugger_MachineReset (line 601) | void        Debugger_MachineReset()
  function Debugger_MediaReload (line 635) | void        Debugger_MediaReload()
  function Debugger_Update (line 647) | void    Debugger_Update()
  function Debugger_Applet_UpdateShortcuts (line 666) | void    Debugger_Applet_UpdateShortcuts()
  function Debugger_Hook (line 686) | int     Debugger_Hook(Z80 *R)
  function Debugger_SetTrap (line 757) | void    Debugger_SetTrap(int trap)
  function Debugger_BreakPoints_Clear (line 777) | void    Debugger_BreakPoints_Clear(bool disabled_only)
  function Debugger_BreakPoints_List (line 793) | void    Debugger_BreakPoints_List()
  function Debugger_BreakPoints_AllocateId (line 811) | int     Debugger_BreakPoints_AllocateId()
  function t_debugger_breakpoint (line 823) | t_debugger_breakpoint *     Debugger_BreakPoints_SearchById(int id)
  function t_debugger_breakpoint (line 860) | t_debugger_breakpoint *     Debugger_BreakPoint_Add(int type, int locati...
  function Debugger_BreakPoint_Remove (line 892) | void                        Debugger_BreakPoint_Remove(t_debugger_breakp...
  function Debugger_BreakPoint_Enable (line 911) | void                     Debugger_BreakPoint_Enable(t_debugger_breakpoin...
  function Debugger_BreakPoint_Disable (line 971) | void                     Debugger_BreakPoint_Disable(t_debugger_breakpoi...
  function Debugger_BreakPoint_SetDataCompare (line 1029) | void                        Debugger_BreakPoint_SetDataCompare(t_debugge...
  function Debugger_BreakPoint_GetSummaryLine (line 1050) | void    Debugger_BreakPoint_GetSummaryLine(t_debugger_breakpoint *breakp...
  function Debugger_BreakPoint_ActivatedVerbose (line 1105) | bool    Debugger_BreakPoint_ActivatedVerbose(t_debugger_breakpoint *brea...
  function Debugger_Bus_Read (line 1243) | int      Debugger_Bus_Read(int bus, int addr)
  type t_debugger_symbol_file_type (line 1281) | enum t_debugger_symbol_file_type
  function Debugger_Symbols_TryParseLine (line 1289) | bool    Debugger_Symbols_TryParseLine(const char* line_original, t_debug...
  function Debugger_Symbols_Load (line 1351) | bool    Debugger_Symbols_Load()
  function Debugger_Symbols_Clear (line 1436) | void    Debugger_Symbols_Clear()
  function Debugger_Symbols_ListByName (line 1447) | void    Debugger_Symbols_ListByName(char *search_name)
  function Debugger_Symbols_ListByAddr (line 1487) | void    Debugger_Symbols_ListByAddr(u32 addr_request)
  function Debugger_Symbols_Vars_Print (line 1521) | static void Debugger_Symbols_Vars_Print(const t_debugger_symbol* symbol,...
  function Debugger_Symbols_Vars_ListByName (line 1547) | void    Debugger_Symbols_Vars_ListByName(char *search_name)
  function Debugger_Symbols_Vars_ListByAddr (line 1593) | void    Debugger_Symbols_Vars_ListByAddr(u32 addr)
  function t_debugger_symbol (line 1613) | const t_debugger_symbol *     Debugger_Symbols_GetFirstByAddr(u32 cpu_addr)
  function t_debugger_symbol (line 1628) | const t_debugger_symbol *     Debugger_Symbols_GetLastByAddr(u32 cpu_addr)
  function t_debugger_symbol (line 1641) | const t_debugger_symbol *       Debugger_Symbols_GetClosestPreviousByAdd...
  function t_debugger_symbol (line 1658) | t_debugger_symbol *     Debugger_Symbol_Add(u16 cpu_addr, int bank, cons...
  function Debugger_Symbol_Remove (line 1686) | void    Debugger_Symbol_Remove(t_debugger_symbol *symbol)
  function Debugger_Symbol_CompareByRomOrCpuAddress (line 1707) | int     Debugger_Symbol_CompareByRomOrCpuAddress(const t_debugger_symbol...
  function Debugger_Hooks_Install (line 1719) | void     Debugger_Hooks_Install()
  function Debugger_Hooks_Uninstall (line 1728) | void     Debugger_Hooks_Uninstall()
  function Debugger_WrZ80_Hook (line 1736) | void        Debugger_WrZ80_Hook(register u16 addr, register u8 value)
  function u8 (line 1750) | u8          Debugger_RdZ80_Hook(register u16 addr)
  function Debugger_OutZ80_Hook (line 1774) | static void     Debugger_OutZ80_Hook(register u16 addr, register u8 value)
  function u8 (line 1788) | static u8       Debugger_InZ80_Hook(register u16 addr)
  function Debugger_RasterLine_Hook (line 1803) | void            Debugger_RasterLine_Hook(register int line)
  function Debugger_RdVRAM_Hook (line 1814) | void            Debugger_RdVRAM_Hook(register int addr, register u8 value)
  function Debugger_WrVRAM_Hook (line 1827) | void            Debugger_WrVRAM_Hook(register int addr, register u8 value)
  function Debugger_WrPRAM_Hook (line 1840) | void            Debugger_WrPRAM_Hook(register int addr, register u8 value)
  function Debugger_Switch (line 1854) | void    Debugger_Switch()
  function Debugger_PrintEx (line 1891) | void        Debugger_PrintEx(bool debugger, bool log, bool ui, char* buf)
  function Debugger_Printf (line 1916) | void        Debugger_Printf(const char *format, ...)
  function Debugger_Applet_Init (line 1929) | static void Debugger_Applet_Init()
  function Debugger_Applet_Layout (line 1958) | static void     Debugger_Applet_Layout(bool setup)
  function Debugger_Disassemble_Format (line 2097) | int         Debugger_Disassemble_Format(char *dst, u16 addr, bool cursor)
  function Debugger_GetZ80SummaryLines (line 2119) | static int  Debugger_GetZ80SummaryLines(char *** const lines_out, bool s...
  function Debugger_Applet_RedrawState (line 2169) | void    Debugger_Applet_RedrawState()
  function Debugger_Help (line 2404) | static void     Debugger_Help(const char *cmd)
  function Debugger_InputParseCommand_BreakWatch (line 2459) | void        Debugger_InputParseCommand_BreakWatch(char *line, int type)
  function Debugger_StepInto (line 2926) | void        Debugger_StepInto()
  function Debugger_InputParseCommand (line 2958) | void        Debugger_InputParseCommand(char* line)
  function Debugger_ShortcutButton_Callback (line 3650) | void        Debugger_ShortcutButton_Callback(t_widget* w)
  function Debugger_InputBoxCallback (line 3669) | void        Debugger_InputBoxCallback(t_widget *w)
  function Debugger_Value_SetCpuRegister (line 3705) | void     Debugger_Value_SetCpuRegister(t_debugger_value *value, const ch...
  function Debugger_Value_SetSymbol (line 3716) | void     Debugger_Value_SetSymbol(t_debugger_value *value, t_debugger_sy...
  function Debugger_Value_Read (line 3727) | void    Debugger_Value_Read(t_debugger_value *value)
  function Debugger_Value_Write (line 3760) | void    Debugger_Value_Write(t_debugger_value *value, u32 data)
  function Debugger_Value_SetComputed (line 3782) | void     Debugger_Value_SetComputed(t_debugger_value *value, u32 data, i...
  function Debugger_Value_SetDirect (line 3792) | void     Debugger_Value_SetDirect(t_debugger_value *value, u32 data, int...
  function Debugger_Eval_ParseVariable (line 3817) | bool    Debugger_Eval_ParseVariable(int variable_replacement_flags, cons...
  function Debugger_Eval_ParseIntegerHex (line 3854) | int  Debugger_Eval_ParseIntegerHex(const char* s, const char** out_end)
  function Debugger_Eval_ParseInteger (line 3879) | static int  Debugger_Eval_ParseInteger(const char *s, const char *base, ...
  function Debugger_Eval_ParseConstant (line 3897) | bool    Debugger_Eval_ParseConstant(const char *value, t_debugger_value ...
  function Debugger_Eval_GetValue (line 3973) | int    Debugger_Eval_GetValue(char **src_result, t_debugger_value *result)
  function Debugger_Eval_GetExpression_Block (line 4026) | static int  Debugger_Eval_GetExpression_Block(char **expr, t_debugger_va...
  function Debugger_Eval_ParseExpression (line 4136) | int     Debugger_Eval_ParseExpression(char **expr, t_debugger_value *res...
  function Debugger_CompletionCallback (line 4225) | bool        Debugger_CompletionCallback(t_widget *w)
  function Debugger_History_AddLine (line 4397) | void    Debugger_History_AddLine(const char *line_to_add)
  function Debugger_History_Callback (line 4466) | bool        Debugger_History_Callback(t_widget *w, int level)
  function Debugger_History_List (line 4496) | void        Debugger_History_List(const char *search_term_arg)
  function Debugger_ReverseMapFindRomAddress (line 4544) | int         Debugger_ReverseMapFindRomAddress(u16 addr, bool* is_bios)
  function Debugger_ReverseMap (line 4606) | void        Debugger_ReverseMap(u16 addr)

FILE: meka/srcs/debugger.h
  type t_debugger_breakpoint (line 36) | struct t_debugger_breakpoint
  type t_debugger_bus_info (line 50) | struct t_debugger_bus_info
  type t_debugger_symbol (line 61) | struct t_debugger_symbol
  type t_debugger_history_item (line 70) | struct t_debugger_history_item
  type t_debugger_value_flags (line 77) | enum t_debugger_value_flags
  type t_debugger_value_source (line 83) | enum t_debugger_value_source
  type t_debugger_value (line 93) | struct t_debugger_value
  type t_debugger_eval_value_format (line 103) | enum t_debugger_eval_value_format
  type t_debugger_exec_log_entry (line 114) | struct t_debugger_exec_log_entry
  type t_debugger (line 119) | struct t_debugger

FILE: meka/srcs/desktop.cpp
  type t_desktop_item (line 18) | struct t_desktop_item
  function Desktop_Init (line 39) | void    Desktop_Init()
  function Desktop_Close (line 45) | void    Desktop_Close()
  function t_desktop_item (line 51) | static t_desktop_item * Desktop_Item_New(const char *name, t_gui_box *box)
  function Desktop_Register_Box (line 70) | void    Desktop_Register_Box(const char *name, t_gui_box *box, int defau...
  function Desktop_GetStateFromBoxes (line 105) | static void Desktop_GetStateFromBoxes()
  function Desktop_ItemCmpByZ (line 119) | static int  Desktop_ItemCmpByZ(void* lhs, void* rhs)
  function Desktop_SetStateToBoxes (line 124) | void    Desktop_SetStateToBoxes()
  function Desktop_Load_Line (line 148) | static int  Desktop_Load_Line(char *line)
  function Desktop_Load (line 211) | void    Desktop_Load()
  function Desktop_Save_Item (line 233) | static void    Desktop_Save_Item(t_desktop_item *item, FILE *f)
  function Desktop_Save (line 243) | void    Desktop_Save()

FILE: meka/srcs/desktop.h
  type t_desktop (line 10) | struct t_desktop

FILE: meka/srcs/drivers.cpp
  function drv_init (line 49) | void    drv_init()
  function drv_set (line 54) | void    drv_set(int num)
  function drv_get_from_filename_extension (line 77) | int         drv_get_from_filename_extension(const char *filename_extension)
  function drv_is_known_filename_extension (line 89) | int     drv_is_known_filename_extension(const char *filename_extension)
  function drv_id_to_mode (line 106) | int     drv_id_to_mode(int id)

FILE: meka/srcs/drivers.h
  type t_machine_driver (line 11) | enum t_machine_driver
  type ts_driver (line 39) | struct ts_driver
  type ts_driver_filename_extension (line 61) | struct ts_driver_filename_extension

FILE: meka/srcs/eeprom.cpp
  function BMemory_93c46_Load (line 20) | void    BMemory_93c46_Load(FILE *f)
  function BMemory_93c46_Save (line 28) | void    BMemory_93c46_Save(FILE *f)
  function BMemory_93c46_Load_State (line 36) | void    BMemory_93c46_Load_State(FILE *f)
  function BMemory_93c46_Save_State (line 41) | void    BMemory_93c46_Save_State(FILE *f)
  function BMemory_93c46_Get_Infos (line 46) | void    BMemory_93c46_Get_Infos(void **data, int *len)
  function EEPROM_93c46_Control (line 55) | void    EEPROM_93c46_Control(byte v)
  function EEPROM_93c46_Clear (line 72) | void    EEPROM_93c46_Clear()
  function EEPROM_93c46_Init (line 78) | void    EEPROM_93c46_Init(int Init)
  function EEPROM_93c46_Set_Lines (line 92) | void    EEPROM_93c46_Set_Lines(byte lines)
  function byte (line 290) | byte    EEPROM_93c46_Read()
  function EEPROM_93c46_Direct_Write (line 304) | void    EEPROM_93c46_Direct_Write(int Addr, byte Data)
  function byte (line 310) | byte    EEPROM_93c46_Direct_Read(int Addr)

FILE: meka/srcs/eeprom.h
  type t_93c46 (line 52) | struct t_93c46

FILE: meka/srcs/effects.cpp
  type t_tv_effect (line 25) | struct t_tv_effect
  function Effects_TV_Init (line 37) | void    Effects_TV_Init()
  function Effects_TV_Reset (line 42) | void    Effects_TV_Reset()
  function Effects_TV_Update (line 47) | void    Effects_TV_Update()

FILE: meka/srcs/errors.cpp
  function LPVOID (line 35) | static LPVOID   GetWindowsErrorMessage()
  function ShowWindowsErrorMessage (line 49) | void            ShowWindowsErrorMessage()

FILE: meka/srcs/fdc765.cpp
  function GetRes7 (line 124) | void    GetRes7()                       /* Return 7 result bytes */
  function FDCExecWriteCommand (line 145) | void    FDCExecWriteCommand (register byte Value)
  function byte (line 406) | byte    FDCExecReadCommand()
  function byte (line 450) | byte    FDCGetResult()
  function FDC765_Init (line 466) | void    FDC765_Init()
  function FDC765_Close (line 482) | void    FDC765_Close()
  function FDC765_Reset (line 496) | void    FDC765_Reset()
  function FDC765_Data_Write (line 520) | void    FDC765_Data_Write (register byte Value)
  function byte (line 554) | byte    FDC765_Data_Read()
  function byte (line 567) | byte    FDC765_Status_Read()
  function FDC765_Disk_Write_Get (line 580) | void    FDC765_Disk_Write_Get (int DrvNum, void **Data, int *DataSize)
  function FDC765_Disk_Remove (line 594) | void    FDC765_Disk_Remove (int DrvNum)
  function FDC765_Disk_Insert (line 614) | void    FDC765_Disk_Insert (int DrvNum, void *Data, int DataSize)

FILE: meka/srcs/fdc765.h
  type FDC765_DiskHeader (line 41) | struct FDC765_DiskHeader
  type FDC765_Track (line 52) | struct FDC765_Track
  type FDC765_Disk (line 57) | struct FDC765_Disk

FILE: meka/srcs/file.cpp
  function Check_OverDump (line 53) | static void     Check_OverDump()
  function Filenames_Init (line 88) | void    Filenames_Init()
  function Filenames_Init_ROM (line 181) | void    Filenames_Init_ROM()
  function Load_ROM_Command_Line (line 200) | bool    Load_ROM_Command_Line()
  function Reload_ROM (line 208) | bool    Reload_ROM()
  function Load_ROM (line 226) | bool    Load_ROM(t_load_mode load_mode, bool user_verbose)
  function Load_Header_and_Footer_Remove (line 338) | void    Load_Header_and_Footer_Remove (int *pstart, long *psize)
  function Load_ROM_Zipped (line 391) | int             Load_ROM_Zipped ()
  function Load_ROM_File (line 469) | int             Load_ROM_File(const char *filename_ext)
  function Load_ROM_Init_Memory (line 513) | static int      Load_ROM_Init_Memory ()
  function Load_ROM_Main (line 563) | int             Load_ROM_Main ()
  function Load_ROM_Misc (line 600) | void    Load_ROM_Misc (int reset)

FILE: meka/srcs/file.h
  type t_load_mode (line 10) | enum t_load_mode

FILE: meka/srcs/fonts.cpp
  function Font_Declare (line 19) | static void Font_Declare(t_font_id id, const char* text_id, const char* ...
  function Fonts_Init (line 27) | void    Fonts_Init()
  function Fonts_Close (line 41) | void    Fonts_Close()
  function Fonts_DeclareFont (line 46) | void    Fonts_DeclareFont(t_font_id font_id, const char* text_id)
  function Font_SetCurrent (line 54) | void    Font_SetCurrent(t_font_id font_id)
  function Font_Print (line 129) | void    Font_Print(t_font_id font_id, const char *text, int x, int y, AL...
  function Font_PrintCentered (line 168) | void    Font_PrintCentered(t_font_id font_id, const char *text, int x, i...
  function Font_Height (line 175) | int     Font_Height(t_font_id font_id)
  function Font_TextWidth (line 182) | int      Font_TextWidth(t_font_id font_id, const char* text, const char*...
  function Font_TextHeight (line 200) | int      Font_TextHeight(t_font_id font_id, const char *text, int wrap_w...

FILE: meka/srcs/fonts.h
  type t_font_id (line 12) | enum t_font_id
  type t_font (line 35) | struct t_font
  type FontPrinter (line 64) | struct FontPrinter

FILE: meka/srcs/fskipper.cpp
  function Frame_Skipper_Init_Values (line 23) | void    Frame_Skipper_Init_Values()
  function Frame_Skipper_Init (line 37) | void    Frame_Skipper_Init()
  function Frame_Skipper (line 52) | bool Frame_Skipper()
  function Frame_Skipper_Switch (line 126) | void Frame_Skipper_Switch()
  function Frame_Skipper_Configure (line 141) | void Frame_Skipper_Configure (int v)
  function Frame_Skipper_Show (line 163) | void    Frame_Skipper_Show()
  function Frame_Skipper_Switch_FPS_Counter (line 171) | void    Frame_Skipper_Switch_FPS_Counter()

FILE: meka/srcs/fskipper.h
  type t_fskipper (line 29) | struct t_fskipper

FILE: meka/srcs/g_action.cpp
  function Action_Quit (line 19) | void    Action_Quit()
  function Action_Switch_Layer_Sprites (line 80) | void    Action_Switch_Layer_Sprites()
  function Action_Switch_Layer_Background (line 95) | void    Action_Switch_Layer_Background()
  function Action_Switch_Flickering_Auto (line 110) | void    Action_Switch_Flickering_Auto()
  function Action_Switch_Flickering_Yes (line 121) | void    Action_Switch_Flickering_Yes()
  function Action_Switch_Flickering_No (line 130) | void    Action_Switch_Flickering_No()
  function Action_Switch_Mode (line 139) | void    Action_Switch_Mode()

FILE: meka/srcs/g_box.cpp
  function gui_update_boxes (line 14) | void    gui_update_boxes()
  function t_gui_box (line 223) | t_gui_box * gui_box_new(const t_frame *frame, const char *title)
  function gui_box_destroy_video_buffer (line 266) | void    gui_box_destroy_video_buffer(t_gui_box* box)
  function gui_box_create_video_buffer (line 272) | void    gui_box_create_video_buffer(t_gui_box *box)
  function gui_box_destroy_widgets (line 299) | void    gui_box_destroy_widgets(t_gui_box* box)
  function gui_box_delete (line 304) | void    gui_box_delete(t_gui_box *box)
  function gui_box_show (line 339) | void            gui_box_show(t_gui_box *box, bool enable, bool focus)
  function gui_box_find_z (line 374) | int     gui_box_find_z(const t_gui_box* box)
  function gui_box_set_focus (line 386) | void    gui_box_set_focus(t_gui_box *box)
  function gui_box_has_focus (line 428) | int     gui_box_has_focus(t_gui_box *box)
  function gui_box_set_title (line 434) | void    gui_box_set_title(t_gui_box *box, const char *title)
  function gui_box_resize (line 440) | void    gui_box_resize(t_gui_box *box, int size_x, int size_y, bool inte...
  function gui_box_clip_position (line 477) | void    gui_box_clip_position(t_gui_box *box)

FILE: meka/srcs/g_init.cpp
  function GUI_Init (line 36) | void    GUI_Init()
  function GUI_SetupNewVideoMode (line 70) | void    GUI_SetupNewVideoMode()
  function GUI_DestroyVideoBuffers (line 87) | void    GUI_DestroyVideoBuffers()
  function GUI_CreateVideoBuffers (line 106) | void    GUI_CreateVideoBuffers()
  function GUI_Close (line 132) | void    GUI_Close()
  function GUI_InitApplets (line 139) | void    GUI_InitApplets()

FILE: meka/srcs/g_menu.cpp
  function gui_redraw_bars (line 24) | void        gui_redraw_bars()
  function gui_update_menu (line 54) | void            gui_update_menu (int n_menu, int n_parent, int n_parent_...
  function gui_draw_menu (line 143) | void    gui_draw_menu(int n_menu, int n_parent, int n_parent_entry)
  function gui_redraw_menus (line 271) | void    gui_redraw_menus()
  function gui_update_menus (line 286) | void    gui_update_menus()

FILE: meka/srcs/g_menu.h
  type t_menu_id (line 10) | typedef int t_menu_id;
  type t_menu_item_type (line 21) | enum t_menu_item_type
  type t_menu_item_flags (line 30) | enum t_menu_item_flags
  type t_gui_status_bar (line 107) | struct t_gui_status_bar
  type t_gui_menus_id (line 116) | struct t_gui_menus_id
  type t_menu_event (line 133) | struct t_menu_event
  type t_menu_item (line 137) | struct t_menu_item
  type t_menu (line 149) | struct t_menu
  type gui_type_menus_opt (line 159) | struct  gui_type_menus_opt
  type t_menu_event (line 171) | struct t_menu_event

FILE: meka/srcs/g_menu_i.cpp
  function Debug_ReloadSymbols_Callback (line 38) | static void Debug_ReloadSymbols_Callback(t_menu_event*)
  function Debug_StepFrame_Callback (line 43) | static void Debug_StepFrame_Callback(t_menu_event*)
  function Debug_LoadStateAndContinue_Callback (line 48) | static void Debug_LoadStateAndContinue_Callback(t_menu_event*)
  function gui_menus_init (line 56) | void    gui_menus_init()

FILE: meka/srcs/g_menu_t.cpp
  function gui_menu_highlight (line 12) | void    gui_menu_highlight(int menu_id, int entry_id)
  function gui_menu_return_children_pos (line 22) | void    gui_menu_return_children_pos(int p_menu, int p_entry, int *x, in...
  function gui_menu_return_entry_pos (line 40) | void    gui_menu_return_entry_pos(int menu_id, int n_entry, int *x1, int...
  function gui_menu_update_size (line 77) | void    gui_menu_update_size(int menu_id)
  function gui_menus_update_size (line 105) | void gui_menus_update_size (void)
  function menu_new (line 117) | int     menu_new (void)
  function menu_add_menu (line 139) | int     menu_add_menu (int menu_id, const char *label, int flags)
  function menu_add_item (line 161) | int menu_add_item(int menu_id, const char* label, const char* shortcut, ...
  function menu_add_separator (line 180) | int menu_add_separator(int menu_id)
  function gui_menu_un_mouse_over (line 201) | void    gui_menu_un_mouse_over (int menu_id)
  function gui_menu_uncheck_all (line 220) | void    gui_menu_uncheck_all(int menu_id)
  function gui_menu_uncheck_range (line 235) | void    gui_menu_uncheck_range(int menu_id, int start, int end)
  function gui_menu_active (line 249) | void    gui_menu_active(int active, int menu_id, int menu_item)
  function gui_menu_active_range (line 261) | void    gui_menu_active_range(int active, int menu_id, int start, int end)
  function gui_menu_check (line 273) | void    gui_menu_check(int menu_id, int n_entry)
  function gui_menu_toggle_check (line 279) | void    gui_menu_toggle_check (int menu_id, int n_entry)

FILE: meka/srcs/g_mouse.cpp
  function gui_init_mouse (line 12) | void    gui_init_mouse()
  function gui_is_mouse_hovering_area (line 31) | bool    gui_is_mouse_hovering_area(int x1, int y1, int x2, int y2)
  function gui_is_mouse_hovering_area (line 36) | bool    gui_is_mouse_hovering_area(const t_frame* frame)
  function gui_update_mouse (line 42) | void    gui_update_mouse()

FILE: meka/srcs/g_mouse.h
  type t_gui_focus (line 10) | enum t_gui_focus

FILE: meka/srcs/g_tools.cpp
  function gui_frame_clear (line 13) | void    gui_frame_clear(ALLEGRO_BITMAP *dst, const t_frame *frame, ALLEG...
  function gui_rect (line 19) | void    gui_rect(int look, int x1, int y1, int x2, int y2, ALLEGRO_COLOR...
  function gui_rect_titled (line 35) | void    gui_rect_titled (char *Text, t_font_id font_id,

FILE: meka/srcs/g_tools.h
  function INLINE (line 23) | static INLINE

FILE: meka/srcs/g_update.cpp
  function gui_update_applets (line 33) | void    gui_update_applets()
  function gui_update_applets_after_redraw (line 76) | void    gui_update_applets_after_redraw()
  function gui_update (line 83) | void    gui_update()

FILE: meka/srcs/g_widget.cpp
  type t_widget_data_closebox (line 22) | struct t_widget_data_closebox
  type t_widget_data_button (line 28) | struct t_widget_data_button
  type t_widget_data_scrollbar (line 37) | struct t_widget_data_scrollbar
  type t_widget_data_checkbox (line 46) | struct t_widget_data_checkbox
  type t_widget_data_textbox_line (line 52) | struct t_widget_data_textbox_line
  type t_widget_data_textbox (line 58) | struct t_widget_data_textbox
  type t_widget_data_inputbox (line 69) | struct t_widget_data_inputbox
  function widgets_update_box (line 100) | bool    widgets_update_box(t_gui_box *b, int mouse_x, int mouse_y)
  function widgets_call_update (line 140) | void    widgets_call_update()
  function t_widget (line 155) | t_widget *  widget_new(t_gui_box *box, t_widget_type type, const t_frame...
  function widget_destroy (line 187) | void        widget_destroy(t_widget *w)
  function widget_set_enabled (line 196) | void        widget_set_enabled(t_widget *w, bool v)
  function widget_set_highlight (line 205) | void        widget_set_highlight(t_widget *w, bool v)
  function widget_set_mouse_buttons_mask (line 210) | void        widget_set_mouse_buttons_mask(t_widget *w, int mouse_buttons...
  function widget_set_user_data (line 224) | void        widget_set_user_data(t_widget *w, void *user_data)
  function t_widget (line 235) | t_widget *  widget_closebox_add(t_gui_box *box, t_widget_callback callback)
  function widget_closebox_redraw (line 259) | void        widget_closebox_redraw(t_widget *w)
  function widget_closebox_update (line 280) | void        widget_closebox_update(t_widget *w)
  function t_widget (line 317) | t_widget *  widget_button_add(t_gui_box *box, const t_frame *frame, int ...
  function widget_button_destroy (line 340) | void    widget_button_destroy(t_widget* w)
  function widget_button_update (line 347) | void    widget_button_update(t_widget *w)
  function widget_button_trigger (line 371) | void    widget_button_trigger(t_widget* w)
  function widget_button_redraw (line 379) | void        widget_button_redraw(t_widget *w)
  function widget_button_set_grayed_out (line 400) | void    widget_button_set_grayed_out(t_widget *w, bool grayed_out)
  function widget_button_set_label (line 409) | void    widget_button_set_label(t_widget *w, const char* label)
  function t_widget (line 419) | t_widget *  widget_scrollbar_add(t_gui_box *box, t_widget_scrollbar_type...
  function widget_scrollbar_update (line 438) | void    widget_scrollbar_update(t_widget *w)
  function widget_scrollbar_redraw (line 494) | void        widget_scrollbar_redraw(t_widget *w)
  function widget_scrollbar_set_page_step (line 527) | void    widget_scrollbar_set_page_step(t_widget *w, int page_step)
  function t_widget (line 535) | t_widget *  widget_checkbox_add(t_gui_box *box, const t_frame *frame, bo...
  function widget_checkbox_update (line 552) | void        widget_checkbox_update(t_widget *w)
  function widget_checkbox_redraw (line 566) | void        widget_checkbox_redraw(t_widget *w)
  function widget_checkbox_set_pvalue (line 581) | void        widget_checkbox_set_pvalue(t_widget *w, bool *pvalue)
  function t_widget (line 591) | t_widget *  widget_textbox_add(t_gui_box *box, const t_frame *frame, t_f...
  function widget_textbox_destroy (line 618) | void        widget_textbox_destroy(t_widget *w)
  function widget_textbox_redraw (line 626) | void        widget_textbox_redraw(t_widget *w)
  function widget_textbox_clear (line 653) | void        widget_textbox_clear(t_widget *w)
  function widget_textbox_set_current_color (line 662) | void        widget_textbox_set_current_color(t_widget *w, const ALLEGRO_...
  function widget_textbox_print_scroll (line 668) | void        widget_textbox_print_scroll(t_widget *w, bool wrap, const ch...
  function widget_textbox_printf_scroll (line 758) | void        widget_textbox_printf_scroll(t_widget *w, bool wrap, const c...
  function t_widget (line 772) | t_widget *  widget_inputbox_add(t_gui_box *box, const t_frame *frame, in...
  function widget_inputbox_destroy (line 817) | void    widget_inputbox_destroy(t_widget *w)
  function widget_inputbox_delete_selection (line 824) | void    widget_inputbox_delete_selection(t_widget* w)
  function widget_inputbox_insert_chars (line 839) | bool    widget_inputbox_insert_chars(t_widget* w, const char* str)
  function widget_inputbox_delete_current_char (line 887) | void    widget_inputbox_delete_current_char(t_widget *w)
  function widget_inputbox_translate_char (line 903) | static char widget_inputbox_translate_char(t_widget* w, char c)
  function widget_inputbox_update (line 936) | void        widget_inputbox_update(t_widget *w)
  function widget_inputbox_redraw (line 1184) | void        widget_inputbox_redraw(t_widget *w)
  function widget_inputbox_get_value_length (line 1248) | int         widget_inputbox_get_value_length(t_widget *w)
  function widget_inputbox_set_value (line 1254) | void        widget_inputbox_set_value(t_widget *w, const char *value)
  function widget_inputbox_get_cursor_pos (line 1277) | int         widget_inputbox_get_cursor_pos(t_widget *w)
  function widget_inputbox_set_cursor_pos (line 1283) | void        widget_inputbox_set_cursor_pos(t_widget *w, int cursor_pos)
  function widget_inputbox_has_selection (line 1290) | bool        widget_inputbox_has_selection(t_widget *w)
  function widget_inputbox_set_selection (line 1296) | void        widget_inputbox_set_selection(t_widget *w, int sel_begin, in...
  function widget_inputbox_set_selection_end (line 1304) | void        widget_inputbox_set_selection_end(t_widget *w, int sel_end)
  function widget_inputbox_set_callback_enter (line 1311) | void        widget_inputbox_set_callback_enter(t_widget *w, void (*callb...
  function widget_inputbox_set_callback_edit (line 1317) | void        widget_inputbox_set_callback_edit(t_widget *w, void (*callba...
  function widget_inputbox_set_flags (line 1323) | void        widget_inputbox_set_flags(t_widget *w, int/*t_widget_inputbo...
  function widget_inputbox_set_content_type (line 1333) | void        widget_inputbox_set_content_type(t_widget *w, t_widget_conte...
  function widget_inputbox_set_overwrite_mode (line 1339) | void        widget_inputbox_set_overwrite_mode(t_widget *w, bool overwri...
  function widget_inputbox_set_callback_completion (line 1345) | void        widget_inputbox_set_callback_completion(t_widget *w, bool (*...
  function widget_inputbox_set_callback_history (line 1352) | void        widget_inputbox_set_callback_history(t_widget *w, bool (*cal...

FILE: meka/srcs/g_widget.h
  type t_widget_type (line 10) | enum t_widget_type
  type t_widget_content_type (line 20) | enum t_widget_content_type
  type t_widget_inputbox_flags (line 28) | enum t_widget_inputbox_flags
  type t_widget_scrollbar_type (line 40) | enum t_widget_scrollbar_type
  type t_widget_mouse_action (line 46) | enum t_widget_mouse_action
  type t_widget (line 59) | struct t_widget

FILE: meka/srcs/glasses.cpp
  function Glasses_Init_Values (line 30) | void    Glasses_Init_Values()
  function Glasses_Close (line 47) | void    Glasses_Close()
  function Glasses_Must_Skip_Frame (line 56) | int     Glasses_Must_Skip_Frame()
  function Glasses_Set_Mode (line 80) | void    Glasses_Set_Mode(int mode)
  function Glasses_Set_ComPort (line 92) | void    Glasses_Set_ComPort(int port)
  function Glasses_ComPort_Initialize (line 102) | int     Glasses_ComPort_Initialize()
  function Glasses_ComPort_Close (line 176) | void    Glasses_ComPort_Close()
  function Glasses_ComPort_Write (line 186) | void    Glasses_ComPort_Write(int left_enable, int right_enable)
  function Glasses_Update (line 233) | void    Glasses_Update()
  function Glasses_Switch_Enable (line 244) | void    Glasses_Switch_Enable()
  function Glasses_Switch_Mode_Show_Both (line 262) | void    Glasses_Switch_Mode_Show_Both()
  function Glasses_Switch_Mode_Show_Left (line 271) | void    Glasses_Switch_Mode_Show_Left()
  function Glasses_Switch_Mode_Show_Right (line 280) | void    Glasses_Switch_Mode_Show_Right()
  function Glasses_Switch_Mode_Com_Port (line 289) | void    Glasses_Switch_Mode_Com_Port()

FILE: meka/srcs/glasses.h
  type t_glasses (line 19) | struct t_glasses

FILE: meka/srcs/gui.cpp
  function gui_redraw_everything_now_once (line 49) | void    gui_redraw_everything_now_once()
  function gui_draw_background (line 56) | void    gui_draw_background()
  function gui_draw (line 62) | void    gui_draw()
  function gui_relayout_all (line 168) | void    gui_relayout_all()

FILE: meka/srcs/gui.h
  type t_gui_box (line 12) | struct t_gui_box
  type t_list (line 13) | struct t_list
  function v2i (line 15) | struct v2i
  function Set (line 29) | void Set(int _x, int _y)
  function t_frame (line 41) | struct t_frame
  function Set (line 54) | void Set(v2i _pos, v2i _size)
  function SetPos (line 59) | void SetPos(v2i _pos)
  function SetPos (line 63) | void SetPos(int x, int y)
  function SetSize (line 68) | void SetSize(v2i _size)
  function SetSize (line 72) | void SetSize(int x, int y)
  type DrawCursor (line 90) | struct DrawCursor
  type t_gui_box_type (line 145) | enum t_gui_box_type
  type t_gui_box_flags (line 151) | enum t_gui_box_flags
  type t_gui_box (line 178) | struct t_gui_box
  type t_gui_info (line 198) | struct t_gui_info
  type t_gui_mouse (line 208) | struct t_gui_mouse
  type t_gui (line 230) | struct t_gui

FILE: meka/srcs/hq2x.cpp
  function HQ2X_Init (line 44) | void    HQ2X_Init()

FILE: meka/srcs/inputs.cpp
  function Inputs_Switch_Current (line 41) | void    Inputs_Switch_Current()
  function Inputs_Peripheral_Next (line 56) | void    Inputs_Peripheral_Next(int Player)
  function Inputs_Check_GUI (line 71) | void        Inputs_Check_GUI(bool sk1100_pressed)
  function Inputs_Switch_Joypad (line 263) | void    Inputs_Switch_Joypad()
  function Inputs_Switch_LightPhaser (line 273) | void    Inputs_Switch_LightPhaser()
  function Inputs_Switch_PaddleControl (line 283) | void    Inputs_Switch_PaddleControl()
  function Inputs_Switch_SportsPad (line 293) | void    Inputs_Switch_SportsPad()
  function Inputs_Switch_GraphicBoard (line 302) | void    Inputs_Switch_GraphicBoard()
  function Inputs_Switch_GraphicBoardV2 (line 311) | void    Inputs_Switch_GraphicBoardV2()
  function Input_ROM_Change (line 320) | void    Input_ROM_Change()
  function u8 (line 346) | u8  Input_Port_DC()
  function u8 (line 445) | u8  Input_Port_DD()
  function Inputs_Peripheral_Change_Update (line 519) | void    Inputs_Peripheral_Change_Update()
  function Inputs_SetMouseCursor (line 580) | void    Inputs_SetMouseCursor(t_mouse_cursor mouse_cursor)

FILE: meka/srcs/inputs.h
  type t_mouse_cursor (line 10) | enum t_mouse_cursor
  type t_input_peripheral (line 22) | enum t_input_peripheral
  type t_input_src_type (line 48) | enum t_input_src_type
  type t_input_src_flags (line 56) | enum t_input_src_flags
  type t_input_map_type (line 71) | enum t_input_map_type
  type t_input_peripheral_info (line 82) | struct t_input_peripheral_info
  type t_key_press (line 114) | struct t_key_press
  type t_input_map_entry (line 120) | struct t_input_map_entry
  type t_input_src (line 130) | struct t_input_src
  type t_peripheral_graphic_board_v2 (line 144) | struct t_peripheral_graphic_board_v2
  type t_peripheral_paddle (line 152) | struct t_peripheral_paddle
  type t_peripheral_sportspad (line 158) | struct t_peripheral_sportspad
  type t_inputs (line 165) | struct t_inputs

FILE: meka/srcs/inputs_c.cpp
  function Inputs_CFG_Switch (line 45) | void    Inputs_CFG_Switch()
  function Inputs_CFG_Init_Applet (line 52) | void    Inputs_CFG_Init_Applet()
  function Inputs_CFG_Layout (line 73) | static void Inputs_CFG_Layout(t_app_inputs_config *app, bool setup)
  function byte (line 134) | byte        Inputs_CFG_Current_Source_Draw_Map(int i, ALLEGRO_COLOR Color)
  function Inputs_CFG_Current_Source_Draw (line 202) | void    Inputs_CFG_Current_Source_Draw()
  function Inputs_CFG_Current_Source_Change (line 274) | void    Inputs_CFG_Current_Source_Change (t_widget *w)
  function Inputs_CFG_Peripherals_Draw (line 312) | void        Inputs_CFG_Peripherals_Draw()
  function Inputs_CFG_Peripheral_Change_Handler (line 372) | void    Inputs_CFG_Peripheral_Change_Handler (t_widget *w)
  function Inputs_CFG_Peripheral_Change (line 378) | void    Inputs_CFG_Peripheral_Change (int Player, t_input_peripheral Per...
  function Inputs_CFG_Map_Change_Handler (line 385) | void    Inputs_CFG_Map_Change_Handler (t_widget *w)
  function Inputs_CFG_Update (line 439) | void    Inputs_CFG_Update(t_app_inputs_config *app)
  function Inputs_CFG_Map_Change_Update (line 464) | void    Inputs_CFG_Map_Change_Update()
  function Inputs_CFG_Map_Change_End (line 636) | void    Inputs_CFG_Map_Change_End()
  function Inputs_CFG_Emulate_Digital_Handler (line 651) | void    Inputs_CFG_Emulate_Digital_Handler(t_widget *w)

FILE: meka/srcs/inputs_c.h
  type t_app_inputs_config (line 10) | struct t_app_inputs_config

FILE: meka/srcs/inputs_f.cpp
  function INLINE (line 13) | INLINE  void INP_Write_Line     (const char *s)                   { fpri...
  function INLINE (line 14) | INLINE  void INP_Write_Str      (const char *name, const char *s) { fpri...
  function INLINE (line 15) | INLINE  void INP_Write_Int      (const char *name, int value)     { fpri...
  function INLINE (line 16) | INLINE  void INP_Write_Float    (const char *name, float value)   { fpri...
  function Load_Inputs_Src_Parse_Var (line 36) | static int  Load_Inputs_Src_Parse_Var (int var_idx, char *s, t_input_src...
  function Load_Inputs_Src_List (line 221) | void            Load_Inputs_Src_List()
  function Write_Inputs_Src_List (line 304) | void    Write_Inputs_Src_List()

FILE: meka/srcs/inputs_i.cpp
  function Inputs_Init (line 21) | void    Inputs_Init()
  function Inputs_Joystick_Init (line 38) | void    Inputs_Joystick_Init()
  function Inputs_Joystick_Close (line 78) | void    Inputs_Joystick_Close()

FILE: meka/srcs/inputs_t.cpp
  function Inputs_KeyClearAllState (line 20) | void    Inputs_KeyClearAllState()
  function Inputs_KeyPressQueue_Remove (line 26) | void    Inputs_KeyPressQueue_Remove(t_key_press *keypress)
  function Inputs_KeyPressQueue_Clear (line 34) | void    Inputs_KeyPressQueue_Clear()
  function Inputs_KeyDown (line 39) | bool    Inputs_KeyDown(int keycode)
  function Inputs_KeyEat (line 46) | void    Inputs_KeyEat(int keycode)
  function Inputs_KeyPressed (line 56) | bool    Inputs_KeyPressed(int keycode, bool eat)
  function Inputs_KeyPressed_Repeat (line 83) | bool    Inputs_KeyPressed_Repeat(int keycode, bool eat, int delay, int r...

FILE: meka/srcs/inputs_u.cpp
  function Inputs_Sources_Init (line 36) | void    Inputs_Sources_Init()
  function t_input_src (line 51) | t_input_src *       Inputs_Sources_Add(char *name)
  function Inputs_Sources_Close (line 82) | void       Inputs_Sources_Close()
  function Inputs_Emulation_Update (line 98) | void    Inputs_Emulation_Update(bool running)
  function Inputs_Sources_Update (line 306) | void    Inputs_Sources_Update()
  function Inputs_Sources_ClearOutOfFocus (line 564) | void Inputs_Sources_ClearOutOfFocus()
  function Inputs_UpdateMouseRange (line 571) | void Inputs_UpdateMouseRange()
  function Inputs_FixUpJoypadOppositesDirections (line 603) | static void    Inputs_FixUpJoypadOppositesDirections()

FILE: meka/srcs/ioports.cpp
  function Out_SMS (line 35) | void    Out_SMS(u16 Port, u8 Value)
  function u8 (line 151) | u8      In_SMS (u16 Port)
  function Out_SF7000 (line 260) | void Out_SF7000 (u16 Port, u8 Value)
  function u8 (line 342) | u8 In_SF7000 (word Port)

FILE: meka/srcs/keyinfo.cpp
  function t_key_info (line 153) | const t_key_info *    KeyInfo_FindByScancode(int scancode)
  function t_key_info (line 165) | const t_key_info *    KeyInfo_FindByName(const char *name)

FILE: meka/srcs/keyinfo.h
  type t_key_info (line 17) | struct t_key_info

FILE: meka/srcs/libmisc.cpp
  function StrLenU16 (line 22) | int     StrLenU16(const unsigned short *s)
  function StrWriteBitfield (line 72) | void    StrWriteBitfield(int v, int n_bits, char* out_field)
  function StrIsNull (line 85) | bool    StrIsNull(const char *s)
  function StrUpper (line 92) | void    StrUpper(char *s)
  function StrLower (line 106) | void    StrLower(char *s)
  function StrReplace (line 120) | void StrReplace (char *s, char c1, char c2)
  function StrMatch (line 130) | int StrMatch (const char *src, const char *wildcards)
  function StrChomp (line 156) | void    StrChomp (char *s)
  function StrTrim (line 168) | void    StrTrim (char *s)
  function StrTrimEnd (line 183) | void     StrTrimEnd(char *s)
  function StrRemoveBlanks (line 193) | void    StrRemoveBlanks(char *s)
  function list_add (line 214) | void        list_add(t_list **list, void *elem)
  function list_add_to_end (line 222) | void        list_add_to_end(t_list **list, void *elem)
  function list_free (line 242) | void        list_free(t_list **list)
  function list_free_no_elem (line 253) | void        list_free_no_elem(t_list **list)
  function list_free_custom (line 263) | void            list_free_custom(t_list **list, void (*custom_free)(void...
  function list_remove (line 278) | void            list_remove(t_list **list, void *elem)
  function list_reverse (line 300) | void    list_reverse(t_list **list)
  function list_size (line 315) | int     list_size(const t_list *list)
  function list_sort (line 326) | void    list_sort(t_list **list, int (*fct)(void *elem1, void *elem2))

FILE: meka/srcs/libmisc.h
  type t_list (line 36) | struct t_list

FILE: meka/srcs/libparse.cpp
  function parse_trim_trailing_spaces (line 26) | void        parse_trim_trailing_spaces (char *s)
  function parse_skip_spaces (line 38) | void        parse_skip_spaces(char **src)
  function t_tfile (line 208) | t_tfile *       tfile_read(const char *filename)
  function tfile_free (line 271) | void            tfile_free(t_tfile *tf)

FILE: meka/srcs/libparse.h
  type t_parse_flags (line 11) | enum t_parse_flags
  type t_tfile (line 19) | struct t_tfile

FILE: meka/srcs/lightgun.cpp
  function LightPhaser_Init (line 21) | void    LightPhaser_Init()
  function u8 (line 30) | u8      LightPhaser_GetX()
  function LightPhaser_Sync (line 56) | void    LightPhaser_Sync(int player, byte *v)
  function LightPhaser_Update (line 76) | void    LightPhaser_Update(int player, int device_x, int device_y)

FILE: meka/srcs/lightgun.h
  type t_lightphaser_emu_func (line 7) | enum t_lightphaser_emu_func
  type t_light_phaser (line 27) | struct t_light_phaser

FILE: meka/srcs/machine.cpp
  function Machine_Pause (line 36) | void    Machine_Pause()
  function Machine_Debug_Start (line 57) | void    Machine_Debug_Start()
  function Machine_Debug_Stop (line 65) | void    Machine_Debug_Stop()
  function Machine_Set_Handler_Loop (line 76) | void    Machine_Set_Handler_Loop()
  function Machine_Set_Handler_IO (line 87) | void    Machine_Set_Handler_IO()
  function Machine_Set_Handler_MemRW (line 107) | void    Machine_Set_Handler_MemRW()
  function Machine_Set_Mapper (line 214) | void        Machine_Set_Mapper()
  function Machine_Set_Mapping (line 262) | void    Machine_Set_Mapping()
  function Machine_Set_Country (line 588) | void    Machine_Set_Country()
  function Machine_Set_IPeriod (line 596) | void    Machine_Set_IPeriod()
  function Machine_Set_TV_Lines (line 621) | void    Machine_Set_TV_Lines()
  function Machine_Reset (line 631) | void        Machine_Reset()

FILE: meka/srcs/mainloop.cpp
  function Main_Loop (line 17) | void    Main_Loop()
  function Main_Loop_No_Emulation (line 85) | void    Main_Loop_No_Emulation()

FILE: meka/srcs/mappers.cpp
  function Map_8k_Other (line 30) | void Map_8k_Other (int page, void *data)
  function Map_16k_Other (line 35) | void Map_16k_Other (int page, void *data)
  function Map_8k_RAM (line 40) | void Map_8k_RAM (int page, int ram_page)
  function Map_8k_ROM (line 45) | void Map_8k_ROM (int page, int rom_page)
  function Map_16k_ROM (line 50) | void Map_16k_ROM (int page, int rom_page)
  function Write_Error (line 56) | void    Write_Error (int Addr, u8 Value)
  function Mapper_InitializeLookupTables (line 66) | void    Mapper_InitializeLookupTables()
  function Out_SC3000_SurvivorsMulticarts_DataWrite (line 78) | void    Out_SC3000_SurvivorsMulticarts_DataWrite(u8 v)
  function Mapper_Get_RAM_Infos (line 96) | void    Mapper_Get_RAM_Infos(int *plen, int *pstart_addr)
  function Mapper_Autodetect (line 121) | int         Mapper_Autodetect()
  function WRITE_FUNC (line 192) | WRITE_FUNC (Write_Default)
  function WRITE_FUNC (line 286) | WRITE_FUNC (Write_Mapper_32kRAM)
  function WRITE_FUNC (line 295) | WRITE_FUNC (Write_Mapper_SMS_NoMapper)
  function WRITE_FUNC (line 314) | WRITE_FUNC (Write_Mapper_SG1000)
  function WRITE_FUNC (line 371) | WRITE_FUNC (Write_Mapper_SG1000_Taiwan_MSX_Adapter_TypeA)
  function WRITE_FUNC (line 384) | WRITE_FUNC (Write_Mapper_CodeMasters)
  function WRITE_FUNC (line 447) | WRITE_FUNC (Write_Mapper_SMS_4PakAllAction)
  function WRITE_FUNC (line 485) | WRITE_FUNC (Write_Mapper_SMS_Korean_A000)
  function WRITE_FUNC (line 507) | WRITE_FUNC(Write_Mapper_SMS_Korean_BFFC)
  function WRITE_FUNC (line 566) | WRITE_FUNC (Write_Mapper_SMS_Korean_FFFF_HiCom)
  function WRITE_FUNC (line 589) | WRITE_FUNC (Write_Mapper_SMS_Korean_2000_xor_1F)
  function WRITE_FUNC (line 621) | WRITE_FUNC (Write_Mapper_SMS_Korean_FFFE)
  function WRITE_FUNC (line 652) | WRITE_FUNC(Write_Mapper_SMS_Korean_FFF3_FFFC)
  function WRITE_FUNC (line 753) | WRITE_FUNC(Write_Mapper_SMS_Korean_0000_xor_FF)
  function WRITE_FUNC (line 788) | WRITE_FUNC (Write_Mapper_SMS_Korean_MD_FFF0)
  function WRITE_FUNC (line 831) | WRITE_FUNC (Write_Mapper_SMS_Korean_MD_FFF5)
  function WRITE_FUNC (line 891) | WRITE_FUNC(Write_Mapper_SMS_Korean_MD_FFFA)
  function WRITE_FUNC (line 933) | WRITE_FUNC (Write_Mapper_SMS_Korean_MSX_32KB_2000)
  function WRITE_FUNC (line 957) | WRITE_FUNC(Write_Mapper_SMS_Korean_SMS_32KB_2000)
  function WRITE_FUNC (line 985) | WRITE_FUNC (Write_Mapper_SMS_Korean_MSX_SMS_8000)
  function WRITE_FUNC (line 1033) | WRITE_FUNC (Write_Mapper_SMS_Korean_MSX_8KB_0003)
  function WRITE_FUNC (line 1090) | WRITE_FUNC(Write_Mapper_SMS_Korean_MSX_8KB_0300)
  function WRITE_FUNC (line 1133) | WRITE_FUNC (Write_Mapper_SMS_Korean_Janggun)
  function WRITE_FUNC (line 1194) | WRITE_FUNC(Write_Mapper_MSX_Generic16_8000)
  function WRITE_FUNC (line 1215) | WRITE_FUNC (Write_Mapper_SMS_DisplayUnit)
  function READ_FUNC (line 1229) | READ_FUNC (Read_Mapper_SMS_DisplayUnit)
  function WRITE_FUNC (line 1238) | WRITE_FUNC (Write_Mapper_93c46)
  function WRITE_FUNC (line 1287) | WRITE_FUNC (Write_Mapper_SMS_ActionReplay)
  function READ_FUNC (line 1302) | READ_FUNC (Read_Default)
  function READ_FUNC (line 1319) | READ_FUNC (Read_Mapper_SMS_Korean_Janggun)
  function READ_FUNC (line 1330) | READ_FUNC (Read_Mapper_SG1000_Taiwan_MSX_Adapter_TypeA)
  function READ_FUNC (line 1341) | READ_FUNC (Read_Mapper_93c46)

FILE: meka/srcs/meka.cpp
  function FILE (line 103) | FILE * __cdecl __iob_func()
  function Init_Emulator (line 113) | static void Init_Emulator()
  function Init_LookUpTables (line 132) | static void Init_LookUpTables()
  function Init_Default_Values (line 139) | static void Init_Default_Values()
  function Free_Memory (line 243) | static void Free_Memory()
  function Close_Emulator (line 254) | static void Close_Emulator()
  function Close_Emulator_Starting_Dir (line 286) | static void Close_Emulator_Starting_Dir()
  function Init_Allegro (line 291) | static int Init_Allegro()
  function Close_Allegro (line 318) | static void Close_Allegro()
  function Init_GUI (line 330) | static void Init_GUI()
  function main (line 337) | int main(int argc, char **argv)

FILE: meka/srcs/meka.h
  type t_meka_state (line 55) | enum t_meka_state
  type SMS_TYPE (line 73) | struct SMS_TYPE
  type TSMS_TYPE (line 107) | struct TSMS_TYPE
  type TGFX_TYPE (line 127) | struct TGFX_TYPE
  type OPT_TYPE (line 133) | struct OPT_TYPE
  type t_machine_vdp_smsgg (line 175) | struct t_machine_vdp_smsgg
  type t_machine (line 194) | struct t_machine
  type t_meka_env_paths (line 212) | struct t_meka_env_paths
  type t_meka_env (line 236) | struct t_meka_env
  type t_video_driver (line 262) | struct t_video_driver
  type t_meka_config (line 264) | struct t_meka_config
  type t_meka_crc (line 330) | struct t_meka_crc
  type t_media_image (line 337) | struct t_media_image

FILE: meka/srcs/message.cpp
  type S2I_TYPE (line 26) | struct S2I_TYPE
  type t_console_win32 (line 472) | struct t_console_win32
  function t_lang (line 513) | t_lang *    Lang_New(char *name)
  function Lang_Delete (line 531) | void    Lang_Delete(t_lang* lang)
  function Lang_Post_Check (line 539) | int     Lang_Post_Check (t_lang *lang)
  function Lang_Message_Add (line 570) | int     Lang_Message_Add (t_lang *lang, char *msg_id, char *msg)
  function Lang_Set (line 604) | static void     Lang_Set (t_menu_event *event)
  function Lang_Set_by_Name (line 618) | void            Lang_Set_by_Name (char *name)
  function Langs_Menu_Add (line 631) | void            Langs_Menu_Add (int menu_id)
  function Messages_Init_Parse_Line (line 649) | int             Messages_Init_Parse_Line (char *line)
  function Messages_Init (line 699) | int     Messages_Init()
  function Messages_Close (line 774) | void    Messages_Close()
  function ConsoleInit (line 785) | void            ConsoleInit()
  function ConsoleClose (line 800) | void            ConsoleClose()
  function ConsolePrintf (line 814) | void            ConsolePrintf (const char *format, ...)
  function ConsolePrint (line 829) | void            ConsolePrint(const char *msg)
  function ConsoleEnablePause (line 849) | void            ConsoleEnablePause()
  function ConsoleWaitForAnswer (line 855) | bool            ConsoleWaitForAnswer(bool allow_run)
  function Msg (line 879) | void            Msg(int attr, const char *format, ...)
  function ConsoleWin32_Initialize (line 938) | static int     ConsoleWin32_Initialize(t_console_win32 *c, HINSTANCE hIn...
  function ConsoleWin32_Close (line 985) | static void    ConsoleWin32_Close(t_console_win32 *c)
  function ConsoleWin32_Show (line 998) | static void    ConsoleWin32_Show(t_console_win32 *c)
  function ConsoleWin32_Hide (line 1005) | static void    ConsoleWin32_Hide(t_console_win32 *c)
  function ConsoleWin32_WaitForAnswer (line 1012) | static bool     ConsoleWin32_WaitForAnswer(t_console_win32 *c, bool allo...
  function DWORD (line 1033) | static DWORD WINAPI ConsoleWin32_Thread(LPVOID data)
  function ConsoleWin32_DialogProc (line 1078) | static int CALLBACK ConsoleWin32_DialogProc(HWND hDlg, UINT message, WPA...
  function ConsoleWin32_Clear (line 1164) | static void    ConsoleWin32_Clear(t_console_win32 *c)
  function ConsoleWin32_CopyToClipboard (line 1169) | static void    ConsoleWin32_CopyToClipboard(t_console_win32 *c)
  function ConsoleWin32_Print (line 1193) | static void        ConsoleWin32_Print(t_console_win32 *c, char *s)

FILE: meka/srcs/message.h
  type t_lang (line 463) | struct t_lang
  type t_messages (line 478) | struct t_messages

FILE: meka/srcs/misc.cpp
  function Change_System_Misc (line 32) | void    Change_System_Misc()
  function OSD_ClipboardSetText (line 43) | bool    OSD_ClipboardSetText(const char* text, const char* text_end)
  function Random_Init (line 92) | void    Random_Init()
  function RandomInt (line 100) | int     RandomInt(int max)
  function RandomFloat (line 110) | float   RandomFloat(float max)
  function RandomFloat (line 116) | float   RandomFloat(float min, float max)
  function Profile_Step (line 121) | void    Profile_Step(const char* name)
  function Show_End_Message (line 134) | void    Show_End_Message()
  function Quit (line 142) | void    Quit()
  function Quit_Msg (line 168) | void    Quit_Msg(const char *format, ...)

FILE: meka/srcs/misc.h
  function LinearRemap (line 44) | static inline int LinearRemap(int src, int src_min, int src_max, int dst...
  function LinearRemapClamp (line 50) | static inline int LinearRemapClamp(int src, int src_min, int src_max, in...

FILE: meka/srcs/palette.cpp
  function Palette_Init (line 33) | void    Palette_Init()
  function Palette_Close (line 39) | void    Palette_Close()
  function Palette_UpdateAfterRedraw (line 43) | void    Palette_UpdateAfterRedraw()
  function Palette_Emulation_Reset (line 51) | void    Palette_Emulation_Reset()
  function Palette_Emulation_Reload (line 66) | void    Palette_Emulation_Reload()
  function u32 (line 102) | u32     Palette_MakeHostColor(int color_format, int r, int g, int b)
  function u32 (line 144) | u32     Palette_MakeHostColor(int format, ALLEGRO_COLOR color)
  function Palette_Emulation_SetColor (line 149) | void    Palette_Emulation_SetColor(int idx, ALLEGRO_COLOR color)
  function Palette_Compute_RGB_SMS (line 161) | void    Palette_Compute_RGB_SMS(ALLEGRO_COLOR *out_color, int i)
  function Palette_Compute_RGB_GG (line 180) | void    Palette_Compute_RGB_GG(ALLEGRO_COLOR *out_color, int i)

FILE: meka/srcs/palette.h
  type t_palette_emulation_flags (line 22) | typedef enum

FILE: meka/srcs/patch.cpp
  function t_patch (line 19) | t_patch *       Patch_New()
  function t_patch_action (line 41) | t_patch_action *        Patch_Action_New()
  function Patches_List_Parse_Line (line 56) | int Patches_List_Parse_Line(const char *line)
  function Patches_List_Init (line 169) | void            Patches_List_Init()
  function t_patch (line 226) | t_patch *   Patch_Find (t_media_image *media_image)
  function Patches_ROM_Initialize (line 261) | void        Patches_ROM_Initialize()
  function Patches_ROM_Apply (line 268) | void        Patches_ROM_Apply()
  function Patches_MEM_Apply (line 297) | void        Patches_MEM_Apply()

FILE: meka/srcs/patch.h
  type t_patch_action (line 26) | struct t_patch_action
  type t_patch (line 33) | struct t_patch
  type t_patches (line 42) | struct t_patches

FILE: meka/srcs/periph.cpp
  function Peripherals_Init (line 11) | void Peripherals_Init()
  function Peripherals_MachineReset (line 16) | void Peripherals_MachineReset()
  function Peripherals_WritePort3F (line 50) | void Peripherals_WritePort3F(u8 old_value, u8 new_value)
  function SportsPad_Update_Axis (line 81) | static void    SportsPad_Update_Axis(s8 *v, int move)
  function Peripherals_SportsPad_Update (line 101) | void    Peripherals_SportsPad_Update(int player, int device_x_rel, int d...
  function Peripherals_GraphicBoardV2_Update (line 107) | void    Peripherals_GraphicBoardV2_Update(int player, int x, int y, int ...

FILE: meka/srcs/rapidfir.cpp
  function RapidFire_Init (line 23) | void    RapidFire_Init()
  function RapidFire_Update (line 28) | void    RapidFire_Update()
  function RapidFire_Switch_J1B1 (line 40) | void    RapidFire_Switch_J1B1()
  function RapidFire_Switch_J1B2 (line 49) | void    RapidFire_Switch_J1B2()
  function RapidFire_Switch_J2B1 (line 58) | void    RapidFire_Switch_J2B1()
  function RapidFire_Switch_J2B2 (line 67) | void    RapidFire_Switch_J2B2()

FILE: meka/srcs/saves.cpp
  function Load_Game_Fixup (line 25) | void        Load_Game_Fixup()
  function SaveState_Save (line 180) | void        SaveState_Save()
  function SaveState_Load (line 220) | void        SaveState_Load()
  function Save_Game_MSV (line 275) | int     Save_Game_MSV(FILE *f)
  function Load_Game_MSV (line 379) | int         Load_Game_MSV(FILE *f)
  function Load_Game_MSD (line 571) | int     Load_Game_MSD (FILE *f)
  function SaveState_SetSlot (line 666) | void    SaveState_SetSlot(int n)
  function SaveState_SetPrevSlot (line 676) | void    SaveState_SetPrevSlot()
  function SaveState_SetNextSlot (line 681) | void    SaveState_SetNextSlot()
  function Save_Get_Filename (line 687) | void    Save_Get_Filename (char *str)

FILE: meka/srcs/sdsc.cpp
  function BCD_to_Dec (line 65) | static int BCD_to_Dec(int bcd)
  function SDSC_Read_and_Display (line 106) | int         SDSC_Read_and_Display()
  function SDSC_Debug_Console_Control (line 170) | void SDSC_Debug_Console_Control(char c)
  function SDSC_Format_Error (line 241) | bool SDSC_Format_Error(const char* format, ...)
  function SDSC_Try_Parse_Format (line 262) | bool SDSC_Try_Parse_Format(int& width, char& format, int& data_type, int...
  function SDSC_Get_Data (line 378) | bool SDSC_Get_Data(u16& data, bool& is_byte, int data_type, int parameter)
  function SDSC_Print_Binary (line 490) | int SDSC_Print_Binary(char* buffer, u16 data)
  function SDSC_Print_ASCII (line 512) | int SDSC_Print_ASCII(char* buffer, int buffer_size, bool is_vram, bool i...
  function SDSC_Try_Format (line 536) | void SDSC_Try_Format()
  function SDSC_Debug_Console_Data (line 648) | void SDSC_Debug_Console_Data(char c)

FILE: meka/srcs/setup.cpp
  function Setup_Interactive_Init (line 34) | void Setup_Interactive_Init()
  function Setup_Interactive (line 50) | int Setup_Interactive()
  function BOOL (line 70) | static BOOL CALLBACK    Setup_Interactive_Win32_DialogProc (HWND hDlg, U...
  function Setup_Interactive_Win32 (line 220) | static int Setup_Interactive_Win32()
  function Setup_Interactive_Console (line 236) | static int Setup_Interactive_Console()

FILE: meka/srcs/sf7000.cpp
  function SF7000_Reset (line 84) | void    SF7000_Reset()
  function SF7000_IPL_Mapping_Update (line 94) | void    SF7000_IPL_Mapping_Update()
  function WRITE_FUNC (line 108) | WRITE_FUNC (Write_Mapper_SF7000)

FILE: meka/srcs/sf7000.h
  type t_sf7000 (line 24) | struct t_sf7000

FILE: meka/srcs/sg1ksc3k.cpp
  function word (line 19) | word    Loop_SG1000_SC3000()

FILE: meka/srcs/shared.h
  type t_tv_type (line 57) | struct t_tv_type
  type t_widget (line 58) | struct t_widget

FILE: meka/srcs/sk1100.cpp
  type t_sk1100_key (line 15) | struct t_sk1100_key
  type t_sk1100_map (line 108) | struct t_sk1100_map
  function SK1100_Switch (line 201) | void    SK1100_Switch()
  function SK1100_Clear (line 214) | void    SK1100_Clear()
  function SK1100_Update (line 222) | void    SK1100_Update()

FILE: meka/srcs/skin.cpp
  type t_skin_manager (line 22) | struct t_skin_manager
  type t_skin_color (line 37) | struct t_skin_color
  function t_skin (line 93) | t_skin *    Skin_New(const char *name)
  function Skin_Delete (line 128) | void        Skin_Delete(t_skin *skin)
  function Skin_IsValid (line 144) | bool        Skin_IsValid(t_skin *skin)
  function Skin_PostProcess (line 155) | bool        Skin_PostProcess(t_skin *skin)
  function Skins_Init_Values (line 197) | void        Skins_Init_Values()
  function Skins_Init (line 203) | void        Skins_Init()
  function Skins_ParseGradient (line 253) | static int  Skins_ParseGradient(char *line, t_skin_gradient *gradient)
  function Skins_ParseLine (line 274) | static int  Skins_ParseLine(char *line)
  function Skins_Load (line 412) | void        Skins_Load(const char *filename)
  function Skins_Close (line 463) | void        Skins_Close()
  function Skins_SetSkinConfiguration (line 472) | void        Skins_SetSkinConfiguration(const char *skin_name)
  function t_skin (line 479) | t_skin *    Skins_FindSkinByName(const char *skin_name)
  function Skins_Apply (line 490) | void        Skins_Apply()
  function Skins_StartupFadeIn (line 503) | void        Skins_StartupFadeIn()
  function Skins_Select (line 512) | void        Skins_Select(t_skin *skin, bool fade)
  function Skins_Update (line 546) | void        Skins_Update()
  function ALLEGRO_COLOR (line 573) | static ALLEGRO_COLOR Skins_ColorBlendToNative(u32 color1, u32 color2, fl...
  function u32 (line 590) | static u32  Skins_ColorBlend(u32 color1, u32 color2, float fact1, float ...
  function ALLEGRO_COLOR (line 607) | static ALLEGRO_COLOR Skins_ColorToNative(u32 color)
  function Skins_UpdateNativeGradient (line 615) | static void Skins_UpdateNativeGradient(t_skin_gradient *gradient, u32 co...
  function Skins_UpdateNativeColorTable (line 627) | static void Skins_UpdateNativeColorTable()
  function Skins_MenuHandlerSelectSkin (line 665) | static void Skins_MenuHandlerSelectSkin(t_menu_event *event)
  function Skins_MenuInit (line 677) | void        Skins_MenuInit(int menu_id)
  function Skins_QuitAfterFade (line 691) | void        Skins_QuitAfterFade()
  function t_skin (line 696) | t_skin *    Skins_GetCurrentSkin()
  function ALLEGRO_BITMAP (line 701) | ALLEGRO_BITMAP *    Skins_GetBackgroundPicture()
  function SkinGradient_DrawHorizontal (line 710) | void    SkinGradient_DrawHorizontal(t_skin_gradient *gradient, ALLEGRO_B...
  function SkinGradient_DrawVertical (line 747) | void    SkinGradient_DrawVertical(t_skin_gradient *gradient, ALLEGRO_BIT...

FILE: meka/srcs/skin.h
  type t_skin_gradient (line 55) | struct t_skin_gradient
  type t_skin_effect (line 67) | enum t_skin_effect
  type t_skin_background_picture_mode (line 74) | enum t_skin_background_picture_mode
  type t_skin (line 83) | struct t_skin

FILE: meka/srcs/skin_bg.cpp
  function Skins_Background_Redraw_Grid (line 14) | static void     Skins_Background_Redraw_Grid()
  function Skins_Background_Draw_Tile (line 31) | static void     Skins_Background_Draw_Tile(ALLEGRO_BITMAP *bmp)
  function Skins_Background_Draw_Stretch (line 51) | static void     Skins_Background_Draw_Stretch(ALLEGRO_BITMAP *bmp)
  function Skins_Background_Draw_StretchInteger (line 60) | static void     Skins_Background_Draw_StretchInteger(ALLEGRO_BITMAP *bmp)
  function Skins_Background_Draw_Center (line 95) | static void     Skins_Background_Draw_Center(ALLEGRO_BITMAP *bmp)
  function Skins_Background_Redraw (line 104) | void    Skins_Background_Redraw()

FILE: meka/srcs/skin_fx.cpp
  type t_skinfx_particle (line 19) | struct t_skinfx_particle
  function SkinFx_Init (line 46) | void SkinFx_Init()
  function SkinFx_CreateVideoBuffers (line 55) | void SkinFx_CreateVideoBuffers()
  function SkinFx_DestroyVideoBuffers (line 65) | void SkinFx_DestroyVideoBuffers()
  function SkinFx_UpdateBlood (line 75) | static void SkinFx_UpdateBlood()
  function SkinFx_UpdateHearts (line 137) | static void SkinFx_UpdateHearts()
  function special_effects_update_after (line 171) | void    special_effects_update_after()
  function special_effects_update_before (line 186) | void    special_effects_update_before()
  function gui_applet_blood_create (line 219) | static void    gui_applet_blood_create (int v, int x, int y)

FILE: meka/srcs/smsid/smsid.cpp
  function main (line 12) | int main(int argc, char* argv[])
  function System_SetClipboardText (line 135) | static bool		System_SetClipboardText(const char *text)

FILE: meka/srcs/smsid/smsid_stubs.cpp
  function ConsolePrint (line 16) | void ConsolePrint(char const* msg)
  function ConsolePrintf (line 21) | void ConsolePrintf(char const* format, ...)
  function Quit_Msg (line 30) | void Quit_Msg(char const* format, ...)
  function VDP_Model_FindByName (line 59) | int     VDP_Model_FindByName(const char* name)

FILE: meka/srcs/sound/emu2413/emu2413.cpp
  type __OPLL_EG_STATE (line 212) | enum __OPLL_EG_STATE { ATTACK, DECAY, SUSTAIN, RELEASE, DAMP, UNKNOWN }
  function INLINE (line 230) | static INLINE int min(int i, int j) { return (i < j) ? i : j; }
  function INLINE (line 233) | static INLINE int max(int i, int j) { return (i > j) ? i : j; }
  function blackman (line 257) | static double blackman(double x) { return 0.42 - 0.5 * cos(2 * _PI_ * x)...
  function sinc (line 258) | static double sinc(double x) { return (x == 0.0 ? 1.0 : sin(_PI_ * x) / ...
  function windowed_sinc (line 259) | static double windowed_sinc(double x) { return blackman(0.5 + 0.5 * x / ...
  function OPLL_RateConv (line 262) | OPLL_RateConv *OPLL_RateConv_new(double f_inp, double f_out, int ch) {
  function INLINE (line 289) | static INLINE int16_t lookup_sinc_table(int16_t *table, double x) {
  function OPLL_RateConv_reset (line 296) | void OPLL_RateConv_reset(OPLL_RateConv *conv) {
  function OPLL_RateConv_putData (line 305) | void OPLL_RateConv_putData(OPLL_RateConv *conv, int ch, int16_t data) {
  function OPLL_RateConv_getData (line 316) | int16_t OPLL_RateConv_getData(OPLL_RateConv *conv, int ch) {
  function OPLL_RateConv_delete (line 332) | void OPLL_RateConv_delete(OPLL_RateConv *conv) {
  function makeSinTable (line 348) | static void makeSinTable(void) {
  function makeTllTable (line 366) | static void makeTllTable(void) {
  function makeRksTable (line 390) | static void makeRksTable(void) {
  function makeDefaultPatch (line 399) | static void makeDefaultPatch(void) {
  function initializeTables (line 408) | static void initializeTables(void) {
  function _debug_print_patch (line 434) | static void _debug_print_patch(OPLL_SLOT *slot) {
  function INLINE (line 459) | static INLINE void _debug_print_slot_info(OPLL_SLOT *slot) {
  function INLINE (line 468) | static INLINE int get_parameter_rate(OPLL_SLOT *slot) {
  type SLOT_UPDATE_FLAG (line 496) | enum SLOT_UPDATE_FLAG {
  function INLINE (line 504) | static INLINE void request_update(OPLL_SLOT *slot, int flag) { slot->upd...
  function commit_slot_update (line 506) | static void commit_slot_update(OPLL_SLOT *slot) {
  function reset_slot (line 553) | static void reset_slot(OPLL_SLOT *slot, int number) {
  function INLINE (line 576) | static INLINE void slotOn(OPLL *opll, int i) {
  function INLINE (line 583) | static INLINE void slotOff(OPLL *opll, int i) {
  function INLINE (line 592) | static INLINE void update_key_status(OPLL *opll) {
  function INLINE (line 637) | static INLINE void set_patch(OPLL *opll, int32_t ch, int32_t num) {
  function INLINE (line 645) | static INLINE void set_sus_flag(OPLL *opll, int ch, int flag) {
  function INLINE (line 655) | static INLINE void set_volume(OPLL *opll, int ch, int volume) {
  function INLINE (line 660) | static INLINE void set_slot_volume(OPLL_SLOT *slot, int volume) {
  function INLINE (line 666) | static INLINE void set_fnumber(OPLL *opll, int ch, int fnum) {
  function INLINE (line 678) | static INLINE void set_block(OPLL *opll, int ch, int blk) {
  function INLINE (line 689) | static INLINE void update_rhythm_mode(OPLL *opll) {
  function update_ampm (line 722) | static void update_ampm(OPLL *opll) {
  function update_noise (line 733) | static void update_noise(OPLL *opll, int cycle) {
  function update_short_noise (line 743) | static void update_short_noise(OPLL *opll) {
  function INLINE (line 757) | static INLINE void calc_phase(OPLL_SLOT *slot, int32_t pm_phase, uint8_t...
  function INLINE (line 767) | static INLINE uint8_t lookup_attack_step(OPLL_SLOT *slot, uint32_t count...
  function INLINE (line 789) | static INLINE uint8_t lookup_decay_step(OPLL_SLOT *slot, uint32_t counte...
  function INLINE (line 809) | static INLINE void start_envelope(OPLL_SLOT *slot) {
  function INLINE (line 819) | static INLINE void calc_envelope(OPLL_SLOT *slot, OPLL_SLOT *buddy, uint...
  function update_slots (line 881) | static void update_slots(OPLL *opll) {
  function INLINE (line 903) | static INLINE int16_t lookup_exp_table(uint16_t i) {
  function INLINE (line 910) | static INLINE int16_t to_linear(uint16_t h, OPLL_SLOT *slot, int16_t am) {
  function INLINE (line 919) | static INLINE int16_t calc_slot_car(OPLL *opll, int ch, int16_t fm) {
  function INLINE (line 930) | static INLINE int16_t calc_slot_mod(OPLL *opll, int ch) {
  function INLINE (line 942) | static INLINE int16_t calc_slot_tom(OPLL *opll) {
  function INLINE (line 951) | static INLINE int16_t calc_slot_snare(OPLL *opll) {
  function INLINE (line 964) | static INLINE int16_t calc_slot_cym(OPLL *opll) {
  function INLINE (line 972) | static INLINE int16_t calc_slot_hat(OPLL *opll) {
  function update_output (line 988) | static void update_output(OPLL *opll) {
  function INLINE (line 1048) | INLINE static void mix_output(OPLL *opll) {
  function INLINE (line 1061) | INLINE static void mix_output_stereo(OPLL *opll) {
  function OPLL (line 1083) | OPLL *OPLL_new(uint32_t clk, uint32_t rate) {
  function OPLL_delete (line 1111) | void OPLL_delete(OPLL *opll) {
  function reset_rate_conversion_params (line 1119) | static void reset_rate_conversion_params(OPLL *opll) {
  function OPLL_reset (line 1141) | void OPLL_reset(OPLL *opll) {
  function OPLL_forceRefresh (line 1181) | void OPLL_forceRefresh(OPLL *opll) {
  function OPLL_setRate (line 1196) | void OPLL_setRate(OPLL *opll, uint32_t rate) {
  function OPLL_setQuality (line 1201) | void OPLL_setQuality(OPLL *opll, uint8_t q) {}
  function OPLL_setChipType (line 1203) | void OPLL_setChipType(OPLL *opll, uint8_t type) { opll->chip_type = type; }
  function OPLL_writeReg (line 1205) | void OPLL_writeReg(OPLL *opll, uint32_t reg, uint8_t data) {
  function OPLL_writeIO (line 1379) | void OPLL_writeIO(OPLL *opll, uint32_t adr, uint8_t val) {
  function OPLL_setPan (line 1386) | void OPLL_setPan(OPLL *opll, uint32_t ch, uint8_t pan) { opll->pan[ch & ...
  function OPLL_setPanFine (line 1388) | void OPLL_setPanFine(OPLL *opll, uint32_t ch, float pan[2]) {
  function OPLL_dumpToPatch (line 1393) | void OPLL_dumpToPatch(const uint8_t *dump, OPLL_PATCH *patch) {
  function OPLL_getDefaultPatch (line 1422) | void OPLL_getDefaultPatch(int32_t type, int32_t num, OPLL_PATCH *patch) {
  function OPLL_setPatch (line 1426) | void OPLL_setPatch(OPLL *opll, const uint8_t *dump) {
  function OPLL_patchToDump (line 1436) | void OPLL_patchToDump(const OPLL_PATCH *patch, uint8_t *dump) {
  function OPLL_copyPatch (line 1447) | void OPLL_copyPatch(OPLL *opll, int32_t num, OPLL_PATCH *patch) {
  function OPLL_resetPatch (line 1451) | void OPLL_resetPatch(OPLL *opll, uint8_t type) {
  function OPLL_calc (line 1457) | int16_t OPLL_calc(OPLL *opll) {
  function OPLL_calcStereo (line 1470) | void OPLL_calcStereo(OPLL *opll, int32_t out[2]) {
  function OPLL_setMask (line 1486) | uint32_t OPLL_setMask(OPLL *opll, uint32_t mask) {
  function OPLL_toggleMask (line 1497) | uint32_t OPLL_toggleMask(OPLL *opll, uint32_t mask) {

FILE: meka/srcs/sound/emu2413/emu2413.h
  type OPLL_TONE_ENUM (line 12) | enum OPLL_TONE_ENUM { OPLL_2413_TONE = 0, OPLL_VRC7_TONE = 1, OPLL_281B_...
  type OPLL_PATCH (line 15) | typedef struct __OPLL_PATCH {
  type OPLL_SLOT (line 20) | typedef struct __OPLL_SLOT {
  type OPLL_RateConv (line 73) | typedef struct __OPLL_RateConv {
  type OPLL (line 87) | typedef struct __OPLL {

FILE: meka/srcs/sound/emu2413/emutypes.h
  type e_uint (line 28) | typedef unsigned int e_uint;
  type e_int (line 29) | typedef signed int e_int;
  type e_uint8 (line 31) | typedef unsigned char e_uint8 ;
  type e_int8 (line 32) | typedef signed char e_int8 ;
  type e_uint16 (line 34) | typedef unsigned short e_uint16 ;
  type e_int16 (line 35) | typedef signed short e_int16 ;
  type e_uint32 (line 37) | typedef unsigned int e_uint32 ;
  type e_int32 (line 38) | typedef signed int e_int32 ;

FILE: meka/srcs/sound/emu2413/mekaintf.cpp
  function FM_Digital_Init (line 32) | int     FM_Digital_Init()
  function FM_Digital_Close (line 59) | void    FM_Digital_Close()
  function FM_Digital_Active (line 65) | void    FM_Digital_Active()
  function FM_Digital_Reset (line 71) | void    FM_Digital_Reset()
  function FM_Digital_Write (line 77) | void    FM_Digital_Write(int Register, int Value)
  function FM_Digital_Mute (line 82) | void    FM_Digital_Mute()
  function FM_Digital_Resume (line 86) | void    FM_Digital_Resume()
  function FM_Digital_Regenerate (line 92) | void    FM_Digital_Regenerate()
  function FM_Digital_WriteSamples (line 104) | void    FM_Digital_WriteSamples(s16 *buffer, int length)

FILE: meka/srcs/sound/emu2413/sample.cpp
  function WORD (line 23) | static void
  function DWORD (line 32) | static void
  function chunkID (line 43) | static void
  function main (line 54) | int

FILE: meka/srcs/sound/fmeditor.cpp
  type t_fmeditor_app (line 54) | struct t_fmeditor_app
  function FM_Editor_Redraw (line 118) | void    FM_Editor_Redraw()
  function FM_Editor_CallBack (line 181) | void    FM_Editor_CallBack (t_widget *w)
  function FM_Editor_Init (line 216) | void        FM_Editor_Init()
  function FM_Editor_Switch (line 260) | void    FM_Editor_Switch()

FILE: meka/srcs/sound/fmunit.cpp
  function FM_Null_Interface_Function (line 16) | void                    FM_Null_Interface_Function() { }
  function FM_Set_Interface (line 82) | void    FM_Set_Interface(t_fm_unit_interface *intf, byte *new_fm_regs)
  function FM_Null_Active (line 99) | void    FM_Null_Active()
  function FM_Save (line 107) | void    FM_Save (FILE *f)
  function FM_Load (line 116) | void    FM_Load (FILE *f)

FILE: meka/srcs/sound/fmunit.h
  type t_fm_unit_interface (line 26) | struct t_fm_unit_interface

FILE: meka/srcs/sound/psg.cpp
  function PSG_Init (line 56) | int         PSG_Init()
  function PSG_WriteSamples (line 84) | void        PSG_WriteSamples(s16 *buffer, int length)
  function PSG_Save (line 126) | void        PSG_Save (FILE *f)
  function PSG_Load (line 154) | void        PSG_Load (FILE *f, int version)
  function PSG_Regenerate (line 210) | void        PSG_Regenerate()
  function PSG_Mute (line 221) | void        PSG_Mute()
  function SN76489_Reset (line 230) | void        SN76489_Reset(const unsigned long PSGClockValue, const unsig...
  function SN76489_SetClock (line 267) | void    SN76489_SetClock(const unsigned long PSGClockValue)
  function SN76489_Write (line 276) | void        SN76489_Write(const unsigned char data)
  function SN76489_StereoWrite (line 357) | void    SN76489_StereoWrite(const unsigned char data)
  function SN76489_GetValues (line 369) | void    SN76489_GetValues(int *result_left, int *result_right)

FILE: meka/srcs/sound/psg.h
  type t_psg_channel (line 19) | struct t_psg_channel
  type t_psg (line 28) | struct t_psg

FILE: meka/srcs/sound/s_misc.cpp
  function FM_Disable (line 30) | void    FM_Disable()
  function FM_Enable (line 39) | void    FM_Enable()
  function Sound_Volume_Menu_Init (line 50) | void    Sound_Volume_Menu_Init(int menu_id)
  function Sound_Volume_Menu_Handler (line 65) | void    Sound_Volume_Menu_Handler(t_menu_event *event)
  function Sound_Channels_Menu_Handler (line 77) | void    Sound_Channels_Menu_Handler(t_menu_event *event)

FILE: meka/srcs/sound/sound.cpp
  type t_sound_chip (line 25) | enum t_sound_chip
  type t_sound_stream (line 31) | struct t_sound_stream
  type t_app_sound_debug (line 53) | struct t_app_sound_debug
  function Sound_Init_Config (line 66) | void    Sound_Init_Config()
  function Sound_Init (line 81) | int     Sound_Init()
  function Sound_InitEmulators (line 137) | static bool Sound_InitEmulators()
  function Sound_Close (line 153) | void    Sound_Close()
  function Sound_UpdateClockSpeed (line 167) | void    Sound_UpdateClockSpeed()
  function Sound_Update (line 176) | void    Sound_Update()
  function Sound_Playback_Start (line 193) | void    Sound_Playback_Start()
  function Sound_Playback_Stop (line 199) | void    Sound_Playback_Stop()
  function Sound_Playback_Mute (line 207) | void    Sound_Playback_Mute()
  function Sound_Playback_Resume (line 218) | void    Sound_Playback_Resume()
  function Sound_SetMasterVolume (line 228) | void    Sound_SetMasterVolume(int volume)
  function Sound_ResetCycleCounter (line 234) | void Sound_ResetCycleCounter()
  function s64 (line 244) | s64 Sound_GetElapsedCycleCounter()
  function Sound_ConvertSamplesToCycles (line 257) | double Sound_ConvertSamplesToCycles(double samples_count)
  function t_sound_stream (line 264) | t_sound_stream* SoundStream_Create(void (*sample_writer)(s16*,int))
  function SoundStream_Destroy (line 304) | void SoundStream_Destroy(t_sound_stream* stream)
  function SoundStream_Update (line 312) | void SoundStream_Update(t_sound_stream* stream)
  function SoundStream_RenderSamples (line 345) | void SoundStream_RenderSamples(t_sound_stream* stream, int samples_count)
  function SoundStream_RenderUpToCurrentTime (line 372) | void SoundStream_RenderUpToCurrentTime(t_sound_stream* stream)
  function SoundStream_CountReadableSamples (line 409) | int SoundStream_CountReadableSamples(const t_sound_stream* stream)
  function SoundStream_CountWritableSamples (line 426) | int SoundStream_CountWritableSamples(const t_sound_stream* stream)
  function SoundStream_PushSamplesRequestBufs (line 431) | bool SoundStream_PushSamplesRequestBufs(t_sound_stream* stream, int samp...
  function SoundStream_PopSamples (line 476) | int SoundStream_PopSamples(t_sound_stream* stream, s16* buf, int samples...
  function SoundDebugApp_Init (line 523) | void SoundDebugApp_Init()
  function SoundDebugApp_InstallMenuItems (line 540) | void SoundDebugApp_InstallMenuItems(int menu_parent)
  function SoundDebugApp_Printf (line 546) | static void SoundDebugApp_Printf(int* px, int* py, const char* format, ...)
  function SoundDebugApp_Update (line 561) | void SoundDebugApp_Update()
  function SoundDebugApp_Switch (line 589) | void SoundDebugApp_Switch()

FILE: meka/srcs/sound/sound.h
  type t_sound (line 26) | struct t_sound
  type t_sound_stream (line 52) | struct t_sound_stream

FILE: meka/srcs/sound/sound_logging.cpp
  function Sound_Log_Init (line 11) | void    Sound_Log_Init()
  function Sound_Log_Close (line 23) | void    Sound_Log_Close()
  function Sound_Log_Init_Game (line 31) | void    Sound_Log_Init_Game()
  function Sound_Log_FileName_Get (line 36) | void    Sound_Log_FileName_Get(char *result, const char *filename_templa...
  function Sound_LogWAV_Start (line 68) | void    Sound_LogWAV_Start()
  function Sound_LogWAV_Stop (line 97) | void    Sound_LogWAV_Stop()
  function Sound_LogVGM_Start (line 109) | void    Sound_LogVGM_Start()
  function Sound_LogVGM_Stop (line 137) | void    Sound_LogVGM_Stop()
  function Sound_LogVGM_Accuracy_Switch (line 148) | void    Sound_LogVGM_Accuracy_Switch()

FILE: meka/srcs/sound/vgm.cpp
  function VGM_Header_Init (line 14) | void            VGM_Header_Init(t_vgm_header *h)
  function VGM_Start (line 51) | int             VGM_Start(t_vgm *VGM, const char *FileName, int Logging_...
  function VGM_Close (line 100) | void            VGM_Close(t_vgm *VGM)
  function VGM_Update_Timing (line 131) | void            VGM_Update_Timing (t_vgm *VGM)
  function VGM_NewFrame (line 139) | void            VGM_NewFrame(t_vgm *VGM)
  function INLINE (line 163) | INLINE void     VGM_Wait_Samples(t_vgm *VGM)
  function VGM_Data_Add_GG_Stereo (line 176) | void            VGM_Data_Add_GG_Stereo(t_vgm *VGM, byte Data)
  function VGM_Data_Add_Byte (line 188) | void            VGM_Data_Add_Byte(t_vgm *VGM, byte Data)
  function VGM_Data_Add_PSG (line 197) | void            VGM_Data_Add_PSG(t_vgm *VGM, byte Data)
  function VGM_Data_Add_FM (line 209) | void            VGM_Data_Add_FM(t_vgm *VGM, int RegData)
  function VGM_Data_Add_Wait (line 222) | void            VGM_Data_Add_Wait(t_vgm *VGM, int Samples)
  function GD3_Header_Init (line 249) | void            GD3_Header_Init(t_gd3_header *h)
  function GD3_Header_Close (line 285) | void            GD3_Header_Close(t_gd3_header *h)
  function GD3_Header_Write (line 294) | int             GD3_Header_Write(t_gd3_header *h, FILE *f)

FILE: meka/srcs/sound/vgm.h
  type t_vgm_header (line 30) | struct t_vgm_header
  type t_gd3_header (line 69) | struct t_gd3_header
  type t_vgm (line 77) | struct t_vgm

FILE: meka/srcs/sound/wav.cpp
  type t_wav_format (line 20) | struct t_wav_format
  type t_wav_header (line 30) | struct t_wav_header
  function WAV_Header_Init (line 46) | void    WAV_Header_Init(t_wav_header *h, int Samples_per_Second, int Bit...
  function FILE (line 63) | FILE*   WAV_Start(char *FileName)
  function WAV_Close (line 76) | void    WAV_Close(FILE *f, int SizeData)

FILE: meka/srcs/system.h
  type byte (line 79) | typedef unsigned char       byte;
  type word (line 80) | typedef unsigned short      word;
  type dword (line 81) | typedef unsigned long       dword;
  type u8 (line 83) | typedef unsigned char       u8;
  type s8 (line 84) | typedef   signed char       s8;
  type u16 (line 85) | typedef unsigned short      u16;
  type s16 (line 86) | typedef   signed short      s16;
  type u32 (line 87) | typedef unsigned int        u32;
  type s32 (line 88) | typedef   signed int        s32;
  type u64 (line 89) | typedef unsigned long long  u64;
  type s64 (line 90) | typedef   signed long long  s64;

FILE: meka/srcs/textbox.cpp
  function TB_Message_Init_Values (line 25) | void    TB_Message_Init_Values(void)
  function TB_Message_Layout (line 36) | static void TB_Message_Layout(t_app_messages *app, bool setup)
  function TB_Message_Init (line 57) | void        TB_Message_Init()
  function TB_Message_Update (line 88) | void    TB_Message_Update()
  function TB_Message_Switch (line 104) | void    TB_Message_Switch(void)
  function TB_Message_Print (line 116) | void    TB_Message_Print (const char *line)
  function TB_Message_Destroy (line 125) | void    TB_Message_Destroy (void)

FILE: meka/srcs/textbox.h
  type t_app_messages (line 13) | struct t_app_messages

FILE: meka/srcs/tools.cpp
  function StrPath_RemoveExtension (line 23) | void    StrPath_RemoveExtension(char* buf)
  function StrPath_GetExtension (line 31) | void    StrPath_GetExtension(char* buf)
  function StrPath_RemoveDirectory (line 42) | void    StrPath_RemoveDirectory(char* buf)
  function StrPath_RemoveDirectory (line 63) | void    StrPath_RemoveDirectory(char *dst, const char *src)
  type tm (line 96) | struct tm

FILE: meka/srcs/tvoekaki.cpp
  function TVOekaki_Init (line 20) | void    TVOekaki_Init()
  function TVOekaki_Update (line 30) | void    TVOekaki_Update(int device_x, int device_y, int device_b_field)
  function READ_FUNC (line 67) | READ_FUNC (Read_Mapper_TVOekaki)
  function WRITE_FUNC (line 86) | WRITE_FUNC (Write_Mapper_TVOekaki)

FILE: meka/srcs/tvoekaki.h
  type t_tvoekaki (line 32) | struct t_tvoekaki

FILE: meka/srcs/tvtype.cpp
  function TVType_Init_Values (line 25) | void    TVType_Init_Values()
  function TVType_Update_Values (line 33) | void    TVType_Update_Values()
  function TVType_Set (line 38) | void    TVType_Set(int tv_type, bool verbose)
  function TVType_Set_NTSC (line 69) | void    TVType_Set_NTSC (void)
  function TVType_Set_PAL_SECAM (line 74) | void    TVType_Set_PAL_SECAM (void)

FILE: meka/srcs/tvtype.h
  type t_tv_type (line 29) | struct t_tv_type

FILE: meka/srcs/unzip.cpp
  type unz_file_info_internal_s (line 81) | struct unz_file_info_internal_s
  function local (line 141) | local int unzlocal_getByte(FILE *fin, int *pi)
  function local (line 163) | local int unzlocal_getShort (FILE * fin, uLong *pX)
  function local (line 183) | local int unzlocal_getLong (FILE *fin, uLong *pX)
  function local (line 213) | local int strcmpcasenosensitive_internal (const char *fileName1, const c...
  function unzStringFileNameCompare (line 254) | extern int ZEXPORT unzStringFileNameCompare (const char* fileName1,const...
  function local (line 271) | local uLong unzlocal_SearchCentralDir(FILE *fin)
  function unzFile (line 335) | extern unzFile ZEXPORT unzOpen (const char *path)
  function unzClose (line 433) | extern int ZEXPORT unzClose (unzFile file)
  function unzGetGlobalInfo (line 453) | extern int ZEXPORT unzGetGlobalInfo (unzFile file, unz_global_info *pglo...
  function local (line 467) | local void unzlocal_DosDateToTmuDate (uLong ulDosDate, tm_unz* ptm)
  function local (line 494) | local int unzlocal_GetCurrentFileInfoInternal (unzFile file,
  function unzGetCurrentFileInfo (line 656) | extern int ZEXPORT unzGetCurrentFileInfo (      unzFile file,
  function unzGoToFirstFile (line 672) | extern int ZEXPORT unzGoToFirstFile (unzFile file)
  function unzGoToNextFile (line 694) | extern int ZEXPORT unzGoToNextFile (unzFile file)
  function unzLocateFile (line 726) | extern int ZEXPORT unzLocateFile (unzFile file, const char *szFileName, ...
  function local (line 776) | local int unzlocal_CheckCurrentFileCoherencyHeader (unz_s *s, uInt *piSi...
  function unzOpenCurrentFile (line 864) | extern int ZEXPORT unzOpenCurrentFile (unzFile file)
  function unzReadCurrentFile (line 964) | extern int ZEXPORT unzReadCurrentFile  (unzFile file, voidp buf, unsigne...
  function z_off_t (line 1088) | extern z_off_t ZEXPORT unztell (unzFile file)
  function ZEXPORT (line 1107) | extern int ZEXPORT unzeof (unzFile file)
  function unzGetLocalExtrafield (line 1139) | extern int ZEXPORT unzGetLocalExtrafield (unzFile file, voidp buf,unsign...
  function unzCloseCurrentFile (line 1183) | extern int ZEXPORT unzCloseCurrentFile (unzFile file)
  function unzGetGlobalComment (line 1224) | extern int ZEXPORT unzGetGlobalComment (unzFile file, char *szComment, u...

FILE: meka/srcs/unzip.h
  type unzFile__ (line 59) | typedef struct TagunzFile__ { int unused; } unzFile__;
  type unzFile__ (line 60) | typedef unzFile__ *unzFile;
  type voidp (line 62) | typedef voidp unzFile;
  type tm_unz (line 76) | typedef struct tm_unz_s
  type unz_global_info (line 88) | typedef struct unz_global_info_s
  type unz_file_info (line 97) | typedef struct unz_file_info_s

FILE: meka/srcs/vdp.cpp
  function VDP_Model_FindByName (line 54) | int     VDP_Model_FindByName(const char *name)
  function VDP_VideoMode_Change (line 67) | void    VDP_VideoMode_Change()
  function VDP_VideoMode_Update (line 114) | void    VDP_VideoMode_Update()
  function VDP_UpdateLineLimits (line 143) | void    VDP_UpdateLineLimits()
  function Tms_VDP_Out (line 157) | void    Tms_VDP_Out (int vdp_register, int value)
  function Tms_VDP_Palette_Write (line 299) | void    Tms_VDP_Palette_Write(int addr, int value)
  function Tms_VDP_Out_Data (line 328) | void    Tms_VDP_Out_Data (int value)
  function Tms_VDP_Out_Address (line 369) | void    Tms_VDP_Out_Address (int value)
  function u8 (line 430) | u8      Tms_VDP_In_Data()
  function u8 (line 457) | u8          Tms_VDP_In_Status()

FILE: meka/srcs/video.cpp
  function Video_Init (line 44) | void    Video_Init()
  function Video_DestroyVideoBuffers (line 63) | void Video_DestroyVideoBuffers()
  function Video_CreateVideoBuffers (line 81) | void Video_CreateVideoBuffers()
  function Video_ChangeVideoMode (line 105) | static int Video_ChangeVideoMode(t_video_driver* driver, int w, int h, b...
  function Video_GameMode_UpdateBounds (line 182) | void    Video_GameMode_UpdateBounds()
  function Video_GameMode_ScreenPosToEmulatedPos (line 188) | void    Video_GameMode_ScreenPosToEmulatedPos(int screen_x, int screen_y...
  function Video_GameMode_EmulatedPosToScreenPos (line 206) | void    Video_GameMode_EmulatedPosToScreenPos(int emu_x, int emu_y, int*...
  function Video_GameMode_GetScreenCenterPos (line 224) | void    Video_GameMode_GetScreenCenterPos(int* pscreen_x, int* pscreen_y)
  function Video_ClearScreenBackBuffer (line 230) | void    Video_ClearScreenBackBuffer()
  function Video_EnumerateDisplayModes (line 236) | void    Video_EnumerateDisplayModes()
  function Video_Setup_State (line 301) | void    Video_Setup_State()
  function Screen_Save_to_Next_Buffer (line 346) | void    Screen_Save_to_Next_Buffer()
  function Screen_Restore_from_Next_Buffer (line 352) | void    Screen_Restore_from_Next_Buffer()
  function Screenbuffer_AcquireLock (line 358) | void    Screenbuffer_AcquireLock()
  function Screenbuffer_ReleaseLock (line 365) | void    Screenbuffer_ReleaseLock()
  function Screenbuffer_IsLocked (line 374) | bool    Screenbuffer_IsLocked()
  function Video_UpdateEvents (line 379) | void    Video_UpdateEvents()
  function Video_RefreshScreen (line 412) | void    Video_RefreshScreen()
  function t_video_driver (line 508) | t_video_driver* VideoDriver_FindByName(const char* name)

FILE: meka/srcs/video.h
  type t_video_mode (line 10) | struct t_video_mode
  type t_video (line 18) | struct t_video
  type t_video_driver (line 30) | struct t_video_driver

FILE: meka/srcs/video_c.cpp
  function Decode_Tile_C (line 13) | void    Decode_Tile_C (int tile_n, u8* dst)
  function Find_Last_Sprite (line 38) | void    Find_Last_Sprite(int sprites_height, int VDP_Line)
  function Find_Last_Sprite_Wide (line 63) | void    Find_Last_Sprite_Wide(int sprites_height, int VDP_Line)

FILE: meka/srcs/video_m2.cpp
  function TMS9918_Palette_Setup (line 52) | void    TMS9918_Palette_Setup()
  function VDP_Mode0123_DrawTile (line 63) | void    VDP_Mode0123_DrawTile(ALLEGRO_BITMAP *dst, ALLEGRO_LOCKED_REGION...
  function VDP_Mode0123_DrawTile (line 118) | void    VDP_Mode0123_DrawTile(ALLEGRO_BITMAP *dst, ALLEGRO_LOCKED_REGION...
  function Display_Text_0 (line 175) | void    Display_Text_0()
  function Display_Background_1 (line 213) | void    Display_Background_1()
  function Display_Background_2 (line 250) | void    Display_Background_2 ()
  function Display_Background_3 (line 294) | void    Display_Background_3()
  function Draw_Sprite_Mono_Double (line 332) | void    Draw_Sprite_Mono_Double (const u8 *src, int x, int y, int fcolor...
  function Draw_Sprite_Mono (line 384) | void    Draw_Sprite_Mono (const u8 *src, int x, int y, int fcolor_idx)
  function Display_Sprites_1_2_3 (line 418) | void    Display_Sprites_1_2_3()
  function Refresh_Modes_0_1_2_3 (line 490) | void    Refresh_Modes_0_1_2_3()
  function Check_Sprites_Collision_Modes_1_2_3_Line (line 625) | void    Check_Sprites_Collision_Modes_1_2_3_Line (int line)

FILE: meka/srcs/video_m5.cpp
  function VDP_Mode4_DrawTile (line 48) | void    VDP_Mode4_DrawTile(ALLEGRO_BITMAP *dst, ALLEGRO_LOCKED_REGION* d...
  function Refresh_Line_5 (line 223) | void    Refresh_Line_5()
  function Display_BackGround_Line_5 (line 283) | void    Display_BackGround_Line_5()
  function INLINE (line 454) | INLINE void     Sprite_Collide_Line_C (byte *p_src, int x)
  function INLINE (line 474) | INLINE void     Sprite_Collide_Line_Double (byte *p_src, int x)
  function INLINE (line 497) | INLINE void     Sprite_Draw_Line(const u8 *tile_line, int x)
  function INLINE (line 520) | INLINE void     Sprite_Draw_Line_Double(const u8 *tile_line, int x)
  function Refresh_Sprites_5 (line 539) | void        Refresh_Sprites_5 (bool draw)

FILE: meka/srcs/video_t.cpp
  function Init_Table_Video_Mode_0 (line 13) | void    Init_Table_Video_Mode_0 (void)

FILE: meka/srcs/vlfn.cpp
  function VLFN_Init (line 34) | void            VLFN_Init()
  function VLFN_Close (line 40) | void            VLFN_Close()
  function t_vlfn_entry (line 45) | static t_vlfn_entry *   VLFN_Entry_New (const char *file_name, t_db_entr...
  function VLFN_Entry_Delete (line 54) | static void      VLFN_Entry_Delete(t_vlfn_entry *entry)
  function VLFN_Entries_Compare (line 60) | static int       VLFN_Entries_Compare(t_vlfn_entry *entry1, t_vlfn_entry...
  function VLFN_DataBase_Load (line 66) | void            VLFN_DataBase_Load()
  function VLFN_DataBase_Save (line 147) | void        VLFN_DataBase_Save()
  function t_vlfn_entry (line 188) | t_vlfn_entry *  VLFN_FindByFileName(const char *file_name)
  function VLFN_AddEntry (line 200) | void        VLFN_AddEntry(const char *file_name, t_db_entry *db_entry)
  function VLFN_RemoveEntry (line 218) | void        VLFN_RemoveEntry(const char *file_name)

FILE: meka/srcs/vlfn.h
  type t_vlfn_entry (line 10) | struct t_vlfn_entry
  type t_vlfn_db (line 16) | struct t_vlfn_db

FILE: meka/srcs/vmachine.cpp
  function VMachine_Draw (line 25) | void    VMachine_Draw()
  function Machine_Init (line 59) | void    Machine_Init()
  function Machine_ON (line 64) | void    Machine_ON()
  function Machine_OFF (line 86) | void    Machine_OFF()
  function Machine_Insert_Cartridge (line 100) | void    Machine_Insert_Cartridge()
  function Machine_Remove_Cartridge (line 106) | void    Machine_Remove_Cartridge()
  function Free_ROM (line 116) | void    Free_ROM()

FILE: meka/srcs/z80marat/Debug.cpp
  function Z80_IsModifyingPC (line 251) | static bool Z80_IsModifyingPC(const char* m)
  function Z80_Disassemble_GetDecoratedSymbolFromAddress (line 264) | void Z80_Disassemble_GetDecoratedSymbolFromAddress(const char* mnemonic,...
  function Z80_Disassemble (line 303) | int     Z80_Disassemble(char *S, word A, bool display_symbols, bool disp...
  function Z80_Assemble (line 480) | int     Z80_Assemble(const char *src, byte dst[8])

FILE: meka/srcs/z80marat/Z80.cpp
  function CodesCB (line 229) | static void CodesCB(register Z80 *R)
  function CodesDDCB (line 252) | static void CodesDDCB(register Z80 *R)
  function CodesFDCB (line 278) | static void CodesFDCB(register Z80 *R)
  function CodesED (line 304) | static void CodesED(register Z80 *R)
  function CodesDD (line 335) | static void CodesDD(register Z80 *R)
  function CodesFD (line 368) | static void CodesFD(register Z80 *R)
  function ResetZ80 (line 405) | void    ResetZ80(Z80 *R)
  function IntZ80 (line 430) | void IntZ80(Z80 *R,word Vector)
  function word (line 519) | word    RunZ80(Z80 *R)
  function word (line 576) | word    RunZ80_Debugging(Z80 *R)

FILE: meka/srcs/z80marat/Z80.h
  type byte (line 57) | typedef unsigned char byte;
  type word (line 61) | typedef unsigned short word;
  type offset (line 63) | typedef signed char offset;
  type pair (line 69) | typedef union
  type Z80 (line 79) | typedef struct

FILE: meka/srcs/z80marat/Z80Call.cpp
  function Z80_Opcodes_Usage_Reset (line 23) | void    Z80_Opcodes_Usage_Reset()
  function Z80_Opcodes_Usage_Print (line 32) | void    Z80_Opcodes_Usage_Print()

FILE: meka/srcs/z80marat/Z80DebugHelpers.cpp
  function Z80DebugHelper_IsRetExecuting (line 6) | bool	Z80DebugHelper_IsRetExecuting(const Z80 *R)

FILE: meka/srcs/z80marat/Z80OpcodeEnums.h
  type Codes (line 1) | enum Codes
  type CodesCB (line 37) | enum CodesCB
  type CodesED (line 73) | enum CodesED

FILE: meka/srcs/z80marat/dasm.cpp
  function DAsm (line 250) | int     DAsm(char *S,byte *A)
  function main (line 313) | int     main(int argc, char **argv)
Condensed preview — 352 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,507K chars).
[
  {
    "path": ".editorconfig",
    "chars": 200,
    "preview": "# editorconfig.org\n\n# top-most EditorConfig file\nroot = true\n\n# Default settings:\n# Use 4 spaces as indentation\n[*]\ninde"
  },
  {
    "path": ".gitignore",
    "chars": 482,
    "preview": "# User data\nmeka/Debug\nmeka/Music\nmeka/Saves\nmeka/Screenshots\n\n# Builds\nmeka/Dist\n\n# Developer data\nmeka/objs\nmeka/meka\n"
  },
  {
    "path": "README.md",
    "chars": 2590,
    "preview": "MEKA\n====\n\n- Homepage: http://www.smspower.org/meka\n- Forum: http://www.smspower.org/forums/f7-MEKA\n\nLatest Beta Windows"
  },
  {
    "path": "appveyor.yml",
    "chars": 328,
    "preview": "version: 0.8.{build}\r\nimage: Visual Studio 2022\r\nconfiguration: Release\r\nbefore_build:\r\n- cmd: nuget restore meka/srcs/p"
  },
  {
    "path": "meka/TODO.txt",
    "chars": 45558,
    "preview": "feature request: add game name to the front of the window title text because the video capture uses that for the capture"
  },
  {
    "path": "meka/Themes/README.txt",
    "chars": 660,
    "preview": "\r\n MEKA Themes Backgrounds\r\n http://www.smspower.org/meka/themes\r\n\r\n Credits for the images in this directory:\r\n Most ar"
  },
  {
    "path": "meka/changes.txt",
    "chars": 146337,
    "preview": "-----------------------------------------------------------------------------\r\n MEKA - ChangeLog\r\n----------------------"
  },
  {
    "path": "meka/compat.txt",
    "chars": 105598,
    "preview": "-----------------------------------------------------------------------------\r\n MEKA - Compatibility List\r\n-------------"
  },
  {
    "path": "meka/debugger.txt",
    "chars": 16079,
    "preview": "-----------------------------------------------------------------------------\r\n MEKA - Debugger / Hacking tools\r\n-------"
  },
  {
    "path": "meka/history.txt",
    "chars": 217480,
    "preview": "\r\nThis is the \"developer\" version of CHANGES.TXT\r\nNot much difference, mainly:\r\n- Including some source-related comments"
  },
  {
    "path": "meka/meka.blt",
    "chars": 3024,
    "preview": ";-----------------------------------------------------------------------------\r\n; MEKA - Video Configuration\r\n; http://w"
  },
  {
    "path": "meka/meka.inp",
    "chars": 4690,
    "preview": ";-----------------------------------------------------------------------------\r\n; MEKA 0.80-alpha - Inputs Configuration"
  },
  {
    "path": "meka/meka.msg",
    "chars": 309268,
    "preview": ";-----------------------------------------------------------------------------\r\n; MEKA - Text Messages / Localization\r\n;"
  },
  {
    "path": "meka/meka.nam",
    "chars": 206429,
    "preview": ";-----------------------------------------------------------------------------\r\n; MEKA - Software Database\r\n; Last updat"
  },
  {
    "path": "meka/meka.pat",
    "chars": 11724,
    "preview": ";-----------------------------------------------------------------------------\r\n; MEKA - Patches Database\r\n; http://www."
  },
  {
    "path": "meka/meka.thm",
    "chars": 15584,
    "preview": ";-----------------------------------------------------------------------------\r\n; MEKA - Themes\r\n; http://www.smspower.o"
  },
  {
    "path": "meka/meka.txt",
    "chars": 38788,
    "preview": "\n  MEKA 0.80-ALPHA - Documentation\n ===========================\n  Multi machine emulator for MS-Windows, GNU/Linux, etc."
  },
  {
    "path": "meka/multi.txt",
    "chars": 13313,
    "preview": "-----------------------------------------------------------------------------\r\n MEKA - Multiplayer Games List\r\n---------"
  },
  {
    "path": "meka/setup.bat",
    "chars": 29,
    "preview": "@echo off\r\nmekaw.exe /setup\r\n"
  },
  {
    "path": "meka/sources.txt",
    "chars": 6183,
    "preview": "----------------------------------------------------------------------------\r\n MEKA Sources\r\n Short guide to compilation"
  },
  {
    "path": "meka/srcs/Makefile",
    "chars": 17896,
    "preview": "#------------------------------------------------------\r\n# MEKA - Makefile\r\n#-------------------------------------------"
  },
  {
    "path": "meka/srcs/allegro4to5.cpp",
    "chars": 2055,
    "preview": "#include \"shared.h\"\r\n#include \"palette.h\"\r\n\r\nvoid al_draw_hline(int x1, int y, int x2, ALLEGRO_COLOR c)\r\n{\r\n   al_draw_l"
  },
  {
    "path": "meka/srcs/allegro4to5.h",
    "chars": 328,
    "preview": "\r\nvoid al_draw_hline(int x1, int y, int x2, ALLEGRO_COLOR c);\r\nvoid al_draw_vline(int x, int y1, int y2, ALLEGRO_COLOR c"
  },
  {
    "path": "meka/srcs/app_about.cpp",
    "chars": 3535,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - about.c\r\n// About Box - Code\r"
  },
  {
    "path": "meka/srcs/app_about.h",
    "chars": 855,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - about.h\n// About Box - Headers"
  },
  {
    "path": "meka/srcs/app_cheatfinder.cpp",
    "chars": 22587,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - app_cheatfinder.c\r\n// Cheat F"
  },
  {
    "path": "meka/srcs/app_cheatfinder.h",
    "chars": 3433,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - app_cheatfinder.h\r\n// Cheat F"
  },
  {
    "path": "meka/srcs/app_filebrowser.cpp",
    "chars": 33655,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - g_file.c\r\n// GUI File Browser"
  },
  {
    "path": "meka/srcs/app_filebrowser.h",
    "chars": 2201,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - app_filebrowser.h\n// GUI File "
  },
  {
    "path": "meka/srcs/app_game.cpp",
    "chars": 3979,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - app_game.c\n// Game screen appl"
  },
  {
    "path": "meka/srcs/app_game.h",
    "chars": 860,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - app_game.h\n// Game screen appl"
  },
  {
    "path": "meka/srcs/app_mapview.cpp",
    "chars": 32840,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - app_mapview.c\r\n// TileMap Vie"
  },
  {
    "path": "meka/srcs/app_mapview.h",
    "chars": 2752,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - app_mapview.h\r\n// TileMap Vie"
  },
  {
    "path": "meka/srcs/app_memview.cpp",
    "chars": 40675,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - app_memview.c\r\n// Memory View"
  },
  {
    "path": "meka/srcs/app_memview.h",
    "chars": 3036,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - app_memview.h\n// Memory Viewer"
  },
  {
    "path": "meka/srcs/app_options.cpp",
    "chars": 5768,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - options.c\r\n// Options Box - C"
  },
  {
    "path": "meka/srcs/app_options.h",
    "chars": 878,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - options.h\n// Options Box - Hea"
  },
  {
    "path": "meka/srcs/app_palview.cpp",
    "chars": 8268,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - app_palview.c\r\n// Palette Vie"
  },
  {
    "path": "meka/srcs/app_palview.h",
    "chars": 1513,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - app_palview.h\r\n// Palette Vie"
  },
  {
    "path": "meka/srcs/app_techinfo.cpp",
    "chars": 9696,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - techinfo.c\r\n// Technical Info"
  },
  {
    "path": "meka/srcs/app_techinfo.h",
    "chars": 1212,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - techinfo.h\n// Technical Inform"
  },
  {
    "path": "meka/srcs/app_textview.cpp",
    "chars": 11556,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - textview.c\n// Text Viewer Appl"
  },
  {
    "path": "meka/srcs/app_textview.h",
    "chars": 2450,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - textview.h\n// Text Viewer Appl"
  },
  {
    "path": "meka/srcs/app_tileview.cpp",
    "chars": 11527,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - tileview.c\r\n// Tile Viewer - "
  },
  {
    "path": "meka/srcs/app_tileview.h",
    "chars": 1588,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - tileview.h\r\n// Tile Viewer - "
  },
  {
    "path": "meka/srcs/areplay.cpp",
    "chars": 406,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - areplay.c\n// Action Replay Emu"
  },
  {
    "path": "meka/srcs/areplay.h",
    "chars": 309,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - areplay.h\n// Action Replay Emu"
  },
  {
    "path": "meka/srcs/beam.cpp",
    "chars": 2972,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - beam.c\r\n// VDP Refresh Beam P"
  },
  {
    "path": "meka/srcs/beam.h",
    "chars": 382,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - beam.h\n// VDP Refresh Beam Pos"
  },
  {
    "path": "meka/srcs/bios.cpp",
    "chars": 1331,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - bios.c\n// Interface with the M"
  },
  {
    "path": "meka/srcs/bios.h",
    "chars": 867,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - bios.h\n// Interface with the M"
  },
  {
    "path": "meka/srcs/blit.cpp",
    "chars": 12764,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - blit.c\n// Blitters - Code\n//--"
  },
  {
    "path": "meka/srcs/blit.h",
    "chars": 1472,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - blit.h\n// Blitters - Headers\n/"
  },
  {
    "path": "meka/srcs/blit_c.cpp",
    "chars": 347,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - blit_c.c\n// Blitters/Video Con"
  },
  {
    "path": "meka/srcs/blit_c.h",
    "chars": 309,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - blit_c.h\n// Blitters/Video Con"
  },
  {
    "path": "meka/srcs/blitintf.cpp",
    "chars": 8561,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - blitintf.c\r\n// Blitter config"
  },
  {
    "path": "meka/srcs/blitintf.h",
    "chars": 2315,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - blitintf.h\n// Blitter configur"
  },
  {
    "path": "meka/srcs/bmemory.cpp",
    "chars": 4436,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - bmemory.c\n// Battery Backed Me"
  },
  {
    "path": "meka/srcs/bmemory.h",
    "chars": 894,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - bmemory.h\n// Backed Memory Dev"
  },
  {
    "path": "meka/srcs/build.cpp",
    "chars": 93,
    "preview": "#include \"shared.h\"\r\nchar MEKA_BUILD_DATE[] = __DATE__;\r\nchar MEKA_BUILD_TIME[] = __TIME__;\r\n"
  },
  {
    "path": "meka/srcs/build.h",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "meka/srcs/capture.cpp",
    "chars": 5758,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - capture.c\r\n// Screen Capture "
  },
  {
    "path": "meka/srcs/capture.h",
    "chars": 1338,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - capture.h\n// Screen Capture - "
  },
  {
    "path": "meka/srcs/checksum.cpp",
    "chars": 2731,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - checksum.c\r\n// Checksum - Cod"
  },
  {
    "path": "meka/srcs/checksum.h",
    "chars": 521,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - checksum.h\n// Checksum Databas"
  },
  {
    "path": "meka/srcs/coleco.cpp",
    "chars": 6979,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - coleco.c\r\n// Coleco Vision Em"
  },
  {
    "path": "meka/srcs/coleco.h",
    "chars": 818,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - coleco.h\n// Coleco Vision Emul"
  },
  {
    "path": "meka/srcs/commport.cpp",
    "chars": 3677,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - commport.c\n// Gear-to-Gear Com"
  },
  {
    "path": "meka/srcs/commport.h",
    "chars": 1094,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - commport.h\n// Gear-to-Gear Com"
  },
  {
    "path": "meka/srcs/config.cpp",
    "chars": 23507,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - config.h\r\n// Configuration Fi"
  },
  {
    "path": "meka/srcs/config.h",
    "chars": 615,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - config.h\r\n// Configuration Fi"
  },
  {
    "path": "meka/srcs/country.cpp",
    "chars": 2226,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - country.c\n// Country / Nationa"
  },
  {
    "path": "meka/srcs/country.h",
    "chars": 897,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - country.h\n// Country / Nationa"
  },
  {
    "path": "meka/srcs/cpu.cpp",
    "chars": 7564,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - cpu.c\r\n// CPU related things "
  },
  {
    "path": "meka/srcs/cpu.h",
    "chars": 2786,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - cpu.h\r\n// CPU related things "
  },
  {
    "path": "meka/srcs/data.cpp",
    "chars": 10814,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - data.c\r\n// Data Loading - Cod"
  },
  {
    "path": "meka/srcs/data.h",
    "chars": 3850,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - data.h\r\n// Data Loading - Hea"
  },
  {
    "path": "meka/srcs/datadump.cpp",
    "chars": 18140,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - datadump.c\r\n// Data Dumping -"
  },
  {
    "path": "meka/srcs/datadump.h",
    "chars": 1618,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - datadump.h\n// Data Dumping - H"
  },
  {
    "path": "meka/srcs/datasrc/README.txt",
    "chars": 917,
    "preview": "\r\n2005/04/02\r\n\r\nSome of the data included in MEKA.DAT file.\r\n\r\nNote:\r\n- MEKA-WIP.DAT is the work datafile.\r\n- MEKA.DAT i"
  },
  {
    "path": "meka/srcs/datasrc/fonts/README.txt",
    "chars": 760,
    "preview": "\r\n2005/04/02\r\n\r\nThis is a mess. Note how I modified certain fonts\r\nto move around some accentued character.\r\nOn font 0 ("
  },
  {
    "path": "meka/srcs/datasrc/keyboard/README.txt",
    "chars": 550,
    "preview": "\r\n2005/04/02\r\n\r\nThis is a drawing of SC-3000 keyboard (also known as SK-1100 when\r\nsold separately).\r\n\r\nThis looked fair"
  },
  {
    "path": "meka/srcs/datasrc/keyboard/c1.pal",
    "chars": 234,
    "preview": "255 128 128\r\n84 100 132\r\n0 0 0\r\n60 60 60\r\n228 236 188\r\n156 156 4\r\n220 220 100\r\n28 28 36\r\n60 60 84\r\n252 236 4\r\n100 108 15"
  },
  {
    "path": "meka/srcs/datasrc/wb3.ans",
    "chars": 139,
    "preview": "\r\n\u001b[?7h\u001b[255D\u001b[0;30;41m\u001b[40m\r\n\u001b[41m\u001b[1;37mWONDERBOY\u001b[0;30;41m\u001b[1;37mIII\u001b[0;30;41m\u001b[40m\r\n\u001b[41m\u001b[1;37mSEGA\u001b[0;30;41m\u001b[40m\r"
  },
  {
    "path": "meka/srcs/db.cpp",
    "chars": 26225,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - db.c\r\n// MEKA Database - Code"
  },
  {
    "path": "meka/srcs/db.h",
    "chars": 5363,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - db.c\r\n// MEKA Database - Head"
  },
  {
    "path": "meka/srcs/debugger.cpp",
    "chars": 160812,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - debugger.c\n// MEKA Z80 Debugge"
  },
  {
    "path": "meka/srcs/debugger.h",
    "chars": 8953,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - debugger.h\r\n// Z80 Debugger -"
  },
  {
    "path": "meka/srcs/desktop.cpp",
    "chars": 8323,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - desktop.c\r\n// Desktop Manager"
  },
  {
    "path": "meka/srcs/desktop.h",
    "chars": 995,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - desktop.h\n// Desktop Manager -"
  },
  {
    "path": "meka/srcs/drivers.cpp",
    "chars": 4740,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - drivers.c\r\n// Machine Drivers"
  },
  {
    "path": "meka/srcs/drivers.h",
    "chars": 2074,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - drivers.h\n// Machine Drivers -"
  },
  {
    "path": "meka/srcs/eagle.asm",
    "chars": 24982,
    "preview": ";\r\n; Eagle.asm\r\n;\r\n; Eagle version 0.41 for NASM\r\n;\r\n; Written by Dirk Stevens\r\n;\r\n; compile with : nasm -f coff eagle.a"
  },
  {
    "path": "meka/srcs/eagle.h",
    "chars": 1308,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - eagle.h\n// Eagle Graphic Filte"
  },
  {
    "path": "meka/srcs/eeprom.cpp",
    "chars": 12800,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - eeprom.c\n// EEPROM Emulation ("
  },
  {
    "path": "meka/srcs/eeprom.h",
    "chars": 2961,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - eeprom.h\n// EEPROM Emulation ("
  },
  {
    "path": "meka/srcs/effects.cpp",
    "chars": 4347,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - effects.c\n// Various effects -"
  },
  {
    "path": "meka/srcs/effects.h",
    "chars": 550,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - effects.h\n// Various effects -"
  },
  {
    "path": "meka/srcs/errors.cpp",
    "chars": 2062,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - errors.c\r\n// Error codes and "
  },
  {
    "path": "meka/srcs/errors.h",
    "chars": 2097,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - errors.h\r\n// Error codes and "
  },
  {
    "path": "meka/srcs/fdc765.cpp",
    "chars": 24600,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - fdc765.c\n// FDC765 (Floppy Dis"
  },
  {
    "path": "meka/srcs/fdc765.h",
    "chars": 3919,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - fdc765.h\n// FDC765 (Floppy Dis"
  },
  {
    "path": "meka/srcs/file.cpp",
    "chars": 22700,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - file.c\r\n// ROM File Loading &"
  },
  {
    "path": "meka/srcs/file.h",
    "chars": 1096,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - file.h\n// ROM File Loading & F"
  },
  {
    "path": "meka/srcs/fonts.cpp",
    "chars": 8198,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - fonts.c\r\n// Fonts Tools (most"
  },
  {
    "path": "meka/srcs/fonts.h",
    "chars": 2588,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - fonts.h\n// Fonts Tools (mostly"
  },
  {
    "path": "meka/srcs/fskipper.cpp",
    "chars": 6274,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - fskipper.c\r\n// Frame Skipper "
  },
  {
    "path": "meka/srcs/fskipper.h",
    "chars": 1700,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - fskipper.h\n// Frame Skipper - "
  },
  {
    "path": "meka/srcs/g_action.cpp",
    "chars": 5112,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - g_action.c\r\n// Miscellaneous "
  },
  {
    "path": "meka/srcs/g_action.h",
    "chars": 584,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - g_action.h\r\n// Miscellaneous "
  },
  {
    "path": "meka/srcs/g_box.cpp",
    "chars": 17577,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - g_box.c\r\n// GUI Boxes - Code\r"
  },
  {
    "path": "meka/srcs/g_box.h",
    "chars": 1424,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - g_box.h\n// GUI Boxes - Headers"
  },
  {
    "path": "meka/srcs/g_init.cpp",
    "chars": 5028,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - g_init.c\n// GUI Initialization"
  },
  {
    "path": "meka/srcs/g_init.h",
    "chars": 613,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - g_init.h\n// GUI Initialization"
  },
  {
    "path": "meka/srcs/g_menu.cpp",
    "chars": 12119,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - g_menu.c\r\n// GUI Menus - Code"
  },
  {
    "path": "meka/srcs/g_menu.h",
    "chars": 5285,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - g_menu.h\r\n// GUI Menus - Head"
  },
  {
    "path": "meka/srcs/g_menu_i.cpp",
    "chars": 21626,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - g_menu_i.c\r\n// GUI Menus Init"
  },
  {
    "path": "meka/srcs/g_menu_i.h",
    "chars": 642,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - g_menu_i.h\n// GUI Menus Initia"
  },
  {
    "path": "meka/srcs/g_menu_t.cpp",
    "chars": 8472,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - g_menu_t.c\n// GUI Menus Tools "
  },
  {
    "path": "meka/srcs/g_menu_t.h",
    "chars": 1593,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - g_menu_t.h\n// GUI Menus Tools "
  },
  {
    "path": "meka/srcs/g_mouse.cpp",
    "chars": 3054,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - g_mouse.c\n// GUI Mouse related"
  },
  {
    "path": "meka/srcs/g_mouse.h",
    "chars": 1197,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - g_mouse.h\n// GUI Mouse related"
  },
  {
    "path": "meka/srcs/g_tools.cpp",
    "chars": 2138,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - g_tools.c\r\n// GUI Tools - Cod"
  },
  {
    "path": "meka/srcs/g_tools.h",
    "chars": 1297,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - g_tools.h\n// GUI Tools - Heade"
  },
  {
    "path": "meka/srcs/g_update.cpp",
    "chars": 3524,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - g_update.c\r\n// GUI Update - C"
  },
  {
    "path": "meka/srcs/g_update.h",
    "chars": 526,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - g_update.h\n// GUI Update - Hea"
  },
  {
    "path": "meka/srcs/g_widget.cpp",
    "chars": 46340,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - g_widget.c\r\n// GUI Widgets - "
  },
  {
    "path": "meka/srcs/g_widget.h",
    "chars": 8656,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - g_widget.h\r\n// GUI Widgets - "
  },
  {
    "path": "meka/srcs/glasses.cpp",
    "chars": 8336,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - glasses.c\r\n// 3D Glasses Supp"
  },
  {
    "path": "meka/srcs/glasses.h",
    "chars": 1628,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - glasses.h\n// 3D Glasses Suppor"
  },
  {
    "path": "meka/srcs/gui.cpp",
    "chars": 6281,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - gui.h\n// Graphical User Interf"
  },
  {
    "path": "meka/srcs/gui.h",
    "chars": 6191,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - gui.h\r\n// Graphical User Inte"
  },
  {
    "path": "meka/srcs/hq2x.cpp",
    "chars": 2591,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - hq2x.c\r\n// HQ2X filter initia"
  },
  {
    "path": "meka/srcs/hq2x.h",
    "chars": 945,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - hq2x.h\r\n// HQ2X filter initia"
  },
  {
    "path": "meka/srcs/hq2x16.asm",
    "chars": 42391,
    "preview": "; Copied under custom license. See SOURCES.TXT.\r\n;hq2x filter\r\n;16bpp output\r\n;-----------------------------------------"
  },
  {
    "path": "meka/srcs/hq2x32.asm",
    "chars": 42111,
    "preview": ";hq2x filter\r\n;32bpp output\r\n;----------------------------------------------------------\r\n;Copyright (C) 2003 MaxSt ( ma"
  },
  {
    "path": "meka/srcs/inputs.cpp",
    "chars": 26220,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - inputs.c\r\n// User Inputs & Em"
  },
  {
    "path": "meka/srcs/inputs.h",
    "chars": 6662,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - inputs.h\n// User Inputs & Emul"
  },
  {
    "path": "meka/srcs/inputs_c.cpp",
    "chars": 24659,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - inputs_c.c\r\n// Inputs Configu"
  },
  {
    "path": "meka/srcs/inputs_c.h",
    "chars": 1842,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - inputs_c.h\n// Inputs Configura"
  },
  {
    "path": "meka/srcs/inputs_f.cpp",
    "chars": 20216,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - inputs_f.c\r\n// Inputs File Lo"
  },
  {
    "path": "meka/srcs/inputs_f.h",
    "chars": 538,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - inputs_f.h\n// Inputs File Load"
  },
  {
    "path": "meka/srcs/inputs_i.cpp",
    "chars": 2169,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - inputs_i.c\n// Inputs Initializ"
  },
  {
    "path": "meka/srcs/inputs_i.h",
    "chars": 612,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - inputs_i.h\n// Inputs Initializ"
  },
  {
    "path": "meka/srcs/inputs_t.cpp",
    "chars": 3907,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - inputs_t.c\n// Inputs Tools - C"
  },
  {
    "path": "meka/srcs/inputs_t.h",
    "chars": 879,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - inputs_t.h\n// Inputs Tools - H"
  },
  {
    "path": "meka/srcs/inputs_u.cpp",
    "chars": 28114,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - inputs_u.c\r\n// Inputs Update "
  },
  {
    "path": "meka/srcs/inputs_u.h",
    "chars": 986,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - inputs_u.h\r\n// Inputs Update "
  },
  {
    "path": "meka/srcs/ioports.cpp",
    "chars": 11892,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - ioports.c\r\n// I/O Ports Emula"
  },
  {
    "path": "meka/srcs/ioports.h",
    "chars": 951,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - ioports.h\n// I/O Ports Emulati"
  },
  {
    "path": "meka/srcs/keyinfo.cpp",
    "chars": 13415,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - keysname.c\r\n// Keyboard Keys "
  },
  {
    "path": "meka/srcs/keyinfo.h",
    "chars": 1106,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - keysname.h\n// Keyboard Keys Na"
  },
  {
    "path": "meka/srcs/libmisc.cpp",
    "chars": 6919,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - LIBMY.C\r\n// Various helper fu"
  },
  {
    "path": "meka/srcs/libmisc.h",
    "chars": 1813,
    "preview": "//\r\n// Meka - LIBMY.H\r\n// Various functions - Headers and Constants\r\n//\r\n\r\n#ifndef _LIB_MISC_H_\r\n#define _LIB_MISC_H_\r\n\r"
  },
  {
    "path": "meka/srcs/libparse.cpp",
    "chars": 7779,
    "preview": "//-----------------------------------------------------------------------------\r\n// Parsing helper functions\r\n//--------"
  },
  {
    "path": "meka/srcs/libparse.h",
    "chars": 1609,
    "preview": "//-----------------------------------------------------------------------------\r\n// Parsing helper functions\r\n//--------"
  },
  {
    "path": "meka/srcs/lightgun.cpp",
    "chars": 2955,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - lightgun.c\r\n// Light Phaser E"
  },
  {
    "path": "meka/srcs/lightgun.h",
    "chars": 1287,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - lightgun.h\n// Light Phaser Emu"
  },
  {
    "path": "meka/srcs/machine.cpp",
    "chars": 29520,
    "preview": "\r\n// MEKA - machine.c\r\n// Emulated Machines Initialization - Code\r\n//---------------------------------------------------"
  },
  {
    "path": "meka/srcs/machine.h",
    "chars": 1063,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - machine.h\n// Emulated Machines"
  },
  {
    "path": "meka/srcs/mainloop.cpp",
    "chars": 4235,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - mainloop.c\r\n// Main Emulation"
  },
  {
    "path": "meka/srcs/mainloop.h",
    "chars": 358,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - mainloop.h\n// Main Emulation /"
  },
  {
    "path": "meka/srcs/mappers.cpp",
    "chars": 50568,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - mappers.c\r\n// Memory Mapper E"
  },
  {
    "path": "meka/srcs/mappers.h",
    "chars": 6630,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - mappers.h\n// Memory Mapper Emu"
  },
  {
    "path": "meka/srcs/meka.cpp",
    "chars": 14940,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA\n// Sega Master System / Game Gea"
  },
  {
    "path": "meka/srcs/meka.h",
    "chars": 14559,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - meka.h\r\n// Main variables, he"
  },
  {
    "path": "meka/srcs/message.cpp",
    "chars": 38346,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - message.c\r\n// Messaging Syste"
  },
  {
    "path": "meka/srcs/message.h",
    "chars": 14037,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - message.h\r\n// Messaging Syste"
  },
  {
    "path": "meka/srcs/misc.cpp",
    "chars": 5537,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - misc.c\r\n// Miscellaneous - Co"
  },
  {
    "path": "meka/srcs/misc.h",
    "chars": 1811,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - misc.h\r\n// Miscellaneous - He"
  },
  {
    "path": "meka/srcs/palette.cpp",
    "chars": 5908,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - palette.c\r\n// Palette managem"
  },
  {
    "path": "meka/srcs/palette.h",
    "chars": 1794,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - palette.h\n// Palette managemen"
  },
  {
    "path": "meka/srcs/patch.cpp",
    "chars": 9613,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - patch.c\n// Patching System - C"
  },
  {
    "path": "meka/srcs/patch.h",
    "chars": 1761,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - patch.h\n// Patching System - H"
  },
  {
    "path": "meka/srcs/periph.cpp",
    "chars": 3863,
    "preview": "#include \"shared.h\"\r\n#include \"periph.h\"\r\n#include \"inputs_t.h\"\r\n#include \"lightgun.h\"\r\n#include \"rapidfir.h\"\r\n\r\n// FIXM"
  },
  {
    "path": "meka/srcs/periph.h",
    "chars": 283,
    "preview": "\r\nvoid Peripherals_Init();\r\nvoid Peripherals_MachineReset();\r\nvoid Peripherals_WritePort3F(u8 old_v, u8 new_v);\r\n\r\nvoid "
  },
  {
    "path": "meka/srcs/platform/macosx/osxhelpers.h",
    "chars": 342,
    "preview": "#ifndef OSXHELPERS_H_\n#define OSXHELPERS_H_\n\nvoid GetResourcePath( char* outBuffer, int bufferSize );\nvoid GetWritableIn"
  },
  {
    "path": "meka/srcs/platform/macosx/osxhelpers.mm",
    "chars": 4076,
    "preview": "// Mac OS \n#include <CoreFoundation/CoreFoundation.h>\n#import <Foundation/Foundation.h>\n#include \"osxhelpers.h\"\n\nstatic "
  },
  {
    "path": "meka/srcs/projects/msvc/Meka.plg",
    "chars": 14520,
    "preview": "<html>\r\n<body>\r\n<pre>\r\n<h1>Build Log</h1>\r\n<h3>\r\n--------------------Configuration: Meka - Win32 Debug------------------"
  },
  {
    "path": "meka/srcs/projects/msvc/Meka.rc",
    "chars": 4660,
    "preview": "// Microsoft Visual C++ generated resource script.\r\n//\r\n#include \"resource.h\"\r\n\r\n#define APSTUDIO_READONLY_SYMBOLS\r\n////"
  },
  {
    "path": "meka/srcs/projects/msvc/Meka.sln",
    "chars": 1407,
    "preview": "Microsoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio 15\r\nVisualStudioVersion = 15.0.26730.16\r\nMi"
  },
  {
    "path": "meka/srcs/projects/msvc/Meka.vcxproj",
    "chars": 25217,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.micro"
  },
  {
    "path": "meka/srcs/projects/msvc/Meka.vcxproj.filters",
    "chars": 26840,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "meka/srcs/projects/msvc/meka.manifest",
    "chars": 318,
    "preview": "<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\" xmlns:asmv3=\"urn:schemas-microsoft-com:asm.v3\" "
  },
  {
    "path": "meka/srcs/projects/msvc/packages.config",
    "chars": 278,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n  <package id=\"Allegro\" version=\"5.2.10\" targetFramework=\"native\" /"
  },
  {
    "path": "meka/srcs/projects/msvc/resource.h",
    "chars": 1364,
    "preview": "//{{NO_DEPENDENCIES}}\r\n// Microsoft Visual C++ generated include file.\r\n// Used by Meka.rc\r\n//\r\n#define IDD_SETUP       "
  },
  {
    "path": "meka/srcs/projects/xcode/meka/meka.xcodeproj/project.pbxproj",
    "chars": 69446,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXFileReference secti"
  },
  {
    "path": "meka/srcs/projects/xcode/meka/meka.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 149,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:meka.xcodeproj\""
  },
  {
    "path": "meka/srcs/rapidfir.cpp",
    "chars": 2597,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - rapidfir.c\r\n// Simple rapid f"
  },
  {
    "path": "meka/srcs/rapidfir.h",
    "chars": 1211,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - rapidfir.h\n// Rapid Fire Emula"
  },
  {
    "path": "meka/srcs/saves.cpp",
    "chars": 23280,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - saves.c\r\n// Save States - Cod"
  },
  {
    "path": "meka/srcs/saves.h",
    "chars": 2155,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - saves.h\n// Save States - Heade"
  },
  {
    "path": "meka/srcs/sdsc.cpp",
    "chars": 22685,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - sdsc.c\n// SDSC ROM Tag and Deb"
  },
  {
    "path": "meka/srcs/sdsc.h",
    "chars": 617,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - sdsc.h\n// SDSC ROM Tag and Deb"
  },
  {
    "path": "meka/srcs/setup.cpp",
    "chars": 10449,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - setup.c\r\n// Interactive Setup"
  },
  {
    "path": "meka/srcs/setup.h",
    "chars": 540,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - setup.h\r\n// Interactive Setup"
  },
  {
    "path": "meka/srcs/sf7000.cpp",
    "chars": 4596,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - sf7000.c\n// SF-7000 (Super Con"
  },
  {
    "path": "meka/srcs/sf7000.h",
    "chars": 1130,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - sf7000.h\n// SF-7000 (Super Con"
  },
  {
    "path": "meka/srcs/sg1ksc3k.cpp",
    "chars": 3055,
    "preview": "//-----------------------------------------------------------------------------\r\n// MEKA - sg1ksc3k.c\r\n// SG-1000/SC-300"
  },
  {
    "path": "meka/srcs/sg1ksc3k.h",
    "chars": 517,
    "preview": "//-----------------------------------------------------------------------------\n// MEKA - sg1ksc3k.h\n// SG-1000/SC-3000 "
  }
]

// ... and 152 more files (download for full content)

About this extraction

This page contains the full source code of the ocornut/meka GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 352 files (3.2 MB), approximately 839.9k tokens, and a symbol index with 1399 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!