Aucune description

language.h 25KB

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