diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2016-01-29 18:36:31 -0500 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2016-01-29 18:36:31 -0500 |
commit | 2bf93c5905319e9181f87b3f83cd3bce7b9feeca (patch) | |
tree | 3ebf17c8879e5d6243d81aac8f1c36eb226fac26 /macros | |
parent | ed3f9395f6d45f6554ed9d9c49c41ea86a8e2447 (diff) |
Import stuff from pokecrystal; diff gold and silver
Diffstat (limited to 'macros')
-rw-r--r-- | macros/basestats.asm | 66 | ||||
-rw-r--r-- | macros/charmap.asm | 328 | ||||
-rw-r--r-- | macros/enum.asm | 40 | ||||
-rw-r--r-- | macros/event.asm | 1068 | ||||
-rw-r--r-- | macros/map.asm | 189 | ||||
-rw-r--r-- | macros/mobile.asm | 2 | ||||
-rw-r--r-- | macros/move_anim.asm | 293 | ||||
-rw-r--r-- | macros/move_effect.asm | 186 | ||||
-rw-r--r-- | macros/movement.asm | 444 | ||||
-rw-r--r-- | macros/pic.asm | 4 | ||||
-rw-r--r-- | macros/predef.asm | 20 | ||||
-rw-r--r-- | macros/rst.asm | 17 | ||||
-rw-r--r-- | macros/sound.asm | 264 | ||||
-rw-r--r-- | macros/text.asm | 137 | ||||
-rwxr-xr-x | macros/trade_anim.asm | 253 | ||||
-rw-r--r-- | macros/trainer.asm | 11 | ||||
-rwxr-xr-x | macros/wram.asm | 251 |
17 files changed, 3573 insertions, 0 deletions
diff --git a/macros/basestats.asm b/macros/basestats.asm new file mode 100644 index 00000000..25ffcc02 --- /dev/null +++ b/macros/basestats.asm @@ -0,0 +1,66 @@ +define: macro +if !def(\1) +\1 equs \2 +endc +endm + +const_value = 0 + +add_tm: MACRO +if !def(TM01) +TM01 = const_value + enum_start 1 +endc + define _\@_1, "TM_\1" + const _\@_1 + enum \1_TMNUM +ENDM + +add_hm: MACRO +if !def(HM01) +HM01 = const_value +endc + define _\@_1, "HM_\1" + const _\@_1 + enum \1_TMNUM +ENDM + +add_mt: MACRO + enum \1_TMNUM +ENDM + +tmhm: MACRO +x = 0 +y = 0 +w = 0 + rept _NARG + if def(\1_TMNUM) + if \1_TMNUM < 25 +x = x | (1 << ((\1_TMNUM) - 1)) + else + if \1_TMNUM < 49 +y = y | (1 << ((\1_TMNUM) - 1 - 24)) + else +w = w | (1 << ((\1_TMNUM) - 1 - 48)) + endc + endc + else + fail "\1 is not a TM, HM, or move tutor move" + endc + + shift + endr + + rept 3 + db x & $ff +x = x >> 8 + endr + rept 3 + db y & $ff +y = y >> 8 + endr + rept 2 + db w & $ff +w = w >> 8 + endr +ENDM diff --git a/macros/charmap.asm b/macros/charmap.asm new file mode 100644 index 00000000..9eee57a0 --- /dev/null +++ b/macros/charmap.asm @@ -0,0 +1,328 @@ +; Control characters + charmap "<START>", $00 + charmap "<PLAY_G>", $14 ; <PLAYER> + gender + charmap "<DAY>", $15 + charmap "¯", $1f + charmap "<LNBRK>", $22 + charmap "<POKE>", $24 + charmap "%", $25 + charmap "<RED>", $38 + charmap "<GREEN>", $39 + charmap "<ENEMY>", $3f + charmap "<SHINY>", $3f + charmap "<MOM>", $49 + charmap "<PKMN>", $4a + charmap "<NEXT>", $4e + charmap "<LINE>", $4f + + charmap "@", $50 + charmap "<PARA>", $51 + charmap "<PLAYER>", $52 + charmap "<RIVAL>", $53 + charmap "#", $54 + charmap "<CONT>", $55 + charmap "<......>", $56 + charmap "<DONE>", $57 + charmap "<PROMPT>", $58 + charmap "<TARGET>", $59 + charmap "<USER>", $5a + charmap "<PC>", $5b + charmap "<TM>", $5c + charmap "<TRNER>", $5d + charmap "<ROCKET>", $5e + charmap "<DEXEND>", $5f + +; Actual characters + charmap "▲", $61 + charmap "_", $62 + charmap "<COLON>", $6d ; necessary because ":" is already used + charmap "′", $6e + charmap "<LV>", $6e + charmap "″", $6f + + charmap "<PO>", $70 + charmap "<KE>", $71 + charmap "◀", $71 + charmap "<``>", $72 + charmap "<''>", $73 + charmap "<ID>", $73 + charmap "№", $74 + charmap "…", $75 + + charmap "┌", $79 + charmap "─", $7a + charmap "┐", $7b + charmap "│", $7c + charmap "└", $7d + charmap "┘", $7e + charmap " ", $7f + + charmap "A", $80 + charmap "B", $81 + charmap "C", $82 + charmap "D", $83 + charmap "E", $84 + charmap "F", $85 + charmap "G", $86 + charmap "H", $87 + charmap "I", $88 + charmap "J", $89 + charmap "K", $8a + charmap "L", $8b + charmap "M", $8c + charmap "N", $8d + charmap "O", $8e + charmap "P", $8f + charmap "Q", $90 + charmap "R", $91 + charmap "S", $92 + charmap "T", $93 + charmap "U", $94 + charmap "V", $95 + charmap "W", $96 + charmap "X", $97 + charmap "Y", $98 + charmap "Z", $99 + + charmap "(", $9a + charmap ")", $9b + charmap ":", $9c + charmap ";", $9d + charmap "[", $9e + charmap "]", $9f + + charmap "a", $a0 + charmap "b", $a1 + charmap "c", $a2 + charmap "d", $a3 + charmap "e", $a4 + charmap "f", $a5 + charmap "g", $a6 + charmap "h", $a7 + charmap "i", $a8 + charmap "j", $a9 + charmap "k", $aa + charmap "l", $ab + charmap "m", $ac + charmap "n", $ad + charmap "o", $ae + charmap "p", $af + charmap "q", $b0 + charmap "r", $b1 + charmap "s", $b2 + charmap "t", $b3 + charmap "u", $b4 + charmap "v", $b5 + charmap "w", $b6 + charmap "x", $b7 + charmap "y", $b8 + charmap "z", $b9 + + charmap "Ä", $c0 + charmap "Ö", $c1 + charmap "Ü", $c2 + charmap "ä", $c3 + charmap "ö", $c4 + charmap "ü", $c5 + + charmap "'d", $d0 + charmap "'l", $d1 + charmap "'m", $d2 + charmap "'r", $d3 + charmap "'s", $d4 + charmap "'t", $d5 + charmap "'v", $d6 + + charmap "←", $df + charmap "'", $e0 + charmap "<PK>", $e1 + charmap "<MN>", $e2 + charmap "-", $e3 + + charmap "?", $e6 + charmap "!", $e7 + charmap ".", $e8 + charmap "&", $e9 + + charmap "é", $ea + charmap "→", $eb + charmap "▷", $ec + charmap "▶", $ed + charmap "▼", $ee + charmap "♂", $ef + charmap "¥", $f0 + charmap "×", $f1 + charmap "·", $f2 + charmap "/", $f3 + charmap ",", $f4 + charmap "♀", $f5 + + charmap "0", $f6 + charmap "1", $f7 + charmap "2", $f8 + charmap "3", $f9 + charmap "4", $fa + charmap "5", $fb + charmap "6", $fc + charmap "7", $fd + charmap "8", $fe + charmap "9", $ff + +; Japanese, for those bits of text that +; were not translated to English. + + charmap "ガ", $5 + charmap "ギ", $6 + charmap "グ", $7 + charmap "ゲ", $8 + charmap "ゴ", $9 + charmap "ザ", $a + charmap "ジ", $b + charmap "ズ", $c + charmap "ゼ", $d + charmap "ゾ", $e + charmap "ダ", $f + charmap "ヂ", $10 + charmap "ヅ", $11 + charmap "デ", $12 + charmap "ド", $13 + + charmap "バ", $19 + charmap "ビ", $1a + charmap "ブ", $1b + charmap "ボ", $1c + + charmap "が", $26 + charmap "ぎ", $27 + charmap "ぐ", $28 + charmap "げ", $29 + charmap "ご", $2a + charmap "ざ", $2b + charmap "じ", $2c + charmap "ず", $2d + charmap "ぜ", $2e + charmap "ぞ", $2f + charmap "だ", $30 + charmap "ぢ", $31 + charmap "づ", $32 + charmap "で", $33 + charmap "ど", $34 + + charmap "ば", $3a + charmap "び", $3b + charmap "ぶ", $3c + charmap "べ", $3d + charmap "ぼ", $3e + + charmap "パ", $40 + charmap "ピ", $41 + charmap "プ", $42 + charmap "ポ", $43 + charmap "ぱ", $44 + charmap "ぴ", $45 + charmap "ぷ", $46 + charmap "ぺ", $47 + charmap "ぽ", $48 + + charmap "ア", $80 + charmap "イ", $81 + charmap "ウ", $82 + charmap "エ", $83 + charmap "ォ", $84 + charmap "カ", $85 + charmap "キ", $86 + charmap "ク", $87 + charmap "ケ", $88 + charmap "コ", $89 + charmap "サ", $8a + charmap "シ", $8b + charmap "ス", $8c + charmap "セ", $8d + charmap "ソ", $8e + charmap "タ", $8f + charmap "チ", $90 + charmap "ツ", $91 + charmap "テ", $92 + charmap "ト", $93 + charmap "ナ", $94 + charmap "ニ", $95 + charmap "ヌ", $96 + charmap "ネ", $97 + charmap "ノ", $98 + charmap "ハ", $99 + charmap "ヒ", $9a + charmap "フ", $9b + charmap "ホ", $9c + charmap "マ", $9d + charmap "ミ", $9e + charmap "ム", $9f + charmap "メ", $a0 + charmap "モ", $a1 + charmap "ヤ", $a2 + charmap "ユ", $a3 + charmap "ヨ", $a4 + charmap "ラ", $a5 + charmap "ル", $a6 + charmap "レ", $a7 + charmap "ロ", $a8 + charmap "ワ", $a9 + charmap "ヲ", $aa + charmap "ン", $ab + charmap "ッ", $ac + charmap "ャ", $ad + charmap "ュ", $ae + charmap "ョ", $af + charmap "ィ", $b0 + charmap "あ", $b1 + charmap "い", $b2 + charmap "う", $b3 + charmap "え", $b4 + charmap "お", $b5 + charmap "か", $b6 + charmap "き", $b7 + charmap "く", $b8 + charmap "け", $b9 + charmap "こ", $ba + charmap "さ", $bb + charmap "し", $bc + charmap "す", $bd + charmap "せ", $be + charmap "そ", $bf + charmap "た", $c0 + charmap "ち", $c1 + charmap "つ", $c2 + charmap "て", $c3 + charmap "と", $c4 + charmap "な", $c5 + charmap "に", $c6 + charmap "ぬ", $c7 + charmap "ね", $c8 + charmap "の", $c9 + charmap "は", $ca + charmap "ひ", $cb + charmap "ふ", $cc + charmap "へ", $cd + charmap "ほ", $ce + charmap "ま", $cf + charmap "み", $d0 + charmap "む", $d1 + charmap "め", $d2 + charmap "も", $d3 + charmap "や", $d4 + charmap "ゆ", $d5 + charmap "よ", $d6 + charmap "ら", $d7 + charmap "り", $d8 + charmap "る", $d9 + charmap "れ", $da + charmap "ろ", $db + charmap "わ", $dc + charmap "を", $dd + charmap "ん", $de + charmap "っ", $df + charmap "ゃ", $e0 + charmap "ゅ", $e1 + charmap "ょ", $e2 + charmap "ー", $e3 + + charmap "ァ", $e9 diff --git a/macros/enum.asm b/macros/enum.asm new file mode 100644 index 00000000..933f7b18 --- /dev/null +++ b/macros/enum.asm @@ -0,0 +1,40 @@ +; Enumerate variables + +enum_start: macro +if _NARG >= 1 +__enum__ = \1 +else +__enum__ = 0 +endc +if _NARG >= 2 +__enumdir__ = \2 +else +__enumdir__ = +1 +endc +endm + +enum: macro +\1 = __enum__ +__enum__ = __enum__ + __enumdir__ +endm + +enum_set: macro +__enum__ = \1 +endm + + +; Enumerate constants + +const_def: MACRO +const_value = 0 +ENDM + +const: MACRO +\1 EQU const_value +const_value = const_value + 1 +ENDM + +shift_const: MACRO +\1 EQU (1 << const_value) +const_value = const_value + 1 +ENDM diff --git a/macros/event.asm b/macros/event.asm new file mode 100644 index 00000000..c575b7ca --- /dev/null +++ b/macros/event.asm @@ -0,0 +1,1068 @@ + enum_start + + enum scall_command +scall: macro + db scall_command + dw \1 ; pointer + endm + + enum farscall_command +farscall: macro + db farscall_command + dba \1 + endm + + enum ptcall_command +ptcall: macro + db ptcall_command + dw \1 ; pointer + endm + + enum jump_command +jump: macro + db jump_command + dw \1 ; pointer + endm + + enum farjump_command +farjump: macro + db farjump_command + dba \1 + endm + + enum ptjump_command +ptjump: macro + db ptjump_command + dw \1 ; pointer + endm + + enum if_equal_command +if_equal: macro + db if_equal_command + db \1 ; byte + dw \2 ; pointer + endm + + enum if_not_equal_command +if_not_equal: macro + db if_not_equal_command + db \1 ; byte + dw \2 ; pointer + endm + + enum iffalse_command +iffalse: macro + db iffalse_command + dw \1 ; pointer + endm + + enum iftrue_command +iftrue: macro + db iftrue_command + dw \1 ; pointer + endm + + enum if_greater_than_command +if_greater_than: macro + db if_greater_than_command + db \1 ; byte + dw \2 ; pointer + endm + + enum if_less_than_command +if_less_than: macro + db if_less_than_command + db \1 ; byte + dw \2 ; pointer + endm + + enum jumpstd_command +jumpstd: macro + db jumpstd_command + dw \1 ; predefined_script + endm + + enum callstd_command +callstd: macro + db callstd_command + dw \1 ; predefined_script + endm + + enum callasm_command +callasm: macro + db callasm_command + dba \1 + endm + + enum special_command +special: macro + db special_command + dw (\1Special - SpecialsPointers) / 3 + endm + +add_special: MACRO +\1Special:: + dba \1 +ENDM + + enum ptcallasm_command +ptcallasm: macro + db ptcallasm_command + dw \1 ; asm + endm + + enum checkmaptriggers_command +checkmaptriggers: macro + db checkmaptriggers_command + map \1 ; map + endm + + enum domaptrigger_command +domaptrigger: macro + db domaptrigger_command + map \1 ; map + db \2 ; trigger_id + endm + + enum checktriggers_command +checktriggers: macro + db checktriggers_command + endm + + enum dotrigger_command +dotrigger: macro + db dotrigger_command + db \1 ; trigger_id + endm + + enum writebyte_command +writebyte: macro + db writebyte_command + db \1 ; value + endm + + enum addvar_command +addvar: macro + db addvar_command + db \1 ; value + endm + + enum random_command +random: macro + db random_command + db \1 ; input + endm + + enum checkver_command +checkver: macro + db checkver_command + endm + + enum copybytetovar_command +copybytetovar: macro + db copybytetovar_command + dw \1 ; address + endm + + enum copyvartobyte_command +copyvartobyte: macro + db copyvartobyte_command + dw \1 ; address + endm + + enum loadvar_command +loadvar: macro + db loadvar_command + dw \1 ; address + db \2 ; value + endm + + enum checkcode_command +checkcode: macro + db checkcode_command + db \1 ; variable_id + endm + + enum writevarcode_command +writevarcode: macro + db writevarcode_command + db \1 ; variable_id + endm + + enum writecode_command +writecode: macro + db writecode_command + db \1 ; variable_id + db \2 ; value + endm + + enum giveitem_command +giveitem: macro + db giveitem_command + db \1 ; item +if _NARG == 2 + db \2 ; quantity +else + db 1 +endc + endm + + enum takeitem_command +takeitem: macro + db takeitem_command + db \1 ; item +if _NARG == 2 + db \2 ; quantity +else + db 1 +endc + endm + + enum checkitem_command +checkitem: macro + db checkitem_command + db \1 ; item + endm + + enum givemoney_command +givemoney: macro + db givemoney_command + db \1 ; account + dt \2 ; money + endm + + enum takemoney_command +takemoney: macro + db takemoney_command + db \1 ; account + dt \2 ; money + endm + + enum checkmoney_command +checkmoney: macro + db checkmoney_command + db \1 ; account + dt \2 ; money + endm + + enum givecoins_command +givecoins: macro + db givecoins_command + dw \1 ; coins + endm + + enum takecoins_command +takecoins: macro + db takecoins_command + dw \1 ; coins + endm + + enum checkcoins_command +checkcoins: macro + db checkcoins_command + dw \1 ; coins + endm + + enum addcellnum_command +addcellnum: macro + db addcellnum_command + db \1 ; person + endm + + enum delcellnum_command +delcellnum: macro + db delcellnum_command + db \1 ; person + endm + + enum checkcellnum_command +checkcellnum: macro + db checkcellnum_command + db \1 ; person + endm + + enum checktime_command +checktime: macro + db checktime_command + db \1 ; time + endm + +checkmorn EQUS "checktime 1 << MORN" +checkday EQUS "checktime 1 << DAY" +checknite EQUS "checktime 1 << NITE" + + enum checkpoke_command +checkpoke: macro + db checkpoke_command + db \1 ; pkmn + endm + + enum givepoke_command +givepoke: macro + db givepoke_command + db \1 ; pokemon + db \2 ; level + if _NARG >= 3 + db \3 ; item + if _NARG >= 4 + db \4 ; trainer + if \4 + dw \5 ; trainer_name_pointer + dw \6 ; pkmn_nickname + endc + else + db 0 + endc + else + db 0, 0 + endc + endm + + enum giveegg_command +giveegg: macro + db giveegg_command + db \1 ; pkmn + db \2 ; level + endm + + enum givepokeitem_command +givepokeitem: macro + db givepokeitem_command + dw \1 ; pointer + endm + + enum checkpokeitem_command +checkpokeitem: macro + db checkpokeitem_command + dw \1 ; pointer + endm + + enum checkevent_command +checkevent: macro + db checkevent_command + dw \1 ; event_flag + endm + + enum clearevent_command +clearevent: macro + db clearevent_command + dw \1 ; event_flag + endm + + enum setevent_command +setevent: macro + db setevent_command + dw \1 ; event_flag + endm + + enum checkflag_command +checkflag: macro + db checkflag_command + dw \1 ; engine_flag + endm + + enum clearflag_command +clearflag: macro + db clearflag_command + dw \1 ; engine_flag + endm + + enum setflag_command +setflag: macro + db setflag_command + dw \1 ; engine_flag + endm + + enum wildon_command +wildon: macro + db wildon_command + endm + + enum wildoff_command +wildoff: macro + db wildoff_command + endm + + enum xycompare_command +xycompare: macro + db xycompare_command + dw \1 ; pointer + endm + + enum warpmod_command +warpmod: macro + db warpmod_command + db \1 ; warp_id + map \2 ; map + endm + + enum blackoutmod_command +blackoutmod: macro + db blackoutmod_command + map \1 ; map + endm + + enum warp_command +warp: macro + db warp_command + map \1 ; map + db \2 ; x + db \3 ; y + endm + + enum readmoney_command +readmoney: macro + db readmoney_command + db \1 ; account + db \2 ; memory + endm + + enum readcoins_command +readcoins: macro + db readcoins_command + db \1 ; memory + endm + + enum RAM2MEM_command +RAM2MEM: macro + db RAM2MEM_command + db \1 ; memory + endm + + enum pokenamemem_command +pokenamemem: macro + db pokenamemem_command + db \1 ; pokemon + db \2 ; memory + endm + + enum itemtotext_command +itemtotext: macro + db itemtotext_command + db \1 ; item + db \2 ; memory + endm + + enum mapnametotext_command +mapnametotext: macro + db mapnametotext_command + db \1 ; memory + endm + + enum trainertotext_command +trainertotext: macro + db trainertotext_command + db \1 ; trainer_id + db \2 ; trainer_group + db \3 ; memory + endm + + enum stringtotext_command +stringtotext: macro + db stringtotext_command + dw \1 ; text_pointer + db \2 ; memory + endm + + enum itemnotify_command +itemnotify: macro + db itemnotify_command + endm + + enum pocketisfull_command +pocketisfull: macro + db pocketisfull_command + endm + + enum opentext_command +opentext: macro + db opentext_command + endm + + enum refreshscreen_command +refreshscreen: macro + db refreshscreen_command + db \1 ; dummy + endm + + enum closetext_command +closetext: macro + db closetext_command + endm + + enum loadbytec2cf_command +loadbytec2cf: macro + db loadbytec2cf_command + db \1 ; byte + endm + + enum farwritetext_command +farwritetext: macro + db farwritetext_command + dba \1 + endm + + enum writetext_command +writetext: macro + db writetext_command + dw \1 ; text_pointer + endm + + enum repeattext_command +repeattext: macro + db repeattext_command + db \1 ; byte + db \2 ; byte + endm + + enum yesorno_command +yesorno: macro + db yesorno_command + endm + + enum loadmenudata_command +loadmenudata: macro + db loadmenudata_command + dw \1 ; data + endm + + enum closewindow_command +closewindow: macro + db closewindow_command + endm + + enum jumptextfaceplayer_command +jumptextfaceplayer: macro + db jumptextfaceplayer_command + dw \1 ; text_pointer + endm + +; IF _CRYSTAL + enum farjumptext_command +farjumptext: macro + db farjumptext_command + dba \1 + endm +; ENDC + + enum jumptext_command +jumptext: macro + db jumptext_command + dw \1 ; text_pointer + endm + + enum waitbutton_command +waitbutton: macro + db waitbutton_command + endm + + enum buttonsound_command +buttonsound: macro + db buttonsound_command + endm + + enum pokepic_command +pokepic: macro + db pokepic_command + db \1 ; pokemon + endm + + enum closepokepic_command +closepokepic: macro + db closepokepic_command + endm + + enum _2dmenu_command +_2dmenu: macro + db _2dmenu_command + endm + + enum verticalmenu_command +verticalmenu: macro + db verticalmenu_command + endm + + enum loadpikachudata_command +loadpikachudata: macro + db loadpikachudata_command + endm + + enum randomwildmon_command +randomwildmon: macro + db randomwildmon_command + endm + + enum loadmemtrainer_command +loadmemtrainer: macro + db loadmemtrainer_command + endm + + enum loadwildmon_command +loadwildmon: macro + db loadwildmon_command + db \1 ; pokemon + db \2 ; level + endm + + enum loadtrainer_command +loadtrainer: macro + db loadtrainer_command + db \1 ; trainer_group + db \2 ; trainer_id + endm + + enum startbattle_command +startbattle: macro + db startbattle_command + endm + + enum reloadmapafterbattle_command +reloadmapafterbattle: macro + db reloadmapafterbattle_command + endm + + enum catchtutorial_command +catchtutorial: macro + db catchtutorial_command + db \1 ; byte + endm + + enum trainertext_command +trainertext: macro + db trainertext_command + db \1 ; which_text + endm + + enum trainerflagaction_command +trainerflagaction: macro + db trainerflagaction_command + db \1 ; action + endm + + enum winlosstext_command +winlosstext: macro + db winlosstext_command + dw \1 ; win_text_pointer + dw \2 ; loss_text_pointer + endm + + enum scripttalkafter_command +scripttalkafter: macro + db scripttalkafter_command + endm + + enum end_if_just_battled_command +end_if_just_battled: macro + db end_if_just_battled_command + endm + + enum check_just_battled_command +check_just_battled: macro + db check_just_battled_command + endm + + enum setlasttalked_command +setlasttalked: macro + db setlasttalked_command + db \1 ; person + endm + + enum applymovement_command +applymovement: macro + db applymovement_command + db \1 ; person + dw \2 ; data + endm + + enum applymovement2_command +applymovement2: macro + db applymovement2_command + dw \1 ; data + endm + + enum faceplayer_command +faceplayer: macro + db faceplayer_command + endm + + enum faceperson_command +faceperson: macro + db faceperson_command + db \1 ; person1 + db \2 ; person2 + endm + + enum variablesprite_command +variablesprite: macro + db variablesprite_command + db \1 - SPRITE_VARS ; byte + db \2 ; sprite + endm + + enum disappear_command +disappear: macro + db disappear_command + db \1 ; person + endm + + enum appear_command +appear: macro + db appear_command + db \1 ; person + endm + + enum follow_command +follow: macro + db follow_command + db \1 ; person2 + db \2 ; person1 + endm + + enum stopfollow_command +stopfollow: macro + db stopfollow_command + endm + + enum moveperson_command +moveperson: macro + db moveperson_command + db \1 ; person + db \2 ; x + db \3 ; y + endm + + enum writepersonxy_command +writepersonxy: macro + db writepersonxy_command + db \1 ; person + endm + + enum loademote_command +loademote: macro + db loademote_command + db \1 ; bubble + endm + + enum showemote_command +showemote: macro + db showemote_command + db \1 ; bubble + db \2 ; person + db \3 ; time + endm + + enum spriteface_command +spriteface: macro + db spriteface_command + db \1 ; person + db \2 ; facing + endm + + enum follownotexact_command +follownotexact: macro + db follownotexact_command + db \1 ; person2 + db \2 ; person1 + endm + + enum earthquake_command +earthquake: macro + db earthquake_command + db \1 ; param + endm + + enum changemap_command +changemap: macro + db changemap_command + db \1 ; map_bank + dw \2 ; map_data_pointer + endm + + enum changeblock_command +changeblock: macro + db changeblock_command + db \1 ; x + db \2 ; y + db \3 ; block + endm + + enum reloadmap_command +reloadmap: macro + db reloadmap_command + endm + + enum reloadmappart_command +reloadmappart: macro + db reloadmappart_command + endm + + enum writecmdqueue_command +writecmdqueue: macro + db writecmdqueue_command + dw \1 ; queue_pointer + endm + + enum delcmdqueue_command +delcmdqueue: macro + db delcmdqueue_command + db \1 ; byte + endm + + enum playmusic_command +playmusic: macro + db playmusic_command + dw \1 ; music_pointer + endm + + enum encountermusic_command +encountermusic: macro + db encountermusic_command + endm + + enum musicfadeout_command +musicfadeout: macro + db musicfadeout_command + dw \1 ; music + db \2 ; fadetime + endm + + enum playmapmusic_command +playmapmusic: macro + db playmapmusic_command + endm + + enum dontrestartmapmusic_command +dontrestartmapmusic: macro + db dontrestartmapmusic_command + endm + + enum cry_command +cry: macro + db cry_command + dw \1 ; cry_id + endm + + enum playsound_command +playsound: macro + db playsound_command + dw \1 ; sound_pointer + endm + + enum waitsfx_command +waitsfx: macro + db waitsfx_command + endm + + enum warpsound_command +warpsound: macro + db warpsound_command + endm + + enum specialsound_command +specialsound: macro + db specialsound_command + endm + + enum passtoengine_command +passtoengine: macro + db passtoengine_command + db \1 ; data_pointer + endm + + enum newloadmap_command +newloadmap: macro + db newloadmap_command + db \1 ; which_method + endm + + enum pause_command +pause: macro + db pause_command + db \1 ; length + endm + + enum deactivatefacing_command +deactivatefacing: macro + db deactivatefacing_command + db \1 ; time + endm + + enum priorityjump_command +priorityjump: macro + db priorityjump_command + dw \1 ; pointer + endm + + enum warpcheck_command +warpcheck: macro + db warpcheck_command + endm + + enum ptpriorityjump_command +ptpriorityjump: macro + db ptpriorityjump_command + dw \1 ; pointer + endm + + enum return_command +return: macro + db return_command + endm + + enum end_command +end: macro + db end_command + endm + + enum reloadandreturn_command +reloadandreturn: macro + db reloadandreturn_command + db \1 ; which_method + endm + + enum end_all_command +end_all: macro + db end_all_command + endm + + enum pokemart_command +pokemart: macro + db pokemart_command + db \1 ; dialog_id + dw \2 ; mart_id + endm + + enum elevator_command +elevator: macro + db elevator_command + dw \1 ; floor_list_pointer + endm + + enum trade_command +trade: macro + db trade_command + db \1 ; trade_id + endm + + enum askforphonenumber_command +askforphonenumber: macro + db askforphonenumber_command + db \1 ; number + endm + + enum phonecall_command +phonecall: macro + db phonecall_command + dw \1 ; caller_name + endm + + enum hangup_command +hangup: macro + db hangup_command + endm + + enum describedecoration_command +describedecoration: macro + db describedecoration_command + db \1 ; byte + endm + + enum fruittree_command +fruittree: macro + db fruittree_command + db \1 ; tree_id + endm + + enum specialphonecall_command +specialphonecall: macro + db specialphonecall_command + dw \1 ; call_id + endm + + enum checkphonecall_command +checkphonecall: macro + db checkphonecall_command + endm + + enum verbosegiveitem_command +verbosegiveitem: macro + db verbosegiveitem_command + db \1 ; item +if _NARG == 2 + db \2 ; quantity +else + db 1 +endc + endm + + enum verbosegiveitem2_command +verbosegiveitem2: macro + db verbosegiveitem2_command + db \1 ; item + db \2 ; var + endm + + enum swarm_command +swarm: macro + db swarm_command + db \1 ; flag + map \2 ; map + endm + + enum halloffame_command +halloffame: macro + db halloffame_command + endm + + enum credits_command +credits: macro + db credits_command + endm + + enum warpfacing_command +warpfacing: macro + db warpfacing_command + db \1 ; facing + map \2 ; map + db \3 ; x + db \4 ; y + endm + + enum battletowertext_command +battletowertext: macro + db battletowertext_command + db \1 ; memory + endm + + enum landmarktotext_command +landmarktotext: macro + db landmarktotext_command + db \1 ; id + db \2 ; memory + endm + + enum trainerclassname_command +trainerclassname: macro + db trainerclassname_command + db \1 ; id + db \2 ; memory + endm + + enum name_command +name: macro + db name_command + db \1 ; type + db \2 ; id + db \3 ; memory + endm + + enum wait_command +wait: macro + db wait_command + db \1 ; duration + endm + + enum check_save_command +check_save: macro + db check_save_command + endm diff --git a/macros/map.asm b/macros/map.asm new file mode 100644 index 00000000..2e876577 --- /dev/null +++ b/macros/map.asm @@ -0,0 +1,189 @@ +map: MACRO + db GROUP_\1, MAP_\1 +ENDM + +roam_map: MACRO +; A map and an arbitrary number of some more maps. + + map \1 + db \2 + + rept \2 + map \3 + shift + endr + + db 0 +ENDM + +person_event: macro + db \1 ; sprite + db \2 + 4 ; y + db \3 + 4 ; x + db \4 ; movement function + dn \5, \6 ; radius: y, x + db \7 ; clock_hour + db \8 ; clock_daytime + shift + dn \8, \9 ; color_function + shift + db \9 ; sight_range + shift + dw \9 ; pointer + shift + dw \9 ; event flag + endm + +signpost: macro + db \1 ; y + db \2 ; x + db \3 ; function + dw \4 ; pointer + endm + +xy_trigger: macro + db \1 ; number + db \2 ; y + db \3 ; x + db \4 ; unknown1 + dw \5 ; script + db \6 ; unknown2 + db \7 ; unknown3 + endm + +warp_def: macro + db \1 ; y + db \2 ; x + db \3 ; warp_to + map \4 ; map + endm + + +map_header: MACRO + ; label, tileset, permission, location, music, phone service flag, time of day, fishing group +\1_MapHeader: + db BANK(\1_SecondMapHeader), \2, \3 + dw \1_SecondMapHeader + db \4, \5 + dn \6, \7 + db \8 +ENDM + + +map_header_2: MACRO +; label, map, border block, connections +\1_SecondMapHeader:: + db \3 + db \2_HEIGHT, \2_WIDTH + db BANK(\1_BlockData) + dw \1_BlockData + db BANK(\1_MapScriptHeader) + dw \1_MapScriptHeader + dw \1_MapEventHeader + db \4 +ENDM + +connection: MACRO +if "\1" == "north" +;\2: map id +;\3: map label (eventually will be rolled into map id) +;\4: x +;\5: offset? +;\6: strip length +;\7: this map id + map \2 + dw \3_BlockData + \2_WIDTH * (\2_HEIGHT - 3) + \5 + dw OverworldMap + \4 + 3 + db \6 + db \2_WIDTH + db \2_HEIGHT * 2 - 1 + db (\4 - \5) * -2 + dw OverworldMap + \2_HEIGHT * (\2_WIDTH + 6) + 1 +endc + +if "\1" == "south" +;\2: map id +;\3: map label (eventually will be rolled into map id) +;\4: x +;\5: offset? +;\6: strip length +;\7: this map id + map \2 + dw \3_BlockData + \5 + dw OverworldMap + (\7_HEIGHT + 3) * (\7_WIDTH + 6) + \4 + 3 + db \6 + db \2_WIDTH + db 0 + db (\4 - \5) * -2 + dw OverworldMap + \2_WIDTH + 7 +endc + +if "\1" == "west" +;\2: map id +;\3: map label (eventually will be rolled into map id) +;\4: y +;\5: offset? +;\6: strip length +;\7: this map id + map \2 + dw \3_BlockData + (\2_WIDTH * \5) + \2_WIDTH - 3 + dw OverworldMap + (\7_WIDTH + 6) * (\4 + 3) + db \6 + db \2_WIDTH + db (\4 - \5) * -2 + db \2_WIDTH * 2 - 1 + dw OverworldMap + \2_WIDTH * 2 + 6 +endc + +if "\1" == "east" +;\2: map id +;\3: map label (eventually will be rolled into map id) +;\4: y +;\5: offset? +;\6: strip length +;\7: this map id + map \2 + dw \3_BlockData + (\2_WIDTH * \5) + dw OverworldMap + (\7_WIDTH + 6) * (\4 + 3 + 1) - 3 + db \6 + db \2_WIDTH + db (\4 - \5) * -2 + db 0 + dw OverworldMap + \2_WIDTH + 7 +endc + +ENDM + +mapgroup: MACRO +GROUP_\1 EQU const_value + enum MAP_\1 +\1_HEIGHT EQU \2 +\1_WIDTH EQU \3 +ENDM + +newgroup: MACRO +const_value = const_value + 1 + enum_start 1 +ENDM + +elevfloor: MACRO + db \1, \2 + map \3 +ENDM + +itemball: MACRO +if _NARG == 2 + db \1, \2 +else + db \1, 1 +endc +endm + +stonetable: MACRO + db \1, \2 + dw \3 +endm + +maptrigger: MACRO + dw \1, 0 +endm diff --git a/macros/mobile.asm b/macros/mobile.asm new file mode 100644 index 00000000..06b40d69 --- /dev/null +++ b/macros/mobile.asm @@ -0,0 +1,2 @@ +; Many mobile functions were dummied out in localization. +mobile EQUS "ret" diff --git a/macros/move_anim.asm b/macros/move_anim.asm new file mode 100644 index 00000000..05faf253 --- /dev/null +++ b/macros/move_anim.asm @@ -0,0 +1,293 @@ +anim_wait: macro +if \1 >= $d0 + flip out +endc + db \1 + endm + + enum_start $d0 + + enum anim_obj_command ; d0 +anim_obj: macro + db anim_obj_command + db \1 ; obj + db (\2 << 3) + \3 ; x + db (\4 << 3) + \5 ; y + db \6 ; param + endm + + enum anim_1gfx_command ; d1 +anim_1gfx: macro + db anim_1gfx_command + db \1 ; gfx1 + endm + + enum anim_2gfx_command ; d2 +anim_2gfx: macro + db anim_2gfx_command + db \1 ; gfx1 + db \2 ; gfx2 + endm + + enum anim_3gfx_command ; d3 +anim_3gfx: macro + db anim_3gfx_command + db \1 ; gfx1 + db \2 ; gfx2 + db \3 ; gfx3 + endm + + enum anim_4gfx_command ; d4 +anim_4gfx: macro + db anim_4gfx_command + db \1 ; gfx1 + db \2 ; gfx2 + db \3 ; gfx3 + db \4 ; gfx4 + endm + + enum anim_5gfx_command ; d5 +anim_5gfx: macro + db anim_5gfx_command + db \1 ; gfx1 + db \2 ; gfx2 + db \3 ; gfx3 + db \4 ; gfx4 + db \5 ; gfx5 + endm + + enum anim_incobj_command ; d6 +anim_incobj: macro + db anim_incobj_command + db \1 ; id + endm + + enum anim_setobj_command ; d7 +anim_setobj: macro + db anim_setobj_command + db \1 ; id + db \2 ; obj + endm + + enum anim_incbgeffect_command ; d8 +anim_incbgeffect: macro + db anim_incbgeffect_command + db \1 ; effect + endm + + enum anim_enemyfeetobj_command ; d9 +anim_enemyfeetobj: macro + db anim_enemyfeetobj_command + endm + + enum anim_playerheadobj_command ; da +anim_playerheadobj: macro + db anim_playerheadobj_command + endm + + enum anim_checkpokeball_command ; db +anim_checkpokeball: macro + db anim_checkpokeball_command + endm + + enum anim_transform_command ; dc +anim_transform: macro + db anim_transform_command + endm + + enum anim_raisesub_command ; dd +anim_raisesub: macro + db anim_raisesub_command + endm + + enum anim_dropsub_command ; de +anim_dropsub: macro + db anim_dropsub_command + endm + + enum anim_resetobp0_command ; df +anim_resetobp0: macro + db anim_resetobp0_command + endm + + enum anim_sound_command ; e0 +anim_sound: macro + db anim_sound_command + db (\1 << 2) | \2 ; duration, tracks + db \3 ; id + endm + + enum anim_cry_command ; e1 +anim_cry: macro + db anim_cry_command + db \1 ; pitch + endm + + enum anim_minimizeopp_command ; e2 +anim_minimizeopp: macro + db anim_minimizeopp_command + endm + + enum anim_oamon_command ; e3 +anim_oamon: macro + db anim_oamon_command + endm + + enum anim_oamoff_command ; e4 +anim_oamoff: macro + db anim_oamoff_command + endm + + enum anim_clearobjs_command ; e5 +anim_clearobjs: macro + db anim_clearobjs_command + endm + + enum anim_beatup_command ; e6 +anim_beatup: macro + db anim_beatup_command + endm + + enum anim_0xe7_command ; e7 +anim_0xe7: macro + db anim_0xe7_command + endm + + enum anim_updateactorpic_command ; e8 +anim_updateactorpic: macro + db anim_updateactorpic_command + endm + + enum anim_minimize_command ; e9 +anim_minimize: macro + db anim_minimize_command + endm + + enum anim_0xea_command ; ea +anim_0xea: macro + db anim_0xea_command + endm + + enum anim_0xeb_command ; eb +anim_0xeb: macro + db anim_0xeb_command + endm + + enum anim_0xec_command ; ec +anim_0xec: macro + db anim_0xec_command + endm + + enum anim_0xed_command ; ed +anim_0xed: macro + db anim_0xed_command + endm + + enum anim_jumpand_command ; ee +anim_jumpand: macro + db anim_jumpand_command + db \1 ; value + dw \2 ; address + endm + + enum anim_jumpuntil_command ; ef +anim_jumpuntil: macro + db anim_jumpuntil_command + dw \1 ; address + endm + + enum anim_bgeffect_command ; f0 +anim_bgeffect: macro + db anim_bgeffect_command + db \1 ; effect + db \2 ; unknown + db \3 ; unknown + db \4 ; unknown + endm + + enum anim_bgp_command ; f1 +anim_bgp: macro + db anim_bgp_command + db \1 ; colors + endm + + enum anim_obp0_command ; f2 +anim_obp0: macro + db anim_obp0_command + db \1 ; colors + endm + + enum anim_obp1_command ; f3 +anim_obp1: macro + db anim_obp1_command + db \1 ; colors + endm + + enum anim_clearsprites_command ; f4 +anim_clearsprites: macro + db anim_clearsprites_command + endm + + enum anim_0xf5_command ; f5 +anim_0xf5: macro + db anim_0xf5_command + endm + + enum anim_0xf6_command ; f6 +anim_0xf6: macro + db anim_0xf6_command + endm + + enum anim_0xf7_command ; f7 +anim_0xf7: macro + db anim_0xf7_command + endm + + enum anim_jumpif_command ; f8 +anim_jumpif: macro + db anim_jumpif_command + db \1 ; value + dw \2 ; address + endm + + enum anim_setvar_command ; f9 +anim_setvar: macro + db anim_setvar_command + db \1 ; value + endm + + enum anim_incvar_command ; fa +anim_incvar: macro + db anim_incvar_command + endm + + enum anim_jumpvar_command ; fb +anim_jumpvar: macro + db anim_jumpvar_command + db \1 ; value + dw \2 ; address + endm + + enum anim_jump_command ; fc +anim_jump: macro + db anim_jump_command + dw \1 ; address + endm + + enum anim_loop_command ; fd +anim_loop: macro + db anim_loop_command + db \1 ; count + dw \2 ; address + endm + + enum anim_call_command ; fe +anim_call: macro + db anim_call_command + dw \1 ; address + endm + + enum anim_ret_command ; ff +anim_ret: macro + db anim_ret_command + endm diff --git a/macros/move_effect.asm b/macros/move_effect.asm new file mode 100644 index 00000000..d25db45b --- /dev/null +++ b/macros/move_effect.asm @@ -0,0 +1,186 @@ +command: macro + enum \1_command +\1 equs "db \1_command" +endm + + enum_start 1 + + command checkturn + command checkobedience + command usedmovetext + command doturn + command critical + command damagestats + command stab + command damagevariation + command checkhit + command lowersub + command hittargetnosub + command raisesub + command failuretext + command checkfaint + command criticaltext + command supereffectivetext + command checkdestinybond + command buildopponentrage + command poisontarget + command sleeptarget + command draintarget + command eatdream + command burntarget + command freezetarget + command paralyzetarget + command selfdestruct + command mirrormove + command statup + command statdown + command payday + command conversion + command resetstats + command storeenergy + command unleashenergy + command forceswitch + command endloop + command flinchtarget + command ohko + command recoil + command mist + command focusenergy + command confuse + command confusetarget + command heal + command transform + command screen + command poison + command paralyze + command substitute + command rechargenextturn + command mimic + command metronome + command leechseed + command splash + command disable + command cleartext + command charge + command checkcharge + command traptarget + command effect0x3c + command rampage + command checkrampage + command constantdamage + command counter + command encore + command painsplit + command snore + command conversion2 + command lockon + command sketch + command defrostopponent + command sleeptalk + command destinybond + command spite + command falseswipe + command healbell + command kingsrock + command triplekick + command kickcounter + command thief + command arenatrap + command nightmare + command defrost + command curse + command protect + command spikes + command foresight + command perishsong + command startsandstorm + command endure + command checkcurl + command rolloutpower + command effect0x5d + command furycutter + command attract + command happinesspower + command present + command damagecalc + command frustrationpower + command safeguard + command checksafeguard + command getmagnitude + command batonpass + command pursuit + command clearhazards + command healmorn + command healday + command healnite + command hiddenpower + command startrain + command startsun + command attackup + command defenseup + command speedup + command specialattackup + command specialdefenseup + command accuracyup + command evasionup + command attackup2 + command defenseup2 + command speedup2 + command specialattackup2 + command specialdefenseup2 + command accuracyup2 + command evasionup2 + command attackdown + command defensedown + command speeddown + command specialattackdown + command specialdefensedown + command accuracydown + command evasiondown + command attackdown2 + command defensedown2 + command speeddown2 + command specialattackdown2 + command specialdefensedown2 + command accuracydown2 + command evasiondown2 + command statupmessage + command statdownmessage + command statupfailtext + command statdownfailtext + command effectchance + command statdownanim + command statupanim + command switchturn + command fakeout + command bellydrum + command psychup + command rage + command doubleflyingdamage + command doubleundergrounddamage + command mirrorcoat + command checkfuturesight + command futuresight + command doubleminimizedamage + command skipsuncharge + command thunderaccuracy + command teleport + command beatup + command ragedamage + command resettypematchup + command allstatsup + command effect0xa5 + command raisesubnoanim + command lowersubnoanim + command effect0xa8 + command clearmissdamage + command movedelay + command hittarget + command tristatuschance + command supereffectivelooptext + command startloop + command curl + + enum_start -1, -1 + command endmove + command endturn diff --git a/macros/movement.asm b/macros/movement.asm new file mode 100644 index 00000000..fd4852e8 --- /dev/null +++ b/macros/movement.asm @@ -0,0 +1,444 @@ + + enum_start + + enum movement_turn_head_down +turn_head_down: macro + db movement_turn_head_down ; $00 + endm + + enum movement_turn_head_up +turn_head_up: macro + db movement_turn_head_up ; $01 + endm + + enum movement_turn_head_left +turn_head_left: macro + db movement_turn_head_left ; $02 + endm + + enum movement_turn_head_right +turn_head_right: macro + db movement_turn_head_right ; $03 + endm + + enum movement_turn_step_down +turn_step_down: macro + db movement_turn_step_down ; $04 + endm + + enum movement_turn_step_up +turn_step_up: macro + db movement_turn_step_up ; $05 + endm + + enum movement_turn_step_left +turn_step_left: macro + db movement_turn_step_left ; $06 + endm + + enum movement_turn_step_right +turn_step_right: macro + db movement_turn_step_right ; $07 + endm + + enum movement_slow_step_down +slow_step_down: macro + db movement_slow_step_down ; $08 + endm + + enum movement_slow_step_up +slow_step_up: macro + db movement_slow_step_up ; $09 + endm + + enum movement_slow_step_left +slow_step_left: macro + db movement_slow_step_left ; $0a + endm + + enum movement_slow_step_right +slow_step_right: macro + db movement_slow_step_right ; $0b + endm + + enum movement_step_down +step_down: macro + db movement_step_down ; $0c + endm + + enum movement_step_up +step_up: macro + db movement_step_up ; $0d + endm + + enum movement_step_left +step_left: macro + db movement_step_left ; $0e + endm + + enum movement_step_right +step_right: macro + db movement_step_right ; $0f + endm + + enum movement_big_step_down +big_step_down: macro + db movement_big_step_down ; $10 + endm + + enum movement_big_step_up +big_step_up: macro + db movement_big_step_up ; $11 + endm + + enum movement_big_step_left +big_step_left: macro + db movement_big_step_left ; $12 + endm + + enum movement_big_step_right +big_step_right: macro + db movement_big_step_right ; $13 + endm + + enum movement_slow_slide_step_down +slow_slide_step_down: macro + db movement_slow_slide_step_down ; $14 + endm + + enum movement_slow_slide_step_up +slow_slide_step_up: macro + db movement_slow_slide_step_up ; $15 + endm + + enum movement_slow_slide_step_left +slow_slide_step_left: macro + db movement_slow_slide_step_left ; $16 + endm + + enum movement_slow_slide_step_right +slow_slide_step_right: macro + db movement_slow_slide_step_right ; $17 + endm + + enum movement_slide_step_down +slide_step_down: macro + db movement_slide_step_down ; $18 + endm + + enum movement_slide_step_up +slide_step_up: macro + db movement_slide_step_up ; $19 + endm + + enum movement_slide_step_left +slide_step_left: macro + db movement_slide_step_left ; $1a + endm + + enum movement_slide_step_right +slide_step_right: macro + db movement_slide_step_right ; $1b + endm + + enum movement_fast_slide_step_down +fast_slide_step_down: macro + db movement_fast_slide_step_down ; $1c + endm + + enum movement_fast_slide_step_up +fast_slide_step_up: macro + db movement_fast_slide_step_up ; $1d + endm + + enum movement_fast_slide_step_left +fast_slide_step_left: macro + db movement_fast_slide_step_left ; $1e + endm + + enum movement_fast_slide_step_right +fast_slide_step_right: macro + db movement_fast_slide_step_right ; $1f + endm + + enum movement_turn_away_down +turn_away_down: macro + db movement_turn_away_down ; $20 + endm + + enum movement_turn_away_up +turn_away_up: macro + db movement_turn_away_up ; $21 + endm + + enum movement_turn_away_left +turn_away_left: macro + db movement_turn_away_left ; $22 + endm + + enum movement_turn_away_right +turn_away_right: macro + db movement_turn_away_right ; $23 + endm + + enum movement_turn_in_down +turn_in_down: macro + db movement_turn_in_down ; $24 + endm + + enum movement_turn_in_up +turn_in_up: macro + db movement_turn_in_up ; $25 + endm + + enum movement_turn_in_left +turn_in_left: macro + db movement_turn_in_left ; $26 + endm + + enum movement_turn_in_right +turn_in_right: macro + db movement_turn_in_right ; $27 + endm + + enum movement_turn_waterfall_down +turn_waterfall_down: macro + db movement_turn_waterfall_down ; $28 + endm + + enum movement_turn_waterfall_up +turn_waterfall_up: macro + db movement_turn_waterfall_up ; $29 + endm + + enum movement_turn_waterfall_left +turn_waterfall_left: macro + db movement_turn_waterfall_left ; $2a + endm + + enum movement_turn_waterfall_right +turn_waterfall_right: macro + db movement_turn_waterfall_right ; $2b + endm + + enum movement_slow_jump_step_down +slow_jump_step_down: macro + db movement_slow_jump_step_down ; $2c + endm + + enum movement_slow_jump_step_up +slow_jump_step_up: macro + db movement_slow_jump_step_up ; $2d + endm + + enum movement_slow_jump_step_left +slow_jump_step_left: macro + db movement_slow_jump_step_left ; $2e + endm + + enum movement_slow_jump_step_right +slow_jump_step_right: macro + db movement_slow_jump_step_right ; $2f + endm + + enum movement_jump_step_down +jump_step_down: macro + db movement_jump_step_down ; $30 + endm + + enum movement_jump_step_up +jump_step_up: macro + db movement_jump_step_up ; $31 + endm + + enum movement_jump_step_left +jump_step_left: macro + db movement_jump_step_left ; $32 + endm + + enum movement_jump_step_right +jump_step_right: macro + db movement_jump_step_right ; $33 + endm + + enum movement_fast_jump_step_down +fast_jump_step_down: macro + db movement_fast_jump_step_down ; $34 + endm + + enum movement_fast_jump_step_up +fast_jump_step_up: macro + db movement_fast_jump_step_up ; $35 + endm + + enum movement_fast_jump_step_left +fast_jump_step_left: macro + db movement_fast_jump_step_left ; $36 + endm + + enum movement_fast_jump_step_right +fast_jump_step_right: macro + db movement_fast_jump_step_right ; $37 + endm + +__enum__ = $3a + + enum movement_remove_fixed_facing +remove_fixed_facing: macro + db movement_remove_fixed_facing ; $3a + endm + + enum movement_fix_facing +fix_facing: macro + db movement_fix_facing ; $3b + endm + + enum movement_show_person +show_person: macro + db movement_show_person ; $3c + endm + + enum movement_hide_person +hide_person: macro + db movement_hide_person ; $3d + endm + + enum movement_step_sleep_1 +step_sleep_1: macro + db movement_step_sleep_1 ; $3e + endm + + enum movement_step_sleep_2 +step_sleep_2: macro + db movement_step_sleep_2 ; $3f + endm + + enum movement_step_sleep_3 +step_sleep_3: macro + db movement_step_sleep_3 ; $40 + endm + + enum movement_step_sleep_4 +step_sleep_4: macro + db movement_step_sleep_4 ; $41 + endm + + enum movement_step_sleep_5 +step_sleep_5: macro + db movement_step_sleep_5 ; $42 + endm + + enum movement_step_sleep_6 +step_sleep_6: macro + db movement_step_sleep_6 ; $43 + endm + + enum movement_step_sleep_7 +step_sleep_7: macro + db movement_step_sleep_7 ; $44 + endm + + enum movement_step_sleep_8 +step_sleep_8: macro + db movement_step_sleep_8 ; $45 + endm + + enum movement_step_sleep +step_sleep: macro + db movement_step_sleep ; $46 + db \1 ; duration + endm + + enum movement_step_end +step_end: macro + db movement_step_end ; $47 + endm + +; Whatever Movement_48 is, it takes a one-byte parameter + +__enum__ = $49 + + enum movement_remove_person +remove_person: macro + db movement_remove_person ; $49 + endm + + enum movement_step_loop +step_loop: macro + db movement_step_loop ; $4a + endm + + enum movement_step_4b +step_4b: macro + db movement_step_4b ; $4b + endm + + enum movement_teleport_from +teleport_from: macro + db movement_teleport_from ; $4c + endm + + enum movement_teleport_to +teleport_to: macro + db movement_teleport_to ; $4d + endm + + enum movement_skyfall +skyfall: macro + db movement_skyfall ; $4e + endm + + enum movement_step_dig +step_dig: macro + db movement_step_dig ; $4f + db \1 + endm + + enum movement_step_bump +step_bump: macro + db movement_step_bump ; $50 + endm + + enum movement_fish_got_bite +fish_got_bite: macro + db movement_fish_got_bite ; $51 + endm + + enum movement_fish_cast_rod +fish_cast_rod: macro + db movement_fish_cast_rod ; $52 + endm + + enum movement_hide_emote +hide_emote: macro + db movement_hide_emote ; $53 + endm + + enum movement_show_emote +show_emote: macro + db movement_show_emote ; $54 + endm + + enum movement_step_shake +step_shake: macro + db movement_step_shake ; $55 + db \1 ; displacement + endm + +__enum__ = $57 + enum movement_rock_smash +rock_smash: macro + db movement_rock_smash ; $57 + db \1 + endm + + enum movement_return_dig +return_dig: macro + db movement_return_dig ; $58 + db \1 + endm + + enum movement_skyfall_top +skyfall_top: macro + db movement_skyfall_top ; $59 + endm diff --git a/macros/pic.asm b/macros/pic.asm new file mode 100644 index 00000000..a01ce7a3 --- /dev/null +++ b/macros/pic.asm @@ -0,0 +1,4 @@ +add_pic: MACRO + db BANK(\1) - $36 + dw \1 +ENDM diff --git a/macros/predef.asm b/macros/predef.asm new file mode 100644 index 00000000..b99c6e1f --- /dev/null +++ b/macros/predef.asm @@ -0,0 +1,20 @@ +add_predef: MACRO +\1Predef:: + dwb \1, BANK(\1) +ENDM + +predef_id: MACRO +; Some functions load the predef id +; without immediately calling Predef. + ld a, (\1Predef - PredefPointers) / 3 +ENDM + +predef: MACRO + predef_id \1 + call Predef +ENDM + +predef_jump: MACRO + predef_id \1 + jp Predef +ENDM diff --git a/macros/rst.asm b/macros/rst.asm new file mode 100644 index 00000000..50259c96 --- /dev/null +++ b/macros/rst.asm @@ -0,0 +1,17 @@ +FarCall EQU $08 +Bankswitch EQU $10 +JumpTable EQU $28 + +farcall: MACRO ; bank, address + ld a, BANK(\1) + ld hl, \1 + rst FarCall + ENDM + +callba EQUS "farcall" + +callab: MACRO ; address, bank + ld hl, \1 + ld a, BANK(\1) + rst FarCall + ENDM diff --git a/macros/sound.asm b/macros/sound.asm new file mode 100644 index 00000000..82ef6a31 --- /dev/null +++ b/macros/sound.asm @@ -0,0 +1,264 @@ +note: MACRO + dn (\1), (\2) - 1 + ENDM + +sound: macro + note \1, \2 + db \3 ; intensity + dw \4 ; frequency + endm + +noise: macro + note \1, \2 ; duration + db \3 ; intensity + db \4 ; frequency + endm + +musicheader: macro + ; number of tracks, which track, address + dbw ((\1 - 1) << 6) + (\2 - 1), \3 + endm + +cry_header: macro + dw \1, \2, \3 + endm + + enum_start $d8 + enum notetype_cmd +octave: macro + db notetype_cmd - (\1) + endm + +notetype: macro ; d8 + db notetype_cmd + db \1 ; note_length + if _NARG >= 2 + db \2 ; intensity + endc + endm + + enum forceoctave_cmd +forceoctave: macro ; d9 + db forceoctave_cmd + db \1 ; octave + endm + + enum tempo_cmd +tempo: macro ; da + db tempo_cmd + bigdw \1 ; tempo + endm + + enum dutycycle_cmd +dutycycle: macro ; db + db dutycycle_cmd + db \1 ; duty_cycle + endm + + enum intensity_cmd +intensity: macro ; dc + db intensity_cmd + db \1 ; intensity + endm + + enum soundinput_cmd +soundinput: macro ; dd + db soundinput_cmd + db \1 ; input + endm + + enum unknownmusic0xde_cmd +unknownmusic0xde: macro ; de + db unknownmusic0xde_cmd + db \1 ; unknown + endm + + enum togglesfx_cmd +togglesfx: macro ; df + db togglesfx_cmd + endm + + enum unknownmusic0xe0_cmd +unknownmusic0xe0: macro ; e0 + db unknownmusic0xe0_cmd + db \1 ; unknown + ; db \2 ; unknown + dn \2, \3 ; octave, pitch + endm + + enum vibrato_cmd +vibrato: macro ; e1 + db vibrato_cmd + db \1 ; delay + db \2 ; extent + endm + + enum unknownmusic0xe2_cmd +unknownmusic0xe2: macro ; e2 + db unknownmusic0xe2_cmd + db \1 ; unknown + endm + + enum togglenoise_cmd +togglenoise: macro ; e3 + db togglenoise_cmd + db \1 ; id + endm + + enum panning_cmd +panning: macro ; e4 + db panning_cmd + db \1 ; tracks + endm + + enum volume_cmd +volume: macro ; e5 + db volume_cmd + db \1 ; volume + endm + + enum tone_cmd +tone: macro ; e6 + db tone_cmd + bigdw \1 ; tone + endm + + enum unknownmusic0xe7_cmd +unknownmusic0xe7: macro ; e7 + db unknownmusic0xe7_cmd + db \1 ; unknown + endm + + enum unknownmusic0xe8_cmd +unknownmusic0xe8: macro ; e8 + db unknownmusic0xe8_cmd + db \1 ; unknown + endm + + enum tempo_relative_cmd +tempo_relative: macro ; e9 + db tempo_relative_cmd + bigdw \1 ; value + endm + + enum restartchannel_cmd +restartchannel: macro ; ea + db restartchannel_cmd + dw \1 ; address + endm + + enum newsong_cmd +newsong: macro ; eb + db newsong_cmd + bigdw \1 ; id + endm + + enum sfxpriorityon_cmd +sfxpriorityon: macro ; ec + db sfxpriorityon_cmd + endm + + enum sfxpriorityoff_cmd +sfxpriorityoff: macro ; ed + db sfxpriorityoff_cmd + endm + + enum unknownmusic0xee_cmd +unknownmusic0xee: macro ; ee + db unknownmusic0xee_cmd + dw \1 ; address + endm + + enum stereopanning_cmd +stereopanning: macro ; ef + db stereopanning_cmd + db \1 ; tracks + endm + + enum sfxtogglenoise_cmd +sfxtogglenoise: macro + db sfxtogglenoise_cmd + db \1 ; id + endm + + enum music0xf1_cmd +music0xf1: macro + db music0xf1_cmd + endm + + enum music0xf2_cmd +music0xf2: macro + db music0xf2_cmd + endm + + enum music0xf3_cmd +music0xf3: macro + db music0xf3_cmd + endm + + enum music0xf4_cmd +music0xf4: macro + db music0xf4_cmd + endm + + enum music0xf5_cmd +music0xf5: macro + db music0xf5_cmd + endm + + enum music0xf6_cmd +music0xf6: macro + db music0xf6_cmd + endm + + enum music0xf7_cmd +music0xf7: macro + db music0xf7_cmd + endm + + enum music0xf8_cmd +music0xf8: macro + db music0xf8_cmd + endm + + enum unknownmusic0xf9_cmd +unknownmusic0xf9: macro + db unknownmusic0xf9_cmd + endm + + enum setcondition_cmd +setcondition: macro + db setcondition_cmd + db \1 ; condition + endm + + enum jumpif_cmd +jumpif: macro + db jumpif_cmd + db \1 ; condition + dw \2 ; address + endm + + enum jumpchannel_cmd +jumpchannel: macro + db jumpchannel_cmd + dw \1 ; address + endm + + enum loopchannel_cmd +loopchannel: macro ; fd + db loopchannel_cmd + db \1 ; count + dw \2 ; address + endm + + enum callchannel_cmd +callchannel: macro ; fe + db callchannel_cmd + dw \1 ; address + endm + + enum endchannel_cmd +endchannel: macro ; ff + db endchannel_cmd + endm diff --git a/macros/text.asm b/macros/text.asm new file mode 100644 index 00000000..37ce72d9 --- /dev/null +++ b/macros/text.asm @@ -0,0 +1,137 @@ +text EQUS "db $00," ; Start writing text. +next EQUS "db $4e," ; Move a line down. +line EQUS "db $4f," ; Start writing at the bottom line. +para EQUS "db $51," ; Start a new paragraph. +cont EQUS "db $55," ; Scroll to the next line. +done EQUS "db $57" ; End a text box. +prompt EQUS "db $58" ; Prompt the player to end a text box (initiating some other event). + +; 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. + +; TX_RAM EQU $01 +; TX_FAR EQU $16 + enum_start 1 + enum TX_RAM +text_from_ram: MACRO + db TX_RAM + dw \1 + ENDM + + enum TX_BCD +text_bcd: macro + db TX_BCD + dw \1 + db \2 + ENDM + + enum TX_MOVE +text_move: macro + db TX_MOVE + dw \1 + ENDM + + enum TX_BOX +text_box: macro + db TX_BOX + dw \1 + db \2, \3 + 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, digits + endm + + enum TX_EXIT +interpret_data: macro + db TX_EXIT + endm + + enum TX_SOUND_0B +sound_dex_fanfare_50_79: macro + db TX_SOUND_0B + endm + + enum TX_DOTS +limited_interpret_data: 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_STRINGBUFFER +text_buffer: macro + db TX_STRINGBUFFER + db \1 + endm + + enum TX_DAY +current_day: macro + db TX_DAY + endm + + enum TX_FAR +text_jump: MACRO + db TX_FAR + dw \1 + db BANK(\1) + ENDM diff --git a/macros/trade_anim.asm b/macros/trade_anim.asm new file mode 100755 index 00000000..eeaf1589 --- /dev/null +++ b/macros/trade_anim.asm @@ -0,0 +1,253 @@ + enum_start + enum tradeanim_next_command +tradeanim_next: macro + db tradeanim_next_command ; 00 +endm + + enum tradeanim_show_givemon_data_command +tradeanim_show_givemon_data: macro + db tradeanim_show_givemon_data_command ; 01 +endm + + enum tradeanim_show_getmon_data_command +tradeanim_show_getmon_data: macro + db tradeanim_show_getmon_data_command ; 02 +endm + + enum tradeanim_enter_link_tube_command +tradeanim_enter_link_tube: macro + db tradeanim_enter_link_tube_command ; 03 +endm + +__enum__ set $5 + + enum tradeanim_exit_link_tube_command +tradeanim_exit_link_tube: macro + db tradeanim_exit_link_tube_command ; 05 +endm + + enum tradeanim_tube_to_ot_command +tradeanim_tube_to_ot: macro + db tradeanim_tube_to_ot_command ; 06 +endm + +__enum__ set $e + + enum tradeanim_tube_to_player_command +tradeanim_tube_to_player: macro + db tradeanim_tube_to_player_command ; 0e +endm + +__enum__ set $16 + + enum tradeanim_sent_to_ot_text_command +tradeanim_sent_to_ot_text: macro + db tradeanim_sent_to_ot_text_command ; 16 +endm + + enum tradeanim_ot_bids_farewell_command +tradeanim_ot_bids_farewell: macro + db tradeanim_ot_bids_farewell_command ; 17 +endm + + enum tradeanim_take_care_of_text_command +tradeanim_take_care_of_text: macro + db tradeanim_take_care_of_text_command ; 18 +endm + + enum tradeanim_ot_sends_text_1_command +tradeanim_ot_sends_text_1: macro + db tradeanim_ot_sends_text_1_command ; 19 +endm + + enum tradeanim_ot_sends_text_2_command +tradeanim_ot_sends_text_2: macro + db tradeanim_ot_sends_text_2_command ; 1a +endm + + enum tradeanim_setup_givemon_scroll_command +tradeanim_setup_givemon_scroll: macro + db tradeanim_setup_givemon_scroll_command ; 1b +endm + + enum tradeanim_do_givemon_scroll_command +tradeanim_do_givemon_scroll: macro + db tradeanim_do_givemon_scroll_command ; 1c +endm + + enum tradeanim_1d_command +tradeanim_1d: macro + db tradeanim_1d_command ; 1d +endm + + enum tradeanim_1e_command +tradeanim_1e: macro + db tradeanim_1e_command ; 1e +endm + + enum tradeanim_scroll_out_right_command +tradeanim_scroll_out_right: macro + db tradeanim_scroll_out_right_command ; 1f +endm + +__enum__ set $21 + + enum tradeanim_wait_80_command +tradeanim_wait_80: macro + db tradeanim_wait_80_command ; 21 +endm + + enum tradeanim_wait_40_command +tradeanim_wait_40: macro + db tradeanim_wait_40_command ; 22 +endm + + enum tradeanim_rocking_ball_command +tradeanim_rocking_ball: macro + db tradeanim_rocking_ball_command ; 23 +endm + + enum tradeanim_drop_ball_command +tradeanim_drop_ball: macro + db tradeanim_drop_ball_command ; 24 +endm + + enum tradeanim_wait_anim_command +tradeanim_wait_anim: macro + db tradeanim_wait_anim_command ; 25 +endm + +__enum__ set $27 + + enum tradeanim_poof_command +tradeanim_poof: macro + db tradeanim_poof_command ; 27 +endm + + enum tradeanim_bulge_through_tube_command +tradeanim_bulge_through_tube: macro + db tradeanim_bulge_through_tube_command ; 28 +endm + + enum tradeanim_give_trademon_sfx_command +tradeanim_give_trademon_sfx: macro + db tradeanim_give_trademon_sfx_command ; 29 +endm + + enum tradeanim_get_trademon_sfx_command +tradeanim_get_trademon_sfx: macro + db tradeanim_get_trademon_sfx_command ; 2a +endm + + enum tradeanim_end_command +tradeanim_end: macro + db tradeanim_end_command ; 2b +endm + + enum tradeanim_animate_frontpic_command +tradeanim_animate_frontpic: macro + db tradeanim_animate_frontpic_command ; 2c +endm + + enum tradeanim_wait_96_command +tradeanim_wait_96: macro + db tradeanim_wait_96_command ; 2d +endm + + enum tradeanim_wait_80_if_ot_egg_command +tradeanim_wait_80_if_ot_egg: macro + db tradeanim_wait_80_if_ot_egg_command ; 2e +endm + + enum tradeanim_wait_180_if_ot_egg_command +tradeanim_wait_180_if_ot_egg: macro + db tradeanim_wait_180_if_ot_egg_command ; 2f +endm + + +; Mobile + enum_start 1 + + enum mobiletradeanim_showgivemon_command +mobiletradeanim_showgivemon: macro + db mobiletradeanim_showgivemon_command ; 01 +endm + + enum mobiletradeanim_02_command +mobiletradeanim_02: macro + db mobiletradeanim_02_command ; 02 +endm + + enum mobiletradeanim_sendmon_command +mobiletradeanim_sendmon: macro + db mobiletradeanim_sendmon_command ; 03 +endm + +__enum__ set $05 + + enum mobiletradeanim_05_command +mobiletradeanim_05: macro + db mobiletradeanim_05_command ; 05 +endm + + enum mobiletradeanim_06_command +mobiletradeanim_06: macro + db mobiletradeanim_06_command ; 06 +endm + + enum mobiletradeanim_07_command +mobiletradeanim_07: macro + db mobiletradeanim_07_command ; 07 +endm + + enum mobiletradeanim_receivemon_command +mobiletradeanim_receivemon: macro + db mobiletradeanim_receivemon_command ; 08 +endm + +__enum__ set $0b + + enum mobiletradeanim_showgetmon_command +mobiletradeanim_showgetmon: macro + db mobiletradeanim_showgetmon_command ; 0b +endm + + enum mobiletradeanim_end_command +mobiletradeanim_end: macro + db mobiletradeanim_end_command ; 0c +endm + + enum mobiletradeanim_showgtsgivemon_command +mobiletradeanim_showgtsgivemon: macro + db mobiletradeanim_showgtsgivemon_command ; 0d +endm + + enum mobiletradeanim_showgtsgetmon_command +mobiletradeanim_showgtsgetmon: macro + db mobiletradeanim_showgtsgetmon_command ; 0e +endm + + enum mobiletradeanim_0f_command +mobiletradeanim_0f: macro + db mobiletradeanim_0f_command ; 0f +endm + + enum mobiletradeanim_10_command +mobiletradeanim_10: macro + db mobiletradeanim_10_command ; 10 +endm + + enum mobiletradeanim_11_command +mobiletradeanim_11: macro + db mobiletradeanim_11_command ; 11 +endm + + enum mobiletradeanim_12_command +mobiletradeanim_12: macro + db mobiletradeanim_12_command ; 12 +endm + + enum mobiletradeanim_showoddegg_command +mobiletradeanim_showoddegg: macro + db mobiletradeanim_showoddegg_command ; 13 +endm diff --git a/macros/trainer.asm b/macros/trainer.asm new file mode 100644 index 00000000..2e6c6188 --- /dev/null +++ b/macros/trainer.asm @@ -0,0 +1,11 @@ +trainerclass: MACRO + enum \1 +const_value = 1 +ENDM + +trainer: MACRO + ; flag, group, id, seen text, win text, lost text, talk-again text + dw \1 + db \2, \3 + dw \4, \5, \6, \7 +ENDM diff --git a/macros/wram.asm b/macros/wram.asm new file mode 100755 index 00000000..175fc4de --- /dev/null +++ b/macros/wram.asm @@ -0,0 +1,251 @@ + +flag_array: MACRO + ds ((\1) + 7) / 8 +ENDM + +box_struct: MACRO +\1Species:: db +\1Item:: db +\1Moves:: ds NUM_MOVES +\1ID:: dw +\1Exp:: ds 3 +\1StatExp:: +\1HPExp:: dw +\1AtkExp:: dw +\1DefExp:: dw +\1SpdExp:: dw +\1SpcExp:: dw +\1DVs:: ds 2 +\1PP:: ds NUM_MOVES +\1Happiness:: db +\1PokerusStatus:: db +\1CaughtData:: +\1CaughtTime:: +\1CaughtLevel:: db +\1CaughtGender:: +\1CaughtLocation:: db +\1Level:: db +\1End:: +ENDM + +party_struct: MACRO + box_struct \1 +\1Status:: db +\1Unused:: db +\1HP:: dw +\1MaxHP:: dw +\1Stats:: ; big endian +\1Attack:: dw +\1Defense:: dw +\1Speed:: dw +\1SpclAtk:: dw +\1SpclDef:: dw +\1StatsEnd:: +ENDM + +red_box_struct: MACRO +\1Species:: db +\1HP:: dw +\1BoxLevel:: db +\1Status:: db +\1Type:: +\1Type1:: db +\1Type2:: db +\1CatchRate:: db +\1Moves:: ds NUM_MOVES +\1OTID:: dw +\1Exp:: ds 3 +\1HPExp:: dw +\1AttackExp:: dw +\1DefenseExp:: dw +\1SpeedExp:: dw +\1SpecialExp:: dw +\1DVs:: ds 2 +\1PP:: ds NUM_MOVES +ENDM + +red_party_struct: MACRO + red_box_struct \1 +\1Level:: db +\1Stats:: +\1MaxHP:: dw +\1Attack:: dw +\1Defense:: dw +\1Speed:: dw +\1Special:: dw +ENDM + + +battle_struct: MACRO +\1Species:: db +\1Item:: db +\1Moves:: ds NUM_MOVES +\1MovesEnd:: +\1DVs:: ds 2 +\1PP:: ds NUM_MOVES +\1Happiness:: db +\1Level:: db +\1Status:: ds 2 +\1HP:: dw +\1MaxHP:: dw +\1Stats:: ; big endian +\1Attack:: dw +\1Defense:: dw +\1Speed:: dw +\1SpclAtk:: dw +\1SpclDef:: dw +\1StatsEnd:: +\1Type:: +\1Type1:: db +\1Type2:: db +\1StructEnd:: +ENDM + +box: MACRO +\1:: +\1Count:: ds 1 +\1Species:: ds MONS_PER_BOX + 1 +\1Mons:: +\1Mon1:: box_struct \1Mon1 +\1Mon2:: ds BOXMON_STRUCT_LENGTH * (MONS_PER_BOX +- 1) +\1MonOT:: ds NAME_LENGTH * MONS_PER_BOX +\1MonNicknames:: ds PKMN_NAME_LENGTH * MONS_PER_BOX +\1MonNicknamesEnd:: +\1End:: ds 2 ; padding +ENDM + + +channel_struct: MACRO +; Addreses are Channel1 (c101). +\1MusicID:: dw +\1MusicBank:: db +\1Flags:: 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 +\1LastMusicAddress:: dw + dw +\1NoteFlags:: db ; 5:rest +\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 +\1Pitch:: db ; 0:rest 1-c:note +\1Octave:: db ; 7-0 (0 is highest) +\1StartingOctave:: db ; raises existing octaves (to repeat phrases) +\1NoteDuration:: db ; frames remaining for the current note +\1Field0x16:: ds 1 ; c117 + ds 1 ; c118 +\1LoopCount:: db +\1Tempo:: dw +\1Tracks:: db ; hi:left lo:right +\1Field0x1c:: ds 1 ; c11d +\1VibratoDelayCount:: db ; initialized by \1VibratoDelay +\1VibratoDelay:: db ; number of frames a note plays until vibrato starts +\1VibratoExtent:: db +\1VibratoRate:: db ; hi:frames for each alt lo:frames to the next alt +\1Field0x21:: ds 1 ; c122 +\1Field0x22:: ds 1 ; c123 +\1Field0x23:: ds 1 ; c124 +\1Field0x24:: ds 1 ; c125 +\1Field0x25:: ds 1 ; c126 + ds 1 ; c127 +\1CryPitch:: dw +\1Field0x29:: ds 1 +\1Field0x2a:: ds 2 +\1Field0x2c:: ds 1 +\1NoteLength:: db ; frames per 16th note +\1Field0x2e:: ds 1 ; c12f +\1Field0x2f:: ds 1 ; c130 +\1Field0x30:: ds 1 ; c131 + ds 1 ; c132 +ENDM + +battle_tower_struct: MACRO +\1Name:: ds NAME_LENGTH +- 1 +\1TrainerClass:: ds 1 +\1Pkmn1:: party_struct \1Pkmn1 +\1Pkmn1Name:: ds PKMN_NAME_LENGTH +\1Pkmn1NameEnd:: +\1Pkmn2:: party_struct \1Pkmn2 +\1Pkmn2Name:: ds PKMN_NAME_LENGTH +\1Pkmn2NameEnd:: +\1Pkmn3:: party_struct \1Pkmn3 +\1Pkmn3Name:: ds PKMN_NAME_LENGTH +\1Pkmn3NameEnd:: +\1TrainerData:: ds BATTLETOWER_TRAINERDATALENGTH +\1TrainerEnd:: +endm + +mailmsg: MACRO +\1Message:: ds MAIL_MSG_LENGTH +\1MessageEnd:: ds 1 +\1Author:: ds PLAYER_NAME_LENGTH +\1AuthorNationality:: ds 2 +\1AuthorID:: ds 2 +\1Species:: ds 1 +\1Type:: ds 1 +\1End:: +endm + +hof_mon: MACRO +\1Species:: ds 1 +\1ID:: ds 2 +\1DVs:: ds 2 +\1Level:: ds 1 +\1Nickname:: ds PKMN_NAME_LENGTH +- 1 +\1End:: +endm + +hall_of_fame: MACRO +\1:: +\1WinCount:: ds 1 +\1Mon1:: hof_mon \1Mon1 +\1Mon2:: hof_mon \1Mon2 +\1Mon3:: hof_mon \1Mon3 +\1Mon4:: hof_mon \1Mon4 +\1Mon5:: hof_mon \1Mon5 +\1Mon6:: hof_mon \1Mon6 +\1End:: ds 1 +ENDM + +trademon: MACRO +\1Species:: ds 1 ; wc6d0 | wc702 +\1SpeciesName:: ds PKMN_NAME_LENGTH ; wc6d1 | wc703 +\1Nickname:: ds PKMN_NAME_LENGTH ; wc6dc | wc70e +\1SenderName:: ds NAME_LENGTH ; wc6e7 | wc719 +\1OTName:: ds NAME_LENGTH ; wc6f2 | wc724 +\1DVs:: ds 2 ; wc6fd | wc72f +\1ID:: ds 2 ; wc6ff | wc731 +\1CaughtData:: ds 1 ; wc701 | wc733 +\1End:: +ENDM + +move_struct: MACRO +\1Animation:: ds 1 +\1Effect:: ds 1 +\1Power:: ds 1 +\1Type:: ds 1 +\1Accuracy:: ds 1 +\1PP:: ds 1 +\1EffectChance:: ds 1 +endm + +slot_reel: MACRO +\1ReelAction:: db +\1TilemapAddr:: dw +\1Position:: db +\1SpinDistance:: db +\1SpinRate:: db +\1OAMAddr:: dw +\1XCoord:: db +\1Slot09:: ds 1 +\1Slot0a:: ds 1 +\1Slot0b:: ds 1 +\1Slot0c:: ds 1 +\1Slot0d:: ds 1 +\1Slot0e:: ds 1 +\1Slot0f:: ds 1 +endm
\ No newline at end of file |