From c248b30aa7487b51a9182a833b1db29f14a7267c Mon Sep 17 00:00:00 2001 From: entrpntr Date: Tue, 17 Mar 2020 15:23:39 -0400 Subject: Cleanup of files for banks $01 and $04 for main.asm. --- data/items/attributes.asm | 779 ++++++++++++++++ data/map_objects.asm | 44 - data/sprites/facings.asm | 239 +++++ data/sprites/map_objects.asm | 306 +++++++ engine/facings.asm | 265 ------ engine/gfx/load_push_oam.asm | 24 + engine/learn.asm | 220 ----- engine/main_menu.asm | 1093 ---------------------- engine/math.asm | 190 ---- engine/math/math.asm | 190 ++++ engine/menus/intro_menu.asm | 1544 ++++++++++++++++++++++++++++++++ engine/overworld/init_map.asm | 91 ++ engine/overworld/map_objects.asm | 7 +- engine/pokemon/correct_nick_errors.asm | 53 ++ engine/pokemon/learn.asm | 220 +++++ engine/title.asm | 450 ---------- items/item_attributes.asm | 778 ---------------- main.asm | 188 +--- 18 files changed, 3457 insertions(+), 3224 deletions(-) create mode 100644 data/items/attributes.asm delete mode 100755 data/map_objects.asm create mode 100644 data/sprites/facings.asm create mode 100644 data/sprites/map_objects.asm delete mode 100644 engine/facings.asm create mode 100644 engine/gfx/load_push_oam.asm delete mode 100644 engine/learn.asm delete mode 100755 engine/main_menu.asm delete mode 100755 engine/math.asm create mode 100755 engine/math/math.asm create mode 100644 engine/menus/intro_menu.asm create mode 100644 engine/overworld/init_map.asm create mode 100644 engine/pokemon/correct_nick_errors.asm create mode 100644 engine/pokemon/learn.asm delete mode 100755 engine/title.asm delete mode 100755 items/item_attributes.asm diff --git a/data/items/attributes.asm b/data/items/attributes.asm new file mode 100644 index 00000000..90316996 --- /dev/null +++ b/data/items/attributes.asm @@ -0,0 +1,779 @@ +item_attribute: MACRO +; price, held effect, parameter, property, pocket, field menu, battle menu + dw \1 + db \2, \3, \4, \5 + dn \6, \7 +ENDM + +ItemAttributes: +Item1Attributes: + +; MASTER BALL + item_attribute 0, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +Item2Attributes: + +; ULTRA BALL + item_attribute 1200, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; BRIGHTPOWDER + item_attribute 10, HELD_BRIGHTPOWDER, 20, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; GREAT BALL + item_attribute 600, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; # BALL + item_attribute 200, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; BICYCLE + item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE + +; MOON STONE + item_attribute 0, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; ANTIDOTE + item_attribute 100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; BURN HEAL + item_attribute 250, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; ICE HEAL + item_attribute 250, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; AWAKENING + item_attribute 250, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; PARLYZ HEAL + item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; FULL RESTORE + item_attribute 3000, 0, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; MAX POTION + item_attribute 2500, 0, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; HYPER POTION + item_attribute 1200, 0, 200, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; SUPER POTION + item_attribute 700, 0, 50, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; POTION + item_attribute 300, 0, 20, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; ESCAPE ROPE + item_attribute 550, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE + +; REPEL + item_attribute 350, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE + +; MAX ELIXER + item_attribute 4500, 0, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; FIRE STONE + item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; THUNDERSTONE + item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; WATER STONE + item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; HP UP + item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; PROTEIN + item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; IRON + item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; CARBOS + item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; LUCKY PUNCH + item_attribute 10, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; CALCIUM + item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; RARE CANDY + item_attribute 4800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; X ACCURACY + item_attribute 950, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; LEAF STONE + item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; METAL POWDER + item_attribute 10, HELD_METAL_POWDER, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; NUGGET + item_attribute 10000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; # DOLL + item_attribute 1000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; FULL HEAL + item_attribute 600, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; REVIVE + item_attribute 1500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; MAX REVIVE + item_attribute 4000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; GUARD SPEC. + item_attribute 700, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; SUPER REPEL + item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE + +; MAX REPEL + item_attribute 700, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE + +; DIRE HIT + item_attribute 650, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; FRESH WATER + item_attribute 200, 0, 50, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; SODA POP + item_attribute 300, 0, 60, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; LEMONADE + item_attribute 350, 0, 80, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; X ATTACK + item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; X DEFEND + item_attribute 550, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; X SPEED + item_attribute 350, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; X SPECIAL + item_attribute 350, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; COIN CASE + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE + +; ITEMFINDER + item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; EXP.SHARE + item_attribute 3000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; OLD ROD + item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE + +; GOOD ROD + item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE + +; SILVER LEAF + item_attribute 1000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; SUPER ROD + item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE + +; PP UP + item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; ETHER + item_attribute 1200, 0, 10, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; MAX ETHER + item_attribute 2000, 0, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; ELIXER + item_attribute 3000, 0, 10, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; RED SCALE + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; SECRETPOTION + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; S.S.TICKET + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; MYSTERY EGG + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; SILVER WING + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; MOOMOO MILK + item_attribute 500, 0, 100, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; QUICK CLAW + item_attribute 100, HELD_QUICK_CLAW, 60, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; PSNCUREBERRY + item_attribute 10, HELD_HEAL_POISON, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; GOLD LEAF + item_attribute 1000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; SOFT SAND + item_attribute 100, HELD_GROUND_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; SHARP BEAK + item_attribute 100, HELD_FLYING_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; PRZCUREBERRY + item_attribute 10, HELD_HEAL_PARALYZE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; BURNT BERRY + item_attribute 10, HELD_HEAL_FREEZE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; ICE BERRY + item_attribute 10, HELD_HEAL_BURN, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; POISON BARB + item_attribute 100, HELD_POISON_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; KING'S ROCK + item_attribute 100, HELD_FLINCH, 30, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; BITTER BERRY + item_attribute 10, HELD_HEAL_CONFUSION, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_PARTY + +; MINT BERRY + item_attribute 10, HELD_HEAL_SLEEP, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; RED APRICORN + item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TINYMUSHROOM + item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; BIG MUSHROOM + item_attribute 5000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; SILVERPOWDER + item_attribute 100, HELD_BUG_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; BLU APRICORN + item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; AMULET COIN + item_attribute 100, HELD_AMULET_COIN, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; YLW APRICORN + item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; GRN APRICORN + item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; CLEANSE TAG + item_attribute 200, HELD_CLEANSE_TAG, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; MYSTIC WATER + item_attribute 100, HELD_WATER_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TWISTEDSPOON + item_attribute 100, HELD_PSYCHIC_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; WHT APRICORN + item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; BLACKBELT + item_attribute 100, HELD_FIGHTING_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; BLK APRICORN + item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; PNK APRICORN + item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; BLACKGLASSES + item_attribute 100, HELD_DARK_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; SLOWPOKETAIL + item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; PINK BOW + item_attribute 100, HELD_NORMAL_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; STICK + item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; SMOKE BALL + item_attribute 200, HELD_ESCAPE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; NEVERMELTICE + item_attribute 100, HELD_ICE_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; MAGNET + item_attribute 100, HELD_ELECTRIC_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; MIRACLEBERRY + item_attribute 10, HELD_HEAL_STATUS, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; PEARL + item_attribute 1400, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; BIG PEARL + item_attribute 7500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; EVERSTONE + item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; SPELL TAG + item_attribute 100, HELD_GHOST_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; RAGECANDYBAR + item_attribute 300, 0, 20, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; MIRACLE SEED + item_attribute 100, HELD_GRASS_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; THICK CLUB + item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; FOCUS BAND + item_attribute 200, HELD_FOCUS_BAND, 30, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; ENERGYPOWDER + item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; ENERGY ROOT + item_attribute 800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; HEAL POWDER + item_attribute 450, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; REVIVAL HERB + item_attribute 2800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; HARD STONE + item_attribute 100, HELD_ROCK_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; LUCKY EGG + item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; CARD KEY + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE + +; MACHINE PART + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; LOST ITEM + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; STARDUST + item_attribute 2000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; STAR PIECE + item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; BASEMENT KEY + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE + +; PASS + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; CHARCOAL + item_attribute 9800, HELD_FIRE_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; BERRY JUICE + item_attribute 100, HELD_BERRY, 20, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; SCOPE LENS + item_attribute 200, HELD_CRITICAL_UP, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; METAL COAT + item_attribute 100, HELD_STEEL_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; DRAGON FANG + item_attribute 100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; LEFTOVERS + item_attribute 200, HELD_LEFTOVERS, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; MYSTERYBERRY + item_attribute 10, HELD_RESTORE_PP, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; DRAGON SCALE + item_attribute 2100, HELD_DRAGON_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; BERSERK GENE + item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; SACRED ASH + item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE + +; HEAVY BALL + item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; FLOWER MAIL + item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; LEVEL BALL + item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; LURE BALL + item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; FAST BALL + item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; LIGHT BALL + item_attribute 100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; FRIEND BALL + item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; MOON BALL + item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; LOVE BALL + item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; NORMAL BOX + item_attribute 10, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE + +; GORGEOUS BOX + item_attribute 10, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE + +; SUN STONE + item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; POLKADOT BOW + item_attribute 100, HELD_NORMAL_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; UP-GRADE + item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; BERRY + item_attribute 10, HELD_BERRY, 10, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; GOLD BERRY + item_attribute 10, HELD_BERRY, 30, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY + +; SQUIRTBOTTLE + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; PARK BALL + item_attribute 0, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE + +; RAINBOW WING + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; BRICK PIECE + item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; SURF MAIL + item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; LITEBLUEMAIL + item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; PORTRAITMAIL + item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; LOVELY MAIL + item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; EON MAIL + item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; MORPH MAIL + item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; BLUESKY MAIL + item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; MUSIC MAIL + item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; MIRAGE MAIL + item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TM01 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM02 + item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM03 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM04 + item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TM05 + item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM06 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM07 + item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM08 + item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM09 + item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM10 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM11 + item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM12 + item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM13 + item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM14 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM15 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM16 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM17 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM18 + item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM19 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM20 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM21 + item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM22 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM23 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM24 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM25 + item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM26 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM27 + item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM28 + item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TM29 + item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM30 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM31 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM32 + item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM33 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM34 + item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM35 + item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM36 + item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM37 + item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM38 + item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM39 + item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM40 + item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM41 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM42 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM43 + item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM44 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM45 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM46 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM47 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM48 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM49 + item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TM50 + item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; HM01 + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; HM02 + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; HM03 + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; HM04 + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; HM05 + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; HM06 + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; HM07 + item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; TERU-SAMA + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE + +; ? + item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE diff --git a/data/map_objects.asm b/data/map_objects.asm deleted file mode 100755 index fe218e42..00000000 --- a/data/map_objects.asm +++ /dev/null @@ -1,44 +0,0 @@ -sprite_movement_data: macro - db \1, \2, \3, \4, \5 - dn \6, 0 -endm - - ; function, facing, action, flags1, flags2, palette flags - sprite_movement_data SPRITEMOVEFN_00, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 00 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $0c, $00, %0000 ; 01 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 02 - sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 03 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 04 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 05 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 06 - sprite_movement_data SPRITEMOVEFN_STANDING, UP, OBJECT_ACTION_STAND, $00, $00, %0000 ; 07 - sprite_movement_data SPRITEMOVEFN_STANDING, LEFT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 08 - sprite_movement_data SPRITEMOVEFN_STANDING, RIGHT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 09 - sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0a - sprite_movement_data SPRITEMOVEFN_OBEY_DPAD, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 0b - sprite_movement_data SPRITEMOVEFN_08, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0c - sprite_movement_data SPRITEMOVEFN_09, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0d - sprite_movement_data SPRITEMOVEFN_0A, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0e - sprite_movement_data SPRITEMOVEFN_0B, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0f - sprite_movement_data SPRITEMOVEFN_0C, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 10 - sprite_movement_data SPRITEMOVEFN_0D, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 11 - sprite_movement_data SPRITEMOVEFN_0E, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 12 - sprite_movement_data SPRITEMOVEFN_FOLLOW, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 13 - sprite_movement_data SPRITEMOVEFN_SCRIPTED, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 14 - sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX, DOWN, OBJECT_ACTION_BIG_DOLL_SYM, $2e, $01, %1100 ; 15 - sprite_movement_data SPRITEMOVEFN_BOUNCE, DOWN, OBJECT_ACTION_BOUNCE, $2e, $00, %0000 ; 16 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $0c, $00, %0000 ; 17 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $2e, $10, %0000 ; 18 - sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, OBJECT_ACTION_STAND, $2e, $00, %0100 ; 19 - sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 1a - sprite_movement_data SPRITEMOVEFN_SHADOW, DOWN, OBJECT_ACTION_00, $8e, $01, %0000 ; 1b - sprite_movement_data SPRITEMOVEFN_EMOTE, DOWN, OBJECT_ACTION_EMOTE, $8e, $02, %0000 ; 1c - sprite_movement_data SPRITEMOVEFN_SCREENSHAKE, DOWN, OBJECT_ACTION_00, $82, $00, %0000 ; 1d - sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 1e - sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 1f - sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, OBJECT_ACTION_BIG_DOLL_ASYM, $2e, $01, %1100 ; 20 - sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, OBJECT_ACTION_BIG_DOLL, $2e, $01, %1100 ; 21 - sprite_movement_data SPRITEMOVEFN_BOULDERDUST, DOWN, OBJECT_ACTION_BOULDER_DUST, $8e, $01, %0000 ; 22 - sprite_movement_data SPRITEMOVEFN_GRASS, DOWN, OBJECT_ACTION_GRASS_SHAKE, $8e, $02, %0000 ; 23 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, OBJECT_ACTION_STAND, $00, $00, %0010 ; 24 - sprite_movement_data SPRITEMOVEFN_00, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 25 diff --git a/data/sprites/facings.asm b/data/sprites/facings.asm new file mode 100644 index 00000000..ccf91082 --- /dev/null +++ b/data/sprites/facings.asm @@ -0,0 +1,239 @@ +Facings: +; entries correspond to FACING_* constants + dw FacingStepDown0 + dw FacingStepDown1 + dw FacingStepDown2 + dw FacingStepDown3 + dw FacingStepUp0 + dw FacingStepUp1 + dw FacingStepUp2 + dw FacingStepUp3 + dw FacingStepLeft0 + dw FacingStepLeft1 + dw FacingStepLeft2 + dw FacingStepLeft3 + dw FacingStepRight0 + dw FacingStepRight1 + dw FacingStepRight2 + dw FacingStepRight3 + dw FacingFishDown + dw FacingFishUp + dw FacingFishLeft + dw FacingFishRight + dw FacingEmote + dw FacingShadow + dw FacingBigDollAsymmetric + dw FacingBigDollSymmetric + dw FacingWeirdTree0 + dw FacingWeirdTree1 + dw FacingWeirdTree2 + dw FacingWeirdTree3 + dw FacingBoulderDust1 + dw FacingBoulderDust2 + dw FacingGrass1 + dw FacingGrass2 +.End + dw 0 + +NUM_FACINGS EQU (Facings.End - Facings) / 2 + +; Tables used as a reference to transform OAM data. + +; Format: +; db y, x, attributes, tile index + +FacingStepDown0: +FacingStepDown2: +FacingWeirdTree0: +FacingWeirdTree2: ; standing down + db 4 ; # + db 0, 0, 0, $00 + db 0, 8, 0, $01 + db 8, 0, RELATIVE_ATTRIBUTES, $02 + db 8, 8, RELATIVE_ATTRIBUTES, $03 + +FacingStepDown1: ; walking down 1 + db 4 ; # + db 0, 0, 0, $80 + db 0, 8, 0, $81 + db 8, 0, RELATIVE_ATTRIBUTES, $82 + db 8, 8, RELATIVE_ATTRIBUTES, $83 + +FacingStepDown3: ; walking down 2 + db 4 ; # + db 0, 8, X_FLIP, $80 + db 0, 0, X_FLIP, $81 + db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $82 + db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $83 + +FacingStepUp0: +FacingStepUp2: ; standing up + db 4 ; # + db 0, 0, 0, $04 + db 0, 8, 0, $05 + db 8, 0, RELATIVE_ATTRIBUTES, $06 + db 8, 8, RELATIVE_ATTRIBUTES, $07 + +FacingStepUp1: ; walking up 1 + db 4 ; # + db 0, 0, 0, $84 + db 0, 8, 0, $85 + db 8, 0, RELATIVE_ATTRIBUTES, $86 + db 8, 8, RELATIVE_ATTRIBUTES, $87 + +FacingStepUp3: ; walking up 2 + db 4 ; # + db 0, 8, X_FLIP, $84 + db 0, 0, X_FLIP, $85 + db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $86 + db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $87 + +FacingStepLeft0: +FacingStepLeft2: ; standing left + db 4 ; # + db 0, 0, 0, $08 + db 0, 8, 0, $09 + db 8, 0, RELATIVE_ATTRIBUTES, $0a + db 8, 8, RELATIVE_ATTRIBUTES, $0b + +FacingStepRight0: +FacingStepRight2: ; standing right + db 4 ; # + db 0, 8, X_FLIP, $08 + db 0, 0, X_FLIP, $09 + db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $0a + db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $0b + +FacingStepLeft1: +FacingStepLeft3: ; walking left + db 4 ; # + db 0, 0, 0, $88 + db 0, 8, 0, $89 + db 8, 0, RELATIVE_ATTRIBUTES, $8a + db 8, 8, RELATIVE_ATTRIBUTES, $8b + +FacingStepRight1: +FacingStepRight3: ; walking right + db 4 ; # + db 0, 8, X_FLIP, $88 + db 0, 0, X_FLIP, $89 + db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $8a + db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $8b + +FacingFishDown: ; fishing down + db 5 ; # + db 0, 0, 0, $00 + db 0, 8, 0, $01 + db 8, 0, RELATIVE_ATTRIBUTES, $02 + db 8, 8, RELATIVE_ATTRIBUTES, $03 + db 16, 0, ABSOLUTE_TILE_ID, $fc + +FacingFishUp: ; fishing up + db 5 ; # + db 0, 0, 0, $04 + db 0, 8, 0, $05 + db 8, 0, RELATIVE_ATTRIBUTES, $06 + db 8, 8, RELATIVE_ATTRIBUTES, $07 + db -8, 0, ABSOLUTE_TILE_ID, $fc + +FacingFishLeft: ; fishing left + db 5 ; # + db 0, 0, 0, $08 + db 0, 8, 0, $09 + db 8, 0, RELATIVE_ATTRIBUTES, $0a + db 8, 8, RELATIVE_ATTRIBUTES, $0b + db 5, -8, ABSOLUTE_TILE_ID | X_FLIP, $fd + +FacingFishRight: ; fishing right + db 5 ; # + db 0, 8, X_FLIP, $08 + db 0, 0, X_FLIP, $09 + db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $0a + db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $0b + db 5, 16, ABSOLUTE_TILE_ID, $fd + +FacingEmote: ; emote + db 4 ; # + db 0, 0, ABSOLUTE_TILE_ID, $f8 + db 0, 8, ABSOLUTE_TILE_ID, $f9 + db 8, 0, ABSOLUTE_TILE_ID, $fa + db 8, 8, ABSOLUTE_TILE_ID, $fb + +FacingShadow: ; shadow + db 2 ; # + db 0, 0, ABSOLUTE_TILE_ID, $fc + db 0, 8, ABSOLUTE_TILE_ID | X_FLIP, $fc + +FacingBigDollSymmetric: ; big snorlax or lapras doll + db 16 ; # + db 0, 0, 0, $00 + db 0, 8, 0, $01 + db 8, 0, 0, $02 + db 8, 8, 0, $03 + db 16, 0, 0, $04 + db 16, 8, 0, $05 + db 24, 0, 0, $06 + db 24, 8, 0, $07 + db 0, 24, X_FLIP, $00 + db 0, 16, X_FLIP, $01 + db 8, 24, X_FLIP, $02 + db 8, 16, X_FLIP, $03 + db 16, 24, X_FLIP, $04 + db 16, 16, X_FLIP, $05 + db 24, 24, X_FLIP, $06 + db 24, 16, X_FLIP, $07 + +FacingWeirdTree1: + db 4 ; # + db 0, 0, 0, $04 + db 0, 8, 0, $05 + db 8, 0, 0, $06 + db 8, 8, 0, $07 + +FacingWeirdTree3: + db 4 ; # + db 0, 8, X_FLIP, $04 + db 0, 0, X_FLIP, $05 + db 8, 8, X_FLIP, $06 + db 8, 0, X_FLIP, $07 + +FacingBigDollAsymmetric: ; big doll other than snorlax or lapras + db 14 ; # + db 0, 0, 0, $00 + db 0, 8, 0, $01 + db 8, 0, 0, $04 + db 8, 8, 0, $05 + db 16, 8, 0, $07 + db 24, 8, 0, $0a + db 0, 24, 0, $03 + db 0, 16, 0, $02 + db 8, 24, X_FLIP, $02 + db 8, 16, 0, $06 + db 16, 24, 0, $09 + db 16, 16, 0, $08 + db 24, 24, X_FLIP, $04 + db 24, 16, 0, $0b + +FacingBoulderDust1: ; boulder dust 1 + db 4 ; # + db 0, 0, ABSOLUTE_TILE_ID, $fe + db 0, 8, ABSOLUTE_TILE_ID, $fe + db 8, 0, ABSOLUTE_TILE_ID, $fe + db 8, 8, ABSOLUTE_TILE_ID, $fe + +FacingBoulderDust2: ; boulder dust 2 + db 4 ; # + db 0, 0, ABSOLUTE_TILE_ID, $ff + db 0, 8, ABSOLUTE_TILE_ID, $ff + db 8, 0, ABSOLUTE_TILE_ID, $ff + db 8, 8, ABSOLUTE_TILE_ID, $ff + +FacingGrass1: + db 2 ; # + db 8, 0, 0, $00 + db 8, 8, 0 | X_FLIP, $00 + +FacingGrass2: + db 2 ; # + db 9, -1, 0, $00 + db 9, 9, 0 | X_FLIP, $00 diff --git a/data/sprites/map_objects.asm b/data/sprites/map_objects.asm new file mode 100644 index 00000000..10afaf57 --- /dev/null +++ b/data/sprites/map_objects.asm @@ -0,0 +1,306 @@ +SpriteMovementData:: +; entries correspond to SPRITEMOVEDATA_* constants + +; SPRITEMOVEDATA_00 + db SPRITEMOVEFN_00 ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db WONT_DELETE ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_STILL + db SPRITEMOVEFN_STANDING ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db FIXED_FACING | SLIDING ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_WANDER + db SPRITEMOVEFN_RANDOM_WALK_XY ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SPINRANDOM_SLOW + db SPRITEMOVEFN_SLOW_RANDOM_SPIN ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_WALK_UP_DOWN + db SPRITEMOVEFN_RANDOM_WALK_Y ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_WALK_LEFT_RIGHT + db SPRITEMOVEFN_RANDOM_WALK_X ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_STANDING_DOWN + db SPRITEMOVEFN_STANDING ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_STANDING_UP + db SPRITEMOVEFN_STANDING ; movement function + db UP ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_STANDING_LEFT + db SPRITEMOVEFN_STANDING ; movement function + db LEFT ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_STANDING_RIGHT + db SPRITEMOVEFN_STANDING ; movement function + db RIGHT ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SPINRANDOM_FAST + db SPRITEMOVEFN_FAST_RANDOM_SPIN ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_PLAYER + db SPRITEMOVEFN_OBEY_DPAD ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db WONT_DELETE ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_0C + db SPRITEMOVEFN_08 ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_0D + db SPRITEMOVEFN_09 ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_0E + db SPRITEMOVEFN_0A ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_0F + db SPRITEMOVEFN_0B ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_10 + db SPRITEMOVEFN_0C ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_11 + db SPRITEMOVEFN_0D ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_12 + db SPRITEMOVEFN_0E ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_FOLLOWING + db SPRITEMOVEFN_FOLLOW ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db WONT_DELETE ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SCRIPTED + db SPRITEMOVEFN_SCRIPTED ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db WONT_DELETE ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_BIGDOLLSYM + db SPRITEMOVEFN_BIG_SNORLAX ; movement function + db DOWN ; facing + db OBJECT_ACTION_BIG_DOLL_SYM ; action + db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1 + db LOW_PRIORITY ; flags2 + db STRENGTH_BOULDER | BIG_OBJECT ; palette flags + +; SPRITEMOVEDATA_POKEMON + db SPRITEMOVEFN_BOUNCE ; movement function + db DOWN ; facing + db OBJECT_ACTION_BOUNCE ; action + db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SUDOWOODO + db SPRITEMOVEFN_STANDING ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db FIXED_FACING | SLIDING ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SMASHABLE_ROCK + db SPRITEMOVEFN_STANDING ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1 + db USE_OBP1 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_STRENGTH_BOULDER + db SPRITEMOVEFN_STRENGTH ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1 + db 0 ; flags2 + db STRENGTH_BOULDER ; palette flags + +; SPRITEMOVEDATA_FOLLOWNOTEXACT + db SPRITEMOVEFN_FOLLOWNOTEXACT ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db WONT_DELETE ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SHADOW + db SPRITEMOVEFN_SHADOW ; movement function + db DOWN ; facing + db OBJECT_ACTION_00 ; action + db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1 + db LOW_PRIORITY ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_EMOTE + db SPRITEMOVEFN_EMOTE ; movement function + db DOWN ; facing + db OBJECT_ACTION_EMOTE ; action + db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1 + db HIGH_PRIORITY ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SCREENSHAKE + db SPRITEMOVEFN_SCREENSHAKE ; movement function + db DOWN ; facing + db OBJECT_ACTION_00 ; action + db WONT_DELETE | EMOTE_OBJECT ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE + db SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE ; movement function + db LEFT ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SPINCLOCKWISE + db SPRITEMOVEFN_SPIN_CLOCKWISE ; movement function + db RIGHT ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_BIGDOLLASYM + db SPRITEMOVEFN_STRENGTH ; movement function + db DOWN ; facing + db OBJECT_ACTION_BIG_DOLL_ASYM ; action + db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1 + db LOW_PRIORITY ; flags2 + db STRENGTH_BOULDER | BIG_OBJECT ; palette flags + +; SPRITEMOVEDATA_BIGDOLL + db SPRITEMOVEFN_STRENGTH ; movement function + db DOWN ; facing + db OBJECT_ACTION_BIG_DOLL ; action + db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1 + db LOW_PRIORITY ; flags2 + db STRENGTH_BOULDER | BIG_OBJECT ; palette flags + +; SPRITEMOVEDATA_BOULDERDUST + db SPRITEMOVEFN_BOULDERDUST ; movement function + db DOWN ; facing + db OBJECT_ACTION_BOULDER_DUST ; action + db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1 + db LOW_PRIORITY ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_GRASS + db SPRITEMOVEFN_GRASS ; movement function + db DOWN ; facing + db OBJECT_ACTION_GRASS_SHAKE ; action + db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1 + db HIGH_PRIORITY ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SWIM_WANDER + db SPRITEMOVEFN_RANDOM_WALK_XY ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db SWIMMING ; palette flags + +; 25 + db SPRITEMOVEFN_00 ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags diff --git a/engine/facings.asm b/engine/facings.asm deleted file mode 100644 index a5669c2b..00000000 --- a/engine/facings.asm +++ /dev/null @@ -1,265 +0,0 @@ -Facings: ; 404a - dw Facing00 - dw Facing01 - dw Facing02 - dw Facing03 - dw Facing04 - dw Facing05 - dw Facing06 - dw Facing07 - dw Facing08 - dw Facing09 - dw Facing10 - dw Facing11 - dw Facing12 - dw Facing13 - dw Facing14 - dw Facing15 - dw Facing16 - dw Facing17 - dw Facing18 - dw Facing19 - dw Facing20 - dw Facing21 - dw Facing22 - dw Facing23 - dw Facing24 - dw Facing25 - dw Facing26 - dw Facing27 - dw Facing28 - dw Facing29 - dw Facing30 - dw Facing31 -FacingsEnd: dw 0 - -NUM_FACINGS EQU (FacingsEnd - Facings) / 2 - - -; Tables used as a reference to transform OAM data. - -; Format: -; db y, x, attributes, tile index - -; Attributes: -BEHIND_BG EQU 1 << OAM_PRIORITY - -Facing00: -Facing02: -Facing24: -Facing26: ; standing down - db 4 ; # - db 0, 0, 0, $00 - db 0, 8, 0, $01 - db 8, 0, 2, $02 - db 8, 8, 2, $03 -; 409d - -Facing01: ; walking down 1 - db 4 ; # - db 0, 0, 0, $80 - db 0, 8, 0, $81 - db 8, 0, 2, $82 - db 8, 8, 2, $83 -; 40ae - -Facing03: ; walking down 2 - db 4 ; # - db 0, 8, X_FLIP, $80 - db 0, 0, X_FLIP, $81 - db 8, 8, 2 | X_FLIP, $82 - db 8, 0, 2 | X_FLIP, $83 -; 40bf - -Facing04: -Facing06: ; standing up - db 4 ; # - db 0, 0, 0, $04 - db 0, 8, 0, $05 - db 8, 0, 2, $06 - db 8, 8, 2, $07 -; 40d0 - -Facing05: ; walking up 1 - db 4 ; # - db 0, 0, 0, $84 - db 0, 8, 0, $85 - db 8, 0, 2, $86 - db 8, 8, 2, $87 -; 40e1 - -Facing07: ; walking up 2 - db 4 ; # - db 0, 8, X_FLIP, $84 - db 0, 0, X_FLIP, $85 - db 8, 8, 2 | X_FLIP, $86 - db 8, 0, 2 | X_FLIP, $87 -; 40f2 - -Facing08: -Facing10: ; standing left - db 4 ; # - db 0, 0, 0, $08 - db 0, 8, 0, $09 - db 8, 0, 2, $0a - db 8, 8, 2, $0b -; 4103 - -Facing12: -Facing14: ; standing right - db 4 ; # - db 0, 8, X_FLIP, $08 - db 0, 0, X_FLIP, $09 - db 8, 8, 2 | X_FLIP, $0a - db 8, 0, 2 | X_FLIP, $0b -; 4114 - -Facing09: -Facing11: ; walking left - db 4 ; # - db 0, 0, 0, $88 - db 0, 8, 0, $89 - db 8, 0, 2, $8a - db 8, 8, 2, $8b -; 4125 - -Facing13: -Facing15: ; walking right - db 4 ; # - db 0, 8, X_FLIP, $88 - db 0, 0, X_FLIP, $89 - db 8, 8, 2 | X_FLIP, $8a - db 8, 0, 2 | X_FLIP, $8b -; 4136 - -Facing16: ; fishing down - db 5 ; # - db 0, 0, 0, $00 - db 0, 8, 0, $01 - db 8, 0, 2, $02 - db 8, 8, 2, $03 - db 16, 0, 4, $fc -; 414b - -Facing17: ; fishing up - db 5 ; # - db 0, 0, 0, $04 - db 0, 8, 0, $05 - db 8, 0, 2, $06 - db 8, 8, 2, $07 - db -8, 0, 4, $fc -; 4160 - -Facing18: ; fishing left - db 5 ; # - db 0, 0, 0, $08 - db 0, 8, 0, $09 - db 8, 0, 2, $0a - db 8, 8, 2, $0b - db 5, -8, 4 | X_FLIP, $fd -; 4175 - -Facing19: ; fishing right - db 5 ; # - db 0, 8, X_FLIP, $08 - db 0, 0, X_FLIP, $09 - db 8, 8, 2 | X_FLIP, $0a - db 8, 0, 2 | X_FLIP, $0b - db 5, 16, 4, $fd -; 418a - -Facing20: ; emote - db 4 ; # - db 0, 0, 4, $f8 - db 0, 8, 4, $f9 - db 8, 0, 4, $fa - db 8, 8, 4, $fb -; 419b - -Facing21: ; shadow - db 2 ; # - db 0, 0, 4, $fc - db 0, 8, 4 | X_FLIP, $fc -; 41a4 - -Facing23: ; big snorlax or lapras doll - db 16 ; # - db 0, 0, 0, $00 - db 0, 8, 0, $01 - db 8, 0, 0, $02 - db 8, 8, 0, $03 - db 16, 0, 0, $04 - db 16, 8, 0, $05 - db 24, 0, 0, $06 - db 24, 8, 0, $07 - db 0, 24, X_FLIP, $00 - db 0, 16, X_FLIP, $01 - db 8, 24, X_FLIP, $02 - db 8, 16, X_FLIP, $03 - db 16, 24, X_FLIP, $04 - db 16, 16, X_FLIP, $05 - db 24, 24, X_FLIP, $06 - db 24, 16, X_FLIP, $07 -; 41e5 - -Facing25: ; 41e4 - db 4 ; # - db 0, 0, 0, $04 - db 0, 8, 0, $05 - db 8, 0, 0, $06 - db 8, 8, 0, $07 -; 41f6 - -Facing27: ; 41f5 - db 4 ; # - db 0, 8, X_FLIP, $04 - db 0, 0, X_FLIP, $05 - db 8, 8, X_FLIP, $06 - db 8, 0, X_FLIP, $07 -; 4207 - -Facing22: ; big doll other than snorlax or lapras - db 14 ; # - db 0, 0, 0, $00 - db 0, 8, 0, $01 - db 8, 0, 0, $04 - db 8, 8, 0, $05 - db 16, 8, 0, $07 - db 24, 8, 0, $0a - db 0, 24, 0, $03 - db 0, 16, 0, $02 - db 8, 24, X_FLIP, $02 - db 8, 16, 0, $06 - db 16, 24, 0, $09 - db 16, 16, 0, $08 - db 24, 24, X_FLIP, $04 - db 24, 16, 0, $0b -; 4240 - -Facing28: ; boulder dust 1 - db 4 ; # - db 0, 0, 4, $fe - db 0, 8, 4, $fe - db 8, 0, 4, $fe - db 8, 8, 4, $fe -; 4251 - -Facing29: ; boulder dust 2 - db 4 ; # - db 0, 0, 4, $ff - db 0, 8, 4, $ff - db 8, 0, 4, $ff - db 8, 8, 4, $ff -; 4262 - -Facing30: ; 4261 - db 2 ; # - db 8, 0, 0, $00 - db 8, 8, 0 | X_FLIP, $00 -; 426b - -Facing31: ; 426a - db 2 ; # - db 9, -1, 0, $00 - db 9, 9, 0 | X_FLIP, $00 -; 4274 diff --git a/engine/gfx/load_push_oam.asm b/engine/gfx/load_push_oam.asm new file mode 100644 index 00000000..641439ec --- /dev/null +++ b/engine/gfx/load_push_oam.asm @@ -0,0 +1,24 @@ +DummyPredef1: + ret + +WriteOAMDMACodeToHRAM:: + ld c, LOW(hTransferVirtualOAM) + ld b, .PushOAMEnd - .PushOAM + ld hl, .PushOAM +.loop + ld a, [hli] + ldh [c], a + inc c + dec b + jr nz, .loop + ret + +.PushOAM: + ld a, HIGH(wVirtualOAM) + ldh [rDMA], a + ld a, NUM_SPRITE_OAM_STRUCTS +.pushoam_loop + dec a + jr nz, .pushoam_loop + ret +.PushOAMEnd diff --git a/engine/learn.asm b/engine/learn.asm deleted file mode 100644 index b28f754b..00000000 --- a/engine/learn.asm +++ /dev/null @@ -1,220 +0,0 @@ -LearnMove: - call LoadTilemapToTempTilemap - ld a, [wCurPartyMon] - ld hl, wPartyMon1Nickname - call GetNick - ld hl, wStringBuffer1 - ld de, wMonOrItemNameBuffer - ld bc, $b - call CopyBytes -.loop - ld hl, wPartyMon1Moves - ld bc, $30 - ld a, [wCurPartyMon] - call AddNTimes - ld d, h - ld e, l - ld b, $4 -.asm_660f - ld a, [hl] - and a - jr z, .asm_6643 - inc hl - dec b - jr nz, .asm_660f - push de - call .AlreadyHaveFourMoves - pop de - jp c, .ConfirmStopLearning - push hl - push de - ld [wd151], a - ld b, a - ld a, [wBattleMode] - and a - jr z, .asm_6638 - ld a, [wcbd3] - cp b - jr nz, .asm_6638 - xor a - ld [wcbd3], a - ld [wcb53], a -.asm_6638 - call GetMoveName - ld hl, Text_1_2_and_Poof - call PrintText - pop de - pop hl -.asm_6643 - ld a, [wPutativeTMHMMove] - ld [hl], a - ld bc, $15 - add hl, bc - push hl - push de - dec a - ld hl, Moves + MOVE_PP ; $5b03 - ld bc, $7 - call AddNTimes - ld a, BANK(Moves) - call GetFarByte - pop de - pop hl - ld [hl], a - ld a, [wBattleMode] - and a - jp z, .LearnedMove - ld a, [wCurPartyMon] - ld b, a - ld a, [wCurBattleMon] - cp b - jp nz, .LearnedMove - ld a, [wPlayerSubStatus5] - bit 3, a - jp nz, .LearnedMove - ld h, d - ld l, e - ld de, wBattleMonMoves - ld bc, $4 - call CopyBytes - ld bc, $11 - add hl, bc - ld de, wBattleMonPP - ld bc, $4 - call CopyBytes - jp .LearnedMove - -.ConfirmStopLearning: ; 6694 (1:6694) - ld hl, Text_StopLearning - call PrintText - call YesNoBox - jp c, .loop - ld hl, Text_DidNotLearn - call PrintText - ld b, $0 - ret - -.LearnedMove: ; 66a9 (1:66a9) - ld hl, Text_LearnedMove - call PrintText - ld b, $1 - ret - -.AlreadyHaveFourMoves: ; 66b2 (1:66b2) - push hl - ld hl, Text_TryingToLearn - call PrintText - call YesNoBox - pop hl - ret c - ld bc, -4 - add hl, bc - push hl - ld de, wListMoves_MoveIndicesBuffer - ld bc, $4 - call CopyBytes - pop hl -.asm_66cd - push hl - ld hl, Text_ForgetWhich - call PrintText - hlcoord 5, 2 - ld b, $8 - ld c, $d - call Textbox - hlcoord 7, 4 - ld a, $28 - ld [wBuffer1], a - predef ListMoves - ld a, $4 - ld [w2DMenuCursorInitY], a - ld a, $6 - ld [w2DMenuCursorInitX], a - ld a, [wNumMoves] - inc a - ld [w2DMenuNumRows], a - ld a, $1 - ld [w2DMenuNumCols], a - ld [wMenuCursorY], a - ld [wcee1], a - ld a, $3 - ld [wMenuJoypadFilter], a - ld a, $20 - ld [w2DMenuFlags1], a - xor a - ld [w2DMenuFlags2], a - ld a, $20 - ld [w2DMenuCursorOffsets], a - call StaticMenuJoypad - push af - call SafeLoadTempTilemapToTilemap - pop af - pop hl - bit 1, a - jr nz, .asm_6748 - push hl - ld a, [wMenuCursorY] - dec a - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] - push af - push bc - call IsHMMove - pop bc - pop de - ld a, d - jr c, .asm_673f - pop hl - add hl, bc - and a - ret - -.asm_673f - ld hl, Text_CantForgetHM - call PrintText - pop hl - jr .asm_66cd - -.asm_6748 - scf - ret - -Text_LearnedMove: - text_far Text_LearnedMove_ - db "@" - -Text_ForgetWhich: - text_far Text_ForgetWhich_ - db "@" - -Text_StopLearning: - text_far Text_StopLearning_ - db "@" - -Text_DidNotLearn: - text_far Text_DidNotLearn_ - db "@" - -Text_TryingToLearn: - text_far Text_TryingToLearn_ - db "@" - -Text_1_2_and_Poof: - text_far Text_1_2_and_Poof_ - text_asm - push de - ld de, SFX_SWITCH_POKEMON - call PlaySFX - pop de - ld hl, .PoofForgot - ret - -.PoofForgot: - text_far Text_PoofForgot_ - db "@" - -Text_CantForgetHM: - text_far Text_CantForgetHM_ - db "@" diff --git a/engine/main_menu.asm b/engine/main_menu.asm deleted file mode 100755 index 6f460a5c..00000000 --- a/engine/main_menu.asm +++ /dev/null @@ -1,1093 +0,0 @@ -MainMenu_: - ld de, MUSIC_NONE - call PlayMusic - call DelayFrame - ld de, MUSIC_MAIN_MENU - ld a, e - ld [wMapMusic], a - call PlayMusic -.asm_5a60 - xor a - ld [wDisableTextAcceleration], a - call Function5bf7 - ld b, $8 - call GetSGBLayout - ld hl, wGameTimerPause - res 0, [hl] - call Function5ae4 - ld [wWhichIndexSet], a - call Function5b27 - ld hl, .MenuDataHeader - call LoadMenuHeader - call Function5b0a - call CloseWindow - jr c, .asm_5a94 - call ClearTilemap - ld a, [wMenuSelection] - ld hl, .Jumptable - rst JumpTable - jr .asm_5a60 - -.asm_5a94 - jp StartTitleScreen - -.MenuDataHeader: - db $40 - db 00, 00 - db 07, 14 - dw .MenuData2 - db 1 - -.MenuData2: - db $80 - db 0 - dw MainMenuItems - dw PlaceMenuStrings - dw .Strings - -.Strings: - db "CONTINUE@" - db "NEW GAME@" - db "OPTION@" - db "MYSTERY GIFT@" - -.Jumptable: - dw MainMenu_Continue ; 5dd9 - dw MainMenu_NewGame ; 5c1e - dw MainMenu_Options ; 5c17 - dw MainMenu_MysteryGift ; 5c07 - -CONTINUE EQU 0 -NEW_GAME EQU 1 -OPTION EQU 2 -MYSTERY_GIFT EQU 3 - -MainMenuItems: - db 2 - db NEW_GAME - db OPTION - db -1 - - db 3 - db CONTINUE - db NEW_GAME - db OPTION - db -1 - - db 4 - db CONTINUE - db NEW_GAME - db OPTION - db MYSTERY_GIFT - db -1 - -Function5ae4: ; 5ae4 (1:5ae4) - nop - nop - nop - ld a, [wSaveFileExists] - and a - jr nz, .asm_5af0 - ld a, $0 - ret - -.asm_5af0 - ldh a, [hCGB] - cp $1 - ld a, $1 - ret nz - ld a, $0 - call OpenSRAM - ld a, [$abe5] - cp $ff - call CloseSRAM - ld a, $1 - ret z - ld a, $2 - ret - -Function5b0a: ; 5b0a (1:5b0a) - call SetUpMenu -.asm_5b0d - call Function5b27 - call GetScrollingMenuJoypad - ld a, [wMenuJoypad] - cp $2 - jr z, .asm_5b25 - cp $1 - jr z, .asm_5b20 - jr .asm_5b0d - -.asm_5b20 - call PlayClickSFX - and a - ret - -.asm_5b25 - scf - ret - -Function5b27: ; 5b27 (1:5b27) - ld a, [wSaveFileExists] - and a - ret z - xor a - ldh [hBGMapMode], a - call Function5b45 - ld hl, wOptions - ld a, [hl] - push af - set 4, [hl] - call Function5b5b - pop af - ld [wOptions], a - ld a, $1 - ldh [hBGMapMode], a - ret - -Function5b45: ; 5b45 (1:5b45) - call CheckRTCStatus - and $80 - jr nz, .asm_5b57 - hlcoord 0, 12 - ld b, $4 - ld c, $d - call Textbox - ret - -.asm_5b57 - call SpeechTextbox - ret - -Function5b5b: ; 5b5b (1:5b5b) - ld a, [wSaveFileExists] - and a - ret z - call CheckRTCStatus - and $80 - jp nz, Function5b9c - call UpdateTime - hlcoord 1, 13 - ld bc, IncGradGBPalTable_11 + 1 - call ClearBox - call GetWeekday - ld b, a - decoord 1, 14 - call Function5bb8 - decoord 4, 16 - ldh a, [hHours] - ld c, a - farcall PrintHour - ld [hl], $9c - inc hl - ld de, hMinutes - lb bc, PRINTNUM_LEADINGZEROS | 1, 2 - call PrintNum - ret - -.min - db "min.@" - -Function5b9c: ; 5b9c (1:5b9c) - hlcoord 1, 14 - ld de, .TimeNotSet - call PlaceString - ret - -.TimeNotSet - db "TIME NOT SET@" - -.UnusedText - text_far _ClockTimeUnknownText - db "@" - -Function5bb8: ; 5bb8 (1:5bb8) - push de - ld hl, .Days - ld a, b - call GetNthString - ld d, h - ld e, l - pop hl - call PlaceString - ld h, b - ld l, c - ld de, .Day - call PlaceString - ret - -.Days: - db "SUN@" - db "MON@" - db "TUES@" - db "WEDNES@" - db "THURS@" - db "FRI@" - db "SATUR@" -.Day: - db "DAY@" - -Function5bf7: ; 5bf7 (1:5bf7) - xor a - ldh [hMapAnims], a - call ClearTilemap - call LoadFontsExtra - call Functiond9e - call ClearWindowData - ret - -MainMenu_MysteryGift: - call UpdateTime - farcall Function11934 - farcall Function29dff - ret - -MainMenu_Options: - farcall OptionsMenu - ret - -MainMenu_NewGame: - xor a - ld [wDebugFlags], a - call Function5c3a - call Function5bf7 - call OakSpeech - call InitializeWorld - ld a, $0 - ld [wceec], a - ld a, $f1 - ldh [hMapEntryMethod], a - jp FinishContinueFunction - -Function5c3a: ; 5c3a (1:5c3a) - xor a - ldh [hBGMapMode], a - call Function5c41 - ret - -Function5c41: ; 5c41 (1:5c41) - ld hl, wVirtualOAM - ld bc, wOptions - wVirtualOAM - xor a - call ByteFill - - ld hl, wGameData - ld bc, wGameDataEnd - wGameData - xor a - call ByteFill - - ldh a, [rLY] - ldh [hSecondsBackup], a - call DelayFrame - ldh a, [hRandomSub] - ld [wPlayerID], a - - ldh a, [rLY] - ldh [hSecondsBackup], a - call DelayFrame - ldh a, [hRandomAdd] - ld [wPlayerID + 1], a - - ld hl, wPartyCount - call Function5d15 - - xor a - ld [wCurBox], a - ld [wSavedAtLeastOnce], a - - call Function5d1a - - ld a, BANK(sBoxCount) - call OpenSRAM - ld hl, sBoxCount - call Function5d15 - call CloseSRAM - - ld hl, wNumItems - call Function5d15 - ld hl, wNumKeyItems - call Function5d15 - ld hl, wNumBalls - call Function5d15 - ld hl, wPCItems - call Function5d15 - - xor a - ld [wRoamMon1Species], a - ld [wRoamMon2Species], a - ld [wRoamMon3Species], a - ld a, $ff - ld [wRoamMon1MapGroup], a - ld [wRoamMon2MapGroup], a - ld [wRoamMon3MapGroup], a - ld [wRoamMon1MapNumber], a - ld [wRoamMon2MapNumber], a - ld [wRoamMon3MapNumber], a - - ld a, BANK(s0_abe2) - call OpenSRAM - ld hl, s0_abe2 - xor a - ld [hli], a - dec a - ld [hl], a - call CloseSRAM - - call LoadOrRegenerateLuckyIDNumber - call InitializeMagikarpHouse - - xor a - ld [wMonType], a - - ld [wJohtoBadges], a - ld [wKantoBadges], a - - ld [wCoins], a - ld [wCoins + 1], a - -IF START_MONEY / $10000 - ld a, START_MONEY / $10000 -ENDC - ld [wMoney], a - ld a, START_MONEY / $100 % $100 - ld [wMoney + 1], a - ld a, START_MONEY % $100 - ld [wMoney + 2], a - - xor a - ld [wd961], a - - ld hl, wMomItemTriggerBalance - ld [hl], 2300 / $10000 - inc hl - ld [hl], 2300 / $100 % $100 - inc hl - ld [hl], 2300 % $100 - - call Function5d5d - - farcall InitDecorations - - farcall DeletePartyMonMail - - call ResetGameTime - ret - -Function5d15: ; 5d15 (1:5d15) - xor a - ld [hli], a - dec a - ld [hl], a - ret - -Function5d1a: ; 5d1a (1:5d1a) - ld hl, wBoxNames - ld c, $0 -.asm_5d1f - push hl - ld de, .Box - call CopyName2 - dec hl - ld a, c - inc a - cp 10 - jr c, .asm_5d32 - sub 10 - ld [hl], "1" - inc hl -.asm_5d32 - add "0" - ld [hli], a - ld [hl], "@" - pop hl - ld de, 9 - add hl, de - inc c - ld a, c - cp NUM_BOXES - jr c, .asm_5d1f - ret - -.Box db "BOX@" - -InitializeMagikarpHouse: ; 5d47 (1:5d47) - ld hl, wBestMagikarpLengthFeet - ld a, 3 - ld [hli], a - ld a, 6 - ld [hli], a - ld de, .Ralph - call CopyName2 - ret - -.Ralph db "RALPH@" - -Function5d5d: ; 5d5d (1:5d5d) - ld hl, .Rival - ld de, wRivalName - call .CopyName - ld hl, .Mom - ld de, wMomsName - call .CopyName - ld hl, .Red - ld de, wRedsName - call .CopyName - ld hl, .Green - ld de, wGreensName -.CopyName: - ld bc, NAME_LENGTH - call CopyBytes - ret - -.Rival: db "???@" -.Red: db "RED@" -.Green: db "GREEN@" -.Mom: db "MOM@" - -InitializeWorld: ; 5d97 (1:5d97) - call ShrinkPlayer - farcall SpawnPlayer - farcall InitializeStartDay_ - ret - -LoadOrRegenerateLuckyIDNumber: ; 5da7 (1:5da7) - ld a, $0 - call OpenSRAM - ld a, [wCurDay] - inc a - ld b, a - ld a, [s0_ac68] - cp b - ld a, [s0_ac6a] - ld c, a - ld a, [s0_ac69] - jr z, .asm_5dc9 - ld a, b - ld [s0_ac68], a - call Random - ld c, a - call Random -.asm_5dc9 - ld [wd9e9], a - ld [s0_ac69], a - ld a, c - ld [wd9ea], a - ld [s0_ac6a], a - jp CloseSRAM - -MainMenu_Continue: - farcall TryLoadSaveFile - jr c, .asm_5e41 - call LoadStandardMenuHeader - call DisplaySaveInfoOnContinue - ld a, $1 - ldh [hBGMapMode], a - ld c, 20 - call DelayFrames - call ConfirmContinue - jr nc, .asm_5dfa - call CloseWindow - jr .asm_5e41 - -.asm_5dfa - call Continue_CheckRTC_RestartClock - jr nc, .asm_5e04 - call CloseWindow - jr .asm_5e41 - -.asm_5e04 - ld a, $8 - ld [wMusicFade], a - ld a, MUSIC_NONE % $100 - ld [wMusicFadeID], a - ld a, MUSIC_NONE / $100 - ld [wMusicFadeID + 1], a - call ClearBGPalettes - call CloseWindow - call ClearTilemap - ld c, 20 - call DelayFrames - farcall JumpRoamMons - farcall MysteryGift_CopyReceivedDecosToPC - farcall ClockContinue - ld a, [wd1db] - cp $1 - jr z, .asm_5e42 - ld a, $f2 - ldh [hMapEntryMethod], a - jp FinishContinueFunction - -.asm_5e41 - ret - -.asm_5e42 - ld a, $e - ld [wceec], a - call PostCreditsSpawn - jp FinishContinueFunction - -SpawnAfterRed: ; 5e4d (1:5e4d) - ld a, $1a - ld [wceec], a -PostCreditsSpawn: ; 5e52 (1:5e52) - xor a - ld [wd1db], a - ld a, $f1 - ldh [hMapEntryMethod], a - ret - -ConfirmContinue: ; 5e5b (1:5e5b) - call DelayFrame - call GetJoypad - ld hl, hJoyPressed - bit 0, [hl] - jr nz, .asm_5e6e - bit 1, [hl] - jr z, ConfirmContinue - scf - ret - -.asm_5e6e - ret - -Continue_CheckRTC_RestartClock: ; 5e6f (1:5e6f) - call CheckRTCStatus - and $80 - jr z, .asm_5e82 - ld a, $8 - ld hl, $4021 - rst FarCall - ld a, c - and a - jr z, .asm_5e82 - scf - ret - -.asm_5e82 - xor a - ret - -FinishContinueFunction: ; 5e84 (1:5e84) - xor a - ld [wDontPlayMapMusicOnReload], a - ld hl, wGameTimerPause - set 0, [hl] - farcall OverworldLoop - ld a, [wd1db] - cp $2 - jr z, .asm_5e9d - jp Reset - -.asm_5e9d - call SpawnAfterRed - jr FinishContinueFunction - -DisplaySaveInfoOnContinue: ; 5ea2 (1:5ea2) - call CheckRTCStatus - and $80 - jr z, .asm_5eb0 - lb de, 4, 8 - call DisplayContinueDataWithRTCError - ret - -.asm_5eb0 - lb de, 4, 8 - call DisplayNormalContinueData - ret - -DisplayNormalContinueData: ; 5eb7 (1:5eb7) - call Continue_LoadMenuHeader - call Continue_DisplayBadgesDex - call Continue_PrintGameTime - call LoadFontsExtra - call UpdateSprites - ret - -DisplayContinueDataWithRTCError: ; 5ec7 (1:5ec7) - call Continue_LoadMenuHeader - call Continue_DisplayBadgesDex - call Continue_UnknownGameTime - call LoadFontsExtra - call UpdateSprites - ret - -Continue_LoadMenuHeader: ; 5ed7 (1:5ed7) - xor a - ldh [hBGMapMode], a - ld hl, .MenuDataHeader_Dex - CheckFlag ENGINE_POKEDEX - jr nz, .asm_5ee7 - ld hl, .MenuDataHeader_NoDex -.asm_5ee7 - call _OffsetMenuHeader - call MenuBox - call PlaceVerticalMenuItems - ret - -.MenuDataHeader_Dex: - db $40 - db 00, 00 - db 09, 15 - dw .MenuData2_Dex - db 1 - -.MenuData2_Dex - db $00 - db 4 - db "PLAYER @" - db "BADGES@" - db "#DEX@" - db "TIME@" - -.MenuDataHeader_NoDex: - db $40 - db 00, 00 - db 09, 15 - dw .MenuData2_NoDex - db 1 - -.MenuData2_NoDex - db $00 - db 4 - db "PLAYER @" - db "BADGES@" - db " @" - db "TIME@" - -Continue_DisplayBadgesDex: ; 5f36 (1:5f36) - call MenuBoxCoord2Tile - push hl - decoord 13, 4, 0 - add hl, de - call Continue_DisplayBadgeCount - pop hl - push hl - decoord 12, 6, 0 - add hl, de - call Continue_DisplayPokedexNumCaught - pop hl - ret - -Continue_PrintGameTime: ; 5f4c (1:5f4c) - decoord 9, 8, 0 - add hl, de - call Continue_DisplayGameTime - ret - -Continue_UnknownGameTime: ; 5f54 (1:5f54) - decoord 9, 8, 0 - add hl, de - ld de, .three_question_marks - call PlaceString - ret - -.three_question_marks - db " ???@" - -Continue_DisplayBadgeCount: ; 5f64 (1:5f64) - push hl - ld hl, wJohtoBadges - ld b, $2 - call CountSetBits - pop hl - ld de, wd151 - lb bc, 1, 2 - jp PrintNum - -Continue_DisplayPokedexNumCaught: ; 5f77 (1:5f77) - CheckFlag ENGINE_POKEDEX - ret z - push hl - ld hl, wPokedexCaught -IF NUM_POKEMON % 8 - ld b, NUM_POKEMON / 8 + 1 -ELSE - ld b, NUM_POKEMON / 8 -ENDC - call CountSetBits - pop hl - ld de, wd151 - lb bc, 1, 3 - jp PrintNum - -Continue_DisplayGameTime: ; 5f90 (1:5f90) - ld de, wGameTimeHours - lb bc, 2, 3 - call PrintNum - ld [hl], $6d - inc hl - ld de, wGameTimeMinutes - lb bc, PRINTNUM_LEADINGZEROS | 1, 2 - jp PrintNum - -OakSpeech: ; 5fa5 (1:5fa5) - farcall InitClock ; What time is it? - - call RotateFourPalettesLeft - call ClearTilemap - - ld de, MUSIC_ROUTE_30 - call PlayMusic - - call RotateFourPalettesRight - call RotateThreePalettesRight - - xor a - ld [wCurPartySpecies], a - ld a, POKEMON_PROF - ld [wTrainerClass], a - call Intro_PrepTrainerPic - - ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS - call GetSGBLayout - - call Intro_FadeInFrontpic - - ld hl, OakText1 - call PrintText - - call RotateThreePalettesRight - call ClearTilemap - - ld a, MARILL - ld [wCurSpecies], a - ld [wCurPartySpecies], a - call GetBaseData - hlcoord 6, 4 - hlcoord 6, 4 ; TriHard - call PrepMonFrontpic - - xor a - ld [wTempMonDVs], a - ld [wTempMonDVs + 1], a - ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS - call GetSGBLayout - - call Intro_WipeInFrontpic - - ld hl, OakText2 - call PrintText - - ld hl, OakText4 - call PrintText - - call RotateThreePalettesRight - call ClearTilemap - - xor a - ld [wCurPartySpecies], a - ld a, POKEMON_PROF - ld [wTrainerClass], a - call Intro_PrepTrainerPic - - ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS - call GetSGBLayout - - call Intro_FadeInFrontpic - - ld hl, OakText5 - call PrintText - - call RotateThreePalettesRight - call ClearTilemap - - xor a - ld [wCurPartySpecies], a - ld a, CAL - ld [wTrainerClass], a - call Intro_PrepTrainerPic - - ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS - call GetSGBLayout - - call Intro_FadeInFrontpic - - ld hl, OakText6 - call PrintText - - call NamePlayer - - ld hl, OakText7 - call PrintText - ret - -OakText1: - text_far _OakText1 - db "@" - -OakText2: - text_far _OakText2 - text_asm - ld a, MARILL - call PlayMonCry - call WaitSFX - ld hl, OakText3 ; $606c - ret - -OakText3: - text_far _OakText3 - db "@" - -OakText4: - text_far _OakText4 - db "@" - -OakText5: - text_far _OakText5 - db "@" - -OakText6: - text_far _OakText6 - db "@" - -OakText7: - text_far _OakText7 - db "@" - -NamePlayer: ; 6085 (1:6085) - call MovePlayerPicRight - ld hl, .PlayerNamingChoices ; $60d9 - call SelectPresetName - ld a, [wMenuCursorY] - dec a - jr z, .NewName - ld de, wPlayerName - call StorePlayerName - farcall ApplyMonOrTrainerPals - call MovePlayerPicLeft - ret - -.NewName - ld b, $1 - ld de, wPlayerName - farcall NamingScreen - call RotateThreePalettesRight - call ClearTilemap - call LoadFontsExtra - call WaitBGMap - xor a - ld [wCurPartySpecies], a - ld a, CAL - ld [wTrainerClass], a - call Intro_PrepTrainerPic - ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS - call GetSGBLayout - call RotateThreePalettesLeft - ld hl, wPlayerName - ld de, .GoldSilver - call InitName - ret - -.PlayerNamingChoices: - db $40 - db 00, 00 - db 11, 10 - dw .MenuData2 - db 1 - -.MenuData2: - db $91 - db 5 - db "NEW NAME@" -.GoldSilver: -IF DEF(GOLD) - db "GOLD@" - db "HIRO@" - db "TAYLOR@" - db "KARL@" -ENDC -IF DEF(SILVER) - db "SILVER@" - db "KAMON@" - db "OSCAR@" - db "MAX@" -ENDC - db 2, "NAME@" - -SelectPresetName: ; 6108 (1:6108) - call LoadMenuHeader - call VerticalMenu - ld a, [wMenuCursorY] - dec a - call CopyNameFromMenu - call CloseWindow - ret - -StorePlayerName: ; 6119 (1:6119) - ld hl, wStringBuffer2 - ld bc, NAME_LENGTH - call CopyBytes - ret - -ShrinkPlayer: ; 6123 (1:6123) - ldh a, [hROMBank] - push af - - ld a, 0 << 7 | 32 ; fade out - ld [wMusicFade], a - ld de, MUSIC_NONE - ld a, e - ld [wMusicFadeID], a - ld a, d - ld [wMusicFadeID + 1], a - - ld de, SFX_ESCAPE_ROPE - call PlaySFX - pop af - rst Bankswitch - - ld c, 8 - call DelayFrames - - ld hl, Shrink1Pic - ld b, BANK(Shrink1Pic) - call ShrinkFrame - - ld c, 8 - call DelayFrames - - ld hl, Shrink2Pic - ld b, BANK(Shrink2Pic) - call ShrinkFrame - - ld c, 8 - call DelayFrames - - hlcoord 6, 5 - ld b, 7 - ld c, 7 - call ClearBox - - ld c, 3 - call DelayFrames - - call Intro_PlacePlayerSprite - call LoadFontsExtra - - ld c, 50 - call DelayFrames - - call RotateThreePalettesRight - call ClearTilemap - ret - -MovePlayerPicRight: ; 617e (1:617e) - hlcoord 6, 4 - ld de, $1 - jr MovePlayerPic - -MovePlayerPicLeft: ; 6186 (1:6186) - hlcoord 13, 4 - ld de, -1 -MovePlayerPic - ld c, $8 -.asm_618e - push bc - push hl - push de - xor a - ldh [hBGMapMode], a - lb bc, 7, 7 - predef PlaceGraphic - xor a - ldh [hBGMapThird], a - call WaitBGMap - call DelayFrame - pop de - pop hl - add hl, de - pop bc - dec c - jr nz, .asm_618e - ret - -Intro_FadeInFrontpic: ; 61ad (1:61ad) - ld hl, IntroFadePalettes - ld b, $6 -.asm_61b2 - ld a, [hli] - call DmgToCgbBGPals - ld c, $a - call DelayFrames - dec b - jr nz, .asm_61b2 - ret - -IntroFadePalettes: - db %01010100 - db %10101000 - db %11111100 - db %11111000 - db %11110100 - db %11100100 - -Intro_WipeInFrontpic: ; 61c5 (1:61c5) - ld a, $77 - ldh [hWX], a - call DelayFrame - ld a, $e4 - call DmgToCgbBGPals -.asm_61d1 - call DelayFrame - ldh a, [hWX] - sub $8 - cp $ff - ret z - ldh [hWX], a - jr .asm_61d1 - -Intro_PrepTrainerPic: ; 61df, 61e0 (1:61df, 1:61e0) - ld de, $9000 - ld a, $14 - ld hl, $58a0 - rst FarCall - xor a - ldh [hGraphicStartTile], a - hlcoord 6, 4 - lb bc, 7, 7 - predef PlaceGraphic - ret - -ShrinkFrame: ; 61f7 (1:61f7) - ld de, $9000 - ld c, $31 - predef DecompressGet2bpp - xor a - ldh [hGraphicStartTile], a - hlcoord 6, 4 - lb bc, 7, 7 - predef PlaceGraphic - ret - -Intro_PlacePlayerSprite: ; 6210 (1:6210) - ld de, PlayerSpriteGFX - lb bc, BANK(PlayerSpriteGFX), 12 - ld hl, $8000 - call Request2bpp - ld hl, wVirtualOAM - ld de, .OAMData - ld a, [de] - inc de - ld c, a -.asm_6225 - ld a, [de] - inc de - ld [hli], a - ld a, [de] - inc de - ld [hli], a - ld a, [de] - inc de - ld [hli], a - xor a - ld [hli], a - dec c - jr nz, .asm_6225 - ret - -.OAMData - db 4 - db 9 * 8 + 4, 9 * 8, 0 - db 9 * 8 + 4, 10 * 8, 1 - db 10 * 8 + 4, 9 * 8, 2 - db 10 * 8 + 4, 10 * 8, 3 diff --git a/engine/math.asm b/engine/math.asm deleted file mode 100755 index cdac2d37..00000000 --- a/engine/math.asm +++ /dev/null @@ -1,190 +0,0 @@ -_Multiply:: ; 67bd - -; hMultiplier is one byte. - ld a, 8 - ld b, a - - xor a - ldh [hProduct], a - ldh [hMathBuffer + 1], a - ldh [hMathBuffer + 2], a - ldh [hMathBuffer + 3], a - ldh [hMathBuffer + 4], a - -.loop - ldh a, [hMultiplier] - srl a - ldh [hMultiplier], a - jr nc, .next - - ldh a, [hMathBuffer + 4] - ld c, a - ldh a, [hMultiplicand + 2] - add c - ldh [hMathBuffer + 4], a - - ldh a, [hMathBuffer + 3] - ld c, a - ldh a, [hMultiplicand + 1] - adc c - ldh [hMathBuffer + 3], a - - ldh a, [hMathBuffer + 2] - ld c, a - ldh a, [hMultiplicand + 0] - adc c - ldh [hMathBuffer + 2], a - - ldh a, [hMathBuffer + 1] - ld c, a - ldh a, [hProduct] - adc c - ldh [hMathBuffer + 1], a - -.next - dec b - jr z, .done - -; hMultiplicand <<= 1 - - ldh a, [hMultiplicand + 2] - add a - ldh [hMultiplicand + 2], a - - ldh a, [hMultiplicand + 1] - rla - ldh [hMultiplicand + 1], a - - ldh a, [hMultiplicand + 0] - rla - ldh [hMultiplicand + 0], a - - ldh a, [hProduct] - rla - ldh [hProduct], a - - jr .loop - -.done - ldh a, [hMathBuffer + 4] - ldh [hProduct + 3], a - - ldh a, [hMathBuffer + 3] - ldh [hProduct + 2], a - - ldh a, [hMathBuffer + 2] - ldh [hProduct + 1], a - - ldh a, [hMathBuffer + 1] - ldh [hProduct + 0], a - - ret - -_Divide:: ; 681d - xor a - ldh [hMathBuffer + 0], a - ldh [hMathBuffer + 1], a - ldh [hMathBuffer + 2], a - ldh [hMathBuffer + 3], a - ldh [hMathBuffer + 4], a - - ld a, 9 - ld e, a - -.loop - ldh a, [hMathBuffer + 0] - ld c, a - ldh a, [hDividend + 1] - sub c - ld d, a - - ldh a, [hDivisor] - ld c, a - ldh a, [hDividend + 0] - sbc c - jr c, .next - - ldh [hDividend + 0], a - - ld a, d - ldh [hDividend + 1], a - - ldh a, [hMathBuffer + 4] - inc a - ldh [hMathBuffer + 4], a - - jr .loop - -.next - ld a, b - cp 1 - jr z, .done - - ldh a, [hMathBuffer + 4] - add a - ldh [hMathBuffer + 4], a - - ldh a, [hMathBuffer + 3] - rla - ldh [hMathBuffer + 3], a - - ldh a, [hMathBuffer + 2] - rla - ldh [hMathBuffer + 2], a - - ldh a, [hMathBuffer + 1] - rla - ldh [hMathBuffer + 1], a - - dec e - jr nz, .next2 - - ld e, 8 - ldh a, [hMathBuffer + 0] - ldh [hDivisor], a - xor a - ldh [hMathBuffer + 0], a - - ldh a, [hDividend + 1] - ldh [hDividend + 0], a - - ldh a, [hDividend + 2] - ldh [hDividend + 1], a - - ldh a, [hDividend + 3] - ldh [hDividend + 2], a - -.next2 - ld a, e - cp 1 - jr nz, .okay - dec b - -.okay - ldh a, [hDivisor] - srl a - ldh [hDivisor], a - - ldh a, [hMathBuffer + 0] - rr a - ldh [hMathBuffer + 0], a - - jr .loop - -.done - ldh a, [hDividend + 1] - ldh [hDivisor], a - - ldh a, [hMathBuffer + 4] - ldh [hDividend + 3], a - - ldh a, [hMathBuffer + 3] - ldh [hDividend + 2], a - - ldh a, [hMathBuffer + 2] - ldh [hDividend + 1], a - - ldh a, [hMathBuffer + 1] - ldh [hDividend + 0], a - - ret diff --git a/engine/math/math.asm b/engine/math/math.asm new file mode 100755 index 00000000..cdac2d37 --- /dev/null +++ b/engine/math/math.asm @@ -0,0 +1,190 @@ +_Multiply:: ; 67bd + +; hMultiplier is one byte. + ld a, 8 + ld b, a + + xor a + ldh [hProduct], a + ldh [hMathBuffer + 1], a + ldh [hMathBuffer + 2], a + ldh [hMathBuffer + 3], a + ldh [hMathBuffer + 4], a + +.loop + ldh a, [hMultiplier] + srl a + ldh [hMultiplier], a + jr nc, .next + + ldh a, [hMathBuffer + 4] + ld c, a + ldh a, [hMultiplicand + 2] + add c + ldh [hMathBuffer + 4], a + + ldh a, [hMathBuffer + 3] + ld c, a + ldh a, [hMultiplicand + 1] + adc c + ldh [hMathBuffer + 3], a + + ldh a, [hMathBuffer + 2] + ld c, a + ldh a, [hMultiplicand + 0] + adc c + ldh [hMathBuffer + 2], a + + ldh a, [hMathBuffer + 1] + ld c, a + ldh a, [hProduct] + adc c + ldh [hMathBuffer + 1], a + +.next + dec b + jr z, .done + +; hMultiplicand <<= 1 + + ldh a, [hMultiplicand + 2] + add a + ldh [hMultiplicand + 2], a + + ldh a, [hMultiplicand + 1] + rla + ldh [hMultiplicand + 1], a + + ldh a, [hMultiplicand + 0] + rla + ldh [hMultiplicand + 0], a + + ldh a, [hProduct] + rla + ldh [hProduct], a + + jr .loop + +.done + ldh a, [hMathBuffer + 4] + ldh [hProduct + 3], a + + ldh a, [hMathBuffer + 3] + ldh [hProduct + 2], a + + ldh a, [hMathBuffer + 2] + ldh [hProduct + 1], a + + ldh a, [hMathBuffer + 1] + ldh [hProduct + 0], a + + ret + +_Divide:: ; 681d + xor a + ldh [hMathBuffer + 0], a + ldh [hMathBuffer + 1], a + ldh [hMathBuffer + 2], a + ldh [hMathBuffer + 3], a + ldh [hMathBuffer + 4], a + + ld a, 9 + ld e, a + +.loop + ldh a, [hMathBuffer + 0] + ld c, a + ldh a, [hDividend + 1] + sub c + ld d, a + + ldh a, [hDivisor] + ld c, a + ldh a, [hDividend + 0] + sbc c + jr c, .next + + ldh [hDividend + 0], a + + ld a, d + ldh [hDividend + 1], a + + ldh a, [hMathBuffer + 4] + inc a + ldh [hMathBuffer + 4], a + + jr .loop + +.next + ld a, b + cp 1 + jr z, .done + + ldh a, [hMathBuffer + 4] + add a + ldh [hMathBuffer + 4], a + + ldh a, [hMathBuffer + 3] + rla + ldh [hMathBuffer + 3], a + + ldh a, [hMathBuffer + 2] + rla + ldh [hMathBuffer + 2], a + + ldh a, [hMathBuffer + 1] + rla + ldh [hMathBuffer + 1], a + + dec e + jr nz, .next2 + + ld e, 8 + ldh a, [hMathBuffer + 0] + ldh [hDivisor], a + xor a + ldh [hMathBuffer + 0], a + + ldh a, [hDividend + 1] + ldh [hDividend + 0], a + + ldh a, [hDividend + 2] + ldh [hDividend + 1], a + + ldh a, [hDividend + 3] + ldh [hDividend + 2], a + +.next2 + ld a, e + cp 1 + jr nz, .okay + dec b + +.okay + ldh a, [hDivisor] + srl a + ldh [hDivisor], a + + ldh a, [hMathBuffer + 0] + rr a + ldh [hMathBuffer + 0], a + + jr .loop + +.done + ldh a, [hDividend + 1] + ldh [hDivisor], a + + ldh a, [hMathBuffer + 4] + ldh [hDividend + 3], a + + ldh a, [hMathBuffer + 3] + ldh [hDividend + 2], a + + ldh a, [hMathBuffer + 2] + ldh [hDividend + 1], a + + ldh a, [hMathBuffer + 1] + ldh [hDividend + 0], a + + ret diff --git a/engine/menus/intro_menu.asm b/engine/menus/intro_menu.asm new file mode 100644 index 00000000..2ad9a396 --- /dev/null +++ b/engine/menus/intro_menu.asm @@ -0,0 +1,1544 @@ +MainMenu_: + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + ld de, MUSIC_MAIN_MENU + ld a, e + ld [wMapMusic], a + call PlayMusic +.asm_5a60 + xor a + ld [wDisableTextAcceleration], a + call Function5bf7 + ld b, $8 + call GetSGBLayout + ld hl, wGameTimerPause + res 0, [hl] + call Function5ae4 + ld [wWhichIndexSet], a + call Function5b27 + ld hl, .MenuDataHeader + call LoadMenuHeader + call Function5b0a + call CloseWindow + jr c, .asm_5a94 + call ClearTilemap + ld a, [wMenuSelection] + ld hl, .Jumptable + rst JumpTable + jr .asm_5a60 + +.asm_5a94 + jp StartTitleScreen + +.MenuDataHeader: + db $40 + db 00, 00 + db 07, 14 + dw .MenuData2 + db 1 + +.MenuData2: + db $80 + db 0 + dw MainMenuItems + dw PlaceMenuStrings + dw .Strings + +.Strings: + db "CONTINUE@" + db "NEW GAME@" + db "OPTION@" + db "MYSTERY GIFT@" + +.Jumptable: + dw MainMenu_Continue ; 5dd9 + dw MainMenu_NewGame ; 5c1e + dw MainMenu_Options ; 5c17 + dw MainMenu_MysteryGift ; 5c07 + +CONTINUE EQU 0 +NEW_GAME EQU 1 +OPTION EQU 2 +MYSTERY_GIFT EQU 3 + +MainMenuItems: + db 2 + db NEW_GAME + db OPTION + db -1 + + db 3 + db CONTINUE + db NEW_GAME + db OPTION + db -1 + + db 4 + db CONTINUE + db NEW_GAME + db OPTION + db MYSTERY_GIFT + db -1 + +Function5ae4: ; 5ae4 (1:5ae4) + nop + nop + nop + ld a, [wSaveFileExists] + and a + jr nz, .asm_5af0 + ld a, $0 + ret + +.asm_5af0 + ldh a, [hCGB] + cp $1 + ld a, $1 + ret nz + ld a, $0 + call OpenSRAM + ld a, [$abe5] + cp $ff + call CloseSRAM + ld a, $1 + ret z + ld a, $2 + ret + +Function5b0a: ; 5b0a (1:5b0a) + call SetUpMenu +.asm_5b0d + call Function5b27 + call GetScrollingMenuJoypad + ld a, [wMenuJoypad] + cp $2 + jr z, .asm_5b25 + cp $1 + jr z, .asm_5b20 + jr .asm_5b0d + +.asm_5b20 + call PlayClickSFX + and a + ret + +.asm_5b25 + scf + ret + +Function5b27: ; 5b27 (1:5b27) + ld a, [wSaveFileExists] + and a + ret z + xor a + ldh [hBGMapMode], a + call Function5b45 + ld hl, wOptions + ld a, [hl] + push af + set 4, [hl] + call Function5b5b + pop af + ld [wOptions], a + ld a, $1 + ldh [hBGMapMode], a + ret + +Function5b45: ; 5b45 (1:5b45) + call CheckRTCStatus + and $80 + jr nz, .asm_5b57 + hlcoord 0, 12 + ld b, $4 + ld c, $d + call Textbox + ret + +.asm_5b57 + call SpeechTextbox + ret + +Function5b5b: ; 5b5b (1:5b5b) + ld a, [wSaveFileExists] + and a + ret z + call CheckRTCStatus + and $80 + jp nz, Function5b9c + call UpdateTime + hlcoord 1, 13 + ld bc, IncGradGBPalTable_11 + 1 + call ClearBox + call GetWeekday + ld b, a + decoord 1, 14 + call Function5bb8 + decoord 4, 16 + ldh a, [hHours] + ld c, a + farcall PrintHour + ld [hl], $9c + inc hl + ld de, hMinutes + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + ret + +.min + db "min.@" + +Function5b9c: ; 5b9c (1:5b9c) + hlcoord 1, 14 + ld de, .TimeNotSet + call PlaceString + ret + +.TimeNotSet + db "TIME NOT SET@" + +.UnusedText + text_far _ClockTimeUnknownText + db "@" + +Function5bb8: ; 5bb8 (1:5bb8) + push de + ld hl, .Days + ld a, b + call GetNthString + ld d, h + ld e, l + pop hl + call PlaceString + ld h, b + ld l, c + ld de, .Day + call PlaceString + ret + +.Days: + db "SUN@" + db "MON@" + db "TUES@" + db "WEDNES@" + db "THURS@" + db "FRI@" + db "SATUR@" +.Day: + db "DAY@" + +Function5bf7: ; 5bf7 (1:5bf7) + xor a + ldh [hMapAnims], a + call ClearTilemap + call LoadFontsExtra + call Functiond9e + call ClearWindowData + ret + +MainMenu_MysteryGift: + call UpdateTime + farcall Function11934 + farcall Function29dff + ret + +MainMenu_Options: + farcall OptionsMenu + ret + +MainMenu_NewGame: + xor a + ld [wDebugFlags], a + call Function5c3a + call Function5bf7 + call OakSpeech + call InitializeWorld + ld a, $0 + ld [wceec], a + ld a, $f1 + ldh [hMapEntryMethod], a + jp FinishContinueFunction + +Function5c3a: ; 5c3a (1:5c3a) + xor a + ldh [hBGMapMode], a + call Function5c41 + ret + +Function5c41: ; 5c41 (1:5c41) + ld hl, wVirtualOAM + ld bc, wOptions - wVirtualOAM + xor a + call ByteFill + + ld hl, wGameData + ld bc, wGameDataEnd - wGameData + xor a + call ByteFill + + ldh a, [rLY] + ldh [hSecondsBackup], a + call DelayFrame + ldh a, [hRandomSub] + ld [wPlayerID], a + + ldh a, [rLY] + ldh [hSecondsBackup], a + call DelayFrame + ldh a, [hRandomAdd] + ld [wPlayerID + 1], a + + ld hl, wPartyCount + call Function5d15 + + xor a + ld [wCurBox], a + ld [wSavedAtLeastOnce], a + + call Function5d1a + + ld a, BANK(sBoxCount) + call OpenSRAM + ld hl, sBoxCount + call Function5d15 + call CloseSRAM + + ld hl, wNumItems + call Function5d15 + ld hl, wNumKeyItems + call Function5d15 + ld hl, wNumBalls + call Function5d15 + ld hl, wPCItems + call Function5d15 + + xor a + ld [wRoamMon1Species], a + ld [wRoamMon2Species], a + ld [wRoamMon3Species], a + ld a, $ff + ld [wRoamMon1MapGroup], a + ld [wRoamMon2MapGroup], a + ld [wRoamMon3MapGroup], a + ld [wRoamMon1MapNumber], a + ld [wRoamMon2MapNumber], a + ld [wRoamMon3MapNumber], a + + ld a, BANK(s0_abe2) + call OpenSRAM + ld hl, s0_abe2 + xor a + ld [hli], a + dec a + ld [hl], a + call CloseSRAM + + call LoadOrRegenerateLuckyIDNumber + call InitializeMagikarpHouse + + xor a + ld [wMonType], a + + ld [wJohtoBadges], a + ld [wKantoBadges], a + + ld [wCoins], a + ld [wCoins + 1], a + +IF START_MONEY / $10000 + ld a, START_MONEY / $10000 +ENDC + ld [wMoney], a + ld a, START_MONEY / $100 % $100 + ld [wMoney + 1], a + ld a, START_MONEY % $100 + ld [wMoney + 2], a + + xor a + ld [wd961], a + + ld hl, wMomItemTriggerBalance + ld [hl], 2300 / $10000 + inc hl + ld [hl], 2300 / $100 % $100 + inc hl + ld [hl], 2300 % $100 + + call Function5d5d + + farcall InitDecorations + + farcall DeletePartyMonMail + + call ResetGameTime + ret + +Function5d15: ; 5d15 (1:5d15) + xor a + ld [hli], a + dec a + ld [hl], a + ret + +Function5d1a: ; 5d1a (1:5d1a) + ld hl, wBoxNames + ld c, $0 +.asm_5d1f + push hl + ld de, .Box + call CopyName2 + dec hl + ld a, c + inc a + cp 10 + jr c, .asm_5d32 + sub 10 + ld [hl], "1" + inc hl +.asm_5d32 + add "0" + ld [hli], a + ld [hl], "@" + pop hl + ld de, 9 + add hl, de + inc c + ld a, c + cp NUM_BOXES + jr c, .asm_5d1f + ret + +.Box db "BOX@" + +InitializeMagikarpHouse: ; 5d47 (1:5d47) + ld hl, wBestMagikarpLengthFeet + ld a, 3 + ld [hli], a + ld a, 6 + ld [hli], a + ld de, .Ralph + call CopyName2 + ret + +.Ralph db "RALPH@" + +Function5d5d: ; 5d5d (1:5d5d) + ld hl, .Rival + ld de, wRivalName + call .CopyName + ld hl, .Mom + ld de, wMomsName + call .CopyName + ld hl, .Red + ld de, wRedsName + call .CopyName + ld hl, .Green + ld de, wGreensName +.CopyName: + ld bc, NAME_LENGTH + call CopyBytes + ret + +.Rival: db "???@" +.Red: db "RED@" +.Green: db "GREEN@" +.Mom: db "MOM@" + +InitializeWorld: ; 5d97 (1:5d97) + call ShrinkPlayer + farcall SpawnPlayer + farcall InitializeStartDay_ + ret + +LoadOrRegenerateLuckyIDNumber: ; 5da7 (1:5da7) + ld a, $0 + call OpenSRAM + ld a, [wCurDay] + inc a + ld b, a + ld a, [s0_ac68] + cp b + ld a, [s0_ac6a] + ld c, a + ld a, [s0_ac69] + jr z, .asm_5dc9 + ld a, b + ld [s0_ac68], a + call Random + ld c, a + call Random +.asm_5dc9 + ld [wd9e9], a + ld [s0_ac69], a + ld a, c + ld [wd9ea], a + ld [s0_ac6a], a + jp CloseSRAM + +MainMenu_Continue: + farcall TryLoadSaveFile + jr c, .asm_5e41 + call LoadStandardMenuHeader + call DisplaySaveInfoOnContinue + ld a, $1 + ldh [hBGMapMode], a + ld c, 20 + call DelayFrames + call ConfirmContinue + jr nc, .asm_5dfa + call CloseWindow + jr .asm_5e41 + +.asm_5dfa + call Continue_CheckRTC_RestartClock + jr nc, .asm_5e04 + call CloseWindow + jr .asm_5e41 + +.asm_5e04 + ld a, $8 + ld [wMusicFade], a + ld a, MUSIC_NONE % $100 + ld [wMusicFadeID], a + ld a, MUSIC_NONE / $100 + ld [wMusicFadeID + 1], a + call ClearBGPalettes + call CloseWindow + call ClearTilemap + ld c, 20 + call DelayFrames + farcall JumpRoamMons + farcall MysteryGift_CopyReceivedDecosToPC + farcall ClockContinue + ld a, [wd1db] + cp $1 + jr z, .asm_5e42 + ld a, $f2 + ldh [hMapEntryMethod], a + jp FinishContinueFunction + +.asm_5e41 + ret + +.asm_5e42 + ld a, $e + ld [wceec], a + call PostCreditsSpawn + jp FinishContinueFunction + +SpawnAfterRed: ; 5e4d (1:5e4d) + ld a, $1a + ld [wceec], a +PostCreditsSpawn: ; 5e52 (1:5e52) + xor a + ld [wd1db], a + ld a, $f1 + ldh [hMapEntryMethod], a + ret + +ConfirmContinue: ; 5e5b (1:5e5b) + call DelayFrame + call GetJoypad + ld hl, hJoyPressed + bit 0, [hl] + jr nz, .asm_5e6e + bit 1, [hl] + jr z, ConfirmContinue + scf + ret + +.asm_5e6e + ret + +Continue_CheckRTC_RestartClock: ; 5e6f (1:5e6f) + call CheckRTCStatus + and $80 + jr z, .asm_5e82 + ld a, $8 + ld hl, $4021 + rst FarCall + ld a, c + and a + jr z, .asm_5e82 + scf + ret + +.asm_5e82 + xor a + ret + +FinishContinueFunction: ; 5e84 (1:5e84) + xor a + ld [wDontPlayMapMusicOnReload], a + ld hl, wGameTimerPause + set 0, [hl] + farcall OverworldLoop + ld a, [wd1db] + cp $2 + jr z, .asm_5e9d + jp Reset + +.asm_5e9d + call SpawnAfterRed + jr FinishContinueFunction + +DisplaySaveInfoOnContinue: ; 5ea2 (1:5ea2) + call CheckRTCStatus + and $80 + jr z, .asm_5eb0 + lb de, 4, 8 + call DisplayContinueDataWithRTCError + ret + +.asm_5eb0 + lb de, 4, 8 + call DisplayNormalContinueData + ret + +DisplayNormalContinueData: ; 5eb7 (1:5eb7) + call Continue_LoadMenuHeader + call Continue_DisplayBadgesDex + call Continue_PrintGameTime + call LoadFontsExtra + call UpdateSprites + ret + +DisplayContinueDataWithRTCError: ; 5ec7 (1:5ec7) + call Continue_LoadMenuHeader + call Continue_DisplayBadgesDex + call Continue_UnknownGameTime + call LoadFontsExtra + call UpdateSprites + ret + +Continue_LoadMenuHeader: ; 5ed7 (1:5ed7) + xor a + ldh [hBGMapMode], a + ld hl, .MenuDataHeader_Dex + CheckFlag ENGINE_POKEDEX + jr nz, .asm_5ee7 + ld hl, .MenuDataHeader_NoDex +.asm_5ee7 + call _OffsetMenuHeader + call MenuBox + call PlaceVerticalMenuItems + ret + +.MenuDataHeader_Dex: + db $40 + db 00, 00 + db 09, 15 + dw .MenuData2_Dex + db 1 + +.MenuData2_Dex + db $00 + db 4 + db "PLAYER @" + db "BADGES@" + db "#DEX@" + db "TIME@" + +.MenuDataHeader_NoDex: + db $40 + db 00, 00 + db 09, 15 + dw .MenuData2_NoDex + db 1 + +.MenuData2_NoDex + db $00 + db 4 + db "PLAYER @" + db "BADGES@" + db " @" + db "TIME@" + +Continue_DisplayBadgesDex: ; 5f36 (1:5f36) + call MenuBoxCoord2Tile + push hl + decoord 13, 4, 0 + add hl, de + call Continue_DisplayBadgeCount + pop hl + push hl + decoord 12, 6, 0 + add hl, de + call Continue_DisplayPokedexNumCaught + pop hl + ret + +Continue_PrintGameTime: ; 5f4c (1:5f4c) + decoord 9, 8, 0 + add hl, de + call Continue_DisplayGameTime + ret + +Continue_UnknownGameTime: ; 5f54 (1:5f54) + decoord 9, 8, 0 + add hl, de + ld de, .three_question_marks + call PlaceString + ret + +.three_question_marks + db " ???@" + +Continue_DisplayBadgeCount: ; 5f64 (1:5f64) + push hl + ld hl, wJohtoBadges + ld b, $2 + call CountSetBits + pop hl + ld de, wd151 + lb bc, 1, 2 + jp PrintNum + +Continue_DisplayPokedexNumCaught: ; 5f77 (1:5f77) + CheckFlag ENGINE_POKEDEX + ret z + push hl + ld hl, wPokedexCaught +IF NUM_POKEMON % 8 + ld b, NUM_POKEMON / 8 + 1 +ELSE + ld b, NUM_POKEMON / 8 +ENDC + call CountSetBits + pop hl + ld de, wd151 + lb bc, 1, 3 + jp PrintNum + +Continue_DisplayGameTime: ; 5f90 (1:5f90) + ld de, wGameTimeHours + lb bc, 2, 3 + call PrintNum + ld [hl], $6d + inc hl + ld de, wGameTimeMinutes + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + jp PrintNum + +OakSpeech: ; 5fa5 (1:5fa5) + farcall InitClock ; What time is it? + + call RotateFourPalettesLeft + call ClearTilemap + + ld de, MUSIC_ROUTE_30 + call PlayMusic + + call RotateFourPalettesRight + call RotateThreePalettesRight + + xor a + ld [wCurPartySpecies], a + ld a, POKEMON_PROF + ld [wTrainerClass], a + call Intro_PrepTrainerPic + + ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + + call Intro_FadeInFrontpic + + ld hl, OakText1 + call PrintText + + call RotateThreePalettesRight + call ClearTilemap + + ld a, MARILL + ld [wCurSpecies], a + ld [wCurPartySpecies], a + call GetBaseData + hlcoord 6, 4 + hlcoord 6, 4 ; TriHard + call PrepMonFrontpic + + xor a + ld [wTempMonDVs], a + ld [wTempMonDVs + 1], a + ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + + call Intro_WipeInFrontpic + + ld hl, OakText2 + call PrintText + + ld hl, OakText4 + call PrintText + + call RotateThreePalettesRight + call ClearTilemap + + xor a + ld [wCurPartySpecies], a + ld a, POKEMON_PROF + ld [wTrainerClass], a + call Intro_PrepTrainerPic + + ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + + call Intro_FadeInFrontpic + + ld hl, OakText5 + call PrintText + + call RotateThreePalettesRight + call ClearTilemap + + xor a + ld [wCurPartySpecies], a + ld a, CAL + ld [wTrainerClass], a + call Intro_PrepTrainerPic + + ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + + call Intro_FadeInFrontpic + + ld hl, OakText6 + call PrintText + + call NamePlayer + + ld hl, OakText7 + call PrintText + ret + +OakText1: + text_far _OakText1 + db "@" + +OakText2: + text_far _OakText2 + text_asm + ld a, MARILL + call PlayMonCry + call WaitSFX + ld hl, OakText3 ; $606c + ret + +OakText3: + text_far _OakText3 + db "@" + +OakText4: + text_far _OakText4 + db "@" + +OakText5: + text_far _OakText5 + db "@" + +OakText6: + text_far _OakText6 + db "@" + +OakText7: + text_far _OakText7 + db "@" + +NamePlayer: ; 6085 (1:6085) + call MovePlayerPicRight + ld hl, .PlayerNamingChoices ; $60d9 + call SelectPresetName + ld a, [wMenuCursorY] + dec a + jr z, .NewName + ld de, wPlayerName + call StorePlayerName + farcall ApplyMonOrTrainerPals + call MovePlayerPicLeft + ret + +.NewName + ld b, $1 + ld de, wPlayerName + farcall NamingScreen + call RotateThreePalettesRight + call ClearTilemap + call LoadFontsExtra + call WaitBGMap + xor a + ld [wCurPartySpecies], a + ld a, CAL + ld [wTrainerClass], a + call Intro_PrepTrainerPic + ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS + call GetSGBLayout + call RotateThreePalettesLeft + ld hl, wPlayerName + ld de, .GoldSilver + call InitName + ret + +.PlayerNamingChoices: + db $40 + db 00, 00 + db 11, 10 + dw .MenuData2 + db 1 + +.MenuData2: + db $91 + db 5 + db "NEW NAME@" +.GoldSilver: +IF DEF(GOLD) + db "GOLD@" + db "HIRO@" + db "TAYLOR@" + db "KARL@" +ENDC +IF DEF(SILVER) + db "SILVER@" + db "KAMON@" + db "OSCAR@" + db "MAX@" +ENDC + db 2, "NAME@" + +SelectPresetName: ; 6108 (1:6108) + call LoadMenuHeader + call VerticalMenu + ld a, [wMenuCursorY] + dec a + call CopyNameFromMenu + call CloseWindow + ret + +StorePlayerName: ; 6119 (1:6119) + ld hl, wStringBuffer2 + ld bc, NAME_LENGTH + call CopyBytes + ret + +ShrinkPlayer: ; 6123 (1:6123) + ldh a, [hROMBank] + push af + + ld a, 0 << 7 | 32 ; fade out + ld [wMusicFade], a + ld de, MUSIC_NONE + ld a, e + ld [wMusicFadeID], a + ld a, d + ld [wMusicFadeID + 1], a + + ld de, SFX_ESCAPE_ROPE + call PlaySFX + pop af + rst Bankswitch + + ld c, 8 + call DelayFrames + + ld hl, Shrink1Pic + ld b, BANK(Shrink1Pic) + call ShrinkFrame + + ld c, 8 + call DelayFrames + + ld hl, Shrink2Pic + ld b, BANK(Shrink2Pic) + call ShrinkFrame + + ld c, 8 + call DelayFrames + + hlcoord 6, 5 + ld b, 7 + ld c, 7 + call ClearBox + + ld c, 3 + call DelayFrames + + call Intro_PlacePlayerSprite + call LoadFontsExtra + + ld c, 50 + call DelayFrames + + call RotateThreePalettesRight + call ClearTilemap + ret + +MovePlayerPicRight: ; 617e (1:617e) + hlcoord 6, 4 + ld de, $1 + jr MovePlayerPic + +MovePlayerPicLeft: ; 6186 (1:6186) + hlcoord 13, 4 + ld de, -1 +MovePlayerPic + ld c, $8 +.asm_618e + push bc + push hl + push de + xor a + ldh [hBGMapMode], a + lb bc, 7, 7 + predef PlaceGraphic + xor a + ldh [hBGMapThird], a + call WaitBGMap + call DelayFrame + pop de + pop hl + add hl, de + pop bc + dec c + jr nz, .asm_618e + ret + +Intro_FadeInFrontpic: ; 61ad (1:61ad) + ld hl, IntroFadePalettes + ld b, $6 +.asm_61b2 + ld a, [hli] + call DmgToCgbBGPals + ld c, $a + call DelayFrames + dec b + jr nz, .asm_61b2 + ret + +IntroFadePalettes: + db %01010100 + db %10101000 + db %11111100 + db %11111000 + db %11110100 + db %11100100 + +Intro_WipeInFrontpic: ; 61c5 (1:61c5) + ld a, $77 + ldh [hWX], a + call DelayFrame + ld a, $e4 + call DmgToCgbBGPals +.asm_61d1 + call DelayFrame + ldh a, [hWX] + sub $8 + cp $ff + ret z + ldh [hWX], a + jr .asm_61d1 + +Intro_PrepTrainerPic: ; 61df, 61e0 (1:61df, 1:61e0) + ld de, $9000 + ld a, $14 + ld hl, $58a0 + rst FarCall + xor a + ldh [hGraphicStartTile], a + hlcoord 6, 4 + lb bc, 7, 7 + predef PlaceGraphic + ret + +ShrinkFrame: ; 61f7 (1:61f7) + ld de, $9000 + ld c, $31 + predef DecompressGet2bpp + xor a + ldh [hGraphicStartTile], a + hlcoord 6, 4 + lb bc, 7, 7 + predef PlaceGraphic + ret + +Intro_PlacePlayerSprite: ; 6210 (1:6210) + ld de, PlayerSpriteGFX + lb bc, BANK(PlayerSpriteGFX), 12 + ld hl, $8000 + call Request2bpp + ld hl, wVirtualOAM + ld de, .OAMData + ld a, [de] + inc de + ld c, a +.asm_6225 + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + xor a + ld [hli], a + dec c + jr nz, .asm_6225 + ret + +.OAMData + db 4 + db 9 * 8 + 4, 9 * 8, 0 + db 9 * 8 + 4, 10 * 8, 1 + db 10 * 8 + 4, 9 * 8, 2 + db 10 * 8 + 4, 10 * 8, 3 + +IntroSequence: ; 6241 (1:6241) + callfar Copyright_GFPresents + jr c, StartTitleScreen + callfar GoldSilverIntro +StartTitleScreen: + call InitTitleScreen + call DelayFrame +.asm_6255 + call TitleScreenFrame + jr nc, .asm_6255 + call ClearSprites + call ClearBGPalettes + ld hl, rLCDC + res 2, [hl] + call ClearTilemap + xor a + ldh [hLCDCPointer], a + ld b, $8 + call GetSGBLayout + call UpdateTimePals + ld a, [wce64] + cp $5 + jr c, .asm_627b + xor a +.asm_627b + ld e, a + ld d, $0 + ld hl, .Jumptable + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.Jumptable + dw MainMenu_ + dw DeleteSaveData + dw IntroSequence + dw IntroSequence + dw ResetClock + +InitTitleScreen: ; 6291 (1:6291) + call ClearBGPalettes + xor a + ld [wTimeOfDayPal], a + ld de, MUSIC_NONE + call PlayMusic + call ClearTilemap + call DisableLCD + call ClearSprites + xor a + ldh [hBGMapMode], a + ldh [hMapAnims], a + ldh [hSCY], a + ldh [hSCX], a + ld hl, $8000 + ld bc, $2000 + xor a + call ByteFill + farcall ClearAnimatedObjectBuffer + + ld hl, TitleScreenGFX1 + ld de, $9000 + ld a, BANK(TitleScreenGFX1) + call FarDecompress + + ld hl, TitleScreenGFX2 + ld de, $8800 + ld a, BANK(TitleScreenGFX2) + call FarDecompress + + ld hl, TitleScreenGFX4 + ld de, $8000 + ld a, BANK(TitleScreenGFX4) + call FarDecompress + + ld hl, TitleScreenGFX3 + ld de, $8f80 + ld bc, $80 + ld a, BANK(TitleScreenGFX3) + call FarCopyBytes + + call Function636e + call Function63b6 + ld hl, wAnimatedObjectDynamicVTileOffsets + xor a + ld [hli], a + ld [hl], a + ld hl, rLCDC + set 2, [hl] + call EnableLCD + xor a + ld hl, wce63 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld de, $6058 + ld a, $2c ; HO-OH + call InitSpriteAnimStruct + ld hl, wAnimatedObjectStruct1 + ld de, wAnimatedObjectStruct10 + ld bc, $a + call CopyBytes + ld hl, wAnimatedObjectStruct1 + ld [hl], $0 + ld hl, wc700 + ld bc, $90 + xor a + call ByteFill + ld a, $43 + ldh [hLCDCPointer], a + ld b, $c + call GetSGBLayout + call Function6341 + ld de, MUSIC_TITLE + call PlayMusic + ret + +Function6341: ; 6341 (1:6341) + ldh a, [hCGB] + and a + jr nz, .asm_6365 + ldh a, [hSGB] + and a + jr nz, .asm_6358 + ld a, $d8 + ldh [rBGP], a +IF DEF(GOLD) + ld a, $ff + ldh [rOBP0], a + ld a, $f8 +ENDC +IF DEF(SILVER) + ld a, $f0 + ldh [rOBP0], a + ld a, $f0 +ENDC + ldh [rOBP1], a + ret + +.asm_6358 + ld a, $e4 + ldh [rBGP], a +IF DEF(GOLD) + ld a, $ff + ldh [rOBP0], a + ld a, $e4 +ENDC +IF DEF(SILVER) + ld a, $f0 + ldh [rOBP0], a + ld a, $e0 +ENDC + ldh [rOBP1], a + ret + +.asm_6365 + ld a, $e4 + call DmgToCgbBGPals +IF DEF(SILVER) + ld a, $e0 +ENDC + call DmgToCgbObjPal0 + ret + +Function636e: ; 636e (1:636e) + ldh a, [hCGB] + and a + ret z + ld a, $1 + ldh [rVBK], a + ld hl, $9800 + ld bc, $240 + xor a + call ByteFill + ld hl, $9800 + ld bc, $714 + ld a, $1 + call Function63a6 + ld hl, $98c5 + ld bc, $10a + ld a, $3 + call Function63a6 + ld hl, $9980 + ld bc, $a0 + ld a, $4 + call ByteFill + ld a, $0 + ldh [rVBK], a + ret + +Function63a6: ; 63a6 (1:63a6) + push bc + push hl +.asm_63a8 + ld [hli], a + dec c + jr nz, .asm_63a8 + pop hl + ld bc, $20 + add hl, bc + pop bc + dec b + jr nz, Function63a6 + ret + +Function63b6: ; 63b6 (1:63b6) + ld hl, GSIntroTilemap ; $4616 + ld de, $9800 +.asm_63bc + ld a, BANK(GSIntroTilemap) ; $26 + call GetFarByte + cp $ff + jr z, .asm_63ca + inc hl + ld [de], a + inc de + jr .asm_63bc + +.asm_63ca + ldh a, [hCGB] + and a + ret nz + ld hl, $9960 + ld bc, $20 + ld a, $50 + call ByteFill + ret + +TitleScreenFrame: ; 63da (1:63da) + call Function63fe + ld a, [wce63] + bit 7, a + jr nz, .asm_63fc + call Function640f + ld a, $1 + ldh [hOAMUpdate], a + farcall AnimatedObjects_PlayFrame + xor a + ldh [hOAMUpdate], a + call Function64b1 + call DelayFrame + and a + ret + +.asm_63fc + scf + ret + +Function63fe: ; 63fe (1:63fe) +IF DEF(GOLD) + ldh a, [hVBlankCounter] + and $7 + ret nz +ENDC + ld hl, wc75f + ld a, [hl] + dec a + ld bc, $28 + call ByteFill + ret + +Function640f: ; 640f (1:640f) + ld e, a + ld d, $0 + ld hl, .Jumptable ; $641b + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.Jumptable + dw Function6426 + dw Function6434 + dw Function648b + +Function6421: + ld hl, wce63 + inc [hl] + ret + +Function6426: + ld hl, wce63 + inc [hl] + ld hl, wce65 +IF DEF(GOLD) + ld de, $13c0 +ENDC +IF DEF(SILVER) + ld de, $1140 +ENDC + ld [hl], e + inc hl + ld [hl], d + ret + +Function6434: + ld hl, wce65 + ld e, [hl] + inc hl + ld d, [hl] + ld a, e + or d + jr z, .asm_646b + dec de + ld [hl], d + dec hl + ld [hl], e + call GetJoypad + ld hl, hJoyDown + ld a, [hl] + and D_UP + B_BUTTON + SELECT + cp D_UP + B_BUTTON + SELECT + jr z, .asm_6460 + ld a, [hl] + and D_DOWN + B_BUTTON + SELECT + cp D_DOWN + B_BUTTON + SELECT + jr z, .asm_6480 + ld a, [hl] + and START | A_BUTTON + jr nz, .asm_645c + ret + +.asm_645c + ld a, $0 + jr .asm_6462 + +.asm_6460 + ld a, $1 +.asm_6462 + ld [wce64], a + ld hl, wce63 + set 7, [hl] + ret + +.asm_646b + ld hl, wce63 + inc [hl] + xor a + ld [wMusicFadeID], a + ld [wMusicFadeID + 1], a + ld hl, wMusicFade + ld [hl], $8 + ld hl, wce65 + inc [hl] + ret + +.asm_6480 + ld a, $4 + ld [wce64], a + ld hl, wce63 + set 7, [hl] + ret + +Function648b: + ld hl, wce65 + inc [hl] + ld a, [wMusicFade] + and a + ret nz + ld a, $2 + ld [wce64], a + ld hl, wce63 + set 7, [hl] + ret + +DeleteSaveData: + farcall DeleteSaveData_ + jp Init + +ResetClock: + farcall ResetClock_ + jp Init + +Function64b1: ; 64b1 (1:64b1) + ld a, [wce65] + and $3 + ret nz +IF DEF(GOLD) + ld bc, wAnimatedObjectStruct10Index + ld hl, $a + add hl, bc + ld l, [hl] + ld h, $0 + add hl, hl + add hl, hl + ld de, .Data_64e0 + add hl, de + ld a, [wce65] + and $4 + srl a + srl a + ld e, a + ld d, $0 + add hl, de + add hl, de + ld a, [hli] + and a + ret z + ld e, a + ld d, [hl] +ENDC + +IF DEF(SILVER) + ld de, $7c58 +ENDC + ld a, $f + call InitSpriteAnimStruct + ret + +IF DEF(GOLD) +.Data_64e0: + db $5c, $50, $00, $00 + db $5c, $68, $5c, $58 + db $5c, $68, $5c, $78 + db $5c, $88, $5c, $78 + db $00, $00, $5c, $78 + db $00, $00, $5c, $58 +ENDC + +Copyright: + call ClearTilemap + call LoadFontsExtra + ld de, CopyrightGFX + ld hl, vTiles2 tile $60 + lb bc, BANK(CopyrightGFX), 30 + call Request2bpp + hlcoord 2, 7 + ld de, CopyrightString + jp PlaceString + +CopyrightString: + db $60, $61, $62, $63, $7a, $7b, $7c, $7d + db $65, $66, $67, $68, $69, $6a + next $60, $61, $62, $63, $7a, $7b, $7c, $7d + db $6b, $6c, $6d, $6e, $6f, $70, $71, $72 + next $60, $61, $62, $63, $7a, $7b, $7c, $7d + db $73, $74, $75, $76, $77, $78, $79, $71, $72 + db "@" + +GameInit:: ; 6545 (1:6545) + call ClearWindowData + ld a, $5 + ld hl, $4f60 + rst FarCall + jp IntroSequence diff --git a/engine/overworld/init_map.asm b/engine/overworld/init_map.asm new file mode 100644 index 00000000..07cd07de --- /dev/null +++ b/engine/overworld/init_map.asm @@ -0,0 +1,91 @@ +ReanchorBGMap_NoOAMUpdate:: ; 6551 (1:6551) + call DelayFrame + ldh a, [hOAMUpdate] + push af + ld a, $1 + ldh [hOAMUpdate], a + ldh a, [hBGMapMode] + push af + xor a + ldh [hBGMapMode], a + call Function656b + pop af + ldh [hBGMapMode], a + pop af + ldh [hOAMUpdate], a + ret + +Function656b: ; 656b (1:656b) + xor a + ldh [hLCDCPointer], a + ldh [hBGMapMode], a + ld hl, wd565 + set 7, [hl] + res 2, [hl] + ld a, $90 + ldh [hWY], a + call OverworldTextModeSwitch + ld a, $9c + call .LoadBGMapAddrIntoHRAM + call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap + xor a + ldh [hBGMapMode], a + ldh [hWY], a + ld a, $98 + call .LoadBGMapAddrIntoHRAM + call .WaitTransfer + xor a + ld [wd05b], a + ld a, $98 + ld [wd05c], a + xor a + ldh [hSCX], a + ldh [hSCY], a + call ApplyBGMapAnchorToObjects + ret + +.LoadBGMapAddrIntoHRAM: ; 65a5 (1:65a5) + ldh [hBGMapAddress + 1], a + xor a + ldh [hBGMapAddress], a + ret + +.WaitTransfer: ; 65ab (1:65ab) + ldh a, [hBGMapMode] + push af + xor a + ldh [hBGMapMode], a + ldh a, [hOAMUpdate] + push af + ld a, $1 + ldh [hOAMUpdate], a + ld a, $3 + ldh [hVBlankCounter + 1], a +.asm_65bc + call DelayFrame + ldh a, [hVBlankCounter + 1] + and a + jr nz, .asm_65bc + pop af + ldh [hOAMUpdate], a + pop af + ldh [hBGMapMode], a + ret + +LoadFonts_NoOAMUpdate:: ; 65cb (1:65cb) + ldh a, [hOAMUpdate] + push af + ld a, $1 + ldh [hOAMUpdate], a + call .LoadGFX + pop af + ldh [hOAMUpdate], a + ret + +.LoadGFX: ; 65d9 (1:65d9) + call LoadFontsExtra + ld a, $90 + ldh [hWY], a + call SafeUpdateSprites + call Functiond9e + ret \ No newline at end of file diff --git a/engine/overworld/map_objects.asm b/engine/overworld/map_objects.asm index 774d4cd8..392cb86e 100755 --- a/engine/overworld/map_objects.asm +++ b/engine/overworld/map_objects.asm @@ -1,5 +1,6 @@ -INCLUDE "engine/facings.asm" -SpriteMovementData:: INCLUDE "data/map_objects.asm" +INCLUDE "data/sprites/facings.asm" + +INCLUDE "data/sprites/map_objects.asm" DeleteMapObject:: ; 4358 (1:4358) push bc @@ -1370,7 +1371,7 @@ Function597a: ; 597a (1:597a) ld l, a ld h, $0 add hl, hl - ld bc, PushOAMEnd + ld bc, Facings add hl, bc ld a, [hli] ld h, [hl] diff --git a/engine/pokemon/correct_nick_errors.asm b/engine/pokemon/correct_nick_errors.asm new file mode 100644 index 00000000..c7b6ff39 --- /dev/null +++ b/engine/pokemon/correct_nick_errors.asm @@ -0,0 +1,53 @@ +CorrectNickErrors:: ; 677e (1:677e) + push bc + push de + ld b, MON_NAME_LENGTH +.checkchar + ld a, [de] + cp "@" + jr z, .done + ld hl, .textcommands + dec hl +.loop + inc hl + ld a, [hl] + cp $ff + jr z, .next + ld a, [de] + cp [hl] + inc hl + jr c, .loop + cp [hl] + jr nc, .loop + ld a, "?" + ld [de], a + jr .loop + +.next + inc de + dec b + jr nz, .checkchar + pop de + push de + ld a, "?" + ld [de], a + inc de + ld a, "@" + ld [de], a +.done + pop de + pop bc + ret + +.textcommands +; table defining which characters are actually text commands +; format: + ; ≥ < + db "", $04 + 1 + db "", $18 + 1 + db $1d, "%" + 1 + db $35, "" + 1 + db "", "" + 1 + db $49, "" + 1 + db "", "┘" + 1 + db -1 ; end \ No newline at end of file diff --git a/engine/pokemon/learn.asm b/engine/pokemon/learn.asm new file mode 100644 index 00000000..b28f754b --- /dev/null +++ b/engine/pokemon/learn.asm @@ -0,0 +1,220 @@ +LearnMove: + call LoadTilemapToTempTilemap + ld a, [wCurPartyMon] + ld hl, wPartyMon1Nickname + call GetNick + ld hl, wStringBuffer1 + ld de, wMonOrItemNameBuffer + ld bc, $b + call CopyBytes +.loop + ld hl, wPartyMon1Moves + ld bc, $30 + ld a, [wCurPartyMon] + call AddNTimes + ld d, h + ld e, l + ld b, $4 +.asm_660f + ld a, [hl] + and a + jr z, .asm_6643 + inc hl + dec b + jr nz, .asm_660f + push de + call .AlreadyHaveFourMoves + pop de + jp c, .ConfirmStopLearning + push hl + push de + ld [wd151], a + ld b, a + ld a, [wBattleMode] + and a + jr z, .asm_6638 + ld a, [wcbd3] + cp b + jr nz, .asm_6638 + xor a + ld [wcbd3], a + ld [wcb53], a +.asm_6638 + call GetMoveName + ld hl, Text_1_2_and_Poof + call PrintText + pop de + pop hl +.asm_6643 + ld a, [wPutativeTMHMMove] + ld [hl], a + ld bc, $15 + add hl, bc + push hl + push de + dec a + ld hl, Moves + MOVE_PP ; $5b03 + ld bc, $7 + call AddNTimes + ld a, BANK(Moves) + call GetFarByte + pop de + pop hl + ld [hl], a + ld a, [wBattleMode] + and a + jp z, .LearnedMove + ld a, [wCurPartyMon] + ld b, a + ld a, [wCurBattleMon] + cp b + jp nz, .LearnedMove + ld a, [wPlayerSubStatus5] + bit 3, a + jp nz, .LearnedMove + ld h, d + ld l, e + ld de, wBattleMonMoves + ld bc, $4 + call CopyBytes + ld bc, $11 + add hl, bc + ld de, wBattleMonPP + ld bc, $4 + call CopyBytes + jp .LearnedMove + +.ConfirmStopLearning: ; 6694 (1:6694) + ld hl, Text_StopLearning + call PrintText + call YesNoBox + jp c, .loop + ld hl, Text_DidNotLearn + call PrintText + ld b, $0 + ret + +.LearnedMove: ; 66a9 (1:66a9) + ld hl, Text_LearnedMove + call PrintText + ld b, $1 + ret + +.AlreadyHaveFourMoves: ; 66b2 (1:66b2) + push hl + ld hl, Text_TryingToLearn + call PrintText + call YesNoBox + pop hl + ret c + ld bc, -4 + add hl, bc + push hl + ld de, wListMoves_MoveIndicesBuffer + ld bc, $4 + call CopyBytes + pop hl +.asm_66cd + push hl + ld hl, Text_ForgetWhich + call PrintText + hlcoord 5, 2 + ld b, $8 + ld c, $d + call Textbox + hlcoord 7, 4 + ld a, $28 + ld [wBuffer1], a + predef ListMoves + ld a, $4 + ld [w2DMenuCursorInitY], a + ld a, $6 + ld [w2DMenuCursorInitX], a + ld a, [wNumMoves] + inc a + ld [w2DMenuNumRows], a + ld a, $1 + ld [w2DMenuNumCols], a + ld [wMenuCursorY], a + ld [wcee1], a + ld a, $3 + ld [wMenuJoypadFilter], a + ld a, $20 + ld [w2DMenuFlags1], a + xor a + ld [w2DMenuFlags2], a + ld a, $20 + ld [w2DMenuCursorOffsets], a + call StaticMenuJoypad + push af + call SafeLoadTempTilemapToTilemap + pop af + pop hl + bit 1, a + jr nz, .asm_6748 + push hl + ld a, [wMenuCursorY] + dec a + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + push af + push bc + call IsHMMove + pop bc + pop de + ld a, d + jr c, .asm_673f + pop hl + add hl, bc + and a + ret + +.asm_673f + ld hl, Text_CantForgetHM + call PrintText + pop hl + jr .asm_66cd + +.asm_6748 + scf + ret + +Text_LearnedMove: + text_far Text_LearnedMove_ + db "@" + +Text_ForgetWhich: + text_far Text_ForgetWhich_ + db "@" + +Text_StopLearning: + text_far Text_StopLearning_ + db "@" + +Text_DidNotLearn: + text_far Text_DidNotLearn_ + db "@" + +Text_TryingToLearn: + text_far Text_TryingToLearn_ + db "@" + +Text_1_2_and_Poof: + text_far Text_1_2_and_Poof_ + text_asm + push de + ld de, SFX_SWITCH_POKEMON + call PlaySFX + pop de + ld hl, .PoofForgot + ret + +.PoofForgot: + text_far Text_PoofForgot_ + db "@" + +Text_CantForgetHM: + text_far Text_CantForgetHM_ + db "@" diff --git a/engine/title.asm b/engine/title.asm deleted file mode 100755 index 94863c56..00000000 --- a/engine/title.asm +++ /dev/null @@ -1,450 +0,0 @@ -IntroSequence: ; 6241 (1:6241) - callfar Copyright_GFPresents - jr c, StartTitleScreen - callfar GoldSilverIntro -StartTitleScreen: - call InitTitleScreen - call DelayFrame -.asm_6255 - call TitleScreenFrame - jr nc, .asm_6255 - call ClearSprites - call ClearBGPalettes - ld hl, rLCDC - res 2, [hl] - call ClearTilemap - xor a - ldh [hLCDCPointer], a - ld b, $8 - call GetSGBLayout - call UpdateTimePals - ld a, [wce64] - cp $5 - jr c, .asm_627b - xor a -.asm_627b - ld e, a - ld d, $0 - ld hl, .Jumptable - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl - -.Jumptable - dw MainMenu_ - dw DeleteSaveData - dw IntroSequence - dw IntroSequence - dw ResetClock - -InitTitleScreen: ; 6291 (1:6291) - call ClearBGPalettes - xor a - ld [wTimeOfDayPal], a - ld de, MUSIC_NONE - call PlayMusic - call ClearTilemap - call DisableLCD - call ClearSprites - xor a - ldh [hBGMapMode], a - ldh [hMapAnims], a - ldh [hSCY], a - ldh [hSCX], a - ld hl, $8000 - ld bc, $2000 - xor a - call ByteFill - farcall ClearAnimatedObjectBuffer - - ld hl, TitleScreenGFX1 - ld de, $9000 - ld a, BANK(TitleScreenGFX1) - call FarDecompress - - ld hl, TitleScreenGFX2 - ld de, $8800 - ld a, BANK(TitleScreenGFX2) - call FarDecompress - - ld hl, TitleScreenGFX4 - ld de, $8000 - ld a, BANK(TitleScreenGFX4) - call FarDecompress - - ld hl, TitleScreenGFX3 - ld de, $8f80 - ld bc, $80 - ld a, BANK(TitleScreenGFX3) - call FarCopyBytes - - call Function636e - call Function63b6 - ld hl, wAnimatedObjectDynamicVTileOffsets - xor a - ld [hli], a - ld [hl], a - ld hl, rLCDC - set 2, [hl] - call EnableLCD - xor a - ld hl, wce63 - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld de, $6058 - ld a, $2c ; HO-OH - call InitSpriteAnimStruct - ld hl, wAnimatedObjectStruct1 - ld de, wAnimatedObjectStruct10 - ld bc, $a - call CopyBytes - ld hl, wAnimatedObjectStruct1 - ld [hl], $0 - ld hl, wc700 - ld bc, $90 - xor a - call ByteFill - ld a, $43 - ldh [hLCDCPointer], a - ld b, $c - call GetSGBLayout - call Function6341 - ld de, MUSIC_TITLE - call PlayMusic - ret - -Function6341: ; 6341 (1:6341) - ldh a, [hCGB] - and a - jr nz, .asm_6365 - ldh a, [hSGB] - and a - jr nz, .asm_6358 - ld a, $d8 - ldh [rBGP], a -IF DEF(GOLD) - ld a, $ff - ldh [rOBP0], a - ld a, $f8 -ENDC -IF DEF(SILVER) - ld a, $f0 - ldh [rOBP0], a - ld a, $f0 -ENDC - ldh [rOBP1], a - ret - -.asm_6358 - ld a, $e4 - ldh [rBGP], a -IF DEF(GOLD) - ld a, $ff - ldh [rOBP0], a - ld a, $e4 -ENDC -IF DEF(SILVER) - ld a, $f0 - ldh [rOBP0], a - ld a, $e0 -ENDC - ldh [rOBP1], a - ret - -.asm_6365 - ld a, $e4 - call DmgToCgbBGPals -IF DEF(SILVER) - ld a, $e0 -ENDC - call DmgToCgbObjPal0 - ret - -Function636e: ; 636e (1:636e) - ldh a, [hCGB] - and a - ret z - ld a, $1 - ldh [rVBK], a - ld hl, $9800 - ld bc, $240 - xor a - call ByteFill - ld hl, $9800 - ld bc, $714 - ld a, $1 - call Function63a6 - ld hl, $98c5 - ld bc, $10a - ld a, $3 - call Function63a6 - ld hl, $9980 - ld bc, $a0 - ld a, $4 - call ByteFill - ld a, $0 - ldh [rVBK], a - ret - -Function63a6: ; 63a6 (1:63a6) - push bc - push hl -.asm_63a8 - ld [hli], a - dec c - jr nz, .asm_63a8 - pop hl - ld bc, $20 - add hl, bc - pop bc - dec b - jr nz, Function63a6 - ret - -Function63b6: ; 63b6 (1:63b6) - ld hl, GSIntroTilemap ; $4616 - ld de, $9800 -.asm_63bc - ld a, BANK(GSIntroTilemap) ; $26 - call GetFarByte - cp $ff - jr z, .asm_63ca - inc hl - ld [de], a - inc de - jr .asm_63bc - -.asm_63ca - ldh a, [hCGB] - and a - ret nz - ld hl, $9960 - ld bc, $20 - ld a, $50 - call ByteFill - ret - -TitleScreenFrame: ; 63da (1:63da) - call Function63fe - ld a, [wce63] - bit 7, a - jr nz, .asm_63fc - call Function640f - ld a, $1 - ldh [hOAMUpdate], a - farcall AnimatedObjects_PlayFrame - xor a - ldh [hOAMUpdate], a - call Function64b1 - call DelayFrame - and a - ret - -.asm_63fc - scf - ret - -Function63fe: ; 63fe (1:63fe) -IF DEF(GOLD) - ldh a, [hVBlankCounter] - and $7 - ret nz -ENDC - ld hl, wc75f - ld a, [hl] - dec a - ld bc, $28 - call ByteFill - ret - -Function640f: ; 640f (1:640f) - ld e, a - ld d, $0 - ld hl, .Jumptable ; $641b - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl - -.Jumptable - dw Function6426 - dw Function6434 - dw Function648b - -Function6421: - ld hl, wce63 - inc [hl] - ret - -Function6426: - ld hl, wce63 - inc [hl] - ld hl, wce65 -IF DEF(GOLD) - ld de, $13c0 -ENDC -IF DEF(SILVER) - ld de, $1140 -ENDC - ld [hl], e - inc hl - ld [hl], d - ret - -Function6434: - ld hl, wce65 - ld e, [hl] - inc hl - ld d, [hl] - ld a, e - or d - jr z, .asm_646b - dec de - ld [hl], d - dec hl - ld [hl], e - call GetJoypad - ld hl, hJoyDown - ld a, [hl] - and D_UP + B_BUTTON + SELECT - cp D_UP + B_BUTTON + SELECT - jr z, .asm_6460 - ld a, [hl] - and D_DOWN + B_BUTTON + SELECT - cp D_DOWN + B_BUTTON + SELECT - jr z, .asm_6480 - ld a, [hl] - and START | A_BUTTON - jr nz, .asm_645c - ret - -.asm_645c - ld a, $0 - jr .asm_6462 - -.asm_6460 - ld a, $1 -.asm_6462 - ld [wce64], a - ld hl, wce63 - set 7, [hl] - ret - -.asm_646b - ld hl, wce63 - inc [hl] - xor a - ld [wMusicFadeID], a - ld [wMusicFadeID + 1], a - ld hl, wMusicFade - ld [hl], $8 - ld hl, wce65 - inc [hl] - ret - -.asm_6480 - ld a, $4 - ld [wce64], a - ld hl, wce63 - set 7, [hl] - ret - -Function648b: - ld hl, wce65 - inc [hl] - ld a, [wMusicFade] - and a - ret nz - ld a, $2 - ld [wce64], a - ld hl, wce63 - set 7, [hl] - ret - -DeleteSaveData: - farcall DeleteSaveData_ - jp Init - -ResetClock: - farcall ResetClock_ - jp Init - -Function64b1: ; 64b1 (1:64b1) - ld a, [wce65] - and $3 - ret nz -IF DEF(GOLD) - ld bc, wAnimatedObjectStruct10Index - ld hl, $a - add hl, bc - ld l, [hl] - ld h, $0 - add hl, hl - add hl, hl - ld de, .Data_64e0 - add hl, de - ld a, [wce65] - and $4 - srl a - srl a - ld e, a - ld d, $0 - add hl, de - add hl, de - ld a, [hli] - and a - ret z - ld e, a - ld d, [hl] -ENDC - -IF DEF(SILVER) - ld de, $7c58 -ENDC - ld a, $f - call InitSpriteAnimStruct - ret - -IF DEF(GOLD) -.Data_64e0: - db $5c, $50, $00, $00 - db $5c, $68, $5c, $58 - db $5c, $68, $5c, $78 - db $5c, $88, $5c, $78 - db $00, $00, $5c, $78 - db $00, $00, $5c, $58 -ENDC - -Copyright: - call ClearTilemap - call LoadFontsExtra - ld de, CopyrightGFX - ld hl, vTiles2 tile $60 - lb bc, BANK(CopyrightGFX), 30 - call Request2bpp - hlcoord 2, 7 - ld de, CopyrightString - jp PlaceString - -CopyrightString: - db $60, $61, $62, $63, $7a, $7b, $7c, $7d - db $65, $66, $67, $68, $69, $6a - next $60, $61, $62, $63, $7a, $7b, $7c, $7d - db $6b, $6c, $6d, $6e, $6f, $70, $71, $72 - next $60, $61, $62, $63, $7a, $7b, $7c, $7d - db $73, $74, $75, $76, $77, $78, $79, $71, $72 - db "@" - -GameInit:: ; 6545 (1:6545) - call ClearWindowData - ld a, $5 - ld hl, $4f60 - rst FarCall - jp IntroSequence diff --git a/items/item_attributes.asm b/items/item_attributes.asm deleted file mode 100755 index 14ce8e92..00000000 --- a/items/item_attributes.asm +++ /dev/null @@ -1,778 +0,0 @@ -item_attribute: MACRO -; price, held effect, parameter, property, pocket, field menu, battle menu - dw \1 - db \2, \3, \4, \5 - dn \6, \7 -ENDM - -Item1Attributes: - -; MASTER BALL - item_attribute 0, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -Item2Attributes: - -; ULTRA BALL - item_attribute 1200, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; BRIGHTPOWDER - item_attribute 10, HELD_BRIGHTPOWDER, 20, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; GREAT BALL - item_attribute 600, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; # BALL - item_attribute 200, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; BICYCLE - item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE - -; MOON STONE - item_attribute 0, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; ANTIDOTE - item_attribute 100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; BURN HEAL - item_attribute 250, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; ICE HEAL - item_attribute 250, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; AWAKENING - item_attribute 250, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; PARLYZ HEAL - item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; FULL RESTORE - item_attribute 3000, 0, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; MAX POTION - item_attribute 2500, 0, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; HYPER POTION - item_attribute 1200, 0, 200, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; SUPER POTION - item_attribute 700, 0, 50, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; POTION - item_attribute 300, 0, 20, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; ESCAPE ROPE - item_attribute 550, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE - -; REPEL - item_attribute 350, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE - -; MAX ELIXER - item_attribute 4500, 0, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; FIRE STONE - item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; THUNDERSTONE - item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; WATER STONE - item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; HP UP - item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; PROTEIN - item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; IRON - item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; CARBOS - item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; LUCKY PUNCH - item_attribute 10, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; CALCIUM - item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; RARE CANDY - item_attribute 4800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; X ACCURACY - item_attribute 950, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; LEAF STONE - item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; METAL POWDER - item_attribute 10, HELD_METAL_POWDER, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; NUGGET - item_attribute 10000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; # DOLL - item_attribute 1000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; FULL HEAL - item_attribute 600, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; REVIVE - item_attribute 1500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; MAX REVIVE - item_attribute 4000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; GUARD SPEC. - item_attribute 700, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; SUPER REPEL - item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE - -; MAX REPEL - item_attribute 700, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE - -; DIRE HIT - item_attribute 650, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; FRESH WATER - item_attribute 200, 0, 50, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; SODA POP - item_attribute 300, 0, 60, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; LEMONADE - item_attribute 350, 0, 80, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; X ATTACK - item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; X DEFEND - item_attribute 550, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; X SPEED - item_attribute 350, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; X SPECIAL - item_attribute 350, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; COIN CASE - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE - -; ITEMFINDER - item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; EXP.SHARE - item_attribute 3000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; OLD ROD - item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE - -; GOOD ROD - item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE - -; SILVER LEAF - item_attribute 1000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; SUPER ROD - item_attribute 0, 0, 0, CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE - -; PP UP - item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; ETHER - item_attribute 1200, 0, 10, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; MAX ETHER - item_attribute 2000, 0, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; ELIXER - item_attribute 3000, 0, 10, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; RED SCALE - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; SECRETPOTION - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; S.S.TICKET - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; MYSTERY EGG - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; SILVER WING - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; MOOMOO MILK - item_attribute 500, 0, 100, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; QUICK CLAW - item_attribute 100, HELD_QUICK_CLAW, 60, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; PSNCUREBERRY - item_attribute 10, HELD_HEAL_POISON, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; GOLD LEAF - item_attribute 1000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; SOFT SAND - item_attribute 100, HELD_GROUND_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; SHARP BEAK - item_attribute 100, HELD_FLYING_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; PRZCUREBERRY - item_attribute 10, HELD_HEAL_PARALYZE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; BURNT BERRY - item_attribute 10, HELD_HEAL_FREEZE, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; ICE BERRY - item_attribute 10, HELD_HEAL_BURN, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; POISON BARB - item_attribute 100, HELD_POISON_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; KING'S ROCK - item_attribute 100, HELD_FLINCH, 30, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; BITTER BERRY - item_attribute 10, HELD_HEAL_CONFUSION, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_PARTY - -; MINT BERRY - item_attribute 10, HELD_HEAL_SLEEP, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; RED APRICORN - item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TINYMUSHROOM - item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; BIG MUSHROOM - item_attribute 5000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; SILVERPOWDER - item_attribute 100, HELD_BUG_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; BLU APRICORN - item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; AMULET COIN - item_attribute 100, HELD_AMULET_COIN, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; YLW APRICORN - item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; GRN APRICORN - item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; CLEANSE TAG - item_attribute 200, HELD_CLEANSE_TAG, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; MYSTIC WATER - item_attribute 100, HELD_WATER_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TWISTEDSPOON - item_attribute 100, HELD_PSYCHIC_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; WHT APRICORN - item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; BLACKBELT - item_attribute 100, HELD_FIGHTING_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; BLK APRICORN - item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; PNK APRICORN - item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; BLACKGLASSES - item_attribute 100, HELD_DARK_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; SLOWPOKETAIL - item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; PINK BOW - item_attribute 100, HELD_NORMAL_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; STICK - item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; SMOKE BALL - item_attribute 200, HELD_ESCAPE, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; NEVERMELTICE - item_attribute 100, HELD_ICE_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; MAGNET - item_attribute 100, HELD_ELECTRIC_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; MIRACLEBERRY - item_attribute 10, HELD_HEAL_STATUS, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; PEARL - item_attribute 1400, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; BIG PEARL - item_attribute 7500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; EVERSTONE - item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; SPELL TAG - item_attribute 100, HELD_GHOST_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; RAGECANDYBAR - item_attribute 300, 0, 20, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; MIRACLE SEED - item_attribute 100, HELD_GRASS_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; THICK CLUB - item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; FOCUS BAND - item_attribute 200, HELD_FOCUS_BAND, 30, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; ENERGYPOWDER - item_attribute 500, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; ENERGY ROOT - item_attribute 800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; HEAL POWDER - item_attribute 450, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; REVIVAL HERB - item_attribute 2800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; HARD STONE - item_attribute 100, HELD_ROCK_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; LUCKY EGG - item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; CARD KEY - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE - -; MACHINE PART - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; LOST ITEM - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; STARDUST - item_attribute 2000, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; STAR PIECE - item_attribute 9800, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; BASEMENT KEY - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE - -; PASS - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; CHARCOAL - item_attribute 9800, HELD_FIRE_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; BERRY JUICE - item_attribute 100, HELD_BERRY, 20, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; SCOPE LENS - item_attribute 200, HELD_CRITICAL_UP, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; METAL COAT - item_attribute 100, HELD_STEEL_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; DRAGON FANG - item_attribute 100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; LEFTOVERS - item_attribute 200, HELD_LEFTOVERS, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; MYSTERYBERRY - item_attribute 10, HELD_RESTORE_PP, -1, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; DRAGON SCALE - item_attribute 2100, HELD_DRAGON_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; BERSERK GENE - item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; SACRED ASH - item_attribute 200, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE - -; HEAVY BALL - item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; FLOWER MAIL - item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; LEVEL BALL - item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; LURE BALL - item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; FAST BALL - item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; LIGHT BALL - item_attribute 100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; FRIEND BALL - item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; MOON BALL - item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; LOVE BALL - item_attribute 150, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; NORMAL BOX - item_attribute 10, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE - -; GORGEOUS BOX - item_attribute 10, 0, 0, CANT_SELECT, ITEM, ITEMMENU_CURRENT, ITEMMENU_NOUSE - -; SUN STONE - item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; POLKADOT BOW - item_attribute 100, HELD_NORMAL_BOOST, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; UP-GRADE - item_attribute 2100, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; BERRY - item_attribute 10, HELD_BERRY, 10, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; GOLD BERRY - item_attribute 10, HELD_BERRY, 30, CANT_SELECT, ITEM, ITEMMENU_PARTY, ITEMMENU_PARTY - -; SQUIRTBOTTLE - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_CLOSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; PARK BALL - item_attribute 0, 0, 0, CANT_SELECT, BALL, ITEMMENU_NOUSE, ITEMMENU_CLOSE - -; RAINBOW WING - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, KEY_ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; BRICK PIECE - item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; SURF MAIL - item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; LITEBLUEMAIL - item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; PORTRAITMAIL - item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; LOVELY MAIL - item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; EON MAIL - item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; MORPH MAIL - item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; BLUESKY MAIL - item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; MUSIC MAIL - item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; MIRAGE MAIL - item_attribute 50, 0, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TM01 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM02 - item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM03 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM04 - item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TM05 - item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM06 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM07 - item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM08 - item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM09 - item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM10 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM11 - item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM12 - item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM13 - item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM14 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM15 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM16 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM17 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM18 - item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM19 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM20 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM21 - item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM22 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM23 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM24 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM25 - item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM26 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM27 - item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM28 - item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TM29 - item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM30 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM31 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM32 - item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM33 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM34 - item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM35 - item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM36 - item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM37 - item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM38 - item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM39 - item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM40 - item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM41 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM42 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM43 - item_attribute 1000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM44 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM45 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM46 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM47 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM48 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM49 - item_attribute 3000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TM50 - item_attribute 2000, 0, 0, CANT_SELECT, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; HM01 - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; HM02 - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; HM03 - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; HM04 - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; HM05 - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; HM06 - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; HM07 - item_attribute 0, 0, 0, CANT_SELECT | CANT_TOSS, TM_HM, ITEMMENU_PARTY, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; TERU-SAMA - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE - -; ? - item_attribute $9999, 0, 0, 0, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE diff --git a/main.asm b/main.asm index 8833ca81..36b63704 100644 --- a/main.asm +++ b/main.asm @@ -4,188 +4,14 @@ INCLUDE "constants.asm" SECTION "bank1", ROMX INCLUDE "engine/link/place_waiting_text.asm" - -DummyPredef1: - ret - -WriteOAMDMACodeToHRAM:: ; 4032 (1:4032) - ld c, hTransferVirtualOAM - $ff00 - ld b, PushOAMEnd - PushOAM - ld hl, PushOAM -.asm_4039 - ld a, [hli] - ld [$ff00+c], a - inc c - dec b - jr nz, .asm_4039 - ret - -PushOAM: - ld a, wVirtualOAM / $100 - ldh [rDMA], a - ld a, $28 -.asm_4046 - dec a - jr nz, .asm_4046 - ret - -PushOAMEnd - +INCLUDE "engine/gfx/load_push_oam.asm" INCLUDE "engine/overworld/map_objects.asm" -INCLUDE "engine/main_menu.asm" -INCLUDE "engine/title.asm" - -ReanchorBGMap_NoOAMUpdate:: ; 6551 (1:6551) - call DelayFrame - ldh a, [hOAMUpdate] - push af - ld a, $1 - ldh [hOAMUpdate], a - ldh a, [hBGMapMode] - push af - xor a - ldh [hBGMapMode], a - call Function656b - pop af - ldh [hBGMapMode], a - pop af - ldh [hOAMUpdate], a - ret - -Function656b: ; 656b (1:656b) - xor a - ldh [hLCDCPointer], a - ldh [hBGMapMode], a - ld hl, wd565 - set 7, [hl] - res 2, [hl] - ld a, $90 - ldh [hWY], a - call OverworldTextModeSwitch - ld a, $9c - call .LoadBGMapAddrIntoHRAM - call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap - xor a - ldh [hBGMapMode], a - ldh [hWY], a - ld a, $98 - call .LoadBGMapAddrIntoHRAM - call .WaitTransfer - xor a - ld [wd05b], a - ld a, $98 - ld [wd05c], a - xor a - ldh [hSCX], a - ldh [hSCY], a - call ApplyBGMapAnchorToObjects - ret - -.LoadBGMapAddrIntoHRAM: ; 65a5 (1:65a5) - ldh [hBGMapAddress + 1], a - xor a - ldh [hBGMapAddress], a - ret - -.WaitTransfer: ; 65ab (1:65ab) - ldh a, [hBGMapMode] - push af - xor a - ldh [hBGMapMode], a - ldh a, [hOAMUpdate] - push af - ld a, $1 - ldh [hOAMUpdate], a - ld a, $3 - ldh [hVBlankCounter + 1], a -.asm_65bc - call DelayFrame - ldh a, [hVBlankCounter + 1] - and a - jr nz, .asm_65bc - pop af - ldh [hOAMUpdate], a - pop af - ldh [hBGMapMode], a - ret - -LoadFonts_NoOAMUpdate:: ; 65cb (1:65cb) - ldh a, [hOAMUpdate] - push af - ld a, $1 - ldh [hOAMUpdate], a - call .LoadGFX - pop af - ldh [hOAMUpdate], a - ret - -.LoadGFX: ; 65d9 (1:65d9) - call LoadFontsExtra - ld a, $90 - ldh [hWY], a - call SafeUpdateSprites - call Functiond9e - ret - -INCLUDE "engine/learn.asm" - -CorrectNickErrors:: ; 677e (1:677e) - push bc - push de - ld b, MON_NAME_LENGTH -.checkchar - ld a, [de] - cp "@" - jr z, .done - ld hl, .textcommands - dec hl -.loop - inc hl - ld a, [hl] - cp $ff - jr z, .next - ld a, [de] - cp [hl] - inc hl - jr c, .loop - cp [hl] - jr nc, .loop - ld a, "?" - ld [de], a - jr .loop - -.next - inc de - dec b - jr nz, .checkchar - pop de - push de - ld a, "?" - ld [de], a - inc de - ld a, "@" - ld [de], a -.done - pop de - pop bc - ret - -.textcommands -; table defining which characters are actually text commands -; format: - ; ≥ < - db "", $04 + 1 - db "", $18 + 1 - db $1d, "%" + 1 - db $35, "" + 1 - db "", "" + 1 - db $49, "" + 1 - db "", "┘" + 1 - db -1 ; end - -INCLUDE "engine/math.asm" -ItemAttributes: -INCLUDE "items/item_attributes.asm" +INCLUDE "engine/menus/intro_menu.asm" +INCLUDE "engine/overworld/init_map.asm" +INCLUDE "engine/pokemon/learn.asm" +INCLUDE "engine/pokemon/correct_nick_errors.asm" +INCLUDE "engine/math/math.asm" +INCLUDE "data/items/attributes.asm" INCLUDE "engine/overworld/npc_movement.asm" INCLUDE "engine/events/happiness_egg.asm" INCLUDE "engine/events/shuckle.asm" -- cgit v1.2.3