summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rwxr-xr-xmacros/audio.asm278
-rw-r--r--macros/text.asm135
2 files changed, 413 insertions, 0 deletions
diff --git a/macros/audio.asm b/macros/audio.asm
new file mode 100755
index 0000000..8ebf840
--- /dev/null
+++ b/macros/audio.asm
@@ -0,0 +1,278 @@
+Ch0 EQU 0
+Ch1 EQU 1
+Ch2 EQU 2
+Ch3 EQU 3
+Ch4 EQU 4
+Ch5 EQU 5
+Ch6 EQU 6
+Ch7 EQU 7
+
+audio: MACRO
+ db (_NARG - 2) << 6 | \2
+ dw \1_\2
+ IF _NARG > 2
+ db \3
+ dw \1_\3
+ ENDC
+ IF _NARG > 3
+ db \4
+ dw \1_\4
+ ENDC
+ IF _NARG > 4
+ db \5
+ dw \1_\5
+ ENDC
+ENDM
+
+;format: length [0, 7], pitch change [-7, 7]
+pitchenvelope: MACRO
+ db $10
+ IF \2 > 0
+ db (\1 << 4) | \2
+ ELSE
+ db (\1 << 4) | (%1000 | (\2 * -1))
+ ENDC
+ENDM
+
+;format: length [0, 15], volume [0, 15], volume change [-7, 7], pitch
+squarenote: MACRO
+ db $20 | \1
+ IF \3 < 0
+ db (\2 << 4) | (%1000 | (\3 * -1))
+ ELSE
+ db (\2 << 4) | \3
+ ENDC
+ dw \4
+ENDM
+
+;format: length [0, 15], volume [0, 15], volume change [-7, 7], pitch
+noisenote: MACRO
+ db $20 | \1
+ IF \3 < 0
+ db (\2 << 4) | (%1000 | (\3 * -1))
+ ELSE
+ db (\2 << 4) | \3
+ ENDC
+ db \4
+ENDM
+
+;format: rest length (in 16ths)
+rest: MACRO
+ db $00 | (\1 - 1)
+ENDM
+
+;format: pitch length (in 16ths)
+C_: MACRO
+ db $10 | (\1 - 1)
+ENDM
+
+C#: MACRO
+ db $20 | (\1 - 1)
+ENDM
+
+D_: MACRO
+ db $30 | (\1 - 1)
+ENDM
+
+D#: MACRO
+ db $40 | (\1 - 1)
+ENDM
+
+E_: MACRO
+ db $50 | (\1 - 1)
+ENDM
+
+F_: MACRO
+ db $60 | (\1 - 1)
+ENDM
+
+F#: MACRO
+ db $70 | (\1 - 1)
+ENDM
+
+G_: MACRO
+ db $80 | (\1 - 1)
+ENDM
+
+G#: MACRO
+ db $90 | (\1 - 1)
+ENDM
+
+A_: MACRO
+ db $A0 | (\1 - 1)
+ENDM
+
+A#: MACRO
+ db $B0 | (\1 - 1)
+ENDM
+
+B_: MACRO
+ db $C0 | (\1 - 1)
+ENDM
+
+;format: instrument length (in 16ths)
+snare1: MACRO
+ db $10 | (\1 - 1)
+ENDM
+
+snare2: MACRO
+ db $20 | (\1 - 1)
+ENDM
+
+snare3: MACRO
+ db $30 | (\1 - 1)
+ENDM
+
+snare4: MACRO
+ db $40 | (\1 - 1)
+ENDM
+
+snare5: MACRO
+ db $50 | (\1 - 1)
+ENDM
+
+triangle1: MACRO
+ db $60 | (\1 - 1)
+ENDM
+
+triangle2: MACRO
+ db $70 | (\1 - 1)
+ENDM
+
+snare6: MACRO
+ db $80 | (\1 - 1)
+ENDM
+
+snare7: MACRO
+ db $90 | (\1 - 1)
+ENDM
+
+snare8: MACRO
+ db $A0 | (\1 - 1)
+ENDM
+
+snare9: MACRO
+ db $B0 | (\1 - 1)
+ENDM
+
+cymbal1: MACRO
+ db $C0 | (\1 - 1)
+ENDM
+
+cymbal2: MACRO
+ db $D0 | (\1 - 1)
+ENDM
+
+cymbal3: MACRO
+ db $E0 | (\1 - 1)
+ENDM
+
+mutedsnare1: MACRO
+ db $F0 | (\1 - 1)
+ENDM
+
+; TODO: clean up handling of drumsets
+;triangle3: MACRO
+; db $10 | (\1 - 1)
+;ENDM
+
+;mutedsnare2: MACRO
+; db $11 | (\1 - 1)
+;ENDM
+
+;mutedsnare3: MACRO
+; db $12 | (\1 - 1)
+;ENDM
+
+;mutedsnare4: MACRO
+; db $13 | (\1 - 1)
+;ENDM
+
+octave: MACRO
+ db $D8 - \1
+ENDM
+
+; format: notetype speed, volume, fade
+notetype: MACRO
+ db $D8
+ db \1
+ db (\2 << 4) | \3
+ENDM
+
+dspeed: MACRO
+ db $D8
+ db \1
+ENDM
+
+tempo: MACRO
+ db $DA
+ db \1 / $100
+ db \1 % $100
+ENDM
+
+duty: MACRO
+ db $DB
+ db \1
+ENDM
+
+pitchbend: MACRO
+ db $E0
+ db \1
+ db \2
+ENDM
+
+;format: vibrato delay, rate, depth
+vibrato: MACRO
+ db $E1
+ db \1
+ db (\2 << 4) | \3
+ENDM
+
+drumset: MACRO
+ db $E3
+ db \1
+ENDM
+
+volume: MACRO
+ db $E5
+ db (\1 << 4) | \2
+ENDM
+
+toggleperfectpitch: MACRO
+ db $E6
+ENDM
+
+stereopanning: MACRO
+ db $EE
+ db \1
+ENDM
+
+;executemusic: MACRO
+; db $F8
+;ENDM
+
+unknown_f9: MACRO
+ db $F9
+ENDM
+
+;dutycycle: MACRO
+; db $FC
+; db \1
+;ENDM
+
+;format: loopchannel count, address
+loopchannel: MACRO
+ db $FD
+ db \1
+ dw \2
+ENDM
+
+;format: callchannel address
+callchannel: MACRO
+ db $FE
+ dw \1
+ENDM
+
+endchannel: MACRO
+ db $FF
+ENDM
diff --git a/macros/text.asm b/macros/text.asm
new file mode 100644
index 0000000..f95c300
--- /dev/null
+++ b/macros/text.asm
@@ -0,0 +1,135 @@
+text EQUS "db $00," ; Start writing text.
+next EQUS "db \"<NEXT>\"," ; Move a line down.
+line EQUS "db \"<LINE>\"," ; Start writing at the bottom line.
+para EQUS "db \"<PARA>\"," ; Start a new paragraph.
+cont EQUS "db \"<CONT>\"," ; Scroll to the next line.
+done EQUS "db \"<DONE>\"" ; End a text box.
+prompt EQUS "db \"<PROMPT>\"" ; Prompt the player to end a text box (initiating some other event).
+text_end EQUS "db $50" ; End control code for text processor
+ ; different from @
+
+; TODO: determine if these are in
+; Pokedex text commands are only used with pokered.
+; They are included for compatibility.
+page EQUS "db $50," ; Start a new Pokedex page.
+dex EQUS "db $e8, $50" ; End a Pokedex entry.
+
+ enum_start 1
+ enum TX_RAM
+text_from_ram: MACRO
+ db TX_RAM
+ dw \1 ; address
+ ENDM
+
+ enum TX_BCD
+text_bcd: macro
+ db TX_BCD
+ dw \1 ; address
+ db \2 ; flags + digits, see PrintBCDNumber
+ ENDM
+
+ enum TX_MOVE
+text_move: macro
+ db TX_MOVE
+ dw \1 ; address
+ ENDM
+
+ enum TX_BOX
+text_box: macro
+ db TX_BOX
+ dw \1 ; address
+ db \2, \3 ; width, height
+ ENDM
+
+ enum TX_LOW
+text_low: macro
+ db TX_LOW
+ endm
+
+ enum WAIT_BUTTON
+text_waitbutton: macro
+ db WAIT_BUTTON
+ endm
+
+ enum TX_SCROLL
+text_scroll: macro
+ db TX_SCROLL
+ endm
+
+ enum START_ASM
+start_asm: macro
+ db START_ASM
+ endm
+
+ enum TX_NUM
+deciram: macro
+ db TX_NUM
+ dw \1 ; address
+ dn \2, \3 ; bytes, flags + digits
+ endm
+
+ enum TX_EXIT
+text_exit: macro
+ db TX_EXIT
+ endm
+
+ enum TX_SOUND_0B
+sound_dex_fanfare_50_79: macro
+ db TX_SOUND_0B
+ endm
+
+ enum TX_DOTS
+text_dots: macro
+ db TX_DOTS
+ db \1
+ endm
+
+ enum TX_LINK_WAIT_BUTTON
+link_wait_button: macro
+ db TX_LINK_WAIT_BUTTON
+ endm
+
+ enum TX_SOUND_0E
+sound_dex_fanfare_20_49: macro
+ db TX_SOUND_0E
+ endm
+
+ enum TX_SOUND_0F
+sound_item: macro
+ db TX_SOUND_0F
+ endm
+
+ enum TX_SOUND_10
+sound_caught_mon: macro
+ db TX_SOUND_10
+ endm
+
+ enum TX_SOUND_11
+sound_dex_fanfare_80_109: macro
+ db TX_SOUND_11
+ endm
+
+ enum TX_SOUND_12
+sound_fanfare: macro
+ db TX_SOUND_12
+ endm
+
+ enum TX_SOUND_13
+sound_slot_machine_start: macro
+ db TX_SOUND_13
+ endm
+
+ enum TX_CRY_14
+cry_nidorina: macro
+ db TX_CRY_14
+ endm
+
+ enum TX_CRY_15
+cry_pigeot: macro
+ db TX_CRY_15
+ endm
+
+ enum TX_CRY_16
+cry_jugon: macro
+ db TX_CRY_16
+ endm