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
<KillaMaaki2>
Well I think I might be an absolute moron. Only just now realized, in the process of trying to implement UART terminal debugging, that I was trying to pack my program into a 4KB ROM.... and it was over 4KB. Quartus was just truncating the rest. No freaking wonder it was acting so strange.
<Lord_Nightmare>
wtf, quartus should throw an error. the hell.
<Lord_Nightmare>
bug in quartus
<ZirconiumX>
Hah. Hahahaha.
<ZirconiumX>
It's Quartus: the whole thing is a bug-ridden piece of shit
<ZirconiumX>
Honestly I'm surprised KillaMaaki2 has the patience to try ROM init at all, given how pathologically slow it is
<KillaMaaki2>
Because that was the first way I found that worked and I never bothered to look anything else up haha
<ZirconiumX>
You ever looked at .mif files?
<ZirconiumX>
I don't know how well *they* perform however
<ZirconiumX>
But honestly I really don't understand how Quartus does so badly here
<KillaMaaki2>
Part of my problem I think is that I'm doing it a bit stupidly here
<ZirconiumX>
That's not an excuse: programs should be fairly resistant to people doing dumb things
<ZirconiumX>
And Quartus is *really not*
<KillaMaaki2>
I'm reading the file in with a "readmemb" directive, and I pass the filepath in as a parameter to the ROM module when I instantiate it. It works just fine, except that readmemb appears to not check the destination memory size and also seems to require me to recompile everything from scratch.
<ZirconiumX>
As I said: have you researched .mif files?
<KillaMaaki2>
I should probably check into just using a HEX or MIF file. I believe I can change my current makefile to produce a HEX rather than a binary file and just see if I can plug that in
<ZirconiumX>
You can probably write a script to dump it in MIF: it's essentially just a hex dump but with some level of metadata
<KillaMaaki2>
Will take a look. Smart compile actually does seem to be available in my version of Quartus, so if I could find a way to just switch over to a MIF file that I tell it to update without recompiling the whole damn thing, that would be so much better for iteration
<ZirconiumX>
I have a suspicion here that when Quartus is trying to infer a ROM - assuming you haven't just straight up instantiated an altsyncram - it's reading your binary, writing it as MIF, then reading it as MIF.
<KillaMaaki2>
I believe you are 100% correct.
<ZirconiumX>
Since I know that e.g. `initial begin` blocks up initialise memories do that
<ZirconiumX>
And so naturally it is pathologically slow
<ZirconiumX>
I kinda want to see how synth_intel_alm does on your code; gotta get that Quartus compatibility somehow.
<ZirconiumX>
Or at least remove obvious sources of *in*compatibility
<KillaMaaki2>
The biggest problem here is that if I enable smart compile, it won't detect that the source file being read w/ readmemb has changed and so builds with a stale MIF. If I disable smart compile, it recompiles *absolutely everything*.
<ZirconiumX>
I definitely think you need to produce a MIF then.
<KillaMaaki2>
Yhup
* ZirconiumX
needs to get something usable working with nextpnr.
<KillaMaaki2>
OK well music engine doesn't blow up anymore and seems to be getting correct command data now. Unfortunately I'm getting ear splittingly loud white noise (with a sort of low tone in the background?) out of the YM2151 now. Maybe need to double check my register assignment code, but progress? I guess?
brezza_dsa has joined ##yamahasynths
brezza_dsa has quit [Client Quit]
<ValleyBell>
Well, "some sound" is already better than "no sound".
superctr_ has quit [Read error: Connection reset by peer]