diff --git a/src/opcodes/arithmetic.asm b/src/opcodes/arithmetic.asm index ef629c0..210aeb1 100644 --- a/src/opcodes/arithmetic.asm +++ b/src/opcodes/arithmetic.asm @@ -65,7 +65,7 @@ su_op_addp_mono: %endif ;------------------------------------------------------------------------------- -; LOADNOTE opcode: load the current note, scaled to [0,1] +; LOADNOTE opcode: load the current note, scaled to [-1,1] ;------------------------------------------------------------------------------- ; Mono: (empty) -> n, where n is the note ; Stereo: (empty) -> n n @@ -80,6 +80,8 @@ su_op_loadnote_mono: %endif fild dword [INP-su_voice.inputs+su_voice.note] do fmul dword [,c_i128,] + do fsub dword [,c_0_5,] ; s-.5 + fadd st0, st0 ; 2*s-1 ret %endif diff --git a/src/opcodes/flowcontrol.asm b/src/opcodes/flowcontrol.asm index bd8111e..be419c8 100644 --- a/src/opcodes/flowcontrol.asm +++ b/src/opcodes/flowcontrol.asm @@ -47,8 +47,6 @@ su_op_advance_finish: SECT_TEXT(suspeed) EXPORT MANGLE_FUNC(su_op_speed,0) - do fsub dword [,c_0_5,] ; s-.5 - fadd st0, st0 ; 2*s-1 do fmul dword [,c_bpmscale,] ; (2*s-1)*64/24, let's call this p from now on call MANGLE_FUNC(su_power,0) ; 2^p, this is how many ticks we should be taking fld1 ; 1 2^p diff --git a/tests/expected_output/test_loadnote.raw b/tests/expected_output/test_loadnote.raw index 218c659..8307f4a 100644 Binary files a/tests/expected_output/test_loadnote.raw and b/tests/expected_output/test_loadnote.raw differ diff --git a/tests/expected_output/test_loadnote_stereo.raw b/tests/expected_output/test_loadnote_stereo.raw index 218c659..8307f4a 100644 Binary files a/tests/expected_output/test_loadnote_stereo.raw and b/tests/expected_output/test_loadnote_stereo.raw differ