User Tools

Site Tools


base:fli_floffy

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

base:fli_floffy [2015-04-17 04:31] (current)
Line 1: Line 1:
 +====== FLI Floffy ======
 +
 +{{flifloffy.png|}}
 +
 +
 +===== Concept =====
 +A FLI logo is sine-waved first on the Y axis (DYPP) and then on the X axis (tech-tech.)
 +The most tricky part of this is that in FLI, the colors and bitmap are interconnected in every 8x1 byte, as well as in every char.
 +So it's hard to shift single rows of pixels up'​n'​down independently,​ without getting color clashed.
 +And even if the graphics was designed to avoid this, the process would be rather cumbersome rastertime exhaustive.
 +
 +To get around these problems, the precision of the DYPP has been lowered to every 2nd multicolor pixel, and the maximum difference for the Y-position of each of these segments has been set to 1 pixel. So for each char, there is only 3 cases - up, straight or down.
 +The graphics has then been designed to be able to handle these cases without color clashes.
 +Storing the DYPP'​ed gfx into FLI is done with some routines that have been specialized for each byte in the gfx, and for each DYPP case, so it can load it directly in immediate mode, without having to look it up in a table.
 +
 +===== Sourcecode =====
 +
 +<​code>​
 +;​------------------------------------------------------------
 +; FLI Fluffy
 +;​------------------------------------------------------------
 +; Coded by Cruzer/​Camelot 2003-2004
 +; Asm'ed with mxass
 +;​------------------------------------------------------------
 +
 +;​zeropage...
 +
 +.la gfxadrs ​  = $02 ;
 +.la coladrs ​  = $72 ;
 +.la segment ​  = $e0 ;1
 +.la cnt       = $e1 ;1
 +.la techpoint = $e2 ;2
 +.la dypppoint = $e4 ;2
 +.la generate ​ = $e6 ;1
 +.la char      = $e7 ;1
 +
 +;memory...
 +
 +;0340-07ff ysiner
 +;0801-08ff basic
 +;0900-0aff tech-tech sine
 +;0b00-0fff shower
 +;1000-15ff noise
 +;1600-28ff main
 +;29c0-c4ff dypper
 +;c500-cc7f fli-bitmap
 +;ce00-d3ff dypper pointers
 +;d400-dfff logo source
 +;e000-ffff fli colors + other stuff like...
 +; e000-e6ff tech-techer
 +; e700-eaff zpmover
 +; eb00-ebff temp
 +; ee00-eeff lut
 +; ef00-efff zp-initer
 +; f000-f7ff font
 +; f800-fbff text-screen
 +; fe00-ffff dypp sine
 +
 +.la ysiner ​      = $0340
 +;la basic        = $0801
 +.la loadersrc1 ​  = $0840
 +.la techsine ​    = $0900
 +.la shower ​      = $0b00 ;0f3f
 +.la loadersrc2 ​  = $0f40
 +;la music        = $1000
 +.la main         = $1600
 +.la loadersrc3 ​  = $2900
 +.la dypper ​      = $29c0 ;c63f
 +.la bitmap ​      = $c000 ;​(c640-cdff)
 +.la dypppnt ​     = $ce00 ;ceff
 +.la logosrc ​     = $d400
 +;la screens ​     = $e000 ;efff
 +.la techtecher ​  = $e000
 +.la zpmover ​     = $e700
 +.la temp         = $eb00
 +.la dypppp ​      = $ee00
 +.la zpiniter ​    = $ef00
 +;la font         = $f000
 +;la textscreen ​  = $f800 ;fbff
 +.la dyppsine ​    = $fe00
 +
 +.ba main
 +.la border=$d020
 +
 +;​------------------------------------------------------------
 + jmp start
 +
 +
 +d011 .by $78,​$79,​$7a,​$7b,​$7c,​$7d,​$7e,​$7f
 + .by $78,​$79,​$7a,​$7b,​$7c,​$7d,​$7e,​$7f
 +d018 .by $a0,​$b0,​$c0,​$d0,​$e0,​$f0,​$80,​$90
 +
 +fadein .by 0
 +fadeout .by 0
 +fadepnt .by 0
 +
 +fxs .wo fx1,​fx2,​fx3,​fx4,​fx5,​fx6,​fx7,​fx8,​fx9,​fx10,​fx11,​fx12,​fx13,​fx14
 +fx .by $ff
 +numfx .by 14
 +
 +thisfx
 +techspread .by $00,$00
 +techspeed ​ .by $00,$00
 +techoffset .by $00,$00
 +dyppspread .by $00,$00
 +dyppspeed ​ .by $00,$00
 +dyppoffset .by $00,$00
 +updatetype .by 0 ; 0=each frame  1=jumps
 +fxtimer ​   .wo $00
 +
 +fx1
 + .by $00,$00 ;techspread
 + .by $00,$00 ;techspeed
 + .by $00,$00 ;techoffset
 + .by $00,$00 ;dyppspread
 + .by $00,$00 ;dyppspeed
 + .by $00,$00 ;dyppoffset
 + .by 0       ;​updatetype
 + .wo $300    ;fxtimer
 +
 +fx2
 + .by $03,​$04 ​ ;​+techspread
 + .by $02,​$03 ​ ;+techspeed
 + .by $00,​$00 ​ ;​+techoffset
 + .by $04,​$04 ​ ;​+dyppspread
 + .by $02,​$02 ​ ;+dyppspeed
 + .by $00,​$00 ​ ;​+dyppoffset
 + .by 0        ;​+updatetype
 + .wo $1aa     ;​+fxtimer
 +
 +
 +fx3
 ++techspread .by $06,$06
 ++techspeed ​ .by $04,$04
 ++techoffset .by $00,$00
 ++dyppspread .by $05,$05
 ++dyppspeed ​ .by $05,$05
 ++dyppoffset .by $00,$00
 ++updatetype .by 0
 ++fxtimer ​   .wo $122
 +
 +fx4
 ++techspread .by $03,$05
 ++techspeed ​ .by $04,$03
 ++techoffset .by $00,$00
 ++dyppspread .by $04,$04
 ++dyppspeed ​ .by $fd,$fd
 ++dyppoffset .by $00,$00
 ++updatetype .by 0
 ++fxtimer ​   .wo $1aa
 +
 +fx5
 ++techspread .by $08,$08
 ++techspeed ​ .by $06,$05
 ++techoffset .by $00,$00
 ++dyppspread .by $04,$04
 ++dyppspeed ​ .by $fd,$fd
 ++dyppoffset .by $00,$00
 ++updatetype .by 0
 ++fxtimer ​   .wo $1aa
 +
 +fx6
 ++techspread .by $04,$04
 ++techspeed ​ .by $03,$fd
 ++techoffset .by $00,$00
 ++dyppspread .by $00,$00
 ++dyppspeed ​ .by $00,$00
 ++dyppoffset .by $00,$00
 ++updatetype .by 0
 ++fxtimer ​   .wo $144
 +
 +fx7
 ++techspread .by $06,$09
 ++techspeed ​ .by $03,$fc
 ++techoffset .by $00,$00
 ++dyppspread .by $08,$07
 ++dyppspeed ​ .by $fc,$03
 ++dyppoffset .by $00,$00
 ++updatetype .by 0
 ++fxtimer ​   .wo $1aa
 +
 +fx8
 ++techspread .by $06,$06
 ++techspeed ​ .by $03,$fd
 ++techoffset .by $00,$00
 ++dyppspread .by $05,$05
 ++dyppspeed ​ .by $fd,$03
 ++dyppoffset .by $00,$00
 ++updatetype .by 0
 ++fxtimer ​   .wo $144
 +
 +fx9
 ++techspread .by $84,$05
 ++techspeed ​ .by $05,$04
 ++techoffset .by $00,$00
 ++dyppspread .by $04,$04
 ++dyppspeed ​ .by $03,$03
 ++dyppoffset .by $00,$00
 ++updatetype .by 0
 ++fxtimer ​   .wo $1aa
 +
 +fx10
 ++techspread .by $04,$fb
 ++techspeed ​ .by $02,$03
 ++techoffset .by $00,$00
 ++dyppspread .by $03,$03
 ++dyppspeed ​ .by $fa,$fa
 ++dyppoffset .by $00,$00
 ++updatetype .by 0
 ++fxtimer ​   .wo $144
 +
 +fx11
 ++techspread .by $06,$06
 ++techspeed ​ .by $04,$04
 ++techoffset .by $00,$00
 ++dyppspread .by $05,$05
 ++dyppspeed ​ .by $05,$05
 ++dyppoffset .by $00,$00
 ++updatetype .by 1
 ++fxtimer ​   .wo $122
 +
 +fx12
 ++techspread .by $01,$01
 ++techspeed ​ .by $04,$fd
 ++techoffset .by $00,$00
 ++dyppspread .by $02,$02
 ++dyppspeed ​ .by $fc,$03
 ++dyppoffset .by $00,$00
 ++updatetype .by 0
 ++fxtimer ​   .wo $1aa
 +
 +fx13
 ++techspread .by $12,$06
 ++techspeed ​ .by $0c,$06
 ++techoffset .by $00,$00
 ++dyppspread .by $06,$06
 ++dyppspeed ​ .by $02,$02
 ++dyppoffset .by $00,$00
 ++updatetype .by 0
 ++fxtimer ​   .wo $1aa
 +
 +fx14
 ++techspread .by $06,$06
 ++techspeed ​ .by $02,$fe
 ++techoffset .by $00,$00
 ++dyppspread .by $05,$05
 ++dyppspeed ​ .by $03,$fd
 ++dyppoffset .by $00,$00
 ++updatetype .by 0
 ++fxtimer ​   .wo $144
 +
 +;fx15
 +;​+techspread .by $02,$02
 +;​+techspeed ​ .by $fc,$03
 +;​+techoffset .by $00,$00
 +;​+dyppspread .by $03,$03
 +;​+dyppspeed ​ .by $fe,$03
 +;​+dyppoffset .by $00,$00
 +;​+updatetype .by 0
 +;​+fxtimer ​   .wo $7777
 +
 +;​------------------------------------------------------------
 +start
 +
 + sei
 + lda #<​startirq
 + sta $0314
 + lda #>​startirq
 + sta $0315
 + asl $d019
 + lda #$7b
 + sta $dc0d
 + lda #$81
 + sta $d01a
 + lda #$1b
 + sta $d011
 + lda #$58
 + sta $d012
 +
 + lda #$00
 + sta $d020
 + sta $d021
 +
 + jsr init
 +
 + lda #$00
 + jsr $1000
 +
 +;​------------------------------------------------------------
 + cli
 +
 +- lda generate
 + beq -
 +
 + jsr clear
 + jsr maketechtecher
 + jsr makeysiner
 +
 + lda #0
 + sta generate
 + sta fadepnt
 + lda #1
 + sta fadein
 +
 + jmp -
 +
 +;​------------------------------------------------------------
 +
 +startirq
 +
 + inc border
 +
 + ldx #$77
 +-
 + dex
 + bne -
 +
 + dec border
 +
 + lda #<​mainirq
 + sta $0314
 + lda #>​mainirq
 + sta $0315
 +
 + jmp ri
 +
 +mainirq
 +
 + inc border
 +
 + lda #$94
 + sta $dd00
 +
 + ldx #4
 +- dex
 + bne -
 +
 + jsr shower
 +
 + ldx #$33
 +- dex
 + bne -
 +
 + lda #$1f
 + sta $d011
 + lda #$c8
 + sta $d016
 + lda #$ec
 + sta $d018
 +
 +
 + inc border
 + jsr $1003
 +
 + lda generate
 + bne +skip
 +
 + inc border
 + jsr techtech
 +
 + inc border
 + jsr fluffy
 +
 + inc border
 + jsr fade
 + jsr update
 + jsr textcontrol
 +
 + jmp +skip2
 ++skip
 +
 + lda #$e0
 +- cmp $d012
 + bne -
 + lda #$ee
 + sta $d018
 +
 ++skip2
 +
 + jsr spacecontrol
 +
 + lda #$05
 + sta border
 +
 +ri
 + asl $d019
 + pla
 + tay
 + pla
 + tax
 + pla
 + rti
 +
 +
 +
 +fadeoutirq
 +
 + ldx cnt
 + lda fadecolz,x
 + sta $d020
 + lda cnt
 + cmp #9
 + beq +loadnext
 + inc cnt
 + jmp ri
 +
 +fadecolz .by $0,​$b,​$c,​$f,​$1,​$1,​$f,​$c,​$b,​$0
 +
 +
 ++loadnext
 +
 + sei
 + lda #$00
 + sta $d01a
 + lda #$08
 + sta $2e
 + lda #$03
 + sta $2f
 +
 + ldx #$00
 +-
 + lda loadersrc1,​x
 + sta $c000,x
 + lda loadersrc2,​x
 + sta $c0c0,x
 + lda loadersrc3,​x
 + sta $c180,x
 + inx
 + cpx #$c0
 + bne -
 +
 + jmp $c1f0
 +
 +
 +;​------------------------------------------------------------
 +spacecontrol
 +
 + lda $dc01
 + cmp #$ef
 + bne +r
 +
 ++space
 +
 + lda #<​fadeoutirq
 + sta $0314
 + lda #>​fadeoutirq
 + sta $0315
 + lda #$00
 + sta $d012
 + sta cnt
 +
 + sta $d418
 + lda #$60
 + sta $d011
 +
 ++r rts
 +
 +
 +;​------------------------------------------------------------
 +textcontrol
 +
 + lda msgtimer
 + beq +
 + dec msgtimer
 + rts
 ++
 + lda msg
 + asl
 + tax
 + lda mul20,x
 + sta +l+1
 + lda mul20+1,x
 + sta +l+2
 +
 + ldx charx
 ++l lda messages,x
 + sta char
 + jsr writechar
 + inc charx
 + lda charx
 + cmp #20
 + bne +b
 + lda #0
 + sta charx
 + lda msg
 + clc
 + adc #$01
 + cmp #40
 + bne +
 + lda #$00
 ++ sta msg
 + lda #$55
 + sta msgtimer
 ++b
 +
 + rts
 +
 +
 +writechar
 +
 +
 + lda charx
 + asl
 + clc
 + adc #$30
 + sta $f8
 + lda #$fa
 + sta $f9
 +
 + lda char
 + sec
 + sbc #$60
 + bcs +
 + lda char
 ++ tax
 + lda chars,x
 + asl
 + asl
 + ldy #$00
 + sta ($f8),y
 + ldy #$28
 + clc
 + adc #1
 + sta ($f8),y
 + ldy #$01
 + adc #1
 + sta ($f8),y
 + ldy #$29
 + adc #1
 + sta ($f8),y
 +
 + rts
 +
 +
 +charx .by 0
 +
 +
 +chars
 + .by 0,1,2,3, 4,5,13,14, 15,​16,​17,​18,​ 19,​20,​21,​22,​ 23,​24,​25,​26,​ 27,​28,​29,​30,​ 31,32,33,0
 + .by 0,0,0,0, 0,​51,​52,​0, ​  ​0,​0,​0,​55, ​    ​0,​0,​0,​0, ​    ​54,​0,​53,​0, ​    ​34,​35,​36,​37,​ 45,​46,​47,​48,​49,​50
 + .by 0,0, 0,56,0,57
 +
 +msg .by 0
 +msgtimer .by 0
 +
 + ;.text "***** abcdefghijklmnopqrstuvwxyz0123456789!"​.,'​=?"​
 +
 +messages
 +
 +msg01 .text " ​                   "
 +msg02 .text " ​    ​hmmmmm..... ​   "
 +msg03 .text " ​    a fli logo     "​
 +msg04 .text " that says "​fluffy"​ "
 +msg05 .text "guess that only can "
 +msg06 .text " ​ mean one thing... "
 +;​msg07 .text " ​                   "
 +msg08 .text " ​   fli fluffy!!! ​  "​
 +
 +msg09 .text " ​       yeah!       "​
 +msg10 .text " an oldskool dream  "
 +msg11 .text " finally cums true  "
 +msg12 .text " ​   thanx 2 the     "​
 +msg13 .text " ​   utter rulage ​   "
 +msg14 .text " ​    and ownage ​    "​
 +msg15 .text "of cruzer slash cml!"
 +;​msg16 .text " ​                   "
 +
 +msg17 .text " ​ mmmmm... yummie! ​ "
 +msg18 .text " ​     mcfluffy ​     "
 +msg19 .text " ​ with fli flavour ​ "
 +msg20 .text " ​     full of...    "
 +msg21 .text " quality ingredients"​
 +msg22 .text " like fli each line "
 +msg23 .text " double sine dyppin'"​
 +msg24 .text " ​ and tech=techin' ​ "
 +
 +msg25 .text " all upd8in'​ with..."​
 +msg26 .text " 50 frames per 2nd! "
 +;​msg27 .text " ​                   "
 +msg28 .text " ​    ​camelot... ​    "​
 +msg29 .text " ​ keepin'​ it real!  "
 +;​msg30 .text " ​                   "
 +msg31 .text " ​ faster... ​        "​
 +msg32 .text " ​     harder... ​    "​
 +msg33 .text " ​         kroozer! ​ "
 +;​msg34 .text " ​                   "
 +msg35 .text " ​ b=boys, fli=girls "
 +msg36 .text " ​ throw ya hands... "
 +msg37 .text " ​    in the air     "​
 +msg38 .text " aah yeah, like ya  "
 +msg39 .text " ​ just don't care!  "
 +;​msg40 .text " ​                   "
 +
 + ;.text "​little fluffy clouds"​
 + ;.text " ​       bah!        "
 +
 +
 +mul20
 + .wo msg01,​msg02,​msg03,​msg04,​msg05,​msg06,​msg01,​msg08,​msg09,​msg10
 + .wo msg11,​msg12,​msg13,​msg14,​msg15,​msg01,​msg17,​msg18,​msg19,​msg20
 + .wo msg21,​msg22,​msg23,​msg24,​msg25,​msg26,​msg01,​msg28,​msg29,​msg01
 + .wo msg31,​msg32,​msg33,​msg01,​msg35,​msg36,​msg37,​msg38,​msg39,​msg01
 +
 +mul80 .wo 0,​80,​160,​240,​320,​400
 +
 +;​------------------------------------------------------------
 +fade
 + lda fadein
 + bne +in
 + lda fadeout
 + bne +out
 + rts
 ++in
 + ldx fadepnt
 + lda d011,x
 + and #$3f
 + sta d011,x
 + inx
 + stx fadepnt
 + cpx #8
 + bne +
 + lda #0
 + sta fadein
 ++
 + rts
 ++out
 + ldx fadepnt
 + lda d011,x
 + ora #$70
 + sta d011,x
 + inx
 + stx fadepnt
 + cpx #8
 + bne +
 + lda #0
 + sta fadeout
 + jmp newfx
 ++
 + rts
 +
 +;​------------------------------------------------------------
 +update
 +
 + inc cnt
 +
 + lda updatetype
 + beq +
 + lda cnt
 + and #$04
 + bne +skip
 ++
 + lda techpoint+0
 + clc
 +tadd1 adc #$00 ;​techspeed+0
 + sta techpoint+0
 + lda techpoint+1
 + clc
 +tadd2 adc #$00 ;​techspeed+1
 + sta techpoint+1
 +
 + lda dypppoint+0
 + clc
 +dadd1 adc #$00 ;​dyppspeed+0
 + sta dypppoint+0
 + lda dypppoint+1
 + clc
 +dadd2 adc #$00 ;​dyppspeed+1
 + sta dypppoint+1
 +
 +
 ++skip
 + lda fadeout
 + beq +
 + rts
 ++
 + lda fxtimer
 + sec
 + sbc #1
 + sta fxtimer
 + lda fxtimer+1
 + sbc #0
 + sta fxtimer+1
 + bmi +
 + rts
 ++
 + lda #1
 + sta fadeout
 + lda #0
 + sta fadepnt
 + rts
 +
 +
 +;​------------------------------------------------------------
 +newfx
 +
 + lda #1
 + sta generate
 +
 + ldx fx
 + inx
 + cpx numfx
 + bne +
 + ldx #1
 ++ stx fx
 +
 + txa
 + asl
 + tax
 + lda fxs,x
 + sta +l+1
 + lda fxs+1,x
 + sta +l+2
 +
 + ldx #0
 +-
 ++l lda fx1,x
 + sta thisfx,x
 + inx
 + cpx #15
 + bne -
 +
 + lda techoffset+0
 + sta techpoint+0
 + lda techoffset+1
 + sta techpoint+1
 + lda dyppoffset+0
 + sta dypppoint+0
 + lda dyppoffset+1
 + sta dypppoint+1
 +
 + lda techspeed+0
 + sta tadd1+1
 + lda techspeed+1
 + sta tadd2+1
 + lda dyppspeed+0
 + sta dadd1+1
 + lda dyppspeed+1
 + sta dadd2+1
 +
 + rts
 +
 +;​------------------------------------------------------------
 +
 +fluffy
 +
 + lda #$34
 + sta $01
 +
 + clc
 + jsr zpiniter
 +
 + lda #$37
 + sta $01
 + inc border
 + lda #$34
 + sta $01
 +
 +
 + ldx dypppoint+0
 + ldy dypppoint+1
 + jsr ysiner
 +
 +
 + lda #$37
 + sta $01
 + inc border
 + lda #$ee
 + sta $d018
 + lda #$34
 + sta $01
 +
 + lda #0
 + sta segment
 +-loop
 +
 + jsr dyppcontrol2
 +
 + inc segment
 + lda segment
 + cmp #3
 + beq +
 +
 + ;jmp +
 +
 + lda #$37
 + sta $01
 + inc border
 + lda #$34
 + sta $01
 +
 + ;move zp-adrs 1 char up...
 + jsr zpmover
 +
 + lda #$37
 + sta $01
 + dec border
 + lda #$34
 + sta $01
 +
 + jmp -loop
 ++
 +
 + lda #$37
 + sta $01
 +
 + rts
 +
 +
 +
 +
 +
 +;​------------------------------------------------------------
 +dyppcontrol2
 +
 +;uses pointer-tables instead of dypperjumpvec
 +
 +
 +
 +;recycle.by 0,​1,​2,​3,​4,​5,​6,​7,​8,​5,​10,​11,​12,​1,​2,​3,​4,​1,​2,​3,​4,​21,​22,​23,​24,​0
 +;orig .by 1,​1,​1,​1,​1,​1,​1,​1,​1,​0,​1,​ 1, 1, 0,​0,​0,​0,​0,​0,​0,​0,​ 1, 1, 1, 1,0
 +
 +
 +;-16
 +
 + ldx segment
 +
 +cpydisp cpx #$00 ;ydisp+0
 + bne +
 +ldys lda #$00 ;ys+0
 + and #$07
 + tax
 +ldp1 lda dypppnt+$00,​x
 + sta +j+1
 +ldp2 lda dypppnt+$08,​x
 + sta +j+2
 + ldy #$00+24
 + ldx #$00+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+2
 + bne +
 + lda #$00 ;ys+2
 + and #$07
 + tax
 + lda dypppnt+$10,​x
 + sta +j+1
 + lda dypppnt+$18,​x
 + sta +j+2
 + ldy #$08+24
 + ldx #$01+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+2
 + bne +
 + lda #$00 ;ys+2
 + and #$07
 + tax
 + lda dypppnt+$20,​x
 + sta +j+1
 + lda dypppnt+$28,​x
 + sta +j+2
 + ldy #$10+24
 + ldx #$02+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+6
 + bne +
 + lda #$00 ;ys+6
 + and #$07
 + tax
 + lda dypppnt+$30,​x
 + sta +j+1
 + lda dypppnt+$38,​x
 + sta +j+2
 + ldy #$18+24
 + ldx #$03+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+8
 + bne +
 + lda #$00 ;ys+8
 + and #$07
 + tax
 + lda dypppnt+$40,​x
 + sta +j+1
 + lda dypppnt+$48,​x
 + sta +j+2
 + ldy #$20+24
 + ldx #$04+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+10
 + bne +
 + lda #$00 ;ys+10
 + and #$07
 + tax
 + lda dypppnt+$50,​x
 + sta +j+1
 + lda dypppnt+$58,​x
 + sta +j+2
 + ldy #$28+24
 + ldx #$05+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+12
 + bne +
 + lda #$00 ;ys+12
 + and #$07
 + tax
 + lda dypppnt+$60,​x
 + sta +j+1
 + lda dypppnt+$68,​x
 + sta +j+2
 + ldy #$30+24
 + ldx #$06+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+14
 + bne +
 + lda #$00 ;ys+14
 + and #$07
 + tax
 + lda dypppnt+$70,​x
 + sta +j+1
 + lda dypppnt+$78,​x
 + sta +j+2
 + ldy #$38+24
 + ldx #$07+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+16
 + bne +
 + lda #$00 ;ys+16
 + and #$07
 + tax
 + lda dypppnt+$80,​x
 + sta +j+1
 + lda dypppnt+$88,​x
 + sta +j+2
 + ldy #$40+24
 + ldx #$08+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+18
 + bne +
 + lda #$00 ;ys+18
 + and #$07
 + tax
 + lda dypppnt+$50,​x
 + sta +j+1
 + lda dypppnt+$58,​x
 + sta +j+2
 + ldy #$48+24
 + ldx #$09+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+20
 + bne +
 + lda #$00 ;ys+20
 + and #$07
 + tax
 + lda dypppnt+$a0,​x
 + sta +j+1
 + lda dypppnt+$a8,​x
 + sta +j+2
 + ldy #$50+24
 + ldx #$0a+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+22
 + bne +
 + lda #$00 ;ys+22
 + and #$07
 + tax
 + lda dypppnt+$b0,​x
 + sta +j+1
 + lda dypppnt+$b8,​x
 + sta +j+2
 + ldy #$58+24
 + ldx #$0b+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+24
 + bne +
 + lda #$00 ;ys+24
 + and #$07
 + tax
 + lda dypppnt+$c0,​x
 + sta +j+1
 + lda dypppnt+$c8,​x
 + sta +j+2
 + ldy #$60+24
 + ldx #$0c+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+26
 + bne +
 + lda #$00 ;ys+26
 + and #$07
 + tax
 + lda dypppnt+$10,​x
 + sta +j+1
 + lda dypppnt+$18,​x
 + sta +j+2
 + ldy #$68+24
 + ldx #$0d+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+28
 + bne +
 + lda #$00 ;ys+28
 + and #$07
 + tax
 + lda dypppnt+$20,​x
 + sta +j+1
 + lda dypppnt+$28,​x
 + sta +j+2
 + ldy #$70+24
 + ldx #$0e+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+30
 + bne +
 + lda #$00 ;ys+30
 + and #$07
 + tax
 + lda dypppnt+$30,​x
 + sta +j+1
 + lda dypppnt+$38,​x
 + sta +j+2
 + ldy #$78+24
 + ldx #$0f+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+16
 + bne +
 + lda #$00 ;ys+16
 + and #$07
 + tax
 + lda dypppnt+$40,​x
 + sta +j+1
 + lda dypppnt+$48,​x
 + sta +j+2
 + ldy #$80+24
 + ldx #$10+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+34
 + bne +
 + lda #$00 ;ys+34
 + and #$07
 + tax
 + lda dypppnt+$10,​x
 + sta +j+1
 + lda dypppnt+$18,​x
 + sta +j+2
 + ldy #$88+24
 + ldx #$11+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+36
 + bne +
 + lda #$00 ;ys+36
 + and #$07
 + tax
 + lda dypppnt+$20,​x
 + sta +j+1
 + lda dypppnt+$28,​x
 + sta +j+2
 + ldy #$90+24
 + ldx #$12+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+38
 + bne +
 + lda #$00 ;ys+38
 + and #$07
 + tax
 + lda dypppnt+$30,​x
 + sta +j+1
 + lda dypppnt+$38,​x
 + sta +j+2
 + ldy #$98+24
 + ldx #$13+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+40
 + bne +
 + lda #$00 ;ys+40
 + and #$07
 + tax
 + lda dypppnt+$40,​x
 + sta +j+1
 + lda dypppnt+$48,​x
 + sta +j+2
 + ldy #$a0+24
 + ldx #$14+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+42
 + bne +
 + lda #$00 ;ys+42
 + and #$07
 + tax
 + lda dypppnt+$0150,​x
 + sta +j+1
 + lda dypppnt+$0158,​x
 + sta +j+2
 + ldy #$a8+24
 + ldx #$15+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+44
 + bne +
 + lda #$00 ;ys+44
 + and #$07
 + tax
 + lda dypppnt+$0160,​x
 + sta +j+1
 + lda dypppnt+$0168,​x
 + sta +j+2
 + ldy #$b0+24
 + ldx #$16+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+46
 + bne +
 + lda #$00 ;ys+46
 + and #$07
 + tax
 + lda dypppnt+$0170,​x
 + sta +j+1
 + lda dypppnt+$0178,​x
 + sta +j+2
 + ldy #$b8+24
 + ldx #$17+3
 ++j jsr dypper
 + ldx segment
 ++
 + cpx #$00 ;ydisp+48
 + bne +
 + lda #$00 ;ys+48
 + and #$07
 + tax
 + lda dypppnt+$0180,​x
 + sta +j+1
 + lda dypppnt+$0188,​x
 + sta +j+2
 + lda dypppnt+$00,​x
 + sta +j2+1
 + lda dypppnt+$08,​x
 + sta +j2+2
 + ldy #$c0+24
 + ldx #$18+3
 ++j jsr dypper
 +
 + ldy #$c8+24
 + ldx #$19+3
 ++j2 jsr dypper
 +
 ++
 + rts
 +
 +
 +
 +;​------------------------------------------------------------
 +techtech
 +
 + lda #$34
 + sta $01
 +
 + ldx techpoint+0
 + ldy techpoint+1
 +
 + clc
 + jsr techtecher
 +
 + lda #$37
 + sta $01
 +
 + rts
 +
 +;​------------------------------------------------------------
 +
 +init
 +
 + lda #$36
 + sta $01
 +
 + jsr vicinit
 + jsr clear
 + jsr newfx
 + jsr makeluts
 + jsr makedypper
 + jsr makeshower
 + jsr makezpiniter
 + jsr makezpmover
 + jsr maketechtecher
 + jsr makeysiner
 +
 + lda #0
 + sta generate
 + lda #1
 + sta fadein
 +
 + lda #$0b
 + sta $d011
 + jsr colorinit2
 +
 +
 + rts
 +
 +;​------------------------------------------------------------
 +vicinit
 +
 + lda #$94
 + sta $dd00
 + lda #$ee
 + sta $d018
 + lda #$c8
 + sta $d016
 + lda #$1b
 + sta $d011
 + lda #$00
 + sta $d015
 +
 +
 + ldx #0
 + txa
 +-
 + sta $d800,x
 + sta $d900,x
 + sta $da00,x
 + sta $db00,x
 + inx
 + bne -
 +-
 + lda #$05
 + sta $d800,x
 + lda #$01
 + sta $d9c0,x
 + inx
 + cpx #$c0
 + bne -
 +
 +
 + ldx #0
 + lda #$00
 +-
 + sta $fa30,x
 + inx
 + cpx #$50
 + bne -
 +
 + rts
 +
 +
 +;​------------------------------------------------------------
 +colorinit2
 +
 +
 + lda #$00
 + ldx #$80
 +-
 + sta $d800,x
 + dex
 + bne -
 +
 + ldx #0
 + lda #$04
 +-
 + sta $d8c8,x
 + inx
 + cpx #$f0
 + bne -
 +
 + rts
 +
 +;​------------------------------------------------------------
 +clear
 +
 +
 + lda #0
 + tax
 +-
 + sta bitmap+$0640,​x
 + sta bitmap+$0700,​x
 + sta bitmap+$0800,​x
 + sta bitmap+$0900,​x
 + sta bitmap+$0a00,​x
 + sta bitmap+$0b00,​x
 + sta bitmap+$0c00,​x
 + sta bitmap+$0d00,​x
 + inx
 + bne -
 +
 + rts
 +
 +;​------------------------------------------------------------
 +makeluts
 +
 +
 + lda #$34
 + sta $01
 +
 +
 +
 + ;make dypppp (used to determine which of the 3 dypp "​anims"​ (up/​straight/​down) to use)
 +  
 + lda #>​dypppnt+$02
 + sta dypppp
 +
 + ldx #1
 +-
 + txa
 + bmi +
 + lda #>​dypppnt+$00
 + jmp +j
 ++ lda #>​dypppnt+$04
 ++j sta dypppp,x
 + inx
 + bne -
 +
 +
 + jmp +notest
 + ;test...
 + lda #>​dypppnt+$02
 + ldx #0
 +-
 + sta dypppp,x
 + inx
 + bne -
 +
 ++notest
 +
 +
 +
 + lda #$37
 + sta $01
 +
 + rts
 +
 +;​------------------------------------------------------------
 +makedypper
 +
 +
 +.la height=26
 +
 + sei
 + lda #$34
 + sta $01
 +
 +
 + lda #<dypper
 + sta $fe
 + lda #>dypper
 + sta $ff
 +
 +
 + lda #0
 + sta +version
 +
 +-loop4
 +
 + lda #0
 + sta +x
 +
 +
 +
 +-loop3
 +
 +
 + ;if not original, skip it...
 +  
 + ldx +x
 + lda orig,x
 + bne +
 + jmp +skipit
 ++
 +
 + ;fetch gfx/cols...
 +
 + ldx +x
 + lda recycle,x
 + beq +black
 + sec
 + sbc #1
 + pha
 + sta $f8
 + lda #0
 + sta $f9
 + ;*18...
 + asl $f8
 + rol $f9
 + asl $f8
 + rol $f9
 + asl $f8
 + rol $f9
 + asl $f8
 + rol $f9
 + pla
 + asl
 + clc
 + adc $f8
 + sta $f8
 + lda #0
 + adc $f9
 + sta $f9
 +
 + lda $f8
 + sta $fa
 +
 + lda +version
 + asl
 + asl
 + clc
 + adc $f9
 + adc #>​logosrc
 + sta $f9
 + adc #$02
 + sta $fb
 +
 + ldy #0
 +-
 + lda ($f8),y
 + sta dyppergfx+4,​y
 + lda ($fa),y
 + sta dyppercols+4,​y
 + iny
 + cpy #18
 + bne -
 +
 + jmp +
 +
 ++black
 +
 + ldy #0
 + tya
 +-
 + sta dyppergfx+3,​y
 + sta dyppercols+3,​y
 + iny
 + cpy #18
 + bne -
 +
 ++
 +
 +
 + lda #0
 + sta +ydisp
 +
 +
 +
 +
 +
 +-loop2
 +
 +
 +
 + ldy #0
 + tya
 +-
 + sta gfxused,y
 + sta colused,y
 + iny
 + cpy #height
 + bne -
 +
 +
 + ;skip upper/lower bytes, depending which way it points...
 + lda +version
 + cmp #0
 + bne +
 + ;​version==0 (up)
 + lda #1
 + ;sta gfxused+0
 + ;sta colused+0
 + jmp +j
 ++
 + cmp #1
 + bne +
 + ;​version==1 (straight)
 + lda #1
 + sta gfxused+0
 + sta colused+0
 + sta gfxused+height-1
 + sta colused+height-1
 + jmp +j
 ++
 + ;​version==2 (down)
 + lda #1
 + ;sta gfxused+height-1
 + ;sta colused+height-1
 ++j
 +
 +
 +
 +
 + ;store dypper-pointers (replaces jumpers)...
 + lda +x
 + sta $f0
 + lda #$00
 + sta $f1
 + asl $f0
 + rol $f1
 + asl $f0
 + rol $f1
 + asl $f0
 + rol $f1
 + asl $f0
 + rol $f1
 + lda +version
 + asl
 + clc
 + adc $f1
 + adc #>​dypppnt
 + sta $f1
 + ldy +ydisp
 + lda $fe
 + sta ($f0),y
 + tya
 + ora #$08
 + tay
 + lda $ff
 + sta ($f0),y
 +
 +
 +
 +;make gfx-dypper...
 +
 +
 + lda +ydisp
 + asl
 + clc
 + adc #$02
 + sta +s1+1
 +
 + lda #0
 + sta +y
 +
 +-loop
 +
 + ldy +y
 + lda gfxused,y
 + bne +skip
 + lda dyppergfx,y
 + sta +l1+1
 +
 +
 + ldy #0
 +-
 + lda dyppersrc,y
 + sta ($fe),y
 + iny
 + cpy #4
 + bne -
 +
 + jsr yaddfe
 +
 +
 + ldx +y
 + lda #1
 + sta gfxused,x
 +
 + ;check for other similar bytes...
 +
 + ldy +s1+1
 + iny
 + iny
 + sty +s2+1
 +
 + inx
 + cpx #height
 + beq +skip
 +-check
 + lda +l1+1
 + cmp dyppergfx,x
 + beq +found
 +-cont
 + inc +s2+1
 + inc +s2+1
 + inx
 + cpx #height
 + bne -check
 + jmp +skip
 ++found
 + lda gfxused,x
 + bne -cont
 + lda #1
 + sta gfxused,x
 + ldy #0
 + lda dyppersrc2+0
 + sta ($fe),y
 + iny
 + lda dyppersrc2+1
 + sta ($fe),y
 + iny
 + jsr yaddfe
 + jmp -cont
 +
 +
 ++skip
 +
 +
 + inc +s1+1
 + inc +s1+1
 +
 + inc +y
 + lda +y
 + cmp #height
 + bne -loop
 +
 +
 ++end
 +
 +
 +
 +
 +;make color-dypper...
 +
 +
 + lda +ydisp
 + asl
 + clc
 + adc #$72
 + sta +s1+1
 +
 + lda #0
 + sta +y
 + sta +txycop
 +-loop
 +
 + ldy +y
 + lda colused,y
 + beq +
 + jmp +skip   ;if color is allready drawn, skip it
 ++
 + lda dyppercols,​y
 + sta +l1+1
 + bne +
 + jmp +skip   ;if byte=black, skip color
 ++
 +
 + ;copy txa,tay for 1st byte...
 + lda +txycop
 + bne +
 + ldy #0
 + lda +txysrc
 + sta ($fe),y
 + iny
 + lda +txysrc+1
 + sta ($fe),y
 + iny
 + jsr yaddfe
 + lda #1
 + sta +txycop
 ++
 +
 + jsr singlecolorcheck
 +
 + ldy #0
 +-
 + lda dyppersrc,y
 + sta ($fe),y
 + iny
 + cpy #4
 + bne -
 +
 + jsr yaddfe
 +
 +
 +
 + ldx +y
 + lda #1
 + sta colused,x
 +
 + ;check for other similar bytes...
 +
 + ldy +s1+1
 + iny
 + iny
 + sty +s2+1
 +
 + inx
 + cpx #height
 + beq +skip
 +-check
 + ;check for same color...
 + lda +l1+1
 + cmp dyppercols,​x
 + beq +found
 +
 + ;check for singlecolors with same color in left nybble...
 + lda +l1+1
 + and #$f0
 + cmp dyppercols,​x
 + beq +found
 +
 + ;​if(singlecolor) singlecolorcheck has allready checked for non-singlecolors that matches...
 +
 +-cont
 + inc +s2+1
 + inc +s2+1
 + inx
 + cpx #height
 + bne -check
 + jmp +skip
 ++found
 + lda colused,x
 + bne -cont
 + lda #1
 + sta colused,x
 + ldy #0
 + lda dyppersrc2+0
 + sta ($fe),y
 + iny
 + lda dyppersrc2+1
 + sta ($fe),y
 + iny
 + jsr yaddfe
 + jmp -cont
 +
 +
 ++skip
 +
 +
 + inc +s1+1
 + inc +s1+1
 +
 + inc +y
 + lda +y
 + cmp #height
 + beq +end
 + jmp -loop
 +
 +
 ++end
 +
 + ldy #0
 + lda #$60
 + sta ($fe),y
 + iny
 + jsr yaddfe
 +
 ++skippy
 +
 + inc +ydisp
 + lda +ydisp
 + cmp #8
 + beq +
 + jmp -loop2
 +
 ++
 +
 +
 ++skipit
 +
 +
 + inc +x
 + lda +x
 + cmp #26
 + beq +
 +
 + jmp -loop3
 +
 ++
 +
 + inc +version
 + lda +version
 + cmp #3
 + beq +
 + jmp -loop4
 ++
 +
 +
 + lda #$36
 + sta $01
 +
 + rts
 +
 +
 +
 +
 +
 +
 +singlecolorcheck
 +
 + ;​if(singlecolor) check for non-singlecolors that matches...
 + ;if(match found) color is corrected from singlecolor to the matching "​multicolor",​
 + ;and it will be found later, hopefully
 +
 + lda +l1+1
 + and #$0f
 + beq +
 + rts
 ++
 + ldx +y
 + inx
 + cpx #height
 + beq +end
 +-loop
 + lda dyppercols,​x
 + and #$f0
 + cmp +l1+1
 + bne +
 +
 + ;match found!
 + lda dyppercols,​x
 + sta +l1+1
 + rts
 ++
 + inx
 + cpx #height
 + bne -loop
 +
 ++end
 + rts
 +
 +
 +
 +
 +
 +
 ++x .by 0
 ++y .by 0
 ++ydisp .by 0
 ++version .by 0
 +
 ++txycop .by 0
 ++txysrc
 + txa
 + tay
 +
 +dyppersrc
 +
 ++l1 lda #%00000000
 ++s1 sta ($02),y
 +
 +dyppersrc2
 +
 ++s2 sta ($02),y
 +
 +
 ++last .by 0
 +
 +dyppergfx
 +
 + .by 0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0
 +
 +
 +dyppercols
 +
 + .by 0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0,​0
 +
 +
 +
 +gfxused .text " ​                         "
 +colused .text " ​                         "
 +
 +recycle .by 0,​1,​2,​3,​4,​5,​6,​7,​8,​5,​10,​11,​12,​1,​2,​3,​4,​1,​2,​3,​4,​21,​22,​23,​24,​0
 +orig .by 1,​1,​1,​1,​1,​1,​1,​1,​1,​0,​1,​ 1, 1, 0,​0,​0,​0,​0,​0,​0,​0,​ 1, 1, 1, 1,0
 +
 +
 +
 +
 +;​------------------------------------------------------------
 +makeshower
 +
 + lda #<shower
 + sta $fe
 + lda #>shower
 + sta $ff
 +
 + lda #0
 + sta +y
 +
 +-loop
 + lda +y
 + and #$07
 + tay
 + clc
 + adc #<d011
 + sta +l1+1
 +
 + lda +y
 + sec
 + sbc #7
 + bcs +
 + lda +l1+1
 + clc
 + adc #$08
 + sta +l1+1
 ++
 + lda d018,y
 + sta +l2+1
 + ;lda +l3+1
 + ;clc
 + ;adc #1
 + ;sta +l3+1
 + ;lda +l3+2
 + ;adc #0
 + ;sta +l3+2
 +
 + ldy #0
 +-
 + lda showersrc,y
 + sta ($fe),y
 + iny
 + cpy #20
 + bne -
 + jsr yaddfe
 +
 + inc +y
 + lda +y
 + cmp #$34
 + bne -loop
 +
 + lda #$60
 + ldy #0
 + sta ($fe),y
 +
 + rts
 +
 ++y .by 0
 +
 +showersrc
 +
 ++l1 lda d011
 + sta $d011
 ++l2 lda #$00
 + sta $d018
 + lda #$00
 + and #$07
 + ora #$d8
 + sta $d016
 + nop
 + ;nop
 +
 +
 +;​------------------------------------------------------------
 +makezpmover
 +
 + lda #<​zpmover
 + sta $fe
 + lda #>​zpmover
 + sta $ff
 +
 + lda #0
 + sta +y
 +
 +-loop
 +
 + ;check adr for splitting...
 +
 + lda $fe
 + sec
 + sbc #$c0
 + bcc +
 + lda $ff
 + and #$03
 + bne +
 +
 + ldy #$00
 + lda #$4c
 + sta ($fe),y
 + iny
 + lda #$e0
 + sta ($fe),y
 + iny
 + lda $ff
 + clc
 + adc #$01
 + sta ($fe),y
 +
 + sta $ff
 + lda #$e0
 + sta $fe
 ++
 +
 +
 + ldy #0
 +-
 + lda zpmoversrc,​y
 + sta ($fe),y
 + iny
 + cpy #8
 + bne -
 + jsr yaddfe
 +
 + inc +l1+1
 + inc +s1+1
 + inc +l2+1
 + inc +s2+1
 +
 + inc +y
 + lda +y
 + cmp #$50
 + bne -loop
 +
 + lda #$60
 + ldy #0
 + sta ($fe),y
 +
 + rts
 +
 ++y .by 0
 +
 +zpmoversrc
 +
 ++l1 lda $12
 ++s1 sta $02
 ++l2 lda $82
 ++s2 sta $72
 +
 +
 +;​------------------------------------------------------------
 +makezpiniter
 +
 +
 +
 + lda #$34
 + sta $01
 +
 + ;calc gfx-adrs...
 +
 + lda #$40
 + sta +adr
 + lda #$c6
 + sta +adr+1
 +
 + ldy #$00
 + ldx #$00
 +-
 + lda +adr
 + sta temp+$02,y
 + lda +adr+1
 + sta temp+$03,y
 +
 + inc +adr
 +
 + inx
 + iny
 + iny
 + tya
 + and #$0f
 + bne +
 +
 + lda +adr
 + clc
 + adc #$38
 + sta +adr
 + lda +adr+1
 + adc #$01
 + sta +adr+1
 ++
 + cpy #$60
 + bne -
 +
 +
 +
 + ;calc color-adrs...
 +
 + lda #$c8
 + sta +adr
 + lda #$e0
 + sta +adr+1
 +
 + ldy #$00
 + ldx #$00
 +-
 + lda +adr
 + sta temp+$72,y
 + lda +adr+1
 + sta temp+$73,y
 +
 + lda +adr+1
 + clc
 + adc #$04
 + sta +adr+1
 +
 + inx
 + iny
 + iny
 + tya
 + and #$0f
 + bne +
 +
 + lda +adr+1
 + and #$03
 + ora #$e0
 + sta +adr+1
 +
 + lda +adr
 + clc
 + adc #$28
 + sta +adr
 + lda +adr+1
 + adc #$00
 + sta +adr+1
 ++
 + cpy #$60
 + bne -
 +
 +
 +
 +
 +
 + lda #<​zpiniter
 + sta $fe
 + lda #>​zpiniter
 + sta $ff
 +
 +
 +
 + ;​gfx-adrs...
 +
 + ldx #0
 +-loop1
 +
 + lda temp+$03,x
 + sta +l2+1
 +
 + txa
 + and #$0f
 + beq +ldasta
 +
 + ldy #0
 +-
 + lda zpinitersrc+2,​y
 + sta ($fe),y
 + iny
 + cpy #2
 + bne -
 + jsr yaddfe
 + jmp +
 +
 ++ldasta
 +
 + ldy #0
 +-
 + lda zpinitersrc,​y
 + sta ($fe),y
 + iny
 + cpy #4
 + bne -
 + jsr yaddfe
 +
 ++
 + inc +s2+1
 + inc +s2+1
 +
 + inx
 + inx
 + cpx #$60
 + bne -loop1
 +
 +
 +
 +
 +
 + ;​color-adrs...
 +
 +
 + ldx #0
 +-loop2
 +
 + lda temp+$73,x
 + beq +skip
 + sta +l2+1
 +
 + txa
 + clc
 + adc #$73
 + sta +s2+1
 +
 + ldy #0
 +-
 + lda zpinitersrc,​y
 + sta ($fe),y
 + iny
 + cpy #4
 + bne -
 + jsr yaddfe
 +
 +
 + ;search for similar bytes...
 +
 + cpx #$60-2
 + beq +end
 +
 + txa
 + pha
 +
 +-search
 + inx
 + inx
 + cpx #$60
 + beq +done
 +
 + lda temp+$73,x
 + cmp +l2+1
 + bne -search
 +
 + txa
 + clc
 + adc #$73
 + sta +s2+1
 +
 + ldy #0
 +-
 + lda zpinitersrc+2,​y
 + sta ($fe),y
 + iny
 + cpy #2
 + bne -
 + jsr yaddfe
 + lda #0
 + sta temp+$73,x
 + jmp -search
 ++done
 + pla
 + tax
 ++skip
 + inx
 + inx
 + cpx #$60
 + bne -loop2
 ++end
 +
 + lda #$60
 + ldy #0
 + sta ($fe),y
 +
 +
 + lda #$37
 + sta $01
 +
 + rts
 +
 +
 +zpinitersrc
 +
 ++l2 lda #$00
 ++s2 sta $03
 +
 +
 ++adr .wo $c640
 +
 +
 +;​------------------------------------------------------------
 +maketechtecher
 +
 +
 + lda #<​techtecher
 + sta $fe
 + lda #>​techtecher
 + sta $ff
 +
 + lda #0
 + sta +y
 +
 + ldy #0
 +-
 + lda techtechersrc_,​y
 + sta techtechersrc,​y
 + iny
 + cpy #25
 + bne -
 +
 +-loop
 +
 +
 + ldy #0
 +-
 + lda techtechersrc,​y
 + sta ($fe),y
 + iny
 + cpy #25
 + bne -
 + jsr yaddfe
 +
 +
 + ;check adr for splitting...
 +
 + lda $fe
 + sec
 + sbc #$c0
 + bcc +
 + lda $ff
 + and #$03
 + bne +
 +
 + ldy #$00
 + lda #$4c
 + sta ($fe),y
 + iny
 + lda #$e0
 + sta ($fe),y
 + iny
 + lda $ff
 + clc
 + adc #$01
 + sta ($fe),y
 +
 + sta $ff
 + lda #$e0
 + sta $fe
 ++
 +
 +
 + lda +l1+1
 + clc
 + adc techspread+0 ;#$04
 + sta +l1+1
 +
 + lda +l2+1
 + clc
 + adc techspread+1 ;#$07
 + sta +l2+1
 +
 + lda +s1+1
 + clc
 + adc #20
 + sta +s1+1
 + lda +s1+2
 + adc #$00
 + sta +s1+2
 +
 + lda +s2+1
 + clc
 + adc #$02
 + sta +s2+1
 +
 + lda +o1+1
 + clc
 + adc #$01
 + sta +o1+1
 + and #$07
 + bne +
 + lda +o1+1
 + and #$c0
 + clc
 + adc #$40
 + sta +o1+1
 + lda +o2+1
 + clc
 + adc #$28
 + sta +o2+1
 ++
 + lda +s3+1
 + clc
 + adc #$02
 + sta +s3+1
 +
 + inc +y
 + lda +y
 + cmp #$30
 + beq +
 + jmp -loop
 ++
 +
 + lda #$60
 + ldy #0
 + sta ($fe),y
 +
 + rts
 +
 ++y .by 0
 +
 +techtechersrc
 +
 +;********* COPIED FROM BELOW!!! ***********
 +
 ++l1 lda techsine,x
 ++l2 adc techsine,y
 + lsr
 ++s1 sta shower+132 ;(20*6+12)
 + and #$38
 ++o1 ora #$40
 ++s2 sta $02
 + and #$38
 + lsr
 + lsr
 + lsr
 ++o2 ora #$c8
 ++s3 sta $72
 +
 +;********* COPIED FROM BELOW!!! ***********
 +
 +
 +techtechersrc_
 +
 ++l1 lda techsine,x
 ++l2 adc techsine,y
 + lsr
 ++s1 sta shower+132 ;(20*6+12)
 + and #$38
 ++o1 ora #$40
 ++s2 sta $02
 + and #$38
 + lsr
 + lsr
 + lsr
 ++o2 ora #$c8
 ++s3 sta $72
 +
 +
 +;​------------------------------------------------------------
 +
 +.la cpydisp_=cpydisp+1
 +.la ldys_=ldys+1
 +.la subys_=0; subys+1
 +
 +
 +makeysiner
 +
 + lda #<ysiner
 + sta $fe
 + lda #>ysiner
 + sta $ff
 +
 + lda #0
 + sta +x
 +
 + lda #$00
 + sta +l1+1
 + sta +a1+1
 + lda dyppspread+0
 + sta +l2+1
 + lda dyppspread+1
 + sta +a2+1
 +
 +
 + ldy #0
 +-
 + lda ysinersrc_,​y
 + sta ysinersrc,y
 + iny
 + cpy #43
 + bne -
 +
 +
 +
 +-loop
 +
 + ldx +x
 + lda +os,x
 + sta +o+1
 +
 + ldy #0
 +-
 + lda ysinersrc,y
 + sta ($fe),y
 + iny
 + cpy #35
 + bne -
 + jsr yaddfe
 +
 + ;skip copying "​ora"​ if it's "ora #0"...
 +
 + ;ldx #0
 + lda +o+1
 + eor #1
 + asl
 + tax
 + ldy #0
 +-
 + lda +o,x ;​ysinersrc+35,​y
 + sta ($fe),y
 + iny
 + inx
 + cpx #8
 + bne -
 + jsr yaddfe
 +
 + lda +l1+1
 + clc
 + adc dyppspread+0
 + clc
 + adc dyppspread+0
 + sta +l1+1
 + clc
 + adc dyppspread+0
 + sta +l2+1
 +
 + lda +a1+1
 + clc
 + adc dyppspread+1
 + clc
 + adc dyppspread+1
 + sta +a1+1
 + clc
 + adc dyppspread+1
 + sta +a2+1
 +
 +
 + lda +s1+1
 + clc
 + adc #30
 + sta +s1+1
 + sta +sub1+1
 + lda +s1+2
 + adc #0
 + sta +s1+2
 + sta +sub1+2
 +
 + lda +s2+1
 + clc
 + adc #30
 + sta +s2+1
 + lda +s2+2
 + adc #0
 + sta +s2+2
 +
 + ;lda #43
 + lda +o+1
 + asl
 + clc
 + adc #41
 + clc
 + adc +s3+1
 + sta +s3+1
 + lda +s3+2
 + adc #0
 + sta +s3+2
 +
 + lda +s4+1
 + clc
 + adc #30
 + sta +s4+1
 + lda +s4+2
 + adc #0
 + sta +s4+2
 +
 + lda +s5+1
 + clc
 + adc #30
 + sta +s5+1
 + lda +s5+2
 + adc #0
 + sta +s5+2
 +
 +
 + inc +x
 + lda +x
 + cmp #26-1
 + beq +
 + jmp -loop
 ++
 + lda #$60
 + ldy #0
 + sta ($fe),y
 +
 + rts
 +
 ++x .by 0
 +
 +
 ++os .by 0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 1,1,1,1, 0
 +
 +ysinersrc
 +
 +; ****** copied from ysinersrc_! *******
 +
 ++l1 lda dyppsine,x
 + clc
 ++a1 adc dyppsine,y
 + lsr
 ++s1 sta ldys_ ;ys
 + lsr
 + lsr
 + lsr
 ++s2 sta cpydisp_ ;ydisp
 ++l2 lda dyppsine+4,​x
 + clc
 ++a2 adc dyppsine+4,​y
 + lsr
 + sec
 ++sub1 sbc ldys_
 ++s3 sta ysiner+33; +smc+1
 ++smc lda dypppp
 ++o ora #$00
 ++s4 sta ldp1+2
 ++s5 sta ldp2+2
 +
 +; ****** copied from ysinersrc_! *******
 +
 +
 +ysinersrc_
 +
 +
 ++l1 lda dyppsine,x
 + clc
 ++a1 adc dyppsine,y
 + lsr
 ++s1 sta ldys_ ;ys
 + lsr
 + lsr
 + lsr
 ++s2 sta cpydisp_ ;ydisp
 ++l2 lda dyppsine+4,​x
 + clc
 ++a2 adc dyppsine+4,​y
 + lsr
 + sec
 ++sub1 sbc ldys_
 ++s3 sta ysiner+33; +smc+1
 ++smc lda dypppp
 ++o ora #$00
 ++s4 sta ldp1+2
 ++s5 sta ldp2+2
 +
 + ;43 bytes
 +
 +
 +
 +;​------------------------------------------------------------
 +
 +yaddfe
 + tya
 + clc
 + adc $fe
 + sta $fe
 + lda #0
 + adc $ff
 + sta $ff
 + rts
 +;​------------------------------------------------------------
 +
 +</​code>​
 +
 +
 +
  
base/fli_floffy.txt ยท Last modified: 2015-04-17 04:31 (external edit)