No Description

language.h 25KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149
  1. #ifndef SCRIPT_LANG_H_
  2. #define SCRIPT_LANG_H_
  3. #include <config/core.h>
  4. #include <script/movement.h>
  5. #include <script/mugshot.h>
  6. #include <script/battlescreen.h>
  7. #include <constants/items.h>
  8. #include <constants/pkmns.h>
  9. #include <pymap_constants.h>
  10. #include <script/trainerid.h>
  11. @@Some Constants
  12. .equ PLAYER, 0xFF
  13. .equ CAMERA, 0x7F
  14. @@ Costum Specials
  15. .equ SP_BATCHMAPTILE, 0x7
  16. @@ Compare operands
  17. .equ B_LT, 0x0
  18. .equ B_EQ, 0x1
  19. .equ B_GT, 0x2
  20. .equ B_LE, 0x3
  21. .equ B_GE, 0x4
  22. .equ B_NE, 0x5
  23. @@ Variable
  24. .equ VAR_LASTRESULT, 0x800d
  25. .equ VAR_PLAYERFACING, 0x800c
  26. .equ VAR_LASTTALKED, 0x800f
  27. @@Spritefacing
  28. .equ SPRITEFACE_DOWN, 0x1
  29. .equ SPRITEFACE_UP, 0x2
  30. .equ SPRITEFACE_LEFT, 0x3
  31. .equ SPRITEFACE_RIGHT, 0x4
  32. @@Playerfacing
  33. .equ PLAYERFACE_DOWN, 0x1
  34. .equ PLAYERFACE_UP, 0x2
  35. .equ PLAYERFACE_LEFT, 0x3
  36. .equ PLAYERFACE_RIGHT, 0x4
  37. @@ LED NAMES
  38. .equ LED_CARUN_CITY_LINKS, 0x1
  39. .equ LED_ROUTE_2, 0x2
  40. .equ LED_ROUTE_3, 0x3
  41. .equ LED_URBANIA_CITY_LINKS, 0x4
  42. .equ LED_ROUTE_5, 0x5
  43. .equ LED_ROUTE_6, 0x6
  44. .equ LED_CARUN_CITY_RECHTS, 0x7
  45. .equ LED_URBANIA_CITY_RECHTS, 0x8
  46. @@ Flag operands
  47. .equ B_T, 0x0
  48. .equ B_F, 0x1
  49. @@ callstd alias
  50. .equ ITEM_OBTAIN, 0x0
  51. .equ ITEM_FIND, 0x1
  52. .equ MSG_FACE, 0x2
  53. .equ MSG_SIGN, 0x3
  54. .equ MSG_KEYOPEN, 0x4
  55. .equ MSG_YES_NO, 0x5
  56. .equ MSG_STD, 0x6
  57. @@ Definition
  58. .equ MUGFACE_LEFT, 0x0
  59. .equ MUGFACE_RIGHT, 0x1
  60. @@ Effect
  61. .equ EFFECT_NORMAL, 0x0
  62. .equ EFFECT_GREY, 0x1
  63. .equ EFFECT_SERPIA, 0x2
  64. @@ Emotion
  65. .equ EMOT_NORMAL, 0x0
  66. .equ EMOT_UEBERLEGT, 0x1
  67. .equ EMOT_ERSTAUNT, 0x2
  68. .equ EMOT_TRAURIG, 0x3
  69. .equ EMOT_SAUER, 0x4
  70. .equ EMOT_LAECHELN, 0x5
  71. .equ EMOT_ZWINKERT, 0x6
  72. .equ EMOT_SCHOCKIERT, 0x7
  73. .equ EMOT_BOESESLACHEN, 0x8
  74. .equ EMOT_GENERVT, 0x9
  75. .equ EMOT_ERFREUT, 0xa
  76. @@@@@@@@@@@@@@@@@ Macro
  77. @@ Custom commands
  78. .macro camerafreeze
  79. special 0x113
  80. .endm
  81. .macro cameraunfreeze
  82. special 0x114
  83. .endm
  84. .macro spritefacedelay spritefacedelay_id:req spritefacedelay_facing:req
  85. spriteface \spritefacedelay_id \spritefacedelay_facing
  86. pause 0x20
  87. .endm
  88. .macro batchmaptilefromto batchmaptile_tiles_from:req batchmaptile_tiles_to:req batchmaptile_kollision_from:req batchmaptile_kollision_to:req
  89. setvar 0x8000 \batchmaptile_tiles_from
  90. setvar 0x8001 \batchmaptile_tiles_to
  91. setvar 0x8002 \batchmaptile_kollision_from
  92. setvar 0x8003 \batchmaptile_kollision_to
  93. setvar 0x5006 SP_BATCHMAPTILE
  94. special 0x68
  95. .endm
  96. .macro batchmaptiletofrom batchmaptile_tiles_from:req batchmaptile_tiles_to:req batchmaptile_kollision_from:req batchmaptile_kollision_to:req
  97. setvar 0x8001 \batchmaptile_tiles_from
  98. setvar 0x8002 \batchmaptile_tiles_to
  99. setvar 0x8003 \batchmaptile_kollision_from
  100. setvar 0x8002 \batchmaptile_kollision_to
  101. setvar 0x5006 SP_BATCHMAPTILE
  102. special 0x68
  103. .endm
  104. .macro sethiddenflags
  105. call sethiddenflagsall
  106. .endm
  107. .macro seteffect seteffect_effect_id:req
  108. writebytetooffset \seteffect_effect_id 0x02036E28
  109. .endm
  110. .macro setecutscene
  111. writebytetooffset 0x80 0x4000044
  112. writebytetooffset 0x20 0x4000045
  113. .endm
  114. .macro clearcutscene
  115. writebytetooffset 0xFF 0x4000044
  116. writebytetooffset 0x00 0x4000045
  117. .endm
  118. .macro pokemsg pokemsg_string:req pokemsg_callstd:req pokemsg_ID:req
  119. checksound
  120. cry \pokemsg_ID 0x0
  121. showpokepic \pokemsg_ID 0x0 0x5
  122. loadpointer 0x0 \pokemsg_string
  123. callstd \pokemsg_callstd
  124. hidepokepic
  125. waitcry
  126. .endm
  127. .macro beben earthquake_horri:req earthquake_tiles:req earthquake_sec:req earthquake_vert:req
  128. setvar 0x8004 \earthquake_horri
  129. setvar 0x8005 \earthquake_tiles
  130. setvar 0x8006 \earthquake_sec
  131. setvar 0x8007 \earthquake_vert
  132. special 0x136
  133. .endm
  134. .macro lookbattle lookbattle_id:req lookbattle_before:req lookbattle_after:req
  135. trainerbattle 0x0 \lookbattle_id 0x0 \lookbattle_before \lookbattle_after
  136. .endm
  137. .macro gymbattle gymbattle_id:req gymbattle_before:req gymbattle_after:req gymbattle_later:req
  138. trainerbattle 0x1 \gymbattle_id 0x0 \gymbattle_before \gymbattle_after \gymbattle_later
  139. .endm
  140. .macro betweenbattle betweenbattle_id:req betweenbattle_before:req betweenbattle_after:req betweenbattle_between:req
  141. trainerbattle 0x2 \betweenbattle_id 0x0 \betweenbattle_before \betweenbattle_after \betweenbattle_between
  142. .endm
  143. .macro scriptbattle scriptbattle_id:req scriptbattle_after:req
  144. trainerbattle 0x3 \scriptbattle_id 0x0 \scriptbattle_after
  145. .endm
  146. .macro doublebattle doublebattle_id:req doublebattle_before:req doublebattle_after:req doublebattle_onepoke:req
  147. trainerbattle 0x4 \doublebattle_id 0x0 \doublebattle_before \doublebattle_after \doublebattle_onepoke
  148. .endm
  149. .macro doublegymbattle doublegymbattle_id:req doublegymbattle_before:req doublegymbattle_after:req doublegymbattle_later:req doublegymbattle_onepoke:req
  150. trainerbattle 0x8 \doublegymbattle_id 0x0 \doublegymbattle_before \doublegymbattle_after \doublegymbattle_later \doublegymbattle_onepoke
  151. .endm
  152. .macro winlosebattle winlosebattle_id:req winlosebattle_win:req winlosebattle_lose:req
  153. trainerbattle 0x9 \winlosebattle_id 0x3 \winlosebattle_win \winlosebattle_lose
  154. .endm
  155. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  156. @@@ @@@
  157. @@@ special version of the trainerbattle command to be caught by the custom handler @@@
  158. @@@ if the player is spotted and spotscript_flag is set, spotscript_ptr_true is executed @@@
  159. @@@ if the player is spotted and spotscript_flag is not set, spotscript_ptr_false is executed @@@
  160. @@@ if the player talks to an npc who has this as its first command, it is ignored @@@
  161. @@@ THIS COMMAND WORKS IF AND ONLY IF THE TRAINER BIT IS SET ON THE NPC TEMPLATE @@@
  162. @@@ @@@
  163. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  164. .macro spotscript spotscript_flag:req spotscript_ptr_true:req spotscript_ptr_false:req
  165. .byte 0x5C, 0xFF
  166. .hword \spotscript_flag
  167. .hword 0xFFFF
  168. .word \spotscript_ptr_true
  169. .word \spotscript_ptr_false
  170. .endm
  171. .macro msgbox msgbox_textpointer:req msgbox_callstd:req
  172. loadpointer 0x0 \msgbox_textpointer
  173. callstd \msgbox_callstd
  174. .endm
  175. .macro giveitem giveitem_item:req giveitem_quantity:req giveitem_messagetyp:req
  176. copyvarifnotzero 0x8000 \giveitem_item
  177. copyvarifnotzero 0x8001 \giveitem_quantity
  178. setvar 0x5006 10
  179. special 0x68
  180. callstd \giveitem_messagetyp
  181. setvar 0x5006 11
  182. special 0x68
  183. .endm
  184. .macro giveitem2 giveitem2_item:req giveitem2_quantity:req giveitem2_song:req
  185. copyvarifnotzero 0x8000 \giveitem2_item
  186. copyvarifnotzero 0x8001 \giveitem2_quantity
  187. copyvarifnotzero 0x8002 \giveitem2_song
  188. callstd 0x9
  189. .endm
  190. .macro wildbattle wildbattle_spezies:req wildbattle_level:req wildbattle_item:req
  191. setwildbattle \wildbattle_spezies \wildbattle_level \wildbattle_item
  192. dowildbattle
  193. .endm
  194. .macro wildbattle2 wildbattle2_spezies:req wildbattle2_level:req wildbattle2_item:req wildbattle2_battlestyle:req
  195. setwildbattle \wildbattle2_spezies \wildbattle2_level \wildbattle2_item
  196. special 0x137
  197. waitstate
  198. .endm
  199. .macro wildbattlemusic wildbattlemusic_spezies:req wildbattlemusic_level:req wildbattlemusic_item:req wildbattlemusic_music:req
  200. setwildbattle \wildbattlemusic_spezies \wildbattlemusic_level \wildbattlemusic_item
  201. special 0x138
  202. playsong \wildbattlemusic_music 0x0
  203. .endm
  204. .macro costumtrainerbattlemusic costumtrainerbattlemusic_id:req
  205. special 0x3B
  206. playsong \costumtrainerbattlemusic_id 0x0
  207. .endm
  208. .macro colorflicker colorflicker_farbbyte:req
  209. setvar 0x8000 \colorflicker_farbbyte
  210. setvar 0x5006 0x8
  211. special 0x68
  212. .endm
  213. .macro mugmsg mugmsg_textpointer:req mugmsg_callstd:req mugmsg_sprite:req mugmsg_facing:req mugmsg_emot=0
  214. setvar 0x8000 0x0
  215. .if \mugmsg_sprite==MUG_RIVALE
  216. .if \mugmsg_facing==MUGFACE_LEFT
  217. call scr_mugrival_left
  218. .endif
  219. .if \mugmsg_facing==MUGFACE_RIGHT
  220. call scr_mugrival_right
  221. .endif
  222. .endif
  223. .if \mugmsg_sprite!=MUG_RIVALE
  224. .if \mugmsg_facing==MUGFACE_LEFT
  225. setvar MUGHSOT_1_TABLE \mugmsg_sprite|0x8000
  226. setvar MUGSHOT_1_X 0x16
  227. setvar MUGSHOT_1_Y 0x60
  228. .endif
  229. .if \mugmsg_facing==MUGFACE_RIGHT
  230. setvar MUGHSOT_1_TABLE \mugmsg_sprite
  231. setvar MUGSHOT_1_X 0xD0
  232. setvar MUGSHOT_1_Y 0x60
  233. .endif
  234. .endif
  235. addvar MUGHSOT_1_TABLE \mugmsg_emot
  236. .if \mugmsg_callstd==5
  237. msgbox \mugmsg_textpointer \mugmsg_callstd
  238. closeonkeypress
  239. .endif
  240. .if \mugmsg_callstd!=5
  241. msgbox \mugmsg_textpointer \mugmsg_callstd
  242. .endif
  243. setvar MUGHSOT_1_TABLE 0x0
  244. pause 0x20
  245. .endm
  246. .macro transparenzon
  247. clearflag FLAG_ACTIVATE
  248. .endm
  249. .macro transparenzoff
  250. setflag FLAG_ACTIVATE
  251. .endm
  252. .macro battlescreen battlescreen_grass:req battlescreen_sea:req
  253. setvar BATTLE_NORMAL_VAR \battlescreen_grass
  254. setvar BATTLE_SEA_VAR \battlescreen_sea
  255. .endm
  256. .macro cameramove cameramove_xpos:req cameramove_ypos:req
  257. setvar CAMERA_VAR_X \cameramove_xpos
  258. setvar CAMERA_VAR_Y \cameramove_ypos
  259. setvar CALLASM_VAR 0x1
  260. special 0x68
  261. .endm
  262. .macro walkingscript walkingscript_value:req
  263. setvar WALK_SCRIPT_VAR \walkingscript_value
  264. .endm
  265. .macro walkingscripton
  266. setflag FLAG_WALK_SCRIPT
  267. .endm
  268. .macro walkingscriptoff
  269. clearflag FLAG_WALK_SCRIPT
  270. .endm
  271. .macro writemusikon
  272. setflag FLAG_SKIP_BATTLE_MUSIC
  273. .endm
  274. .macro writemusikoff
  275. clearflag FLAG_SKIP_BATTLE_MUSIC
  276. .endm
  277. .macro changeowto changeowto_from:req changeowto_to:req
  278. setvar OW_REPLACE_VAR \changeowto_from
  279. addvar OW_REPLACE_VAR 0x1
  280. setvar OW_REPLACE_TO_VAR \changeowto_to
  281. .endm
  282. @@ Index commands
  283. .macro nop
  284. .byte 0x0
  285. .endm
  286. .macro nop1
  287. .byte 0x1
  288. .endm
  289. .macro end
  290. .byte 0x2
  291. .endm
  292. .macro return
  293. .byte 0x3
  294. .endm
  295. .macro call call_address:req
  296. .byte 0x4
  297. .word \call_address
  298. .endm
  299. .macro goto goto_address:req
  300. .byte 0x5
  301. .word \goto_address
  302. .endm
  303. .macro gotoif if1_value:req if1_pointer:req
  304. .byte 0x6
  305. .byte \if1_value
  306. .word \if1_pointer
  307. .endm
  308. .macro callif if2_value:req if2_pointer:req
  309. .byte 0x7
  310. .byte \if2_value
  311. .word \if2_pointer
  312. .endm
  313. .macro callstd callstd_call:req
  314. .byte 0x9
  315. .byte \callstd_call
  316. .endm
  317. .macro killscript
  318. .byte 0xD
  319. .endm
  320. .macro loadpointer loadpointer_bank:req loadpointer_pointer:req
  321. .byte 0xF
  322. .byte \loadpointer_bank
  323. .word \loadpointer_pointer
  324. .endm
  325. .macro writebytetooffset writebytetooffset_bank:req writebytetooffset_location:req
  326. .byte 0x11
  327. .byte \writebytetooffset_bank
  328. .word \writebytetooffset_location
  329. .endm
  330. .macro setvar setvar_variable:req setvar_value:req
  331. .byte 0x16
  332. .hword \setvar_variable
  333. .hword \setvar_value
  334. .endm
  335. .macro addvar addvar_variable:req addvar_value:req
  336. .byte 0x17
  337. .hword \addvar_variable
  338. .hword \addvar_value
  339. .endm
  340. .macro subvar subvar_variable:req subvar_value:req
  341. .byte 0x18
  342. .hword \subvar_variable
  343. .hword \subvar_value
  344. .endm
  345. .macro copyvar copyvar_variableADestin:req copyvar_variableBSource:req
  346. .byte 0x19
  347. .hword \copyvar_variableADestin
  348. .hword \copyvar_variableBSource
  349. .endm
  350. .macro copyvarifnotzero copyvarifnotzero_variableADestin:req copyvarifnotzero_variableBSource:req
  351. .byte 0x1A
  352. .hword \copyvarifnotzero_variableADestin
  353. .hword \copyvarifnotzero_variableBSource
  354. .endm
  355. .macro compare compare_variable:req compare_value:req
  356. .byte 0x21
  357. .hword \compare_variable
  358. .hword \compare_value
  359. .endm
  360. .macro comparevars comparevars_variableA:req comparevars_variableB:req
  361. .byte 0x22
  362. .hword \comparevars_variableA
  363. .hword \comparevars_variableB
  364. .endm
  365. .macro callasm callasm_address:req
  366. .byte 0x23
  367. .word \callasm_address
  368. .endm
  369. .macro special special_number:req
  370. .byte 0x25
  371. .hword \special_number
  372. .endm
  373. .macro special2 special2_variable:req special2_number:req
  374. .byte 0x26
  375. .hword \special2_variable
  376. .hword \special2_number
  377. .endm
  378. .macro waitstate
  379. .byte 0x27
  380. .endm
  381. .macro pause pause_delay:req
  382. .byte 0x28
  383. .hword \pause_delay
  384. .endm
  385. .macro setflag setflag_flag:req
  386. .byte 0x29
  387. .hword \setflag_flag
  388. .endm
  389. .macro clearflag clearflag_flag:req
  390. .byte 0x2A
  391. .hword \clearflag_flag
  392. .endm
  393. .macro checkflag checkflag_flag:req
  394. .byte 0x2B
  395. .hword \checkflag_flag
  396. .endm
  397. .macro resetvars
  398. .byte 0x2E
  399. .endm
  400. .macro sound sound_song:req
  401. .byte 0x2F
  402. .hword \sound_song
  403. .endm
  404. .macro checksound
  405. .byte 0x30
  406. .endm
  407. .macro fanfare fanfare_song:req
  408. .byte 0x31
  409. .hword \fanfare_song
  410. .endm
  411. .macro waitfanfare
  412. .byte 0x32
  413. .endm
  414. .macro playsong playsong_song:req playsong_value:req
  415. .byte 0x33
  416. .hword \playsong_song
  417. .byte \playsong_value
  418. .endm
  419. .macro playsong2 playsong2_song:req
  420. .byte 0x34
  421. .hword \playsong2_song
  422. .endm
  423. .macro songfadedefault
  424. .byte 0x35
  425. .endm
  426. .macro fadesong fadesong_song:req
  427. .byte 0x36
  428. .hword \fadesong_song
  429. .endm
  430. .macro fadeout fadeout_volume:req
  431. .byte 0x37
  432. .byte \fadeout_volume
  433. .endm
  434. .macro fadein fadein_volume:req
  435. .byte 0x38
  436. .byte \fadein_volume
  437. .endm
  438. .macro warp warp_bank:req warp_map:req warp_exit:req warp_x:req warp_y:req
  439. .byte 0x39
  440. .byte \warp_bank
  441. .byte \warp_map
  442. .byte \warp_exit
  443. .hword \warp_x
  444. .hword \warp_y
  445. .endm
  446. .macro warpmuted warpmuted_bank:req warpmuted_map:req warpmuted_exit:req warpmuted_x:req warpmuted_y:req
  447. .byte 0x3A
  448. .byte \warpmuted_bank
  449. .byte \warpmuted_map
  450. .byte \warpmuted_exit
  451. .hword \warpmuted_x
  452. .hword \warpmuted_y
  453. .endm
  454. .macro warpwalk warpwalk_bank:req warpwalk_map:req warpwalk_exit:req warpwalk_x:req warpwalk_y:req
  455. .byte 0x3B
  456. .byte \warpwalk_bank
  457. .byte \warpwalk_map
  458. .byte \warpwalk_exit
  459. .hword \warpwalk_x
  460. .hword \warpwalk_y
  461. .endm
  462. .macro warphole warphole_bank:req warphole_map:req
  463. .byte 0x3C
  464. .byte \warphole_bank
  465. .byte \warphole_map
  466. .endm
  467. .macro warpteleport warpteleport_bank:req warpteleport_map:req warpteleport_exit:req warpteleport_x:req warpteleport_y:req
  468. .byte 0x3D
  469. .byte \warpteleport_bank
  470. .byte \warpteleport_map
  471. .byte \warpteleport_exit
  472. .hword \warpteleport_x
  473. .hword \warpteleport_y
  474. .endm
  475. .macro setwarpplace setwarpplace_bank:req setwarpplace_map:req setwarpplace_exit:req setwarpplace_x:req setwarpplace_y:req
  476. .byte 0x3F
  477. .byte \setwarpplace_bank
  478. .byte \setwarpplace_map
  479. .byte \setwarpplace_exit
  480. .hword \setwarpplace_x
  481. .hword \setwarpplace_y
  482. .endm
  483. .macro getplayerpos getplayerpos_variableX:req getplayerpos_variableY:req
  484. .byte 0x42
  485. .hword \getplayerpos_variableX
  486. .hword \getplayerpos_variableY
  487. .endm
  488. .macro countpokemon
  489. .byte 0x43
  490. .endm
  491. .macro additem additem_item:req additem_quantity:req
  492. .byte 0x44
  493. .hword \additem_item
  494. .hword \additem_quantity
  495. .endm
  496. .macro removeitem removeitem_item:req removeitem_quantity:req
  497. .byte 0x45
  498. .hword \removeitem_item
  499. .hword \removeitem_quantity
  500. .endm
  501. .macro checkitemroom checkitemroom_item:req checkitemroom_quantity:req
  502. .byte 0x46
  503. .hword \checkitemroom_item
  504. .hword \checkitemroom_quantity
  505. .endm
  506. .macro checkitem checkitem_item:req checkitem_quantity:req
  507. .byte 0x47
  508. .hword \checkitem_item
  509. .hword \checkitem_quantity
  510. .endm
  511. .macro checkitemtype checkitemtype_item:req
  512. .byte 0x48
  513. .hword \checkitemtype_item
  514. .endm
  515. .macro addpcitem addpcitem_item:req addpcitem_quantity:req
  516. .byte 0x49
  517. .hword \addpcitem_item
  518. .hword \addpcitem_quantity
  519. .endm
  520. .macro checkpcitem checkpcitem_item:req checkpcitem_quantity:req
  521. .byte 0x4A
  522. .hword \checkpcitem_item
  523. .hword \checkpcitem_quantity
  524. .endm
  525. .macro applymovement applymovement_people:req applymovement_movedata:req
  526. .byte 0x4F
  527. .hword \applymovement_people
  528. .word \applymovement_movedata
  529. .endm
  530. .macro applymovementpos applymovementpos_people:req applymovementpos_movedata:req applymovementpos_x:req applymovementpos_y:req
  531. .byte 0x50
  532. .hword \applymovementpos_people
  533. .word \applymovementpos_movedata
  534. .byte \applymovementpos_x
  535. .byte \applymovementpos_y
  536. .endm
  537. .macro waitmovement waitmovement_people:req
  538. .byte 0x51
  539. .hword \waitmovement_people
  540. .endm
  541. .macro waitmovementpos waitmovementpos_people:req waitmovementpos_x:req waitmovementpos_y:req
  542. .byte 0x52
  543. .hword \waitmovementpos_people
  544. .byte \waitmovementpos_x
  545. .byte \waitmovementpos_y
  546. .endm
  547. .macro hidesprite hidesprite_people:req
  548. .byte 0x53
  549. .hword \hidesprite_people
  550. .endm
  551. .macro hidespritepos hidesprite_people:req hidespritepos_x:req hidespritepos_y:req
  552. .byte 0x54
  553. .hword \hidespritepos_people
  554. .byte \hidespritepos_x
  555. .byte \hidespritepos_y
  556. .endm
  557. .macro showsprite showsprite_people:req
  558. .byte 0x55
  559. .hword \showsprite_people
  560. .endm
  561. .macro showspritepos showspritepos_people:req showspritepos_x:req showspritepos_y:req
  562. .byte 0x56
  563. .hword \showspritepos_people
  564. .byte \showspritepos_x
  565. .byte \showspritepos_y
  566. .endm
  567. .macro movesprite movesprite_people:req movesprite_x:req movesprite_y:req
  568. .byte 0x57
  569. .hword \movesprite_people
  570. .hword \movesprite_x
  571. .hword \movesprite_y
  572. .endm
  573. .macro spritevisible spritevisible_people:req spritevisible_bank:req spritevisible_map:req
  574. .byte 0x58
  575. .hword \spritevisible_people
  576. .byte \spritevisible_bank
  577. .byte \spritevisible_map
  578. .endm
  579. .macro spriteinvisible spriteinvisible_people:req spriteinvisible_bank:req spriteinvisible_map:req
  580. .byte 0x59
  581. .hword \spriteinvisible_people
  582. .byte \spriteinvisible_bank
  583. .byte \spriteinvisible_map
  584. .endm
  585. .macro faceplayer
  586. .byte 0x5A
  587. .endm
  588. .macro spriteface spriteface_people:req spriteface_facing:req
  589. .byte 0x5B
  590. .hword \spriteface_people
  591. .byte \spriteface_facing
  592. .endm
  593. .macro trainerbattle trainerbattle_kind:req trainerbattle_id:req trainerbattle_value:req trainerbattle_before:req trainerbattle_after trainerbattle_later trainerbattle_onepoke
  594. .byte 0x5C
  595. .byte \trainerbattle_kind
  596. .hword \trainerbattle_id
  597. .hword \trainerbattle_value
  598. .word \trainerbattle_before
  599. .word \trainerbattle_after
  600. .word \trainerbattle_later
  601. .word \trainerbattle_onepoke
  602. .endm
  603. .macro repeattrainerbattle
  604. .byte 0x5D
  605. .endm
  606. .macro endtrainerbattle
  607. .byte 0x5E
  608. .endm
  609. .macro endtrainerbattle2
  610. .byte 0x5E
  611. .endm
  612. .macro checktrainerflag checktrainerflag_flag:req
  613. .byte 0x60
  614. .hword \checktrainerflag_flag
  615. .endm
  616. .macro settrainerflag settrainerflag_flag:req
  617. .byte 0x61
  618. .hword \settrainerflag_flag
  619. .endm
  620. .macro cleartrainerflag cleartrainerflag_flag:req
  621. .byte 0x62
  622. .hword \cleartrainerflag_flag
  623. .endm
  624. .macro movesprite2 movesprite2_people:req movesprite2_x:req movesprite2_y:req
  625. .byte 0x63
  626. .hword \movesprite2_people
  627. .hword \movesprite2_x
  628. .hword \movesprite2_y
  629. .endm
  630. .macro moveoffscreen moveoffscreen_people:req
  631. .byte 0x64
  632. .hword \moveoffscreen_people
  633. .endm
  634. .macro spritebehave spritebehave_people:req spritebehave_facing:req
  635. .byte 0x65
  636. .hword \spritebehave_people
  637. .byte \spritebehave_facing
  638. .endm
  639. .macro waitmsg
  640. .byte 0x66
  641. .endm
  642. .macro preparemsg preparemsg_text:req
  643. .byte 0x67
  644. .word \preparemsg_text
  645. .endm
  646. .macro closeonkeypress
  647. .byte 0x68
  648. .endm
  649. .macro lockall
  650. .byte 0x69
  651. .endm
  652. .macro lock
  653. .byte 0x6A
  654. .endm
  655. .macro releaseall
  656. .byte 0x6B
  657. .endm
  658. .macro release
  659. .byte 0x6C
  660. .endm
  661. .macro waitkeypress
  662. .byte 0x6D
  663. .endm
  664. .macro yesnobox yesnobox_x:req yesnobox_y:req
  665. .byte 0x6E
  666. .byte \yesnobox_x
  667. .byte \yesnobox_y
  668. .endm
  669. .macro multichoice multichoice_x:req multichoice_y:req multichoice_choiceList:req multichoice_determines:req
  670. .byte 0x6F
  671. .byte \multichoice_x
  672. .byte \multichoice_y
  673. .byte \multichoice_choiceList
  674. .byte \multichoice_determines
  675. .endm
  676. .macro multichoice2 multichoice2_x:req multichoice2_y:req multichoice2_choiceList:req multichoice2_defaultchoice:req multichoice2_determines:req
  677. .byte 0x70
  678. .byte \multichoice2_x
  679. .byte \multichoice2_y
  680. .byte \multichoice2_choiceList
  681. .byte \multichoice2_defaultchoice
  682. .byte \multichoice2_determines
  683. .endm
  684. .macro multichoice3 multichoice3_x:req multichoice3_y:req multichoice3_choiceList:req multichoice3_numberofchoices:req multichoice3_determines:req
  685. .byte 0x71
  686. .byte \multichoice3_x
  687. .byte \multichoice3_y
  688. .byte \multichoice3_choiceList
  689. .byte \multichoice3_numberofchoices
  690. .byte \multichoice3_determines
  691. .endm
  692. .macro showpokepic showpokepic_spezies:req showpokepic_x:req showpokepic_y:req
  693. .byte 0x75
  694. .hword \showpokepic_spezies
  695. .byte \showpokepic_x
  696. .byte \showpokepic_y
  697. .endm
  698. .macro hidepokepic
  699. .byte 0x76
  700. .endm
  701. .macro braile braile_data:req
  702. .byte 0x78
  703. .word \braile_data
  704. .endm
  705. .macro givepokemon givepokemon_spezies:req givepokemon_level:req givepokemon_item:req
  706. .byte 0x79
  707. .hword \givepokemon_spezies
  708. .byte \givepokemon_level
  709. .hword \givepokemon_item
  710. .word 0x0
  711. .word 0x0
  712. .byte 0x0
  713. .endm
  714. .macro giveegg giveegg_spezies:req
  715. .byte 0x7A
  716. .hword \giveegg_spezies
  717. .endm
  718. .macro setpokemonmove setpokemonmove_partyslot:req setpokemonmove_moveslot:req setpokemonmove_move:req
  719. .byte 0x7B
  720. .byte \setpokemonmove_partyslot
  721. .byte \setpokemonmove_moveslot
  722. .hword \setpokemonmove_move
  723. .endm
  724. .macro checkattack checkattack_move:req
  725. .byte 0x7C
  726. .hword \checkattack_move
  727. .endm
  728. .macro bufferpokemon bufferpokemon_buffernumber:req bufferpokemon_spezies:req
  729. .byte 0x7D
  730. .byte \bufferpokemon_buffernumber
  731. .hword \bufferpokemon_spezies
  732. .endm
  733. .macro bufferfirstpokemon bufferfirstpokemon_buffernumber:req
  734. .byte 0x7E
  735. .byte \bufferfirstpokemon_buffernumber
  736. .endm
  737. .macro bufferpartypokemon bufferpartypokemon_buffernumber:req bufferpartypokemon_spezies:req
  738. .byte 0x7F
  739. .byte \bufferpartypokemon_buffernumber
  740. .hword \bufferpartypokemon_spezies
  741. .endm
  742. .macro bufferitem bufferitem_buffernumber:req bufferitem_item:req
  743. .byte 0x80
  744. .byte \bufferitem_buffernumber
  745. .hword \bufferitem_item
  746. .endm
  747. .macro bufferattack bufferattack_buffernumber:req bufferattack_attack:req
  748. .byte 0x82
  749. .byte \bufferattack_buffernumber
  750. .hword \bufferattack_attack
  751. .endm
  752. .macro buffernumber buffernumber_buffernumber:req buffernumber_variable:req
  753. .byte 0x83
  754. .byte \buffernumber_buffernumber
  755. .hword \buffernumber_variable
  756. .endm
  757. .macro bufferstd bufferstd_buffernumber:req bufferstd_variable:req
  758. .byte 0x84
  759. .byte \bufferstd_buffernumber
  760. .hword \bufferstd_variable
  761. .endm
  762. .macro bufferstring bufferstring_buffernumber:req bufferstring_string:req
  763. .byte 0x85
  764. .byte \bufferstring_buffernumber
  765. .word \bufferstring_string
  766. .endm
  767. .macro pokemart pokemart_list:req
  768. .byte 0x86
  769. .word \pokemart_list
  770. .endm
  771. .macro pokemart3 pokemart_list_three:req
  772. .byte 0x86
  773. .word \pokemart_list_three
  774. .endm
  775. .macro random random_possiblities:req
  776. .byte 0x8F
  777. .hword \random_possiblities
  778. .endm
  779. .macro givemoney givemoney_quantity:req givemoney_command:req
  780. .byte 0x90
  781. .word \givemoney_quantity
  782. .byte \givemoney_command
  783. .endm
  784. .macro paymoney paymoney_quantity:req paymoney_command:req
  785. .byte 0x91
  786. .word \paymoney_quantity
  787. .byte \paymoney_command
  788. .endm
  789. .macro checkmoney checkmoney_quantity:req checkmoney_command:req
  790. .byte 0x92
  791. .word \checkmoney_quantity
  792. .byte \checkmoney_command
  793. .endm
  794. .macro showmoney showmoney_x:req showmoney_y:req showmoney_value:req
  795. .byte 0x93
  796. .byte \showmoney_x
  797. .byte \showmoney_y
  798. .byte \showmoney_value
  799. .endm
  800. .macro hidemoney hidemoney_x:req hidemoney_y:req
  801. .byte 0x94
  802. .byte \hidemoney_x
  803. .byte \hidemoney_y
  804. .endm
  805. .macro updatemoney updatemoney_x:req updatemoney_y:req updatemoney_value:req
  806. .byte 0x95
  807. .byte \updatemoney_x
  808. .byte \updatemoney_y
  809. .byte \updatemoney_value
  810. .endm
  811. .macro fadescreen fadescreen_effect:req
  812. .byte 0x97
  813. .byte \fadescreen_effect
  814. .endm
  815. .macro fadescreendelay fadescreendelay_effect:req fadescreendelay_delay:req
  816. .byte 0x98
  817. .byte \fadescreendelay_effect
  818. .byte \fadescreendelay_delay
  819. .endm
  820. .macro darken darken_flashsize:req
  821. .byte 0x99
  822. .hword \darken_flashsize
  823. .endm
  824. .macro lighten lighten_flashsize:req
  825. .byte 0x9A
  826. .hword \lighten_flashsize
  827. .endm
  828. .macro doanimation doanimation_animation:req
  829. .byte 0x9C
  830. .hword \doanimation_animation
  831. .endm
  832. .macro setanimation setanimation_animation:req setanimation_variable:req
  833. .byte 0x9D
  834. .byte \setanimation_animation
  835. .hword \setanimation_variable
  836. .endm
  837. .macro checkanimation checkanimation_animation:req
  838. .byte 0x9E
  839. .hword \checkanimation_animation
  840. .endm
  841. .macro sethealingplace shp_bank:req shp_map:req shp_x:req shp_y:req
  842. setvar HEALING_BANK_MAP_VAR \shp_map << 8 | \shp_bank
  843. setvar HEALING_X_VAR \shp_x
  844. setvar HEALING_Y_VAR \shp_y
  845. .endm
  846. .macro checkgender
  847. .byte 0xA0
  848. .endm
  849. .macro cry cry_spezies:req cry_effect:req
  850. .byte 0xA1
  851. .hword \cry_spezies
  852. .hword \cry_effect
  853. .endm
  854. .macro setmaptile setmaptile_x:req setmaptile_y:req setmaptile_tile:req setmaptile_attribut:req
  855. .byte 0xA2
  856. .hword \setmaptile_x
  857. .hword \setmaptile_y
  858. .hword \setmaptile_tile
  859. .hword \setmaptile_attribut
  860. .endm
  861. .macro resetweather
  862. .byte 0xA3
  863. .endm
  864. .macro setweather setweather_weather:req
  865. .byte 0xA4
  866. .hword \setweather_weather
  867. .endm
  868. .macro doweather
  869. .byte 0xA5
  870. .endm
  871. .macro setmapfooter setmapfooter_footer:req
  872. .byte 0xA7
  873. .hword \setmapfooter_footer
  874. .endm
  875. .macro spritelevelup spritelevelup_people:req spritelevelup_bank:req spritelevelup_map:req
  876. .byte 0xA8
  877. .hword \spritelevelup_people
  878. .byte \spritelevelup_bank
  879. .byte \spritelevelup_map
  880. .byte 0x0
  881. .endm
  882. .macro restorespritelevel restorespritelevel_people:req restorespritelevel_bank:req restorespritelevel_map:req
  883. .byte 0xA9
  884. .hword \restorespritelevel_people
  885. .byte \restorespritelevel_bank
  886. .byte \restorespritelevel_map
  887. .endm
  888. .macro createsprite createsprite_sprite:req createsprite_id:req createsprite_x:req createsprite_y:req createsprite_behaviour:req createsprite_facing:req
  889. .byte 0xAA
  890. .byte \createsprite_sprite
  891. .byte \createsprite_id
  892. .hword \createsprite_x
  893. .hword \createsprite_y
  894. .byte \createsprite_behaviour
  895. .byte \createsprite_facing
  896. .endm
  897. .macro spriteface2 spriteface2_people:req spriteface2_facing:req
  898. .byte 0xAB
  899. .hword \spriteface2_people
  900. .byte \spriteface2_facing
  901. .endm
  902. .macro setdooropened setdooropened_x:req setdooropened_y:req
  903. .byte 0xAC
  904. .hword \setdooropened_x
  905. .hword \setdooropened_y
  906. .endm
  907. .macro setdoorclosed setdoorclosed_x:req setdoorclosed_y:req
  908. .byte 0xAD
  909. .hword \setdoorclosed_x
  910. .hword \setdoorclosed_y
  911. .endm
  912. .macro doorchange
  913. .byte 0xAE
  914. .endm
  915. .macro setdooropened2 setdooropened2_x:req setdooropened2_y:req
  916. .byte 0xAF
  917. .hword \setdooropened2_x
  918. .hword \setdooropened2_y
  919. .endm
  920. .macro setdoorclosed2 setdoorclosed2_x:req setdoorclosed2_y:req
  921. .byte 0xB0
  922. .hword \setdoorclosed2_x
  923. .hword \setdoorclosed2_y
  924. .endm
  925. .macro setwildbattle setwildbattle_spezies:req setwildbattle_level:req setwildbattle_item:req
  926. .byte 0xB6
  927. .hword \setwildbattle_spezies
  928. .byte \setwildbattle_level
  929. .hword \setwildbattle_item
  930. .endm
  931. .macro dowildbattle
  932. .byte 0xB7
  933. .endm
  934. .macro savincrementkey attr:req
  935. .byte 0xC3
  936. .byte \attr
  937. .endm
  938. .macro waitcry
  939. .byte 0xC5
  940. .endm
  941. .macro setworldmapflag setworldmapflag_flag:req
  942. .byte 0xD0
  943. .hword \setworldmapflag_flag
  944. .endm
  945. .macro bufferitems bufferitems_buffernumber:req bufferitems_item:req bufferitems_quantity:req
  946. .byte 0xD4
  947. .byte \bufferitems_buffernumber
  948. .hword \bufferitems_item
  949. .hword \bufferitems_quantity
  950. .endm
  951. #endif