Open mungewell opened 6 months ago
I downloaded the Texas Instrument CCSTUDIO-THEIA for disassembly, and the wxMEdit hex editor, followed the excellent instructions from @ELynx to extract the ELF portion from the LINESEL.ZD2 file, and ran the dis6x from CCSTUDIO on the ELF file to disassemble it.
I think the parts of the ZD2 file before the ELF data is chunk/section-based, just like the MS-50G+ patch data. There are some four-character hex strings followed by what could be chunk length. There's the familiar TXJ1 for Japanese description and TXE1 for English description. The ELF-section is inside a Zoom-style DATA chunk. There's also a chunk called ICON and a chunk called INFO. I guess you know all this already from your ventures into the ZD2 file format :-).
As for the ELF part - At first look, the disassembled output looks sane to me. It contains some assembly code at the start and some data at the end, with section names that suggest they are images.
I don't speak TI6000 assembly, so I don't know what the code does. The code labels / function names does tell a story, though, with code blocks for initialization, editing parameters, and more.
Unfortunately, it looks like @ELynx won't be developing his tools and effects any more. He has set the repository to read only and posted a closing statement a couple of months ago: https://github.com/ELynx/zoom-fx-modding/issues/14.
These MS-Plus series of pedals could be a wonderful platform for implementing custom effects. But it looks like @ELynx' conclusion is that there isn't much community interest in actually doing so.
I'm away for the weekend, but you can use the 'decode_effect' to extract the code/ELF section.
$ python3 decode_effect.py -c LINESEL.ZD2.ELF LINESEL.ZD3
I also started pulling out some tables/shared data with 'decode_bdl', this also works on ZD2... for when you want to change the characteristics of the EQs for example.
Get BlueMail for Android
On May 25, 2024, 9:00 AM, at 9:00 AM, Thomas Hammer @.***> wrote:
I downloaded the Texas Instrument CCSTUDIO-THEIA for disassembly, and the wxMEdit hex editor, followed the excellent instructions from @ELynx to extract the ELF portion from the LINESEL.ZD2 file, and ran the dis6x from CCSTUDIO on the ELF file to disassemble it.
I think the parts of the ZD2 file before the ELF data is chunk/section-based, just like the MS-50G+ patch data. There are some four-character hex strings followed by what could be chunk length. There's the familiar TXJ1 for Japanese description and TXE1 for English description. The ELF-section is inside a Zoom-style DATA chunk. There's also a chunk called ICON and a chunk called INFO. I guess you know all this already from your ventures into the ZD2 file format :-).
As for the ELF part - At first look, the disassembled output looks sane to me. It contains some assembly code at the start and some data at the end, with section names that suggest they are images.
I don't speak TI6000 assembly, so I don't know what the code does. The code labels / function names does tell a story, though, with code blocks for initialization, editing parameters, and more.
Unfortunately, it looks like @ELynx won't be developing his tools and effects any more. He has set the repository to read only and posted a closing statement a couple of months ago: https://github.com/ELynx/zoom-fx-modding/issues/14.
These MS-Plus series of pedals could be a wonderful platform for implementing custom effects. But it looks like @ELynx' conclusion is that there isn't much community interest in actually doing so.
-- Reply to this email directly or view it on GitHub: https://github.com/thammer/zoom-explorer/issues/1#issuecomment-2131302584 You are receiving this because you authored the thread.
Message ID: @.***>
Well, Linux version looks like it needs Python2... which isn't native on Ubuntu any more. :-(
I'll see if Windows version is any easier, if not I'll have to set up a VM (or something) to work in.
Windows version worked OK. Just selected the 'C200' tools and was able to...
C:\Users\simon\Downloads\zoom-zt2-master-20240527\zoom-zt2-master>"c:\Program Files\Python\Python310\python.exe" decode_effect.py -c ZNR.ZD2.elf ZNR.ZD2
C:\Users\simon\Downloads\zoom-zt2-master-20240527\zoom-zt2-master>c:\ti\ccstheia140\ccs\tools\compiler\ti-cgt-c6000_8.3.12\bin\dis6x.exe ZNR.ZD2.elf | vim -
--
Disassembly of ZNR.ZD2.elf:
TEXT Section .text (Little Endian), 0x18a0 bytes at 0x00000000
00000000 Fx_DYN_ZNR:
00000000 09902266 LDW.D1T2 *+A4[1],B19
00000004 4727 MVK.L2 2,B6
00000006 1192 MVK.S1 16,A3
00000008 071803a2 MVC.S2 B6,RILC
Not that this makes any/much sense to me. :-(
So the most obvious difference between what was written (re ZDL) and the disassembled ZD2 is that there is no contents under the '.audio' segment. All code seems to be in the '.text'.
Just looking at the labels that are given, grep Fx_ ...
00000000 Fx_DYN_ZNR:
00001300 Fx_DYN_ZNR_thr_edit:
00001360 Fx_DYN_ZNR_onf:
000013c8 Fx_DYN_ZNR_depth_edit:
00001404 Fx_DYN_ZNR_EnvIn_edit:
00001428 Fx_DYN_ZNR_decay_edit:
00001474 Fx_DYN_ZNR_Level_edit:
000014b4 Fx_DYN_ZNR_init:
00001512 e01b CALLP.S2 Fx_DYN_ZNR_thr_edit (PC-512 = 0x00001300),B3
00001518 ec9b CALLP.S2 Fx_DYN_ZNR_depth_edit (PC-312 = 0x000013c8),B3
00001522 ee5b CALLP.S2 Fx_DYN_ZNR_EnvIn_edit (PC-284 = 0x00001404),B3
00001528 f09b CALLP.S2 Fx_DYN_ZNR_decay_edit (PC-248 = 0x00001428),B3
0000152e f55b CALLP.S2 Fx_DYN_ZNR_Level_edit (PC-172 = 0x00001474),B3
800002dc _Fx_DYN_ZNR_Coe:
Does it make sense that Fx_DYN_ZNR_init
is called at load time, which then goes on to call each of the _edit
functions, and that Fx_DYN_ZNR
is the audio processing function, called for every chunk of audio data?
_Fx_DYN_ZNR_Coe
is a shared data object, is this the table of coefficients that was mentioned?
The author of those custom ZDL effects did quite a write-up here: https://github.com/ELynx/zoom-fx-modding/blob/main/howto/RTFM.en.md#capabilities-and-how-to-make-fx-chains
and: https://github.com/ELynx/zoom-fx-modding/blob/main/library/CH_2.md#audio---the-logic-of-fx
I noted that the ZT2 listing that you had showed the 'line select' effect, any chance of downloading and de-compiling??