Fixed a problem with edges when those are turned off (experimental not on)
Fixed a problem with standard requiring you to go through the tapestry backwards to save Zelda Added debugging features to help figure out some bugs
This commit is contained in:
+5
-2
@@ -1301,12 +1301,15 @@ class DROptions(Flag):
|
|||||||
Eternal_Mini_Bosses = 0x01 # If on, GT minibosses marked as defeated when they try to spawn a heart
|
Eternal_Mini_Bosses = 0x01 # If on, GT minibosses marked as defeated when they try to spawn a heart
|
||||||
Town_Portal = 0x02 # If on, Players will start with mirror scroll
|
Town_Portal = 0x02 # If on, Players will start with mirror scroll
|
||||||
Map_Info = 0x04
|
Map_Info = 0x04
|
||||||
|
Debug = 0x08
|
||||||
Open_Desert_Wall = 0x80 # If on, pre opens the desert wall, no fire required
|
Open_Desert_Wall = 0x80 # If on, pre opens the desert wall, no fire required
|
||||||
|
|
||||||
# DATA GOES DOWN HERE
|
# DATA GOES DOWN HERE
|
||||||
|
|
||||||
logical_connections = [
|
logical_connections = [
|
||||||
('Hyrule Dungeon North Abyss Catwalk Dropdown', 'Hyrule Dungeon North Abyss'),
|
('Hyrule Dungeon North Abyss Catwalk Dropdown', 'Hyrule Dungeon North Abyss'),
|
||||||
|
('Hyrule Castle Throne Room Tapestry', 'Hyrule Castle Behind Tapestry'),
|
||||||
|
('Hyrule Castle Tapestry Backwards', 'Hyrule Castle Throne Room'),
|
||||||
('Sewers Secret Room Push Block', 'Sewers Secret Room Blocked Path'),
|
('Sewers Secret Room Push Block', 'Sewers Secret Room Blocked Path'),
|
||||||
('Eastern Hint Tile Push Block', 'Eastern Hint Tile'),
|
('Eastern Hint Tile Push Block', 'Eastern Hint Tile'),
|
||||||
('Eastern Map Balcony Hook Path', 'Eastern Map Room'),
|
('Eastern Map Balcony Hook Path', 'Eastern Map Room'),
|
||||||
@@ -1528,8 +1531,8 @@ open_edges = [
|
|||||||
('Desert Main Lobby E Edge', 'Desert East Wing W Edge'),
|
('Desert Main Lobby E Edge', 'Desert East Wing W Edge'),
|
||||||
('Desert East Wing N Edge', 'Desert Arrow Pot Corner S Edge'),
|
('Desert East Wing N Edge', 'Desert Arrow Pot Corner S Edge'),
|
||||||
('Desert Arrow Pot Corner W Edge', 'Desert North Hall E Edge'),
|
('Desert Arrow Pot Corner W Edge', 'Desert North Hall E Edge'),
|
||||||
('Desert North Hall W Edge', 'Desert Sandworm Corner S Edge'),
|
('Desert West Wing N Edge', 'Desert Sandworm Corner S Edge'),
|
||||||
('Desert Sandworm Corner E Edge', 'Desert West Wing N Edge'),
|
('Desert Sandworm Corner E Edge', 'Desert North Hall W Edge'),
|
||||||
('Thieves Lobby N Edge', 'Thieves Ambush S Edge'),
|
('Thieves Lobby N Edge', 'Thieves Ambush S Edge'),
|
||||||
('Thieves Lobby NE Edge', 'Thieves Ambush SE Edge'),
|
('Thieves Lobby NE Edge', 'Thieves Ambush SE Edge'),
|
||||||
('Thieves Ambush ES Edge', 'Thieves BK Corner WS Edge'),
|
('Thieves Ambush ES Edge', 'Thieves BK Corner WS Edge'),
|
||||||
|
|||||||
@@ -61,6 +61,8 @@ def create_doors(world, player):
|
|||||||
create_door(player, 'Hyrule Castle Back Hall W', Nrml).dir(We, 0x01, Top, Low).pos(0),
|
create_door(player, 'Hyrule Castle Back Hall W', Nrml).dir(We, 0x01, Top, Low).pos(0),
|
||||||
create_door(player, 'Hyrule Castle Back Hall E', Nrml).dir(Ea, 0x01, Top, Low).pos(1),
|
create_door(player, 'Hyrule Castle Back Hall E', Nrml).dir(Ea, 0x01, Top, Low).pos(1),
|
||||||
create_door(player, 'Hyrule Castle Back Hall Down Stairs', Sprl).dir(Dn, 0x01, 0, HTL).ss(A, 0x2a, 0x00),
|
create_door(player, 'Hyrule Castle Back Hall Down Stairs', Sprl).dir(Dn, 0x01, 0, HTL).ss(A, 0x2a, 0x00),
|
||||||
|
create_door(player, 'Hyrule Castle Throne Room Tapestry', Lgcl),
|
||||||
|
create_door(player, 'Hyrule Castle Tapestry Backwards', Lgcl),
|
||||||
create_door(player, 'Hyrule Castle Throne Room N', Nrml).dir(No, 0x51, Mid, High).pos(1),
|
create_door(player, 'Hyrule Castle Throne Room N', Nrml).dir(No, 0x51, Mid, High).pos(1),
|
||||||
create_door(player, 'Hyrule Castle Throne Room South Stairs', StrS).dir(So, 0x51, Mid, Low),
|
create_door(player, 'Hyrule Castle Throne Room South Stairs', StrS).dir(So, 0x51, Mid, Low),
|
||||||
|
|
||||||
@@ -1086,7 +1088,8 @@ def create_doors(world, player):
|
|||||||
world.get_door('Swamp Flooded Room Ladder', player).event('Swamp Drain')
|
world.get_door('Swamp Flooded Room Ladder', player).event('Swamp Drain')
|
||||||
|
|
||||||
if world.mode[player] == 'standard':
|
if world.mode[player] == 'standard':
|
||||||
world.get_door('Hyrule Castle Throne Room N', player).event('Zelda Pickup')
|
world.get_door('Hyrule Castle Throne Room Tapestry', player).event('Zelda Pickup')
|
||||||
|
world.get_door('Hyrule Castle Tapestry Backwards', player).event('Zelda Pickup')
|
||||||
|
|
||||||
# crystal switches and barriers
|
# crystal switches and barriers
|
||||||
world.get_door('Hera Lobby Down Stairs', player).c_switch()
|
world.get_door('Hera Lobby Down Stairs', player).c_switch()
|
||||||
|
|||||||
+7
-7
@@ -162,13 +162,13 @@ dungeon_music_addresses = {'Eastern Palace - Prize': [0x1559A],
|
|||||||
|
|
||||||
hyrule_castle_regions = [
|
hyrule_castle_regions = [
|
||||||
'Hyrule Castle Lobby', 'Hyrule Castle West Lobby', 'Hyrule Castle East Lobby', 'Hyrule Castle East Hall',
|
'Hyrule Castle Lobby', 'Hyrule Castle West Lobby', 'Hyrule Castle East Lobby', 'Hyrule Castle East Hall',
|
||||||
'Hyrule Castle West Hall', 'Hyrule Castle Back Hall', 'Hyrule Castle Throne Room', 'Hyrule Dungeon Map Room',
|
'Hyrule Castle West Hall', 'Hyrule Castle Back Hall', 'Hyrule Castle Throne Room', 'Hyrule Castle Behind Tapestry',
|
||||||
'Hyrule Dungeon North Abyss', 'Hyrule Dungeon North Abyss Catwalk', 'Hyrule Dungeon South Abyss',
|
'Hyrule Dungeon Map Room', 'Hyrule Dungeon North Abyss', 'Hyrule Dungeon North Abyss Catwalk',
|
||||||
'Hyrule Dungeon South Abyss Catwalk', 'Hyrule Dungeon Guardroom', 'Hyrule Dungeon Armory Main',
|
'Hyrule Dungeon South Abyss', 'Hyrule Dungeon South Abyss Catwalk', 'Hyrule Dungeon Guardroom',
|
||||||
'Hyrule Dungeon Armory Boomerang', 'Hyrule Dungeon Armory North Branch', 'Hyrule Dungeon Staircase',
|
'Hyrule Dungeon Armory Main', 'Hyrule Dungeon Armory Boomerang', 'Hyrule Dungeon Armory North Branch',
|
||||||
'Hyrule Dungeon Cellblock', 'Sewers Behind Tapestry', 'Sewers Rope Room', 'Sewers Dark Cross', 'Sewers Water',
|
'Hyrule Dungeon Staircase', 'Hyrule Dungeon Cellblock', 'Sewers Behind Tapestry', 'Sewers Rope Room',
|
||||||
'Sewers Key Rat', 'Sewers Rat Path', 'Sewers Secret Room Blocked Path', 'Sewers Secret Room',
|
'Sewers Dark Cross', 'Sewers Water', 'Sewers Key Rat', 'Sewers Rat Path', 'Sewers Secret Room Blocked Path',
|
||||||
'Sewers Yet More Rats', 'Sewers Pull Switch', 'Sanctuary'
|
'Sewers Secret Room', 'Sewers Yet More Rats', 'Sewers Pull Switch', 'Sanctuary'
|
||||||
]
|
]
|
||||||
|
|
||||||
eastern_regions = [
|
eastern_regions = [
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ from Fill import distribute_items_cutoff, distribute_items_staleness, distribute
|
|||||||
from ItemList import generate_itempool, difficulties, fill_prizes
|
from ItemList import generate_itempool, difficulties, fill_prizes
|
||||||
from Utils import output_path, parse_player_names
|
from Utils import output_path, parse_player_names
|
||||||
|
|
||||||
__version__ = '0.1.0.4-u'
|
__version__ = '0.1.0.5-u'
|
||||||
|
|
||||||
class EnemizerError(RuntimeError):
|
class EnemizerError(RuntimeError):
|
||||||
pass
|
pass
|
||||||
|
|||||||
+8
-1
@@ -8,7 +8,13 @@
|
|||||||
### Experimental features
|
### Experimental features
|
||||||
|
|
||||||
* Open "Edge" transitions can now be linked with normal doors
|
* Open "Edge" transitions can now be linked with normal doors
|
||||||
* "Straight" staircases (the ones similar to normal doors) can be linked with both normal doors and edges
|
* "Straight" staircases (the ones similar to normal doors) can be linked with both normal doors and edges
|
||||||
|
|
||||||
|
|
||||||
|
* Couple of temporary debug features added:
|
||||||
|
* Total item count displays where TFH's goal usually does
|
||||||
|
* A red square appears in the upper right corner of the hud if the castle gate is closed
|
||||||
|
|
||||||
|
|
||||||
# Bug Fixes
|
# Bug Fixes
|
||||||
|
|
||||||
@@ -19,6 +25,7 @@
|
|||||||
* Enemizer settings made consistent with website
|
* Enemizer settings made consistent with website
|
||||||
* Swamp flooded ladders in the basement now requires Flippers
|
* Swamp flooded ladders in the basement now requires Flippers
|
||||||
* PoD EG Glitch gets killed on transitions (Only when DR is on)
|
* PoD EG Glitch gets killed on transitions (Only when DR is on)
|
||||||
|
* Problem with standard logic fixed wanting you to pass through the tapestry backwards to rescue Zelda
|
||||||
|
|
||||||
##### In Progress
|
##### In Progress
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -211,7 +211,8 @@ def create_dungeon_regions(world, player):
|
|||||||
'Hyrule Castle East Hall SW']),
|
'Hyrule Castle East Hall SW']),
|
||||||
create_dungeon_region(player, 'Hyrule Castle West Hall', 'Hyrule Castle', None, ['Hyrule Castle West Hall E', 'Hyrule Castle West Hall S']),
|
create_dungeon_region(player, 'Hyrule Castle West Hall', 'Hyrule Castle', None, ['Hyrule Castle West Hall E', 'Hyrule Castle West Hall S']),
|
||||||
create_dungeon_region(player, 'Hyrule Castle Back Hall', 'Hyrule Castle', None, ['Hyrule Castle Back Hall E', 'Hyrule Castle Back Hall W', 'Hyrule Castle Back Hall Down Stairs']),
|
create_dungeon_region(player, 'Hyrule Castle Back Hall', 'Hyrule Castle', None, ['Hyrule Castle Back Hall E', 'Hyrule Castle Back Hall W', 'Hyrule Castle Back Hall Down Stairs']),
|
||||||
create_dungeon_region(player, 'Hyrule Castle Throne Room', 'Hyrule Castle', None, ['Hyrule Castle Throne Room N', 'Hyrule Castle Throne Room South Stairs']),
|
create_dungeon_region(player, 'Hyrule Castle Throne Room', 'Hyrule Castle', None, ['Hyrule Castle Throne Room Tapestry', 'Hyrule Castle Throne Room South Stairs']),
|
||||||
|
create_dungeon_region(player, 'Hyrule Castle Behind Tapestry', 'Hyrule Castle', None, ['Hyrule Castle Throne Room N', 'Hyrule Castle Tapestry Backwards']),
|
||||||
|
|
||||||
create_dungeon_region(player, 'Hyrule Dungeon Map Room', 'Hyrule Castle', ['Hyrule Castle - Map Chest', 'Hyrule Castle - Map Guard Key Drop'], ['Hyrule Dungeon Map Room Key Door S', 'Hyrule Dungeon Map Room Up Stairs']),
|
create_dungeon_region(player, 'Hyrule Dungeon Map Room', 'Hyrule Castle', ['Hyrule Castle - Map Chest', 'Hyrule Castle - Map Guard Key Drop'], ['Hyrule Dungeon Map Room Key Door S', 'Hyrule Dungeon Map Room Up Stairs']),
|
||||||
create_dungeon_region(player, 'Hyrule Dungeon North Abyss', 'Hyrule Castle', None, ['Hyrule Dungeon North Abyss South Edge', 'Hyrule Dungeon North Abyss Key Door N']),
|
create_dungeon_region(player, 'Hyrule Dungeon North Abyss', 'Hyrule Castle', None, ['Hyrule Dungeon North Abyss South Edge', 'Hyrule Dungeon North Abyss Key Door N']),
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ from EntranceShuffle import door_addresses, exit_ids
|
|||||||
|
|
||||||
|
|
||||||
JAP10HASH = '03a63945398191337e896e5771f77173'
|
JAP10HASH = '03a63945398191337e896e5771f77173'
|
||||||
RANDOMIZERBASEHASH = '4fdf20e033770cf92786a790a020d2d5'
|
RANDOMIZERBASEHASH = '69e8cbb3dd3cf9f5cebece101d95d0d7'
|
||||||
|
|
||||||
|
|
||||||
class JsonRom(object):
|
class JsonRom(object):
|
||||||
@@ -598,6 +598,7 @@ def patch_rom(world, rom, player, team, enemized):
|
|||||||
dr_flags = DROptions.Eternal_Mini_Bosses if world.doorShuffle[player] == 'vanilla' else DROptions.Town_Portal
|
dr_flags = DROptions.Eternal_Mini_Bosses if world.doorShuffle[player] == 'vanilla' else DROptions.Town_Portal
|
||||||
if world.experimental[player]:
|
if world.experimental[player]:
|
||||||
dr_flags |= DROptions.Map_Info
|
dr_flags |= DROptions.Map_Info
|
||||||
|
dr_flags |= DROptions.Debug
|
||||||
|
|
||||||
# patch doors
|
# patch doors
|
||||||
if world.doorShuffle[player] == 'crossed':
|
if world.doorShuffle[player] == 'crossed':
|
||||||
|
|||||||
@@ -863,7 +863,8 @@ def standard_rules(world, player):
|
|||||||
add_rule(world.get_entrance(ent, player), lambda state: standard_escape_rule(state))
|
add_rule(world.get_entrance(ent, player), lambda state: standard_escape_rule(state))
|
||||||
|
|
||||||
set_rule(world.get_location('Zelda Pickup', player), lambda state: state.has('Big Key (Escape)', player))
|
set_rule(world.get_location('Zelda Pickup', player), lambda state: state.has('Big Key (Escape)', player))
|
||||||
set_rule(world.get_entrance('Hyrule Castle Throne Room N', player), lambda state: state.has('Zelda Herself', player))
|
set_rule(world.get_entrance('Hyrule Castle Throne Room Tapestry', player), lambda state: state.has('Zelda Herself', player))
|
||||||
|
set_rule(world.get_entrance('Hyrule Castle Tapestry Backwards', player), lambda state: state.has('Zelda Herself', player))
|
||||||
|
|
||||||
def check_rule_list(state, r_list):
|
def check_rule_list(state, r_list):
|
||||||
return True if len(r_list) <= 0 else r_list[0](state) and check_rule_list(state, r_list[1:])
|
return True if len(r_list) <= 0 else r_list[0](state) and check_rule_list(state, r_list[1:])
|
||||||
|
|||||||
+1
-1
@@ -500,7 +500,7 @@ db $00,$80,$11, $00,$80,$11, $00,$80,$11, $00,$80,$11
|
|||||||
db $00,$80,$11, $00,$80,$11, $00,$80,$11, $00,$80,$11
|
db $00,$80,$11, $00,$80,$11, $00,$80,$11, $00,$80,$11
|
||||||
db $00,$80,$11, $00,$80,$11, $00,$80,$11
|
db $00,$80,$11, $00,$80,$11, $00,$80,$11
|
||||||
SouthOpenEdge:
|
SouthOpenEdge:
|
||||||
db $83,$a2,$11, $00,$80,$11, $00,$80,$11, $00,$80,$11
|
db $00,$80,$11, $00,$80,$11, $00,$80,$11, $00,$80,$11
|
||||||
db $00,$80,$11, $00,$80,$11, $00,$80,$11, $00,$80,$11
|
db $00,$80,$11, $00,$80,$11, $00,$80,$11, $00,$80,$11
|
||||||
db $00,$80,$11, $00,$80,$11, $00,$80,$11
|
db $00,$80,$11, $00,$80,$11, $00,$80,$11
|
||||||
WestOpenEdge:
|
WestOpenEdge:
|
||||||
|
|||||||
+47
-1
@@ -7,6 +7,19 @@ DrHudOverride:
|
|||||||
|
|
||||||
HudAdditions:
|
HudAdditions:
|
||||||
{
|
{
|
||||||
|
lda DRFlags : and #$0008 : beq ++
|
||||||
|
lda $7EF423 : and #$00ff
|
||||||
|
jsr HudHexToDec4DigitCopy
|
||||||
|
LDX.b $05 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+10 ; draw 100's digit
|
||||||
|
LDX.b $06 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+12 ; draw 10's digit
|
||||||
|
LDX.b $07 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+14 ; draw 1's digit
|
||||||
|
|
||||||
|
lda $7ef29b : and #$0020 : beq +
|
||||||
|
lda #$207f : bra .drawthing
|
||||||
|
+ lda #$345e
|
||||||
|
.drawthing STA !GOAL_DRAW_ADDRESS+16 ; castle gate indicator
|
||||||
|
++
|
||||||
|
|
||||||
ldx $040c : cpx #$ff : bne + : rts : +
|
ldx $040c : cpx #$ff : bne + : rts : +
|
||||||
lda DRMode : bne + : rts : +
|
lda DRMode : bne + : rts : +
|
||||||
phb : phk : plb
|
phb : phk : plb
|
||||||
@@ -94,4 +107,37 @@ CountBonkItem:
|
|||||||
+ lda.b #$24 ; default to small key
|
+ lda.b #$24 ; default to small key
|
||||||
++
|
++
|
||||||
phy : tay : jsr CountChest : ply
|
phy : tay : jsr CountChest : ply
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; 16-bit A, 8-bit X
|
||||||
|
; in: A(b) - Byte to Convert
|
||||||
|
; out: $04 - $07 (high - low)
|
||||||
|
;================================================================================
|
||||||
|
HudHexToDec4DigitCopy:
|
||||||
|
LDY.b #$90
|
||||||
|
-
|
||||||
|
CMP.w #1000 : !BLT +
|
||||||
|
INY
|
||||||
|
SBC.w #1000 : BRA -
|
||||||
|
+
|
||||||
|
STY $04 : LDY #$90 ; Store 1000s digit & reset Y
|
||||||
|
-
|
||||||
|
CMP.w #100 : !BLT +
|
||||||
|
INY
|
||||||
|
SBC.w #100 : BRA -
|
||||||
|
+
|
||||||
|
STY $05 : LDY #$90 ; Store 100s digit & reset Y
|
||||||
|
-
|
||||||
|
CMP.w #10 : !BLT +
|
||||||
|
INY
|
||||||
|
SBC.w #10 : BRA -
|
||||||
|
+
|
||||||
|
STY $06 : LDY #$90 ; Store 10s digit & reset Y
|
||||||
|
CMP.w #1 : !BLT +
|
||||||
|
-
|
||||||
|
INY
|
||||||
|
DEC : BNE -
|
||||||
|
+
|
||||||
|
STY $07 ; Store 1s digit
|
||||||
|
RTS
|
||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user