From 860854b0dc3af561468ac7a5bcfdec69a789285f Mon Sep 17 00:00:00 2001 From: codemann8 Date: Wed, 23 Jun 2021 08:42:29 -0500 Subject: [PATCH] Fixed horizontal VRAM loading glitch on megatiles --- Rom.py | 2 +- asm/owrando.asm | 19 ++++++++++++++++--- data/base2current.bps | Bin 137880 -> 137926 bytes 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Rom.py b/Rom.py index 73240ef0..e931078e 100644 --- a/Rom.py +++ b/Rom.py @@ -27,7 +27,7 @@ from EntranceShuffle import door_addresses, exit_ids JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '97349749df6f63cd19dec385b7adcd77' +RANDOMIZERBASEHASH = 'c475e79eb7b90de8ed0cc415400caaf0' class JsonRom(object): diff --git a/asm/owrando.asm b/asm/owrando.asm index 151b500d..5a026cfe 100644 --- a/asm/owrando.asm +++ b/asm/owrando.asm @@ -80,6 +80,10 @@ db 2, 2, 0, 0 ; For OWCameraRange OWCameraRange: dw $011E, $0100 ; Length of the range the camera can move on small screens +DivideByTwoPreserveSign: +{ + asl : php : ror : plp : ror : rtl +} OWWorldCheck: { phx @@ -216,8 +220,6 @@ OWNewDestination: lda.w $0006,x : sta $06 ;set coord lda.w $0008,x : sta $04 ;save dest OW slot/ID lda.w $000a,x : sta $84 ;VRAM - LDA $84 : SEC : SBC #$0400 : AND #$0F00 : ASL : XBA : STA $88 - LDA $84 : SEC : SBC #$0010 : AND #$003E : LSR : STA $86 ;;22 e0 e2 61c 61e - X ;;20 e6 e8 618 61a - Y @@ -228,6 +230,16 @@ OWNewDestination: dec : cmp 1,s : !bge .adjustMainAxis inc : pha : lda $06 : and #$fe00 : !add 1,s : sta $06 : pla + ; adjust and set other VRAM addresses + lda.w $0006,x : pha : lda $06 : !sub 1,s + jsl DivideByTwoPreserveSign : jsl DivideByTwoPreserveSign : jsl DivideByTwoPreserveSign : jsl DivideByTwoPreserveSign : pha ; number of tiles + lda $418 : dec #2 : bmi + + pla : pea $0000 : bra ++ ;pla : asl #7 : pha : bra ++ ; y-axis shifts VRAM by increments of 0x80 (disabled for now) + + pla : asl : pha ; x-axis shifts VRAM by increments of 0x02 + ++ lda $84 : !add 1,s : sta $84 : pla : pla + LDA $84 : SEC : SBC #$0400 : AND #$0F00 : ASL : XBA : STA $88 + LDA $84 : SEC : SBC #$0010 : AND #$003E : LSR : STA $86 + .adjustMainAxis pla : pla : sep #$10 : ldy $418 ldx OWCoordIndex,y : lda $20,x : and #$fe00 : pha @@ -238,7 +250,7 @@ OWNewDestination: ldx OWBGIndex,y : lda $e2,x : !add 1,s : adc 3,s : sta $e2,x ldx OWCameraIndex,y : lda $618,x : !add 1,s : adc 3,s : sta $618,x ldx OWCameraIndex,y : lda $61a,x : !add 1,s : adc 3,s : sta $61a,x - pla : asl : php : ror : plp : ror : pha + pla : jsl DivideByTwoPreserveSign : pha ldx OWBGIndex,y : lda $e0,x : !add 1,s : sta $e0,x : pla ldx OWBGIndex,y : lda $e0,x : !add 1,s : sta $e0,x : pla pla : pla @@ -274,6 +286,7 @@ OWNewDestination: sep #$30 : lda OWOppSlotOffset,y : !add $04 : asl : and #$7f : sta $700 + ; crossed OW shuffle lda.l OWMode+1 : and #$ff : cmp #$02 : bne .return ldx $05 : lda.l OWTileWorldAssoc,x : sta.l $7ef3ca ; change world diff --git a/data/base2current.bps b/data/base2current.bps index 605d1301e8f9e0252e63f628039b676b0fcb80ad..f73d421ee17c47f0fdf274e6d46986d006ddcf4c 100644 GIT binary patch delta 431 zcmbQSmE+h}jtMsz^(Nj*Vrf#Zy)oH=@hYRo)!R4{E1*EJcBV)EdpG-p|!(qwp ziy0Y@1lCBf>|^NIssJ>{14#a7oE{}5!`HCT;xRMGbP&H`a>YMY!%iu-jLD3R{ca62 z9{`P-`XFQVm4z7@TOV0GWfPF?XK$FjXfDw9xe{!9r6zMVbibW^;h(68NJFbc^6ZxW zbKU1B9x~V|)3I8cfAY_N+DtO4lhyvKiB~pu3p6x}EPvFW(J(*1q2H-tx@gnn)XB;J zZ4FEWm#y`5IO%XfaB1vG@eg8)Ei0DIZQurRF0f8!ZlMH~1 z@2P+;r3Strh!}k&h?CcmIQ8PN8><$8g&1R-gpbaP&ym6~xg3bAM-G!G|0@DGB$HJC zCKr2wixPl=6sO{kXn>z@fR93emlcAO0h5vcJrht6rmaap$w1H%rCrGv@D`(0ca!1& b83beCTp)w~|F{1C0l*pvhDDnjTnetluos!R