;license:MIT ;(c) 2018-2020 by 4am/qkumba ; ; reverse engineered from Sapphire's crack screen of 'Crystal Castles' ; !cpu 6502 !to "build/FX.INDEXED/CRYSTAL",plain *=$6000 !source "src/fx/macros.a" ldx #0 stx $51 ldx #4 stx $50 ldx #$17 stx $53 +READ_ROM_NO_WRITE --- lda $53 jsr $FBC1 ; BASCALC ldy #$27 -- ldx $51 lda @table1, x ldx $50 !byte $2C - lsr lsr dex bne - and #3 dec $50 bne + ldx #4 stx $50 inc $51 + sta ($28), y dey bpl -- dec $53 bpl --- iny sty $54 lda #Coordinates stx $FF --- ldx #0 -- txa jsr $FBC1 ; BASCALC - lda ($28), y cmp $54 bne + tya pha txa jsr @stainc pla jsr @stainc tay + iny cpy #$28 bne - lda #$FF jsr @stainc2 inx cpx #$18 bcc -- inc $54 lda $54 cmp #4 bne --- +READ_RAM1_WRITE_RAM1 lda #$80 sta Coordinates+$840 lda #$01 sta $FD @outerloop dec $FD lda #Coordinates sta $FF ldy #$00 @loop lda ($fe),y bpl @copy lda #$10 jsr WaitForKeyWithTimeout bmi @exit bpl @next ; always branches @copy tax iny lda ($fe),y tay txa bit $FD bpl + jsr HGRBlockCopy beq @next ; always branches + jsr HGRBlockToWhite @next inc $FE bne + inc $FF + inc $FE bne + inc $FF + ldy #$00 lda ($FE),y cmp #$80 bne @loop bit $FD bpl @outerloop @exit rts @stainc2 jsr @stainc @stainc ldy #0 sta ($FE), y inc $FE bne + inc $FF + rts @table1 !byte $05, $AF, $05, $AF, $06, $90, $FA, $50, $FA, $50, $50, $5A, $F0, $5A, $F0, $0F !byte $A5, $0F, $A5, $05, $A5, $05, $AF, $05, $AF, $FA, $50, $FA, $50, $5A, $FA, $50 !byte $5A, $F0, $5A, $A5, $0F, $A5, $05, $AF, $0F, $A5, $05, $AF, $05, $50, $FA, $50 !byte $5A, $F0, $50, $FE, $54, $5E, $F4, $0B, $A1, $01, $AB, $01, $A1, $0B, $A1, $01 !byte $AB, $FE, $54, $5E, $F4, $5E, $FE, $54, $FE, $54, $5E, $A1, $01, $AB, $01, $AB !byte $0B, $A1, $0B, $A1, $01, $54, $5E, $F4, $5E, $F4, $54, $FE, $54, $FE, $54, $01 !byte $AB, $01, $AB, $01, $A1, $0B, $A1, $0B, $A1, $5E, $F0, $5A, $F0, $5A, $3A, $50 !byte $FA, $50, $FA, $AF, $01, $AB, $01, $A8, $3E, $54, $FE, $54, $FE, $AB, $01, $AB !byte $01, $A8, $A1, $0B, $A1, $0B, $A1, $5E, $F4, $5E, $F4, $5E, $54, $FE, $54, $FE !byte $54, $01, $AB, $01, $AB, $01, $0B, $A1, $0B, $A1, $01, $54, $5E, $F4, $5E, $F4 !byte $FE, $50, $FA, $50, $5A, $A5, $05, $AF, $05, $AF, $A5, $0F, $A5, $05, $AF, $FA !byte $50, $5A, $F0, $5A, $50, $FA, $50, $5A, $F0, $0F, $A5, $05, $AF, $05, $0F, $A5 !byte $05, $AF, $05, $50, $FA, $50, $5A, $F0, $FA, $50, $5A, $F0, $5A, $A5, $0F, $A5 !byte $05, $AF, $A5, $05, $AF, $05, $AF, $FA, $50, $FA, $50, $5A, $50, $5A, $F0, $5A !byte $F0, $0F, $A5, $0F, $A5, $05, $05, $AF, $05, $AF, $06, $90, $FA, $50, $FA, $50 !source "src/wait.a" !source "src/fx/fx.hgr.common.a" +HGR_WHITE_ROUTINES +HGR_BLOCK_COPY_ROUTINES Coordinates