/aos_rando

Item randomizer for Castlevania: Aria of Sorrow

Primary LanguagePython

Castlevania Aria of Sorrow Item Randomizer
Version:    X
Date:       May 08, 2018
Author:     https://github.com/abyssonym
Forker:     https://github.com/EliteSoba
URL:        https://github.com/EliteSoba/aos_rando
Contact:    https://twitter.com/elite_soba
            https://www.twitch.tv/elite_soba

--- ABOUT ---
    This is abyssonym's AoS item randomizer, but with a glitched mode to allow for tricks commonly used in the Any% and All Bosses No0HP No ESG speedruns like bat zips.
    
    Also, randomtools was removed as a submodule to make things easier to track/download

--- FAQ ---
Q: What's different about glitched mode compared to the original?
A:
  Black Panther removed as a requirement when Flying Armor will suffice
    Rationale: Deincentivize Black Panther to force more backdash canceling for movement
  Vanilla Gravekeeper
    Rationale: Make backdash canceling immediately available to encourage good movement
  Catoblepass room accessible with Gravekeeper and Flying Armor
    Rationale: Important Any% No 0HP strat, so want it in logic
  Floating Garden available with just Malphas
    Rationale: Important Any% No 0HP strat, so want it in logic
  Arena available with Floating Garden access + Gravekeeper
    Rationale: Important Any% No 0HP strat, so we want it in logic
  Bat zips are in logic
    Rationale: Bat zips are an important part of glitched categories, and make things more dynamic
    Literally the only places not in logic with only bat zips are post-Graham room, the two Skula-required Clock Tower items, and anything underwater
  Shop Glitch (Not ESG) is allowed
    Rationale: It's a safety strat for some speedrun categories and adds an interesting dynamic of how many times do you want to do shop glitch to buy more expensive items. The actual reason is that I'm lazy and having over 100 potions and immediate access to Claimh makes things easier for me. Given how fast you can be thrown into Arena/Top Floor, I think this is a fair compromise

Q: Can't you skip straight to Chaos once you can bat zip?
A: Yes, but please don't. The goal I'd suggest for these runs is No 0HP No ESG All Bosses. The other category I'd suggest is No 0HP No ESG Graham+Julius+Chaos. This latter category I'd like to dub PleaseDontZipIntoChaoticRealm%

Q: What zips are added to the logic?
A:
  Top Floor to Forbidden Zone
    Use Any% strat to get there from Top Floor. Lets Skula be at Claimh location
    Can zip to Forbidden from Study or Clock Tower too, but you can't access Claimh with those
  Eastern Reservoir from Inner Corridor or Forbidden Zone
    You can zip in through vanilla Flying Armor or vanilla Handgun, but many locations are inaccessible without Skula
    The only time you can get stuck is if you try to zip to vanilla Rune Ring so don't do that
  Any% Chaotic Realm Zip
    Lets you go from Chaotic Realm Chapel Save to Chaos without Skula
  Zip to room after Chronomage
    This one's a bit tricky and took me a while to find, because I don't think any reasonable speedrun uses it:
    In the top room of Dance Hall, on the platform right above the entrance to the right room, zip to the right and suspend once you enter the right room. From here, you'll be in the Post-Chronomage room but out of bounds, go up to enter the room with the items, and position yourself on the roof above the entry hole, and jump to scroll vertically (this tile of the room loops vertically). From here you can get out by zipping to the right to go to right before Chronomage room, or you can just enter the Chronomage room from the back and get booted out.
    The other option is to do the All Bosses post-Big Golem zip that takes you to the connector between Dance Hall and Inner Quarters, and suspend in the connector room
  Pre-Arena item accessible with zip in Giant Worm room (Left of Reservoir tall room save)
    This is the only time you'll ever see this room in a run
  Most other zips just save time and don't actually sequence break (ex: anything that leads to Top Floor)

Q: What isn't actually required in this logic?
A:
  Gravekeeper only for Inner Corridor
    Rationale: Any% No 0HP doesn't do this and I don't want to do this
  Kicker Skeleton for Progression
    Rationale: No main category does this and I don't want to do this either
  Chronomage to access Galamoth Items
    Rationale: I recently discovered this was a thing, but I don't want to do this either
  Chaotic Realm for Progression
    Rationale: If you do this your only escape is fighting Julius or desperately trying to zip out of the boss room, and no category really has you ever leave Chaotic Realm so it's not a valuable skill. (Plus, I don't want to do this)

--- HOW TO USE ---
Running the randomizer:
    Windows users may use the executable file, "aos_rando.exe". Other users, please run "randomizer.py" using Python version 2.7.

Source rom file:
    This randomizer requires the North American or Japanese GBA rom "Castlevania: Aria of Sorrow" with the MD5 hash shown below.
    MD5 - e7470df4d241f73060d14437011b90ce (NA)
          146ae198a3d42a66733b9e0ef3ec11eb (J)

Flags:
    d  Randomize enemy souls and drops.
    i  Randomize item and ability locations.
    h  Randomize Hammer's shop.

Seed value:
    Input a seed value here, or leave it blank if you don't care.

Output files:
    The randomizer will output a new, randomized rom with the seed in the filename.

--- SECRET CODES ---
Same as the original AoS randomizer, but with one more code

glitched: Uses glitched logic for progression. Pretty much only recommended if you're comfortable with the Any% No0HP No ESG route