From 7dc495b3c9269eba88abe1168cc694a2ec3e5e0f Mon Sep 17 00:00:00 2001 From: Bryan Bishop Date: Sun, 4 Mar 2012 21:31:27 -0600 Subject: [PATCH] initial commit --- .hgignore | 32 + Makefile | 21 + README | 21 + constants.asm | 0 main.asm | 1885 +++++++++++++++++++++++++++++++++++++++++++++++ pokecrystal.asm | 1 + textpre.awk | 302 ++++++++ 7 files changed, 2262 insertions(+) create mode 100644 .hgignore create mode 100644 Makefile create mode 100644 README create mode 100644 constants.asm create mode 100644 main.asm create mode 100644 pokecrystal.asm create mode 100644 textpre.awk diff --git a/.hgignore b/.hgignore new file mode 100644 index 000000000..8ba9d65a8 --- /dev/null +++ b/.hgignore @@ -0,0 +1,32 @@ +syntax: glob + +#precompiled python +*.pyc + +#compiled object file +*.o + +#no binaries +*.exe + +#roms +*.gbc + +#generated +*.tx + +#swap files for vim +.*.swp + +#no data from extras/ +extras/*.json + +#for any of the poor souls with save game files in their working directory +baserom.sgm +baserom.sav +pokered.sgm +pokered.sav + +#for vim configuration +#url: http://www.vim.org/scripts/script.php?script_id=441 +.lvimrc diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..548d67a5d --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ +#gawk sort order +export LC_CTYPE=C + +.SUFFIXES: .asm .tx .o .gbc + +TEXTFILES = + +all: pokecrystal.gbc + +pokecrystal.o: pokecrystal.asm main.tx constants.asm ${TEXTFILES} + rgbasm -o pokecrystal.o pokecrystal.asm + +.asm.tx: + awk -f textpre.awk < $< > $@ + +pokecrystal.gbc: pokecrystal.o + rgblink -o $@ $< + cmp baserom.gbc $@ + +clean: + rm -f main.tx pokecrystal.o pokecrystal.gbc ${TEXTFILES} diff --git a/README b/README new file mode 100644 index 000000000..d95036dce --- /dev/null +++ b/README @@ -0,0 +1,21 @@ +This is a disassembly of Pokémon Crystal. + +It uses the following ROM as a base: + Pokemon - Crystal Version (UE) (V1.0) [C][!].gbc + md5: 9f2922b235a5eeb78d65594e82ef5dde + +To assemble, first install RGBDS and put it in your path. + +The version of RGBDS needed is rgbds-linux: + https://github.com/bentley/rgbds/ + git://github.com/bentley/rgbds.git + +Then copy the Pokémon ROM to this directory as "baserom.gbc". +Then run "make" in your shell. + +This will output a file named "pokecrystal.gbc". + +See also the disassembly of Pokémon Red: + http://bitbucket.org/iimarckus/pokered + +nucleus.kafuka.org #skeetendo diff --git a/constants.asm b/constants.asm new file mode 100644 index 000000000..e69de29bb diff --git a/main.asm b/main.asm new file mode 100644 index 000000000..0caa086fb --- /dev/null +++ b/main.asm @@ -0,0 +1,1885 @@ +SECTION "bank0",HOME +INCBIN "baserom.gbc",$0,$4000 +SECTION "bank1",DATA,BANK[$1] +INCBIN "baserom.gbc",$4000,$4000 +SECTION "bank2",DATA,BANK[$2] +INCBIN "baserom.gbc",$8000,$4000 +SECTION "bank3",DATA,BANK[$3] +INCBIN "baserom.gbc",$C000,$4000 +SECTION "bank4",DATA,BANK[$4] +INCBIN "baserom.gbc",$10000,$4000 +SECTION "bank5",DATA,BANK[$5] +INCBIN "baserom.gbc",$14000,$4000 +SECTION "bank6",DATA,BANK[$6] +INCBIN "baserom.gbc",$18000,$4000 +SECTION "bank7",DATA,BANK[$7] +INCBIN "baserom.gbc",$1C000,$4000 +SECTION "bank8",DATA,BANK[$8] +INCBIN "baserom.gbc",$20000,$4000 +SECTION "bank9",DATA,BANK[$9] +INCBIN "baserom.gbc",$24000,$4000 +SECTION "bankA",DATA,BANK[$A] +INCBIN "baserom.gbc",$28000,$4000 +SECTION "bankB",DATA,BANK[$B] +INCBIN "baserom.gbc",$2C000,$4000 +SECTION "bankC",DATA,BANK[$C] +INCBIN "baserom.gbc",$30000,$4000 +SECTION "bankD",DATA,BANK[$D] +INCBIN "baserom.gbc",$34000,$4000 +SECTION "bankE",DATA,BANK[$E] +INCBIN "baserom.gbc",$38000,$4000 +SECTION "bankF",DATA,BANK[$F] +INCBIN "baserom.gbc",$3C000,$4000 +SECTION "bank10",DATA,BANK[$10] +INCBIN "baserom.gbc",$40000,$4000 +SECTION "bank11",DATA,BANK[$11] +INCBIN "baserom.gbc",$44000,$4000 +SECTION "bank12",DATA,BANK[$12] +INCBIN "baserom.gbc",$48000,$4000 +SECTION "bank13",DATA,BANK[$13] +INCBIN "baserom.gbc",$4C000,$4000 +SECTION "bank14",DATA,BANK[$14] +INCBIN "baserom.gbc",$50000,$3384 + + db "BULBASAUR@" + db "IVYSAUR@@@" + db "VENUSAUR@@" + db "CHARMANDER" + db "CHARMELEON" + db "CHARIZARD@" + db "SQUIRTLE@@" + db "WARTORTLE@" + db "BLASTOISE@" + db "CATERPIE@@" + db "METAPOD@@@" + db "BUTTERFREE" + db "WEEDLE@@@@" + db "KAKUNA@@@@" + db "BEEDRILL@@" + db "PIDGEY@@@@" + db "PIDGEOTTO@" + db "PIDGEOT@@@" + db "RATTATA@@@" + db "RATICATE@@" + db "SPEAROW@@@" + db "FEAROW@@@@" + db "EKANS@@@@@" + db "ARBOK@@@@@" + db "PIKACHU@@@" + db "RAICHU@@@@" + db "SANDSHREW@" + db "SANDSLASH@" + db "NIDORAN♀@@" + db "NIDORINA@@" + db "NIDOQUEEN@" + db "NIDORAN♂@@" + db "NIDORINO@@" + db "NIDOKING@@" + db "CLEFAIRY@@" + db "CLEFABLE@@" + db "VULPIX@@@@" + db "NINETALES@" + db "JIGGLYPUFF" + db "WIGGLYTUFF" + db "ZUBAT@@@@@" + db "GOLBAT@@@@" + db "ODDISH@@@@" + db "GLOOM@@@@@" + db "VILEPLUME@" + db "PARAS@@@@@" + db "PARASECT@@" + db "VENONAT@@@" + db "VENOMOTH@@" + db "DIGLETT@@@" + db "DUGTRIO@@@" + db "MEOWTH@@@@" + db "PERSIAN@@@" + db "PSYDUCK@@@" + db "GOLDUCK@@@" + db "MANKEY@@@@" + db "PRIMEAPE@@" + db "GROWLITHE@" + db "ARCANINE@@" + db "POLIWAG@@@" + db "POLIWHIRL@" + db "POLIWRATH@" + db "ABRA@@@@@@" + db "KADABRA@@@" + db "ALAKAZAM@@" + db "MACHOP@@@@" + db "MACHOKE@@@" + db "MACHAMP@@@" + db "BELLSPROUT" + db "WEEPINBELL" + db "VICTREEBEL" + db "TENTACOOL@" + db "TENTACRUEL" + db "GEODUDE@@@" + db "GRAVELER@@" + db "GOLEM@@@@@" + db "PONYTA@@@@" + db "RAPIDASH@@" + db "SLOWPOKE@@" + db "SLOWBRO@@@" + db "MAGNEMITE@" + db "MAGNETON@@" + db "FARFETCH'D" + db "DODUO@@@@@" + db "DODRIO@@@@" + db "SEEL@@@@@@" + db "DEWGONG@@@" + db "GRIMER@@@@" + db "MUK@@@@@@@" + db "SHELLDER@@" + db "CLOYSTER@@" + db "GASTLY@@@@" + db "HAUNTER@@@" + db "GENGAR@@@@" + db "ONIX@@@@@@" + db "DROWZEE@@@" + db "HYPNO@@@@@" + db "KRABBY@@@@" + db "KINGLER@@@" + db "VOLTORB@@@" + db "ELECTRODE@" + db "EXEGGCUTE@" + db "EXEGGUTOR@" + db "CUBONE@@@@" + db "MAROWAK@@@" + db "HITMONLEE@" + db "HITMONCHAN" + db "LICKITUNG@" + db "KOFFING@@@" + db "WEEZING@@@" + db "RHYHORN@@@" + db "RHYDON@@@@" + db "CHANSEY@@@" + db "TANGELA@@@" + db "KANGASKHAN" + db "HORSEA@@@@" + db "SEADRA@@@@" + db "GOLDEEN@@@" + db "SEAKING@@@" + db "STARYU@@@@" + db "STARMIE@@@" + db "MR.MIME@@@" + db "SCYTHER@@@" + db "JYNX@@@@@@" + db "ELECTABUZZ" + db "MAGMAR@@@@" + db "PINSIR@@@@" + db "TAUROS@@@@" + db "MAGIKARP@@" + db "GYARADOS@@" + db "LAPRAS@@@@" + db "DITTO@@@@@" + db "EEVEE@@@@@" + db "VAPOREON@@" + db "JOLTEON@@@" + db "FLAREON@@@" + db "PORYGON@@@" + db "OMANYTE@@@" + db "OMASTAR@@@" + db "KABUTO@@@@" + db "KABUTOPS@@" + db "AERODACTYL" + db "SNORLAX@@@" + db "ARTICUNO@@" + db "ZAPDOS@@@@" + db "MOLTRES@@@" + db "DRATINI@@@" + db "DRAGONAIR@" + db "DRAGONITE@" + db "MEWTWO@@@@" + db "MEW@@@@@@@" + db "CHIKORITA@" + db "BAYLEEF@@@" + db "MEGANIUM@@" + db "CYNDAQUIL@" + db "QUILAVA@@@" + db "TYPHLOSION" + db "TOTODILE@@" + db "CROCONAW@@" + db "FERALIGATR" + db "SENTRET@@@" + db "FURRET@@@@" + db "HOOTHOOT@@" + db "NOCTOWL@@@" + db "LEDYBA@@@@" + db "LEDIAN@@@@" + db "SPINARAK@@" + db "ARIADOS@@@" + db "CROBAT@@@@" + db "CHINCHOU@@" + db "LANTURN@@@" + db "PICHU@@@@@" + db "CLEFFA@@@@" + db "IGGLYBUFF@" + db "TOGEPI@@@@" + db "TOGETIC@@@" + db "NATU@@@@@@" + db "XATU@@@@@@" + db "MAREEP@@@@" + db "FLAAFFY@@@" + db "AMPHAROS@@" + db "BELLOSSOM@" + db "MARILL@@@@" + db "AZUMARILL@" + db "SUDOWOODO@" + db "POLITOED@@" + db "HOPPIP@@@@" + db "SKIPLOOM@@" + db "JUMPLUFF@@" + db "AIPOM@@@@@" + db "SUNKERN@@@" + db "SUNFLORA@@" + db "YANMA@@@@@" + db "WOOPER@@@@" + db "QUAGSIRE@@" + db "ESPEON@@@@" + db "UMBREON@@@" + db "MURKROW@@@" + db "SLOWKING@@" + db "MISDREAVUS" + db "UNOWN@@@@@" + db "WOBBUFFET@" + db "GIRAFARIG@" + db "PINECO@@@@" + db "FORRETRESS" + db "DUNSPARCE@" + db "GLIGAR@@@@" + db "STEELIX@@@" + db "SNUBBULL@@" + db "GRANBULL@@" + db "QWILFISH@@" + db "SCIZOR@@@@" + db "SHUCKLE@@@" + db "HERACROSS@" + db "SNEASEL@@@" + db "TEDDIURSA@" + db "URSARING@@" + db "SLUGMA@@@@" + db "MAGCARGO@@" + db "SWINUB@@@@" + db "PILOSWINE@" + db "CORSOLA@@@" + db "REMORAID@@" + db "OCTILLERY@" + db "DELIBIRD@@" + db "MANTINE@@@" + db "SKARMORY@@" + db "HOUNDOUR@@" + db "HOUNDOOM@@" + db "KINGDRA@@@" + db "PHANPY@@@@" + db "DONPHAN@@@" + db "PORYGON2@@" + db "STANTLER@@" + db "SMEARGLE@@" + db "TYROGUE@@@" + db "HITMONTOP@" + db "SMOOCHUM@@" + db "ELEKID@@@@" + db "MAGBY@@@@@" + db "MILTANK@@@" + db "BLISSEY@@@" + db "RAIKOU@@@@" + db "ENTEI@@@@@" + db "SUICUNE@@@" + db "LARVITAR@@" + db "PUPITAR@@@" + db "TYRANITAR@" + db "LUGIA@@@@@" + db "HO-OH@@@@@" + db "CELEBI@@@@" + db "?????@@@@@" + db "EGG@@@@@@@" + db "?????@@@@@" + db "?????@@@@@" + db "?????@@@@@" + +INCBIN "baserom.gbc",$53D84,$4000 - $3D84 +SECTION "bank15",DATA,BANK[$15] +INCBIN "baserom.gbc",$54000,$4000 +SECTION "bank16",DATA,BANK[$16] +INCBIN "baserom.gbc",$58000,$4000 +SECTION "bank17",DATA,BANK[$17] +INCBIN "baserom.gbc",$5C000,$4000 +SECTION "bank18",DATA,BANK[$18] +INCBIN "baserom.gbc",$60000,$4000 +SECTION "bank19",DATA,BANK[$19] +INCBIN "baserom.gbc",$64000,$4000 +SECTION "bank1A",DATA,BANK[$1A] +INCBIN "baserom.gbc",$68000,$4000 +SECTION "bank1B",DATA,BANK[$1B] +INCBIN "baserom.gbc",$6C000,$4000 +SECTION "bank1C",DATA,BANK[$1C] +INCBIN "baserom.gbc",$70000,$4000 +SECTION "bank1D",DATA,BANK[$1D] +INCBIN "baserom.gbc",$74000,$4000 +SECTION "bank1E",DATA,BANK[$1E] +INCBIN "baserom.gbc",$78000,$4000 +SECTION "bank1F",DATA,BANK[$1F] +INCBIN "baserom.gbc",$7C000,$4000 +SECTION "bank20",DATA,BANK[$20] +INCBIN "baserom.gbc",$80000,$4000 +SECTION "bank21",DATA,BANK[$21] +INCBIN "baserom.gbc",$84000,$4000 +SECTION "bank22",DATA,BANK[$22] +INCBIN "baserom.gbc",$88000,$4000 +SECTION "bank23",DATA,BANK[$23] +INCBIN "baserom.gbc",$8C000,$4000 +SECTION "bank24",DATA,BANK[$24] +INCBIN "baserom.gbc",$90000,$4000 +SECTION "bank25",DATA,BANK[$25] +INCBIN "baserom.gbc",$94000,$4000 +SECTION "bank26",DATA,BANK[$26] +INCBIN "baserom.gbc",$98000,$4000 +SECTION "bank27",DATA,BANK[$27] +INCBIN "baserom.gbc",$9C000,$4000 +SECTION "bank28",DATA,BANK[$28] +INCBIN "baserom.gbc",$A0000,$4000 +SECTION "bank29",DATA,BANK[$29] +INCBIN "baserom.gbc",$A4000,$4000 +SECTION "bank2A",DATA,BANK[$2A] +INCBIN "baserom.gbc",$A8000,$4000 +SECTION "bank2B",DATA,BANK[$2B] +INCBIN "baserom.gbc",$AC000,$4000 +SECTION "bank2C",DATA,BANK[$2C] +INCBIN "baserom.gbc",$B0000,$4000 +SECTION "bank2D",DATA,BANK[$2D] +INCBIN "baserom.gbc",$B4000,$4000 +SECTION "bank2E",DATA,BANK[$2E] +INCBIN "baserom.gbc",$B8000,$4000 +SECTION "bank2F",DATA,BANK[$2F] +INCBIN "baserom.gbc",$BC000,$4000 +SECTION "bank30",DATA,BANK[$30] +INCBIN "baserom.gbc",$C0000,$4000 +SECTION "bank31",DATA,BANK[$31] +INCBIN "baserom.gbc",$C4000,$4000 +SECTION "bank32",DATA,BANK[$32] +INCBIN "baserom.gbc",$C8000,$4000 +SECTION "bank33",DATA,BANK[$33] +INCBIN "baserom.gbc",$CC000,$4000 +SECTION "bank34",DATA,BANK[$34] +INCBIN "baserom.gbc",$D0000,$4000 +SECTION "bank35",DATA,BANK[$35] +INCBIN "baserom.gbc",$D4000,$4000 +SECTION "bank36",DATA,BANK[$36] +INCBIN "baserom.gbc",$D8000,$4000 +SECTION "bank37",DATA,BANK[$37] +INCBIN "baserom.gbc",$DC000,$4000 +SECTION "bank38",DATA,BANK[$38] +INCBIN "baserom.gbc",$E0000,$4000 +SECTION "bank39",DATA,BANK[$39] +INCBIN "baserom.gbc",$E4000,$4000 +SECTION "bank3A",DATA,BANK[$3A] +INCBIN "baserom.gbc",$E8000,$4000 +SECTION "bank3B",DATA,BANK[$3B] +INCBIN "baserom.gbc",$EC000,$4000 +SECTION "bank3C",DATA,BANK[$3C] +INCBIN "baserom.gbc",$F0000,$4000 +SECTION "bank3D",DATA,BANK[$3D] +INCBIN "baserom.gbc",$F4000,$4000 +SECTION "bank3E",DATA,BANK[$3E] +INCBIN "baserom.gbc",$F8000,$4000 +SECTION "bank3F",DATA,BANK[$3F] +INCBIN "baserom.gbc",$FC000,$4000 +SECTION "bank40",DATA,BANK[$40] +INCBIN "baserom.gbc",$100000,$4000 +SECTION "bank41",DATA,BANK[$41] +INCBIN "baserom.gbc",$104000,$4000 +SECTION "bank42",DATA,BANK[$42] +INCBIN "baserom.gbc",$108000,$4000 +SECTION "bank43",DATA,BANK[$43] +INCBIN "baserom.gbc",$10C000,$4000 +SECTION "bank44",DATA,BANK[$44] +INCBIN "baserom.gbc",$110000,$4000 +SECTION "bank45",DATA,BANK[$45] +INCBIN "baserom.gbc",$114000,$4000 +SECTION "bank46",DATA,BANK[$46] +INCBIN "baserom.gbc",$118000,$4000 +SECTION "bank47",DATA,BANK[$47] +INCBIN "baserom.gbc",$11C000,$4000 +SECTION "bank48",DATA,BANK[$48] +INCBIN "baserom.gbc",$120000,$4000 +SECTION "bank49",DATA,BANK[$49] +INCBIN "baserom.gbc",$124000,$4000 +SECTION "bank4A",DATA,BANK[$4A] +INCBIN "baserom.gbc",$128000,$4000 +SECTION "bank4B",DATA,BANK[$4B] +INCBIN "baserom.gbc",$12C000,$4000 +SECTION "bank4C",DATA,BANK[$4C] +INCBIN "baserom.gbc",$130000,$4000 +SECTION "bank4D",DATA,BANK[$4D] +INCBIN "baserom.gbc",$134000,$4000 +SECTION "bank4E",DATA,BANK[$4E] +INCBIN "baserom.gbc",$138000,$4000 +SECTION "bank4F",DATA,BANK[$4F] +INCBIN "baserom.gbc",$13C000,$4000 +SECTION "bank50",DATA,BANK[$50] +INCBIN "baserom.gbc",$140000,$4000 +SECTION "bank51",DATA,BANK[$51] +INCBIN "baserom.gbc",$144000,$4000 +SECTION "bank52",DATA,BANK[$52] +INCBIN "baserom.gbc",$148000,$4000 +SECTION "bank53",DATA,BANK[$53] +INCBIN "baserom.gbc",$14C000,$4000 +SECTION "bank54",DATA,BANK[$54] +INCBIN "baserom.gbc",$150000,$4000 +SECTION "bank55",DATA,BANK[$55] +INCBIN "baserom.gbc",$154000,$4000 +SECTION "bank56",DATA,BANK[$56] +INCBIN "baserom.gbc",$158000,$4000 +SECTION "bank57",DATA,BANK[$57] +INCBIN "baserom.gbc",$15C000,$4000 +SECTION "bank58",DATA,BANK[$58] +INCBIN "baserom.gbc",$160000,$4000 +SECTION "bank59",DATA,BANK[$59] +INCBIN "baserom.gbc",$164000,$4000 +SECTION "bank5A",DATA,BANK[$5A] +INCBIN "baserom.gbc",$168000,$4000 +SECTION "bank5B",DATA,BANK[$5B] +INCBIN "baserom.gbc",$16C000,$4000 +SECTION "bank5C",DATA,BANK[$5C] +INCBIN "baserom.gbc",$170000,$4000 +SECTION "bank5D",DATA,BANK[$5D] +INCBIN "baserom.gbc",$174000,$4000 +SECTION "bank5E",DATA,BANK[$5E] +INCBIN "baserom.gbc",$178000,$4000 +SECTION "bank5F",DATA,BANK[$5F] +INCBIN "baserom.gbc",$17C000,$4000 +SECTION "bank60",DATA,BANK[$60] +INCBIN "baserom.gbc",$180000,$4000 +SECTION "bank61",DATA,BANK[$61] +INCBIN "baserom.gbc",$184000,$4000 +SECTION "bank62",DATA,BANK[$62] +INCBIN "baserom.gbc",$188000,$4000 +SECTION "bank63",DATA,BANK[$63] +INCBIN "baserom.gbc",$18C000,$4000 +SECTION "bank64",DATA,BANK[$64] +INCBIN "baserom.gbc",$190000,$4000 +SECTION "bank65",DATA,BANK[$65] +INCBIN "baserom.gbc",$194000,$4000 +SECTION "bank66",DATA,BANK[$66] +INCBIN "baserom.gbc",$198000,$4000 +SECTION "bank67",DATA,BANK[$67] +INCBIN "baserom.gbc",$19C000,$4000 +SECTION "bank68",DATA,BANK[$68] +INCBIN "baserom.gbc",$1A0000,$4000 +SECTION "bank69",DATA,BANK[$69] +INCBIN "baserom.gbc",$1A4000,$4000 +SECTION "bank6A",DATA,BANK[$6A] +INCBIN "baserom.gbc",$1A8000,$4000 +SECTION "bank6B",DATA,BANK[$6B] +INCBIN "baserom.gbc",$1AC000,$4000 +SECTION "bank6C",DATA,BANK[$6C] +INCBIN "baserom.gbc",$1B0000,$4000 +SECTION "bank6D",DATA,BANK[$6D] +INCBIN "baserom.gbc",$1B4000,$4000 +SECTION "bank6E",DATA,BANK[$6E] +INCBIN "baserom.gbc",$1B8000,$4000 +SECTION "bank6F",DATA,BANK[$6F] +INCBIN "baserom.gbc",$1BC000,$4000 +SECTION "bank70",DATA,BANK[$70] +INCBIN "baserom.gbc",$1C0000,$4000 +SECTION "bank71",DATA,BANK[$71] +INCBIN "baserom.gbc",$1C4000,$4000 +SECTION "bank72",DATA,BANK[$72] + + db "MASTER BALL@" + db "ULTRA BALL@" + db "BRIGHTPOWDER@" + db "GREAT BALL@" + db "# BALL@" + db "TERU-SAMA@" + db "BICYCLE@" + db "MOON STONE@" + db "ANTIDOTE@" + db "BURN HEAL@" + db "ICE HEAL@" + db "AWAKENING@" + db "PARLYZ HEAL@" + db "FULL RESTORE@" + db "MAX POTION@" + db "HYPER POTION@" + db "SUPER POTION@" + db "POTION@" + db "ESCAPE ROPE@" + db "REPEL@" + db "MAX ELIXER@" + db "FIRE STONE@" + db "THUNDERSTONE@" + db "WATER STONE@" + db "TERU-SAMA@" + db "HP UP@" + db "PROTEIN@" + db "IRON@" + db "CARBOS@" + db "LUCKY PUNCH@" + db "CALCIUM@" + db "RARE CANDY@" + db "X ACCURACY@" + db "LEAF STONE@" + db "METAL POWDER@" + db "NUGGET@" + db "# DOLL@" + db "FULL HEAL@" + db "REVIVE@" + db "MAX REVIVE@" + db "GUARD SPEC.@" + db "SUPER REPEL@" + db "MAX REPEL@" + db "DIRE HIT@" + db "TERU-SAMA@" + db "FRESH WATER@" + db "SODA POP@" + db "LEMONADE@" + db "X ATTACK@" + db "TERU-SAMA@" + db "X DEFEND@" + db "X SPEED@" + db "X SPECIAL@" + db "COIN CASE@" + db "ITEMFINDER@" + db "TERU-SAMA@" + db "EXP.SHARE@" + db "OLD ROD@" + db "GOOD ROD@" + db "SILVER LEAF@" + db "SUPER ROD@" + db "PP UP@" + db "ETHER@" + db "MAX ETHER@" + db "ELIXER@" + db "RED SCALE@" + db "SECRETPOTION@" + db "S.S.TICKET@" + db "MYSTERY EGG@" + db "CLEAR BELL@" + db "SILVER WING@" + db "MOOMOO MILK@" + db "QUICK CLAW@" + db "PSNCUREBERRY@" + db "GOLD LEAF@" + db "SOFT SAND@" + db "SHARP BEAK@" + db "PRZCUREBERRY@" + db "BURNT BERRY@" + db "ICE BERRY@" + db "POISON BARB@" + db "KING'S ROCK@" + db "BITTER BERRY@" + db "MINT BERRY@" + db "RED APRICORN@" + db "TINYMUSHROOM@" + db "BIG MUSHROOM@" + db "SILVERPOWDER@" + db "BLU APRICORN@" + db "TERU-SAMA@" + db "AMULET COIN@" + db "YLW APRICORN@" + db "GRN APRICORN@" + db "CLEANSE TAG@" + db "MYSTIC WATER@" + db "TWISTEDSPOON@" + db "WHT APRICORN@" + db "BLACKBELT@" + db "BLK APRICORN@" + db "TERU-SAMA@" + db "PNK APRICORN@" + db "BLACKGLASSES@" + db "SLOWPOKETAIL@" + db "PINK BOW@" + db "STICK@" + db "SMOKE BALL@" + db "NEVERMELTICE@" + db "MAGNET@" + db "MIRACLEBERRY@" + db "PEARL@" + db "BIG PEARL@" + db "EVERSTONE@" + db "SPELL TAG@" + db "RAGECANDYBAR@" + db "GS BALL@" + db "BLUE CARD@" + db "MIRACLE SEED@" + db "THICK CLUB@" + db "FOCUS BAND@" + db "TERU-SAMA@" + db "ENERGYPOWDER@" + db "ENERGY ROOT@" + db "HEAL POWDER@" + db "REVIVAL HERB@" + db "HARD STONE@" + db "LUCKY EGG@" + db "CARD KEY@" + db "MACHINE PART@" + db "EGG TICKET@" + db "LOST ITEM@" + db "STARDUST@" + db "STAR PIECE@" + db "BASEMENT KEY@" + db "PASS@" + db "TERU-SAMA@" + db "TERU-SAMA@" + db "TERU-SAMA@" + db "CHARCOAL@" + db "BERRY JUICE@" + db "SCOPE LENS@" + db "TERU-SAMA@" + db "TERU-SAMA@" + db "METAL COAT@" + db "DRAGON FANG@" + db "TERU-SAMA@" + db "LEFTOVERS@" + db "TERU-SAMA@" + db "TERU-SAMA@" + db "TERU-SAMA@" + db "MYSTERYBERRY@" + db "DRAGON SCALE@" + db "BERSERK GENE@" + db "TERU-SAMA@" + db "TERU-SAMA@" + db "TERU-SAMA@" + db "SACRED ASH@" + db "HEAVY BALL@" + db "FLOWER MAIL@" + db "LEVEL BALL@" + db "LURE BALL@" + db "FAST BALL@" + db "TERU-SAMA@" + db "LIGHT BALL@" + db "FRIEND BALL@" + db "MOON BALL@" + db "LOVE BALL@" + db "NORMAL BOX@" + db "GORGEOUS BOX@" + db "SUN STONE@" + db "POLKADOT BOW@" + db "TERU-SAMA@" + db "UP-GRADE@" + db "BERRY@" + db "GOLD BERRY@" + db "SQUIRTBOTTLE@" + db "TERU-SAMA@" + db "PARK BALL@" + db "RAINBOW WING@" + db "TERU-SAMA@" + db "BRICK PIECE@" + db "SURF MAIL@" + db "LITEBLUEMAIL@" + db "PORTRAITMAIL@" + db "LOVELY MAIL@" + db "EON MAIL@" + db "MORPH MAIL@" + db "BLUESKY MAIL@" + db "MUSIC MAIL@" + db "MIRAGE MAIL@" + db "TERU-SAMA@" + db "TM01@" + db "TM02@" + db "TM03@" + db "TM04@" + db "TERU-SAMA@" + db "TM05@" + db "TM06@" + db "TM07@" + db "TM08@" + db "TM09@" + db "TM10@" + db "TM11@" + db "TM12@" + db "TM13@" + db "TM14@" + db "TM15@" + db "TM16@" + db "TM17@" + db "TM18@" + db "TM19@" + db "TM20@" + db "TM21@" + db "TM22@" + db "TM23@" + db "TM24@" + db "TM25@" + db "TM26@" + db "TM27@" + db "TM28@" + db "TERU-SAMA@" + db "TM29@" + db "TM30@" + db "TM31@" + db "TM32@" + db "TM33@" + db "TM34@" + db "TM35@" + db "TM36@" + db "TM37@" + db "TM38@" + db "TM39@" + db "TM40@" + db "TM41@" + db "TM42@" + db "TM43@" + db "TM44@" + db "TM45@" + db "TM46@" + db "TM47@" + db "TM48@" + db "TM49@" + db "TM50@" + db "HM01@" + db "HM02@" + db "HM03@" + db "HM04@" + db "HM05@" + db "HM06@" + db "HM07@" + db "TERU-SAMA@" + db "TERU-SAMA@" + db "TERU-SAMA@" + db "TERU-SAMA@" + db "TERU-SAMA@" + db "TERU-SAMA@" + db "?@" + +INCBIN "baserom.gbc",$1C8955,$1C8B85-$1C8955 + +MasterBallDesc: + db "The best BALL. It",$4E + db "never misses.@" + +UltraBallDesc: + db "A BALL with a high",$4E + db "rate of success.@" + +BrightpowderDesc: + db "Lowers the foe's",$4E + db "accuracy. (HOLD)@" + +GreatBallDesc: + db "A BALL with a de-",$4E + db "cent success rate.@" + +PokeBallDesc: + db "An item for catch-",$4E + db "ing #MON.@" + +TeruSama1Desc: + db "?@" + +BicycleDesc: + db "A collapsible bike",$4E + db "for fast movement.@" + +MoonStoneDesc: + db "Evolves certain",$4E + db "kinds of #MON.@" + +AntidoteDesc: + db "Cures poisoned",$4E + db "#MON.@" + +BurnHealDesc: + db "Heals burned",$4E + db "#MON.@" + +IceHealDesc: + db "Defrosts frozen",$4E + db "#MON.@" + +AwakeningDesc: + db "Awakens sleeping",$4E + db "#MON.@" + +ParlyzHealDesc: + db "Heals paralyzed",$4E + db "#MON.@" + +FullRestoreDesc: + db "Fully restores HP",$4E + db "& status.@" + +MaxPotionDesc: + db "Fully restores",$4E + db "#MON HP.@" + +HyperPotionDesc: + db "Restores #MON",$4E + db "HP by 200.@" + +SuperPotionDesc: + db "Restores #MON",$4E + db "HP by 50.@" + +PotionDesc: + db "Restores #MON",$4E + db "HP by 20.@" + +EscapeRopeDesc: + db "Use for escaping",$4E + db "from caves, etc.@" + +RepelDesc: + db "Repels weak #-",$4E + db "MON for 100 steps.@" + +MaxElixerDesc: + db "Fully restores the",$4E + db "PP of one #MON.@" + +FireStoneDesc: + db "Evolves certain",$4E + db "kinds of #MON.@" + +ThunderStoneDesc: + db "Evolves certain",$4E + db "kinds of #MON.@" + +WaterStoneDesc: + db "Evolves certain",$4E + db "kinds of #MON.@" + +TeruSama2Desc: + db "?@" + +HPUpDesc: + db "Raises the HP of",$4E + db "one #MON.@" + +ProteinDesc: + db "Raises ATTACK of",$4E + db "one #MON.@" + +IronDesc: + db "Raises DEFENSE of",$4E + db "one #MON.@" + +CarbosDesc: + db "Raises SPEED of",$4E + db "one #MON.@" + +LuckyPunchDesc: + db "Ups critical hit",$4E + db "ratio of CHANSEY.@" + +CalciumDesc: + db "Ups SPECIAL stats",$4E + db "of one #MON.@" + +RareCandyDesc: + db "Raises level of a",$4E + db "#MON by one.@" + +XAccuracyDesc: + db "Raises accuracy.",$4E + db "(1 BTL)@" + +LeafStoneDesc: + db "Evolves certain",$4E + db "kinds of #MON.@" + +MetalPowderDesc: + db "Raises DEFENSE of",$4E + db "DITTO. (HOLD)@" + +NuggetDesc: + db "Made of pure gold.",$4E + db "Sell high.@" + +PokeDollDesc: + db "Use to escape from",$4E + db "a wild #MON.@" + +FullHealDesc: + db "Eliminates all",$4E + db "status problems.@" + +ReviveDesc: + db "Restores a fainted",$4E + db "#MON to 1/2 HP.@" + +MaxReviveDesc: + db "Fully restores a",$4E + db "fainted #MON.@" + +GuardSpecDesc: + db "Prevents stats",$4E + db "reduction. (1 BTL)@" + +SuperRepelDesc: + db "Repels weak #-",$4E + db "MON for 200 steps.@" + +MaxRepelDesc: + db "Repels weak #-",$4E + db "MON for 250 steps.@" + +DireHitDesc: + db "Ups critical hit",$4E + db "ratio. (1 BTL)@" + +TeruSama3Desc: + db "?@" + +FreshWaterDesc: + db "Restores #MON",$4E + db "HP by 50.@" + +SodaPopDesc: + db "Restores #MON",$4E + db "HP by 60.@" + +LemonadeDesc: + db "Restores #MON",$4E + db "HP by 80.@" + +XAttackDesc: + db "Raises ATTACK.",$4E + db "(1 BTL)@" + +TeruSama4Desc: + db "?@" + +XDefendDesc: + db "Raises DEFENSE.",$4E + db "(1 BTL)@" + +XSpeedDesc: + db "Raises SPEED.",$4E + db "(1 BTL)@" + +XSpecialDesc: + db "Raises SPECIAL",$4E + db "ATTACK. (1 BTL)@" + +CoinCaseDesc: + db "Holds up to 9,999",$4E + db "game coins.@" + +ItemfinderDesc: + db "Checks for unseen",$4E + db "items in the area.@" + +TeruSama5Desc: + db "?@" + +ExpShareDesc: + db "Shares battle EXP.",$4E + db "Points. (HOLD)@" + +OldRodDesc: + db "Use by water to",$4E + db "fish for #MON.@" + +GoodRodDesc: + db "A good ROD for",$4E + db "catching #MON.@" + +SilverLeafDesc: + db "A strange, silver-",$4E + db "colored leaf.@" + +SuperRodDesc: + db "The best ROD for",$4E + db "catching #MON.@" + +PPUpDesc: + db "Raises max PP of",$4E + db "a selected move.@" + +EtherDesc: + db "Restores PP of one",$4E + db "move by 10.@" + +MaxEtherDesc: + db "Fully restores PP",$4E + db "of one move.@" + +ElixerDesc: + db "Restores PP of all",$4E + db "moves by 10.@" + +RedScaleDesc: + db "A scale from the",$4E + db "red GYARADOS.@" + +SecretPotionDesc: + db "Fully heals any",$4E + db "#MON.@" + +SSTicketDesc: + db "A ticket for the",$4E + db "S.S.AQUA.@" + +MysteryEggDesc: + db "An EGG obtained",$4E + db "from MR.#MON.@" + +ClearBellDesc: + db "Makes a gentle",$4E + db "ringing.@" + +SilverWingDesc: + db "A strange, silver-",$4E + db "colored feather.@" + +MoomooMilkDesc: + db "Restores #MON",$4E + db "HP by 100.@" + +QuickClawDesc: + db "Raises 1st strike",$4E + db "ratio. (HOLD)@" + +PsnCureBerryDesc: + db "A self-cure for",$4E + db "poison. (HOLD)@" + +GoldLeafDesc: + db "A strange, gold-",$4E + db "colored leaf.@" + +SoftSandDesc: + db "Powers up ground-",$4E + db "type moves. (HOLD)@" + +SharpBeakDesc: + db "Powers up flying-",$4E + db "type moves. (HOLD)@" + +PrzCureBerryDesc: + db "A self-cure for",$4E + db "paralysis. (HOLD)@" + +BurntBerryDesc: + db "A self-cure for",$4E + db "freezing. (HOLD)@" + +IceBerryDesc: + db "A self-heal for a",$4E + db "burn. (HOLD)@" + +PoisonBarbDesc: + db "Powers up poison-",$4E + db "type moves. (HOLD)@" + +KingsRockDesc: + db "May make the foe",$4E + db "flinch. (HOLD)@" + +BitterBerryDesc: + db "A self-cure for",$4E + db "confusion. (HOLD)@" + +MintBerryDesc: + db "A self-awakening",$4E + db "for sleep. (HOLD)@" + +RedApricornDesc: + db "A red APRICORN.@" + +TinyMushroomDesc: + db "An ordinary mush-",$4E + db "room. Sell low.@" + +BigMushroomDesc: + db "A rare mushroom.",$4E + db "Sell high.@" + +SilverPowderDesc: + db "Powers up bug-type",$4E + db "moves. (HOLD)@" + +BluApricornDesc: + db "A blue APRICORN.@" + +TeruSama6Desc: + db "?@" + +AmuletCoinDesc: + db "Doubles monetary",$4E + db "earnings. (HOLD)@" + +YlwApricornDesc: + db "A yellow APRICORN.@" + +GrnApricornDesc: + db "A green APRICORN.@" + +CleanseTagDesc: + db "Helps repel wild",$4E + db "#MON. (HOLD)@" + +MysticWaterDesc: + db "Powers up water-",$4E + db "type moves. (HOLD)@" + +TwistedSpoonDesc: + db "Powers up psychic-",$4E + db "type moves. (HOLD)@" + +WhtApricornDesc: + db "A white APRICORN.@" + +BlackbeltDesc: + db "Boosts fighting-",$4E + db "type moves. (HOLD)@" + +BlkApricornDesc: + db "A black APRICORN.",$4E + db "@" + +TeruSama7Desc: + db "?@" + +PnkApricornDesc: + db "A pink APRICORN.",$4E + db "@" + +BlackGlassesDesc: + db "Powers up dark-",$4E + db "type moves. (HOLD)@" + +SlowpokeTailDesc: + db "Very tasty. Sell",$4E + db "high.@" + +PinkBowDesc: + db "Powers up normal-",$4E + db "type moves. (HOLD)@" + +StickDesc: + db "An ordinary stick.",$4E + db "Sell low.@" + +SmokeBallDesc: + db "Escape from wild",$4E + db "#MON. (HOLD)@" + +NeverMeltIceDesc: + db "Powers up ice-type",$4E + db "moves. (HOLD)@" + +MagnetDesc: + db "Boosts electric-",$4E + db "type moves. (HOLD)@" + +MiracleBerryDesc: + db "Cures all status",$4E + db "problems. (HOLD)@" + +PearlDesc: + db "A beautiful pearl.",$4E + db "Sell low.@" + +BigPearlDesc: + db "A big, beautiful",$4E + db "pearl. Sell high.@" + +EverStoneDesc: + db "Stops evolution.",$4E + db "(HOLD)@" + +SpellTagDesc: + db "Powers up ghost-",$4E + db "type moves. (HOLD)@" + +RageCandyBarDesc: + db "Restores #MON",$4E + db "HP by 20.@" + +GSBallDesc: + db "The mysterious",$4E + db "BALL.@" + +BlueCardDesc: + db "Card to save",$4E + db "points.@" + +MiracleSeedDesc: + db "Powers up grass-",$4E + db "type moves. (HOLD)@" + +ThickClubDesc: + db "A bone of some",$4E + db "sort. Sell low.@" + +FocusBandDesc: + db "May prevent faint-",$4E + db "ing. (HOLD)@" + +TeruSama8Desc: + db "?@" + +EnergyPowderDesc: + db "Restores #MON",$4E + db "HP by 50. Bitter.@" + +EnergyRootDesc: + db "Restores #MON",$4E + db "HP by 200. Bitter.@" + +HealPowderDesc: + db "Cures all status",$4E + db "problems. Bitter.@" + +RevivalHerbDesc: + db "Revives fainted",$4E + db "#MON. Bitter.@" + +HardStoneDesc: + db "Powers up rock-",$4E + db "type moves. (HOLD)@" + +LuckyEggDesc: + db "Earns extra EXP.",$4E + db "points. (HOLD)@" + +CardKeyDesc: + db "Opens shutters in",$4E + db "the RADIO TOWER.@" + +MachinePartDesc: + db "A machine part for",$4E + db "the POWER PLANT.@" + +EggTicketDesc: + db "May use at Golden-",$4E + db "rod trade corner.@" + +LostItemDesc: + db "The # DOLL lost",$4E + db "by the COPYCAT.@" + +StardustDesc: + db "Pretty, red sand.",$4E + db "Sell high.@" + +StarPieceDesc: + db "A hunk of red gem.",$4E + db "Sell very high.@" + +BasementKeyDesc: + db "Opens doors.@" + +PassDesc: + db "A ticket for the",$4E + db "MAGNET TRAIN.@" + +TeruSama9Desc: + db "?@" + +TeruSama10Desc: + db "?@" + +TeruSama11Desc: + db "?@" + +CharcoalDesc: + db "Powers up fire-",$4E + db "type moves. (HOLD)@" + +BerryJuiceDesc: + db "Restores #MON",$4E + db "HP by 20.@" + +ScopeLensDesc: + db "Raises critical",$4E + db "hit ratio. (HOLD)@" + +TeruSama12Desc: + db "?@" + +TeruSama13Desc: + db "?@" + +MetalCoatDesc: + db "Powers up steel-",$4E + db "type moves. (HOLD)@" + +DragonFangDesc: + db "Powers up dragon-",$4E + db "type moves. (HOLD)@" + +TeruSama14Desc: + db "?@" + +LeftoversDesc: + db "Restores HP during",$4E + db "battle. (HOLD)@" + +TeruSama15Desc: + db "?@" + +TeruSama16Desc: + db "?@" + +TeruSama17Desc: + db "?@" + +MysteryBerryDesc: + db "A self-restore",$4E + db "for PP. (HOLD)@" + +DragonScaleDesc: + db "A rare dragon-type",$4E + db "item.@" + +BerserkGeneDesc: + db "Boosts ATTACK but",$4E + db "causes confusion.@" + +TeruSama18Desc: + db "?@" + +TeruSama19Desc: + db "?@" + +TeruSama20Desc: + db "?@" + +SacredAshDesc: + db "Fully revives all",$4E + db "fainted #MON.@" + +HeavyBallDesc: + db "A BALL for catch-",$4E + db "ing heavy #MON.@" + +FlowerMailDesc: + db "Flower-print MAIL.",$4E + db "(HOLD)@" + +LevelBallDesc: + db "A BALL for lower-",$4E + db "level #MON.@" + +LureBallDesc: + db "A BALL for #MON",$4E + db "hooked by a ROD.@" + +FastBallDesc: + db "A BALL for catch-",$4E + db "ing fast #MON.@" + +TeruSama21Desc: + db "?@" + +LightBallDesc: + db "An odd, electrical",$4E + db "orb. (HOLD)@" + +FriendBallDesc: + db "A BALL that makes",$4E + db "#MON friendly.@" + +MoonBallDesc: + db "A BALL for MOON",$4E + db "STONE evolvers.@" + +LoveBallDesc: + db "For catching the",$4E + db "opposite gender.@" + +NormalBoxDesc: + db "Open it and see",$4E + db "what's inside.@" + +GorgeousBoxDesc: + db "Open it and see",$4E + db "what's inside.@" + +SunStoneDesc: + db "Evolves certain",$4E + db "kinds of #MON.@" + +PolkadotBowDesc: + db "Powers up normal-",$4E + db "type moves. (HOLD)@" + +TeruSama22Desc: + db "?@" + +UpGradeDesc: + db "A mysterious box",$4E + db "made by SILPH CO.@" + +BerryDesc: + db "A self-restore",$4E + db "item. (10HP, HOLD)@" + +GoldBerryDesc: + db "A self-restore",$4E + db "item. (30HP, HOLD)@" + +SquirtBottleDesc: + db "A bottle used for",$4E + db "watering plants.@" + +TeruSama23Desc: + db "?@" + +ParkBallDesc: + db "The Bug-Catching",$4E + db "Contest BALL.@" + +RainbowWingDesc: + db "A mystical feather",$4E + db "of rainbow colors.@" + +TeruSama24Desc: + db "?@" + +BrickPieceDesc: + db "A rare chunk of",$4E + db "tile.@" + +SurfMailDesc: + db "LAPRAS-print MAIL.",$4E + db "(HOLD)@" + +LiteBlueMailDesc: + db "DRATINI-print",$4E + db "MAIL. (HOLD)@" + +PortraitMailDesc: + db "MAIL featuring the",$4E + db "holder's likeness.@" + +LovelyMailDesc: + db "Heart-print MAIL.",$4E + db "(HOLD)@" + +EonMailDesc: + db "EEVEE-print MAIL.",$4E + db "(HOLD)@" + +MorphMailDesc: + db "DITTO-print MAIL.",$4E + db "(HOLD)@" + +BlueSkyMailDesc: + db "Sky-print MAIL.",$4E + db "(HOLD)@" + +MusicMailDesc: + db "NATU-print MAIL.",$4E + db "(HOLD)@" + +MewMailDesc: + db "MEW-print MAIL.",$4E + db "(HOLD)@" + +TeruSama25Desc: + db "?@" + +TeruSama26Desc: + db "?@" + +TeruSama27Desc: + db "?@" + +TeruSama28Desc: + db "?@" + +TeruSama29Desc: + db "?@" + +TeruSama30Desc: + db "?@" + +TeruSama31Desc: + db "?@" + +TeruSama32Desc: + db "?@" + +TeruSama33Desc: + db "?@" + + db "POUND@" + db "KARATE CHOP@" + db "DOUBLESLAP@" + db "COMET PUNCH@" + db "MEGA PUNCH@" + db "PAY DAY@" + db "FIRE PUNCH@" + db "ICE PUNCH@" + db "THUNDERPUNCH@" + db "SCRATCH@" + db "VICEGRIP@" + db "GUILLOTINE@" + db "RAZOR WIND@" + db "SWORDS DANCE@" + db "CUT@" + db "GUST@" + db "WING ATTACK@" + db "WHIRLWIND@" + db "FLY@" + db "BIND@" + db "SLAM@" + db "VINE WHIP@" + db "STOMP@" + db "DOUBLE KICK@" + db "MEGA KICK@" + db "JUMP KICK@" + db "ROLLING KICK@" + db "SAND-ATTACK@" + db "HEADBUTT@" + db "HORN ATTACK@" + db "FURY ATTACK@" + db "HORN DRILL@" + db "TACKLE@" + db "BODY SLAM@" + db "WRAP@" + db "TAKE DOWN@" + db "THRASH@" + db "DOUBLE-EDGE@" + db "TAIL WHIP@" + db "POISON STING@" + db "TWINEEDLE@" + db "PIN MISSILE@" + db "LEER@" + db "BITE@" + db "GROWL@" + db "ROAR@" + db "SING@" + db "SUPERSONIC@" + db "SONICBOOM@" + db "DISABLE@" + db "ACID@" + db "EMBER@" + db "FLAMETHROWER@" + db "MIST@" + db "WATER GUN@" + db "HYDRO PUMP@" + db "SURF@" + db "ICE BEAM@" + db "BLIZZARD@" + db "PSYBEAM@" + db "BUBBLEBEAM@" + db "AURORA BEAM@" + db "HYPER BEAM@" + db "PECK@" + db "DRILL PECK@" + db "SUBMISSION@" + db "LOW KICK@" + db "COUNTER@" + db "SEISMIC TOSS@" + db "STRENGTH@" + db "ABSORB@" + db "MEGA DRAIN@" + db "LEECH SEED@" + db "GROWTH@" + db "RAZOR LEAF@" + db "SOLARBEAM@" + db "POISONPOWDER@" + db "STUN SPORE@" + db "SLEEP POWDER@" + db "PETAL DANCE@" + db "STRING SHOT@" + db "DRAGON RAGE@" + db "FIRE SPIN@" + db "THUNDERSHOCK@" + db "THUNDERBOLT@" + db "THUNDER WAVE@" + db "THUNDER@" + db "ROCK THROW@" + db "EARTHQUAKE@" + db "FISSURE@" + db "DIG@" + db "TOXIC@" + db "CONFUSION@" + db "PSYCHIC@" + db "HYPNOSIS@" + db "MEDITATE@" + db "AGILITY@" + db "QUICK ATTACK@" + db "RAGE@" + db "TELEPORT@" + db "NIGHT SHADE@" + db "MIMIC@" + db "SCREECH@" + db "DOUBLE TEAM@" + db "RECOVER@" + db "HARDEN@" + db "MINIMIZE@" + db "SMOKESCREEN@" + db "CONFUSE RAY@" + db "WITHDRAW@" + db "DEFENSE CURL@" + db "BARRIER@" + db "LIGHT SCREEN@" + db "HAZE@" + db "REFLECT@" + db "FOCUS ENERGY@" + db "BIDE@" + db "METRONOME@" + db "MIRROR MOVE@" + db "SELFDESTRUCT@" + db "EGG BOMB@" + db "LICK@" + db "SMOG@" + db "SLUDGE@" + db "BONE CLUB@" + db "FIRE BLAST@" + db "WATERFALL@" + db "CLAMP@" + db "SWIFT@" + db "SKULL BASH@" + db "SPIKE CANNON@" + db "CONSTRICT@" + db "AMNESIA@" + db "KINESIS@" + db "SOFTBOILED@" + db "HI JUMP KICK@" + db "GLARE@" + db "DREAM EATER@" + db "POISON GAS@" + db "BARRAGE@" + db "LEECH LIFE@" + db "LOVELY KISS@" + db "SKY ATTACK@" + db "TRANSFORM@" + db "BUBBLE@" + db "DIZZY PUNCH@" + db "SPORE@" + db "FLASH@" + db "PSYWAVE@" + db "SPLASH@" + db "ACID ARMOR@" + db "CRABHAMMER@" + db "EXPLOSION@" + db "FURY SWIPES@" + db "BONEMERANG@" + db "REST@" + db "ROCK SLIDE@" + db "HYPER FANG@" + db "SHARPEN@" + db "CONVERSION@" + db "TRI ATTACK@" + db "SUPER FANG@" + db "SLASH@" + db "SUBSTITUTE@" + db "STRUGGLE@" + db "SKETCH@" + db "TRIPLE KICK@" + db "THIEF@" + db "SPIDER WEB@" + db "MIND READER@" + db "NIGHTMARE@" + db "FLAME WHEEL@" + db "SNORE@" + db "CURSE@" + db "FLAIL@" + db "CONVERSION2@" + db "AEROBLAST@" + db "COTTON SPORE@" + db "REVERSAL@" + db "SPITE@" + db "POWDER SNOW@" + db "PROTECT@" + db "MACH PUNCH@" + db "SCARY FACE@" + db "FAINT ATTACK@" + db "SWEET KISS@" + db "BELLY DRUM@" + db "SLUDGE BOMB@" + db "MUD-SLAP@" + db "OCTAZOOKA@" + db "SPIKES@" + db "ZAP CANNON@" + db "FORESIGHT@" + db "DESTINY BOND@" + db "PERISH SONG@" + db "ICY WIND@" + db "DETECT@" + db "BONE RUSH@" + db "LOCK-ON@" + db "OUTRAGE@" + db "SANDSTORM@" + db "GIGA DRAIN@" + db "ENDURE@" + db "CHARM@" + db "ROLLOUT@" + db "FALSE SWIPE@" + db "SWAGGER@" + db "MILK DRINK@" + db "SPARK@" + db "FURY CUTTER@" + db "STEEL WING@" + db "MEAN LOOK@" + db "ATTRACT@" + db "SLEEP TALK@" + db "HEAL BELL@" + db "RETURN@" + db "PRESENT@" + db "FRUSTRATION@" + db "SAFEGUARD@" + db "PAIN SPLIT@" + db "SACRED FIRE@" + db "MAGNITUDE@" + db "DYNAMICPUNCH@" + db "MEGAHORN@" + db "DRAGONBREATH@" + db "BATON PASS@" + db "ENCORE@" + db "PURSUIT@" + db "RAPID SPIN@" + db "SWEET SCENT@" + db "IRON TAIL@" + db "METAL CLAW@" + db "VITAL THROW@" + db "MORNING SUN@" + db "SYNTHESIS@" + db "MOONLIGHT@" + db "HIDDEN POWER@" + db "CROSS CHOP@" + db "TWISTER@" + db "RAIN DANCE@" + db "SUNNY DAY@" + db "CRUNCH@" + db "MIRROR COAT@" + db "PSYCH UP@" + db "EXTREMESPEED@" + db "ANCIENTPOWER@" + db "SHADOW BALL@" + db "FUTURE SIGHT@" + db "ROCK SMASH@" + db "WHIRLPOOL@" + db "BEAT UP@" + +INCBIN "baserom.gbc",$1CA896,$1CAA43-$1CA896 + + db "NEW BARK",$1F,"TOWN@" + db "CHERRYGROVE",$1F,"CITY@" + db "VIOLET CITY@" + db "AZALEA TOWN@" + db "GOLDENROD",$1F,"CITY@" + db "ECRUTEAK",$1F,"CITY@" + db "OLIVINE",$1F,"CITY@" + db "CIANWOOD",$1F,"CITY@" + db "MAHOGANY",$1F,"TOWN@" + db "BLACKTHORN",$1F,"CITY@" + db "LAKE OF",$1F,"RAGE@" + db "SILVER CAVE@" + db "SPROUT",$1F,"TOWER@" + db "RUINS",$1F,"OF ALPH@" + db "UNION CAVE@" + db "SLOWPOKE",$1F,"WELL@" + db "RADIO TOWER@" + db "POWER PLANT@" + db "NATIONAL",$1F,"PARK@" + db "TIN TOWER@" + db "LIGHTHOUSE@" + db "WHIRL",$1F,"ISLANDS@" + db "MT.MORTAR@" + db "DRAGON'S",$1F,"DEN@" + db "ICE PATH@" + db "N/A@" + db "PALLET TOWN@" + db "VIRIDIAN",$1F,"CITY@" + db "PEWTER CITY@" + db "CERULEAN",$1F,"CITY@" + db "LAVENDER",$1F,"TOWN@" + db "VERMILION",$1F,"CITY@" + db "CELADON",$1F,"CITY@" + db "SAFFRON",$1F,"CITY@" + db "FUCHSIA",$1F,"CITY@" + db "CINNABAR",$1F,"ISLAND@" + db "INDIGO",$1F,"PLATEAU@" + db "VICTORY",$1F,"ROAD@" + db "MT.MOON@" + db "ROCK TUNNEL@" + db "LAV",$1F,"RADIO TOWER@" + db "SILPH CO.@" + db "SAFARI ZONE@" + db "SEAFOAM",$1F,"ISLANDS@" + db "#MON",$1F,"MANSION@" + db "CERULEAN",$1F,"CAVE@" + db "ROUTE 1@" + db "ROUTE 2@" + db "ROUTE 3@" + db "ROUTE 4@" + db "ROUTE 5@" + db "ROUTE 6@" + db "ROUTE 7@" + db "ROUTE 8@" + db "ROUTE 9@" + db "ROUTE 10@" + db "ROUTE 11@" + db "ROUTE 12@" + db "ROUTE 13@" + db "ROUTE 14@" + db "ROUTE 15@" + db "ROUTE 16@" + db "ROUTE 17@" + db "ROUTE 18@" + db "ROUTE 19@" + db "ROUTE 20@" + db "ROUTE 21@" + db "ROUTE 22@" + db "ROUTE 23@" + db "ROUTE 24@" + db "ROUTE 25@" + db "ROUTE 26@" + db "ROUTE 27@" + db "ROUTE 28@" + db "ROUTE 29@" + db "ROUTE 30@" + db "ROUTE 31@" + db "ROUTE 32@" + db "ROUTE 33@" + db "ROUTE 34@" + db "ROUTE 35@" + db "ROUTE 36@" + db "ROUTE 37@" + db "ROUTE 38@" + db "ROUTE 39@" + db "ROUTE 40@" + db "ROUTE 41@" + db "ROUTE 42@" + db "ROUTE 43@" + db "ROUTE 44@" + db "ROUTE 45@" + db "ROUTE 46@" + db "DARK CAVE@" + db "ILEX",$1F,"FOREST@" + db "BURNED",$1F,"TOWER@" + db "FAST SHIP@" + db "VIRIDIAN",$1F,"FOREST@" + db "DIGLETT'S",$1F,"CAVE@" + db "TOHJO FALLS@" + db "UNDERGROUND@" + db "BATTLE",$1F,"TOWER@" + db "SPECIAL@" + +INCBIN "baserom.gbc",$1CAEA1,$40 +SECTION "bank73",DATA,BANK[$73] +INCBIN "baserom.gbc",$1CC000,$4000 +SECTION "bank74",DATA,BANK[$74] +INCBIN "baserom.gbc",$1D0000,$4000 +SECTION "bank75",DATA,BANK[$75] +INCBIN "baserom.gbc",$1D4000,$4000 +SECTION "bank76",DATA,BANK[$76] +INCBIN "baserom.gbc",$1D8000,$4000 +SECTION "bank77",DATA,BANK[$77] +INCBIN "baserom.gbc",$1DC000,$4000 +SECTION "bank78",DATA,BANK[$78] +INCBIN "baserom.gbc",$1E0000,$4000 +SECTION "bank79",DATA,BANK[$79] +INCBIN "baserom.gbc",$1E4000,$4000 +SECTION "bank7A",DATA,BANK[$7A] +INCBIN "baserom.gbc",$1E8000,$4000 +SECTION "bank7B",DATA,BANK[$7B] +INCBIN "baserom.gbc",$1EC000,$4000 +SECTION "bank7C",DATA,BANK[$7C] +INCBIN "baserom.gbc",$1F0000,$4000 +SECTION "bank7D",DATA,BANK[$7D] +INCBIN "baserom.gbc",$1F4000,$4000 +SECTION "bank7E",DATA,BANK[$7E] +INCBIN "baserom.gbc",$1F8000,$4000 +SECTION "bank7F",DATA,BANK[$7F] +INCBIN "baserom.gbc",$1FC000,$4000 diff --git a/pokecrystal.asm b/pokecrystal.asm new file mode 100644 index 000000000..b575a8809 --- /dev/null +++ b/pokecrystal.asm @@ -0,0 +1 @@ +INCLUDE "main.tx" diff --git a/textpre.awk b/textpre.awk new file mode 100644 index 000000000..45a59ce08 --- /dev/null +++ b/textpre.awk @@ -0,0 +1,302 @@ +BEGIN { +FS = "\"" + +char["ガ"] = "$05" +char["ギ"] = "$06" +char["グ"] = "$07" +char["ゲ"] = "$08" +char["ゴ"] = "$09" +char["ザ"] = "$0A" +char["ジ"] = "$0B" +char["ズ"] = "$0C" +char["ゼ"] = "$0D" +char["ゾ"] = "$0E" +char["ダ"] = "$0F" +char["ヂ"] = "$10" +char["ヅ"] = "$11" +char["デ"] = "$12" +char["ド"] = "$13" +char["バ"] = "$19" +char["ビ"] = "$1A" +char["ブ"] = "$1B" +char["ボ"] = "$1C" +char["が"] = "$26" +char["ぎ"] = "$27" +char["ぐ"] = "$28" +char["げ"] = "$29" +char["ご"] = "$2A" +char["ざ"] = "$2B" +char["じ"] = "$2C" +char["ず"] = "$2D" +char["ぜ"] = "$2E" +char["ぞ"] = "$2F" +char["だ"] = "$30" +char["ぢ"] = "$31" +char["づ"] = "$32" +char["で"] = "$33" +char["ど"] = "$34" +char["ば"] = "$3A" +char["び"] = "$3B" +char["ぶ"] = "$3C" +char["べ"] = "$3D" +char["ぼ"] = "$3E" +char["パ"] = "$40" +char["ピ"] = "$41" +char["プ"] = "$42" +char["ポ"] = "$43" +char["ぱ"] = "$44" +char["ぴ"] = "$45" +char["ぷ"] = "$46" +char["ぺ"] = "$47" +char["ぽ"] = "$48" +char["ア"] = "$80" +char["イ"] = "$81" +char["ウ"] = "$82" +char["エ"] = "$83" +char["ォ"] = "$84" +char["カ"] = "$85" +char["キ"] = "$86" +char["ク"] = "$87" +char["ケ"] = "$88" +char["コ"] = "$89" +char["サ"] = "$8A" +char["シ"] = "$8B" +char["ス"] = "$8C" +char["セ"] = "$8D" +char["ソ"] = "$8E" +char["タ"] = "$8F" +char["チ"] = "$90" +char["ツ"] = "$91" +char["テ"] = "$92" +char["ト"] = "$93" +char["ナ"] = "$94" +char["ニ"] = "$95" +char["ヌ"] = "$96" +char["ネ"] = "$97" +char["ノ"] = "$98" +char["ハ"] = "$99" +char["ヒ"] = "$9A" +char["フ"] = "$9B" +char["ホ"] = "$9C" +char["マ"] = "$9D" +char["ミ"] = "$9E" +char["ム"] = "$9F" +char["メ"] = "$A0" +char["モ"] = "$A1" +char["ヤ"] = "$A2" +char["ユ"] = "$A3" +char["ヨ"] = "$A4" +char["ラ"] = "$A5" +char["ル"] = "$A6" +char["レ"] = "$A7" +char["ロ"] = "$A8" +char["ワ"] = "$A9" +char["ヲ"] = "$AA" +char["ン"] = "$AB" +char["ッ"] = "$AC" +char["ャ"] = "$AD" +char["ュ"] = "$AE" +char["ョ"] = "$AF" +char["ィ"] = "$B0" +char["あ"] = "$B1" +char["い"] = "$B2" +char["う"] = "$B3" +char["え"] = "$B4" +char["お"] = "$B5" +char["か"] = "$B6" +char["き"] = "$B7" +char["く"] = "$B8" +char["け"] = "$B9" +char["こ"] = "$BA" +char["さ"] = "$BB" +char["し"] = "$BC" +char["す"] = "$BD" +char["せ"] = "$BE" +char["そ"] = "$BF" +char["た"] = "$C0" +char["ち"] = "$C1" +char["つ"] = "$C2" +char["て"] = "$C3" +char["と"] = "$C4" +char["な"] = "$C5" +char["に"] = "$C6" +char["ぬ"] = "$C7" +char["ね"] = "$C8" +char["の"] = "$C9" +char["は"] = "$CA" +char["ひ"] = "$CB" +char["ふ"] = "$CC" +char["へ"] = "$CD" +char["ほ"] = "$CE" +char["ま"] = "$CF" +char["み"] = "$D0" +char["む"] = "$D1" +char["め"] = "$D2" +char["も"] = "$D3" +char["や"] = "$D4" +char["ゆ"] = "$D5" +char["よ"] = "$D6" +char["ら"] = "$D7" +char["り"] = "$D8" +char["る"] = "$D9" +char["れ"] = "$DA" +char["ろ"] = "$DB" +char["わ"] = "$DC" +char["を"] = "$DD" +char["ん"] = "$DE" +char["っ"] = "$DF" +char["ゃ"] = "$E0" +char["ゅ"] = "$E1" +char["ょ"] = "$E2" +char["ー"] = "$E3" + + +char["@"] = "$50" +char["#"] = "$54" +char["…"] = "$75" + +# textbox borders +char["┌"] = "$79" +char["─"] = "$7A" +char["┐"] = "$7B" +char["│"] = "$7C" +char["└"] = "$7D" +char["┘"] = "$7E" + +char["№"] = "$74" + +char[" "] = "$7F" +char["A"] = "$80" +char["B"] = "$81" +char["C"] = "$82" +char["D"] = "$83" +char["E"] = "$84" +char["F"] = "$85" +char["G"] = "$86" +char["H"] = "$87" +char["I"] = "$88" +char["J"] = "$89" +char["K"] = "$8A" +char["L"] = "$8B" +char["M"] = "$8C" +char["N"] = "$8D" +char["O"] = "$8E" +char["P"] = "$8F" +char["Q"] = "$90" +char["R"] = "$91" +char["S"] = "$92" +char["T"] = "$93" +char["U"] = "$94" +char["V"] = "$95" +char["W"] = "$96" +char["X"] = "$97" +char["Y"] = "$98" +char["Z"] = "$99" +char["("] = "$9A" +char[")"] = "$9B" +char[":"] = "$9C" +char[";"] = "$9D" +char["["] = "$9E" +char["]"] = "$9F" +char["a"] = "$A0" +char["b"] = "$A1" +char["c"] = "$A2" +char["d"] = "$A3" +char["e"] = "$A4" +char["f"] = "$A5" +char["g"] = "$A6" +char["h"] = "$A7" +char["i"] = "$A8" +char["j"] = "$A9" +char["k"] = "$AA" +char["l"] = "$AB" +char["m"] = "$AC" +char["n"] = "$AD" +char["o"] = "$AE" +char["p"] = "$AF" +char["q"] = "$B0" +char["r"] = "$B1" +char["s"] = "$B2" +char["t"] = "$B3" +char["u"] = "$B4" +char["v"] = "$B5" +char["w"] = "$B6" +char["x"] = "$B7" +char["y"] = "$B8" +char["z"] = "$B9" +char["é"] = "$BA" +char["'t"] = "$BE" +char["'s"] = "$D4" +char["'"] = "$E0" +char["-"] = "$E3" +char["?"] = "$E6" +char["!"] = "$E7" +char["."] = "$E8" +char["&"] = "$E9" +char["♂"] = "$EF" +char["/"] = "$F3" +char[","] = "$F4" +char["♀"] = "$F5" +char["0"] = "$F6" +char["1"] = "$F7" +char["2"] = "$F8" +char["3"] = "$F9" +char["4"] = "$FA" +char["5"] = "$FB" +char["6"] = "$FC" +char["7"] = "$FD" +char["8"] = "$FE" +char["9"] = "$FF" +} + +# skip lines that actually do use ASCII in quotes +tolower($1) ~ /section/ || +tolower($1) ~ /include/ || +tolower($1) ~ /incbin/ + +!(tolower($1) ~ /section/ || tolower($1) ~ /include/ || tolower($1) ~ /incbin/) { +i = 1 +ORS = "" + +while (i <= NF) { +if (i % 2 == 1) + print $(i) +else { + f = $(i) + while (f != "") { + c = substr(f,1,1) + f = substr(f,2,length(f) - 1) + if (c > "𐀀") { # U+10000 + c = c substr(f,1,3) + f = substr(f,4,length(f) - 3) + } else if (c > "ࠀ") { # U+0800 + c = c substr(f,1,2) + f = substr(f,3,length(f) - 2) + } else if (c > "€") { # U+0080 + c = c substr(f,1,1) + f = substr(f,2,length(f) - 1) + } + + if (c == "'") { + if (substr(f,1,1) == "m" || + substr(f,1,1) == "r" || + substr(f,1,1) == "t" || + substr(f,1,1) == "s" || + substr(f,1,1) == "v" || + substr(f,1,1) == "l") { + c = c substr(f,1,1) + f = substr(f,2,length(f) - 1) + } + } + + print char[c] + if (length(f)) + print "," + } +} + +i = i + 1 +} +print "\n" +ORS = "\n" +} \ No newline at end of file