mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-23 06:35:33 -07:00
rooftop guy refactored + rando generation working
This commit is contained in:
parent
ccc2058e61
commit
f60df39a68
7 changed files with 1100 additions and 1131 deletions
|
@ -65,7 +65,7 @@ typedef struct {
|
||||||
typedef struct {
|
typedef struct {
|
||||||
RandomizerCheck check;
|
RandomizerCheck check;
|
||||||
RandomizerGet get;
|
RandomizerGet get;
|
||||||
} ItemLocation;
|
} ItemLocationRando;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* 0x0000 */ s32 entranceIndex; // start of `save` substruct, originally called "memory"
|
/* 0x0000 */ s32 entranceIndex; // start of `save` substruct, originally called "memory"
|
||||||
|
@ -180,7 +180,7 @@ typedef struct {
|
||||||
/* 0x1420 */ s16 worldMapArea;
|
/* 0x1420 */ s16 worldMapArea;
|
||||||
/* 0x1422 */ s16 sunsSongState; // controls the effects of suns song
|
/* 0x1422 */ s16 sunsSongState; // controls the effects of suns song
|
||||||
/* 0x1424 */ s16 healthAccumulator;
|
/* 0x1424 */ s16 healthAccumulator;
|
||||||
ItemLocation itemLocations[700];
|
ItemLocationRando itemLocations[499];
|
||||||
Sprite seedIcons[5];
|
Sprite seedIcons[5];
|
||||||
} SaveContext; // size = 0x1428
|
} SaveContext; // size = 0x1428
|
||||||
|
|
||||||
|
|
|
@ -54,9 +54,11 @@ typedef enum {
|
||||||
RC_LW_OCARINA_MEMORY_GAME,
|
RC_LW_OCARINA_MEMORY_GAME,
|
||||||
RC_LW_TARGET_IN_WOODS,
|
RC_LW_TARGET_IN_WOODS,
|
||||||
RC_LW_NEAR_SHORTCUTS_GROTTO_CHEST,
|
RC_LW_NEAR_SHORTCUTS_GROTTO_CHEST,
|
||||||
|
RC_LW_TRADE_COJIRO,
|
||||||
RC_DEKU_THEATER_SKULL_MASK,
|
RC_DEKU_THEATER_SKULL_MASK,
|
||||||
RC_DEKU_THEATER_MASK_OF_TRUTH,
|
RC_DEKU_THEATER_MASK_OF_TRUTH,
|
||||||
RC_LW_SKULL_KID,
|
RC_LW_SKULL_KID,
|
||||||
|
RC_LW_TRADE_ODD_POULTICE,
|
||||||
RC_LW_DEKU_SCRUB_NEAR_BRIDGE,
|
RC_LW_DEKU_SCRUB_NEAR_BRIDGE,
|
||||||
RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT,
|
RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_LEFT,
|
||||||
RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT,
|
RC_LW_DEKU_SCRUB_NEAR_DEKU_THEATER_RIGHT,
|
||||||
|
@ -85,6 +87,11 @@ typedef enum {
|
||||||
RC_MARKET_LOST_DOG,
|
RC_MARKET_LOST_DOG,
|
||||||
RC_MARKET_TREASURE_CHEST_GAME_REWARD,
|
RC_MARKET_TREASURE_CHEST_GAME_REWARD,
|
||||||
RC_MARKET_10_BIG_POES,
|
RC_MARKET_10_BIG_POES,
|
||||||
|
RC_MARKET_TREASURE_CHEST_GAME_ITEM_1,
|
||||||
|
RC_MARKET_TREASURE_CHEST_GAME_ITEM_2,
|
||||||
|
RC_MARKET_TREASURE_CHEST_GAME_ITEM_3,
|
||||||
|
RC_MARKET_TREASURE_CHEST_GAME_ITEM_4,
|
||||||
|
RC_MARKET_TREASURE_CHEST_GAME_ITEM_5,
|
||||||
RC_MARKET_GS_GUARD_HOUSE,
|
RC_MARKET_GS_GUARD_HOUSE,
|
||||||
RC_MARKET_BAZAAR_ITEM_1,
|
RC_MARKET_BAZAAR_ITEM_1,
|
||||||
RC_MARKET_BAZAAR_ITEM_2,
|
RC_MARKET_BAZAAR_ITEM_2,
|
||||||
|
@ -137,6 +144,8 @@ typedef enum {
|
||||||
RC_KAK_OPEN_GROTTO_CHEST,
|
RC_KAK_OPEN_GROTTO_CHEST,
|
||||||
RC_KAK_REDEAD_GROTTO_CHEST,
|
RC_KAK_REDEAD_GROTTO_CHEST,
|
||||||
RC_KAK_SHOOTING_GALLERY_REWARD,
|
RC_KAK_SHOOTING_GALLERY_REWARD,
|
||||||
|
RC_KAK_TRADE_ODD_MUSHROOM,
|
||||||
|
RC_KAK_TRADE_POCKET_CUCCO,
|
||||||
RC_KAK_10_GOLD_SKULLTULA_REWARD,
|
RC_KAK_10_GOLD_SKULLTULA_REWARD,
|
||||||
RC_KAK_20_GOLD_SKULLTULA_REWARD,
|
RC_KAK_20_GOLD_SKULLTULA_REWARD,
|
||||||
RC_KAK_30_GOLD_SKULLTULA_REWARD,
|
RC_KAK_30_GOLD_SKULLTULA_REWARD,
|
||||||
|
@ -177,6 +186,9 @@ typedef enum {
|
||||||
RC_DMT_FREESTANDING_POH,
|
RC_DMT_FREESTANDING_POH,
|
||||||
RC_DMT_CHEST,
|
RC_DMT_CHEST,
|
||||||
RC_DMT_STORMS_GROTTO_CHEST,
|
RC_DMT_STORMS_GROTTO_CHEST,
|
||||||
|
RC_DMT_TRADE_BROKEN_SWORD,
|
||||||
|
RC_DMT_TRADE_EYEDROPS,
|
||||||
|
RC_DMT_TRADE_CLAIM_CHECK,
|
||||||
RC_DMT_GREAT_FAIRY_REWARD,
|
RC_DMT_GREAT_FAIRY_REWARD,
|
||||||
RC_DMT_BIGGORON,
|
RC_DMT_BIGGORON,
|
||||||
RC_DMT_COW_GROTTO_COW,
|
RC_DMT_COW_GROTTO_COW,
|
||||||
|
@ -235,6 +247,7 @@ typedef enum {
|
||||||
RC_ZD_DIVING_MINIGAME,
|
RC_ZD_DIVING_MINIGAME,
|
||||||
RC_ZD_CHEST,
|
RC_ZD_CHEST,
|
||||||
RC_ZD_KING_ZORA_THAWED,
|
RC_ZD_KING_ZORA_THAWED,
|
||||||
|
RC_ZD_TRADE_PRESCRIPTION,
|
||||||
RC_ZD_GS_FROZEN_WATERFALL,
|
RC_ZD_GS_FROZEN_WATERFALL,
|
||||||
RC_ZD_SHOP_ITEM_1,
|
RC_ZD_SHOP_ITEM_1,
|
||||||
RC_ZD_SHOP_ITEM_2,
|
RC_ZD_SHOP_ITEM_2,
|
||||||
|
@ -254,6 +267,7 @@ typedef enum {
|
||||||
RC_LH_CHILD_FISHING,
|
RC_LH_CHILD_FISHING,
|
||||||
RC_LH_ADULT_FISHING,
|
RC_LH_ADULT_FISHING,
|
||||||
RC_LH_LAB_DIVE,
|
RC_LH_LAB_DIVE,
|
||||||
|
RC_LH_TRADE_FROG,
|
||||||
RC_LH_FREESTANDING_POH,
|
RC_LH_FREESTANDING_POH,
|
||||||
RC_LH_SUN,
|
RC_LH_SUN,
|
||||||
RC_LH_DEKU_SCRUB_GROTTO_LEFT,
|
RC_LH_DEKU_SCRUB_GROTTO_LEFT,
|
||||||
|
@ -267,6 +281,7 @@ typedef enum {
|
||||||
RC_GV_CRATE_FREESTANDING_POH,
|
RC_GV_CRATE_FREESTANDING_POH,
|
||||||
RC_GV_WATERFALL_FREESTANDING_POH,
|
RC_GV_WATERFALL_FREESTANDING_POH,
|
||||||
RC_GV_CHEST,
|
RC_GV_CHEST,
|
||||||
|
RC_GV_TRADE_SAW,
|
||||||
RC_GV_DEKU_SCRUB_GROTTO_FRONT,
|
RC_GV_DEKU_SCRUB_GROTTO_FRONT,
|
||||||
RC_GV_DEKU_SCRUB_GROTTO_REAR,
|
RC_GV_DEKU_SCRUB_GROTTO_REAR,
|
||||||
RC_GV_COW,
|
RC_GV_COW,
|
||||||
|
@ -277,6 +292,11 @@ typedef enum {
|
||||||
RC_GF_CHEST,
|
RC_GF_CHEST,
|
||||||
RC_GF_HBA_1000_POINTS,
|
RC_GF_HBA_1000_POINTS,
|
||||||
RC_GF_HBA_1500_POINTS,
|
RC_GF_HBA_1500_POINTS,
|
||||||
|
RC_GF_GERUDO_TOKEN,
|
||||||
|
RC_GF_NORTH_F1_CARPENTER,
|
||||||
|
RC_GF_NORTH_F2_CARPENTER,
|
||||||
|
RC_GF_SOUTH_F1_CARPENTER,
|
||||||
|
RC_GF_SOUTH_F2_CARPENTER,
|
||||||
RC_GF_GS_TOP_FLOOR,
|
RC_GF_GS_TOP_FLOOR,
|
||||||
RC_GF_GS_ARCHERY_RANGE,
|
RC_GF_GS_ARCHERY_RANGE,
|
||||||
RC_HIDEOUT_JAIL_GUARD_1_TORCH,
|
RC_HIDEOUT_JAIL_GUARD_1_TORCH,
|
||||||
|
@ -697,38 +717,10 @@ typedef enum {
|
||||||
|
|
||||||
// based on https://github.com/TestRunnerSRL/OoT-Randomizer/blob/e337d7f603b91a6bacb618fb32cc7fd70ed9ffca/ItemList.py
|
// based on https://github.com/TestRunnerSRL/OoT-Randomizer/blob/e337d7f603b91a6bacb618fb32cc7fd70ed9ffca/ItemList.py
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RG_UNKNOWN_GET = 0,
|
RG_NONE,
|
||||||
RG_BOMBS_5,
|
|
||||||
RG_DEKU_NUTS_5,
|
|
||||||
RG_BOMBCHUS_10,
|
|
||||||
RG_BOOMERANG,
|
|
||||||
RG_DEKU_STICK_1,
|
|
||||||
RG_LENS_OF_TRUTH,
|
|
||||||
RG_MEGATON_HAMMER,
|
|
||||||
RG_COJIRO,
|
|
||||||
RG_BOTTLE,
|
|
||||||
RG_BOTTLE_WITH_MILK,
|
|
||||||
RG_RUTOS_LETTER,
|
|
||||||
RG_DELIVER_LETTER,
|
|
||||||
RG_SELL_BIG_POE,
|
|
||||||
RG_MAGIC_BEAN,
|
|
||||||
RG_SKULL_MASK,
|
|
||||||
RG_SPOOKY_MASK,
|
|
||||||
RG_KEATON_MASK,
|
|
||||||
RG_BUNNY_HOOD,
|
|
||||||
RG_MASK_OF_TRUTH,
|
|
||||||
RG_POCKET_EGG,
|
|
||||||
RG_POCKET_CUCCO,
|
|
||||||
RG_ODD_MUSHROOM,
|
|
||||||
RG_ODD_POTION,
|
|
||||||
RG_POACHERS_SAW,
|
|
||||||
RG_BROKEN_SWORD,
|
|
||||||
RG_PRESCRIPTION,
|
|
||||||
RG_EYEBALL_FROG,
|
|
||||||
RG_EYEDROPS,
|
|
||||||
RG_CLAIM_CHECK,
|
|
||||||
RG_KOKIRI_SWORD,
|
RG_KOKIRI_SWORD,
|
||||||
RG_GIANTS_KNIFE,
|
RG_GIANTS_KNIFE,
|
||||||
|
RG_BIGGORON_SWORD,
|
||||||
RG_DEKU_SHIELD,
|
RG_DEKU_SHIELD,
|
||||||
RG_HYLIAN_SHIELD,
|
RG_HYLIAN_SHIELD,
|
||||||
RG_MIRROR_SHIELD,
|
RG_MIRROR_SHIELD,
|
||||||
|
@ -736,57 +728,48 @@ typedef enum {
|
||||||
RG_ZORA_TUNIC,
|
RG_ZORA_TUNIC,
|
||||||
RG_IRON_BOOTS,
|
RG_IRON_BOOTS,
|
||||||
RG_HOVER_BOOTS,
|
RG_HOVER_BOOTS,
|
||||||
RG_STONE_OF_AGONY,
|
RG_BOOMERANG,
|
||||||
RG_GERUDO_MEMBERSHIP_CARD,
|
RG_LENS_OF_TRUTH,
|
||||||
RG_HEART_CONTAINER,
|
RG_MEGATON_HAMMER,
|
||||||
RG_PIECE_OF_HEART,
|
RG_SHARD_OF_AGONY,
|
||||||
RG_BOSS_KEY,
|
RG_DINS_FIRE,
|
||||||
RG_COMPASS,
|
RG_FARORES_WIND,
|
||||||
RG_MAP,
|
RG_NAYRUS_LOVE,
|
||||||
RG_SMALL_KEY,
|
|
||||||
RG_WEIRD_EGG,
|
|
||||||
RG_RECOVERY_HEART,
|
|
||||||
RG_ARROWS_5,
|
|
||||||
RG_ARROWS_10,
|
|
||||||
RG_ARROWS_30,
|
|
||||||
RG_RUPEE_1,
|
|
||||||
RG_RUPEES_5,
|
|
||||||
RG_RUPEES_20,
|
|
||||||
RG_MILK,
|
|
||||||
RG_GORON_MASK,
|
|
||||||
RG_ZORA_MASK,
|
|
||||||
RG_GERUDO_MASK,
|
|
||||||
RG_RUPEES_50,
|
|
||||||
RG_RUPEES_200,
|
|
||||||
RG_BIGGORON_SWORD,
|
|
||||||
RG_FIRE_ARROWS,
|
RG_FIRE_ARROWS,
|
||||||
RG_ICE_ARROWS,
|
RG_ICE_ARROWS,
|
||||||
RG_LIGHT_ARROWS,
|
RG_LIGHT_ARROWS,
|
||||||
|
RG_GERUDO_TOKEN,
|
||||||
|
RG_MAGIC_BEAN,
|
||||||
|
RG_MAGIC_BEAN_PACK,
|
||||||
|
RG_DOUBLE_DEFENSE,
|
||||||
|
RG_WEIRD_EGG,
|
||||||
|
RG_ZELDAS_LETTER,
|
||||||
|
RG_POCKET_EGG,
|
||||||
|
RG_COJIRO,
|
||||||
|
RG_ODD_MUSHROOM,
|
||||||
|
RG_ODD_POULTICE,
|
||||||
|
RG_POACHERS_SAW,
|
||||||
|
RG_BROKEN_SWORD,
|
||||||
|
RG_PRESCRIPTION,
|
||||||
|
RG_EYEBALL_FROG,
|
||||||
|
RG_EYEDROPS,
|
||||||
|
RG_CLAIM_CHECK,
|
||||||
RG_GOLD_SKULLTULA_TOKEN,
|
RG_GOLD_SKULLTULA_TOKEN,
|
||||||
RG_DINS_FIRE,
|
|
||||||
RG_NAYRUS_LOVE,
|
|
||||||
RG_FARORES_WIND,
|
|
||||||
RG_DEKU_NUTS_10,
|
|
||||||
RG_BOMBS_10,
|
|
||||||
RG_BOMBS_20,
|
|
||||||
RG_DEKU_SEEDS_30,
|
|
||||||
RG_BOMBCHUS_5,
|
|
||||||
RG_BOMBCHUS_20,
|
|
||||||
RG_RUPEE_TREASURE_CHEST_GAME,
|
|
||||||
RG_PIECE_OF_HEART_TREASURE_CHEST_GAME,
|
|
||||||
RG_ICE_TRAP,
|
|
||||||
RG_PROGRESSIVE_HOOKSHOT,
|
RG_PROGRESSIVE_HOOKSHOT,
|
||||||
RG_PROGRESSIVE_STRENGTH_UPGRADE,
|
RG_PROGRESSIVE_STRENGTH,
|
||||||
RG_BOMB_BAG,
|
RG_PROGRESSIVE_BOMB_BAG,
|
||||||
RG_BOW,
|
RG_PROGRESSIVE_BOW,
|
||||||
RG_SLINGSHOT,
|
RG_PROGRESSIVE_SLINGSHOT,
|
||||||
RG_PROGRESSIVE_WALLET,
|
RG_PROGRESSIVE_WALLET,
|
||||||
RG_PROGRESSIVE_SCALE,
|
RG_PROGRESSIVE_SCALE,
|
||||||
RG_DEKU_NUT_CAPACITY,
|
RG_PROGRESSIVE_NUT_UPGRADE,
|
||||||
RG_DEKU_STICK_CAPACITY,
|
RG_PROGRESSIVE_STICK_UPGRADE,
|
||||||
RG_BOMBCHUS,
|
RG_PROGRESSIVE_BOMBCHUS,
|
||||||
RG_MAGIC_METER,
|
RG_PROGRESSIVE_MAGIC_METER,
|
||||||
RG_OCARINA,
|
RG_PROGRESSIVE_OCARINA,
|
||||||
|
RG_PROGRESSIVE_GORONSWORD,
|
||||||
|
RG_EMPTY_BOTTLE,
|
||||||
|
RG_BOTTLE_WITH_MILK,
|
||||||
RG_BOTTLE_WITH_RED_POTION,
|
RG_BOTTLE_WITH_RED_POTION,
|
||||||
RG_BOTTLE_WITH_GREEN_POTION,
|
RG_BOTTLE_WITH_GREEN_POTION,
|
||||||
RG_BOTTLE_WITH_BLUE_POTION,
|
RG_BOTTLE_WITH_BLUE_POTION,
|
||||||
|
@ -794,101 +777,113 @@ typedef enum {
|
||||||
RG_BOTTLE_WITH_FISH,
|
RG_BOTTLE_WITH_FISH,
|
||||||
RG_BOTTLE_WITH_BLUE_FIRE,
|
RG_BOTTLE_WITH_BLUE_FIRE,
|
||||||
RG_BOTTLE_WITH_BUGS,
|
RG_BOTTLE_WITH_BUGS,
|
||||||
RG_BOTTLE_WITH_BIG_POE,
|
|
||||||
RG_BOTTLE_WITH_POE,
|
RG_BOTTLE_WITH_POE,
|
||||||
RG_BOSS_KEY_FOREST_TEMPLE,
|
RG_RUTOS_LETTER,
|
||||||
RG_BOSS_KEY_FIRE_TEMPLE,
|
RG_BOTTLE_WITH_BIG_POE,
|
||||||
RG_BOSS_KEY_WATER_TEMPLE,
|
|
||||||
RG_BOSS_KEY_SPIRIT_TEMPLE,
|
|
||||||
RG_BOSS_KEY_SHADOW_TEMPLE,
|
|
||||||
RG_BOSS_KEY_GANONS_CASTLE,
|
|
||||||
RG_COMPASS_DEKU_TREE,
|
|
||||||
RG_COMPASS_DODONGOS_CAVERN,
|
|
||||||
RG_COMPASS_JABU_JABUS_BELLY,
|
|
||||||
RG_COMPASS_FOREST_TEMPLE,
|
|
||||||
RG_COMPASS_FIRE_TEMPLE,
|
|
||||||
RG_COMPASS_WATER_TEMPLE,
|
|
||||||
RG_COMPASS_SPIRIT_TEMPLE,
|
|
||||||
RG_COMPASS_SHADOW_TEMPLE,
|
|
||||||
RG_COMPASS_BOTTOM_OF_THE_WELL,
|
|
||||||
RG_COMPASS_ICE_CAVERN,
|
|
||||||
RG_MAP_DEKU_TREE,
|
|
||||||
RG_MAP_DODONGOS_CAVERN,
|
|
||||||
RG_MAP_JABU_JABUS_BELLY,
|
|
||||||
RG_MAP_FOREST_TEMPLE,
|
|
||||||
RG_MAP_FIRE_TEMPLE,
|
|
||||||
RG_MAP_WATER_TEMPLE,
|
|
||||||
RG_MAP_SPIRIT_TEMPLE,
|
|
||||||
RG_MAP_SHADOW_TEMPLE,
|
|
||||||
RG_MAP_BOTTOM_OF_THE_WELL,
|
|
||||||
RG_MAP_ICE_CAVERN,
|
|
||||||
RG_SMALL_KEY_FOREST_TEMPLE,
|
|
||||||
RG_SMALL_KEY_FIRE_TEMPLE,
|
|
||||||
RG_SMALL_KEY_WATER_TEMPLE,
|
|
||||||
RG_SMALL_KEY_SPIRIT_TEMPLE,
|
|
||||||
RG_SMALL_KEY_SHADOW_TEMPLE,
|
|
||||||
RG_SMALL_KEY_BOTTOM_OF_THE_WELL,
|
|
||||||
RG_SMALL_KEY_GERUDO_TRAINING_GROUND,
|
|
||||||
RG_SMALL_KEY_THIEVES_HIDEOUT,
|
|
||||||
RG_SMALL_KEY_GANONS_CASTLE,
|
|
||||||
RG_DOUBLE_DEFENSE,
|
|
||||||
RG_MAGIC_BEAN_PACK,
|
|
||||||
RG_TRIFORCE_PIECE,
|
|
||||||
RG_ZELDAS_LETTER,
|
|
||||||
RG_TIME_TRAVEL,
|
|
||||||
RG_SCARECROW_SONG,
|
|
||||||
RG_TRIFORCE,
|
|
||||||
RG_SMALL_KEY_RING_FOREST_TEMPLE,
|
|
||||||
RG_SMALL_KEY_RING_FIRE_TEMPLE,
|
|
||||||
RG_SMALL_KEY_RING_WATER_TEMPLE,
|
|
||||||
RG_SMALL_KEY_RING_SPIRIT_TEMPLE,
|
|
||||||
RG_SMALL_KEY_RING_SHADOW_TEMPLE,
|
|
||||||
RG_SMALL_KEY_RING_BOTTOM_OF_THE_WELL,
|
|
||||||
RG_SMALL_KEY_RING_GERUDO_TRAINING_GROUND,
|
|
||||||
RG_SMALL_KEY_RING_THIEVES_HIDEOUT,
|
|
||||||
RG_SMALL_KEY_RING_GANONS_CASTLE,
|
|
||||||
RG_WATER_TEMPLE_CLEAR,
|
|
||||||
RG_FOREST_TRIAL_CLEAR,
|
|
||||||
RG_FIRE_TRIAL_CLEAR,
|
|
||||||
RG_WATER_TRIAL_CLEAR,
|
|
||||||
RG_SHADOW_TRIAL_CLEAR,
|
|
||||||
RG_SPIRIT_TRIAL_CLEAR,
|
|
||||||
RG_LIGHT_TRIAL_CLEAR,
|
|
||||||
RG_DEKU_STICK_DROP,
|
|
||||||
RG_DEKU_NUT_DROP,
|
|
||||||
RG_BLUE_FIRE,
|
|
||||||
RG_FAIRY,
|
|
||||||
RG_FISH,
|
|
||||||
RG_BUGS,
|
|
||||||
RG_BIG_POE,
|
|
||||||
RG_BOMBCHU_DROP,
|
|
||||||
RG_ARROWS_CONSUMABLE_REFILL,
|
|
||||||
RG_BOMBS_CONSUMABLE_REFILL,
|
|
||||||
RG_DEKU_SEEDS_CONSUMABLE_REFILL,
|
|
||||||
RG_DEKU_STICKS_CONSUMABLE_REFILL,
|
|
||||||
RG_DEKU_NUTS_CONSUMABLE_REFILL,
|
|
||||||
RG_RUPEES_CONSUMABLE_REFILL,
|
|
||||||
RG_MINUET_OF_FOREST,
|
|
||||||
RG_BOLERO_OF_FIRE,
|
|
||||||
RG_SERENADE_OF_WATER,
|
|
||||||
RG_REQUIEM_OF_SPIRIT,
|
|
||||||
RG_NOCTURNE_OF_SHADOW,
|
|
||||||
RG_PRELUDE_OF_LIGHT,
|
|
||||||
RG_ZELDAS_LULLABY,
|
RG_ZELDAS_LULLABY,
|
||||||
RG_EPONAS_SONG,
|
RG_EPONAS_SONG,
|
||||||
RG_SARIAS_SONG,
|
RG_SARIAS_SONG,
|
||||||
RG_SUNS_SONG,
|
RG_SUNS_SONG,
|
||||||
RG_SONG_OF_TIME,
|
RG_SONG_OF_TIME,
|
||||||
RG_SONG_OF_STORMS,
|
RG_SONG_OF_STORMS,
|
||||||
|
RG_MINUET_OF_FOREST,
|
||||||
|
RG_BOLERO_OF_FIRE,
|
||||||
|
RG_SERENADE_OF_WATER,
|
||||||
|
RG_REQUIEM_OF_SPIRIT,
|
||||||
|
RG_NOCTURNE_OF_SHADOW,
|
||||||
|
RG_PRELUDE_OF_LIGHT,
|
||||||
|
RG_DEKU_TREE_MAP,
|
||||||
|
RG_DODONGOS_CAVERN_MAP,
|
||||||
|
RG_JABU_JABUS_BELLY_MAP,
|
||||||
|
RG_FOREST_TEMPLE_MAP,
|
||||||
|
RG_FIRE_TEMPLE_MAP,
|
||||||
|
RG_WATER_TEMPLE_MAP,
|
||||||
|
RG_SPIRIT_TEMPLE_MAP,
|
||||||
|
RG_SHADOW_TEMPLE_MAP,
|
||||||
|
RG_BOTTOM_OF_THE_WELL_MAP,
|
||||||
|
RG_ICE_CAVERN_MAP,
|
||||||
|
RG_DEKU_TREE_COMPASS,
|
||||||
|
RG_DODONGOS_CAVERN_COMPASS,
|
||||||
|
RG_JABU_JABUS_BELLY_COMPASS,
|
||||||
|
RG_FOREST_TEMPLE_COMPASS,
|
||||||
|
RG_FIRE_TEMPLE_COMPASS,
|
||||||
|
RG_WATER_TEMPLE_COMPASS,
|
||||||
|
RG_SPIRIT_TEMPLE_COMPASS,
|
||||||
|
RG_SHADOW_TEMPLE_COMPASS,
|
||||||
|
RG_BOTTOM_OF_THE_WELL_COMPASS,
|
||||||
|
RG_ICE_CAVERN_COMPASS,
|
||||||
|
RG_FOREST_TEMPLE_BOSS_KEY,
|
||||||
|
RG_FIRE_TEMPLE_BOSS_KEY,
|
||||||
|
RG_WATER_TEMPLE_BOSS_KEY,
|
||||||
|
RG_SPIRIT_TEMPLE_BOSS_KEY,
|
||||||
|
RG_SHADOW_TEMPLE_BOSS_KEY,
|
||||||
|
RG_GANONS_CASTLE_BOSS_KEY,
|
||||||
|
RG_FOREST_TEMPLE_SMALL_KEY,
|
||||||
|
RG_FIRE_TEMPLE_SMALL_KEY,
|
||||||
|
RG_WATER_TEMPLE_SMALL_KEY,
|
||||||
|
RG_SPIRIT_TEMPLE_SMALL_KEY,
|
||||||
|
RG_SHADOW_TEMPLE_SMALL_KEY,
|
||||||
|
RG_BOTTOM_OF_THE_WELL_SMALL_KEY,
|
||||||
|
RG_GERUDO_TRAINING_GROUNDS_SMALL_KEY,
|
||||||
|
RG_GERUDO_FORTRESS_SMALL_KEY,
|
||||||
|
RG_GANONS_CASTLE_SMALL_KEY,
|
||||||
|
RG_TREASURE_GAME_SMALL_KEY,
|
||||||
|
RG_FOREST_TEMPLE_KEY_RING,
|
||||||
|
RG_FIRE_TEMPLE_KEY_RING,
|
||||||
|
RG_WATER_TEMPLE_KEY_RING,
|
||||||
|
RG_SPIRIT_TEMPLE_KEY_RING,
|
||||||
|
RG_SHADOW_TEMPLE_KEY_RING,
|
||||||
|
RG_BOTTOM_OF_THE_WELL_KEY_RING,
|
||||||
|
RG_GERUDO_TRAINING_GROUNDS_KEY_RING,
|
||||||
|
RG_GERUDO_FORTRESS_KEY_RING,
|
||||||
|
RG_GANONS_CASTLE_KEY_RING,
|
||||||
|
RG_KOKIRI_EMERALD,
|
||||||
|
RG_GORON_RUBY,
|
||||||
|
RG_ZORA_SAPPHIRE,
|
||||||
|
RG_FOREST_MEDALLION,
|
||||||
|
RG_FIRE_MEDALLION,
|
||||||
|
RG_WATER_MEDALLION,
|
||||||
|
RG_SPIRIT_MEDALLION,
|
||||||
|
RG_SHADOW_MEDALLION,
|
||||||
|
RG_LIGHT_MEDALLION,
|
||||||
|
RG_RECOVERY_HEART,
|
||||||
|
RG_GREEN_RUPEE,
|
||||||
|
RG_BLUE_RUPEE,
|
||||||
|
RG_RED_RUPEE,
|
||||||
|
RG_PURPLE_RUPEE,
|
||||||
|
RG_HUGE_RUPEE,
|
||||||
|
RG_PIECE_OF_HEART,
|
||||||
|
RG_HEART_CONTAINER,
|
||||||
|
RG_ICE_TRAP,
|
||||||
|
RG_MILK,
|
||||||
|
RG_BOMBS_5,
|
||||||
|
RG_BOMBS_10,
|
||||||
|
RG_BOMBS_20,
|
||||||
|
RG_BOMBCHU_5,
|
||||||
|
RG_BOMBCHU_10,
|
||||||
|
RG_BOMBCHU_20,
|
||||||
|
RG_BOMBCHU_DROP,
|
||||||
|
RG_ARROWS_5,
|
||||||
|
RG_ARROWS_10,
|
||||||
|
RG_ARROWS_30,
|
||||||
|
RG_DEKU_NUTS_5,
|
||||||
|
RG_DEKU_NUTS_10,
|
||||||
|
RG_DEKU_SEEDS_30,
|
||||||
|
RG_DEKU_STICK_1,
|
||||||
|
RG_RED_POTION_REFILL,
|
||||||
|
RG_GREEN_POTION_REFILL,
|
||||||
|
RG_BLUE_POTION_REFILL,
|
||||||
|
RG_TREASURE_GAME_HEART,
|
||||||
|
RG_TREASURE_GAME_GREEN_RUPEE,
|
||||||
RG_BUY_DEKU_NUT_5,
|
RG_BUY_DEKU_NUT_5,
|
||||||
RG_BUY_ARROWS_30,
|
RG_BUY_ARROWS_30,
|
||||||
RG_BUY_ARROWS_50,
|
RG_BUY_ARROWS_50,
|
||||||
RG_BUY_BOMBS_5_FOR_25_RUPEES,
|
RG_BUY_BOMBS_525,
|
||||||
RG_BUY_DEKU_NUT_10,
|
RG_BUY_DEKU_NUT_10,
|
||||||
RG_BUY_DEKU_STICK_1,
|
RG_BUY_DEKU_STICK_1,
|
||||||
RG_BUY_BOMBS_10,
|
RG_BUY_BOMBS_10,
|
||||||
RG_BUY_FISH,
|
RG_BUY_FISH,
|
||||||
RG_BUY_RED_POTION_FOR_30_RUPEES,
|
RG_BUY_RED_POTION_30,
|
||||||
RG_BUY_GREEN_POTION,
|
RG_BUY_GREEN_POTION,
|
||||||
RG_BUY_BLUE_POTION,
|
RG_BUY_BLUE_POTION,
|
||||||
RG_BUY_HYLIAN_SHIELD,
|
RG_BUY_HYLIAN_SHIELD,
|
||||||
|
@ -908,16 +903,9 @@ typedef enum {
|
||||||
RG_BUY_ARROWS_10,
|
RG_BUY_ARROWS_10,
|
||||||
RG_BUY_BOMBS_20,
|
RG_BUY_BOMBS_20,
|
||||||
RG_BUY_BOMBS_30,
|
RG_BUY_BOMBS_30,
|
||||||
RG_BUY_BOMBS_5_FOR_35_RUPEES,
|
RG_BUY_BOMBS_535,
|
||||||
RG_BUY_RED_POTION_FOR_40_RUPEES,
|
RG_BUY_RED_POTION_40,
|
||||||
RG_BUY_RED_POTION_FOR_50_RUPEES,
|
RG_BUY_RED_POTION_50,
|
||||||
RG_KOKIRI_EMERALD,
|
RG_TRIFORCE,
|
||||||
RG_GORON_RUBY,
|
RG_HINT
|
||||||
RG_ZORA_SAPPHIRE,
|
|
||||||
RG_FOREST_MEDALLION,
|
|
||||||
RG_FIRE_MEDALLION,
|
|
||||||
RG_WATER_MEDALLION,
|
|
||||||
RG_SPIRIT_MEDALLION,
|
|
||||||
RG_SHADOW_MEDALLION,
|
|
||||||
RG_LIGHT_MEDALLION
|
|
||||||
} RandomizerGet;
|
} RandomizerGet;
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -2050,6 +2050,11 @@ void Cutscene_HandleEntranceTriggers(GlobalContext* globalCtx) {
|
||||||
u8 requiredAge;
|
u8 requiredAge;
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
|
if (gSaveContext.n64ddFlag) {
|
||||||
|
gSaveContext.showTitleCard = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_COUNT(sEntranceCutsceneTable); i++) {
|
for (i = 0; i < ARRAY_COUNT(sEntranceCutsceneTable); i++) {
|
||||||
entranceCutscene = &sEntranceCutsceneTable[i];
|
entranceCutscene = &sEntranceCutsceneTable[i];
|
||||||
|
|
||||||
|
|
|
@ -193,60 +193,54 @@ void Gameplay_Destroy(GameState* thisx) {
|
||||||
gGlobalCtx = NULL;
|
gGlobalCtx = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GiveLinksPocketMedallion(GlobalContext* globalCtx) {
|
void GiveLinksPocketMedallion() {
|
||||||
if (gSaveContext.n64ddFlag) {
|
GetItemID getItemId = GetRandomizedItemIdFromKnownCheck(RC_LINKS_POCKET, RG_NONE);
|
||||||
RandomizerGet get = gSaveContext.itemLocations[LINKS_POCKET].get;
|
|
||||||
|
|
||||||
s16 item;
|
s16 item;
|
||||||
|
|
||||||
u8 medallion = 0;
|
u8 medallion = 0;
|
||||||
|
|
||||||
switch (get) {
|
switch (getItemId) {
|
||||||
case FOREST_MEDALLION:
|
case GI_MEDALLION_FOREST:
|
||||||
item = ITEM_MEDALLION_FOREST;
|
item = ITEM_MEDALLION_FOREST;
|
||||||
medallion = 1;
|
medallion = 1;
|
||||||
break;
|
break;
|
||||||
case FIRE_MEDALLION:
|
case GI_MEDALLION_FIRE:
|
||||||
item = ITEM_MEDALLION_FIRE;
|
item = ITEM_MEDALLION_FIRE;
|
||||||
medallion = 1;
|
medallion = 1;
|
||||||
break;
|
break;
|
||||||
case WATER_MEDALLION:
|
case GI_MEDALLION_WATER:
|
||||||
item = ITEM_MEDALLION_WATER;
|
item = ITEM_MEDALLION_WATER;
|
||||||
medallion = 1;
|
medallion = 1;
|
||||||
break;
|
break;
|
||||||
case SHADOW_MEDALLION:
|
case GI_MEDALLION_SHADOW:
|
||||||
item = ITEM_MEDALLION_SHADOW;
|
item = ITEM_MEDALLION_SHADOW;
|
||||||
medallion = 1;
|
medallion = 1;
|
||||||
break;
|
break;
|
||||||
case SPIRIT_MEDALLION:
|
case GI_MEDALLION_SPIRIT:
|
||||||
item = ITEM_MEDALLION_SPIRIT;
|
item = ITEM_MEDALLION_SPIRIT;
|
||||||
medallion = 1;
|
medallion = 1;
|
||||||
break;
|
break;
|
||||||
case LIGHT_MEDALLION:
|
case GI_MEDALLION_LIGHT:
|
||||||
item = ITEM_MEDALLION_LIGHT;
|
item = ITEM_MEDALLION_LIGHT;
|
||||||
medallion = 1;
|
medallion = 1;
|
||||||
break;
|
break;
|
||||||
case KOKIRI_EMERALD:
|
case GI_STONE_KOKIRI:
|
||||||
item = ITEM_KOKIRI_EMERALD;
|
item = ITEM_KOKIRI_EMERALD;
|
||||||
break;
|
break;
|
||||||
case GORON_RUBY:
|
case GI_STONE_GORON:
|
||||||
item = ITEM_GORON_RUBY;
|
item = ITEM_GORON_RUBY;
|
||||||
break;
|
break;
|
||||||
case ZORA_SAPPHIRE:
|
case GI_STONE_ZORA:
|
||||||
item = ITEM_ZORA_SAPPHIRE;
|
item = ITEM_ZORA_SAPPHIRE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (medallion == 1) {
|
if (medallion == 1) {
|
||||||
gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_MEDALLION_FOREST + QUEST_MEDALLION_FOREST];
|
gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_MEDALLION_FOREST + QUEST_MEDALLION_FOREST];
|
||||||
|
|
||||||
if (item == ITEM_MEDALLION_WATER) {
|
|
||||||
func_8006D0AC(globalCtx);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_KOKIRI_EMERALD + QUEST_KOKIRI_EMERALD];
|
gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_KOKIRI_EMERALD + QUEST_KOKIRI_EMERALD];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Gameplay_Init(GameState* thisx) {
|
void Gameplay_Init(GameState* thisx) {
|
||||||
|
|
|
@ -714,6 +714,11 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx, SramContext* sramCtx) {
|
||||||
gSaveContext.newf[3], gSaveContext.newf[4], gSaveContext.newf[5]);
|
gSaveContext.newf[3], gSaveContext.newf[4], gSaveContext.newf[5]);
|
||||||
osSyncPrintf("\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
|
osSyncPrintf("\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
|
||||||
|
|
||||||
|
if (gSaveContext.n64ddFlag) {
|
||||||
|
GiveLinksPocketMedallion();
|
||||||
|
gSaveContext.cutsceneIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
ptr = (u16*)&gSaveContext;
|
ptr = (u16*)&gSaveContext;
|
||||||
j = 0;
|
j = 0;
|
||||||
checksum = 0;
|
checksum = 0;
|
||||||
|
|
|
@ -127,8 +127,7 @@ void func_809B0558(EnAni* this, GlobalContext* globalCtx) {
|
||||||
gSaveContext.itemGetInf[1] |= 0x20;
|
gSaveContext.itemGetInf[1] |= 0x20;
|
||||||
} else {
|
} else {
|
||||||
if (gSaveContext.n64ddFlag) {
|
if (gSaveContext.n64ddFlag) {
|
||||||
s32 getItemId =
|
s32 getItemId = GetRandomizedItemIdFromKnownCheck(RC_KAK_MAN_ON_ROOF, GI_HEART_PIECE);
|
||||||
GetRandomizedItemId(GI_HEART_PIECE, this->actor.id, this->actor.params, globalCtx->sceneNum);
|
|
||||||
func_8002F434(&this->actor, globalCtx, getItemId, 10000.0f, 200.0f);
|
func_8002F434(&this->actor, globalCtx, getItemId, 10000.0f, 200.0f);
|
||||||
} else {
|
} else {
|
||||||
func_8002F434(&this->actor, globalCtx, GI_HEART_PIECE, 10000.0f, 200.0f);
|
func_8002F434(&this->actor, globalCtx, GI_HEART_PIECE, 10000.0f, 200.0f);
|
||||||
|
@ -142,7 +141,7 @@ void func_809B05F0(EnAni* this, GlobalContext* globalCtx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gSaveContext.n64ddFlag) {
|
if (gSaveContext.n64ddFlag) {
|
||||||
s32 getItemId = GetRandomizedItemId(GI_HEART_PIECE, this->actor.id, this->actor.params, globalCtx->sceneNum);
|
s32 getItemId = GetRandomizedItemIdFromKnownCheck(RC_KAK_MAN_ON_ROOF, GI_HEART_PIECE);
|
||||||
func_8002F434(&this->actor, globalCtx, getItemId, 10000.0f, 200.0f);
|
func_8002F434(&this->actor, globalCtx, getItemId, 10000.0f, 200.0f);
|
||||||
} else {
|
} else {
|
||||||
func_8002F434(&this->actor, globalCtx, GI_HEART_PIECE, 10000.0f, 200.0f);
|
func_8002F434(&this->actor, globalCtx, GI_HEART_PIECE, 10000.0f, 200.0f);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue