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
ej5 has joined ##yamahasynths
<cr1901_modern> ej5: https://twitter.com/cr1901/status/882052355549798400 So... this is my most RT'd tweet ever now. And second most fav'd. lmao
<cr1901_modern> Guess I should pivot to vintage 80s CPU aesthetic more often
<ej5> vaporwave is still pretty hot right now
<cr1901_modern> ej5: And for good reason :P
<cr1901_modern> I want to meet the designer of these covers
<cr1901_modern> Would be "easy" (quotes intentional) to 3d model these
<cr1901_modern> "easy" as in "I could do it but it would SO not be worth the effort"
<ej5> probably not THAT hard to figure out who did the covers
<cr1901_modern> ? Idk where to start, tbh :P
<ej5> really? i'd start with Intel
<cr1901_modern> I mean... the _person_ who was hired to design the covers of course :P
<ej5> find contact info for the curator of the intel museum
<cr1901_modern> Oh, TIL about the Intel Museum
<cr1901_modern> No I didn't know about it
<ej5> i still need to go visit
rainwar has quit [Read error: Connection reset by peer]
rainwar has joined ##yamahasynths
<cr1901_modern> I need to set aside some time to stream polygon drawing (vectorizing) next week. Hope the laptop can handle it, since OBS really takes up resources
cr1901_modern1 has joined ##yamahasynths
cr1901_modern has quit [Ping timeout: 246 seconds]
fseidel has joined ##yamahasynths
cr1901_modern1 has quit [Quit: Leaving.]
cr1901_modern has joined ##yamahasynths
<ej5> obs?
<cr1901_modern> Open Broadcast System
<cr1901_modern> ej5: It'll be fun... I use vgmplay to stream FM music while I draw polygons
<cr1901_modern> I thought about making my own GUI app that looks nicer, but it was too much effort/too invasive to modify vgmplay
<cr1901_modern> Instead, I focus a rectangle on the VGMPlay metadata that appears in a terminal, so ppl know which song is playing when I stream
futarisIRCcloud has joined ##yamahasynths
_whitelogger has joined ##yamahasynths
rainwar has quit []
sixtysix has joined ##yamahasynths
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
nukeykt has joined ##yamahasynths
<cr1901_modern> https://www.youtube.com/watch?v=dj4E52CaT5M Sounds similar, but definitely a different feel
<cr1901_modern> Is OPL2 strictly a superset of OPLL? Is it possible to swap out instruments fast enough on OPL2 that music played on either OPL2 or OPLL sound indistinguishable to human ears?
<ValleyBell> cr1901_modern: If you want to make a VGMPlay GUI, I could help you with using libvgm.
<cr1901_modern> ValleyBell: Thank you, I will keep that in mind. cr1901.push("twitch_fm_synth_widget")
<ValleyBell> In OPL2 you can have different a custom instrument on every channel.
<cr1901_modern> right, but there's 15 custom instruments
<cr1901_modern> and 9 channels
<ValleyBell> OPLL has 1 custom instrument.
<cr1901_modern> err, 15 hardcoded* VRC7 instruments
<cr1901_modern> and 9 OPL2 channels*
<ValleyBell> and IIRC if you change that, it changes on all channels.
<cr1901_modern> so you can't store them all at once
<ValleyBell> You can play OPLL stuff on OPL2 mostly fine.
<ValleyBell> OPLL has a few small oddities though, so it won't 100% accurate.
<cr1901_modern> Basically, I'm wondering how Konami could've developed the VRC7 and simultaneously convinced Yamaha to make a custom fab run
<ValleyBell> The vibrato or tremolo rate (or depth?) is slightly different from what you can choose on OPL2.
<cr1901_modern> And how would Konami have chosen said instruments in the first place
<ValleyBell> And there is the weird behaviour that resets the modulator operator when the carrier reaches the "off" state. (according to MAME's emulation)
<ValleyBell> But I think you can still be >90% accurate.
<ValleyBell> Making an OPL2 instrument and porting it to OPLL is definitely possible.
<cr1901_modern> VRC7 is just such a weird chip... I mean I'm glad it exists, but it's like... how and why?
<cr1901_modern> OPLL music seems like it would be fun to make. It frees me from having to create my own instruments. Since I'm bad at it.
<cr1901_modern> ValleyBell: Didn't you do a Sonic 1 FM port for Master System?
<cr1901_modern> that used OPLL
<ValleyBell> yes, I did
<cr1901_modern> Did you use the custom instrument for anything if you remember?
<cr1901_modern> And if so, did you copy it from someone's patches or made your own :P?
<ValleyBell> nope, I went with the 15 predefined instruments
<cr1901_modern> Sky Base sounds really good w/ FM
<cr1901_modern> Not that I ever got past Bridge Zone
<ValleyBell> thanks
<Xyz_39809> the secret to good opll/vrc7 is to really use those default patches well
futarisIRCcloud has joined ##yamahasynths
<ValleyBell> I'm not good at creating FM patches, so I found it easier to just use the default ones.
<cr1901_modern> Takes time and patience. Patience I don't have.
<ValleyBell> Not having millions of choices makes it easier, IMO.
<cr1901_modern> Not to mention... I despise tracker UI
<ValleyBell> I never got into FM that much.
<cr1901_modern> and that's what ppl use mostly for FM
<Xyz_39809> jp mostly use mml for FM
<cr1901_modern> I mean western ppl :P
<ValleyBell> I made all of the FM version under Windows 95 with a patched SoundBlaster 16 FM MIDI driver.
<ValleyBell> *FM version songs
<cr1901_modern> ... how old is the patch ._.?
<ValleyBell> i.e. I patched OPLL instrument into it
<cr1901_modern> Is there even documentation on how VXD works?
<cr1901_modern> I've never seen it
<ValleyBell> no idea, but it uses the Fat Man instrument set
<ValleyBell> and I RE'd the format
<cr1901_modern> kode54 and mudlord... didn't know they were into FM
<ValleyBell> They aren't.
<ValleyBell> not that I know of
<cr1901_modern> Ahhh well, I talk to the former semi-frequently. May invite them anyway lol
<ValleyBell> portcls.sys, which has the FM MIDI driver on Windows 2000/XP, uses the same format, but I was unable to patch the file due to Windows' system file protection.
<ValleyBell> kode54 is in the #vgmrips IRC channel as well.
<cr1901_modern> Freenode and Mozilla are the only two servers I'm on. I have to allocate my mental bandwidth :/
<cr1901_modern> (Not bad choices IMHO :P. Freenode is the largest server IIRC and I have to idle in Mozilla for Rust stuff)
<ValleyBell> I have a total of 4 IRC channels in my "main" chat client (Pidgin). And one of them has activity about once each week.
<Lord_Nightmare> ValleyBell: 2 op fm patches are much easier to create than 4-op
<Lord_Nightmare> also you can just keep hitting the random button
<Lord_Nightmare> until something decent shows up
<cr1901_modern> Bahahahahaha
<ValleyBell> On my BananaPI I have WeeChat with, about 10 channels or so? But I only look at them once or twice a day.
<Lord_Nightmare> 4... irc channels?
<ValleyBell> (like now)
<cr1901_modern> I don't use a bouncer
<cr1901_modern> I just run everything off my laptop
<cr1901_modern> Also, obligatory: https://twitter.com/furrtek/status/911355806557310976 Obligatory
* Lord_Nightmare has about 105 channels on hexchat. it lags the whole machine when it connects to ZNC
<ValleyBell> lol
<cr1901_modern> Lord_Nightmare: The fuck? ._.
<Lord_Nightmare> on 14 or 15 networks
<ValleyBell> ... there is too much harmonica in that diagram
<cr1901_modern> Needs more farts
<cr1901_modern> especially the GEMS kind /shots fired
<cr1901_modern> Lord_Nightmare: Going by that distribution, the chances of getting something good at random are low
<Lord_Nightmare> that diagram doesn't seem to hold true for portafm stuff at least
<Lord_Nightmare> i'd say i mostly get variations on electric guitar, or 'tick' noises like slapping a drumstick against the rim of a drm
<Lord_Nightmare> for 4-op i can see it being much more true
<Lord_Nightmare> since you have the different connection possibilities
<cr1901_modern> Lord_Nightmare: I mean, we could experiment... modify libvgm to randomly replace register writes to the relevant registers with random parameters
<cr1901_modern> Or RE a music driver and randomly replace the patch set
<Lord_Nightmare> most of the 'meat' of a 2-op mod/car patch comes from the mult values and the feedback, you can set the adsr of both modulator and carrier to a curve and try with one or the other fading out first
<Lord_Nightmare> set the modulator to percussion(auto key off) or not
<Lord_Nightmare> and set the TL to 85%
<Lord_Nightmare> and then try every possibility, there's only like 10-12 bits which actually matter
<cr1901_modern> Where's the fun in constraining yourself to 4096 instruments :P?
<Lord_Nightmare> ignore the KSR bits, ignore the waveform bit (leave it at sine) etc
<cr1901_modern> Anyways you're probably right, but...
<cr1901_modern> I actually like ROM corruptions where the music driver is affected and loads the wrong values
<cr1901_modern> so random instruments would be hilarious for all the wrong reasons
<Lord_Nightmare> 4-op is astronomicaly more complex, since you have four MULT, feedback, and the 8(?) connection possibilities
<Lord_Nightmare> and different ADSR for each operator
<Lord_Nightmare> its WAY more powerful but much harder to sound decent from random generation
<cr1901_modern> Btw, does anyone know _exactly_ why the Sonic 3 File Select theme goes haywire after 40 minutes?
<Lord_Nightmare> you have to start really thinking about what the signal is in between each operator in the chain, an what the feedback signal is
<Lord_Nightmare> I'm hoping whenever plogue releases their 4-op synth product that they have some way to 'observe' the intermediate signals since it would help visually creating an instrument by hand
<Lord_Nightmare> its not really necessary for 2-op but for 4-op i think it is
<Lord_Nightmare> and god forbit 6-op. jeez
<cr1901_modern> I know of an OPM simulator that allows you to do that
<cr1901_modern> it'll show you what the output waveform looks like between stages
<cr1901_modern> I'll see if I can prepare a download link on Monday, remind me
<cr1901_modern> And I've been trying to convince plg_david to come in here for months, but he just doesn't come on IRC anymore :/
<Lord_Nightmare> I think he's super busy on stuff, personally. he's been largely away from twitter too, recently.
<ValleyBell> cr1901_modern: S3 File Select reduces the volume of one channel a bit with every loop due to a bug in the sequence.
<ValleyBell> And at some point it overflows from 0x7F to 0x80
<cr1901_modern> TL is 127 to 0, right?
<ValleyBell> I don't know if it's a 4op FM instrument or if it's maybe 2x 2op.
<cr1901_modern> so 0x80 would be equivalent to 0/max
<ValleyBell> 0x00 = maximum volume, 0x7F = almost silent
<Lord_Nightmare> that reminds me: did anyone ever reverse engineer (with the aim of properly patching) the music data in outrun arcade? I think all the songs screw up after one loop in various different way
<ValleyBell> Yes, someone reprogrammed it in C++.
<cr1901_modern> ValleyBell: Right, so incrementing to 0x80 means going back to max volume
<Lord_Nightmare> also in capcom's bionic commando arcade, the area 2: infiltration music screws up badly after one loop
<ValleyBell> cr1901: Yes
<cr1901_modern> For a very long time, Vapor Trail's music didn't play correctly in MAME while you were shooting
<Lord_Nightmare> and double dragon's music engine is just fucked to hell, even before it loops once
<cr1901_modern> many playthroughs on YouTube show this bug off
<ValleyBell> Lord_Nightmare: The guy was called "reassembler"
<Lord_Nightmare> first off, the drums in double dragon arcade cut out the first time that 'hurry up hand' appears because the sound effect engine forgets to turn drums back on
<ValleyBell> Anyway, I need to leave. See you later.
<Lord_Nightmare> so you don't normally hear the drums for the entire song
<Lord_Nightmare> past that point
<Lord_Nightmare> then the background/bass and harmony parts repeatedly get out of sync and then are manually re-synchronized by some person desparately hacking the sound data engine, and back out of sync
<Lord_Nightmare> throughout the song
<Lord_Nightmare> then of course they're out of sync by the end so everything gets even more wacky after each loop
<cr1901_modern> Lord_Nightmare: https://www.youtube.com/watch?v=zaXsqKHnzxg
<cr1901_modern> I've shown you this before
<cr1901_modern> it's one of my favorite bugs
<Lord_Nightmare> yes, you have
<Lord_Nightmare> that's a cool bug, but what should have happened is after 4 or 8 loops it should have reset
<Lord_Nightmare> the programmers didn't think of that
<cr1901_modern> I've done some _light_ RE of Sword of Vermilion in 2014
<cr1901_modern> I should see whether it's a genuine bug or complete oversight
<cr1901_modern> maybe try it out with ghidra
<cr1901_modern> genuine bug == "the command to restart from the beginning is bugged"
<cr1901_modern> oversight == "There is no command to reset the instruments"
kode54 has joined ##yamahasynths
<Lord_Nightmare> hi kode54
* cr1901_modern waves
<kode54> hello
<cr1901_modern> jeez, almost 40 ppl in here
<Lord_Nightmare> cr1901_modern: al kossow tweeted a poem that I interpreted that he's afraid to run ghidra
<Lord_Nightmare> IIRC there's already several bugs in it, including an exploit if a malicious project is loaded
<kode54> there's already been uncovered that the default configuration of Ghidra enables remote debugging on your system, reachable from anywhere on your network
<Lord_Nightmare> nsa hasn't pushed the fixes to github (nor the missing parts of the source) yet
<cr1901_modern> Lord_Nightmare: https://github.com/cr1901/m68kdis
<cr1901_modern> This is what I use for 68k RE
<cr1901_modern> it's smart enough to do code and data separation, but the output needs to be processed further
<Lord_Nightmare> kode54: iirc the script file for the remote debugging thing is busted so while it is a bug, the rest of the script doesn't work either so it never gets to open the debugger port?
<kode54> haha
<cr1901_modern> and I've not felt like writing a parser for the assembly output
<Lord_Nightmare> ghidra definitely needs work, i'm almost waiting for someone to ignore the nsa and just fork the thing, and merge in the bits of source that are included as .zip files in the executable distribution
<Lord_Nightmare> and somehow get it to build again
<cr1901_modern> Lord_Nightmare: Using the linked repo and some hand-crafted makefiles/sed scripts, I got about 20% of the way through getting an identical binary of SoV w/ this.
<Lord_Nightmare> that way they aren't beholden to the arcane NSA security audits before patches can be merged
<cr1901_modern> From assembly generated from m68kdis
<cr1901_modern> So it can be done, just need to actually, well... be patient :P
<Lord_Nightmare> i'd love to use ghidra, but i'm waiting for the rest of the source to drop so i can compile it locally
sixtysix has quit [Ping timeout: 246 seconds]
<Lord_Nightmare> i have a few 68k RE projects i'd like to start on at some point
<Lord_Nightmare> one of them being dectalk 2.0 (and 1.8)
<cr1901_modern> I've no intention of compiling it locally... not setting up a java compiler just for one project
<Lord_Nightmare> for the dtc-01
sixtysix has joined ##yamahasynths
<Lord_Nightmare> openjdk doesn't have oracle license infestation, so that shouldn't be an issue legally for installation
<Lord_Nightmare> i think larry ellison was pissed about openjdk since the 'genie was out of the bottle' by the time he'd drained the blood out of sun
<cr1901_modern> kode54: THanks for stopping by. It's 4am here, I want to go back to bed
<cr1901_modern> Night all
<kode54> night to you
<Lord_Nightmare> same, i should sleep
<Lord_Nightmare> now larry sits behind his desk, playing puppeteer with zfs and dtrace trying to bash linux to death
<Lord_Nightmare> "send in the ceo of largeGullibleCorp, I need a drink"
<TD-Linux> <kode54> there's already been uncovered that the default configuration of Ghidra enables remote debugging on your system, reachable from anywhere on your network <- yeah this is not true
<TD-Linux> and yeah it's an off by default option, and it doesn't work unless you patch the script when you turn it on.
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
protosphere has joined ##yamahasynths
futarisIRCcloud has joined ##yamahasynths
<ValleyBell> cr1901_modern: If you need a decent disasm of the SoV SMPS sound driver - ask me. I think I did one. (I'm not 100% sure about it though. I know I did all preSMPS Z80 and all preSMPS 68k Type 1 drivers, but I'm not sure about preSMPS 68k Type 2, which is what SoV uses.)
<cr1901_modern> wb protosphere :)
<cr1901_modern> ValleyBell: Yes, the SoV driver is mostly 68k code, but I found a tiny bit of z80 as well
<cr1901_modern> perhaps to play samples?
<cr1901_modern> IIRC only one or two games used the 68k to play samples
<cr1901_modern> what is "pre-smps"?
<cr1901_modern> Sleeping was a disaster
<superctr> SMPS is Sega of japan's "family" of mega drive sound drivers
<superctr> They all share the some code and the same command format (with minor differences)
<cr1901_modern> right, but what does the "pre" part mean?
<superctr> It means it "predates" the common SMPS version that was used in most games
<cr1901_modern> ahhh
<superctr> ValleyBell reverse engineered most of the SMPS drivers and wrote a program that plays the sound data locally on a PC
<cr1901_modern> FWIW, I was reverse engineering SoV to figure out how a certain string in the ROM is triggered
<superctr> Ah
<cr1901_modern> and whether it _can_ be triggered without hacking
<superctr> If the game mostly uses relative addressing it can be hard to find out that kind of stuff
<cr1901_modern> The explanation in this section I suspect is kinda off
<cr1901_modern> Yes, it is true that if you see the "If an error occurs, press button C." message, it is likely you'll see "Sorry, it didn't work. Please press the Reset button."
<cr1901_modern> But there's another string that says something along the lines of "Everything seems okay"
<superctr> Oh. I think i got that message to show up on an emulator if delete the sram and try to load a save
<cr1901_modern> yes
<cr1901_modern> I'm wondering how the game decides whether the sram is okay or not
<cr1901_modern> and how to trigger the "Everything seems okay" message
<superctr> ah
<superctr> try using the MAME debugger
<cr1901_modern> More fun to do static analysis :P
<superctr> it has a watchpoint (i guess blastem supports this too if you want to use GDB instead)
<superctr> so you just set a watchpoint spanning the sram area
<cr1901_modern> Anyways, what I suspect happens is SoV saves two copies of the save data, checks the first one, prints up the "press button C" message, then when you press "C" it checks the second copy
<cr1901_modern> and normally the second check fails and you get the "Sorry it didn't work" message
<cr1901_modern> Of course I can't prove that right now, but my curiosity was sufficiently piqued over this stupid scenario I wanted to take a look myself
<cr1901_modern> prints up the "press button C" message if the first check fails*
<cr1901_modern> Of course, SoV has an amazing soundtrack even if the game itself is hit or miss: https://www.youtube.com/watch?v=zSrsQ1549ag
<superctr> well it was Yu Suzuki's first attempt at an RPG
<cr1901_modern> I liked most of the game... the actual "Last City" was completely underwhelming map tho :P
<cr1901_modern> Oh and spoiler alert- there isn't a sword in the stone anywhere in the game... so Idk why they kept it on the title screen
<superctr> Unclear instructions to the graphics artist, probably
<superctr> They told him to draw a sword and he drew Excalibur
<cr1901_modern> Why does that sound scarily plausible?
<cr1901_modern> What actually happens: you're forced to give your current weapon to a shopkeeper once you reach a certain town. Once you get past a certain point of the game, if you return to him, he will have forged the Sword Of Vermilion from the sword you gave him
<cr1901_modern> I almost reset my game to get my old save back the first time I was forced to give my weapon up; the game traps you in a dialogue that you can't escape until you accept giving up your weapon
<superctr> ah, the classic "But thou must"
<cr1901_modern> indeed
<cr1901_modern> But the dialogue is in fact avoidable if you never talk to the shopkeeper
<cr1901_modern> I've never tried to see whether the game accounts for never talking to the shopkeeper
<superctr> it wouldn't let you progress
<cr1901_modern> Oh? Do you remember the in-game event that wouldn't trigger w/o going through "but thou must" scene?
<superctr> Not really, i think it's just something the developers must have thought of
<cr1901_modern> I know it is possible to start the game without a weapon, lose your money and be unable to progress (the priest will even break the 4th wall and say "perhaps you should clear your save").
<cr1901_modern> never triggered that dialogue myself, but the string is in the ROM
<cr1901_modern> "Fuyodol" is an interesting Romanization of "Theodor"/"Fyodor"
<cr1901_modern> Fyodor, Fedor (Russian: Фёдор) or Feodor is the Russian form of the name "Theodore". Fedora (Федора) is the feminine form.
<cr1901_modern> >Fedora (Федора) is the feminine form.
<cr1901_modern> Huh...
<cr1901_modern> whitequark: Any relation to the hat?
<cr1901_modern> Or just a humorous coincidence?
<whitequark> no idea
<cr1901_modern> >This word comes from a 19th-century play by Victorien Sardou titled "Fédora". The heroine, Fédora Romazov, wore a center-creased, soft brimmed hat. The name comes from the Russian Федо́ра (Fedóra),
<cr1901_modern> Hah...
sixtysix_ has joined ##yamahasynths
sixtysix has quit [Ping timeout: 250 seconds]
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
andlabs has joined ##yamahasynths
andlabs has quit [Ping timeout: 245 seconds]
andlabs has joined ##yamahasynths
sixtysix has joined ##yamahasynths
sixtysix_ has quit [Ping timeout: 246 seconds]
sixtysix_ has joined ##yamahasynths
sixtysix has quit [Ping timeout: 245 seconds]
rainwar has joined ##yamahasynths
nukeykt has quit [Quit: Page closed]
futarisIRCcloud has joined ##yamahasynths