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
andlabs has joined ##yamahasynths
andlabs has quit [Ping timeout: 248 seconds]
andlabs has joined ##yamahasynths
<cr1901_modern>
ej5: The dumped f/w is the 2.0 firmware correct?
<cr1901_modern>
That means there were multiple revisions of even the original Sound Blaster DSP?
<ej5>
2.02
<ej5>
yes
<cr1901_modern>
Btw, I just checked... this IRC channel turns 1 year old tomorrow
<cr1901_modern>
Happy it survived and grew, and some cool things are coming from the ppl who chat in it
futarisIRCcloud has joined ##yamahasynths
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<cr1901_modern>
Yea I prob should migrate to the 21st century, but the truth is my bandwidth is too thin for too much social media, and hellsite, IRC, and email have maximum impact. Thus that's what I use.
<ej5>
hehe
andlabs has joined ##yamahasynths
<Lord_Nightmare>
someone on twitter had a sb 2.0 card with a 2.01 mcu
<Lord_Nightmare>
i don't know what changed between 2.01 and 2.02
<ej5>
neither do i know
<Lord_Nightmare>
but i believe 2.00 (which may have only existed as mask dip40 chips for upgrading soundblaster 1.0 cards) had a very bad bug with the version command which would hang the computer
<Lord_Nightmare>
by asserting the interrupt pin on the isa bus and never releasing it because of a bug
<cr1901_modern>
Oh damn... I just realized... the pins between the extracted firmware and the one used on the Snark Barker won't match up
<ej5>
which version command
<ej5>
they match up perfectly, what are you talking about?
<cr1901_modern>
DIP vs PGA?
<cr1901_modern>
or QFP
<Lord_Nightmare>
iirc there's two or 3 commands which have to do with the chip version. one spits out the copyright string
<ej5>
44 plcc just adds 4 ground pins
<Lord_Nightmare>
and i forget what the others do, i think one returns 0201 for 2.01 ?
<cr1901_modern>
The pinout is the same otherwise?
<ej5>
there's no copyright string command on the 2.02 that i can tell
<ej5>
version group of commands is 0xE_
<ej5>
e8=read test reg, e4 is write test reg, e2 is the weird DMA id thing that takes in a byte and spits it back out after doing some shifts and rotates. e1 is the version number thing
<Lord_Nightmare>
ah so firmware 2.x doesn't have the E3 command for the copyright string
<Lord_Nightmare>
only firmware 3.x (sbpro) has that?
<ej5>
yeah
<ej5>
oh and e0 returns the complement of the byte you send it
<Lord_Nightmare>
ah so e2 is the protection scramble command
<ej5>
protection scramble?
<Lord_Nightmare>
which is used by early versions of sbset or whatnot
<ej5>
some silly attempt at verifying the hardware is genuine?
<Lord_Nightmare>
i remember this being an issue in MAME
<Lord_Nightmare>
yes
<Lord_Nightmare>
people reverse engineered what it was trying to test
<ej5>
my favorite undocumented commands are the SRAM sample playback ones
<ej5>
0x50, 0x51, 0x58, 0x59
<Lord_Nightmare>
the 0x5n commands?
<ej5>
it lets you load samples into 64 bytes of SRAM starting at 40h
<ej5>
then you can play back the samples and loop them a set number of times, triggering an interrupt at the end
<ej5>
no DMA involved at all
<Lord_Nightmare>
how many samples does this work on at once?
<Lord_Nightmare>
just 1 i assume
<ej5>
up to 64
<Lord_Nightmare>
wait, in parallel?
<ej5>
no
<Lord_Nightmare>
i figured
<ej5>
it has a 64 byte sample buffer that you load up
<ej5>
no mixing or anything fancy
<Lord_Nightmare>
if it could play back multiple samples from the 64 byte buffer in parallel or using time division multiplexing, then that'd actualy be extremely useful
<ej5>
the code has some bugs which might explain why they never documented it
<Lord_Nightmare>
even so, it can be used for simple monophonic synthesis
<ej5>
i think the idea was to handle digital playback without using a DMA channel.
<ej5>
the code is quite similar to the sine wave generator
<ej5>
in fact the sine wave gets copied from program memory into SRAM, then played from the timer interrupt.
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
ej5 has quit [Read error: Connection reset by peer]
Lord_Nightmare has quit [Ping timeout: 244 seconds]
Lord_Nightmare has joined ##yamahasynths
Lord_Nightmare has quit [Excess Flood]
Lord_Nightmare has joined ##yamahasynths
nukeykt has joined ##yamahasynths
<mangelis>
hey btw, maybe someone knows answer to this. does logitech soundman games (should be sb2.0 compatible) require mixer to be initialized before opl3 sound is outputted?
<mangelis>
so Media Vision Jazz16 afaik
cr1901_modern has quit [Read error: Connection reset by peer]
futarisIRCcloud has joined ##yamahasynths
Xyz_39808 has quit [Quit: Leaving]
Xyz_39808 has joined ##yamahasynths
Xyz_39808 has quit [Read error: Connection reset by peer]
Xyz_39808 has joined ##yamahasynths
cr1901_modern has joined ##yamahasynths
SceneCAT has quit [Ping timeout: 258 seconds]
SceneCAT^APUG has joined ##yamahasynths
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
andlabs has joined ##yamahasynths
l_oliveira has joined ##yamahasynths
andlabs has quit [Ping timeout: 248 seconds]
andlabs has joined ##yamahasynths
andlabs has quit [Ping timeout: 248 seconds]
_whitelogger has joined ##yamahasynths
nukeykt has quit [Quit: Page closed]
andlabs has joined ##yamahasynths
andlabs has quit [Ping timeout: 252 seconds]
cr1901_modern1 has joined ##yamahasynths
cr1901_modern has quit [Ping timeout: 245 seconds]
<ValleyBell>
Each instrument is 0x1C bytes. Register order for the first 0x0A bytes is: 20 40 60 80 E0 23 43 63 83 E3, the value for register C0 is 0x18
<ValleyBell>
That's how far I reverse-engineered it when I dumped it.
<ValleyBell>
I think the format supports the OPL3 4op mode.
<ValleyBell>
which explains the additional bytes
<ValleyBell>
But all instruments used by SB16.VXD are 2op.
<mangelis>
right
<ValleyBell>
The file contains 256 instruments, btw. The second 128 instruments are for drums.