diff options
Diffstat (limited to 'macros')
-rw-r--r-- | macros/code.asm | 8 | ||||
-rw-r--r-- | macros/wram.asm | 6 |
2 files changed, 9 insertions, 5 deletions
diff --git a/macros/code.asm b/macros/code.asm index 1fb651f30..09b15255e 100644 --- a/macros/code.asm +++ b/macros/code.asm @@ -36,8 +36,10 @@ jumptable: MACRO ENDM maskbits: MACRO -; masks just enough bits to cover the argument +; masks just enough bits to cover the first argument +; the second argument is an optional shift amount ; e.g. "maskbits 26" becomes "and %00011111" (since 26 - 1 = %00011001) +; and "maskbits 3, 2" becomes "and %00001100" (since "maskbits 3" becomes %00000011) ; example usage in rejection sampling: ; .loop ; call Random @@ -50,7 +52,11 @@ if x + 1 < (\1) x = x << 1 | 1 endc endr +if _NARG == 2 + and x << (\2) +else and x +endc ENDM calc_sine_wave: MACRO diff --git a/macros/wram.asm b/macros/wram.asm index 469cc1022..6096d2bba 100644 --- a/macros/wram.asm +++ b/macros/wram.asm @@ -131,7 +131,7 @@ channel_struct: MACRO ; Addreses are wChannel1 (c101). \1MusicID:: dw \1MusicBank:: db -\1Flags:: db ; 0:on/off 1:subroutine 3:sfx 4:noise 5:rest +\1Flags1:: db ; 0:on/off 1:subroutine 3:sfx 4:noise 5:rest \1Flags2:: db ; 0:vibrato on/off 2:duty 4:cry pitch \1Flags3:: db ; 0:vibrato up/down \1MusicAddress:: dw @@ -141,9 +141,7 @@ channel_struct: MACRO \1Condition:: db ; conditional jumps \1DutyCycle:: db ; bits 6-7 (0:12.5% 1:25% 2:50% 3:75%) \1Intensity:: db ; hi:pressure lo:velocity -\1Frequency:: ; 11 bits -\1FrequencyLo:: db -\1FrequencyHi:: db +\1Frequency:: dw ; 11 bits \1Pitch:: db ; 0:rest 1-c:note \1Octave:: db ; 7-0 (0 is highest) \1PitchOffset:: db ; raises existing octaves (to repeat phrases) |