Hope this is the right place to put this. I don't see many posts about BizHawk's CDL (Code Data Logger). But I found a few bugs with it, as far as Megadrive games go. All these bugs were caused with version 1.11.6.
Certain Megadrive games crash BizHawk when CDL is Active. Here are some games that were giving me problems and the conditions for causing the crashes.
Sonic the Hedgehog 3 (U):
While in a level, press start to pause the game, then press start again to unpause. This will cause BizHawk to instantly crash with the following message:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at BizHawk.Emulation.Cores.Consoles.Sega.gpgx.GPGX.CDCallbackProc(Int32 addr, CDLog_AddrType addrtype, CDLog_Flags flags)
at BizHawk.Emulation.Cores.Consoles.Sega.gpgx.LibGPGX.gpgx_advance()
at BizHawk.Emulation.Cores.Consoles.Sega.gpgx.GPGX.FrameAdvance(Boolean render, Boolean rendersound)
at BizHawk.Client.EmuHawk.MainForm.StepRunLoop_Core(Boolean force)
at BizHawk.Client.EmuHawk.MainForm.ProgramRunLoop()
at BizHawk.Client.EmuHawk.Program.SubMain(String[] args)
When CDL is deactivated, BizHawk will not crash if you pause/unpause.
Sonic 3D Blast (UE):
While in a level, pause and unpause the game with the start button and BizHawk will crash with the following error:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at BizHawk.Emulation.Cores.Consoles.Sega.gpgx.GPGX.CDCallbackProc(Int32 addr, CDLog_AddrType addrtype, CDLog_Flags flags)
at BizHawk.Emulation.Cores.Consoles.Sega.gpgx.LibGPGX.gpgx_advance()
at BizHawk.Emulation.Cores.Consoles.Sega.gpgx.GPGX.FrameAdvance(Boolean render, Boolean rendersound)
at BizHawk.Client.EmuHawk.MainForm.StepRunLoop_Core(Boolean force)
at BizHawk.Client.EmuHawk.MainForm.ProgramRunLoop()
at BizHawk.Client.EmuHawk.Program.SubMain(String[] args)
(coincidentally, these two games use the same sound driver)
Mickey Mania:
Activate CDL when the game is launched. As soon as the Title Screen appears and the music begins to play, BizHawk will crash with the following message:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at BizHawk.Emulation.Cores.Consoles.Sega.gpgx.GPGX.CDCallbackProc(Int32 addr, CDLog_AddrType addrtype, CDLog_Flags flags)
at BizHawk.Emulation.Cores.Consoles.Sega.gpgx.LibGPGX.gpgx_advance()
at BizHawk.Emulation.Cores.Consoles.Sega.gpgx.GPGX.FrameAdvance(Boolean render, Boolean rendersound)
at BizHawk.Client.EmuHawk.MainForm.StepRunLoop_Core(Boolean force)
at BizHawk.Client.EmuHawk.MainForm.ProgramRunLoop()
at BizHawk.Client.EmuHawk.Program.SubMain(String[] args)
Some other things about the CDL that I noticed weren't quite right:
-Some games use Z80 sound drivers to play music and sound. In the event that they do, the CDL doesn't identify data that's parsed by the Z80 processor. Examples of games that use Z80 sound drivers are Castle of Illusion, World of Illusion, Quackshot, etc. Games that use 68k sound drivers like Sonic 1, Moonwalker, and Streets of Rage parse the sound data with the 68000 and will be identified by BizHawk when CDL is activated. BizHawk should attempt to identify any data that's accessed by the Z80 processor if possible.
-The "Disassemble" option doesn't produce a working output for any system. I noticed the code for the feature was marked "TODO" in the source, so hopefully someone gets around to supporting this someday. A great feature would be to export CDL files right to .idc scripts for IDA Pro. I wrote a python script to do this for me, but it'd be a nice BizHawk feature too.
-While on the topic of new features, it'd be great if BizHawk could "predict" possible code/data paths or when things are specifically used as offsets or jump tables like Exodus Emulator can.