Jump to content
IGNORED

New pacman for atari 2600


DINTAR816

Recommended Posts

I know I'm not saying anything others have not already said here, but it can't be said enough: this is simply astounding work. Every time I think somebody has maxed out the capabilities of the 2600, something new comes along to push the envelope further. The sounds, in particular, are stunning.

 

Funny enough, I never played the original 2600 cart much, as I am a very late adopter of the console. After playing this homebrew, I was thinking, "aw, come on, the original can't be that bad, right?" After a couple of games of that, I now believe the original cart is even worse than the critical drubbing it has received over the decades. If the original was all that could be done on the system it would be understandable--now seeing what could have been done makes the original conversion almost criminal.

  • Like 2
Link to comment
Share on other sites

In fact less pellets in the maze only increases the relative score potential of eating fruit and ghosts. I see no reason why pellets should be worth more than 10 points, which would only serve to devalue other point bonuses.

For me those two sentences are contradicting each other. If you increase the relative score for eating fruits and ghost, this effectively devalues the score for eating pellets. To compensate here, you give more points for each pellets. Overall the score balance stays the same then.

 

Also especially beginners are not very able to score a lot of those bonus points. So for those the pellets are way more important than for the experienced players. Increasing the score for each (of the fewer) pellets will encourage them.

 

Nobody is trying to compare scores across multiple Pacman ports.

Why not. If one is trying to create a perfect port, this would be like the holy grail.

 

BTW: Maybe we should move this discussion to a separate thread.

Link to comment
Share on other sites

 

That is precisely the document that I used to make this game. :D

 

This is the main tool I use:
I made this rom with gasega68k to make sounds in 2600 more easily, using audacity to "see" the sounds and try to replicate them.
Here are some examples, maybe you recognize these sounds:

 

Very cool! :) Is gasega68k a 68000 assembler that also handles 6502 asm?

Link to comment
Share on other sites

Damn, didn't know a 2600 could do the sound that close. About the only thing that didn't sound spot-on was the death sound.

Apart from slowing it down a little, I think the only thing that can really be done with that is doubling it an octave down, as the arcade one does. I don't know whether any of the available distortion patterns would allow this and still be in tune.

 

Can't remember if I've posted to this thread before now, but if not.... congratulations, dintar816, you've blown all our minds! Think I'm overdue to find a new avatar pic at this point ;)

Link to comment
Share on other sites

I believe the TIA is more versatile than previously thought. The 7800 homebrews by Pacman Plus sound extremely spot on, but I wonder if that has more to do with the addutional CPU cycles available for writing registers. It's all well and good if someone writes a stunning chip tune that blanks the display devoting all resources to bus-stuffing the TIA. I'm not talking specifically of wav sound either. One example would be "tuning" the TIA by adjusting the pitch multiple times every frame to create intermodal frequencies it cannot produce normally. Some NES tracks modulate the frequency on every other frame to produce the illusion of chords and I assume similar techniques could be employed on the TIA at the cost of wasting precious CPU cycles.

 

Another thought is that most programmers are not musicians and visa-versa. Anybody, programmer or not, can draw sprite art on some graph paper, which is then easily converted it into bits. I believe it takes a special skillset to code chip tunes. :music:

Link to comment
Share on other sites

That's definitively a very nice version! The sounds are very good, however I think some of them don't sound as good as they could be:

 

The "Waka Waka" seems a bit off to me in that it's played with a straight rectangle wave. Maybe you should try one of the waveforms that have the "sharper" duty cycle (as the bass notes on the title music has them), if it's possible to play it at roughly the frequency in the arcade.

 

The dying sound still sounds off to me... it's too high and "wobbles" a bit too fast. I think it should be a bit longer as well. I know especially this one seems to be hard to replicate since nearly no port really got it quite right.

Link to comment
Share on other sites

Some NES tracks modulate the frequency on every other frame to produce the illusion of chords and I assume similar techniques could be employed on the TIA at the cost of wasting precious CPU cycles.

 

Another thought is that most programmers are not musicians and visa-versa. Anybody, programmer or not, can draw sprite art on some graph paper, which is then easily converted it into bits. I believe it takes a special skillset to code chip tunes. :music:

I used that NES trick on my VCS "Boing" demo (in the easter egg), but then, I'm one of those programmers who's also a musician. It didn't really take any extra cycles compared to any other music routine (I just had two tables, one for the lower notes in the chord, one for the higher, and used the LSB of the frame counter to choose the table), but it did double the ROM space required for the music data. That wasn't a problem, since my demo didn't do a whole lot, but in a game like this, it could be.

 

The TIA's set of distortions make it tough because most of the notes are sharp or flat. To create in-tune intermodal frequencies by strobing AUDC[01] repeatedly during the frame might take more than the 4 or 5 evenly spaced writes most modern homebrews' kernels will allow (e.g. sacrifice a scan line where the playfield is symmetrical because there are no dots) in order to produce something that sounds like a note and not a glitchy minor second. If it does work, the resulting tone will likely sound pretty different than pure tones using the same distortion.

 

But hey, Parker Bros. managed to get the Odyssey2 to play the Frogger theme song, so it's probably possible.

 

I love that sound testing tool, and wish I'd had something like it 15 years ago when I still had a TV my VCS would play nicely with.

Link to comment
Share on other sites

To create in-tune intermodal frequencies by strobing AUDC[01] repeatedly during the frame might take more than the 4 or 5 evenly spaced writes most modern homebrews' kernels will allow (e.g. sacrifice a scan line where the playfield is symmetrical because there are no dots) in order to produce something that sounds like a note and not a glitchy minor second. If it does work, the resulting tone will likely sound pretty different than pure tones using the same distortion.

I am doing that (with AUDV0) for the siren in Star Castle Arcade. IMO the result doesn't sound too bad, even though I have to use two different values for AUDC0 to get the required frequency range.

Edited by Thomas Jentzsch
  • Like 1
Link to comment
Share on other sites

OK... so I was curious and analyzed the dying sound of the original version a bit closer, since this actually is a "signature" tone of Pac-Man which you often hear referencing the 80's in general...

 

The dying sound consists of two parts... so far it's done right. The first part is the slowly descending sound. This, in the original, is divided into 6 stages, each of which should last 12 frames if I'm counting correctly... and no, in the original arcade version the sound does NOT get updated more than once per frame. Each of these 12-frame stages starts at an upper note in the first frame, then goes down to a lower note which is reached by the 6th frame, then goes up again at the same speed to reach a note that's a bit higher than the first one at the 12th frame. Then the next stage begins in the same form with a note that's a bit lower in pitch. The 6th stage ends a bit prematurely, it only counts down one step from its lowest note, which is about 377 Hz. The highest note played (at the end of the 1st stage) is about 774 Hz. Keep in mind that on Namco's sound chip, the frequency is calculated by the values put in multiplied with a certain base frequency, so as the values get lower, the steps relatively to each other (in the octave) get bigger, but the steps written out in Hertz stay the same, which is exactly like the SID in the C-64 does it, but unlike most other sound chips including the TIA which have the frequency being a fixed frequency DIVIDED by the value put in.

 

So now comes the 2nd part. The 2nd part, I'll call it "Woop Woop", lasts for 24 frames in total, with each "Woop" being 12 frames. The first frame has a frequency of 0 Hz (silence), and the 12th frame of each "Woop" has a frequency of about 2065 Hz. Between that, the frequency goes up about linearly, so it's 0 - 198 - 395 - ... - 1875 - 2065 (I didn't check the values in between, but they're probably linearly rising). I know that this part is probably impossible to reproduce on the TIA, but at least the fact that each "Woop" lasts for 12 frames could be left intact. You could also try ramping up the volume from zero to max. on each "woop", which could make it sound more like the original even if you can't reach the lowest frequencies.

 

By the way, the "Waka Waka" sound, from the length and the frequencies, sounds quite right (at 5 frames length like in the original), only the waveform is a bit off.

Link to comment
Share on other sites

Even with the small nuances others are pointing out in this thread, I think this version is pretty amazing. The original 4k version is pretty cool, and I've played it quite a bit, but this one blows even that version away, IMHO. It will be even more superior if the cut scenes with music are added at some future date. Great programming effort on this, and thanks to DINTAR 816 for letting everyone check it out!

Edited by 24Fanatic365
Link to comment
Share on other sites

OK... so I was curious and analyzed the dying sound of the original version a bit closer, since this actually is a "signature" tone of Pac-Man which you often hear referencing the 80's in general...

 

The dying sound consists of two parts... so far it's done right. The first part is the slowly descending sound. This, in the original, is divided into 6 stages, each of which should last 12 frames if I'm counting correctly... and no, in the original arcade version the sound does NOT get updated more than once per frame. Each of these 12-frame stages starts at an upper note in the first frame, then goes down to a lower note which is reached by the 6th frame, then goes up again at the same speed to reach a note that's a bit higher than the first one at the 12th frame. Then the next stage begins in the same form with a note that's a bit lower in pitch. The 6th stage ends a bit prematurely, it only counts down one step from its lowest note, which is about 377 Hz. The highest note played (at the end of the 1st stage) is about 774 Hz. Keep in mind that on Namco's sound chip, the frequency is calculated by the values put in multiplied with a certain base frequency, so as the values get lower, the steps relatively to each other (in the octave) get bigger, but the steps written out in Hertz stay the same, which is exactly like the SID in the C-64 does it, but unlike most other sound chips including the TIA which have the frequency being a fixed frequency DIVIDED by the value put in.

 

So now comes the 2nd part. The 2nd part, I'll call it "Woop Woop", lasts for 24 frames in total, with each "Woop" being 12 frames. The first frame has a frequency of 0 Hz (silence), and the 12th frame of each "Woop" has a frequency of about 2065 Hz. Between that, the frequency goes up about linearly, so it's 0 - 198 - 395 - ... - 1875 - 2065 (I didn't check the values in between, but they're probably linearly rising). I know that this part is probably impossible to reproduce on the TIA, but at least the fact that each "Woop" lasts for 12 frames could be left intact. You could also try ramping up the volume from zero to max. on each "woop", which could make it sound more like the original even if you can't reach the lowest frequencies.

 

By the way, the "Waka Waka" sound, from the length and the frequencies, sounds quite right (at 5 frames length like in the original), only the waveform is a bit off.

 

That's some good info. I've been playing around with the Music and Sound Editor to see what I can do and so far my Pac-Man intro tune seems to match up with the speed and length of the original notes, but I still need to shape the sounds some more.

Link to comment
Share on other sites

At some point all this talk of waveforms from the TIA not being exactly shaped like the arcade waveform: people need to remember that this is the TIA we are talking about. I loaded the game on my Harmony cart last night and played a few rounds. IMO the audio is excellent. I thought my 4k cart sounded good, but this new version blows the old away. The death animation sounds nearly perfect, or at least as good as it could concievably get on the TIA. Kudos to DINTAR816for making this! :D

 

My only hope is that you are able to expand the ROM to 8k and add in the cut-scenes and title screen. I remember the 4k guy being reluctant to expand the game, but now we have a new condender! :thumbsup:

  • Like 1
Link to comment
Share on other sites

Yes... sorry, I could have done that, but I didn't think of saving the states like this when I input the data, and now I've already closed Stella, and the screenshots are all I have myself. But I'll write up the data for you...

.byte $14, $04, $0E
.byte $15, $04, $0E
.byte $16, $04, $0E
.byte $17, $04, $0E
.byte $18, $04, $0E
.byte $19, $04, $0E
.byte $18, $04, $0E
.byte $17, $04, $0E
.byte $16, $04, $0E
.byte $15, $04, $0E
.byte $14, $04, $0E
.byte $13, $04, $0E
.byte $16, $04, $0E
.byte $17, $04, $0E
.byte $18, $04, $0E
.byte $19, $04, $0E
.byte $1A, $04, $0E
.byte $1B, $04, $0E
.byte $1A, $04, $0E
.byte $19, $04, $0E
.byte $18, $04, $0E
.byte $17, $04, $0E
.byte $16, $04, $0E
.byte $15, $04, $0E
.byte $18, $04, $0E
.byte $19, $04, $0E
.byte $1A, $04, $0E
.byte $1B, $04, $0E
.byte $1C, $04, $0E
.byte $1D, $04, $0E
.byte $1C, $04, $0E
.byte $1B, $04, $0E
.byte $1A, $04, $0E
.byte $19, $04, $0E
.byte $18, $04, $0E
.byte $17, $04, $0E
.byte $1A, $04, $0E
.byte $1B, $04, $0E
.byte $1C, $04, $0E
.byte $1D, $04, $0E
.byte $1E, $04, $0E
.byte $1F, $04, $0E
.byte $1E, $04, $0E
.byte $1D, $04, $0E
.byte $1C, $04, $0E
.byte $1B, $04, $0E
.byte $1A, $04, $0E
.byte $19, $04, $0E
.byte $1C, $04, $0E
.byte $1D, $04, $0E
.byte $1E, $04, $0E
.byte $1F, $04, $0E
.byte $0A, $0C, $0E
.byte $0B, $0C, $0E
.byte $0A, $0C, $0E
.byte $1F, $04, $0E
.byte $1E, $04, $0E
.byte $1D, $04, $0E
.byte $1C, $04, $0E
.byte $1B, $04, $0E
.byte $1E, $04, $0E
.byte $1F, $04, $0E
.byte $0A, $0C, $0E
.byte $0B, $0C, $0E
.byte $0C, $0C, $0E
.byte $0D, $0C, $0E
.byte $0C, $0C, $0E
.byte $00, $00, $00
.byte $1A, $0C, $0E
.byte $0C, $0C, $0E
.byte $1A, $04, $0E
.byte $15, $04, $0E
.byte $11, $04, $0E
.byte $0E, $04, $0E
.byte $0C, $04, $0E
.byte $0A, $04, $0E
.byte $09, $04, $0E
.byte $08, $04, $0E
.byte $07, $04, $0E
.byte $00, $00, $00
.byte $1A, $0C, $0E
.byte $0C, $0C, $0E
.byte $1A, $04, $0E
.byte $15, $04, $0E
.byte $11, $04, $0E
.byte $0E, $04, $0E
.byte $0C, $04, $0E
.byte $0A, $04, $0E
.byte $09, $04, $0E
.byte $08, $04, $0E
.byte $07, $04, $0E

I hope this is good enough...

Link to comment
Share on other sites

At some point all this talk of waveforms from the TIA not being exactly shaped like the arcade waveform: people need to remember that this is the TIA we are talking about.

Well, to be fair, people said the same about the VCS in general when Pac-Man was released. "What did you expect? It's an Atari." My Odyssey2 actually got a bit of respect when my friends were all playing "donk, donk, donk" and we had K.C. Munchkin. That's why people have gotten progressively more excited with each new and improved take on Pac-Man (and other iconic games demade on the VCS), each bit of proof that the ol' dog has more tricks left in her.

 

The exactitude isn't to say this isn't already amazing. It's to say "wow, we all might be able to help him make the Pac-Man demake to end all Pac-Man demakes". Every detail that makes it more like the arcade (and more playable than the Atari 5200 version we all wanted until we tried those joysticks) just makes it more amazing.

  • Like 1
Link to comment
Share on other sites

Honestly I'm still shellshocked to the quality of this homebrew even as it stands today.. especially in regards to the sounds (which seem more like it should be coming from the 8-bit ports).. So it's a little funny to me that this being the 2600, that the thought could even come to someone that the sounds might be improved. :lol: But hey, if it can. :)

 

I have to admit though from the original video I was tempted to think it might have been a hoax. I mean I thought we pretty much hit the ceiling of what the VCS was capable of when it came to "Pac-Man" but obviously not. And that's awesome. :P

Edited by NE146
  • Like 2
Link to comment
Share on other sites

I have to admit though from the original video I was tempted to think it might have been a hoax. I mean I thought we pretty much hit the ceiling of what the VCS was capable of when it came to "Pac-Man" but obviously not. And that's awesome. :P

Same here. My initial thought was, "No way!" given it's a 4K game and isn't using any additional hardware to generate sound. :)

  • Like 1
Link to comment
Share on other sites

OK, now I've done even more and tried to find a better tune myself. Try this set of data for the dying sound (you have to chain the data from all three screenshots together, except for the 0's at the end of the 3rd one):

 

attachicon.gifPacman_dying_1.PNG

attachicon.gifPacman_dying_2.PNG

attachicon.gifPacman_dying_3.PNG

That sounds good, but at least about 91 bytes (32 + 32 + 27) would be required, using the 3 high bits for "AUDCx". :(
At first I tried to do the "dying sound" more like original, but not getting the way, because that sound (the first part) is made with a routine to make various sounds such as sirens and other sounds (to save space ROM).
The final part of the sound I had done before, was very similar to what did you do, but I could not include it, I had to cut it to 8 frames to play this 2 times. I'll try to do better by changing a little the sound code, I have an idea of ​​how to do it without increasing space rom (I think). :)
I think I'll have space to put at least the first intermission, I've been doing the first tests and has not occupied much space in rom as I thought at first. :)
Link to comment
Share on other sites

That sounds good, but at least about 91 bytes (32 + 32 + 27) would be required, using the 3 high bits for "AUDCx". :(

Well, I have an idea how it could be compressed... there are 91 lines, but not that many different ones. So there could be a table of all the 3-byte-sets used (maybe still compressed to 2 bytes as you say) which could be indexed by a one-byte table which gives the sound bytes to be used in every frame. However, the code for playing it back would be slightly more complicated. Or are you saying that you're already using one byte per frame only?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...