Jump to content
ivop

Atarisid VI

Recommended Posts

Hi all,

 

Atarisid is a software emulation of the SID soundchip used in the Commodore C64.

Recently, a conversation with wrathchild got me interested in atarisid again and here's the result.

 

What's new in version 6?

 

- Use three pokey channels instead of one

- Newly calculated wave forms

- Higher fidelity and dynamic range (over 21dB per channel)

- Use pokey noise generators for a much cleaner sound and different frequencies of noise

- Disables basic at startup

- 34 new songs for a total of 64 (which is not a coincidence :))

  Adam Gilmore                        -   Ninja Commando                        
  Adam Gilmore                        -   Zybex                                 
  Ari-Pekka Paljakka (Zardax)         -   Retrograd                             
  Ben Daglish                         -   Bulldog                               
  Ben Daglish                         -   Cobra                                 
  Ben Daglish                         -   The Vikings                           
  Ben Daglish                         -   Thing Bounces Back                    
  Chris Huelsbeck                     -   Metro Dance                           
  David Whittaker                     -   Glider Rider                          
  David Whittaker                     -   Loopz                                 
  David Whittaker                     -   Speedball                             
  Hein Holt (Hein)                    -   Alien Seahorses Invading Heaven       
  Jens-Christian Huus                 -   No Filter                             
  Jeroen Tel                          -   Alternative Fuel                      
  Jeroen Tel                          -   JT42                                  
  Jeroen Tel / Maniacs of Noise       -   Alloyrun                              
  Jeroen Tel / Maniacs of Noise       -   Cybernoid                             
  Jeroen Tel / Maniacs of Noise       -   Cybernoid II                          
  Jeroen Tel / Maniacs of Noise       -   Hawkeye                               
  Jeroen Tel / Maniacs of Noise       -   Ice Age                               
  Jeroen Tel / Maniacs of Noise       -   Kinetix                               
  Jeroen Tel                          -   Myth Mix                              
  Jeroen Tel                          -   Noisy Pillars                         
  Jonathan Dunn                       -   Ocean Loader 4                        
  Lasse Oorni (Cadaver)               -   Aces High                             
  Lasse Oorni (Cadaver)               -   Escape From New York                  
  Lasse Oorni (Cadaver)               -   GoatTracker Example (MW1 Title)       
  Lasse Oorni (Cadaver)               -   Metal Warrior                         
  Lasse Oorni (Cadaver)               -   Metal Warrior 2                       
  Lasse Oorni (Cadaver)               -   Nintedo Metal                         
  Lasse Oorni (Cadaver)               -   Tarantula                             
  Lasse Oorni (Cadaver)               -   Unleash The Fucking Fury              
  Mark Cooksey                        -   Battle Ships                          
  Martin Galway                       -   Ocean Loader 1                        
  Martin Galway                       -   Ocean Loader 2                        
  Peter Clarke                        -   Ocean Loader 3                        
  Reyn Ouwehand                       -   What Have I Done To...                
  Rob Hubbard                         -   Chimera                               
  Rob Hubbard                         -   Commando                              
  Rob Hubbard                         -   Crazy Comets                          
  Rob Hubbard                         -   Delta                                 
  Rob Hubbard                         -   IK+                                   
  Rob Hubbard                         -   International Karate                  
  Rob Hubbard                         -   Lightforce                            
  Rob Hubbard                         -   Monty On The Run                      
  Rob Hubbard                         -   Ninja                                 
  Rob Hubbard                         -   One Man And His Droid                 
  Rob Hubbard                         -   Sanxion                               
  Rob Hubbard                         -   Spellbound                            
  Rob Hubbard                         -   The Master Of Magic                   
  Rob Hubbard                         -   Thing On A Spring                     
  Rob Hubbard                         -   Warhawk                               
  Stellan Andersson (Dane)            -   Escape From Reality                   
  Stellan Andersson (Dane)            -   The Slap Mix                          
  Thomas E. Petersen (Laxity)         -   Freeze                                
  Thomas E. Petersen (Laxity)         -   Highscore                             
  Thomas E. Petersen (Laxity)         -   Syncopated                            
  Thomas E. Petersen (Laxity)         -   Wisdom                                
  Thomas Mogensen (DRAX)              -   Scarlet                               
  Thomas Mogensen (DRAX)              -   Spunk                                 
  Timo Taipalus (Abaddon)             -   Hamlet                                
  Tomas Danko                         -   Groove                                
  Torben Hansen (Metal)               -   Ramloesa                              
  Volker Meitz (PRI)                  -   Pool Party                            

atarisid6-xex.zip

atarisid6-src.zip

  • Like 14

Share this post


Link to post
Share on other sites

Hi all,

 

Atarisid is a software emulation of the SID soundchip used in the Commodore C64.

Recently, a conversation with wrathchild got me interested in atarisid again and here's the result.

 

What's new in version 6?

 

- Use three pokey channels instead of one

- Newly calculated wave forms

- Higher fidelity and dynamic range (over 21dB per channel)

- Use pokey noise generators for a much cleaner sound and different frequencies of noise

- Disables basic at startup

- 34 new songs for a total of 64 (which is not a coincidence :))

 

Nice improvements.

 

 

 Thomas E. Petersen (Laxity)         -   Wisdom                                                           

 

I like this composition a lot.

Share this post


Link to post
Share on other sites

Thanks so much for making this 'C02/'802/'816 friendly! This is really great sounding.

 

Brilliant work.

 

:)

Share this post


Link to post
Share on other sites

I've just listened to only a few tunes... but wow! So many SID specific nuances are so convincingly reproduced. Really impressive, respect.

  • Like 1

Share this post


Link to post
Share on other sites

Seems not to be working on Atari800WinPLus - anyone else having an issue or are most on Altirra?

 

Atari800WinPlus does not correctly emulate Read-Modify-Write instructions on pokey registers. Neither does the current atari800, but there's a patch here: https://sourceforge.net/p/atari800/mailman/message/34233143/

Altirra works fine, but it's enjoyed best on real hardware ;)

  • Like 2

Share this post


Link to post
Share on other sites

This is excellent! Question: It seems like your pulse wave duty cycle has greatly reduced resolution compared to the 12-bit resolution of the SID. How many steps do you support? Would adding more blow up the required number of tables beyond available memory?

  • Like 1

Share this post


Link to post
Share on other sites

This is excellent! Question: It seems like your pulse wave duty cycle has greatly reduced resolution compared to the 12-bit resolution of the SID. How many steps do you support? Would adding more blow up the required number of tables beyond available memory?

 

It currently supports 20%, 40%, 60% and 80%. If I were to keep all the 8580 waveform mixing capabilites adding more pulsewidths would indeed exceed the available memory. I am thinking about removing those though as they are hardly ever used on 6581 tunes. Mapping them all to either pulse or triangle might be enough. That will open up two new possibilities. 1) all the tables will fit in one cartridge bank, or 2) more pulsewidths or more volume levels (also 4 right now).

Edited by ivop
  • Like 2

Share this post


Link to post
Share on other sites

btw. how to convert my own .SIDs to the player?

 

and what is those 3 IRQ mode you mention in the source code? Might it be possible to adapt for other consoles? Like 5200/7800 or even Atari Lynx? (I am searching for nice player...)

Share this post


Link to post
Share on other sites

Any possibility of detecting and compensating for speed difference on NTSC machines in the future?

 

Ah, I forgot all about that. This is doable as wrathchild already did it with as5. The other way around, i.e. playing NTSC tunes faster on a PAL machine, is a bit trickier.

 

btw. how to convert my own .SIDs to the player?

 

and what is those 3 IRQ mode you mention in the source code? Might it be possible to adapt for other consoles? Like 5200/7800 or even Atari Lynx? (I am searching for nice player...)

 

I have little time atm, but I could write a full guide in the future. In short it comes down to this:

 

You need sidreloc, siddasm2, atasm, atarisid6 sources, mads

 

- find a sid file that's not too big and would fit in $9000-$bfff (preferably $a000-$bfff)

- relocate the sid file; relocate zero page to $d0-$ef ($c0-$ff max); relocating to $9000 sometimes fails when relocating to $a000 works

- test resulting sid file

- disassemble with siddasm2

- replace 29 equates at the top with the contents of remap.txt (remapping the sid hardware registers)

- fix ill instructions, L_00xxx references and unknown labels (there are three scripts to automate that, or run fixall.sh foo.dis)

- assemble with atasm -r

- copy binary to songs directory, create corresponding .inc

- use setsong.sh to set the song name and use build.sh to build a.xex and test

- or run buildall.sh and test the file in xex/.

 

Some tunes need further patching (see for example zybex.dis, included in the songs directory) because those players toggle the gate bit twice within one call to the player routine and this would go unnoticed by the adsr emulation.

 

edit: the three irq thing refers to the three different irq routines that are run in a round-robin way. See irq.inc for those routines.

Edited by ivop
  • Like 3

Share this post


Link to post
Share on other sites

One question:

If it is possible to filter the SIDs, to get played with that player, shouldn't it be possible to build clean 3 channel Tracker files

Share this post


Link to post
Share on other sites

I downloaded all the XEX files and put it on a real 5.25 inch floppy to try on my 130XE. it works nice with Bibodos. But i am trying to get it to work with a menu system on my 130XE. SpeedMenu 3 loads all nice, but i am not able to do a hard reset. So, i tried some others that do the hard reset. But some of the XEX files dont work. even while most of the front screens with the info about the song show on the screen. Anybody an idea for a nice menu that uses RESET good. Oh, i put the files on several floppys in 180K DD format.

Share this post


Link to post
Share on other sites

 

Ah, I forgot all about that. This is doable as wrathchild already did it with as5. The other way around, i.e. playing NTSC tunes faster on a PAL machine, is a bit trickier.

 

 

Employing the same technique as before, which was to adjust the ASDR timing table by 5/6 and skip one frame after having done five. This kicks in by itself if NTSC is detected and so the same executable runs PAL too. The results seem to come out OK in Altirra.

 

I will try if I have time at the weekend to incorporate this into Ivo's v6 source and an updated set of the existing binaries can be built.

 

I had a slightly different approach to the porting of a SID which involved hand editing the SID file in a hex editor to remap and spotted SID area read/write to the A8 player's shadows.

Once hooked into the player then Altirra debugging could easily spot any missed, e.g. used a write-to detection between when the PC is in the SID player's code area.

Additionally, any zero-page writes could affect the IRQ routine and so these should, as pointed out earlier, be remapped - but for example in Sanxion I tweaked the irq.inc to leave a hole where the SID player wrote to.

To get around loading of a SID player's code/data under the OS, I delegate that to exomizer and then included the self-extracting code during the loading. Just Sanxion in this set does that, but during this the font is lost (which is easy to fix).

 

Regards,

Mark

HyperSportsSid.xex

OceanLoader1Sid.xex

OceanLoader2Sid.xex

SanxionSid.xex

SpdBallSid.xex

Edited by Wrathchild
  • Like 3

Share this post


Link to post
Share on other sites

Sanxion (or better called, Thalamusik) sounds wonderful. I wish you could also take in account this song:

 

 

- Y -

Share this post


Link to post
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.

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