Jump to content
  • entries
    657
  • comments
    2,692
  • views
    898,715

The Story of Stay Frosty 2, Part 8


SpiceWare

1,866 views

Next were some discussions about the music. At this time batari was planning to write the music driver so I provided him with information on the 3 function stubs in place:

  • MusicInitLevel() is passed the level(0-31) that's about to start. I currently AND the level with 31 when I pass it so that replays of the first level will send 0 instead of 32. This can be changed if desired. It can also be passed 257 for the Splash Screen and 256 for the Title Screen.
  • MusicHealthChange() is called whenever Frosty's health changes. For the demo I have it increase the tempo as Frosty's health declines. If you go into a level and hit fire to throw a bunch of fireballs you'll hear the tempo speed up.
  • MusicUpdate() is called once per frame and sets the values in NOTE_0, NOTE_1, NOTE_2 and WAVEFORM_0, WAVEFORM_1, WAVEFORM_2. These are queue[] values that are used in the 6507 routines to update the DPC+ registers during the VSYNC. It also normally returns a 0, but needs to return a 1 when the track starts over. This is currently used by the splash screen so it knows it's time to show the main menu.

There's some test music in this build, you'll hear the tempo change as you shrink the snowman by throwing snowballs. The 6507 routines were not fully worked out, nor were the IRQ routines in place to update music while the ARM code ran, so the music has a lot of static/noise in it. It was distracting, so later builds have music turned off while we worked out the problems.

 

ROM

sf2_20101025.bin

 

Source

SF2 20101025.zip

 

I asked for the notes for the jingle to put on the splash screen. supercat replied with:

In C major:

 

Voice 1: G G G G F E D C (with the obvious octave break)

Voice 2: D D D D G A B C

 

Not sure what key it should be in--pick one that sounds good.

 

BTW, are you going to need me to help you with the Stay Frosty theme I did for SS? It's a nice tune and I think it would be good in SF2.

The BTW was great, because his Stay Frosty theme in Stella's Stocking was awesome :D

 

After catching up on the topic, Nathan posted this:

 

I've finally got some time now to start working on SF2, although I've been reading this thread as it's developed.

 

I'm really impressed with the changes you've made to the kernel, Darrell! I think it opens up some neat possibilities. icon_thumbsup.gif

 

I've got a few comments/questions/suggestions. Just for the sake of discussion:

  • Can Frosty fall off the bottom of the screen? Seems like this could make for some really challenging stages. Not having him always be able to just drop to the bottom level to exit. Working his way across precariously placed platforms. That sort of thing.
  • Can the snowball fall in more of an arc? It's flight path doesn't seem to fall steeply enough.
  • How about having different colored platforms, based on their temperature/properties? So blue ones would be ice (normal), white ones would be snow (still cold, but Frosty travels more slowly, although he wouldn't melt when on snow and could even rebuild himself with it), and then there'd be ones that would be just ground (gray, green, purple, etc.) and he'd melt a little faster on those, then glowing red hot platforms (like H.E.R.O.) where he'd melt really fast, and would have to either jump over them or speed across them really fast to survive.
  • Another thought on the platforms: melting ones. The platforms would get thinner, then eventually disappear. This would apply to snow and ice ones (and would accelerate if they're in a hot zone (mid-day sun), or near other hot platforms, or a lot of fireballs). Snow would melt faster than ice. Maybe the snow ones would get thinner as they rebuilt Frosty, too. So there could be a level where he'd have to melt himself somewhere, then go onto a snow platform and rebuild himself with it, melting through it, in order to drop down to the platform below.
  • For melting platforms, or platforms too short to reach, Frosty could throw snowballs to extend or rebuild them.
  • Maybe have black-ice platforms, that Frosty can't see until he hits one with a snowball. He could still land on one, but it would be so slick, he couldn't stop sliding until he was off it.
  • I'd like to see the day/night scenes balanced out more. So instead of one night scene, there'd be evening, twilight, dusk, night, dawn, morning, etc.
  • I think Frosty should start out sans nose, and have to pick it up (insert nose-picking joke here) somewhere in the game. The nose (which is magic, of course) would give him the ability to throw snowballs. So his abilities would grow as the complexity of the game levels increased.
  • Can you make a binary that still runs under Stella, even if it's not fully functional? Just something I can use to take screenshots from for designing levels and sprites.
  • Title-wise, I think it'd be fun to add a cheesy subtitle, like Stay Frosty 2: Stay Frostier (see also: Die Hard). As for the logo, I'd want to copy whatever Dave Exton came up with for the label, so anything in there now will just be a placeholder.
  • I like the idea of using graphics to select the controller. Not sure how you'd highlight it, although if I had a little more height we could simply put a line under the selected one. Or put a large colored block behind it, if that's possible. (Note the red button on the joystick - not sure if that's doable here.) This mockup uses both lines of text for the graphics.
    StayFrosty-2-title-screen1.jpg
  • It might be fun to animate the logo somehow. Maybe have the snowball zip across and splatter against the edge.
  • I'd love to have the Stay Frosty theme come back from Stella's Stocking! It would work for some of the in-game music as well.
  • I'd like to see more enemies besides fireballs. Not sure what, though. Any thoughts?
  • The blue ice chest - is that a sprite? What are the limitations of it? (Size, position, movement, colors, etc.)
  • (from early in the thread) Using ice as a tool/vehicle: Using large blocks to float across water, stacking blocks to climb, or pushing them to break through walls.

That's all I've got at the moment. icon_smile.gif

His reply established a number of elements in the game, such as the chasm, laval platforms, and carrot nose/snowball power-up.

 

I then added temperature to the world so the snowman and ice would melt, along with the ability to collect ice to rebuild the snowman's body. One major change over Stay Frosty was the snowman would now melted 1 scanline at a time instead of 2. The ice could also become smaller than before, which provided a greater variation in points and snowman restoration value.

 

In thinking about this bit of Nathan's reply, The blue ice chest - is that a sprite? What are the limitations of it? (Size, position, movement, colors, etc.), I realized there was time in the kernel to support an upper and lower color for the objects. I made the change and colored the ice chest based on one I own. I also added a two color carrot object. For the fireballs the upper color was just set to be the same as the lower color.

 

blogentry-3056-0-12664900-1421600450_thumb.jpg blogentry-3056-0-10789300-1421600422.jpg

 

After that I modified the object positioning routines so they'd move the objects when the wide levels shifted, then added snowman/object collision support. After play testing on my 2600, I popped it into my 7800 and it didn't work. batari did some research and figured out:

I think I see the problem. DPC+ without fast fetch looks like it will detect and compensate for evil 7800s, but I don't see any evil 7800 detection in the fast fetcher code. I'll look into fixing it in a bit.

which is how we came up with the evil 7800 term I previously mentioned. He fixed that problem, added COPY and FILL functionality to DPC+, and figured out that having an LDA # instruction appear in memory immediately after RTS instruction was bad:

894  4518		       60		      rts    895  4519    896  4519				   Padding    897  4519		       a9 05		      lda	#<AMPLITUDE

Thinking about Nathan's I'd like to see more enemies besides fireballs comment, I put forth:

Hmm - how about a bird that'll steal your carrot nose?

Nathan's first thought was of a penguin, so I replied I was thinking more along the lines of a flying bird and possibly adding the ability to shift the bird's Y location as he flew around. He then came back with:

 

We could bring back the Evil Bird from Reindeer Rescue.

bird.gif

We ended up going with that, but shifting the Y location never came to fruition.

 

liveinabin began work on the label:

Started work thinking up ideas for the label. I'll try and get the logo done first so you can get that in the game. I like the way that the words 'Frosty II' look on the screen above so I'll copy those, if that's OK Nathan. So only the word 'Stay' will change - most likely to how it looked in the original game:

stay.jpg

 

Just one concern (and it's barely that) - if we use the subtitle 'Stay Frostier', then that is going to inform the whole look of the cartridge. I mean, it'd look out of place if we didn't go the 'action movie' style route. And, while that might be slightly funny, I don't think it's very festive (this IS, after all, a Holiday greetings cart). I was going to go with the 1950s Americana Jolly-holidays style that we had on Stella's Stocking. You know, all Bing Crosby and Deck the Halls icon_smile.gif

Dave's work appears in a lot more homebrews than just the 2003 AtariAge Holiday Cart - do yourself a favor and go check out his BASIC Comic.

 

Playable ROM! Starts off with brief Rainbow screen, eventually replaced with the AtariAge splash screen.

Levels 1, 2 and 6 are playable. Level exit logic not yet in place so hit GAME SELECT when you've cleared the level.

 

ROM

sf2_20101031.bin

 

Source

SF2 20101031.zip

 

NOTE: While the ROMs work on the Harmony, they do not work in Stella.

 

Blog entry covers October 25 - 31, 2010

9 Comments


Recommended Comments

That there are. If SF3 happens, it won't be for the 2015 Holiday Cart.

When I get back to work on 2600 code it'll be to hash out a bus-stuffing bankswitch format with batari and gang. After that I'll reboot Draconian to use it. If it works as expected, the bus stuffing version of the Slick Kernel will add HMOVE shifting to all objects (currently only works for player objects) plus the ability to color and resize the ball object. The HMOVE change will allow the diagonal ship shots to actually be diagonal, plus the ability to rotate the station shots as seen in the arcade game. The ball changes will allow that object to be used to draw shots, for less flicker on something critical for the player to see, while still being used to draw the parallax starfield.

 

I also plan to reboot Frantic to use it, the asymmetrical playfield will add additional wrinkles to bus-stuffing. We have a couple ideas on how to handle that:

  • use STX PFx for the left side, STX PFx + $40 (TIA mirror address) for the right side
  • support alternating datastreams - the first STX PFx uses one datastream while the second STX PFx uses another.

Should be a fun project!

Link to comment

I think you have to explain the STX PFx stuff a bit more. As far as I get it, that's load and store in one go, right?

 

Also, would that then be the maximum theoretically possible? Or can you imagine hardware which would use e.g. lda #PFx instead and save another cycle? Could the instruction pointer be manipulated by the DPC (or some even more elaborated hardware)? Or the RAM? Is it thinkable to manipulate the TIA directly?

Link to comment

The X register must be preloaded with $FF for this to work.

  • 6507 requests a byte value for a specific address from the 4K cartridge address space
  • the ARM chip, in charge of returning values from that 4K, uses the current bank and specified address to look up which byte value it needs to give the 6507
  • The ARM puts that byte value on the data bus
  • If the BUS_STUFFING mode is OFF, that's all the ARM does. However, if BUS_STUFFING is ON and the value was $86 (the byte value of a STX ZeroPage command) it has the following additional steps to take:
  • When the 6507 requests the next byte value, the ARM retrieves it and puts it on the data bus
  • The ARM checks to see if that byte value is one of the TIA registers that we're doing bus stuffing on
  • if not, the ARM is done. If it's a TIA register, it has more work to do:
  • The ARM figures out which datastream is associates with the TIA register
  • The ARM retrieves the next value from that datastream
  • At the same time the 6507 puts the value of the X register on the data bus, the ARM puts the datastream value on the databus
  • Because of how the electronics work, the X register value of $FF from the 6507 gets Boolean Anded with the datastream value from the ARM. The ANDED value is stored in the TIA register.
Link to comment

Wasn't bus stuffing mentioned somewhere in reference to speech without the AtariVox? I have one but would love to have 2 player games with speech.

Link to comment

I don't know if it was, I do know speech can be done without it. It requires the AUDV0 register to be updated on every single scanline, same thing is done to generate 3 voice music in Pitfall 2 with the aid of its DPC chip. It can be done without hardware assist, as shown by Quadrun and Open Sesame back in the day or the hack Berzerk VE.

 

If you check the Frantic blog entries you'll find some that play back speech starting with the May 30, 2011 post.

Link to comment

Ok, I had seen that (for the record, I preferred the Berzerk sample). Maybe it was the thread on Wizard of Wor that mentioned bus stuffing. I'll have to see if I can search it out.

Link to comment

Nevermind. I found it in quite a few places, but not in reference to voice. It was in the WoW forum but I think it was you referencing what you referenced above. Maybe I was just hoping for 2 player WoW with voice. My son likes playing it with me.

Link to comment
Guest
Add a comment...

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