Jump to content
IGNORED

4Anoid - Arkanoid conversion for the TI-99/4A


OLD CS1

Recommended Posts

Pretty darn good. The tune (High Score) unfortunately got stuck in my head. Gotta find something else to replace it.

 

The latest version of the tune (post #23) is too slow in my opinion (with my Classic99).

 

Here's something for reference. Don't know if it's reproduced from arcade hardware, in emulation, filtered or otherwise.

https://soundcloud.com/cosmiceffect/taito-game-music-10-arkanoid

Link to comment
Share on other sites

Pretty darn good. The tune (High Score) unfortunately got stuck in my head. Gotta find something else to replace it.

 

The latest version of the tune (post #23) is too slow in my opinion (with my Classic99).

 

Here's something for reference. Don't know if it's reproduced from arcade hardware, in emulation, filtered or otherwise.

https://soundcloud.com/cosmiceffect/taito-game-music-10-arkanoid

 

Thank you. Yeah, those sound like samples direct from the game, except that the effects heard after the DOH intro (really loud part) are not correct, and the game over sound and high score theme are in the wrong order -- though leeway is due for an original compilation.

 

In SLR these are nearly beat-for-beat. The XB environment seems to be playing it a little more slowly than expected. One thing I noticed when I played in Classic99 was I have to set the emulation acceleration to CPU Overdrive to get it to play almost entirely without lag. XB probably is not the best environment for my mock-ups: sprite motion is terrible (overlaid sprites suffer separation,) and sound lags, so I will be working on moving completely to assembly. It will make good practice.

 

Another thing I have figured out is the tone generators are not synchronized. This causes problems with some of the lists as they are because I have two generators producing the same tone, in theory to give a boost, but sometimes it is tin-canny or the sound does not produce at all (cancellation between generators.) Too bad that cannot be controlled as it would be useful to create the effect of duty cycles, etc. I am going back through and removing the redundant channels (this is where being able to delete a column or a section of a column would be useful in SLR.)

Link to comment
Share on other sites

The sound channels being desynchronized is something I've poked at for a while... I originally had hoped to use the separate channels for more accurate digitized sample playback, but right now I don't see how to do it. There's no way to reset the chip, and it powers up in a random state - so by definition you can count on the channels being all out of sync, and I can't see any way to resynchronize them.

 

I remember when I first saw that effect under emulation I thought I had a bug, and only after I saw it in hardware did I realize what was going on. ;)

Link to comment
Share on other sites

The sound channels being desynchronized is something I've poked at for a while... I originally had hoped to use the separate channels for more accurate digitized sample playback, but right now I don't see how to do it. There's no way to reset the chip, and it powers up in a random state - so by definition you can count on the channels being all out of sync, and I can't see any way to resynchronize them.

 

I remember when I first saw that effect under emulation I thought I had a bug, and only after I saw it in hardware did I realize what was going on. ;)

 

FWIW, both Classic99 and Sound List Ripper emulate that lack of synchronization. I had hoped it was an emulation issue but after the Faire I was able to put onto real hardware to hear the effects.

Link to comment
Share on other sites

 

FWIW, both Classic99 and Sound List Ripper emulate that lack of synchronization. I had hoped it was an emulation issue but after the Faire I was able to put onto real hardware to hear the effects.

 

Yeah, it's not even something you emulate, it's a side effect of the way that the chip works as a set of countdown timers. Even if you assume all counters start at the same time (a reasonable assumption), the chip is known to start in a random state. So each counter is cycling at a different rate, the waveforms are very quickly out of sync with each other.

 

Even if an emulator doesn't implement the random startup state (Classic99 used to, but it was annoying me. I don't recall if I removed it or just muted it ;) ), as soon as any one channel is programmed with a different rate from the others, that channel falls out of sync.

 

Once they are out of sync, even setting all channels to the same frequency won't bring them back, because the period is only reloaded when the previous period expires. So whatever offset they were at when they entered the new frequency, they would stay at. The only exception is the noise channel, which resets when the noise type changes. I still need to test if we can hit it hard enough to get a true flat line out of it (although I start to wonder if it's possible to tell with how noisy the 4A is on a scope ;) ).

 

I keep thinking that there must be some kind of statistical sequence you could use to get the channels back in sync with high degree of confidence, but that sort of thing is still over my head. ;)

Link to comment
Share on other sites

Yes, I recently downloaded the current version of Classic99 (QI 374), and most of the time it runs noticeably slower than the original TI-99, although I've set the CPU speed to 100%. The sounds, in consequence, are also slower. Don't know if this is what you experienced, though...

 

In SLR these are nearly beat-for-beat. The XB environment seems to be playing it a little more slowly than expected. One thing I noticed when I played in Classic99 was I have to set the emulation acceleration to CPU Overdrive to get it to play almost entirely without lag. XB probably is not the best environment for my mock-ups: sprite motion is terrible (overlaid sprites suffer separation,) and sound lags, so I will be working on moving completely to assembly. It will make good practice.
Link to comment
Share on other sites

The sound channels being desynchronized is something I've poked at for a while... I originally had hoped to use the separate channels for more accurate digitized sample playback, but right now I don't see how to do it. There's no way to reset the chip, and it powers up in a random state - so by definition you can count on the channels being all out of sync, and I can't see any way to resynchronize them.

 

I remember when I first saw that effect under emulation I thought I had a bug, and only after I saw it in hardware did I realize what was going on. ;)

 

This paper shows that in theory you could create more interesting wave forms from sums of square waves - if only you could control the phase.

square wave synthesizer.pdf

  • Like 1
Link to comment
Share on other sites

This paper shows that in theory you could create more interesting wave forms from sums of square waves - if only you could control the phase.

Oh yeah, I totally believe it! I did an experiment a few years ago where I hacked a Sega Genesis emulator to use square waves instead of sine waves for its FM Synth chip (I was curious whether some weird combination of TI sound chips could produce comparable music), and it actually sounded pretty good. :)

Link to comment
Share on other sites

OK, here's some feedback on the sound disk:

 

1. Start Level: the two lowest bass notes are off by one tone (should be one tone lower). And was it done intentionally that most of the bass line is one octave higher than the original version?

 

2. Bip: If that should be the tone that sounds if a grey block is hit (and not destroyed yet), it's a bit off... this one should be continuous instead of intermittent, but a second sound generator should play a tone a semi-tone higher at the same time as the first one sounds. (Hope this is clear enough)

 

3. Bop: Sounds about right... this, I suppose, is the sound when the ball hits the ship.

 

4. Tink: I don't know what this one should be. If this should be what I described on "Bip", one of the two tones is too low. In this case, "Bip" instead should be lower, by four semi-tones.

 

5. High Score: Sounds about right, but the bass line is an octave higher than in the arcade version.

 

6. Game Over: This tune is almost correct, but the 6th note should be a semi-tone higher (a semi-tone below the 7th one).

Link to comment
Share on other sites

The TI's sound generator can't go particularly low so that may be why the bass line is an octave higher. TI thought it was more important to be able to produce tones that are inaudible to the human ear! Probably something to do with the clock feeding the sound generator. Maybe they couldn't spare a flip-flop. :-)

Link to comment
Share on other sites

The trick is to use periodic noise for the deep bass notes. You set generator 3 about 4 octaves higher than the note you want and turn the volume off. Then you set the noise generator to produce periodic noise with a frequency that follows generator 3. The problem is that it's not exactly 4 octaves since the frequency of the periodic noise is that of generator 3 divided by 15 instead of 16 (which would have been exactly 4 octaves) so if you're going to do this with the Sound List Ripper you have to experiment until you get it right. Tursi's VGM player takes care of the 15/16 adjustment for you. Edit: This is how I made the very deep bass notes in the SabreWulf music.

Link to comment
Share on other sites

The arcade base-line is one octave lower than what we can squeeze from the TI. I think I noted that the AY8910 has a greater range than our 9919. Not a big deal as it still works. And with the F18A I can actually adjust that. Rasmus, is it possible to include the calculated effects of the F18A VR58 into Sound List Ripper? The best rule of thumb I can give is that >DF shifts everything down by two octaves (the tone values are all pretty much the same.)

 

The rest of the lists are being corrected and perfected as time goes on. I think my "bip" sound somehow got accidentally changed from its original tone value as it was exact to the sample. EDIT: Fixed; it was supposed to be F#4 and somehow I changed that.

Link to comment
Share on other sites

I finally had enough of this old Latitude D430. With a few exceptions it has been a great laptop, but with only 2GB and an IDE SSD, it is sorely out-classed. I have a new 12.5" i7 with 16GB RAM and a 256GB SSD on the way. Until it gets here and I can transfer all my stuff over I am not going to be working on Arkanoid. Should be back up and running next week.

  • Like 1
Link to comment
Share on other sites

2GB? 2GB?????

 

When I were a lad..... ;-)

I used to get up at 4 in the morning before I went to bed, crawled out of my rusty septic tank, ate a handful of hot gravel if I were lucky and worked 27 hours a day at mill where I would have to pay mill owner for the pleasure of working, when we got home-father would cut us in half with a bread knife, dance on our grave then thrash us to sleep with his belt.

 

You try telling the young uns that these days - and they won't believe you.

Link to comment
Share on other sites

I used to get up at 4 in the morning before I went to bed, crawled out of my rusty septic tank, ate a handful of hot gravel if I were lucky and worked 27 hours a day at mill where I would have to pay mill owner for the pleasure of working, when we got home-father would cut us in half with a bread knife, dance on our grave then thrash us to sleep with his belt.

 

You try telling the young uns that these days - and they won't believe you.

 

You kids had it so easy! I was not allowed to even be alive until I was 19! And up hill both ways!!

Link to comment
Share on other sites

Rasmus, is it possible to include the calculated effects of the F18A VR58 into Sound List Ripper? The best rule of thumb I can give is that >DF shifts everything down by two octaves (the tone values are all pretty much the same.)

 

I have implemented support for the GROM clock in js99er.net. You could use my unfinished XB F18A library to set the register.

 

But why not play the bass notes as periodic noise? Then you would be compatible with the old hardware.

Link to comment
Share on other sites

 

I have implemented support for the GROM clock in js99er.net. You could use my unfinished XB F18A library to set the register.

 

But why not play the bass notes as periodic noise? Then you would be compatible with the old hardware.

 

I played with that last night, actually, and did not like the results. I think the one octave difference is an acceptable compromise. If anyone complains I will just let them hear what the Apple ][ conversion sounds like ;)

 

In any case, I do plan on having an F18A mode, and I will definitely take advantage of the GROMCLK for sound. I just do not have a way of testing it without putting in on real hardware. No biggie. I am starting to get the hang of this assembly stuff outside of the LBLA I used to use.

 

I am still expecting a prototype around Christmas, even it is just a controllable mock-up.

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Okay, here we go. This disk will auto-load in XB, and has six sounds. This is made from the update version of Sound List Ripper. No big deal fixing things: I used an editor to search and replace values, set an AORG and assembled a cartridge binary, then loaded the resulting binary into SLR and voila. All fixed.

 

Currently has six sounds. There will be plenty more as time goes on but I have been working on other things right now.

 

After seeing and hearing your samples at the Chicago Faire, it took a day to get Arkanoid out of my head. heheheh Very nice! Looking forward to seeing more!

Link to comment
Share on other sites

heheheh Thanks. It was neat to see how many people's heads turned when I played them. A lot of people recognize the music. Events that night and subsequent may have me a little delayed. But I am still working on quite a few technical issues. Primarily now I am investigating acceleration for joystick control and alternate inputs. I found some good details on how the MSX Arkanoid paddle works and am pondering including support for it. While it may be a difficult item to come by, there are also schematics for building a compatible unit on-line.

Link to comment
Share on other sites

heheheh Thanks. It was neat to see how many people's heads turned when I played them. A lot of people recognize the music. Events that night and subsequent may have me a little delayed. But I am still working on quite a few technical issues. Primarily now I am investigating acceleration for joystick control and alternate inputs. I found some good details on how the MSX Arkanoid paddle works and am pondering including support for it. While it may be a difficult item to come by, there are also schematics for building a compatible unit on-line.

Indeed! Reminds me of the post I was going to look up for you. Check this one out related to input devices.

 

http://atariage.com/forums/topic/211870-ps2-mouse-on-ti99-;/page-2?do=findComment&comment=3040982

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

I am working on this more slowly than expected. Quite a few unexpected things going on in my life. I have done a few more sounds and implements to convert some of the effects so I do not have to labor over them by-ear. Graphics are coming along well, and I have a soft map of graphic layouts. I have put in place a "feature freeze" so that I can focus more on implementation than day-dreaming about what I am going to support. I was planning to keep a number of things for surprise and to keep myself out of the frying pan if some things do not make it in. But, what the hell.

 

There will be a special F18A mode with special graphics and sounds for its particular feature set. There will be a few Easter eggs in place which I hope everyone will enjoy. For input I am planning support for a serial mouse via the nanoPEB (if I cannot obtain one for myself I will need some testers,) joystick, Atari trackball in joystick mode (though I have investigated using the trackball mode,) and keyboard (meh.)

 

I am looking into using the proportional stick on the MBX. As well, I have the schematics for the paddle controller used with the MSX and will toy with that. No promises on either of these.

 

I am working to make this a cartridge release from the get-go. I will be replicating all of the original arcade levels, with minor changes accounting for the narrower screen of the TI. Thankfully, the MSX version is pretty faithful, so it makes a very good reference for levels. Other graphics are being hand-designed.

 

Of course, all of this means I am playing the game an awful lot on BlueMSX, MAME, and NES Emu, watching long-play videos, and driving everyone around me crazy as I tweak and adjust sounds and music.

 

On my list of milestones to reach over the next few weeks is an ML sound test rather than XB, marking an official move away from BASIC. Then I will do an ML motion graphics test, including Vaus mode-change animations. I still hope to have something playable to try out by the end of the year.

  • Like 2
Link to comment
Share on other sites

  • 3 weeks later...

Just a quick update on the goings of things. I have been spending this past week working up assembly language code, learning along the way (there is a bit of difference between the 6502 and TMS-9900.) I have converted more sounds and re-touched a few I have already done, as well as started converting some graphics into data. I still have a few things on my plate this weekend so I will see how things go, but there is some progress!

  • Like 2
Link to comment
Share on other sites

Just a quick update on the goings of things. I have been spending this past week working up assembly language code, learning along the way (there is a bit of difference between the 6502 and TMS-9900.) I have converted more sounds and re-touched a few I have already done, as well as started converting some graphics into data. I still have a few things on my plate this weekend so I will see how things go, but there is some progress!

 

BTW, you're only 4 hours away from me now... we ought to get together and meet either here, at your place, or somewhere in the middle like Gainsville. :)

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...