@Ahle2 said:
That game is weird and at the same time considered one of the only good games for the system.
The Nintendo 64 didn't have proper sound chip either, so "a lot" (well some) of the music is made with FastTracker 2. The funny thing is that the sound effects and music code had to run on the same processor (Reality Signal Processor) as the graphics engine. Sound, naturally, wasn't more important than graphics, so a lot of games sounded bad compared to the PS1 with its awesome sound chip.
Yeah. PS1 of course can also stream redbook audio, so it certainly has better sound. The sound in the N64 Zelda games is just awesome though. Great music and ambient sounds. They even support Dolby Surround.
Johannes,
Here's a de-popping modification to the stereo init routine from reSound.spin2.
PUB init(sysClock, mixingFrequency, forceHq, nrInputs_, leftPin, rightPin, commonEffectsMask, enableAttention, hubRegPtr) | lcal, rcal, lhigh, rhigh
'
' Initialize reSound according to the parameters given in stereo mode
'
' @sysClock - The Parallax P2 system clock in Hz
' @mixingFrequency - The mixing frequency that reSound should run at
' @forceHq - This forces the sample period to be a multiple of 256 to enable the HQ PWM smart pin output mode
' @nrInputs - The number of inputs buffers to process by the reSound mixer
' @leftPin - The smart pin number that should output the left audio signal
' @rightPin - The smart pin number that should output the right audio signal
' @commonEffectsMask - Sets wich common effects should be enabled, such as reverb, lowpass filter, etc
' @enableAttention - Enable cog attention events
' @hubRegPtr - A pointer to hub RAM where reSound should store its data (this memory chunk needs to be "big enough")
'
left := leftPin
right := rightPin
pinstart( leftPin, P_ADC_VIO | P_ADC, %00_1001, 0 ) ' Measure VIO rail
pinstart( rightPin, P_ADC_VIO | P_ADC, %00_1001, 0 )
waitms(1)
lhigh := rdpin( leftPin )
rhigh := rdpin( rightPin )
wrpin( leftPin, P_ADC_GIO | P_ADC ) ' Measure GIO rail
wrpin( rightPin, P_ADC_GIO | P_ADC )
waitms(1)
lcal := rdpin( leftPin )
rcal := rdpin( rightPin )
lcal += (lhigh - lcal) * 10 / 33 ' Calculate the centre 1.0 volt level
rcal += (rhigh - rcal) * 10 / 33 ' Calculate the centre 1.0 volt level
wrpin( leftPin, P_ADC_1X | P_ADC ) ' Slow slew up of pin, 1X input is 537 kR to VIO/2
repeat until rdpin( leftPin ) > lcal
wrpin( leftPin, P_ADC_1X | P_ADC | P_OE | P_LOW_10UA ) ' Slow slew down of pin
repeat until rdpin( leftPin ) < lcal
pinclear( leftPin )
wrpin( rightPin, P_ADC_1X | P_ADC ) ' Slow slew up of pin, 1X input is 537 kR to VIO/2
repeat until rdpin( rightPin ) > rcal
wrpin( rightPin, P_ADC_1X | P_ADC | P_OE | P_LOW_10UA ) ' Slow slew down of pin
repeat until rdpin( rightPin ) < rcal
pinclear( rightPin )
initExplicit(sysClock, mixingFrequency, forceHq, nrInputs_, 2, @left, commonEffectsMask, enableAttention, hubRegPtr)
Update: Fix a cut-n-paste error
Update: Reduce pauses to 1 ms, even 100 us would be fine.
I barely have any time or energy to fiddle around with these things at the moment. Being home with my youngest (1.5 year old (+ my 3.5 year old somedays)) child is a lot harder work than my real job as an embedded software developer.
I have been thinking about a different approach to depopping. Totally untested! By pulse width modulating between input and output at some "high enough" frequency and "slowly" going from "mostly input" until reaching "only output" over "some time". It should be fairly simple to implement; No need for any measurements or calculations.
That'll be interesting experiment. Like a fade-in I presume.
I'm limited to working with init only. I didn't have the patience to make sense of the inner workings of reSound.
I haven't tried any rapid DAC switching yet but have instead been playing with the 10 uA pin drive logic output using PWM smartpin.
It has a maybe surprisingly symmetrical switching speed between the P and N channel drivers. Pulse widths have to be a minimum, both high and low sides, of around 250 ns for linear response to kick in. Room temp is 22 °C.
Comments
Yeah. PS1 of course can also stream redbook audio, so it certainly has better sound. The sound in the N64 Zelda games is just awesome though. Great music and ambient sounds. They even support Dolby Surround.
Johannes,
Here's a de-popping modification to the stereo init routine from reSound.spin2.
Update: Fix a cut-n-paste error
Update: Reduce pauses to 1 ms, even 100 us would be fine.
Nice evanh,
I barely have any time or energy to fiddle around with these things at the moment. Being home with my youngest (1.5 year old (+ my 3.5 year old somedays)) child is a lot harder work than my real job as an embedded software developer.
I have been thinking about a different approach to depopping. Totally untested! By pulse width modulating between input and output at some "high enough" frequency and "slowly" going from "mostly input" until reaching "only output" over "some time". It should be fairly simple to implement; No need for any measurements or calculations.
That'll be interesting experiment. Like a fade-in I presume.
I'm limited to working with init only. I didn't have the patience to make sense of the inner workings of reSound.
I haven't tried any rapid DAC switching yet but have instead been playing with the 10 uA pin drive logic output using PWM smartpin.
It has a maybe surprisingly symmetrical switching speed between the P and N channel drivers. Pulse widths have to be a minimum, both high and low sides, of around 250 ns for linear response to kick in. Room temp is 22 °C.