SMW: v2.0 Content Update (#2762)
Changelog: Features: - New optional Location Checks - 3-Up Moons - Hidden 1-Ups - Bonus Blocks - Blocksanity - All blocks that contain coins or items are included, with the exception of: - Blocks in Top Secret Area & Front Door/Bowser Castle - Blocks that are unreachable without glitches/unreasonable movement - New Items - Special Zone Clear - New Filler Items - 1 Coin - 5 Coins - 10 Coins - 50 Coins - New Trap Items - Reverse Trap - Thwimp Trap - SFX Shuffle - Palette Shuffle Overhaul - New Curated Palette can now be used for the Overworld and Level Palette Shuffle options - Foreground and Background Shuffle options have been merged into a single setting - Max possible Yoshi Egg value is 255 - UI in-game is updated to handle 3-digits - New `Display Received Item Popups` option: `progression_minus_yoshi_eggs` Quality of Life: - In-Game Indicators are now displayed on the map screen for location checks and received items - In-level sprites are displayed upon receiving certain items - The Camera Scroll unlocking is now only enabled on levels where it needs to be - SMW can now handle receiving more than 255 items - Significant World Code cleanup - New Options API - Removal of `world: MultiWorld` across the world - The PopTracker pack now has tabs for every level/sublevel, and can automatically swap tabs while playing if connected to the server Bug Fixes: - Several logic tweaks/fixes "Major credit to @TheLX5 for being the driving force for almost all of this update. We've been collaborating on design and polish of the features for the last few months, but all of the heavy lifting was all @TheLX5."
This commit is contained in:
parent
b6b88070be
commit
f8d5fe0e1e
|
@ -1,3 +1,82 @@
|
|||
import json
|
||||
import pkgutil
|
||||
|
||||
from worlds.AutoWorld import World
|
||||
|
||||
tileset_names = [
|
||||
"grass_hills",
|
||||
"grass_forest",
|
||||
"grass_rocks",
|
||||
"grass_clouds",
|
||||
"grass_mountains",
|
||||
"cave",
|
||||
"cave_rocks",
|
||||
"water",
|
||||
"mushroom_rocks",
|
||||
"mushroom_clouds",
|
||||
"mushroom_forest",
|
||||
"mushroom_hills",
|
||||
"mushroom_stars",
|
||||
"mushroom_cave",
|
||||
"forest",
|
||||
"logs",
|
||||
"clouds",
|
||||
"castle_pillars",
|
||||
"castle_windows",
|
||||
"castle_wall",
|
||||
"castle_small_windows",
|
||||
"ghost_house",
|
||||
"ghost_house_exit",
|
||||
"ship_exterior",
|
||||
"ship_interior",
|
||||
"switch_palace",
|
||||
"yoshi_house"
|
||||
]
|
||||
|
||||
map_names = [
|
||||
"main",
|
||||
"yoshi",
|
||||
"vanilla",
|
||||
"forest",
|
||||
"valley",
|
||||
"special",
|
||||
"star"
|
||||
]
|
||||
|
||||
level_palette_index = [
|
||||
0xFF,0x03,0x09,0x01,0x15,0x0A,0x04,0x12,0x19,0x06,0x07,0x12,0x09,0x0F,0x13,0x09, # Levels 000-00F
|
||||
0x03,0x07,0xFF,0x15,0x19,0x04,0x04,0xFF,0x17,0xFF,0x14,0x12,0x02,0x05,0xFF,0x11, # Levels 010-01F
|
||||
0x12,0x15,0x04,0x02,0x02,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 020-02F
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 030-03F
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 040-04F
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 050-05F
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 060-06F
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 070-07F
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 080-08F
|
||||
0xFF,0xFF,0xFF,0x12,0x12,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 090-09F
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 0A0-0AF
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x19,0x08,0x09, # Levels 0B0-0BF
|
||||
0x02,0x08,0x05,0x04,0x16,0x1A,0x04,0x02,0x0C,0x19,0x19,0x09,0xFF,0x02,0x02,0x02, # Levels 0C0-0CF
|
||||
0x04,0x04,0x05,0x12,0x14,0xFF,0x12,0x10,0x05,0xFF,0x19,0x12,0x14,0x0F,0x15,0xFF, # Levels 0D0-0DF
|
||||
0x12,0x12,0xFF,0x04,0x15,0xFF,0x19,0x14,0x12,0x05,0x05,0x16,0x15,0x15,0x15,0x12, # Levels 0E0-0EF
|
||||
0x16,0x15,0x15,0x09,0x19,0x04,0x04,0x13,0x18,0x15,0x15,0x16,0x15,0x19,0x15,0x04, # Levels 0F0-0FF
|
||||
0xFF,0x11,0x08,0x02,0x1A,0x00,0x01,0x15,0xFF,0x05,0x05,0x05,0xFF,0x11,0x12,0x05, # Levels 100-10F
|
||||
0x12,0x14,0xFF,0x0D,0x15,0x06,0x05,0x05,0x05,0x0C,0x05,0x19,0x12,0x15,0x0E,0x01, # Levels 110-11F
|
||||
0x07,0x19,0x0E,0x0E,0xFF,0x04,0x0E,0x02,0x02,0xFF,0x09,0x04,0x0B,0x02,0xFF,0xFF, # Levels 120-12F
|
||||
0x07,0xFF,0x0C,0xFF,0x05,0x0C,0x0C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 130-13F
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 140-14F
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 150-15F
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 160-16F
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 170-17F
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 180-18F
|
||||
0xFF,0xFF,0xFF,0x12,0x12,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 190-19F
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 1A0-1AF
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x19,0x19,0x12,0x02,0x05, # Levels 1B0-1BF
|
||||
0x02,0x07,0x05,0x05,0x03,0x03,0x00,0xFF,0x0F,0x10,0x05,0x05,0x12,0x11,0x14,0x14, # Levels 1C0-1CF
|
||||
0x11,0x12,0x12,0x12,0x11,0x03,0x03,0x19,0x19,0x15,0x16,0x15,0x15,0x15,0xFF,0x05, # Levels 1D0-1DF
|
||||
0x10,0x02,0x06,0x06,0x19,0x05,0x16,0x16,0x15,0x15,0x15,0xFF,0x06,0x05,0x05,0x06, # Levels 1E0-1EF
|
||||
0x05,0x05,0x12,0x14,0x12,0x05,0xFF,0x19,0x05,0x16,0x15,0x15,0x11,0x05,0x12,0x09 # Levels 1F0-1FF
|
||||
]
|
||||
|
||||
mario_palettes = [
|
||||
[0x5F, 0x63, 0x1D, 0x58, 0x0A, 0x00, 0x1F, 0x39, 0xC4, 0x44, 0x08, 0x4E, 0x70, 0x67, 0xB6, 0x30, 0xDF, 0x35, 0xFF, 0x03], # Mario
|
||||
|
@ -145,36 +224,413 @@ valid_ow_palettes = {
|
|||
0x2D24: [0x00, 0x02, 0x03], # Star Road
|
||||
}
|
||||
|
||||
def generate_shuffled_level_music(world, player):
|
||||
valid_sfxs = [
|
||||
[0x01, 1], # Jump
|
||||
[0x01, 0], # Hit head
|
||||
[0x02, 0], # Contact/Spinjump on an enemy
|
||||
[0x03, 0], # Kick item
|
||||
[0x04, 0], # Go in pipe, get hurt
|
||||
[0x05, 0], # Midway point
|
||||
[0x06, 0], # Yoshi gulp
|
||||
[0x07, 0], # Dry bones collapse
|
||||
[0x08, 0], # Kill enemy with a spin jump
|
||||
[0x09, 0], # Fly with cape
|
||||
[0x0A, 0], # Get powerup
|
||||
[0x0B, 0], # ON/OFF switch
|
||||
[0x0C, 0], # Carry item past the goal
|
||||
[0x0D, 0], # Get cape
|
||||
[0x0E, 0], # Swim
|
||||
[0x0F, 0], # Hurt while flying
|
||||
[0x10, 0], # Magikoopa shoot magic
|
||||
[0x13, 0], # Enemy stomp #1
|
||||
[0x14, 0], # Enemy stomp #2
|
||||
[0x15, 0], # Enemy stomp #3
|
||||
[0x16, 0], # Enemy stomp #4
|
||||
[0x17, 0], # Enemy stomp #5
|
||||
[0x18, 0], # Enemy stomp #6
|
||||
[0x19, 0], # Enemy stomp #7
|
||||
[0x1C, 0], # Yoshi Coin
|
||||
[0x1E, 0], # P-Balloon
|
||||
[0x1F, 0], # Koopaling defeated
|
||||
[0x20, 0], # Yoshi spit
|
||||
[0x23, 0], # Lemmy/Wendy falling
|
||||
[0x25, 0], # Blargg roar
|
||||
[0x26, 0], # Firework whistle
|
||||
[0x27, 0], # Firework bang
|
||||
[0x2A, 0], # Peach pops up from the Clown Car
|
||||
[0x04, 1], # Grinder
|
||||
[0x01, 3], # Coin
|
||||
[0x02, 3], # Hit a ? block
|
||||
[0x03, 3], # Hit a block with a vine inside
|
||||
[0x04, 3], # Spin jump
|
||||
[0x05, 3], # 1up
|
||||
[0x06, 3], # Shatter block
|
||||
[0x07, 3], # Shoot fireball
|
||||
[0x08, 3], # Springboard
|
||||
[0x09, 3], # Bullet bill
|
||||
[0x0A, 3], # Egg hatch
|
||||
[0x0B, 3], # Item going into item box
|
||||
[0x0C, 3], # Item falls from item box
|
||||
[0x0E, 3], # L/R scroll
|
||||
[0x0F, 3], # Door
|
||||
[0x13, 3], # Lose Yoshi
|
||||
[0x14, 3], # SMW2: New level available
|
||||
[0x15, 3], # OW tile reveal
|
||||
[0x16, 3], # OW castle collapse
|
||||
[0x17, 3], # Fire spit
|
||||
[0x18, 3], # Thunder
|
||||
[0x19, 3], # Clap
|
||||
[0x1A, 3], # Castle bomb
|
||||
[0x1C, 3], # OW switch palace block ejection
|
||||
[0x1E, 3], # Whistle
|
||||
[0x1F, 3], # Yoshi mount
|
||||
[0x20, 3], # Lemmy/Wendy going in lava
|
||||
[0x21, 3], # Yoshi's tongue
|
||||
[0x22, 3], # Message box hit
|
||||
[0x23, 3], # Landing in a level tile
|
||||
[0x24, 3], # P-Switch running out
|
||||
[0x25, 3], # Yoshi defeats an enemy
|
||||
[0x26, 3], # Swooper
|
||||
[0x27, 3], # Podoboo
|
||||
[0x28, 3], # Enemy hurt
|
||||
[0x29, 3], # Correct
|
||||
[0x2A, 3], # Wrong
|
||||
[0x2B, 3], # Firework whistle
|
||||
[0x2C, 3] # Firework bang
|
||||
]
|
||||
|
||||
game_sfx_calls = [
|
||||
0x0565E, # Jump
|
||||
0x1BABD, # Spin jump
|
||||
0x06D41, # Hit head on ceiling
|
||||
0x0B4F2, # Hit head on sprite
|
||||
0x07EB5, # Shooting a fireball
|
||||
0x0507B, # Cape spin
|
||||
0x058A8, # Cape smash
|
||||
0x075F3, # Taking damage
|
||||
0x075E2, # Taking damage while flying
|
||||
0x07919, # Something during a boss fight
|
||||
0x05AA9, # Swim
|
||||
0x1BC04, # Spin jump off water
|
||||
0x05BA5, # Jump off a net
|
||||
0x05BB2, # Punching a net
|
||||
0x06C10, # Entering a door
|
||||
0x05254, # Entering a pipe #1
|
||||
0x07439, # Entering a pipe #2
|
||||
0x052A5, # Shot from a diagonal pipe
|
||||
0x072E8, # Hit a midway point
|
||||
0x07236, # Hit a wrong block
|
||||
0x07B7D, # Spawn a powerup during the goal tape
|
||||
0x1C342, # Invisible mushroom spawn
|
||||
0x04E3F, # Scrolling the screen with L/R
|
||||
0x0AAFD, # Pressing a P-Switch
|
||||
0x04557, # P-Switch running out
|
||||
0x0BAD7, # Climbing door turning
|
||||
0x0C109, # Break goal tape
|
||||
0x0C548, # Putting item in item box
|
||||
0x10012, # Trigger item box
|
||||
0x2B34D, # Collecting a coin
|
||||
0x07358, # Collecting a Yoshi Coin
|
||||
0x0C57A, # Collecting a powerup (generic)
|
||||
0x0C59C, # Collecting a feather
|
||||
0x0C309, # Collecting a P-Balloon
|
||||
0x0E6A9, # Bouncing off a springboard
|
||||
0x1117D, # Bouncing off a note block
|
||||
0x14DEC, # Bouncing off a wall springboard
|
||||
0x1067F, # Block shattering
|
||||
0x1081E, # Activate ON/OFF switch #1
|
||||
0x1118C, # Activate ON/OFF switch #2
|
||||
0x12045, # Fireballs hitting a block/sprite
|
||||
0x12124, # Fireballs converting an enemy into a coin
|
||||
0x12106, # Fireballs defeating a Chuck
|
||||
0x18D7D, # Activating a message box
|
||||
0x1C209, # Activating a red question block
|
||||
0x0A290, # Baby Yoshi swallowing an item #1
|
||||
0x1C037, # Baby Yoshi swallowing an item #2
|
||||
0x0F756, # Yoshi egg hatching
|
||||
0x0A2C5, # Yoshi growing #1
|
||||
0x1C06C, # Yoshi growing #2
|
||||
0x0ED5F, # Mounting Yoshi
|
||||
0x0F71D, # Yoshi hurt
|
||||
0x12481, # Yoshi hurt (projectiles)
|
||||
0x0EF0E, # Yoshi flying
|
||||
0x06F90, # Yoshi stomping an enemy
|
||||
0x06FB6, # Yoshi ground pound (yellow shell)
|
||||
0x07024, # Yoshi bounces off a triangle
|
||||
0x11BE9, # Yoshi stomping the ground
|
||||
0x0F0D3, # Yoshi swallowing a sprite
|
||||
0x0F0FD, # Yoshi eating a green berry
|
||||
0x1BA7D, # Yoshi sticking out tongue
|
||||
0x0F5A1, # Yoshi unable to eat
|
||||
0x0F2DF, # Yoshi spitting out an item
|
||||
0x0F28F, # Yoshi spitting out flames
|
||||
0x0F3EC, # Collecting Yoshi's wings (eaten)
|
||||
0x0F6C8, # Collecting Yoshi's wings (touched)
|
||||
0x7FE04, # Defeated sprite combo #1 (using Y index)
|
||||
0x7FE0E, # Defeated sprite combo #2 (using Y index)
|
||||
0x7FE18, # Defeated sprite combo #3 (using Y index)
|
||||
0x7FE22, # Defeated sprite combo #4 (using Y index)
|
||||
0x7FE2C, # Defeated sprite combo #5 (using Y index)
|
||||
0x7FE36, # Defeated sprite combo #6 (using Y index)
|
||||
0x7FE40, # Defeated sprite combo #7 (using Y index)
|
||||
0x7FE4B, # Defeated sprite combo #1 (using X index)
|
||||
0x7FE55, # Defeated sprite combo #2 (using X index)
|
||||
0x7FE5F, # Defeated sprite combo #3 (using X index)
|
||||
0x7FE69, # Defeated sprite combo #4 (using X index)
|
||||
0x7FE73, # Defeated sprite combo #5 (using X index)
|
||||
0x7FE7D, # Defeated sprite combo #6 (using X index)
|
||||
0x7FE87, # Defeated sprite combo #7 (using X index)
|
||||
0x0A728, # Kicking a carryable item
|
||||
0x0B12F, # Kicking a stunned and vulnerable enemy
|
||||
0x0A8D8, # Performing a spinjump on a immune enemy
|
||||
0x0A93F, # Defeating an enemy via spinjump
|
||||
0x0999E, # Thrown sprite hitting the ground from the side
|
||||
0x192B8, # Creating/Eating block moving
|
||||
0x195EC, # Rex stomped
|
||||
0x134A7, # Bullet bill blaster shooting
|
||||
0x13088, # Bullet bill generator #1
|
||||
0x130DF, # Bullet bill generator #2
|
||||
0x09631, # Bob-omb explosion
|
||||
0x15918, # Popping a bubble
|
||||
0x15D64, # Sumo bro stomping the ground
|
||||
0x15ECC, # Sumo bro lightning spawning flames
|
||||
0x1726B, # Bouncing off wiggler
|
||||
0x08390, # Banzai bill spawn
|
||||
0x0AF17, # Thwomp hitting the ground
|
||||
0x0AFFC, # Thwimp hitting the ground
|
||||
0x14707, # Chuck running
|
||||
0x14381, # Chuck whistling
|
||||
0x144F8, # Chuck clapping
|
||||
0x14536, # Chuck jumping
|
||||
0x145AE, # Chuck splitting
|
||||
0x147D2, # Chuck bounce
|
||||
0x147F6, # Chuck hurt
|
||||
0x147B8, # Chuck defeated
|
||||
0x19D55, # Dino torch shooting fire
|
||||
0x19FFA, # Blargg attacking
|
||||
0x188FF, # Swooper bat swooping
|
||||
0x08584, # Bowser statue flame spawn
|
||||
0x18ADA, # Bowser statue shooting a flame
|
||||
0x13043, # Bowser statue flame from generator
|
||||
0x0BF28, # Magikoopa shooting a magic spell
|
||||
0x0BC5F, # Magikoopa's magic spell hitting the ground
|
||||
0x0D745, # Line guided sprites' motor
|
||||
0x0DB70, # Grinder sound
|
||||
0x0E0A1, # Podoboo jumping
|
||||
0x0E5F2, # Dry bones/Bony beetle collapsing
|
||||
0x15474, # Giant wooden pillar hitting the ground
|
||||
0x2C9C1, # Spiked columns hitting the ground
|
||||
0x19B03, # Reznor shooting a fireball
|
||||
0x19A66, # Reznor: Hitting a platform
|
||||
0x1D752, # Reznor: Bridge collapsing
|
||||
0x19ABB, # Reznor: Defeated
|
||||
0x180E9, # Big Boo: Reappearing
|
||||
0x18233, # Big Boo: Hurt
|
||||
0x181DE, # Big Boo: Defeated
|
||||
0x1CEC1, # Wendy/Lemmy: Hitting a dummy
|
||||
0x1CECB, # Wendy/Lemmy: Hurt
|
||||
0x1CE33, # Wendy/Lemmy: Hurt (correct)
|
||||
0x1CE46, # Wendy/Lemmy: Hurt (incorrect)
|
||||
0x1CE24, # Wendy/Lemmy: Defeated
|
||||
0x1CE7E, # Wendy/Lemmy: Falling into lava
|
||||
0x0CF0A, # Ludwig: Jumping
|
||||
0x0D059, # Ludwig: Shooting a fireball
|
||||
0x10414, # Morton/Roy: Pillar drop
|
||||
0x0D299, # Morton/Roy: Ground smash
|
||||
0x0D3AB, # Morton/Roy/Ludwig: Hit by a fireball
|
||||
0x0D2FD, # Morton/Roy/Ludwig: Bouncing off
|
||||
0x0D31E, # Morton/Roy/Ludwig: Bouncing off (immune)
|
||||
0x0D334, # Morton/Roy/Ludwig: Bouncing off (immune, going up a wall)
|
||||
0x0CFD0, # Morton/Roy/Ludwig: Defeated
|
||||
0x0FCCE, # Iggy/Larry: Being hit
|
||||
0x0FD40, # Iggy/Larry: Being hit by a fireball
|
||||
0x0FB60, # Iggy/Larry: Falling in lava
|
||||
0x1A8B2, # Peach emerging from Clown Car
|
||||
0x1A8E3, # Peach throwing an item
|
||||
0x1B0B8, # Bumping into Clown Car
|
||||
0x1B129, # Bowser: Hurt
|
||||
0x1AB8C, # Bowser: Slamming the ground (third phase)
|
||||
0x1A5D0, # Bowser: Throwing a Mechakoopa
|
||||
0x1A603, # Bowser: Dropping a ball
|
||||
0x1A7F6, # Bowser: Spawning a flame
|
||||
0x1B1A3, # Bowser's ball slam #1
|
||||
0x1B1B1, # Bowser's ball slam #2
|
||||
0x1E016, # Bowser's arena lightning effect
|
||||
0x26CAA, # Map: Level tile reveal
|
||||
0x26763, # Map: Terrain reveal
|
||||
0x21170, # Map: Using a star
|
||||
0x2666F, # Map: Castle destruction
|
||||
0x272A4, # Map: Switch palace blocks spawning
|
||||
0x203CC, # Map: Earthquake
|
||||
0x27A78, # Map: Fish jumping
|
||||
0x27736, # Map: Valley of bowser thunder
|
||||
0x013C0, # Menu: Nintendo presents
|
||||
0x01AE3, # Menu: File menu option select
|
||||
0x01AF9, # Menu: File menu option change
|
||||
0x01BBB, # Menu: Saving game
|
||||
0x273FF, # Menu: Map misc menu appearing
|
||||
0x27567, # Menu: Something during the map
|
||||
0x1767A, # Cutscene: Castle door opening
|
||||
0x17683, # Cutscene: Castle door closing
|
||||
0x17765, # Cutscene: Ghost house door opening
|
||||
0x1776E, # Cutscene: Ghost house door closing
|
||||
0x04720, # Cutscene: Detonator fuse
|
||||
0x04732, # Cutscene: Bouncing off something
|
||||
0x0475F, # Cutscene: Tossing the castle
|
||||
0x04798, # Cutscene: Picking up the castle
|
||||
0x047AC, # Cutscene: Huff
|
||||
0x047D1, # Cutscene: Hitting a castle
|
||||
0x1C830, # Cutscene: Shooting a firework
|
||||
0x625AF, # Cutscene: Egg shattering
|
||||
0x64F2C, # Cutscene: Hitting a hill
|
||||
0x6512A, # Cutscene: Castle crashing
|
||||
0x65295, # Cutscene: Explosion
|
||||
0x652B2, # Cutscene: Castle sinking
|
||||
0x652BD, # Cutscene: Castle flying
|
||||
0x652D8, # Cutscene: Fake explosion
|
||||
0x653E7, # Cutscene: Castle being hit by a hammer
|
||||
0x657D8 # Cutscene: Castle being mopped away
|
||||
]
|
||||
|
||||
def generate_shuffled_sfx(rom, world: World):
|
||||
# Adjust "hitting sprites in succession" codes
|
||||
rom.write_bytes(0x0A60B, bytearray([0x22, 0x00, 0xFE, 0x0F, 0xEA, 0xEA])) # jsl $0FFE00 : nop #2 # Thrown sprites combo #1
|
||||
rom.write_bytes(0x0A659, bytearray([0x22, 0x47, 0xFE, 0x0F, 0xEA, 0xEA])) # jsl $0FFE47 : nop #2 # Thrown sprites combo #2
|
||||
rom.write_bytes(0x0A865, bytearray([0x22, 0x47, 0xFE, 0x0F, 0xEA, 0xEA])) # jsl $0FFE47 : nop #2 # Star combo
|
||||
rom.write_bytes(0x0AB57, bytearray([0x22, 0x00, 0xFE, 0x0F, 0xEA, 0xEA])) # jsl $0FFE00 : nop #2 # Bouncing off enemies
|
||||
rom.write_bytes(0x172C0, bytearray([0x22, 0x00, 0xFE, 0x0F, 0xEA, 0xEA])) # jsl $0FFE00 : nop #2 # Star combo (wigglers)
|
||||
rom.write_bytes(0x1961D, bytearray([0x22, 0x00, 0xFE, 0x0F, 0xEA, 0xEA])) # jsl $0FFE00 : nop #2 # Star combo (rexes)
|
||||
rom.write_bytes(0x19639, bytearray([0x22, 0x00, 0xFE, 0x0F, 0xEA, 0xEA])) # jsl $0FFE00 : nop #2 # Bouncing off rexes
|
||||
|
||||
COMBO_SFX_ADDR = 0x7FE00
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0000, bytearray([0xC0, 0x01])) # COMBO_Y: CPY #$01
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0002, bytearray([0xD0, 0x06])) # BNE label_0FFE0A
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0004, bytearray([0xA9, 0x13])) # LDA #$13
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0006, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0009, bytearray([0x6B])) # RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x000A, bytearray([0xC0, 0x02])) # label_0FFE0A: CPY #$02
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x000C, bytearray([0xD0, 0x06])) # BNE label_0FFE14
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x000E, bytearray([0xA9, 0x14])) # LDA #$14
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0010, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0013, bytearray([0x6B])) # RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0014, bytearray([0xC0, 0x03])) # label_0FFE14: CPY #$03
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0016, bytearray([0xD0, 0x06])) # BNE label_0FFE1E
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0018, bytearray([0xA9, 0x15])) # LDA #$15
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x001A, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x001D, bytearray([0x6B])) # RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x001E, bytearray([0xC0, 0x04])) # label_0FFE1E: CPY #$04
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0020, bytearray([0xD0, 0x06])) # BNE label_0FFE28
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0022, bytearray([0xA9, 0x16])) # LDA #$16
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0024, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0027, bytearray([0x6B])) # RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0028, bytearray([0xC0, 0x05])) # label_0FFE28: CPY #$05
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x002A, bytearray([0xD0, 0x06])) # BNE label_0FFE32
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x002C, bytearray([0xA9, 0x17])) # LDA #$17
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x002E, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0031, bytearray([0x6B])) # RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0032, bytearray([0xC0, 0x06])) # label_0FFE32: CPY #$06
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0034, bytearray([0xD0, 0x06])) # BNE label_0FFE3C
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0036, bytearray([0xA9, 0x18])) # LDA #$18
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0038, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x003B, bytearray([0x6B])) # RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x003C, bytearray([0xC0, 0x07])) # label_0FFE3C: CPY #$07
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x003E, bytearray([0xD0, 0x06])) # BNE label_0FFE46
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0040, bytearray([0xA9, 0x19])) # LDA #$19
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0042, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0045, bytearray([0x6B])) # RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0046, bytearray([0x6B])) # label_0FFE46: RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0047, bytearray([0xE0, 0x01])) # COMBO_X: CPX #$01
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0049, bytearray([0xD0, 0x06])) # BNE label_0FFE51
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x004B, bytearray([0xA9, 0x13])) # LDA #$13
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x004D, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0050, bytearray([0x6B])) # RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0051, bytearray([0xE0, 0x02])) # label_0FFE51: CPX #$02
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0053, bytearray([0xD0, 0x06])) # BNE label_0FFE5B
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0055, bytearray([0xA9, 0x14])) # LDA #$14
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0057, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x005A, bytearray([0x6B])) # RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x005B, bytearray([0xE0, 0x03])) # label_0FFE5B: CPX #$03
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x005D, bytearray([0xD0, 0x06])) # BNE label_0FFE65
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x005F, bytearray([0xA9, 0x15])) # LDA #$15
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0061, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0064, bytearray([0x6B])) # RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0065, bytearray([0xE0, 0x04])) # label_0FFE65: CPX #$04
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0067, bytearray([0xD0, 0x06])) # BNE label_0FFE6F
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0069, bytearray([0xA9, 0x16])) # LDA #$16
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x006B, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x006E, bytearray([0x6B])) # RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x006F, bytearray([0xE0, 0x05])) # label_0FFE6F: CPX #$05
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0071, bytearray([0xD0, 0x06])) # BNE label_0FFE79
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0073, bytearray([0xA9, 0x17])) # LDA #$17
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0075, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0078, bytearray([0x6B])) # RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0079, bytearray([0xE0, 0x06])) # label_0FFE79: CPX #$06
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x007B, bytearray([0xD0, 0x06])) # BNE label_0FFE83
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x007D, bytearray([0xA9, 0x18])) # LDA #$18
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x007F, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0082, bytearray([0x6B])) # RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0083, bytearray([0xE0, 0x07])) # label_0FFE83: CPX #$07
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0085, bytearray([0xD0, 0x06])) # BNE label_0FFE8D
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0087, bytearray([0xA9, 0x19])) # LDA #$19
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x0089, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x008C, bytearray([0x6B])) # RTL
|
||||
rom.write_bytes(COMBO_SFX_ADDR + 0x008D, bytearray([0x6B])) # label_0FFE8D: RTL
|
||||
|
||||
# Adjust "Hit head on ceiling" code
|
||||
rom.write_bytes(0x06D41 + 0x00, bytearray([0xA9, 0x01])) # lda #$01
|
||||
rom.write_bytes(0x06D41 + 0x02, bytearray([0x8D, 0xF9, 0x1D])) # sta $1DF9
|
||||
rom.write_bytes(0x06D41 + 0x05, bytearray([0xEA, 0xEA, 0xEA, 0xEA])) # nop #4
|
||||
|
||||
# Manually add "Map: Stepping onto a level tile" random SFX
|
||||
selected_sfx = world.random.choice(valid_sfxs)
|
||||
rom.write_byte(0x2169F + 0x01, selected_sfx[0])
|
||||
rom.write_byte(0x2169F + 0x04, selected_sfx[1] + 0xF9)
|
||||
|
||||
# Disable panning on Bowser's flames
|
||||
rom.write_bytes(0x1A83D, bytearray([0xEA, 0xEA, 0xEA])) # nop #3
|
||||
|
||||
# Randomize SFX calls
|
||||
for address in game_sfx_calls:
|
||||
# Get random SFX
|
||||
if world.options.sfx_shuffle != "singularity":
|
||||
selected_sfx = world.random.choice(valid_sfxs)
|
||||
# Write randomized SFX num
|
||||
rom.write_byte(address + 0x01, selected_sfx[0])
|
||||
# Write randomized SFX port
|
||||
rom.write_byte(address + 0x03, selected_sfx[1] + 0xF9)
|
||||
|
||||
def generate_shuffled_level_music(world: World):
|
||||
shuffled_level_music = level_music_value_data.copy()
|
||||
|
||||
if world.music_shuffle[player] == "consistent":
|
||||
world.per_slot_randoms[player].shuffle(shuffled_level_music)
|
||||
elif world.music_shuffle[player] == "singularity":
|
||||
single_song = world.per_slot_randoms[player].choice(shuffled_level_music)
|
||||
if world.options.music_shuffle == "consistent":
|
||||
world.random.shuffle(shuffled_level_music)
|
||||
elif world.options.music_shuffle == "singularity":
|
||||
single_song = world.random.choice(shuffled_level_music)
|
||||
shuffled_level_music = [single_song for i in range(len(shuffled_level_music))]
|
||||
|
||||
return shuffled_level_music
|
||||
|
||||
def generate_shuffled_ow_music(world, player):
|
||||
def generate_shuffled_ow_music(world: World):
|
||||
shuffled_ow_music = ow_music_value_data.copy()
|
||||
|
||||
if world.music_shuffle[player] == "consistent" or world.music_shuffle[player] == "full":
|
||||
world.per_slot_randoms[player].shuffle(shuffled_ow_music)
|
||||
elif world.music_shuffle[player] == "singularity":
|
||||
single_song = world.per_slot_randoms[player].choice(shuffled_ow_music)
|
||||
if world.options.music_shuffle == "consistent" or world.options.music_shuffle == "full":
|
||||
world.random.shuffle(shuffled_ow_music)
|
||||
elif world.options.music_shuffle == "singularity":
|
||||
single_song = world.random.choice(shuffled_ow_music)
|
||||
shuffled_ow_music = [single_song for i in range(len(shuffled_ow_music))]
|
||||
|
||||
return shuffled_ow_music
|
||||
|
||||
def generate_shuffled_ow_palettes(rom, world, player):
|
||||
if world.overworld_palette_shuffle[player]:
|
||||
for address, valid_palettes in valid_ow_palettes.items():
|
||||
chosen_palette = world.per_slot_randoms[player].choice(valid_palettes)
|
||||
rom.write_byte(address, chosen_palette)
|
||||
def generate_shuffled_ow_palettes(rom, world: World):
|
||||
if world.options.overworld_palette_shuffle != "on_legacy":
|
||||
return
|
||||
|
||||
def generate_shuffled_header_data(rom, world, player):
|
||||
if world.music_shuffle[player] != "full" and not world.foreground_palette_shuffle[player] and not world.background_palette_shuffle[player]:
|
||||
for address, valid_palettes in valid_ow_palettes.items():
|
||||
chosen_palette = world.random.choice(valid_palettes)
|
||||
rom.write_byte(address, chosen_palette)
|
||||
|
||||
def generate_shuffled_header_data(rom, world: World):
|
||||
if world.options.music_shuffle != "full" and world.options.level_palette_shuffle != "on_legacy":
|
||||
return
|
||||
|
||||
for level_id in range(0, 0x200):
|
||||
|
@ -194,24 +650,425 @@ def generate_shuffled_header_data(rom, world, player):
|
|||
|
||||
tileset = level_header[4] & 0x0F
|
||||
|
||||
if world.music_shuffle[player] == "full":
|
||||
if world.options.music_shuffle == "full":
|
||||
level_header[2] &= 0x8F
|
||||
level_header[2] |= (world.per_slot_randoms[player].randint(0, 7) << 5)
|
||||
level_header[2] |= (world.random.randint(0, 7) << 5)
|
||||
|
||||
if (world.foreground_palette_shuffle[player] and tileset in valid_foreground_palettes):
|
||||
level_header[3] &= 0xF8
|
||||
level_header[3] |= world.per_slot_randoms[player].choice(valid_foreground_palettes[tileset])
|
||||
if world.options.level_palette_shuffle == "on_legacy":
|
||||
if tileset in valid_foreground_palettes:
|
||||
level_header[3] &= 0xF8
|
||||
level_header[3] |= world.random.choice(valid_foreground_palettes[tileset])
|
||||
|
||||
if world.background_palette_shuffle[player]:
|
||||
layer2_ptr_list = list(rom.read_bytes(0x2E600 + level_id * 3, 3))
|
||||
layer2_ptr = (layer2_ptr_list[2] << 16 | layer2_ptr_list[1] << 8 | layer2_ptr_list[0])
|
||||
|
||||
if layer2_ptr in valid_background_palettes:
|
||||
level_header[0] &= 0x1F
|
||||
level_header[0] |= (world.per_slot_randoms[player].choice(valid_background_palettes[layer2_ptr]) << 5)
|
||||
level_header[0] |= (world.random.choice(valid_background_palettes[layer2_ptr]) << 5)
|
||||
|
||||
if layer2_ptr in valid_background_colors:
|
||||
level_header[1] &= 0x1F
|
||||
level_header[1] |= (world.per_slot_randoms[player].choice(valid_background_colors[layer2_ptr]) << 5)
|
||||
level_header[1] |= (world.random.choice(valid_background_colors[layer2_ptr]) << 5)
|
||||
|
||||
rom.write_bytes(layer1_ptr, bytes(level_header))
|
||||
|
||||
def generate_curated_level_palette_data(rom, world: World):
|
||||
PALETTE_LEVEL_CODE_ADDR = 0x88000
|
||||
PALETTE_INDEX_ADDR = 0x8F000
|
||||
PALETTE_LEVEL_TILESET_ADDR = 0x8F200
|
||||
PALETTE_LEVEL_PTR_ADDR = 0x92000
|
||||
PALETTE_LEVEL_DATA_ADDR = 0xA8000
|
||||
|
||||
addr = pc_to_snes(PALETTE_LEVEL_PTR_ADDR)
|
||||
snes_level_palette_pointers_1 = bytearray([0xBF, (addr)&0xFF, (addr>>8)&0xFF, (addr>>16)&0xFF])
|
||||
snes_level_palette_pointers_2 = bytearray([0xBF, (addr+2)&0xFF, (addr>>8)&0xFF, (addr>>16)&0xFF])
|
||||
|
||||
# Enable curated palette loader
|
||||
rom.write_bytes(0x02BED, bytearray([0x5C, 0x00, 0x80, 0x11])) # org $00ABED : jml custom_palettes
|
||||
rom.write_bytes(0x02330, bytearray([0x5C, 0x02, 0x80, 0x11])) # org $00A318 : jml custom_palettes_original
|
||||
rom.write_bytes(0x013D7, bytearray([0x20, 0x30, 0xA3])) # org $0093D7 : jmp $A330
|
||||
rom.write_bytes(0x014DA, bytearray([0x20, 0x30, 0xA3])) # org $0094DA : jmp $A330
|
||||
rom.write_bytes(0x015EC, bytearray([0x20, 0x30, 0xA3])) # org $0095EC : jmp $A330
|
||||
rom.write_bytes(0x0165B, bytearray([0x20, 0x30, 0xA3])) # org $00965B : jmp $A330
|
||||
rom.write_bytes(0x02DD9, bytearray([0x20, 0x30, 0xA3])) # org $00ADD9 : jmp $A330
|
||||
rom.write_bytes(0x02E1F, bytearray([0x20, 0x30, 0xA3])) # org $00AE1F : jmp $A330
|
||||
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0000, bytearray([0x80, 0x09])) # bra custom_palettes
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0002, bytearray([0xC2, 0x30])) # .original rep #$30
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0004, bytearray([0xA9, 0xDD, 0x7F])) # lda #$7FDD
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0007, bytearray([0x5C, 0xF2, 0xAB, 0x00])) # jml $00ABF2
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x000B, bytearray([0xC2, 0x30])) # custom_palettes: rep #$30
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x000D, bytearray([0xA9, 0x70, 0xB1])) # lda #$B170
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0010, bytearray([0x85, 0x0A])) # sta !_ptr
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0012, bytearray([0x64, 0x0C])) # stz !_ptr+$02
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0014, bytearray([0xA9, 0x10, 0x00])) # lda.w #$0010
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0017, bytearray([0x85, 0x04])) # sta !_index
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0019, bytearray([0xA9, 0x07, 0x00])) # lda #$0007
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x001C, bytearray([0x85, 0x06])) # sta !_x_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x001E, bytearray([0xA9, 0x01, 0x00])) # lda #$0001
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0021, bytearray([0x85, 0x08])) # sta !_y_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0023, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0026, bytearray([0xAE, 0x0B, 0x01])) # .get_index ldx $010B
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0029, bytearray([0xBF, 0x00, 0xF2, 0x11])) # lda.l level_tilesets,x
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x002D, bytearray([0x29, 0xFF, 0x00])) # and #$00FF
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0030, bytearray([0xEB])) # xba
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0031, bytearray([0x85, 0x00])) # sta !_tileset
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0033, bytearray([0xBF, 0x00, 0xF0, 0x11])) # lda.l level_index,x
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0037, bytearray([0x29, 0xFF, 0x00])) # and #$00FF
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x003A, bytearray([0x05, 0x00])) # ora !_tileset
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x003C, bytearray([0x85, 0x0A])) # sta !_ptr
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x003E, bytearray([0x0A])) # asl
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x003F, bytearray([0x18])) # clc
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0040, bytearray([0x65, 0x0A])) # adc !_ptr
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0042, bytearray([0x85, 0x0E])) # sta !_num
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0044, bytearray([0xAA])) # tax
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0045, snes_level_palette_pointers_1) # .back_color lda.l palette_pointers,x
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0049, bytearray([0x85, 0x0A])) # sta !_ptr
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x004B, snes_level_palette_pointers_2) # lda.l palette_pointers+$02,x
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x004F, bytearray([0x85, 0x0C])) # sta !_ptr+$02
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0051, bytearray([0xA7, 0x0A])) # lda [!_ptr]
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0053, bytearray([0x8D, 0x01, 0x07])) # sta $0701
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0056, bytearray([0xE6, 0x0A])) # inc !_ptr
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0058, bytearray([0xE6, 0x0A])) # inc !_ptr
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x005A, bytearray([0xA9, 0x02, 0x00])) # .background lda.w #$0001*$02
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x005D, bytearray([0x85, 0x04])) # sta !_index
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x005F, bytearray([0xA9, 0x06, 0x00])) # lda #$0006
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0062, bytearray([0x85, 0x06])) # sta !_x_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0064, bytearray([0xA9, 0x01, 0x00])) # lda #$0001
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0067, bytearray([0x85, 0x08])) # sta !_y_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0069, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x006C, bytearray([0xA9, 0x42, 0x00])) # .foreground lda.w #$0021*$02
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x006F, bytearray([0x85, 0x04])) # sta !_index
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0071, bytearray([0xA9, 0x06, 0x00])) # lda #$0006
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0074, bytearray([0x85, 0x06])) # sta !_x_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0076, bytearray([0xA9, 0x01, 0x00])) # lda #$0001
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0079, bytearray([0x85, 0x08])) # sta !_y_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x007B, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x007E, bytearray([0xA9, 0x52, 0x00])) # .berries lda.w #$0029*$02
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0081, bytearray([0x85, 0x04])) # sta !_index
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0083, bytearray([0xA9, 0x06, 0x00])) # lda #$0006
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0086, bytearray([0x85, 0x06])) # sta !_x_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0088, bytearray([0xA9, 0x02, 0x00])) # lda #$0002
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x008B, bytearray([0x85, 0x08])) # sta !_y_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x008D, bytearray([0xA5, 0x0A])) # lda !_ptr
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x008F, bytearray([0x48])) # pha
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0090, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0093, bytearray([0x68])) # pla
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0094, bytearray([0x85, 0x0A])) # sta !_ptr
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0096, bytearray([0xA9, 0x32, 0x01])) # lda.w #$0099*$02
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0099, bytearray([0x85, 0x04])) # sta !_index
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x009B, bytearray([0xA9, 0x06, 0x00])) # lda #$0006
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x009E, bytearray([0x85, 0x06])) # sta !_x_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00A0, bytearray([0xA9, 0x02, 0x00])) # lda #$0002
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00A3, bytearray([0x85, 0x08])) # sta !_y_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00A5, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00A8, bytearray([0xA9, 0x82, 0x00])) # .global lda.w #$0041*$02
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00AB, bytearray([0x85, 0x04])) # sta !_index
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00AD, bytearray([0xA9, 0x06, 0x00])) # lda #$0006
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00B0, bytearray([0x85, 0x06])) # sta !_x_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00B2, bytearray([0xA9, 0x0B, 0x00])) # lda #$000B
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00B5, bytearray([0x85, 0x08])) # sta !_y_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00B7, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00BA, bytearray([0xA5, 0x00])) # .sprite_specific lda !_tileset
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00BC, bytearray([0xC9, 0x00, 0x05])) # cmp #$0500
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00BF, bytearray([0xD0, 0x1D])) # bne .end
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00C1, bytearray([0xAD, 0x2E, 0x19])) # lda $192E
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00C4, bytearray([0x29, 0x0F, 0x00])) # and #$000F
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00C7, bytearray([0xC9, 0x02, 0x00])) # cmp #$0002
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00CA, bytearray([0xD0, 0x12])) # bne .end
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00CC, bytearray([0xA9, 0xC2, 0x01])) # lda.w #$00E1*$02
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00CF, bytearray([0x85, 0x04])) # sta !_index
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00D1, bytearray([0xA9, 0x06, 0x00])) # lda #$0006
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00D4, bytearray([0x85, 0x06])) # sta !_x_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00D6, bytearray([0xA9, 0x01, 0x00])) # lda #$0001
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00D9, bytearray([0x85, 0x08])) # sta !_y_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00DB, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00DE, bytearray([0xE2, 0x30])) # .end sep #$30
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00E0, bytearray([0x5C, 0xEC, 0xAC, 0x00])) # jml $00ACEC
|
||||
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00E4, bytearray([0xA6, 0x04])) # load_colors: ldx !_index
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00E6, bytearray([0xA4, 0x06])) # ldy !_x_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00E8, bytearray([0xA7, 0x0A])) # .x_loop lda [!_ptr]
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00EA, bytearray([0x9D, 0x03, 0x07])) # sta $0703,x
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00ED, bytearray([0xE6, 0x0A])) # inc !_ptr
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00EF, bytearray([0xE6, 0x0A])) # inc !_ptr
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F1, bytearray([0xE8])) # inx
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F2, bytearray([0xE8])) # inx
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F3, bytearray([0x88])) # dey
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F4, bytearray([0x10, 0xF2])) # bpl .x_loop
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F6, bytearray([0xA5, 0x04])) # lda !_index
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F8, bytearray([0x18])) # clc
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F9, bytearray([0x69, 0x20, 0x00])) # adc #$0020
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00FC, bytearray([0x85, 0x04])) # sta !_index
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00FE, bytearray([0xC6, 0x08])) # dec !_y_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0100, bytearray([0x10, 0xE2])) # bpl load_colors
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0102, bytearray([0x60])) # rts
|
||||
|
||||
# Load palette paths
|
||||
data = pkgutil.get_data(__name__, f"data/palettes/level/palettes.json").decode("utf-8")
|
||||
tilesets = json.loads(data)
|
||||
|
||||
# Writes the level tileset index to ROM
|
||||
rom.write_bytes(PALETTE_LEVEL_TILESET_ADDR, bytearray(level_palette_index))
|
||||
|
||||
# Builds the table in ROM that holds the palette index for each level, including sublevels
|
||||
for level_id in range(0x200):
|
||||
tileset_num = level_palette_index[level_id]
|
||||
if tileset_num != 0xFF:
|
||||
tileset = tileset_names[tileset_num]
|
||||
else:
|
||||
tileset = tileset_names[0x19]
|
||||
palette = world.random.randint(0, len(tilesets[tileset])-1)
|
||||
rom.write_bytes(PALETTE_INDEX_ADDR + level_id, bytearray([palette]))
|
||||
|
||||
# Writes the actual level palette data and pointer to said data to the ROM
|
||||
pal_offset = 0x0000
|
||||
tileset_num = 0
|
||||
bank_palette_count = 0
|
||||
for tileset in tilesets.keys():
|
||||
for palette in range(len(tilesets[tileset])):
|
||||
# Handle bank crossing
|
||||
if bank_palette_count == 110:
|
||||
pal_offset = (pal_offset & 0xF8000) + 0x8000
|
||||
bank_palette_count = 0
|
||||
# Write pointer
|
||||
data_ptr = pc_to_snes(PALETTE_LEVEL_DATA_ADDR + pal_offset)
|
||||
rom.write_bytes(PALETTE_LEVEL_PTR_ADDR + ((tileset_num*3)<<8) + (palette*3), bytearray([data_ptr & 0xFF, (data_ptr>>8)&0xFF, (data_ptr>>16)&0xFF]))
|
||||
# Write data
|
||||
rom.write_bytes(PALETTE_LEVEL_DATA_ADDR + pal_offset, read_palette_file(tileset, tilesets[tileset][palette], "level"))
|
||||
pal_offset += 0x128
|
||||
bank_palette_count += 1
|
||||
tileset_num += 1
|
||||
|
||||
# Fix eaten berry tiles
|
||||
EATEN_BERRY_ADDR = 0x68248
|
||||
rom.write_byte(EATEN_BERRY_ADDR + 0x01, 0x04)
|
||||
rom.write_byte(EATEN_BERRY_ADDR + 0x03, 0x04)
|
||||
rom.write_byte(EATEN_BERRY_ADDR + 0x05, 0x04)
|
||||
rom.write_byte(EATEN_BERRY_ADDR + 0x07, 0x04)
|
||||
|
||||
# Fix title screen changing background colors
|
||||
rom.write_bytes(0x1D30, bytearray([0xEA, 0xEA, 0xEA]))
|
||||
|
||||
# Skips level intros automatically
|
||||
rom.write_byte(0x4896, 0x80)
|
||||
|
||||
def generate_curated_map_palette_data(rom, world: World):
|
||||
PALETTE_MAP_CODE_ADDR = 0x88200
|
||||
PALETTE_UPLOADER_EDIT = 0x88400
|
||||
PALETTE_MAP_INDEX_ADDR = 0x8F400
|
||||
PALETTE_MAP_PTR_ADDR = 0x90000
|
||||
PALETTE_MAP_DATA_ADDR = 0x98000
|
||||
|
||||
addr = pc_to_snes(PALETTE_MAP_PTR_ADDR)
|
||||
snes_map_palette_pointers_1 = bytearray([0xBF, (addr)&0xFF, (addr>>8)&0xFF, (addr>>16)&0xFF])
|
||||
snes_map_palette_pointers_2 = bytearray([0xBF, (addr+2)&0xFF, (addr>>8)&0xFF, (addr>>16)&0xFF])
|
||||
|
||||
rom.write_bytes(0x02D25, bytearray([0x5C, 0x09, 0x82, 0x11])) # org $00AD25 : jml map_palettes
|
||||
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0000, bytearray([0xC2, 0x30])) # map_og_palettes: rep #$30
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0002, bytearray([0xA0, 0xD8, 0xB3])) # ldy #$B3D8
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0005, bytearray([0x5C, 0x2A, 0xAD, 0x00])) # jml $00AD2A
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0009, bytearray([0xC2, 0x30])) # map_palettes: rep #$30
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x000B, bytearray([0xAD, 0x31, 0x19])) # .prepare_index lda $1931
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x000E, bytearray([0x29, 0x0F, 0x00])) # and #$000F
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0011, bytearray([0x3A])) # dec
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0012, bytearray([0xAA])) # tax
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0013, bytearray([0xEB])) # xba
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0014, bytearray([0x85, 0x0E])) # sta !_num
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0016, bytearray([0xBF, 0x00, 0xF4, 0x11])) # lda.l map_index,x
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x001A, bytearray([0x29, 0xFF, 0x00])) # and #$00FF
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x001D, bytearray([0x05, 0x0E])) # ora !_num
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x001F, bytearray([0x85, 0x0A])) # sta !_ptr
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0021, bytearray([0x0A])) # asl
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0022, bytearray([0x18])) # clc
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0023, bytearray([0x65, 0x0A])) # adc !_ptr
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0025, bytearray([0xAA])) # tax
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0026, snes_map_palette_pointers_1) # lda.l map_palette_pointers,x
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x002A, bytearray([0x85, 0x0A])) # sta !_ptr
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x002C, snes_map_palette_pointers_2) # lda.l map_palette_pointers+$02,x
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0030, bytearray([0x85, 0x0C])) # sta !_ptr+$02
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0032, bytearray([0xA7, 0x0A])) # .load_back_color lda [!_ptr]
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0034, bytearray([0x8D, 0x01, 0x07])) # sta $0701
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0037, bytearray([0xE6, 0x0A])) # inc !_ptr
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0039, bytearray([0xE6, 0x0A])) # inc !_ptr
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x003B, bytearray([0xA9, 0x82, 0x00])) # .load_layer_2 lda.w #$0041*$02
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x003E, bytearray([0x85, 0x04])) # sta !_index
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0040, bytearray([0xA9, 0x06, 0x00])) # lda #$0006
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0043, bytearray([0x85, 0x06])) # sta !_x_span
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0045, bytearray([0xA9, 0x03, 0x00])) # lda #$0003
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0048, bytearray([0x85, 0x08])) # sta !_y_span
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x004A, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x004D, bytearray([0xA9, 0x52, 0x00])) # .load_layer_1 lda.w #$0029*$02
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0050, bytearray([0x85, 0x04])) # sta !_index
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0052, bytearray([0xA9, 0x06, 0x00])) # lda #$0006
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0055, bytearray([0x85, 0x06])) # sta !_x_span
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0057, bytearray([0xA9, 0x05, 0x00])) # lda #$0005
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x005A, bytearray([0x85, 0x08])) # sta !_y_span
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x005C, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x005F, bytearray([0xA9, 0x10, 0x00])) # .load_layer_3 lda.w #$0008*$02
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0062, bytearray([0x85, 0x04])) # sta !_index
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0064, bytearray([0xA9, 0x07, 0x00])) # lda #$0007
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0067, bytearray([0x85, 0x06])) # sta !_x_span
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0069, bytearray([0xA9, 0x01, 0x00])) # lda #$0001
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x006C, bytearray([0x85, 0x08])) # sta !_y_span
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x006E, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0071, bytearray([0xA9, 0x02, 0x01])) # .load_sprites lda.w #$0081*$02
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0074, bytearray([0x85, 0x04])) # sta !_index
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0076, bytearray([0xA9, 0x06, 0x00])) # lda #$0006
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0079, bytearray([0x85, 0x06])) # sta !_x_span
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x007B, bytearray([0xA9, 0x07, 0x00])) # lda #$0007
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x007E, bytearray([0x85, 0x08])) # sta !_y_span
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0080, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors
|
||||
rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0083, bytearray([0x5C, 0xA3, 0xAD, 0x00])) # .return jml $00ADA3
|
||||
|
||||
rom.write_bytes(0x2488, bytearray([0x5C, 0x00, 0x84, 0x11])) # org $00A488 : jml palette_upload
|
||||
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0000, bytearray([0xAD, 0x00, 0x01])) # palette_upload: lda $0100
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0003, bytearray([0xC9, 0x0E])) # cmp #$0E
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0005, bytearray([0xF0, 0x0A])) # beq .map
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0007, bytearray([0xAC, 0x80, 0x06])) # .regular ldy $0680
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x000A, bytearray([0xBE, 0x81, 0xA4])) # ldx.w $A47F+2,y
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x000D, bytearray([0x5C, 0x8E, 0xA4, 0x00])) # jml $00A48E
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0011, bytearray([0xAD, 0xD9, 0x13])) # .map lda $13D9
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0014, bytearray([0xC9, 0x0A])) # cmp #$0A
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0016, bytearray([0xD0, 0xEF])) # bne .regular
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0018, bytearray([0xAD, 0xE8, 0x1D])) # lda $1DE8
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x001B, bytearray([0xC9, 0x06])) # cmp #$06
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x001D, bytearray([0xD0, 0xE8])) # bne .regular
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x001F, bytearray([0x9C, 0x03, 0x07])) # stz $0703
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0022, bytearray([0x9C, 0x04, 0x07])) # stz $0704
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0025, bytearray([0x9C, 0x21, 0x21])) # stz $2121
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0028, bytearray([0xA2, 0x06])) # ldx #$06
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x002A, bytearray([0xBD, 0x49, 0x92])) # .loop lda.w $9249,x
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x002D, bytearray([0x9D, 0x20, 0x43])) # sta $4320,x
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0030, bytearray([0xCA])) # dex
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0031, bytearray([0x10, 0xF7])) # bpl .loop
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0033, bytearray([0xA9, 0x04])) # lda #$04
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0035, bytearray([0x8D, 0x0B, 0x42])) # sta $420B
|
||||
rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0038, bytearray([0x5C, 0xCF, 0xA4, 0x00])) # jml $00A4CF
|
||||
|
||||
# Insert this piece of ASM again in case levels are disabled
|
||||
PALETTE_LEVEL_CODE_ADDR = 0x88000
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00E4, bytearray([0xA6, 0x04])) # load_colors: ldx !_index
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00E6, bytearray([0xA4, 0x06])) # ldy !_x_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00E8, bytearray([0xA7, 0x0A])) # .x_loop lda [!_ptr]
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00EA, bytearray([0x9D, 0x03, 0x07])) # sta $0703,x
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00ED, bytearray([0xE6, 0x0A])) # inc !_ptr
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00EF, bytearray([0xE6, 0x0A])) # inc !_ptr
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F1, bytearray([0xE8])) # inx
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F2, bytearray([0xE8])) # inx
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F3, bytearray([0x88])) # dey
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F4, bytearray([0x10, 0xF2])) # bpl .x_loop
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F6, bytearray([0xA5, 0x04])) # lda !_index
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F8, bytearray([0x18])) # clc
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F9, bytearray([0x69, 0x20, 0x00])) # adc #$0020
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00FC, bytearray([0x85, 0x04])) # sta !_index
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00FE, bytearray([0xC6, 0x08])) # dec !_y_span
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0100, bytearray([0x10, 0xE2])) # bpl load_colors
|
||||
rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0102, bytearray([0x60])) # rts
|
||||
|
||||
# Load palette paths
|
||||
data = pkgutil.get_data(__name__, f"data/palettes/map/palettes.json").decode("utf-8")
|
||||
maps = json.loads(data)
|
||||
|
||||
for map_id in range(0x07):
|
||||
current_map_name = map_names[map_id]
|
||||
palette = world.random.randint(0, len(maps[current_map_name])-1)
|
||||
rom.write_bytes(PALETTE_MAP_INDEX_ADDR + map_id, bytearray([palette]))
|
||||
|
||||
# Writes the actual map palette data and pointer to said data to the ROM
|
||||
pal_offset = 0x0000
|
||||
map_num = 0
|
||||
bank_palette_count = 0
|
||||
for current_map in maps.keys():
|
||||
for palette in range(len(maps[current_map])):
|
||||
# Handle bank crossing
|
||||
if bank_palette_count == 113:
|
||||
pal_offset = (pal_offset & 0xF8000) + 0x8000
|
||||
bank_palette_count = 0
|
||||
# Write pointer
|
||||
data_ptr = pc_to_snes(PALETTE_MAP_DATA_ADDR + pal_offset)
|
||||
rom.write_bytes(PALETTE_MAP_PTR_ADDR + ((map_num*3)<<8) + (palette*3), bytearray([data_ptr & 0xFF, (data_ptr>>8)&0xFF, (data_ptr>>16)&0xFF]))
|
||||
# Write data
|
||||
rom.write_bytes(PALETTE_MAP_DATA_ADDR + pal_offset, read_palette_file(current_map, maps[current_map][palette], "map"))
|
||||
# Update map mario palette
|
||||
chosen_palette = world.options.mario_palette.value
|
||||
rom.write_bytes(PALETTE_MAP_DATA_ADDR + pal_offset + 206, bytes(ow_mario_palettes[chosen_palette]))
|
||||
pal_offset += 0x11C
|
||||
bank_palette_count += 1
|
||||
map_num += 1
|
||||
|
||||
|
||||
def pc_to_snes(address):
|
||||
return ((address << 1) & 0x7F0000) | (address & 0x7FFF) | 0x8000
|
||||
|
||||
def read_palette_file(tileset, filename, type_):
|
||||
palette_file = pkgutil.get_data(__name__, f"data/palettes/{type_}/{tileset}/{filename}")
|
||||
colors = bytearray([])
|
||||
|
||||
# Copy back colors
|
||||
colors += bytearray([palette_file[0x200], palette_file[0x201]])
|
||||
|
||||
if type_ == "level":
|
||||
# Copy background colors
|
||||
colors += bytearray([palette_file[(0x01*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x11*2)+(i)] for i in range(14)])
|
||||
|
||||
# Copy foreground colors
|
||||
colors += bytearray([palette_file[(0x21*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x31*2)+(i)] for i in range(14)])
|
||||
|
||||
# Copy berry colors
|
||||
colors += bytearray([palette_file[(0x29*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x39*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x49*2)+(i)] for i in range(14)])
|
||||
|
||||
# Copy global colors
|
||||
colors += bytearray([palette_file[(0x41*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x51*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x61*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x71*2)+(i)] for i in range(14)])
|
||||
|
||||
# Copy sprite colors
|
||||
colors += bytearray([palette_file[(0x81*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x91*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0xA1*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0xB1*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0xC1*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0xD1*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0xE1*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0xF1*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0xE9*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0xF9*2)+(i)] for i in range(14)])
|
||||
|
||||
elif type_ == "map":
|
||||
# Copy layer 2 colors
|
||||
colors += bytearray([palette_file[(0x41*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x51*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x61*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x71*2)+(i)] for i in range(14)])
|
||||
|
||||
# Copy layer 1 colors
|
||||
colors += bytearray([palette_file[(0x29*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x39*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x49*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x59*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x69*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x79*2)+(i)] for i in range(14)])
|
||||
|
||||
# Copy layer 3 colors
|
||||
colors += bytearray([palette_file[(0x08*2)+(i)] for i in range(16)])
|
||||
colors += bytearray([palette_file[(0x18*2)+(i)] for i in range(16)])
|
||||
|
||||
# Copy sprite colors
|
||||
colors += bytearray([palette_file[(0x81*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0x91*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0xA1*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0xB1*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0xC1*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0xD1*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0xE1*2)+(i)] for i in range(14)])
|
||||
colors += bytearray([palette_file[(0xF1*2)+(i)] for i in range(14)])
|
||||
|
||||
return colors
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import logging
|
||||
import asyncio
|
||||
import time
|
||||
|
||||
from NetUtils import ClientStatus, color
|
||||
|
@ -17,11 +16,19 @@ SRAM_START = 0xE00000
|
|||
SMW_ROMHASH_START = 0x7FC0
|
||||
ROMHASH_SIZE = 0x15
|
||||
|
||||
SMW_PROGRESS_DATA = WRAM_START + 0x1F02
|
||||
SMW_DRAGON_COINS_DATA = WRAM_START + 0x1F2F
|
||||
SMW_PATH_DATA = WRAM_START + 0x1EA2
|
||||
SMW_EVENT_ROM_DATA = ROM_START + 0x2D608
|
||||
SMW_ACTIVE_LEVEL_DATA = ROM_START + 0x37F70
|
||||
SMW_PROGRESS_DATA = WRAM_START + 0x1F02
|
||||
SMW_DRAGON_COINS_DATA = WRAM_START + 0x1F2F
|
||||
SMW_PATH_DATA = WRAM_START + 0x1EA2
|
||||
SMW_EVENT_ROM_DATA = ROM_START + 0x2D608
|
||||
SMW_ACTIVE_LEVEL_DATA = ROM_START + 0x37F70
|
||||
SMW_MOON_DATA = WRAM_START + 0x1FEE
|
||||
SMW_HIDDEN_1UP_DATA = WRAM_START + 0x1F3C
|
||||
SMW_BONUS_BLOCK_DATA = WRAM_START + 0x1A000
|
||||
SMW_BLOCKSANITY_DATA = WRAM_START + 0x1A400
|
||||
SMW_BLOCKSANITY_FLAGS = WRAM_START + 0x1A010
|
||||
SMW_LEVEL_CLEAR_FLAGS = WRAM_START + 0x1A200
|
||||
SMW_SPECIAL_WORLD_CLEAR = WRAM_START + 0x1F1E
|
||||
|
||||
|
||||
SMW_GOAL_DATA = ROM_START + 0x01BFA0
|
||||
SMW_REQUIRED_BOSSES_DATA = ROM_START + 0x01BFA1
|
||||
|
@ -31,22 +38,32 @@ SMW_RECEIVE_MSG_DATA = ROM_START + 0x01BFA4
|
|||
SMW_DEATH_LINK_ACTIVE_ADDR = ROM_START + 0x01BFA5
|
||||
SMW_DRAGON_COINS_ACTIVE_ADDR = ROM_START + 0x01BFA6
|
||||
SMW_SWAMP_DONUT_GH_ADDR = ROM_START + 0x01BFA7
|
||||
SMW_MOON_ACTIVE_ADDR = ROM_START + 0x01BFA8
|
||||
SMW_HIDDEN_1UP_ACTIVE_ADDR = ROM_START + 0x01BFA9
|
||||
SMW_BONUS_BLOCK_ACTIVE_ADDR = ROM_START + 0x01BFAA
|
||||
SMW_BLOCKSANITY_ACTIVE_ADDR = ROM_START + 0x01BFAB
|
||||
|
||||
SMW_GAME_STATE_ADDR = WRAM_START + 0x100
|
||||
SMW_MARIO_STATE_ADDR = WRAM_START + 0x71
|
||||
SMW_BOSS_STATE_ADDR = WRAM_START + 0xD9B
|
||||
SMW_ACTIVE_BOSS_ADDR = WRAM_START + 0x13FC
|
||||
SMW_CURRENT_LEVEL_ADDR = WRAM_START + 0x13BF
|
||||
SMW_MESSAGE_BOX_ADDR = WRAM_START + 0x1426
|
||||
SMW_BONUS_STAR_ADDR = WRAM_START + 0xF48
|
||||
SMW_EGG_COUNT_ADDR = WRAM_START + 0x1F24
|
||||
SMW_BOSS_COUNT_ADDR = WRAM_START + 0x1F26
|
||||
SMW_NUM_EVENTS_ADDR = WRAM_START + 0x1F2E
|
||||
SMW_SFX_ADDR = WRAM_START + 0x1DFC
|
||||
SMW_PAUSE_ADDR = WRAM_START + 0x13D4
|
||||
SMW_MESSAGE_QUEUE_ADDR = WRAM_START + 0xC391
|
||||
|
||||
SMW_RECV_PROGRESS_ADDR = WRAM_START + 0x1F2B
|
||||
SMW_GAME_STATE_ADDR = WRAM_START + 0x100
|
||||
SMW_MARIO_STATE_ADDR = WRAM_START + 0x71
|
||||
SMW_BOSS_STATE_ADDR = WRAM_START + 0xD9B
|
||||
SMW_ACTIVE_BOSS_ADDR = WRAM_START + 0x13FC
|
||||
SMW_CURRENT_LEVEL_ADDR = WRAM_START + 0x13BF
|
||||
SMW_CURRENT_SUBLEVEL_ADDR = WRAM_START + 0x10B
|
||||
SMW_MESSAGE_BOX_ADDR = WRAM_START + 0x1426
|
||||
SMW_BONUS_STAR_ADDR = WRAM_START + 0xF48
|
||||
SMW_EGG_COUNT_ADDR = WRAM_START + 0x1F24
|
||||
SMW_BOSS_COUNT_ADDR = WRAM_START + 0x1F26
|
||||
SMW_NUM_EVENTS_ADDR = WRAM_START + 0x1F2E
|
||||
SMW_SFX_ADDR = WRAM_START + 0x1DFC
|
||||
SMW_PAUSE_ADDR = WRAM_START + 0x13D4
|
||||
SMW_MESSAGE_QUEUE_ADDR = WRAM_START + 0xC391
|
||||
SMW_ACTIVE_THWIMP_ADDR = WRAM_START + 0x0F3C
|
||||
SMW_GOAL_ITEM_COUNT = WRAM_START + 0x1A01E
|
||||
|
||||
SMW_RECV_PROGRESS_ADDR = WRAM_START + 0x01F2B
|
||||
|
||||
SMW_BLOCKSANITY_BLOCK_COUNT = 582
|
||||
|
||||
SMW_GOAL_LEVELS = [0x28, 0x31, 0x32]
|
||||
SMW_INVALID_MARIO_STATES = [0x05, 0x06, 0x0A, 0x0C, 0x0D]
|
||||
|
@ -115,6 +132,9 @@ class SMWSNIClient(SNIClient):
|
|||
if death_link:
|
||||
await ctx.update_death_link(bool(death_link[0] & 0b1))
|
||||
|
||||
if ctx.rom != rom_name:
|
||||
ctx.current_sublevel_value = 0
|
||||
|
||||
ctx.rom = rom_name
|
||||
|
||||
return True
|
||||
|
@ -176,6 +196,11 @@ class SMWSNIClient(SNIClient):
|
|||
|
||||
self.trap_queue.append((trap_item, trap_msg))
|
||||
|
||||
def should_show_message(self, ctx, next_item):
|
||||
return ctx.receive_option == 1 or \
|
||||
(ctx.receive_option == 2 and ((next_item.flags & 1) != 0)) or \
|
||||
(ctx.receive_option == 3 and ((next_item.flags & 1) != 0 and next_item.item != 0xBC0002))
|
||||
|
||||
|
||||
async def handle_trap_queue(self, ctx):
|
||||
from SNIClient import snes_buffered_write, snes_flush_writes, snes_read
|
||||
|
@ -217,6 +242,13 @@ class SMWSNIClient(SNIClient):
|
|||
self.add_trap_to_queue(next_trap, message)
|
||||
return
|
||||
else:
|
||||
if next_trap.item == 0xBC001D:
|
||||
# Special case thwimp trap
|
||||
# Do not fire if the previous thwimp hasn't reached the player's Y pos
|
||||
active_thwimp = await snes_read(ctx, SMW_ACTIVE_THWIMP_ADDR, 0x1)
|
||||
if active_thwimp[0] != 0xFF:
|
||||
self.add_trap_to_queue(next_trap, message)
|
||||
return
|
||||
verify_game_state = await snes_read(ctx, SMW_GAME_STATE_ADDR, 0x1)
|
||||
if verify_game_state[0] == 0x14 and len(trap_rom_data[next_trap.item]) > 2:
|
||||
snes_buffered_write(ctx, SMW_SFX_ADDR, bytes([trap_rom_data[next_trap.item][2]]))
|
||||
|
@ -236,13 +268,14 @@ class SMWSNIClient(SNIClient):
|
|||
if active_boss[0] != 0x00:
|
||||
return
|
||||
|
||||
if ctx.receive_option == 1 or (ctx.receive_option == 2 and ((next_trap.flags & 1) != 0)):
|
||||
if self.should_show_message(ctx, next_trap):
|
||||
self.add_message_to_queue(message)
|
||||
|
||||
|
||||
async def game_watcher(self, ctx):
|
||||
from SNIClient import snes_buffered_write, snes_flush_writes, snes_read
|
||||
|
||||
|
||||
boss_state = await snes_read(ctx, SMW_BOSS_STATE_ADDR, 0x1)
|
||||
game_state = await snes_read(ctx, SMW_GAME_STATE_ADDR, 0x1)
|
||||
mario_state = await snes_read(ctx, SMW_MARIO_STATE_ADDR, 0x1)
|
||||
if game_state is None:
|
||||
|
@ -259,6 +292,7 @@ class SMWSNIClient(SNIClient):
|
|||
elif game_state[0] < 0x0B:
|
||||
# We haven't loaded a save file
|
||||
ctx.message_queue = []
|
||||
ctx.current_sublevel_value = 0
|
||||
return
|
||||
elif mario_state[0] in SMW_INVALID_MARIO_STATES:
|
||||
# Mario can't come to the phone right now
|
||||
|
@ -304,8 +338,18 @@ class SMWSNIClient(SNIClient):
|
|||
progress_data = bytearray(await snes_read(ctx, SMW_PROGRESS_DATA, 0x0F))
|
||||
dragon_coins_data = bytearray(await snes_read(ctx, SMW_DRAGON_COINS_DATA, 0x0C))
|
||||
dragon_coins_active = await snes_read(ctx, SMW_DRAGON_COINS_ACTIVE_ADDR, 0x1)
|
||||
from worlds.smw.Rom import item_rom_data, ability_rom_data, trap_rom_data
|
||||
from worlds.smw.Levels import location_id_to_level_id, level_info_dict
|
||||
moon_data = bytearray(await snes_read(ctx, SMW_MOON_DATA, 0x0C))
|
||||
moon_active = await snes_read(ctx, SMW_MOON_ACTIVE_ADDR, 0x1)
|
||||
hidden_1up_data = bytearray(await snes_read(ctx, SMW_HIDDEN_1UP_DATA, 0x0C))
|
||||
hidden_1up_active = await snes_read(ctx, SMW_HIDDEN_1UP_ACTIVE_ADDR, 0x1)
|
||||
bonus_block_data = bytearray(await snes_read(ctx, SMW_BONUS_BLOCK_DATA, 0x0C))
|
||||
bonus_block_active = await snes_read(ctx, SMW_BONUS_BLOCK_ACTIVE_ADDR, 0x1)
|
||||
blocksanity_data = bytearray(await snes_read(ctx, SMW_BLOCKSANITY_DATA, SMW_BLOCKSANITY_BLOCK_COUNT))
|
||||
blocksanity_flags = bytearray(await snes_read(ctx, SMW_BLOCKSANITY_FLAGS, 0xC))
|
||||
blocksanity_active = await snes_read(ctx, SMW_BLOCKSANITY_ACTIVE_ADDR, 0x1)
|
||||
level_clear_flags = bytearray(await snes_read(ctx, SMW_LEVEL_CLEAR_FLAGS, 0x60))
|
||||
from worlds.smw.Rom import item_rom_data, ability_rom_data, trap_rom_data, icon_rom_data
|
||||
from worlds.smw.Levels import location_id_to_level_id, level_info_dict, level_blocks_data
|
||||
from worlds import AutoWorldRegister
|
||||
for loc_name, level_data in location_id_to_level_id.items():
|
||||
loc_id = AutoWorldRegister.world_types[ctx.game].location_name_to_id[loc_name]
|
||||
|
@ -327,6 +371,54 @@ class SMWSNIClient(SNIClient):
|
|||
|
||||
if bit_set:
|
||||
new_checks.append(loc_id)
|
||||
elif level_data[1] == 3:
|
||||
# Moon Check
|
||||
if not moon_active or moon_active[0] == 0:
|
||||
continue
|
||||
|
||||
progress_byte = (level_data[0] // 8)
|
||||
progress_bit = 7 - (level_data[0] % 8)
|
||||
|
||||
data = moon_data[progress_byte]
|
||||
masked_data = data & (1 << progress_bit)
|
||||
bit_set = (masked_data != 0)
|
||||
|
||||
if bit_set:
|
||||
new_checks.append(loc_id)
|
||||
elif level_data[1] == 4:
|
||||
# Hidden 1-Up Check
|
||||
if not hidden_1up_active or hidden_1up_active[0] == 0:
|
||||
continue
|
||||
|
||||
progress_byte = (level_data[0] // 8)
|
||||
progress_bit = 7 - (level_data[0] % 8)
|
||||
|
||||
data = hidden_1up_data[progress_byte]
|
||||
masked_data = data & (1 << progress_bit)
|
||||
bit_set = (masked_data != 0)
|
||||
|
||||
if bit_set:
|
||||
new_checks.append(loc_id)
|
||||
elif level_data[1] == 5:
|
||||
# Bonus Block Check
|
||||
if not bonus_block_active or bonus_block_active[0] == 0:
|
||||
continue
|
||||
|
||||
progress_byte = (level_data[0] // 8)
|
||||
progress_bit = 7 - (level_data[0] % 8)
|
||||
|
||||
data = bonus_block_data[progress_byte]
|
||||
masked_data = data & (1 << progress_bit)
|
||||
bit_set = (masked_data != 0)
|
||||
|
||||
if bit_set:
|
||||
new_checks.append(loc_id)
|
||||
elif level_data[1] >= 100:
|
||||
if not blocksanity_active or blocksanity_active[0] == 0:
|
||||
continue
|
||||
block_index = level_data[1] - 100
|
||||
if blocksanity_data[block_index] != 0:
|
||||
new_checks.append(loc_id)
|
||||
else:
|
||||
event_id_value = event_id + level_data[1]
|
||||
|
||||
|
@ -360,12 +452,48 @@ class SMWSNIClient(SNIClient):
|
|||
f'New Check: {location} ({len(ctx.locations_checked)}/{len(ctx.missing_locations) + len(ctx.checked_locations)})')
|
||||
await ctx.send_msgs([{"cmd": 'LocationChecks', "locations": [new_check_id]}])
|
||||
|
||||
# Send Current Room for Tracker
|
||||
current_sublevel_data = await snes_read(ctx, SMW_CURRENT_SUBLEVEL_ADDR, 2)
|
||||
current_sublevel_value = current_sublevel_data[0] + (current_sublevel_data[1] << 8)
|
||||
|
||||
if game_state[0] != 0x14:
|
||||
current_sublevel_value = 0
|
||||
|
||||
if ctx.current_sublevel_value != current_sublevel_value:
|
||||
ctx.current_sublevel_value = current_sublevel_value
|
||||
|
||||
# Send level id data to tracker
|
||||
await ctx.send_msgs(
|
||||
[
|
||||
{
|
||||
"cmd": "Set",
|
||||
"key": f"smw_curlevelid_{ctx.team}_{ctx.slot}",
|
||||
"default": 0,
|
||||
"want_reply": False,
|
||||
"operations": [
|
||||
{
|
||||
"operation": "replace",
|
||||
"value": ctx.current_sublevel_value,
|
||||
}
|
||||
],
|
||||
}
|
||||
]
|
||||
)
|
||||
|
||||
if game_state[0] != 0x14:
|
||||
# Don't receive items or collect locations outside of in-level mode
|
||||
ctx.current_sublevel_value = 0
|
||||
return
|
||||
|
||||
if boss_state[0] in SMW_BOSS_STATES:
|
||||
# Don't receive items or collect locations inside boss battles
|
||||
return
|
||||
|
||||
recv_count = await snes_read(ctx, SMW_RECV_PROGRESS_ADDR, 1)
|
||||
recv_index = recv_count[0]
|
||||
recv_count = await snes_read(ctx, SMW_RECV_PROGRESS_ADDR, 2)
|
||||
if recv_count is None:
|
||||
# Add a small failsafe in case we get a None. Other SNI games do this...
|
||||
return
|
||||
recv_index = recv_count[0] | (recv_count[1] << 8)
|
||||
|
||||
if recv_index < len(ctx.items_received):
|
||||
item = ctx.items_received[recv_index]
|
||||
|
@ -375,7 +503,7 @@ class SMWSNIClient(SNIClient):
|
|||
color(ctx.player_names[item.player], 'yellow'),
|
||||
ctx.location_names[item.location], recv_index, len(ctx.items_received)))
|
||||
|
||||
if ctx.receive_option == 1 or (ctx.receive_option == 2 and ((item.flags & 1) != 0)):
|
||||
if self.should_show_message(ctx, item):
|
||||
if item.item != 0xBC0012 and item.item not in trap_rom_data:
|
||||
# Don't send messages for Boss Tokens
|
||||
item_name = ctx.item_names[item.item]
|
||||
|
@ -384,7 +512,7 @@ class SMWSNIClient(SNIClient):
|
|||
receive_message = generate_received_text(item_name, player_name)
|
||||
self.add_message_to_queue(receive_message)
|
||||
|
||||
snes_buffered_write(ctx, SMW_RECV_PROGRESS_ADDR, bytes([recv_index]))
|
||||
snes_buffered_write(ctx, SMW_RECV_PROGRESS_ADDR, bytes([recv_index&0xFF, (recv_index>>8)&0xFF]))
|
||||
if item.item in trap_rom_data:
|
||||
item_name = ctx.item_names[item.item]
|
||||
player_name = ctx.player_names[item.player]
|
||||
|
@ -405,6 +533,15 @@ class SMWSNIClient(SNIClient):
|
|||
snes_buffered_write(ctx, SMW_SFX_ADDR, bytes([item_rom_data[item.item][2]]))
|
||||
|
||||
snes_buffered_write(ctx, WRAM_START + item_rom_data[item.item][0], bytes([new_item_count]))
|
||||
elif item.item in icon_rom_data:
|
||||
queue_addr = await snes_read(ctx, WRAM_START + icon_rom_data[item.item][0], 2)
|
||||
queue_addr = queue_addr[0] + (queue_addr[1] << 8)
|
||||
queue_addr += 1
|
||||
snes_buffered_write(ctx, WRAM_START + icon_rom_data[item.item][0], bytes([queue_addr&0xFF, (queue_addr>>8)&0xFF]))
|
||||
if (goal[0] == 0 and item.item == 0xBC0012) or (goal[0] == 1 and item.item == 0xBC0002):
|
||||
goal_item_count = await snes_read(ctx, SMW_GOAL_ITEM_COUNT, 1)
|
||||
snes_buffered_write(ctx, SMW_GOAL_ITEM_COUNT, bytes([goal_item_count[0] + 1]))
|
||||
|
||||
elif item.item in ability_rom_data:
|
||||
# Handle Upgrades
|
||||
for rom_data in ability_rom_data[item.item]:
|
||||
|
@ -449,6 +586,12 @@ class SMWSNIClient(SNIClient):
|
|||
path_data = bytearray(await snes_read(ctx, SMW_PATH_DATA, 0x60))
|
||||
donut_gh_swapped = await snes_read(ctx, SMW_SWAMP_DONUT_GH_ADDR, 0x1)
|
||||
new_dragon_coin = False
|
||||
new_moon = False
|
||||
new_hidden_1up = False
|
||||
new_bonus_block = False
|
||||
new_blocksanity = False
|
||||
new_blocksanity_flags = False
|
||||
|
||||
for loc_id in ctx.checked_locations:
|
||||
if loc_id not in ctx.locations_checked:
|
||||
ctx.locations_checked.add(loc_id)
|
||||
|
@ -470,10 +613,64 @@ class SMWSNIClient(SNIClient):
|
|||
dragon_coins_data[progress_byte] = new_data
|
||||
|
||||
new_dragon_coin = True
|
||||
elif level_data[1] == 3:
|
||||
# Moon Check
|
||||
|
||||
progress_byte = (level_data[0] // 8)
|
||||
progress_bit = 7 - (level_data[0] % 8)
|
||||
|
||||
data = moon_data[progress_byte]
|
||||
new_data = data | (1 << progress_bit)
|
||||
moon_data[progress_byte] = new_data
|
||||
|
||||
new_moon = True
|
||||
elif level_data[1] == 4:
|
||||
# Hidden 1-Up Check
|
||||
progress_byte = (level_data[0] // 8)
|
||||
progress_bit = 7 - (level_data[0] % 8)
|
||||
|
||||
data = hidden_1up_data[progress_byte]
|
||||
new_data = data | (1 << progress_bit)
|
||||
hidden_1up_data[progress_byte] = new_data
|
||||
|
||||
new_hidden_1up = True
|
||||
elif level_data[1] == 5:
|
||||
# Bonus block prize Check
|
||||
|
||||
progress_byte = (level_data[0] // 8)
|
||||
progress_bit = 7 - (level_data[0] % 8)
|
||||
|
||||
data = bonus_block_data[progress_byte]
|
||||
new_data = data | (1 << progress_bit)
|
||||
bonus_block_data[progress_byte] = new_data
|
||||
|
||||
new_bonus_block = True
|
||||
elif level_data[1] >= 100:
|
||||
# Blocksanity flag Check
|
||||
block_index = level_data[1] - 100
|
||||
blocksanity_data[block_index] = 1
|
||||
new_blocksanity = True
|
||||
|
||||
# All blocksanity blocks flag
|
||||
new_blocksanity_flags = True
|
||||
for block_id in level_blocks_data[level_data[0]]:
|
||||
if blocksanity_data[block_id] != 1:
|
||||
new_blocksanity_flags = False
|
||||
continue
|
||||
if new_blocksanity_flags is True:
|
||||
progress_byte = (level_data[0] // 8)
|
||||
progress_bit = 7 - (level_data[0] % 8)
|
||||
data = blocksanity_flags[progress_byte]
|
||||
new_data = data | (1 << progress_bit)
|
||||
blocksanity_flags[progress_byte] = new_data
|
||||
else:
|
||||
if level_data[0] in SMW_UNCOLLECTABLE_LEVELS:
|
||||
continue
|
||||
|
||||
# Handle map indicators
|
||||
flag = 1 if level_data[1] == 0 else 2
|
||||
level_clear_flags[level_data[0]] |= flag
|
||||
|
||||
event_id = event_data[level_data[0]]
|
||||
event_id_value = event_id + level_data[1]
|
||||
|
||||
|
@ -514,7 +711,18 @@ class SMWSNIClient(SNIClient):
|
|||
|
||||
if new_dragon_coin:
|
||||
snes_buffered_write(ctx, SMW_DRAGON_COINS_DATA, bytes(dragon_coins_data))
|
||||
if new_moon:
|
||||
snes_buffered_write(ctx, SMW_MOON_DATA, bytes(moon_data))
|
||||
if new_hidden_1up:
|
||||
snes_buffered_write(ctx, SMW_HIDDEN_1UP_DATA, bytes(hidden_1up_data))
|
||||
if new_bonus_block:
|
||||
snes_buffered_write(ctx, SMW_BONUS_BLOCK_DATA, bytes(bonus_block_data))
|
||||
if new_blocksanity:
|
||||
snes_buffered_write(ctx, SMW_BLOCKSANITY_DATA, bytes(blocksanity_data))
|
||||
if new_blocksanity_flags:
|
||||
snes_buffered_write(ctx, SMW_BLOCKSANITY_FLAGS, bytes(blocksanity_flags))
|
||||
if new_events > 0:
|
||||
snes_buffered_write(ctx, SMW_LEVEL_CLEAR_FLAGS, bytes(level_clear_flags))
|
||||
snes_buffered_write(ctx, SMW_PROGRESS_DATA, bytes(progress_data))
|
||||
snes_buffered_write(ctx, SMW_PATH_DATA, bytes(path_data))
|
||||
old_events = await snes_read(ctx, SMW_NUM_EVENTS_ADDR, 0x1)
|
||||
|
|
|
@ -18,6 +18,10 @@ class SMWItem(Item):
|
|||
|
||||
# Separate tables for each type of item.
|
||||
junk_table = {
|
||||
ItemName.one_coin: ItemData(0xBC0017, False),
|
||||
ItemName.five_coins: ItemData(0xBC0018, False),
|
||||
ItemName.ten_coins: ItemData(0xBC0019, False),
|
||||
ItemName.fifty_coins: ItemData(0xBC001A, False),
|
||||
ItemName.one_up_mushroom: ItemData(0xBC0001, False),
|
||||
}
|
||||
|
||||
|
@ -36,6 +40,7 @@ upgrade_table = {
|
|||
ItemName.progressive_powerup: ItemData(0xBC000A, True),
|
||||
ItemName.p_balloon: ItemData(0xBC000B, True),
|
||||
ItemName.super_star_active: ItemData(0xBC000D, True),
|
||||
ItemName.special_world_clear: ItemData(0xBC001B, True),
|
||||
}
|
||||
|
||||
switch_palace_table = {
|
||||
|
@ -46,10 +51,12 @@ switch_palace_table = {
|
|||
}
|
||||
|
||||
trap_table = {
|
||||
ItemName.ice_trap: ItemData(0xBC0013, False, True),
|
||||
ItemName.stun_trap: ItemData(0xBC0014, False, True),
|
||||
ItemName.literature_trap: ItemData(0xBC0015, False, True),
|
||||
ItemName.timer_trap: ItemData(0xBC0016, False, True),
|
||||
ItemName.ice_trap: ItemData(0xBC0013, False, True),
|
||||
ItemName.stun_trap: ItemData(0xBC0014, False, True),
|
||||
ItemName.literature_trap: ItemData(0xBC0015, False, True),
|
||||
ItemName.timer_trap: ItemData(0xBC0016, False, True),
|
||||
ItemName.reverse_controls_trap: ItemData(0xBC001C, False, True),
|
||||
ItemName.thwimp_trap: ItemData(0xBC001D, False, True),
|
||||
}
|
||||
|
||||
event_table = {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
|
||||
from worlds.AutoWorld import World
|
||||
from .Names import LocationName
|
||||
|
||||
|
||||
|
@ -75,6 +76,103 @@ ow_boss_rooms = [
|
|||
]
|
||||
|
||||
|
||||
level_blocks_data = {
|
||||
0x01: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
|
||||
0x02: [12, 13],
|
||||
0x04: [14, 15, 16, 17, 18, 19],
|
||||
0x05: [20, 21, 22, 23, 24, 25],
|
||||
0x06: [26, 27, 28, 29],
|
||||
0x07: [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
|
||||
0x09: [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
|
||||
0x0A: [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
|
||||
0x0B: [60, 61, 62],
|
||||
0x0C: [63, 64, 65, 66, 67, 68],
|
||||
0x0D: [69, 70, 71],
|
||||
0x0E: [72],
|
||||
0x0F: [73, 74, 75, 76],
|
||||
0x10: [77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
|
||||
94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
|
||||
109, 110, 111
|
||||
],
|
||||
0x11: [112],
|
||||
0x13: [113, 114, 115, 116, 117],
|
||||
0x15: [118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
|
||||
132, 133, 134, 135, 136, 137, 138, 139, 140
|
||||
],
|
||||
0x18: [141, 142],
|
||||
0x1A: [143, 144, 145],
|
||||
0x1B: [146, 147, 148, 149, 150],
|
||||
0x1C: [151, 152, 153, 154],
|
||||
0x1D: [155, 156, 157],
|
||||
0x1F: [158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168],
|
||||
0x20: [169],
|
||||
0x21: [170, 171, 172],
|
||||
0x22: [173, 174, 175, 176, 177],
|
||||
0x23: [178, 179, 180, 181, 182, 183, 184, 185, 186],
|
||||
0x24: [187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
|
||||
201, 202
|
||||
],
|
||||
0x25: [203, 204, 205, 206, 207, 208],
|
||||
0x26: [209, 210, 211, 212],
|
||||
0x27: [213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
|
||||
227, 228, 229
|
||||
],
|
||||
0x29: [230, 231, 232, 233],
|
||||
0x2A: [234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
|
||||
248, 249
|
||||
],
|
||||
0x2B: [250, 251, 252, 253, 254],
|
||||
0x2D: [255, 256, 257, 258, 259, 260, 261, 262],
|
||||
0x2E: [263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
|
||||
277, 278, 279
|
||||
],
|
||||
0x2F: [280, 281, 282, 283, 284],
|
||||
0x33: [285, 286, 287, 288, 289, 290],
|
||||
0x34: [291, 292, 293],
|
||||
0x35: [294, 295],
|
||||
0x37: [296, 297],
|
||||
0x38: [298, 299, 300, 301],
|
||||
0x39: [302, 303, 304, 305],
|
||||
0x3A: [306, 307, 308, 309, 310, 311, 312, 313, 314],
|
||||
0x3B: [315, 316],
|
||||
0x3C: [317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330],
|
||||
0x3D: [331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341],
|
||||
0x3E: [342, 343, 344, 345, 346, 347, 348, 349, 350, 351],
|
||||
0x40: [352, 353, 354, 355, 356],
|
||||
0x41: [357, 358, 359, 360, 361],
|
||||
0x42: [362, 363, 364, 365, 366],
|
||||
0x43: [367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379],
|
||||
0x44: [380, 381, 382, 383, 384, 385, 386],
|
||||
0x46: [387, 388, 389],
|
||||
0x47: [390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
|
||||
404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416
|
||||
],
|
||||
0x49: [417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
|
||||
431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
|
||||
444, 445, 446
|
||||
],
|
||||
0x4A: [447, 448, 449, 450, 451],
|
||||
0x4B: [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
|
||||
466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
|
||||
479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489
|
||||
],
|
||||
0x4C: [490],
|
||||
0x4E: [491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
|
||||
505, 506, 507, 508, 509, 510, 511, 512
|
||||
],
|
||||
0x4F: [513, 514, 515, 516, 517, 518, 519, 520, 521, 522],
|
||||
0x50: [523, 524, 525],
|
||||
0x51: [526, 527],
|
||||
0x54: [528],
|
||||
0x56: [529],
|
||||
0x59: [530, 531, 532, 533, 534, 535, 536, 537, 538],
|
||||
0x5A: [539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552,
|
||||
553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
|
||||
566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578,
|
||||
579, 580, 581
|
||||
]
|
||||
}
|
||||
|
||||
class SMWPath():
|
||||
thisEndDirection: int
|
||||
otherLevelID: int
|
||||
|
@ -330,12 +428,15 @@ switch_palace_levels = [
|
|||
location_id_to_level_id = {
|
||||
LocationName.yoshis_island_1_exit_1: [0x29, 0],
|
||||
LocationName.yoshis_island_1_dragon: [0x29, 2],
|
||||
LocationName.yoshis_island_1_moon: [0x29, 3],
|
||||
LocationName.yoshis_island_2_exit_1: [0x2A, 0],
|
||||
LocationName.yoshis_island_2_dragon: [0x2A, 2],
|
||||
LocationName.yoshis_island_3_exit_1: [0x27, 0],
|
||||
LocationName.yoshis_island_3_dragon: [0x27, 2],
|
||||
LocationName.yoshis_island_3_bonus_block: [0x27, 5],
|
||||
LocationName.yoshis_island_4_exit_1: [0x26, 0],
|
||||
LocationName.yoshis_island_4_dragon: [0x26, 2],
|
||||
LocationName.yoshis_island_4_hidden_1up: [0x26, 4],
|
||||
LocationName.yoshis_island_castle: [0x25, 0],
|
||||
LocationName.yoshis_island_koopaling: [0x25, 0],
|
||||
LocationName.yellow_switch_palace: [0x14, 0],
|
||||
|
@ -343,13 +444,17 @@ location_id_to_level_id = {
|
|||
LocationName.donut_plains_1_exit_1: [0x15, 0],
|
||||
LocationName.donut_plains_1_exit_2: [0x15, 1],
|
||||
LocationName.donut_plains_1_dragon: [0x15, 2],
|
||||
LocationName.donut_plains_1_hidden_1up: [0x15, 4],
|
||||
LocationName.donut_plains_2_exit_1: [0x09, 0],
|
||||
LocationName.donut_plains_2_exit_2: [0x09, 1],
|
||||
LocationName.donut_plains_2_dragon: [0x09, 2],
|
||||
LocationName.donut_plains_3_exit_1: [0x05, 0],
|
||||
LocationName.donut_plains_3_dragon: [0x05, 2],
|
||||
LocationName.donut_plains_3_bonus_block: [0x05, 5],
|
||||
LocationName.donut_plains_4_exit_1: [0x06, 0],
|
||||
LocationName.donut_plains_4_dragon: [0x06, 2],
|
||||
LocationName.donut_plains_4_moon: [0x06, 3],
|
||||
LocationName.donut_plains_4_hidden_1up: [0x06, 4],
|
||||
LocationName.donut_secret_1_exit_1: [0x0A, 0],
|
||||
LocationName.donut_secret_1_exit_2: [0x0A, 1],
|
||||
LocationName.donut_secret_1_dragon: [0x0A, 2],
|
||||
|
@ -360,6 +465,7 @@ location_id_to_level_id = {
|
|||
LocationName.donut_secret_house_exit_1: [0x13, 0],
|
||||
LocationName.donut_secret_house_exit_2: [0x13, 1],
|
||||
LocationName.donut_plains_castle: [0x07, 0],
|
||||
LocationName.donut_plains_castle_hidden_1up: [0x07, 4],
|
||||
LocationName.donut_plains_koopaling: [0x07, 0],
|
||||
LocationName.green_switch_palace: [0x08, 0],
|
||||
|
||||
|
@ -371,8 +477,10 @@ location_id_to_level_id = {
|
|||
LocationName.vanilla_dome_2_dragon: [0x3C, 2],
|
||||
LocationName.vanilla_dome_3_exit_1: [0x2E, 0],
|
||||
LocationName.vanilla_dome_3_dragon: [0x2E, 2],
|
||||
LocationName.vanilla_dome_3_moon: [0x2E, 3],
|
||||
LocationName.vanilla_dome_4_exit_1: [0x3D, 0],
|
||||
LocationName.vanilla_dome_4_dragon: [0x3D, 2],
|
||||
LocationName.vanilla_dome_4_hidden_1up: [0x3D, 4],
|
||||
LocationName.vanilla_secret_1_exit_1: [0x2D, 0],
|
||||
LocationName.vanilla_secret_1_exit_2: [0x2D, 1],
|
||||
LocationName.vanilla_secret_1_dragon: [0x2D, 2],
|
||||
|
@ -382,7 +490,9 @@ location_id_to_level_id = {
|
|||
LocationName.vanilla_secret_3_dragon: [0x02, 2],
|
||||
LocationName.vanilla_ghost_house_exit_1: [0x2B, 0],
|
||||
LocationName.vanilla_ghost_house_dragon: [0x2B, 2],
|
||||
LocationName.vanilla_ghost_house_hidden_1up: [0x2B, 4],
|
||||
LocationName.vanilla_fortress: [0x0B, 0],
|
||||
LocationName.vanilla_fortress_hidden_1up: [0x0B, 4],
|
||||
LocationName.vanilla_reznor: [0x0B, 0],
|
||||
LocationName.vanilla_dome_castle: [0x40, 0],
|
||||
LocationName.vanilla_dome_koopaling: [0x40, 0],
|
||||
|
@ -390,13 +500,16 @@ location_id_to_level_id = {
|
|||
|
||||
LocationName.butter_bridge_1_exit_1: [0x0C, 0],
|
||||
LocationName.butter_bridge_1_dragon: [0x0C, 2],
|
||||
LocationName.butter_bridge_1_bonus_block: [0x0C, 5],
|
||||
LocationName.butter_bridge_2_exit_1: [0x0D, 0],
|
||||
LocationName.butter_bridge_2_dragon: [0x0D, 2],
|
||||
LocationName.cheese_bridge_exit_1: [0x0F, 0],
|
||||
LocationName.cheese_bridge_exit_2: [0x0F, 1],
|
||||
LocationName.cheese_bridge_dragon: [0x0F, 2],
|
||||
LocationName.cheese_bridge_moon: [0x0F, 3],
|
||||
LocationName.cookie_mountain_exit_1: [0x10, 0],
|
||||
LocationName.cookie_mountain_dragon: [0x10, 2],
|
||||
LocationName.cookie_mountain_hidden_1up: [0x10, 4],
|
||||
LocationName.soda_lake_exit_1: [0x11, 0],
|
||||
LocationName.soda_lake_dragon: [0x11, 2],
|
||||
LocationName.twin_bridges_castle: [0x0E, 0],
|
||||
|
@ -410,12 +523,14 @@ location_id_to_level_id = {
|
|||
LocationName.forest_of_illusion_3_exit_1: [0x47, 0],
|
||||
LocationName.forest_of_illusion_3_exit_2: [0x47, 1],
|
||||
LocationName.forest_of_illusion_3_dragon: [0x47, 2],
|
||||
LocationName.forest_of_illusion_3_hidden_1up: [0x47, 4],
|
||||
LocationName.forest_of_illusion_4_exit_1: [0x43, 0],
|
||||
LocationName.forest_of_illusion_4_exit_2: [0x43, 1],
|
||||
LocationName.forest_of_illusion_4_dragon: [0x43, 2],
|
||||
LocationName.forest_ghost_house_exit_1: [0x41, 0],
|
||||
LocationName.forest_ghost_house_exit_2: [0x41, 1],
|
||||
LocationName.forest_ghost_house_dragon: [0x41, 2],
|
||||
LocationName.forest_ghost_house_moon: [0x41, 3],
|
||||
LocationName.forest_secret_exit_1: [0x46, 0],
|
||||
LocationName.forest_secret_dragon: [0x46, 2],
|
||||
LocationName.forest_fortress: [0x1F, 0],
|
||||
|
@ -427,12 +542,15 @@ location_id_to_level_id = {
|
|||
|
||||
LocationName.chocolate_island_1_exit_1: [0x22, 0],
|
||||
LocationName.chocolate_island_1_dragon: [0x22, 2],
|
||||
LocationName.chocolate_island_1_moon: [0x22, 3],
|
||||
LocationName.chocolate_island_2_exit_1: [0x24, 0],
|
||||
LocationName.chocolate_island_2_exit_2: [0x24, 1],
|
||||
LocationName.chocolate_island_2_dragon: [0x24, 2],
|
||||
LocationName.chocolate_island_2_hidden_1up: [0x24, 4],
|
||||
LocationName.chocolate_island_3_exit_1: [0x23, 0],
|
||||
LocationName.chocolate_island_3_exit_2: [0x23, 1],
|
||||
LocationName.chocolate_island_3_dragon: [0x23, 2],
|
||||
LocationName.chocolate_island_3_bonus_block: [0x23, 5],
|
||||
LocationName.chocolate_island_4_exit_1: [0x1D, 0],
|
||||
LocationName.chocolate_island_4_dragon: [0x1D, 2],
|
||||
LocationName.chocolate_island_5_exit_1: [0x1C, 0],
|
||||
|
@ -442,6 +560,7 @@ location_id_to_level_id = {
|
|||
LocationName.chocolate_fortress: [0x1B, 0],
|
||||
LocationName.chocolate_reznor: [0x1B, 0],
|
||||
LocationName.chocolate_castle: [0x1A, 0],
|
||||
LocationName.chocolate_castle_hidden_1up: [0x1A, 4],
|
||||
LocationName.chocolate_koopaling: [0x1A, 0],
|
||||
|
||||
LocationName.sunken_ghost_ship: [0x18, 0],
|
||||
|
@ -449,9 +568,11 @@ location_id_to_level_id = {
|
|||
|
||||
LocationName.valley_of_bowser_1_exit_1: [0x3A, 0],
|
||||
LocationName.valley_of_bowser_1_dragon: [0x3A, 2],
|
||||
LocationName.valley_of_bowser_1_moon: [0x3A, 3],
|
||||
LocationName.valley_of_bowser_2_exit_1: [0x39, 0],
|
||||
LocationName.valley_of_bowser_2_exit_2: [0x39, 1],
|
||||
LocationName.valley_of_bowser_2_dragon: [0x39, 2],
|
||||
LocationName.valley_of_bowser_2_hidden_1up: [0x39, 4],
|
||||
LocationName.valley_of_bowser_3_exit_1: [0x37, 0],
|
||||
LocationName.valley_of_bowser_3_dragon: [0x37, 2],
|
||||
LocationName.valley_of_bowser_4_exit_1: [0x33, 0],
|
||||
|
@ -464,6 +585,7 @@ location_id_to_level_id = {
|
|||
LocationName.valley_castle: [0x34, 0],
|
||||
LocationName.valley_koopaling: [0x34, 0],
|
||||
LocationName.valley_castle_dragon: [0x34, 2],
|
||||
LocationName.valley_castle_hidden_1up: [0x34, 4],
|
||||
|
||||
LocationName.star_road_1_exit_1: [0x58, 0],
|
||||
LocationName.star_road_1_exit_2: [0x58, 1],
|
||||
|
@ -479,6 +601,7 @@ location_id_to_level_id = {
|
|||
|
||||
LocationName.special_zone_1_exit_1: [0x4E, 0],
|
||||
LocationName.special_zone_1_dragon: [0x4E, 2],
|
||||
LocationName.special_zone_1_hidden_1up: [0x4E, 4],
|
||||
LocationName.special_zone_2_exit_1: [0x4F, 0],
|
||||
LocationName.special_zone_2_dragon: [0x4F, 2],
|
||||
LocationName.special_zone_3_exit_1: [0x50, 0],
|
||||
|
@ -493,19 +616,602 @@ location_id_to_level_id = {
|
|||
LocationName.special_zone_7_dragon: [0x4A, 2],
|
||||
LocationName.special_zone_8_exit_1: [0x49, 0],
|
||||
LocationName.special_zone_8_dragon: [0x49, 2],
|
||||
|
||||
LocationName.vanilla_secret_2_yoshi_block_1: [0x01, 100],
|
||||
LocationName.vanilla_secret_2_green_block_1: [0x01, 101],
|
||||
LocationName.vanilla_secret_2_powerup_block_1: [0x01, 102],
|
||||
LocationName.vanilla_secret_2_powerup_block_2: [0x01, 103],
|
||||
LocationName.vanilla_secret_2_multi_coin_block_1: [0x01, 104],
|
||||
LocationName.vanilla_secret_2_gray_pow_block_1: [0x01, 105],
|
||||
LocationName.vanilla_secret_2_coin_block_1: [0x01, 106],
|
||||
LocationName.vanilla_secret_2_coin_block_2: [0x01, 107],
|
||||
LocationName.vanilla_secret_2_coin_block_3: [0x01, 108],
|
||||
LocationName.vanilla_secret_2_coin_block_4: [0x01, 109],
|
||||
LocationName.vanilla_secret_2_coin_block_5: [0x01, 110],
|
||||
LocationName.vanilla_secret_2_coin_block_6: [0x01, 111],
|
||||
LocationName.vanilla_secret_3_powerup_block_1: [0x02, 112],
|
||||
LocationName.vanilla_secret_3_powerup_block_2: [0x02, 113],
|
||||
LocationName.donut_ghost_house_vine_block_1: [0x04, 114],
|
||||
LocationName.donut_ghost_house_directional_coin_block_1: [0x04, 115],
|
||||
LocationName.donut_ghost_house_life_block_1: [0x04, 116],
|
||||
LocationName.donut_ghost_house_life_block_2: [0x04, 117],
|
||||
LocationName.donut_ghost_house_life_block_3: [0x04, 118],
|
||||
LocationName.donut_ghost_house_life_block_4: [0x04, 119],
|
||||
LocationName.donut_plains_3_green_block_1: [0x05, 120],
|
||||
LocationName.donut_plains_3_coin_block_1: [0x05, 121],
|
||||
LocationName.donut_plains_3_coin_block_2: [0x05, 122],
|
||||
LocationName.donut_plains_3_vine_block_1: [0x05, 123],
|
||||
LocationName.donut_plains_3_powerup_block_1: [0x05, 124],
|
||||
LocationName.donut_plains_3_bonus_block_1: [0x05, 125],
|
||||
LocationName.donut_plains_4_coin_block_1: [0x06, 126],
|
||||
LocationName.donut_plains_4_powerup_block_1: [0x06, 127],
|
||||
LocationName.donut_plains_4_coin_block_2: [0x06, 128],
|
||||
LocationName.donut_plains_4_yoshi_block_1: [0x06, 129],
|
||||
LocationName.donut_plains_castle_yellow_block_1: [0x07, 130],
|
||||
LocationName.donut_plains_castle_coin_block_1: [0x07, 131],
|
||||
LocationName.donut_plains_castle_powerup_block_1: [0x07, 132],
|
||||
LocationName.donut_plains_castle_coin_block_2: [0x07, 133],
|
||||
LocationName.donut_plains_castle_vine_block_1: [0x07, 134],
|
||||
LocationName.donut_plains_castle_invis_life_block_1: [0x07, 135],
|
||||
LocationName.donut_plains_castle_coin_block_3: [0x07, 136],
|
||||
LocationName.donut_plains_castle_coin_block_4: [0x07, 137],
|
||||
LocationName.donut_plains_castle_coin_block_5: [0x07, 138],
|
||||
LocationName.donut_plains_castle_green_block_1: [0x07, 139],
|
||||
LocationName.donut_plains_2_coin_block_1: [0x09, 140],
|
||||
LocationName.donut_plains_2_coin_block_2: [0x09, 141],
|
||||
LocationName.donut_plains_2_coin_block_3: [0x09, 142],
|
||||
LocationName.donut_plains_2_yellow_block_1: [0x09, 143],
|
||||
LocationName.donut_plains_2_powerup_block_1: [0x09, 144],
|
||||
LocationName.donut_plains_2_multi_coin_block_1: [0x09, 145],
|
||||
LocationName.donut_plains_2_flying_block_1: [0x09, 146],
|
||||
LocationName.donut_plains_2_green_block_1: [0x09, 147],
|
||||
LocationName.donut_plains_2_yellow_block_2: [0x09, 148],
|
||||
LocationName.donut_plains_2_vine_block_1: [0x09, 149],
|
||||
LocationName.donut_secret_1_coin_block_1: [0x0A, 150],
|
||||
LocationName.donut_secret_1_coin_block_2: [0x0A, 151],
|
||||
LocationName.donut_secret_1_powerup_block_1: [0x0A, 152],
|
||||
LocationName.donut_secret_1_coin_block_3: [0x0A, 153],
|
||||
LocationName.donut_secret_1_powerup_block_2: [0x0A, 154],
|
||||
LocationName.donut_secret_1_powerup_block_3: [0x0A, 155],
|
||||
LocationName.donut_secret_1_life_block_1: [0x0A, 156],
|
||||
LocationName.donut_secret_1_powerup_block_4: [0x0A, 157],
|
||||
LocationName.donut_secret_1_powerup_block_5: [0x0A, 158],
|
||||
LocationName.donut_secret_1_key_block_1: [0x0A, 159],
|
||||
LocationName.vanilla_fortress_powerup_block_1: [0x0B, 160],
|
||||
LocationName.vanilla_fortress_powerup_block_2: [0x0B, 161],
|
||||
LocationName.vanilla_fortress_yellow_block_1: [0x0B, 162],
|
||||
LocationName.butter_bridge_1_powerup_block_1: [0x0C, 163],
|
||||
LocationName.butter_bridge_1_multi_coin_block_1: [0x0C, 164],
|
||||
LocationName.butter_bridge_1_multi_coin_block_2: [0x0C, 165],
|
||||
LocationName.butter_bridge_1_multi_coin_block_3: [0x0C, 166],
|
||||
LocationName.butter_bridge_1_life_block_1: [0x0C, 167],
|
||||
LocationName.butter_bridge_1_bonus_block_1: [0x0C, 168],
|
||||
LocationName.butter_bridge_2_powerup_block_1: [0x0D, 169],
|
||||
LocationName.butter_bridge_2_green_block_1: [0x0D, 170],
|
||||
LocationName.butter_bridge_2_yoshi_block_1: [0x0D, 171],
|
||||
LocationName.twin_bridges_castle_powerup_block_1: [0x0E, 172],
|
||||
LocationName.cheese_bridge_powerup_block_1: [0x0F, 173],
|
||||
LocationName.cheese_bridge_powerup_block_2: [0x0F, 174],
|
||||
LocationName.cheese_bridge_wings_block_1: [0x0F, 175],
|
||||
LocationName.cheese_bridge_powerup_block_3: [0x0F, 176],
|
||||
LocationName.cookie_mountain_coin_block_1: [0x10, 177],
|
||||
LocationName.cookie_mountain_coin_block_2: [0x10, 178],
|
||||
LocationName.cookie_mountain_coin_block_3: [0x10, 179],
|
||||
LocationName.cookie_mountain_coin_block_4: [0x10, 180],
|
||||
LocationName.cookie_mountain_coin_block_5: [0x10, 181],
|
||||
LocationName.cookie_mountain_coin_block_6: [0x10, 182],
|
||||
LocationName.cookie_mountain_coin_block_7: [0x10, 183],
|
||||
LocationName.cookie_mountain_coin_block_8: [0x10, 184],
|
||||
LocationName.cookie_mountain_coin_block_9: [0x10, 185],
|
||||
LocationName.cookie_mountain_powerup_block_1: [0x10, 186],
|
||||
LocationName.cookie_mountain_life_block_1: [0x10, 187],
|
||||
LocationName.cookie_mountain_vine_block_1: [0x10, 188],
|
||||
LocationName.cookie_mountain_yoshi_block_1: [0x10, 189],
|
||||
LocationName.cookie_mountain_coin_block_10: [0x10, 190],
|
||||
LocationName.cookie_mountain_coin_block_11: [0x10, 191],
|
||||
LocationName.cookie_mountain_powerup_block_2: [0x10, 192],
|
||||
LocationName.cookie_mountain_coin_block_12: [0x10, 193],
|
||||
LocationName.cookie_mountain_coin_block_13: [0x10, 194],
|
||||
LocationName.cookie_mountain_coin_block_14: [0x10, 195],
|
||||
LocationName.cookie_mountain_coin_block_15: [0x10, 196],
|
||||
LocationName.cookie_mountain_coin_block_16: [0x10, 197],
|
||||
LocationName.cookie_mountain_coin_block_17: [0x10, 198],
|
||||
LocationName.cookie_mountain_coin_block_18: [0x10, 199],
|
||||
LocationName.cookie_mountain_coin_block_19: [0x10, 200],
|
||||
LocationName.cookie_mountain_coin_block_20: [0x10, 201],
|
||||
LocationName.cookie_mountain_coin_block_21: [0x10, 202],
|
||||
LocationName.cookie_mountain_coin_block_22: [0x10, 203],
|
||||
LocationName.cookie_mountain_coin_block_23: [0x10, 204],
|
||||
LocationName.cookie_mountain_coin_block_24: [0x10, 205],
|
||||
LocationName.cookie_mountain_coin_block_25: [0x10, 206],
|
||||
LocationName.cookie_mountain_coin_block_26: [0x10, 207],
|
||||
LocationName.cookie_mountain_coin_block_27: [0x10, 208],
|
||||
LocationName.cookie_mountain_coin_block_28: [0x10, 209],
|
||||
LocationName.cookie_mountain_coin_block_29: [0x10, 210],
|
||||
LocationName.cookie_mountain_coin_block_30: [0x10, 211],
|
||||
LocationName.soda_lake_powerup_block_1: [0x11, 212],
|
||||
LocationName.donut_secret_house_powerup_block_1: [0x13, 213],
|
||||
LocationName.donut_secret_house_multi_coin_block_1: [0x13, 214],
|
||||
LocationName.donut_secret_house_life_block_1: [0x13, 215],
|
||||
LocationName.donut_secret_house_vine_block_1: [0x13, 216],
|
||||
LocationName.donut_secret_house_directional_coin_block_1: [0x13, 217],
|
||||
LocationName.donut_plains_1_coin_block_1: [0x15, 218],
|
||||
LocationName.donut_plains_1_coin_block_2: [0x15, 219],
|
||||
LocationName.donut_plains_1_yoshi_block_1: [0x15, 220],
|
||||
LocationName.donut_plains_1_vine_block_1: [0x15, 221],
|
||||
LocationName.donut_plains_1_green_block_1: [0x15, 222],
|
||||
LocationName.donut_plains_1_green_block_2: [0x15, 223],
|
||||
LocationName.donut_plains_1_green_block_3: [0x15, 224],
|
||||
LocationName.donut_plains_1_green_block_4: [0x15, 225],
|
||||
LocationName.donut_plains_1_green_block_5: [0x15, 226],
|
||||
LocationName.donut_plains_1_green_block_6: [0x15, 227],
|
||||
LocationName.donut_plains_1_green_block_7: [0x15, 228],
|
||||
LocationName.donut_plains_1_green_block_8: [0x15, 229],
|
||||
LocationName.donut_plains_1_green_block_9: [0x15, 230],
|
||||
LocationName.donut_plains_1_green_block_10: [0x15, 231],
|
||||
LocationName.donut_plains_1_green_block_11: [0x15, 232],
|
||||
LocationName.donut_plains_1_green_block_12: [0x15, 233],
|
||||
LocationName.donut_plains_1_green_block_13: [0x15, 234],
|
||||
LocationName.donut_plains_1_green_block_14: [0x15, 235],
|
||||
LocationName.donut_plains_1_green_block_15: [0x15, 236],
|
||||
LocationName.donut_plains_1_green_block_16: [0x15, 237],
|
||||
LocationName.donut_plains_1_yellow_block_1: [0x15, 238],
|
||||
LocationName.donut_plains_1_yellow_block_2: [0x15, 239],
|
||||
LocationName.donut_plains_1_yellow_block_3: [0x15, 240],
|
||||
LocationName.sunken_ghost_ship_powerup_block_1: [0x18, 241],
|
||||
LocationName.sunken_ghost_ship_star_block_1: [0x18, 242],
|
||||
LocationName.chocolate_castle_yellow_block_1: [0x1A, 243],
|
||||
LocationName.chocolate_castle_yellow_block_2: [0x1A, 244],
|
||||
LocationName.chocolate_castle_green_block_1: [0x1A, 245],
|
||||
LocationName.chocolate_fortress_powerup_block_1: [0x1B, 246],
|
||||
LocationName.chocolate_fortress_powerup_block_2: [0x1B, 247],
|
||||
LocationName.chocolate_fortress_coin_block_1: [0x1B, 248],
|
||||
LocationName.chocolate_fortress_coin_block_2: [0x1B, 249],
|
||||
LocationName.chocolate_fortress_green_block_1: [0x1B, 250],
|
||||
LocationName.chocolate_island_5_yoshi_block_1: [0x1C, 251],
|
||||
LocationName.chocolate_island_5_powerup_block_1: [0x1C, 252],
|
||||
LocationName.chocolate_island_5_life_block_1: [0x1C, 253],
|
||||
LocationName.chocolate_island_5_yellow_block_1: [0x1C, 254],
|
||||
LocationName.chocolate_island_4_yellow_block_1: [0x1D, 255],
|
||||
LocationName.chocolate_island_4_blue_pow_block_1: [0x1D, 256],
|
||||
LocationName.chocolate_island_4_powerup_block_1: [0x1D, 257],
|
||||
LocationName.forest_fortress_yellow_block_1: [0x1F, 258],
|
||||
LocationName.forest_fortress_powerup_block_1: [0x1F, 259],
|
||||
LocationName.forest_fortress_life_block_1: [0x1F, 260],
|
||||
LocationName.forest_fortress_life_block_2: [0x1F, 261],
|
||||
LocationName.forest_fortress_life_block_3: [0x1F, 262],
|
||||
LocationName.forest_fortress_life_block_4: [0x1F, 263],
|
||||
LocationName.forest_fortress_life_block_5: [0x1F, 264],
|
||||
LocationName.forest_fortress_life_block_6: [0x1F, 265],
|
||||
LocationName.forest_fortress_life_block_7: [0x1F, 266],
|
||||
LocationName.forest_fortress_life_block_8: [0x1F, 267],
|
||||
LocationName.forest_fortress_life_block_9: [0x1F, 268],
|
||||
LocationName.forest_castle_green_block_1: [0x20, 269],
|
||||
LocationName.chocolate_ghost_house_powerup_block_1: [0x21, 270],
|
||||
LocationName.chocolate_ghost_house_powerup_block_2: [0x21, 271],
|
||||
LocationName.chocolate_ghost_house_life_block_1: [0x21, 272],
|
||||
LocationName.chocolate_island_1_flying_block_1: [0x22, 273],
|
||||
LocationName.chocolate_island_1_flying_block_2: [0x22, 274],
|
||||
LocationName.chocolate_island_1_yoshi_block_1: [0x22, 275],
|
||||
LocationName.chocolate_island_1_green_block_1: [0x22, 276],
|
||||
LocationName.chocolate_island_1_life_block_1: [0x22, 277],
|
||||
LocationName.chocolate_island_3_powerup_block_1: [0x23, 278],
|
||||
LocationName.chocolate_island_3_powerup_block_2: [0x23, 279],
|
||||
LocationName.chocolate_island_3_powerup_block_3: [0x23, 280],
|
||||
LocationName.chocolate_island_3_green_block_1: [0x23, 281],
|
||||
LocationName.chocolate_island_3_bonus_block_1: [0x23, 282],
|
||||
LocationName.chocolate_island_3_vine_block_1: [0x23, 283],
|
||||
LocationName.chocolate_island_3_life_block_1: [0x23, 284],
|
||||
LocationName.chocolate_island_3_life_block_2: [0x23, 285],
|
||||
LocationName.chocolate_island_3_life_block_3: [0x23, 286],
|
||||
LocationName.chocolate_island_2_multi_coin_block_1: [0x24, 287],
|
||||
LocationName.chocolate_island_2_invis_coin_block_1: [0x24, 288],
|
||||
LocationName.chocolate_island_2_yoshi_block_1: [0x24, 289],
|
||||
LocationName.chocolate_island_2_coin_block_1: [0x24, 290],
|
||||
LocationName.chocolate_island_2_coin_block_2: [0x24, 291],
|
||||
LocationName.chocolate_island_2_multi_coin_block_2: [0x24, 292],
|
||||
LocationName.chocolate_island_2_powerup_block_1: [0x24, 293],
|
||||
LocationName.chocolate_island_2_blue_pow_block_1: [0x24, 294],
|
||||
LocationName.chocolate_island_2_yellow_block_1: [0x24, 295],
|
||||
LocationName.chocolate_island_2_yellow_block_2: [0x24, 296],
|
||||
LocationName.chocolate_island_2_green_block_1: [0x24, 297],
|
||||
LocationName.chocolate_island_2_green_block_2: [0x24, 298],
|
||||
LocationName.chocolate_island_2_green_block_3: [0x24, 299],
|
||||
LocationName.chocolate_island_2_green_block_4: [0x24, 300],
|
||||
LocationName.chocolate_island_2_green_block_5: [0x24, 301],
|
||||
LocationName.chocolate_island_2_green_block_6: [0x24, 302],
|
||||
LocationName.yoshis_island_castle_coin_block_1: [0x25, 303],
|
||||
LocationName.yoshis_island_castle_coin_block_2: [0x25, 304],
|
||||
LocationName.yoshis_island_castle_powerup_block_1: [0x25, 305],
|
||||
LocationName.yoshis_island_castle_coin_block_3: [0x25, 306],
|
||||
LocationName.yoshis_island_castle_coin_block_4: [0x25, 307],
|
||||
LocationName.yoshis_island_castle_flying_block_1: [0x25, 308],
|
||||
LocationName.yoshis_island_4_yellow_block_1: [0x26, 309],
|
||||
LocationName.yoshis_island_4_powerup_block_1: [0x26, 310],
|
||||
LocationName.yoshis_island_4_multi_coin_block_1: [0x26, 311],
|
||||
LocationName.yoshis_island_4_star_block_1: [0x26, 312],
|
||||
LocationName.yoshis_island_3_yellow_block_1: [0x27, 313],
|
||||
LocationName.yoshis_island_3_yellow_block_2: [0x27, 314],
|
||||
LocationName.yoshis_island_3_yellow_block_3: [0x27, 315],
|
||||
LocationName.yoshis_island_3_yellow_block_4: [0x27, 316],
|
||||
LocationName.yoshis_island_3_yellow_block_5: [0x27, 317],
|
||||
LocationName.yoshis_island_3_yellow_block_6: [0x27, 318],
|
||||
LocationName.yoshis_island_3_yellow_block_7: [0x27, 319],
|
||||
LocationName.yoshis_island_3_yellow_block_8: [0x27, 320],
|
||||
LocationName.yoshis_island_3_yellow_block_9: [0x27, 321],
|
||||
LocationName.yoshis_island_3_coin_block_1: [0x27, 322],
|
||||
LocationName.yoshis_island_3_yoshi_block_1: [0x27, 323],
|
||||
LocationName.yoshis_island_3_coin_block_2: [0x27, 324],
|
||||
LocationName.yoshis_island_3_powerup_block_1: [0x27, 325],
|
||||
LocationName.yoshis_island_3_yellow_block_10: [0x27, 326],
|
||||
LocationName.yoshis_island_3_yellow_block_11: [0x27, 327],
|
||||
LocationName.yoshis_island_3_yellow_block_12: [0x27, 328],
|
||||
LocationName.yoshis_island_3_bonus_block_1: [0x27, 329],
|
||||
LocationName.yoshis_island_1_flying_block_1: [0x29, 330],
|
||||
LocationName.yoshis_island_1_yellow_block_1: [0x29, 331],
|
||||
LocationName.yoshis_island_1_life_block_1: [0x29, 332],
|
||||
LocationName.yoshis_island_1_powerup_block_1: [0x29, 333],
|
||||
LocationName.yoshis_island_2_flying_block_1: [0x2A, 334],
|
||||
LocationName.yoshis_island_2_flying_block_2: [0x2A, 335],
|
||||
LocationName.yoshis_island_2_flying_block_3: [0x2A, 336],
|
||||
LocationName.yoshis_island_2_flying_block_4: [0x2A, 337],
|
||||
LocationName.yoshis_island_2_flying_block_5: [0x2A, 338],
|
||||
LocationName.yoshis_island_2_flying_block_6: [0x2A, 339],
|
||||
LocationName.yoshis_island_2_coin_block_1: [0x2A, 340],
|
||||
LocationName.yoshis_island_2_yellow_block_1: [0x2A, 341],
|
||||
LocationName.yoshis_island_2_coin_block_2: [0x2A, 342],
|
||||
LocationName.yoshis_island_2_coin_block_3: [0x2A, 343],
|
||||
LocationName.yoshis_island_2_yoshi_block_1: [0x2A, 344],
|
||||
LocationName.yoshis_island_2_coin_block_4: [0x2A, 345],
|
||||
LocationName.yoshis_island_2_yoshi_block_2: [0x2A, 346],
|
||||
LocationName.yoshis_island_2_coin_block_5: [0x2A, 347],
|
||||
LocationName.yoshis_island_2_vine_block_1: [0x2A, 348],
|
||||
LocationName.yoshis_island_2_yellow_block_2: [0x2A, 349],
|
||||
LocationName.vanilla_ghost_house_powerup_block_1: [0x2B, 350],
|
||||
LocationName.vanilla_ghost_house_vine_block_1: [0x2B, 351],
|
||||
LocationName.vanilla_ghost_house_powerup_block_2: [0x2B, 352],
|
||||
LocationName.vanilla_ghost_house_multi_coin_block_1: [0x2B, 353],
|
||||
LocationName.vanilla_ghost_house_blue_pow_block_1: [0x2B, 354],
|
||||
LocationName.vanilla_secret_1_coin_block_1: [0x2D, 355],
|
||||
LocationName.vanilla_secret_1_powerup_block_1: [0x2D, 356],
|
||||
LocationName.vanilla_secret_1_multi_coin_block_1: [0x2D, 357],
|
||||
LocationName.vanilla_secret_1_vine_block_1: [0x2D, 358],
|
||||
LocationName.vanilla_secret_1_vine_block_2: [0x2D, 359],
|
||||
LocationName.vanilla_secret_1_coin_block_2: [0x2D, 360],
|
||||
LocationName.vanilla_secret_1_coin_block_3: [0x2D, 361],
|
||||
LocationName.vanilla_secret_1_powerup_block_2: [0x2D, 362],
|
||||
LocationName.vanilla_dome_3_coin_block_1: [0x2E, 363],
|
||||
LocationName.vanilla_dome_3_flying_block_1: [0x2E, 364],
|
||||
LocationName.vanilla_dome_3_flying_block_2: [0x2E, 365],
|
||||
LocationName.vanilla_dome_3_powerup_block_1: [0x2E, 366],
|
||||
LocationName.vanilla_dome_3_flying_block_3: [0x2E, 367],
|
||||
LocationName.vanilla_dome_3_invis_coin_block_1: [0x2E, 368],
|
||||
LocationName.vanilla_dome_3_powerup_block_2: [0x2E, 369],
|
||||
LocationName.vanilla_dome_3_multi_coin_block_1: [0x2E, 370],
|
||||
LocationName.vanilla_dome_3_powerup_block_3: [0x2E, 371],
|
||||
LocationName.vanilla_dome_3_yoshi_block_1: [0x2E, 372],
|
||||
LocationName.vanilla_dome_3_powerup_block_4: [0x2E, 373],
|
||||
LocationName.vanilla_dome_3_pswitch_coin_block_1: [0x2E, 374],
|
||||
LocationName.vanilla_dome_3_pswitch_coin_block_2: [0x2E, 375],
|
||||
LocationName.vanilla_dome_3_pswitch_coin_block_3: [0x2E, 376],
|
||||
LocationName.vanilla_dome_3_pswitch_coin_block_4: [0x2E, 377],
|
||||
LocationName.vanilla_dome_3_pswitch_coin_block_5: [0x2E, 378],
|
||||
LocationName.vanilla_dome_3_pswitch_coin_block_6: [0x2E, 379],
|
||||
LocationName.donut_secret_2_directional_coin_block_1: [0x2F, 380],
|
||||
LocationName.donut_secret_2_vine_block_1: [0x2F, 381],
|
||||
LocationName.donut_secret_2_star_block_1: [0x2F, 382],
|
||||
LocationName.donut_secret_2_powerup_block_1: [0x2F, 383],
|
||||
LocationName.donut_secret_2_star_block_2: [0x2F, 384],
|
||||
LocationName.valley_of_bowser_4_yellow_block_1: [0x33, 385],
|
||||
LocationName.valley_of_bowser_4_powerup_block_1: [0x33, 386],
|
||||
LocationName.valley_of_bowser_4_vine_block_1: [0x33, 387],
|
||||
LocationName.valley_of_bowser_4_yoshi_block_1: [0x33, 388],
|
||||
LocationName.valley_of_bowser_4_life_block_1: [0x33, 389],
|
||||
LocationName.valley_of_bowser_4_powerup_block_2: [0x33, 390],
|
||||
LocationName.valley_castle_yellow_block_1: [0x34, 391],
|
||||
LocationName.valley_castle_yellow_block_2: [0x34, 392],
|
||||
LocationName.valley_castle_green_block_1: [0x34, 393],
|
||||
LocationName.valley_fortress_green_block_1: [0x35, 394],
|
||||
LocationName.valley_fortress_yellow_block_1: [0x35, 395],
|
||||
LocationName.valley_of_bowser_3_powerup_block_1: [0x37, 396],
|
||||
LocationName.valley_of_bowser_3_powerup_block_2: [0x37, 397],
|
||||
LocationName.valley_ghost_house_pswitch_coin_block_1: [0x38, 398],
|
||||
LocationName.valley_ghost_house_multi_coin_block_1: [0x38, 399],
|
||||
LocationName.valley_ghost_house_powerup_block_1: [0x38, 400],
|
||||
LocationName.valley_ghost_house_directional_coin_block_1: [0x38, 401],
|
||||
LocationName.valley_of_bowser_2_powerup_block_1: [0x39, 402],
|
||||
LocationName.valley_of_bowser_2_yellow_block_1: [0x39, 403],
|
||||
LocationName.valley_of_bowser_2_powerup_block_2: [0x39, 404],
|
||||
LocationName.valley_of_bowser_2_wings_block_1: [0x39, 405],
|
||||
LocationName.valley_of_bowser_1_green_block_1: [0x3A, 406],
|
||||
LocationName.valley_of_bowser_1_invis_coin_block_1: [0x3A, 407],
|
||||
LocationName.valley_of_bowser_1_invis_coin_block_2: [0x3A, 408],
|
||||
LocationName.valley_of_bowser_1_invis_coin_block_3: [0x3A, 409],
|
||||
LocationName.valley_of_bowser_1_yellow_block_1: [0x3A, 410],
|
||||
LocationName.valley_of_bowser_1_yellow_block_2: [0x3A, 411],
|
||||
LocationName.valley_of_bowser_1_yellow_block_3: [0x3A, 412],
|
||||
LocationName.valley_of_bowser_1_yellow_block_4: [0x3A, 413],
|
||||
LocationName.valley_of_bowser_1_vine_block_1: [0x3A, 414],
|
||||
LocationName.chocolate_secret_powerup_block_1: [0x3B, 415],
|
||||
LocationName.chocolate_secret_powerup_block_2: [0x3B, 416],
|
||||
LocationName.vanilla_dome_2_coin_block_1: [0x3C, 417],
|
||||
LocationName.vanilla_dome_2_powerup_block_1: [0x3C, 418],
|
||||
LocationName.vanilla_dome_2_coin_block_2: [0x3C, 419],
|
||||
LocationName.vanilla_dome_2_coin_block_3: [0x3C, 420],
|
||||
LocationName.vanilla_dome_2_vine_block_1: [0x3C, 421],
|
||||
LocationName.vanilla_dome_2_invis_life_block_1: [0x3C, 422],
|
||||
LocationName.vanilla_dome_2_coin_block_4: [0x3C, 423],
|
||||
LocationName.vanilla_dome_2_coin_block_5: [0x3C, 424],
|
||||
LocationName.vanilla_dome_2_powerup_block_2: [0x3C, 425],
|
||||
LocationName.vanilla_dome_2_powerup_block_3: [0x3C, 426],
|
||||
LocationName.vanilla_dome_2_powerup_block_4: [0x3C, 427],
|
||||
LocationName.vanilla_dome_2_powerup_block_5: [0x3C, 428],
|
||||
LocationName.vanilla_dome_2_multi_coin_block_1: [0x3C, 429],
|
||||
LocationName.vanilla_dome_2_multi_coin_block_2: [0x3C, 430],
|
||||
LocationName.vanilla_dome_4_powerup_block_1: [0x3D, 431],
|
||||
LocationName.vanilla_dome_4_powerup_block_2: [0x3D, 432],
|
||||
LocationName.vanilla_dome_4_coin_block_1: [0x3D, 433],
|
||||
LocationName.vanilla_dome_4_coin_block_2: [0x3D, 434],
|
||||
LocationName.vanilla_dome_4_coin_block_3: [0x3D, 435],
|
||||
LocationName.vanilla_dome_4_life_block_1: [0x3D, 436],
|
||||
LocationName.vanilla_dome_4_coin_block_4: [0x3D, 437],
|
||||
LocationName.vanilla_dome_4_coin_block_5: [0x3D, 438],
|
||||
LocationName.vanilla_dome_4_coin_block_6: [0x3D, 439],
|
||||
LocationName.vanilla_dome_4_coin_block_7: [0x3D, 440],
|
||||
LocationName.vanilla_dome_4_coin_block_8: [0x3D, 441],
|
||||
LocationName.vanilla_dome_1_flying_block_1: [0x3E, 442],
|
||||
LocationName.vanilla_dome_1_powerup_block_1: [0x3E, 443],
|
||||
LocationName.vanilla_dome_1_powerup_block_2: [0x3E, 444],
|
||||
LocationName.vanilla_dome_1_coin_block_1: [0x3E, 445],
|
||||
LocationName.vanilla_dome_1_life_block_1: [0x3E, 446],
|
||||
LocationName.vanilla_dome_1_powerup_block_3: [0x3E, 447],
|
||||
LocationName.vanilla_dome_1_vine_block_1: [0x3E, 448],
|
||||
LocationName.vanilla_dome_1_star_block_1: [0x3E, 449],
|
||||
LocationName.vanilla_dome_1_powerup_block_4: [0x3E, 450],
|
||||
LocationName.vanilla_dome_1_coin_block_2: [0x3E, 451],
|
||||
LocationName.vanilla_dome_castle_life_block_1: [0x40, 452],
|
||||
LocationName.vanilla_dome_castle_life_block_2: [0x40, 453],
|
||||
LocationName.vanilla_dome_castle_powerup_block_1: [0x40, 454],
|
||||
LocationName.vanilla_dome_castle_life_block_3: [0x40, 455],
|
||||
LocationName.vanilla_dome_castle_green_block_1: [0x40, 456],
|
||||
LocationName.forest_ghost_house_coin_block_1: [0x41, 457],
|
||||
LocationName.forest_ghost_house_powerup_block_1: [0x41, 458],
|
||||
LocationName.forest_ghost_house_flying_block_1: [0x41, 459],
|
||||
LocationName.forest_ghost_house_powerup_block_2: [0x41, 460],
|
||||
LocationName.forest_ghost_house_life_block_1: [0x41, 461],
|
||||
LocationName.forest_of_illusion_1_powerup_block_1: [0x42, 462],
|
||||
LocationName.forest_of_illusion_1_yoshi_block_1: [0x42, 463],
|
||||
LocationName.forest_of_illusion_1_powerup_block_2: [0x42, 464],
|
||||
LocationName.forest_of_illusion_1_key_block_1: [0x42, 465],
|
||||
LocationName.forest_of_illusion_1_life_block_1: [0x42, 466],
|
||||
LocationName.forest_of_illusion_4_multi_coin_block_1: [0x43, 467],
|
||||
LocationName.forest_of_illusion_4_coin_block_1: [0x43, 468],
|
||||
LocationName.forest_of_illusion_4_coin_block_2: [0x43, 469],
|
||||
LocationName.forest_of_illusion_4_coin_block_3: [0x43, 470],
|
||||
LocationName.forest_of_illusion_4_coin_block_4: [0x43, 471],
|
||||
LocationName.forest_of_illusion_4_powerup_block_1: [0x43, 472],
|
||||
LocationName.forest_of_illusion_4_coin_block_5: [0x43, 473],
|
||||
LocationName.forest_of_illusion_4_coin_block_6: [0x43, 474],
|
||||
LocationName.forest_of_illusion_4_coin_block_7: [0x43, 475],
|
||||
LocationName.forest_of_illusion_4_powerup_block_2: [0x43, 476],
|
||||
LocationName.forest_of_illusion_4_coin_block_8: [0x43, 477],
|
||||
LocationName.forest_of_illusion_4_coin_block_9: [0x43, 478],
|
||||
LocationName.forest_of_illusion_4_coin_block_10: [0x43, 479],
|
||||
LocationName.forest_of_illusion_2_green_block_1: [0x44, 480],
|
||||
LocationName.forest_of_illusion_2_powerup_block_1: [0x44, 481],
|
||||
LocationName.forest_of_illusion_2_invis_coin_block_1: [0x44, 482],
|
||||
LocationName.forest_of_illusion_2_invis_coin_block_2: [0x44, 483],
|
||||
LocationName.forest_of_illusion_2_invis_life_block_1: [0x44, 484],
|
||||
LocationName.forest_of_illusion_2_invis_coin_block_3: [0x44, 485],
|
||||
LocationName.forest_of_illusion_2_yellow_block_1: [0x44, 486],
|
||||
LocationName.forest_secret_powerup_block_1: [0x46, 487],
|
||||
LocationName.forest_secret_powerup_block_2: [0x46, 488],
|
||||
LocationName.forest_secret_life_block_1: [0x46, 489],
|
||||
LocationName.forest_of_illusion_3_yoshi_block_1: [0x47, 490],
|
||||
LocationName.forest_of_illusion_3_coin_block_1: [0x47, 491],
|
||||
LocationName.forest_of_illusion_3_multi_coin_block_1: [0x47, 492],
|
||||
LocationName.forest_of_illusion_3_coin_block_2: [0x47, 493],
|
||||
LocationName.forest_of_illusion_3_multi_coin_block_2: [0x47, 494],
|
||||
LocationName.forest_of_illusion_3_coin_block_3: [0x47, 495],
|
||||
LocationName.forest_of_illusion_3_coin_block_4: [0x47, 496],
|
||||
LocationName.forest_of_illusion_3_coin_block_5: [0x47, 497],
|
||||
LocationName.forest_of_illusion_3_coin_block_6: [0x47, 498],
|
||||
LocationName.forest_of_illusion_3_coin_block_7: [0x47, 499],
|
||||
LocationName.forest_of_illusion_3_coin_block_8: [0x47, 500],
|
||||
LocationName.forest_of_illusion_3_coin_block_9: [0x47, 501],
|
||||
LocationName.forest_of_illusion_3_coin_block_10: [0x47, 502],
|
||||
LocationName.forest_of_illusion_3_coin_block_11: [0x47, 503],
|
||||
LocationName.forest_of_illusion_3_coin_block_12: [0x47, 504],
|
||||
LocationName.forest_of_illusion_3_coin_block_13: [0x47, 505],
|
||||
LocationName.forest_of_illusion_3_coin_block_14: [0x47, 506],
|
||||
LocationName.forest_of_illusion_3_coin_block_15: [0x47, 507],
|
||||
LocationName.forest_of_illusion_3_coin_block_16: [0x47, 508],
|
||||
LocationName.forest_of_illusion_3_coin_block_17: [0x47, 509],
|
||||
LocationName.forest_of_illusion_3_coin_block_18: [0x47, 510],
|
||||
LocationName.forest_of_illusion_3_coin_block_19: [0x47, 511],
|
||||
LocationName.forest_of_illusion_3_coin_block_20: [0x47, 512],
|
||||
LocationName.forest_of_illusion_3_coin_block_21: [0x47, 513],
|
||||
LocationName.forest_of_illusion_3_coin_block_22: [0x47, 514],
|
||||
LocationName.forest_of_illusion_3_coin_block_23: [0x47, 515],
|
||||
LocationName.forest_of_illusion_3_coin_block_24: [0x47, 516],
|
||||
LocationName.special_zone_8_yoshi_block_1: [0x49, 517],
|
||||
LocationName.special_zone_8_coin_block_1: [0x49, 518],
|
||||
LocationName.special_zone_8_coin_block_2: [0x49, 519],
|
||||
LocationName.special_zone_8_coin_block_3: [0x49, 520],
|
||||
LocationName.special_zone_8_coin_block_4: [0x49, 521],
|
||||
LocationName.special_zone_8_coin_block_5: [0x49, 522],
|
||||
LocationName.special_zone_8_blue_pow_block_1: [0x49, 523],
|
||||
LocationName.special_zone_8_powerup_block_1: [0x49, 524],
|
||||
LocationName.special_zone_8_star_block_1: [0x49, 525],
|
||||
LocationName.special_zone_8_coin_block_6: [0x49, 526],
|
||||
LocationName.special_zone_8_coin_block_7: [0x49, 527],
|
||||
LocationName.special_zone_8_coin_block_8: [0x49, 528],
|
||||
LocationName.special_zone_8_coin_block_9: [0x49, 529],
|
||||
LocationName.special_zone_8_coin_block_10: [0x49, 530],
|
||||
LocationName.special_zone_8_coin_block_11: [0x49, 531],
|
||||
LocationName.special_zone_8_coin_block_12: [0x49, 532],
|
||||
LocationName.special_zone_8_coin_block_13: [0x49, 533],
|
||||
LocationName.special_zone_8_coin_block_14: [0x49, 534],
|
||||
LocationName.special_zone_8_coin_block_15: [0x49, 535],
|
||||
LocationName.special_zone_8_coin_block_16: [0x49, 536],
|
||||
LocationName.special_zone_8_coin_block_17: [0x49, 537],
|
||||
LocationName.special_zone_8_coin_block_18: [0x49, 538],
|
||||
LocationName.special_zone_8_multi_coin_block_1: [0x49, 539],
|
||||
LocationName.special_zone_8_coin_block_19: [0x49, 540],
|
||||
LocationName.special_zone_8_coin_block_20: [0x49, 541],
|
||||
LocationName.special_zone_8_coin_block_21: [0x49, 542],
|
||||
LocationName.special_zone_8_coin_block_22: [0x49, 543],
|
||||
LocationName.special_zone_8_coin_block_23: [0x49, 544],
|
||||
LocationName.special_zone_8_powerup_block_2: [0x49, 545],
|
||||
LocationName.special_zone_8_flying_block_1: [0x49, 546],
|
||||
LocationName.special_zone_7_powerup_block_1: [0x4A, 547],
|
||||
LocationName.special_zone_7_yoshi_block_1: [0x4A, 548],
|
||||
LocationName.special_zone_7_coin_block_1: [0x4A, 549],
|
||||
LocationName.special_zone_7_powerup_block_2: [0x4A, 550],
|
||||
LocationName.special_zone_7_coin_block_2: [0x4A, 551],
|
||||
LocationName.special_zone_6_powerup_block_1: [0x4B, 552],
|
||||
LocationName.special_zone_6_coin_block_1: [0x4B, 553],
|
||||
LocationName.special_zone_6_coin_block_2: [0x4B, 554],
|
||||
LocationName.special_zone_6_yoshi_block_1: [0x4B, 555],
|
||||
LocationName.special_zone_6_life_block_1: [0x4B, 556],
|
||||
LocationName.special_zone_6_multi_coin_block_1: [0x4B, 557],
|
||||
LocationName.special_zone_6_coin_block_3: [0x4B, 558],
|
||||
LocationName.special_zone_6_coin_block_4: [0x4B, 559],
|
||||
LocationName.special_zone_6_coin_block_5: [0x4B, 560],
|
||||
LocationName.special_zone_6_coin_block_6: [0x4B, 561],
|
||||
LocationName.special_zone_6_coin_block_7: [0x4B, 562],
|
||||
LocationName.special_zone_6_coin_block_8: [0x4B, 563],
|
||||
LocationName.special_zone_6_coin_block_9: [0x4B, 564],
|
||||
LocationName.special_zone_6_coin_block_10: [0x4B, 565],
|
||||
LocationName.special_zone_6_coin_block_11: [0x4B, 566],
|
||||
LocationName.special_zone_6_coin_block_12: [0x4B, 567],
|
||||
LocationName.special_zone_6_coin_block_13: [0x4B, 568],
|
||||
LocationName.special_zone_6_coin_block_14: [0x4B, 569],
|
||||
LocationName.special_zone_6_coin_block_15: [0x4B, 570],
|
||||
LocationName.special_zone_6_coin_block_16: [0x4B, 571],
|
||||
LocationName.special_zone_6_coin_block_17: [0x4B, 572],
|
||||
LocationName.special_zone_6_coin_block_18: [0x4B, 573],
|
||||
LocationName.special_zone_6_coin_block_19: [0x4B, 574],
|
||||
LocationName.special_zone_6_coin_block_20: [0x4B, 575],
|
||||
LocationName.special_zone_6_coin_block_21: [0x4B, 576],
|
||||
LocationName.special_zone_6_coin_block_22: [0x4B, 577],
|
||||
LocationName.special_zone_6_coin_block_23: [0x4B, 578],
|
||||
LocationName.special_zone_6_coin_block_24: [0x4B, 579],
|
||||
LocationName.special_zone_6_coin_block_25: [0x4B, 580],
|
||||
LocationName.special_zone_6_coin_block_26: [0x4B, 581],
|
||||
LocationName.special_zone_6_coin_block_27: [0x4B, 582],
|
||||
LocationName.special_zone_6_coin_block_28: [0x4B, 583],
|
||||
LocationName.special_zone_6_powerup_block_2: [0x4B, 584],
|
||||
LocationName.special_zone_6_coin_block_29: [0x4B, 585],
|
||||
LocationName.special_zone_6_coin_block_30: [0x4B, 586],
|
||||
LocationName.special_zone_6_coin_block_31: [0x4B, 587],
|
||||
LocationName.special_zone_6_coin_block_32: [0x4B, 588],
|
||||
LocationName.special_zone_6_coin_block_33: [0x4B, 589],
|
||||
LocationName.special_zone_5_yoshi_block_1: [0x4C, 590],
|
||||
LocationName.special_zone_1_vine_block_1: [0x4E, 591],
|
||||
LocationName.special_zone_1_vine_block_2: [0x4E, 592],
|
||||
LocationName.special_zone_1_vine_block_3: [0x4E, 593],
|
||||
LocationName.special_zone_1_vine_block_4: [0x4E, 594],
|
||||
LocationName.special_zone_1_life_block_1: [0x4E, 595],
|
||||
LocationName.special_zone_1_vine_block_5: [0x4E, 596],
|
||||
LocationName.special_zone_1_blue_pow_block_1: [0x4E, 597],
|
||||
LocationName.special_zone_1_vine_block_6: [0x4E, 598],
|
||||
LocationName.special_zone_1_powerup_block_1: [0x4E, 599],
|
||||
LocationName.special_zone_1_pswitch_coin_block_1: [0x4E, 600],
|
||||
LocationName.special_zone_1_pswitch_coin_block_2: [0x4E, 601],
|
||||
LocationName.special_zone_1_pswitch_coin_block_3: [0x4E, 602],
|
||||
LocationName.special_zone_1_pswitch_coin_block_4: [0x4E, 603],
|
||||
LocationName.special_zone_1_pswitch_coin_block_5: [0x4E, 604],
|
||||
LocationName.special_zone_1_pswitch_coin_block_6: [0x4E, 605],
|
||||
LocationName.special_zone_1_pswitch_coin_block_7: [0x4E, 606],
|
||||
LocationName.special_zone_1_pswitch_coin_block_8: [0x4E, 607],
|
||||
LocationName.special_zone_1_pswitch_coin_block_9: [0x4E, 608],
|
||||
LocationName.special_zone_1_pswitch_coin_block_10: [0x4E, 609],
|
||||
LocationName.special_zone_1_pswitch_coin_block_11: [0x4E, 610],
|
||||
LocationName.special_zone_1_pswitch_coin_block_12: [0x4E, 611],
|
||||
LocationName.special_zone_1_pswitch_coin_block_13: [0x4E, 612],
|
||||
LocationName.special_zone_2_powerup_block_1: [0x4F, 613],
|
||||
LocationName.special_zone_2_coin_block_1: [0x4F, 614],
|
||||
LocationName.special_zone_2_coin_block_2: [0x4F, 615],
|
||||
LocationName.special_zone_2_powerup_block_2: [0x4F, 616],
|
||||
LocationName.special_zone_2_coin_block_3: [0x4F, 617],
|
||||
LocationName.special_zone_2_coin_block_4: [0x4F, 618],
|
||||
LocationName.special_zone_2_powerup_block_3: [0x4F, 619],
|
||||
LocationName.special_zone_2_multi_coin_block_1: [0x4F, 620],
|
||||
LocationName.special_zone_2_coin_block_5: [0x4F, 621],
|
||||
LocationName.special_zone_2_coin_block_6: [0x4F, 622],
|
||||
LocationName.special_zone_3_powerup_block_1: [0x50, 623],
|
||||
LocationName.special_zone_3_yoshi_block_1: [0x50, 624],
|
||||
LocationName.special_zone_3_wings_block_1: [0x50, 625],
|
||||
LocationName.special_zone_4_powerup_block_1: [0x51, 626],
|
||||
LocationName.special_zone_4_star_block_1: [0x51, 627],
|
||||
LocationName.star_road_2_star_block_1: [0x54, 628],
|
||||
LocationName.star_road_3_key_block_1: [0x56, 629],
|
||||
LocationName.star_road_4_powerup_block_1: [0x59, 630],
|
||||
LocationName.star_road_4_green_block_1: [0x59, 631],
|
||||
LocationName.star_road_4_green_block_2: [0x59, 632],
|
||||
LocationName.star_road_4_green_block_3: [0x59, 633],
|
||||
LocationName.star_road_4_green_block_4: [0x59, 634],
|
||||
LocationName.star_road_4_green_block_5: [0x59, 635],
|
||||
LocationName.star_road_4_green_block_6: [0x59, 636],
|
||||
LocationName.star_road_4_green_block_7: [0x59, 637],
|
||||
LocationName.star_road_4_key_block_1: [0x59, 638],
|
||||
LocationName.star_road_5_directional_coin_block_1: [0x5A, 639],
|
||||
LocationName.star_road_5_life_block_1: [0x5A, 640],
|
||||
LocationName.star_road_5_vine_block_1: [0x5A, 641],
|
||||
LocationName.star_road_5_yellow_block_1: [0x5A, 642],
|
||||
LocationName.star_road_5_yellow_block_2: [0x5A, 643],
|
||||
LocationName.star_road_5_yellow_block_3: [0x5A, 644],
|
||||
LocationName.star_road_5_yellow_block_4: [0x5A, 645],
|
||||
LocationName.star_road_5_yellow_block_5: [0x5A, 646],
|
||||
LocationName.star_road_5_yellow_block_6: [0x5A, 647],
|
||||
LocationName.star_road_5_yellow_block_7: [0x5A, 648],
|
||||
LocationName.star_road_5_yellow_block_8: [0x5A, 649],
|
||||
LocationName.star_road_5_yellow_block_9: [0x5A, 650],
|
||||
LocationName.star_road_5_yellow_block_10: [0x5A, 651],
|
||||
LocationName.star_road_5_yellow_block_11: [0x5A, 652],
|
||||
LocationName.star_road_5_yellow_block_12: [0x5A, 653],
|
||||
LocationName.star_road_5_yellow_block_13: [0x5A, 654],
|
||||
LocationName.star_road_5_yellow_block_14: [0x5A, 655],
|
||||
LocationName.star_road_5_yellow_block_15: [0x5A, 656],
|
||||
LocationName.star_road_5_yellow_block_16: [0x5A, 657],
|
||||
LocationName.star_road_5_yellow_block_17: [0x5A, 658],
|
||||
LocationName.star_road_5_yellow_block_18: [0x5A, 659],
|
||||
LocationName.star_road_5_yellow_block_19: [0x5A, 660],
|
||||
LocationName.star_road_5_yellow_block_20: [0x5A, 661],
|
||||
LocationName.star_road_5_green_block_1: [0x5A, 662],
|
||||
LocationName.star_road_5_green_block_2: [0x5A, 663],
|
||||
LocationName.star_road_5_green_block_3: [0x5A, 664],
|
||||
LocationName.star_road_5_green_block_4: [0x5A, 665],
|
||||
LocationName.star_road_5_green_block_5: [0x5A, 666],
|
||||
LocationName.star_road_5_green_block_6: [0x5A, 667],
|
||||
LocationName.star_road_5_green_block_7: [0x5A, 668],
|
||||
LocationName.star_road_5_green_block_8: [0x5A, 669],
|
||||
LocationName.star_road_5_green_block_9: [0x5A, 670],
|
||||
LocationName.star_road_5_green_block_10: [0x5A, 671],
|
||||
LocationName.star_road_5_green_block_11: [0x5A, 672],
|
||||
LocationName.star_road_5_green_block_12: [0x5A, 673],
|
||||
LocationName.star_road_5_green_block_13: [0x5A, 674],
|
||||
LocationName.star_road_5_green_block_14: [0x5A, 675],
|
||||
LocationName.star_road_5_green_block_15: [0x5A, 676],
|
||||
LocationName.star_road_5_green_block_16: [0x5A, 677],
|
||||
LocationName.star_road_5_green_block_17: [0x5A, 678],
|
||||
LocationName.star_road_5_green_block_18: [0x5A, 679],
|
||||
LocationName.star_road_5_green_block_19: [0x5A, 680],
|
||||
LocationName.star_road_5_green_block_20: [0x5A, 681]
|
||||
}
|
||||
|
||||
def generate_level_list(world, player):
|
||||
def generate_level_list(world: World):
|
||||
|
||||
if not world.level_shuffle[player]:
|
||||
if not world.options.level_shuffle:
|
||||
out_level_list = full_level_list.copy()
|
||||
out_level_list[0x00] = 0x03
|
||||
out_level_list[0x11] = 0x28
|
||||
|
||||
if world.bowser_castle_doors[player] == "fast":
|
||||
if world.options.bowser_castle_doors == "fast":
|
||||
out_level_list[0x41] = 0x82
|
||||
out_level_list[0x42] = 0x32
|
||||
elif world.bowser_castle_doors[player] == "slow":
|
||||
elif world.options.bowser_castle_doors == "slow":
|
||||
out_level_list[0x41] = 0x31
|
||||
out_level_list[0x42] = 0x81
|
||||
|
||||
|
@ -552,7 +1258,7 @@ def generate_level_list(world, player):
|
|||
shuffled_level_list.append(0x16)
|
||||
|
||||
single_levels_copy = (easy_single_levels_copy.copy() + hard_single_levels_copy.copy())
|
||||
if not world.exclude_special_zone[player]:
|
||||
if not world.options.exclude_special_zone:
|
||||
single_levels_copy.extend(special_zone_levels_copy)
|
||||
world.random.shuffle(single_levels_copy)
|
||||
|
||||
|
@ -619,10 +1325,10 @@ def generate_level_list(world, player):
|
|||
shuffled_level_list.append(castle_fortress_levels_copy.pop(0))
|
||||
|
||||
# Front/Back Door
|
||||
if world.bowser_castle_doors[player] == "fast":
|
||||
if world.options.bowser_castle_doors == "fast":
|
||||
shuffled_level_list.append(0x82)
|
||||
shuffled_level_list.append(0x32)
|
||||
elif world.bowser_castle_doors[player] == "slow":
|
||||
elif world.options.bowser_castle_doors == "slow":
|
||||
shuffled_level_list.append(0x31)
|
||||
shuffled_level_list.append(0x81)
|
||||
else:
|
||||
|
@ -646,7 +1352,7 @@ def generate_level_list(world, player):
|
|||
|
||||
# Special Zone
|
||||
shuffled_level_list.append(0x4D)
|
||||
if not world.exclude_special_zone[player]:
|
||||
if not world.options.exclude_special_zone:
|
||||
shuffled_level_list.append(single_levels_copy.pop(0))
|
||||
shuffled_level_list.append(single_levels_copy.pop(0))
|
||||
shuffled_level_list.append(single_levels_copy.pop(0))
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import typing
|
||||
|
||||
from BaseClasses import Location
|
||||
from worlds.AutoWorld import World
|
||||
from .Names import LocationName
|
||||
|
||||
|
||||
class SMWLocation(Location):
|
||||
game: str = "Super Mario World"
|
||||
|
||||
|
@ -197,6 +197,624 @@ dragon_coin_location_table = {
|
|||
LocationName.special_zone_8_dragon: 0xBC0162,
|
||||
}
|
||||
|
||||
moon_location_table = {
|
||||
LocationName.yoshis_island_1_moon: 0xBC0300,
|
||||
LocationName.donut_plains_4_moon: 0xBC030B,
|
||||
LocationName.vanilla_dome_3_moon: 0xBC0318,
|
||||
LocationName.cheese_bridge_moon: 0xBC0325,
|
||||
LocationName.forest_ghost_house_moon: 0xBC0332,
|
||||
LocationName.chocolate_island_1_moon: 0xBC0338,
|
||||
LocationName.valley_of_bowser_1_moon: 0xBC0345
|
||||
}
|
||||
|
||||
hidden_1ups_location_table = {
|
||||
LocationName.yoshis_island_4_hidden_1up: 0xBC0403,
|
||||
LocationName.donut_plains_1_hidden_1up: 0xBC0406,
|
||||
LocationName.donut_plains_4_hidden_1up: 0xBC040B,
|
||||
LocationName.donut_plains_castle_hidden_1up: 0xBC0412,
|
||||
LocationName.vanilla_dome_4_hidden_1up: 0xBC0419,
|
||||
LocationName.vanilla_ghost_house_hidden_1up: 0xBC041E,
|
||||
LocationName.vanilla_fortress_hidden_1up: 0xBC0420,
|
||||
LocationName.cookie_mountain_hidden_1up: 0xBC0427,
|
||||
LocationName.forest_of_illusion_3_hidden_1up: 0xBC042E,
|
||||
LocationName.chocolate_island_2_hidden_1up: 0xBC0439,
|
||||
LocationName.chocolate_castle_hidden_1up: 0xBC0443,
|
||||
LocationName.valley_of_bowser_2_hidden_1up: 0xBC0446,
|
||||
LocationName.valley_castle_hidden_1up: 0xBC044F,
|
||||
LocationName.special_zone_1_hidden_1up: 0xBC045B
|
||||
}
|
||||
bonus_block_location_table = {
|
||||
LocationName.yoshis_island_3_bonus_block: 0xBC0502,
|
||||
LocationName.donut_plains_3_bonus_block: 0xBC050A,
|
||||
LocationName.butter_bridge_1_bonus_block: 0xBC0523,
|
||||
LocationName.chocolate_island_3_bonus_block: 0xBC053B
|
||||
}
|
||||
|
||||
blocksanity_location_table = {
|
||||
LocationName.vanilla_secret_2_yoshi_block_1: 0xBC0600,
|
||||
LocationName.vanilla_secret_2_green_block_1: 0xBC0601,
|
||||
LocationName.vanilla_secret_2_powerup_block_1: 0xBC0602,
|
||||
LocationName.vanilla_secret_2_powerup_block_2: 0xBC0603,
|
||||
LocationName.vanilla_secret_2_multi_coin_block_1: 0xBC0604,
|
||||
LocationName.vanilla_secret_2_gray_pow_block_1: 0xBC0605,
|
||||
LocationName.vanilla_secret_2_coin_block_1: 0xBC0606,
|
||||
LocationName.vanilla_secret_2_coin_block_2: 0xBC0607,
|
||||
LocationName.vanilla_secret_2_coin_block_3: 0xBC0608,
|
||||
LocationName.vanilla_secret_2_coin_block_4: 0xBC0609,
|
||||
LocationName.vanilla_secret_2_coin_block_5: 0xBC060A,
|
||||
LocationName.vanilla_secret_2_coin_block_6: 0xBC060B,
|
||||
LocationName.vanilla_secret_3_powerup_block_1: 0xBC060C,
|
||||
LocationName.vanilla_secret_3_powerup_block_2: 0xBC060D,
|
||||
LocationName.donut_ghost_house_vine_block_1: 0xBC060E,
|
||||
LocationName.donut_ghost_house_directional_coin_block_1: 0xBC060F,
|
||||
LocationName.donut_ghost_house_life_block_1: 0xBC0610,
|
||||
LocationName.donut_ghost_house_life_block_2: 0xBC0611,
|
||||
LocationName.donut_ghost_house_life_block_3: 0xBC0612,
|
||||
LocationName.donut_ghost_house_life_block_4: 0xBC0613,
|
||||
LocationName.donut_plains_3_green_block_1: 0xBC0614,
|
||||
LocationName.donut_plains_3_coin_block_1: 0xBC0615,
|
||||
LocationName.donut_plains_3_coin_block_2: 0xBC0616,
|
||||
LocationName.donut_plains_3_vine_block_1: 0xBC0617,
|
||||
LocationName.donut_plains_3_powerup_block_1: 0xBC0618,
|
||||
LocationName.donut_plains_3_bonus_block_1: 0xBC0619,
|
||||
LocationName.donut_plains_4_coin_block_1: 0xBC061A,
|
||||
LocationName.donut_plains_4_powerup_block_1: 0xBC061B,
|
||||
LocationName.donut_plains_4_coin_block_2: 0xBC061C,
|
||||
LocationName.donut_plains_4_yoshi_block_1: 0xBC061D,
|
||||
LocationName.donut_plains_castle_yellow_block_1: 0xBC061E,
|
||||
LocationName.donut_plains_castle_coin_block_1: 0xBC061F,
|
||||
LocationName.donut_plains_castle_powerup_block_1: 0xBC0620,
|
||||
LocationName.donut_plains_castle_coin_block_2: 0xBC0621,
|
||||
LocationName.donut_plains_castle_vine_block_1: 0xBC0622,
|
||||
LocationName.donut_plains_castle_invis_life_block_1: 0xBC0623,
|
||||
LocationName.donut_plains_castle_coin_block_3: 0xBC0624,
|
||||
LocationName.donut_plains_castle_coin_block_4: 0xBC0625,
|
||||
LocationName.donut_plains_castle_coin_block_5: 0xBC0626,
|
||||
LocationName.donut_plains_castle_green_block_1: 0xBC0627,
|
||||
LocationName.donut_plains_2_coin_block_1: 0xBC0628,
|
||||
LocationName.donut_plains_2_coin_block_2: 0xBC0629,
|
||||
LocationName.donut_plains_2_coin_block_3: 0xBC062A,
|
||||
LocationName.donut_plains_2_yellow_block_1: 0xBC062B,
|
||||
LocationName.donut_plains_2_powerup_block_1: 0xBC062C,
|
||||
LocationName.donut_plains_2_multi_coin_block_1: 0xBC062D,
|
||||
LocationName.donut_plains_2_flying_block_1: 0xBC062E,
|
||||
LocationName.donut_plains_2_green_block_1: 0xBC062F,
|
||||
LocationName.donut_plains_2_yellow_block_2: 0xBC0630,
|
||||
LocationName.donut_plains_2_vine_block_1: 0xBC0631,
|
||||
LocationName.donut_secret_1_coin_block_1: 0xBC0632,
|
||||
LocationName.donut_secret_1_coin_block_2: 0xBC0633,
|
||||
LocationName.donut_secret_1_powerup_block_1: 0xBC0634,
|
||||
LocationName.donut_secret_1_coin_block_3: 0xBC0635,
|
||||
LocationName.donut_secret_1_powerup_block_2: 0xBC0636,
|
||||
LocationName.donut_secret_1_powerup_block_3: 0xBC0637,
|
||||
LocationName.donut_secret_1_life_block_1: 0xBC0638,
|
||||
LocationName.donut_secret_1_powerup_block_4: 0xBC0639,
|
||||
LocationName.donut_secret_1_powerup_block_5: 0xBC063A,
|
||||
LocationName.donut_secret_1_key_block_1: 0xBC063B,
|
||||
LocationName.vanilla_fortress_powerup_block_1: 0xBC063C,
|
||||
LocationName.vanilla_fortress_powerup_block_2: 0xBC063D,
|
||||
LocationName.vanilla_fortress_yellow_block_1: 0xBC063E,
|
||||
LocationName.butter_bridge_1_powerup_block_1: 0xBC063F,
|
||||
LocationName.butter_bridge_1_multi_coin_block_1: 0xBC0640,
|
||||
LocationName.butter_bridge_1_multi_coin_block_2: 0xBC0641,
|
||||
LocationName.butter_bridge_1_multi_coin_block_3: 0xBC0642,
|
||||
LocationName.butter_bridge_1_life_block_1: 0xBC0643,
|
||||
LocationName.butter_bridge_1_bonus_block_1: 0xBC0644,
|
||||
LocationName.butter_bridge_2_powerup_block_1: 0xBC0645,
|
||||
LocationName.butter_bridge_2_green_block_1: 0xBC0646,
|
||||
LocationName.butter_bridge_2_yoshi_block_1: 0xBC0647,
|
||||
LocationName.twin_bridges_castle_powerup_block_1: 0xBC0648,
|
||||
LocationName.cheese_bridge_powerup_block_1: 0xBC0649,
|
||||
LocationName.cheese_bridge_powerup_block_2: 0xBC064A,
|
||||
LocationName.cheese_bridge_wings_block_1: 0xBC064B,
|
||||
LocationName.cheese_bridge_powerup_block_3: 0xBC064C,
|
||||
LocationName.cookie_mountain_coin_block_1: 0xBC064D,
|
||||
LocationName.cookie_mountain_coin_block_2: 0xBC064E,
|
||||
LocationName.cookie_mountain_coin_block_3: 0xBC064F,
|
||||
LocationName.cookie_mountain_coin_block_4: 0xBC0650,
|
||||
LocationName.cookie_mountain_coin_block_5: 0xBC0651,
|
||||
LocationName.cookie_mountain_coin_block_6: 0xBC0652,
|
||||
LocationName.cookie_mountain_coin_block_7: 0xBC0653,
|
||||
LocationName.cookie_mountain_coin_block_8: 0xBC0654,
|
||||
LocationName.cookie_mountain_coin_block_9: 0xBC0655,
|
||||
LocationName.cookie_mountain_powerup_block_1: 0xBC0656,
|
||||
LocationName.cookie_mountain_life_block_1: 0xBC0657,
|
||||
LocationName.cookie_mountain_vine_block_1: 0xBC0658,
|
||||
LocationName.cookie_mountain_yoshi_block_1: 0xBC0659,
|
||||
LocationName.cookie_mountain_coin_block_10: 0xBC065A,
|
||||
LocationName.cookie_mountain_coin_block_11: 0xBC065B,
|
||||
LocationName.cookie_mountain_powerup_block_2: 0xBC065C,
|
||||
LocationName.cookie_mountain_coin_block_12: 0xBC065D,
|
||||
LocationName.cookie_mountain_coin_block_13: 0xBC065E,
|
||||
LocationName.cookie_mountain_coin_block_14: 0xBC065F,
|
||||
LocationName.cookie_mountain_coin_block_15: 0xBC0660,
|
||||
LocationName.cookie_mountain_coin_block_16: 0xBC0661,
|
||||
LocationName.cookie_mountain_coin_block_17: 0xBC0662,
|
||||
LocationName.cookie_mountain_coin_block_18: 0xBC0663,
|
||||
LocationName.cookie_mountain_coin_block_19: 0xBC0664,
|
||||
LocationName.cookie_mountain_coin_block_20: 0xBC0665,
|
||||
LocationName.cookie_mountain_coin_block_21: 0xBC0666,
|
||||
LocationName.cookie_mountain_coin_block_22: 0xBC0667,
|
||||
LocationName.cookie_mountain_coin_block_23: 0xBC0668,
|
||||
LocationName.cookie_mountain_coin_block_24: 0xBC0669,
|
||||
LocationName.cookie_mountain_coin_block_25: 0xBC066A,
|
||||
LocationName.cookie_mountain_coin_block_26: 0xBC066B,
|
||||
LocationName.cookie_mountain_coin_block_27: 0xBC066C,
|
||||
LocationName.cookie_mountain_coin_block_28: 0xBC066D,
|
||||
LocationName.cookie_mountain_coin_block_29: 0xBC066E,
|
||||
LocationName.cookie_mountain_coin_block_30: 0xBC066F,
|
||||
LocationName.soda_lake_powerup_block_1: 0xBC0670,
|
||||
LocationName.donut_secret_house_powerup_block_1: 0xBC0671,
|
||||
LocationName.donut_secret_house_multi_coin_block_1: 0xBC0672,
|
||||
LocationName.donut_secret_house_life_block_1: 0xBC0673,
|
||||
LocationName.donut_secret_house_vine_block_1: 0xBC0674,
|
||||
LocationName.donut_secret_house_directional_coin_block_1: 0xBC0675,
|
||||
LocationName.donut_plains_1_coin_block_1: 0xBC0676,
|
||||
LocationName.donut_plains_1_coin_block_2: 0xBC0677,
|
||||
LocationName.donut_plains_1_yoshi_block_1: 0xBC0678,
|
||||
LocationName.donut_plains_1_vine_block_1: 0xBC0679,
|
||||
LocationName.donut_plains_1_green_block_1: 0xBC067A,
|
||||
LocationName.donut_plains_1_green_block_2: 0xBC067B,
|
||||
LocationName.donut_plains_1_green_block_3: 0xBC067C,
|
||||
LocationName.donut_plains_1_green_block_4: 0xBC067D,
|
||||
LocationName.donut_plains_1_green_block_5: 0xBC067E,
|
||||
LocationName.donut_plains_1_green_block_6: 0xBC067F,
|
||||
LocationName.donut_plains_1_green_block_7: 0xBC0680,
|
||||
LocationName.donut_plains_1_green_block_8: 0xBC0681,
|
||||
LocationName.donut_plains_1_green_block_9: 0xBC0682,
|
||||
LocationName.donut_plains_1_green_block_10: 0xBC0683,
|
||||
LocationName.donut_plains_1_green_block_11: 0xBC0684,
|
||||
LocationName.donut_plains_1_green_block_12: 0xBC0685,
|
||||
LocationName.donut_plains_1_green_block_13: 0xBC0686,
|
||||
LocationName.donut_plains_1_green_block_14: 0xBC0687,
|
||||
LocationName.donut_plains_1_green_block_15: 0xBC0688,
|
||||
LocationName.donut_plains_1_green_block_16: 0xBC0689,
|
||||
LocationName.donut_plains_1_yellow_block_1: 0xBC068A,
|
||||
LocationName.donut_plains_1_yellow_block_2: 0xBC068B,
|
||||
LocationName.donut_plains_1_yellow_block_3: 0xBC068C,
|
||||
LocationName.sunken_ghost_ship_powerup_block_1: 0xBC068D,
|
||||
LocationName.sunken_ghost_ship_star_block_1: 0xBC068E,
|
||||
LocationName.chocolate_castle_yellow_block_1: 0xBC068F,
|
||||
LocationName.chocolate_castle_yellow_block_2: 0xBC0690,
|
||||
LocationName.chocolate_castle_green_block_1: 0xBC0691,
|
||||
LocationName.chocolate_fortress_powerup_block_1: 0xBC0692,
|
||||
LocationName.chocolate_fortress_powerup_block_2: 0xBC0693,
|
||||
LocationName.chocolate_fortress_coin_block_1: 0xBC0694,
|
||||
LocationName.chocolate_fortress_coin_block_2: 0xBC0695,
|
||||
LocationName.chocolate_fortress_green_block_1: 0xBC0696,
|
||||
LocationName.chocolate_island_5_yoshi_block_1: 0xBC0697,
|
||||
LocationName.chocolate_island_5_powerup_block_1: 0xBC0698,
|
||||
LocationName.chocolate_island_5_life_block_1: 0xBC0699,
|
||||
LocationName.chocolate_island_5_yellow_block_1: 0xBC069A,
|
||||
LocationName.chocolate_island_4_yellow_block_1: 0xBC069B,
|
||||
LocationName.chocolate_island_4_blue_pow_block_1: 0xBC069C,
|
||||
LocationName.chocolate_island_4_powerup_block_1: 0xBC069D,
|
||||
LocationName.forest_fortress_yellow_block_1: 0xBC069E,
|
||||
LocationName.forest_fortress_powerup_block_1: 0xBC069F,
|
||||
LocationName.forest_fortress_life_block_1: 0xBC06A0,
|
||||
LocationName.forest_fortress_life_block_2: 0xBC06A1,
|
||||
LocationName.forest_fortress_life_block_3: 0xBC06A2,
|
||||
LocationName.forest_fortress_life_block_4: 0xBC06A3,
|
||||
LocationName.forest_fortress_life_block_5: 0xBC06A4,
|
||||
LocationName.forest_fortress_life_block_6: 0xBC06A5,
|
||||
LocationName.forest_fortress_life_block_7: 0xBC06A6,
|
||||
LocationName.forest_fortress_life_block_8: 0xBC06A7,
|
||||
LocationName.forest_fortress_life_block_9: 0xBC06A8,
|
||||
LocationName.forest_castle_green_block_1: 0xBC06A9,
|
||||
LocationName.chocolate_ghost_house_powerup_block_1: 0xBC06AA,
|
||||
LocationName.chocolate_ghost_house_powerup_block_2: 0xBC06AB,
|
||||
LocationName.chocolate_ghost_house_life_block_1: 0xBC06AC,
|
||||
LocationName.chocolate_island_1_flying_block_1: 0xBC06AD,
|
||||
LocationName.chocolate_island_1_flying_block_2: 0xBC06AE,
|
||||
LocationName.chocolate_island_1_yoshi_block_1: 0xBC06AF,
|
||||
LocationName.chocolate_island_1_green_block_1: 0xBC06B0,
|
||||
LocationName.chocolate_island_1_life_block_1: 0xBC06B1,
|
||||
LocationName.chocolate_island_3_powerup_block_1: 0xBC06B2,
|
||||
LocationName.chocolate_island_3_powerup_block_2: 0xBC06B3,
|
||||
LocationName.chocolate_island_3_powerup_block_3: 0xBC06B4,
|
||||
LocationName.chocolate_island_3_green_block_1: 0xBC06B5,
|
||||
LocationName.chocolate_island_3_bonus_block_1: 0xBC06B6,
|
||||
LocationName.chocolate_island_3_vine_block_1: 0xBC06B7,
|
||||
LocationName.chocolate_island_3_life_block_1: 0xBC06B8,
|
||||
LocationName.chocolate_island_3_life_block_2: 0xBC06B9,
|
||||
LocationName.chocolate_island_3_life_block_3: 0xBC06BA,
|
||||
LocationName.chocolate_island_2_multi_coin_block_1: 0xBC06BB,
|
||||
LocationName.chocolate_island_2_invis_coin_block_1: 0xBC06BC,
|
||||
LocationName.chocolate_island_2_yoshi_block_1: 0xBC06BD,
|
||||
LocationName.chocolate_island_2_coin_block_1: 0xBC06BE,
|
||||
LocationName.chocolate_island_2_coin_block_2: 0xBC06BF,
|
||||
LocationName.chocolate_island_2_multi_coin_block_2: 0xBC06C0,
|
||||
LocationName.chocolate_island_2_powerup_block_1: 0xBC06C1,
|
||||
LocationName.chocolate_island_2_blue_pow_block_1: 0xBC06C2,
|
||||
LocationName.chocolate_island_2_yellow_block_1: 0xBC06C3,
|
||||
LocationName.chocolate_island_2_yellow_block_2: 0xBC06C4,
|
||||
LocationName.chocolate_island_2_green_block_1: 0xBC06C5,
|
||||
LocationName.chocolate_island_2_green_block_2: 0xBC06C6,
|
||||
LocationName.chocolate_island_2_green_block_3: 0xBC06C7,
|
||||
LocationName.chocolate_island_2_green_block_4: 0xBC06C8,
|
||||
LocationName.chocolate_island_2_green_block_5: 0xBC06C9,
|
||||
LocationName.chocolate_island_2_green_block_6: 0xBC06CA,
|
||||
LocationName.yoshis_island_castle_coin_block_1: 0xBC06CB,
|
||||
LocationName.yoshis_island_castle_coin_block_2: 0xBC06CC,
|
||||
LocationName.yoshis_island_castle_powerup_block_1: 0xBC06CD,
|
||||
LocationName.yoshis_island_castle_coin_block_3: 0xBC06CE,
|
||||
LocationName.yoshis_island_castle_coin_block_4: 0xBC06CF,
|
||||
LocationName.yoshis_island_castle_flying_block_1: 0xBC06D0,
|
||||
LocationName.yoshis_island_4_yellow_block_1: 0xBC06D1,
|
||||
LocationName.yoshis_island_4_powerup_block_1: 0xBC06D2,
|
||||
LocationName.yoshis_island_4_multi_coin_block_1: 0xBC06D3,
|
||||
LocationName.yoshis_island_4_star_block_1: 0xBC06D4,
|
||||
LocationName.yoshis_island_3_yellow_block_1: 0xBC06D5,
|
||||
LocationName.yoshis_island_3_yellow_block_2: 0xBC06D6,
|
||||
LocationName.yoshis_island_3_yellow_block_3: 0xBC06D7,
|
||||
LocationName.yoshis_island_3_yellow_block_4: 0xBC06D8,
|
||||
LocationName.yoshis_island_3_yellow_block_5: 0xBC06D9,
|
||||
LocationName.yoshis_island_3_yellow_block_6: 0xBC06DA,
|
||||
LocationName.yoshis_island_3_yellow_block_7: 0xBC06DB,
|
||||
LocationName.yoshis_island_3_yellow_block_8: 0xBC06DC,
|
||||
LocationName.yoshis_island_3_yellow_block_9: 0xBC06DD,
|
||||
LocationName.yoshis_island_3_coin_block_1: 0xBC06DE,
|
||||
LocationName.yoshis_island_3_yoshi_block_1: 0xBC06DF,
|
||||
LocationName.yoshis_island_3_coin_block_2: 0xBC06E0,
|
||||
LocationName.yoshis_island_3_powerup_block_1: 0xBC06E1,
|
||||
LocationName.yoshis_island_3_yellow_block_10: 0xBC06E2,
|
||||
LocationName.yoshis_island_3_yellow_block_11: 0xBC06E3,
|
||||
LocationName.yoshis_island_3_yellow_block_12: 0xBC06E4,
|
||||
LocationName.yoshis_island_3_bonus_block_1: 0xBC06E5,
|
||||
LocationName.yoshis_island_1_flying_block_1: 0xBC06E6,
|
||||
LocationName.yoshis_island_1_yellow_block_1: 0xBC06E7,
|
||||
LocationName.yoshis_island_1_life_block_1: 0xBC06E8,
|
||||
LocationName.yoshis_island_1_powerup_block_1: 0xBC06E9,
|
||||
LocationName.yoshis_island_2_flying_block_1: 0xBC06EA,
|
||||
LocationName.yoshis_island_2_flying_block_2: 0xBC06EB,
|
||||
LocationName.yoshis_island_2_flying_block_3: 0xBC06EC,
|
||||
LocationName.yoshis_island_2_flying_block_4: 0xBC06ED,
|
||||
LocationName.yoshis_island_2_flying_block_5: 0xBC06EE,
|
||||
LocationName.yoshis_island_2_flying_block_6: 0xBC06EF,
|
||||
LocationName.yoshis_island_2_coin_block_1: 0xBC06F0,
|
||||
LocationName.yoshis_island_2_yellow_block_1: 0xBC06F1,
|
||||
LocationName.yoshis_island_2_coin_block_2: 0xBC06F2,
|
||||
LocationName.yoshis_island_2_coin_block_3: 0xBC06F3,
|
||||
LocationName.yoshis_island_2_yoshi_block_1: 0xBC06F4,
|
||||
LocationName.yoshis_island_2_coin_block_4: 0xBC06F5,
|
||||
LocationName.yoshis_island_2_yoshi_block_2: 0xBC06F6,
|
||||
LocationName.yoshis_island_2_coin_block_5: 0xBC06F7,
|
||||
LocationName.yoshis_island_2_vine_block_1: 0xBC06F8,
|
||||
LocationName.yoshis_island_2_yellow_block_2: 0xBC06F9,
|
||||
LocationName.vanilla_ghost_house_powerup_block_1: 0xBC06FA,
|
||||
LocationName.vanilla_ghost_house_vine_block_1: 0xBC06FB,
|
||||
LocationName.vanilla_ghost_house_powerup_block_2: 0xBC06FC,
|
||||
LocationName.vanilla_ghost_house_multi_coin_block_1: 0xBC06FD,
|
||||
LocationName.vanilla_ghost_house_blue_pow_block_1: 0xBC06FE,
|
||||
LocationName.vanilla_secret_1_coin_block_1: 0xBC06FF,
|
||||
LocationName.vanilla_secret_1_powerup_block_1: 0xBC0700,
|
||||
LocationName.vanilla_secret_1_multi_coin_block_1: 0xBC0701,
|
||||
LocationName.vanilla_secret_1_vine_block_1: 0xBC0702,
|
||||
LocationName.vanilla_secret_1_vine_block_2: 0xBC0703,
|
||||
LocationName.vanilla_secret_1_coin_block_2: 0xBC0704,
|
||||
LocationName.vanilla_secret_1_coin_block_3: 0xBC0705,
|
||||
LocationName.vanilla_secret_1_powerup_block_2: 0xBC0706,
|
||||
LocationName.vanilla_dome_3_coin_block_1: 0xBC0707,
|
||||
LocationName.vanilla_dome_3_flying_block_1: 0xBC0708,
|
||||
LocationName.vanilla_dome_3_flying_block_2: 0xBC0709,
|
||||
LocationName.vanilla_dome_3_powerup_block_1: 0xBC070A,
|
||||
LocationName.vanilla_dome_3_flying_block_3: 0xBC070B,
|
||||
LocationName.vanilla_dome_3_invis_coin_block_1: 0xBC070C,
|
||||
LocationName.vanilla_dome_3_powerup_block_2: 0xBC070D,
|
||||
LocationName.vanilla_dome_3_multi_coin_block_1: 0xBC070E,
|
||||
LocationName.vanilla_dome_3_powerup_block_3: 0xBC070F,
|
||||
LocationName.vanilla_dome_3_yoshi_block_1: 0xBC0710,
|
||||
LocationName.vanilla_dome_3_powerup_block_4: 0xBC0711,
|
||||
LocationName.vanilla_dome_3_pswitch_coin_block_1: 0xBC0712,
|
||||
LocationName.vanilla_dome_3_pswitch_coin_block_2: 0xBC0713,
|
||||
LocationName.vanilla_dome_3_pswitch_coin_block_3: 0xBC0714,
|
||||
LocationName.vanilla_dome_3_pswitch_coin_block_4: 0xBC0715,
|
||||
LocationName.vanilla_dome_3_pswitch_coin_block_5: 0xBC0716,
|
||||
LocationName.vanilla_dome_3_pswitch_coin_block_6: 0xBC0717,
|
||||
LocationName.donut_secret_2_directional_coin_block_1: 0xBC0718,
|
||||
LocationName.donut_secret_2_vine_block_1: 0xBC0719,
|
||||
LocationName.donut_secret_2_star_block_1: 0xBC071A,
|
||||
LocationName.donut_secret_2_powerup_block_1: 0xBC071B,
|
||||
LocationName.donut_secret_2_star_block_2: 0xBC071C,
|
||||
LocationName.valley_of_bowser_4_yellow_block_1: 0xBC071D,
|
||||
LocationName.valley_of_bowser_4_powerup_block_1: 0xBC071E,
|
||||
LocationName.valley_of_bowser_4_vine_block_1: 0xBC071F,
|
||||
LocationName.valley_of_bowser_4_yoshi_block_1: 0xBC0720,
|
||||
LocationName.valley_of_bowser_4_life_block_1: 0xBC0721,
|
||||
LocationName.valley_of_bowser_4_powerup_block_2: 0xBC0722,
|
||||
LocationName.valley_castle_yellow_block_1: 0xBC0723,
|
||||
LocationName.valley_castle_yellow_block_2: 0xBC0724,
|
||||
LocationName.valley_castle_green_block_1: 0xBC0725,
|
||||
LocationName.valley_fortress_green_block_1: 0xBC0726,
|
||||
LocationName.valley_fortress_yellow_block_1: 0xBC0727,
|
||||
LocationName.valley_of_bowser_3_powerup_block_1: 0xBC0728,
|
||||
LocationName.valley_of_bowser_3_powerup_block_2: 0xBC0729,
|
||||
LocationName.valley_ghost_house_pswitch_coin_block_1: 0xBC072A,
|
||||
LocationName.valley_ghost_house_multi_coin_block_1: 0xBC072B,
|
||||
LocationName.valley_ghost_house_powerup_block_1: 0xBC072C,
|
||||
LocationName.valley_ghost_house_directional_coin_block_1: 0xBC072D,
|
||||
LocationName.valley_of_bowser_2_powerup_block_1: 0xBC072E,
|
||||
LocationName.valley_of_bowser_2_yellow_block_1: 0xBC072F,
|
||||
LocationName.valley_of_bowser_2_powerup_block_2: 0xBC0730,
|
||||
LocationName.valley_of_bowser_2_wings_block_1: 0xBC0731,
|
||||
LocationName.valley_of_bowser_1_green_block_1: 0xBC0732,
|
||||
LocationName.valley_of_bowser_1_invis_coin_block_1: 0xBC0733,
|
||||
LocationName.valley_of_bowser_1_invis_coin_block_2: 0xBC0734,
|
||||
LocationName.valley_of_bowser_1_invis_coin_block_3: 0xBC0735,
|
||||
LocationName.valley_of_bowser_1_yellow_block_1: 0xBC0736,
|
||||
LocationName.valley_of_bowser_1_yellow_block_2: 0xBC0737,
|
||||
LocationName.valley_of_bowser_1_yellow_block_3: 0xBC0738,
|
||||
LocationName.valley_of_bowser_1_yellow_block_4: 0xBC0739,
|
||||
LocationName.valley_of_bowser_1_vine_block_1: 0xBC073A,
|
||||
LocationName.chocolate_secret_powerup_block_1: 0xBC073B,
|
||||
LocationName.chocolate_secret_powerup_block_2: 0xBC073C,
|
||||
LocationName.vanilla_dome_2_coin_block_1: 0xBC073D,
|
||||
LocationName.vanilla_dome_2_powerup_block_1: 0xBC073E,
|
||||
LocationName.vanilla_dome_2_coin_block_2: 0xBC073F,
|
||||
LocationName.vanilla_dome_2_coin_block_3: 0xBC0740,
|
||||
LocationName.vanilla_dome_2_vine_block_1: 0xBC0741,
|
||||
LocationName.vanilla_dome_2_invis_life_block_1: 0xBC0742,
|
||||
LocationName.vanilla_dome_2_coin_block_4: 0xBC0743,
|
||||
LocationName.vanilla_dome_2_coin_block_5: 0xBC0744,
|
||||
LocationName.vanilla_dome_2_powerup_block_2: 0xBC0745,
|
||||
LocationName.vanilla_dome_2_powerup_block_3: 0xBC0746,
|
||||
LocationName.vanilla_dome_2_powerup_block_4: 0xBC0747,
|
||||
LocationName.vanilla_dome_2_powerup_block_5: 0xBC0748,
|
||||
LocationName.vanilla_dome_2_multi_coin_block_1: 0xBC0749,
|
||||
LocationName.vanilla_dome_2_multi_coin_block_2: 0xBC074A,
|
||||
LocationName.vanilla_dome_4_powerup_block_1: 0xBC074B,
|
||||
LocationName.vanilla_dome_4_powerup_block_2: 0xBC074C,
|
||||
LocationName.vanilla_dome_4_coin_block_1: 0xBC074D,
|
||||
LocationName.vanilla_dome_4_coin_block_2: 0xBC074E,
|
||||
LocationName.vanilla_dome_4_coin_block_3: 0xBC074F,
|
||||
LocationName.vanilla_dome_4_life_block_1: 0xBC0750,
|
||||
LocationName.vanilla_dome_4_coin_block_4: 0xBC0751,
|
||||
LocationName.vanilla_dome_4_coin_block_5: 0xBC0752,
|
||||
LocationName.vanilla_dome_4_coin_block_6: 0xBC0753,
|
||||
LocationName.vanilla_dome_4_coin_block_7: 0xBC0754,
|
||||
LocationName.vanilla_dome_4_coin_block_8: 0xBC0755,
|
||||
LocationName.vanilla_dome_1_flying_block_1: 0xBC0756,
|
||||
LocationName.vanilla_dome_1_powerup_block_1: 0xBC0757,
|
||||
LocationName.vanilla_dome_1_powerup_block_2: 0xBC0758,
|
||||
LocationName.vanilla_dome_1_coin_block_1: 0xBC0759,
|
||||
LocationName.vanilla_dome_1_life_block_1: 0xBC075A,
|
||||
LocationName.vanilla_dome_1_powerup_block_3: 0xBC075B,
|
||||
LocationName.vanilla_dome_1_vine_block_1: 0xBC075C,
|
||||
LocationName.vanilla_dome_1_star_block_1: 0xBC075D,
|
||||
LocationName.vanilla_dome_1_powerup_block_4: 0xBC075E,
|
||||
LocationName.vanilla_dome_1_coin_block_2: 0xBC075F,
|
||||
LocationName.vanilla_dome_castle_life_block_1: 0xBC0760,
|
||||
LocationName.vanilla_dome_castle_life_block_2: 0xBC0761,
|
||||
LocationName.vanilla_dome_castle_powerup_block_1: 0xBC0762,
|
||||
LocationName.vanilla_dome_castle_life_block_3: 0xBC0763,
|
||||
LocationName.vanilla_dome_castle_green_block_1: 0xBC0764,
|
||||
LocationName.forest_ghost_house_coin_block_1: 0xBC0765,
|
||||
LocationName.forest_ghost_house_powerup_block_1: 0xBC0766,
|
||||
LocationName.forest_ghost_house_flying_block_1: 0xBC0767,
|
||||
LocationName.forest_ghost_house_powerup_block_2: 0xBC0768,
|
||||
LocationName.forest_ghost_house_life_block_1: 0xBC0769,
|
||||
LocationName.forest_of_illusion_1_powerup_block_1: 0xBC076A,
|
||||
LocationName.forest_of_illusion_1_yoshi_block_1: 0xBC076B,
|
||||
LocationName.forest_of_illusion_1_powerup_block_2: 0xBC076C,
|
||||
LocationName.forest_of_illusion_1_key_block_1: 0xBC076D,
|
||||
LocationName.forest_of_illusion_1_life_block_1: 0xBC076E,
|
||||
LocationName.forest_of_illusion_4_multi_coin_block_1: 0xBC076F,
|
||||
LocationName.forest_of_illusion_4_coin_block_1: 0xBC0770,
|
||||
LocationName.forest_of_illusion_4_coin_block_2: 0xBC0771,
|
||||
LocationName.forest_of_illusion_4_coin_block_3: 0xBC0772,
|
||||
LocationName.forest_of_illusion_4_coin_block_4: 0xBC0773,
|
||||
LocationName.forest_of_illusion_4_powerup_block_1: 0xBC0774,
|
||||
LocationName.forest_of_illusion_4_coin_block_5: 0xBC0775,
|
||||
LocationName.forest_of_illusion_4_coin_block_6: 0xBC0776,
|
||||
LocationName.forest_of_illusion_4_coin_block_7: 0xBC0777,
|
||||
LocationName.forest_of_illusion_4_powerup_block_2: 0xBC0778,
|
||||
LocationName.forest_of_illusion_4_coin_block_8: 0xBC0779,
|
||||
LocationName.forest_of_illusion_4_coin_block_9: 0xBC077A,
|
||||
LocationName.forest_of_illusion_4_coin_block_10: 0xBC077B,
|
||||
LocationName.forest_of_illusion_2_green_block_1: 0xBC077C,
|
||||
LocationName.forest_of_illusion_2_powerup_block_1: 0xBC077D,
|
||||
LocationName.forest_of_illusion_2_invis_coin_block_1: 0xBC077E,
|
||||
LocationName.forest_of_illusion_2_invis_coin_block_2: 0xBC077F,
|
||||
LocationName.forest_of_illusion_2_invis_life_block_1: 0xBC0780,
|
||||
LocationName.forest_of_illusion_2_invis_coin_block_3: 0xBC0781,
|
||||
LocationName.forest_of_illusion_2_yellow_block_1: 0xBC0782,
|
||||
LocationName.forest_secret_powerup_block_1: 0xBC0783,
|
||||
LocationName.forest_secret_powerup_block_2: 0xBC0784,
|
||||
LocationName.forest_secret_life_block_1: 0xBC0785,
|
||||
LocationName.forest_of_illusion_3_yoshi_block_1: 0xBC0786,
|
||||
LocationName.forest_of_illusion_3_coin_block_1: 0xBC0787,
|
||||
LocationName.forest_of_illusion_3_multi_coin_block_1: 0xBC0788,
|
||||
LocationName.forest_of_illusion_3_coin_block_2: 0xBC0789,
|
||||
LocationName.forest_of_illusion_3_multi_coin_block_2: 0xBC078A,
|
||||
LocationName.forest_of_illusion_3_coin_block_3: 0xBC078B,
|
||||
LocationName.forest_of_illusion_3_coin_block_4: 0xBC078C,
|
||||
LocationName.forest_of_illusion_3_coin_block_5: 0xBC078D,
|
||||
LocationName.forest_of_illusion_3_coin_block_6: 0xBC078E,
|
||||
LocationName.forest_of_illusion_3_coin_block_7: 0xBC078F,
|
||||
LocationName.forest_of_illusion_3_coin_block_8: 0xBC0790,
|
||||
LocationName.forest_of_illusion_3_coin_block_9: 0xBC0791,
|
||||
LocationName.forest_of_illusion_3_coin_block_10: 0xBC0792,
|
||||
LocationName.forest_of_illusion_3_coin_block_11: 0xBC0793,
|
||||
LocationName.forest_of_illusion_3_coin_block_12: 0xBC0794,
|
||||
LocationName.forest_of_illusion_3_coin_block_13: 0xBC0795,
|
||||
LocationName.forest_of_illusion_3_coin_block_14: 0xBC0796,
|
||||
LocationName.forest_of_illusion_3_coin_block_15: 0xBC0797,
|
||||
LocationName.forest_of_illusion_3_coin_block_16: 0xBC0798,
|
||||
LocationName.forest_of_illusion_3_coin_block_17: 0xBC0799,
|
||||
LocationName.forest_of_illusion_3_coin_block_18: 0xBC079A,
|
||||
LocationName.forest_of_illusion_3_coin_block_19: 0xBC079B,
|
||||
LocationName.forest_of_illusion_3_coin_block_20: 0xBC079C,
|
||||
LocationName.forest_of_illusion_3_coin_block_21: 0xBC079D,
|
||||
LocationName.forest_of_illusion_3_coin_block_22: 0xBC079E,
|
||||
LocationName.forest_of_illusion_3_coin_block_23: 0xBC079F,
|
||||
LocationName.forest_of_illusion_3_coin_block_24: 0xBC07A0,
|
||||
LocationName.special_zone_8_yoshi_block_1: 0xBC07A1,
|
||||
LocationName.special_zone_8_coin_block_1: 0xBC07A2,
|
||||
LocationName.special_zone_8_coin_block_2: 0xBC07A3,
|
||||
LocationName.special_zone_8_coin_block_3: 0xBC07A4,
|
||||
LocationName.special_zone_8_coin_block_4: 0xBC07A5,
|
||||
LocationName.special_zone_8_coin_block_5: 0xBC07A6,
|
||||
LocationName.special_zone_8_blue_pow_block_1: 0xBC07A7,
|
||||
LocationName.special_zone_8_powerup_block_1: 0xBC07A8,
|
||||
LocationName.special_zone_8_star_block_1: 0xBC07A9,
|
||||
LocationName.special_zone_8_coin_block_6: 0xBC07AA,
|
||||
LocationName.special_zone_8_coin_block_7: 0xBC07AB,
|
||||
LocationName.special_zone_8_coin_block_8: 0xBC07AC,
|
||||
LocationName.special_zone_8_coin_block_9: 0xBC07AD,
|
||||
LocationName.special_zone_8_coin_block_10: 0xBC07AE,
|
||||
LocationName.special_zone_8_coin_block_11: 0xBC07AF,
|
||||
LocationName.special_zone_8_coin_block_12: 0xBC07B0,
|
||||
LocationName.special_zone_8_coin_block_13: 0xBC07B1,
|
||||
LocationName.special_zone_8_coin_block_14: 0xBC07B2,
|
||||
LocationName.special_zone_8_coin_block_15: 0xBC07B3,
|
||||
LocationName.special_zone_8_coin_block_16: 0xBC07B4,
|
||||
LocationName.special_zone_8_coin_block_17: 0xBC07B5,
|
||||
LocationName.special_zone_8_coin_block_18: 0xBC07B6,
|
||||
LocationName.special_zone_8_multi_coin_block_1: 0xBC07B7,
|
||||
LocationName.special_zone_8_coin_block_19: 0xBC07B8,
|
||||
LocationName.special_zone_8_coin_block_20: 0xBC07B9,
|
||||
LocationName.special_zone_8_coin_block_21: 0xBC07BA,
|
||||
LocationName.special_zone_8_coin_block_22: 0xBC07BB,
|
||||
LocationName.special_zone_8_coin_block_23: 0xBC07BC,
|
||||
LocationName.special_zone_8_powerup_block_2: 0xBC07BD,
|
||||
LocationName.special_zone_8_flying_block_1: 0xBC07BE,
|
||||
LocationName.special_zone_7_powerup_block_1: 0xBC07BF,
|
||||
LocationName.special_zone_7_yoshi_block_1: 0xBC07C0,
|
||||
LocationName.special_zone_7_coin_block_1: 0xBC07C1,
|
||||
LocationName.special_zone_7_powerup_block_2: 0xBC07C2,
|
||||
LocationName.special_zone_7_coin_block_2: 0xBC07C3,
|
||||
LocationName.special_zone_6_powerup_block_1: 0xBC07C4,
|
||||
LocationName.special_zone_6_coin_block_1: 0xBC07C5,
|
||||
LocationName.special_zone_6_coin_block_2: 0xBC07C6,
|
||||
LocationName.special_zone_6_yoshi_block_1: 0xBC07C7,
|
||||
LocationName.special_zone_6_life_block_1: 0xBC07C8,
|
||||
LocationName.special_zone_6_multi_coin_block_1: 0xBC07C9,
|
||||
LocationName.special_zone_6_coin_block_3: 0xBC07CA,
|
||||
LocationName.special_zone_6_coin_block_4: 0xBC07CB,
|
||||
LocationName.special_zone_6_coin_block_5: 0xBC07CC,
|
||||
LocationName.special_zone_6_coin_block_6: 0xBC07CD,
|
||||
LocationName.special_zone_6_coin_block_7: 0xBC07CE,
|
||||
LocationName.special_zone_6_coin_block_8: 0xBC07CF,
|
||||
LocationName.special_zone_6_coin_block_9: 0xBC07D0,
|
||||
LocationName.special_zone_6_coin_block_10: 0xBC07D1,
|
||||
LocationName.special_zone_6_coin_block_11: 0xBC07D2,
|
||||
LocationName.special_zone_6_coin_block_12: 0xBC07D3,
|
||||
LocationName.special_zone_6_coin_block_13: 0xBC07D4,
|
||||
LocationName.special_zone_6_coin_block_14: 0xBC07D5,
|
||||
LocationName.special_zone_6_coin_block_15: 0xBC07D6,
|
||||
LocationName.special_zone_6_coin_block_16: 0xBC07D7,
|
||||
LocationName.special_zone_6_coin_block_17: 0xBC07D8,
|
||||
LocationName.special_zone_6_coin_block_18: 0xBC07D9,
|
||||
LocationName.special_zone_6_coin_block_19: 0xBC07DA,
|
||||
LocationName.special_zone_6_coin_block_20: 0xBC07DB,
|
||||
LocationName.special_zone_6_coin_block_21: 0xBC07DC,
|
||||
LocationName.special_zone_6_coin_block_22: 0xBC07DD,
|
||||
LocationName.special_zone_6_coin_block_23: 0xBC07DE,
|
||||
LocationName.special_zone_6_coin_block_24: 0xBC07DF,
|
||||
LocationName.special_zone_6_coin_block_25: 0xBC07E0,
|
||||
LocationName.special_zone_6_coin_block_26: 0xBC07E1,
|
||||
LocationName.special_zone_6_coin_block_27: 0xBC07E2,
|
||||
LocationName.special_zone_6_coin_block_28: 0xBC07E3,
|
||||
LocationName.special_zone_6_powerup_block_2: 0xBC07E4,
|
||||
LocationName.special_zone_6_coin_block_29: 0xBC07E5,
|
||||
LocationName.special_zone_6_coin_block_30: 0xBC07E6,
|
||||
LocationName.special_zone_6_coin_block_31: 0xBC07E7,
|
||||
LocationName.special_zone_6_coin_block_32: 0xBC07E8,
|
||||
LocationName.special_zone_6_coin_block_33: 0xBC07E9,
|
||||
LocationName.special_zone_5_yoshi_block_1: 0xBC07EA,
|
||||
LocationName.special_zone_1_vine_block_1: 0xBC07EB,
|
||||
LocationName.special_zone_1_vine_block_2: 0xBC07EC,
|
||||
LocationName.special_zone_1_vine_block_3: 0xBC07ED,
|
||||
LocationName.special_zone_1_vine_block_4: 0xBC07EE,
|
||||
LocationName.special_zone_1_life_block_1: 0xBC07EF,
|
||||
LocationName.special_zone_1_vine_block_5: 0xBC07F0,
|
||||
LocationName.special_zone_1_blue_pow_block_1: 0xBC07F1,
|
||||
LocationName.special_zone_1_vine_block_6: 0xBC07F2,
|
||||
LocationName.special_zone_1_powerup_block_1: 0xBC07F3,
|
||||
LocationName.special_zone_1_pswitch_coin_block_1: 0xBC07F4,
|
||||
LocationName.special_zone_1_pswitch_coin_block_2: 0xBC07F5,
|
||||
LocationName.special_zone_1_pswitch_coin_block_3: 0xBC07F6,
|
||||
LocationName.special_zone_1_pswitch_coin_block_4: 0xBC07F7,
|
||||
LocationName.special_zone_1_pswitch_coin_block_5: 0xBC07F8,
|
||||
LocationName.special_zone_1_pswitch_coin_block_6: 0xBC07F9,
|
||||
LocationName.special_zone_1_pswitch_coin_block_7: 0xBC07FA,
|
||||
LocationName.special_zone_1_pswitch_coin_block_8: 0xBC07FB,
|
||||
LocationName.special_zone_1_pswitch_coin_block_9: 0xBC07FC,
|
||||
LocationName.special_zone_1_pswitch_coin_block_10: 0xBC07FD,
|
||||
LocationName.special_zone_1_pswitch_coin_block_11: 0xBC07FE,
|
||||
LocationName.special_zone_1_pswitch_coin_block_12: 0xBC07FF,
|
||||
LocationName.special_zone_1_pswitch_coin_block_13: 0xBC0800,
|
||||
LocationName.special_zone_2_powerup_block_1: 0xBC0801,
|
||||
LocationName.special_zone_2_coin_block_1: 0xBC0802,
|
||||
LocationName.special_zone_2_coin_block_2: 0xBC0803,
|
||||
LocationName.special_zone_2_powerup_block_2: 0xBC0804,
|
||||
LocationName.special_zone_2_coin_block_3: 0xBC0805,
|
||||
LocationName.special_zone_2_coin_block_4: 0xBC0806,
|
||||
LocationName.special_zone_2_powerup_block_3: 0xBC0807,
|
||||
LocationName.special_zone_2_multi_coin_block_1: 0xBC0808,
|
||||
LocationName.special_zone_2_coin_block_5: 0xBC0809,
|
||||
LocationName.special_zone_2_coin_block_6: 0xBC080A,
|
||||
LocationName.special_zone_3_powerup_block_1: 0xBC080B,
|
||||
LocationName.special_zone_3_yoshi_block_1: 0xBC080C,
|
||||
LocationName.special_zone_3_wings_block_1: 0xBC080D,
|
||||
LocationName.special_zone_4_powerup_block_1: 0xBC080E,
|
||||
LocationName.special_zone_4_star_block_1: 0xBC080F,
|
||||
LocationName.star_road_2_star_block_1: 0xBC0810,
|
||||
LocationName.star_road_3_key_block_1: 0xBC0811,
|
||||
LocationName.star_road_4_powerup_block_1: 0xBC0812,
|
||||
LocationName.star_road_4_green_block_1: 0xBC0813,
|
||||
LocationName.star_road_4_green_block_2: 0xBC0814,
|
||||
LocationName.star_road_4_green_block_3: 0xBC0815,
|
||||
LocationName.star_road_4_green_block_4: 0xBC0816,
|
||||
LocationName.star_road_4_green_block_5: 0xBC0817,
|
||||
LocationName.star_road_4_green_block_6: 0xBC0818,
|
||||
LocationName.star_road_4_green_block_7: 0xBC0819,
|
||||
LocationName.star_road_4_key_block_1: 0xBC081A,
|
||||
LocationName.star_road_5_directional_coin_block_1: 0xBC081B,
|
||||
LocationName.star_road_5_life_block_1: 0xBC081C,
|
||||
LocationName.star_road_5_vine_block_1: 0xBC081D,
|
||||
LocationName.star_road_5_yellow_block_1: 0xBC081E,
|
||||
LocationName.star_road_5_yellow_block_2: 0xBC081F,
|
||||
LocationName.star_road_5_yellow_block_3: 0xBC0820,
|
||||
LocationName.star_road_5_yellow_block_4: 0xBC0821,
|
||||
LocationName.star_road_5_yellow_block_5: 0xBC0822,
|
||||
LocationName.star_road_5_yellow_block_6: 0xBC0823,
|
||||
LocationName.star_road_5_yellow_block_7: 0xBC0824,
|
||||
LocationName.star_road_5_yellow_block_8: 0xBC0825,
|
||||
LocationName.star_road_5_yellow_block_9: 0xBC0826,
|
||||
LocationName.star_road_5_yellow_block_10: 0xBC0827,
|
||||
LocationName.star_road_5_yellow_block_11: 0xBC0828,
|
||||
LocationName.star_road_5_yellow_block_12: 0xBC0829,
|
||||
LocationName.star_road_5_yellow_block_13: 0xBC082A,
|
||||
LocationName.star_road_5_yellow_block_14: 0xBC082B,
|
||||
LocationName.star_road_5_yellow_block_15: 0xBC082C,
|
||||
LocationName.star_road_5_yellow_block_16: 0xBC082D,
|
||||
LocationName.star_road_5_yellow_block_17: 0xBC082E,
|
||||
LocationName.star_road_5_yellow_block_18: 0xBC082F,
|
||||
LocationName.star_road_5_yellow_block_19: 0xBC0830,
|
||||
LocationName.star_road_5_yellow_block_20: 0xBC0831,
|
||||
LocationName.star_road_5_green_block_1: 0xBC0832,
|
||||
LocationName.star_road_5_green_block_2: 0xBC0833,
|
||||
LocationName.star_road_5_green_block_3: 0xBC0834,
|
||||
LocationName.star_road_5_green_block_4: 0xBC0835,
|
||||
LocationName.star_road_5_green_block_5: 0xBC0836,
|
||||
LocationName.star_road_5_green_block_6: 0xBC0837,
|
||||
LocationName.star_road_5_green_block_7: 0xBC0838,
|
||||
LocationName.star_road_5_green_block_8: 0xBC0839,
|
||||
LocationName.star_road_5_green_block_9: 0xBC083A,
|
||||
LocationName.star_road_5_green_block_10: 0xBC083B,
|
||||
LocationName.star_road_5_green_block_11: 0xBC083C,
|
||||
LocationName.star_road_5_green_block_12: 0xBC083D,
|
||||
LocationName.star_road_5_green_block_13: 0xBC083E,
|
||||
LocationName.star_road_5_green_block_14: 0xBC083F,
|
||||
LocationName.star_road_5_green_block_15: 0xBC0840,
|
||||
LocationName.star_road_5_green_block_16: 0xBC0841,
|
||||
LocationName.star_road_5_green_block_17: 0xBC0842,
|
||||
LocationName.star_road_5_green_block_18: 0xBC0843,
|
||||
LocationName.star_road_5_green_block_19: 0xBC0844,
|
||||
LocationName.star_road_5_green_block_20: 0xBC0845
|
||||
}
|
||||
|
||||
bowser_location_table = {
|
||||
LocationName.bowser: 0xBC0200,
|
||||
}
|
||||
|
@ -208,6 +826,10 @@ yoshi_house_location_table = {
|
|||
all_locations = {
|
||||
**level_location_table,
|
||||
**dragon_coin_location_table,
|
||||
**moon_location_table,
|
||||
**hidden_1ups_location_table,
|
||||
**bonus_block_location_table,
|
||||
**blocksanity_location_table,
|
||||
**bowser_location_table,
|
||||
**yoshi_house_location_table,
|
||||
}
|
||||
|
@ -234,20 +856,149 @@ special_zone_dragon_coin_names = [
|
|||
LocationName.special_zone_8_dragon,
|
||||
]
|
||||
|
||||
special_zone_hidden_1up_names = [
|
||||
LocationName.special_zone_1_hidden_1up
|
||||
]
|
||||
|
||||
special_zone_blocksanity_names = [
|
||||
LocationName.special_zone_8_yoshi_block_1,
|
||||
LocationName.special_zone_8_coin_block_1,
|
||||
LocationName.special_zone_8_coin_block_2,
|
||||
LocationName.special_zone_8_coin_block_3,
|
||||
LocationName.special_zone_8_coin_block_4,
|
||||
LocationName.special_zone_8_coin_block_5,
|
||||
LocationName.special_zone_8_blue_pow_block_1,
|
||||
LocationName.special_zone_8_powerup_block_1,
|
||||
LocationName.special_zone_8_star_block_1,
|
||||
LocationName.special_zone_8_coin_block_6,
|
||||
LocationName.special_zone_8_coin_block_7,
|
||||
LocationName.special_zone_8_coin_block_8,
|
||||
LocationName.special_zone_8_coin_block_9,
|
||||
LocationName.special_zone_8_coin_block_10,
|
||||
LocationName.special_zone_8_coin_block_11,
|
||||
LocationName.special_zone_8_coin_block_12,
|
||||
LocationName.special_zone_8_coin_block_13,
|
||||
LocationName.special_zone_8_coin_block_14,
|
||||
LocationName.special_zone_8_coin_block_15,
|
||||
LocationName.special_zone_8_coin_block_16,
|
||||
LocationName.special_zone_8_coin_block_17,
|
||||
LocationName.special_zone_8_coin_block_18,
|
||||
LocationName.special_zone_8_multi_coin_block_1,
|
||||
LocationName.special_zone_8_coin_block_19,
|
||||
LocationName.special_zone_8_coin_block_20,
|
||||
LocationName.special_zone_8_coin_block_21,
|
||||
LocationName.special_zone_8_coin_block_22,
|
||||
LocationName.special_zone_8_coin_block_23,
|
||||
LocationName.special_zone_8_powerup_block_2,
|
||||
LocationName.special_zone_8_flying_block_1,
|
||||
LocationName.special_zone_7_powerup_block_1,
|
||||
LocationName.special_zone_7_yoshi_block_1,
|
||||
LocationName.special_zone_7_coin_block_1,
|
||||
LocationName.special_zone_7_powerup_block_2,
|
||||
LocationName.special_zone_7_coin_block_2,
|
||||
LocationName.special_zone_6_powerup_block_1,
|
||||
LocationName.special_zone_6_coin_block_1,
|
||||
LocationName.special_zone_6_coin_block_2,
|
||||
LocationName.special_zone_6_yoshi_block_1,
|
||||
LocationName.special_zone_6_life_block_1,
|
||||
LocationName.special_zone_6_multi_coin_block_1,
|
||||
LocationName.special_zone_6_coin_block_3,
|
||||
LocationName.special_zone_6_coin_block_4,
|
||||
LocationName.special_zone_6_coin_block_5,
|
||||
LocationName.special_zone_6_coin_block_6,
|
||||
LocationName.special_zone_6_coin_block_7,
|
||||
LocationName.special_zone_6_coin_block_8,
|
||||
LocationName.special_zone_6_coin_block_9,
|
||||
LocationName.special_zone_6_coin_block_10,
|
||||
LocationName.special_zone_6_coin_block_11,
|
||||
LocationName.special_zone_6_coin_block_12,
|
||||
LocationName.special_zone_6_coin_block_13,
|
||||
LocationName.special_zone_6_coin_block_14,
|
||||
LocationName.special_zone_6_coin_block_15,
|
||||
LocationName.special_zone_6_coin_block_16,
|
||||
LocationName.special_zone_6_coin_block_17,
|
||||
LocationName.special_zone_6_coin_block_18,
|
||||
LocationName.special_zone_6_coin_block_19,
|
||||
LocationName.special_zone_6_coin_block_20,
|
||||
LocationName.special_zone_6_coin_block_21,
|
||||
LocationName.special_zone_6_coin_block_22,
|
||||
LocationName.special_zone_6_coin_block_23,
|
||||
LocationName.special_zone_6_coin_block_24,
|
||||
LocationName.special_zone_6_coin_block_25,
|
||||
LocationName.special_zone_6_coin_block_26,
|
||||
LocationName.special_zone_6_coin_block_27,
|
||||
LocationName.special_zone_6_coin_block_28,
|
||||
LocationName.special_zone_6_powerup_block_2,
|
||||
LocationName.special_zone_6_coin_block_29,
|
||||
LocationName.special_zone_6_coin_block_30,
|
||||
LocationName.special_zone_6_coin_block_31,
|
||||
LocationName.special_zone_6_coin_block_32,
|
||||
LocationName.special_zone_6_coin_block_33,
|
||||
LocationName.special_zone_5_yoshi_block_1,
|
||||
LocationName.special_zone_1_vine_block_1,
|
||||
LocationName.special_zone_1_vine_block_2,
|
||||
LocationName.special_zone_1_vine_block_3,
|
||||
LocationName.special_zone_1_vine_block_4,
|
||||
LocationName.special_zone_1_life_block_1,
|
||||
LocationName.special_zone_1_vine_block_5,
|
||||
LocationName.special_zone_1_blue_pow_block_1,
|
||||
LocationName.special_zone_1_vine_block_6,
|
||||
LocationName.special_zone_1_powerup_block_1,
|
||||
LocationName.special_zone_1_pswitch_coin_block_1,
|
||||
LocationName.special_zone_1_pswitch_coin_block_2,
|
||||
LocationName.special_zone_1_pswitch_coin_block_3,
|
||||
LocationName.special_zone_1_pswitch_coin_block_4,
|
||||
LocationName.special_zone_1_pswitch_coin_block_5,
|
||||
LocationName.special_zone_1_pswitch_coin_block_6,
|
||||
LocationName.special_zone_1_pswitch_coin_block_7,
|
||||
LocationName.special_zone_1_pswitch_coin_block_8,
|
||||
LocationName.special_zone_1_pswitch_coin_block_9,
|
||||
LocationName.special_zone_1_pswitch_coin_block_10,
|
||||
LocationName.special_zone_1_pswitch_coin_block_11,
|
||||
LocationName.special_zone_1_pswitch_coin_block_12,
|
||||
LocationName.special_zone_1_pswitch_coin_block_13,
|
||||
LocationName.special_zone_2_powerup_block_1,
|
||||
LocationName.special_zone_2_coin_block_1,
|
||||
LocationName.special_zone_2_coin_block_2,
|
||||
LocationName.special_zone_2_powerup_block_2,
|
||||
LocationName.special_zone_2_coin_block_3,
|
||||
LocationName.special_zone_2_coin_block_4,
|
||||
LocationName.special_zone_2_powerup_block_3,
|
||||
LocationName.special_zone_2_multi_coin_block_1,
|
||||
LocationName.special_zone_2_coin_block_5,
|
||||
LocationName.special_zone_2_coin_block_6,
|
||||
LocationName.special_zone_3_powerup_block_1,
|
||||
LocationName.special_zone_3_yoshi_block_1,
|
||||
LocationName.special_zone_3_wings_block_1,
|
||||
LocationName.special_zone_4_powerup_block_1,
|
||||
LocationName.special_zone_4_star_block_1
|
||||
]
|
||||
|
||||
location_table = {}
|
||||
|
||||
|
||||
def setup_locations(world, player: int):
|
||||
def setup_locations(world: World):
|
||||
location_table = {**level_location_table}
|
||||
|
||||
# Dragon Coins here
|
||||
if world.dragon_coin_checks[player].value:
|
||||
location_table.update({**dragon_coin_location_table})
|
||||
if world.options.dragon_coin_checks:
|
||||
location_table.update(dragon_coin_location_table)
|
||||
|
||||
if world.goal[player] == "yoshi_egg_hunt":
|
||||
location_table.update({**yoshi_house_location_table})
|
||||
if world.options.moon_checks:
|
||||
location_table.update(moon_location_table)
|
||||
|
||||
if world.options.hidden_1up_checks:
|
||||
location_table.update(hidden_1ups_location_table)
|
||||
|
||||
if world.options.bonus_block_checks:
|
||||
location_table.update(bonus_block_location_table)
|
||||
|
||||
if world.options.blocksanity:
|
||||
location_table.update(blocksanity_location_table)
|
||||
|
||||
if world.options.goal == "yoshi_egg_hunt":
|
||||
location_table.update(yoshi_house_location_table)
|
||||
else:
|
||||
location_table.update({**bowser_location_table})
|
||||
location_table.update(bowser_location_table)
|
||||
|
||||
return location_table
|
||||
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
# Junk Definitions
|
||||
one_up_mushroom = "1-Up Mushroom"
|
||||
one_coin = "1 coin"
|
||||
five_coins = "5 coins"
|
||||
ten_coins = "10 coins"
|
||||
fifty_coins = "50 coins"
|
||||
|
||||
# Collectable Definitions
|
||||
yoshi_egg = "Yoshi Egg"
|
||||
|
@ -22,11 +26,16 @@ green_switch_palace = "Green Switch Palace"
|
|||
red_switch_palace = "Red Switch Palace"
|
||||
blue_switch_palace = "Blue Switch Palace"
|
||||
|
||||
# Special Zone clear flag definition
|
||||
special_world_clear = "Special Zone Clear"
|
||||
|
||||
# Trap Definitions
|
||||
ice_trap = "Ice Trap"
|
||||
stun_trap = "Stun Trap"
|
||||
literature_trap = "Literature Trap"
|
||||
timer_trap = "Timer Trap"
|
||||
ice_trap = "Ice Trap"
|
||||
stun_trap = "Stun Trap"
|
||||
literature_trap = "Literature Trap"
|
||||
timer_trap = "Timer Trap"
|
||||
reverse_controls_trap = "Reverse Trap"
|
||||
thwimp_trap = "Thwimp Trap"
|
||||
|
||||
# Other Definitions
|
||||
victory = "The Princess"
|
||||
|
|
|
@ -4,12 +4,15 @@ yoshis_house_tile = "Yoshi's House - Tile"
|
|||
|
||||
yoshis_island_1_exit_1 = "Yoshi's Island 1 - Normal Exit"
|
||||
yoshis_island_1_dragon = "Yoshi's Island 1 - Dragon Coins"
|
||||
yoshis_island_1_moon = "Yoshi's Island 1 - 3-Up Moon"
|
||||
yoshis_island_2_exit_1 = "Yoshi's Island 2 - Normal Exit"
|
||||
yoshis_island_2_dragon = "Yoshi's Island 2 - Dragon Coins"
|
||||
yoshis_island_3_exit_1 = "Yoshi's Island 3 - Normal Exit"
|
||||
yoshis_island_3_dragon = "Yoshi's Island 3 - Dragon Coins"
|
||||
yoshis_island_3_bonus_block = "Yoshi's Island 3 - 1-Up from Bonus Block"
|
||||
yoshis_island_4_exit_1 = "Yoshi's Island 4 - Normal Exit"
|
||||
yoshis_island_4_dragon = "Yoshi's Island 4 - Dragon Coins"
|
||||
yoshis_island_4_hidden_1up = "Yoshi's Island 4 - Hidden 1-Up"
|
||||
yoshis_island_castle = "#1 Iggy's Castle - Normal Exit"
|
||||
yoshis_island_koopaling = "#1 Iggy's Castle - Boss"
|
||||
|
||||
|
@ -18,13 +21,17 @@ yellow_switch_palace = "Yellow Switch Palace"
|
|||
donut_plains_1_exit_1 = "Donut Plains 1 - Normal Exit"
|
||||
donut_plains_1_exit_2 = "Donut Plains 1 - Secret Exit"
|
||||
donut_plains_1_dragon = "Donut Plains 1 - Dragon Coins"
|
||||
donut_plains_1_hidden_1up = "Donut Plains 1 - Hidden 1-Up"
|
||||
donut_plains_2_exit_1 = "Donut Plains 2 - Normal Exit"
|
||||
donut_plains_2_exit_2 = "Donut Plains 2 - Secret Exit"
|
||||
donut_plains_2_dragon = "Donut Plains 2 - Dragon Coins"
|
||||
donut_plains_3_exit_1 = "Donut Plains 3 - Normal Exit"
|
||||
donut_plains_3_dragon = "Donut Plains 3 - Dragon Coins"
|
||||
donut_plains_3_bonus_block = "Donut Plains 3 - 1-Up from Bonus Block"
|
||||
donut_plains_4_exit_1 = "Donut Plains 4 - Normal Exit"
|
||||
donut_plains_4_dragon = "Donut Plains 4 - Dragon Coins"
|
||||
donut_plains_4_moon = "Donut Plains 4 - 3-Up Moon"
|
||||
donut_plains_4_hidden_1up = "Donut Plains 4 - Hidden 1-Up"
|
||||
donut_secret_1_exit_1 = "Donut Secret 1 - Normal Exit"
|
||||
donut_secret_1_exit_2 = "Donut Secret 1 - Secret Exit"
|
||||
donut_secret_1_dragon = "Donut Secret 1 - Dragon Coins"
|
||||
|
@ -35,6 +42,7 @@ donut_ghost_house_exit_2 = "Donut Ghost House - Secret Exit"
|
|||
donut_secret_house_exit_1 = "Donut Secret House - Normal Exit"
|
||||
donut_secret_house_exit_2 = "Donut Secret House - Secret Exit"
|
||||
donut_plains_castle = "#2 Morton's Castle - Normal Exit"
|
||||
donut_plains_castle_hidden_1up = "#2 Morton's Castle - Hidden 1-Up"
|
||||
donut_plains_koopaling = "#2 Morton's Castle - Boss"
|
||||
|
||||
green_switch_palace = "Green Switch Palace"
|
||||
|
@ -47,8 +55,10 @@ vanilla_dome_2_exit_2 = "Vanilla Dome 2 - Secret Exit"
|
|||
vanilla_dome_2_dragon = "Vanilla Dome 2 - Dragon Coins"
|
||||
vanilla_dome_3_exit_1 = "Vanilla Dome 3 - Normal Exit"
|
||||
vanilla_dome_3_dragon = "Vanilla Dome 3 - Dragon Coins"
|
||||
vanilla_dome_3_moon = "Vanilla Dome 3 - 3-Up Moon"
|
||||
vanilla_dome_4_exit_1 = "Vanilla Dome 4 - Normal Exit"
|
||||
vanilla_dome_4_dragon = "Vanilla Dome 4 - Dragon Coins"
|
||||
vanilla_dome_4_hidden_1up = "Vanilla Dome 4 - Hidden 1-Up"
|
||||
vanilla_secret_1_exit_1 = "Vanilla Secret 1 - Normal Exit"
|
||||
vanilla_secret_1_exit_2 = "Vanilla Secret 1 - Secret Exit"
|
||||
vanilla_secret_1_dragon = "Vanilla Secret 1 - Dragon Coins"
|
||||
|
@ -58,7 +68,9 @@ vanilla_secret_3_exit_1 = "Vanilla Secret 3 - Normal Exit"
|
|||
vanilla_secret_3_dragon = "Vanilla Secret 3 - Dragon Coins"
|
||||
vanilla_ghost_house_exit_1 = "Vanilla Ghost House - Normal Exit"
|
||||
vanilla_ghost_house_dragon = "Vanilla Ghost House - Dragon Coins"
|
||||
vanilla_ghost_house_hidden_1up = "Vanilla Ghost House - Hidden 1-Up"
|
||||
vanilla_fortress = "Vanilla Fortress - Normal Exit"
|
||||
vanilla_fortress_hidden_1up = "Vanilla Fortress - Hidden 1-Up"
|
||||
vanilla_reznor = "Vanilla Fortress - Boss"
|
||||
vanilla_dome_castle = "#3 Lemmy's Castle - Normal Exit"
|
||||
vanilla_dome_koopaling = "#3 Lemmy's Castle - Boss"
|
||||
|
@ -67,13 +79,16 @@ red_switch_palace = "Red Switch Palace"
|
|||
|
||||
butter_bridge_1_exit_1 = "Butter Bridge 1 - Normal Exit"
|
||||
butter_bridge_1_dragon = "Butter Bridge 1 - Dragon Coins"
|
||||
butter_bridge_1_bonus_block = "Butter Bridge 1 - 1-Up from Bonus Block"
|
||||
butter_bridge_2_exit_1 = "Butter Bridge 2 - Normal Exit"
|
||||
butter_bridge_2_dragon = "Butter Bridge 2 - Dragon Coins"
|
||||
cheese_bridge_exit_1 = "Cheese Bridge - Normal Exit"
|
||||
cheese_bridge_exit_2 = "Cheese Bridge - Secret Exit"
|
||||
cheese_bridge_dragon = "Cheese Bridge - Dragon Coins"
|
||||
cheese_bridge_moon = "Cheese Bridge - 3-Up Moon"
|
||||
cookie_mountain_exit_1 = "Cookie Mountain - Normal Exit"
|
||||
cookie_mountain_dragon = "Cookie Mountain - Dragon Coins"
|
||||
cookie_mountain_hidden_1up = "Cookie Mountain - Hidden 1-Up"
|
||||
soda_lake_exit_1 = "Soda Lake - Normal Exit"
|
||||
soda_lake_dragon = "Soda Lake - Dragon Coins"
|
||||
twin_bridges_castle = "#4 Ludwig's Castle - Normal Exit"
|
||||
|
@ -87,12 +102,14 @@ forest_of_illusion_2_dragon = "Forest of Illusion 2 - Dragon Coins"
|
|||
forest_of_illusion_3_exit_1 = "Forest of Illusion 3 - Normal Exit"
|
||||
forest_of_illusion_3_exit_2 = "Forest of Illusion 3 - Secret Exit"
|
||||
forest_of_illusion_3_dragon = "Forest of Illusion 3 - Dragon Coins"
|
||||
forest_of_illusion_3_hidden_1up = "Forest of Illusion 3 - Hidden 1-Up"
|
||||
forest_of_illusion_4_exit_1 = "Forest of Illusion 4 - Normal Exit"
|
||||
forest_of_illusion_4_exit_2 = "Forest of Illusion 4 - Secret Exit"
|
||||
forest_of_illusion_4_dragon = "Forest of Illusion 4 - Dragon Coins"
|
||||
forest_ghost_house_exit_1 = "Forest Ghost House - Normal Exit"
|
||||
forest_ghost_house_exit_2 = "Forest Ghost House - Secret Exit"
|
||||
forest_ghost_house_dragon = "Forest Ghost House - Dragon Coins"
|
||||
forest_ghost_house_moon = "Forest Ghost House - 3-Up Moon"
|
||||
forest_secret_exit_1 = "Forest Secret - Normal Exit"
|
||||
forest_secret_dragon = "Forest Secret - Dragon Coins"
|
||||
forest_fortress = "Forest Fortress - Normal Exit"
|
||||
|
@ -105,12 +122,15 @@ blue_switch_palace = "Blue Switch Palace"
|
|||
|
||||
chocolate_island_1_exit_1 = "Chocolate Island 1 - Normal Exit"
|
||||
chocolate_island_1_dragon = "Chocolate Island 1 - Dragon Coins"
|
||||
chocolate_island_1_moon = "Chocolate Island 1 - 3-Up Moon"
|
||||
chocolate_island_2_exit_1 = "Chocolate Island 2 - Normal Exit"
|
||||
chocolate_island_2_exit_2 = "Chocolate Island 2 - Secret Exit"
|
||||
chocolate_island_2_dragon = "Chocolate Island 2 - Dragon Coins"
|
||||
chocolate_island_2_hidden_1up = "Chocolate Island 2 - Hidden 1-Up"
|
||||
chocolate_island_3_exit_1 = "Chocolate Island 3 - Normal Exit"
|
||||
chocolate_island_3_exit_2 = "Chocolate Island 3 - Secret Exit"
|
||||
chocolate_island_3_dragon = "Chocolate Island 3 - Dragon Coins"
|
||||
chocolate_island_3_bonus_block = "Chocolate Island 3 - 1-Up from Bonus Block"
|
||||
chocolate_island_4_exit_1 = "Chocolate Island 4 - Normal Exit"
|
||||
chocolate_island_4_dragon = "Chocolate Island 4 - Dragon Coins"
|
||||
chocolate_island_5_exit_1 = "Chocolate Island 5 - Normal Exit"
|
||||
|
@ -120,6 +140,7 @@ chocolate_secret_exit_1 = "Chocolate Secret - Normal Exit"
|
|||
chocolate_fortress = "Chocolate Fortress - Normal Exit"
|
||||
chocolate_reznor = "Chocolate Fortress - Boss"
|
||||
chocolate_castle = "#6 Wendy's Castle - Normal Exit"
|
||||
chocolate_castle_hidden_1up = "#6 Wendy's Castle - Hidden 1-Up"
|
||||
chocolate_koopaling = "#6 Wendy's Castle - Boss"
|
||||
|
||||
sunken_ghost_ship = "Sunken Ghost Ship - Normal Exit"
|
||||
|
@ -127,9 +148,11 @@ sunken_ghost_ship_dragon = "Sunken Ghost Ship - Dragon Coins"
|
|||
|
||||
valley_of_bowser_1_exit_1 = "Valley of Bowser 1 - Normal Exit"
|
||||
valley_of_bowser_1_dragon = "Valley of Bowser 1 - Dragon Coins"
|
||||
valley_of_bowser_1_moon = "Valley of Bowser 1 - 3-Up Moon"
|
||||
valley_of_bowser_2_exit_1 = "Valley of Bowser 2 - Normal Exit"
|
||||
valley_of_bowser_2_exit_2 = "Valley of Bowser 2 - Secret Exit"
|
||||
valley_of_bowser_2_dragon = "Valley of Bowser 2 - Dragon Coins"
|
||||
valley_of_bowser_2_hidden_1up = "Valley of Bowser 2 - Hidden 1-Up"
|
||||
valley_of_bowser_3_exit_1 = "Valley of Bowser 3 - Normal Exit"
|
||||
valley_of_bowser_3_dragon = "Valley of Bowser 3 - Dragon Coins"
|
||||
valley_of_bowser_4_exit_1 = "Valley of Bowser 4 - Normal Exit"
|
||||
|
@ -141,6 +164,7 @@ valley_fortress = "Valley Fortress - Normal Exit"
|
|||
valley_reznor = "Valley Fortress - Boss"
|
||||
valley_castle = "#7 Larry's Castle - Normal Exit"
|
||||
valley_castle_dragon = "#7 Larry's Castle - Dragon Coins"
|
||||
valley_castle_hidden_1up = "#7 Larry's Castle - Hidden 1-Up"
|
||||
valley_koopaling = "#7 Larry's Castle - Boss"
|
||||
|
||||
front_door = "Front Door"
|
||||
|
@ -161,6 +185,7 @@ star_road_5_exit_2 = "Star Road 5 - Secret Exit"
|
|||
|
||||
special_zone_1_exit_1 = "Gnarly - Normal Exit"
|
||||
special_zone_1_dragon = "Gnarly - Dragon Coins"
|
||||
special_zone_1_hidden_1up = "Gnarly - Hidden 1-Up"
|
||||
special_zone_2_exit_1 = "Tubular - Normal Exit"
|
||||
special_zone_2_dragon = "Tubular - Dragon Coins"
|
||||
special_zone_3_exit_1 = "Way Cool - Normal Exit"
|
||||
|
@ -362,3 +387,586 @@ special_zone_7_region = "Outrageous"
|
|||
special_zone_8_tile = "Funky - Tile"
|
||||
special_zone_8_region = "Funky"
|
||||
special_complete = "Special Zone - Star Road - Complete"
|
||||
|
||||
vanilla_secret_2_yoshi_block_1 = "Vanilla Secret 2 - Yoshi Block #1"
|
||||
vanilla_secret_2_green_block_1 = "Vanilla Secret 2 - Green Switch Palace Block #1"
|
||||
vanilla_secret_2_powerup_block_1 = "Vanilla Secret 2 - Powerup Block #1"
|
||||
vanilla_secret_2_powerup_block_2 = "Vanilla Secret 2 - Powerup Block #2"
|
||||
vanilla_secret_2_multi_coin_block_1 = "Vanilla Secret 2 - Multi Coin Block #1"
|
||||
vanilla_secret_2_gray_pow_block_1 = "Vanilla Secret 2 - Gray P-Switch Block #1"
|
||||
vanilla_secret_2_coin_block_1 = "Vanilla Secret 2 - Coin Block #1"
|
||||
vanilla_secret_2_coin_block_2 = "Vanilla Secret 2 - Coin Block #2"
|
||||
vanilla_secret_2_coin_block_3 = "Vanilla Secret 2 - Coin Block #3"
|
||||
vanilla_secret_2_coin_block_4 = "Vanilla Secret 2 - Coin Block #4"
|
||||
vanilla_secret_2_coin_block_5 = "Vanilla Secret 2 - Coin Block #5"
|
||||
vanilla_secret_2_coin_block_6 = "Vanilla Secret 2 - Coin Block #6"
|
||||
vanilla_secret_3_powerup_block_1 = "Vanilla Secret 3 - Powerup Block #1"
|
||||
vanilla_secret_3_powerup_block_2 = "Vanilla Secret 3 - Powerup Block #2"
|
||||
donut_ghost_house_vine_block_1 = "Donut Ghost House - Vine|P-Switch Block #1"
|
||||
donut_ghost_house_directional_coin_block_1 = "Donut Ghost House - Directional Coin Block #1"
|
||||
donut_ghost_house_life_block_1 = "Donut Ghost House - 1-Up Mushroom Block #1"
|
||||
donut_ghost_house_life_block_2 = "Donut Ghost House - 1-Up Mushroom Block #2"
|
||||
donut_ghost_house_life_block_3 = "Donut Ghost House - 1-Up Mushroom Block #3"
|
||||
donut_ghost_house_life_block_4 = "Donut Ghost House - 1-Up Mushroom Block #4"
|
||||
donut_plains_3_green_block_1 = "Donut Plains 3 - Green Switch Palace Block #1"
|
||||
donut_plains_3_coin_block_1 = "Donut Plains 3 - Coin Block #1"
|
||||
donut_plains_3_coin_block_2 = "Donut Plains 3 - Coin Block #2"
|
||||
donut_plains_3_vine_block_1 = "Donut Plains 3 - Vine Block #1"
|
||||
donut_plains_3_powerup_block_1 = "Donut Plains 3 - Powerup Block #1"
|
||||
donut_plains_3_bonus_block_1 = "Donut Plains 3 - Bonus Block #1"
|
||||
donut_plains_4_coin_block_1 = "Donut Plains 4 - Coin Block #1"
|
||||
donut_plains_4_powerup_block_1 = "Donut Plains 4 - Powerup Block #1"
|
||||
donut_plains_4_coin_block_2 = "Donut Plains 4 - Coin Block #2"
|
||||
donut_plains_4_yoshi_block_1 = "Donut Plains 4 - Yoshi Block #1"
|
||||
donut_plains_castle_yellow_block_1 = "#2 Morton's Castle - Yellow Switch Palace Block #1"
|
||||
donut_plains_castle_coin_block_1 = "#2 Morton's Castle - Coin Block #1"
|
||||
donut_plains_castle_powerup_block_1 = "#2 Morton's Castle - Powerup Block #1"
|
||||
donut_plains_castle_coin_block_2 = "#2 Morton's Castle - Coin Block #2"
|
||||
donut_plains_castle_vine_block_1 = "#2 Morton's Castle - Vine Block #1"
|
||||
donut_plains_castle_invis_life_block_1 = "#2 Morton's Castle - Invisible 1-Up Mushroom Block #1"
|
||||
donut_plains_castle_coin_block_3 = "#2 Morton's Castle - Coin Block #3"
|
||||
donut_plains_castle_coin_block_4 = "#2 Morton's Castle - Coin Block #4"
|
||||
donut_plains_castle_coin_block_5 = "#2 Morton's Castle - Coin Block #5"
|
||||
donut_plains_castle_green_block_1 = "#2 Morton's Castle - Green Switch Palace Block #1"
|
||||
donut_plains_2_coin_block_1 = "Donut Plains 2 - Coin Block #1"
|
||||
donut_plains_2_coin_block_2 = "Donut Plains 2 - Coin Block #2"
|
||||
donut_plains_2_coin_block_3 = "Donut Plains 2 - Coin Block #3"
|
||||
donut_plains_2_yellow_block_1 = "Donut Plains 2 - Yellow Switch Palace Block #1"
|
||||
donut_plains_2_powerup_block_1 = "Donut Plains 2 - Powerup Block #1"
|
||||
donut_plains_2_multi_coin_block_1 = "Donut Plains 2 - Multi Coin Block #1"
|
||||
donut_plains_2_flying_block_1 = "Donut Plains 2 - Flying Question Block #1"
|
||||
donut_plains_2_green_block_1 = "Donut Plains 2 - Green Switch Palace Block #1"
|
||||
donut_plains_2_yellow_block_2 = "Donut Plains 2 - Yellow Switch Palace Block #2"
|
||||
donut_plains_2_vine_block_1 = "Donut Plains 2 - Vine Block #1"
|
||||
donut_secret_1_coin_block_1 = "Donut Secret 1 - Coin Block #1"
|
||||
donut_secret_1_coin_block_2 = "Donut Secret 1 - Coin Block #2"
|
||||
donut_secret_1_powerup_block_1 = "Donut Secret 1 - Powerup Block #1"
|
||||
donut_secret_1_coin_block_3 = "Donut Secret 1 - Coin Block #3"
|
||||
donut_secret_1_powerup_block_2 = "Donut Secret 1 - Powerup Block #2"
|
||||
donut_secret_1_powerup_block_3 = "Donut Secret 1 - Powerup Block #3"
|
||||
donut_secret_1_life_block_1 = "Donut Secret 1 - 1-Up Mushroom Block #1"
|
||||
donut_secret_1_powerup_block_4 = "Donut Secret 1 - Powerup Block #4"
|
||||
donut_secret_1_powerup_block_5 = "Donut Secret 1 - Powerup Block #5"
|
||||
donut_secret_1_key_block_1 = "Donut Secret 1 - Key Block #1"
|
||||
vanilla_fortress_powerup_block_1 = "Vanilla Fortress - Powerup Block #1"
|
||||
vanilla_fortress_powerup_block_2 = "Vanilla Fortress - Powerup Block #2"
|
||||
vanilla_fortress_yellow_block_1 = "Vanilla Fortress - Yellow Switch Palace Block #1"
|
||||
butter_bridge_1_powerup_block_1 = "Butter Bridge 1 - Powerup Block #1"
|
||||
butter_bridge_1_multi_coin_block_1 = "Butter Bridge 1 - Multi Coin Block #1"
|
||||
butter_bridge_1_multi_coin_block_2 = "Butter Bridge 1 - Multi Coin Block #2"
|
||||
butter_bridge_1_multi_coin_block_3 = "Butter Bridge 1 - Multi Coin Block #3"
|
||||
butter_bridge_1_life_block_1 = "Butter Bridge 1 - 1-Up Mushroom Block #1"
|
||||
butter_bridge_1_bonus_block_1 = "Butter Bridge 1 - Bonus Block #1"
|
||||
butter_bridge_2_powerup_block_1 = "Butter Bridge 2 - Powerup Block #1"
|
||||
butter_bridge_2_green_block_1 = "Butter Bridge 2 - Green Switch Palace Block #1"
|
||||
butter_bridge_2_yoshi_block_1 = "Butter Bridge 2 - Yoshi Block #1"
|
||||
twin_bridges_castle_powerup_block_1 = "#4 Ludwig Castle - Powerup Block #1"
|
||||
cheese_bridge_powerup_block_1 = "Cheese Bridge Area - Powerup Block #1"
|
||||
cheese_bridge_powerup_block_2 = "Cheese Bridge Area - Powerup Block #2"
|
||||
cheese_bridge_wings_block_1 = "Cheese Bridge Area - Wings Block #1"
|
||||
cheese_bridge_powerup_block_3 = "Cheese Bridge Area - Powerup Block #3"
|
||||
cookie_mountain_coin_block_1 = "Cookie Mountain - Coin Block #1"
|
||||
cookie_mountain_coin_block_2 = "Cookie Mountain - Coin Block #2"
|
||||
cookie_mountain_coin_block_3 = "Cookie Mountain - Coin Block #3"
|
||||
cookie_mountain_coin_block_4 = "Cookie Mountain - Coin Block #4"
|
||||
cookie_mountain_coin_block_5 = "Cookie Mountain - Coin Block #5"
|
||||
cookie_mountain_coin_block_6 = "Cookie Mountain - Coin Block #6"
|
||||
cookie_mountain_coin_block_7 = "Cookie Mountain - Coin Block #7"
|
||||
cookie_mountain_coin_block_8 = "Cookie Mountain - Coin Block #8"
|
||||
cookie_mountain_coin_block_9 = "Cookie Mountain - Coin Block #9"
|
||||
cookie_mountain_powerup_block_1 = "Cookie Mountain - Powerup Block #1"
|
||||
cookie_mountain_life_block_1 = "Cookie Mountain - 1-Up Mushroom Block #1"
|
||||
cookie_mountain_vine_block_1 = "Cookie Mountain - Vine Block #1"
|
||||
cookie_mountain_yoshi_block_1 = "Cookie Mountain - Yoshi Block #1"
|
||||
cookie_mountain_coin_block_10 = "Cookie Mountain - Coin Block #10"
|
||||
cookie_mountain_coin_block_11 = "Cookie Mountain - Coin Block #11"
|
||||
cookie_mountain_powerup_block_2 = "Cookie Mountain - Powerup Block #2"
|
||||
cookie_mountain_coin_block_12 = "Cookie Mountain - Coin Block #12"
|
||||
cookie_mountain_coin_block_13 = "Cookie Mountain - Coin Block #13"
|
||||
cookie_mountain_coin_block_14 = "Cookie Mountain - Coin Block #14"
|
||||
cookie_mountain_coin_block_15 = "Cookie Mountain - Coin Block #15"
|
||||
cookie_mountain_coin_block_16 = "Cookie Mountain - Coin Block #16"
|
||||
cookie_mountain_coin_block_17 = "Cookie Mountain - Coin Block #17"
|
||||
cookie_mountain_coin_block_18 = "Cookie Mountain - Coin Block #18"
|
||||
cookie_mountain_coin_block_19 = "Cookie Mountain - Coin Block #19"
|
||||
cookie_mountain_coin_block_20 = "Cookie Mountain - Coin Block #20"
|
||||
cookie_mountain_coin_block_21 = "Cookie Mountain - Coin Block #21"
|
||||
cookie_mountain_coin_block_22 = "Cookie Mountain - Coin Block #22"
|
||||
cookie_mountain_coin_block_23 = "Cookie Mountain - Coin Block #23"
|
||||
cookie_mountain_coin_block_24 = "Cookie Mountain - Coin Block #24"
|
||||
cookie_mountain_coin_block_25 = "Cookie Mountain - Coin Block #25"
|
||||
cookie_mountain_coin_block_26 = "Cookie Mountain - Coin Block #26"
|
||||
cookie_mountain_coin_block_27 = "Cookie Mountain - Coin Block #27"
|
||||
cookie_mountain_coin_block_28 = "Cookie Mountain - Coin Block #28"
|
||||
cookie_mountain_coin_block_29 = "Cookie Mountain - Coin Block #29"
|
||||
cookie_mountain_coin_block_30 = "Cookie Mountain - Coin Block #30"
|
||||
soda_lake_powerup_block_1 = "Soda Lake - Powerup Block #1"
|
||||
donut_secret_house_powerup_block_1 = "Donut Secret House - Powerup Block #1"
|
||||
donut_secret_house_multi_coin_block_1 = "Donut Secret House - Multi Coin Block #1"
|
||||
donut_secret_house_life_block_1 = "Donut Secret House - 1-Up Mushroom Block #1"
|
||||
donut_secret_house_vine_block_1 = "Donut Secret House - Vine Block #1"
|
||||
donut_secret_house_directional_coin_block_1 = "Donut Secret House - Directional Coin Block #1"
|
||||
donut_plains_1_coin_block_1 = "Donut Plains 1 - Coin Block #1"
|
||||
donut_plains_1_coin_block_2 = "Donut Plains 1 - Coin Block #2"
|
||||
donut_plains_1_yoshi_block_1 = "Donut Plains 1 - Yoshi Block #1"
|
||||
donut_plains_1_vine_block_1 = "Donut Plains 1 - Vine Block #1"
|
||||
donut_plains_1_green_block_1 = "Donut Plains 1 - Green Switch Palace Block #1"
|
||||
donut_plains_1_green_block_2 = "Donut Plains 1 - Green Switch Palace Block #2"
|
||||
donut_plains_1_green_block_3 = "Donut Plains 1 - Green Switch Palace Block #3"
|
||||
donut_plains_1_green_block_4 = "Donut Plains 1 - Green Switch Palace Block #4"
|
||||
donut_plains_1_green_block_5 = "Donut Plains 1 - Green Switch Palace Block #5"
|
||||
donut_plains_1_green_block_6 = "Donut Plains 1 - Green Switch Palace Block #6"
|
||||
donut_plains_1_green_block_7 = "Donut Plains 1 - Green Switch Palace Block #7"
|
||||
donut_plains_1_green_block_8 = "Donut Plains 1 - Green Switch Palace Block #8"
|
||||
donut_plains_1_green_block_9 = "Donut Plains 1 - Green Switch Palace Block #9"
|
||||
donut_plains_1_green_block_10 = "Donut Plains 1 - Green Switch Palace Block #10"
|
||||
donut_plains_1_green_block_11 = "Donut Plains 1 - Green Switch Palace Block #11"
|
||||
donut_plains_1_green_block_12 = "Donut Plains 1 - Green Switch Palace Block #12"
|
||||
donut_plains_1_green_block_13 = "Donut Plains 1 - Green Switch Palace Block #13"
|
||||
donut_plains_1_green_block_14 = "Donut Plains 1 - Green Switch Palace Block #14"
|
||||
donut_plains_1_green_block_15 = "Donut Plains 1 - Green Switch Palace Block #15"
|
||||
donut_plains_1_green_block_16 = "Donut Plains 1 - Green Switch Palace Block #16"
|
||||
donut_plains_1_yellow_block_1 = "Donut Plains 1 - Yellow Switch Palace Block #1"
|
||||
donut_plains_1_yellow_block_2 = "Donut Plains 1 - Yellow Switch Palace Block #2"
|
||||
donut_plains_1_yellow_block_3 = "Donut Plains 1 - Yellow Switch Palace Block #3"
|
||||
sunken_ghost_ship_powerup_block_1 = "Sunken Ghost Ship - Powerup Block #1"
|
||||
sunken_ghost_ship_star_block_1 = "Sunken Ghost Ship - Star Block #1"
|
||||
chocolate_castle_yellow_block_1 = "#6 Wendy's Castle - Yellow Switch Palace Block #1"
|
||||
chocolate_castle_yellow_block_2 = "#6 Wendy's Castle - Yellow Switch Palace Block #2"
|
||||
chocolate_castle_green_block_1 = "#6 Wendy's Castle - Green Switch Palace Block #1"
|
||||
chocolate_fortress_powerup_block_1 = "Chocolate Fortress - Powerup Block #1"
|
||||
chocolate_fortress_powerup_block_2 = "Chocolate Fortress - Powerup Block #2"
|
||||
chocolate_fortress_coin_block_1 = "Chocolate Fortress - Coin Block #1"
|
||||
chocolate_fortress_coin_block_2 = "Chocolate Fortress - Coin Block #2"
|
||||
chocolate_fortress_green_block_1 = "Chocolate Fortress - Green Switch Palace Block #1"
|
||||
chocolate_island_5_yoshi_block_1 = "Chocolate Island 5 - Yoshi Block #1"
|
||||
chocolate_island_5_powerup_block_1 = "Chocolate Island 5 - Powerup Block #1"
|
||||
chocolate_island_5_life_block_1 = "Chocolate Island 5 - 1-Up Mushroom Block #1"
|
||||
chocolate_island_5_yellow_block_1 = "Chocolate Island 5 - Yellow Switch Palace Block #1"
|
||||
chocolate_island_4_yellow_block_1 = "Chocolate Island 4 - Yellow Switch Palace Block #1"
|
||||
chocolate_island_4_blue_pow_block_1 = "Chocolate Island 4 - Blue P-Switch Block #1"
|
||||
chocolate_island_4_powerup_block_1 = "Chocolate Island 4 - Powerup Block #1"
|
||||
forest_fortress_yellow_block_1 = "Forest Fortress - Yellow Switch Palace Block #1"
|
||||
forest_fortress_powerup_block_1 = "Forest Fortress - Powerup Block #1"
|
||||
forest_fortress_life_block_1 = "Forest Fortress - 1-Up Mushroom Block #1"
|
||||
forest_fortress_life_block_2 = "Forest Fortress - 1-Up Mushroom Block #2"
|
||||
forest_fortress_life_block_3 = "Forest Fortress - 1-Up Mushroom Block #3"
|
||||
forest_fortress_life_block_4 = "Forest Fortress - 1-Up Mushroom Block #4"
|
||||
forest_fortress_life_block_5 = "Forest Fortress - 1-Up Mushroom Block #5"
|
||||
forest_fortress_life_block_6 = "Forest Fortress - 1-Up Mushroom Block #6"
|
||||
forest_fortress_life_block_7 = "Forest Fortress - 1-Up Mushroom Block #7"
|
||||
forest_fortress_life_block_8 = "Forest Fortress - 1-Up Mushroom Block #8"
|
||||
forest_fortress_life_block_9 = "Forest Fortress - 1-Up Mushroom Block #9"
|
||||
forest_castle_green_block_1 = "#5 Roy's Castle - Green Switch Palace Block #1"
|
||||
chocolate_ghost_house_powerup_block_1 = "Choco Ghost House - Powerup Block #1"
|
||||
chocolate_ghost_house_powerup_block_2 = "Choco Ghost House - Powerup Block #2"
|
||||
chocolate_ghost_house_life_block_1 = "Choco Ghost House - 1-Up Mushroom Block #1"
|
||||
chocolate_island_1_flying_block_1 = "Chocolate Island 1 - Flying Question Block #1"
|
||||
chocolate_island_1_flying_block_2 = "Chocolate Island 1 - Flying Question Block #2"
|
||||
chocolate_island_1_yoshi_block_1 = "Chocolate Island 1 - Yoshi Block #1"
|
||||
chocolate_island_1_green_block_1 = "Chocolate Island 1 - Green|Yellow Switch Palace Block #1"
|
||||
chocolate_island_1_life_block_1 = "Chocolate Island 1 - 1-Up Mushroom Block #1"
|
||||
chocolate_island_3_powerup_block_1 = "Chocolate Island 3 - Powerup Block #1"
|
||||
chocolate_island_3_powerup_block_2 = "Chocolate Island 3 - Powerup Block #2"
|
||||
chocolate_island_3_powerup_block_3 = "Chocolate Island 3 - Powerup Block #3"
|
||||
chocolate_island_3_green_block_1 = "Chocolate Island 3 - Green Switch Palace Block #1"
|
||||
chocolate_island_3_bonus_block_1 = "Chocolate Island 3 - Bonus Block #1"
|
||||
chocolate_island_3_vine_block_1 = "Chocolate Island 3 - Vine Block #1"
|
||||
chocolate_island_3_life_block_1 = "Chocolate Island 3 - 1-Up Mushroom Block #1"
|
||||
chocolate_island_3_life_block_2 = "Chocolate Island 3 - 1-Up Mushroom Block #2"
|
||||
chocolate_island_3_life_block_3 = "Chocolate Island 3 - 1-Up Mushroom Block #3"
|
||||
chocolate_island_2_multi_coin_block_1 = "Chocolate Island 2 - Multi Coin Block #1"
|
||||
chocolate_island_2_invis_coin_block_1 = "Chocolate Island 2 - Invisible Coin Block #1"
|
||||
chocolate_island_2_yoshi_block_1 = "Chocolate Island 2 - Yoshi Block #1"
|
||||
chocolate_island_2_coin_block_1 = "Chocolate Island 2 - Coin Block #1"
|
||||
chocolate_island_2_coin_block_2 = "Chocolate Island 2 - Coin Block #2"
|
||||
chocolate_island_2_multi_coin_block_2 = "Chocolate Island 2 - Multi Coin Block #2"
|
||||
chocolate_island_2_powerup_block_1 = "Chocolate Island 2 - Powerup Block #1"
|
||||
chocolate_island_2_blue_pow_block_1 = "Chocolate Island 2 - Blue P-Switch Block #1"
|
||||
chocolate_island_2_yellow_block_1 = "Chocolate Island 2 - Yellow Switch Palace Block #1"
|
||||
chocolate_island_2_yellow_block_2 = "Chocolate Island 2 - Yellow Switch Palace Block #2"
|
||||
chocolate_island_2_green_block_1 = "Chocolate Island 2 - Green Switch Palace Block #1"
|
||||
chocolate_island_2_green_block_2 = "Chocolate Island 2 - Green Switch Palace Block #2"
|
||||
chocolate_island_2_green_block_3 = "Chocolate Island 2 - Green Switch Palace Block #3"
|
||||
chocolate_island_2_green_block_4 = "Chocolate Island 2 - Green Switch Palace Block #4"
|
||||
chocolate_island_2_green_block_5 = "Chocolate Island 2 - Green Switch Palace Block #5"
|
||||
chocolate_island_2_green_block_6 = "Chocolate Island 2 - Green Switch Palace Block #6"
|
||||
yoshis_island_castle_coin_block_1 = "#1 Iggy's Castle - Coin Block #1"
|
||||
yoshis_island_castle_coin_block_2 = "#1 Iggy's Castle - Coin Block #2"
|
||||
yoshis_island_castle_powerup_block_1 = "#1 Iggy's Castle - Powerup Block #1"
|
||||
yoshis_island_castle_coin_block_3 = "#1 Iggy's Castle - Coin Block #3"
|
||||
yoshis_island_castle_coin_block_4 = "#1 Iggy's Castle - Coin Block #4"
|
||||
yoshis_island_castle_flying_block_1 = "#1 Iggy's Castle - Flying Question Block #1"
|
||||
yoshis_island_4_yellow_block_1 = "Yoshi's Island 4 - Yellow Switch Palace Block #1"
|
||||
yoshis_island_4_powerup_block_1 = "Yoshi's Island 4 - Powerup Block #1"
|
||||
yoshis_island_4_multi_coin_block_1 = "Yoshi's Island 4 - Multi Coin Block #1"
|
||||
yoshis_island_4_star_block_1 = "Yoshi's Island 4 - Star Block #1"
|
||||
yoshis_island_3_yellow_block_1 = "Yoshi's Island 3 - Yellow Switch Palace Block #1"
|
||||
yoshis_island_3_yellow_block_2 = "Yoshi's Island 3 - Yellow Switch Palace Block #2"
|
||||
yoshis_island_3_yellow_block_3 = "Yoshi's Island 3 - Yellow Switch Palace Block #3"
|
||||
yoshis_island_3_yellow_block_4 = "Yoshi's Island 3 - Yellow Switch Palace Block #4"
|
||||
yoshis_island_3_yellow_block_5 = "Yoshi's Island 3 - Yellow Switch Palace Block #5"
|
||||
yoshis_island_3_yellow_block_6 = "Yoshi's Island 3 - Yellow Switch Palace Block #6"
|
||||
yoshis_island_3_yellow_block_7 = "Yoshi's Island 3 - Yellow Switch Palace Block #7"
|
||||
yoshis_island_3_yellow_block_8 = "Yoshi's Island 3 - Yellow Switch Palace Block #8"
|
||||
yoshis_island_3_yellow_block_9 = "Yoshi's Island 3 - Yellow Switch Palace Block #9"
|
||||
yoshis_island_3_coin_block_1 = "Yoshi's Island 3 - Coin Block #1"
|
||||
yoshis_island_3_yoshi_block_1 = "Yoshi's Island 3 - Yoshi Block #1"
|
||||
yoshis_island_3_coin_block_2 = "Yoshi's Island 3 - Coin Block #2"
|
||||
yoshis_island_3_powerup_block_1 = "Yoshi's Island 3 - Powerup Block #1"
|
||||
yoshis_island_3_yellow_block_10 = "Yoshi's Island 3 - Yellow Switch Palace Block #10"
|
||||
yoshis_island_3_yellow_block_11 = "Yoshi's Island 3 - Yellow Switch Palace Block #11"
|
||||
yoshis_island_3_yellow_block_12 = "Yoshi's Island 3 - Yellow Switch Palace Block #12"
|
||||
yoshis_island_3_bonus_block_1 = "Yoshi's Island 3 - Bonus Block #1"
|
||||
yoshis_island_1_flying_block_1 = "Yoshi's Island 1 - Flying Question Block #1"
|
||||
yoshis_island_1_yellow_block_1 = "Yoshi's Island 1 - Yellow Switch Palace Block #1"
|
||||
yoshis_island_1_life_block_1 = "Yoshi's Island 1 - 1-Up Mushroom Block #1"
|
||||
yoshis_island_1_powerup_block_1 = "Yoshi's Island 1 - Powerup Block #1"
|
||||
yoshis_island_2_flying_block_1 = "Yoshi's Island 2 - Flying Question Block #1"
|
||||
yoshis_island_2_flying_block_2 = "Yoshi's Island 2 - Flying Question Block #2"
|
||||
yoshis_island_2_flying_block_3 = "Yoshi's Island 2 - Flying Question Block #3"
|
||||
yoshis_island_2_flying_block_4 = "Yoshi's Island 2 - Flying Question Block #4"
|
||||
yoshis_island_2_flying_block_5 = "Yoshi's Island 2 - Flying Question Block #5"
|
||||
yoshis_island_2_flying_block_6 = "Yoshi's Island 2 - Flying Question Block #6"
|
||||
yoshis_island_2_coin_block_1 = "Yoshi's Island 2 - Coin Block #1"
|
||||
yoshis_island_2_yellow_block_1 = "Yoshi's Island 2 - Yellow Switch Palace Block #1"
|
||||
yoshis_island_2_coin_block_2 = "Yoshi's Island 2 - Coin Block #2"
|
||||
yoshis_island_2_coin_block_3 = "Yoshi's Island 2 - Coin Block #3"
|
||||
yoshis_island_2_yoshi_block_1 = "Yoshi's Island 2 - Yoshi Block #1"
|
||||
yoshis_island_2_coin_block_4 = "Yoshi's Island 2 - Coin Block #4"
|
||||
yoshis_island_2_yoshi_block_2 = "Yoshi's Island 2 - Yoshi Block #2"
|
||||
yoshis_island_2_coin_block_5 = "Yoshi's Island 2 - Coin Block #5"
|
||||
yoshis_island_2_vine_block_1 = "Yoshi's Island 2 - Vine Block #1"
|
||||
yoshis_island_2_yellow_block_2 = "Yoshi's Island 2 - Yellow Switch Palace Block #2"
|
||||
vanilla_ghost_house_powerup_block_1 = "Vanilla Ghost House - Powerup Block #1"
|
||||
vanilla_ghost_house_vine_block_1 = "Vanilla Ghost House - Vine Block #1"
|
||||
vanilla_ghost_house_powerup_block_2 = "Vanilla Ghost House - Powerup Block #2"
|
||||
vanilla_ghost_house_multi_coin_block_1 = "Vanilla Ghost House - Multi Coin Block #1"
|
||||
vanilla_ghost_house_blue_pow_block_1 = "Vanilla Ghost House - Blue P-Switch Block #1"
|
||||
vanilla_secret_1_coin_block_1 = "Vanilla Secret 1 - Coin Block #1"
|
||||
vanilla_secret_1_powerup_block_1 = "Vanilla Secret 1 - Powerup Block #1"
|
||||
vanilla_secret_1_multi_coin_block_1 = "Vanilla Secret 1 - Multi Coin Block #1"
|
||||
vanilla_secret_1_vine_block_1 = "Vanilla Secret 1 - Vine Block #1"
|
||||
vanilla_secret_1_vine_block_2 = "Vanilla Secret 1 - Vine Block #2"
|
||||
vanilla_secret_1_coin_block_2 = "Vanilla Secret 1 - Coin Block #2"
|
||||
vanilla_secret_1_coin_block_3 = "Vanilla Secret 1 - Coin Block #3"
|
||||
vanilla_secret_1_powerup_block_2 = "Vanilla Secret 1 - Powerup Block #2"
|
||||
vanilla_dome_3_coin_block_1 = "Vanilla Dome 3 - Coin Block #1"
|
||||
vanilla_dome_3_flying_block_1 = "Vanilla Dome 3 - Flying Question Block #1"
|
||||
vanilla_dome_3_flying_block_2 = "Vanilla Dome 3 - Flying Question Block #2"
|
||||
vanilla_dome_3_powerup_block_1 = "Vanilla Dome 3 - Powerup Block #1"
|
||||
vanilla_dome_3_flying_block_3 = "Vanilla Dome 3 - Flying Question Block #3"
|
||||
vanilla_dome_3_invis_coin_block_1 = "Vanilla Dome 3 - Invisible Coin Block #1"
|
||||
vanilla_dome_3_powerup_block_2 = "Vanilla Dome 3 - Powerup Block #2"
|
||||
vanilla_dome_3_multi_coin_block_1 = "Vanilla Dome 3 - Multi Coin Block #1"
|
||||
vanilla_dome_3_powerup_block_3 = "Vanilla Dome 3 - Powerup Block #3"
|
||||
vanilla_dome_3_yoshi_block_1 = "Vanilla Dome 3 - Yoshi Block #1"
|
||||
vanilla_dome_3_powerup_block_4 = "Vanilla Dome 3 - Powerup Block #4"
|
||||
vanilla_dome_3_pswitch_coin_block_1 = "Vanilla Dome 3 - P-Switch Coin Block #1"
|
||||
vanilla_dome_3_pswitch_coin_block_2 = "Vanilla Dome 3 - P-Switch Coin Block #2"
|
||||
vanilla_dome_3_pswitch_coin_block_3 = "Vanilla Dome 3 - P-Switch Coin Block #3"
|
||||
vanilla_dome_3_pswitch_coin_block_4 = "Vanilla Dome 3 - P-Switch Coin Block #4"
|
||||
vanilla_dome_3_pswitch_coin_block_5 = "Vanilla Dome 3 - P-Switch Coin Block #5"
|
||||
vanilla_dome_3_pswitch_coin_block_6 = "Vanilla Dome 3 - P-Switch Coin Block #6"
|
||||
donut_secret_2_directional_coin_block_1 = "Donut Secret 2 - Directional Coin Block #1"
|
||||
donut_secret_2_vine_block_1 = "Donut Secret 2 - Vine Block #1"
|
||||
donut_secret_2_star_block_1 = "Donut Secret 2 - Star Block #1"
|
||||
donut_secret_2_powerup_block_1 = "Donut Secret 2 - Powerup Block #1"
|
||||
donut_secret_2_star_block_2 = "Donut Secret 2 - Star Block #2"
|
||||
valley_of_bowser_4_yellow_block_1 = "Valley of Bowser 4 - Yellow Switch Palace Block #1"
|
||||
valley_of_bowser_4_powerup_block_1 = "Valley of Bowser 4 - Powerup Block #1"
|
||||
valley_of_bowser_4_vine_block_1 = "Valley of Bowser 4 - Vine Block #1"
|
||||
valley_of_bowser_4_yoshi_block_1 = "Valley of Bowser 4 - Yoshi Block #1"
|
||||
valley_of_bowser_4_life_block_1 = "Valley of Bowser 4 - 1-Up Mushroom Block #1"
|
||||
valley_of_bowser_4_powerup_block_2 = "Valley of Bowser 4 - Powerup Block #2"
|
||||
valley_castle_yellow_block_1 = "#7 Larry's Castle - Yellow Switch Palace Block #1"
|
||||
valley_castle_yellow_block_2 = "#7 Larry's Castle - Yellow Switch Palace Block #2"
|
||||
valley_castle_green_block_1 = "#7 Larry's Castle - Green Switch Palace Block #1"
|
||||
valley_fortress_green_block_1 = "Valley Fortress - Green Switch Palace Block #1"
|
||||
valley_fortress_yellow_block_1 = "Valley Fortress - Yellow Switch Palace Block #1"
|
||||
valley_of_bowser_3_powerup_block_1 = "Valley of Bowser 3 - Powerup Block #1"
|
||||
valley_of_bowser_3_powerup_block_2 = "Valley of Bowser 3 - Powerup Block #2"
|
||||
valley_ghost_house_pswitch_coin_block_1 = "Valley Ghost House - P-Switch Coin Block #1"
|
||||
valley_ghost_house_multi_coin_block_1 = "Valley Ghost House - Multi Coin Block #1"
|
||||
valley_ghost_house_powerup_block_1 = "Valley Ghost House - Powerup Block #1"
|
||||
valley_ghost_house_directional_coin_block_1 = "Valley Ghost House - Directional Coin Block #1"
|
||||
valley_of_bowser_2_powerup_block_1 = "Valley of Bowser 2 - Powerup Block #1"
|
||||
valley_of_bowser_2_yellow_block_1 = "Valley of Bowser 2 - Yellow Switch Palace Block #1"
|
||||
valley_of_bowser_2_powerup_block_2 = "Valley of Bowser 2 - Powerup Block #2"
|
||||
valley_of_bowser_2_wings_block_1 = "Valley of Bowser 2 - Wings Block #1"
|
||||
valley_of_bowser_1_green_block_1 = "Valley of Bowser 1 - Green Switch Palace Block #1"
|
||||
valley_of_bowser_1_invis_coin_block_1 = "Valley of Bowser 1 - Invisible Coin Block #1"
|
||||
valley_of_bowser_1_invis_coin_block_2 = "Valley of Bowser 1 - Invisible Coin Block #2"
|
||||
valley_of_bowser_1_invis_coin_block_3 = "Valley of Bowser 1 - Invisible Coin Block #3"
|
||||
valley_of_bowser_1_yellow_block_1 = "Valley of Bowser 1 - Yellow Switch Palace Block #1"
|
||||
valley_of_bowser_1_yellow_block_2 = "Valley of Bowser 1 - Yellow Switch Palace Block #2"
|
||||
valley_of_bowser_1_yellow_block_3 = "Valley of Bowser 1 - Yellow Switch Palace Block #3"
|
||||
valley_of_bowser_1_yellow_block_4 = "Valley of Bowser 1 - Yellow Switch Palace Block #4"
|
||||
valley_of_bowser_1_vine_block_1 = "Valley of Bowser 1 - Vine Block #1"
|
||||
chocolate_secret_powerup_block_1 = "Chocolate Secret - Powerup Block #1"
|
||||
chocolate_secret_powerup_block_2 = "Chocolate Secret - Powerup Block #2"
|
||||
vanilla_dome_2_coin_block_1 = "Vanilla Dome 2 - Coin Block #1"
|
||||
vanilla_dome_2_powerup_block_1 = "Vanilla Dome 2 - Powerup Block #1"
|
||||
vanilla_dome_2_coin_block_2 = "Vanilla Dome 2 - Coin Block #2"
|
||||
vanilla_dome_2_coin_block_3 = "Vanilla Dome 2 - Coin Block #3"
|
||||
vanilla_dome_2_vine_block_1 = "Vanilla Dome 2 - Vine Block #1"
|
||||
vanilla_dome_2_invis_life_block_1 = "Vanilla Dome 2 - Invisible 1-Up Mushroom Block #1"
|
||||
vanilla_dome_2_coin_block_4 = "Vanilla Dome 2 - Coin Block #4"
|
||||
vanilla_dome_2_coin_block_5 = "Vanilla Dome 2 - Coin Block #5"
|
||||
vanilla_dome_2_powerup_block_2 = "Vanilla Dome 2 - Powerup Block #2"
|
||||
vanilla_dome_2_powerup_block_3 = "Vanilla Dome 2 - Powerup Block #3"
|
||||
vanilla_dome_2_powerup_block_4 = "Vanilla Dome 2 - Powerup Block #4"
|
||||
vanilla_dome_2_powerup_block_5 = "Vanilla Dome 2 - Powerup Block #5"
|
||||
vanilla_dome_2_multi_coin_block_1 = "Vanilla Dome 2 - Multi Coin Block #1"
|
||||
vanilla_dome_2_multi_coin_block_2 = "Vanilla Dome 2 - Multi Coin Block #2"
|
||||
vanilla_dome_4_powerup_block_1 = "Vanilla Dome 4 - Powerup Block #1"
|
||||
vanilla_dome_4_powerup_block_2 = "Vanilla Dome 4 - Powerup Block #2"
|
||||
vanilla_dome_4_coin_block_1 = "Vanilla Dome 4 - Coin Block #1"
|
||||
vanilla_dome_4_coin_block_2 = "Vanilla Dome 4 - Coin Block #2"
|
||||
vanilla_dome_4_coin_block_3 = "Vanilla Dome 4 - Coin Block #3"
|
||||
vanilla_dome_4_life_block_1 = "Vanilla Dome 4 - 1-Up Mushroom Block #1"
|
||||
vanilla_dome_4_coin_block_4 = "Vanilla Dome 4 - Coin Block #4"
|
||||
vanilla_dome_4_coin_block_5 = "Vanilla Dome 4 - Coin Block #5"
|
||||
vanilla_dome_4_coin_block_6 = "Vanilla Dome 4 - Coin Block #6"
|
||||
vanilla_dome_4_coin_block_7 = "Vanilla Dome 4 - Coin Block #7"
|
||||
vanilla_dome_4_coin_block_8 = "Vanilla Dome 4 - Coin Block #8"
|
||||
vanilla_dome_1_flying_block_1 = "Vanilla Dome 1 - Flying Question Block #1"
|
||||
vanilla_dome_1_powerup_block_1 = "Vanilla Dome 1 - Powerup Block #1"
|
||||
vanilla_dome_1_powerup_block_2 = "Vanilla Dome 1 - Powerup Block #2"
|
||||
vanilla_dome_1_coin_block_1 = "Vanilla Dome 1 - Coin Block #1"
|
||||
vanilla_dome_1_life_block_1 = "Vanilla Dome 1 - 1-Up Mushroom Block #1"
|
||||
vanilla_dome_1_powerup_block_3 = "Vanilla Dome 1 - Powerup Block #3"
|
||||
vanilla_dome_1_vine_block_1 = "Vanilla Dome 1 - Vine Block #1"
|
||||
vanilla_dome_1_star_block_1 = "Vanilla Dome 1 - Star Block #1"
|
||||
vanilla_dome_1_powerup_block_4 = "Vanilla Dome 1 - Powerup Block #4"
|
||||
vanilla_dome_1_coin_block_2 = "Vanilla Dome 1 - Coin Block #2"
|
||||
vanilla_dome_castle_life_block_1 = "#3 Lemmy's Castle - 1-Up Mushroom Block #1"
|
||||
vanilla_dome_castle_life_block_2 = "#3 Lemmy's Castle - 1-Up Mushroom Block #2"
|
||||
vanilla_dome_castle_powerup_block_1 = "#3 Lemmy's Castle - Powerup Block #1"
|
||||
vanilla_dome_castle_life_block_3 = "#3 Lemmy's Castle - 1-Up Mushroom Block #3"
|
||||
vanilla_dome_castle_green_block_1 = "#3 Lemmy's Castle - Green Switch Palace Block #1"
|
||||
forest_ghost_house_coin_block_1 = "Forest Ghost House - Coin Block #1"
|
||||
forest_ghost_house_powerup_block_1 = "Forest Ghost House - Powerup Block #1"
|
||||
forest_ghost_house_flying_block_1 = "Forest Ghost House - Flying Question Block #1"
|
||||
forest_ghost_house_powerup_block_2 = "Forest Ghost House - Powerup Block #2"
|
||||
forest_ghost_house_life_block_1 = "Forest Ghost House - 1-Up Mushroom Block #1"
|
||||
forest_of_illusion_1_powerup_block_1 = "Forest of Illusion 1 - Powerup Block #1"
|
||||
forest_of_illusion_1_yoshi_block_1 = "Forest of Illusion 1 - Yoshi Block #1"
|
||||
forest_of_illusion_1_powerup_block_2 = "Forest of Illusion 1 - Powerup Block #2"
|
||||
forest_of_illusion_1_key_block_1 = "Forest of Illusion 1 - Key Block #1"
|
||||
forest_of_illusion_1_life_block_1 = "Forest of Illusion 1 - 1-Up Mushroom Block #1"
|
||||
forest_of_illusion_4_multi_coin_block_1 = "Forest of Illusion 4 - Multi Coin Block #1"
|
||||
forest_of_illusion_4_coin_block_1 = "Forest of Illusion 4 - Coin Block #1"
|
||||
forest_of_illusion_4_coin_block_2 = "Forest of Illusion 4 - Coin Block #2"
|
||||
forest_of_illusion_4_coin_block_3 = "Forest of Illusion 4 - Coin Block #3"
|
||||
forest_of_illusion_4_coin_block_4 = "Forest of Illusion 4 - Coin Block #4"
|
||||
forest_of_illusion_4_powerup_block_1 = "Forest of Illusion 4 - Powerup Block #1"
|
||||
forest_of_illusion_4_coin_block_5 = "Forest of Illusion 4 - Coin Block #5"
|
||||
forest_of_illusion_4_coin_block_6 = "Forest of Illusion 4 - Coin Block #6"
|
||||
forest_of_illusion_4_coin_block_7 = "Forest of Illusion 4 - Coin Block #7"
|
||||
forest_of_illusion_4_powerup_block_2 = "Forest of Illusion 4 - Powerup Block #2"
|
||||
forest_of_illusion_4_coin_block_8 = "Forest of Illusion 4 - Coin Block #8"
|
||||
forest_of_illusion_4_coin_block_9 = "Forest of Illusion 4 - Coin Block #9"
|
||||
forest_of_illusion_4_coin_block_10 = "Forest of Illusion 4 - Coin Block #10"
|
||||
forest_of_illusion_2_green_block_1 = "Forest of Illusion 2 - Green Switch Palace Block #1"
|
||||
forest_of_illusion_2_powerup_block_1 = "Forest of Illusion 2 - Powerup Block #1"
|
||||
forest_of_illusion_2_invis_coin_block_1 = "Forest of Illusion 2 - Invisible Coin Block #1"
|
||||
forest_of_illusion_2_invis_coin_block_2 = "Forest of Illusion 2 - Invisible Coin Block #2"
|
||||
forest_of_illusion_2_invis_life_block_1 = "Forest of Illusion 2 - Invisible 1-Up Mushroom Block #1"
|
||||
forest_of_illusion_2_invis_coin_block_3 = "Forest of Illusion 2 - Invisible Coin Block #3"
|
||||
forest_of_illusion_2_yellow_block_1 = "Forest of Illusion 2 - Yellow Switch Palace Block #1"
|
||||
forest_secret_powerup_block_1 = "Forest Secret Area - Powerup Block #1"
|
||||
forest_secret_powerup_block_2 = "Forest Secret Area - Powerup Block #2"
|
||||
forest_secret_life_block_1 = "Forest Secret Area - 1-Up Mushroom Block #1"
|
||||
forest_of_illusion_3_yoshi_block_1 = "Forest of Illusion 3 - Yoshi Block #1"
|
||||
forest_of_illusion_3_coin_block_1 = "Forest of Illusion 3 - Coin Block #1"
|
||||
forest_of_illusion_3_multi_coin_block_1 = "Forest of Illusion 3 - Multi Coin Block #1"
|
||||
forest_of_illusion_3_coin_block_2 = "Forest of Illusion 3 - Coin Block #2"
|
||||
forest_of_illusion_3_multi_coin_block_2 = "Forest of Illusion 3 - Multi Coin Block #2"
|
||||
forest_of_illusion_3_coin_block_3 = "Forest of Illusion 3 - Coin Block #3"
|
||||
forest_of_illusion_3_coin_block_4 = "Forest of Illusion 3 - Coin Block #4"
|
||||
forest_of_illusion_3_coin_block_5 = "Forest of Illusion 3 - Coin Block #5"
|
||||
forest_of_illusion_3_coin_block_6 = "Forest of Illusion 3 - Coin Block #6"
|
||||
forest_of_illusion_3_coin_block_7 = "Forest of Illusion 3 - Coin Block #7"
|
||||
forest_of_illusion_3_coin_block_8 = "Forest of Illusion 3 - Coin Block #8"
|
||||
forest_of_illusion_3_coin_block_9 = "Forest of Illusion 3 - Coin Block #9"
|
||||
forest_of_illusion_3_coin_block_10 = "Forest of Illusion 3 - Coin Block #10"
|
||||
forest_of_illusion_3_coin_block_11 = "Forest of Illusion 3 - Coin Block #11"
|
||||
forest_of_illusion_3_coin_block_12 = "Forest of Illusion 3 - Coin Block #12"
|
||||
forest_of_illusion_3_coin_block_13 = "Forest of Illusion 3 - Coin Block #13"
|
||||
forest_of_illusion_3_coin_block_14 = "Forest of Illusion 3 - Coin Block #14"
|
||||
forest_of_illusion_3_coin_block_15 = "Forest of Illusion 3 - Coin Block #15"
|
||||
forest_of_illusion_3_coin_block_16 = "Forest of Illusion 3 - Coin Block #16"
|
||||
forest_of_illusion_3_coin_block_17 = "Forest of Illusion 3 - Coin Block #17"
|
||||
forest_of_illusion_3_coin_block_18 = "Forest of Illusion 3 - Coin Block #18"
|
||||
forest_of_illusion_3_coin_block_19 = "Forest of Illusion 3 - Coin Block #19"
|
||||
forest_of_illusion_3_coin_block_20 = "Forest of Illusion 3 - Coin Block #20"
|
||||
forest_of_illusion_3_coin_block_21 = "Forest of Illusion 3 - Coin Block #21"
|
||||
forest_of_illusion_3_coin_block_22 = "Forest of Illusion 3 - Coin Block #22"
|
||||
forest_of_illusion_3_coin_block_23 = "Forest of Illusion 3 - Coin Block #23"
|
||||
forest_of_illusion_3_coin_block_24 = "Forest of Illusion 3 - Coin Block #24"
|
||||
special_zone_8_yoshi_block_1 = "Funky - Yoshi Block #1"
|
||||
special_zone_8_coin_block_1 = "Funky - Coin Block #1"
|
||||
special_zone_8_coin_block_2 = "Funky - Coin Block #2"
|
||||
special_zone_8_coin_block_3 = "Funky - Coin Block #3"
|
||||
special_zone_8_coin_block_4 = "Funky - Coin Block #4"
|
||||
special_zone_8_coin_block_5 = "Funky - Coin Block #5"
|
||||
special_zone_8_blue_pow_block_1 = "Funky - Blue P-Switch Block #1"
|
||||
special_zone_8_powerup_block_1 = "Funky - Powerup Block #1"
|
||||
special_zone_8_star_block_1 = "Funky - Star Block #1"
|
||||
special_zone_8_coin_block_6 = "Funky - Coin Block #6"
|
||||
special_zone_8_coin_block_7 = "Funky - Coin Block #7"
|
||||
special_zone_8_coin_block_8 = "Funky - Coin Block #8"
|
||||
special_zone_8_coin_block_9 = "Funky - Coin Block #9"
|
||||
special_zone_8_coin_block_10 = "Funky - Coin Block #10"
|
||||
special_zone_8_coin_block_11 = "Funky - Coin Block #11"
|
||||
special_zone_8_coin_block_12 = "Funky - Coin Block #12"
|
||||
special_zone_8_coin_block_13 = "Funky - Coin Block #13"
|
||||
special_zone_8_coin_block_14 = "Funky - Coin Block #14"
|
||||
special_zone_8_coin_block_15 = "Funky - Coin Block #15"
|
||||
special_zone_8_coin_block_16 = "Funky - Coin Block #16"
|
||||
special_zone_8_coin_block_17 = "Funky - Coin Block #17"
|
||||
special_zone_8_coin_block_18 = "Funky - Coin Block #18"
|
||||
special_zone_8_multi_coin_block_1 = "Funky - Multi Coin Block #1"
|
||||
special_zone_8_coin_block_19 = "Funky - Coin Block #19"
|
||||
special_zone_8_coin_block_20 = "Funky - Coin Block #20"
|
||||
special_zone_8_coin_block_21 = "Funky - Coin Block #21"
|
||||
special_zone_8_coin_block_22 = "Funky - Coin Block #22"
|
||||
special_zone_8_coin_block_23 = "Funky - Coin Block #23"
|
||||
special_zone_8_powerup_block_2 = "Funky - Powerup Block #2"
|
||||
special_zone_8_flying_block_1 = "Funky - Flying Question Block #1"
|
||||
special_zone_7_powerup_block_1 = "Outrageous - Powerup Block #1"
|
||||
special_zone_7_yoshi_block_1 = "Outrageous - Yoshi Block #1"
|
||||
special_zone_7_coin_block_1 = "Outrageous - Coin Block #1"
|
||||
special_zone_7_powerup_block_2 = "Outrageous - Powerup Block #2"
|
||||
special_zone_7_coin_block_2 = "Outrageous - Coin Block #2"
|
||||
special_zone_6_powerup_block_1 = "Mondo - Powerup Block #1"
|
||||
special_zone_6_coin_block_1 = "Mondo - Coin Block #1"
|
||||
special_zone_6_coin_block_2 = "Mondo - Coin Block #2"
|
||||
special_zone_6_yoshi_block_1 = "Mondo - Yoshi Block #1"
|
||||
special_zone_6_life_block_1 = "Mondo - 1-Up Mushroom Block #1"
|
||||
special_zone_6_multi_coin_block_1 = "Mondo - Multi Coin Block #1"
|
||||
special_zone_6_coin_block_3 = "Mondo - Coin Block #3"
|
||||
special_zone_6_coin_block_4 = "Mondo - Coin Block #4"
|
||||
special_zone_6_coin_block_5 = "Mondo - Coin Block #5"
|
||||
special_zone_6_coin_block_6 = "Mondo - Coin Block #6"
|
||||
special_zone_6_coin_block_7 = "Mondo - Coin Block #7"
|
||||
special_zone_6_coin_block_8 = "Mondo - Coin Block #8"
|
||||
special_zone_6_coin_block_9 = "Mondo - Coin Block #9"
|
||||
special_zone_6_coin_block_10 = "Mondo - Coin Block #10"
|
||||
special_zone_6_coin_block_11 = "Mondo - Coin Block #11"
|
||||
special_zone_6_coin_block_12 = "Mondo - Coin Block #12"
|
||||
special_zone_6_coin_block_13 = "Mondo - Coin Block #13"
|
||||
special_zone_6_coin_block_14 = "Mondo - Coin Block #14"
|
||||
special_zone_6_coin_block_15 = "Mondo - Coin Block #15"
|
||||
special_zone_6_coin_block_16 = "Mondo - Coin Block #16"
|
||||
special_zone_6_coin_block_17 = "Mondo - Coin Block #17"
|
||||
special_zone_6_coin_block_18 = "Mondo - Coin Block #18"
|
||||
special_zone_6_coin_block_19 = "Mondo - Coin Block #19"
|
||||
special_zone_6_coin_block_20 = "Mondo - Coin Block #20"
|
||||
special_zone_6_coin_block_21 = "Mondo - Coin Block #21"
|
||||
special_zone_6_coin_block_22 = "Mondo - Coin Block #22"
|
||||
special_zone_6_coin_block_23 = "Mondo - Coin Block #23"
|
||||
special_zone_6_coin_block_24 = "Mondo - Coin Block #24"
|
||||
special_zone_6_coin_block_25 = "Mondo - Coin Block #25"
|
||||
special_zone_6_coin_block_26 = "Mondo - Coin Block #26"
|
||||
special_zone_6_coin_block_27 = "Mondo - Coin Block #27"
|
||||
special_zone_6_coin_block_28 = "Mondo - Coin Block #28"
|
||||
special_zone_6_powerup_block_2 = "Mondo - Powerup Block #2"
|
||||
special_zone_6_coin_block_29 = "Mondo - Coin Block #29"
|
||||
special_zone_6_coin_block_30 = "Mondo - Coin Block #30"
|
||||
special_zone_6_coin_block_31 = "Mondo - Coin Block #31"
|
||||
special_zone_6_coin_block_32 = "Mondo - Coin Block #32"
|
||||
special_zone_6_coin_block_33 = "Mondo - Coin Block #33"
|
||||
special_zone_5_yoshi_block_1 = "Groovy - Yoshi Block #1"
|
||||
special_zone_1_vine_block_1 = "Gnarly - Vine Block #1"
|
||||
special_zone_1_vine_block_2 = "Gnarly - Vine Block #2"
|
||||
special_zone_1_vine_block_3 = "Gnarly - Vine Block #3"
|
||||
special_zone_1_vine_block_4 = "Gnarly - Vine Block #4"
|
||||
special_zone_1_life_block_1 = "Gnarly - 1-Up Mushroom Block #1"
|
||||
special_zone_1_vine_block_5 = "Gnarly - Vine Block #5"
|
||||
special_zone_1_blue_pow_block_1 = "Gnarly - Blue P-Switch Block #1"
|
||||
special_zone_1_vine_block_6 = "Gnarly - Vine Block #6"
|
||||
special_zone_1_powerup_block_1 = "Gnarly - Powerup Block #1"
|
||||
special_zone_1_pswitch_coin_block_1 = "Gnarly - P-Switch Coin Block #1"
|
||||
special_zone_1_pswitch_coin_block_2 = "Gnarly - P-Switch Coin Block #2"
|
||||
special_zone_1_pswitch_coin_block_3 = "Gnarly - P-Switch Coin Block #3"
|
||||
special_zone_1_pswitch_coin_block_4 = "Gnarly - P-Switch Coin Block #4"
|
||||
special_zone_1_pswitch_coin_block_5 = "Gnarly - P-Switch Coin Block #5"
|
||||
special_zone_1_pswitch_coin_block_6 = "Gnarly - P-Switch Coin Block #6"
|
||||
special_zone_1_pswitch_coin_block_7 = "Gnarly - P-Switch Coin Block #7"
|
||||
special_zone_1_pswitch_coin_block_8 = "Gnarly - P-Switch Coin Block #8"
|
||||
special_zone_1_pswitch_coin_block_9 = "Gnarly - P-Switch Coin Block #9"
|
||||
special_zone_1_pswitch_coin_block_10 = "Gnarly - P-Switch Coin Block #10"
|
||||
special_zone_1_pswitch_coin_block_11 = "Gnarly - P-Switch Coin Block #11"
|
||||
special_zone_1_pswitch_coin_block_12 = "Gnarly - P-Switch Coin Block #12"
|
||||
special_zone_1_pswitch_coin_block_13 = "Gnarly - P-Switch Coin Block #13"
|
||||
special_zone_2_powerup_block_1 = "Tubular - Powerup Block #1"
|
||||
special_zone_2_coin_block_1 = "Tubular - Coin Block #1"
|
||||
special_zone_2_coin_block_2 = "Tubular - Coin Block #2"
|
||||
special_zone_2_powerup_block_2 = "Tubular - Powerup Block #2"
|
||||
special_zone_2_coin_block_3 = "Tubular - Coin Block #3"
|
||||
special_zone_2_coin_block_4 = "Tubular - Coin Block #4"
|
||||
special_zone_2_powerup_block_3 = "Tubular - Powerup Block #3"
|
||||
special_zone_2_multi_coin_block_1 = "Tubular - Multi Coin Block #1"
|
||||
special_zone_2_coin_block_5 = "Tubular - Coin Block #5"
|
||||
special_zone_2_coin_block_6 = "Tubular - Coin Block #6"
|
||||
special_zone_3_powerup_block_1 = "Way Cool - Powerup Block #1"
|
||||
special_zone_3_yoshi_block_1 = "Way Cool - Yoshi Block #1"
|
||||
special_zone_3_wings_block_1 = "Way Cool - Wings Block #1"
|
||||
special_zone_4_powerup_block_1 = "Awesome - Powerup Block #1"
|
||||
special_zone_4_star_block_1 = "Awesome - Star Block #1"
|
||||
star_road_2_star_block_1 = "Star Road 2 - Star Block #1"
|
||||
star_road_3_key_block_1 = "Star Road 3 - Key Block #1"
|
||||
star_road_4_powerup_block_1 = "Star Road 4 - Powerup Block #1"
|
||||
star_road_4_green_block_1 = "Star Road 4 - Green Switch Palace Block #1"
|
||||
star_road_4_green_block_2 = "Star Road 4 - Green Switch Palace Block #2"
|
||||
star_road_4_green_block_3 = "Star Road 4 - Green Switch Palace Block #3"
|
||||
star_road_4_green_block_4 = "Star Road 4 - Green Switch Palace Block #4"
|
||||
star_road_4_green_block_5 = "Star Road 4 - Green Switch Palace Block #5"
|
||||
star_road_4_green_block_6 = "Star Road 4 - Green Switch Palace Block #6"
|
||||
star_road_4_green_block_7 = "Star Road 4 - Green Switch Palace Block #7"
|
||||
star_road_4_key_block_1 = "Star Road 4 - Key Block #1"
|
||||
star_road_5_directional_coin_block_1 = "Star Road 5 - Directional Coin Block #1"
|
||||
star_road_5_life_block_1 = "Star Road 5 - 1-Up Mushroom Block #1"
|
||||
star_road_5_vine_block_1 = "Star Road 5 - Vine Block #1"
|
||||
star_road_5_yellow_block_1 = "Star Road 5 - Yellow Switch Palace Block #1"
|
||||
star_road_5_yellow_block_2 = "Star Road 5 - Yellow Switch Palace Block #2"
|
||||
star_road_5_yellow_block_3 = "Star Road 5 - Yellow Switch Palace Block #3"
|
||||
star_road_5_yellow_block_4 = "Star Road 5 - Yellow Switch Palace Block #4"
|
||||
star_road_5_yellow_block_5 = "Star Road 5 - Yellow Switch Palace Block #5"
|
||||
star_road_5_yellow_block_6 = "Star Road 5 - Yellow Switch Palace Block #6"
|
||||
star_road_5_yellow_block_7 = "Star Road 5 - Yellow Switch Palace Block #7"
|
||||
star_road_5_yellow_block_8 = "Star Road 5 - Yellow Switch Palace Block #8"
|
||||
star_road_5_yellow_block_9 = "Star Road 5 - Yellow Switch Palace Block #9"
|
||||
star_road_5_yellow_block_10 = "Star Road 5 - Yellow Switch Palace Block #10"
|
||||
star_road_5_yellow_block_11 = "Star Road 5 - Yellow Switch Palace Block #11"
|
||||
star_road_5_yellow_block_12 = "Star Road 5 - Yellow Switch Palace Block #12"
|
||||
star_road_5_yellow_block_13 = "Star Road 5 - Yellow Switch Palace Block #13"
|
||||
star_road_5_yellow_block_14 = "Star Road 5 - Yellow Switch Palace Block #14"
|
||||
star_road_5_yellow_block_15 = "Star Road 5 - Yellow Switch Palace Block #15"
|
||||
star_road_5_yellow_block_16 = "Star Road 5 - Yellow Switch Palace Block #16"
|
||||
star_road_5_yellow_block_17 = "Star Road 5 - Yellow Switch Palace Block #17"
|
||||
star_road_5_yellow_block_18 = "Star Road 5 - Yellow Switch Palace Block #18"
|
||||
star_road_5_yellow_block_19 = "Star Road 5 - Yellow Switch Palace Block #19"
|
||||
star_road_5_yellow_block_20 = "Star Road 5 - Yellow Switch Palace Block #20"
|
||||
star_road_5_green_block_1 = "Star Road 5 - Green Switch Palace Block #1"
|
||||
star_road_5_green_block_2 = "Star Road 5 - Green Switch Palace Block #2"
|
||||
star_road_5_green_block_3 = "Star Road 5 - Green Switch Palace Block #3"
|
||||
star_road_5_green_block_4 = "Star Road 5 - Green Switch Palace Block #4"
|
||||
star_road_5_green_block_5 = "Star Road 5 - Green Switch Palace Block #5"
|
||||
star_road_5_green_block_6 = "Star Road 5 - Green Switch Palace Block #6"
|
||||
star_road_5_green_block_7 = "Star Road 5 - Green Switch Palace Block #7"
|
||||
star_road_5_green_block_8 = "Star Road 5 - Green Switch Palace Block #8"
|
||||
star_road_5_green_block_9 = "Star Road 5 - Green Switch Palace Block #9"
|
||||
star_road_5_green_block_10 = "Star Road 5 - Green Switch Palace Block #10"
|
||||
star_road_5_green_block_11 = "Star Road 5 - Green Switch Palace Block #11"
|
||||
star_road_5_green_block_12 = "Star Road 5 - Green Switch Palace Block #12"
|
||||
star_road_5_green_block_13 = "Star Road 5 - Green Switch Palace Block #13"
|
||||
star_road_5_green_block_14 = "Star Road 5 - Green Switch Palace Block #14"
|
||||
star_road_5_green_block_15 = "Star Road 5 - Green Switch Palace Block #15"
|
||||
star_road_5_green_block_16 = "Star Road 5 - Green Switch Palace Block #16"
|
||||
star_road_5_green_block_17 = "Star Road 5 - Green Switch Palace Block #17"
|
||||
star_road_5_green_block_18 = "Star Road 5 - Green Switch Palace Block #18"
|
||||
star_road_5_green_block_19 = "Star Road 5 - Green Switch Palace Block #19"
|
||||
star_road_5_green_block_20 = "Star Road 5 - Green Switch Palace Block #20"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
from BaseClasses import MultiWorld
|
||||
from worlds.AutoWorld import World
|
||||
|
||||
import math
|
||||
|
||||
|
@ -63,21 +63,23 @@ def generate_text_box(input_string):
|
|||
return out_bytes
|
||||
|
||||
|
||||
def generate_goal_text(world: MultiWorld, player: int):
|
||||
def generate_goal_text(world: World):
|
||||
out_array = bytearray()
|
||||
if world.goal[player] == "yoshi_egg_hunt":
|
||||
required_yoshi_eggs = max(math.floor(
|
||||
world.number_of_yoshi_eggs[player].value * (world.percentage_of_yoshi_eggs[player].value / 100.0)), 1)
|
||||
if world.options.goal == "yoshi_egg_hunt":
|
||||
required_yoshi_eggs = world.required_egg_count
|
||||
actual_yoshi_eggs = world.actual_egg_count
|
||||
out_array += bytearray([0x9F, 0x9F])
|
||||
out_array += string_to_bytes(" You must acquire")
|
||||
out_array[-1] += 0x80
|
||||
out_array += string_to_bytes(f' {required_yoshi_eggs:02} Yoshi Eggs,')
|
||||
out_array += string_to_bytes(f' {required_yoshi_eggs:03} of {actual_yoshi_eggs:03}')
|
||||
out_array[-1] += 0x80
|
||||
out_array += string_to_bytes(f' Yoshi Eggs,')
|
||||
out_array[-1] += 0x80
|
||||
out_array += string_to_bytes("then return here.")
|
||||
out_array[-1] += 0x80
|
||||
out_array += bytearray([0x9F, 0x9F, 0x9F])
|
||||
out_array += bytearray([0x9F, 0x9F])
|
||||
else:
|
||||
bosses_required = world.bosses_required[player].value
|
||||
bosses_required = world.options.bosses_required.value
|
||||
out_array += bytearray([0x9F, 0x9F])
|
||||
out_array += string_to_bytes(" You must defeat")
|
||||
out_array[-1] += 0x80
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import typing
|
||||
from dataclasses import dataclass
|
||||
|
||||
from Options import Choice, Range, Option, Toggle, DeathLink, DefaultOnToggle, OptionList
|
||||
from Options import Choice, Range, Toggle, DeathLink, DefaultOnToggle, PerGameCommonOptions
|
||||
|
||||
|
||||
class Goal(Choice):
|
||||
|
@ -27,11 +27,13 @@ class BossesRequired(Range):
|
|||
|
||||
class NumberOfYoshiEggs(Range):
|
||||
"""
|
||||
How many Yoshi Eggs are in the pool for Yoshi Egg Hunt
|
||||
Maximum possible number of Yoshi Eggs that will be in the item pool
|
||||
If fewer available locations exist in the pool than this number, the number of available locations will be used instead.
|
||||
Required Percentage of Yoshi Eggs will be calculated based off of that number.
|
||||
"""
|
||||
display_name = "Total Number of Yoshi Eggs"
|
||||
display_name = "Max Number of Yoshi Eggs"
|
||||
range_start = 1
|
||||
range_end = 80
|
||||
range_end = 255
|
||||
default = 50
|
||||
|
||||
|
||||
|
@ -52,6 +54,40 @@ class DragonCoinChecks(Toggle):
|
|||
display_name = "Dragon Coin Checks"
|
||||
|
||||
|
||||
class MoonChecks(Toggle):
|
||||
"""
|
||||
Whether collecting a 3-Up Moon in a level will grant a check
|
||||
"""
|
||||
display_name = "3up Moon Checks"
|
||||
|
||||
|
||||
class Hidden1UpChecks(Toggle):
|
||||
"""
|
||||
Whether collecting a hidden 1-Up mushroom in a level will grant a check
|
||||
These checks are considered cryptic as there's no actual indicator that they're in their respective places
|
||||
Enable this option at your own risk
|
||||
"""
|
||||
display_name = "Hidden 1-Up Checks"
|
||||
|
||||
|
||||
class BonusBlockChecks(Toggle):
|
||||
"""
|
||||
Whether collecting a 1-Up mushroom from a Bonus Block in a level will grant a check
|
||||
"""
|
||||
display_name = "Bonus Block Checks"
|
||||
|
||||
|
||||
class Blocksanity(Toggle):
|
||||
"""
|
||||
Whether hitting a block with an item or coin inside will grant a check
|
||||
Note that some blocks are excluded due to how the option and the game works!
|
||||
Exclusion list:
|
||||
* Blocks in Top Secret Area & Front Door/Bowser Castle
|
||||
* Blocks that are unreachable unless you glitch your way in
|
||||
"""
|
||||
display_name = "Blocksanity"
|
||||
|
||||
|
||||
class BowserCastleDoors(Choice):
|
||||
"""
|
||||
How the doors of Bowser's Castle behave
|
||||
|
@ -127,16 +163,6 @@ class SwapDonutGhostHouseExits(Toggle):
|
|||
display_name = "Swap Donut GH Exits"
|
||||
|
||||
|
||||
class DisplaySentItemPopups(Choice):
|
||||
"""
|
||||
What messages to display in-game for items sent
|
||||
"""
|
||||
display_name = "Display Sent Item Popups"
|
||||
option_none = 0
|
||||
option_all = 1
|
||||
default = 1
|
||||
|
||||
|
||||
class DisplayReceivedItemPopups(Choice):
|
||||
"""
|
||||
What messages to display in-game for items received
|
||||
|
@ -145,7 +171,18 @@ class DisplayReceivedItemPopups(Choice):
|
|||
option_none = 0
|
||||
option_all = 1
|
||||
option_progression = 2
|
||||
default = 2
|
||||
option_progression_minus_yoshi_eggs = 3
|
||||
default = 3
|
||||
|
||||
|
||||
class JunkFillPercentage(Range):
|
||||
"""
|
||||
Replace a percentage of non-required Yoshi Eggs in the item pool with random junk items (only applicable on Yoshi Egg Hunt goal)
|
||||
"""
|
||||
display_name = "Junk Fill Percentage"
|
||||
range_start = 0
|
||||
range_end = 100
|
||||
default = 0
|
||||
|
||||
|
||||
class TrapFillPercentage(Range):
|
||||
|
@ -197,6 +234,20 @@ class TimerTrapWeight(BaseTrapWeight):
|
|||
display_name = "Timer Trap Weight"
|
||||
|
||||
|
||||
class ReverseTrapWeight(BaseTrapWeight):
|
||||
"""
|
||||
Likelihood of a receiving a trap which causes the controls to be reversed in the current level
|
||||
"""
|
||||
display_name = "Reverse Trap Weight"
|
||||
|
||||
|
||||
class ThwimpTrapWeight(BaseTrapWeight):
|
||||
"""
|
||||
Likelihood of a receiving a trap which causes a Thwimp to spawn above the player
|
||||
"""
|
||||
display_name = "Thwimp Trap Weight"
|
||||
|
||||
|
||||
class Autosave(DefaultOnToggle):
|
||||
"""
|
||||
Whether a save prompt will appear after every level
|
||||
|
@ -239,6 +290,21 @@ class MusicShuffle(Choice):
|
|||
default = 0
|
||||
|
||||
|
||||
class SFXShuffle(Choice):
|
||||
"""
|
||||
Shuffles almost every instance of sound effect playback
|
||||
Archipelago elements that play sound effects aren't randomized
|
||||
None: No SFX are shuffled
|
||||
Full: Each individual SFX call has a random SFX
|
||||
Singularity: The entire game uses one SFX for every SFX call
|
||||
"""
|
||||
display_name = "Sound Effect Shuffle"
|
||||
option_none = 0
|
||||
option_full = 1
|
||||
option_singularity = 2
|
||||
default = 0
|
||||
|
||||
|
||||
class MarioPalette(Choice):
|
||||
"""
|
||||
Mario palette color
|
||||
|
@ -255,25 +321,32 @@ class MarioPalette(Choice):
|
|||
default = 0
|
||||
|
||||
|
||||
class ForegroundPaletteShuffle(Toggle):
|
||||
class LevelPaletteShuffle(Choice):
|
||||
"""
|
||||
Whether to shuffle level foreground palettes
|
||||
Whether to shuffle level palettes
|
||||
Off: Do not shuffle palettes
|
||||
On Legacy: Uses only the palette sets from the original game
|
||||
On Curated: Uses custom, hand-crafted palette sets
|
||||
"""
|
||||
display_name = "Foreground Palette Shuffle"
|
||||
display_name = "Level Palette Shuffle"
|
||||
option_off = 0
|
||||
option_on_legacy = 1
|
||||
option_on_curated = 2
|
||||
default = 0
|
||||
|
||||
|
||||
class BackgroundPaletteShuffle(Toggle):
|
||||
"""
|
||||
Whether to shuffle level background palettes
|
||||
"""
|
||||
display_name = "Background Palette Shuffle"
|
||||
|
||||
|
||||
class OverworldPaletteShuffle(Toggle):
|
||||
class OverworldPaletteShuffle(Choice):
|
||||
"""
|
||||
Whether to shuffle overworld palettes
|
||||
Off: Do not shuffle palettes
|
||||
On Legacy: Uses only the palette sets from the original game
|
||||
On Curated: Uses custom, hand-crafted palette sets
|
||||
"""
|
||||
display_name = "Overworld Palette Shuffle"
|
||||
option_off = 0
|
||||
option_on_legacy = 1
|
||||
option_on_curated = 2
|
||||
default = 0
|
||||
|
||||
|
||||
class StartingLifeCount(Range):
|
||||
|
@ -286,34 +359,39 @@ class StartingLifeCount(Range):
|
|||
default = 5
|
||||
|
||||
|
||||
|
||||
smw_options: typing.Dict[str, type(Option)] = {
|
||||
"death_link": DeathLink,
|
||||
"goal": Goal,
|
||||
"bosses_required": BossesRequired,
|
||||
"number_of_yoshi_eggs": NumberOfYoshiEggs,
|
||||
"percentage_of_yoshi_eggs": PercentageOfYoshiEggs,
|
||||
"dragon_coin_checks": DragonCoinChecks,
|
||||
"bowser_castle_doors": BowserCastleDoors,
|
||||
"bowser_castle_rooms": BowserCastleRooms,
|
||||
"level_shuffle": LevelShuffle,
|
||||
"exclude_special_zone": ExcludeSpecialZone,
|
||||
"boss_shuffle": BossShuffle,
|
||||
"swap_donut_gh_exits": SwapDonutGhostHouseExits,
|
||||
#"display_sent_item_popups": DisplaySentItemPopups,
|
||||
"display_received_item_popups": DisplayReceivedItemPopups,
|
||||
"trap_fill_percentage": TrapFillPercentage,
|
||||
"ice_trap_weight": IceTrapWeight,
|
||||
"stun_trap_weight": StunTrapWeight,
|
||||
"literature_trap_weight": LiteratureTrapWeight,
|
||||
"timer_trap_weight": TimerTrapWeight,
|
||||
"autosave": Autosave,
|
||||
"early_climb": EarlyClimb,
|
||||
"overworld_speed": OverworldSpeed,
|
||||
"music_shuffle": MusicShuffle,
|
||||
"mario_palette": MarioPalette,
|
||||
"foreground_palette_shuffle": ForegroundPaletteShuffle,
|
||||
"background_palette_shuffle": BackgroundPaletteShuffle,
|
||||
"overworld_palette_shuffle": OverworldPaletteShuffle,
|
||||
"starting_life_count": StartingLifeCount,
|
||||
}
|
||||
@dataclass
|
||||
class SMWOptions(PerGameCommonOptions):
|
||||
death_link: DeathLink
|
||||
goal: Goal
|
||||
bosses_required: BossesRequired
|
||||
max_yoshi_egg_cap: NumberOfYoshiEggs
|
||||
percentage_of_yoshi_eggs: PercentageOfYoshiEggs
|
||||
dragon_coin_checks: DragonCoinChecks
|
||||
moon_checks: MoonChecks
|
||||
hidden_1up_checks: Hidden1UpChecks
|
||||
bonus_block_checks: BonusBlockChecks
|
||||
blocksanity: Blocksanity
|
||||
bowser_castle_doors: BowserCastleDoors
|
||||
bowser_castle_rooms: BowserCastleRooms
|
||||
level_shuffle: LevelShuffle
|
||||
exclude_special_zone: ExcludeSpecialZone
|
||||
boss_shuffle: BossShuffle
|
||||
swap_donut_gh_exits: SwapDonutGhostHouseExits
|
||||
display_received_item_popups: DisplayReceivedItemPopups
|
||||
junk_fill_percentage: JunkFillPercentage
|
||||
trap_fill_percentage: TrapFillPercentage
|
||||
ice_trap_weight: IceTrapWeight
|
||||
stun_trap_weight: StunTrapWeight
|
||||
literature_trap_weight: LiteratureTrapWeight
|
||||
timer_trap_weight: TimerTrapWeight
|
||||
reverse_trap_weight: ReverseTrapWeight
|
||||
thwimp_trap_weight: ThwimpTrapWeight
|
||||
autosave: Autosave
|
||||
early_climb: EarlyClimb
|
||||
overworld_speed: OverworldSpeed
|
||||
music_shuffle: MusicShuffle
|
||||
sfx_shuffle: SFXShuffle
|
||||
mario_palette: MarioPalette
|
||||
level_palette_shuffle: LevelPaletteShuffle
|
||||
overworld_palette_shuffle: OverworldPaletteShuffle
|
||||
starting_life_count: StartingLifeCount
|
||||
|
|
File diff suppressed because it is too large
Load Diff
2401
worlds/smw/Rom.py
2401
worlds/smw/Rom.py
File diff suppressed because it is too large
Load Diff
|
@ -2,19 +2,18 @@ import math
|
|||
|
||||
from BaseClasses import MultiWorld
|
||||
from .Names import LocationName, ItemName
|
||||
from worlds.AutoWorld import LogicMixin
|
||||
from worlds.AutoWorld import World
|
||||
from worlds.generic.Rules import add_rule, set_rule
|
||||
|
||||
|
||||
def set_rules(world: MultiWorld, player: int):
|
||||
def set_rules(world: World):
|
||||
|
||||
if world.goal[player] == "yoshi_egg_hunt":
|
||||
required_yoshi_eggs = max(math.floor(
|
||||
world.number_of_yoshi_eggs[player].value * (world.percentage_of_yoshi_eggs[player].value / 100.0)), 1)
|
||||
if world.options.goal == "yoshi_egg_hunt":
|
||||
required_yoshi_eggs = world.required_egg_count
|
||||
|
||||
add_rule(world.get_location(LocationName.yoshis_house, player),
|
||||
lambda state: state.has(ItemName.yoshi_egg, player, required_yoshi_eggs))
|
||||
add_rule(world.multiworld.get_location(LocationName.yoshis_house, world.player),
|
||||
lambda state: state.has(ItemName.yoshi_egg, world.player, required_yoshi_eggs))
|
||||
else:
|
||||
add_rule(world.get_location(LocationName.bowser, player), lambda state: state.has(ItemName.mario_carry, player))
|
||||
add_rule(world.multiworld.get_location(LocationName.bowser, world.player), lambda state: state.has(ItemName.mario_carry, world.player))
|
||||
|
||||
world.completion_condition[player] = lambda state: state.has(ItemName.victory, player)
|
||||
world.multiworld.completion_condition[world.player] = lambda state: state.has(ItemName.victory, world.player)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import dataclasses
|
||||
import os
|
||||
import typing
|
||||
import math
|
||||
|
@ -5,9 +6,9 @@ import settings
|
|||
import threading
|
||||
|
||||
from BaseClasses import Item, MultiWorld, Tutorial, ItemClassification
|
||||
from .Items import SMWItem, ItemData, item_table
|
||||
from .Locations import SMWLocation, all_locations, setup_locations, special_zone_level_names, special_zone_dragon_coin_names
|
||||
from .Options import smw_options
|
||||
from .Items import SMWItem, ItemData, item_table, junk_table
|
||||
from .Locations import SMWLocation, all_locations, setup_locations, special_zone_level_names, special_zone_dragon_coin_names, special_zone_hidden_1up_names, special_zone_blocksanity_names
|
||||
from .Options import SMWOptions
|
||||
from .Regions import create_regions, connect_regions
|
||||
from .Levels import full_level_list, generate_level_list, location_id_to_level_id
|
||||
from .Rules import set_rules
|
||||
|
@ -50,11 +51,14 @@ class SMWWorld(World):
|
|||
lost all of his abilities. Can he get them back in time to save the Princess?
|
||||
"""
|
||||
game: str = "Super Mario World"
|
||||
option_definitions = smw_options
|
||||
|
||||
settings: typing.ClassVar[SMWSettings]
|
||||
|
||||
options_dataclass = SMWOptions
|
||||
options: SMWOptions
|
||||
|
||||
topology_present = False
|
||||
data_version = 3
|
||||
required_client_version = (0, 3, 5)
|
||||
required_client_version = (0, 4, 4)
|
||||
|
||||
item_name_to_id = {name: data.code for name, data in item_table.items()}
|
||||
location_name_to_id = all_locations
|
||||
|
@ -62,9 +66,9 @@ class SMWWorld(World):
|
|||
active_level_dict: typing.Dict[int,int]
|
||||
web = SMWWeb()
|
||||
|
||||
def __init__(self, world: MultiWorld, player: int):
|
||||
def __init__(self, multiworld: MultiWorld, player: int):
|
||||
self.rom_name_available_event = threading.Event()
|
||||
super().__init__(world, player)
|
||||
super().__init__(multiworld, player)
|
||||
|
||||
@classmethod
|
||||
def stage_assert_generate(cls, multiworld: MultiWorld):
|
||||
|
@ -72,37 +76,34 @@ class SMWWorld(World):
|
|||
if not os.path.exists(rom_file):
|
||||
raise FileNotFoundError(rom_file)
|
||||
|
||||
def _get_slot_data(self):
|
||||
return {
|
||||
#"death_link": self.multiworld.death_link[self.player].value,
|
||||
"active_levels": self.active_level_dict,
|
||||
}
|
||||
|
||||
def fill_slot_data(self) -> dict:
|
||||
slot_data = self._get_slot_data()
|
||||
for option_name in smw_options:
|
||||
option = getattr(self.multiworld, option_name)[self.player]
|
||||
slot_data[option_name] = option.value
|
||||
slot_data = self.options.as_dict(
|
||||
"dragon_coin_checks",
|
||||
"moon_checks",
|
||||
"hidden_1up_checks",
|
||||
"bonus_block_checks",
|
||||
"blocksanity",
|
||||
)
|
||||
slot_data["active_levels"] = self.active_level_dict
|
||||
|
||||
return slot_data
|
||||
|
||||
def generate_early(self):
|
||||
if self.multiworld.early_climb[self.player]:
|
||||
if self.options.early_climb:
|
||||
self.multiworld.local_early_items[self.player][ItemName.mario_climb] = 1
|
||||
|
||||
|
||||
def create_regions(self):
|
||||
location_table = setup_locations(self.multiworld, self.player)
|
||||
create_regions(self.multiworld, self.player, location_table)
|
||||
location_table = setup_locations(self)
|
||||
create_regions(self, location_table)
|
||||
|
||||
# Not generate basic
|
||||
itempool: typing.List[SMWItem] = []
|
||||
|
||||
self.active_level_dict = dict(zip(generate_level_list(self.multiworld, self.player), full_level_list))
|
||||
self.topology_present = self.multiworld.level_shuffle[self.player]
|
||||
self.active_level_dict = dict(zip(generate_level_list(self), full_level_list))
|
||||
self.topology_present = self.options.level_shuffle
|
||||
|
||||
connect_regions(self, self.active_level_dict)
|
||||
|
||||
connect_regions(self.multiworld, self.player, self.active_level_dict)
|
||||
|
||||
# Add Boss Token amount requirements for Worlds
|
||||
add_rule(self.multiworld.get_region(LocationName.donut_plains_1_tile, self.player).entrances[0], lambda state: state.has(ItemName.koopaling, self.player, 1))
|
||||
add_rule(self.multiworld.get_region(LocationName.vanilla_dome_1_tile, self.player).entrances[0], lambda state: state.has(ItemName.koopaling, self.player, 2))
|
||||
|
@ -110,18 +111,29 @@ class SMWWorld(World):
|
|||
add_rule(self.multiworld.get_region(LocationName.chocolate_island_1_tile, self.player).entrances[0], lambda state: state.has(ItemName.koopaling, self.player, 5))
|
||||
add_rule(self.multiworld.get_region(LocationName.valley_of_bowser_1_tile, self.player).entrances[0], lambda state: state.has(ItemName.koopaling, self.player, 6))
|
||||
|
||||
if self.multiworld.exclude_special_zone[self.player]:
|
||||
exclusion_pool = set()
|
||||
if self.multiworld.dragon_coin_checks[self.player]:
|
||||
exclusion_pool.update(special_zone_level_names)
|
||||
exclusion_pool = set()
|
||||
if self.options.exclude_special_zone:
|
||||
exclusion_pool.update(special_zone_level_names)
|
||||
if self.options.dragon_coin_checks:
|
||||
exclusion_pool.update(special_zone_dragon_coin_names)
|
||||
elif self.multiworld.number_of_yoshi_eggs[self.player].value <= 72:
|
||||
exclusion_pool.update(special_zone_level_names)
|
||||
if self.options.hidden_1up_checks:
|
||||
exclusion_pool.update(special_zone_hidden_1up_names)
|
||||
if self.options.blocksanity:
|
||||
exclusion_pool.update(special_zone_blocksanity_names)
|
||||
|
||||
exclusion_rules(self.multiworld, self.player, exclusion_pool)
|
||||
|
||||
total_required_locations = 96
|
||||
if self.multiworld.dragon_coin_checks[self.player]:
|
||||
if self.options.dragon_coin_checks:
|
||||
total_required_locations += 49
|
||||
if self.options.moon_checks:
|
||||
total_required_locations += 7
|
||||
if self.options.hidden_1up_checks:
|
||||
total_required_locations += 14
|
||||
if self.options.bonus_block_checks:
|
||||
total_required_locations += 4
|
||||
if self.options.blocksanity:
|
||||
total_required_locations += 582
|
||||
|
||||
itempool += [self.create_item(ItemName.mario_run)]
|
||||
itempool += [self.create_item(ItemName.mario_carry)]
|
||||
|
@ -137,31 +149,53 @@ class SMWWorld(World):
|
|||
itempool += [self.create_item(ItemName.green_switch_palace)]
|
||||
itempool += [self.create_item(ItemName.red_switch_palace)]
|
||||
itempool += [self.create_item(ItemName.blue_switch_palace)]
|
||||
itempool += [self.create_item(ItemName.special_world_clear)]
|
||||
|
||||
if self.multiworld.goal[self.player] == "yoshi_egg_hunt":
|
||||
itempool += [self.create_item(ItemName.yoshi_egg)
|
||||
for _ in range(self.multiworld.number_of_yoshi_eggs[self.player])]
|
||||
if self.options.goal == "yoshi_egg_hunt":
|
||||
raw_egg_count = total_required_locations - len(itempool) - len(exclusion_pool)
|
||||
total_egg_count = min(raw_egg_count, self.options.max_yoshi_egg_cap.value)
|
||||
self.required_egg_count = max(math.floor(total_egg_count * (self.options.percentage_of_yoshi_eggs.value / 100.0)), 1)
|
||||
extra_egg_count = total_egg_count - self.required_egg_count
|
||||
removed_egg_count = math.floor(extra_egg_count * (self.options.junk_fill_percentage.value / 100.0))
|
||||
self.actual_egg_count = total_egg_count - removed_egg_count
|
||||
|
||||
itempool += [self.create_item(ItemName.yoshi_egg) for _ in range(self.actual_egg_count)]
|
||||
|
||||
self.multiworld.get_location(LocationName.yoshis_house, self.player).place_locked_item(self.create_item(ItemName.victory))
|
||||
else:
|
||||
self.actual_egg_count = 0
|
||||
self.required_egg_count = 0
|
||||
|
||||
self.multiworld.get_location(LocationName.bowser, self.player).place_locked_item(self.create_item(ItemName.victory))
|
||||
|
||||
junk_count = total_required_locations - len(itempool)
|
||||
trap_weights = []
|
||||
trap_weights += ([ItemName.ice_trap] * self.multiworld.ice_trap_weight[self.player].value)
|
||||
trap_weights += ([ItemName.stun_trap] * self.multiworld.stun_trap_weight[self.player].value)
|
||||
trap_weights += ([ItemName.literature_trap] * self.multiworld.literature_trap_weight[self.player].value)
|
||||
trap_weights += ([ItemName.timer_trap] * self.multiworld.timer_trap_weight[self.player].value)
|
||||
trap_count = 0 if (len(trap_weights) == 0) else math.ceil(junk_count * (self.multiworld.trap_fill_percentage[self.player].value / 100.0))
|
||||
trap_weights += ([ItemName.ice_trap] * self.options.ice_trap_weight.value)
|
||||
trap_weights += ([ItemName.stun_trap] * self.options.stun_trap_weight.value)
|
||||
trap_weights += ([ItemName.literature_trap] * self.options.literature_trap_weight.value)
|
||||
trap_weights += ([ItemName.timer_trap] * self.options.timer_trap_weight.value)
|
||||
trap_weights += ([ItemName.reverse_controls_trap] * self.options.reverse_trap_weight.value)
|
||||
trap_weights += ([ItemName.thwimp_trap] * self.options.thwimp_trap_weight.value)
|
||||
trap_count = 0 if (len(trap_weights) == 0) else math.ceil(junk_count * (self.options.trap_fill_percentage.value / 100.0))
|
||||
junk_count -= trap_count
|
||||
|
||||
trap_pool = []
|
||||
for i in range(trap_count):
|
||||
trap_item = self.multiworld.random.choice(trap_weights)
|
||||
trap_item = self.random.choice(trap_weights)
|
||||
trap_pool.append(self.create_item(trap_item))
|
||||
|
||||
itempool += trap_pool
|
||||
|
||||
itempool += [self.create_item(ItemName.one_up_mushroom) for _ in range(junk_count)]
|
||||
junk_weights = []
|
||||
junk_weights += ([ItemName.one_coin] * 15)
|
||||
junk_weights += ([ItemName.five_coins] * 15)
|
||||
junk_weights += ([ItemName.ten_coins] * 25)
|
||||
junk_weights += ([ItemName.fifty_coins] * 25)
|
||||
junk_weights += ([ItemName.one_up_mushroom] * 20)
|
||||
|
||||
junk_pool = [self.create_item(self.random.choice(junk_weights)) for _ in range(junk_count)]
|
||||
|
||||
itempool += junk_pool
|
||||
|
||||
boss_location_names = [LocationName.yoshis_island_koopaling, LocationName.donut_plains_koopaling, LocationName.vanilla_dome_koopaling,
|
||||
LocationName.twin_bridges_koopaling, LocationName.forest_koopaling, LocationName.chocolate_koopaling,
|
||||
|
@ -176,18 +210,18 @@ class SMWWorld(World):
|
|||
def generate_output(self, output_directory: str):
|
||||
rompath = "" # if variable is not declared finally clause may fail
|
||||
try:
|
||||
world = self.multiworld
|
||||
multiworld = self.multiworld
|
||||
player = self.player
|
||||
|
||||
rom = LocalRom(get_base_rom_path())
|
||||
patch_rom(self.multiworld, rom, self.player, self.active_level_dict)
|
||||
patch_rom(self, rom, self.player, self.active_level_dict)
|
||||
|
||||
rompath = os.path.join(output_directory, f"{self.multiworld.get_out_file_name_base(self.player)}.sfc")
|
||||
rom.write_to_file(rompath)
|
||||
self.rom_name = rom.name
|
||||
|
||||
patch = SMWDeltaPatch(os.path.splitext(rompath)[0]+SMWDeltaPatch.patch_file_ending, player=player,
|
||||
player_name=world.player_name[player], patched_path=rompath)
|
||||
player_name=multiworld.player_name[player], patched_path=rompath)
|
||||
patch.write()
|
||||
except:
|
||||
raise
|
||||
|
@ -243,7 +277,15 @@ class SMWWorld(World):
|
|||
if level_index >= world_cutoffs[i]:
|
||||
continue
|
||||
|
||||
if self.multiworld.dragon_coin_checks[self.player].value == 0 and "Dragon Coins" in loc_name:
|
||||
if not self.options.dragon_coin_checks and "Dragon Coins" in loc_name:
|
||||
continue
|
||||
if not self.options.moon_checks and "3-Up Moon" in loc_name:
|
||||
continue
|
||||
if not self.options.hidden_1up_checks and "Hidden 1-Up" in loc_name:
|
||||
continue
|
||||
if not self.options.bonus_block_checks and "1-Up from Bonus Block" in loc_name:
|
||||
continue
|
||||
if not self.options.blocksanity and "Block #" in loc_name:
|
||||
continue
|
||||
|
||||
location = self.multiworld.get_location(loc_name, self.player)
|
||||
|
@ -271,7 +313,7 @@ class SMWWorld(World):
|
|||
return created_item
|
||||
|
||||
def get_filler_item_name(self) -> str:
|
||||
return ItemName.one_up_mushroom
|
||||
return self.random.choice(list(junk_table.keys()))
|
||||
|
||||
def set_rules(self):
|
||||
set_rules(self.multiworld, self.player)
|
||||
set_rules(self)
|
||||
|
|
|
@ -0,0 +1,747 @@
|
|||
{
|
||||
"000_bonus": [],
|
||||
"001_vanilla_secret_2": [
|
||||
["yoshi", "0170", "0130", []],
|
||||
["green", "02F0", "0170", ["greenswitch carry", "greenswitch cape"]],
|
||||
["power", "0660", "0110", []],
|
||||
["power", "0B70", "0100", []],
|
||||
["multi", "0DC0", "0120", []],
|
||||
["gray", "0E70", "0120", []],
|
||||
["single", "1180", "0130", []],
|
||||
["single", "1190", "0130", []],
|
||||
["single", "11A0", "0130", []],
|
||||
["single", "11B0", "0130", []],
|
||||
["single", "11C0", "0130", []],
|
||||
["single", "11D0", "0130", []]
|
||||
],
|
||||
"002_vanilla_secret_3": [
|
||||
["power", "0270", "00D0", ["swim"]],
|
||||
["power", "06E0", "00E0", ["swim"]]
|
||||
],
|
||||
"003_top_secret_area": [],
|
||||
"004_donut_ghost_house": [
|
||||
["vine", "0120", "0120", []],
|
||||
["dir", "0070", "0140", ["pswitch"]],
|
||||
["life", "0610", "0140", ["run cape"]],
|
||||
["life", "0640", "0140", ["run cape"]],
|
||||
["life", "0670", "0140", ["run cape"]],
|
||||
["life", "06A0", "0140", ["run cape"]]
|
||||
],
|
||||
"005_donut_plains_3": [
|
||||
["green", "01B0", "00E0", ["greenswitch"]],
|
||||
["single", "0450", "00F0", []],
|
||||
["single", "0480", "00F0", []],
|
||||
["vine", "04E0", "0130", ["mushroom spin"]],
|
||||
["power", "0BD0", "0140", []],
|
||||
["bonus", "1250", "00F0", []]
|
||||
],
|
||||
"006_donut_plains_4": [
|
||||
["single", "0660", "0130", []],
|
||||
["power", "0670", "0130", []],
|
||||
["single", "0680", "0130", []],
|
||||
["yoshi", "0AF0", "0150", []]
|
||||
],
|
||||
"007_donut_plains_castle": [
|
||||
["yellow", "01E0", "00C0", ["yellowswitch"]],
|
||||
["single", "00A0", "0680", []],
|
||||
["power", "00B0", "0680", []],
|
||||
["single", "00C0", "0680", []],
|
||||
["vine", "0050", "0450", []],
|
||||
["inlife", "0030", "0320", ["climb"]],
|
||||
["single", "0050", "0250", []],
|
||||
["single", "0080", "0250", []],
|
||||
["single", "00B0", "0250", []],
|
||||
["green", "0090", "0060", ["greenswitch"]]
|
||||
],
|
||||
"008_green_switch_palace": [],
|
||||
"009_donut_plains_2": [
|
||||
["single", "00D0", "0120", []],
|
||||
["single", "00E0", "0120", []],
|
||||
["single", "00F0", "0120", []],
|
||||
["yellow", "0100", "0120", ["yellowswitch"]],
|
||||
["power", "0330", "00D0", []],
|
||||
["multi", "03C0", "00C0", []],
|
||||
["fly", "0820", "00E0", []],
|
||||
["green", "0560", "00E0", ["greenswitch"]],
|
||||
["yellow", "0050", "0140", ["yellowswitch"]],
|
||||
["vine", "02B0", "00E0", ["carry spin mushroom", "yoshi"]]
|
||||
],
|
||||
"00A_donut_secret_1": [
|
||||
["single", "02C0", "0130", ["swim"]],
|
||||
["single", "02D0", "0130", ["swim"]],
|
||||
["power", "02E0", "0130", ["swim"]],
|
||||
["single", "02F0", "0130", ["swim"]],
|
||||
["power", "00E0", "0480", ["swim"]],
|
||||
["power", "0060", "0250", ["swim balloon"]],
|
||||
["life", "0110", "0070", ["swim balloon"]],
|
||||
["power", "01A0", "0250", ["swim balloon"]],
|
||||
["power", "0570", "0150", ["swim"]],
|
||||
["key", "0940", "0150", ["swim carry pswitch"]]
|
||||
],
|
||||
"00B_vanilla_fortress": [
|
||||
["power", "04E0", "0130", ["swim"]],
|
||||
["power", "0220", "0130", ["swim"]],
|
||||
["yellow", "0780", "0110", ["yellowswitch swim"]]
|
||||
],
|
||||
"00C_butter_bridge_1": [
|
||||
["power", "08A0", "0110", []],
|
||||
["multi", "08B0", "00D0", []],
|
||||
["multi", "0860", "0090", []],
|
||||
["multi", "08E0", "0050", []],
|
||||
["life", "0840", "0050", []],
|
||||
["bonus", "0BD0", "0130", []]
|
||||
],
|
||||
"00D_butter_bridge_2": [
|
||||
["power", "0310", "0100", ["carry"]],
|
||||
["green", "0AC0", "0120", ["greenswitch"]],
|
||||
["yoshi", "0C70", "0110", ["carry"]]
|
||||
],
|
||||
"00E_twin_bridges_castle": [
|
||||
["power", "01B0", "0370", ["climb"]]
|
||||
],
|
||||
"00F_cheese_bridge": [
|
||||
["power", "00C0", "0140", []],
|
||||
["power", "0560", "00E0", []],
|
||||
["wings", "0A10", "0140", []],
|
||||
["power", "0B60", "0150", []]
|
||||
],
|
||||
"010_cookie_mountain": [
|
||||
["single", "01C0", "0130", []],
|
||||
["single", "01D0", "0130", []],
|
||||
["single", "01E0", "0130", []],
|
||||
["single", "01F0", "0130", []],
|
||||
["single", "0200", "0130", []],
|
||||
["single", "0210", "0130", []],
|
||||
["single", "0220", "0130", []],
|
||||
["single", "0230", "0130", []],
|
||||
["single", "0240", "0130", []],
|
||||
["power", "0200", "00F0", []],
|
||||
["life", "0A40", "0070", ["climb", "swim"]],
|
||||
["vine", "0B20", "0140", []],
|
||||
["yoshi", "0C40", "0140", ["redswitch"]],
|
||||
["single", "11C0", "0140", []],
|
||||
["single", "11D0", "0140", []],
|
||||
["power", "11E0", "0140", []],
|
||||
["single", "11F0", "0140", []],
|
||||
["single", "1200", "0140", []],
|
||||
["single", "1210", "0140", []],
|
||||
["single", "1220", "0140", []],
|
||||
["single", "1230", "0140", []],
|
||||
["single", "1240", "0140", []],
|
||||
["single", "1250", "0140", []],
|
||||
["single", "11B0", "0100", []],
|
||||
["single", "11C0", "0100", []],
|
||||
["single", "11D0", "0100", []],
|
||||
["single", "11E0", "0100", []],
|
||||
["single", "11F0", "0100", []],
|
||||
["single", "1200", "0100", []],
|
||||
["single", "1210", "0100", []],
|
||||
["single", "1220", "0100", []],
|
||||
["single", "1230", "0100", []],
|
||||
["single", "1240", "0100", []],
|
||||
["single", "1250", "0100", []],
|
||||
["single", "1360", "0140", []]
|
||||
],
|
||||
"011_soda_lake": [
|
||||
["power", "0200", "0110", ["swim"]]
|
||||
],
|
||||
"012_test": [],
|
||||
"013_donut_secret_house": [
|
||||
["power", "0480", "0140", []],
|
||||
["multi", "0310", "0140", []],
|
||||
["life", "04A0", "0140", ["pswitch"]],
|
||||
["vine", "01E0", "0110", ["pswitch"]],
|
||||
["dir", "0180", "0130", ["pswitch"]]
|
||||
],
|
||||
"014_yellow_switch_palace": [],
|
||||
"015_donut_plains_1": [
|
||||
["single", "0710", "0140", []],
|
||||
["single", "0720", "0140", []],
|
||||
["yoshi", "0D20", "00F0", []],
|
||||
["vine", "0DB0", "0130", []],
|
||||
["green", "11A0", "0070", ["greenswitch cape"]],
|
||||
["green", "11A0", "0080", ["greenswitch cape"]],
|
||||
["green", "11A0", "0090", ["greenswitch cape"]],
|
||||
["green", "11A0", "00A0", ["greenswitch cape"]],
|
||||
["green", "11A0", "00B0", ["greenswitch cape"]],
|
||||
["green", "11A0", "00C0", ["greenswitch cape"]],
|
||||
["green", "11A0", "00D0", ["greenswitch cape"]],
|
||||
["green", "11A0", "00E0", ["greenswitch cape"]],
|
||||
["green", "11A0", "00F0", ["greenswitch cape"]],
|
||||
["green", "11A0", "0100", ["greenswitch cape"]],
|
||||
["green", "11A0", "0110", ["greenswitch cape"]],
|
||||
["green", "11A0", "0120", ["greenswitch cape"]],
|
||||
["green", "11A0", "0130", ["greenswitch cape"]],
|
||||
["green", "11A0", "0140", ["greenswitch cape"]],
|
||||
["green", "11A0", "0150", ["greenswitch cape"]],
|
||||
["green", "11A0", "0160", ["greenswitch cape"]],
|
||||
["yellow", "1240", "0120", ["yellowswitch"]],
|
||||
["yellow", "1280", "0140", ["yellowswitch"]],
|
||||
["yellow", "1290", "0140", ["yellowswitch"]]
|
||||
],
|
||||
"016_test": [],
|
||||
"017_test": [],
|
||||
"018_sunken_ghost_ship": [
|
||||
["power", "0110", "0070", ["swim"]],
|
||||
["star", "0100", "0C80", ["swim"]]
|
||||
],
|
||||
"019_test": [],
|
||||
"01A_chocolate_castle": [
|
||||
["yellow", "09C0", "0110", ["yellowswitch"]],
|
||||
["yellow", "0150", "0110", ["yellowswitch"]],
|
||||
["green", "0750", "0140", ["greenswitch"]]
|
||||
],
|
||||
"01B_chocolate_fortress": [
|
||||
["power", "0380", "0140", []],
|
||||
["power", "0360", "0150", []],
|
||||
["single", "0370", "0150", []],
|
||||
["single", "0380", "0150", []],
|
||||
["green", "0AC0", "0130", ["greenswitch"]]
|
||||
],
|
||||
"01C_chocolate_island_5": [
|
||||
["yoshi", "0170", "0130", []],
|
||||
["power", "0180", "0150", []],
|
||||
["life", "0340", "0170", ["carry", "cape"]],
|
||||
["yellow", "0560", "0140", ["yellowswitch pswitch"]]
|
||||
],
|
||||
"01D_chocolate_island_4": [
|
||||
["yellow", "0700", "0140", ["yellowswitch blueswitch"]],
|
||||
["pow", "0920", "00A0", []],
|
||||
["power", "0B50", "0040", []]
|
||||
],
|
||||
"01E_test": [],
|
||||
"01F_forest_fortress": [
|
||||
["yellow", "02B0", "00E0", ["yellowswitch"]],
|
||||
["power", "0750", "00D0", []],
|
||||
["life", "0ED0", "0140", ["run cape"]],
|
||||
["life", "0F10", "0140", ["run cape"]],
|
||||
["life", "0F10", "0100", ["run cape"]],
|
||||
["life", "0F40", "0130", ["run cape"]],
|
||||
["life", "0F70", "0140", ["run cape"]],
|
||||
["life", "0F70", "00F0", ["run cape"]],
|
||||
["life", "0FA0", "0130", ["run cape"]],
|
||||
["life", "0FD0", "0140", ["run cape"]],
|
||||
["life", "0FD0", "0100", ["run cape"]]
|
||||
],
|
||||
"020_forest_castle": [
|
||||
["green", "0CC0", "0120", ["greenswitch"]]
|
||||
],
|
||||
"021_chocolate_ghost_house": [
|
||||
["power", "0910", "0140", []],
|
||||
["power", "0110", "0140", []],
|
||||
["life", "05D0", "0140", []]
|
||||
],
|
||||
"022_chocolate_island_1": [
|
||||
["fly", "0490", "0120", ["pswitch"]],
|
||||
["fly", "0CD0", "0100", ["pswitch"]],
|
||||
["yoshi", "0E10", "0110", ["pswitch"]],
|
||||
["green", "0F00", "0140", ["greenswitch blueswitch", "greenswitch cape", "yellowswitch blueswitch", "yellowswitch cape"]],
|
||||
["life", "0070", "0120", ["pswitch"]]
|
||||
],
|
||||
"023_chocolate_island_3": [
|
||||
["power", "0530", "0140", []],
|
||||
["power", "0A20", "0140", []],
|
||||
["power", "0F50", "00F0", []],
|
||||
["green", "1080", "00F0", ["greenswitch"]],
|
||||
["bonus", "11D0", "0140", []],
|
||||
["vine", "1220", "0140", []],
|
||||
["life", "1640", "0140", ["run cape"]],
|
||||
["life", "1670", "0140", ["run cape"]],
|
||||
["life", "16A0", "0140", ["run cape"]]
|
||||
],
|
||||
"024_chocolate_island_2": [
|
||||
["multi", "00E0", "00A0", []],
|
||||
["invis", "00F0", "00D0", []],
|
||||
["yoshi", "0280", "0040", []],
|
||||
["single", "0080", "0140", []],
|
||||
["single", "05C0", "0140", []],
|
||||
["multi" , "05F0", "0120", []],
|
||||
["power", "0620", "0100", []],
|
||||
["pow", "0040", "0140", []],
|
||||
["yellow", "0190", "0110", ["yellowswitch"]],
|
||||
["yellow", "01A0", "0110", ["yellowswitch"]],
|
||||
["green", "0240", "0110", ["greenswitch"]],
|
||||
["green", "0250", "0110", ["greenswitch"]],
|
||||
["green", "0260", "0110", ["greenswitch"]],
|
||||
["green", "0270", "0110", ["greenswitch"]],
|
||||
["green", "0280", "0110", ["greenswitch"]],
|
||||
["green", "0290", "0110", ["greenswitch"]]
|
||||
],
|
||||
"101_yoshis_island_castle": [
|
||||
["single", "0280", "00F0", ["climb"]],
|
||||
["single", "0290", "00F0", ["climb"]],
|
||||
["power", "02A0", "00F0", ["climb"]],
|
||||
["single", "02B0", "00F0", ["climb"]],
|
||||
["single", "02C0", "00F0", ["climb"]],
|
||||
["fly", "0250", "0150", ["climb"]]
|
||||
],
|
||||
"102_yoshis_island_4": [
|
||||
["yellow", "00D0", "00F0", ["yellowswitch"]],
|
||||
["power", "0160", "0140", []],
|
||||
["multi", "0290", "0140", []],
|
||||
["star", "04E0", "0120", []]
|
||||
],
|
||||
"103_yoshis_island_3": [
|
||||
["yellow", "0250", "00C0", ["yellowswitch"]],
|
||||
["yellow", "0290", "0140", ["yellowswitch"]],
|
||||
["yellow", "02F0", "00E0", ["yellowswitch carry", "yellowswitch yoshi", "yellowswitch run cape"]],
|
||||
["yellow", "0300", "00E0", ["yellowswitch carry", "yellowswitch yoshi", "yellowswitch run cape"]],
|
||||
["yellow", "0310", "00E0", ["yellowswitch carry", "yellowswitch yoshi", "yellowswitch run cape"]],
|
||||
["yellow", "0320", "00E0", ["yellowswitch carry", "yellowswitch yoshi", "yellowswitch run cape"]],
|
||||
["yellow", "0330", "00E0", ["yellowswitch carry", "yellowswitch yoshi", "yellowswitch run cape"]],
|
||||
["yellow", "0340", "00E0", ["yellowswitch carry", "yellowswitch yoshi", "yellowswitch run cape"]],
|
||||
["yellow", "0350", "00E0", ["yellowswitch carry", "yellowswitch yoshi", "yellowswitch run cape"]],
|
||||
["single", "04B0", "00A0", []],
|
||||
["yoshi", "04C0", "00A0", []],
|
||||
["single", "0AC0", "0140", []],
|
||||
["power", "0B00", "00C0", []],
|
||||
["yellow", "0CD0", "0120", ["yellowswitch"]],
|
||||
["yellow", "0CE0", "0120", ["yellowswitch"]],
|
||||
["yellow", "0DA0", "00F0", ["yellowswitch"]],
|
||||
["bonus", "10A0", "0080", []]
|
||||
],
|
||||
"104_yoshis_house": [],
|
||||
"105_yoshis_island_1": [
|
||||
["fly", "0250", "0140", []],
|
||||
["yellow", "09C0", "0140", ["yellowswitch"]],
|
||||
["life", "0D10", "00F0", []],
|
||||
["power", "0F30", "0110", []]
|
||||
],
|
||||
"106_yoshis_island_2": [
|
||||
["fly", "0080", "00F0", ["carry", "yoshi"]],
|
||||
["fly", "00C0", "00E0", ["carry", "yoshi"]],
|
||||
["fly", "0130", "00F0", ["carry", "yoshi"]],
|
||||
["fly", "0140", "00D0", ["carry", "yoshi"]],
|
||||
["fly", "0180", "0100", ["carry", "yoshi"]],
|
||||
["fly", "01C0", "00E0", ["carry", "yoshi"]],
|
||||
["single", "0260", "0140", []],
|
||||
["yellow", "0270", "0140", ["yellowswitch"]],
|
||||
["single", "0280", "0140", []],
|
||||
["single", "0350", "0150", []],
|
||||
["yoshi", "0360", "0150", []],
|
||||
["single", "0B20", "0150", []],
|
||||
["yoshi", "0B30", "0150", []],
|
||||
["single", "0B40", "0150", []],
|
||||
["vine", "0C80", "0100", []],
|
||||
["yellow", "0DF0", "0120", ["yellowswitch"]]
|
||||
],
|
||||
"107_vanilla_ghost_house": [
|
||||
["power", "0200", "0100", []],
|
||||
["vine", "0750", "0150", []],
|
||||
["power", "0860", "0140", []],
|
||||
["multi", "0A00", "0140", []],
|
||||
["pow", "05E0", "0120", []]
|
||||
],
|
||||
"108_test": [],
|
||||
"109_vanilla_secret_1": [
|
||||
["single", "0030", "0590", []],
|
||||
["power", "0040", "0590", []],
|
||||
["multi", "0110", "0490", []],
|
||||
["vine", "01B0", "0520", []],
|
||||
["vine", "0180", "0470", ["climb"]],
|
||||
["single", "0190", "0350", ["climb"]],
|
||||
["single", "01A0", "0350", ["climb"]],
|
||||
["power", "01B0", "0350", ["climb"]]
|
||||
],
|
||||
"10A_vanilla_dome_3": [
|
||||
["single", "01C0", "0140", []],
|
||||
["fly", "0200", "0160", []],
|
||||
["fly", "0230", "0120", []],
|
||||
["power", "02D0", "0110", []],
|
||||
["fly", "0480", "0150", []],
|
||||
["invis", "0800", "0130", []],
|
||||
["power", "0830", "0130", []],
|
||||
["multi", "0D90", "0120", []],
|
||||
["power", "03D0", "0130", []],
|
||||
["yoshi", "10A0", "0100", ["carry", "yoshi"]],
|
||||
["power", "1A60", "0140", []],
|
||||
["pswitch", "1E40", "0090", ["run cape pswitch"]],
|
||||
["pswitch", "1E50", "00A0", ["run cape pswitch"]],
|
||||
["pswitch", "1E60", "00B0", ["run cape pswitch"]],
|
||||
["pswitch", "1E70", "00C0", ["run cape pswitch"]],
|
||||
["pswitch", "1E80", "00D0", ["run cape pswitch"]],
|
||||
["pswitch", "1E90", "00E0", ["run cape pswitch"]]
|
||||
],
|
||||
"10B_donut_secret_2": [
|
||||
["dir", "00A0", "0170", []],
|
||||
["vine", "0220", "0100", []],
|
||||
["star", "0250", "0040", ["climb", "yoshi"]],
|
||||
["power", "0060", "0140", []],
|
||||
["star", "0B00", "0140", []]
|
||||
],
|
||||
"10C_test": [],
|
||||
"10D_front_door": [],
|
||||
"10E_back_door": [],
|
||||
"10F_valley_of_bowser_4": [
|
||||
["yellow", "0370", "0130", ["yellowswitch"]],
|
||||
["power", "0210", "0130", []],
|
||||
["vine", "05E0", "0110", []],
|
||||
["yoshi", "0610", "0040", ["climb"]],
|
||||
["life", "07A0", "00D0", ["mushroom spin climb"]],
|
||||
["power", "0B60", "0110", ["yellowswitch climb"]]
|
||||
],
|
||||
"110_valley_castle": [
|
||||
["yellow", "0290", "0030", ["yellowswitch"]],
|
||||
["yellow", "0330", "0110", ["yellowswitch"]],
|
||||
["green", "0980", "0140", ["greenswitch"]]
|
||||
],
|
||||
"111_valley_fortress": [
|
||||
["green", "0220", "0140", ["greenswitch"]],
|
||||
["yellow", "0940", "0100", ["yellowswitch"]]
|
||||
],
|
||||
"112_test": [],
|
||||
"113_valley_of_bowser_3": [
|
||||
["power", "0130", "0110", []],
|
||||
["power", "08A0", "00E0", []]
|
||||
],
|
||||
"114_valley_ghost_house": [
|
||||
["pswitch", "0160", "0100", ["pswitch"]],
|
||||
["multi", "0570", "0110", ["pswitch"]],
|
||||
["power", "00E0", "0100", []],
|
||||
["dir", "0270", "0140", ["pswitch"]]
|
||||
],
|
||||
"115_valley_of_bowser_2": [
|
||||
["power", "0330", "0130", []],
|
||||
["yellow", "0720", "0140", ["yellowswitch"]],
|
||||
["power", "0010", "00A0", []],
|
||||
["wings", "00D0", "0140", []]
|
||||
],
|
||||
"116_valley_of_bowser_1": [
|
||||
["green", "0810", "0140", ["greenswitch"]],
|
||||
["invis", "0D40", "0100", []],
|
||||
["invis", "0D50", "0100", []],
|
||||
["invis", "0D60", "0100", []],
|
||||
["yellow", "0D60", "0080", ["yellowswitch cape"]],
|
||||
["yellow", "0D60", "0090", ["yellowswitch cape"]],
|
||||
["yellow", "0D60", "00A0", ["yellowswitch cape"]],
|
||||
["yellow", "0D60", "00B0", ["yellowswitch cape"]],
|
||||
["vine", "0F20", "0120", []]
|
||||
],
|
||||
"117_chocolate_secret": [
|
||||
["power", "04A0", "0120", []],
|
||||
["power", "0960", "0140", []]
|
||||
],
|
||||
"118_vanilla_dome_2": [
|
||||
["single", "0240", "0100", ["swim"]],
|
||||
["power", "0250", "0100", ["swim"]],
|
||||
["single", "0260", "0100", ["swim"]],
|
||||
["single", "0270", "0100", ["swim"]],
|
||||
["vine", "03B0", "0100", ["swim"]],
|
||||
["inlife", "0720", "00F0", ["swim climb", "swim yoshi"]],
|
||||
["single", "0760", "00F0", ["swim climb", "swim yoshi"]],
|
||||
["single", "0770", "00F0", ["swim climb", "swim yoshi"]],
|
||||
["power", "0780", "00F0", ["swim climb", "swim yoshi"]],
|
||||
["power", "0880", "0100", ["swim climb", "swim yoshi"]],
|
||||
["power", "0730", "0040", ["swim climb", "swim yoshi"]],
|
||||
["power", "0D10", "0100", ["swim climb", "swim yoshi"]],
|
||||
["multi", "0290", "0130", ["swim climb", "swim yoshi"]],
|
||||
["multi", "1150", "0140", ["swim climb", "swim yoshi"]]
|
||||
],
|
||||
"119_vanilla_dome_4": [
|
||||
["power", "0690", "0100", []],
|
||||
["power", "0CB0", "0140", []],
|
||||
["single", "0E10", "0120", []],
|
||||
["single", "0E20", "0120", []],
|
||||
["single", "0E30", "0120", []],
|
||||
["life", "0E40", "0120", []],
|
||||
["single", "0E50", "0120", []],
|
||||
["single", "0E60", "0120", []],
|
||||
["single", "0E70", "0120", []],
|
||||
["single", "0E80", "0120", []],
|
||||
["single", "0E90", "0120", ["carry"]]
|
||||
],
|
||||
"11A_vanilla_dome_1": [
|
||||
["fly", "0250", "0110", []],
|
||||
["power", "0400", "0120", []],
|
||||
["power", "0450", "00E0", []],
|
||||
["single", "0460", "0120", []],
|
||||
["life", "04D0", "0120", []],
|
||||
["power", "0640", "0180", []],
|
||||
["vine", "0680", "00E0", ["carry", "redswitch"]],
|
||||
["star", "00F0", "00E0", []],
|
||||
["power", "13A0", "0140", ["run star", "run mushroom"]],
|
||||
["single", "17D0", "0150", ["run star", "run mushroom"]]
|
||||
],
|
||||
"11B_red_switch_palace": [],
|
||||
"11C_vanilla_dome_castle": [
|
||||
["life", "0110", "0100", ["carry", "mushroom"]],
|
||||
["life", "0210", "0100", ["carry", "mushroom"]],
|
||||
["power", "03A0", "0130", []],
|
||||
["life", "0170", "0140", ["pswitch"]],
|
||||
["green", "0B90", "0140", ["greenswitch"]]
|
||||
],
|
||||
"11D_forest_ghost_house": [
|
||||
["single", "0950", "0110", []],
|
||||
["power", "0990", "0110", []],
|
||||
["fly", "0190", "0150", []],
|
||||
["power", "0370", "0140", []],
|
||||
["life", "0640", "0160", []]
|
||||
],
|
||||
"11E_forest_of_illusion_1": [
|
||||
["power", "01A0", "0110", []],
|
||||
["yoshi", "0360", "0130", []],
|
||||
["power", "0FA0", "0150", []],
|
||||
["key", "0E00", "0160", ["pballoon"]],
|
||||
["life", "0610", "0130", []]
|
||||
],
|
||||
"11F_forest_of_illusion_4": [
|
||||
["multi", "0540", "0140", []],
|
||||
["single", "05E0", "0140", []],
|
||||
["single", "05F0", "0140", []],
|
||||
["single", "0600", "0140", []],
|
||||
["single", "0620", "0140", []],
|
||||
["power", "0630", "0140", []],
|
||||
["single", "0640", "0140", []],
|
||||
["single", "0E30", "0140", []],
|
||||
["single", "0E40", "0140", []],
|
||||
["power", "0E40", "0100", []],
|
||||
["single", "0EF0", "0140", []],
|
||||
["single", "0F00", "0140", []],
|
||||
["single", "0EF0", "0100", []]
|
||||
],
|
||||
"120_forest_of_illusion_2": [
|
||||
["green", "0070", "0130", ["greenswitch swim"]],
|
||||
["power", "0480", "0040", ["swim"]],
|
||||
["invis", "0600", "0120", ["swim"]],
|
||||
["invis", "0610", "0120", ["swim"]],
|
||||
["inlife", "0620", "0120", ["swim"]],
|
||||
["invis", "0630", "0120", ["swim"]],
|
||||
["yellow", "0950", "0160", ["yellowswitch swim"]]
|
||||
],
|
||||
"121_blue_switch_palace": [],
|
||||
"122_forest_secret": [
|
||||
["power", "0330", "00A0", []],
|
||||
["power", "0450", "0110", []],
|
||||
["life", "06A0", "00B0", ["blueswitch", "carry"]]
|
||||
],
|
||||
"123_forest_of_illusion_3": [
|
||||
["yoshi", "0350", "0150", []],
|
||||
["single", "04C0", "0150", []],
|
||||
["multi", "04D0", "0140", []],
|
||||
["single", "04F0", "0120", ["carry", "yoshi"]],
|
||||
["multi", "0D90", "0110", ["carry", "yoshi"]],
|
||||
["single", "0D80", "0150", ["carry", "yoshi"]],
|
||||
["single", "0D90", "0150", ["carry", "yoshi"]],
|
||||
["single", "0DA0", "0150", ["carry", "yoshi"]],
|
||||
["single", "0E40", "0140", ["carry", "yoshi"]],
|
||||
["single", "0E50", "0120", ["carry", "yoshi"]],
|
||||
["single", "0E70", "0150", ["carry", "yoshi"]],
|
||||
["single", "0E90", "0110", ["carry", "yoshi"]],
|
||||
["single", "0EB0", "0130", ["carry", "yoshi"]],
|
||||
["single", "0EE0", "0140", ["carry", "yoshi"]],
|
||||
["single", "0EF0", "0100", ["carry", "yoshi"]],
|
||||
["single", "0F10", "0120", ["carry", "yoshi"]],
|
||||
["single", "0F50", "0130", ["carry", "yoshi"]],
|
||||
["single", "0F70", "0150", ["carry", "yoshi"]],
|
||||
["single", "0F80", "0110", ["carry", "yoshi"]],
|
||||
["single", "0F90", "0130", ["carry", "yoshi"]],
|
||||
["single", "0FC0", "0150", ["carry", "yoshi"]],
|
||||
["single", "0FD0", "0120", ["carry", "yoshi"]],
|
||||
["single", "11A0", "0150", ["carry", "yoshi"]],
|
||||
["single", "11B0", "0120", ["carry", "yoshi"]],
|
||||
["single", "1230", "0150", ["carry", "yoshi"]],
|
||||
["single", "1240", "0140", ["carry", "yoshi"]],
|
||||
["single", "1250", "0130", ["carry", "yoshi"]]
|
||||
],
|
||||
"124_test": [],
|
||||
"125_special_zone_8": [
|
||||
["yoshi", "0390", "0100", ["carry", "yoshi"]],
|
||||
["single", "04A0", "0130", []],
|
||||
["single", "04B0", "0130", []],
|
||||
["single", "04C0", "0130", []],
|
||||
["single", "04D0", "0130", []],
|
||||
["single", "04E0", "0130", []],
|
||||
["pow", "0560", "0140", []],
|
||||
["power", "05D0", "0140", []],
|
||||
["star", "0750", "00F0", []],
|
||||
["single", "0670", "0140", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "0680", "0140", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "0690", "0140", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "06A0", "0140", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "06B0", "0140", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "06C0", "0140", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "06F0", "0140", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "0700", "0140", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "0710", "0140", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "0720", "0140", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "0730", "0140", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "0740", "0140", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "0750", "0140", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["multi", "0CA0", "0100", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "1100", "0120", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "1110", "0120", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "1120", "0120", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "1130", "0120", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["single", "1140", "0120", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["power", "13F0", "0140", ["mushroom spin", "cape", "carry", "yoshi"]],
|
||||
["fly", "1570", "00F0", ["mushroom spin", "cape", "carry", "yoshi"]]
|
||||
],
|
||||
"126_special_zone_7": [
|
||||
["power", "0350", "0150", ["mushroom"]],
|
||||
["yoshi", "0C80", "0140", ["mushroom"]],
|
||||
["single", "0F90", "0140", ["mushroom"]],
|
||||
["power", "0FA0", "0140", ["mushroom"]],
|
||||
["single", "0FB0", "0140", ["mushroom"]]
|
||||
],
|
||||
"127_special_zone_6": [
|
||||
["power", "0370", "00F0", ["swim"]],
|
||||
["single", "0610", "0140", ["swim"]],
|
||||
["single", "0630", "0120", ["swim"]],
|
||||
["yoshi", "0650", "0100", ["swim"]],
|
||||
["life", "07D0", "0140", ["swim"]],
|
||||
["multi", "0950", "0140", ["swim"]],
|
||||
["single", "0D80", "0140", ["swim"]],
|
||||
["single", "0D90", "0140", ["swim"]],
|
||||
["single", "0DA0", "0140", ["swim"]],
|
||||
["single", "0DB0", "0140", ["swim"]],
|
||||
["single", "0DC0", "0140", ["swim"]],
|
||||
["single", "0DD0", "0140", ["swim"]],
|
||||
["single", "0DE0", "0140", ["swim"]],
|
||||
["single", "0DF0", "0140", ["swim"]],
|
||||
["single", "0E00", "0140", ["swim"]],
|
||||
["single", "0E10", "0140", ["swim"]],
|
||||
["single", "0E20", "0140", ["swim"]],
|
||||
["single", "0E30", "0140", ["swim"]],
|
||||
["single", "0E40", "0140", ["swim"]],
|
||||
["single", "0E50", "0140", ["swim"]],
|
||||
["single", "0E60", "0140", ["swim"]],
|
||||
["single", "0E70", "0140", ["swim"]],
|
||||
["single", "0D80", "0100", ["swim"]],
|
||||
["single", "0D90", "0100", ["swim"]],
|
||||
["single", "0DA0", "0100", ["swim"]],
|
||||
["single", "0DB0", "0100", ["swim"]],
|
||||
["single", "0DC0", "0100", ["swim"]],
|
||||
["single", "0DD0", "0100", ["swim"]],
|
||||
["single", "0DE0", "0100", ["swim"]],
|
||||
["single", "0DF0", "0100", ["swim"]],
|
||||
["single", "0E00", "0100", ["swim"]],
|
||||
["single", "0E10", "0100", ["swim"]],
|
||||
["power", "0E20", "0100", ["swim"]],
|
||||
["single", "0E30", "0100", ["swim"]],
|
||||
["single", "0E40", "0100", ["swim"]],
|
||||
["single", "0E50", "0100", ["swim"]],
|
||||
["single", "0E60", "0100", ["swim"]],
|
||||
["single", "0E70", "0100", ["swim"]]
|
||||
],
|
||||
"128_special_zone_5": [
|
||||
["yoshi", "01D0", "0160", ["mushroom"]]
|
||||
],
|
||||
"129_test": [],
|
||||
"12A_special_zone_1": [
|
||||
["vine", "0020", "03C0", []],
|
||||
["vine", "0050", "03C0", []],
|
||||
["vine", "0080", "03C0", []],
|
||||
["vine", "00B0", "03C0", []],
|
||||
["life", "0110", "0340", ["climb"]],
|
||||
["vine", "0120", "0280", ["climb"]],
|
||||
["pow", "0080", "01F0", ["climb"]],
|
||||
["vine", "00B0", "01F0", ["climb"]],
|
||||
["power", "00F0", "00D0", ["climb"]],
|
||||
["pswitch", "0190", "00C0", ["climb pswitch cape"]],
|
||||
["pswitch", "01C0", "0130", ["climb pswitch cape"]],
|
||||
["pswitch", "0180", "01A0", ["climb pswitch cape"]],
|
||||
["pswitch", "01D0", "01A0", ["climb pswitch cape"]],
|
||||
["pswitch", "01C0", "0270", ["climb pswitch cape"]],
|
||||
["pswitch", "01A0", "02C0", ["climb pswitch cape"]],
|
||||
["pswitch", "0190", "0310", ["climb pswitch cape"]],
|
||||
["pswitch", "01B0", "0370", ["climb pswitch cape"]],
|
||||
["pswitch", "0180", "03D0", ["climb pswitch cape"]],
|
||||
["pswitch", "0200", "0120", ["climb pswitch cape", "climb pswitch carry"]],
|
||||
["pswitch", "0210", "0130", ["climb pswitch cape", "climb pswitch carry"]],
|
||||
["pswitch", "0220", "0140", ["climb pswitch cape", "climb pswitch carry"]],
|
||||
["pswitch", "0230", "0150", ["climb pswitch cape", "climb pswitch carry"]]
|
||||
],
|
||||
"12B_special_zone_2": [
|
||||
["power", "02E0", "0120", []],
|
||||
["single", "0380", "0110", ["pballoon"]],
|
||||
["single", "0450", "0140", ["pballoon"]],
|
||||
["power", "04A0", "00F0", ["pballoon"]],
|
||||
["single", "05C0", "0150", ["pballoon"]],
|
||||
["single", "05C0", "00F0", ["pballoon"]],
|
||||
["power", "0760", "0140", ["pballoon"]],
|
||||
["multi", "07E0", "00E0", ["pballoon"]],
|
||||
["single", "0850", "0100", ["pballoon"]],
|
||||
["single", "0920", "0140", ["pballoon"]]
|
||||
],
|
||||
"12C_special_zone_3": [
|
||||
["power", "03F0", "0110", []],
|
||||
["yoshi", "0080", "0140", []],
|
||||
["wings", "0A50", "0140", []]
|
||||
],
|
||||
"12D_special_zone_4": [
|
||||
["power", "0490", "0140", ["flower"]],
|
||||
["star", "0AF0", "00F0", ["flower carry", "flower pswitch"]]
|
||||
],
|
||||
"12E_test": [],
|
||||
"12F_test": [],
|
||||
"130_star_road_2": [
|
||||
["star", "0460", "0130", ["swim"]]
|
||||
],
|
||||
"131_test": [],
|
||||
"132_star_road_3": [
|
||||
["key", "0080", "0030", ["carry"]]
|
||||
],
|
||||
"133_test": [],
|
||||
"134_star_road_1": [],
|
||||
"135_star_road_4": [
|
||||
["power", "0540", "0090", []],
|
||||
["green", "0C00", "0140", ["greenswitch yoshi carry"]],
|
||||
["green", "0C10", "0140", ["greenswitch yoshi carry"]],
|
||||
["green", "0C20", "0140", ["greenswitch yoshi carry"]],
|
||||
["green", "0C30", "0140", ["greenswitch yoshi carry"]],
|
||||
["green", "0C40", "0140", ["greenswitch yoshi carry"]],
|
||||
["green", "0C50", "0140", ["greenswitch yoshi carry"]],
|
||||
["green", "0C60", "0140", ["greenswitch yoshi carry"]],
|
||||
["key", "0D40", "0160", ["carry yoshi", "greenswitch redswitch carry"]]
|
||||
],
|
||||
"136_star_road_5": [
|
||||
["dir", "0510", "0140", []],
|
||||
["life", "07D0", "0150", ["pswitch"]],
|
||||
["vine", "08E0", "0100", ["pswitch"]],
|
||||
["yellow", "08F0", "0050", ["yellowswitch pswitch climb carry", "yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "0900", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "0910", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "0920", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "0930", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "0940", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "0950", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "0960", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "0970", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "0980", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "0990", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "09A0", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "09B0", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "09C0", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "09D0", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "09E0", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "09F0", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "0A00", "0050", ["yellowswitch specialworld yoshi carry"]],
|
||||
["yellow", "0A10", "0050", ["yellowswitch greenswitch yoshi carry", "yellowswitch greenswitch pswitch climb carry cape"]],
|
||||
["yellow", "0A10", "0060", ["yellowswitch greenswitch yoshi carry", "yellowswitch greenswitch pswitch climb carry cape"]],
|
||||
["green", "0A20", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0A30", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0A40", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0A50", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0A60", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0A70", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0A80", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0A90", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0AA0", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0AB0", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0AC0", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0AD0", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0AE0", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0AF0", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0B00", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0B10", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0B20", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0B30", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0B40", "0080", ["greenswitch specialworld yoshi carry"]],
|
||||
["green", "0B50", "0080", ["greenswitch specialworld yoshi carry"]]
|
||||
],
|
||||
"137_test": [],
|
||||
"138_test": [],
|
||||
"139_test": [],
|
||||
"13A_test": [],
|
||||
"13B_test": []
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue