Jump to content
IGNORED

SUB HUNTER on C64, now ported to CPC... When A8 version?


José Pereira

Recommended Posts

well actually I only need to know the height of each zone and it's 8.8 speed in hscroll values, so actually the pixel step per frame.

 

I'd just do it like an initial dx, and a per scanline delta change then just use an 8.8 fixed point number:

dx_curr += dx

x += dx_curr

line_xpos = x;

 

And then it really quite flexible.. Or are you thinking more Mode7 kind of thing ;)

Link to comment
Share on other sites

Especially the music in this video sounds awesome. I'm a bit surprised. Can I be sure this is really SID? Or, maybe 1 or 2 digivoices are used here? Or 200 Hz updates? Or stereo SID?

No digivoices, stereo or 200 Hz update used. It's from this demo: Centric Preview

OK, thanks for the link.

 

I tested it with the Vice emulator. I turned SID-filters off, and made a small recording of the SID instrument playing in the opening of the tune.

 

I wonder how SID does this type of waveform:

- Did they use a mixed waveform? F.e. noise&pulse or noise@triangle or pulse@triangle?

- Did they use some kind of 2-voice effect? F.e. one syncs the other

- Possibly a combination of the first two options?

 

 

Oh, here's the recording, by the way:

Link to comment
Share on other sites

$51 = Pulse + Triangle.

 

Sounds very much like it - try this:

10 SI=54272:POKE SI+24,15:REM Volume 15
20 POKE SI+1,0:POKE SI+2,20:REM Freq
30 POKE SI+5,17:POKE SI+6,240:REM ADSR
50 POKE SI+2,128:POKE SI+3,9:REM PulseWidth
60 POKE SI+4,81:REM Start sound

 

Try different pulse widths, especially high nybble (SI+3)

Link to comment
Share on other sites

re: your example

 

again offtopic... but shows nicely imho why c64 guys switched fast to assembler... ;) only POKEs... so not a big step towards LDA/STA.

Even bigger the reason for A8 guys, as proper filter and polycounter reset/offset is only possible with Machine Language and 100% exact timing. Not possible in basic ;)

Link to comment
Share on other sites

The sound varies almost like filtered sound on A8.

 

Strange, I really thought you'd get a non-altering waveform given that both the pulse/triangle are the same frequency, maybe there's some fractional value that comes into play and alters it.

 

Although I did this in emulation.

Link to comment
Share on other sites

The sound varies almost like filtered sound on A8.

 

At least with POKEY we found a solution to make it stable.

 

Strange, I really thought you'd get a non-altering waveform given that both the pulse/triangle are the same frequency, maybe there's some fractional value that comes into play and alters it.

 

Although I did this in emulation.

 

LOL

 

So the "enhanced 8580" SID does what POKEY does from the beginning.... this pulse/triangle combinations?

Well, SID still has better deeper notes and sounds. But 200Hz would offer some software manipulations on the generators to gain some deeper notes with POKEY though ;)

Link to comment
Share on other sites

Strange, I really thought you'd get a non-altering waveform given that both the pulse/triangle are the same frequency, maybe there's some fractional value that comes into play and alters it.

 

Although I did this in emulation.

LOL

 

So the "enhanced 8580" SID does what POKEY does from the beginning.... this pulse/triangle combinations?

Well, SID still has better deeper notes and sounds. But 200Hz would offer some software manipulations on the generators to gain some deeper notes with POKEY though ;)

:?:

 

Well, choosing the pulse & triangle settings on Pokey in fact gives us the sawtooth waveform ;). That's not what we have here, in the test recording I posted. To be more serious, I'm afraid the two of you are talking about two different things.

Link to comment
Share on other sites

Strange, I really thought you'd get a non-altering waveform given that both the pulse/triangle are the same frequency, maybe there's some fractional value that comes into play and alters it.

I also wondered about this. So, maybe the sync feature is still used. Thus, there's a 2nd channel in play, which has its own pitch.

Link to comment
Share on other sites

:?:

Anyone thinking doing the Scrollings?

 

 

I possible may have the Screens Gfxs. and Sprites already and waiting for!...

;)

And cycle possible, but different colours than backgrounds... and better looking with A8 greater Pallete :P

I may start a kind of a Diary based/like the C64 version making in the next days.

 

José Pereira.

Link to comment
Share on other sites

Strange, I really thought you'd get a non-altering waveform given that both the pulse/triangle are the same frequency, maybe there's some fractional value that comes into play and alters it.

I also wondered about this. So, maybe the sync feature is still used. Thus, there's a 2nd channel in play, which has its own pitch.

 

Not in this case - WYSIWYG with that example. No ineractive voice features selected at all. Maybe it's just some emulation error, it should really be tried on a real machine.

Link to comment
Share on other sites

Jose, scrolling is piece of cake...

 

I spent too long thinking about this, and the amount that has to be taken into consideration is horrendous..

I won't even list it all here because the list is endless of 'little' things that have to be taken care of..

Things like given the scaled size of a repeated section, and using fractional steps to everything isn't just integer scroll steps, means you need to find a nice multiple size to extend the line size too, and then there's the 4k crossings.. And with the line extension to ensure nice multiple sizes, you are using stacks of memory,,

 

I did end up thinking that handling each scanline as an individual scrollable region, and blocks being the shape they appear on screen could work quite well, then you could have a nice block tileable parallax region that would look awesome, but it's a lot of code maintaining counters for every single scanline and dropping in data on each line as it needs it, especially the foreground lines that move at >1 pixel per frame..

 

And the sprite routine where each line has a different scroll position and line addess is unforgiving in terms of overhead of code for just masking out 3 bytes (or so) of data onto the screen.. I tried, but it's just awfully slow.. The main bummer being the selecting which of 4 shifts to use quickly and efficiently, although the mucking about with lines scroll position and sprites x position isn't insignificant either..

Anyway, I spent an evening thinking about the many different ways to implement the sprite drawing and the best I could come up with ~120 cycles for each 3 bytes masked and drawn onto the screen.. In a sensible, useful in a game, kind of way..

 

It would look stupendous and demonstrate beautifully one of the things the A8 does very well.. But that sprite routine fills me with dread, speed wise ;)

 

Edit: I don't want to sound negative, but want someone to say "don't be silly, it's really simple: like this...." because I would love to see this kind of thing :)

Edited by andym00
Link to comment
Share on other sites

 

So the "enhanced 8580" SID does what POKEY does from the beginning.... this pulse/triangle combinations?

Well, SID still has better deeper notes and sounds. But 200Hz would offer some software manipulations on the generators to gain some deeper notes with POKEY though ;)

 

It does, but at the expense of filters. The filter is pretty dependable on an 8580 but it seems to have about 3 settings - off, on and 'turned up to 11', so you can be sure of how it will work on every machine but you won't get much fine control. the 6581 filters can vary wildly over every machine. I just leave filters out of the equation, or use extreme values so I know they are either 'really on' or 'pretty much off' on either chip.

 

200 hz will improve things on a SID and YM as well... but I think the other guys might like a bit of CPU time left over to run a game, so it's probably best kept to a title screen or high score entry.

Edited by sack-c0s
Link to comment
Share on other sites

re: your example

 

again offtopic... but shows nicely imho why c64 guys switched fast to assembler... ;) only POKEs... so not a big step towards LDA/STA.

 

Worked for me. The action replay manual had an example:

LDA #$00

STA $D020 - Same as poke 53280,0

 

and it just clicked there and then, so off I went to 6502 :)

Link to comment
Share on other sites

...the 6581 filters can vary wildly over every machine....

But, does it really depend on the SID 6581 chips themselves? Or is it a matter of choosing the right capacitors? Remember, the SID filter is a pair of external RC-circuits, IIRC.

 

Me for example, I have the following 6581s (see picture below). Do these chips themselves have different filter effects?

 

(by the way, sorry for off-topic stuff)

Link to comment
Share on other sites

Jose, scrolling is piece of cake...

 

I spent too long thinking about this, and the amount that has to be taken into consideration is horrendous..

I won't even list it all here because the list is endless of 'little' things that have to be taken care of..

Things like given the scaled size of a repeated section, and using fractional steps to everything isn't just integer scroll steps, means you need to find a nice multiple size to extend the line size too, and then there's the 4k crossings.. And with the line extension to ensure nice multiple sizes, you are using stacks of memory,,

 

I did end up thinking that handling each scanline as an individual scrollable region, and blocks being the shape they appear on screen could work quite well, then you could have a nice block tileable parallax region that would look awesome, but it's a lot of code maintaining counters for every single scanline and dropping in data on each line as it needs it, especially the foreground lines that move at >1 pixel per frame..

 

And the sprite routine where each line has a different scroll position and line addess is unforgiving in terms of overhead of code for just masking out 3 bytes (or so) of data onto the screen.. I tried, but it's just awfully slow.. The main bummer being the selecting which of 4 shifts to use quickly and efficiently, although the mucking about with lines scroll position and sprites x position isn't insignificant either..

Anyway, I spent an evening thinking about the many different ways to implement the sprite drawing and the best I could come up with ~120 cycles for each 3 bytes masked and drawn onto the screen.. In a sensible, useful in a game, kind of way..

 

It would look stupendous and demonstrate beautifully one of the things the A8 does very well.. But that sprite routine fills me with dread, speed wise ;)

 

Edit: I don't want to sound negative, but want someone to say "don't be silly, it's really simple: like this...." because I would love to see this kind of thing :)

 

 

forget softsprites... use Multiplex like in Crownland. What I have seen from the videos should be doable.

Link to comment
Share on other sites

Edit: I don't want to sound negative, but want someone to say "don't be silly, it's really simple: like this...." because I would love to see this kind of thing :)

 

In the words of Harry Hill "FIIIIIIIGGGGGGHHHHHHHT!". Sounds like a mini Format War contest to me ;).

In the context of this game: When trying to port it to Atari 8bit I'd cheat my ass off and use precalculated multiple fonts. Many of the backgrounds are really simple gfx, so don't really need a scrolling-on-scanline-basis method.

Link to comment
Share on other sites

Edit: I don't want to sound negative, but want someone to say "don't be silly, it's really simple: like this...." because I would love to see this kind of thing :)

 

In the words of Harry Hill "FIIIIIIIGGGGGGHHHHHHHT!". Sounds like a mini Format War contest to me ;).

In the context of this game: When trying to port it to Atari 8bit I'd cheat my ass off and use precalculated multiple fonts. Many of the backgrounds are really simple gfx, so don't really need a scrolling-on-scanline-basis method.

 

I simply wanted to take advantage of something the A8 can do very nicely..

Edited by andym00
Link to comment
Share on other sites

I simply wanted to take advantage of something the A8 can do very nicely..

Aha, OK, but this will of course only work nicely when you don't make use of software sprites. But I assume you're talking in the graphics-mode context, whereas I'm more thinking in the font-mode context (which might have some benefits when integrating swsprites).

 

Taking Heaven's comment into account: Only use background gfx for scrolling parts. Use PMs for the rest.

Link to comment
Share on other sites

...the 6581 filters can vary wildly over every machine....

But, does it really depend on the SID 6581 chips themselves? Or is it a matter of choosing the right capacitors? Remember, the SID filter is a pair of external RC-circuits, IIRC.

 

Me for example, I have the following 6581s (see picture below). Do these chips themselves have different filter effects?

 

(by the way, sorry for off-topic stuff)

 

It's the chips themselves. Part of the filter is on the chip and that's "helped" by the capacitors.

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