MiSTer-devel / Arcade-SpaceInvaders_MiSTer

MiSTer FPGA version of the midway and taito board most known for Space Invaders
3 stars 11 forks source link

Space Invaders sound is close but not correct #3

Open dshadoff opened 3 years ago

dshadoff commented 3 years ago

The sounds do not seem correct... especially the 'shoot' sound (should be less shrill, and have more of a white noise-mixed type sound), and the background bass line (should be deeper and more of a sine wave than a square wave type sound).

wizdude commented 3 years ago

+1 but none of the audio is correct in this game. the shooting noise, the alien hit, the movement of the aliens, the UFO or player death are not the same as the original boards. albeit i understand that the exact audio does vary between PCB's, but this rendition is nothing like any of them.

for some examples, see here for some original PCB videos: Midway board: https://youtu.be/9oXoryvRQ-0?t=85 Taito board: https://youtu.be/H4spsw_sxKc?t=7

if i understand correctly, the PCB actually has dedicated sound circuitry for these effects and i know in emulated versions of this board (MAME etc) they simply replace all of this with a sampled audio file.

is there anything that can be done to provide authentic sound for this game?

many thanks for all the fine work you've put into this board to get it where it is today. cheers.

wizdude commented 3 years ago

going through some of the code in this repository, i can see support for handling sample files. are there some additional files I am missing for the space invaders audio to be correct?

wizdude commented 3 years ago

just checking in to see if there was anything that i could be doing re: sample files or similar to try and fix this issue? cheers.

tacertain commented 3 years ago

I have started looking into this. As far as I have been able to find, none of the sampled audio files I have found are correct (the MAME sounds are also incorrect). If somebody has correct samples, I'm happy to update them. From what I can tell looking only cursorily at the HDL, somebody made an attempt to model the audio generators from the game, so I don't know if there's just something simple wrong (like the clock frequency is wrong), if they modeled the wrong thing, or what. In addition, there is a source of random noise that is mixed in to some of the sounds which may have been missed.

The original SI boards have a dedicated analog circuit per sound based on LM3900 op amps. So direct modeling in FPGA digital logic is out. I am proceeding down two paths. One is to see if I can tweak the current implementation to deliver the correct sound. The second is to build the analog circuits in Easy EDA and try and generate wave files from them.

If anybody has an actual board and can do a wave capture from each of the circuits, that would be the easiest.

wizdude commented 3 years ago

do any of these help? https://www.classicgaming.cc/classics/space-invaders/sounds

even if they aren't perfect, they would be significantly better than the sounds being used now.

tacertain commented 3 years ago

I knew about those, but I don't believe they are representative of the sounds produced by the original hardware (looking at the hardware circuits and the wave forms that are in those files, I don't think the wave forms could possibly come from those circuits). So I don't know that it makes sense to add those into an official release. However, the core is already set up to use samples, so they could be added without any core changes - just adding them to the MRA file.

How comfortable are you with figuring out the format needed for rtl/Samples.vhd? If not, how comfortable are you with running an MRA that isn't in an official release?

wizdude commented 3 years ago

I'm totally ok with running an MRA that isn't in an official release.

i've been going through the repository and trying to work out how samples are actually implemented. i'm assuming by the reference to rtl/Samples.vhd that the samples themselves need to be raw and encoded with a specific bitrate and the like. i can't see any reference to any external files. i'm guessing they need to be then hex encoded and included into the MRA somehow.

i'm keen to implement some more realistic samples to try and make this game more authentic, so i'm happy to assist where i can.

tacertain commented 3 years ago

You are correct about how the samples work. You stick control information into ROM 5 and then all the data into ROM 6. I've got a little python script that runs through wave files and extracts the info you need. I'm just super busy right now, so I haven't had time to fiddle around with making sure that it actually works.

I'll try to upload what I have soon and we can see who gets the whole thing working first.

On Tue, Oct 12, 2021, 5:52 AM wizdude @.***> wrote:

I'm totally ok with running an MRA that isn't in an official release.

i've been going through the repository and trying to work out how samples are actually implemented. i'm assuming by the reference to rtl/Samples.vhd that the samples themselves need to be raw and encoded with a specific bitrate and the like. i can't see any reference to any external files. i'm guessing they need to be then hex encoded and included into the MRA somehow.

i'm keen to implement some more realistic samples to try and make this game more authentic, so i'm happy to assist where i can.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/MiSTer-devel/Arcade-SpaceInvaders_MiSTer/issues/3#issuecomment-940983870, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAMVRYKKBRLZZF7GZTZGUP3UGQVSLANCNFSM4VJSLBEA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

tacertain commented 3 years ago

I have pushed a start on the MRA here: https://github.com/tacertain/Arcade-SpaceInvaders_MiSTer/commit/9cf7faca42e1f0d018c76e5af97750c1ffc8ac5e

It doesn't work yet, but I don't have more time right now to debug. See the commit message.

wizdude commented 3 years ago

i thank you very much for starting work on this and your efforts are most appreciated.

tacertain commented 3 years ago

OK. I've got the sounds as close as I can get them. If you can find a sample for the "bonus base" sound, I would be happy to add it.

https://github.com/tacertain/Arcade-SpaceInvaders_MiSTer/blob/4a6f8ea73ef595554b54c133d0403ebec5d86dd9/releases/Space%20Invaders.mra

tacertain commented 3 years ago

At this point, all the other sounds are plausible, but the invader hit one is not.

wizdude commented 2 years ago

i never got the chance to thank you for this work you did before, so I apologise for that. thank you :-)

sometime during a (recent?) MiSTer update i suddenly noticed a new MRA file that appeared called "Space Invaders (Samples)" which is very similar to your MRA though not identical. is this the result of work you have committed back upstream?

cheers, wizdude.

tacertain commented 2 years ago

You're welcome! I did not try to upstream what I did, as when I discussed this issue on the discord I was told that since MiSTer was about preservation, unless I had sampled the original hardware, there was no way to know it was correct, so it would not be accepted. MacroFPGA may have sampled a real board.