Skip to content

Commit

Permalink
Fix sound panning localcoord calc
Browse files Browse the repository at this point in the history
  • Loading branch information
K4thos committed Aug 28, 2022
1 parent 6104ff9 commit 6d0b839
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 24 deletions.
7 changes: 5 additions & 2 deletions src/bytecode.go
Original file line number Diff line number Diff line change
Expand Up @@ -2375,6 +2375,7 @@ func (sc playSnd) Run(c *Char, _ []int32) bool {
var g, n, ch, vo int32 = -1, 0, -1, 100
var p, fr float32 = 0, 1
x := &c.pos[0]
ls := c.localscl
StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool {
switch id {
case playSnd_value:
Expand All @@ -2391,6 +2392,7 @@ func (sc playSnd) Run(c *Char, _ []int32) bool {
p = exp[0].evalF(c)
case playSnd_abspan:
x = nil
ls = 1
p = exp[0].evalF(c)
case playSnd_volume:
vo = vo + int32(float64(exp[0].evalI(c))*(25.0/64.0))
Expand All @@ -2404,13 +2406,14 @@ func (sc playSnd) Run(c *Char, _ []int32) bool {
if rid := sys.playerID(exp[0].evalI(c)); rid != nil {
crun = rid
x = &crun.pos[0]
ls = crun.localscl
} else {
return false
}
}
return true
})
crun.playSound(f, lw, lp, g, n, ch, vo, p, fr, x, true)
crun.playSound(f, lw, lp, g, n, ch, vo, p, fr, ls, x, true)
return false
}

Expand Down Expand Up @@ -5428,7 +5431,7 @@ func (sc superPause) Run(c *Char, _ []int32) bool {
}
vo := int32(100)
crun.playSound(exp[0].evalB(c), false, false, exp[1].evalI(c), n, -1,
vo, 0, 1, nil, false)
vo, 0, 1, 1, nil, false)
case superPause_redirectid:
if rid := sys.playerID(exp[0].evalI(c)); rid != nil {
crun = rid
Expand Down
16 changes: 8 additions & 8 deletions src/char.go
Original file line number Diff line number Diff line change
Expand Up @@ -2058,7 +2058,7 @@ func (c *Char) load(def string) error {
gi.remapPreset = make(map[string]RemapPreset)

data, size, velocity, movement, quotes, constants := true, true, true, true, true, true

if len(cns) > 0 {
if err := LoadFile(&cns, []string{def, "", sys.motifDir, "data/"}, func(filename string) error {
str, err := LoadText(filename)
Expand All @@ -2067,8 +2067,8 @@ func (c *Char) load(def string) error {
}
lines, i = SplitAndTrim(str, "\n"), 0
for i < len(lines) {
is, name, subname := ReadIniSection(lines, &i)
switch name {
is, name, subname := ReadIniSection(lines, &i)
switch name {
case "data":
if data {
data = false
Expand Down Expand Up @@ -3082,7 +3082,7 @@ func (c *Char) winType(wt WinType) bool {
return c.win() && sys.winTrigger[c.playerNo&1] == wt
}
func (c *Char) playSound(f, lowpriority, loop bool, g, n, chNo, vol int32,
p, freqmul float32, x *float32, log bool) {
p, freqmul, ls float32, x *float32, log bool) {
if g < 0 {
return
}
Expand Down Expand Up @@ -3131,7 +3131,7 @@ func (c *Char) playSound(f, lowpriority, loop bool, g, n, chNo, vol int32,
// ch.SetVolume(float32(c.gi().data.volume + vol))
// }
//}
ch.SetPan(p*c.facing, c.localscl, x)
ch.SetPan(p*c.facing, ls, x)
}
}

Expand Down Expand Up @@ -5810,7 +5810,7 @@ func (c *Char) tick() {
if c.life <= 0 && !sys.sf(GSF_noko) {
if !sys.sf(GSF_nokosnd) && c.alive() {
vo := int32(100)
c.playSound(false, false, false, 11, 0, -1, vo, 0, 1, &c.pos[0], false)
c.playSound(false, false, false, 11, 0, -1, vo, 0, 1, c.localscl, &c.pos[0], false)
}
c.setSCF(SCF_ko)
}
Expand Down Expand Up @@ -6468,7 +6468,7 @@ func (cl *CharList) clsn(getter *Char, proj bool) {
}
vo := int32(100)
c.playSound(f, false, false, sg, hd.hitsound[1],
-1, vo, 0, 1, &getter.pos[0], true)
-1, vo, 0, 1, getter.localscl, &getter.pos[0], true)
}
if hitType > 0 {
c.powerAdd(hd.hitgetpower)
Expand Down Expand Up @@ -6514,7 +6514,7 @@ func (cl *CharList) clsn(getter *Char, proj bool) {
}
vo := int32(100)
c.playSound(f, false, false, sg, hd.guardsound[1],
-1, vo, 0, 1, &getter.pos[0], true)
-1, vo, 0, 1, getter.localscl, &getter.pos[0], true)
}
if hitType > 0 {
c.powerAdd(hd.guardgetpower)
Expand Down
5 changes: 3 additions & 2 deletions src/script.go
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,7 @@ func systemScriptInit(l *lua.LState) {
var g, n, ch, vo int32 = -1, 0, -1, 100
var p, fr float32 = 0, 1
x := &sys.chars[pn-1][0].pos[0]
ls := sys.chars[pn-1][0].localscl
if l.GetTop() >= 2 {
g = int32(numArg(l, 2))
}
Expand Down Expand Up @@ -470,7 +471,7 @@ func systemScriptInit(l *lua.LState) {
if l.GetTop() >= 10 {
p = float32(numArg(l, 10))
}
sys.chars[pn-1][0].playSound(f, lw, lp, g, n, ch, vo, p, fr, x, false)
sys.chars[pn-1][0].playSound(f, lw, lp, g, n, ch, vo, p, fr, ls, x, false)
return 0
})
luaRegister(l, "charSndStop", func(l *lua.LState) int {
Expand Down Expand Up @@ -1300,7 +1301,7 @@ func systemScriptInit(l *lua.LState) {
var s string
var joy, min, max int = 0, 0, len(joystick)
if l.GetTop() >= 1 {
min = int(Clamp(int32(numArg(l, 1)), 0, int32(len(joystick) - 1)))
min = int(Clamp(int32(numArg(l, 1)), 0, int32(len(joystick)-1)))
max = min + 1
}
for joy = min; joy < max; joy++ {
Expand Down
14 changes: 2 additions & 12 deletions src/sound.go
Original file line number Diff line number Diff line change
Expand Up @@ -350,18 +350,8 @@ func (s *SoundEffect) Stream(samples [][2]float64) (n int, ok bool) {
}
sc := sys.panningRange / 100
of := (100 - sys.panningRange) / 200
lv = s.volume * 2 * (r*sc + of)
rv = s.volume * 2 * ((1-r)*sc + of)
if lv > 512 {
lv = 512
} else if lv < 0 {
lv = 0
}
if rv > 512 {
rv = 512
} else if rv < 0 {
rv = 0
}
lv = ClampF(s.volume*2*(r*sc+of), 0, 512)
rv = ClampF(s.volume*2*((1-r)*sc+of), 0, 512)
}

n, ok = s.streamer.Stream(samples)
Expand Down

0 comments on commit 6d0b839

Please sign in to comment.