Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mr/nl_drlibling.cpp: Fixed the PARATA netlist and optimized performance #12180

Merged
merged 10 commits into from
May 3, 2024

Conversation

aovestdipaperino
Copy link
Contributor

@aovestdipaperino aovestdipaperino commented Mar 24, 2024

@cuavas
I finally found a way to have enough perf to emulate the PARATA netlist correctly.
After regenerating the static solvers, this one works quite well.
Possible improvement: put more sounds behind OPTIMIZE_FRONTIERS, I couldn't figure out how to do it.

With a little bit of effort, this can make the 0.264 release.

P.S. of course static solvers will need to be regenerated.

@aovestdipaperino
Copy link
Contributor Author

@cuavas gentle ping.

@aovestdipaperino
Copy link
Contributor Author

Adding a chart comparing the two shapes
output

@aovestdipaperino
Copy link
Contributor Author

Video proof that no pac-man sound comes out when players move (the video on youtube comes from a weird bootleg or different ROM)

HAPPY EASTER TO WHOEVER CELEBRATES IT.

@aovestdipaperino
Copy link
Contributor Author

Further improvements: put all netlists behind FRONTIER. This gives enough performance to play the parata audio and further improvements.
I left only the TOS circuitry (with a conditional flag) in the main netlist since a clicking noise can be heard when put into a separate Submodel behind FRONTIER.
Please take another look as this is very close to be done.

@aovestdipaperino
Copy link
Contributor Author

One more performance improvement, using an idea from @cuavas description of the second JFET (isolation purposes).
By using FRONTIER the second JFET is redundant and can be replaced by two DIODES in order to reduce the voltage. This returns an incredible 60% performance improvement when generating this sound while not altering the output in a distinguishable way.
Below in red the real circuit, in green FRONTIER + two diodes instead of the JFET.

image

@aovestdipaperino
Copy link
Contributor Author

@rb6502 gentle ping

@rb6502
Copy link
Contributor

rb6502 commented Apr 25, 2024

I'm not super qualified to review netlist code beyond the obvious style stuff. That all looks fine, and I like that you've got the graphs to show the improved accuracy, but I'm going to give @cuavas a day or two to recover from the release and take a look before I commit this.

I don't know if we've got any other drivers that could use some netlist work off the top of my head, but I'd love to see you do more in this area.

@aovestdipaperino
Copy link
Contributor Author

@rb6502 more than willing to help with other netlists needing work, but kind of hard for me if the feedback loop takes really long since I have the attention span of a gold fish.
I will ping you in a week if there is no movement, this could have made release .265, I would be happy to see it in .266 at least.

@aovestdipaperino
Copy link
Contributor Author

Hi @rb6502 pinging back.
Send me the other netlists my way when done

@rb6502 rb6502 changed the title Fixed the PARATA netlist in nl_drlibling.cpp mr/nl_drlibling.cpp: Fixed the PARATA netlist and optimized performance May 3, 2024
@rb6502 rb6502 merged commit 0fb47e8 into mamedev:master May 3, 2024
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants