diff options
Diffstat (limited to 'macros')
-rwxr-xr-x | macros/audio.asm | 278 | ||||
-rw-r--r-- | macros/text.asm | 135 |
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 |