Git Product home page Git Product logo

pokedarkgs's Introduction

Pokémon Dark Gold and Dark Silver master workflow

Playability Status: Still in early development, You are going to have a bad time.

This is a Rom Hack based on the disassembly of Pokémon Crystal by Pret. I wanted to learn about ROM hacking and assembly, as well as make something fun for my Friends and Family to play. Many of the changes are based on things I wanted from a ROM Hack or my Friends or Family asked for. You are more than welcome to give it a play, suggest changes, and propose code improvements.

This romhack aims to bring Pokemon Gold/Silver to the Crystal Engine with a few twists. See below for some Planned features.

  1. Add most pokemon directly related to the Gen I / II pokemon. (Ex. Baby Pokemon).

  2. 16bit Mon ID's 16bit Move ID's. [Implemented]

  3. Newbox (Bill's PC overhall). [Implemented]

  4. 60 FPS Doublespeed [Implemented]

  5. Dynamic Sprite Reload [Implemented]

  6. 3DS Virtual Console Support [Implemented]

  7. Rare spawns based on habitat [Partially Implemented]

  8. Follower Pokemon [Coming Soon!]

  9. Slightly Increased difficulty

  10. New Town/Gym In Lake of Rage

  11. Lavendar town rework

  12. ... and More!

You may be asking why is it called "Dark"? Hell if I know. I have a couple ideas about that.. but.. whatever. Feel free to help me discover where this romhack will take us!

pokedarkgs's People

Contributors

aaaaaa123456789 avatar ben10do avatar cnelsonsic avatar curiouserthing avatar dannye avatar deedeeg avatar fredriq avatar i0brendan0 avatar idain avatar igidrau avatar iimarckus avatar issotm avatar jimb16 avatar kanzure avatar katlabs avatar ketsuban avatar luckytyphlosion avatar mid-kid avatar mrwint avatar nbasu02 avatar pfero avatar pikalaxalt avatar rangi42 avatar rawr51919 avatar roukaour avatar sanqui avatar surskitty avatar vulcandth avatar xcrystal avatar yenatch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

monhacks

pokedarkgs's Issues

In-Progress `FEATURES.md`

Features

These are the majority of the new features. You may encounter spoilers.

Events

  • Restored Lugia/Ho-Oh encounters depending on version.
  • Removed WiseTrios / WiseTrio Events.
  • Removed CeladonCityPokecenter Eusine event.
  • Pewter City Gramps may now give Rainbow Wing (Depending on Version)
  • RadioTower director now gives Rainbow Wing/Silver Wing and not Clear Bell.
  • Suicune/Legendary dogs are no longer encountered in Tin Tower.
  • Added a Vermillion City Suicune Encounter.
  • Added a Route 14 Suicune Encounter.
  • Added a Route 25 Suicune Battle Encounter.
  • Restore the GS Ball Celebi Event.
  • Lottery Corner now generates a lucky number daily instead of weekly.

Overworld Mechanics

  • Hold B to use Running Shoes.
  • You can't run past spinning trainers.
  • Smashing rocks has a chance to contain items.

Battle Mechanics

  • Removed the 25% failure chance for AI status moves.
  • Added Fairy type.
  • Implemented Physical/Special Split.
  • Added hail battle weather.
  • Gain exerpeince from catching Pokemon.
  • Don't gain experience at level 100.

Pokemon Data

  • Replaced stat experience with EVs
  • The "Special" DV has been split into "Special Defense" and "Special Attack".
  • The "HP" DV is no longer calculated solely based on every other DV.
  • Shiny Pokémon are no longer calculated based on DVs.
  • Pokémon Genders are no longer calculated based on DVs.
  • Unown forms are no longer calculated based on DVs.

Moves

  • Added: Moonblast, Hail

Wild Pokémon

  • Ported Gold/Silver Wild Encounters and Pokémon Swarms
  • Initial implementation of rare habitat encounters.

Graphics and Music

  • Ported the Gold/Silver Intro Movie and Title Screens
  • Pokemon now have unique/colored party icons. (Also appears somtimes in the overworld.)
  • Unique colors for each thrown pokeball.

Engine

  • Compatibility with 16bit Pokémon/Move IDs. (pokecrystal16)
  • Overworld object sprites are now dynamically loaded as needed.
  • The Game engine now runs at doublespeed 60fps.
  • Expanded tilesets from 192 to 255 tiles.
  • Allows tilesets to have different attributes in different blocks.

UI

  • Pokémon Stats blue page now shows DVs.
  • Bill's PC has been completely overhauled.
  • An icon displays in battle to show the current battle weather.
  • Show the tops of leaders heads on trainer card.
  • Colored trainer card badges.
  • Added a third trainer card page for Kanto badges.
  • Show move names when you receive a TM or HM.
  • New battle text to distinguish status move misses and fails.

Misc Changes

  • Ported Gold/Silver end credit strings.
  • Ported Gold/Silver Default Player Names
  • Short beeiping noise for low hp, instead of continious beeping.
  • Link Battles / Link Trading rooms now show the correct opposing player's gender.
  • Saving the game is now near instant.

Battle Autoprompts

In Generation 3 onwards, most battle texts don't require the player to click A. That's not the case in Generation 2, as most battle texts require prompts which the player must press A. Thus, players tend to spam it after making a move.

Implement Tutorial:

Allow tiles to have different attributes in different blocks (including X and Y flip)

Maps in pokecrystal are designed with blocks, not tiles, where each block (aka "metatile") is a 4x4 square of tiles. Each 8x8-pixel tile always has the same appearance in every block. But the GameBoy hardware is capable of more. The same tile graphic can be reused with different attributes—not just color, but X and Y flip, as well as "priority" to appear above sprites.

Need to implement the tutorial: https://github.com/pret/pokecrystal/wiki/Allow-tiles-to-have-different-attributes-in-different-blocks-(including-X-and-Y-flip)

Note: The tutorial "Implement PRIORITY colors" is redundant, and this tutorial should be done instead.

Convert to MBC30 for the extra SRAM for newbox

Need to convert the rom to use MBC30 for the extra SRAM. Then newbox should be adjusted to use 4 pokedb banks. This will required expanding newbox's bank bitflags from 1 bit per 20 slots, to 2 bits per 20 slots (enough bits to cover 4 banks).

Various Bugfixes

  • Perish Song and Spikes can leave a Pokemon with 0 HP and not faint
  • Thick Club and Light Ball can make (Special) Attack wrap around above 1021
  • Metal Powder can increase damage taken with boosted (Special) Defense
  • Reflect and Light Screen can make (Special) Defense wrap around 1024
  • Moves with a 100% secondary effect chance will not trigger it in 1/256 uses
  • Belly Drum sharply boosts Attack even with under 50% HP
  • Berserk Gene's confusion lasts for 256 turns or the previous Pokémon's confusion count
  • Confusion damage is affected by type-boosting items and Explosion/Self-Destruct doubling
  • Moves that lower Defense can do so after breaking a Substitute
  • Counter and Mirror Coat still work if the opponent uses an item
  • A Disabled but PP Up–enhanced move may not trigger Struggle
  • A Pokémon that fainted from Pursuit will have its old status condition when revived
  • Lock-On and Mind Reader don't always bypass Fly and Dig
  • Beat Up can desynchronize link battles
  • Beat Up works incorrectly with only one Pokémon in the party
  • Beat Up may fail to raise Substitute
  • Beat Up may trigger King's Rock even if it failed
  • Present damage is incorrect in link battles
  • Return and Frustration deal no damage when the user's happiness is low or high, respectively
  • Dragon Scale, not Dragon Fang, boosts Dragon-type moves
  • Switching out or switching against a Pokémon with max HP below 4 freezes the game
  • Moves that do damage and increase your stats do not increase stats after a KO
  • HP bar animation is slow for high HP
  • HP bar animation off-by-one error for low HP
  • A Transformed Pokémon can use Sketch and learn otherwise unobtainable moves
  • Catching a Transformed Pokémon always catches a Ditto
  • Experience underflow for level 1 Pokémon with Medium-Slow growth rate
  • The Dude's catching tutorial may crash if his Poké Ball can't be used
  • BRN/PSN/PAR do not affect catch rate
  • Moon Ball does not boost catch rate
  • Love Ball boosts catch rate for the wrong gender
  • Fast Ball only boosts catch rate for three Pokémon (TODO: remove comment)
  • Heavy Ball uses wrong weight value for three Pokémon
  • Glacier Badge may not boost Special Defense depending on the value of Special Attack
  • "Smart" AI encourages Mean Look if its own Pokémon is badly poisoned
  • "Smart" AI discourages Conversion2 after the first turn
  • "Smart" AI does not encourage Solar Beam, Flame Wheel, or Moonlight during Sunny Day
  • AI does not discourage Future Sight when it's already been used
  • AI makes a false assumption about CheckTypeMatchup
  • AI use of Full Heal or Full Restore does not cure Nightmare status
  • AI use of Full Heal does not cure confusion status
  • Wild Pokémon can always Teleport regardless of level difference
  • RIVAL2 has lower DVs than RIVAL1
  • HELD_CATCH_CHANCE has no effect
  • Credits sequence changes move selection menu behavior
  • LoadMetatiles wraps around past 128 blocks
  • Surfing directly across a map connection does not load the new map
  • Swimming NPCs aren't limited by their movement radius
  • Pokémon deposited in the Day-Care might lose experience
  • In-battle “…” ellipsis is too high
  • Two tiles in the port tileset are drawn incorrectly
  • The Ruins of Alph research center's roof color at night looks wrong
  • A hatching Unown egg would not show the right letter
  • Using a Park Ball in non-Contest battles has a corrupt animation
  • Battle transitions fail to account for the enemy's level
  • Some trainer NPCs have inconsistent overworld sprites
  • Slot machine payout sound effects cut each other off
  • Team Rocket battle music is not used for Executives or Scientists
  • No bump noise if standing on tile $3E
  • Playing Entei's Pokédex cry can distort Raikou's and Suicune's
  • Five-digit experience gain is printed incorrectly
  • Only the first three evolution entries can have Stone compatibility reported correctly
  • EVOLVE_STAT can break Stone compatibility reporting
  • A "HOF Master!" title for 200-Time Famers is defined but inaccessible
  • Clair can give TM24 Dragonbreath twice
  • Daisy's grooming doesn't always increase happiness
  • Magikarp in Lake of Rage are shorter, not longer
  • Magikarp length limits have a unit conversion error
  • Magikarp lengths can be miscalculated
  • CheckOwnMon only checks the first five letters of OT names
  • CheckOwnMonAnywhere does not check the Day-Care
  • The unused phonecall script command may crash
  • Saves corrupted by mid-save shutoff are not handled
  • ScriptCall can overflow wScriptStack and crash
  • LoadSpriteGFX does not limit the capacity of UsedSprites
  • ChooseWildEncounter doesn't really validate the wild Pokémon species
  • TryObjectEvent arbitrary code execution
  • ReadObjectEvents overflows into wObjectMasks
  • ClearWRAM only clears WRAM bank 1
  • BattleAnimCmd_ClearObjs only clears the first 6⅔ objects

Some NPCs (Rival) move too fast

A small issue with 60fps. Some NPCs move too fast. For example, after the first rival encounter, the rival runs away at lightning speed.

Various Design Flaws

  • Pic banks are offset by PICS_FIX
  • PokemonPicPointers and UnownPicPointers are assumed to start at the same address
  • Footprints are split into top and bottom halves
  • Music IDs $64 and $80 or above have special behavior
  • ITEM_C3 and ITEM_DC break up the continuous sequence of TM items
  • Pokédex entry banks are derived from their species IDs
  • The 6-bit caught level can only record up to level 63
  • Identical sine wave code and data is repeated five times
  • GetForestTreeFrame works, but it's still bad

Increased gameplay difficulty

I'd like to tweak up the difficulty of the game, slightly. Nothing major, just want to make it somewhat more difficult than the original games.

New Pokemon

Gen III:

  • Azurill
  • Wynaut

Gen IV:

  • Magnezone
  • Lickilicky
  • Rhyperior
  • Happiny
  • Tangrowth
  • Mime Jr
  • Electivire
  • Magmortar
  • Leafeon
  • Glaceon
  • Porygon-Z
  • Munchlax
  • Togekiss
  • Bonsly
  • Ambipom
  • Yanmega
  • Honchkrow
  • Mismagius
  • Gliscor
  • Weavile
  • Mamoswine
  • Mantyke

Gen VI:

  • Sylveon

Gen VII:

  • Raichu - Alola
  • Meowth - Alola
  • Persian - Alola
  • Exeggutor - Alola
  • Marowak - Alola
  • Rattata - Alola
  • Raticate - Alola
  • Sandshrew - Alola
  • Sandslash - Alola
  • Vulpix - Alola
  • Ninetales - Alola
  • Diglett - Alola
  • Dugtrio - Alola
  • Geodude - Alola
  • Graveler - Alola
  • Golem - Alola
  • Grimer - Alola
  • Muk - Alola

Gen VIII:

  • Perrserker
  • Mr. Rime
  • Kleavor
  • Overqwil
  • Sneasler
  • Ursaluna
  • Cursola
  • Wyrdeer
  • Meowth - Galar
  • Ponyta - Galar
  • Rapidash - Galar
  • Slowpoke - Galar
  • Slowbrow - Galar
  • Slowking - Galar
  • Farfetch'd - Galar
  • Sirfetch'd - Galar
  • Weezing - Galar
  • Mr. Mime - Galar
  • Corsola - Galar
  • Weezing - Galar
  • Articuno - Galar
  • Zapdos - Galar
  • Moltres - Galar

Custom:

  • Dark Lugia
  • Dark Ho-Oh

Add Credits

  • Ax6 for original Pokecrystal16
  • ElfinHilon10 for Stat_Screen Blue Page DV layout.
  • FIQ and Rangi for Newbox
  • SourApple for Moonblast anim
  • Many more!

Add Town & Dark Gym to Lake of Rage

We will be adding a new town in the Lake of Rage with a new Dark-Type Gym. Initial Thoughts and Notes on this:

  • There were originally plans to add a town in the Lake of Rage, and there is some info on it from leaked recently.
  • In order to avoid adding a "17-th" gym badge, Perhaps this Gym will be an "unofficial" gym. Perhaps they are accepting battles, but have not been fully recognized by the Pokemon league yet. There should be an alternative reward for beating the gym than a badge.
  • This town should not feel too out of place from the rest of the game and story.

Rare Habitat Spawns

The goal is to allow a somewhat rare chance (currently 10%) of spawning a Pokemon from the map's habitat table. Based on FRLG's habitat's, each map will be assigned a habitat closely matching the area. This allows a small chance for the player to find something that they normally wouldn't find in an area. For example, the player may find a rare charmander spawn in a mountain area that normally does not spawn Charmander.

The current system uses the level of the area to spawn the habitat pokemon at. However, this needs to be adjusted to prevent level 2 Venasaurs from spawning, and level 50 Magby's as an example.

Hall of Fame Data 3-Byte DVs

Hall of Fame currently only stores 2 bytes for DVs; this should have been fixed when 3-byte DV's were implemented.

Make the Lottery Corner generate a lucky number daily instead of weekly

In generation 2, the Lottery Corner is located in the 1st floor of the Radio Tower and we can get a random ID number by either talking to a recepcionist or listening to the Lucky Number Show on the Lucky Channel every Friday. As we know, in future generations this number is generated daily instead of weekly, so the objective of this tutorial will be to make it behave like in modern generations so that we can try our luck more often.

Need to implement the tutorial: https://github.com/pret/pokecrystal/wiki/Make-the-Lottery-Corner-generate-a-lucky-number-daily-instead-of-weekly

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.