Jump to content
  • entries
    106
  • comments
    796
  • views
    139,543

Squishy

Sign in to follow this  
vdub_bobby

1,263 views

THINGS ARE MOVING ALONG, though my self-imposed deadlines are looming and looking more and more unrealistic the closer they get! :ponder: :lol:

 

Unsurprisingly. I'll keep plugging away, though, and we'll see what happens.

 

The Latest!

blogentry-6060-1195575741_thumb.png

 

Big changes:

-Scrolling now works, though the kernel isn't completely tightened up yet.

-Randomly generating girders, monster colors and positions.

-Moving monsters.

-Player movement constrained. Now pressing up scrolls the screen, down does nothing.

-Matching up things to the original: starting location of player is correct. Brick falls at correct speed (and speeds up to fall at same relative rate when you are climbing). Monsters "fade in" when they appear. Scroll stops at correct place.

 

A few notes:

-I have to scroll two lines at a time, rather than one. It looks a little chunky compared to the original, but I think I'll have to live with it.

-Realized that the girder colors change during the game! They are hardcoded in the kernel now; have to see if I can change that.

-I think the falling brick is ok.

-_Fandal_ helpfully disassembled A800 Squish 'Em for me so I'm hoping to extract the sounds. I think the sound hardware is mostly the same, except with the BIG difference that the A800 has 8 bits of frequency resolution, compared to the 5 bits that the 2600 has. Are any of you experienced uncommented-asm readers able/willing to help me partially disassemble this?

-Still have 48 free bytes of RAM! :o I don't want to count my chickens before they hatch and all that, but this just may be my first project where RAM wasn't an issue. Would be nice...:)

Sign in to follow this  


8 Comments


Recommended Comments

IIRC the POKEY waveforms are the same as the TIA (although the numbering may be different), but the main difference is the 8 bit (16 bit in linked mode) frequency divisor and the additional 2 channels.

 

Hmm... what's the A8 POKEY's base frequency? That will affect how you map POKEY AUDFn to TIA AUDFn. (And it looks like there are a couple of POKEY options too.)

 

Hmm... It looks like I was wrong, the POKEY has a 17 bit LFSR while the TIA has only 4 & 5 bit (combined 9 bit) LFSRs. So there may need to be some tweaking there too. The registers are also slightly different with the volume & tone generators being merged into one and the addition of a separate control register.

 

So it looks like more of a reverse engineer & rewrite than a straight port. You need to figure out what POKEY register values the A8 code is generating and then determine "equivalent" TIA values.

Share this comment


Link to comment
So it looks like more of a reverse engineer & rewrite than a straight port. You need to figure out what POKEY register values the A8 code is generating and then determine "equivalent" TIA values.

 

That's what my SID2TIA tool internally does for C64 music. It's running SID files in a basic 6510+SID emulation. Then I'm just logging what's fed to the SID registers and with some formulas from the C64 handbook I'm calculating the current frequency. For these frequencies I pick the closest matches from the ones available on the TIA.

 

I could SID2TIA possibly enhance to work with SAP files as well some day, if I'd just find the time to add Pokey emulation into it :)

Share this comment


Link to comment

Looking good Bob! I'm confident you can finish this on time. I'm still amazed how much work you were able to do on Reindeer Rescue in such a short time.

Share this comment


Link to comment
IIRC the POKEY waveforms are the same as the TIA (although the numbering may be different), but the main difference is the 8 bit (16 bit in linked mode) frequency divisor and the additional 2 channels.

 

Hmm... what's the A8 POKEY's base frequency? That will affect how you map POKEY AUDFn to TIA AUDFn. (And it looks like there are a couple of POKEY options too.)

Dammit, I forgot about that. POKEY has a base freq of 1.79 MHz vs. 2600's 1.19 MHz.

 

EDIT: Wait, that's not right. I don't think - looks like the LFSR is clocked at 1.79 MHz but the frequency is clocked at either 64 Kz or 15 Kz. Or 1.79 MHz, but that doesn't really matter for our purposes.

Hmm... It looks like I was wrong, the POKEY has a 17 bit LFSR while the TIA has only 4 & 5 bit (combined 9 bit) LFSRs.

http://www.atariarchives.org/dere/chapt07.php

POKEY has a 17 bit as well as 4 & 5 bit and it uses them in different combinations.

So there may need to be some tweaking there too. The registers are also slightly different with the volume & tone generators being merged into one and the addition of a separate control register.

 

So it looks like more of a reverse engineer & rewrite than a straight port.

Yeah. I'm really hoping that, much like the programmer wrote SE to graphically match up with a 2600, it sonically matches up as well. We'll see. :) And, if you play the A8 game, you'll see that the sounds are really very very simple. ;)

Share this comment


Link to comment

Okay, looking at this more closely.

 

The A8 has six distortions available from a base freq of 64 Kz or 15 Kz:

A8a) divide by freq, 5 bit poly then 17 bit poly, divide by 2

A8b) divide by freq, 5 bit poly, divide by 2

A8c) divide by freq, 5 bit poly then 4 bit poly, divide by 2

A8d) divide by freq, 17 bit poly, divide by 2

A8e) divide by freq, divide by 2 (pure tones)

A8f) divide by freq, 4 bit poly, divide by 2

 

The 2600 has, from a base freq of 30 Kz

2600a) divide by freq, 4 bit poly

2600b) divide by freq, 4 bit poly, divide by 15

2600c) divide by freq, 5 bit poly then 4 bit poly

2600d) divide by freq, divide by 2 (pure tones)

2600e) divide by freq, divide by 31 (pure tones)

2600f) divide by freq, 5 bit poly, divide by 2

2600g) divide by freq, 9 bit poly

2600h) divide by freq, 5 bit poly

2600i) divide by freq, divide by 6 (pure tones)

2600j) divide by freq, divide by 93 (pure tones)

2600k) divide by freq, 5 bit poly, divide by 6

 

So, if we say that 30 Kz is close enough to treat as the same as 32 Kz, then

A8a == ?

A8b == 2600h, f, k

A8c == 2600c

A8d == ?

A8e == some combination of 2600d, 2600e, 2600i, 2600j for most frequencies, hopefully :)

A8f == 2600a, c

Share this comment


Link to comment
You might want to dig around http://asma.atari.org/

 

It turns out there's a Pokey music format (SAP) similar to SID.

Thanks, but the sounds in Squish 'Em are simple enough and few enough that the translation can be made by hand pretty easily. :)

Share this comment


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