4cade/src/fx/fx.hgr.crystal.a

151 lines
3.9 KiB
Plaintext

;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
sta $FE
ldx #>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 $FE
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"
+HGR_WHITE_ROUTINES
+HGR_BLOCK_COPY_ROUTINES
!if * and 1 {
!byte 0
}
Coordinates