shithub: pokecrystal

Download patch

ref: 59fe4078124f0fa8d1613a3f715861d9c6f2d449
parent: dc76bf804f86f884933e9d5a8820e3122b2771ae
author: Remy Oukaour <remy.oukaour@gmail.com>
date: Fri Dec 15 12:22:52 EST 2017

Copy pokered's organization some more, with further constant and data files

--- a/constants.asm
+++ b/constants.asm
@@ -1,8 +1,8 @@
 INCLUDE "macros.asm"
 
-INCLUDE "gbhw.asm"
 INCLUDE "hram.asm"
 
+INCLUDE "constants/hardware_constants.asm"
 INCLUDE "constants/wram_constants.asm"
 INCLUDE "constants/pokemon_constants.asm"
 INCLUDE "constants/type_constants.asm"
@@ -21,6 +21,7 @@
 INCLUDE "constants/sfx_constants.asm"
 INCLUDE "constants/animation_constants.asm"
 INCLUDE "constants/phone_constants.asm"
+INCLUDE "constants/credits_constants.asm"
 INCLUDE "constants/gfx_constants.asm"
 INCLUDE "constants/input_constants.asm"
 INCLUDE "constants/pokemon_data_constants.asm"
--- /dev/null
+++ b/constants/credits_constants.asm
@@ -1,0 +1,115 @@
+; CreditsStrings indexes (see data/credits_text.asm)
+	const_def
+	const SATOSHI_TAJIRI
+	const JUNICHI_MASUDA
+	const TETSUYA_WATANABE
+	const SHIGEKI_MORIMOTO
+	const SOUSUKE_TAMADA
+	const TAKENORI_OOTA
+	const KEN_SUGIMORI
+	const MOTOFUMI_FUJIWARA
+	const ATSUKO_NISHIDA
+	const MUNEO_SAITO
+	const SATOSHI_OOTA
+	const RENA_YOSHIKAWA
+	const JUN_OKUTANI
+	const HIRONOBU_YOSHIDA
+	const ASUKA_IWASHITA
+	const GO_ICHINOSE
+	const MORIKAZU_AOKI
+	const KOHJI_NISHINO
+	const KENJI_MATSUSHIMA
+	const TOSHINOBU_MATSUMIYA
+	const SATORU_IWATA
+	const NOBUHIRO_SEYA
+	const KAZUHITO_SEKINE
+	const TETSUJI_OOTA
+	const NCL_SUPER_MARIO_CLUB
+	const SARUGAKUCHO
+	const AKITO_MORI
+	const TAKAHIRO_HARADA
+	const TOHRU_HASHIMOTO
+	const NOBORU_MATSUMOTO
+	const TAKEHIRO_IZUSHI
+	const TAKASHI_KAWAGUCHI
+	const TSUNEKAZU_ISHIHARA
+	const HIROSHI_YAMAUCHI
+	const KENJI_SAIKI
+	const ATSUSHI_TADA
+	const NAOKO_KAWAKAMI
+	const HIROYUKI_ZINNAI
+	const KUNIMI_KAWAMURA
+	const HISASHI_SOGABE
+	const KEITA_KAGAYA
+	const YOSHINORI_MATSUDA
+	const HITOMI_SATO
+	const TORU_OSAWA
+	const TAKAO_OHARA
+	const YUICHIRO_ITO
+	const TAKAO_SHIMIZU
+	const PLANNING
+	const KEITA_NAKAMURA
+	const HIROTAKA_UEMURA
+	const HIROAKI_TAMURA
+	const NORIAKI_SAKAGUCHI
+	const MIYUKI_SATO
+	const GAKUZI_NOMOTO
+	const AI_MASHIMA
+	const MIKIHIRO_ISHIKAWA
+	const HIDEYUKI_HASHIMOTO
+	const SATOSHI_YAMATO
+	const SHIGERU_MIYAMOTO
+	const GAIL_TILDEN
+	const NOB_OGASAWARA
+	const SETH_MCMAHILL
+	const HIROTO_ALEXANDER
+	const TERESA_LILLYGREN
+	const THOMAS_HERTZOG
+	const ERIK_JOHNSON
+	const HIRO_NAKAMURA
+	const TERUKI_MURAKAWA
+	const KAZUYOSHI_OSAWA
+	const KIMIKO_NAKAMICHI
+	const CREDIT_END
+	const CREDIT_UNKNOWN
+	const STAFF
+	const DIRECTOR
+	const CODIRECTOR
+	const PROGRAMMERS
+	const GRAPHICS_DIRECTOR
+	const MONSTER_DESIGN
+	const GRAPHICS_DESIGN
+	const CREDIT_MUSIC
+	const CREDIT_SOUND_EFFECTS
+	const GAME_DESIGN
+	const GAME_SCENARIO
+	const TOOL_PROGRAMMING
+	const PARAMETRIC_DESIGN
+	const SCRIPT_DESIGN
+	const MAP_DATA_DESIGN
+	const MAP_DESIGN
+	const PRODUCT_TESTING
+	const SPECIAL_THANKS
+	const PRODUCERS
+	const EXECUTIVE_PRODUCER
+	const POKEMON_ANIMATION
+	const POKEDEX_TEXT
+	const MOBILE_PRJ_LEADER
+	const MOBILE_SYSTEM_AD
+	const MOBILE_STADIUM_DIR
+	const COORDINATION
+	const COPYRIGHT
+	const US_VERSION_STAFF
+	const US_COORDINATION
+	const TEXT_TRANSLATION
+	const PAAD_TESTING
+
+; CreditsScript indexes (see data/credits_script.asm)
+const_value SET -7
+	const CREDITS_THEEND
+	const CREDITS_WAIT2
+	const CREDITS_MUSIC
+	const CREDITS_CLEAR
+	const CREDITS_SCENE
+	const CREDITS_WAIT
+	const CREDITS_END
--- /dev/null
+++ b/constants/hardware_constants.asm
@@ -1,0 +1,135 @@
+; Graciously aped from http://nocash.emubase.de/pandocs.htm .
+
+; MBC3
+MBC3SRamEnable EQU $0000
+MBC3RomBank    EQU $2000
+MBC3SRamBank   EQU $4000
+MBC3LatchClock EQU $6000
+MBC3RTC        EQU $a000
+
+SRAM_DISABLE EQU $00
+SRAM_ENABLE  EQU $0a
+
+NUM_SRAM_BANKS EQU 4
+
+RTC_S  EQU $08 ; Seconds   0-59 (0-3Bh)
+RTC_M  EQU $09 ; Minutes   0-59 (0-3Bh)
+RTC_H  EQU $0a ; Hours     0-23 (0-17h)
+RTC_DL EQU $0b ; Lower 8 bits of Day Counter (0-FFh)
+RTC_DH EQU $0c ; Upper 1 bit of Day Counter, Carry Bit, Halt Flag
+        ; Bit 0  Most significant bit of Day Counter (Bit 8)
+        ; Bit 6  Halt (0=Active, 1=Stop Timer)
+        ; Bit 7  Day Counter Carry Bit (1=Counter Overflow)
+
+; interrupt flags
+VBLANK   EQU 0
+LCD_STAT EQU 1
+TIMER    EQU 2
+SERIAL   EQU 3
+JOYPAD   EQU 4
+
+; OAM attribute flags
+OAM_TILE_BANK EQU 3
+OAM_OBP_NUM   EQU 4 ; non CGB Mode Only
+OAM_X_FLIP    EQU 5
+OAM_Y_FLIP    EQU 6
+OAM_PRIORITY  EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
+
+PALETTE_MASK EQU %111
+VRAM_BANK_1  EQU 1 << OAM_TILE_BANK ; $08
+OBP_NUM      EQU 1 << OAM_OBP_NUM   ; $10
+X_FLIP       EQU 1 << OAM_X_FLIP    ; $20
+Y_FLIP       EQU 1 << OAM_Y_FLIP    ; $40
+BEHIND_BG    EQU 1 << OAM_PRIORITY  ; $80
+
+; Hardware registers
+rJOYP       EQU $ff00 ; Joypad (R/W)
+rSB         EQU $ff01 ; Serial transfer data (R/W)
+rSC         EQU $ff02 ; Serial Transfer Control (R/W)
+rSC_ON      EQU 7
+rSC_CGB     EQU 1
+rSC_CLOCK   EQU 0
+rDIV        EQU $ff04 ; Divider Register (R/W)
+rTIMA       EQU $ff05 ; Timer counter (R/W)
+rTMA        EQU $ff06 ; Timer Modulo (R/W)
+rTAC        EQU $ff07 ; Timer Control (R/W)
+rTAC_ON        EQU 2
+rTAC_4096_HZ   EQU 0
+rTAC_262144_HZ EQU 1
+rTAC_65536_HZ  EQU 2
+rTAC_16384_HZ  EQU 3
+rIF         EQU $ff0f ; Interrupt Flag (R/W)
+rNR10       EQU $ff10 ; Channel 1 Sweep register (R/W)
+rNR11       EQU $ff11 ; Channel 1 Sound length/Wave pattern duty (R/W)
+rNR12       EQU $ff12 ; Channel 1 Volume Envelope (R/W)
+rNR13       EQU $ff13 ; Channel 1 Frequency lo (Write Only)
+rNR14       EQU $ff14 ; Channel 1 Frequency hi (R/W)
+rNR20       EQU $ff15 ; Channel 2 Sweep register (R/W)
+rNR21       EQU $ff16 ; Channel 2 Sound Length/Wave Pattern Duty (R/W)
+rNR22       EQU $ff17 ; Channel 2 Volume Envelope (R/W)
+rNR23       EQU $ff18 ; Channel 2 Frequency lo data (W)
+rNR24       EQU $ff19 ; Channel 2 Frequency hi data (R/W)
+rNR30       EQU $ff1a ; Channel 3 Sound on/off (R/W)
+rNR31       EQU $ff1b ; Channel 3 Sound Length
+rNR32       EQU $ff1c ; Channel 3 Select output level (R/W)
+rNR33       EQU $ff1d ; Channel 3 Frequency's lower data (W)
+rNR34       EQU $ff1e ; Channel 3 Frequency's higher data (R/W)
+rNR40       EQU $ff1f ; Channel 4 Sweep register (R/W)
+rNR41       EQU $ff20 ; Channel 4 Sound Length (R/W)
+rNR42       EQU $ff21 ; Channel 4 Volume Envelope (R/W)
+rNR43       EQU $ff22 ; Channel 4 Polynomial Counter (R/W)
+rNR44       EQU $ff23 ; Channel 4 Counter/consecutive; Inital (R/W)
+rNR50       EQU $ff24 ; Channel control / ON-OFF / Volume (R/W)
+rNR51       EQU $ff25 ; Selection of Sound output terminal (R/W)
+rNR52       EQU $ff26 ; Sound on/off
+rWave_0     EQU $ff30
+rWave_1     EQU $ff31
+rWave_2     EQU $ff32
+rWave_3     EQU $ff33
+rWave_4     EQU $ff34
+rWave_5     EQU $ff35
+rWave_6     EQU $ff36
+rWave_7     EQU $ff37
+rWave_8     EQU $ff38
+rWave_9     EQU $ff39
+rWave_a     EQU $ff3a
+rWave_b     EQU $ff3b
+rWave_c     EQU $ff3c
+rWave_d     EQU $ff3d
+rWave_e     EQU $ff3e
+rWave_f     EQU $ff3f
+rLCDC       EQU $ff40 ; LCD Control (R/W)
+rSTAT       EQU $ff41 ; LCDC Status (R/W)
+rSCY        EQU $ff42 ; Scroll Y (R/W)
+rSCX        EQU $ff43 ; Scroll X (R/W)
+rLY         EQU $ff44 ; LCDC Y-Coordinate (R)
+rLYC        EQU $ff45 ; LY Compare (R/W)
+rDMA        EQU $ff46 ; DMA Transfer and Start Address (W)
+rBGP        EQU $ff47 ; BG Palette Data (R/W) - Non CGB Mode Only
+rOBP0       EQU $ff48 ; Object Palette 0 Data (R/W) - Non CGB Mode Only
+rOBP1       EQU $ff49 ; Object Palette 1 Data (R/W) - Non CGB Mode Only
+rWY         EQU $ff4a ; Window Y Position (R/W)
+rWX         EQU $ff4b ; Window X Position minus 7 (R/W)
+rLCDMODE    EQU $ff4c
+rKEY1       EQU $ff4d ; CGB Mode Only - Prepare Speed Switch
+rVBK        EQU $ff4f ; CGB Mode Only - VRAM Bank
+rBLCK       EQU $ff50
+rHDMA1      EQU $ff51 ; CGB Mode Only - New DMA Source, High
+rHDMA2      EQU $ff52 ; CGB Mode Only - New DMA Source, Low
+rHDMA3      EQU $ff53 ; CGB Mode Only - New DMA Destination, High
+rHDMA4      EQU $ff54 ; CGB Mode Only - New DMA Destination, Low
+rHDMA5      EQU $ff55 ; CGB Mode Only - New DMA Length/Mode/Start
+rRP         EQU $ff56 ; CGB Mode Only - Infrared Communications Port
+rBGPI       EQU $ff68 ; CGB Mode Only - Background Palette Index
+rBGPD       EQU $ff69 ; CGB Mode Only - Background Palette Data
+rOBPI       EQU $ff6a ; CGB Mode Only - Sprite Palette Index
+rOBPD       EQU $ff6b ; CGB Mode Only - Sprite Palette Data
+rUNKNOWN1   EQU $ff6c ; (FEh) Bit 0 (Read/Write) - CGB Mode Only
+rSVBK       EQU $ff70 ; CGB Mode Only - WRAM Bank
+rUNKNOWN2   EQU $ff72 ; (00h) - Bit 0-7 (Read/Write)
+rUNKNOWN3   EQU $ff73 ; (00h) - Bit 0-7 (Read/Write)
+rUNKNOWN4   EQU $ff74 ; (00h) - Bit 0-7 (Read/Write) - CGB Mode Only
+rUNKNOWN5   EQU $ff75 ; (8Fh) - Bit 4-6 (Read/Write)
+rUNKNOWN6   EQU $ff76 ; (00h) - Always 00h (Read Only)
+rUNKNOWN7   EQU $ff77 ; (00h) - Always 00h (Read Only)
+rIE         EQU $ffff ; Interrupt Enable (R/W)
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -203,7 +203,7 @@
 	const EMOTE_GRASS_RUSTLE ; 11
 EMOTE_MEM EQU -1
 
-; FruitTreeItems indexes (see data/fruit_tree_items.asm)
+; FruitTreeItems indexes (see data/items/fruit_trees.asm)
 const_value SET 1
 	const FRUITTREE_ROUTE_29      ; 01
 	const FRUITTREE_ROUTE_30_1    ; 02
--- a/constants/radio_constants.asm
+++ b/constants/radio_constants.asm
@@ -123,3 +123,6 @@
 	const BUENA_ITEM
 	const BUENA_MOVE
 	const BUENA_STRING
+
+; BuenaPrizeItems table length (see data/items/buena_prizes.asm)
+NUM_BUENA_PRIZES EQU 9
--- /dev/null
+++ b/data/credits_script.asm
@@ -1,0 +1,287 @@
+CreditsScript: ; 10acb4
+
+; Clear the banner.
+	db CREDITS_CLEAR
+
+; Pokemon Crystal Version Staff
+	db                STAFF, 1
+
+	db CREDITS_WAIT, 8
+
+; Play the credits music.
+	db CREDITS_MUSIC
+
+	db CREDITS_WAIT2, 10
+
+	db CREDITS_WAIT, 1
+
+; Update the banner.
+	db CREDITS_SCENE, 0 ; Pichu
+
+	db             DIRECTOR, 1
+	db       SATOSHI_TAJIRI, 2
+
+	db CREDITS_WAIT, 12
+
+	db           CODIRECTOR, 1
+	db       JUNICHI_MASUDA, 2
+
+	db CREDITS_WAIT, 12
+
+	db          PROGRAMMERS, 0
+	db       SOUSUKE_TAMADA, 1
+	db       HISASHI_SOGABE, 2
+	db         KEITA_KAGAYA, 3
+	db    YOSHINORI_MATSUDA, 4
+
+	db CREDITS_WAIT, 12
+
+	db          PROGRAMMERS, 0
+	db     SHIGEKI_MORIMOTO, 1
+	db     TETSUYA_WATANABE, 2
+	db        TAKENORI_OOTA, 3
+
+	db CREDITS_WAIT, 12
+
+	db    GRAPHICS_DIRECTOR, 1
+	db         KEN_SUGIMORI, 2
+
+	db CREDITS_WAIT, 12
+
+	db       MONSTER_DESIGN, 0
+	db         KEN_SUGIMORI, 1
+	db    MOTOFUMI_FUJIWARA, 2
+	db     SHIGEKI_MORIMOTO, 3
+	db     HIRONOBU_YOSHIDA, 4
+	db         SATOSHI_OOTA, 5
+
+	db CREDITS_WAIT, 12
+
+	db       MONSTER_DESIGN, 0
+	db       ATSUKO_NISHIDA, 1
+	db          MUNEO_SAITO, 2
+	db       RENA_YOSHIKAWA, 3
+
+	db CREDITS_WAIT, 12
+
+	db    POKEMON_ANIMATION, 1
+	db     HIRONOBU_YOSHIDA, 2
+	db          JUN_OKUTANI, 3
+
+	db CREDITS_WAIT, 12
+
+; Clear the banner.
+	db CREDITS_CLEAR
+
+	db CREDITS_WAIT, 1
+
+; Update the banner.
+	db CREDITS_SCENE, 1 ; Smoochum
+
+	db      GRAPHICS_DESIGN, 0
+	db     HIRONOBU_YOSHIDA, 1
+	db          JUN_OKUTANI, 2
+	db       ASUKA_IWASHITA, 3
+	db     TETSUYA_WATANABE, 4
+
+	db CREDITS_WAIT, 12
+
+	db         CREDIT_MUSIC, 0
+	db       JUNICHI_MASUDA, 1
+	db        MORIKAZU_AOKI, 2
+	db          GO_ICHINOSE, 3
+
+	db CREDITS_WAIT, 12
+
+	db CREDIT_SOUND_EFFECTS, 0
+	db        MORIKAZU_AOKI, 1
+	db       JUNICHI_MASUDA, 2
+	db     TETSUYA_WATANABE, 3
+
+	db CREDITS_WAIT, 12
+
+	db          GAME_DESIGN, 0
+	db       JUNICHI_MASUDA, 1
+	db     SHIGEKI_MORIMOTO, 2
+	db        KOHJI_NISHINO, 3
+
+	db CREDITS_WAIT, 12
+
+	db          GAME_DESIGN, 0
+	db         TETSUJI_OOTA, 1
+	db          HITOMI_SATO, 2
+	db     KENJI_MATSUSHIMA, 3
+
+	db CREDITS_WAIT, 12
+
+	db        GAME_SCENARIO, 0
+	db       JUNICHI_MASUDA, 1
+	db        KOHJI_NISHINO, 2
+	db  TOSHINOBU_MATSUMIYA, 3
+	db     KENJI_MATSUSHIMA, 4
+
+	db CREDITS_WAIT, 12
+
+	db         POKEDEX_TEXT, 1
+	db  TOSHINOBU_MATSUMIYA, 2
+
+	db CREDITS_WAIT, 12
+
+	db     TOOL_PROGRAMMING, 1
+	db       SOUSUKE_TAMADA, 2
+	db        TAKENORI_OOTA, 3
+
+	db CREDITS_WAIT, 12
+
+	db    PARAMETRIC_DESIGN, 1
+	db        KOHJI_NISHINO, 2
+
+	db CREDITS_WAIT, 12
+
+; Clear the banner.
+	db CREDITS_CLEAR
+
+	db CREDITS_WAIT, 1
+
+; Update the banner.
+	db CREDITS_SCENE, 2 ; Ditto
+
+	db        SCRIPT_DESIGN, 1
+	db         TETSUJI_OOTA, 2
+	db        NOBUHIRO_SEYA, 3
+
+	db CREDITS_WAIT, 12
+
+	db      MAP_DATA_DESIGN, 1
+	db         TETSUJI_OOTA, 2
+	db      KAZUHITO_SEKINE, 3
+
+	db CREDITS_WAIT, 12
+
+	db           MAP_DESIGN, 0
+	db         TETSUJI_OOTA, 1
+	db        KOHJI_NISHINO, 2
+	db        NOBUHIRO_SEYA, 3
+
+	db CREDITS_WAIT, 12
+
+	db         COORDINATION, 1
+	db      HIROYUKI_ZINNAI, 2
+
+	db CREDITS_WAIT, 12
+
+	db            PRODUCERS, 0
+	db         SATORU_IWATA, 1
+	db       SATOSHI_YAMATO, 2
+	db     SHIGERU_MIYAMOTO, 3
+
+	db CREDITS_WAIT, 12
+
+	db            PRODUCERS, 1
+	db   TSUNEKAZU_ISHIHARA, 2
+
+	db CREDITS_WAIT, 12
+
+; Clear the banner.
+	db CREDITS_CLEAR
+
+	db CREDITS_WAIT, 1
+
+; Update the banner.
+	db CREDITS_SCENE, 3 ; Igglybuff
+
+	db     US_VERSION_STAFF, 2
+
+	db CREDITS_WAIT, 9
+
+	db      US_COORDINATION, 1
+	db          GAIL_TILDEN, 2
+	db        HIRO_NAKAMURA, 3
+
+	db CREDITS_WAIT, 12
+
+	db      US_COORDINATION, 1
+	db       JUNICHI_MASUDA, 2
+	db        SETH_MCMAHILL, 3
+
+	db CREDITS_WAIT, 12
+
+	db      US_COORDINATION, 1
+	db     HIROTO_ALEXANDER, 2
+	db     TERESA_LILLYGREN, 3
+
+	db CREDITS_WAIT, 12
+
+	db     TEXT_TRANSLATION, 1
+	db        NOB_OGASAWARA, 2
+
+	db CREDITS_WAIT, 12
+
+	db          PROGRAMMERS, 1
+	db      TERUKI_MURAKAWA, 2
+	db      KAZUYOSHI_OSAWA, 3
+
+	db CREDITS_WAIT, 12
+
+	db         PAAD_TESTING, 1
+	db       THOMAS_HERTZOG, 2
+	db         ERIK_JOHNSON, 3
+
+	db CREDITS_WAIT, 12
+
+	db      PRODUCT_TESTING, 0
+	db             PLANNING, 1
+
+	db CREDITS_WAIT, 12
+
+	db      PRODUCT_TESTING, 0
+	db       KEITA_NAKAMURA, 1
+	db      HIROTAKA_UEMURA, 2
+	db       HIROAKI_TAMURA, 3
+	db    NORIAKI_SAKAGUCHI, 4
+
+	db CREDITS_WAIT, 12
+
+	db      PRODUCT_TESTING, 0
+	db NCL_SUPER_MARIO_CLUB, 1
+	db          KENJI_SAIKI, 2
+	db         ATSUSHI_TADA, 3
+	db          MIYUKI_SATO, 4
+
+	db CREDITS_WAIT, 12
+
+	db       SPECIAL_THANKS, 0
+	db     KIMIKO_NAKAMICHI, 1
+	db           AKITO_MORI, 2
+
+	db CREDITS_WAIT, 12
+
+	db       SPECIAL_THANKS, 0
+	db        GAKUZI_NOMOTO, 1
+	db           AI_MASHIMA, 2
+	db      KUNIMI_KAWAMURA, 3
+
+	db CREDITS_WAIT, 12
+
+	db       SPECIAL_THANKS, 0
+	db    MIKIHIRO_ISHIKAWA, 1
+	db   HIDEYUKI_HASHIMOTO, 2
+
+	db CREDITS_WAIT, 12
+
+	db   EXECUTIVE_PRODUCER, 1
+	db     HIROSHI_YAMAUCHI, 2
+
+	db CREDITS_WAIT, 12
+
+	db            COPYRIGHT, 1
+
+	db CREDITS_WAIT, 9
+
+; Display "The End" graphic.
+	db CREDITS_THEEND
+
+	db CREDITS_WAIT, 20
+
+	db CREDITS_END
+; 10ae13
--- /dev/null
+++ b/data/credits_strings.asm
@@ -1,0 +1,221 @@
+CreditsStrings:
+; entries correspond to constants/credits_constants.asm
+	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"
+                    next "      PLANNING"             ; "きかくかいはつぶ@"
+                    next " & 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"                 ; "ポケットモンスター"
+                    next "  CRYSTAL VERSION"          ; "  クりスタル バージョン"
+                    next "       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
+	;    (C) 1  9  9  5 - 2  0  0  1    C  r  e  a  t  u  r  e  s     i  n  c .
+	next $60,$61,$62,$63,$64,$65,$66,$6d,$6e,$6f,$70,$71,$72,  $7a,$7b,$7c
+	;    (C) 1  9  9  5 - 2  0  0  1  G  A  M  E  F  R  E  A  K     i  n  c .
+	next $60,$61,$62,$63,$64,$65,$66,$73,$74,$75,$76,$77,$78,$79,  $7a,$7b,$7c
+	db "@"
--- /dev/null
+++ b/data/flypoints.asm
@@ -1,0 +1,38 @@
+flypoint: MACRO
+	const FLY_\1
+	db \2, SPAWN_\1
+ENDM
+
+Flypoints: ; 91c5e
+; landmark, spawn point
+	const_def
+; Johto
+	flypoint NEW_BARK,    NEW_BARK_TOWN
+	flypoint CHERRYGROVE, CHERRYGROVE_CITY
+	flypoint VIOLET,      VIOLET_CITY
+	flypoint AZALEA,      AZALEA_TOWN
+	flypoint GOLDENROD,   GOLDENROD_CITY
+	flypoint ECRUTEAK,    ECRUTEAK_CITY
+	flypoint OLIVINE,     OLIVINE_CITY
+	flypoint CIANWOOD,    CIANWOOD_CITY
+	flypoint MAHOGANY,    MAHOGANY_TOWN
+	flypoint LAKE,        LAKE_OF_RAGE
+	flypoint BLACKTHORN,  BLACKTHORN_CITY
+	flypoint MT_SILVER,   SILVER_CAVE
+
+; Kanto
+KANTO_FLYPOINT EQU const_value
+	flypoint PALLET,      PALLET_TOWN
+	flypoint VIRIDIAN,    VIRIDIAN_CITY
+	flypoint PEWTER,      PEWTER_CITY
+	flypoint CERULEAN,    CERULEAN_CITY
+	flypoint VERMILION,   VERMILION_CITY
+	flypoint ROCK_TUNNEL, ROCK_TUNNEL
+	flypoint LAVENDER,    LAVENDER_TOWN
+	flypoint CELADON,     CELADON_CITY
+	flypoint SAFFRON,     SAFFRON_CITY
+	flypoint FUCHSIA,     FUCHSIA_CITY
+	flypoint CINNABAR,    CINNABAR_ISLAND
+	flypoint INDIGO,      INDIGO_PLATEAU
+	db -1
+; 91c8f
--- a/data/fruit_tree_items.asm
+++ /dev/null
@@ -1,33 +1,0 @@
-FruitTreeItems: ; 44097
-; entries correspond to FRUITTREE_* constants
-	db BERRY        ; ROUTE_29
-	db BERRY        ; ROUTE_30_1
-	db BERRY        ; ROUTE_38
-	db BERRY        ; ROUTE_46_1
-	db PSNCUREBERRY ; ROUTE_30_2
-	db PSNCUREBERRY ; ROUTE_33
-	db BITTER_BERRY ; ROUTE_31
-	db BITTER_BERRY ; ROUTE_43
-	db PRZCUREBERRY ; VIOLET_CITY
-	db PRZCUREBERRY ; ROUTE_46_2
-	db MYSTERYBERRY ; ROUTE_35
-	db MYSTERYBERRY ; ROUTE_45
-	db ICE_BERRY    ; ROUTE_36
-	db ICE_BERRY    ; ROUTE_26
-	db MINT_BERRY   ; ROUTE_39
-	db BURNT_BERRY  ; ROUTE_44
-	db RED_APRICORN ; ROUTE_37_1
-	db BLU_APRICORN ; ROUTE_37_2
-	db BLK_APRICORN ; ROUTE_37_3
-	db WHT_APRICORN ; AZALEA_TOWN
-	db PNK_APRICORN ; ROUTE_42_1
-	db GRN_APRICORN ; ROUTE_42_2
-	db YLW_APRICORN ; ROUTE_42_3
-	db BERRY        ; ROUTE_11
-	db PSNCUREBERRY ; ROUTE_2
-	db BITTER_BERRY ; ROUTE_1
-	db PRZCUREBERRY ; ROUTE_8
-	db ICE_BERRY    ; PEWTER_CITY_1
-	db MINT_BERRY   ; PEWTER_CITY_2
-	db BURNT_BERRY  ; FUCHSIA_CITY
-; 440b5
--- /dev/null
+++ b/data/items/bargain_shop.asm
@@ -1,0 +1,9 @@
+BargainShopData: ; 15c51
+	db 5
+	dbw NUGGET,     4500
+	dbw PEARL,       650
+	dbw BIG_PEARL,  3500
+	dbw STARDUST,    900
+	dbw STAR_PIECE, 4600
+	db -1
+; 15c62
--- /dev/null
+++ b/data/items/buena_prizes.asm
@@ -1,0 +1,12 @@
+BuenaPrizeItems: ; 8b15e
+; there are NUM_BUENA_PRIZES entries
+	db ULTRA_BALL,   2
+	db FULL_RESTORE, 2
+	db NUGGET,       3
+	db RARE_CANDY,   3
+	db PROTEIN,      5
+	db IRON,         5
+	db CARBOS,       5
+	db CALCIUM,      5
+	db HP_UP,        5
+; 8b170
--- /dev/null
+++ b/data/items/fruit_trees.asm
@@ -1,0 +1,33 @@
+FruitTreeItems: ; 44097
+; entries correspond to FRUITTREE_* constants
+	db BERRY        ; ROUTE_29
+	db BERRY        ; ROUTE_30_1
+	db BERRY        ; ROUTE_38
+	db BERRY        ; ROUTE_46_1
+	db PSNCUREBERRY ; ROUTE_30_2
+	db PSNCUREBERRY ; ROUTE_33
+	db BITTER_BERRY ; ROUTE_31
+	db BITTER_BERRY ; ROUTE_43
+	db PRZCUREBERRY ; VIOLET_CITY
+	db PRZCUREBERRY ; ROUTE_46_2
+	db MYSTERYBERRY ; ROUTE_35
+	db MYSTERYBERRY ; ROUTE_45
+	db ICE_BERRY    ; ROUTE_36
+	db ICE_BERRY    ; ROUTE_26
+	db MINT_BERRY   ; ROUTE_39
+	db BURNT_BERRY  ; ROUTE_44
+	db RED_APRICORN ; ROUTE_37_1
+	db BLU_APRICORN ; ROUTE_37_2
+	db BLK_APRICORN ; ROUTE_37_3
+	db WHT_APRICORN ; AZALEA_TOWN
+	db PNK_APRICORN ; ROUTE_42_1
+	db GRN_APRICORN ; ROUTE_42_2
+	db YLW_APRICORN ; ROUTE_42_3
+	db BERRY        ; ROUTE_11
+	db PSNCUREBERRY ; ROUTE_2
+	db BITTER_BERRY ; ROUTE_1
+	db PRZCUREBERRY ; ROUTE_8
+	db ICE_BERRY    ; PEWTER_CITY_1
+	db MINT_BERRY   ; PEWTER_CITY_2
+	db BURNT_BERRY  ; FUCHSIA_CITY
+; 440b5
--- /dev/null
+++ b/data/items/mom_phone.asm
@@ -1,0 +1,27 @@
+momitem: macro
+; money to trigger, cost, kind, item
+	dt \1
+	dt \2
+	db \3, \4
+ENDM
+
+MomItems_1: ; fd136
+	momitem      0,   600, MOM_ITEM, SUPER_POTION
+	momitem      0,    90, MOM_ITEM, ANTIDOTE
+	momitem      0,   180, MOM_ITEM, POKE_BALL
+	momitem      0,   450, MOM_ITEM, ESCAPE_ROPE
+	momitem      0,   500, MOM_ITEM, GREAT_BALL
+MomItems_1End: ; fd15e
+
+MomItems_2: ; fd15e
+	momitem    900,   600, MOM_ITEM, SUPER_POTION
+	momitem   4000,   270, MOM_ITEM, REPEL
+	momitem   7000,   600, MOM_ITEM, SUPER_POTION
+	momitem  10000,  1800, MOM_DOLL, DECO_CHARMANDER_DOLL
+	momitem  15000,  3000, MOM_ITEM, MOON_STONE
+	momitem  19000,   600, MOM_ITEM, SUPER_POTION
+	momitem  30000,  4800, MOM_DOLL, DECO_CLEFAIRY_DOLL
+	momitem  40000,   900, MOM_ITEM, HYPER_POTION
+	momitem  50000,  8000, MOM_DOLL, DECO_PIKACHU_DOLL
+	momitem 100000, 22800, MOM_DOLL, DECO_BIG_SNORLAX_DOLL
+MomItems_2End: ; fd1ae
--- /dev/null
+++ b/data/items/rooftop_sale.asm
@@ -1,0 +1,18 @@
+RooftopSaleData1: ; 15aee
+	db 5
+	dbw POKE_BALL,     150
+	dbw GREAT_BALL,    500
+	dbw SUPER_POTION,  500
+	dbw FULL_HEAL,     500
+	dbw REVIVE,       1200
+	db -1
+
+RooftopSaleData2: ; 15aff
+	db 5
+	dbw HYPER_POTION, 1000
+	dbw FULL_RESTORE, 2000
+	dbw FULL_HEAL,     500
+	dbw ULTRA_BALL,   1000
+	dbw PROTEIN,      7800
+	db -1
+; 15b10
--- a/data/mom_phone_items.asm
+++ /dev/null
@@ -1,27 +1,0 @@
-momitem: macro
-; money to trigger, cost, kind, item
-	dt \1
-	dt \2
-	db \3, \4
-ENDM
-
-MomItems_1: ; fd136
-	momitem      0,   600, MOM_ITEM, SUPER_POTION
-	momitem      0,    90, MOM_ITEM, ANTIDOTE
-	momitem      0,   180, MOM_ITEM, POKE_BALL
-	momitem      0,   450, MOM_ITEM, ESCAPE_ROPE
-	momitem      0,   500, MOM_ITEM, GREAT_BALL
-MomItems_1End: ; fd15e
-
-MomItems_2: ; fd15e
-	momitem    900,   600, MOM_ITEM, SUPER_POTION
-	momitem   4000,   270, MOM_ITEM, REPEL
-	momitem   7000,   600, MOM_ITEM, SUPER_POTION
-	momitem  10000,  1800, MOM_DOLL, DECO_CHARMANDER_DOLL
-	momitem  15000,  3000, MOM_ITEM, MOON_STONE
-	momitem  19000,   600, MOM_ITEM, SUPER_POTION
-	momitem  30000,  4800, MOM_DOLL, DECO_CLEFAIRY_DOLL
-	momitem  40000,   900, MOM_ITEM, HYPER_POTION
-	momitem  50000,  8000, MOM_DOLL, DECO_PIKACHU_DOLL
-	momitem 100000, 22800, MOM_DOLL, DECO_BIG_SNORLAX_DOLL
-MomItems_2End: ; fd1ae
--- /dev/null
+++ b/data/palettes/town_map.asm
@@ -1,0 +1,34 @@
+	const_def
+	const PAL_TOWNMAP_BORDER  ; 0
+	const PAL_TOWNMAP_EARTH   ; 1
+	const PAL_TOWNMAP_MTN     ; 2
+	const PAL_TOWNMAP_CITY    ; 3
+	const PAL_TOWNMAP_POI     ; 4
+	const PAL_TOWNMAP_POI_MTN ; 5
+
+townmappals: macro
+rept _NARG / 2
+	dn PAL_TOWNMAP_\2, PAL_TOWNMAP_\1
+	shift
+	shift
+endr
+endm
+
+; gfx/pokegear/town_map.png
+	townmappals EARTH,   EARTH,   EARTH,   MTN,     MTN,     MTN
+	townmappals BORDER,  BORDER,  EARTH,   EARTH,   CITY,    EARTH
+	townmappals POI,     POI_MTN, POI,     POI_MTN, EARTH,   EARTH
+	townmappals EARTH,   MTN,     MTN,     MTN,     BORDER,  BORDER
+	townmappals EARTH,   EARTH,   BORDER,  EARTH,   EARTH,   BORDER
+	townmappals BORDER,  BORDER,  EARTH,   EARTH,   EARTH,   MTN
+	townmappals MTN,     MTN,     BORDER,  BORDER,  BORDER,  BORDER
+	townmappals BORDER,  BORDER,  BORDER,  BORDER,  BORDER,  BORDER
+; gfx/pokegear/pokegear.png
+	townmappals BORDER,  BORDER,  BORDER,  BORDER,  POI,     POI
+	townmappals POI,     BORDER,  BORDER,  BORDER,  BORDER,  BORDER
+	townmappals BORDER,  BORDER,  BORDER,  BORDER,  CITY,    CITY
+	townmappals CITY,    CITY,    CITY,    CITY,    CITY,    CITY
+	townmappals CITY,    CITY,    CITY,    CITY,    CITY,    CITY
+	townmappals CITY,    BORDER,  CITY,    CITY,    CITY,    CITY
+	townmappals CITY,    CITY,    CITY,    CITY,    BORDER,  BORDER
+	townmappals BORDER,  BORDER,  BORDER,  BORDER,  BORDER,  BORDER 
--- a/engine/credits.asm
+++ b/engine/credits.asm
@@ -1,122 +1,8 @@
 INCLUDE "includes.asm"
 
+
 SECTION "Credits", ROMX
 
-	const_def
-	const SATOSHI_TAJIRI
-	const JUNICHI_MASUDA
-	const TETSUYA_WATANABE
-	const SHIGEKI_MORIMOTO
-	const SOUSUKE_TAMADA
-	const TAKENORI_OOTA
-	const KEN_SUGIMORI
-	const MOTOFUMI_FUJIWARA
-	const ATSUKO_NISHIDA
-	const MUNEO_SAITO
-	const SATOSHI_OOTA
-	const RENA_YOSHIKAWA
-	const JUN_OKUTANI
-	const HIRONOBU_YOSHIDA
-	const ASUKA_IWASHITA
-	const GO_ICHINOSE
-	const MORIKAZU_AOKI
-	const KOHJI_NISHINO
-	const KENJI_MATSUSHIMA
-	const TOSHINOBU_MATSUMIYA
-	const SATORU_IWATA
-	const NOBUHIRO_SEYA
-	const KAZUHITO_SEKINE
-	const TETSUJI_OOTA
-	const NCL_SUPER_MARIO_CLUB
-	const SARUGAKUCHO
-	const AKITO_MORI
-	const TAKAHIRO_HARADA
-	const TOHRU_HASHIMOTO
-	const NOBORU_MATSUMOTO
-	const TAKEHIRO_IZUSHI
-	const TAKASHI_KAWAGUCHI
-	const TSUNEKAZU_ISHIHARA
-	const HIROSHI_YAMAUCHI
-	const KENJI_SAIKI
-	const ATSUSHI_TADA
-	const NAOKO_KAWAKAMI
-	const HIROYUKI_ZINNAI
-	const KUNIMI_KAWAMURA
-	const HISASHI_SOGABE
-	const KEITA_KAGAYA
-	const YOSHINORI_MATSUDA
-	const HITOMI_SATO
-	const TORU_OSAWA
-	const TAKAO_OHARA
-	const YUICHIRO_ITO
-	const TAKAO_SHIMIZU
-	const PLANNING
-	const KEITA_NAKAMURA
-	const HIROTAKA_UEMURA
-	const HIROAKI_TAMURA
-	const NORIAKI_SAKAGUCHI
-	const MIYUKI_SATO
-	const GAKUZI_NOMOTO
-	const AI_MASHIMA
-	const MIKIHIRO_ISHIKAWA
-	const HIDEYUKI_HASHIMOTO
-	const SATOSHI_YAMATO
-	const SHIGERU_MIYAMOTO
-	const GAIL_TILDEN
-	const NOB_OGASAWARA
-	const SETH_MCMAHILL
-	const HIROTO_ALEXANDER
-	const TERESA_LILLYGREN
-	const THOMAS_HERTZOG
-	const ERIK_JOHNSON
-	const HIRO_NAKAMURA
-	const TERUKI_MURAKAWA
-	const KAZUYOSHI_OSAWA
-	const KIMIKO_NAKAMICHI
-	const CREDIT_END
-	const CREDIT_UNKNOWN
-	const STAFF
-	const DIRECTOR
-	const CODIRECTOR
-	const PROGRAMMERS
-	const GRAPHICS_DIRECTOR
-	const MONSTER_DESIGN
-	const GRAPHICS_DESIGN
-	const CREDIT_MUSIC
-	const CREDIT_SOUND_EFFECTS
-	const GAME_DESIGN
-	const GAME_SCENARIO
-	const TOOL_PROGRAMMING
-	const PARAMETRIC_DESIGN
-	const SCRIPT_DESIGN
-	const MAP_DATA_DESIGN
-	const MAP_DESIGN
-	const PRODUCT_TESTING
-	const SPECIAL_THANKS
-	const PRODUCERS
-	const EXECUTIVE_PRODUCER
-	const POKEMON_ANIMATION
-	const POKEDEX_TEXT
-	const MOBILE_PRJ_LEADER
-	const MOBILE_SYSTEM_AD
-	const MOBILE_STADIUM_DIR
-	const COORDINATION
-	const COPYRIGHT
-	const US_VERSION_STAFF
-	const US_COORDINATION
-	const TEXT_TRANSLATION
-	const PAAD_TESTING
-
-const_value SET -7
-	const CREDITS_THEEND
-	const CREDITS_WAIT2
-	const CREDITS_MUSIC
-	const CREDITS_CLEAR
-	const CREDITS_SCENE
-	const CREDITS_WAIT
-	const CREDITS_END
-
-
 Credits:: ; 109847
 	bit 6, b ; Hall Of Fame
 	ld a, $0
@@ -791,521 +677,8 @@
 ; 109c24 (42:5c24)
 
 
-CreditsBorderGFX:    INCBIN "gfx/credits/border.2bpp"
+INCLUDE "gfx/credits.asm"
 
-CreditsMonsGFX:
-CreditsPichuGFX:     INCBIN "gfx/credits/pichu.2bpp"
-CreditsSmoochumGFX:  INCBIN "gfx/credits/smoochum.2bpp"
-CreditsDittoGFX:     INCBIN "gfx/credits/ditto.2bpp"
-CreditsIgglybuffGFX: INCBIN "gfx/credits/igglybuff.2bpp"
+INCLUDE "data/credits_script.asm"
 
-
-CreditsScript: ; 10acb4
-
-; Clear the banner.
-	db CREDITS_CLEAR
-
-; Pokemon Crystal Version Staff
-	db                STAFF, 1
-
-	db CREDITS_WAIT, 8
-
-; Play the credits music.
-	db CREDITS_MUSIC
-
-	db CREDITS_WAIT2, 10
-
-	db CREDITS_WAIT, 1
-
-; Update the banner.
-	db CREDITS_SCENE, 0 ; Pichu
-
-	db             DIRECTOR, 1
-	db       SATOSHI_TAJIRI, 2
-
-	db CREDITS_WAIT, 12
-
-	db           CODIRECTOR, 1
-	db       JUNICHI_MASUDA, 2
-
-	db CREDITS_WAIT, 12
-
-	db          PROGRAMMERS, 0
-	db       SOUSUKE_TAMADA, 1
-	db       HISASHI_SOGABE, 2
-	db         KEITA_KAGAYA, 3
-	db    YOSHINORI_MATSUDA, 4
-
-	db CREDITS_WAIT, 12
-
-	db          PROGRAMMERS, 0
-	db     SHIGEKI_MORIMOTO, 1
-	db     TETSUYA_WATANABE, 2
-	db        TAKENORI_OOTA, 3
-
-	db CREDITS_WAIT, 12
-
-	db    GRAPHICS_DIRECTOR, 1
-	db         KEN_SUGIMORI, 2
-
-	db CREDITS_WAIT, 12
-
-	db       MONSTER_DESIGN, 0
-	db         KEN_SUGIMORI, 1
-	db    MOTOFUMI_FUJIWARA, 2
-	db     SHIGEKI_MORIMOTO, 3
-	db     HIRONOBU_YOSHIDA, 4
-	db         SATOSHI_OOTA, 5
-
-	db CREDITS_WAIT, 12
-
-	db       MONSTER_DESIGN, 0
-	db       ATSUKO_NISHIDA, 1
-	db          MUNEO_SAITO, 2
-	db       RENA_YOSHIKAWA, 3
-
-	db CREDITS_WAIT, 12
-
-	db    POKEMON_ANIMATION, 1
-	db     HIRONOBU_YOSHIDA, 2
-	db          JUN_OKUTANI, 3
-
-	db CREDITS_WAIT, 12
-
-; Clear the banner.
-	db CREDITS_CLEAR
-
-	db CREDITS_WAIT, 1
-
-; Update the banner.
-	db CREDITS_SCENE, 1 ; Smoochum
-
-	db      GRAPHICS_DESIGN, 0
-	db     HIRONOBU_YOSHIDA, 1
-	db          JUN_OKUTANI, 2
-	db       ASUKA_IWASHITA, 3
-	db     TETSUYA_WATANABE, 4
-
-	db CREDITS_WAIT, 12
-
-	db         CREDIT_MUSIC, 0
-	db       JUNICHI_MASUDA, 1
-	db        MORIKAZU_AOKI, 2
-	db          GO_ICHINOSE, 3
-
-	db CREDITS_WAIT, 12
-
-	db CREDIT_SOUND_EFFECTS, 0
-	db        MORIKAZU_AOKI, 1
-	db       JUNICHI_MASUDA, 2
-	db     TETSUYA_WATANABE, 3
-
-	db CREDITS_WAIT, 12
-
-	db          GAME_DESIGN, 0
-	db       JUNICHI_MASUDA, 1
-	db     SHIGEKI_MORIMOTO, 2
-	db        KOHJI_NISHINO, 3
-
-	db CREDITS_WAIT, 12
-
-	db          GAME_DESIGN, 0
-	db         TETSUJI_OOTA, 1
-	db          HITOMI_SATO, 2
-	db     KENJI_MATSUSHIMA, 3
-
-	db CREDITS_WAIT, 12
-
-	db        GAME_SCENARIO, 0
-	db       JUNICHI_MASUDA, 1
-	db        KOHJI_NISHINO, 2
-	db  TOSHINOBU_MATSUMIYA, 3
-	db     KENJI_MATSUSHIMA, 4
-
-	db CREDITS_WAIT, 12
-
-	db         POKEDEX_TEXT, 1
-	db  TOSHINOBU_MATSUMIYA, 2
-
-	db CREDITS_WAIT, 12
-
-	db     TOOL_PROGRAMMING, 1
-	db       SOUSUKE_TAMADA, 2
-	db        TAKENORI_OOTA, 3
-
-	db CREDITS_WAIT, 12
-
-	db    PARAMETRIC_DESIGN, 1
-	db        KOHJI_NISHINO, 2
-
-	db CREDITS_WAIT, 12
-
-; Clear the banner.
-	db CREDITS_CLEAR
-
-	db CREDITS_WAIT, 1
-
-; Update the banner.
-	db CREDITS_SCENE, 2 ; Ditto
-
-	db        SCRIPT_DESIGN, 1
-	db         TETSUJI_OOTA, 2
-	db        NOBUHIRO_SEYA, 3
-
-	db CREDITS_WAIT, 12
-
-	db      MAP_DATA_DESIGN, 1
-	db         TETSUJI_OOTA, 2
-	db      KAZUHITO_SEKINE, 3
-
-	db CREDITS_WAIT, 12
-
-	db           MAP_DESIGN, 0
-	db         TETSUJI_OOTA, 1
-	db        KOHJI_NISHINO, 2
-	db        NOBUHIRO_SEYA, 3
-
-	db CREDITS_WAIT, 12
-
-	db         COORDINATION, 1
-	db      HIROYUKI_ZINNAI, 2
-
-	db CREDITS_WAIT, 12
-
-	db            PRODUCERS, 0
-	db         SATORU_IWATA, 1
-	db       SATOSHI_YAMATO, 2
-	db     SHIGERU_MIYAMOTO, 3
-
-	db CREDITS_WAIT, 12
-
-	db            PRODUCERS, 1
-	db   TSUNEKAZU_ISHIHARA, 2
-
-	db CREDITS_WAIT, 12
-
-; Clear the banner.
-	db CREDITS_CLEAR
-
-	db CREDITS_WAIT, 1
-
-; Update the banner.
-	db CREDITS_SCENE, 3 ; Igglybuff
-
-	db     US_VERSION_STAFF, 2
-
-	db CREDITS_WAIT, 9
-
-	db      US_COORDINATION, 1
-	db          GAIL_TILDEN, 2
-	db        HIRO_NAKAMURA, 3
-
-	db CREDITS_WAIT, 12
-
-	db      US_COORDINATION, 1
-	db       JUNICHI_MASUDA, 2
-	db        SETH_MCMAHILL, 3
-
-	db CREDITS_WAIT, 12
-
-	db      US_COORDINATION, 1
-	db     HIROTO_ALEXANDER, 2
-	db     TERESA_LILLYGREN, 3
-
-	db CREDITS_WAIT, 12
-
-	db     TEXT_TRANSLATION, 1
-	db        NOB_OGASAWARA, 2
-
-	db CREDITS_WAIT, 12
-
-	db          PROGRAMMERS, 1
-	db      TERUKI_MURAKAWA, 2
-	db      KAZUYOSHI_OSAWA, 3
-
-	db CREDITS_WAIT, 12
-
-	db         PAAD_TESTING, 1
-	db       THOMAS_HERTZOG, 2
-	db         ERIK_JOHNSON, 3
-
-	db CREDITS_WAIT, 12
-
-	db      PRODUCT_TESTING, 0
-	db             PLANNING, 1
-
-	db CREDITS_WAIT, 12
-
-	db      PRODUCT_TESTING, 0
-	db       KEITA_NAKAMURA, 1
-	db      HIROTAKA_UEMURA, 2
-	db       HIROAKI_TAMURA, 3
-	db    NORIAKI_SAKAGUCHI, 4
-
-	db CREDITS_WAIT, 12
-
-	db      PRODUCT_TESTING, 0
-	db NCL_SUPER_MARIO_CLUB, 1
-	db          KENJI_SAIKI, 2
-	db         ATSUSHI_TADA, 3
-	db          MIYUKI_SATO, 4
-
-	db CREDITS_WAIT, 12
-
-	db       SPECIAL_THANKS, 0
-	db     KIMIKO_NAKAMICHI, 1
-	db           AKITO_MORI, 2
-
-	db CREDITS_WAIT, 12
-
-	db       SPECIAL_THANKS, 0
-	db        GAKUZI_NOMOTO, 1
-	db           AI_MASHIMA, 2
-	db      KUNIMI_KAWAMURA, 3
-
-	db CREDITS_WAIT, 12
-
-	db       SPECIAL_THANKS, 0
-	db    MIKIHIRO_ISHIKAWA, 1
-	db   HIDEYUKI_HASHIMOTO, 2
-
-	db CREDITS_WAIT, 12
-
-	db   EXECUTIVE_PRODUCER, 1
-	db     HIROSHI_YAMAUCHI, 2
-
-	db CREDITS_WAIT, 12
-
-	db            COPYRIGHT, 1
-
-	db CREDITS_WAIT, 9
-
-; Display "The End" graphic.
-	db CREDITS_THEEND
-
-	db CREDITS_WAIT, 20
-
-	db CREDITS_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"
-                    next "      PLANNING"             ; "きかくかいはつぶ@"
-                    next " & 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"                 ; "ポケットモンスター"
-                    next "  CRYSTAL VERSION"          ; "  クりスタル バージョン"
-                    next "       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
-	;    (C) 1  9  9  5 - 2  0  0  1    C  r  e  a  t  u  r  e  s     i  n  c .
-	next $60,$61,$62,$63,$64,$65,$66,$6d,$6e,$6f,$70,$71,$72,  $7a,$7b,$7c
-	;    (C) 1  9  9  5 - 2  0  0  1  G  A  M  E  F  R  E  A  K     i  n  c .
-	next $60,$61,$62,$63,$64,$65,$66,$73,$74,$75,$76,$77,$78,$79,  $7a,$7b,$7c
-	db "@"
+INCLUDE "data/credits_strings.asm"
--- a/engine/fruit_trees.asm
+++ b/engine/fruit_trees.asm
@@ -103,7 +103,7 @@
 ; 44097
 
 
-INCLUDE "data/fruit_tree_items.asm"
+INCLUDE "data/items/fruit_trees.asm"
 
 
 FruitBearingTreeText: ; 440b5
--- a/engine/mart.asm
+++ b/engine/mart.asm
@@ -99,23 +99,7 @@
 	ret
 ; 15aee
 
-RooftopSaleData1: ; 15aee
-	db 5
-	dbw POKE_BALL,     150
-	dbw GREAT_BALL,    500
-	dbw SUPER_POTION,  500
-	dbw FULL_HEAL,     500
-	dbw REVIVE,       1200
-	db -1
-RooftopSaleData2: ; 15aff
-	db 5
-	dbw HYPER_POTION, 1000
-	dbw FULL_RESTORE, 2000
-	dbw FULL_HEAL,     500
-	dbw ULTRA_BALL,   1000
-	dbw PROTEIN,      7800
-	db -1
-; 15b10
+INCLUDE "data/items/rooftop_sale.asm"
 
 LoadMartPointer: ; 15b10
 	ld a, b
@@ -355,15 +339,7 @@
 	ret
 ; 15c51
 
-BargainShopData: ; 15c51
-	db 5
-	dbw NUGGET,     4500
-	dbw PEARL,       650
-	dbw BIG_PEARL,  3500
-	dbw STARDUST,    900
-	dbw STAR_PIECE, 4600
-	db -1
-; 15c62
+INCLUDE "data/items/bargain_shop.asm"
 
 
 BuyMenu: ; 15c62
--- /dev/null
+++ b/engine/new_pokedex_entry.asm
@@ -1,0 +1,52 @@
+NewPokedexEntry: ; fb877
+	ld a, [hMapAnims]
+	push af
+	xor a
+	ld [hMapAnims], a
+	call LowVolume
+	call ClearBGPalettes
+	call ClearTileMap
+	call UpdateSprites
+	call ClearSprites
+	ld a, [wPokedexStatus]
+	push af
+	ld a, [hSCX]
+	add $5
+	ld [hSCX], a
+	xor a
+	ld [wPokedexStatus], a
+	callba _NewPokedexEntry
+	call WaitPressAorB_BlinkCursor
+	ld a, $1
+	ld [wPokedexStatus], a
+	callba DisplayDexEntry
+	call WaitPressAorB_BlinkCursor
+	pop af
+	ld [wPokedexStatus], a
+	call MaxVolume
+	call RotateThreePalettesRight
+	ld a, [hSCX]
+	add -5 ; 251 ; NUM_POKEMON
+	ld [hSCX], a
+	call .ReturnFromDexRegistration
+	pop af
+	ld [hMapAnims], a
+	ret
+; fb8c8
+
+.ReturnFromDexRegistration: ; fb8c8
+	call ClearTileMap
+	call LoadFontsExtra
+	call LoadStandardFont
+	callba Pokedex_PlaceFrontpicTopLeftCorner
+	call WaitBGMap2
+	callba GetEnemyMonDVs
+	ld a, [hli]
+	ld [TempMonDVs], a
+	ld a, [hl]
+	ld [TempMonDVs + 1], a
+	ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
+	call GetSGBLayout
+	call SetPalettes
+	ret
+; fb8f1
--- /dev/null
+++ b/engine/play_slow_cry.asm
@@ -1,0 +1,31 @@
+PlaySlowCry: ; fb841
+	ld a, [ScriptVar]
+	call LoadCryHeader
+	jr c, .done
+
+	ld hl, CryPitch
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld bc, -$140
+	add hl, bc
+	ld a, l
+	ld [CryPitch], a
+	ld a, h
+	ld [CryPitch + 1], a
+	ld hl, CryLength
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld bc, $60
+	add hl, bc
+	ld a, l
+	ld [CryLength], a
+	ld a, h
+	ld [CryLength + 1], a
+	callba _PlayCryHeader
+	call WaitSFX
+
+.done
+	ret
+; fb877
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -2338,45 +2338,8 @@
 
 ; 91c5e
 
-Flypoints: ; 91c5e
-; landmark, spawn point
-flypoint: MACRO
-	const FLY_\1
-	db \2, SPAWN_\1
-ENDM
-	const_def
-; Johto
-	flypoint NEW_BARK,    NEW_BARK_TOWN
-	flypoint CHERRYGROVE, CHERRYGROVE_CITY
-	flypoint VIOLET,      VIOLET_CITY
-	flypoint AZALEA,      AZALEA_TOWN
-	flypoint GOLDENROD,   GOLDENROD_CITY
-	flypoint ECRUTEAK,    ECRUTEAK_CITY
-	flypoint OLIVINE,     OLIVINE_CITY
-	flypoint CIANWOOD,    CIANWOOD_CITY
-	flypoint MAHOGANY,    MAHOGANY_TOWN
-	flypoint LAKE,        LAKE_OF_RAGE
-	flypoint BLACKTHORN,  BLACKTHORN_CITY
-	flypoint MT_SILVER,   SILVER_CAVE
-; Kanto
+INCLUDE "data/flypoints.asm"
 
-KANTO_FLYPOINT EQU const_value
-	flypoint PALLET,      PALLET_TOWN
-	flypoint VIRIDIAN,    VIRIDIAN_CITY
-	flypoint PEWTER,      PEWTER_CITY
-	flypoint CERULEAN,    CERULEAN_CITY
-	flypoint VERMILION,   VERMILION_CITY
-	flypoint ROCK_TUNNEL, ROCK_TUNNEL
-	flypoint LAVENDER,    LAVENDER_TOWN
-	flypoint CELADON,     CELADON_CITY
-	flypoint SAFFRON,     SAFFRON_CITY
-	flypoint FUCHSIA,     FUCHSIA_CITY
-	flypoint CINNABAR,    CINNABAR_ISLAND
-	flypoint INDIGO,      INDIGO_PLATEAU
-	db -1
-
-; 91c8f
-
 ret_91c8f: ; 91c8f
 	ret
 
@@ -2872,19 +2835,7 @@
 	ret
 
 .PalMap:
-townmappals: MACRO
-rept _NARG / 2
-	dn \2, \1
-	shift
-	shift
-endr
-endm
-	townmappals 1, 1, 1, 2, 2, 2, 0, 0, 1, 1, 3, 1, 4, 5, 4, 5
-	townmappals 1, 1, 1, 2, 2, 2, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0
-	townmappals 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-	townmappals 0, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0
-	townmappals 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0
-	townmappals 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0
+INCLUDE "data/palettes/town_map.asm"
 ; 91f7b
 
 TownMapMon: ; 91f7b
--- a/engine/time_capsule.asm
+++ b/engine/time_capsule.asm
@@ -144,134 +144,4 @@
 	jr .loop
 ; fb656
 
-
 INCLUDE "data/time_capsule/special_stats.asm"
-
-
-INCLUDE "event/name_rater.asm"
-
-
-PlaySlowCry: ; fb841
-	ld a, [ScriptVar]
-	call LoadCryHeader
-	jr c, .done
-
-	ld hl, CryPitch
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld bc, -$140
-	add hl, bc
-	ld a, l
-	ld [CryPitch], a
-	ld a, h
-	ld [CryPitch + 1], a
-	ld hl, CryLength
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	ld bc, $60
-	add hl, bc
-	ld a, l
-	ld [CryLength], a
-	ld a, h
-	ld [CryLength + 1], a
-	callba _PlayCryHeader
-	call WaitSFX
-
-.done
-	ret
-; fb877
-
-NewPokedexEntry: ; fb877
-	ld a, [hMapAnims]
-	push af
-	xor a
-	ld [hMapAnims], a
-	call LowVolume
-	call ClearBGPalettes
-	call ClearTileMap
-	call UpdateSprites
-	call ClearSprites
-	ld a, [wPokedexStatus]
-	push af
-	ld a, [hSCX]
-	add $5
-	ld [hSCX], a
-	xor a
-	ld [wPokedexStatus], a
-	callba _NewPokedexEntry
-	call WaitPressAorB_BlinkCursor
-	ld a, $1
-	ld [wPokedexStatus], a
-	callba DisplayDexEntry
-	call WaitPressAorB_BlinkCursor
-	pop af
-	ld [wPokedexStatus], a
-	call MaxVolume
-	call RotateThreePalettesRight
-	ld a, [hSCX]
-	add -5 ; 251 ; NUM_POKEMON
-	ld [hSCX], a
-	call .ReturnFromDexRegistration
-	pop af
-	ld [hMapAnims], a
-	ret
-; fb8c8
-
-.ReturnFromDexRegistration: ; fb8c8
-	call ClearTileMap
-	call LoadFontsExtra
-	call LoadStandardFont
-	callba Pokedex_PlaceFrontpicTopLeftCorner
-	call WaitBGMap2
-	callba GetEnemyMonDVs
-	ld a, [hli]
-	ld [TempMonDVs], a
-	ld a, [hl]
-	ld [TempMonDVs + 1], a
-	ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
-	call GetSGBLayout
-	call SetPalettes
-	ret
-; fb8f1
-
-ConvertMon_2to1: ; fb8f1
-; Takes the Gen-2 Pokemon number stored in wd265, finds it in the Pokered_MonIndices table, and returns its index in wd265.
-	push bc
-	push hl
-	ld a, [wd265]
-	ld b, a
-	ld c, 0
-	ld hl, Pokered_MonIndices
-.loop
-	inc c
-	ld a, [hli]
-	cp b
-	jr nz, .loop
-	ld a, c
-	ld [wd265], a
-	pop hl
-	pop bc
-	ret
-; fb908
-
-ConvertMon_1to2: ; fb908
-; Takes the Gen-1 Pokemon number stored in wd265 and returns the corresponding value from Pokered_MonIndices in wd265.
-	push bc
-	push hl
-	ld a, [wd265]
-	dec a
-	ld hl, Pokered_MonIndices
-	ld b, 0
-	ld c, a
-	add hl, bc
-	ld a, [hl]
-	ld [wd265], a
-	pop hl
-	pop bc
-	ret
-; fb91c
-
-
-INCLUDE "data/time_capsule/mon_order.asm"
--- /dev/null
+++ b/engine/time_capsule_2.asm
@@ -1,0 +1,39 @@
+ConvertMon_2to1: ; fb8f1
+; Takes the Gen-2 Pokemon number stored in wd265, finds it in the Pokered_MonIndices table, and returns its index in wd265.
+	push bc
+	push hl
+	ld a, [wd265]
+	ld b, a
+	ld c, 0
+	ld hl, Pokered_MonIndices
+.loop
+	inc c
+	ld a, [hli]
+	cp b
+	jr nz, .loop
+	ld a, c
+	ld [wd265], a
+	pop hl
+	pop bc
+	ret
+; fb908
+
+ConvertMon_1to2: ; fb908
+; Takes the Gen-1 Pokemon number stored in wd265 and returns the corresponding value from Pokered_MonIndices in wd265.
+	push bc
+	push hl
+	ld a, [wd265]
+	dec a
+	ld hl, Pokered_MonIndices
+	ld b, 0
+	ld c, a
+	add hl, bc
+	ld a, [hl]
+	ld [wd265], a
+	pop hl
+	pop bc
+	ret
+; fb91c
+
+
+INCLUDE "data/time_capsule/mon_order.asm"
--- /dev/null
+++ b/engine/unown_dex.asm
@@ -1,0 +1,51 @@
+UpdateUnownDex: ; fba18
+	ld a, [UnownLetter]
+	ld c, a
+	ld b, NUM_UNOWN
+	ld hl, UnownDex
+.loop
+	ld a, [hli]
+	and a
+	jr z, .done
+	cp c
+	ret z
+	dec b
+	jr nz, .loop
+	ret
+
+.done
+	dec hl
+	ld [hl], c
+	ret
+; fba2e
+
+PrintUnownWord: ; fba2e (3e:7a2e)
+	hlcoord 4, 15
+	ld bc, 12
+	ld a, " "
+	call ByteFill
+	ld a, [wDexCurrentUnownIndex]
+	ld e, a
+	ld d, 0
+	ld hl, UnownDex
+	add hl, de
+	ld a, [hl]
+	ld e, a
+	ld d, 0
+	ld hl, UnownWords
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld e, a
+	ld d, [hl]
+	hlcoord 4, 15
+.loop
+	ld a, [de]
+	cp -1
+	ret z
+	inc de
+	ld [hli], a
+	jr .loop
+; fba5a (3e:7a5a)
+
+INCLUDE "data/unown_words.asm"
--- a/engine/unowndex.asm
+++ /dev/null
@@ -1,51 +1,0 @@
-UpdateUnownDex: ; fba18
-	ld a, [UnownLetter]
-	ld c, a
-	ld b, NUM_UNOWN
-	ld hl, UnownDex
-.loop
-	ld a, [hli]
-	and a
-	jr z, .done
-	cp c
-	ret z
-	dec b
-	jr nz, .loop
-	ret
-
-.done
-	dec hl
-	ld [hl], c
-	ret
-; fba2e
-
-PrintUnownWord: ; fba2e (3e:7a2e)
-	hlcoord 4, 15
-	ld bc, 12
-	ld a, " "
-	call ByteFill
-	ld a, [wDexCurrentUnownIndex]
-	ld e, a
-	ld d, 0
-	ld hl, UnownDex
-	add hl, de
-	ld a, [hl]
-	ld e, a
-	ld d, 0
-	ld hl, UnownWords
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld e, a
-	ld d, [hl]
-	hlcoord 4, 15
-.loop
-	ld a, [de]
-	cp -1
-	ret z
-	inc de
-	ld [hli], a
-	jr .loop
-; fba5a (3e:7a5a)
-
-INCLUDE "data/unown_words.asm"
--- a/event/buena.asm
+++ b/event/buena.asm
@@ -289,8 +289,12 @@
 ; 8b129
 
 .indices ; 8b129
-	db 9
-	db 1, 2, 3, 4, 5, 6, 7, 8, 9
+	db NUM_BUENA_PRIZES
+x = 1
+rept NUM_BUENA_PRIZES
+	db x
+x = x + 1
+endr
 	db -1
 ; 8b134
 
@@ -319,7 +323,7 @@
 
 Buena_getprize: ; 8b154
 	dec a
-	ld hl, .prizes
+	ld hl, BuenaPrizeItems
 	ld b, 0
 	ld c, a
 	add hl, bc
@@ -327,14 +331,4 @@
 	ret
 ; 8b15e
 
-.prizes ; 8b15e
-	db ULTRA_BALL,   2
-	db FULL_RESTORE, 2
-	db NUGGET,       3
-	db RARE_CANDY,   3
-	db PROTEIN,      5
-	db IRON,         5
-	db CARBOS,       5
-	db CALCIUM,      5
-	db HP_UP,        5
-; 8b170
+INCLUDE "data/items/buena_prizes.asm"
--- a/event/mom_phone.asm
+++ b/event/mom_phone.asm
@@ -212,7 +212,7 @@
 	ret
 ; fd136
 
-INCLUDE "data/mom_phone_items.asm"
+INCLUDE "data/items/mom_phone.asm"
 
 	db 0, 0, 0 ; XXX
 
--- a/gbhw.asm
+++ /dev/null
@@ -1,135 +1,0 @@
-; Graciously aped from http://nocash.emubase.de/pandocs.htm .
-
-; MBC3
-MBC3SRamEnable EQU $0000
-MBC3RomBank    EQU $2000
-MBC3SRamBank   EQU $4000
-MBC3LatchClock EQU $6000
-MBC3RTC        EQU $a000
-
-SRAM_DISABLE EQU $00
-SRAM_ENABLE  EQU $0a
-
-NUM_SRAM_BANKS EQU 4
-
-RTC_S  EQU $08 ; Seconds   0-59 (0-3Bh)
-RTC_M  EQU $09 ; Minutes   0-59 (0-3Bh)
-RTC_H  EQU $0a ; Hours     0-23 (0-17h)
-RTC_DL EQU $0b ; Lower 8 bits of Day Counter (0-FFh)
-RTC_DH EQU $0c ; Upper 1 bit of Day Counter, Carry Bit, Halt Flag
-        ; Bit 0  Most significant bit of Day Counter (Bit 8)
-        ; Bit 6  Halt (0=Active, 1=Stop Timer)
-        ; Bit 7  Day Counter Carry Bit (1=Counter Overflow)
-
-; interrupt flags
-VBLANK   EQU 0
-LCD_STAT EQU 1
-TIMER    EQU 2
-SERIAL   EQU 3
-JOYPAD   EQU 4
-
-; OAM attribute flags
-OAM_TILE_BANK EQU 3
-OAM_OBP_NUM   EQU 4 ; non CGB Mode Only
-OAM_X_FLIP    EQU 5
-OAM_Y_FLIP    EQU 6
-OAM_PRIORITY  EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
-
-PALETTE_MASK EQU %111
-VRAM_BANK_1  EQU 1 << OAM_TILE_BANK ; $08
-OBP_NUM      EQU 1 << OAM_OBP_NUM   ; $10
-X_FLIP       EQU 1 << OAM_X_FLIP    ; $20
-Y_FLIP       EQU 1 << OAM_Y_FLIP    ; $40
-BEHIND_BG    EQU 1 << OAM_PRIORITY  ; $80
-
-; Hardware registers
-rJOYP       EQU $ff00 ; Joypad (R/W)
-rSB         EQU $ff01 ; Serial transfer data (R/W)
-rSC         EQU $ff02 ; Serial Transfer Control (R/W)
-rSC_ON      EQU 7
-rSC_CGB     EQU 1
-rSC_CLOCK   EQU 0
-rDIV        EQU $ff04 ; Divider Register (R/W)
-rTIMA       EQU $ff05 ; Timer counter (R/W)
-rTMA        EQU $ff06 ; Timer Modulo (R/W)
-rTAC        EQU $ff07 ; Timer Control (R/W)
-rTAC_ON        EQU 2
-rTAC_4096_HZ   EQU 0
-rTAC_262144_HZ EQU 1
-rTAC_65536_HZ  EQU 2
-rTAC_16384_HZ  EQU 3
-rIF         EQU $ff0f ; Interrupt Flag (R/W)
-rNR10       EQU $ff10 ; Channel 1 Sweep register (R/W)
-rNR11       EQU $ff11 ; Channel 1 Sound length/Wave pattern duty (R/W)
-rNR12       EQU $ff12 ; Channel 1 Volume Envelope (R/W)
-rNR13       EQU $ff13 ; Channel 1 Frequency lo (Write Only)
-rNR14       EQU $ff14 ; Channel 1 Frequency hi (R/W)
-rNR20       EQU $ff15 ; Channel 2 Sweep register (R/W)
-rNR21       EQU $ff16 ; Channel 2 Sound Length/Wave Pattern Duty (R/W)
-rNR22       EQU $ff17 ; Channel 2 Volume Envelope (R/W)
-rNR23       EQU $ff18 ; Channel 2 Frequency lo data (W)
-rNR24       EQU $ff19 ; Channel 2 Frequency hi data (R/W)
-rNR30       EQU $ff1a ; Channel 3 Sound on/off (R/W)
-rNR31       EQU $ff1b ; Channel 3 Sound Length
-rNR32       EQU $ff1c ; Channel 3 Select output level (R/W)
-rNR33       EQU $ff1d ; Channel 3 Frequency's lower data (W)
-rNR34       EQU $ff1e ; Channel 3 Frequency's higher data (R/W)
-rNR40       EQU $ff1f ; Channel 4 Sweep register (R/W)
-rNR41       EQU $ff20 ; Channel 4 Sound Length (R/W)
-rNR42       EQU $ff21 ; Channel 4 Volume Envelope (R/W)
-rNR43       EQU $ff22 ; Channel 4 Polynomial Counter (R/W)
-rNR44       EQU $ff23 ; Channel 4 Counter/consecutive; Inital (R/W)
-rNR50       EQU $ff24 ; Channel control / ON-OFF / Volume (R/W)
-rNR51       EQU $ff25 ; Selection of Sound output terminal (R/W)
-rNR52       EQU $ff26 ; Sound on/off
-rWave_0     EQU $ff30
-rWave_1     EQU $ff31
-rWave_2     EQU $ff32
-rWave_3     EQU $ff33
-rWave_4     EQU $ff34
-rWave_5     EQU $ff35
-rWave_6     EQU $ff36
-rWave_7     EQU $ff37
-rWave_8     EQU $ff38
-rWave_9     EQU $ff39
-rWave_a     EQU $ff3a
-rWave_b     EQU $ff3b
-rWave_c     EQU $ff3c
-rWave_d     EQU $ff3d
-rWave_e     EQU $ff3e
-rWave_f     EQU $ff3f
-rLCDC       EQU $ff40 ; LCD Control (R/W)
-rSTAT       EQU $ff41 ; LCDC Status (R/W)
-rSCY        EQU $ff42 ; Scroll Y (R/W)
-rSCX        EQU $ff43 ; Scroll X (R/W)
-rLY         EQU $ff44 ; LCDC Y-Coordinate (R)
-rLYC        EQU $ff45 ; LY Compare (R/W)
-rDMA        EQU $ff46 ; DMA Transfer and Start Address (W)
-rBGP        EQU $ff47 ; BG Palette Data (R/W) - Non CGB Mode Only
-rOBP0       EQU $ff48 ; Object Palette 0 Data (R/W) - Non CGB Mode Only
-rOBP1       EQU $ff49 ; Object Palette 1 Data (R/W) - Non CGB Mode Only
-rWY         EQU $ff4a ; Window Y Position (R/W)
-rWX         EQU $ff4b ; Window X Position minus 7 (R/W)
-rLCDMODE    EQU $ff4c
-rKEY1       EQU $ff4d ; CGB Mode Only - Prepare Speed Switch
-rVBK        EQU $ff4f ; CGB Mode Only - VRAM Bank
-rBLCK       EQU $ff50
-rHDMA1      EQU $ff51 ; CGB Mode Only - New DMA Source, High
-rHDMA2      EQU $ff52 ; CGB Mode Only - New DMA Source, Low
-rHDMA3      EQU $ff53 ; CGB Mode Only - New DMA Destination, High
-rHDMA4      EQU $ff54 ; CGB Mode Only - New DMA Destination, Low
-rHDMA5      EQU $ff55 ; CGB Mode Only - New DMA Length/Mode/Start
-rRP         EQU $ff56 ; CGB Mode Only - Infrared Communications Port
-rBGPI       EQU $ff68 ; CGB Mode Only - Background Palette Index
-rBGPD       EQU $ff69 ; CGB Mode Only - Background Palette Data
-rOBPI       EQU $ff6a ; CGB Mode Only - Sprite Palette Index
-rOBPD       EQU $ff6b ; CGB Mode Only - Sprite Palette Data
-rUNKNOWN1   EQU $ff6c ; (FEh) Bit 0 (Read/Write) - CGB Mode Only
-rSVBK       EQU $ff70 ; CGB Mode Only - WRAM Bank
-rUNKNOWN2   EQU $ff72 ; (00h) - Bit 0-7 (Read/Write)
-rUNKNOWN3   EQU $ff73 ; (00h) - Bit 0-7 (Read/Write)
-rUNKNOWN4   EQU $ff74 ; (00h) - Bit 0-7 (Read/Write) - CGB Mode Only
-rUNKNOWN5   EQU $ff75 ; (8Fh) - Bit 4-6 (Read/Write)
-rUNKNOWN6   EQU $ff76 ; (00h) - Always 00h (Read Only)
-rUNKNOWN7   EQU $ff77 ; (00h) - Always 00h (Read Only)
-rIE         EQU $ffff ; Interrupt Enable (R/W)
--- /dev/null
+++ b/gfx/credits.asm
@@ -1,0 +1,7 @@
+CreditsBorderGFX:    INCBIN "gfx/credits/border.2bpp"
+
+CreditsMonsGFX:
+CreditsPichuGFX:     INCBIN "gfx/credits/pichu.2bpp"
+CreditsSmoochumGFX:  INCBIN "gfx/credits/smoochum.2bpp"
+CreditsDittoGFX:     INCBIN "gfx/credits/ditto.2bpp"
+CreditsIgglybuffGFX: INCBIN "gfx/credits/igglybuff.2bpp"
--- a/lib/mobile/main.asm
+++ b/lib/mobile/main.asm
@@ -2,7 +2,7 @@
 
 charmap "<CR>", $d
 
-INCLUDE "gbhw.asm"
+INCLUDE "constants/hardware_constants.asm"
 
 SECTION "Main", ROMX
 
--- a/main.asm
+++ b/main.asm
@@ -5301,7 +5301,11 @@
 
 INCLUDE "gfx/font.asm"
 INCLUDE "engine/time_capsule.asm"
-INCLUDE "engine/unowndex.asm"
+INCLUDE "event/name_rater.asm"
+INCLUDE "engine/play_slow_cry.asm"
+INCLUDE "engine/new_pokedex_entry.asm"
+INCLUDE "engine/time_capsule_2.asm"
+INCLUDE "engine/unown_dex.asm"
 INCLUDE "event/magikarp.asm"
 INCLUDE "battle/hidden_power.asm"
 INCLUDE "battle/misc.asm"