From 2235aab5797075a8e2834be1909087a3cfa57b43 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Thu, 18 Feb 2021 10:00:22 -0600 Subject: [PATCH] Initial OW Shuffle asm hooks --- Rom.py | 2 +- asm/doorrando.asm | 1 + asm/owrando.asm | 22 ++++++++++++++++++++++ data/base2current.bps | Bin 131841 -> 132034 bytes 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 asm/owrando.asm diff --git a/Rom.py b/Rom.py index 4b97fc4e..2404438e 100644 --- a/Rom.py +++ b/Rom.py @@ -27,7 +27,7 @@ from EntranceShuffle import door_addresses, exit_ids JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = 'bffd4e834049ca5f5295601436fc6009' +RANDOMIZERBASEHASH = '308b65c6becf8ce95cb40550458b6da0' class JsonRom(object): diff --git a/asm/doorrando.asm b/asm/doorrando.asm index 807095c7..fe0cc415 100644 --- a/asm/doorrando.asm +++ b/asm/doorrando.asm @@ -44,3 +44,4 @@ warnpc $288000 ; deals with own hooks incsrc keydropshuffle.asm +incsrc owrando.asm diff --git a/asm/owrando.asm b/asm/owrando.asm new file mode 100644 index 00000000..ff9da2c4 --- /dev/null +++ b/asm/owrando.asm @@ -0,0 +1,22 @@ +org $aa8000 +db $4f, $52 ;OR +OWShuffleMode: +dw 1 +OWShuffleFlags: +dw 0 +OWShuffleReserved: +dw 0 + + + +;Hooks +org $02a999 +jsl OWEdgeTransition : nop #4 ;LDA $02A4E3,X : ORA $7EF3CA + +;Code +org $aaa000 +OWEdgeTransition: +{ + LDA $02A4E3,X : ORA $7EF3CA + rtl +} \ No newline at end of file diff --git a/data/base2current.bps b/data/base2current.bps index 71800df832f4178ed90683aa6572c4bcb9765874..8487fa28825402272a6c5bb2e7e9353524f207df 100644 GIT binary patch delta 10489 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 E4~)4vg8%>k