ref: fb931fe616504a8cf141521dec6fc6f7d236bff8
parent: 41dbd3b4a6f43439f691918815f26cfad9c06231
author: yenatch <[email protected]>
date: Mon Jun 17 17:26:33 EDT 2013
move miscellaneous asm into engine/
--- a/bittable2.asm
+++ /dev/null
@@ -1,198 +1,0 @@
-; All locations are in WRAM bank 1.
-
- ; location, bit
-
- ; pokegear
- dwb $d957, %00000010 ; radio card
- dwb $d957, %00000001 ; map card
- dwb $d957, %00000100 ; phone card
- dwb $d957, %00001000 ; expn card
- dwb $d957, %10000000 ; on/off
-
- ; DaycareMan, %10000000 ; daycare 1 on
- dwb DaycareMan, %01000000 ; monster 1 and 2 are compatible
- ; DaycareMan, %00100000 ; egg is ready
- dwb DaycareMan, %00000001 ; monster 1 in daycare
-
- ; DaycareLady, %10000000 = daycare 2 on
- dwb DaycareLady, %00000001 ; monster 2 in daycare
-
- dwb $d854, %00000001 ; mom saving money
- dwb $d854, %10000000 ; dst
-
- dwb $dc39, %00000001
-
- dwb $d84c, %00000001 ; pokedex
- dwb $d84c, %00000010 ; unown dex
- dwb $d84c, %00001000 ; pokerus
- dwb $d84c, %00010000 ; rocket signal on ch20
- dwb $d84c, %01000000 ; credits skip
- dwb $d84c, %10000000 ; bug contest on
- dwb $d84d, %00000100 ; bug contest timer
- dwb $d84d, %00000010 ; rockets in radio tower
- dwb $d84d, %00000001 ; bike shop call enabled (1024 bike steps reqd)
- dwb $d84d, %00010000
- dwb $d84d, %00100000 ; give pokerus; berry -> berry juice when trading?
- dwb $d84d, %01000000
- dwb $d84d, %10000000 ; rockets in mahogany
-
- dwb $dbf5, %00000001 ; strength active
- dwb $dbf5, %00000010 ; always on bike (cant surf)
- dwb $dbf5, %00000100 ; downhill (cycling road)
-
- dwb JohtoBadges, %00000001 ; zephyrbadge
- dwb JohtoBadges, %00000010 ; hivebadge
- dwb JohtoBadges, %00000100 ; plainbadge
- dwb JohtoBadges, %00001000 ; fogbadge
- dwb JohtoBadges, %00010000 ; mineralbadge
- dwb JohtoBadges, %00100000 ; stormbadge
- dwb JohtoBadges, %01000000 ; glacierbadge
- dwb JohtoBadges, %10000000 ; risingbadge
-
- dwb KantoBadges, %00000001 ; boulderbadge
- dwb KantoBadges, %00000010 ; cascadebadge
- dwb KantoBadges, %00000100 ; thunderbadge
- dwb KantoBadges, %00001000 ; rainbowbadge
- dwb KantoBadges, %00010000 ; soulbadge
- dwb KantoBadges, %00100000 ; marshbadge
- dwb KantoBadges, %01000000 ; volcanobadge
- dwb KantoBadges, %10000000 ; earthbadge
-
- ; unown sets
- dwb UnlockedUnowns, %00000001 ; 1
- dwb UnlockedUnowns, %00000010 ; 2
- dwb UnlockedUnowns, %00000100 ; 3
- dwb UnlockedUnowns, %00001000 ; 4
- dwb UnlockedUnowns, %00010000 ; 5
- dwb UnlockedUnowns, %00100000 ; 6
- dwb UnlockedUnowns, %01000000 ; 7
- dwb UnlockedUnowns, %10000000 ; 8
-
- ; fly
- dwb FlypointPerms, %00000001 ; your house
- dwb FlypointPerms, %00000010 ; viridian pokecenter
- dwb FlypointPerms, %00000100 ; pallet
- dwb FlypointPerms, %00001000 ; viridian
- dwb FlypointPerms, %00010000 ; pewter
- dwb FlypointPerms, %00100000 ; cerulean
- dwb FlypointPerms, %01000000 ; rock tunnel
- dwb FlypointPerms, %10000000 ; vermilion
- dwb FlypointPerms + 1, %00000001 ; lavender
- dwb FlypointPerms + 1, %00000010 ; saffron
- dwb FlypointPerms + 1, %00000100 ; celadon
- dwb FlypointPerms + 1, %00001000 ; fuchsia
- dwb FlypointPerms + 1, %00010000 ; cinnabar
- dwb FlypointPerms + 1, %00100000 ; indigo plateau
- dwb FlypointPerms + 1, %01000000 ; new bark
- dwb FlypointPerms + 1, %10000000 ; cherrygrove
- dwb FlypointPerms + 2, %00000001 ; violet
- dwb FlypointPerms + 2, %00000100 ; azalea
- dwb FlypointPerms + 2, %00001000 ; cianwood
- dwb FlypointPerms + 2, %00010000 ; goldenrod
- dwb FlypointPerms + 2, %00100000 ; olivine
- dwb FlypointPerms + 2, %01000000 ; ecruteak
- dwb FlypointPerms + 2, %10000000 ; mahogany
- dwb FlypointPerms + 3, %00000001 ; lake of rage
- dwb FlypointPerms + 3, %00000010 ; blackthorn
- dwb FlypointPerms + 3, %00000100 ; silver cave
- dwb FlypointPerms + 3, %00010000 ; unused
-
- dwb $dc9d, %00000001 ; lucky number show
- dwb $d84d, %00001000
-
- dwb $dc1e, %00000001 ; kurt making balls
- dwb $dc1e, %00000010
- dwb $dc1e, %00000100 ; special wilddata?
- dwb $dc1e, %00001000 ; time capsule (24h wait)
- dwb $dc1e, %00010000 ; all fruit trees
- dwb $dc1e, %00100000 ; shuckle given
- dwb $dc1e, %01000000 ; goldenrod underground merchant closed
- dwb $dc1e, %10000000 ; fought in trainer hall today
-
- dwb $dc1f, %00000001 ; mt moon square clefairy
- dwb $dc1f, %00000010 ; union cave lapras
- dwb $dc1f, %00000100 ; goldenrod underground haircut used
- dwb $dc1f, %00001000 ; goldenrod mall happiness event floor05 person07
- dwb $dc1f, %00010000 ; tea in blues house
- dwb $dc1f, %00100000 ; indigo plateau rival fight
- dwb $dc1f, %01000000
- dwb $dc1f, %10000000
-
- dwb $dc20, %00000001 ; $60
- dwb $dc20, %00000010 ; goldenrod dept store sale is on
-
- dwb $cfbc, %10000000 ; $62
-
- dwb PlayerGender, %00000001 ; player is female
-
- dwb $dbf3, %00000100 ; have gs ball after kurt examined it
-
- ; rematches
- dwb $dc4c, %00000001 ; jack
- dwb $dc4c, %00000010 ; huey
- dwb $dc4c, %00000100 ; gaven
- dwb $dc4c, %00001000 ; beth
- dwb $dc4c, %00010000 ; jose
- dwb $dc4c, %00100000 ; reena
- dwb $dc4c, %01000000 ; joey
- dwb $dc4c, %10000000 ; wade
- dwb $dc4d, %00000001 ; ralph
- dwb $dc4d, %00000010 ; liz
- dwb $dc4d, %00000100 ; anthony
- dwb $dc4d, %00001000 ; todd
- dwb $dc4d, %00010000 ; gina
- dwb $dc4d, %00100000 ; arnie
- dwb $dc4d, %01000000 ; alan
- dwb $dc4d, %10000000 ; dana
- dwb $dc4e, %00000001 ; chad
- dwb $dc4e, %00000010 ; tully
- dwb $dc4e, %00000100 ; brent
- dwb $dc4e, %00001000 ; tiffany
- dwb $dc4e, %00010000 ; vance
- dwb $dc4e, %00100000 ; wilton
- dwb $dc4e, %01000000 ; parry
- dwb $dc4e, %10000000 ; erin
-
- dwb $dc50, %00000001 ; beverly has nugget
- dwb $dc50, %00000010 ; jose has star piece
- dwb $dc50, %00000100 ; wade has item (see bittable1 $032b-e)
- dwb $dc50, %00001000 ; gina has leaf stone
- dwb $dc50, %00010000 ; alan has fire stone
- dwb $dc50, %00100000 ; liz has thunderstone
- dwb $dc50, %01000000 ; derek has nugget
- dwb $dc50, %10000000 ; tully has water stone
-
- dwb $dc51, %00000001 ; tiffany has pink bow
- dwb $dc51, %00000010 ; wilton has item (see bittable1 $032f-31)
-
- dwb $dc54, %00000001
- dwb $dc54, %00000010
- dwb $dc54, %00000100
- dwb $dc54, %00001000
- dwb $dc54, %00010000
- dwb $dc54, %00100000
- dwb $dc54, %01000000
- dwb $dc54, %10000000
-
- dwb $dc55, %00000001
- dwb $dc55, %00000010
- dwb $dc55, %00000100
- dwb $dc55, %00001000
- dwb $dc55, %00010000
- dwb $dc55, %00100000
- dwb $dc55, %01000000
- dwb $dc55, %10000000
-
- dwb $dc56, %00000001
- dwb $dc56, %00000010
- dwb $dc56, %00000100
- dwb $dc56, %00001000
- dwb $dc56, %00010000
- dwb $dc56, %00100000
- dwb $dc56, %01000000
- dwb $dc56, %10000000
-
- dwb $d45b, %00000100 ; female player has been transformed into male
-
- dwb $dc20, %00000100 ; dunsparce swarm
- dwb $dc20, %00001000 ; yanma swarm
--- a/credits.asm
+++ /dev/null
@@ -1,824 +1,0 @@
-SATOSHI_TAJIRI EQU 00
-JUNICHI_MASUDA EQU 01
-TETSUYA_WATANABE EQU 02
-SHIGEKI_MORIMOTO EQU 03
-SOUSUKE_TAMADA EQU 04
-TAKENORI_OOTA EQU 05
-KEN_SUGIMORI EQU 06
-MOTOFUMI_FUJIWARA EQU 07
-ATSUKO_NISHIDA EQU 08
-MUNEO_SAITO EQU 09
-SATOSHI_OOTA EQU 10
-RENA_YOSHIKAWA EQU 11
-JUN_OKUTANI EQU 12
-HIRONOBU_YOSHIDA EQU 13
-ASUKA_IWASHITA EQU 14
-GO_ICHINOSE EQU 15
-MORIKAZU_AOKI EQU 16
-KOHJI_NISHINO EQU 17
-KENJI_MATSUSHIMA EQU 18
-TOSHINOBU_MATSUMIYA EQU 19
-SATORU_IWATA EQU 20
-NOBUHIRO_SEYA EQU 21
-KAZUHITO_SEKINE EQU 22
-TETSUJI_OOTA EQU 23
-NCL_SUPER_MARIO_CLUB EQU 24
-SARUGAKUCHO EQU 25
-AKITO_MORI EQU 26
-TAKAHIRO_HARADA EQU 27
-TOHRU_HASHIMOTO EQU 28
-NOBORU_MATSUMOTO EQU 29
-TAKEHIRO_IZUSHI EQU 30
-TAKASHI_KAWAGUCHI EQU 31
-TSUNEKAZU_ISHIHARA EQU 32
-HIROSHI_YAMAUCHI EQU 33
-KENJI_SAIKI EQU 34
-ATSUSHI_TADA EQU 35
-NAOKO_KAWAKAMI EQU 36
-HIROYUKI_ZINNAI EQU 37
-KUNIMI_KAWAMURA EQU 38
-HISASHI_SOGABE EQU 39
-KEITA_KAGAYA EQU 40
-YOSHINORI_MATSUDA EQU 41
-HITOMI_SATO EQU 42
-TORU_OSAWA EQU 43
-TAKAO_OHARA EQU 44
-YUICHIRO_ITO EQU 45
-TAKAO_SHIMIZU EQU 46
-PLANNING EQU 47
-KEITA_NAKAMURA EQU 48
-HIROTAKA_UEMURA EQU 49
-HIROAKI_TAMURA EQU 50
-NORIAKI_SAKAGUCHI EQU 51
-MIYUKI_SATO EQU 52
-GAKUZI_NOMOTO EQU 53
-AI_MASHIMA EQU 54
-MIKIHIRO_ISHIKAWA EQU 55
-HIDEYUKI_HASHIMOTO EQU 56
-SATOSHI_YAMATO EQU 57
-SHIGERU_MIYAMOTO EQU 58
-GAIL_TILDEN EQU 59
-NOB_OGASAWARA EQU 60
-SETH_MCMAHILL EQU 61
-HIROTO_ALEXANDER EQU 62
-TERESA_LILLYGREN EQU 63
-THOMAS_HERTZOG EQU 64
-ERIK_JOHNSON EQU 65
-HIRO_NAKAMURA EQU 66
-TERUKI_MURAKAWA EQU 67
-KAZUYOSHI_OSAWA EQU 68
-KIMIKO_NAKAMICHI EQU 69
-END EQU 70
-CREDITS_UNKNOWN EQU 71
-STAFF EQU 72
-DIRECTOR EQU 73
-CODIRECTOR EQU 74
-PROGRAMMERS EQU 75
-GRAPHICS_DIRECTOR EQU 76
-MONSTER_DESIGN EQU 77
-GRAPHICS_DESIGN EQU 78
-MUSIC EQU 79
-SOUND_EFFECTS EQU 80
-GAME_DESIGN EQU 81
-GAME_SCENARIO EQU 82
-TOOL_PROGRAMMING EQU 83
-PARAMETRIC_DESIGN EQU 84
-SCRIPT_DESIGN EQU 85
-MAP_DATA_DESIGN EQU 86
-MAP_DESIGN EQU 87
-PRODUCT_TESTING EQU 88
-SPECIAL_THANKS EQU 89
-PRODUCERS EQU 90
-EXECUTIVE_PRODUCER EQU 91
-POKEMON_ANIMATION EQU 92
-POKEDEX_TEXT EQU 93
-MOBILE_PRJ_LEADER EQU 94
-MOBILE_SYSTEM_AD EQU 95
-MOBILE_STADIUM_DIR EQU 96
-COORDINATION EQU 97
-COPYRIGHT EQU 98
-US_VERSION_STAFF EQU 99
-US_COORDINATION EQU 100
-TEXT_TRANSLATION EQU 101
-PAAD_TESTING EQU 102
-
-CREDITS_THEEND EQU $f9
-CREDITS_WAIT2 EQU $fa
-CREDITS_MUSIC EQU $fb
-CREDITS_CLEAR EQU $fc
-CREDITS_SCENE EQU $fd
-CREDITS_WAIT EQU $fe
-
-
-ParseCredits: ; 1099aa
- ld hl, $cf63
- bit 7, [hl]
- jp nz, .done
-
-; Wait until the timer has run out to parse the next command.
- ld hl, CreditsTimer
- ld a, [hl]
- and a
- jr z, .parse
-
-; One tick has passed.
- dec [hl]
- jp .done
-
-.parse
-; First, let's clear the current text display,
-; starting from line 5.
- xor a
- ld [$ffd4], a
- hlcoord 0, 5
- ld bc, 20 * 12
- ld a, " "
- call ByteFill
-
-; Then read the script.
-
-.loop
- call .get
-
-; Commands:
- cp $ff
- jp z, .end
- cp CREDITS_WAIT
- jr z, .wait
- cp CREDITS_SCENE
- jr z, .scene
- cp CREDITS_CLEAR
- jr z, .clear
- cp CREDITS_MUSIC
- jr z, .music
- cp CREDITS_WAIT2
- jr z, .wait2
- cp CREDITS_THEEND
- jr z, .theend
-
-; If it's not a command, it's a string identifier.
-
- push af
- ld e, a
- ld d, 0
- ld hl, CreditsStrings
- add hl, de
- add hl, de
- ld a, [hli]
- ld d, [hl]
- ld e, a
- pop af
-
-; Strings spanning multiple lines have special cases.
-
- cp COPYRIGHT
- jr z, .copyright
-
- cp STAFF
- jr c, .staff
-
-; The rest start from line 6.
-
- hlcoord 0, 6
- jr .print
-
-.copyright
- hlcoord 2, 6
- jr .print
-
-.staff
- hlcoord 0, 6
-
-; Print strings spaced every two lines.
- call .get
- ld bc, 20 * 2
- call AddNTimes
- call PlaceString
- jr .loop
-
-.theend
-; Display "The End" graphic.
- call $5c11
- jr .loop
-
-.scene
-; Update the scene number and corresponding palette.
- call .get
- ld [$cf65], a ; scene
- xor a
- ld [$cf64], a ; frame
- call GetCreditsPalette
- call $32f9 ; update hw pal registers
- jr .loop
-
-.clear
-; Clear the banner.
- ld a, $ff
- ld [$cf64], a ; frame
- jr .loop
-
-.music
-; Play the credits music.
- ld de, MUSIC_CREDITS
- push de
- ld de, MUSIC_NONE
- call StartMusic
- call DelayFrame
- pop de
- call StartMusic
- jp .loop
-
-.wait2
-; Wait for some amount of ticks.
- call .get
- ld [CreditsTimer], a
- jr .done
-
-.wait
-; Wait for some amount of ticks, and do something else.
- call .get
- ld [CreditsTimer], a
-
- xor a
- ld [$ffd5], a
- ld a, 1
- ld [$ffd4], a
-
-.done
- jp $5951
-
-.end
-; Stop execution.
- ld hl, $cf63
- set 7, [hl]
- ld a, $20
- ld [$c2a7], a
- ld a, $5c
- ld [$c2a9], a
- ld a, $00
- ld [$c2aa], a
- ret
-
-.get
-; Get byte CreditsPos from CreditsScript
- push hl
- push de
- ld a, [CreditsPos]
- ld e, a
- ld a, [CreditsPos+1]
- ld d, a
- ld hl, CreditsScript
- add hl, de
-
- inc de
- ld a, e
- ld [CreditsPos], a
- ld a, d
- ld [CreditsPos+1], a
- ld a, [hl]
- pop de
- pop hl
- ret
-; 109a95
-
-
-INCBIN "baserom.gbc", $109a95, $109b2c - $109a95
-
-
-GetCreditsPalette: ; 109b2c
- call .GetPalAddress
-
- push hl
- ld a, 0
- call .UpdatePals
- pop hl
- ret
-
-.GetPalAddress
-; Each set of palette data is 24 bytes long.
- ld a, [$cf65] ; scene
- and 3
- add a
- add a ; * 8
- add a
- ld e, a
- ld d, 0
- ld hl, .CreditsPalettes
- add hl, de
- add hl, de ; * 3
- add hl, de
- ret
-
-.UpdatePals
-; Update the first three colors in both palette buffers.
-
- push af
- push hl
- add $00 ; lo($d000)
- ld e, a
- ld a, 0
- adc $d0 ; hi($d000)
- ld d, a
- ld bc, 24
- call CopyBytes
-
- pop hl
- pop af
- add $80 ; lo($d080)
- ld e, a
- ld a, 0
- adc $d0 ; hi($d080)
- ld d, a
- ld bc, 24
- call CopyBytes
- ret
-
-
-.CreditsPalettes
-INCBIN "baserom.gbc",$109b6a,$18 ; pichu.pal
-INCBIN "baserom.gbc",$109b82,$18 ; smoochum.pal
-INCBIN "baserom.gbc",$109b9a,$18 ; ditto.pal
-INCBIN "baserom.gbc",$109bb2,$18 ; igglybuff.pal
-; 109bca
-
-INCBIN "baserom.gbc", $109bca, $109c24 - $109bca
-
-CreditsGFX:
-INCBIN "gfx/credits/border.2bpp"
-INCBIN "gfx/credits/pichu.2bpp"
-INCBIN "gfx/credits/smoochum.2bpp"
-INCBIN "gfx/credits/ditto.2bpp"
-INCBIN "gfx/credits/igglybuff.2bpp"
-
-
-CreditsScript: ; 10acb4
-
-; Clear the banner.
- db CREDITS_CLEAR
-
-; Pokemon Crystal Version Staff
- db STAFF, 01
- db CREDITS_WAIT, 08
-
-; Play the credits music.
- db CREDITS_MUSIC
-
- db CREDITS_WAIT2, 10
-
- db CREDITS_WAIT, 01
-
-; Update the banner.
- db CREDITS_SCENE, 00 ; Pichu
-
- db DIRECTOR, 01
- db SATOSHI_TAJIRI, 02
- db CREDITS_WAIT, 12
-
- db CODIRECTOR, 01
- db JUNICHI_MASUDA, 02
- db CREDITS_WAIT, 12
-
- db PROGRAMMERS, 00
- db SOUSUKE_TAMADA, 01
- db HISASHI_SOGABE, 02
- db KEITA_KAGAYA, 03
- db YOSHINORI_MATSUDA, 04
- db CREDITS_WAIT, 12
-
- db PROGRAMMERS, 00
- db SHIGEKI_MORIMOTO, 01
- db TETSUYA_WATANABE, 02
- db TAKENORI_OOTA, 03
- db CREDITS_WAIT, 12
-
- db GRAPHICS_DIRECTOR, 01
- db KEN_SUGIMORI, 02
- db CREDITS_WAIT, 12
-
- db MONSTER_DESIGN, 00
- db KEN_SUGIMORI, 01
- db MOTOFUMI_FUJIWARA, 02
- db SHIGEKI_MORIMOTO, 03
- db HIRONOBU_YOSHIDA, 04
- db SATOSHI_OOTA, 05
- db CREDITS_WAIT, 12
-
- db MONSTER_DESIGN, 00
- db ATSUKO_NISHIDA, 01
- db MUNEO_SAITO, 02
- db RENA_YOSHIKAWA, 03
- db CREDITS_WAIT, 12
-
- db POKEMON_ANIMATION, 01
- db HIRONOBU_YOSHIDA, 02
- db JUN_OKUTANI, 03
- db CREDITS_WAIT, 12
-
-; Clear the banner.
- db CREDITS_CLEAR
-
- db CREDITS_WAIT, 01
-
-; Update the banner.
- db CREDITS_SCENE, 01 ; Smoochum
-
- db GRAPHICS_DESIGN, 00
- db HIRONOBU_YOSHIDA, 01
- db JUN_OKUTANI, 02
- db ASUKA_IWASHITA, 03
- db TETSUYA_WATANABE, 04
- db CREDITS_WAIT, 12
-
- db MUSIC, 00
- db JUNICHI_MASUDA, 01
- db MORIKAZU_AOKI, 02
- db GO_ICHINOSE, 03
- db CREDITS_WAIT, 12
-
- db SOUND_EFFECTS, 00
- db MORIKAZU_AOKI, 01
- db JUNICHI_MASUDA, 02
- db TETSUYA_WATANABE, 03
- db CREDITS_WAIT, 12
-
- db GAME_DESIGN, 00
- db JUNICHI_MASUDA, 01
- db SHIGEKI_MORIMOTO, 02
- db KOHJI_NISHINO, 03
- db CREDITS_WAIT, 12
-
- db GAME_DESIGN, 00
- db TETSUJI_OOTA, 01
- db HITOMI_SATO, 02
- db KENJI_MATSUSHIMA, 03
- db CREDITS_WAIT, 12
-
- db GAME_SCENARIO, 00
- db JUNICHI_MASUDA, 01
- db KOHJI_NISHINO, 02
- db TOSHINOBU_MATSUMIYA, 03
- db KENJI_MATSUSHIMA, 04
- db CREDITS_WAIT, 12
-
- db POKEDEX_TEXT, 01
- db TOSHINOBU_MATSUMIYA, 02
- db CREDITS_WAIT, 12
-
- db TOOL_PROGRAMMING, 01
- db SOUSUKE_TAMADA, 02
- db TAKENORI_OOTA, 03
- db CREDITS_WAIT, 12
-
- db PARAMETRIC_DESIGN, 01
- db KOHJI_NISHINO, 02
- db CREDITS_WAIT, 12
-
-; Clear the banner.
- db CREDITS_CLEAR
-
- db CREDITS_WAIT, 01
-
-; Update the banner.
- db CREDITS_SCENE, 02 ; Ditto
-
- db SCRIPT_DESIGN, 01
- db TETSUJI_OOTA, 02
- db NOBUHIRO_SEYA, 03
- db CREDITS_WAIT, 12
-
- db MAP_DATA_DESIGN, 01
- db TETSUJI_OOTA, 02
- db KAZUHITO_SEKINE, 03
- db CREDITS_WAIT, 12
-
- db MAP_DESIGN, 00
- db TETSUJI_OOTA, 01
- db KOHJI_NISHINO, 02
- db NOBUHIRO_SEYA, 03
- db CREDITS_WAIT, 12
-
- db COORDINATION, 01
- db HIROYUKI_ZINNAI, 02
- db CREDITS_WAIT, 12
-
- db PRODUCERS, 00
- db SATORU_IWATA, 01
- db SATOSHI_YAMATO, 02
- db SHIGERU_MIYAMOTO, 03
- db CREDITS_WAIT, 12
-
- db PRODUCERS, 01
- db TSUNEKAZU_ISHIHARA, 02
- db CREDITS_WAIT, 12
-
-; Clear the banner.
- db CREDITS_CLEAR
-
- db CREDITS_WAIT, 01
-
-; Update the banner.
- db CREDITS_SCENE, 03 ; Igglybuff
-
- db US_VERSION_STAFF, 02
- db CREDITS_WAIT, 09
-
- db US_COORDINATION, 01
- db GAIL_TILDEN, 02
- db HIRO_NAKAMURA, 03
- db CREDITS_WAIT, 12
-
- db US_COORDINATION, 01
- db JUNICHI_MASUDA, 02
- db SETH_MCMAHILL, 03
- db CREDITS_WAIT, 12
-
- db US_COORDINATION, 01
- db HIROTO_ALEXANDER, 02
- db TERESA_LILLYGREN, 03
- db CREDITS_WAIT, 12
-
- db TEXT_TRANSLATION, 01
- db NOB_OGASAWARA, 02
- db CREDITS_WAIT, 12
-
- db PROGRAMMERS, 01
- db TERUKI_MURAKAWA, 02
- db KAZUYOSHI_OSAWA, 03
- db CREDITS_WAIT, 12
-
- db PAAD_TESTING, 01
- db THOMAS_HERTZOG, 02
- db ERIK_JOHNSON, 03
- db CREDITS_WAIT, 12
-
- db PRODUCT_TESTING, 00
- db PLANNING, 01
- db CREDITS_WAIT, 12
-
- db PRODUCT_TESTING, 00
- db KEITA_NAKAMURA, 01
- db HIROTAKA_UEMURA, 02
- db HIROAKI_TAMURA, 03
- db NORIAKI_SAKAGUCHI, 04
- db CREDITS_WAIT, 12
-
- db PRODUCT_TESTING, 00
- db NCL_SUPER_MARIO_CLUB, 01
- db KENJI_SAIKI, 02
- db ATSUSHI_TADA, 03
- db MIYUKI_SATO, 04
- db CREDITS_WAIT, 12
-
- db SPECIAL_THANKS, 00
- db KIMIKO_NAKAMICHI, 01
- db AKITO_MORI, 02
- db CREDITS_WAIT, 12
-
- db SPECIAL_THANKS, 00
- db GAKUZI_NOMOTO, 01
- db AI_MASHIMA, 02
- db KUNIMI_KAWAMURA, 03
- db CREDITS_WAIT, 12
-
- db SPECIAL_THANKS, 00
- db MIKIHIRO_ISHIKAWA, 01
- db HIDEYUKI_HASHIMOTO, 02
- db CREDITS_WAIT, 12
-
- db EXECUTIVE_PRODUCER, 01
- db HIROSHI_YAMAUCHI, 02
- db CREDITS_WAIT, 12
-
- db COPYRIGHT, 01
- db CREDITS_WAIT, 09
-
-; Display "The End" graphic.
- db CREDITS_THEEND
-
- db CREDITS_WAIT, 20
-
- db $ff ; end
-; 10ae13
-
-
-CreditsStrings:
- dw .SatoshiTajiri
- dw .JunichiMasuda
- dw .TetsuyaWatanabe
- dw .ShigekiMorimoto
- dw .SousukeTamada
- dw .TakenoriOota
- dw .KenSugimori
- dw .MotofumiFujiwara
- dw .AtsukoNishida
- dw .MuneoSaito
- dw .SatoshiOota
- dw .RenaYoshikawa
- dw .JunOkutani
- dw .HironobuYoshida
- dw .AsukaIwashita
- dw .GoIchinose
- dw .MorikazuAoki
- dw .KohjiNishino
- dw .KenjiMatsushima
- dw .ToshinobuMatsumiya
- dw .SatoruIwata
- dw .NobuhiroSeya
- dw .KazuhitoSekine
- dw .TetsujiOota
- dw .NclSuperMarioClub
- dw .Sarugakucho
- dw .AkitoMori
- dw .TakahiroHarada
- dw .TohruHashimoto
- dw .NoboruMatsumoto
- dw .TakehiroIzushi
- dw .TakashiKawaguchi
- dw .TsunekazuIshihara
- dw .HiroshiYamauchi
- dw .KenjiSaiki
- dw .AtsushiTada
- dw .NaokoKawakami
- dw .HiroyukiZinnai
- dw .KunimiKawamura
- dw .HisashiSogabe
- dw .KeitaKagaya
- dw .YoshinoriMatsuda
- dw .HitomiSato
- dw .ToruOsawa
- dw .TakaoOhara
- dw .YuichiroIto
- dw .TakaoShimizu
- dw .Planning
- dw .KeitaNakamura
- dw .HirotakaUemura
- dw .HiroakiTamura
- dw .NoriakiSakaguchi
- dw .MiyukiSato
- dw .GakuziNomoto
- dw .AiMashima
- dw .MikihiroIshikawa
- dw .HideyukiHashimoto
- dw .SatoshiYamato
- dw .ShigeruMiyamoto
- dw .GailTilden
- dw .NobOgasawara
- dw .SethMcMahill
- dw .HirotoAlexander
- dw .TeresaLillygren
- dw .ThomasHertzog
- dw .ErikJohnson
- dw .HiroNakamura
- dw .TerukiMurakawa
- dw .KazuyoshiOsawa
- dw .KimikoNakamichi
- dw .End
- dw .Unknown
- dw .Staff
- dw .Director
- dw .CoDirector
- dw .Programmers
- dw .GraphicsDirector
- dw .MonsterDesign
- dw .GraphicsDesign
- dw .Music
- dw .SoundEffects
- dw .GameDesign
- dw .GameScenario
- dw .ToolProgramming
- dw .ParametricDesign
- dw .ScriptDesign
- dw .MapDataDesign
- dw .MapDesign
- dw .ProductTesting
- dw .SpecialThanks
- dw .Producers
- dw .ExecutiveProducer
- dw .PokemonAnimation
- dw .PokedexText
- dw .MobilePrjLeader
- dw .MobileSystemAd
- dw .MobileStadiumDir
- dw .Coordination
- dw .Copyright
- dw .UsVersionStaff
- dw .UsCoordination
- dw .TextTranslation
- dw .PaadTesting
-
-.SatoshiTajiri: db " SATOSHI TAJIRI@" ; "たじり さとし@"
-.JunichiMasuda: db " JUNICHI MASUDA@" ; "ますだ じゅんいち@"
-.TetsuyaWatanabe: db " TETSUYA WATANABE@" ; "わたなべ てつや@"
-.ShigekiMorimoto: db " SHIGEKI MORIMOTO@" ; "もりもと しげき@"
-.SousukeTamada: db " SOUSUKE TAMADA@" ; "たまだ そうすけ@"
-.TakenoriOota: db " TAKENORI OOTA@" ; "おおた たけのり@"
-.KenSugimori: db " KEN SUGIMORI@" ; "すぎもり けん@"
-.MotofumiFujiwara: db " MOTOFUMI FUJIWARA@" ; "ふじわら もとふみ@"
-.AtsukoNishida: db " ATSUKO NISHIDA@" ; "にしだ あつこ@"
-.MuneoSaito: db " MUNEO SAITO@" ; "さいとう むねお@"
-.SatoshiOota: db " SATOSHI OOTA@" ; "おおた さとし@"
-.RenaYoshikawa: db " RENA YOSHIKAWA@" ; "よしかわ れな@"
-.JunOkutani: db " JUN OKUTANI@" ; "おくたに じゅん@"
-.HironobuYoshida: db " HIRONOBU YOSHIDA@" ; "よしだ ひろのぶ@"
-.AsukaIwashita: db " ASUKA IWASHITA@" ; "いわした あすか@"
-.GoIchinose: db " GO ICHINOSE@" ; "いちのせ ごう@"
-.MorikazuAoki: db " MORIKAZU AOKI@" ; "あおき もりかず@"
-.KohjiNishino: db " KOHJI NISHINO@" ; "にしの こうじ@"
-.KenjiMatsushima: db " KENJI MATSUSHIMA@" ; "まつしま けんじ@"
-.ToshinobuMatsumiya: db "TOSHINOBU MATSUMIYA@" ; "まつみや としのぶ@"
-.SatoruIwata: db " SATORU IWATA@" ; "いわた さとる@"
-.NobuhiroSeya: db " NOBUHIRO SEYA@" ; "せや のぶひろ@"
-.KazuhitoSekine: db " KAZUHITO SEKINE@" ; "せきね かずひと@"
-.TetsujiOota: db " TETSUJI OOTA@" ; "おおた てつじ@"
-.NclSuperMarioClub: db "NCL SUPER MARIO CLUB@" ; "スーパーマりォクラブ@"
-.Sarugakucho: db " SARUGAKUCHO@" ; "さるがくちょう@"
-.AkitoMori: db " AKITO MORI@" ; "もり あきと@"
-.TakahiroHarada: db " TAKAHIRO HARADA@" ; "はらだ たかひろ@"
-.TohruHashimoto: db " TOHRU HASHIMOTO@" ; "はしもと とおる@"
-.NoboruMatsumoto: db " NOBORU MATSUMOTO@" ; "まつもと のぼる@"
-.TakehiroIzushi: db " TAKEHIRO IZUSHI@" ; "いずし たけひろ@"
-.TakashiKawaguchi: db " TAKASHI KAWAGUCHI@" ; "かわぐち たかし@"
-.TsunekazuIshihara: db " TSUNEKAZU ISHIHARA@" ; "いしはら つねかず@"
-.HiroshiYamauchi: db " HIROSHI YAMAUCHI@" ; "やまうち ひろし@"
-.KenjiSaiki: db " KENJI SAIKI@" ; "さいき けんじ@"
-.AtsushiTada: db " ATSUSHI TADA@" ; "ただ あつし@"
-.NaokoKawakami: db " NAOKO KAWAKAMI@" ; "かわかみ なおこ@"
-.HiroyukiZinnai: db " HIROYUKI ZINNAI@" ; "じんない ひろゆき@"
-.KunimiKawamura: db " KUNIMI KAWAMURA@" ; "かわむら くにみ@"
-.HisashiSogabe: db " HISASHI SOGABE@" ; "そがべ ひさし@"
-.KeitaKagaya: db " KEITA KAGAYA@" ; "かがや けいた@"
-.YoshinoriMatsuda: db " YOSHINORI MATSUDA@" ; "まつだ よしのり@"
-.HitomiSato: db " HITOMI SATO@" ; "さとう ひとみ@"
-.ToruOsawa: db " TORU OSAWA@" ; "おおさわ とおる@"
-.TakaoOhara: db " TAKAO OHARA@" ; "おおはら たかお@"
-.YuichiroIto: db " YUICHIRO ITO@" ; "いとう ゆういちろう@"
-.TakaoShimizu: db " TAKAO SHIMIZU@" ; "しみず たかお@"
-.Planning: db " SPECIAL PRODUCTION", $4e
- db " PLANNING", $4e ; "きかくかいはつぶ@"
- db " & DEVELOPMENT DEPT.@"
-.KeitaNakamura: db " KEITA NAKAMURA@" ; "なかむら けいた@"
-.HirotakaUemura: db " HIROTAKA UEMURA@" ; "うえむら ひろたか@"
-.HiroakiTamura: db " HIROAKI TAMURA@" ; "たむら ひろあき@"
-.NoriakiSakaguchi: db " NORIAKI SAKAGUCHI@" ; "さかぐち のりあき@"
-.MiyukiSato: db " MIYUKI SATO@" ; "さとう みゆき@"
-.GakuziNomoto: db " GAKUZI NOMOTO@" ; "のもと がくじ@"
-.AiMashima: db " AI MASHIMA@" ; "ましま あい@"
-.MikihiroIshikawa: db " MIKIHIRO ISHIKAWA@" ; "いしかわ みきひろ@"
-.HideyukiHashimoto: db " HIDEYUKI HASHIMOTO@" ; "はしもと ひでゆき@"
-.SatoshiYamato: db " SATOSHI YAMATO@" ; "やまと さとし@"
-.ShigeruMiyamoto: db " SHIGERU MIYAMOTO@" ; "みやもと しげる@"
-.End: db " END@" ; "おしまい@"
-.Unknown: db " ????????@" ; "????????@"
-.GailTilden: db " GAIL TILDEN@"
-.NobOgasawara: db " NOB OGASAWARA@"
-.SethMcMahill: db " SETH McMAHILL@"
-.HirotoAlexander: db " HIROTO ALEXANDER@"
-.TeresaLillygren: db " TERESA LILLYGREN@"
-.ThomasHertzog: db " THOMAS HERTZOG@"
-.ErikJohnson: db " ERIK JOHNSON@"
-.HiroNakamura: db " HIRO NAKAMURA@"
-.TerukiMurakawa: db " TERUKI MURAKAWA@"
-.KazuyoshiOsawa: db " KAZUYOSHI OSAWA@"
-.KimikoNakamichi: db " KIMIKO NAKAMICHI@"
-.Staff: db " #MON", $4e ; "ポケットモンスター", $4e
- db " CRYSTAL VERSION", $4e ; " クりスタル バージョン", $4e
- db " STAFF@" ; " スタッフ@"
-.Director: db " DIRECTOR@" ; "エグゼクティブ ディレクター@"
-.CoDirector: db " CO-DIRECTOR@" ; "ディレクター@"
-.Programmers: db " PROGRAMMERS@" ; "プログラム@"
-.GraphicsDirector: db " GRAPHICS DIRECTOR@" ; "グラフィック ディレクター@"
-.MonsterDesign: db " MONSTER DESIGN@" ; "# デザイン@"
-.GraphicsDesign: db " GRAPHICS DESIGN@" ; "グラフィック デザイン@"
-.Music: db " MUSIC@" ; "おんがく@"
-.SoundEffects: db " SOUND EFFECTS@" ; "サウンド エフ→クト@"
-.GameDesign: db " GAME DESIGN@" ; "ゲームデザイン@"
-.GameScenario: db " GAME SCENARIO@" ; "シナりォ@"
-.ToolProgramming: db " TOOL PROGRAMMING@" ; "ツール プログラム@"
-.ParametricDesign: db " PARAMETRIC DESIGN@" ; "パラメーター せってい@"
-.ScriptDesign: db " SCRIPT DESIGN@" ; "スクりプト せってい@"
-.MapDataDesign: db " MAP DATA DESIGN@" ; "マップデータ せってい@"
-.MapDesign: db " MAP DESIGN@" ; "マップ デザイン@"
-.ProductTesting: db " PRODUCT TESTING@" ; "デバッグプレイ@"
-.SpecialThanks: db " SPECIAL THANKS@" ; "スぺシャルサンクス@"
-.Producers: db " PRODUCERS@" ; "プロデューサー@"
-.ExecutiveProducer: db " EXECUTIVE PRODUCER@" ; "エグゼクティブ プロデューサー@"
-.PokemonAnimation: db " #MON ANIMATION@" ; "# アニメーション@"
-.PokedexText: db " #DEX TEXT@" ; "ずかん テキスト@"
-.MobilePrjLeader: db " MOBILE PRJ. LEADER@" ; "モバイルプロジ→クト りーダー@"
-.MobileSystemAd: db " MOBILE SYSTEM AD.@" ; "モバイル システムアドバイザー@"
-.MobileStadiumDir: db "MOBILE STADIUM DIR.@" ; "モバイルスタジアム ディレクター@"
-.Coordination: db " COORDINATION@" ; "コーディネーター@"
-.UsVersionStaff: db " US VERSION STAFF@"
-.UsCoordination: db " US COORDINATION@"
-.TextTranslation: db " TEXT TRANSLATION@"
-.PaadTesting: db " PAAD TESTING@"
-
-.Copyright:
-; (C) 1 9 9 5 - 2 0 0 1 N i n t e n d o
-db $60,$61,$62,$63,$64,$65,$66, $67, $68, $69, $6a, $6b, $6c, $4e
-; (C) 1 9 9 5 - 2 0 0 1 C r e a t u r e s i n c .
-db $60,$61,$62,$63,$64,$65,$66, $6d, $6e, $6f, $70, $71, $72, $7a, $7b, $7c, $4e
-; (C) 1 9 9 5 - 2 0 0 1 G A M E F R E A K i n c .
-db $60,$61,$62,$63,$64,$65,$66, $73, $74, $75, $76, $77, $78, $79, $7a, $7b, $7c, "@"
-
--- /dev/null
+++ b/engine/bittable2.asm
@@ -1,0 +1,198 @@
+; All locations are in WRAM bank 1.
+
+ ; location, bit
+
+ ; pokegear
+ dwb $d957, %00000010 ; radio card
+ dwb $d957, %00000001 ; map card
+ dwb $d957, %00000100 ; phone card
+ dwb $d957, %00001000 ; expn card
+ dwb $d957, %10000000 ; on/off
+
+ ; DaycareMan, %10000000 ; daycare 1 on
+ dwb DaycareMan, %01000000 ; monster 1 and 2 are compatible
+ ; DaycareMan, %00100000 ; egg is ready
+ dwb DaycareMan, %00000001 ; monster 1 in daycare
+
+ ; DaycareLady, %10000000 = daycare 2 on
+ dwb DaycareLady, %00000001 ; monster 2 in daycare
+
+ dwb $d854, %00000001 ; mom saving money
+ dwb $d854, %10000000 ; dst
+
+ dwb $dc39, %00000001
+
+ dwb $d84c, %00000001 ; pokedex
+ dwb $d84c, %00000010 ; unown dex
+ dwb $d84c, %00001000 ; pokerus
+ dwb $d84c, %00010000 ; rocket signal on ch20
+ dwb $d84c, %01000000 ; credits skip
+ dwb $d84c, %10000000 ; bug contest on
+ dwb $d84d, %00000100 ; bug contest timer
+ dwb $d84d, %00000010 ; rockets in radio tower
+ dwb $d84d, %00000001 ; bike shop call enabled (1024 bike steps reqd)
+ dwb $d84d, %00010000
+ dwb $d84d, %00100000 ; give pokerus; berry -> berry juice when trading?
+ dwb $d84d, %01000000
+ dwb $d84d, %10000000 ; rockets in mahogany
+
+ dwb $dbf5, %00000001 ; strength active
+ dwb $dbf5, %00000010 ; always on bike (cant surf)
+ dwb $dbf5, %00000100 ; downhill (cycling road)
+
+ dwb JohtoBadges, %00000001 ; zephyrbadge
+ dwb JohtoBadges, %00000010 ; hivebadge
+ dwb JohtoBadges, %00000100 ; plainbadge
+ dwb JohtoBadges, %00001000 ; fogbadge
+ dwb JohtoBadges, %00010000 ; mineralbadge
+ dwb JohtoBadges, %00100000 ; stormbadge
+ dwb JohtoBadges, %01000000 ; glacierbadge
+ dwb JohtoBadges, %10000000 ; risingbadge
+
+ dwb KantoBadges, %00000001 ; boulderbadge
+ dwb KantoBadges, %00000010 ; cascadebadge
+ dwb KantoBadges, %00000100 ; thunderbadge
+ dwb KantoBadges, %00001000 ; rainbowbadge
+ dwb KantoBadges, %00010000 ; soulbadge
+ dwb KantoBadges, %00100000 ; marshbadge
+ dwb KantoBadges, %01000000 ; volcanobadge
+ dwb KantoBadges, %10000000 ; earthbadge
+
+ ; unown sets
+ dwb UnlockedUnowns, %00000001 ; 1
+ dwb UnlockedUnowns, %00000010 ; 2
+ dwb UnlockedUnowns, %00000100 ; 3
+ dwb UnlockedUnowns, %00001000 ; 4
+ dwb UnlockedUnowns, %00010000 ; 5
+ dwb UnlockedUnowns, %00100000 ; 6
+ dwb UnlockedUnowns, %01000000 ; 7
+ dwb UnlockedUnowns, %10000000 ; 8
+
+ ; fly
+ dwb FlypointPerms, %00000001 ; your house
+ dwb FlypointPerms, %00000010 ; viridian pokecenter
+ dwb FlypointPerms, %00000100 ; pallet
+ dwb FlypointPerms, %00001000 ; viridian
+ dwb FlypointPerms, %00010000 ; pewter
+ dwb FlypointPerms, %00100000 ; cerulean
+ dwb FlypointPerms, %01000000 ; rock tunnel
+ dwb FlypointPerms, %10000000 ; vermilion
+ dwb FlypointPerms + 1, %00000001 ; lavender
+ dwb FlypointPerms + 1, %00000010 ; saffron
+ dwb FlypointPerms + 1, %00000100 ; celadon
+ dwb FlypointPerms + 1, %00001000 ; fuchsia
+ dwb FlypointPerms + 1, %00010000 ; cinnabar
+ dwb FlypointPerms + 1, %00100000 ; indigo plateau
+ dwb FlypointPerms + 1, %01000000 ; new bark
+ dwb FlypointPerms + 1, %10000000 ; cherrygrove
+ dwb FlypointPerms + 2, %00000001 ; violet
+ dwb FlypointPerms + 2, %00000100 ; azalea
+ dwb FlypointPerms + 2, %00001000 ; cianwood
+ dwb FlypointPerms + 2, %00010000 ; goldenrod
+ dwb FlypointPerms + 2, %00100000 ; olivine
+ dwb FlypointPerms + 2, %01000000 ; ecruteak
+ dwb FlypointPerms + 2, %10000000 ; mahogany
+ dwb FlypointPerms + 3, %00000001 ; lake of rage
+ dwb FlypointPerms + 3, %00000010 ; blackthorn
+ dwb FlypointPerms + 3, %00000100 ; silver cave
+ dwb FlypointPerms + 3, %00010000 ; unused
+
+ dwb $dc9d, %00000001 ; lucky number show
+ dwb $d84d, %00001000
+
+ dwb $dc1e, %00000001 ; kurt making balls
+ dwb $dc1e, %00000010
+ dwb $dc1e, %00000100 ; special wilddata?
+ dwb $dc1e, %00001000 ; time capsule (24h wait)
+ dwb $dc1e, %00010000 ; all fruit trees
+ dwb $dc1e, %00100000 ; shuckle given
+ dwb $dc1e, %01000000 ; goldenrod underground merchant closed
+ dwb $dc1e, %10000000 ; fought in trainer hall today
+
+ dwb $dc1f, %00000001 ; mt moon square clefairy
+ dwb $dc1f, %00000010 ; union cave lapras
+ dwb $dc1f, %00000100 ; goldenrod underground haircut used
+ dwb $dc1f, %00001000 ; goldenrod mall happiness event floor05 person07
+ dwb $dc1f, %00010000 ; tea in blues house
+ dwb $dc1f, %00100000 ; indigo plateau rival fight
+ dwb $dc1f, %01000000
+ dwb $dc1f, %10000000
+
+ dwb $dc20, %00000001 ; $60
+ dwb $dc20, %00000010 ; goldenrod dept store sale is on
+
+ dwb $cfbc, %10000000 ; $62
+
+ dwb PlayerGender, %00000001 ; player is female
+
+ dwb $dbf3, %00000100 ; have gs ball after kurt examined it
+
+ ; rematches
+ dwb $dc4c, %00000001 ; jack
+ dwb $dc4c, %00000010 ; huey
+ dwb $dc4c, %00000100 ; gaven
+ dwb $dc4c, %00001000 ; beth
+ dwb $dc4c, %00010000 ; jose
+ dwb $dc4c, %00100000 ; reena
+ dwb $dc4c, %01000000 ; joey
+ dwb $dc4c, %10000000 ; wade
+ dwb $dc4d, %00000001 ; ralph
+ dwb $dc4d, %00000010 ; liz
+ dwb $dc4d, %00000100 ; anthony
+ dwb $dc4d, %00001000 ; todd
+ dwb $dc4d, %00010000 ; gina
+ dwb $dc4d, %00100000 ; arnie
+ dwb $dc4d, %01000000 ; alan
+ dwb $dc4d, %10000000 ; dana
+ dwb $dc4e, %00000001 ; chad
+ dwb $dc4e, %00000010 ; tully
+ dwb $dc4e, %00000100 ; brent
+ dwb $dc4e, %00001000 ; tiffany
+ dwb $dc4e, %00010000 ; vance
+ dwb $dc4e, %00100000 ; wilton
+ dwb $dc4e, %01000000 ; parry
+ dwb $dc4e, %10000000 ; erin
+
+ dwb $dc50, %00000001 ; beverly has nugget
+ dwb $dc50, %00000010 ; jose has star piece
+ dwb $dc50, %00000100 ; wade has item (see bittable1 $032b-e)
+ dwb $dc50, %00001000 ; gina has leaf stone
+ dwb $dc50, %00010000 ; alan has fire stone
+ dwb $dc50, %00100000 ; liz has thunderstone
+ dwb $dc50, %01000000 ; derek has nugget
+ dwb $dc50, %10000000 ; tully has water stone
+
+ dwb $dc51, %00000001 ; tiffany has pink bow
+ dwb $dc51, %00000010 ; wilton has item (see bittable1 $032f-31)
+
+ dwb $dc54, %00000001
+ dwb $dc54, %00000010
+ dwb $dc54, %00000100
+ dwb $dc54, %00001000
+ dwb $dc54, %00010000
+ dwb $dc54, %00100000
+ dwb $dc54, %01000000
+ dwb $dc54, %10000000
+
+ dwb $dc55, %00000001
+ dwb $dc55, %00000010
+ dwb $dc55, %00000100
+ dwb $dc55, %00001000
+ dwb $dc55, %00010000
+ dwb $dc55, %00100000
+ dwb $dc55, %01000000
+ dwb $dc55, %10000000
+
+ dwb $dc56, %00000001
+ dwb $dc56, %00000010
+ dwb $dc56, %00000100
+ dwb $dc56, %00001000
+ dwb $dc56, %00010000
+ dwb $dc56, %00100000
+ dwb $dc56, %01000000
+ dwb $dc56, %10000000
+
+ dwb $d45b, %00000100 ; female player has been transformed into male
+
+ dwb $dc20, %00000100 ; dunsparce swarm
+ dwb $dc20, %00001000 ; yanma swarm
--- /dev/null
+++ b/engine/credits.asm
@@ -1,0 +1,824 @@
+SATOSHI_TAJIRI EQU 00
+JUNICHI_MASUDA EQU 01
+TETSUYA_WATANABE EQU 02
+SHIGEKI_MORIMOTO EQU 03
+SOUSUKE_TAMADA EQU 04
+TAKENORI_OOTA EQU 05
+KEN_SUGIMORI EQU 06
+MOTOFUMI_FUJIWARA EQU 07
+ATSUKO_NISHIDA EQU 08
+MUNEO_SAITO EQU 09
+SATOSHI_OOTA EQU 10
+RENA_YOSHIKAWA EQU 11
+JUN_OKUTANI EQU 12
+HIRONOBU_YOSHIDA EQU 13
+ASUKA_IWASHITA EQU 14
+GO_ICHINOSE EQU 15
+MORIKAZU_AOKI EQU 16
+KOHJI_NISHINO EQU 17
+KENJI_MATSUSHIMA EQU 18
+TOSHINOBU_MATSUMIYA EQU 19
+SATORU_IWATA EQU 20
+NOBUHIRO_SEYA EQU 21
+KAZUHITO_SEKINE EQU 22
+TETSUJI_OOTA EQU 23
+NCL_SUPER_MARIO_CLUB EQU 24
+SARUGAKUCHO EQU 25
+AKITO_MORI EQU 26
+TAKAHIRO_HARADA EQU 27
+TOHRU_HASHIMOTO EQU 28
+NOBORU_MATSUMOTO EQU 29
+TAKEHIRO_IZUSHI EQU 30
+TAKASHI_KAWAGUCHI EQU 31
+TSUNEKAZU_ISHIHARA EQU 32
+HIROSHI_YAMAUCHI EQU 33
+KENJI_SAIKI EQU 34
+ATSUSHI_TADA EQU 35
+NAOKO_KAWAKAMI EQU 36
+HIROYUKI_ZINNAI EQU 37
+KUNIMI_KAWAMURA EQU 38
+HISASHI_SOGABE EQU 39
+KEITA_KAGAYA EQU 40
+YOSHINORI_MATSUDA EQU 41
+HITOMI_SATO EQU 42
+TORU_OSAWA EQU 43
+TAKAO_OHARA EQU 44
+YUICHIRO_ITO EQU 45
+TAKAO_SHIMIZU EQU 46
+PLANNING EQU 47
+KEITA_NAKAMURA EQU 48
+HIROTAKA_UEMURA EQU 49
+HIROAKI_TAMURA EQU 50
+NORIAKI_SAKAGUCHI EQU 51
+MIYUKI_SATO EQU 52
+GAKUZI_NOMOTO EQU 53
+AI_MASHIMA EQU 54
+MIKIHIRO_ISHIKAWA EQU 55
+HIDEYUKI_HASHIMOTO EQU 56
+SATOSHI_YAMATO EQU 57
+SHIGERU_MIYAMOTO EQU 58
+GAIL_TILDEN EQU 59
+NOB_OGASAWARA EQU 60
+SETH_MCMAHILL EQU 61
+HIROTO_ALEXANDER EQU 62
+TERESA_LILLYGREN EQU 63
+THOMAS_HERTZOG EQU 64
+ERIK_JOHNSON EQU 65
+HIRO_NAKAMURA EQU 66
+TERUKI_MURAKAWA EQU 67
+KAZUYOSHI_OSAWA EQU 68
+KIMIKO_NAKAMICHI EQU 69
+END EQU 70
+CREDITS_UNKNOWN EQU 71
+STAFF EQU 72
+DIRECTOR EQU 73
+CODIRECTOR EQU 74
+PROGRAMMERS EQU 75
+GRAPHICS_DIRECTOR EQU 76
+MONSTER_DESIGN EQU 77
+GRAPHICS_DESIGN EQU 78
+MUSIC EQU 79
+SOUND_EFFECTS EQU 80
+GAME_DESIGN EQU 81
+GAME_SCENARIO EQU 82
+TOOL_PROGRAMMING EQU 83
+PARAMETRIC_DESIGN EQU 84
+SCRIPT_DESIGN EQU 85
+MAP_DATA_DESIGN EQU 86
+MAP_DESIGN EQU 87
+PRODUCT_TESTING EQU 88
+SPECIAL_THANKS EQU 89
+PRODUCERS EQU 90
+EXECUTIVE_PRODUCER EQU 91
+POKEMON_ANIMATION EQU 92
+POKEDEX_TEXT EQU 93
+MOBILE_PRJ_LEADER EQU 94
+MOBILE_SYSTEM_AD EQU 95
+MOBILE_STADIUM_DIR EQU 96
+COORDINATION EQU 97
+COPYRIGHT EQU 98
+US_VERSION_STAFF EQU 99
+US_COORDINATION EQU 100
+TEXT_TRANSLATION EQU 101
+PAAD_TESTING EQU 102
+
+CREDITS_THEEND EQU $f9
+CREDITS_WAIT2 EQU $fa
+CREDITS_MUSIC EQU $fb
+CREDITS_CLEAR EQU $fc
+CREDITS_SCENE EQU $fd
+CREDITS_WAIT EQU $fe
+
+
+ParseCredits: ; 1099aa
+ ld hl, $cf63
+ bit 7, [hl]
+ jp nz, .done
+
+; Wait until the timer has run out to parse the next command.
+ ld hl, CreditsTimer
+ ld a, [hl]
+ and a
+ jr z, .parse
+
+; One tick has passed.
+ dec [hl]
+ jp .done
+
+.parse
+; First, let's clear the current text display,
+; starting from line 5.
+ xor a
+ ld [$ffd4], a
+ hlcoord 0, 5
+ ld bc, 20 * 12
+ ld a, " "
+ call ByteFill
+
+; Then read the script.
+
+.loop
+ call .get
+
+; Commands:
+ cp $ff
+ jp z, .end
+ cp CREDITS_WAIT
+ jr z, .wait
+ cp CREDITS_SCENE
+ jr z, .scene
+ cp CREDITS_CLEAR
+ jr z, .clear
+ cp CREDITS_MUSIC
+ jr z, .music
+ cp CREDITS_WAIT2
+ jr z, .wait2
+ cp CREDITS_THEEND
+ jr z, .theend
+
+; If it's not a command, it's a string identifier.
+
+ push af
+ ld e, a
+ ld d, 0
+ ld hl, CreditsStrings
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld d, [hl]
+ ld e, a
+ pop af
+
+; Strings spanning multiple lines have special cases.
+
+ cp COPYRIGHT
+ jr z, .copyright
+
+ cp STAFF
+ jr c, .staff
+
+; The rest start from line 6.
+
+ hlcoord 0, 6
+ jr .print
+
+.copyright
+ hlcoord 2, 6
+ jr .print
+
+.staff
+ hlcoord 0, 6
+
+; Print strings spaced every two lines.
+ call .get
+ ld bc, 20 * 2
+ call AddNTimes
+ call PlaceString
+ jr .loop
+
+.theend
+; Display "The End" graphic.
+ call $5c11
+ jr .loop
+
+.scene
+; Update the scene number and corresponding palette.
+ call .get
+ ld [$cf65], a ; scene
+ xor a
+ ld [$cf64], a ; frame
+ call GetCreditsPalette
+ call $32f9 ; update hw pal registers
+ jr .loop
+
+.clear
+; Clear the banner.
+ ld a, $ff
+ ld [$cf64], a ; frame
+ jr .loop
+
+.music
+; Play the credits music.
+ ld de, MUSIC_CREDITS
+ push de
+ ld de, MUSIC_NONE
+ call StartMusic
+ call DelayFrame
+ pop de
+ call StartMusic
+ jp .loop
+
+.wait2
+; Wait for some amount of ticks.
+ call .get
+ ld [CreditsTimer], a
+ jr .done
+
+.wait
+; Wait for some amount of ticks, and do something else.
+ call .get
+ ld [CreditsTimer], a
+
+ xor a
+ ld [$ffd5], a
+ ld a, 1
+ ld [$ffd4], a
+
+.done
+ jp $5951
+
+.end
+; Stop execution.
+ ld hl, $cf63
+ set 7, [hl]
+ ld a, $20
+ ld [$c2a7], a
+ ld a, $5c
+ ld [$c2a9], a
+ ld a, $00
+ ld [$c2aa], a
+ ret
+
+.get
+; Get byte CreditsPos from CreditsScript
+ push hl
+ push de
+ ld a, [CreditsPos]
+ ld e, a
+ ld a, [CreditsPos+1]
+ ld d, a
+ ld hl, CreditsScript
+ add hl, de
+
+ inc de
+ ld a, e
+ ld [CreditsPos], a
+ ld a, d
+ ld [CreditsPos+1], a
+ ld a, [hl]
+ pop de
+ pop hl
+ ret
+; 109a95
+
+
+INCBIN "baserom.gbc", $109a95, $109b2c - $109a95
+
+
+GetCreditsPalette: ; 109b2c
+ call .GetPalAddress
+
+ push hl
+ ld a, 0
+ call .UpdatePals
+ pop hl
+ ret
+
+.GetPalAddress
+; Each set of palette data is 24 bytes long.
+ ld a, [$cf65] ; scene
+ and 3
+ add a
+ add a ; * 8
+ add a
+ ld e, a
+ ld d, 0
+ ld hl, .CreditsPalettes
+ add hl, de
+ add hl, de ; * 3
+ add hl, de
+ ret
+
+.UpdatePals
+; Update the first three colors in both palette buffers.
+
+ push af
+ push hl
+ add $00 ; lo($d000)
+ ld e, a
+ ld a, 0
+ adc $d0 ; hi($d000)
+ ld d, a
+ ld bc, 24
+ call CopyBytes
+
+ pop hl
+ pop af
+ add $80 ; lo($d080)
+ ld e, a
+ ld a, 0
+ adc $d0 ; hi($d080)
+ ld d, a
+ ld bc, 24
+ call CopyBytes
+ ret
+
+
+.CreditsPalettes
+INCBIN "baserom.gbc",$109b6a,$18 ; pichu.pal
+INCBIN "baserom.gbc",$109b82,$18 ; smoochum.pal
+INCBIN "baserom.gbc",$109b9a,$18 ; ditto.pal
+INCBIN "baserom.gbc",$109bb2,$18 ; igglybuff.pal
+; 109bca
+
+INCBIN "baserom.gbc", $109bca, $109c24 - $109bca
+
+CreditsGFX:
+INCBIN "gfx/credits/border.2bpp"
+INCBIN "gfx/credits/pichu.2bpp"
+INCBIN "gfx/credits/smoochum.2bpp"
+INCBIN "gfx/credits/ditto.2bpp"
+INCBIN "gfx/credits/igglybuff.2bpp"
+
+
+CreditsScript: ; 10acb4
+
+; Clear the banner.
+ db CREDITS_CLEAR
+
+; Pokemon Crystal Version Staff
+ db STAFF, 01
+ db CREDITS_WAIT, 08
+
+; Play the credits music.
+ db CREDITS_MUSIC
+
+ db CREDITS_WAIT2, 10
+
+ db CREDITS_WAIT, 01
+
+; Update the banner.
+ db CREDITS_SCENE, 00 ; Pichu
+
+ db DIRECTOR, 01
+ db SATOSHI_TAJIRI, 02
+ db CREDITS_WAIT, 12
+
+ db CODIRECTOR, 01
+ db JUNICHI_MASUDA, 02
+ db CREDITS_WAIT, 12
+
+ db PROGRAMMERS, 00
+ db SOUSUKE_TAMADA, 01
+ db HISASHI_SOGABE, 02
+ db KEITA_KAGAYA, 03
+ db YOSHINORI_MATSUDA, 04
+ db CREDITS_WAIT, 12
+
+ db PROGRAMMERS, 00
+ db SHIGEKI_MORIMOTO, 01
+ db TETSUYA_WATANABE, 02
+ db TAKENORI_OOTA, 03
+ db CREDITS_WAIT, 12
+
+ db GRAPHICS_DIRECTOR, 01
+ db KEN_SUGIMORI, 02
+ db CREDITS_WAIT, 12
+
+ db MONSTER_DESIGN, 00
+ db KEN_SUGIMORI, 01
+ db MOTOFUMI_FUJIWARA, 02
+ db SHIGEKI_MORIMOTO, 03
+ db HIRONOBU_YOSHIDA, 04
+ db SATOSHI_OOTA, 05
+ db CREDITS_WAIT, 12
+
+ db MONSTER_DESIGN, 00
+ db ATSUKO_NISHIDA, 01
+ db MUNEO_SAITO, 02
+ db RENA_YOSHIKAWA, 03
+ db CREDITS_WAIT, 12
+
+ db POKEMON_ANIMATION, 01
+ db HIRONOBU_YOSHIDA, 02
+ db JUN_OKUTANI, 03
+ db CREDITS_WAIT, 12
+
+; Clear the banner.
+ db CREDITS_CLEAR
+
+ db CREDITS_WAIT, 01
+
+; Update the banner.
+ db CREDITS_SCENE, 01 ; Smoochum
+
+ db GRAPHICS_DESIGN, 00
+ db HIRONOBU_YOSHIDA, 01
+ db JUN_OKUTANI, 02
+ db ASUKA_IWASHITA, 03
+ db TETSUYA_WATANABE, 04
+ db CREDITS_WAIT, 12
+
+ db MUSIC, 00
+ db JUNICHI_MASUDA, 01
+ db MORIKAZU_AOKI, 02
+ db GO_ICHINOSE, 03
+ db CREDITS_WAIT, 12
+
+ db SOUND_EFFECTS, 00
+ db MORIKAZU_AOKI, 01
+ db JUNICHI_MASUDA, 02
+ db TETSUYA_WATANABE, 03
+ db CREDITS_WAIT, 12
+
+ db GAME_DESIGN, 00
+ db JUNICHI_MASUDA, 01
+ db SHIGEKI_MORIMOTO, 02
+ db KOHJI_NISHINO, 03
+ db CREDITS_WAIT, 12
+
+ db GAME_DESIGN, 00
+ db TETSUJI_OOTA, 01
+ db HITOMI_SATO, 02
+ db KENJI_MATSUSHIMA, 03
+ db CREDITS_WAIT, 12
+
+ db GAME_SCENARIO, 00
+ db JUNICHI_MASUDA, 01
+ db KOHJI_NISHINO, 02
+ db TOSHINOBU_MATSUMIYA, 03
+ db KENJI_MATSUSHIMA, 04
+ db CREDITS_WAIT, 12
+
+ db POKEDEX_TEXT, 01
+ db TOSHINOBU_MATSUMIYA, 02
+ db CREDITS_WAIT, 12
+
+ db TOOL_PROGRAMMING, 01
+ db SOUSUKE_TAMADA, 02
+ db TAKENORI_OOTA, 03
+ db CREDITS_WAIT, 12
+
+ db PARAMETRIC_DESIGN, 01
+ db KOHJI_NISHINO, 02
+ db CREDITS_WAIT, 12
+
+; Clear the banner.
+ db CREDITS_CLEAR
+
+ db CREDITS_WAIT, 01
+
+; Update the banner.
+ db CREDITS_SCENE, 02 ; Ditto
+
+ db SCRIPT_DESIGN, 01
+ db TETSUJI_OOTA, 02
+ db NOBUHIRO_SEYA, 03
+ db CREDITS_WAIT, 12
+
+ db MAP_DATA_DESIGN, 01
+ db TETSUJI_OOTA, 02
+ db KAZUHITO_SEKINE, 03
+ db CREDITS_WAIT, 12
+
+ db MAP_DESIGN, 00
+ db TETSUJI_OOTA, 01
+ db KOHJI_NISHINO, 02
+ db NOBUHIRO_SEYA, 03
+ db CREDITS_WAIT, 12
+
+ db COORDINATION, 01
+ db HIROYUKI_ZINNAI, 02
+ db CREDITS_WAIT, 12
+
+ db PRODUCERS, 00
+ db SATORU_IWATA, 01
+ db SATOSHI_YAMATO, 02
+ db SHIGERU_MIYAMOTO, 03
+ db CREDITS_WAIT, 12
+
+ db PRODUCERS, 01
+ db TSUNEKAZU_ISHIHARA, 02
+ db CREDITS_WAIT, 12
+
+; Clear the banner.
+ db CREDITS_CLEAR
+
+ db CREDITS_WAIT, 01
+
+; Update the banner.
+ db CREDITS_SCENE, 03 ; Igglybuff
+
+ db US_VERSION_STAFF, 02
+ db CREDITS_WAIT, 09
+
+ db US_COORDINATION, 01
+ db GAIL_TILDEN, 02
+ db HIRO_NAKAMURA, 03
+ db CREDITS_WAIT, 12
+
+ db US_COORDINATION, 01
+ db JUNICHI_MASUDA, 02
+ db SETH_MCMAHILL, 03
+ db CREDITS_WAIT, 12
+
+ db US_COORDINATION, 01
+ db HIROTO_ALEXANDER, 02
+ db TERESA_LILLYGREN, 03
+ db CREDITS_WAIT, 12
+
+ db TEXT_TRANSLATION, 01
+ db NOB_OGASAWARA, 02
+ db CREDITS_WAIT, 12
+
+ db PROGRAMMERS, 01
+ db TERUKI_MURAKAWA, 02
+ db KAZUYOSHI_OSAWA, 03
+ db CREDITS_WAIT, 12
+
+ db PAAD_TESTING, 01
+ db THOMAS_HERTZOG, 02
+ db ERIK_JOHNSON, 03
+ db CREDITS_WAIT, 12
+
+ db PRODUCT_TESTING, 00
+ db PLANNING, 01
+ db CREDITS_WAIT, 12
+
+ db PRODUCT_TESTING, 00
+ db KEITA_NAKAMURA, 01
+ db HIROTAKA_UEMURA, 02
+ db HIROAKI_TAMURA, 03
+ db NORIAKI_SAKAGUCHI, 04
+ db CREDITS_WAIT, 12
+
+ db PRODUCT_TESTING, 00
+ db NCL_SUPER_MARIO_CLUB, 01
+ db KENJI_SAIKI, 02
+ db ATSUSHI_TADA, 03
+ db MIYUKI_SATO, 04
+ db CREDITS_WAIT, 12
+
+ db SPECIAL_THANKS, 00
+ db KIMIKO_NAKAMICHI, 01
+ db AKITO_MORI, 02
+ db CREDITS_WAIT, 12
+
+ db SPECIAL_THANKS, 00
+ db GAKUZI_NOMOTO, 01
+ db AI_MASHIMA, 02
+ db KUNIMI_KAWAMURA, 03
+ db CREDITS_WAIT, 12
+
+ db SPECIAL_THANKS, 00
+ db MIKIHIRO_ISHIKAWA, 01
+ db HIDEYUKI_HASHIMOTO, 02
+ db CREDITS_WAIT, 12
+
+ db EXECUTIVE_PRODUCER, 01
+ db HIROSHI_YAMAUCHI, 02
+ db CREDITS_WAIT, 12
+
+ db COPYRIGHT, 01
+ db CREDITS_WAIT, 09
+
+; Display "The End" graphic.
+ db CREDITS_THEEND
+
+ db CREDITS_WAIT, 20
+
+ db $ff ; end
+; 10ae13
+
+
+CreditsStrings:
+ dw .SatoshiTajiri
+ dw .JunichiMasuda
+ dw .TetsuyaWatanabe
+ dw .ShigekiMorimoto
+ dw .SousukeTamada
+ dw .TakenoriOota
+ dw .KenSugimori
+ dw .MotofumiFujiwara
+ dw .AtsukoNishida
+ dw .MuneoSaito
+ dw .SatoshiOota
+ dw .RenaYoshikawa
+ dw .JunOkutani
+ dw .HironobuYoshida
+ dw .AsukaIwashita
+ dw .GoIchinose
+ dw .MorikazuAoki
+ dw .KohjiNishino
+ dw .KenjiMatsushima
+ dw .ToshinobuMatsumiya
+ dw .SatoruIwata
+ dw .NobuhiroSeya
+ dw .KazuhitoSekine
+ dw .TetsujiOota
+ dw .NclSuperMarioClub
+ dw .Sarugakucho
+ dw .AkitoMori
+ dw .TakahiroHarada
+ dw .TohruHashimoto
+ dw .NoboruMatsumoto
+ dw .TakehiroIzushi
+ dw .TakashiKawaguchi
+ dw .TsunekazuIshihara
+ dw .HiroshiYamauchi
+ dw .KenjiSaiki
+ dw .AtsushiTada
+ dw .NaokoKawakami
+ dw .HiroyukiZinnai
+ dw .KunimiKawamura
+ dw .HisashiSogabe
+ dw .KeitaKagaya
+ dw .YoshinoriMatsuda
+ dw .HitomiSato
+ dw .ToruOsawa
+ dw .TakaoOhara
+ dw .YuichiroIto
+ dw .TakaoShimizu
+ dw .Planning
+ dw .KeitaNakamura
+ dw .HirotakaUemura
+ dw .HiroakiTamura
+ dw .NoriakiSakaguchi
+ dw .MiyukiSato
+ dw .GakuziNomoto
+ dw .AiMashima
+ dw .MikihiroIshikawa
+ dw .HideyukiHashimoto
+ dw .SatoshiYamato
+ dw .ShigeruMiyamoto
+ dw .GailTilden
+ dw .NobOgasawara
+ dw .SethMcMahill
+ dw .HirotoAlexander
+ dw .TeresaLillygren
+ dw .ThomasHertzog
+ dw .ErikJohnson
+ dw .HiroNakamura
+ dw .TerukiMurakawa
+ dw .KazuyoshiOsawa
+ dw .KimikoNakamichi
+ dw .End
+ dw .Unknown
+ dw .Staff
+ dw .Director
+ dw .CoDirector
+ dw .Programmers
+ dw .GraphicsDirector
+ dw .MonsterDesign
+ dw .GraphicsDesign
+ dw .Music
+ dw .SoundEffects
+ dw .GameDesign
+ dw .GameScenario
+ dw .ToolProgramming
+ dw .ParametricDesign
+ dw .ScriptDesign
+ dw .MapDataDesign
+ dw .MapDesign
+ dw .ProductTesting
+ dw .SpecialThanks
+ dw .Producers
+ dw .ExecutiveProducer
+ dw .PokemonAnimation
+ dw .PokedexText
+ dw .MobilePrjLeader
+ dw .MobileSystemAd
+ dw .MobileStadiumDir
+ dw .Coordination
+ dw .Copyright
+ dw .UsVersionStaff
+ dw .UsCoordination
+ dw .TextTranslation
+ dw .PaadTesting
+
+.SatoshiTajiri: db " SATOSHI TAJIRI@" ; "たじり さとし@"
+.JunichiMasuda: db " JUNICHI MASUDA@" ; "ますだ じゅんいち@"
+.TetsuyaWatanabe: db " TETSUYA WATANABE@" ; "わたなべ てつや@"
+.ShigekiMorimoto: db " SHIGEKI MORIMOTO@" ; "もりもと しげき@"
+.SousukeTamada: db " SOUSUKE TAMADA@" ; "たまだ そうすけ@"
+.TakenoriOota: db " TAKENORI OOTA@" ; "おおた たけのり@"
+.KenSugimori: db " KEN SUGIMORI@" ; "すぎもり けん@"
+.MotofumiFujiwara: db " MOTOFUMI FUJIWARA@" ; "ふじわら もとふみ@"
+.AtsukoNishida: db " ATSUKO NISHIDA@" ; "にしだ あつこ@"
+.MuneoSaito: db " MUNEO SAITO@" ; "さいとう むねお@"
+.SatoshiOota: db " SATOSHI OOTA@" ; "おおた さとし@"
+.RenaYoshikawa: db " RENA YOSHIKAWA@" ; "よしかわ れな@"
+.JunOkutani: db " JUN OKUTANI@" ; "おくたに じゅん@"
+.HironobuYoshida: db " HIRONOBU YOSHIDA@" ; "よしだ ひろのぶ@"
+.AsukaIwashita: db " ASUKA IWASHITA@" ; "いわした あすか@"
+.GoIchinose: db " GO ICHINOSE@" ; "いちのせ ごう@"
+.MorikazuAoki: db " MORIKAZU AOKI@" ; "あおき もりかず@"
+.KohjiNishino: db " KOHJI NISHINO@" ; "にしの こうじ@"
+.KenjiMatsushima: db " KENJI MATSUSHIMA@" ; "まつしま けんじ@"
+.ToshinobuMatsumiya: db "TOSHINOBU MATSUMIYA@" ; "まつみや としのぶ@"
+.SatoruIwata: db " SATORU IWATA@" ; "いわた さとる@"
+.NobuhiroSeya: db " NOBUHIRO SEYA@" ; "せや のぶひろ@"
+.KazuhitoSekine: db " KAZUHITO SEKINE@" ; "せきね かずひと@"
+.TetsujiOota: db " TETSUJI OOTA@" ; "おおた てつじ@"
+.NclSuperMarioClub: db "NCL SUPER MARIO CLUB@" ; "スーパーマりォクラブ@"
+.Sarugakucho: db " SARUGAKUCHO@" ; "さるがくちょう@"
+.AkitoMori: db " AKITO MORI@" ; "もり あきと@"
+.TakahiroHarada: db " TAKAHIRO HARADA@" ; "はらだ たかひろ@"
+.TohruHashimoto: db " TOHRU HASHIMOTO@" ; "はしもと とおる@"
+.NoboruMatsumoto: db " NOBORU MATSUMOTO@" ; "まつもと のぼる@"
+.TakehiroIzushi: db " TAKEHIRO IZUSHI@" ; "いずし たけひろ@"
+.TakashiKawaguchi: db " TAKASHI KAWAGUCHI@" ; "かわぐち たかし@"
+.TsunekazuIshihara: db " TSUNEKAZU ISHIHARA@" ; "いしはら つねかず@"
+.HiroshiYamauchi: db " HIROSHI YAMAUCHI@" ; "やまうち ひろし@"
+.KenjiSaiki: db " KENJI SAIKI@" ; "さいき けんじ@"
+.AtsushiTada: db " ATSUSHI TADA@" ; "ただ あつし@"
+.NaokoKawakami: db " NAOKO KAWAKAMI@" ; "かわかみ なおこ@"
+.HiroyukiZinnai: db " HIROYUKI ZINNAI@" ; "じんない ひろゆき@"
+.KunimiKawamura: db " KUNIMI KAWAMURA@" ; "かわむら くにみ@"
+.HisashiSogabe: db " HISASHI SOGABE@" ; "そがべ ひさし@"
+.KeitaKagaya: db " KEITA KAGAYA@" ; "かがや けいた@"
+.YoshinoriMatsuda: db " YOSHINORI MATSUDA@" ; "まつだ よしのり@"
+.HitomiSato: db " HITOMI SATO@" ; "さとう ひとみ@"
+.ToruOsawa: db " TORU OSAWA@" ; "おおさわ とおる@"
+.TakaoOhara: db " TAKAO OHARA@" ; "おおはら たかお@"
+.YuichiroIto: db " YUICHIRO ITO@" ; "いとう ゆういちろう@"
+.TakaoShimizu: db " TAKAO SHIMIZU@" ; "しみず たかお@"
+.Planning: db " SPECIAL PRODUCTION", $4e
+ db " PLANNING", $4e ; "きかくかいはつぶ@"
+ db " & DEVELOPMENT DEPT.@"
+.KeitaNakamura: db " KEITA NAKAMURA@" ; "なかむら けいた@"
+.HirotakaUemura: db " HIROTAKA UEMURA@" ; "うえむら ひろたか@"
+.HiroakiTamura: db " HIROAKI TAMURA@" ; "たむら ひろあき@"
+.NoriakiSakaguchi: db " NORIAKI SAKAGUCHI@" ; "さかぐち のりあき@"
+.MiyukiSato: db " MIYUKI SATO@" ; "さとう みゆき@"
+.GakuziNomoto: db " GAKUZI NOMOTO@" ; "のもと がくじ@"
+.AiMashima: db " AI MASHIMA@" ; "ましま あい@"
+.MikihiroIshikawa: db " MIKIHIRO ISHIKAWA@" ; "いしかわ みきひろ@"
+.HideyukiHashimoto: db " HIDEYUKI HASHIMOTO@" ; "はしもと ひでゆき@"
+.SatoshiYamato: db " SATOSHI YAMATO@" ; "やまと さとし@"
+.ShigeruMiyamoto: db " SHIGERU MIYAMOTO@" ; "みやもと しげる@"
+.End: db " END@" ; "おしまい@"
+.Unknown: db " ????????@" ; "????????@"
+.GailTilden: db " GAIL TILDEN@"
+.NobOgasawara: db " NOB OGASAWARA@"
+.SethMcMahill: db " SETH McMAHILL@"
+.HirotoAlexander: db " HIROTO ALEXANDER@"
+.TeresaLillygren: db " TERESA LILLYGREN@"
+.ThomasHertzog: db " THOMAS HERTZOG@"
+.ErikJohnson: db " ERIK JOHNSON@"
+.HiroNakamura: db " HIRO NAKAMURA@"
+.TerukiMurakawa: db " TERUKI MURAKAWA@"
+.KazuyoshiOsawa: db " KAZUYOSHI OSAWA@"
+.KimikoNakamichi: db " KIMIKO NAKAMICHI@"
+.Staff: db " #MON", $4e ; "ポケットモンスター", $4e
+ db " CRYSTAL VERSION", $4e ; " クりスタル バージョン", $4e
+ db " STAFF@" ; " スタッフ@"
+.Director: db " DIRECTOR@" ; "エグゼクティブ ディレクター@"
+.CoDirector: db " CO-DIRECTOR@" ; "ディレクター@"
+.Programmers: db " PROGRAMMERS@" ; "プログラム@"
+.GraphicsDirector: db " GRAPHICS DIRECTOR@" ; "グラフィック ディレクター@"
+.MonsterDesign: db " MONSTER DESIGN@" ; "# デザイン@"
+.GraphicsDesign: db " GRAPHICS DESIGN@" ; "グラフィック デザイン@"
+.Music: db " MUSIC@" ; "おんがく@"
+.SoundEffects: db " SOUND EFFECTS@" ; "サウンド エフ→クト@"
+.GameDesign: db " GAME DESIGN@" ; "ゲームデザイン@"
+.GameScenario: db " GAME SCENARIO@" ; "シナりォ@"
+.ToolProgramming: db " TOOL PROGRAMMING@" ; "ツール プログラム@"
+.ParametricDesign: db " PARAMETRIC DESIGN@" ; "パラメーター せってい@"
+.ScriptDesign: db " SCRIPT DESIGN@" ; "スクりプト せってい@"
+.MapDataDesign: db " MAP DATA DESIGN@" ; "マップデータ せってい@"
+.MapDesign: db " MAP DESIGN@" ; "マップ デザイン@"
+.ProductTesting: db " PRODUCT TESTING@" ; "デバッグプレイ@"
+.SpecialThanks: db " SPECIAL THANKS@" ; "スぺシャルサンクス@"
+.Producers: db " PRODUCERS@" ; "プロデューサー@"
+.ExecutiveProducer: db " EXECUTIVE PRODUCER@" ; "エグゼクティブ プロデューサー@"
+.PokemonAnimation: db " #MON ANIMATION@" ; "# アニメーション@"
+.PokedexText: db " #DEX TEXT@" ; "ずかん テキスト@"
+.MobilePrjLeader: db " MOBILE PRJ. LEADER@" ; "モバイルプロジ→クト りーダー@"
+.MobileSystemAd: db " MOBILE SYSTEM AD.@" ; "モバイル システムアドバイザー@"
+.MobileStadiumDir: db "MOBILE STADIUM DIR.@" ; "モバイルスタジアム ディレクター@"
+.Coordination: db " COORDINATION@" ; "コーディネーター@"
+.UsVersionStaff: db " US VERSION STAFF@"
+.UsCoordination: db " US COORDINATION@"
+.TextTranslation: db " TEXT TRANSLATION@"
+.PaadTesting: db " PAAD TESTING@"
+
+.Copyright:
+; (C) 1 9 9 5 - 2 0 0 1 N i n t e n d o
+db $60,$61,$62,$63,$64,$65,$66, $67, $68, $69, $6a, $6b, $6c, $4e
+; (C) 1 9 9 5 - 2 0 0 1 C r e a t u r e s i n c .
+db $60,$61,$62,$63,$64,$65,$66, $6d, $6e, $6f, $70, $71, $72, $7a, $7b, $7c, $4e
+; (C) 1 9 9 5 - 2 0 0 1 G A M E F R E A K i n c .
+db $60,$61,$62,$63,$64,$65,$66, $73, $74, $75, $76, $77, $78, $79, $7a, $7b, $7c, "@"
+
--- /dev/null
+++ b/engine/joypad.asm
@@ -1,0 +1,275 @@
+JoypadInt: ; 92e
+; Replaced by Joypad, called from VBlank instead of the useless
+; joypad interrupt.
+
+; This is a placeholder in case the interrupt is somehow enabled.
+ reti
+; 92f
+
+ClearJoypadPublic: ; 92f
+ xor a
+; Pressed this frame (delta)
+ ld [hJoyPressed], a
+; Currently pressed
+ ld [hJoyDown], a
+ ret
+; 935
+
+Joypad: ; 935
+; Read the joypad register and translate it to something more
+; workable for use in-game. There are 8 buttons, so we can use
+; one byte to contain all player input.
+
+; Updates:
+
+; hJoypadReleased: released this frame (delta)
+; hJoypadPressed: pressed this frame (delta)
+; hJoypadDown: currently pressed
+; hJoypadSum: pressed so far
+
+; Any of these three bits can be used to disable input.
+ ld a, [$cfbe]
+ and %11010000
+ ret nz
+
+; If we're saving, input is disabled.
+ ld a, [$c2cd]
+ and a
+ ret nz
+
+; We can only get four inputs at a time.
+; We take d-pad first for no particular reason.
+ ld a, D_PAD
+ ld [rJOYP], a
+; Read twice to give the request time to take.
+ ld a, [rJOYP]
+ ld a, [rJOYP]
+
+; The Joypad register output is in the lo nybble (inversed).
+; We make the hi nybble of our new container d-pad input.
+ cpl
+ and $f
+ swap a
+
+; We'll keep this in b for now.
+ ld b, a
+
+; Buttons make 8 total inputs (A, B, Select, Start).
+; We can fit this into one byte.
+ ld a, BUTTONS
+ ld [rJOYP], a
+; Wait for input to stabilize.
+ ld a, [rJOYP]
+ ld a, [rJOYP]
+ ld a, [rJOYP]
+ ld a, [rJOYP]
+ ld a, [rJOYP]
+ ld a, [rJOYP]
+; Buttons take the lo nybble.
+ cpl
+ and $f
+ or b
+ ld b, a
+
+; Reset the joypad register since we're done with it.
+ ld a, $30
+ ld [rJOYP], a
+
+; To get the delta we xor the last frame's input with the new one.
+ ld a, [hJoypadDown] ; last frame
+ ld e, a
+ xor b
+ ld d, a
+; Released this frame:
+ and e
+ ld [hJoypadReleased], a
+; Pressed this frame:
+ ld a, d
+ and b
+ ld [hJoypadPressed], a
+
+; Add any new presses to the list of collective presses:
+ ld c, a
+ ld a, [hJoypadSum]
+ or c
+ ld [hJoypadSum], a
+
+; Currently pressed:
+ ld a, b
+ ld [hJoypadDown], a
+
+; Now that we have the input, we can do stuff with it.
+
+; For example, soft reset:
+ and BUTTON_A | BUTTON_B | SELECT | START
+ cp BUTTON_A | BUTTON_B | SELECT | START
+ jp z, $0150 ; reset
+
+ ret
+; 984
+
+
+GetJoypadPublic: ; 984
+; Update mirror joypad input from hJoypadDown (real input)
+
+; hJoyReleased: released this frame (delta)
+; hJoyPressed: pressed this frame (delta)
+; hJoyDown: currently pressed
+
+; bit 0 A
+; 1 B
+; 2 SELECT
+; 3 START
+; 4 RIGHT
+; 5 LEFT
+; 6 UP
+; 7 DOWN
+
+ push af
+ push hl
+ push de
+ push bc
+
+; The player input can be automated using an input stream.
+; See more below.
+ ld a, [InputType]
+ cp a, AUTO_INPUT
+ jr z, .auto
+
+; To get deltas, take this and last frame's input.
+ ld a, [hJoypadDown] ; real input
+ ld b, a
+ ld a, [hJoyDown] ; last frame mirror
+ ld e, a
+
+; Released this frame:
+ xor b
+ ld d, a
+ and e
+ ld [hJoyReleased], a
+
+; Pressed this frame:
+ ld a, d
+ and b
+ ld [hJoyPressed], a
+
+; It looks like the collective presses got commented out here.
+ ld c, a
+
+; Currently pressed:
+ ld a, b
+ ld [hJoyDown], a ; frame input
+
+.quit
+ pop bc
+ pop de
+ pop hl
+ pop af
+ ret
+
+.auto
+; Use a predetermined input stream (used in the catching tutorial).
+
+; Stream format: [input][duration]
+; A value of $ff will immediately end the stream.
+
+; Read from the input stream.
+ ld a, [hROMBank]
+ push af
+ ld a, [AutoInputBank]
+ rst Bankswitch
+
+ ld hl, AutoInputAddress
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+
+; We only update when the input duration has expired.
+ ld a, [AutoInputLength]
+ and a
+ jr z, .updateauto
+
+; Until then, don't change anything.
+ dec a
+ ld [AutoInputLength], a
+ pop af
+ rst Bankswitch
+ jr .quit
+
+
+.updateauto
+; An input of $ff will end the stream.
+ ld a, [hli]
+ cp a, $ff
+ jr z, .stopauto
+ ld b, a
+
+; A duration of $ff will end the stream indefinitely.
+ ld a, [hli]
+ ld [AutoInputLength], a
+ cp a, $ff
+ jr nz, .next
+
+; The current input is overwritten.
+ dec hl
+ dec hl
+ ld b, NO_INPUT
+ jr .finishauto
+
+.next
+; On to the next input...
+ ld a, l
+ ld [AutoInputAddress], a
+ ld a, h
+ ld [AutoInputAddress+1], a
+ jr .finishauto
+
+.stopauto
+ call StopAutoInput
+ ld b, NO_INPUT
+
+.finishauto
+ pop af
+ rst Bankswitch
+ ld a, b
+ ld [hJoyPressed], a ; pressed
+ ld [hJoyDown], a ; input
+ jr .quit
+; 9ee
+
+
+StartAutoInput: ; 9ee
+; Start reading automated input stream at a:hl.
+
+ ld [AutoInputBank], a
+ ld a, l
+ ld [AutoInputAddress], a
+ ld a, h
+ ld [AutoInputAddress+1], a
+; Start reading the stream immediately.
+ xor a
+ ld [AutoInputLength], a
+; Reset input mirrors.
+ xor a
+ ld [hJoyPressed], a ; pressed this frame
+ ld [hJoyReleased], a ; released this frame
+ ld [hJoyDown], a ; currently pressed
+
+ ld a, AUTO_INPUT
+ ld [InputType], a
+ ret
+; a0a
+
+
+StopAutoInput: ; a0a
+; Clear variables related to automated input.
+ xor a
+ ld [AutoInputBank], a
+ ld [AutoInputAddress], a
+ ld [AutoInputAddress+1], a
+ ld [AutoInputLength], a
+; Back to normal input.
+ ld [InputType], a
+ ret
+; a1b
+
--- /dev/null
+++ b/engine/landmarks.asm
@@ -1,0 +1,539 @@
+GetLandmarkCoords: ; 0x1ca896
+; given a landmark id in e, return the y coord in d, and the x coord in e.
+ push hl
+ ld l, e
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ ld de, Landmarks
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ pop hl
+ ret
+
+
+GetLandmarkName: ; 0x1ca8a5
+; given a landmark id in e, copy its name to $d073.
+ push hl
+ push de
+ push bc
+ ld l, e
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ ld de, Landmarks + 2 ; skip the coordinates, we only want the string
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, $d073
+ ld c, 18
+.loop
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .loop
+ pop bc
+ pop de
+ pop hl
+ ret
+
+Landmarks: ; 0x1ca8c3
+;db x coord, y coord
+;dw pointer to name
+ db 0,0
+ dw SpecialMapString
+
+ db 148,116
+ dw NewBarkString
+
+ db 136,116
+ dw Route29String
+
+ db 108,116
+ dw CherrygroveString
+
+ db 108,96
+ dw Route30String
+
+ db 104,76
+ dw Route31String
+
+ db 92,76
+ dw VioletString
+
+ db 93,74
+ dw SproutString
+
+ db 92,108
+ dw Route32String
+
+ db 84,92
+ dw RuinsString
+
+ db 92,140
+ dw UnionString
+
+ db 90,140
+ dw Route33String
+
+ db 76,140
+ dw AzaleaString
+
+ db 78,138
+ dw WellString
+
+ db 60,136
+ dw IlexString
+
+ db 60,128
+ dw Route34String
+
+ db 60,108
+ dw GoldenrodString
+
+ db 58,108
+ dw RadioTowerString
+
+ db 60,92
+ dw Route35String
+
+ db 60,76
+ dw ParkString
+
+ db 72,76
+ dw Route36String
+
+ db 76,68
+ dw Route37String
+
+ db 76,60
+ dw EcruteakString
+
+ db 78,58
+ dw TinString
+
+ db 74,58
+ dw BurnedTowerString
+
+ db 60,60
+ dw Route38String
+
+ db 44,64
+ dw Route39String
+
+ db 44,76
+ dw OlivineString
+
+ db 46,78
+ dw LighthouseString
+
+ db 36,72
+ dw BattleTowerString
+
+ db 36,80
+ dw Route40String
+
+ db 36,108
+ dw WhirlString
+
+ db 36,116
+ dw Route41String
+
+ db 28,116
+ dw CianwoodString
+
+ db 100,60
+ dw Route42String
+
+ db 92,60
+ dw MortarString
+
+ db 116,60
+ dw MahoganyString
+
+ db 116,52
+ dw Route43String
+
+ db 116,44
+ dw LakeString
+
+ db 128,60
+ dw Route44String
+
+ db 138,54
+ dw PathString
+
+ db 140,60
+ dw BlackthornString
+
+ db 140,52
+ dw DenString
+
+ db 140,80
+ dw Route45String
+
+ db 120,88
+ dw DarkString
+
+ db 132,104
+ dw Route46String
+
+ db 156,84
+ dw SilverCaveString
+
+ db 60,124
+ dw PalletString
+
+ db 60,108
+ dw Route1String
+
+ db 60,92
+ dw ViridianString
+
+ db 60,80
+ dw Route2String
+
+ db 60,68
+ dw PewterString
+
+ db 72,68
+ dw Route3String
+
+ db 84,68
+ dw MoonString
+
+ db 96,68
+ dw Route4String
+
+ db 108,68
+ dw CeruleanString
+
+ db 108,60
+ dw Route24String
+
+ db 116,52
+ dw Route25String
+
+ db 108,76
+ dw Route5String
+
+ db 116,92
+ dw UndergroundString
+
+ db 108,92
+ dw Route6String
+
+ db 108,100
+ dw VermilionString
+
+ db 96,76
+ dw DiglettsCaveString
+
+ db 96,84
+ dw Route7String
+
+ db 124,84
+ dw Route8String
+
+ db 124,68
+ dw Route9String
+
+ db 140,68
+ dw TunnelString
+
+ db 140,72
+ dw Route10String
+
+ db 140,76
+ dw PlantString
+
+ db 140,84
+ dw LavenderString
+
+ db 148,84
+ dw LavTowerString
+
+ db 84,84
+ dw CeladonString
+
+ db 108,84
+ dw SaffronString
+
+ db 124,100
+ dw Route11String
+
+ db 140,96
+ dw Route12String
+
+ db 132,116
+ dw Route13String
+
+ db 124,128
+ dw Route14String
+
+ db 112,132
+ dw Route15String
+
+ db 76,84
+ dw Route16String
+
+ db 76,108
+ dw Route17String
+
+ db 88,132
+ dw Route18String
+
+ db 100,132
+ dw FuchsiaString
+
+ db 100,144
+ dw Route19String
+
+ db 84,148
+ dw Route20String
+
+ db 76,148
+ dw SeafoamString
+
+ db 60,148
+ dw CinnabarString
+
+ db 60,136
+ dw Route21String
+
+ db 44,84
+ dw Route22String
+
+ db 36,68
+ dw RoadString
+
+ db 36,60
+ dw Route23String
+
+ db 36,52
+ dw IndigoString
+
+ db 36,108
+ dw Route26String
+
+ db 28,116
+ dw Route27String
+
+ db 20,116
+ dw FallsString
+
+ db 28,84
+ dw Route28String
+
+ db 148,132
+ dw AquaString
+
+NewBarkString:
+ db "NEW BARK",$1F,"TOWN@"
+CherrygroveString:
+ db "CHERRYGROVE",$1F,"CITY@"
+VioletString:
+ db "VIOLET CITY@"
+AzaleaString:
+ db "AZALEA TOWN@"
+GoldenrodString:
+ db "GOLDENROD",$1F,"CITY@"
+EcruteakString:
+ db "ECRUTEAK",$1F,"CITY@"
+OlivineString:
+ db "OLIVINE",$1F,"CITY@"
+CianwoodString:
+ db "CIANWOOD",$1F,"CITY@"
+MahoganyString:
+ db "MAHOGANY",$1F,"TOWN@"
+BlackthornString:
+ db "BLACKTHORN",$1F,"CITY@"
+LakeString:
+ db "LAKE OF",$1F,"RAGE@"
+SilverCaveString:
+ db "SILVER CAVE@"
+SproutString:
+ db "SPROUT",$1F,"TOWER@"
+RuinsString:
+ db "RUINS",$1F,"OF ALPH@"
+UnionString:
+ db "UNION CAVE@"
+WellString:
+ db "SLOWPOKE",$1F,"WELL@"
+RadioTowerString:
+ db "RADIO TOWER@"
+PlantString:
+ db "POWER PLANT@"
+ParkString:
+ db "NATIONAL",$1F,"PARK@"
+TinString:
+ db "TIN TOWER@"
+LighthouseString:
+ db "LIGHTHOUSE@"
+WhirlString:
+ db "WHIRL",$1F,"ISLANDS@"
+MortarString:
+ db "MT.MORTAR@"
+DenString:
+ db "DRAGON'S",$1F,"DEN@"
+PathString:
+ db "ICE PATH@"
+NotApplicableString:
+ db "N/A@"
+PalletString:
+ db "PALLET TOWN@"
+ViridianString:
+ db "VIRIDIAN",$1F,"CITY@"
+PewterString:
+ db "PEWTER CITY@"
+CeruleanString:
+ db "CERULEAN",$1F,"CITY@"
+LavenderString:
+ db "LAVENDER",$1F,"TOWN@"
+VermilionString:
+ db "VERMILION",$1F,"CITY@"
+CeladonString:
+ db "CELADON",$1F,"CITY@"
+SaffronString:
+ db "SAFFRON",$1F,"CITY@"
+FuchsiaString:
+ db "FUCHSIA",$1F,"CITY@"
+CinnabarString:
+ db "CINNABAR",$1F,"ISLAND@"
+IndigoString:
+ db "INDIGO",$1F,"PLATEAU@"
+RoadString:
+ db "VICTORY",$1F,"ROAD@"
+MoonString:
+ db "MT.MOON@"
+TunnelString:
+ db "ROCK TUNNEL@"
+LavTowerString:
+ db "LAV",$1F,"RADIO TOWER@"
+SilphString:
+ db "SILPH CO.@"
+ZoneString:
+ db "SAFARI ZONE@"
+SeafoamString:
+ db "SEAFOAM",$1F,"ISLANDS@"
+MansionString:
+ db "#MON",$1F,"MANSION@"
+DungeonString:
+ db "CERULEAN",$1F,"CAVE@"
+Route1String:
+ db "ROUTE 1@"
+Route2String:
+ db "ROUTE 2@"
+Route3String:
+ db "ROUTE 3@"
+Route4String:
+ db "ROUTE 4@"
+Route5String:
+ db "ROUTE 5@"
+Route6String:
+ db "ROUTE 6@"
+Route7String:
+ db "ROUTE 7@"
+Route8String:
+ db "ROUTE 8@"
+Route9String:
+ db "ROUTE 9@"
+Route10String:
+ db "ROUTE 10@"
+Route11String:
+ db "ROUTE 11@"
+Route12String:
+ db "ROUTE 12@"
+Route13String:
+ db "ROUTE 13@"
+Route14String:
+ db "ROUTE 14@"
+Route15String:
+ db "ROUTE 15@"
+Route16String:
+ db "ROUTE 16@"
+Route17String:
+ db "ROUTE 17@"
+Route18String:
+ db "ROUTE 18@"
+Route19String:
+ db "ROUTE 19@"
+Route20String:
+ db "ROUTE 20@"
+Route21String:
+ db "ROUTE 21@"
+Route22String:
+ db "ROUTE 22@"
+Route23String:
+ db "ROUTE 23@"
+Route24String:
+ db "ROUTE 24@"
+Route25String:
+ db "ROUTE 25@"
+Route26String:
+ db "ROUTE 26@"
+Route27String:
+ db "ROUTE 27@"
+Route28String:
+ db "ROUTE 28@"
+Route29String:
+ db "ROUTE 29@"
+Route30String:
+ db "ROUTE 30@"
+Route31String:
+ db "ROUTE 31@"
+Route32String:
+ db "ROUTE 32@"
+Route33String:
+ db "ROUTE 33@"
+Route34String:
+ db "ROUTE 34@"
+Route35String:
+ db "ROUTE 35@"
+Route36String:
+ db "ROUTE 36@"
+Route37String:
+ db "ROUTE 37@"
+Route38String:
+ db "ROUTE 38@"
+Route39String:
+ db "ROUTE 39@"
+Route40String:
+ db "ROUTE 40@"
+Route41String:
+ db "ROUTE 41@"
+Route42String:
+ db "ROUTE 42@"
+Route43String:
+ db "ROUTE 43@"
+Route44String:
+ db "ROUTE 44@"
+Route45String:
+ db "ROUTE 45@"
+Route46String:
+ db "ROUTE 46@"
+DarkString:
+ db "DARK CAVE@"
+IlexString:
+ db "ILEX",$1F,"FOREST@"
+BurnedTowerString:
+ db "BURNED",$1F,"TOWER@"
+AquaString:
+ db "FAST SHIP@"
+ViridianForestString:
+ db "VIRIDIAN",$1F,"FOREST@"
+DiglettsCaveString:
+ db "DIGLETT'S",$1F,"CAVE@"
+FallsString:
+ db "TOHJO FALLS@"
+UndergroundString:
+ db "UNDERGROUND@"
+BattleTowerString:
+ db "BATTLE",$1F,"TOWER@"
+SpecialMapString:
+ db "SPECIAL@"
+
--- /dev/null
+++ b/engine/scripting.asm
@@ -1,0 +1,3127 @@
+ScriptCommandTable: ; 0x96cb1
+ dw Script_2call
+ dw Script_3call
+ dw Script_2ptcall
+ dw Script_2jump
+ dw Script_3jump
+ dw Script_2ptjump
+ dw Script_if_equal
+ dw Script_if_not_equal
+ dw Script_iffalse
+ dw Script_iftrue
+ dw Script_if_less_than
+ dw Script_if_greater_than
+ dw Script_jumpstd
+ dw Script_callstd
+ dw Script_3callasm
+ dw Script_special
+ dw Script_2ptcallasm
+ dw Script_checkmaptriggers
+ dw Script_domaptrigger
+ dw Script_checktriggers
+ dw Script_dotrigger
+ dw Script_writebyte
+ dw Script_addvar
+ dw Script_random
+ dw Script_checkver
+ dw Script_copybytetovar
+ dw Script_copyvartobyte
+ dw Script_loadvar
+ dw Script_checkcode
+ dw Script_writevarcode
+ dw Script_writecode
+ dw Script_giveitem
+ dw Script_takeitem
+ dw Script_checkitem
+ dw Script_givemoney
+ dw Script_takemoney
+ dw Script_checkmoney
+ dw Script_givecoins
+ dw Script_takecoins
+ dw Script_checkcoins
+ dw Script_addcellnum
+ dw Script_delcellnum
+ dw Script_checkcellnum
+ dw Script_checktime
+ dw Script_checkpoke
+ dw Script_givepoke
+ dw Script_giveegg
+ dw Script_givepokeitem
+ dw Script_checkpokeitem
+ dw Script_checkbit1
+ dw Script_clearbit1
+ dw Script_setbit1
+ dw Script_checkbit2
+ dw Script_clearbit2
+ dw Script_setbit2
+ dw Script_wildoff
+ dw Script_wildon
+ dw Script_xycompare
+ dw Script_warpmod
+ dw Script_blackoutmod
+ dw Script_warp
+ dw Script_readmoney
+ dw Script_readcoins
+ dw Script_RAM2MEM
+ dw Script_pokenamemem
+ dw Script_itemtotext
+ dw Script_mapnametotext
+ dw Script_trainertotext
+ dw Script_stringtotext
+ dw Script_itemnotify
+ dw Script_pocketisfull
+ dw Script_loadfont
+ dw Script_refreshscreen
+ dw Script_loadmovesprites
+ dw Script_loadbytec1ce
+ dw Script_3writetext
+ dw Script_2writetext
+ dw Script_repeattext
+ dw Script_yesorno
+ dw Script_loadmenudata
+ dw Script_writebackup
+ dw Script_jumptextfaceplayer
+ dw Script_3jumptext
+ dw Script_jumptext
+ dw Script_closetext
+ dw Script_keeptextopen
+ dw Script_pokepic
+ dw Script_pokepicyesorno
+ dw Script_interpretmenu
+ dw Script_interpretmenu2
+ dw Script_loadpikachudata
+ dw Script_battlecheck
+ dw Script_loadtrainerdata
+ dw Script_loadpokedata
+ dw Script_loadtrainer
+ dw Script_startbattle
+ dw Script_returnafterbattle
+ dw Script_catchtutorial
+ dw Script_trainertext
+ dw Script_trainerstatus
+ dw Script_winlosstext
+ dw Script_scripttalkafter
+ dw Script_talkaftercancel
+ dw Script_talkaftercheck
+ dw Script_setlasttalked
+ dw Script_applymovement
+ dw Script_applymovement2
+ dw Script_faceplayer
+ dw Script_faceperson
+ dw Script_variablesprite
+ dw Script_disappear
+ dw Script_appear
+ dw Script_follow
+ dw Script_stopfollow
+ dw Script_moveperson
+ dw Script_writepersonxy
+ dw Script_loademote
+ dw Script_showemote
+ dw Script_spriteface
+ dw Script_follownotexact
+ dw Script_earthquake
+ dw Script_changemap
+ dw Script_changeblock
+ dw Script_reloadmap
+ dw Script_reloadmappart
+ dw Script_writecmdqueue
+ dw Script_delcmdqueue
+ dw Script_playmusic
+ dw Script_playrammusic
+ dw Script_musicfadeout
+ dw Script_playmapmusic
+ dw Script_reloadmapmusic
+ dw Script_cry
+ dw Script_playsound
+ dw Script_waitbutton
+ dw Script_warpsound
+ dw Script_specialsound
+ dw Script_passtoengine
+ dw Script_newloadmap
+ dw Script_pause
+ dw Script_deactivatefacing
+ dw Script_priorityjump
+ dw Script_warpcheck
+ dw Script_ptpriorityjump
+ dw Script_return
+ dw Script_end
+ dw Script_reloadandreturn
+ dw Script_resetfuncs
+ dw Script_pokemart
+ dw Script_elevator
+ dw Script_trade
+ dw Script_askforphonenumber
+ dw Script_phonecall
+ dw Script_hangup
+ dw Script_describedecoration
+ dw Script_fruittree
+ dw Script_specialphonecall
+ dw Script_checkphonecall
+ dw Script_verbosegiveitem
+ dw Script_verbosegiveitem2
+ dw Script_loadwilddata
+ dw Script_halloffame
+ dw Script_credits
+ dw Script_warpfacing
+ dw Script_storetext
+ dw Script_displaylocation
+ dw Script_unknown0xa6
+ dw Script_unknown0xa7
+ dw Script_unknown0xa8
+ dw Script_unknown0xa9
+; 0x96e05
+
+Unknown_0x96e05: ; 0x96e05
+ ld hl, $d434
+ set 2, [hl]
+ ret
+; 0x96e0b
+
+Unknown_0x96e0b: ; 0x96e0b
+ ld hl, $d434
+ bit 2, [hl]
+ ret
+; 0x96e11
+
+Unknown_0x96e11: ; 0x96e11
+ ld hl, $d434
+ res 2, [hl]
+ ret
+; 0x96e17
+
+Script_3callasm: ; 0x96e17
+; script command 0xe
+; parameters:
+; asm (AsmPointerParam)
+
+ call GetScriptByte
+ ld b, a
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ ld a, b
+ rst $8
+ ret
+; 0x96e26
+
+Script_special: ; 0x96e26
+; script command 0xf
+; parameters:
+; predefined_script (MultiByteParam)
+
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ ld a, $3
+ ld hl, $401b
+ rst $8
+ ret
+; 0x96e35
+
+Script_2ptcallasm: ; 0x96e35
+; script command 0x10
+; parameters:
+; asm (PointerToAsmPointerParam)
+
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ ld b, [hl]
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, b
+ rst $8
+ ret
+; 0x96e45
+
+Script_jumptextfaceplayer: ; 0x96e45
+; script command 0x51
+; parameters:
+; text_pointer (RawTextPointerLabelParam)
+
+ ld a, [ScriptBank]
+ ld [$d44e], a
+ call GetScriptByte
+ ld [$d44f], a
+ call GetScriptByte
+ ld [$d450], a
+ ld b, $25
+ ld hl, $6e79
+ jp ScriptJump
+; 0x96e5f
+
+Script_jumptext: ; 0x96e5f
+; script command 0x53
+; parameters:
+; text_pointer (RawTextPointerLabelParam)
+
+ ld a, [ScriptBank]
+ ld [$d44e], a
+ call GetScriptByte
+ ld [$d44f], a
+ call GetScriptByte
+ ld [$d450], a
+ ld b, $25
+ ld hl, $6e7a
+ jp ScriptJump
+; 0x96e79
+
+INCBIN "baserom.gbc",$96e79,$96e81 - $96e79
+
+Script_3jumptext: ; 0x96e81
+; script command 0x52
+; parameters:
+; text_pointer (PointerLabelBeforeBank)
+
+ call GetScriptByte
+ ld [$d44e], a
+ call GetScriptByte
+ ld [$d44f], a
+ call GetScriptByte
+ ld [$d450], a
+ ld b, $25
+ ld hl, $6e7a
+ jp ScriptJump
+; 0x96e9b
+
+Script_2writetext: ; 0x96e9b
+; script command 0x4c
+; parameters:
+; text_pointer (RawTextPointerLabelParam)
+
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ ld a, [ScriptBank]
+ ld b, a
+ call $269a
+ ret
+; 0x96eab
+
+Script_3writetext: ; 0x96eab
+; script command 0x4b
+; parameters:
+; text_pointer (PointerLabelBeforeBank)
+
+ call GetScriptByte
+ ld b, a
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ call $269a
+ ret
+; 0x96ebb
+
+Script_repeattext: ; 0x96ebb
+; script command 0x4d
+; parameters:
+; byte (SingleByteParam)
+; byte (SingleByteParam)
+
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ cp $ff
+ jr nz, .asm_96ed8 ; 0x96ec5 $11
+ ld a, l
+ cp $ff
+ jr nz, .asm_96ed8 ; 0x96eca $c
+ ld hl, $d44e
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call $269a
+ ret
+.asm_96ed8
+ ret
+; 0x96ed9
+
+Script_closetext: ; 0x96ed9
+; script command 0x54
+
+ jp $0a46
+; 0x96edc
+
+Script_keeptextopen: ; 0x96edc
+; script command 0x55
+
+ ld a, [$ffd8]
+ push af
+ ld a, $1
+ ld [$ffd8], a
+ call $31f6
+ call $0aaf
+ pop af
+ ld [$ffd8], a
+ ret
+; 0x96eed
+
+Script_yesorno: ; 0x96eed
+; script command 0x4e
+
+ call $1dcf
+ ld a, $0
+ jr c, .asm_96ef6 ; 0x96ef2 $2
+ ld a, $1
+.asm_96ef6
+ ld [$c2dd], a
+ ret
+; 0x96efa
+
+Script_loadmenudata: ; 0x96efa
+; script command 0x4f
+; parameters:
+; data (MenuDataPointerParam)
+
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ ld de, $1d35
+ ld a, [ScriptBank]
+ call $26b7
+ call $1ad2
+ ret
+; 0x96f0f
+
+Script_writebackup: ; 0x96f0f
+; script command 0x50
+
+ call $1c17
+ call $1ad2
+ ret
+; 0x96f16
+
+Script_pokepic: ; 0x96f16
+; script command 0x56
+; parameters:
+; pokemon (PokemonParam)
+
+ call GetScriptByte
+ and a
+ jr nz, .asm_96f1f ; 0x96f1a $3
+ ld a, [$c2dd]
+.asm_96f1f
+ ld [$d108], a
+ ld a, $9
+ ld hl, $44e3
+ rst $8
+ ret
+; 0x96f29
+
+Script_pokepicyesorno: ; 0x96f29
+; script command 0x57
+
+ ld a, $9
+ ld hl, $4528
+ rst $8
+ ret
+; 0x96f30
+
+Script_interpretmenu2: ; 0x96f30
+; script command 0x59
+
+ ld a, [ScriptBank]
+ ld hl, $1d81
+ rst $8
+ ld a, [$cfa9]
+ jr nc, .asm_96f3d ; 0x96f3a $1
+ xor a
+.asm_96f3d
+ ld [$c2dd], a
+ ret
+; 0x96f41
+
+Script_interpretmenu: ; 0x96f41
+; script command 0x58
+
+ ld a, [ScriptBank]
+ ld hl, $202a
+ rst $8
+ ld a, [$cf88]
+ jr nc, .asm_96f4e ; 0x96f4b $1
+ xor a
+.asm_96f4e
+ ld [$c2dd], a
+ ret
+; 0x96f52
+
+Script_storetext: ; 0x96f52
+; script command 0xa4
+; parameters:
+; pointer (PointerLabelBeforeBank)
+; memory (SingleByteParam)
+
+ call $106c
+ call GetScriptByte
+ ld c, a
+ ld a, $47
+ ld hl, $4000
+ rst $8
+ ret
+; 0x96f60
+
+Script_verbosegiveitem: ; 0x96f60
+; script command 0x9e
+; parameters:
+; item (ItemLabelByte)
+; quantity (DecimalParam)
+
+ call $77ca
+ call $7051
+ ld de, $d073
+ ld a, $1
+ call $76c8
+ ld b, $25
+ ld de, $6f77
+ jp $74cb
+; 0x96f76
+
+INCBIN "baserom.gbc",$96f76,$96f8e - $96f76
+
+Script_verbosegiveitem2: ; 0x96f8e
+; script command 0x9f
+; parameters:
+; item (ItemLabelByte)
+; var (SingleByteParam)
+
+ call GetScriptByte
+ cp $ff
+ jr nz, .asm_96f98 ; 0x96f93 $3
+ ld a, [$c2dd]
+.asm_96f98
+ ld [$d106], a
+ call GetScriptByte
+ call $769e
+ ld a, [de]
+ ld [$d10c], a
+ ld hl, $d892
+ call $2f66
+ ld a, $1
+ jr c, .asm_96fb0 ; 0x96fad $1
+ xor a
+.asm_96fb0
+ ld [$c2dd], a
+ call $7051
+ ld de, $d073
+ ld a, $1
+ call $76c8
+ ld b, $25
+ ld de, $6f77
+ jp $74cb
+; 0x96fc6
+
+Script_itemnotify: ; 0x96fc6
+; script command 0x45
+
+ call $6ffe
+ call $7051
+ ld b, $25
+ ld hl, $705b
+ call $269a
+ ret
+; 0x96fd5
+
+Script_pocketisfull: ; 0x96fd5
+; script command 0x46
+
+ call $6ffe
+ call $7051
+ ld b, $25
+ ld hl, $7060
+ call $269a
+ ret
+; 0x96fe4
+
+Script_specialsound: ; 0x96fe4
+; script command 0x88
+
+ ld a, $3
+ ld hl, $543d
+ rst $8
+ ld a, [$d142]
+ cp TM_HM
+ ld de, SFX_GET_TM
+ jr z, .play
+ ld de, SFX_ITEM
+.play
+ call StartSFX
+ call WaitSFX
+ ret
+; 0x96ffe
+
+INCBIN "baserom.gbc",$96ffe,$97065 - $96ffe
+
+Script_pokemart: ; 0x97065
+; script command 0x94
+; parameters:
+; dialog_id (SingleByteParam)
+; mart_id (MultiByteParam)
+
+ call GetScriptByte
+ ld c, a
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ ld a, [ScriptBank]
+ ld b, a
+ ld a, $5
+ ld hl, $5a45
+ rst $8
+ ret
+; 0x9707c
+
+Script_elevator: ; 0x9707c
+; script command 0x95
+; parameters:
+; floor_list_pointer (PointerLabelParam)
+
+ xor a
+ ld [$c2dd], a
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ ld a, [ScriptBank]
+ ld b, a
+ ld a, $4
+ ld hl, $742d
+ rst $8
+ ret c
+ ld a, $1
+ ld [$c2dd], a
+ ret
+; 0x97099
+
+Script_trade: ; 0x97099
+; script command 0x96
+; parameters:
+; trade_id (SingleByteParam)
+
+ call GetScriptByte
+ ld e, a
+ ld a, $3f
+ ld hl, $4ba8
+ rst $8
+ ret
+; 0x970a4
+
+Script_phonecall: ; 0x970a4
+; script command 0x98
+; parameters:
+; caller_name (RawTextPointerLabelParam)
+
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ ld a, [ScriptBank]
+ ld b, a
+ ld a, $24
+ ld hl, $429a
+ rst $8
+ ret
+; 0x970b7
+
+Script_hangup: ; 0x970b7
+; script command 0x99
+
+ ld a, $24
+ ld hl, $42eb
+ rst $8
+ ret
+; 0x970be
+
+Script_askforphonenumber: ; 0x970be
+; script command 0x97
+; parameters:
+; number (SingleByteParam)
+
+ call $1dcf
+ jr c, .asm_970d6 ; 0x970c1 $13
+ call GetScriptByte
+ ld c, a
+ ld a, $24
+ ld hl, $4000
+ rst $8
+ jr c, .asm_970d2 ; 0x970cd $3
+ xor a
+ jr .asm_970db ; 0x970d0 $9
+.asm_970d2
+ ld a, $1
+ jr .asm_970db ; 0x970d4 $5
+.asm_970d6
+ call GetScriptByte
+ ld a, $2
+.asm_970db
+ ld [$c2dd], a
+ ret
+; 0x970df
+
+Script_describedecoration: ; 0x970df
+; script command 0x9a
+; parameters:
+; byte (SingleByteParam)
+
+ call GetScriptByte
+ ld b, a
+ ld a, $9
+ ld hl, $6f59
+ rst $8
+ ld h, d
+ ld l, e
+ jp ScriptJump
+; 0x970ee
+
+Script_fruittree: ; 0x970ee
+; script command 0x9b
+; parameters:
+; tree_id (SingleByteParam)
+
+ call GetScriptByte
+ ld [CurFruitTree], a
+ ld b, BANK(FruitTreeScript)
+ ld hl, FruitTreeScript
+ jp ScriptJump
+; 0x970fc
+
+Script_loadwilddata: ; 0x970fc
+; script command 0xa0
+; parameters:
+; map_group (MapGroupParam)
+; map_id (MapIdParam)
+
+ call GetScriptByte
+ ld c, a
+ call GetScriptByte
+ ld d, a
+ call GetScriptByte
+ ld e, a
+ ld a, $3
+ ld hl, $4403
+ rst $8
+ ret
+; 0x9710f
+
+Script_trainertext: ; 0x9710f
+; script command 0x62
+; parameters:
+; which_text (SingleByteParam)
+
+ call GetScriptByte
+ ld c, a
+ ld b, $0
+ ld hl, $d045
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$d03e]
+ ld b, a
+ call $269a
+ ret
+; 0x97125
+
+Script_scripttalkafter: ; 0x97125
+; script command 0x65
+
+ ld hl, $d04b
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$d03e]
+ ld b, a
+ jp ScriptJump
+; 0x97132
+
+Script_trainerstatus: ; 0x97132
+; script command 0x63
+; parameters:
+; action (SingleByteParam)
+
+ xor a
+ ld [$c2dd], a
+ ld hl, $d041
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ call GetScriptByte
+ ld b, a
+ call BitTable1Func
+ ld a, c
+ and a
+ ret z
+ ld a, $1
+ ld [$c2dd], a
+ ret
+; 0x9714c
+
+Script_winlosstext: ; 0x9714c
+; script command 0x64
+; parameters:
+; win_text_pointer (TextPointerLabelParam)
+; loss_text_pointer (TextPointerLabelParam)
+
+ ld hl, $d047
+ call GetScriptByte
+ ld [hli], a
+ call GetScriptByte
+ ld [hli], a
+ ld hl, $d049
+ call GetScriptByte
+ ld [hli], a
+ call GetScriptByte
+ ld [hli], a
+ ret
+; 0x97163
+
+Script_talkaftercancel: ; 0x97163
+; script command 0x66
+
+ ld a, [$d04d]
+ and a
+ ret z
+ jp $7b74
+; 0x9716b
+
+Script_talkaftercheck: ; 0x9716b
+; script command 0x67
+
+ ld a, $1
+ ld [$c2dd], a
+ ld a, [$d04d]
+ and a
+ ret nz
+ xor a
+ ld [$c2dd], a
+ ret
+; 0x9717a
+
+Script_playrammusic: ; 0x9717a
+; script command 0x80
+
+ ld a, [$d22f]
+ ld e, a
+ ld a, $3a
+ ld hl, $500a
+ rst $8
+ ret
+; 0x97185
+
+Script_playmapmusic: ; 0x97185
+; script command 0x82
+
+ call $3cdf
+ ret
+; 0x97189
+
+Script_playmusic: ; 0x97189
+; script command 0x7f
+; parameters:
+; music_pointer (MultiByteParam)
+
+ ld de, $0000
+ call StartMusic
+ xor a
+ ld [$c2a7], a
+ call MaxVolume
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ call StartMusic
+ ret
+; 0x971a2
+
+Script_musicfadeout: ; 0x971a2
+; script command 0x81
+; parameters:
+; music (MultiByteParam)
+; fadetime (SingleByteParam)
+
+ call GetScriptByte
+ ld [$c2a9], a
+ call GetScriptByte
+ ld [$c2aa], a
+ call GetScriptByte
+ and $7f
+ ld [$c2a7], a
+ ret
+; 0x971b7
+
+Script_playsound: ; 0x971b7
+; script command 0x85
+; parameters:
+; sound_pointer (MultiByteParam)
+
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ call StartSFX
+ ret
+; 0x971c3
+
+Script_waitbutton: ; 0x971c3
+; script command 0x86
+
+ call WaitSFX
+ ret
+; 0x971c7
+
+Script_warpsound: ; 0x971c7
+; script command 0x87
+
+ ld a, $5
+ ld hl, $4a07
+ rst $8
+ call StartSFX
+ ret
+; 0x971d1
+
+Script_cry: ; 0x971d1
+; script command 0x84
+; parameters:
+; cry_id (MultiByteParam)
+
+ call GetScriptByte
+ push af
+ call GetScriptByte
+ pop af
+ and a
+ jr nz, .asm_971df ; 0x971da $3
+ ld a, [$c2dd]
+.asm_971df
+ call $37ce
+ ret
+; 0x971e3
+
+Unknown_0x971e3: ; 0x971e3
+ and a
+ ret z
+ cp $fe
+ ret z
+ dec a
+ ret
+; 0x971ea
+
+Script_setlasttalked: ; 0x971ea
+; script command 0x68
+; parameters:
+; person (SingleByteParam)
+
+ call GetScriptByte
+ call Unknown_0x971e3
+ ld [$ffe0], a
+ ret
+; 0x971f3
+
+Script_applymovement: ; 0x971f3
+; script command 0x69
+; parameters:
+; person (SingleByteParam)
+; data (MovementPointerLabelParam)
+
+ call GetScriptByte
+ call Unknown_0x971e3
+ ld c, a
+ push bc
+ ld a, c
+ ld a, $1
+ ld hl, $585c
+ rst $8
+ pop bc
+ push bc
+ call $7221
+ pop bc
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ ld a, [ScriptBank]
+ ld b, a
+ call $26c7
+ ret c
+ ld a, $2
+ ld [$d437], a
+ call Unknown_0x96e11
+ ret
+; 0x97221
+
+Unknown_0x97221: ; 0x97221
+ ld a, $1
+ ld hl, $5897
+ rst $8
+ ret
+; 0x97228
+
+Script_applymovement2: ; 0x97228
+; script command 0x6a
+; parameters:
+; data (MovementPointerLabelParam)
+
+ ld a, [$ffe0]
+ ld c, a
+ jp $71fa
+; 0x9722e
+
+Script_faceplayer: ; 0x9722e
+; script command 0x6b
+
+ ld a, [$ffe0]
+ and a
+ ret z
+ ld d, $0
+ ld a, [$ffe0]
+ ld e, a
+ ld a, $2
+ ld hl, $4417
+ rst $8
+ ld a, d
+ add a
+ add a
+ ld e, a
+ ld a, [$ffe0]
+ ld d, a
+ call $728b
+ ret
+; 0x97248
+
+Script_faceperson: ; 0x97248
+; script command 0x6c
+; parameters:
+; person1 (SingleByteParam)
+; person2 (SingleByteParam)
+
+ call GetScriptByte
+ call Unknown_0x971e3
+ cp $fe
+ jr c, .asm_97254 ; 0x97250 $2
+ ld a, [$ffe0]
+.asm_97254
+ ld e, a
+ call GetScriptByte
+ call Unknown_0x971e3
+ cp $fe
+ jr nz, .asm_97261 ; 0x9725d $2
+ ld a, [$ffe0]
+.asm_97261
+ ld d, a
+ push de
+ ld a, $2
+ ld hl, $4417
+ rst $8
+ pop bc
+ ret c
+ ld a, d
+ add a
+ add a
+ ld e, a
+ ld d, c
+ call $728b
+ ret
+; 0x97274
+
+Script_spriteface: ; 0x97274
+; script command 0x76
+; parameters:
+; person (SingleByteParam)
+; facing (SingleByteParam)
+
+ call GetScriptByte
+ call Unknown_0x971e3
+ cp $fe
+ jr nz, .asm_97280 ; 0x9727c $2
+ ld a, [$ffe0]
+.asm_97280
+ ld d, a
+ call GetScriptByte
+ add a
+ add a
+ ld e, a
+ call $728b
+ ret
+; 0x9728b
+
+Unknown_0x9728b: ; 0x9728b
+ ld a, d
+ push de
+ call $18de
+ jr c, .asm_972b9 ; 0x97290 $27
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ push bc
+ call $1836
+ pop bc
+ jr c, .asm_972b9 ; 0x9729c $1b
+ ld hl, $0004
+ add hl, bc
+ bit 2, [hl]
+ jr nz, .asm_972b9 ; 0x972a4 $13
+ pop de
+ ld a, e
+ call $1af8
+ ld hl, $d0ed
+ bit 6, [hl]
+ jr nz, .asm_972b5 ; 0x972b0 $3
+ call $72bc
+.asm_972b5
+ call $1ad2
+ ret
+.asm_972b9
+ pop de
+ scf
+ ret
+; 0x972bc
+
+Unknown_0x972bc: ; 0x972bc
+ call $217a
+ ld hl, $c4a0
+ ld bc, $0168
+.asm_972c5
+ res 7, [hl]
+ inc hl
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_972c5 ; 0x972cb $f8
+ ret
+; 0x972ce
+
+Script_variablesprite: ; 0x972ce
+; script command 0x6d
+; parameters:
+; byte (SingleByteParam)
+; sprite (SingleByteParam)
+
+ call GetScriptByte
+ ld e, a
+ ld d, $0
+ ld hl, $d82e
+ add hl, de
+ call GetScriptByte
+ ld [hl], a
+ ret
+; 0x972dd
+
+Script_appear: ; 0x972dd
+; script command 0x6f
+; parameters:
+; person (SingleByteParam)
+
+ call GetScriptByte
+ call Unknown_0x971e3
+ call $1956
+ ld a, [$ffaf]
+ ld b, $0
+ call $730b
+ ret
+; 0x972ee
+
+Script_disappear: ; 0x972ee
+; script command 0x6e
+; parameters:
+; person (SingleByteParam)
+
+ call GetScriptByte
+ call Unknown_0x971e3
+ cp $fe
+ jr nz, .asm_972fa ; 0x972f6 $2
+ ld a, [$ffe0]
+.asm_972fa
+ call $199f
+ ld a, [$ffaf]
+ ld b, $1
+ call $730b
+ ld a, $1
+ ld hl, $5920
+ rst $8
+ ret
+; 0x9730b
+
+Unknown_0x9730b: ; 0x9730b
+ push bc
+ call $18d2
+ ld hl, $000c
+ add hl, bc
+ pop bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, $ff
+ cp e
+ jr nz, .asm_97321 ; 0x9731a $5
+ cp d
+ jr nz, .asm_97321 ; 0x9731d $2
+ xor a
+ ret
+.asm_97321
+ call BitTable1Func
+ ret
+; 0x97325
+
+Script_follow: ; 0x97325
+; script command 0x70
+; parameters:
+; person2 (SingleByteParam)
+; person1 (SingleByteParam)
+
+ call GetScriptByte
+ call Unknown_0x971e3
+ ld b, a
+ call GetScriptByte
+ call Unknown_0x971e3
+ ld c, a
+ ld a, $1
+ ld hl, $5803
+ rst $8
+ ret
+; 0x9733a
+
+Script_stopfollow: ; 0x9733a
+; script command 0x71
+
+ ld a, $1
+ ld hl, $581f
+ rst $8
+ ret
+; 0x97341
+
+Script_moveperson: ; 0x97341
+; script command 0x72
+; parameters:
+; person (SingleByteParam)
+; x (SingleByteParam)
+; y (SingleByteParam)
+
+ call GetScriptByte
+ call Unknown_0x971e3
+ ld b, a
+ call GetScriptByte
+ add $4
+ ld d, a
+ call GetScriptByte
+ add $4
+ ld e, a
+ ld a, $2
+ ld hl, $407e
+ rst $8
+ ret
+; 0x9735b
+
+Script_writepersonxy: ; 0x9735b
+; script command 0x73
+; parameters:
+; person (SingleByteParam)
+
+ call GetScriptByte
+ call Unknown_0x971e3
+ cp $fe
+ jr nz, .asm_97367 ; 0x97363 $2
+ ld a, [$ffe0]
+.asm_97367
+ ld b, a
+ ld a, $2
+ ld hl, $40a1
+ rst $8
+ ret
+; 0x9736f
+
+Script_follownotexact: ; 0x9736f
+; script command 0x77
+; parameters:
+; person2 (SingleByteParam)
+; person1 (SingleByteParam)
+
+ call GetScriptByte
+ call Unknown_0x971e3
+ ld b, a
+ call GetScriptByte
+ call Unknown_0x971e3
+ ld c, a
+ ld a, $2
+ ld hl, $439e
+ rst $8
+ ret
+; 0x97384
+
+Script_loademote: ; 0x97384
+; script command 0x74
+; parameters:
+; bubble (SingleByteParam)
+
+ call GetScriptByte
+ cp $ff
+ jr nz, .asm_9738e ; 0x97389 $3
+ ld a, [$c2dd]
+.asm_9738e
+ ld c, a
+ ld a, $5
+ ld hl, $442f
+ rst $8
+ ret
+; 0x97396
+
+Script_showemote: ; 0x97396
+; script command 0x75
+; parameters:
+; bubble (SingleByteParam)
+; person (SingleByteParam)
+; time (DecimalParam)
+
+ call GetScriptByte
+ ld [$c2dd], a
+ call GetScriptByte
+ call Unknown_0x971e3
+ cp $fe
+ jr z, .asm_973a8 ; 0x973a4 $2
+ ld [$ffe0], a
+.asm_973a8
+ call GetScriptByte
+ ld [$d44d], a
+ ld b, $25
+ ld de, $73b6
+ jp $74cb
+; 0x973b6
+
+INCBIN "baserom.gbc",$973b6,$973c7 - $973b6
+
+Script_earthquake: ; 0x973c7
+; script command 0x78
+; parameters:
+; param (DecimalParam)
+
+ ld hl, $73eb
+ ld de, $d002
+ ld bc, $0005
+ call CopyBytes
+ call GetScriptByte
+ ld [$d003], a
+ and $3f
+ ld [$d005], a
+ ld b, $25
+ ld de, $73e6
+ jp $74cb
+; 0x973e6
+
+INCBIN "baserom.gbc",$973e6,$973f0 - $973e6
+
+Script_loadpikachudata: ; 0x973f0
+; script command 0x5a
+
+ ld a, $19
+ ld [$d22e], a
+ ld a, $5
+ ld [$d143], a
+ ret
+; 0x973fb
+
+Script_battlecheck: ; 0x973fb
+; script command 0x5b
+
+ xor a
+ ld [$d459], a
+ ret
+; 0x97400
+
+Script_loadtrainerdata: ; 0x97400
+; script command 0x5c
+
+ ld a, $81
+ ld [$d459], a
+ ld a, [$d043]
+ ld [$d22f], a
+ ld a, [$d044]
+ ld [$d231], a
+ ret
+; 0x97412
+
+Script_loadpokedata: ; 0x97412
+; script command 0x5d
+; parameters:
+; pokemon (PokemonParam)
+; level (DecimalParam)
+
+ ld a, $80
+ ld [$d459], a
+ call GetScriptByte
+ ld [$d22e], a
+ call GetScriptByte
+ ld [$d143], a
+ ret
+; 0x97424
+
+Script_loadtrainer: ; 0x97424
+; script command 0x5e
+; parameters:
+; trainer_group (TrainerGroupParam)
+; trainer_id (TrainerIdParam)
+
+ ld a, $81
+ ld [$d459], a
+ call GetScriptByte
+ ld [$d22f], a
+ call GetScriptByte
+ ld [$d231], a
+ ret
+; 0x97436
+
+Script_startbattle: ; 0x97436
+; script command 0x5f
+
+ call $2879
+ ld a, $16
+ call $2d83
+ ld a, [$d0ee]
+ and $3f
+ ld [$c2dd], a
+ ret
+; 0x97447
+
+Script_catchtutorial: ; 0x97447
+; script command 0x61
+; parameters:
+; byte (SingleByteParam)
+
+ call GetScriptByte
+ ld [$d230], a
+ call $2879
+ ld a, $13
+ ld hl, $6554
+ rst $8
+ jp $7491
+; 0x97459
+
+Script_returnafterbattle: ; 0x97459
+; script command 0x60
+
+ ld hl, $d459
+ ld d, [hl]
+ ld [hl], $0
+ ld a, [$d0ee]
+ and $3f
+ cp $1
+ jr nz, .asm_97470 ; 0x97466 $8
+ ld b, $4
+ ld hl, $64c1
+ jp ScriptJump
+.asm_97470
+ bit 0, d
+ jr z, .asm_9747c ; 0x97472 $8
+ ld a, $3f
+ ld hl, $4fec
+ rst $8
+ jr .asm_9748e ; 0x9747a $12
+.asm_9747c
+ ld a, [$d0ee]
+ bit 7, a
+ jr z, .asm_9748e ; 0x97481 $b
+ ld b, $24
+ ld de, $4255
+ ld a, $25
+ ld hl, $7c4f
+ rst $8
+.asm_9748e
+ jp $7491
+; 0x97491
+
+Script_reloadmap: ; 0x97491
+; script command 0x7b
+
+ xor a
+ ld [$d459], a
+ ld a, $f3
+ ld [$ff9f], a
+ ld a, $1
+ call $261b
+ call Unknown_0x96e11
+ ret
+; 0x974a2
+
+Script_2call: ; 0x974a2
+; script command 0x0
+; parameters:
+; pointer (ScriptPointerLabelParam)
+
+ ld a, [ScriptBank]
+ ld b, a
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ jr ScriptCall
+; 0x974b0
+
+Script_3call: ; 0x974b0
+; script command 0x1
+; parameters:
+; pointer (ScriptPointerLabelBeforeBank)
+
+ call GetScriptByte
+ ld b, a
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ jr ScriptCall
+; 0x974be
+
+Script_2ptcall: ; 0x974be
+; script command 0x2
+; parameters:
+; pointer (PointerLabelToScriptPointer)
+
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ ld b, [hl]
+ inc hl
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ; fallthrough
+
+ScriptCall: ; 0x974cb
+ push de
+ ld hl, $d43c
+ ld e, [hl]
+ inc [hl]
+ ld d, $0
+ ld hl, $d43d
+ add hl, de
+ add hl, de
+ add hl, de
+ pop de
+ ld a, [ScriptBank]
+ ld [hli], a
+ ld a, [ScriptPos]
+ ld [hli], a
+ ld a, [ScriptPos + 1]
+ ld [hl], a
+ ld a, b
+ ld [ScriptBank], a
+ ld a, e
+ ld [ScriptPos], a
+ ld a, d
+ ld [ScriptPos + 1], a
+ ret
+; 0x974f3
+
+Unknown_0x974f3: ; 0x974f3
+ ld a, [ScriptBank]
+ or $80
+ ld [ScriptBank], a
+ jp $74cb
+; 0x974fe
+
+Script_2jump: ; 0x974fe
+; script command 0x3
+; parameters:
+; pointer (ScriptPointerLabelParam)
+
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ ld a, [ScriptBank]
+ ld b, a
+ jp ScriptJump
+; 0x9750d
+
+Script_3jump: ; 0x9750d
+; script command 0x4
+; parameters:
+; pointer (ScriptPointerLabelBeforeBank)
+
+ call GetScriptByte
+ ld b, a
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ jp ScriptJump
+; 0x9751c
+
+Script_2ptjump: ; 0x9751c
+; script command 0x5
+; parameters:
+; pointer (PointerLabelToScriptPointer)
+
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ ld b, [hl]
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp ScriptJump
+; 0x9752c
+
+Script_iffalse: ; 0x9752c
+; script command 0x8
+; parameters:
+; pointer (ScriptPointerLabelParam)
+
+ ld a, [$c2dd]
+ and a
+ jp nz, $7596
+ jp Script_2jump
+; 0x97536
+
+Script_iftrue: ; 0x97536
+; script command 0x9
+; parameters:
+; pointer (ScriptPointerLabelParam)
+
+ ld a, [$c2dd]
+ and a
+ jp nz, Script_2jump
+ jp $7596
+; 0x97540
+
+Script_if_equal: ; 0x97540
+; script command 0x6
+; parameters:
+; byte (SingleByteParam)
+; pointer (ScriptPointerLabelParam)
+
+ call GetScriptByte
+ ld hl, $c2dd
+ cp [hl]
+ jr z, Script_2jump ; 0x97547 $b5
+ jr Unknown_97596 ; 0x97549 $4b
+; 0x9754b
+
+Script_if_not_equal: ; 0x9754b
+; script command 0x7
+; parameters:
+; byte (SingleByteParam)
+; pointer (ScriptPointerLabelParam)
+
+ call GetScriptByte
+ ld hl, $c2dd
+ cp [hl]
+ jr nz, Script_2jump ; 0x97552 $aa
+ jr Unknown_97596 ; 0x97554 $40
+; 0x97556
+
+Script_if_less_than: ; 0x97556
+; script command 0xa
+; parameters:
+; byte (SingleByteParam)
+; pointer (ScriptPointerLabelParam)
+
+ ld a, [$c2dd]
+ ld b, a
+ call GetScriptByte
+ cp b
+ jr c, Script_2jump ; 0x9755e $9e
+ jr Unknown_97596 ; 0x97560 $34
+; 0x97562
+
+Script_if_greater_than: ; 0x97562
+; script command 0xb
+; parameters:
+; byte (SingleByteParam)
+; pointer (ScriptPointerLabelParam)
+
+ call GetScriptByte
+ ld b, a
+ ld a, [$c2dd]
+ cp b
+ jr c, Script_2jump ; 0x9756a $92
+ jr Unknown_97596 ; 0x9756c $28
+; 0x9756e
+
+Script_jumpstd: ; 0x9756e
+; script command 0xc
+; parameters:
+; predefined_script (MultiByteParam)
+
+ call $757b
+ jr ScriptJump ; 0x97571 $2a
+; 0x97573
+
+Script_callstd: ; 0x97573
+; script command 0xd
+; parameters:
+; predefined_script (MultiByteParam)
+
+ call $757b
+ ld d, h
+ ld e, l
+ jp $74cb
+; 0x9757b
+
+Unknown_0x9757b: ; 0x9757b
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ ld hl, $4000
+ add hl, de
+ add hl, de
+ add hl, de
+ ld a, $2f
+ call GetFarByte
+ ld b, a
+ inc hl
+ ld a, $2f
+ call GetFarHalfword
+ ret
+; 0x97596
+
+Unknown_97596: ; 0x97596
+ call GetScriptByte
+ call GetScriptByte
+ ret
+; 0x9759d
+
+ScriptJump: ; 0x9759d
+ ld a, b
+ ld [ScriptBank], a
+ ld a, l
+ ld [ScriptPos], a
+ ld a, h
+ ld [ScriptPos + 1], a
+ ret
+; 0x975aa
+
+Script_priorityjump: ; 0x975aa
+; script command 0x8d
+; parameters:
+; pointer (ScriptPointerLabelParam)
+
+ ld a, [ScriptBank]
+ ld [$d44e], a
+ call GetScriptByte
+ ld [$d44f], a
+ call GetScriptByte
+ ld [$d450], a
+ ld hl, $d434
+ set 3, [hl]
+ ret
+; 0x975c2
+
+Script_checktriggers: ; 0x975c2
+; script command 0x13
+
+ call $211b
+ jr z, .asm_975cb ; 0x975c5 $4
+ ld [$c2dd], a
+ ret
+.asm_975cb
+ ld a, $ff
+ ld [$c2dd], a
+ ret
+; 0x975d1
+
+Script_checkmaptriggers: ; 0x975d1
+; script command 0x11
+; parameters:
+; map_group (SingleByteParam)
+; map_id (SingleByteParam)
+
+ call GetScriptByte
+ ld b, a
+ call GetScriptByte
+ ld c, a
+ call $2147
+ ld a, d
+ or e
+ jr z, .asm_975e5 ; 0x975de $5
+ ld a, [de]
+ ld [$c2dd], a
+ ret
+.asm_975e5
+ ld a, $ff
+ ld [$c2dd], a
+ ret
+; 0x975eb
+
+Script_dotrigger: ; 0x975eb
+; script command 0x14
+; parameters:
+; trigger_id (SingleByteParam)
+
+ ld a, [$dcb5]
+ ld b, a
+ ld a, [$dcb6]
+ ld c, a
+ jr Unknown_975fd ; 0x975f3 $8
+; 0x975f5
+
+Script_domaptrigger: ; 0x975f5
+; script command 0x12
+; parameters:
+; map_group (MapGroupParam)
+; map_id (MapIdParam)
+; trigger_id (SingleByteParam)
+
+ call GetScriptByte
+ ld b, a
+ call GetScriptByte
+ ld c, a
+ ; fallthrough
+
+Unknown_975fd: ; 0x975fd
+ call $2147
+ ld a, d
+ or e
+ jr z, .asm_97608 ; 0x97602 $4
+ call GetScriptByte
+ ld [de], a
+.asm_97608
+ ret
+; 0x97609
+
+Script_copybytetovar: ; 0x97609
+; script command 0x19
+; parameters:
+; address (RAMAddressParam)
+
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ ld a, [hl]
+ ld [$c2dd], a
+ ret
+; 0x97616
+
+Script_copyvartobyte: ; 0x97616
+; script command 0x1a
+; parameters:
+; address (RAMAddressParam)
+
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ ld a, [$c2dd]
+ ld [hl], a
+ ret
+; 0x97623
+
+Script_loadvar: ; 0x97623
+; script command 0x1b
+; parameters:
+; address (RAMAddressParam)
+; value (SingleByteParam)
+
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ call GetScriptByte
+ ld [hl], a
+ ret
+; 0x97630
+
+Script_writebyte: ; 0x97630
+; script command 0x15
+; parameters:
+; value (SingleByteParam)
+
+ call GetScriptByte
+ ld [$c2dd], a
+ ret
+; 0x97637
+
+Script_addvar: ; 0x97637
+; script command 0x16
+; parameters:
+; value (SingleByteParam)
+
+ call GetScriptByte
+ ld hl, $c2dd
+ add [hl]
+ ld [hl], a
+ ret
+; 0x97640
+
+Script_random: ; 0x97640
+; script command 0x17
+; parameters:
+; input (SingleByteParam)
+
+ call GetScriptByte
+ ld [$c2dd], a
+ and a
+ ret z
+ ld c, a
+ call $7673
+ and a
+ jr z, .asm_9765f ; 0x9764d $10
+ ld b, a
+ xor a
+ sub b
+ ld b, a
+.asm_97653
+ push bc
+ call $2f8c
+ pop bc
+ ld a, [$ffe1]
+ cp b
+ jr nc, .asm_97653 ; 0x9765b $f6
+ jr .asm_97666 ; 0x9765d $7
+.asm_9765f
+ push bc
+ call $2f8c
+ pop bc
+ ld a, [$ffe1]
+.asm_97666
+ push af
+ ld a, [$c2dd]
+ ld c, a
+ pop af
+ call $3110
+ ld [$c2dd], a
+ ret
+; 0x97673
+
+Unknown_0x97673: ; 0x97673
+ xor a
+ ld b, a
+ sub c
+.asm_97676
+ inc b
+ sub c
+ jr nc, .asm_97676 ; 0x97678 $fc
+ dec b
+ add c
+ ret
+; 0x9767d
+
+Script_checkcode: ; 0x9767d
+; script command 0x1c
+; parameters:
+; variable_id (SingleByteParam)
+
+ call GetScriptByte
+ call $769e
+ ld a, [de]
+ ld [$c2dd], a
+ ret
+; 0x97688
+
+Script_writevarcode: ; 0x97688
+; script command 0x1d
+; parameters:
+; variable_id (SingleByteParam)
+
+ call GetScriptByte
+ call $769e
+ ld a, [$c2dd]
+ ld [de], a
+ ret
+; 0x97693
+
+Script_writecode: ; 0x97693
+; script command 0x1e
+; parameters:
+; variable_id (SingleByteParam)
+; value (SingleByteParam)
+
+ call GetScriptByte
+ call $769e
+ call GetScriptByte
+ ld [de], a
+ ret
+; 0x9769e
+
+Unknown_0x9769e: ; 0x9769e
+ ld c, a
+ ld a, $20
+ ld hl, $4648
+ rst $8
+ ret
+; 0x976a6
+
+Script_checkver: ; 0x976a6
+; script command 0x18
+
+ ld a, [$76ad]
+ ld [$c2dd], a
+ ret
+; 0x976ad
+
+INCBIN "baserom.gbc",$976ad,$976ae - $976ad
+
+Script_pokenamemem: ; 0x976ae
+; script command 0x40
+; parameters:
+; pokemon (PokemonParam)
+; memory (SingleByteParam)
+
+ call GetScriptByte
+ and a
+ jr nz, .asm_976b7 ; 0x976b2 $3
+ ld a, [$c2dd]
+.asm_976b7
+ ld [$d265], a
+ call $343b
+ ld de, $d073
+
+Unknown_976c0: ; 0x976c0
+ call GetScriptByte
+ cp $3
+ jr c, .asm_976c8 ; 0x976c5 $1
+ xor a
+.asm_976c8
+ ld hl, $d099
+ ld bc, $0013
+ call AddNTimes
+ call CopyName2
+ ret
+; 0x976d5
+
+Script_itemtotext: ; 0x976d5
+; script command 0x41
+; parameters:
+; item (ItemLabelByte)
+; memory (SingleByteParam)
+
+ call GetScriptByte
+ and a
+ jr nz, .asm_976de ; 0x976d9 $3
+ ld a, [$c2dd]
+.asm_976de
+ ld [$d265], a
+ call GetItemName
+ ld de, $d073
+ jr Unknown_976c0 ; 0x976e7 $d7
+; 0x976e9
+
+Script_mapnametotext: ; 0x976e9
+; script command 0x42
+; parameters:
+; memory (SingleByteParam)
+
+ ld a, [$dcb5]
+ ld b, a
+ ld a, [$dcb6]
+ ld c, a
+ call GetWorldMapLocation
+
+Unknown_976f4: ; 0x976f4
+ ld e, a
+ ld a, $72
+ ld hl, $68a5
+ rst $8
+ ld de, $d073
+ jp $76c0
+; 0x97701
+
+Script_displaylocation: ; 0x97701
+; script command 0xa5
+; parameters:
+; id (SingleByteParam)
+
+ call GetScriptByte
+ jr Unknown_976f4 ; 0x97704 $ee
+; 0x97706
+
+Script_trainertotext: ; 0x97706
+; script command 0x43
+; parameters:
+; trainer_id (TrainerGroupParam)
+; trainer_group (TrainerIdParam)
+; memory (SingleByteParam)
+
+ call GetScriptByte
+ ld c, a
+ call GetScriptByte
+ ld b, a
+ ld a, $e
+ ld hl, $594c
+ rst $8
+ jr Unknown_976c0 ; 0x97714 $aa
+; 0x97716
+
+Script_unknown0xa7: ; 0x97716
+; script command 0xa7
+
+ call GetScriptByte
+ ld [$cf61], a
+
+Unknown_9771c: ; 0x9771c
+ call GetScriptByte
+ ld [$cf60], a
+ call GetName
+ ld de, $d073
+ jp $76c0
+; 0x9772b
+
+Script_unknown0xa6: ; 0x9772b
+; script command 0xa6
+
+ ld a, $7
+ ld [$cf61], a
+ jr Unknown_9771c ; 0x97730 $ea
+; 0x97732
+
+Script_readmoney: ; 0x97732
+; script command 0x3d
+; parameters:
+; account (SingleByteParam)
+; memory (SingleByteParam)
+
+ call $7771
+ call $7861
+ ld hl, $d073
+ ld bc, $4306
+ call $3198
+ ld de, $d073
+ jp $76c0
+; 0x97747
+
+Script_readcoins: ; 0x97747
+; script command 0x3e
+; parameters:
+; memory (SingleByteParam)
+
+ call $7771
+ ld hl, $d073
+ ld de, $d855
+ ld bc, $4206
+ call $3198
+ ld de, $d073
+ jp $76c0
+; 0x9775c
+
+Script_RAM2MEM: ; 0x9775c
+; script command 0x3f
+; parameters:
+; memory (SingleByteParam)
+
+ call $7771
+ ld de, $c2dd
+ ld hl, $d073
+ ld bc, $4103
+ call $3198
+ ld de, $d073
+ jp $76c0
+; 0x97771
+
+Unknown_0x97771: ; 0x97771
+ ld hl, $d073
+ ld bc, $000b
+ ld a, $50
+ call ByteFill
+ ret
+; 0x9777d
+
+Script_stringtotext: ; 0x9777d
+; script command 0x44
+; parameters:
+; text_pointer (EncodedTextLabelParam)
+; memory (SingleByteParam)
+
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ ld a, [ScriptBank]
+ ld hl, $30d6
+ rst $8
+ ld de, $d086
+ jp $76c0
+; 0x97792
+
+Script_givepokeitem: ; 0x97792
+; script command 0x2f
+; parameters:
+; pointer (PointerParamToItemAndLetter)
+
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ ld a, [ScriptBank]
+ call GetFarByte
+ ld b, a
+ push bc
+ inc hl
+ ld bc, $0020
+ ld de, $d002
+ ld a, [ScriptBank]
+ call FarCopyBytes
+ pop bc
+ ld a, $11
+ ld hl, $46cc
+ rst $8
+ ret
+; 0x977b7
+
+Script_checkpokeitem: ; 0x977b7
+; script command 0x30
+; parameters:
+; pointer (PointerParamToItemAndLetter)
+
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ ld a, [ScriptBank]
+ ld b, a
+ ld a, $11
+ ld hl, $4654
+ rst $8
+ ret
+; 0x977ca
+
+Script_giveitem: ; 0x977ca
+; script command 0x1f
+; parameters:
+; item (ItemLabelByte)
+; quantity (SingleByteParam)
+
+ call GetScriptByte
+ cp $ff
+ jr nz, .asm_977d4 ; 0x977cf $3
+ ld a, [$c2dd]
+.asm_977d4
+ ld [$d106], a
+ call GetScriptByte
+ ld [$d10c], a
+ ld hl, $d892
+ call $2f66
+ jr nc, .asm_977eb ; 0x977e3 $6
+ ld a, $1
+ ld [$c2dd], a
+ ret
+.asm_977eb
+ xor a
+ ld [$c2dd], a
+ ret
+; 0x977f0
+
+Script_takeitem: ; 0x977f0
+; script command 0x20
+; parameters:
+; item (ItemLabelByte)
+; quantity (DecimalParam)
+
+ xor a
+ ld [$c2dd], a
+ call GetScriptByte
+ ld [$d106], a
+ call GetScriptByte
+ ld [$d10c], a
+ ld a, $ff
+ ld [$d107], a
+ ld hl, $d892
+ call $2f53
+ ret nc
+ ld a, $1
+ ld [$c2dd], a
+ ret
+; 0x97812
+
+Script_checkitem: ; 0x97812
+; script command 0x21
+; parameters:
+; item (ItemLabelByte)
+
+ xor a
+ ld [$c2dd], a
+ call GetScriptByte
+ ld [$d106], a
+ ld hl, $d892
+ call $2f79
+ ret nc
+ ld a, $1
+ ld [$c2dd], a
+ ret
+; 0x97829
+
+Script_givemoney: ; 0x97829
+; script command 0x22
+; parameters:
+; account (SingleByteParam)
+; money (MoneyByteParam)
+
+ call $7861
+ call $786d
+ ld a, $5
+ ld hl, $5fd7
+ rst $8
+ ret
+; 0x97836
+
+Script_takemoney: ; 0x97836
+; script command 0x23
+; parameters:
+; account (SingleByteParam)
+; money (MoneyByteParam)
+
+ call $7861
+ call $786d
+ ld a, $5
+ ld hl, $5ffa
+ rst $8
+ ret
+; 0x97843
+
+Script_checkmoney: ; 0x97843
+; script command 0x24
+; parameters:
+; account (SingleByteParam)
+; money (MoneyByteParam)
+
+ call $7861
+ call $786d
+ ld a, $5
+ ld hl, $600b
+ rst $8
+; 0x9784f
+
+Unknown_9784f: ; 0x9784f
+ jr c, .asm_9785b ; 0x9784f $a
+ jr z, .asm_97857 ; 0x97851 $4
+ ld a, $0
+ jr .asm_9785d ; 0x97855 $6
+.asm_97857
+ ld a, $1
+ jr .asm_9785d ; 0x97859 $2
+.asm_9785b
+ ld a, $2
+.asm_9785d
+ ld [$c2dd], a
+ ret
+; 0x97861
+
+Unknown_0x97861: ; 0x97861
+ call GetScriptByte
+ and a
+ ld de, $d84e
+ ret z
+ ld de, $d851
+ ret
+; 0x9786d
+
+Unknown_0x9786d: ; 0x9786d
+ ld bc, $ffc3
+ push bc
+ call GetScriptByte
+ ld [bc], a
+ inc bc
+ call GetScriptByte
+ ld [bc], a
+ inc bc
+ call GetScriptByte
+ ld [bc], a
+ pop bc
+ ret
+; 0x97881
+
+Script_givecoins: ; 0x97881
+; script command 0x25
+; parameters:
+; coins (CoinByteParam)
+
+ call $78a0
+ ld a, $5
+ ld hl, $606f
+ rst $8
+ ret
+; 0x9788b
+
+Script_takecoins: ; 0x9788b
+; script command 0x26
+; parameters:
+; coins (CoinByteParam)
+
+ call $78a0
+ ld a, $5
+ ld hl, $608f
+ rst $8
+ ret
+; 0x97895
+
+Script_checkcoins: ; 0x97895
+; script command 0x27
+; parameters:
+; coins (CoinByteParam)
+
+ call $78a0
+ ld a, $5
+ ld hl, $60a1
+ rst $8
+ jr Unknown_9784f ; 0x9789e $af
+ call GetScriptByte
+ ld [$ffc4], a
+ call GetScriptByte
+ ld [$ffc3], a
+ ld bc, $ffc3
+ ret
+; 0x978ae
+
+Script_checktime: ; 0x978ae
+; script command 0x2b
+; parameters:
+; time (SingleByteParam)
+
+ xor a
+ ld [$c2dd], a
+ ld a, $3
+ ld hl, $4000
+ rst $8
+ call GetScriptByte
+ and c
+ ret z
+ ld a, $1
+ ld [$c2dd], a
+ ret
+; 0x978c3
+
+Script_checkpoke: ; 0x978c3
+; script command 0x2c
+; parameters:
+; pkmn (PokemonParam)
+
+ xor a
+ ld [$c2dd], a
+ call GetScriptByte
+ ld hl, $dcd8
+ ld de, $0001
+ call IsInArray
+ ret nc
+ ld a, $1
+ ld [$c2dd], a
+ ret
+; 0x978da
+
+Script_addcellnum: ; 0x978da
+; script command 0x28
+; parameters:
+; person (SingleByteParam)
+
+ xor a
+ ld [$c2dd], a
+ call GetScriptByte
+ ld c, a
+ ld a, $24
+ ld hl, $4000
+ rst $8
+ ret nc
+ ld a, $1
+ ld [$c2dd], a
+ ret
+; 0x978ef
+
+Script_delcellnum: ; 0x978ef
+; script command 0x29
+; parameters:
+; person (SingleByteParam)
+
+ xor a
+ ld [$c2dd], a
+ call GetScriptByte
+ ld c, a
+ ld a, $24
+ ld hl, $400f
+ rst $8
+ ret nc
+ ld a, $1
+ ld [$c2dd], a
+ ret
+; 0x97904
+
+Script_checkcellnum: ; 0x97904
+; script command 0x2a
+; parameters:
+; person (SingleByteParam)
+
+ xor a
+ ld [$c2dd], a
+ call GetScriptByte
+ ld c, a
+ ld a, $24
+ ld hl, $4019
+ rst $8
+ ret nc
+ ld a, $1
+ ld [$c2dd], a
+ ret
+; 0x97919
+
+Script_specialphonecall: ; 0x97919
+; script command 0x9c
+; parameters:
+; call_id (MultiByteParam)
+
+ call GetScriptByte
+ ld [$dc31], a
+ call GetScriptByte
+ ld [$dc32], a
+ ret
+; 0x97926
+
+Script_checkphonecall: ; 0x97926
+; script command 0x9d
+
+ ld a, [$dc31]
+ and a
+ jr z, .asm_9792e ; 0x9792a $2
+ ld a, $1
+.asm_9792e
+ ld [$c2dd], a
+ ret
+; 0x97932
+
+Script_givepoke: ; 0x97932
+; script command 0x2d
+; parameters:
+; pokemon (PokemonParam)
+; level (DecimalParam)
+; item (ItemLabelByte)
+; trainer (DecimalParam)
+; trainer_name_pointer (MultiByteParam)
+; pkmn_nickname (MultiByteParam)
+
+ call GetScriptByte
+ ld [$d108], a
+ call GetScriptByte
+ ld [$d143], a
+ call GetScriptByte
+ ld [$d106], a
+ call GetScriptByte
+ and a
+ ld b, a
+ jr z, .asm_9795d ; 0x97949 $12
+ ld hl, ScriptPos
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ call GetScriptByte
+ call GetScriptByte
+ call GetScriptByte
+ call GetScriptByte
+.asm_9795d
+ ld a, $3
+ ld hl, $6277
+ rst $8
+ ld a, b
+ ld [$c2dd], a
+ ret
+; 0x97968
+
+Script_giveegg: ; 0x97968
+; script command 0x2e
+; parameters:
+; pkmn (PokemonParam)
+; level (DecimalParam)
+
+ xor a
+ ld [$c2dd], a
+ ld [$cf5f], a
+ call GetScriptByte
+ ld [$d108], a
+ call GetScriptByte
+ ld [$d143], a
+ ld a, $3
+ ld hl, $5f8c
+ rst $8
+ ret nc
+ ld a, $2
+ ld [$c2dd], a
+ ret
+; 0x97988
+
+Script_setbit1: ; 0x97988
+; script command 0x33
+; parameters:
+; bit_number (MultiByteParam)
+
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ ld b, $1
+ call BitTable1Func
+ ret
+; 0x97996
+
+Script_clearbit1: ; 0x97996
+; script command 0x32
+; parameters:
+; bit_number (MultiByteParam)
+
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ ld b, $0
+ call BitTable1Func
+ ret
+; 0x979a4
+
+Script_checkbit1: ; 0x979a4
+; script command 0x31
+; parameters:
+; bit_number (MultiByteParam)
+
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ ld b, $2
+ call BitTable1Func
+ ld a, c
+ and a
+ jr z, .asm_979b7 ; 0x979b3 $2
+ ld a, $1
+.asm_979b7
+ ld [$c2dd], a
+ ret
+; 0x979bb
+
+Script_setbit2: ; 0x979bb
+; script command 0x36
+; parameters:
+; bit_number (MultiByteParam)
+
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ ld b, $1
+ call $79ee
+ ret
+; 0x979c9
+
+Script_clearbit2: ; 0x979c9
+; script command 0x35
+; parameters:
+; bit_number (MultiByteParam)
+
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ ld b, $0
+ call $79ee
+ ret
+; 0x979d7
+
+Script_checkbit2: ; 0x979d7
+; script command 0x34
+; parameters:
+; bit_number (MultiByteParam)
+
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ ld b, $2
+ call $79ee
+ ld a, c
+ and a
+ jr z, .asm_979ea ; 0x979e6 $2
+ ld a, $1
+.asm_979ea
+ ld [$c2dd], a
+ ret
+; 0x979ee
+
+Unknown_0x979ee: ; 0x979ee
+ ld a, $20
+ ld hl, $4430
+ rst $8
+ ret
+; 0x979f5
+
+Script_wildon: ; 0x979f5
+; script command 0x38
+
+ ld hl, $d84c
+ set 5, [hl]
+ ret
+; 0x979fb
+
+Script_wildoff: ; 0x979fb
+; script command 0x37
+
+ ld hl, $d84c
+ res 5, [hl]
+ ret
+; 0x97a01
+
+Script_xycompare: ; 0x97a01
+; script command 0x39
+; parameters:
+; pointer (MultiByteParam)
+
+ call GetScriptByte
+ ld [$d453], a
+ call GetScriptByte
+ ld [$d454], a
+ ret
+; 0x97a0e
+
+Script_warpfacing: ; 0x97a0e
+; script command 0xa3
+; parameters:
+; facing (SingleByteParam)
+; map_group (MapGroupParam)
+; map_id (MapIdParam)
+; x (SingleByteParam)
+; y (SingleByteParam)
+
+ call GetScriptByte
+ and $3
+ ld c, a
+ ld a, [$d45b]
+ set 5, a
+ or c
+ ld [$d45b], a
+; 0x97a1d
+
+Script_warp: ; 0x97a1d
+; script command 0x3c
+; parameters:
+; map_group (MapGroupParam)
+; map_id (MapIdParam)
+; x (SingleByteParam)
+; y (SingleByteParam)
+
+ call GetScriptByte
+ and a
+ jr z, .asm_97a4a ; 0x97a21 $27
+ ld [$dcb5], a
+ call GetScriptByte
+ ld [$dcb6], a
+ call GetScriptByte
+ ld [$dcb8], a
+ call GetScriptByte
+ ld [$dcb7], a
+ ld a, $ff
+ ld [$d001], a
+ ld a, $f1
+ ld [$ff9f], a
+ ld a, $1
+ call $261b
+ call Unknown_0x96e11
+ ret
+.asm_97a4a
+ call GetScriptByte
+ call GetScriptByte
+ call GetScriptByte
+ ld a, $ff
+ ld [$d001], a
+ ld a, $fb
+ ld [$ff9f], a
+ ld a, $1
+ call $261b
+ call Unknown_0x96e11
+ ret
+; 0x97a65
+
+Script_warpmod: ; 0x97a65
+; script command 0x3a
+; parameters:
+; warp_id (SingleByteParam)
+; map_group (MapGroupParam)
+; map_id (MapIdParam)
+
+ call GetScriptByte
+ ld [$dcac], a
+ call GetScriptByte
+ ld [$dcad], a
+ call GetScriptByte
+ ld [$dcae], a
+ ret
+; 0x97a78
+
+Script_blackoutmod: ; 0x97a78
+; script command 0x3b
+; parameters:
+; map_group (MapGroupParam)
+; map_id (MapIdParam)
+
+ call GetScriptByte
+ ld [$dcb2], a
+ call GetScriptByte
+ ld [$dcb3], a
+ ret
+; 0x97a85
+
+Script_reloadmapmusic: ; 0x97a85
+; script command 0x83
+
+ ld a, $1
+ ld [$c2c1], a
+ ret
+; 0x97a8b
+
+Script_writecmdqueue: ; 0x97a8b
+; script command 0x7d
+; parameters:
+; queue_pointer (MultiByteParam)
+
+ call GetScriptByte
+ ld e, a
+ call GetScriptByte
+ ld d, a
+ ld a, [ScriptBank]
+ ld b, a
+ ld a, $25
+ ld hl, $7e31
+ rst $8
+ ret
+; 0x97a9e
+
+Script_delcmdqueue: ; 0x97a9e
+; script command 0x7e
+; parameters:
+; byte (SingleByteParam)
+
+ xor a
+ ld [$c2dd], a
+ call GetScriptByte
+ ld b, a
+ ld a, $25
+ ld hl, $7e5c
+ rst $8
+ ret c
+ ld a, $1
+ ld [$c2dd], a
+ ret
+; 0x97ab3
+
+Script_changemap: ; 0x97ab3
+; script command 0x79
+; parameters:
+; map_data_pointer (MapDataPointerParam)
+
+ call GetScriptByte
+ ld [$d1a0], a
+ call GetScriptByte
+ ld [$d1a1], a
+ call GetScriptByte
+ ld [$d1a2], a
+ call $24e4
+ call $2879
+ ret
+; 0x97acc
+
+Script_changeblock: ; 0x97acc
+; script command 0x7a
+; parameters:
+; x (SingleByteParam)
+; y (SingleByteParam)
+; block (SingleByteParam)
+
+ call GetScriptByte
+ add $4
+ ld d, a
+ call GetScriptByte
+ add $4
+ ld e, a
+ call $2a66
+ call GetScriptByte
+ ld [hl], a
+ call $2879
+ ret
+; 0x97ae3
+
+Script_reloadmappart: ; 0x97ae3
+; script command 0x7c
+
+ xor a
+ ld [$ffd4], a
+ call $2173
+ call $2914
+ ld a, $41
+ ld hl, $4061
+ rst $8
+ call $1ad2
+ ret
+; 0x97af6
+
+Script_warpcheck: ; 0x97af6
+; script command 0x8e
+
+ call $224a
+ ret nc
+ ld a, $25
+ ld hl, $66d0
+ rst $8
+ ret
+; 0x97b01
+
+Unknown_0x97b01: ; 0x97b01
+ ld a, $25
+ ld hl, $66d0
+ rst $8
+ ret
+; 0x97b08
+
+Script_newloadmap: ; 0x97b08
+; script command 0x8a
+; parameters:
+; which_method (SingleByteParam)
+
+ call GetScriptByte
+ ld [$ff9f], a
+ ld a, $1
+ call $261b
+ call Unknown_0x96e11
+ ret
+; 0x97b16
+
+Script_reloadandreturn: ; 0x97b16
+; script command 0x92
+
+ call $7b08
+ jp $7b74
+; 0x97b1c
+
+Script_loadfont: ; 0x97b1c
+; script command 0x47
+
+ call $2e08
+ ret
+; 0x97b20
+
+Script_refreshscreen: ; 0x97b20
+; script command 0x48
+; parameters:
+; dummy (SingleByteParam)
+
+ call $2dba
+ call GetScriptByte
+ ret
+; 0x97b27
+
+Script_loadbytec1ce: ; 0x97b27
+; script command 0x4a
+; parameters:
+; byte (SingleByteParam)
+
+ call GetScriptByte
+ ld [$c2cf], a
+ ret
+; 0x97b2e
+
+INCBIN "baserom.gbc",$97b2e,$97b2f - $97b2e
+
+Script_loadmovesprites: ; 0x97b2f
+; script command 0x49
+
+ call $2e20
+ call $2dcf
+ ret
+; 0x97b36
+
+Script_passtoengine: ; 0x97b36
+; script command 0x89
+; parameters:
+; data_pointer (PointerLabelBeforeBank)
+
+ call GetScriptByte
+ push af
+ call GetScriptByte
+ ld l, a
+ call GetScriptByte
+ ld h, a
+ pop af
+ call StartAutoInput
+ ret
+; 0x97b47
+
+Script_pause: ; 0x97b47
+; script command 0x8b
+; parameters:
+; length (DecimalParam)
+
+ call GetScriptByte
+ and a
+ jr z, .asm_97b50 ; 0x97b4b $3
+ ld [$d44d], a
+.asm_97b50
+ ld c, $2
+ call DelayFrames
+ ld hl, $d44d
+ dec [hl]
+ jr nz, .asm_97b50 ; 0x97b59 $f5
+ ret
+; 0x97b5c
+
+Script_deactivatefacing: ; 0x97b5c
+; script command 0x8c
+; parameters:
+; time (SingleByteParam)
+
+ call GetScriptByte
+ and a
+ jr z, .asm_97b65 ; 0x97b60 $3
+ ld [$d44d], a
+.asm_97b65
+ ld a, $3
+ ld [$d437], a
+ call Unknown_0x96e11
+ ret
+; 0x97b6e
+
+Script_ptpriorityjump: ; 0x97b6e
+; script command 0x8f
+; parameters:
+; pointer (ScriptPointerLabelParam)
+
+ call Unknown_0x96e11
+ jp Script_2jump
+; 0x97b74
+
+Script_end: ; 0x97b74
+; script command 0x91
+
+ call $7b9a
+ jr c, .asm_97b7a ; 0x97b77 $1
+ ret
+.asm_97b7a
+ xor a
+ ld [$d438], a
+ ld a, $0
+ ld [$d437], a
+ ld hl, $d434
+ res 0, [hl]
+ call Unknown_0x96e11
+ ret
+; 0x97b8c
+
+Script_return: ; 0x97b8c
+; script command 0x90
+
+ call $7b9a
+ jr c, .asm_97b91 ; 0x97b8f $0
+.asm_97b91
+ ld hl, $d434
+ res 0, [hl]
+ call Unknown_0x96e11
+ ret
+; 0x97b9a
+
+Unknown_0x97b9a: ; 0x97b9a
+ ld hl, $d43c
+ ld a, [hl]
+ and a
+ jr z, .asm_97bbe ; 0x97b9f $1d
+ dec [hl]
+ ld e, [hl]
+ ld d, $0
+ ld hl, $d43d
+ add hl, de
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld b, a
+ and $7f
+ ld [ScriptBank], a
+ ld a, [hli]
+ ld e, a
+ ld [ScriptPos], a
+ ld a, [hl]
+ ld d, a
+ ld [ScriptPos + 1], a
+ and a
+ ret
+.asm_97bbe
+ scf
+ ret
+; 0x97bc0
+
+Script_resetfuncs: ; 0x97bc0
+; script command 0x93
+
+ xor a
+ ld [$d43c], a
+ ld [$d438], a
+ ld a, $0
+ ld [$d437], a
+ ld hl, $d434
+ res 0, [hl]
+ call Unknown_0x96e11
+ ret
+; 0x97bd5
+
+Script_halloffame: ; 0x97bd5
+; script command 0xa1
+
+ ld hl, $cfbc
+ res 0, [hl]
+ ld a, BANK(HallOfFame1)
+ ld hl, HallOfFame1
+ rst $8
+ ld a, BANK(HallOfFame2)
+ ld hl, HallOfFame2
+ rst $8
+ ld a, BANK(HallOfFame3)
+ ld hl, HallOfFame3
+ rst $8
+ ld hl, $cfbc
+ set 0, [hl]
+ jr DisplayCredits
+; 0x97bf3
+
+Script_credits: ; 0x97bf3
+; script command 0xa2
+
+ ld a, $21
+ ld hl, $6455
+ rst $8
+ ; fallthrough
+DisplayCredits:
+ call $7bc0
+ ld a, $3
+ call $261b
+ call Unknown_0x96e11
+ ret
+; 0x97c05
+
+Script_unknown0xa8: ; 0x97c05
+; script command 0xa8
+; parameters:
+; unknown (SingleByteParam)
+
+ push bc
+ call GetScriptByte
+.asm_97c09
+ push af
+ ld c, $6
+ call DelayFrames
+ pop af
+ dec a
+ jr nz, .asm_97c09 ; 0x97c11 $f6
+ pop bc
+ ret
+; 0x97c15
+
+Script_unknown0xa9: ; 0x97c15
+; script command 0xa9
+
+ ld a, $13
+ ld hl, $4ffe
+ rst $8
+ ld a, c
+ ld [$c2dd], a
+ ret
+; 0x97c20
--- /dev/null
+++ b/engine/vblank.asm
@@ -1,0 +1,539 @@
+; VBlank is the interrupt responsible for updating VRAM.
+
+; In Pokemon Crystal, VBlank has been hijacked to act as the
+; main loop. After time-sensitive graphics operations have been
+; performed, joypad input and sound functions are executed.
+
+; This prevents the display and audio output from lagging.
+
+ push af
+ push bc
+ push de
+ push hl
+
+; get vblank type
+ ld a, [$ff9e]
+ and $7
+
+; get fn pointer
+ ld e, a
+ ld d, $0
+ ld hl, .VBlanks
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+
+; down to business
+ call JpHl
+
+; since this is called once per frame
+ call GameTimer
+
+ pop hl
+ pop de
+ pop bc
+ pop af
+ reti
+; 2a1
+
+.VBlanks ; 2a1
+ dw VBlank0 ; 0
+ dw VBlank1 ; 1
+ dw VBlank2 ; 2
+ dw VBlank3 ; 3
+ dw VBlank4 ; 4
+ dw VBlank5 ; 5
+ dw VBlank6 ; 6
+ dw VBlank0 ; 7
+; 2b1
+
+
+VBlank0: ; 2b1
+; normal operation
+
+; rng
+; scx, scy, wy, wx
+; bg map buffer
+; palettes
+; dma transfer
+; bg map
+; tiles
+; oam
+; joypad
+; sound
+
+; inc frame counter
+ ld hl, $ff9b
+ inc [hl]
+
+; advance rng
+ ld a, [rDIV]
+ ld b, a
+ ld a, [$ffe1]
+ adc b
+ ld [$ffe1], a
+
+ ld a, [rDIV]
+ ld b, a
+ ld a, [$ffe2]
+ sbc b
+ ld [$ffe2], a
+
+; save bank
+ ld a, [$ff9d] ; current bank
+ ld [$ff8a], a
+
+; scroll x
+ ld a, [$ffcf]
+ ld [rSCX], a
+; scroll y
+ ld a, [$ffd0]
+ ld [rSCY], a
+; window y
+ ld a, [$ffd2]
+ ld [rWY], a
+; window x + 7
+ ld a, [$ffd1]
+ ld [rWX], a
+
+; some time management is in order
+; only have time for one of these during vblank
+
+; bg map buffer has priority
+ call UpdateBGMapBuffer
+ jr c, .doneframeaction
+
+; then pals
+ call UpdatePalsIfCGB
+ jr c, .doneframeaction
+
+; dma transfer
+ call DMATransfer
+ jr c, .doneframeaction
+
+; bg map
+ call UpdateBGMap
+
+; these have their own timing checks
+ call SafeLoadTiles
+ call SafeLoadTiles2
+ call SafeTileAnimation
+
+.doneframeaction
+; oam update off?
+ ld a, [$ffd8]
+ and a
+ jr nz, .vblankoccurred
+
+; update oam by dma transfer
+ call hPushOAM
+; 403f:
+; ld a, $c4
+; ld [rDMA], a
+; ld a, $28
+; .loop
+; dec a
+; jr nz, .loop
+; ret
+
+
+; vblank-sensitive operations are done
+
+.vblankoccurred
+; tell other fns vblank happened
+ xor a
+ ld [VBlankOccurred], a
+
+; dec $cfb1 until 0
+ ld a, [$cfb1]
+ and a
+ jr z, .textdelay
+ dec a
+ ld [$cfb1], a
+
+.textdelay
+; dec text delay counter until 0
+ ld a, [TextDelayFrames]
+ and a
+ jr z, .joypad
+ dec a
+ ld [TextDelayFrames], a
+
+.joypad
+ call Joypad
+
+; update sound
+ ld a, BANK(UpdateSound)
+ rst Bankswitch ; bankswitch
+ call UpdateSound
+ ld a, [$ff8a]
+ rst Bankswitch ; restore bank
+
+;
+ ld a, [$ff98]
+ ld [$ffe3], a
+
+ ret
+; 325
+
+
+VBlank2: ; 325
+; sound only
+
+; save bank
+ ld a, [$ff9d]
+ ld [$ff8a], a
+
+; update sound
+ ld a, BANK(UpdateSound)
+ rst Bankswitch ; bankswitch
+ call UpdateSound
+
+; restore bank
+ ld a, [$ff8a]
+ rst Bankswitch
+
+; tell other fns vblank happened
+ xor a
+ ld [VBlankOccurred], a
+ ret
+; 337
+
+
+VBlank1: ; 337
+; scx, scy
+; palettes
+; bg map
+; tiles
+; oam
+; sound / lcd stat
+
+; save bank
+ ld a, [$ff9d]
+ ld [$ff8a], a
+
+; scroll x
+ ld a, [$ffcf]
+ ld [rSCX], a
+
+; scroll y
+ ld a, [$ffd0]
+ ld [rSCY], a
+
+; time-sensitive fns
+ call UpdatePals
+ jr c, .vblankoccurred
+
+; these have their own timing checks
+ call UpdateBGMap
+ call LoadTiles
+; update oam by dma transfer
+ call hPushOAM
+; 403f:
+; ld a, $c4
+; ld [rDMA], a
+; ld a, $28
+; .loop
+; dec a
+; jr nz, .loop
+; ret
+
+.vblankoccurred
+; tell other fns vblank happened
+ xor a
+ ld [VBlankOccurred], a
+
+; get requested ints
+ ld a, [rIF]
+ ld b, a
+; discard requested ints
+ xor a
+ ld [rIF], a
+; enable lcd stat
+ ld a, %10 ; lcd stat
+ ld [rIE], a
+; rerequest serial int if applicable (still disabled)
+; request lcd stat
+ ld a, b
+ and %1000 ; serial
+ or %10 ; lcd stat
+ ld [rIF], a
+
+ ei
+; update sound
+ ld a, BANK(UpdateSound)
+ rst Bankswitch ; bankswitch
+ call UpdateSound
+; restore bank
+ ld a, [$ff8a]
+ rst Bankswitch
+ di
+
+; get requested ints
+ ld a, [rIF]
+ ld b, a
+; discard requested ints
+ xor a
+ ld [rIF], a
+; enable ints besides joypad
+ ld a, %1111 ; serial timer lcdstat vblank
+ ld [rIE], a
+; rerequest ints
+ ld a, b
+ ld [rIF], a
+ ret
+; 37f
+
+
+UpdatePals: ; 37f
+; update pals for either dmg or cgb
+
+; check cgb
+ ld a, [$ffe6]
+ and a
+ jp nz, UpdateCGBPals
+
+; update gb pals
+ ld a, [$cfc7]
+ ld [rBGP], a
+
+ ld a, [$cfc8]
+ ld [rOBP0], a
+
+ ld a, [$cfc9]
+ ld [rOBP1], a
+
+ and a
+ ret
+; 396
+
+
+VBlank3: ; 396
+; scx, scy
+; palettes
+; bg map
+; tiles
+; oam
+; sound / lcd stat
+
+; save bank
+ ld a, [$ff9d]
+ ld [$ff8a], a
+
+; scroll x
+ ld a, [$ffcf]
+ ld [rSCX], a
+; scroll y
+ ld a, [$ffd0]
+ ld [rSCY], a
+
+; any pals to update?
+ ld a, [$ffe5]
+ and a
+ call nz, ForceUpdateCGBPals
+ jr c, .vblankoccurred
+; else
+ call UpdateBGMap
+ call LoadTiles
+
+; update oam by dma transfer
+ call hPushOAM
+; 403f:
+; ld a, $c4 ; Sprites / $100
+; ld [rDMA], a
+; ld a, $28
+; .loop
+; dec a
+; jr nz, .loop
+; ret
+
+.vblankoccurred
+; tell other fns vblank happened
+ xor a
+ ld [VBlankOccurred], a
+
+; save int flag
+ ld a, [rIF]
+ push af
+; reset ints
+ xor a
+ ld [rIF], a
+; force lcdstat int during sound update
+ ld a, %10 ; lcd stat
+ ld [rIE], a
+ ld [rIF], a
+
+ ei
+; update sound
+ ld a, BANK(UpdateSound)
+ rst Bankswitch ; bankswitch
+ call UpdateSound
+; restore bank
+ ld a, [$ff8a]
+ rst Bankswitch
+ di
+
+; request lcdstat
+ ld a, [rIF]
+ ld b, a
+; and any other ints
+ pop af
+ or b
+ ld b, a
+; reset ints
+ xor a
+ ld [rIF], a
+; enable ints besides joypad
+ ld a, %1111 ; serial timer lcdstat vblank
+ ld [rIE], a
+; request ints
+ ld a, b
+ ld [rIF], a
+ ret
+; 3df
+
+
+VBlank4: ; 3df
+; bg map
+; tiles
+; oam
+; joypad
+; serial
+; sound
+
+; save bank
+ ld a, [$ff9d]
+ ld [$ff8a], a
+
+ call UpdateBGMap
+ call SafeLoadTiles
+
+; update oam by dma transfer
+ call hPushOAM
+; 403f:
+; ld a, $c4
+; ld [rDMA], a
+; ld a, $28
+; .loop
+; dec a
+; jr nz, .loop
+; ret
+
+; update joypad
+ call Joypad
+
+; tell other fns vblank happened
+ xor a
+ ld [VBlankOccurred], a
+
+; handshake
+ call AskSerial
+
+; update sound
+ ld a, BANK(UpdateSound)
+ rst Bankswitch ; bankswitch
+ call UpdateSound
+; restore bank
+ ld a, [$ff8a]
+ rst Bankswitch
+ ret
+; 400
+
+
+VBlank5: ; 400
+; scx
+; palettes
+; bg map
+; tiles
+; joypad
+;
+
+; save bank
+ ld a, [$ff9d]
+ ld [$ff8a], a
+
+; scroll x
+ ld a, [$ffcf]
+ ld [rSCX], a
+
+; if we can update pals, skip this part
+ call UpdatePalsIfCGB
+ jr c, .vblankoccurred
+
+ call UpdateBGMap
+ call SafeLoadTiles
+
+.vblankoccurred
+; tell other fns vblank happened
+ xor a
+ ld [VBlankOccurred], a
+
+; joypad
+ call Joypad
+
+; discard requested ints
+ xor a
+ ld [rIF], a
+; enable lcd stat
+ ld a, %10 ; lcd stat
+ ld [rIE], a
+; request lcd stat
+ ld [rIF], a
+
+ ei
+; update sound
+ ld a, BANK(UpdateSound)
+ rst Bankswitch ; bankswitch
+ call UpdateSound
+; restore bank
+ ld a, [$ff8a]
+ rst Bankswitch
+ di
+
+; discard requested ints
+ xor a
+ ld [rIF], a
+; enable ints besides joypad
+ ld a, %1111 ; serial timer lcdstat vblank
+ ld [rIE], a
+ ret
+; 436
+
+
+VBlank6: ; 436
+; palettes
+; tiles
+; dma transfer
+; sound
+
+; save bank
+ ld a, [$ff9d]
+ ld [$ff8a], a
+
+; inc frame counter
+ ld hl, $ff9b
+ inc [hl]
+
+ call UpdateCGBPals
+ jr c, .vblankoccurred
+
+ call SafeLoadTiles
+ call SafeLoadTiles2
+ call DMATransfer
+
+.vblankoccurred
+; tell other fns vblank happened
+ xor a
+ ld [VBlankOccurred], a
+
+; update sound
+ ld a, BANK(UpdateSound)
+ rst Bankswitch ; bankswitch
+ call UpdateSound
+; restore bank
+ ld a, [$ff8a]
+ rst Bankswitch
+ ret
+; 45a
--- a/joypad.asm
+++ /dev/null
@@ -1,275 +1,0 @@
-JoypadInt: ; 92e
-; Replaced by Joypad, called from VBlank instead of the useless
-; joypad interrupt.
-
-; This is a placeholder in case the interrupt is somehow enabled.
- reti
-; 92f
-
-ClearJoypadPublic: ; 92f
- xor a
-; Pressed this frame (delta)
- ld [hJoyPressed], a
-; Currently pressed
- ld [hJoyDown], a
- ret
-; 935
-
-Joypad: ; 935
-; Read the joypad register and translate it to something more
-; workable for use in-game. There are 8 buttons, so we can use
-; one byte to contain all player input.
-
-; Updates:
-
-; hJoypadReleased: released this frame (delta)
-; hJoypadPressed: pressed this frame (delta)
-; hJoypadDown: currently pressed
-; hJoypadSum: pressed so far
-
-; Any of these three bits can be used to disable input.
- ld a, [$cfbe]
- and %11010000
- ret nz
-
-; If we're saving, input is disabled.
- ld a, [$c2cd]
- and a
- ret nz
-
-; We can only get four inputs at a time.
-; We take d-pad first for no particular reason.
- ld a, D_PAD
- ld [rJOYP], a
-; Read twice to give the request time to take.
- ld a, [rJOYP]
- ld a, [rJOYP]
-
-; The Joypad register output is in the lo nybble (inversed).
-; We make the hi nybble of our new container d-pad input.
- cpl
- and $f
- swap a
-
-; We'll keep this in b for now.
- ld b, a
-
-; Buttons make 8 total inputs (A, B, Select, Start).
-; We can fit this into one byte.
- ld a, BUTTONS
- ld [rJOYP], a
-; Wait for input to stabilize.
- ld a, [rJOYP]
- ld a, [rJOYP]
- ld a, [rJOYP]
- ld a, [rJOYP]
- ld a, [rJOYP]
- ld a, [rJOYP]
-; Buttons take the lo nybble.
- cpl
- and $f
- or b
- ld b, a
-
-; Reset the joypad register since we're done with it.
- ld a, $30
- ld [rJOYP], a
-
-; To get the delta we xor the last frame's input with the new one.
- ld a, [hJoypadDown] ; last frame
- ld e, a
- xor b
- ld d, a
-; Released this frame:
- and e
- ld [hJoypadReleased], a
-; Pressed this frame:
- ld a, d
- and b
- ld [hJoypadPressed], a
-
-; Add any new presses to the list of collective presses:
- ld c, a
- ld a, [hJoypadSum]
- or c
- ld [hJoypadSum], a
-
-; Currently pressed:
- ld a, b
- ld [hJoypadDown], a
-
-; Now that we have the input, we can do stuff with it.
-
-; For example, soft reset:
- and BUTTON_A | BUTTON_B | SELECT | START
- cp BUTTON_A | BUTTON_B | SELECT | START
- jp z, $0150 ; reset
-
- ret
-; 984
-
-
-GetJoypadPublic: ; 984
-; Update mirror joypad input from hJoypadDown (real input)
-
-; hJoyReleased: released this frame (delta)
-; hJoyPressed: pressed this frame (delta)
-; hJoyDown: currently pressed
-
-; bit 0 A
-; 1 B
-; 2 SELECT
-; 3 START
-; 4 RIGHT
-; 5 LEFT
-; 6 UP
-; 7 DOWN
-
- push af
- push hl
- push de
- push bc
-
-; The player input can be automated using an input stream.
-; See more below.
- ld a, [InputType]
- cp a, AUTO_INPUT
- jr z, .auto
-
-; To get deltas, take this and last frame's input.
- ld a, [hJoypadDown] ; real input
- ld b, a
- ld a, [hJoyDown] ; last frame mirror
- ld e, a
-
-; Released this frame:
- xor b
- ld d, a
- and e
- ld [hJoyReleased], a
-
-; Pressed this frame:
- ld a, d
- and b
- ld [hJoyPressed], a
-
-; It looks like the collective presses got commented out here.
- ld c, a
-
-; Currently pressed:
- ld a, b
- ld [hJoyDown], a ; frame input
-
-.quit
- pop bc
- pop de
- pop hl
- pop af
- ret
-
-.auto
-; Use a predetermined input stream (used in the catching tutorial).
-
-; Stream format: [input][duration]
-; A value of $ff will immediately end the stream.
-
-; Read from the input stream.
- ld a, [hROMBank]
- push af
- ld a, [AutoInputBank]
- rst Bankswitch
-
- ld hl, AutoInputAddress
- ld a, [hli]
- ld h, [hl]
- ld l, a
-
-; We only update when the input duration has expired.
- ld a, [AutoInputLength]
- and a
- jr z, .updateauto
-
-; Until then, don't change anything.
- dec a
- ld [AutoInputLength], a
- pop af
- rst Bankswitch
- jr .quit
-
-
-.updateauto
-; An input of $ff will end the stream.
- ld a, [hli]
- cp a, $ff
- jr z, .stopauto
- ld b, a
-
-; A duration of $ff will end the stream indefinitely.
- ld a, [hli]
- ld [AutoInputLength], a
- cp a, $ff
- jr nz, .next
-
-; The current input is overwritten.
- dec hl
- dec hl
- ld b, NO_INPUT
- jr .finishauto
-
-.next
-; On to the next input...
- ld a, l
- ld [AutoInputAddress], a
- ld a, h
- ld [AutoInputAddress+1], a
- jr .finishauto
-
-.stopauto
- call StopAutoInput
- ld b, NO_INPUT
-
-.finishauto
- pop af
- rst Bankswitch
- ld a, b
- ld [hJoyPressed], a ; pressed
- ld [hJoyDown], a ; input
- jr .quit
-; 9ee
-
-
-StartAutoInput: ; 9ee
-; Start reading automated input stream at a:hl.
-
- ld [AutoInputBank], a
- ld a, l
- ld [AutoInputAddress], a
- ld a, h
- ld [AutoInputAddress+1], a
-; Start reading the stream immediately.
- xor a
- ld [AutoInputLength], a
-; Reset input mirrors.
- xor a
- ld [hJoyPressed], a ; pressed this frame
- ld [hJoyReleased], a ; released this frame
- ld [hJoyDown], a ; currently pressed
-
- ld a, AUTO_INPUT
- ld [InputType], a
- ret
-; a0a
-
-
-StopAutoInput: ; a0a
-; Clear variables related to automated input.
- xor a
- ld [AutoInputBank], a
- ld [AutoInputAddress], a
- ld [AutoInputAddress+1], a
- ld [AutoInputLength], a
-; Back to normal input.
- ld [InputType], a
- ret
-; a1b
-
--- a/landmarks.asm
+++ /dev/null
@@ -1,539 +1,0 @@
-GetLandmarkCoords: ; 0x1ca896
-; given a landmark id in e, return the y coord in d, and the x coord in e.
- push hl
- ld l, e
- ld h, $0
- add hl, hl
- add hl, hl
- ld de, Landmarks
- add hl, de
- ld a, [hli]
- ld e, a
- ld d, [hl]
- pop hl
- ret
-
-
-GetLandmarkName: ; 0x1ca8a5
-; given a landmark id in e, copy its name to $d073.
- push hl
- push de
- push bc
- ld l, e
- ld h, $0
- add hl, hl
- add hl, hl
- ld de, Landmarks + 2 ; skip the coordinates, we only want the string
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld de, $d073
- ld c, 18
-.loop
- ld a, [hli]
- ld [de], a
- inc de
- dec c
- jr nz, .loop
- pop bc
- pop de
- pop hl
- ret
-
-Landmarks: ; 0x1ca8c3
-;db x coord, y coord
-;dw pointer to name
- db 0,0
- dw SpecialMapString
-
- db 148,116
- dw NewBarkString
-
- db 136,116
- dw Route29String
-
- db 108,116
- dw CherrygroveString
-
- db 108,96
- dw Route30String
-
- db 104,76
- dw Route31String
-
- db 92,76
- dw VioletString
-
- db 93,74
- dw SproutString
-
- db 92,108
- dw Route32String
-
- db 84,92
- dw RuinsString
-
- db 92,140
- dw UnionString
-
- db 90,140
- dw Route33String
-
- db 76,140
- dw AzaleaString
-
- db 78,138
- dw WellString
-
- db 60,136
- dw IlexString
-
- db 60,128
- dw Route34String
-
- db 60,108
- dw GoldenrodString
-
- db 58,108
- dw RadioTowerString
-
- db 60,92
- dw Route35String
-
- db 60,76
- dw ParkString
-
- db 72,76
- dw Route36String
-
- db 76,68
- dw Route37String
-
- db 76,60
- dw EcruteakString
-
- db 78,58
- dw TinString
-
- db 74,58
- dw BurnedTowerString
-
- db 60,60
- dw Route38String
-
- db 44,64
- dw Route39String
-
- db 44,76
- dw OlivineString
-
- db 46,78
- dw LighthouseString
-
- db 36,72
- dw BattleTowerString
-
- db 36,80
- dw Route40String
-
- db 36,108
- dw WhirlString
-
- db 36,116
- dw Route41String
-
- db 28,116
- dw CianwoodString
-
- db 100,60
- dw Route42String
-
- db 92,60
- dw MortarString
-
- db 116,60
- dw MahoganyString
-
- db 116,52
- dw Route43String
-
- db 116,44
- dw LakeString
-
- db 128,60
- dw Route44String
-
- db 138,54
- dw PathString
-
- db 140,60
- dw BlackthornString
-
- db 140,52
- dw DenString
-
- db 140,80
- dw Route45String
-
- db 120,88
- dw DarkString
-
- db 132,104
- dw Route46String
-
- db 156,84
- dw SilverCaveString
-
- db 60,124
- dw PalletString
-
- db 60,108
- dw Route1String
-
- db 60,92
- dw ViridianString
-
- db 60,80
- dw Route2String
-
- db 60,68
- dw PewterString
-
- db 72,68
- dw Route3String
-
- db 84,68
- dw MoonString
-
- db 96,68
- dw Route4String
-
- db 108,68
- dw CeruleanString
-
- db 108,60
- dw Route24String
-
- db 116,52
- dw Route25String
-
- db 108,76
- dw Route5String
-
- db 116,92
- dw UndergroundString
-
- db 108,92
- dw Route6String
-
- db 108,100
- dw VermilionString
-
- db 96,76
- dw DiglettsCaveString
-
- db 96,84
- dw Route7String
-
- db 124,84
- dw Route8String
-
- db 124,68
- dw Route9String
-
- db 140,68
- dw TunnelString
-
- db 140,72
- dw Route10String
-
- db 140,76
- dw PlantString
-
- db 140,84
- dw LavenderString
-
- db 148,84
- dw LavTowerString
-
- db 84,84
- dw CeladonString
-
- db 108,84
- dw SaffronString
-
- db 124,100
- dw Route11String
-
- db 140,96
- dw Route12String
-
- db 132,116
- dw Route13String
-
- db 124,128
- dw Route14String
-
- db 112,132
- dw Route15String
-
- db 76,84
- dw Route16String
-
- db 76,108
- dw Route17String
-
- db 88,132
- dw Route18String
-
- db 100,132
- dw FuchsiaString
-
- db 100,144
- dw Route19String
-
- db 84,148
- dw Route20String
-
- db 76,148
- dw SeafoamString
-
- db 60,148
- dw CinnabarString
-
- db 60,136
- dw Route21String
-
- db 44,84
- dw Route22String
-
- db 36,68
- dw RoadString
-
- db 36,60
- dw Route23String
-
- db 36,52
- dw IndigoString
-
- db 36,108
- dw Route26String
-
- db 28,116
- dw Route27String
-
- db 20,116
- dw FallsString
-
- db 28,84
- dw Route28String
-
- db 148,132
- dw AquaString
-
-NewBarkString:
- db "NEW BARK",$1F,"TOWN@"
-CherrygroveString:
- db "CHERRYGROVE",$1F,"CITY@"
-VioletString:
- db "VIOLET CITY@"
-AzaleaString:
- db "AZALEA TOWN@"
-GoldenrodString:
- db "GOLDENROD",$1F,"CITY@"
-EcruteakString:
- db "ECRUTEAK",$1F,"CITY@"
-OlivineString:
- db "OLIVINE",$1F,"CITY@"
-CianwoodString:
- db "CIANWOOD",$1F,"CITY@"
-MahoganyString:
- db "MAHOGANY",$1F,"TOWN@"
-BlackthornString:
- db "BLACKTHORN",$1F,"CITY@"
-LakeString:
- db "LAKE OF",$1F,"RAGE@"
-SilverCaveString:
- db "SILVER CAVE@"
-SproutString:
- db "SPROUT",$1F,"TOWER@"
-RuinsString:
- db "RUINS",$1F,"OF ALPH@"
-UnionString:
- db "UNION CAVE@"
-WellString:
- db "SLOWPOKE",$1F,"WELL@"
-RadioTowerString:
- db "RADIO TOWER@"
-PlantString:
- db "POWER PLANT@"
-ParkString:
- db "NATIONAL",$1F,"PARK@"
-TinString:
- db "TIN TOWER@"
-LighthouseString:
- db "LIGHTHOUSE@"
-WhirlString:
- db "WHIRL",$1F,"ISLANDS@"
-MortarString:
- db "MT.MORTAR@"
-DenString:
- db "DRAGON'S",$1F,"DEN@"
-PathString:
- db "ICE PATH@"
-NotApplicableString:
- db "N/A@"
-PalletString:
- db "PALLET TOWN@"
-ViridianString:
- db "VIRIDIAN",$1F,"CITY@"
-PewterString:
- db "PEWTER CITY@"
-CeruleanString:
- db "CERULEAN",$1F,"CITY@"
-LavenderString:
- db "LAVENDER",$1F,"TOWN@"
-VermilionString:
- db "VERMILION",$1F,"CITY@"
-CeladonString:
- db "CELADON",$1F,"CITY@"
-SaffronString:
- db "SAFFRON",$1F,"CITY@"
-FuchsiaString:
- db "FUCHSIA",$1F,"CITY@"
-CinnabarString:
- db "CINNABAR",$1F,"ISLAND@"
-IndigoString:
- db "INDIGO",$1F,"PLATEAU@"
-RoadString:
- db "VICTORY",$1F,"ROAD@"
-MoonString:
- db "MT.MOON@"
-TunnelString:
- db "ROCK TUNNEL@"
-LavTowerString:
- db "LAV",$1F,"RADIO TOWER@"
-SilphString:
- db "SILPH CO.@"
-ZoneString:
- db "SAFARI ZONE@"
-SeafoamString:
- db "SEAFOAM",$1F,"ISLANDS@"
-MansionString:
- db "#MON",$1F,"MANSION@"
-DungeonString:
- db "CERULEAN",$1F,"CAVE@"
-Route1String:
- db "ROUTE 1@"
-Route2String:
- db "ROUTE 2@"
-Route3String:
- db "ROUTE 3@"
-Route4String:
- db "ROUTE 4@"
-Route5String:
- db "ROUTE 5@"
-Route6String:
- db "ROUTE 6@"
-Route7String:
- db "ROUTE 7@"
-Route8String:
- db "ROUTE 8@"
-Route9String:
- db "ROUTE 9@"
-Route10String:
- db "ROUTE 10@"
-Route11String:
- db "ROUTE 11@"
-Route12String:
- db "ROUTE 12@"
-Route13String:
- db "ROUTE 13@"
-Route14String:
- db "ROUTE 14@"
-Route15String:
- db "ROUTE 15@"
-Route16String:
- db "ROUTE 16@"
-Route17String:
- db "ROUTE 17@"
-Route18String:
- db "ROUTE 18@"
-Route19String:
- db "ROUTE 19@"
-Route20String:
- db "ROUTE 20@"
-Route21String:
- db "ROUTE 21@"
-Route22String:
- db "ROUTE 22@"
-Route23String:
- db "ROUTE 23@"
-Route24String:
- db "ROUTE 24@"
-Route25String:
- db "ROUTE 25@"
-Route26String:
- db "ROUTE 26@"
-Route27String:
- db "ROUTE 27@"
-Route28String:
- db "ROUTE 28@"
-Route29String:
- db "ROUTE 29@"
-Route30String:
- db "ROUTE 30@"
-Route31String:
- db "ROUTE 31@"
-Route32String:
- db "ROUTE 32@"
-Route33String:
- db "ROUTE 33@"
-Route34String:
- db "ROUTE 34@"
-Route35String:
- db "ROUTE 35@"
-Route36String:
- db "ROUTE 36@"
-Route37String:
- db "ROUTE 37@"
-Route38String:
- db "ROUTE 38@"
-Route39String:
- db "ROUTE 39@"
-Route40String:
- db "ROUTE 40@"
-Route41String:
- db "ROUTE 41@"
-Route42String:
- db "ROUTE 42@"
-Route43String:
- db "ROUTE 43@"
-Route44String:
- db "ROUTE 44@"
-Route45String:
- db "ROUTE 45@"
-Route46String:
- db "ROUTE 46@"
-DarkString:
- db "DARK CAVE@"
-IlexString:
- db "ILEX",$1F,"FOREST@"
-BurnedTowerString:
- db "BURNED",$1F,"TOWER@"
-AquaString:
- db "FAST SHIP@"
-ViridianForestString:
- db "VIRIDIAN",$1F,"FOREST@"
-DiglettsCaveString:
- db "DIGLETT'S",$1F,"CAVE@"
-FallsString:
- db "TOHJO FALLS@"
-UndergroundString:
- db "UNDERGROUND@"
-BattleTowerString:
- db "BATTLE",$1F,"TOWER@"
-SpecialMapString:
- db "SPECIAL@"
-
--- a/main.asm
+++ b/main.asm
@@ -60,7 +60,7 @@
VBlank: ; 283
-INCLUDE "vblank.asm"
+INCLUDE "engine/vblank.asm"
DelayFrame: ; 45a
@@ -437,7 +437,7 @@
INCBIN "baserom.gbc", $6c4, $92e - $6c4
-INCLUDE "joypad.asm"
+INCLUDE "engine/joypad.asm"
INCBIN "baserom.gbc", $a1b, $b40 - $a1b
@@ -12984,7 +12984,7 @@
BitTable2: ; 80462
-INCLUDE "bittable2.asm"
+INCLUDE "engine/bittable2.asm"
; 80648
@@ -14938,7 +14938,7 @@
INCBIN "baserom.gbc", $966b0, $96cb1 - $966b0
-INCLUDE "scripting.asm"
+INCLUDE "engine/scripting.asm"
INCBIN "baserom.gbc", $97c20, $35e
@@ -19353,7 +19353,7 @@
INCBIN "baserom.gbc", $10983f, $1099aa - $10983f
; Credits
-INCLUDE "credits.asm"
+INCLUDE "engine/credits.asm"
SECTION "bank43",DATA,BANK[$43]
@@ -21354,7 +21354,7 @@
INCLUDE "battle/move_names.asm"
-INCLUDE "landmarks.asm"
+INCLUDE "engine/landmarks.asm"
RegionCheck: ; 0x1caea1
--- a/scripting.asm
+++ /dev/null
@@ -1,3127 +1,0 @@
-ScriptCommandTable: ; 0x96cb1
- dw Script_2call
- dw Script_3call
- dw Script_2ptcall
- dw Script_2jump
- dw Script_3jump
- dw Script_2ptjump
- dw Script_if_equal
- dw Script_if_not_equal
- dw Script_iffalse
- dw Script_iftrue
- dw Script_if_less_than
- dw Script_if_greater_than
- dw Script_jumpstd
- dw Script_callstd
- dw Script_3callasm
- dw Script_special
- dw Script_2ptcallasm
- dw Script_checkmaptriggers
- dw Script_domaptrigger
- dw Script_checktriggers
- dw Script_dotrigger
- dw Script_writebyte
- dw Script_addvar
- dw Script_random
- dw Script_checkver
- dw Script_copybytetovar
- dw Script_copyvartobyte
- dw Script_loadvar
- dw Script_checkcode
- dw Script_writevarcode
- dw Script_writecode
- dw Script_giveitem
- dw Script_takeitem
- dw Script_checkitem
- dw Script_givemoney
- dw Script_takemoney
- dw Script_checkmoney
- dw Script_givecoins
- dw Script_takecoins
- dw Script_checkcoins
- dw Script_addcellnum
- dw Script_delcellnum
- dw Script_checkcellnum
- dw Script_checktime
- dw Script_checkpoke
- dw Script_givepoke
- dw Script_giveegg
- dw Script_givepokeitem
- dw Script_checkpokeitem
- dw Script_checkbit1
- dw Script_clearbit1
- dw Script_setbit1
- dw Script_checkbit2
- dw Script_clearbit2
- dw Script_setbit2
- dw Script_wildoff
- dw Script_wildon
- dw Script_xycompare
- dw Script_warpmod
- dw Script_blackoutmod
- dw Script_warp
- dw Script_readmoney
- dw Script_readcoins
- dw Script_RAM2MEM
- dw Script_pokenamemem
- dw Script_itemtotext
- dw Script_mapnametotext
- dw Script_trainertotext
- dw Script_stringtotext
- dw Script_itemnotify
- dw Script_pocketisfull
- dw Script_loadfont
- dw Script_refreshscreen
- dw Script_loadmovesprites
- dw Script_loadbytec1ce
- dw Script_3writetext
- dw Script_2writetext
- dw Script_repeattext
- dw Script_yesorno
- dw Script_loadmenudata
- dw Script_writebackup
- dw Script_jumptextfaceplayer
- dw Script_3jumptext
- dw Script_jumptext
- dw Script_closetext
- dw Script_keeptextopen
- dw Script_pokepic
- dw Script_pokepicyesorno
- dw Script_interpretmenu
- dw Script_interpretmenu2
- dw Script_loadpikachudata
- dw Script_battlecheck
- dw Script_loadtrainerdata
- dw Script_loadpokedata
- dw Script_loadtrainer
- dw Script_startbattle
- dw Script_returnafterbattle
- dw Script_catchtutorial
- dw Script_trainertext
- dw Script_trainerstatus
- dw Script_winlosstext
- dw Script_scripttalkafter
- dw Script_talkaftercancel
- dw Script_talkaftercheck
- dw Script_setlasttalked
- dw Script_applymovement
- dw Script_applymovement2
- dw Script_faceplayer
- dw Script_faceperson
- dw Script_variablesprite
- dw Script_disappear
- dw Script_appear
- dw Script_follow
- dw Script_stopfollow
- dw Script_moveperson
- dw Script_writepersonxy
- dw Script_loademote
- dw Script_showemote
- dw Script_spriteface
- dw Script_follownotexact
- dw Script_earthquake
- dw Script_changemap
- dw Script_changeblock
- dw Script_reloadmap
- dw Script_reloadmappart
- dw Script_writecmdqueue
- dw Script_delcmdqueue
- dw Script_playmusic
- dw Script_playrammusic
- dw Script_musicfadeout
- dw Script_playmapmusic
- dw Script_reloadmapmusic
- dw Script_cry
- dw Script_playsound
- dw Script_waitbutton
- dw Script_warpsound
- dw Script_specialsound
- dw Script_passtoengine
- dw Script_newloadmap
- dw Script_pause
- dw Script_deactivatefacing
- dw Script_priorityjump
- dw Script_warpcheck
- dw Script_ptpriorityjump
- dw Script_return
- dw Script_end
- dw Script_reloadandreturn
- dw Script_resetfuncs
- dw Script_pokemart
- dw Script_elevator
- dw Script_trade
- dw Script_askforphonenumber
- dw Script_phonecall
- dw Script_hangup
- dw Script_describedecoration
- dw Script_fruittree
- dw Script_specialphonecall
- dw Script_checkphonecall
- dw Script_verbosegiveitem
- dw Script_verbosegiveitem2
- dw Script_loadwilddata
- dw Script_halloffame
- dw Script_credits
- dw Script_warpfacing
- dw Script_storetext
- dw Script_displaylocation
- dw Script_unknown0xa6
- dw Script_unknown0xa7
- dw Script_unknown0xa8
- dw Script_unknown0xa9
-; 0x96e05
-
-Unknown_0x96e05: ; 0x96e05
- ld hl, $d434
- set 2, [hl]
- ret
-; 0x96e0b
-
-Unknown_0x96e0b: ; 0x96e0b
- ld hl, $d434
- bit 2, [hl]
- ret
-; 0x96e11
-
-Unknown_0x96e11: ; 0x96e11
- ld hl, $d434
- res 2, [hl]
- ret
-; 0x96e17
-
-Script_3callasm: ; 0x96e17
-; script command 0xe
-; parameters:
-; asm (AsmPointerParam)
-
- call GetScriptByte
- ld b, a
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld a, b
- rst $8
- ret
-; 0x96e26
-
-Script_special: ; 0x96e26
-; script command 0xf
-; parameters:
-; predefined_script (MultiByteParam)
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld a, $3
- ld hl, $401b
- rst $8
- ret
-; 0x96e35
-
-Script_2ptcallasm: ; 0x96e35
-; script command 0x10
-; parameters:
-; asm (PointerToAsmPointerParam)
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld b, [hl]
- inc hl
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, b
- rst $8
- ret
-; 0x96e45
-
-Script_jumptextfaceplayer: ; 0x96e45
-; script command 0x51
-; parameters:
-; text_pointer (RawTextPointerLabelParam)
-
- ld a, [ScriptBank]
- ld [$d44e], a
- call GetScriptByte
- ld [$d44f], a
- call GetScriptByte
- ld [$d450], a
- ld b, $25
- ld hl, $6e79
- jp ScriptJump
-; 0x96e5f
-
-Script_jumptext: ; 0x96e5f
-; script command 0x53
-; parameters:
-; text_pointer (RawTextPointerLabelParam)
-
- ld a, [ScriptBank]
- ld [$d44e], a
- call GetScriptByte
- ld [$d44f], a
- call GetScriptByte
- ld [$d450], a
- ld b, $25
- ld hl, $6e7a
- jp ScriptJump
-; 0x96e79
-
-INCBIN "baserom.gbc",$96e79,$96e81 - $96e79
-
-Script_3jumptext: ; 0x96e81
-; script command 0x52
-; parameters:
-; text_pointer (PointerLabelBeforeBank)
-
- call GetScriptByte
- ld [$d44e], a
- call GetScriptByte
- ld [$d44f], a
- call GetScriptByte
- ld [$d450], a
- ld b, $25
- ld hl, $6e7a
- jp ScriptJump
-; 0x96e9b
-
-Script_2writetext: ; 0x96e9b
-; script command 0x4c
-; parameters:
-; text_pointer (RawTextPointerLabelParam)
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld a, [ScriptBank]
- ld b, a
- call $269a
- ret
-; 0x96eab
-
-Script_3writetext: ; 0x96eab
-; script command 0x4b
-; parameters:
-; text_pointer (PointerLabelBeforeBank)
-
- call GetScriptByte
- ld b, a
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- call $269a
- ret
-; 0x96ebb
-
-Script_repeattext: ; 0x96ebb
-; script command 0x4d
-; parameters:
-; byte (SingleByteParam)
-; byte (SingleByteParam)
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- cp $ff
- jr nz, .asm_96ed8 ; 0x96ec5 $11
- ld a, l
- cp $ff
- jr nz, .asm_96ed8 ; 0x96eca $c
- ld hl, $d44e
- ld a, [hli]
- ld b, a
- ld a, [hli]
- ld h, [hl]
- ld l, a
- call $269a
- ret
-.asm_96ed8
- ret
-; 0x96ed9
-
-Script_closetext: ; 0x96ed9
-; script command 0x54
-
- jp $0a46
-; 0x96edc
-
-Script_keeptextopen: ; 0x96edc
-; script command 0x55
-
- ld a, [$ffd8]
- push af
- ld a, $1
- ld [$ffd8], a
- call $31f6
- call $0aaf
- pop af
- ld [$ffd8], a
- ret
-; 0x96eed
-
-Script_yesorno: ; 0x96eed
-; script command 0x4e
-
- call $1dcf
- ld a, $0
- jr c, .asm_96ef6 ; 0x96ef2 $2
- ld a, $1
-.asm_96ef6
- ld [$c2dd], a
- ret
-; 0x96efa
-
-Script_loadmenudata: ; 0x96efa
-; script command 0x4f
-; parameters:
-; data (MenuDataPointerParam)
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld de, $1d35
- ld a, [ScriptBank]
- call $26b7
- call $1ad2
- ret
-; 0x96f0f
-
-Script_writebackup: ; 0x96f0f
-; script command 0x50
-
- call $1c17
- call $1ad2
- ret
-; 0x96f16
-
-Script_pokepic: ; 0x96f16
-; script command 0x56
-; parameters:
-; pokemon (PokemonParam)
-
- call GetScriptByte
- and a
- jr nz, .asm_96f1f ; 0x96f1a $3
- ld a, [$c2dd]
-.asm_96f1f
- ld [$d108], a
- ld a, $9
- ld hl, $44e3
- rst $8
- ret
-; 0x96f29
-
-Script_pokepicyesorno: ; 0x96f29
-; script command 0x57
-
- ld a, $9
- ld hl, $4528
- rst $8
- ret
-; 0x96f30
-
-Script_interpretmenu2: ; 0x96f30
-; script command 0x59
-
- ld a, [ScriptBank]
- ld hl, $1d81
- rst $8
- ld a, [$cfa9]
- jr nc, .asm_96f3d ; 0x96f3a $1
- xor a
-.asm_96f3d
- ld [$c2dd], a
- ret
-; 0x96f41
-
-Script_interpretmenu: ; 0x96f41
-; script command 0x58
-
- ld a, [ScriptBank]
- ld hl, $202a
- rst $8
- ld a, [$cf88]
- jr nc, .asm_96f4e ; 0x96f4b $1
- xor a
-.asm_96f4e
- ld [$c2dd], a
- ret
-; 0x96f52
-
-Script_storetext: ; 0x96f52
-; script command 0xa4
-; parameters:
-; pointer (PointerLabelBeforeBank)
-; memory (SingleByteParam)
-
- call $106c
- call GetScriptByte
- ld c, a
- ld a, $47
- ld hl, $4000
- rst $8
- ret
-; 0x96f60
-
-Script_verbosegiveitem: ; 0x96f60
-; script command 0x9e
-; parameters:
-; item (ItemLabelByte)
-; quantity (DecimalParam)
-
- call $77ca
- call $7051
- ld de, $d073
- ld a, $1
- call $76c8
- ld b, $25
- ld de, $6f77
- jp $74cb
-; 0x96f76
-
-INCBIN "baserom.gbc",$96f76,$96f8e - $96f76
-
-Script_verbosegiveitem2: ; 0x96f8e
-; script command 0x9f
-; parameters:
-; item (ItemLabelByte)
-; var (SingleByteParam)
-
- call GetScriptByte
- cp $ff
- jr nz, .asm_96f98 ; 0x96f93 $3
- ld a, [$c2dd]
-.asm_96f98
- ld [$d106], a
- call GetScriptByte
- call $769e
- ld a, [de]
- ld [$d10c], a
- ld hl, $d892
- call $2f66
- ld a, $1
- jr c, .asm_96fb0 ; 0x96fad $1
- xor a
-.asm_96fb0
- ld [$c2dd], a
- call $7051
- ld de, $d073
- ld a, $1
- call $76c8
- ld b, $25
- ld de, $6f77
- jp $74cb
-; 0x96fc6
-
-Script_itemnotify: ; 0x96fc6
-; script command 0x45
-
- call $6ffe
- call $7051
- ld b, $25
- ld hl, $705b
- call $269a
- ret
-; 0x96fd5
-
-Script_pocketisfull: ; 0x96fd5
-; script command 0x46
-
- call $6ffe
- call $7051
- ld b, $25
- ld hl, $7060
- call $269a
- ret
-; 0x96fe4
-
-Script_specialsound: ; 0x96fe4
-; script command 0x88
-
- ld a, $3
- ld hl, $543d
- rst $8
- ld a, [$d142]
- cp TM_HM
- ld de, SFX_GET_TM
- jr z, .play
- ld de, SFX_ITEM
-.play
- call StartSFX
- call WaitSFX
- ret
-; 0x96ffe
-
-INCBIN "baserom.gbc",$96ffe,$97065 - $96ffe
-
-Script_pokemart: ; 0x97065
-; script command 0x94
-; parameters:
-; dialog_id (SingleByteParam)
-; mart_id (MultiByteParam)
-
- call GetScriptByte
- ld c, a
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld a, [ScriptBank]
- ld b, a
- ld a, $5
- ld hl, $5a45
- rst $8
- ret
-; 0x9707c
-
-Script_elevator: ; 0x9707c
-; script command 0x95
-; parameters:
-; floor_list_pointer (PointerLabelParam)
-
- xor a
- ld [$c2dd], a
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld a, [ScriptBank]
- ld b, a
- ld a, $4
- ld hl, $742d
- rst $8
- ret c
- ld a, $1
- ld [$c2dd], a
- ret
-; 0x97099
-
-Script_trade: ; 0x97099
-; script command 0x96
-; parameters:
-; trade_id (SingleByteParam)
-
- call GetScriptByte
- ld e, a
- ld a, $3f
- ld hl, $4ba8
- rst $8
- ret
-; 0x970a4
-
-Script_phonecall: ; 0x970a4
-; script command 0x98
-; parameters:
-; caller_name (RawTextPointerLabelParam)
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld a, [ScriptBank]
- ld b, a
- ld a, $24
- ld hl, $429a
- rst $8
- ret
-; 0x970b7
-
-Script_hangup: ; 0x970b7
-; script command 0x99
-
- ld a, $24
- ld hl, $42eb
- rst $8
- ret
-; 0x970be
-
-Script_askforphonenumber: ; 0x970be
-; script command 0x97
-; parameters:
-; number (SingleByteParam)
-
- call $1dcf
- jr c, .asm_970d6 ; 0x970c1 $13
- call GetScriptByte
- ld c, a
- ld a, $24
- ld hl, $4000
- rst $8
- jr c, .asm_970d2 ; 0x970cd $3
- xor a
- jr .asm_970db ; 0x970d0 $9
-.asm_970d2
- ld a, $1
- jr .asm_970db ; 0x970d4 $5
-.asm_970d6
- call GetScriptByte
- ld a, $2
-.asm_970db
- ld [$c2dd], a
- ret
-; 0x970df
-
-Script_describedecoration: ; 0x970df
-; script command 0x9a
-; parameters:
-; byte (SingleByteParam)
-
- call GetScriptByte
- ld b, a
- ld a, $9
- ld hl, $6f59
- rst $8
- ld h, d
- ld l, e
- jp ScriptJump
-; 0x970ee
-
-Script_fruittree: ; 0x970ee
-; script command 0x9b
-; parameters:
-; tree_id (SingleByteParam)
-
- call GetScriptByte
- ld [CurFruitTree], a
- ld b, BANK(FruitTreeScript)
- ld hl, FruitTreeScript
- jp ScriptJump
-; 0x970fc
-
-Script_loadwilddata: ; 0x970fc
-; script command 0xa0
-; parameters:
-; map_group (MapGroupParam)
-; map_id (MapIdParam)
-
- call GetScriptByte
- ld c, a
- call GetScriptByte
- ld d, a
- call GetScriptByte
- ld e, a
- ld a, $3
- ld hl, $4403
- rst $8
- ret
-; 0x9710f
-
-Script_trainertext: ; 0x9710f
-; script command 0x62
-; parameters:
-; which_text (SingleByteParam)
-
- call GetScriptByte
- ld c, a
- ld b, $0
- ld hl, $d045
- add hl, bc
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [$d03e]
- ld b, a
- call $269a
- ret
-; 0x97125
-
-Script_scripttalkafter: ; 0x97125
-; script command 0x65
-
- ld hl, $d04b
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [$d03e]
- ld b, a
- jp ScriptJump
-; 0x97132
-
-Script_trainerstatus: ; 0x97132
-; script command 0x63
-; parameters:
-; action (SingleByteParam)
-
- xor a
- ld [$c2dd], a
- ld hl, $d041
- ld e, [hl]
- inc hl
- ld d, [hl]
- call GetScriptByte
- ld b, a
- call BitTable1Func
- ld a, c
- and a
- ret z
- ld a, $1
- ld [$c2dd], a
- ret
-; 0x9714c
-
-Script_winlosstext: ; 0x9714c
-; script command 0x64
-; parameters:
-; win_text_pointer (TextPointerLabelParam)
-; loss_text_pointer (TextPointerLabelParam)
-
- ld hl, $d047
- call GetScriptByte
- ld [hli], a
- call GetScriptByte
- ld [hli], a
- ld hl, $d049
- call GetScriptByte
- ld [hli], a
- call GetScriptByte
- ld [hli], a
- ret
-; 0x97163
-
-Script_talkaftercancel: ; 0x97163
-; script command 0x66
-
- ld a, [$d04d]
- and a
- ret z
- jp $7b74
-; 0x9716b
-
-Script_talkaftercheck: ; 0x9716b
-; script command 0x67
-
- ld a, $1
- ld [$c2dd], a
- ld a, [$d04d]
- and a
- ret nz
- xor a
- ld [$c2dd], a
- ret
-; 0x9717a
-
-Script_playrammusic: ; 0x9717a
-; script command 0x80
-
- ld a, [$d22f]
- ld e, a
- ld a, $3a
- ld hl, $500a
- rst $8
- ret
-; 0x97185
-
-Script_playmapmusic: ; 0x97185
-; script command 0x82
-
- call $3cdf
- ret
-; 0x97189
-
-Script_playmusic: ; 0x97189
-; script command 0x7f
-; parameters:
-; music_pointer (MultiByteParam)
-
- ld de, $0000
- call StartMusic
- xor a
- ld [$c2a7], a
- call MaxVolume
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- call StartMusic
- ret
-; 0x971a2
-
-Script_musicfadeout: ; 0x971a2
-; script command 0x81
-; parameters:
-; music (MultiByteParam)
-; fadetime (SingleByteParam)
-
- call GetScriptByte
- ld [$c2a9], a
- call GetScriptByte
- ld [$c2aa], a
- call GetScriptByte
- and $7f
- ld [$c2a7], a
- ret
-; 0x971b7
-
-Script_playsound: ; 0x971b7
-; script command 0x85
-; parameters:
-; sound_pointer (MultiByteParam)
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- call StartSFX
- ret
-; 0x971c3
-
-Script_waitbutton: ; 0x971c3
-; script command 0x86
-
- call WaitSFX
- ret
-; 0x971c7
-
-Script_warpsound: ; 0x971c7
-; script command 0x87
-
- ld a, $5
- ld hl, $4a07
- rst $8
- call StartSFX
- ret
-; 0x971d1
-
-Script_cry: ; 0x971d1
-; script command 0x84
-; parameters:
-; cry_id (MultiByteParam)
-
- call GetScriptByte
- push af
- call GetScriptByte
- pop af
- and a
- jr nz, .asm_971df ; 0x971da $3
- ld a, [$c2dd]
-.asm_971df
- call $37ce
- ret
-; 0x971e3
-
-Unknown_0x971e3: ; 0x971e3
- and a
- ret z
- cp $fe
- ret z
- dec a
- ret
-; 0x971ea
-
-Script_setlasttalked: ; 0x971ea
-; script command 0x68
-; parameters:
-; person (SingleByteParam)
-
- call GetScriptByte
- call Unknown_0x971e3
- ld [$ffe0], a
- ret
-; 0x971f3
-
-Script_applymovement: ; 0x971f3
-; script command 0x69
-; parameters:
-; person (SingleByteParam)
-; data (MovementPointerLabelParam)
-
- call GetScriptByte
- call Unknown_0x971e3
- ld c, a
- push bc
- ld a, c
- ld a, $1
- ld hl, $585c
- rst $8
- pop bc
- push bc
- call $7221
- pop bc
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld a, [ScriptBank]
- ld b, a
- call $26c7
- ret c
- ld a, $2
- ld [$d437], a
- call Unknown_0x96e11
- ret
-; 0x97221
-
-Unknown_0x97221: ; 0x97221
- ld a, $1
- ld hl, $5897
- rst $8
- ret
-; 0x97228
-
-Script_applymovement2: ; 0x97228
-; script command 0x6a
-; parameters:
-; data (MovementPointerLabelParam)
-
- ld a, [$ffe0]
- ld c, a
- jp $71fa
-; 0x9722e
-
-Script_faceplayer: ; 0x9722e
-; script command 0x6b
-
- ld a, [$ffe0]
- and a
- ret z
- ld d, $0
- ld a, [$ffe0]
- ld e, a
- ld a, $2
- ld hl, $4417
- rst $8
- ld a, d
- add a
- add a
- ld e, a
- ld a, [$ffe0]
- ld d, a
- call $728b
- ret
-; 0x97248
-
-Script_faceperson: ; 0x97248
-; script command 0x6c
-; parameters:
-; person1 (SingleByteParam)
-; person2 (SingleByteParam)
-
- call GetScriptByte
- call Unknown_0x971e3
- cp $fe
- jr c, .asm_97254 ; 0x97250 $2
- ld a, [$ffe0]
-.asm_97254
- ld e, a
- call GetScriptByte
- call Unknown_0x971e3
- cp $fe
- jr nz, .asm_97261 ; 0x9725d $2
- ld a, [$ffe0]
-.asm_97261
- ld d, a
- push de
- ld a, $2
- ld hl, $4417
- rst $8
- pop bc
- ret c
- ld a, d
- add a
- add a
- ld e, a
- ld d, c
- call $728b
- ret
-; 0x97274
-
-Script_spriteface: ; 0x97274
-; script command 0x76
-; parameters:
-; person (SingleByteParam)
-; facing (SingleByteParam)
-
- call GetScriptByte
- call Unknown_0x971e3
- cp $fe
- jr nz, .asm_97280 ; 0x9727c $2
- ld a, [$ffe0]
-.asm_97280
- ld d, a
- call GetScriptByte
- add a
- add a
- ld e, a
- call $728b
- ret
-; 0x9728b
-
-Unknown_0x9728b: ; 0x9728b
- ld a, d
- push de
- call $18de
- jr c, .asm_972b9 ; 0x97290 $27
- ld hl, $0000
- add hl, bc
- ld a, [hl]
- push bc
- call $1836
- pop bc
- jr c, .asm_972b9 ; 0x9729c $1b
- ld hl, $0004
- add hl, bc
- bit 2, [hl]
- jr nz, .asm_972b9 ; 0x972a4 $13
- pop de
- ld a, e
- call $1af8
- ld hl, $d0ed
- bit 6, [hl]
- jr nz, .asm_972b5 ; 0x972b0 $3
- call $72bc
-.asm_972b5
- call $1ad2
- ret
-.asm_972b9
- pop de
- scf
- ret
-; 0x972bc
-
-Unknown_0x972bc: ; 0x972bc
- call $217a
- ld hl, $c4a0
- ld bc, $0168
-.asm_972c5
- res 7, [hl]
- inc hl
- dec bc
- ld a, b
- or c
- jr nz, .asm_972c5 ; 0x972cb $f8
- ret
-; 0x972ce
-
-Script_variablesprite: ; 0x972ce
-; script command 0x6d
-; parameters:
-; byte (SingleByteParam)
-; sprite (SingleByteParam)
-
- call GetScriptByte
- ld e, a
- ld d, $0
- ld hl, $d82e
- add hl, de
- call GetScriptByte
- ld [hl], a
- ret
-; 0x972dd
-
-Script_appear: ; 0x972dd
-; script command 0x6f
-; parameters:
-; person (SingleByteParam)
-
- call GetScriptByte
- call Unknown_0x971e3
- call $1956
- ld a, [$ffaf]
- ld b, $0
- call $730b
- ret
-; 0x972ee
-
-Script_disappear: ; 0x972ee
-; script command 0x6e
-; parameters:
-; person (SingleByteParam)
-
- call GetScriptByte
- call Unknown_0x971e3
- cp $fe
- jr nz, .asm_972fa ; 0x972f6 $2
- ld a, [$ffe0]
-.asm_972fa
- call $199f
- ld a, [$ffaf]
- ld b, $1
- call $730b
- ld a, $1
- ld hl, $5920
- rst $8
- ret
-; 0x9730b
-
-Unknown_0x9730b: ; 0x9730b
- push bc
- call $18d2
- ld hl, $000c
- add hl, bc
- pop bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld a, $ff
- cp e
- jr nz, .asm_97321 ; 0x9731a $5
- cp d
- jr nz, .asm_97321 ; 0x9731d $2
- xor a
- ret
-.asm_97321
- call BitTable1Func
- ret
-; 0x97325
-
-Script_follow: ; 0x97325
-; script command 0x70
-; parameters:
-; person2 (SingleByteParam)
-; person1 (SingleByteParam)
-
- call GetScriptByte
- call Unknown_0x971e3
- ld b, a
- call GetScriptByte
- call Unknown_0x971e3
- ld c, a
- ld a, $1
- ld hl, $5803
- rst $8
- ret
-; 0x9733a
-
-Script_stopfollow: ; 0x9733a
-; script command 0x71
-
- ld a, $1
- ld hl, $581f
- rst $8
- ret
-; 0x97341
-
-Script_moveperson: ; 0x97341
-; script command 0x72
-; parameters:
-; person (SingleByteParam)
-; x (SingleByteParam)
-; y (SingleByteParam)
-
- call GetScriptByte
- call Unknown_0x971e3
- ld b, a
- call GetScriptByte
- add $4
- ld d, a
- call GetScriptByte
- add $4
- ld e, a
- ld a, $2
- ld hl, $407e
- rst $8
- ret
-; 0x9735b
-
-Script_writepersonxy: ; 0x9735b
-; script command 0x73
-; parameters:
-; person (SingleByteParam)
-
- call GetScriptByte
- call Unknown_0x971e3
- cp $fe
- jr nz, .asm_97367 ; 0x97363 $2
- ld a, [$ffe0]
-.asm_97367
- ld b, a
- ld a, $2
- ld hl, $40a1
- rst $8
- ret
-; 0x9736f
-
-Script_follownotexact: ; 0x9736f
-; script command 0x77
-; parameters:
-; person2 (SingleByteParam)
-; person1 (SingleByteParam)
-
- call GetScriptByte
- call Unknown_0x971e3
- ld b, a
- call GetScriptByte
- call Unknown_0x971e3
- ld c, a
- ld a, $2
- ld hl, $439e
- rst $8
- ret
-; 0x97384
-
-Script_loademote: ; 0x97384
-; script command 0x74
-; parameters:
-; bubble (SingleByteParam)
-
- call GetScriptByte
- cp $ff
- jr nz, .asm_9738e ; 0x97389 $3
- ld a, [$c2dd]
-.asm_9738e
- ld c, a
- ld a, $5
- ld hl, $442f
- rst $8
- ret
-; 0x97396
-
-Script_showemote: ; 0x97396
-; script command 0x75
-; parameters:
-; bubble (SingleByteParam)
-; person (SingleByteParam)
-; time (DecimalParam)
-
- call GetScriptByte
- ld [$c2dd], a
- call GetScriptByte
- call Unknown_0x971e3
- cp $fe
- jr z, .asm_973a8 ; 0x973a4 $2
- ld [$ffe0], a
-.asm_973a8
- call GetScriptByte
- ld [$d44d], a
- ld b, $25
- ld de, $73b6
- jp $74cb
-; 0x973b6
-
-INCBIN "baserom.gbc",$973b6,$973c7 - $973b6
-
-Script_earthquake: ; 0x973c7
-; script command 0x78
-; parameters:
-; param (DecimalParam)
-
- ld hl, $73eb
- ld de, $d002
- ld bc, $0005
- call CopyBytes
- call GetScriptByte
- ld [$d003], a
- and $3f
- ld [$d005], a
- ld b, $25
- ld de, $73e6
- jp $74cb
-; 0x973e6
-
-INCBIN "baserom.gbc",$973e6,$973f0 - $973e6
-
-Script_loadpikachudata: ; 0x973f0
-; script command 0x5a
-
- ld a, $19
- ld [$d22e], a
- ld a, $5
- ld [$d143], a
- ret
-; 0x973fb
-
-Script_battlecheck: ; 0x973fb
-; script command 0x5b
-
- xor a
- ld [$d459], a
- ret
-; 0x97400
-
-Script_loadtrainerdata: ; 0x97400
-; script command 0x5c
-
- ld a, $81
- ld [$d459], a
- ld a, [$d043]
- ld [$d22f], a
- ld a, [$d044]
- ld [$d231], a
- ret
-; 0x97412
-
-Script_loadpokedata: ; 0x97412
-; script command 0x5d
-; parameters:
-; pokemon (PokemonParam)
-; level (DecimalParam)
-
- ld a, $80
- ld [$d459], a
- call GetScriptByte
- ld [$d22e], a
- call GetScriptByte
- ld [$d143], a
- ret
-; 0x97424
-
-Script_loadtrainer: ; 0x97424
-; script command 0x5e
-; parameters:
-; trainer_group (TrainerGroupParam)
-; trainer_id (TrainerIdParam)
-
- ld a, $81
- ld [$d459], a
- call GetScriptByte
- ld [$d22f], a
- call GetScriptByte
- ld [$d231], a
- ret
-; 0x97436
-
-Script_startbattle: ; 0x97436
-; script command 0x5f
-
- call $2879
- ld a, $16
- call $2d83
- ld a, [$d0ee]
- and $3f
- ld [$c2dd], a
- ret
-; 0x97447
-
-Script_catchtutorial: ; 0x97447
-; script command 0x61
-; parameters:
-; byte (SingleByteParam)
-
- call GetScriptByte
- ld [$d230], a
- call $2879
- ld a, $13
- ld hl, $6554
- rst $8
- jp $7491
-; 0x97459
-
-Script_returnafterbattle: ; 0x97459
-; script command 0x60
-
- ld hl, $d459
- ld d, [hl]
- ld [hl], $0
- ld a, [$d0ee]
- and $3f
- cp $1
- jr nz, .asm_97470 ; 0x97466 $8
- ld b, $4
- ld hl, $64c1
- jp ScriptJump
-.asm_97470
- bit 0, d
- jr z, .asm_9747c ; 0x97472 $8
- ld a, $3f
- ld hl, $4fec
- rst $8
- jr .asm_9748e ; 0x9747a $12
-.asm_9747c
- ld a, [$d0ee]
- bit 7, a
- jr z, .asm_9748e ; 0x97481 $b
- ld b, $24
- ld de, $4255
- ld a, $25
- ld hl, $7c4f
- rst $8
-.asm_9748e
- jp $7491
-; 0x97491
-
-Script_reloadmap: ; 0x97491
-; script command 0x7b
-
- xor a
- ld [$d459], a
- ld a, $f3
- ld [$ff9f], a
- ld a, $1
- call $261b
- call Unknown_0x96e11
- ret
-; 0x974a2
-
-Script_2call: ; 0x974a2
-; script command 0x0
-; parameters:
-; pointer (ScriptPointerLabelParam)
-
- ld a, [ScriptBank]
- ld b, a
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- jr ScriptCall
-; 0x974b0
-
-Script_3call: ; 0x974b0
-; script command 0x1
-; parameters:
-; pointer (ScriptPointerLabelBeforeBank)
-
- call GetScriptByte
- ld b, a
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- jr ScriptCall
-; 0x974be
-
-Script_2ptcall: ; 0x974be
-; script command 0x2
-; parameters:
-; pointer (PointerLabelToScriptPointer)
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld b, [hl]
- inc hl
- ld e, [hl]
- inc hl
- ld d, [hl]
- ; fallthrough
-
-ScriptCall: ; 0x974cb
- push de
- ld hl, $d43c
- ld e, [hl]
- inc [hl]
- ld d, $0
- ld hl, $d43d
- add hl, de
- add hl, de
- add hl, de
- pop de
- ld a, [ScriptBank]
- ld [hli], a
- ld a, [ScriptPos]
- ld [hli], a
- ld a, [ScriptPos + 1]
- ld [hl], a
- ld a, b
- ld [ScriptBank], a
- ld a, e
- ld [ScriptPos], a
- ld a, d
- ld [ScriptPos + 1], a
- ret
-; 0x974f3
-
-Unknown_0x974f3: ; 0x974f3
- ld a, [ScriptBank]
- or $80
- ld [ScriptBank], a
- jp $74cb
-; 0x974fe
-
-Script_2jump: ; 0x974fe
-; script command 0x3
-; parameters:
-; pointer (ScriptPointerLabelParam)
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld a, [ScriptBank]
- ld b, a
- jp ScriptJump
-; 0x9750d
-
-Script_3jump: ; 0x9750d
-; script command 0x4
-; parameters:
-; pointer (ScriptPointerLabelBeforeBank)
-
- call GetScriptByte
- ld b, a
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- jp ScriptJump
-; 0x9751c
-
-Script_2ptjump: ; 0x9751c
-; script command 0x5
-; parameters:
-; pointer (PointerLabelToScriptPointer)
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld b, [hl]
- inc hl
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp ScriptJump
-; 0x9752c
-
-Script_iffalse: ; 0x9752c
-; script command 0x8
-; parameters:
-; pointer (ScriptPointerLabelParam)
-
- ld a, [$c2dd]
- and a
- jp nz, $7596
- jp Script_2jump
-; 0x97536
-
-Script_iftrue: ; 0x97536
-; script command 0x9
-; parameters:
-; pointer (ScriptPointerLabelParam)
-
- ld a, [$c2dd]
- and a
- jp nz, Script_2jump
- jp $7596
-; 0x97540
-
-Script_if_equal: ; 0x97540
-; script command 0x6
-; parameters:
-; byte (SingleByteParam)
-; pointer (ScriptPointerLabelParam)
-
- call GetScriptByte
- ld hl, $c2dd
- cp [hl]
- jr z, Script_2jump ; 0x97547 $b5
- jr Unknown_97596 ; 0x97549 $4b
-; 0x9754b
-
-Script_if_not_equal: ; 0x9754b
-; script command 0x7
-; parameters:
-; byte (SingleByteParam)
-; pointer (ScriptPointerLabelParam)
-
- call GetScriptByte
- ld hl, $c2dd
- cp [hl]
- jr nz, Script_2jump ; 0x97552 $aa
- jr Unknown_97596 ; 0x97554 $40
-; 0x97556
-
-Script_if_less_than: ; 0x97556
-; script command 0xa
-; parameters:
-; byte (SingleByteParam)
-; pointer (ScriptPointerLabelParam)
-
- ld a, [$c2dd]
- ld b, a
- call GetScriptByte
- cp b
- jr c, Script_2jump ; 0x9755e $9e
- jr Unknown_97596 ; 0x97560 $34
-; 0x97562
-
-Script_if_greater_than: ; 0x97562
-; script command 0xb
-; parameters:
-; byte (SingleByteParam)
-; pointer (ScriptPointerLabelParam)
-
- call GetScriptByte
- ld b, a
- ld a, [$c2dd]
- cp b
- jr c, Script_2jump ; 0x9756a $92
- jr Unknown_97596 ; 0x9756c $28
-; 0x9756e
-
-Script_jumpstd: ; 0x9756e
-; script command 0xc
-; parameters:
-; predefined_script (MultiByteParam)
-
- call $757b
- jr ScriptJump ; 0x97571 $2a
-; 0x97573
-
-Script_callstd: ; 0x97573
-; script command 0xd
-; parameters:
-; predefined_script (MultiByteParam)
-
- call $757b
- ld d, h
- ld e, l
- jp $74cb
-; 0x9757b
-
-Unknown_0x9757b: ; 0x9757b
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld hl, $4000
- add hl, de
- add hl, de
- add hl, de
- ld a, $2f
- call GetFarByte
- ld b, a
- inc hl
- ld a, $2f
- call GetFarHalfword
- ret
-; 0x97596
-
-Unknown_97596: ; 0x97596
- call GetScriptByte
- call GetScriptByte
- ret
-; 0x9759d
-
-ScriptJump: ; 0x9759d
- ld a, b
- ld [ScriptBank], a
- ld a, l
- ld [ScriptPos], a
- ld a, h
- ld [ScriptPos + 1], a
- ret
-; 0x975aa
-
-Script_priorityjump: ; 0x975aa
-; script command 0x8d
-; parameters:
-; pointer (ScriptPointerLabelParam)
-
- ld a, [ScriptBank]
- ld [$d44e], a
- call GetScriptByte
- ld [$d44f], a
- call GetScriptByte
- ld [$d450], a
- ld hl, $d434
- set 3, [hl]
- ret
-; 0x975c2
-
-Script_checktriggers: ; 0x975c2
-; script command 0x13
-
- call $211b
- jr z, .asm_975cb ; 0x975c5 $4
- ld [$c2dd], a
- ret
-.asm_975cb
- ld a, $ff
- ld [$c2dd], a
- ret
-; 0x975d1
-
-Script_checkmaptriggers: ; 0x975d1
-; script command 0x11
-; parameters:
-; map_group (SingleByteParam)
-; map_id (SingleByteParam)
-
- call GetScriptByte
- ld b, a
- call GetScriptByte
- ld c, a
- call $2147
- ld a, d
- or e
- jr z, .asm_975e5 ; 0x975de $5
- ld a, [de]
- ld [$c2dd], a
- ret
-.asm_975e5
- ld a, $ff
- ld [$c2dd], a
- ret
-; 0x975eb
-
-Script_dotrigger: ; 0x975eb
-; script command 0x14
-; parameters:
-; trigger_id (SingleByteParam)
-
- ld a, [$dcb5]
- ld b, a
- ld a, [$dcb6]
- ld c, a
- jr Unknown_975fd ; 0x975f3 $8
-; 0x975f5
-
-Script_domaptrigger: ; 0x975f5
-; script command 0x12
-; parameters:
-; map_group (MapGroupParam)
-; map_id (MapIdParam)
-; trigger_id (SingleByteParam)
-
- call GetScriptByte
- ld b, a
- call GetScriptByte
- ld c, a
- ; fallthrough
-
-Unknown_975fd: ; 0x975fd
- call $2147
- ld a, d
- or e
- jr z, .asm_97608 ; 0x97602 $4
- call GetScriptByte
- ld [de], a
-.asm_97608
- ret
-; 0x97609
-
-Script_copybytetovar: ; 0x97609
-; script command 0x19
-; parameters:
-; address (RAMAddressParam)
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld a, [hl]
- ld [$c2dd], a
- ret
-; 0x97616
-
-Script_copyvartobyte: ; 0x97616
-; script command 0x1a
-; parameters:
-; address (RAMAddressParam)
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld a, [$c2dd]
- ld [hl], a
- ret
-; 0x97623
-
-Script_loadvar: ; 0x97623
-; script command 0x1b
-; parameters:
-; address (RAMAddressParam)
-; value (SingleByteParam)
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- call GetScriptByte
- ld [hl], a
- ret
-; 0x97630
-
-Script_writebyte: ; 0x97630
-; script command 0x15
-; parameters:
-; value (SingleByteParam)
-
- call GetScriptByte
- ld [$c2dd], a
- ret
-; 0x97637
-
-Script_addvar: ; 0x97637
-; script command 0x16
-; parameters:
-; value (SingleByteParam)
-
- call GetScriptByte
- ld hl, $c2dd
- add [hl]
- ld [hl], a
- ret
-; 0x97640
-
-Script_random: ; 0x97640
-; script command 0x17
-; parameters:
-; input (SingleByteParam)
-
- call GetScriptByte
- ld [$c2dd], a
- and a
- ret z
- ld c, a
- call $7673
- and a
- jr z, .asm_9765f ; 0x9764d $10
- ld b, a
- xor a
- sub b
- ld b, a
-.asm_97653
- push bc
- call $2f8c
- pop bc
- ld a, [$ffe1]
- cp b
- jr nc, .asm_97653 ; 0x9765b $f6
- jr .asm_97666 ; 0x9765d $7
-.asm_9765f
- push bc
- call $2f8c
- pop bc
- ld a, [$ffe1]
-.asm_97666
- push af
- ld a, [$c2dd]
- ld c, a
- pop af
- call $3110
- ld [$c2dd], a
- ret
-; 0x97673
-
-Unknown_0x97673: ; 0x97673
- xor a
- ld b, a
- sub c
-.asm_97676
- inc b
- sub c
- jr nc, .asm_97676 ; 0x97678 $fc
- dec b
- add c
- ret
-; 0x9767d
-
-Script_checkcode: ; 0x9767d
-; script command 0x1c
-; parameters:
-; variable_id (SingleByteParam)
-
- call GetScriptByte
- call $769e
- ld a, [de]
- ld [$c2dd], a
- ret
-; 0x97688
-
-Script_writevarcode: ; 0x97688
-; script command 0x1d
-; parameters:
-; variable_id (SingleByteParam)
-
- call GetScriptByte
- call $769e
- ld a, [$c2dd]
- ld [de], a
- ret
-; 0x97693
-
-Script_writecode: ; 0x97693
-; script command 0x1e
-; parameters:
-; variable_id (SingleByteParam)
-; value (SingleByteParam)
-
- call GetScriptByte
- call $769e
- call GetScriptByte
- ld [de], a
- ret
-; 0x9769e
-
-Unknown_0x9769e: ; 0x9769e
- ld c, a
- ld a, $20
- ld hl, $4648
- rst $8
- ret
-; 0x976a6
-
-Script_checkver: ; 0x976a6
-; script command 0x18
-
- ld a, [$76ad]
- ld [$c2dd], a
- ret
-; 0x976ad
-
-INCBIN "baserom.gbc",$976ad,$976ae - $976ad
-
-Script_pokenamemem: ; 0x976ae
-; script command 0x40
-; parameters:
-; pokemon (PokemonParam)
-; memory (SingleByteParam)
-
- call GetScriptByte
- and a
- jr nz, .asm_976b7 ; 0x976b2 $3
- ld a, [$c2dd]
-.asm_976b7
- ld [$d265], a
- call $343b
- ld de, $d073
-
-Unknown_976c0: ; 0x976c0
- call GetScriptByte
- cp $3
- jr c, .asm_976c8 ; 0x976c5 $1
- xor a
-.asm_976c8
- ld hl, $d099
- ld bc, $0013
- call AddNTimes
- call CopyName2
- ret
-; 0x976d5
-
-Script_itemtotext: ; 0x976d5
-; script command 0x41
-; parameters:
-; item (ItemLabelByte)
-; memory (SingleByteParam)
-
- call GetScriptByte
- and a
- jr nz, .asm_976de ; 0x976d9 $3
- ld a, [$c2dd]
-.asm_976de
- ld [$d265], a
- call GetItemName
- ld de, $d073
- jr Unknown_976c0 ; 0x976e7 $d7
-; 0x976e9
-
-Script_mapnametotext: ; 0x976e9
-; script command 0x42
-; parameters:
-; memory (SingleByteParam)
-
- ld a, [$dcb5]
- ld b, a
- ld a, [$dcb6]
- ld c, a
- call GetWorldMapLocation
-
-Unknown_976f4: ; 0x976f4
- ld e, a
- ld a, $72
- ld hl, $68a5
- rst $8
- ld de, $d073
- jp $76c0
-; 0x97701
-
-Script_displaylocation: ; 0x97701
-; script command 0xa5
-; parameters:
-; id (SingleByteParam)
-
- call GetScriptByte
- jr Unknown_976f4 ; 0x97704 $ee
-; 0x97706
-
-Script_trainertotext: ; 0x97706
-; script command 0x43
-; parameters:
-; trainer_id (TrainerGroupParam)
-; trainer_group (TrainerIdParam)
-; memory (SingleByteParam)
-
- call GetScriptByte
- ld c, a
- call GetScriptByte
- ld b, a
- ld a, $e
- ld hl, $594c
- rst $8
- jr Unknown_976c0 ; 0x97714 $aa
-; 0x97716
-
-Script_unknown0xa7: ; 0x97716
-; script command 0xa7
-
- call GetScriptByte
- ld [$cf61], a
-
-Unknown_9771c: ; 0x9771c
- call GetScriptByte
- ld [$cf60], a
- call GetName
- ld de, $d073
- jp $76c0
-; 0x9772b
-
-Script_unknown0xa6: ; 0x9772b
-; script command 0xa6
-
- ld a, $7
- ld [$cf61], a
- jr Unknown_9771c ; 0x97730 $ea
-; 0x97732
-
-Script_readmoney: ; 0x97732
-; script command 0x3d
-; parameters:
-; account (SingleByteParam)
-; memory (SingleByteParam)
-
- call $7771
- call $7861
- ld hl, $d073
- ld bc, $4306
- call $3198
- ld de, $d073
- jp $76c0
-; 0x97747
-
-Script_readcoins: ; 0x97747
-; script command 0x3e
-; parameters:
-; memory (SingleByteParam)
-
- call $7771
- ld hl, $d073
- ld de, $d855
- ld bc, $4206
- call $3198
- ld de, $d073
- jp $76c0
-; 0x9775c
-
-Script_RAM2MEM: ; 0x9775c
-; script command 0x3f
-; parameters:
-; memory (SingleByteParam)
-
- call $7771
- ld de, $c2dd
- ld hl, $d073
- ld bc, $4103
- call $3198
- ld de, $d073
- jp $76c0
-; 0x97771
-
-Unknown_0x97771: ; 0x97771
- ld hl, $d073
- ld bc, $000b
- ld a, $50
- call ByteFill
- ret
-; 0x9777d
-
-Script_stringtotext: ; 0x9777d
-; script command 0x44
-; parameters:
-; text_pointer (EncodedTextLabelParam)
-; memory (SingleByteParam)
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld a, [ScriptBank]
- ld hl, $30d6
- rst $8
- ld de, $d086
- jp $76c0
-; 0x97792
-
-Script_givepokeitem: ; 0x97792
-; script command 0x2f
-; parameters:
-; pointer (PointerParamToItemAndLetter)
-
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- ld a, [ScriptBank]
- call GetFarByte
- ld b, a
- push bc
- inc hl
- ld bc, $0020
- ld de, $d002
- ld a, [ScriptBank]
- call FarCopyBytes
- pop bc
- ld a, $11
- ld hl, $46cc
- rst $8
- ret
-; 0x977b7
-
-Script_checkpokeitem: ; 0x977b7
-; script command 0x30
-; parameters:
-; pointer (PointerParamToItemAndLetter)
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld a, [ScriptBank]
- ld b, a
- ld a, $11
- ld hl, $4654
- rst $8
- ret
-; 0x977ca
-
-Script_giveitem: ; 0x977ca
-; script command 0x1f
-; parameters:
-; item (ItemLabelByte)
-; quantity (SingleByteParam)
-
- call GetScriptByte
- cp $ff
- jr nz, .asm_977d4 ; 0x977cf $3
- ld a, [$c2dd]
-.asm_977d4
- ld [$d106], a
- call GetScriptByte
- ld [$d10c], a
- ld hl, $d892
- call $2f66
- jr nc, .asm_977eb ; 0x977e3 $6
- ld a, $1
- ld [$c2dd], a
- ret
-.asm_977eb
- xor a
- ld [$c2dd], a
- ret
-; 0x977f0
-
-Script_takeitem: ; 0x977f0
-; script command 0x20
-; parameters:
-; item (ItemLabelByte)
-; quantity (DecimalParam)
-
- xor a
- ld [$c2dd], a
- call GetScriptByte
- ld [$d106], a
- call GetScriptByte
- ld [$d10c], a
- ld a, $ff
- ld [$d107], a
- ld hl, $d892
- call $2f53
- ret nc
- ld a, $1
- ld [$c2dd], a
- ret
-; 0x97812
-
-Script_checkitem: ; 0x97812
-; script command 0x21
-; parameters:
-; item (ItemLabelByte)
-
- xor a
- ld [$c2dd], a
- call GetScriptByte
- ld [$d106], a
- ld hl, $d892
- call $2f79
- ret nc
- ld a, $1
- ld [$c2dd], a
- ret
-; 0x97829
-
-Script_givemoney: ; 0x97829
-; script command 0x22
-; parameters:
-; account (SingleByteParam)
-; money (MoneyByteParam)
-
- call $7861
- call $786d
- ld a, $5
- ld hl, $5fd7
- rst $8
- ret
-; 0x97836
-
-Script_takemoney: ; 0x97836
-; script command 0x23
-; parameters:
-; account (SingleByteParam)
-; money (MoneyByteParam)
-
- call $7861
- call $786d
- ld a, $5
- ld hl, $5ffa
- rst $8
- ret
-; 0x97843
-
-Script_checkmoney: ; 0x97843
-; script command 0x24
-; parameters:
-; account (SingleByteParam)
-; money (MoneyByteParam)
-
- call $7861
- call $786d
- ld a, $5
- ld hl, $600b
- rst $8
-; 0x9784f
-
-Unknown_9784f: ; 0x9784f
- jr c, .asm_9785b ; 0x9784f $a
- jr z, .asm_97857 ; 0x97851 $4
- ld a, $0
- jr .asm_9785d ; 0x97855 $6
-.asm_97857
- ld a, $1
- jr .asm_9785d ; 0x97859 $2
-.asm_9785b
- ld a, $2
-.asm_9785d
- ld [$c2dd], a
- ret
-; 0x97861
-
-Unknown_0x97861: ; 0x97861
- call GetScriptByte
- and a
- ld de, $d84e
- ret z
- ld de, $d851
- ret
-; 0x9786d
-
-Unknown_0x9786d: ; 0x9786d
- ld bc, $ffc3
- push bc
- call GetScriptByte
- ld [bc], a
- inc bc
- call GetScriptByte
- ld [bc], a
- inc bc
- call GetScriptByte
- ld [bc], a
- pop bc
- ret
-; 0x97881
-
-Script_givecoins: ; 0x97881
-; script command 0x25
-; parameters:
-; coins (CoinByteParam)
-
- call $78a0
- ld a, $5
- ld hl, $606f
- rst $8
- ret
-; 0x9788b
-
-Script_takecoins: ; 0x9788b
-; script command 0x26
-; parameters:
-; coins (CoinByteParam)
-
- call $78a0
- ld a, $5
- ld hl, $608f
- rst $8
- ret
-; 0x97895
-
-Script_checkcoins: ; 0x97895
-; script command 0x27
-; parameters:
-; coins (CoinByteParam)
-
- call $78a0
- ld a, $5
- ld hl, $60a1
- rst $8
- jr Unknown_9784f ; 0x9789e $af
- call GetScriptByte
- ld [$ffc4], a
- call GetScriptByte
- ld [$ffc3], a
- ld bc, $ffc3
- ret
-; 0x978ae
-
-Script_checktime: ; 0x978ae
-; script command 0x2b
-; parameters:
-; time (SingleByteParam)
-
- xor a
- ld [$c2dd], a
- ld a, $3
- ld hl, $4000
- rst $8
- call GetScriptByte
- and c
- ret z
- ld a, $1
- ld [$c2dd], a
- ret
-; 0x978c3
-
-Script_checkpoke: ; 0x978c3
-; script command 0x2c
-; parameters:
-; pkmn (PokemonParam)
-
- xor a
- ld [$c2dd], a
- call GetScriptByte
- ld hl, $dcd8
- ld de, $0001
- call IsInArray
- ret nc
- ld a, $1
- ld [$c2dd], a
- ret
-; 0x978da
-
-Script_addcellnum: ; 0x978da
-; script command 0x28
-; parameters:
-; person (SingleByteParam)
-
- xor a
- ld [$c2dd], a
- call GetScriptByte
- ld c, a
- ld a, $24
- ld hl, $4000
- rst $8
- ret nc
- ld a, $1
- ld [$c2dd], a
- ret
-; 0x978ef
-
-Script_delcellnum: ; 0x978ef
-; script command 0x29
-; parameters:
-; person (SingleByteParam)
-
- xor a
- ld [$c2dd], a
- call GetScriptByte
- ld c, a
- ld a, $24
- ld hl, $400f
- rst $8
- ret nc
- ld a, $1
- ld [$c2dd], a
- ret
-; 0x97904
-
-Script_checkcellnum: ; 0x97904
-; script command 0x2a
-; parameters:
-; person (SingleByteParam)
-
- xor a
- ld [$c2dd], a
- call GetScriptByte
- ld c, a
- ld a, $24
- ld hl, $4019
- rst $8
- ret nc
- ld a, $1
- ld [$c2dd], a
- ret
-; 0x97919
-
-Script_specialphonecall: ; 0x97919
-; script command 0x9c
-; parameters:
-; call_id (MultiByteParam)
-
- call GetScriptByte
- ld [$dc31], a
- call GetScriptByte
- ld [$dc32], a
- ret
-; 0x97926
-
-Script_checkphonecall: ; 0x97926
-; script command 0x9d
-
- ld a, [$dc31]
- and a
- jr z, .asm_9792e ; 0x9792a $2
- ld a, $1
-.asm_9792e
- ld [$c2dd], a
- ret
-; 0x97932
-
-Script_givepoke: ; 0x97932
-; script command 0x2d
-; parameters:
-; pokemon (PokemonParam)
-; level (DecimalParam)
-; item (ItemLabelByte)
-; trainer (DecimalParam)
-; trainer_name_pointer (MultiByteParam)
-; pkmn_nickname (MultiByteParam)
-
- call GetScriptByte
- ld [$d108], a
- call GetScriptByte
- ld [$d143], a
- call GetScriptByte
- ld [$d106], a
- call GetScriptByte
- and a
- ld b, a
- jr z, .asm_9795d ; 0x97949 $12
- ld hl, ScriptPos
- ld e, [hl]
- inc hl
- ld d, [hl]
- call GetScriptByte
- call GetScriptByte
- call GetScriptByte
- call GetScriptByte
-.asm_9795d
- ld a, $3
- ld hl, $6277
- rst $8
- ld a, b
- ld [$c2dd], a
- ret
-; 0x97968
-
-Script_giveegg: ; 0x97968
-; script command 0x2e
-; parameters:
-; pkmn (PokemonParam)
-; level (DecimalParam)
-
- xor a
- ld [$c2dd], a
- ld [$cf5f], a
- call GetScriptByte
- ld [$d108], a
- call GetScriptByte
- ld [$d143], a
- ld a, $3
- ld hl, $5f8c
- rst $8
- ret nc
- ld a, $2
- ld [$c2dd], a
- ret
-; 0x97988
-
-Script_setbit1: ; 0x97988
-; script command 0x33
-; parameters:
-; bit_number (MultiByteParam)
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld b, $1
- call BitTable1Func
- ret
-; 0x97996
-
-Script_clearbit1: ; 0x97996
-; script command 0x32
-; parameters:
-; bit_number (MultiByteParam)
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld b, $0
- call BitTable1Func
- ret
-; 0x979a4
-
-Script_checkbit1: ; 0x979a4
-; script command 0x31
-; parameters:
-; bit_number (MultiByteParam)
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld b, $2
- call BitTable1Func
- ld a, c
- and a
- jr z, .asm_979b7 ; 0x979b3 $2
- ld a, $1
-.asm_979b7
- ld [$c2dd], a
- ret
-; 0x979bb
-
-Script_setbit2: ; 0x979bb
-; script command 0x36
-; parameters:
-; bit_number (MultiByteParam)
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld b, $1
- call $79ee
- ret
-; 0x979c9
-
-Script_clearbit2: ; 0x979c9
-; script command 0x35
-; parameters:
-; bit_number (MultiByteParam)
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld b, $0
- call $79ee
- ret
-; 0x979d7
-
-Script_checkbit2: ; 0x979d7
-; script command 0x34
-; parameters:
-; bit_number (MultiByteParam)
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld b, $2
- call $79ee
- ld a, c
- and a
- jr z, .asm_979ea ; 0x979e6 $2
- ld a, $1
-.asm_979ea
- ld [$c2dd], a
- ret
-; 0x979ee
-
-Unknown_0x979ee: ; 0x979ee
- ld a, $20
- ld hl, $4430
- rst $8
- ret
-; 0x979f5
-
-Script_wildon: ; 0x979f5
-; script command 0x38
-
- ld hl, $d84c
- set 5, [hl]
- ret
-; 0x979fb
-
-Script_wildoff: ; 0x979fb
-; script command 0x37
-
- ld hl, $d84c
- res 5, [hl]
- ret
-; 0x97a01
-
-Script_xycompare: ; 0x97a01
-; script command 0x39
-; parameters:
-; pointer (MultiByteParam)
-
- call GetScriptByte
- ld [$d453], a
- call GetScriptByte
- ld [$d454], a
- ret
-; 0x97a0e
-
-Script_warpfacing: ; 0x97a0e
-; script command 0xa3
-; parameters:
-; facing (SingleByteParam)
-; map_group (MapGroupParam)
-; map_id (MapIdParam)
-; x (SingleByteParam)
-; y (SingleByteParam)
-
- call GetScriptByte
- and $3
- ld c, a
- ld a, [$d45b]
- set 5, a
- or c
- ld [$d45b], a
-; 0x97a1d
-
-Script_warp: ; 0x97a1d
-; script command 0x3c
-; parameters:
-; map_group (MapGroupParam)
-; map_id (MapIdParam)
-; x (SingleByteParam)
-; y (SingleByteParam)
-
- call GetScriptByte
- and a
- jr z, .asm_97a4a ; 0x97a21 $27
- ld [$dcb5], a
- call GetScriptByte
- ld [$dcb6], a
- call GetScriptByte
- ld [$dcb8], a
- call GetScriptByte
- ld [$dcb7], a
- ld a, $ff
- ld [$d001], a
- ld a, $f1
- ld [$ff9f], a
- ld a, $1
- call $261b
- call Unknown_0x96e11
- ret
-.asm_97a4a
- call GetScriptByte
- call GetScriptByte
- call GetScriptByte
- ld a, $ff
- ld [$d001], a
- ld a, $fb
- ld [$ff9f], a
- ld a, $1
- call $261b
- call Unknown_0x96e11
- ret
-; 0x97a65
-
-Script_warpmod: ; 0x97a65
-; script command 0x3a
-; parameters:
-; warp_id (SingleByteParam)
-; map_group (MapGroupParam)
-; map_id (MapIdParam)
-
- call GetScriptByte
- ld [$dcac], a
- call GetScriptByte
- ld [$dcad], a
- call GetScriptByte
- ld [$dcae], a
- ret
-; 0x97a78
-
-Script_blackoutmod: ; 0x97a78
-; script command 0x3b
-; parameters:
-; map_group (MapGroupParam)
-; map_id (MapIdParam)
-
- call GetScriptByte
- ld [$dcb2], a
- call GetScriptByte
- ld [$dcb3], a
- ret
-; 0x97a85
-
-Script_reloadmapmusic: ; 0x97a85
-; script command 0x83
-
- ld a, $1
- ld [$c2c1], a
- ret
-; 0x97a8b
-
-Script_writecmdqueue: ; 0x97a8b
-; script command 0x7d
-; parameters:
-; queue_pointer (MultiByteParam)
-
- call GetScriptByte
- ld e, a
- call GetScriptByte
- ld d, a
- ld a, [ScriptBank]
- ld b, a
- ld a, $25
- ld hl, $7e31
- rst $8
- ret
-; 0x97a9e
-
-Script_delcmdqueue: ; 0x97a9e
-; script command 0x7e
-; parameters:
-; byte (SingleByteParam)
-
- xor a
- ld [$c2dd], a
- call GetScriptByte
- ld b, a
- ld a, $25
- ld hl, $7e5c
- rst $8
- ret c
- ld a, $1
- ld [$c2dd], a
- ret
-; 0x97ab3
-
-Script_changemap: ; 0x97ab3
-; script command 0x79
-; parameters:
-; map_data_pointer (MapDataPointerParam)
-
- call GetScriptByte
- ld [$d1a0], a
- call GetScriptByte
- ld [$d1a1], a
- call GetScriptByte
- ld [$d1a2], a
- call $24e4
- call $2879
- ret
-; 0x97acc
-
-Script_changeblock: ; 0x97acc
-; script command 0x7a
-; parameters:
-; x (SingleByteParam)
-; y (SingleByteParam)
-; block (SingleByteParam)
-
- call GetScriptByte
- add $4
- ld d, a
- call GetScriptByte
- add $4
- ld e, a
- call $2a66
- call GetScriptByte
- ld [hl], a
- call $2879
- ret
-; 0x97ae3
-
-Script_reloadmappart: ; 0x97ae3
-; script command 0x7c
-
- xor a
- ld [$ffd4], a
- call $2173
- call $2914
- ld a, $41
- ld hl, $4061
- rst $8
- call $1ad2
- ret
-; 0x97af6
-
-Script_warpcheck: ; 0x97af6
-; script command 0x8e
-
- call $224a
- ret nc
- ld a, $25
- ld hl, $66d0
- rst $8
- ret
-; 0x97b01
-
-Unknown_0x97b01: ; 0x97b01
- ld a, $25
- ld hl, $66d0
- rst $8
- ret
-; 0x97b08
-
-Script_newloadmap: ; 0x97b08
-; script command 0x8a
-; parameters:
-; which_method (SingleByteParam)
-
- call GetScriptByte
- ld [$ff9f], a
- ld a, $1
- call $261b
- call Unknown_0x96e11
- ret
-; 0x97b16
-
-Script_reloadandreturn: ; 0x97b16
-; script command 0x92
-
- call $7b08
- jp $7b74
-; 0x97b1c
-
-Script_loadfont: ; 0x97b1c
-; script command 0x47
-
- call $2e08
- ret
-; 0x97b20
-
-Script_refreshscreen: ; 0x97b20
-; script command 0x48
-; parameters:
-; dummy (SingleByteParam)
-
- call $2dba
- call GetScriptByte
- ret
-; 0x97b27
-
-Script_loadbytec1ce: ; 0x97b27
-; script command 0x4a
-; parameters:
-; byte (SingleByteParam)
-
- call GetScriptByte
- ld [$c2cf], a
- ret
-; 0x97b2e
-
-INCBIN "baserom.gbc",$97b2e,$97b2f - $97b2e
-
-Script_loadmovesprites: ; 0x97b2f
-; script command 0x49
-
- call $2e20
- call $2dcf
- ret
-; 0x97b36
-
-Script_passtoengine: ; 0x97b36
-; script command 0x89
-; parameters:
-; data_pointer (PointerLabelBeforeBank)
-
- call GetScriptByte
- push af
- call GetScriptByte
- ld l, a
- call GetScriptByte
- ld h, a
- pop af
- call StartAutoInput
- ret
-; 0x97b47
-
-Script_pause: ; 0x97b47
-; script command 0x8b
-; parameters:
-; length (DecimalParam)
-
- call GetScriptByte
- and a
- jr z, .asm_97b50 ; 0x97b4b $3
- ld [$d44d], a
-.asm_97b50
- ld c, $2
- call DelayFrames
- ld hl, $d44d
- dec [hl]
- jr nz, .asm_97b50 ; 0x97b59 $f5
- ret
-; 0x97b5c
-
-Script_deactivatefacing: ; 0x97b5c
-; script command 0x8c
-; parameters:
-; time (SingleByteParam)
-
- call GetScriptByte
- and a
- jr z, .asm_97b65 ; 0x97b60 $3
- ld [$d44d], a
-.asm_97b65
- ld a, $3
- ld [$d437], a
- call Unknown_0x96e11
- ret
-; 0x97b6e
-
-Script_ptpriorityjump: ; 0x97b6e
-; script command 0x8f
-; parameters:
-; pointer (ScriptPointerLabelParam)
-
- call Unknown_0x96e11
- jp Script_2jump
-; 0x97b74
-
-Script_end: ; 0x97b74
-; script command 0x91
-
- call $7b9a
- jr c, .asm_97b7a ; 0x97b77 $1
- ret
-.asm_97b7a
- xor a
- ld [$d438], a
- ld a, $0
- ld [$d437], a
- ld hl, $d434
- res 0, [hl]
- call Unknown_0x96e11
- ret
-; 0x97b8c
-
-Script_return: ; 0x97b8c
-; script command 0x90
-
- call $7b9a
- jr c, .asm_97b91 ; 0x97b8f $0
-.asm_97b91
- ld hl, $d434
- res 0, [hl]
- call Unknown_0x96e11
- ret
-; 0x97b9a
-
-Unknown_0x97b9a: ; 0x97b9a
- ld hl, $d43c
- ld a, [hl]
- and a
- jr z, .asm_97bbe ; 0x97b9f $1d
- dec [hl]
- ld e, [hl]
- ld d, $0
- ld hl, $d43d
- add hl, de
- add hl, de
- add hl, de
- ld a, [hli]
- ld b, a
- and $7f
- ld [ScriptBank], a
- ld a, [hli]
- ld e, a
- ld [ScriptPos], a
- ld a, [hl]
- ld d, a
- ld [ScriptPos + 1], a
- and a
- ret
-.asm_97bbe
- scf
- ret
-; 0x97bc0
-
-Script_resetfuncs: ; 0x97bc0
-; script command 0x93
-
- xor a
- ld [$d43c], a
- ld [$d438], a
- ld a, $0
- ld [$d437], a
- ld hl, $d434
- res 0, [hl]
- call Unknown_0x96e11
- ret
-; 0x97bd5
-
-Script_halloffame: ; 0x97bd5
-; script command 0xa1
-
- ld hl, $cfbc
- res 0, [hl]
- ld a, BANK(HallOfFame1)
- ld hl, HallOfFame1
- rst $8
- ld a, BANK(HallOfFame2)
- ld hl, HallOfFame2
- rst $8
- ld a, BANK(HallOfFame3)
- ld hl, HallOfFame3
- rst $8
- ld hl, $cfbc
- set 0, [hl]
- jr DisplayCredits
-; 0x97bf3
-
-Script_credits: ; 0x97bf3
-; script command 0xa2
-
- ld a, $21
- ld hl, $6455
- rst $8
- ; fallthrough
-DisplayCredits:
- call $7bc0
- ld a, $3
- call $261b
- call Unknown_0x96e11
- ret
-; 0x97c05
-
-Script_unknown0xa8: ; 0x97c05
-; script command 0xa8
-; parameters:
-; unknown (SingleByteParam)
-
- push bc
- call GetScriptByte
-.asm_97c09
- push af
- ld c, $6
- call DelayFrames
- pop af
- dec a
- jr nz, .asm_97c09 ; 0x97c11 $f6
- pop bc
- ret
-; 0x97c15
-
-Script_unknown0xa9: ; 0x97c15
-; script command 0xa9
-
- ld a, $13
- ld hl, $4ffe
- rst $8
- ld a, c
- ld [$c2dd], a
- ret
-; 0x97c20
--- a/vblank.asm
+++ /dev/null
@@ -1,539 +1,0 @@
-; VBlank is the interrupt responsible for updating VRAM.
-
-; In Pokemon Crystal, VBlank has been hijacked to act as the
-; main loop. After time-sensitive graphics operations have been
-; performed, joypad input and sound functions are executed.
-
-; This prevents the display and audio output from lagging.
-
- push af
- push bc
- push de
- push hl
-
-; get vblank type
- ld a, [$ff9e]
- and $7
-
-; get fn pointer
- ld e, a
- ld d, $0
- ld hl, .VBlanks
- add hl, de
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
-
-; down to business
- call JpHl
-
-; since this is called once per frame
- call GameTimer
-
- pop hl
- pop de
- pop bc
- pop af
- reti
-; 2a1
-
-.VBlanks ; 2a1
- dw VBlank0 ; 0
- dw VBlank1 ; 1
- dw VBlank2 ; 2
- dw VBlank3 ; 3
- dw VBlank4 ; 4
- dw VBlank5 ; 5
- dw VBlank6 ; 6
- dw VBlank0 ; 7
-; 2b1
-
-
-VBlank0: ; 2b1
-; normal operation
-
-; rng
-; scx, scy, wy, wx
-; bg map buffer
-; palettes
-; dma transfer
-; bg map
-; tiles
-; oam
-; joypad
-; sound
-
-; inc frame counter
- ld hl, $ff9b
- inc [hl]
-
-; advance rng
- ld a, [rDIV]
- ld b, a
- ld a, [$ffe1]
- adc b
- ld [$ffe1], a
-
- ld a, [rDIV]
- ld b, a
- ld a, [$ffe2]
- sbc b
- ld [$ffe2], a
-
-; save bank
- ld a, [$ff9d] ; current bank
- ld [$ff8a], a
-
-; scroll x
- ld a, [$ffcf]
- ld [rSCX], a
-; scroll y
- ld a, [$ffd0]
- ld [rSCY], a
-; window y
- ld a, [$ffd2]
- ld [rWY], a
-; window x + 7
- ld a, [$ffd1]
- ld [rWX], a
-
-; some time management is in order
-; only have time for one of these during vblank
-
-; bg map buffer has priority
- call UpdateBGMapBuffer
- jr c, .doneframeaction
-
-; then pals
- call UpdatePalsIfCGB
- jr c, .doneframeaction
-
-; dma transfer
- call DMATransfer
- jr c, .doneframeaction
-
-; bg map
- call UpdateBGMap
-
-; these have their own timing checks
- call SafeLoadTiles
- call SafeLoadTiles2
- call SafeTileAnimation
-
-.doneframeaction
-; oam update off?
- ld a, [$ffd8]
- and a
- jr nz, .vblankoccurred
-
-; update oam by dma transfer
- call hPushOAM
-; 403f:
-; ld a, $c4
-; ld [rDMA], a
-; ld a, $28
-; .loop
-; dec a
-; jr nz, .loop
-; ret
-
-
-; vblank-sensitive operations are done
-
-.vblankoccurred
-; tell other fns vblank happened
- xor a
- ld [VBlankOccurred], a
-
-; dec $cfb1 until 0
- ld a, [$cfb1]
- and a
- jr z, .textdelay
- dec a
- ld [$cfb1], a
-
-.textdelay
-; dec text delay counter until 0
- ld a, [TextDelayFrames]
- and a
- jr z, .joypad
- dec a
- ld [TextDelayFrames], a
-
-.joypad
- call Joypad
-
-; update sound
- ld a, BANK(UpdateSound)
- rst Bankswitch ; bankswitch
- call UpdateSound
- ld a, [$ff8a]
- rst Bankswitch ; restore bank
-
-;
- ld a, [$ff98]
- ld [$ffe3], a
-
- ret
-; 325
-
-
-VBlank2: ; 325
-; sound only
-
-; save bank
- ld a, [$ff9d]
- ld [$ff8a], a
-
-; update sound
- ld a, BANK(UpdateSound)
- rst Bankswitch ; bankswitch
- call UpdateSound
-
-; restore bank
- ld a, [$ff8a]
- rst Bankswitch
-
-; tell other fns vblank happened
- xor a
- ld [VBlankOccurred], a
- ret
-; 337
-
-
-VBlank1: ; 337
-; scx, scy
-; palettes
-; bg map
-; tiles
-; oam
-; sound / lcd stat
-
-; save bank
- ld a, [$ff9d]
- ld [$ff8a], a
-
-; scroll x
- ld a, [$ffcf]
- ld [rSCX], a
-
-; scroll y
- ld a, [$ffd0]
- ld [rSCY], a
-
-; time-sensitive fns
- call UpdatePals
- jr c, .vblankoccurred
-
-; these have their own timing checks
- call UpdateBGMap
- call LoadTiles
-; update oam by dma transfer
- call hPushOAM
-; 403f:
-; ld a, $c4
-; ld [rDMA], a
-; ld a, $28
-; .loop
-; dec a
-; jr nz, .loop
-; ret
-
-.vblankoccurred
-; tell other fns vblank happened
- xor a
- ld [VBlankOccurred], a
-
-; get requested ints
- ld a, [rIF]
- ld b, a
-; discard requested ints
- xor a
- ld [rIF], a
-; enable lcd stat
- ld a, %10 ; lcd stat
- ld [rIE], a
-; rerequest serial int if applicable (still disabled)
-; request lcd stat
- ld a, b
- and %1000 ; serial
- or %10 ; lcd stat
- ld [rIF], a
-
- ei
-; update sound
- ld a, BANK(UpdateSound)
- rst Bankswitch ; bankswitch
- call UpdateSound
-; restore bank
- ld a, [$ff8a]
- rst Bankswitch
- di
-
-; get requested ints
- ld a, [rIF]
- ld b, a
-; discard requested ints
- xor a
- ld [rIF], a
-; enable ints besides joypad
- ld a, %1111 ; serial timer lcdstat vblank
- ld [rIE], a
-; rerequest ints
- ld a, b
- ld [rIF], a
- ret
-; 37f
-
-
-UpdatePals: ; 37f
-; update pals for either dmg or cgb
-
-; check cgb
- ld a, [$ffe6]
- and a
- jp nz, UpdateCGBPals
-
-; update gb pals
- ld a, [$cfc7]
- ld [rBGP], a
-
- ld a, [$cfc8]
- ld [rOBP0], a
-
- ld a, [$cfc9]
- ld [rOBP1], a
-
- and a
- ret
-; 396
-
-
-VBlank3: ; 396
-; scx, scy
-; palettes
-; bg map
-; tiles
-; oam
-; sound / lcd stat
-
-; save bank
- ld a, [$ff9d]
- ld [$ff8a], a
-
-; scroll x
- ld a, [$ffcf]
- ld [rSCX], a
-; scroll y
- ld a, [$ffd0]
- ld [rSCY], a
-
-; any pals to update?
- ld a, [$ffe5]
- and a
- call nz, ForceUpdateCGBPals
- jr c, .vblankoccurred
-; else
- call UpdateBGMap
- call LoadTiles
-
-; update oam by dma transfer
- call hPushOAM
-; 403f:
-; ld a, $c4 ; Sprites / $100
-; ld [rDMA], a
-; ld a, $28
-; .loop
-; dec a
-; jr nz, .loop
-; ret
-
-.vblankoccurred
-; tell other fns vblank happened
- xor a
- ld [VBlankOccurred], a
-
-; save int flag
- ld a, [rIF]
- push af
-; reset ints
- xor a
- ld [rIF], a
-; force lcdstat int during sound update
- ld a, %10 ; lcd stat
- ld [rIE], a
- ld [rIF], a
-
- ei
-; update sound
- ld a, BANK(UpdateSound)
- rst Bankswitch ; bankswitch
- call UpdateSound
-; restore bank
- ld a, [$ff8a]
- rst Bankswitch
- di
-
-; request lcdstat
- ld a, [rIF]
- ld b, a
-; and any other ints
- pop af
- or b
- ld b, a
-; reset ints
- xor a
- ld [rIF], a
-; enable ints besides joypad
- ld a, %1111 ; serial timer lcdstat vblank
- ld [rIE], a
-; request ints
- ld a, b
- ld [rIF], a
- ret
-; 3df
-
-
-VBlank4: ; 3df
-; bg map
-; tiles
-; oam
-; joypad
-; serial
-; sound
-
-; save bank
- ld a, [$ff9d]
- ld [$ff8a], a
-
- call UpdateBGMap
- call SafeLoadTiles
-
-; update oam by dma transfer
- call hPushOAM
-; 403f:
-; ld a, $c4
-; ld [rDMA], a
-; ld a, $28
-; .loop
-; dec a
-; jr nz, .loop
-; ret
-
-; update joypad
- call Joypad
-
-; tell other fns vblank happened
- xor a
- ld [VBlankOccurred], a
-
-; handshake
- call AskSerial
-
-; update sound
- ld a, BANK(UpdateSound)
- rst Bankswitch ; bankswitch
- call UpdateSound
-; restore bank
- ld a, [$ff8a]
- rst Bankswitch
- ret
-; 400
-
-
-VBlank5: ; 400
-; scx
-; palettes
-; bg map
-; tiles
-; joypad
-;
-
-; save bank
- ld a, [$ff9d]
- ld [$ff8a], a
-
-; scroll x
- ld a, [$ffcf]
- ld [rSCX], a
-
-; if we can update pals, skip this part
- call UpdatePalsIfCGB
- jr c, .vblankoccurred
-
- call UpdateBGMap
- call SafeLoadTiles
-
-.vblankoccurred
-; tell other fns vblank happened
- xor a
- ld [VBlankOccurred], a
-
-; joypad
- call Joypad
-
-; discard requested ints
- xor a
- ld [rIF], a
-; enable lcd stat
- ld a, %10 ; lcd stat
- ld [rIE], a
-; request lcd stat
- ld [rIF], a
-
- ei
-; update sound
- ld a, BANK(UpdateSound)
- rst Bankswitch ; bankswitch
- call UpdateSound
-; restore bank
- ld a, [$ff8a]
- rst Bankswitch
- di
-
-; discard requested ints
- xor a
- ld [rIF], a
-; enable ints besides joypad
- ld a, %1111 ; serial timer lcdstat vblank
- ld [rIE], a
- ret
-; 436
-
-
-VBlank6: ; 436
-; palettes
-; tiles
-; dma transfer
-; sound
-
-; save bank
- ld a, [$ff9d]
- ld [$ff8a], a
-
-; inc frame counter
- ld hl, $ff9b
- inc [hl]
-
- call UpdateCGBPals
- jr c, .vblankoccurred
-
- call SafeLoadTiles
- call SafeLoadTiles2
- call DMATransfer
-
-.vblankoccurred
-; tell other fns vblank happened
- xor a
- ld [VBlankOccurred], a
-
-; update sound
- ld a, BANK(UpdateSound)
- rst Bankswitch ; bankswitch
- call UpdateSound
-; restore bank
- ld a, [$ff8a]
- rst Bankswitch
- ret
-; 45a