It is currently Fri Oct 19, 2018 3:48 am

All times are UTC - 7 hours





Post new topic Reply to topic  [ 6 posts ] 
Author Message
PostPosted: Wed Mar 28, 2018 4:22 am 
Offline
User avatar

Joined: Fri Jan 24, 2014 9:05 am
Posts: 159
Location: Hungary
I have recently taken interest in programming for the PC Engine/TG16. I've been meaning to do something interesting with the audio, so I tried regularly changing the waveforms to get more realistic instruments. https://www.youtube.com/watch?v=BI6so4w9mu8

Now based on what I read in the documentation, the waveform data can only be updated when the channel is disabled. But there is no mention whether the channel phase gets reset when you do that. If that actually does happen then the song in the video is actually impossible to do in an actual program. Could anyone confirm any of this to me? Thank you!


Top
 Profile  
 
PostPosted: Wed Mar 28, 2018 7:19 am 
Offline
Formerly WheelInventor

Joined: Thu Apr 14, 2016 2:55 am
Posts: 1783
Location: Gothenburg, Sweden
Cannot answer the question but this rearrangement wanted me to walk about town with this in my headphones. Great work!

_________________
http://www.frankengraphics.com - personal NES blog


Top
 Profile  
 
PostPosted: Wed Mar 28, 2018 7:39 am 
Offline

Joined: Sun Mar 19, 2006 9:44 pm
Posts: 959
Location: Japan
Feel free to sign up to the PCEngine FX forums http://www.pcenginefx.com/forums/
and use the forum's search function for "waveform". There's been a fair amount of research into changing waveforms while channels are "active" and trying to avoid the popping and artifacts that go with it.

_________________
http://www.chrismcovell.com


Top
 Profile  
 
PostPosted: Thu Mar 29, 2018 1:05 am 
Offline

Joined: Mon Mar 30, 2015 10:14 am
Posts: 275
Quote:
the waveform data can only be updated when the channel is disabled.

You must use timer interrupt for that,and it's definitively not trivial as it rely on the sound frequency .
The channel is off only when you are updating the new waveform, and switched ON after that,but you're limited on the frequency because it takes time to update the entire 32 bytes buffer, 209 cycles with TIN instruction, plus the others for interrupt and channel setting .

But it's doable in a game, it seems All the Fire Pro Wrestling games did it :
https://www.youtube.com/watch?v=V845pHyaePk

I did it for samples playback, and it works well only on the A rev. of the Hu6280.


Top
 Profile  
 
PostPosted: Thu Mar 29, 2018 3:40 am 
Offline
User avatar

Joined: Fri Jan 24, 2014 9:05 am
Posts: 159
Location: Hungary
Ah, I only intend to update the waveform once per field at the fastest (up to 1254 cycles if all 6 channels had to be updated), so to me the biggest concern is whether the waveform step is reset to 0 when I update the waveform.


Top
 Profile  
 
PostPosted: Thu Mar 29, 2018 5:29 am 
Offline

Joined: Mon Mar 30, 2015 10:14 am
Posts: 275
You reset the waveform pointer like that :
Code:
// First you must select the voice number
lda     #%010_00000
sta     $0804      
stz     $0804

When bit 6 goes from 1 to 0 the pointer is reseted and when you feed the buffer with the new waveform it start at 0 up to 31 and not at the current waveform pointer position .


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 6 posts ] 

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group