From fb931fe616504a8cf141521dec6fc6f7d236bff8 Mon Sep 17 00:00:00 2001 From: yenatch Date: Mon, 17 Jun 2013 21:26:33 -0400 Subject: move miscellaneous asm into engine/ --- bittable2.asm | 198 ---- credits.asm | 824 ------------- engine/bittable2.asm | 198 ++++ engine/credits.asm | 824 +++++++++++++ engine/joypad.asm | 275 +++++ engine/landmarks.asm | 539 +++++++++ engine/scripting.asm | 3127 ++++++++++++++++++++++++++++++++++++++++++++++++++ engine/vblank.asm | 539 +++++++++ joypad.asm | 275 ----- landmarks.asm | 539 --------- main.asm | 12 +- scripting.asm | 3127 -------------------------------------------------- vblank.asm | 539 --------- 13 files changed, 5508 insertions(+), 5508 deletions(-) delete mode 100644 bittable2.asm delete mode 100644 credits.asm create mode 100644 engine/bittable2.asm create mode 100644 engine/credits.asm create mode 100644 engine/joypad.asm create mode 100644 engine/landmarks.asm create mode 100644 engine/scripting.asm create mode 100644 engine/vblank.asm delete mode 100644 joypad.asm delete mode 100644 landmarks.asm delete mode 100644 scripting.asm delete mode 100644 vblank.asm diff --git a/bittable2.asm b/bittable2.asm deleted file mode 100644 index 5527226e4..000000000 --- a/bittable2.asm +++ /dev/null @@ -1,198 +0,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 diff --git a/credits.asm b/credits.asm deleted file mode 100644 index d5e4399b9..000000000 --- a/credits.asm +++ /dev/null @@ -1,824 +0,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 -; 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, "@" - diff --git a/engine/bittable2.asm b/engine/bittable2.asm new file mode 100644 index 000000000..5527226e4 --- /dev/null +++ b/engine/bittable2.asm @@ -0,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 diff --git a/engine/credits.asm b/engine/credits.asm new file mode 100644 index 000000000..d5e4399b9 --- /dev/null +++ b/engine/credits.asm @@ -0,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 +; 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, "@" + diff --git a/engine/joypad.asm b/engine/joypad.asm new file mode 100644 index 000000000..b9702d33a --- /dev/null +++ b/engine/joypad.asm @@ -0,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 + diff --git a/engine/landmarks.asm b/engine/landmarks.asm new file mode 100644 index 000000000..2109bd556 --- /dev/null +++ b/engine/landmarks.asm @@ -0,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@" + diff --git a/engine/scripting.asm b/engine/scripting.asm new file mode 100644 index 000000000..2875781f0 --- /dev/null +++ b/engine/scripting.asm @@ -0,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 diff --git a/engine/vblank.asm b/engine/vblank.asm new file mode 100644 index 000000000..5080a56ad --- /dev/null +++ b/engine/vblank.asm @@ -0,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 diff --git a/joypad.asm b/joypad.asm deleted file mode 100644 index b9702d33a..000000000 --- a/joypad.asm +++ /dev/null @@ -1,275 +0,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 - diff --git a/landmarks.asm b/landmarks.asm deleted file mode 100644 index 2109bd556..000000000 --- a/landmarks.asm +++ /dev/null @@ -1,539 +0,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@" - diff --git a/main.asm b/main.asm index 3dd69c930..df7433011 100644 --- a/main.asm +++ b/main.asm @@ -60,7 +60,7 @@ INCBIN "baserom.gbc", $150, $283 - $150 VBlank: ; 283 -INCLUDE "vblank.asm" +INCLUDE "engine/vblank.asm" DelayFrame: ; 45a @@ -437,7 +437,7 @@ SetClock: ; 691 INCBIN "baserom.gbc", $6c4, $92e - $6c4 -INCLUDE "joypad.asm" +INCLUDE "engine/joypad.asm" INCBIN "baserom.gbc", $a1b, $b40 - $a1b @@ -12984,7 +12984,7 @@ GetFlag2: ; 80430 BitTable2: ; 80462 -INCLUDE "bittable2.asm" +INCLUDE "engine/bittable2.asm" ; 80648 @@ -14938,7 +14938,7 @@ INCLUDE "maps/second_map_headers.asm" INCBIN "baserom.gbc", $966b0, $96cb1 - $966b0 -INCLUDE "scripting.asm" +INCLUDE "engine/scripting.asm" INCBIN "baserom.gbc", $97c20, $35e @@ -19353,7 +19353,7 @@ INCBIN "gfx/intro/logo.lz" INCBIN "baserom.gbc", $10983f, $1099aa - $10983f ; Credits -INCLUDE "credits.asm" +INCLUDE "engine/credits.asm" SECTION "bank43",DATA,BANK[$43] @@ -21354,7 +21354,7 @@ MoveNames: INCLUDE "battle/move_names.asm" -INCLUDE "landmarks.asm" +INCLUDE "engine/landmarks.asm" RegionCheck: ; 0x1caea1 diff --git a/scripting.asm b/scripting.asm deleted file mode 100644 index 2875781f0..000000000 --- a/scripting.asm +++ /dev/null @@ -1,3127 +0,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 diff --git a/vblank.asm b/vblank.asm deleted file mode 100644 index 5080a56ad..000000000 --- a/vblank.asm +++ /dev/null @@ -1,539 +0,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 -- cgit v1.2.3