ref: 0b34c997d6b24ff3b229396c2b8351f08a132410
parent: 5b13a7a13b9ebbb26a75b9ef19221e8e140c221b
author: Remy Oukaour <[email protected]>
date: Tue Dec 12 08:51:07 EST 2017
Add basic documentation for text commands.
--- /dev/null
+++ b/docs/event_commands.md
@@ -1,0 +1,345 @@
+# Event Commands
+
+## `$00`: `scall` *script*
+
+## `$01`: `farscall` *script*
+
+## `$02`: `ptcall` *script*
+
+## `$03`: `jump` *script*
+
+## `$04`: `farjump` *script*
+
+## `$05`: `ptjump` *script*
+
+## `$06`: `if_equal` *byte*, *script*
+
+## `$07`: `if_not_equal` *byte*, *script*
+
+## `$08`: `iffalse` *script*
+
+## `$09`: `iftrue` *script*
+
+## `$0A`: `if_greater_than` *byte*, *script*
+
+## `$0B`: `if_less_than` *byte*, *script*
+
+## `$0C`: `jumpstd` *std_script*
+
+## `$0D`: `callstd` *std_script*
+
+## `$0E`: `callasm` *asm*
+
+## `$0F`: `special` *special_pointer*
+
+## `$10`: `ptcallasm` *asm*
+
+## `$11`: `checkmaptriggers` *map*
+
+## `$12`: `domaptrigger` *map*, *trigger_id*
+
+## `$13`: `checktriggers`
+
+## `$14`: `dotrigger` *trigger_id*
+
+## `$15`: `writebyte` *value*
+
+## `$16`: `addvar` *value*
+
+## `$17`: `random` *value*
+
+## `$18`: `checkver`
+
+## `$19`: `copybytetovar` *address*
+
+## `$1A`: `copyvartobyte` *address*
+
+## `$1B`: `loadvar` *address*, *value*
+
+## `$1C`: `checkcode` *variable*
+
+## `$1D`: `writevarcode` *variable*
+
+## `$1E`: `writecode` *variable*, *value*
+
+## `$1F`: `giveitem` *item_id*[, *quantity*=1]
+
+## `$20`: `takeitem` *item_id*[, *quantity*=1]
+
+## `$21`: `checkitem` *item_id*
+
+## `$22`: `givemoney` *account*, *value*
+
+## `$23`: `takemoney` *account*, *value*
+
+## `$24`: `checkmoney` *account*, *value*
+
+## `$25`: `givecoins` *value*
+
+## `$26`: `takecoins` *value*
+
+## `$27`: `checkcoins` *value*
+
+## `$28`: `addcellnum` *contact_id*
+
+## `$29`: `delcellnum` *contact_id*
+
+## `$2A`: `checkcellnum` *contact_id*
+
+## `$2B`: `checktime` *time*
+
+- **`checkmorn`:** `checktime MORN`
+- **`checkday`:** `checktime DAY`
+- **`checknite`:** `checktime NITE`
+
+## `$2C`: `checkpoke` *mon_id*
+
+## `$2D`: `givepoke` *mon_id*, *level*[, *item*=0[, *trainer*=0, *ot_name*, *nickname*]]
+
+## `$2E`: `giveegg` *mon_id*, *level*
+
+## `$2F`: `givepokeitem` *pointer*
+
+## `$30`: `checkpokeitem` *pointer*
+
+## `$31`: `checkevent` *event_flag*
+
+## `$32`: `clearevent` *event_flag*
+
+## `$33`: `setevent` *event_flag*
+
+## `$34`: `checkflag` *engine_flag*
+
+## `$35`: `clearflag` *engine_flag*
+
+## `$36`: `setflag` *engine_flag*
+
+## `$37`: `wildon`
+
+## `$38`: `wildoff`
+
+## `$39`: `xycompare` *pointer*
+
+## `$3A`: `warpmod` *warp_id*, *map*
+
+## `$3B`: `blackoutmod` *map*
+
+## `$3C`: `warp` *map*, *x*, *y*
+
+## `$3D`: `readmoney` *account*, *memory*
+
+## `$3E`: `readcoins` *memory*
+
+## `$3F`: `RAM2MEM` *memory*
+
+## `$40`: `pokenamemem` *mon_id*, *memory*
+
+## `$41`: `itemtotext` *item_id*, *memory*
+
+## `$42`: `mapnametotext` *memory*
+
+## `$43`: `trainertotext` *trainer_id*, *trainer_group*, *memory*
+
+## `$44`: `stringtotext` *text_pointer*, *memory*
+
+## `$45`: `itemnotify`
+
+## `$46`: `pocketisfull`
+
+## `$47`: `opentext`
+
+## `$48`: `refreshscreen` *dummy*
+
+## `$49`: `closetext`
+
+## `$4A`: `loadbytec2cf` *byte*
+
+## `$4B`: `farwritetext` *text_pointer*
+
+## `$4C`: `writetext` *text_pointer*
+
+## `$4D`: `repeattext` *byte1*, *byte2*
+
+## `$4E`: `yesorno`
+
+## `$4F`: `loadmenudata` *data_pointer*
+
+## `$50`: `closewindow`
+
+## `$51`: `jumptextfaceplayer` *text_pointer*
+
+## `$52`: `farjumptext` *text_pointer*
+
+## `$53`: `jumptext` *text_pointer*
+
+## `$54`: `waitbutton`
+
+## `$55`: `buttonsound`
+
+## `$56`: `pokepic` *mon_id*
+
+## `$57`: `closepokepic`
+
+## `$58`: `_2dmenu`
+
+## `$59`: `verticalmenu`
+
+## `$5A`: `loadpikachudata`
+
+## `$5B`: `randomwildmon`
+
+## `$5C`: `loadmemtrainer`
+
+## `$5D`: `loadwildmon` *mon_id*, *level*
+
+## `$5E`: `loadtrainer` *trainer_group*, *trainer_id*
+
+## `$5F`: `startbattle`
+
+## `$60`: `reloadmapafterbattle`
+
+## `$61`: `catchtutorial` *byte*
+
+## `$62`: `trainertext` *which_text*
+
+## `$63`: `trainerflagaction` *action*
+
+## `$64`: `winlosstext` *win_text_pointer*, *loss_text_pointer*
+
+## `$65`: `scripttalkafter`
+
+## `$66`: `end_if_just_battled`
+
+## `$67`: `check_just_battled`
+
+## `$68`: `setlasttalked` *person*
+
+## `$69`: `applymovement` *person*, *data_pointer*
+
+## `$6A`: `applymovement2` *data_pointer*
+
+## `$6B`: `faceplayer`
+
+## `$6C`: `faceperson` *person1*, *person2*
+
+## `$6D`: `variablesprite` *variable_sprite_id*, *sprite_id*
+
+## `$6E`: `disappear` *person*
+
+## `$6F`: `appear` *person*
+
+## `$70`: `follow` *person2*, *person1*
+
+## `$71`: `stopfollow`
+
+## `$72`: `moveperson` *person*, *x*, *y*
+
+## `$73`: `writepersonxy` *person*
+
+## `$74`: `loademote` *emote_id*
+
+## `$75`: `showemote` *emote_id*, *person*, *length*
+
+## `$76`: `spriteface` *person*, *facing*
+
+## `$77`: `follownotexact` *person2*, *person1*
+
+## `$78`: `earthquake` *param*
+
+## `$79`: `changemap` *bank*, *blockdata_pointer*
+
+## `$7A`: `changeblock` *x*, *y*, *block*
+
+## `$7B`: `reloadmap`
+
+## `$7C`: `reloadmappart`
+
+## `$7D`: `writecmdqueue` *queue_pointer*
+
+## `$7E`: `delcmdqueue` *byte*
+
+## `$7F`: `playmusic` *music_id*
+
+## `$80`: `encountermusic`
+
+## `$81`: `musicfadeout` *music_id*, *length*
+
+## `$82`: `playmapmusic`
+
+## `$83`: `dontrestartmapmusic`
+
+## `$84`: `cry` *mon_id*
+
+## `$85`: `playsound` *sfx_id*
+
+## `$86`: `waitsfx`
+
+## `$87`: `warpsound`
+
+## `$88`: `specialsound`
+
+## `$89`: `passtoengine` *data_pointer*
+
+## `$8A`: `newloadmap` *which_method*
+
+## `$8B`: `pause` *length*
+
+## `$8C`: `deactivatefacing` *length*
+
+## `$8D`: `priorityjump` *script*
+
+## `$8E`: `warpcheck`
+
+## `$8F`: `ptpriorityjump` *script*
+
+## `$90`: `return`
+
+## `$91`: `end`
+
+## `$92`: `reloadandreturn` *which_method*
+
+## `$93`: `end_all`
+
+## `$94`: `pokemart` *dialog_id*, *mart_id*
+
+## `$95`: `elevator` *floor_list*
+
+## `$96`: `trade` *trade_id*
+
+## `$97`: `askforphonenumber` *contact_id*
+
+## `$98`: `phonecall` *call_id*
+
+## `$99`: `hangup`
+
+## `$9A`: `describedecoration` *byte*
+
+## `$9B`: `fruittree` *tree_id*
+
+## `$9C`: `specialphonecall` *call_id*
+
+## `$9D`: `checkphonecall`
+
+## `$9E`: `verbosegiveitem` *item_id*[, *quantity*=1]
+
+## `$9F`: `verbosegiveitem2` *item_id*, *variable*
+
+## `$A0`: `swarm` *swarm_id*, *map*
+
+## `$A1`: `halloffame`
+
+## `$A2`: `credits`
+
+## `$A3`: `warpfacing` *facing*, *map*, *x*, *y*
+
+## `$A4`: `battletowertext` *memory*
+
+## `$A5`: `landmarktotext` *landmark_id*, *memory*
+
+## `$A6`: `trainerclassname` *trainer_group*, *memory*
+
+## `$A7`: `name` *type*, *id*, *memory*
+
+## `$A8`: `wait` *duration*
+
+## `$A9`: `check_save`
--- a/docs/map_scripts.md
+++ b/docs/map_scripts.md
@@ -19,18 +19,19 @@
- **`dbw` *type*, *script***
-## Scripts
+## Event scripts
-[Scripting commands](docs/scripting_commands.md)
+[Event commands](docs/event_commands.md)
## Text
-- **`text`**
-- **`line`**
-- **`cont`**
-- **`para`**
-- **`done`**
+[Text commands](docs/text_commands.md)
+
+
+## Movement data
+
+[Movement commands](docs/movement_commands.md)
## `MapName_MapEventHeader:`
--- a/docs/scripting_commands.md
+++ /dev/null
@@ -1,345 +1,0 @@
-# Scripting Commands
-
-## `$00`: `scall` *script*
-
-## `$01`: `farscall` *script*
-
-## `$02`: `ptcall` *script*
-
-## `$03`: `jump` *script*
-
-## `$04`: `farjump` *script*
-
-## `$05`: `ptjump` *script*
-
-## `$06`: `if_equal` *byte*, *script*
-
-## `$07`: `if_not_equal` *byte*, *script*
-
-## `$08`: `iffalse` *script*
-
-## `$09`: `iftrue` *script*
-
-## `$0A`: `if_greater_than` *byte*, *script*
-
-## `$0B`: `if_less_than` *byte*, *script*
-
-## `$0C`: `jumpstd` *std_script*
-
-## `$0D`: `callstd` *std_script*
-
-## `$0E`: `callasm` *asm*
-
-## `$0F`: `special` *special_pointer*
-
-## `$10`: `ptcallasm` *asm*
-
-## `$11`: `checkmaptriggers` *map*
-
-## `$12`: `domaptrigger` *map*, *trigger_id*
-
-## `$13`: `checktriggers`
-
-## `$14`: `dotrigger` *trigger_id*
-
-## `$15`: `writebyte` *value*
-
-## `$16`: `addvar` *value*
-
-## `$17`: `random` *value*
-
-## `$18`: `checkver`
-
-## `$19`: `copybytetovar` *address*
-
-## `$1A`: `copyvartobyte` *address*
-
-## `$1B`: `loadvar` *address*, *value*
-
-## `$1C`: `checkcode` *variable*
-
-## `$1D`: `writevarcode` *variable*
-
-## `$1E`: `writecode` *variable*, *value*
-
-## `$1F`: `giveitem` *item_id*[, *quantity*=1]
-
-## `$20`: `takeitem` *item_id*[, *quantity*=1]
-
-## `$21`: `checkitem` *item_id*
-
-## `$22`: `givemoney` *account*, *value*
-
-## `$23`: `takemoney` *account*, *value*
-
-## `$24`: `checkmoney` *account*, *value*
-
-## `$25`: `givecoins` *value*
-
-## `$26`: `takecoins` *value*
-
-## `$27`: `checkcoins` *value*
-
-## `$28`: `addcellnum` *contact_id*
-
-## `$29`: `delcellnum` *contact_id*
-
-## `$2A`: `checkcellnum` *contact_id*
-
-## `$2B`: `checktime` *time*
-
-- **`checkmorn`:** `checktime MORN`
-- **`checkday`:** `checktime DAY`
-- **`checknite`:** `checktime NITE`
-
-## `$2C`: `checkpoke` *mon_id*
-
-## `$2D`: `givepoke` *mon_id*, *level*[, *item*=0[, *trainer*=0, *ot_name*, *nickname*]]
-
-## `$2E`: `giveegg` *mon_id*, *level*
-
-## `$2F`: `givepokeitem` *pointer*
-
-## `$30`: `checkpokeitem` *pointer*
-
-## `$31`: `checkevent` *event_flag*
-
-## `$32`: `clearevent` *event_flag*
-
-## `$33`: `setevent` *event_flag*
-
-## `$34`: `checkflag` *engine_flag*
-
-## `$35`: `clearflag` *engine_flag*
-
-## `$36`: `setflag` *engine_flag*
-
-## `$37`: `wildon`
-
-## `$38`: `wildoff`
-
-## `$39`: `xycompare` *pointer*
-
-## `$3A`: `warpmod` *warp_id*, *map*
-
-## `$3B`: `blackoutmod` *map*
-
-## `$3C`: `warp` *map*, *x*, *y*
-
-## `$3D`: `readmoney` *account*, *memory*
-
-## `$3E`: `readcoins` *memory*
-
-## `$3F`: `RAM2MEM` *memory*
-
-## `$40`: `pokenamemem` *mon_id*, *memory*
-
-## `$41`: `itemtotext` *item_id*, *memory*
-
-## `$42`: `mapnametotext` *memory*
-
-## `$43`: `trainertotext` *trainer_id*, *trainer_group*, *memory*
-
-## `$44`: `stringtotext` *text_pointer*, *memory*
-
-## `$45`: `itemnotify`
-
-## `$46`: `pocketisfull`
-
-## `$47`: `opentext`
-
-## `$48`: `refreshscreen` *dummy*
-
-## `$49`: `closetext`
-
-## `$4A`: `loadbytec2cf` *byte*
-
-## `$4B`: `farwritetext` *text_pointer*
-
-## `$4C`: `writetext` *text_pointer*
-
-## `$4D`: `repeattext` *byte1*, *byte2*
-
-## `$4E`: `yesorno`
-
-## `$4F`: `loadmenudata` *data_pointer*
-
-## `$50`: `closewindow`
-
-## `$51`: `jumptextfaceplayer` *text_pointer*
-
-## `$52`: `farjumptext` *text_pointer*
-
-## `$53`: `jumptext` *text_pointer*
-
-## `$54`: `waitbutton`
-
-## `$55`: `buttonsound`
-
-## `$56`: `pokepic` *mon_id*
-
-## `$57`: `closepokepic`
-
-## `$58`: `_2dmenu`
-
-## `$59`: `verticalmenu`
-
-## `$5A`: `loadpikachudata`
-
-## `$5B`: `randomwildmon`
-
-## `$5C`: `loadmemtrainer`
-
-## `$5D`: `loadwildmon` *mon_id*, *level*
-
-## `$5E`: `loadtrainer` *trainer_group*, *trainer_id*
-
-## `$5F`: `startbattle`
-
-## `$60`: `reloadmapafterbattle`
-
-## `$61`: `catchtutorial` *byte*
-
-## `$62`: `trainertext` *which_text*
-
-## `$63`: `trainerflagaction` *action*
-
-## `$64`: `winlosstext` *win_text_pointer*, *loss_text_pointer*
-
-## `$65`: `scripttalkafter`
-
-## `$66`: `end_if_just_battled`
-
-## `$67`: `check_just_battled`
-
-## `$68`: `setlasttalked` *person*
-
-## `$69`: `applymovement` *person*, *data_pointer*
-
-## `$6A`: `applymovement2` *data_pointer*
-
-## `$6B`: `faceplayer`
-
-## `$6C`: `faceperson` *person1*, *person2*
-
-## `$6D`: `variablesprite` *variable_sprite_id*, *sprite_id*
-
-## `$6E`: `disappear` *person*
-
-## `$6F`: `appear` *person*
-
-## `$70`: `follow` *person2*, *person1*
-
-## `$71`: `stopfollow`
-
-## `$72`: `moveperson` *person*, *x*, *y*
-
-## `$73`: `writepersonxy` *person*
-
-## `$74`: `loademote` *emote_id*
-
-## `$75`: `showemote` *emote_id*, *person*, *length*
-
-## `$76`: `spriteface` *person*, *facing*
-
-## `$77`: `follownotexact` *person2*, *person1*
-
-## `$78`: `earthquake` *param*
-
-## `$79`: `changemap` *bank*, *blockdata_pointer*
-
-## `$7A`: `changeblock` *x*, *y*, *block*
-
-## `$7B`: `reloadmap`
-
-## `$7C`: `reloadmappart`
-
-## `$7D`: `writecmdqueue` *queue_pointer*
-
-## `$7E`: `delcmdqueue` *byte*
-
-## `$7F`: `playmusic` *music_id*
-
-## `$80`: `encountermusic`
-
-## `$81`: `musicfadeout` *music_id*, *length*
-
-## `$82`: `playmapmusic`
-
-## `$83`: `dontrestartmapmusic`
-
-## `$84`: `cry` *mon_id*
-
-## `$85`: `playsound` *sfx_id*
-
-## `$86`: `waitsfx`
-
-## `$87`: `warpsound`
-
-## `$88`: `specialsound`
-
-## `$89`: `passtoengine` *data_pointer*
-
-## `$8A`: `newloadmap` *which_method*
-
-## `$8B`: `pause` *length*
-
-## `$8C`: `deactivatefacing` *length*
-
-## `$8D`: `priorityjump` *script*
-
-## `$8E`: `warpcheck`
-
-## `$8F`: `ptpriorityjump` *script*
-
-## `$90`: `return`
-
-## `$91`: `end`
-
-## `$92`: `reloadandreturn` *which_method*
-
-## `$93`: `end_all`
-
-## `$94`: `pokemart` *dialog_id*, *mart_id*
-
-## `$95`: `elevator` *floor_list*
-
-## `$96`: `trade` *trade_id*
-
-## `$97`: `askforphonenumber` *contact_id*
-
-## `$98`: `phonecall` *call_id*
-
-## `$99`: `hangup`
-
-## `$9A`: `describedecoration` *byte*
-
-## `$9B`: `fruittree` *tree_id*
-
-## `$9C`: `specialphonecall` *call_id*
-
-## `$9D`: `checkphonecall`
-
-## `$9E`: `verbosegiveitem` *item_id*[, *quantity*=1]
-
-## `$9F`: `verbosegiveitem2` *item_id*, *variable*
-
-## `$A0`: `swarm` *swarm_id*, *map*
-
-## `$A1`: `halloffame`
-
-## `$A2`: `credits`
-
-## `$A3`: `warpfacing` *facing*, *map*, *x*, *y*
-
-## `$A4`: `battletowertext` *memory*
-
-## `$A5`: `landmarktotext` *landmark_id*, *memory*
-
-## `$A6`: `trainerclassname` *trainer_group*, *memory*
-
-## `$A7`: `name` *type*, *id*, *memory*
-
-## `$A8`: `wait` *duration*
-
-## `$A9`: `check_save`
--- /dev/null
+++ b/docs/text_commands.md
@@ -1,0 +1,131 @@
+# Text Commands
+
+## `$00`: `text` *text*
+
+Start writing text until `"@"`.
+
+## `$4E`: `next` *text*
+
+Move a line down.
+
+## `$4F`: `line` *text*
+
+Start writing at the bottom line.
+
+## `$50`: `page` *text*
+
+Start a new Pokédex page.
+
+## `$51`: `para` *text*
+
+Start a new paragraph.
+
+## `$55`: `cont` *text*
+
+Scroll to the next line.
+
+## `$57`: `done`
+
+End a text box.
+
+## `$58`: `prompt`
+
+Prompt the player to end a text box (initiating some other event).
+
+## `$01`: `text_from_ram` *address*
+
+Write text from a RAM address.
+
+## `$02`: `text_bcd` *address*, *flags*
+
+Write [BCD](https://en.wikipedia.org/wiki/Binary-coded_decimal) from an address,
+typically RAM.
+
+## `$03`: `text_move` *address*
+
+Move to a new tile.
+
+## `$04`: `text_box` *address*, *height*, *width*
+
+Draw a box.
+
+## `$05`: `text_low`
+
+Write text at (1, 16).
+
+## `$06`: `text_waitbutton`
+
+Wait for button press; show arrow.
+
+## `$07`: `text_scroll`
+
+Pushes text up two lines and sets the `bc` cursor to the border tile below the
+first character column of the text box.
+
+## `$08`: `start_asm`
+
+Start interpreting assembly code.
+
+## `$09`: `deciram` *address*, *bytes*, *digits*
+
+Read *bytes* bytes from *address* and print them as a *digits*-digit number.
+
+## `$0A`: `interpret_data`
+
+Exit.
+
+## `$0B`: `sound_dex_fanfare_50_79`
+
+Play `SFX_DEX_FANFARE_50_79`.
+
+## `$0C`: `limited_interpret_data` *number*
+
+Print *number* `"…"`s.
+
+## `$0D`: `link_wait_button`
+
+Wait for button press; show arrow.
+
+## `$0E`: `sound_dex_fanfare_20_49`
+
+Play `SFX_DEX_FANFARE_20_49`.
+
+## `$0F`: `sound_item`
+
+Play `SFX_ITEM`.
+
+## `$10`: `sound_caught_mon`
+
+Play `SFX_CAUGHT_MON`.
+
+## `$11`: `sound_dex_fanfare_80_109`
+
+Play `SFX_DEX_FANFARE_80_109`.
+
+## `$12`: `sound_fanfare`
+
+Play `SFX_FANFARE`.
+
+## `$13`: `sound_slot_machine_start`
+
+Play `SFX_SLOT_MACHINE_START`.
+
+## `$14`: `text_buffer` *id*
+
+Write text from one of the following addresses (listed in `StringBufferPointers`):
+
+0. `StringBuffer3`
+1. `StringBuffer4`
+2. `StringBuffer5`
+3. `StringBuffer2`
+4. `StringBuffer1`
+5. `EnemyMonNick`
+6. `BattleMonNick`
+
+## `$15`: `current_day`
+
+Print the weekday.
+
+## `$16`: `text_jump` *address*
+
+Write text from a different bank.
--- a/macros/text.asm
+++ b/macros/text.asm
@@ -1,7 +1,7 @@
text EQUS "db $00," ; Start writing text.
next EQUS "db $4e," ; Move a line down.
line EQUS "db $4f," ; Start writing at the bottom line.
-page EQUS "db $50," ; Start a new Pokedex page.
+page EQUS "db $50," ; Start a new Pokédex page.
para EQUS "db $51," ; Start a new paragraph.
cont EQUS "db $55," ; Scroll to the next line.
done EQUS "db $57" ; End a text box.