Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
-- trying to write a sine wave to slot 0 and play it through SFX 8. sfx_memory = 0x3200 pi = 3.1416 sfx_id = 8 -- triggered by z key pitch = 24 custom_slot = 0 -- custom waveform location volume = 3 effect = 0 custom_bit = 0x8000 -- indicates there is a custom waveform -- write one step function poke_step(sfx_id, step, pitch, custom_slot, volume, effect, custom_bit) -- 0-5 pitch, 6-8 custom_slot, 9-11 volume, 12-14 effect, 15 custom_bit pitch = pitch & 0x3f custom_slot = custom_slot & 0x07 volume = volume & 0x07 effect = effect & 0x07 local value = 0 value = value | pitch value = value | (custom_slot << 6) value = value | (volume << 9) value = value | (effect << 12) value = value | custom_bit -- address of the step local addr = 0x3200 + sfx_id * 68 + step * 2 -- little-endian poke(addr, value & 0xff) poke(addr+1, (value >> 8) & 0xff) end function _init() -- write samples to custom waveform slot 0 for i = 0, 63 do local angle = (i / 64) * 2 * pi local sample = flr(128 + 127.5 * sin(angle)) poke(sfx_memory + i, sample) end -- populate step 0 of sfx 8 poke_step(sfx_id, 0, pitch, custom_slot, volume, effect, custom_bit) -- zero remaining 31 steps for step=1,31 do local addr = 0x3200 + sfx_id*68 + step*2 poke(addr, 0) poke(addr+1, 0) end -- Last 4 bytes of slot: filters, speed, loop start and stop poke(0x3200 + sfx_id*68 + 64, 0) poke(0x3200 + sfx_id*68 + 65, 0) poke(0x3200 + sfx_id*68 + 66, 0) poke(0x3200 + sfx_id*68 + 67, 0) end function _update() if btnp(4) then sfx(sfx_id) end end function _draw() cls() print("press z", 10, 10, 7) end
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)