ChanServ changed the topic of ##yamahasynths to: Channel dedicated to questions and discussion of Yamaha FM Synthesizer internals and corresponding REing. Discussion of synthesis methods similar to the Yamaha line of chips, Sound Blasters + clones, PCM chips like RF5C68, and CD theory of operation are also on-topic. Channel logs: https://freenode.irclog.whitequark.org/~h~yamahasynths
<Lord_Nightmare>
ValleyBell: yes, i have 3 patches i need to get in
<Lord_Nightmare>
that's one of them, i need to finish writing it though
<Lord_Nightmare>
i saved those pictures somewhere, what were the names of them again?
<Lord_Nightmare>
been busy the past 2 weeks
<cr1901_modern>
Trying to create a bot, hopefully a first minimal version will be up tonight. Prob first thing I'll add: map a Yamaha chip part to it's family name and vice-versa. Since I can't remember the mappings.
<andlabs>
before I do more work for myself
<andlabs>
is the voice format of the DX100 firmware known?
<andlabs>
I can deduce it's a 67-byt eformat but the owner's manual insists it should be 72 bytes instead, and dxconvert/txconvert insist it's 128 bytes instead (for the tx81z...)
<Lord_Nightmare>
ValleyBell: you want credit as [ValleyBell], right?
<Lord_Nightmare>
i assume yes
_whitelogger has joined ##yamahasynths
<andlabs>
aha!
<andlabs>
the extra bytes are $63 $63 $63 $32 $32 $32
<andlabs>
for some reason
cr1901_modern has quit [Quit: Leaving.]
cr1901_modern has joined ##yamahasynths
protosphere has quit [Ping timeout: 276 seconds]
protosphere has joined ##yamahasynths
<ValleyBell>
Lord_Nightmare: "Valley Bell" (with a space), would be nice, if that's not too much of a hassle
<ValleyBell>
cr1901_modern: Yes, there is a bit difference between the OKI6258 and 6295. The 6258 is 1-voice ADPCM without ROM and requires the CPU to stream data in realtime. (or via DMA)
<ValleyBell>
The 6295 is a 4-voice ADPCM chip that plays data from a sample ROM.
<ValleyBell>
You could maybe keep the C219 as a separate chip. It adds a bunch of features from the C352, so we decided to even split the emulation cores in libvgm.
<ValleyBell>
(even if it occupies the same "slot" as the C140 in VGMs)
<ValleyBell>
The Y8950 is a YM3526 + DeltaT ADPCM channel, but I'd keep that as a separate chip.
<ValleyBell>
>"Pro Audio Spectrum (2xYM3812)" => SoundChip::YM3812(1) <--- this should be YM3812(2)
<ValleyBell>
That's all issues I see right now.
<Lord_Nightmare>
the 6295 also has a secondary adpcm mode which uses a differently encoded "OKI II" encoding scheme that hasn't been reverse engineered yet
<Lord_Nightmare>
i don't know of anything that uses it personally but perhaps you do
<ValleyBell>
I haven't seen that used either. All games I know just use the usual ADPCM mode.
<Lord_Nightmare>
the oki mode clips at the max/min of the 12 bit accumulator range on all of the oki chips EXCEPT for the msm5205, which wraps
<Lord_Nightmare>
the ym2608 internal ROM and the ym2610 ADPCM_A mode, which are variants of oki adpcm with a different evolution table, also wrap like the 5205 and unlike the rest of the oki chips
<Lord_Nightmare>
well, we don't know about the 2608 internal ROM wrapping but presumably it does
<Lord_Nightmare>
adpcm_a definitely does
kode54 has quit [Read error: Connection reset by peer]
kode545 has joined ##yamahasynths
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
andlabs has joined ##yamahasynths
<andlabs>
hmmm
<andlabs>
so the DX100 combines MULT and DT2 into a single value called "operator frequency"
<andlabs>
okay, I guess????
<andlabs>
er
<andlabs>
"oscillator frequency"
<andlabs>
and I immediately forgot again after thinking I finally memorized it it a few weeks ago 😐
<andlabs>
what does it mean after a comparison that carry is set
<Lord_Nightmare>
depends on the cpu
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
andlabs has joined ##yamahasynths
<andlabs>
hey cr1901_modern and .. I guess j_oliviera isn't here?
<andlabs>
ok
<andlabs>
remember when you told me the YM2164 has "DRM" and I looked it up and the FB-01 and MSX addons set the private registers 0..7 to $10 ?
<andlabs>
well the DX100 actually sets those registers to a different value based on some parameters (I don't know which)
<andlabs>
it DOES set all of those registers to the same value, though
<Lord_Nightmare>
ym2164 has another piece of drm
<Lord_Nightmare>
the timer runs at half(?) the speed as it does on the ym2151?
<Lord_Nightmare>
this change i think was done intentionally less as drm and more so the timer had a more useful tick range when dealing with midi tempo
<andlabs>
I don't think that qualifies as DRM
<andlabs>
sure it makes software that use timer B at the YM2151 rate buggy
<andlabs>
also hm
<andlabs>
does anyone know whether C1 and M2 in an OPM file are operators 2 and 3 or 3 and 2, respectively?
<andlabs>
ok C1 is op 2 and M2 are op 3 (deduced from a sample with algo 4)
kode545 is now known as kode54
<andlabs>
/ banks:
<andlabs>
/ - 0x2205 (8709) len 67 - initialized voice
<andlabs>
/ - 0x66C0 (26304) len 6432 - voice bank 2
<andlabs>
/ - 0x4DA0 (19872) len 6432 - voice bank 1
<andlabs>
OPM files from DX100 maybe???
<cr1901_modern>
I thought the "DRM" was swapping the reg file positions around, not that you had to write a key to unlock the remaining regs
<andlabs>
it's onlyt he test register that moved
<andlabs>
the other registers are identical
<cr1901_modern>
ahh TIL
<ej5>
ADLPlug is pretty sweet. just got it working today within Ardour.
<Lord_Nightmare>
andlabs: the correct operator order is M1 C1 M2 C2 right? that way you can't get the whole mixup with 1 2 3 4 vs 1 3 2 4
<Lord_Nightmare>
i'm not sure
<Lord_Nightmare>
i know the correct operator order in memory is 1 3 2 4 on the opn2, i think?
<Lord_Nightmare>
and gems and sega02 and possibly a bunch of other docs on sites have it wrong
<andlabs>
it's 1 2 3 4 in this case so ok
<andlabs>
it's 1 3 2 4 internally in the chip so because of how the register file works it's also slightly faster to write registers in this order