diff --git a/README.md b/README.md index feefc32..2b24423 100644 --- a/README.md +++ b/README.md @@ -456,7 +456,7 @@ IN THE SOFTWARE. ## History -Unreleased +2024-09-13 - NEW: patchers/t00_jmp600.a (fixes Wizard of Words, Alphabet Zoo, Broadsides) diff --git a/src/exodecrunch.s b/src/exodecrunch.a similarity index 97% rename from src/exodecrunch.s rename to src/exodecrunch.a index 5c1a109..eee15c3 100644 --- a/src/exodecrunch.s +++ b/src/exodecrunch.a @@ -160,18 +160,18 @@ gb_get_hi: decrunch: !IF SHOW_PROGRESS_DURING_DECRUNCH = 1 { -kExoProgressWidth = 23 ; depends on total size, max 38 ldx #(kExoProgressWidth+2) lda #$DF -- sta $0528+(20-(kExoProgressWidth/2))-1, x - sta $05A8+(20-(kExoProgressWidth/2))-1, x +- sta $0528+(20-(kExoProgressWidth/2))-2, x + sta $05A8+(20-(kExoProgressWidth/2))-2, x dex bpl - lda #$20 - sta $05A8+(20-(kExoProgressWidth/2))-1 - sta $05A8+(20-(kExoProgressWidth/2))+kExoProgressWidth+1 - lda #$A8+(20-(kExoProgressWidth/2)) + sta $05A8+(20-(kExoProgressWidth/2))-2 + sta $05A8+(20-(kExoProgressWidth/2))+kExoProgressWidth + lda #$A8+(20-(kExoProgressWidth/2))-1 sta ExoProgressPtr+1 +decrunch_no_reset_progress: } ; ------------------------------------------------------------------- ; init zeropage, x and y regs. (12 bytes) @@ -243,16 +243,7 @@ no_fixup_lohi: !ifndef FORWARD_DECRUNCHING { !set FORWARD_DECRUNCHING = 1 } -!if FORWARD_DECRUNCHING = 0 { literal_start1: - tya - bne no_hi_decr - dec zp_dest_hi -no_hi_decr: - dey - jsr get_crunched_byte - sta (zp_dest_lo),y - !IF SHOW_PROGRESS_DURING_DECRUNCH = 1 { dec ExoProgressCounter bne + @@ -262,9 +253,15 @@ ExoProgressPtr inc ExoProgressPtr+1 + } - +!if FORWARD_DECRUNCHING = 0 { + tya + bne no_hi_decr + dec zp_dest_hi +no_hi_decr: + dey + jsr get_crunched_byte + sta (zp_dest_lo),y } else { -literal_start1: jsr get_crunched_byte sta (zp_dest_lo),y iny diff --git a/src/id/jmp600.a b/src/id/jmp600.a index 57d6d4f..cf59132 100644 --- a/src/id/jmp600.a +++ b/src/id/jmp600.a @@ -20,7 +20,7 @@ !byte $01,$A2,$00,$BD,$00,$08,$9D,$00 !byte $02,$E8,$D0,$F7,$4C,$0F,$02,$A9 !byte $A0 - ; passport-test-suite/Competition Karate.woz [C=0] matches + ; passport-test-suite/J-Bird.woz [C=0] matches } FoundJMP600 diff --git a/src/id/trace32.a b/src/id/trace32.a index a49e1c5..aa52411 100644 --- a/src/id/trace32.a +++ b/src/id/trace32.a @@ -188,8 +188,19 @@ TraceDOS32d ldy #$04 ; at RWTS entry point jsr CompareMemory ; (e.g. $BD00 or $3D00) !byte $84,$48,$85,$49 + bcc .RWTSEntryOK + + jsr CompareMemory + !byte $84,$10,$85,$11 ; variant used by Micro-Labs bcs .fail + lda #$D6 + sta $48 + lda #$B5 + sta $D6 + bne .patchmap ; always branches + +.RWTSEntryOK lda #$FA sta modsrc lda jCallRWTS+2 diff --git a/src/passport.a b/src/passport.a index 21e4e2f..65a2091 100755 --- a/src/passport.a +++ b/src/passport.a @@ -453,7 +453,7 @@ inx4 inx universalrwts !bin "../build/universalrwts.pak" - !source "exodecrunch.s" + !source "exodecrunch.a" get_crunched_byte: _byte_lo = * + 1 diff --git a/src/patchers/t00_jmp600.a b/src/patchers/t00_jmp600.a index 0210154..3b30f87 100644 --- a/src/patchers/t00_jmp600.a +++ b/src/patchers/t00_jmp600.a @@ -5,7 +5,12 @@ ; and jump to a third RWTS at $B700 ; ; tested on +; - Alphabet Zoo v1.0 (Spinnaker) +; - Broadsides (SSI) [several variants] ; - Dinosaurs v1.0 (Advanced Ideas) +; - Fortress (SSI) +; - Fraction Fever (Spinnaker) +; - J-Bird (Orion) ; - Wizard of Words v1.0 (Advanced Ideas) ;------------------------------------------------------------------------------ ; diff --git a/src/strings/en.a b/src/strings/en.a index 142065a..96d6c72 100755 --- a/src/strings/en.a +++ b/src/strings/en.a @@ -387,7 +387,7 @@ StringTableHigh ; must be kept in sync with constants in enid.a .passport !text "Passport ",$00 .header - !text "@",s_passport,"by 4am@",s_space7,"@",s_space7," 2024-05-14",$00 + !text "@",s_passport,"by 4am@",s_space7,"@",s_space7," 2024-09-13",$00 .bar9 !text "_________",$00 .bar18 diff --git a/src/wrapper.a b/src/wrapper.a index 128fbd8..c0e7e8f 100644 --- a/src/wrapper.a +++ b/src/wrapper.a @@ -88,8 +88,9 @@ OneTimeSetup !source "hw.harddisk.a" SHOW_PROGRESS_DURING_DECRUNCH = 1 ; activates optional UI code in exodecrunch +kExoProgressWidth = 23 ; depends on total size, max 38 - !source "exodecrunch.s" + !source "exodecrunch.a" get_crunched_byte lda _byte_lo