Merge branch 'OverworldShuffleDev' into OverworldShuffle

This commit is contained in:
codemann8
2022-05-02 05:56:18 -05:00
8 changed files with 85 additions and 7 deletions

View File

@@ -3309,8 +3309,8 @@ e_dmg = {"default": 0, "shuffled": 1, "random": 2}
# byte 8: RRAA A??? (restrict boss mode, algorithm, ? = unused)
rb_mode = {"none": 0, "mapcompass": 1, "dungeon": 2}
# algorithm: todo with "biased shuffles"
algo_mode = {"balanced": 0, "equitable": 1, "vanilla_fill": 2, "dungeon_only": 3, "district": 4}
# algorithm:
algo_mode = {"balanced": 0, "equitable": 1, "vanilla_fill": 2, "dungeon_only": 3, "district": 4, 'major_only': 5}
# additions
# psuedoboots does not effect code

View File

@@ -1,5 +1,10 @@
# Changelog
### 0.2.7.1
- Map checks in Mixed OWR now will show the proper tile images when screens are swapped (ie. Pyramid shows in the LW if that screen is swapped)
- Added mystery seed number to spoiler log, so it is easier to match a spoiler log to a rom filename
- Added proper branch-specific versioning (ie. Dev branch has '-u' suffixing the version number while Release/Main branch does not)
### 0.2.7.0
- ~~Merged DR v1.0.0.3 - MANY changes, major things listed below~~
- New Item Fills (Districts/Vanilla/Major Location/Dungeon)

View File

@@ -4,6 +4,7 @@ import RaceRandom as random
from BaseClasses import CollectionState, RegionType
from OverworldShuffle import build_accessible_region_list
from OWEdges import OWTileRegions
from Utils import stack_size3a
entrance_pool = list()
exit_pool = list()
@@ -1481,6 +1482,10 @@ def junk_fill_inaccessible(world, player):
def connect_inaccessible_regions(world, lw_entrances, dw_entrances, caves, player, ignore_list=[]):
invFlag = world.mode[player] == 'inverted'
if stack_size3a() > 500:
from DungeonGenerator import GenerationException
raise GenerationException(f'Infinite loop detected at \'connect_inaccessible_regions\'')
random.shuffle(lw_entrances)
random.shuffle(dw_entrances)

View File

@@ -119,7 +119,7 @@ def main(args, seed=None, fish=None):
logger.info(
world.fish.translate("cli","cli","app.title") + "\n",
ORVersion,
world.seed,
"%s (%s)" % (world.seed, str(args.outputname)) if str(args.outputname).startswith('M') else world.seed,
Settings.make_code(world, 1) if world.players == 1 else ''
)

View File

@@ -5,7 +5,9 @@ from BaseClasses import OWEdge, WorldType, RegionType, Direction, Terrain, PolSl
from Regions import mark_dark_world_regions, mark_light_world_regions
from OWEdges import OWTileRegions, OWTileGroups, OWEdgeGroups, OWExitTypes, OpenStd, parallel_links, IsParallel
__version__ = '0.2.7.0-u'
version_number = '0.2.7.1'
version_branch = '-u'
__version__ = '%s%s' % (version_number, version_branch)
def link_overworld(world, player):
# setup mandatory connections

2
Rom.py
View File

@@ -33,7 +33,7 @@ from source.classes.SFX import randomize_sfx
JAP10HASH = '03a63945398191337e896e5771f77173'
RANDOMIZERBASEHASH = '786c28c4735da56f0dbca879d02b22f6'
RANDOMIZERBASEHASH = '4a1dfc4fa793b8659a95d579f6a5a925'
class JsonRom(object):

View File

@@ -56,6 +56,20 @@ jsl.l OWLightWorldOrCrossed
org $0aba6c ; < ? - Bank0a.asm:474 ()
jsl.l OWMapWorldCheck16 : nop
; Mixed Overworld Map
org $0ABA99
WorldMap_LoadDarkWorldMap:
LDA.b $10 : CMP.b #$14 ; attract module
BEQ .vanilla_light
LDA.l OWMode+1 : AND.b #$04 : BNE .mixed
LDA.b $8A : AND.b #$40
BEQ .vanilla_light
.mixed
PHB : PHK : PLB
JSL LoadMapDarkOrMixed
PLB
.vanilla_light ; $0ABAB5
;(replacing -> LDA $8A : AND.b #$40)
org $00d8c4 ; < ? - Bank00.asm:4068 ()
jsl.l OWWorldCheck
@@ -81,8 +95,6 @@ org $07aa34 ; < ? - Bank07.asm:6718 ()
jsl.l OWWorldCheck
org $08d408 ; < ? - ancilla_morph_poof.asm:48 ()
jsl.l OWWorldCheck
org $0aba99 ; < ? - Bank0a.asm:515 ()
jsl.l OWWorldCheck
org $0bfeab ; < ? - Bank0b.asm:36 ()
jsl.l OWWorldCheck16 : nop
org $0cffb6 ; < ? - ?.asm ? ()
@@ -241,6 +253,60 @@ OWOldManSpeed:
rtl
}
LoadMapDarkOrMixed:
{
CMP.b #$04 : REP #$30 : BEQ .mixed
LDX.w #$03FE ; draw vanilla Dark World (what we wrote over)
.copy_next
LDA.w $D739,X : STA.w $1000,X ; DB is $0A
DEX : DEX : BPL .copy_next
BRL .end
.mixed
LDX.b $8A
LDA.l OWTileWorldAssoc,X
STA.b $00
LDY.w #$139C
LDX.w #$003F
.next_screen
PHX
LDA.l OWTileWorldAssoc,X
EOR.b $00
AND.w #$0040
BEQ .light
TYX : BRA .copy_screen
.light
TXA : AND.w #$0024 : LSR : TAX
TYA : SEC : SBC.l LWQuadrantOffsets,X
TYX : TAY
.copy_screen ; more efficient to have X on the right side
LDA.w $C739+$00,Y : STA.b $00,X
LDA.w $C739+$02,Y : STA.b $02,X
LDA.w $C739+$20,Y : STA.b $20,X
LDA.w $C739+$22,Y : STA.b $22,X
LDA.w $C739+$40,Y : STA.b $40,X
LDA.w $C739+$42,Y : STA.b $42,X
LDA.w $C739+$60,Y : STA.b $60,X
LDA.w $C739+$62,Y : STA.b $62,X
TXY : PLX
DEY : DEY : DEY : DEY ; move one screen left
TXA : AND.w #$0007 : BNE .same_row
TYA : SEC : SBC.w #$0060 : TAY ; move one screen row up
.same_row
DEX
BPL .next_screen
.end
SEP #$30
LDA.b #$15 : STA.b $17 ; what we wrote over
RTL
LWQuadrantOffsets:
dw $1000-$0210 ; top left
dw $0C00-$01F0 ; top right
dw 0,0,0,0,0,0
dw $0800+$01F0 ; bottom left
dw $0400+$0210 ; bottom
}
org $aa9000
OWEdgeTransition:
{

Binary file not shown.