Няма описание

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