mirror of
https://github.com/antoinevignau/source.git
synced 2025-01-20 02:30:40 +00:00
ba8b564bab
IIe (complete) & IIgs (corrupted) soruce code
1 line
47 KiB
Plaintext
1 line
47 KiB
Plaintext
************************************************************************
|
|
* *
|
|
* GAME SYSTEM *
|
|
* ----------- *
|
|
* *
|
|
* (c) Atreid Concept SA Version 0.5 22/12/90 *
|
|
************************************************************************
|
|
|
|
|
|
|
|
************************************************************************
|
|
GSInit anop ;Temp2= ptr image font
|
|
|
|
jsr Nombre16Init
|
|
jsr Random
|
|
; jsr SoundInit
|
|
rts
|
|
|
|
GSTemp1 ds 4
|
|
GSTemp2 ds 4
|
|
GSTemp3 ds 4
|
|
GSTemp4 ds 4
|
|
GSTemp5 ds 4
|
|
|
|
|
|
;--------------------------
|
|
;init de 'Nombre16'
|
|
|
|
Nombre16Init anop
|
|
|
|
ldx #0 ;on construit une routine pour
|
|
txy ;faire la copie de l'image
|
|
stz Temp ;source vers l'ecran
|
|
Nb16CopyLoop anop
|
|
lda #$bf ; LDA >$bbnnnn,x
|
|
sta Nb16doCopy,x
|
|
lda Temp2+1 ; bb
|
|
sta Nb16doCopy+2,x
|
|
lda Temp2 ; nnnn
|
|
clc
|
|
adc Temp
|
|
sta Nb16doCopy+1,x
|
|
inx
|
|
inx
|
|
inx
|
|
inx
|
|
lda #$99 ; STA nnnn,y
|
|
sta Nb16doCopy,x
|
|
lda #$2000 ; nnnn
|
|
clc
|
|
adc Temp
|
|
sta Nb16doCopy+1,x
|
|
inx
|
|
inx
|
|
inx
|
|
inc Temp
|
|
inc Temp
|
|
iny
|
|
cpy #4
|
|
bne Nb16CopyLoop
|
|
ldy #0
|
|
lda Temp
|
|
clc
|
|
adc #160-8
|
|
sta Temp
|
|
cmp #2560
|
|
bne Nb16CopyLoop
|
|
|
|
rts
|
|
|
|
|
|
;--------------------------
|
|
;init de 'Sound'
|
|
|
|
SoundInit anop
|
|
sei
|
|
sep #$20
|
|
longa off
|
|
|
|
lda >$e100ca ;acces aux registres
|
|
and #$0f
|
|
sta >$e0c03c
|
|
|
|
lda #$e1 ;registre $e1
|
|
sta >$e0c03e ;SoundAdrL
|
|
lda #$40 ;32 oscillateurs * 2
|
|
sta >$e0c03d ;SoundData
|
|
|
|
rep #$30
|
|
longa on
|
|
|
|
cli
|
|
rts
|
|
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
PaintRect anop ;GSTemp1 = coor. x
|
|
anop ;GSTemp1+2= coor. y
|
|
anop ;GSTemp2 = dep relatif x
|
|
anop ;GSTemp2+2= dep relatif y
|
|
anop ;GSTemp3 = couleur
|
|
|
|
lda GSTemp2
|
|
lsr a ;un octect = 2 pts
|
|
sta GSTemp2
|
|
lda GSTemp1
|
|
lsr a ;un octect = 2 pts
|
|
ldy GSTemp1+2
|
|
PRLoop anop
|
|
cpy #0
|
|
beq PR2
|
|
dey
|
|
clc
|
|
adc #160
|
|
bra PRLoop
|
|
|
|
PR2 anop
|
|
clc
|
|
adc #$2000
|
|
sta PR4+1
|
|
ldx #0
|
|
txy
|
|
PR3 anop
|
|
lda GSTemp3
|
|
PR4 sta >$e12000,x
|
|
inx
|
|
inx
|
|
cpx GSTemp2
|
|
blt PR3
|
|
lda PR4+1
|
|
clc
|
|
adc #160
|
|
sta PR4+1
|
|
ldx #0
|
|
iny
|
|
cpy GSTemp2+2
|
|
blt PR3
|
|
rts
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
ErrTexte8 anop ;a= C string ptr
|
|
anop ;x= position x
|
|
anop ;y= position y
|
|
|
|
stz GSTemp1 ;Invert ($1e)
|
|
stz GSTemp2 ;Underline ($1f)
|
|
pha
|
|
txa
|
|
clc
|
|
lsr a
|
|
ErrT8L1 anop ;calcul de l'offset ecran
|
|
cpy #0
|
|
beq ErrT8L2
|
|
clc
|
|
adc #160
|
|
dey
|
|
bra ErrT8L1
|
|
|
|
ErrT8L2 anop
|
|
sta GSTemp3 ;offset
|
|
sta GSTemp4
|
|
phd
|
|
tsc
|
|
tcd
|
|
|
|
ldy #0
|
|
ErrT8L3 anop
|
|
lda (3),y
|
|
and #$ff
|
|
cmp #0
|
|
beq ErrT8L4
|
|
phy
|
|
jsr ErrT8Aff
|
|
ply
|
|
iny
|
|
bra ErrT8L3
|
|
|
|
ErrT8L4 anop
|
|
pld
|
|
pla
|
|
rts
|
|
|
|
ErrT8Aff anop
|
|
cmp #$20
|
|
bge ErrT8Aff0
|
|
brl ErrT8Spe
|
|
ErrT8Aff0 anop
|
|
sec
|
|
sbc #$20 ;premier caractere est 'espace'
|
|
stz GSTemp5
|
|
ErrT8Aff1 anop
|
|
sec
|
|
sbc #40 ;40 caracteres par lignes
|
|
bcc ErrT8Aff2
|
|
pha
|
|
lda GSTemp5
|
|
clc
|
|
adc #8*160 ;ligne suivante
|
|
sta GSTemp5
|
|
pla
|
|
bra ErrT8Aff1
|
|
|
|
ErrT8Aff2 anop
|
|
adc #40 ;40 caracteres par lignes
|
|
asl a
|
|
asl a ;4 octets de large par caractere
|
|
clc
|
|
adc GSTemp5
|
|
tay ;offset source
|
|
|
|
ldx GSTemp3
|
|
lda #0
|
|
ErrT8Aff3 anop
|
|
pha
|
|
lda ErrFont8,y
|
|
eor GSTemp1
|
|
sta >$e12000,x
|
|
lda ErrFont8+2,y
|
|
eor GSTemp1
|
|
sta >$e12000+2,x
|
|
tya
|
|
clc
|
|
adc #160
|
|
tay
|
|
txa
|
|
clc
|
|
adc #160
|
|
tax
|
|
pla
|
|
inc a
|
|
cmp #8
|
|
bne ErrT8Aff3
|
|
lda GSTemp2
|
|
beq ErrT8Aff4 ;souligner ?
|
|
|
|
lda GSTemp3
|
|
clc
|
|
adc #7*160
|
|
lda GSTemp1
|
|
eor #$ffff
|
|
sta >$e12000,x
|
|
sta >$e12000+2,x
|
|
|
|
ErrT8Aff4 anop
|
|
lda GSTemp3
|
|
clc
|
|
adc #4
|
|
sta GSTemp3
|
|
rts
|
|
|
|
|
|
ErrT8Spe anop
|
|
cmp #$08 ;fleche gauche
|
|
beq ErrT8Left
|
|
cmp #$09 ;tab
|
|
beq ErrT8Tab
|
|
cmp #$0a ;fleche bas
|
|
beq ErrT8Down
|
|
cmp #$0b ;fleche haut
|
|
beq ErrT8Up
|
|
cmp #$0d ;return
|
|
beq ErrT8CR
|
|
cmp #$15 ;fleche droite
|
|
beq ErrT8Right
|
|
cmp #$1f ;toggle underline
|
|
beq ErrT8Under
|
|
cmp #$1e ;toggle invert
|
|
beq ErrT8Invert
|
|
rts
|
|
|
|
ErrT8Left anop
|
|
lda GSTemp3
|
|
sec
|
|
sbc #4
|
|
sta GSTemp3
|
|
rts
|
|
|
|
ErrT8Tab anop
|
|
lda GSTemp3
|
|
clc
|
|
adc #40 ;+10 caracteres
|
|
sta GSTemp3
|
|
rts
|
|
|
|
ErrT8Down anop
|
|
lda GSTemp3
|
|
clc
|
|
adc #8*160
|
|
sta GSTemp3
|
|
rts
|
|
|
|
ErrT8Up anop
|
|
lda GSTemp3
|
|
sec
|
|
sbc #8*160
|
|
sta GSTemp3
|
|
rts
|
|
|
|
ErrT8CR anop
|
|
lda GSTemp4
|
|
clc
|
|
adc #8*160
|
|
sta GSTemp3
|
|
sta GSTemp4
|
|
rts
|
|
|
|
ErrT8Right anop
|
|
lda GSTemp3
|
|
clc
|
|
adc #4
|
|
sta GSTemp3
|
|
rts
|
|
|
|
ErrT8Under anop
|
|
lda GSTemp2
|
|
eor #$8000
|
|
sta GSTemp2
|
|
rts
|
|
|
|
ErrT8Invert anop
|
|
lda GSTemp1
|
|
eor #$ffff
|
|
sta GSTemp1
|
|
rts
|
|
|
|
copy GSFont.Src
|
|
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
TransTSB16 anop ;GSTemp1= adresse dest
|
|
|
|
PushLong GSTemp1
|
|
|
|
phd
|
|
tsc
|
|
tcd
|
|
|
|
stz GSTemp2
|
|
stz GSTemp3
|
|
ldx #0
|
|
ldy #0
|
|
|
|
TSBRoutLoop anop
|
|
lda #$04 ;TSB nn
|
|
sta [3],y
|
|
iny
|
|
lda GSTemp3 ;nn
|
|
inc GSTemp3
|
|
inc GSTemp3
|
|
sta [3],y
|
|
iny
|
|
|
|
NextTSB anop
|
|
lda GSTemp3
|
|
cmp #166 ;Ligne + nb oct/ligne
|
|
beq NextT1
|
|
cmp #6 ;nb octets/ligne
|
|
bne NextT2
|
|
lda GSTemp3
|
|
clc
|
|
adc #160-6 ;Ligne - nb oct/ligne
|
|
sta GSTemp3
|
|
bra NextT2
|
|
NextT1 anop
|
|
stz GSTemp3
|
|
lda #$7b ;TDC
|
|
sta [3],y
|
|
iny
|
|
lda #$69 ;ADC #nnnn
|
|
sta [3],y
|
|
iny
|
|
lda #320 ;nnnn A 2 Lignes
|
|
sta [3],y
|
|
iny
|
|
iny
|
|
lda #$5b ;TCD
|
|
sta [3],y
|
|
iny
|
|
lda #$98 ;TYA
|
|
sta [3],y
|
|
iny
|
|
NextT2 anop
|
|
inx
|
|
inx
|
|
cpx #66 ;Nb octetsA 6octets*11lignes
|
|
bne TSBRoutLoop
|
|
RoutLoop2 lda #$6b ;RTL
|
|
sta [3],y
|
|
iny
|
|
|
|
pld
|
|
pla
|
|
pla
|
|
rts
|
|
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
Linear16 anop ;GSTemp1= adresse source
|
|
anop ;GSTemp2= adresse dest
|
|
|
|
PushLong GSTemp1
|
|
PushLong GSTemp2
|
|
|
|
phd
|
|
tsc
|
|
tcd
|
|
|
|
ldy #0
|
|
ldx #0
|
|
Linear16Loop anop
|
|
lda [7],y
|
|
phy
|
|
txy
|
|
sta [3],y
|
|
ply
|
|
iny
|
|
iny
|
|
inx
|
|
inx
|
|
lda [7],y
|
|
phy
|
|
txy
|
|
sta [3],y
|
|
ply
|
|
iny
|
|
iny
|
|
inx
|
|
inx
|
|
lda [7],y
|
|
phy
|
|
txy
|
|
sta [3],y
|
|
ply
|
|
iny
|
|
iny
|
|
inx
|
|
inx
|
|
lda [7],y
|
|
phy
|
|
txy
|
|
sta [3],y
|
|
ply
|
|
inx
|
|
inx
|
|
tya
|
|
clc
|
|
adc #160-6 ;16 points par ligne
|
|
tay
|
|
cpx #16*8 ;16 lignes * 8 octets
|
|
blt Linear16Loop
|
|
|
|
pld
|
|
pla
|
|
pla
|
|
pla
|
|
pla
|
|
rts
|
|
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
ZPBank anop ;a=0/1 zp-s bank $0/1
|
|
|
|
plx
|
|
cmp #0
|
|
beq ZPBank0
|
|
|
|
tsc
|
|
sta ZPBankStack
|
|
|
|
sep #$30
|
|
longa off
|
|
lda >$e0C068
|
|
sta ZPBankStat
|
|
ora #$34
|
|
sta >$e0C068
|
|
rep #$30
|
|
longa on
|
|
|
|
lda #$9df0
|
|
tcs ;fixe la stack apres les SCBs
|
|
phx
|
|
rts
|
|
|
|
ZPBank0 anop
|
|
longa off
|
|
sep #$30
|
|
lda ZPBankStat
|
|
sta >$e0C068
|
|
rep #$30
|
|
longa on
|
|
|
|
lda ZPBankStack
|
|
tcs
|
|
phx
|
|
rts
|
|
|
|
ZPBankStat ds 1
|
|
ZPBankStack ds 2
|
|
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
CursorCSet16 anop ;a= adresse data curseur (16*16)
|
|
anop ;y=$0101/$e1e1 bank dest
|
|
anop ;x= adresse memoire destination
|
|
|
|
sty GSTemp5
|
|
sta CursorRoutLoop+1
|
|
phx
|
|
|
|
phd
|
|
tsc
|
|
tcd
|
|
|
|
jsr CursorLoop0
|
|
|
|
pld
|
|
pla
|
|
rts
|
|
|
|
CursorLoop0 anop
|
|
ldy #0
|
|
ldx #0
|
|
stz GSTemp4
|
|
stz GSTemp3
|
|
stz GSTemp1
|
|
lda #$8b ;PHB
|
|
sta (3),y
|
|
iny
|
|
lda #$a9 ; LDA #nnnn
|
|
sta (3),y
|
|
iny
|
|
lda GSTemp5 ;nnnn
|
|
sta (3),y
|
|
iny
|
|
iny
|
|
lda #$48 ;PHA
|
|
sta (3),y
|
|
iny
|
|
lda #$ab ;PLB
|
|
sta (3),y
|
|
iny
|
|
lda #$ab ;PLB
|
|
sta (3),y
|
|
iny
|
|
|
|
CursorRoutLoop lda NextWord2,x
|
|
sta GSTemp2
|
|
jsr TestTrans
|
|
bcs doTrans20
|
|
bra doCopy2
|
|
|
|
NextWord2 anop
|
|
inc GSTemp1
|
|
lda GSTemp1
|
|
cmp #4 ;Nb word/ligne
|
|
bne CursorNW2
|
|
stz GSTemp1
|
|
lda GSTemp3
|
|
clc
|
|
adc #152 ;160 - 8 (nb oct/ligne)
|
|
sta GSTemp3
|
|
CursorNW2 anop
|
|
inx
|
|
inx
|
|
cpx #128 ;Nb octetsA 8octets*16lignes
|
|
bne CursorRoutLoop
|
|
brl TransLoop22
|
|
|
|
doCopy2 anop
|
|
lda GSTemp2
|
|
cmp GSTemp4
|
|
beq SameSTY2
|
|
lda #$a9 ;LDA #nnnn
|
|
sta (3),y
|
|
iny
|
|
lda GSTemp2 ;nnnn
|
|
sta (3),y
|
|
iny
|
|
iny
|
|
sta GSTemp4
|
|
SameSTY2 anop
|
|
lda #$9d ;STA nnnn,x
|
|
sta (3),y
|
|
iny
|
|
lda GSTemp3
|
|
inc GSTemp3
|
|
inc GSTemp3
|
|
sta (3),y ;nnnn
|
|
iny
|
|
iny
|
|
brl NextWord2
|
|
|
|
doTrans20 anop
|
|
phx
|
|
stz GSTemp4
|
|
lda #$000f
|
|
tax
|
|
and GSTemp2
|
|
jsr ModTemp4
|
|
lda #$00f0
|
|
tax
|
|
and GSTemp2
|
|
jsr ModTemp4
|
|
lda #$0f00
|
|
tax
|
|
and GSTemp2
|
|
jsr ModTemp4
|
|
lda #$f000
|
|
tax
|
|
and GSTemp2
|
|
jsr ModTemp4
|
|
lda GSTemp4
|
|
bne doTrans22
|
|
inc GSTemp3
|
|
inc GSTemp3
|
|
plx
|
|
brl NextWord2
|
|
doTrans22 anop
|
|
lda #$bd ;LDA nnnn,x
|
|
sta (3),y
|
|
iny
|
|
lda GSTemp3
|
|
sta (3),y
|
|
iny
|
|
iny
|
|
lda #$29 ;AND #nnnn
|
|
sta (3),y
|
|
iny
|
|
lda GSTemp4 ;nnnn
|
|
eor #$ffff
|
|
sta (3),y
|
|
iny
|
|
iny
|
|
lda #$09 ;ORA #nnnn
|
|
sta (3),y
|
|
iny
|
|
lda GSTemp2 ;nnnn
|
|
sta (3),y
|
|
iny
|
|
iny
|
|
lda #$9d ;STA nnnn,x
|
|
sta (3),y
|
|
iny
|
|
lda GSTemp3 ;nnnn
|
|
inc GSTemp3
|
|
inc GSTemp3
|
|
sta (3),y
|
|
iny
|
|
iny
|
|
stz GSTemp4
|
|
plx
|
|
brl NextWord2
|
|
|
|
TransLoop22 anop
|
|
lda #$ab ;PLB
|
|
sta (3),y
|
|
iny
|
|
lda #$6b ;RTL
|
|
sta (3),y
|
|
iny
|
|
rts
|
|
|
|
ModTemp4 anop
|
|
cmp #0
|
|
beq MT4End
|
|
txa
|
|
ora GSTemp4
|
|
sta GSTemp4
|
|
MT4End rts
|
|
|
|
TestTrans anop
|
|
and #$000f
|
|
beq TransOk
|
|
lda GSTemp2
|
|
and #$00f0
|
|
beq TransOk
|
|
lda GSTemp2
|
|
and #$0f00
|
|
beq TransOk
|
|
lda GSTemp2
|
|
and #$f000
|
|
beq TransOk
|
|
clc
|
|
rts
|
|
TransOk sec
|
|
rts
|
|
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
WaitUser anop ;--> a= caractere tape
|
|
anop ; 0 si clic ou fire
|
|
|
|
sep #$30
|
|
longa off
|
|
longi off
|
|
|
|
lda #0
|
|
lda >$e0c024
|
|
sta >$e0c010 ;echantillonne clavier
|
|
WULoop anop
|
|
rep #$30
|
|
longa on
|
|
longi on
|
|
lda #150
|
|
jsr WaitSpot
|
|
jsr WaitVBL
|
|
longa off
|
|
longi off
|
|
sep #$30
|
|
lda >$e0C000 ;teste touche
|
|
bmi WUDone1
|
|
lda >$e0C061 ;teste fire 0
|
|
bmi WUDone
|
|
lda >$e0C062 ;teste fire 1
|
|
bmi WUDone
|
|
lda >$e0C027 ;teste clic souris
|
|
bpl WULoop
|
|
and #%00000010
|
|
bne WULoop2
|
|
lda >$e0C024
|
|
lda >$e0C024
|
|
bmi WULoop
|
|
bra WUDone
|
|
WULoop2 anop
|
|
lda >$e0C024
|
|
bra WULoop
|
|
|
|
|
|
WUDone anop
|
|
lda #0
|
|
WUDone1 anop
|
|
rep #$30
|
|
longa on
|
|
longi on
|
|
and #$7f
|
|
rts
|
|
|
|
|
|
|
|
|
|
***********************************************************************
|
|
Fade anop ;a=1 fade in a=0 fade out
|
|
anop ;Source bank $01, dest bank $e1
|
|
cmp #0
|
|
bne FadeIn
|
|
brl FadeOut
|
|
|
|
FadeIn anop
|
|
ldx #0
|
|
Shadow1 anop
|
|
lda >$012000,x
|
|
sta >$e12000,x
|
|
inx
|
|
inx
|
|
cpx #32256 ;copie image + SCBs
|
|
bne Shadow1
|
|
|
|
ldy #16
|
|
ldx #0
|
|
FadeInLoop anop
|
|
lda >$019e00,x
|
|
sta Temp4+2
|
|
lda >$e19e00,x
|
|
sta Temp4
|
|
cmp Temp4+2
|
|
beq FILNoChange
|
|
lda Temp4
|
|
and #$0f00
|
|
sta Temp
|
|
lda Temp4
|
|
and #$00f0
|
|
sta Temp2
|
|
lda Temp4
|
|
and #$000f
|
|
sta Temp3
|
|
lda Temp4+2
|
|
and #$0f00
|
|
cmp Temp
|
|
beq FIL1
|
|
lda Temp
|
|
clc
|
|
adc #$0100
|
|
sta Temp
|
|
FIL1 anop
|
|
lda Temp4+2
|
|
and #$00f0
|
|
cmp Temp2
|
|
beq FIL2
|
|
lda Temp2
|
|
clc
|
|
adc #$0010
|
|
sta Temp2
|
|
FIL2 anop
|
|
lda Temp4+2
|
|
and #$000f
|
|
cmp Temp3
|
|
beq FIL3
|
|
lda Temp3
|
|
clc
|
|
adc #$0001
|
|
sta Temp3
|
|
FIL3 anop
|
|
lda Temp
|
|
ora Temp2
|
|
ora Temp3
|
|
sta >$e19e00,x
|
|
FILNoChange anop
|
|
dey
|
|
bne FILNextVBL
|
|
jsr NextVBL
|
|
FILNextVBL anop
|
|
inx
|
|
inx
|
|
cpx #64 ;fade sur 2 palettes
|
|
beq FIL4
|
|
brl FadeInLoop
|
|
FIL4 anop
|
|
ldx #0
|
|
dey
|
|
beq FIL5
|
|
brl FadeInLoop
|
|
FIL5 anop
|
|
rts
|
|
|
|
NextVBL anop
|
|
phx
|
|
lda #150
|
|
jsr WaitSpot
|
|
jsr WaitVBL
|
|
plx
|
|
ldy #16
|
|
rts
|
|
|
|
FadeOut anop
|
|
ldy #16
|
|
ldx #0
|
|
FadeOutLoop anop
|
|
lda >$e19e00,x
|
|
cmp #0
|
|
beq FOLNoChange
|
|
lda >$e19e00,x
|
|
and #$0f00
|
|
sta Temp
|
|
lda >$e19e00,x
|
|
and #$00f0
|
|
sta Temp2
|
|
lda >$e19e00,x
|
|
and #$000f
|
|
sta Temp3
|
|
lda Temp
|
|
beq FOL1
|
|
lda Temp
|
|
sec
|
|
sbc #$0100
|
|
sta Temp
|
|
FOL1 anop
|
|
lda Temp2
|
|
beq FOL2
|
|
lda Temp2
|
|
sec
|
|
sbc #$0010
|
|
sta Temp2
|
|
FOL2 anop
|
|
lda Temp3
|
|
beq FOL3
|
|
lda Temp3
|
|
sec
|
|
sbc #$0001
|
|
sta Temp3
|
|
FOL3 anop
|
|
lda Temp
|
|
ora Temp2
|
|
ora Temp3
|
|
sta >$e19e00,x
|
|
FOLNoChange anop
|
|
dey
|
|
bne FOLNextVBL
|
|
jsr NextVBL
|
|
FOLNextVBL anop
|
|
inx
|
|
inx
|
|
cpx #64 ;fade sur 2 palettes
|
|
bne FadeOutLoop
|
|
ldx #0
|
|
dey
|
|
bne FadeOutLoop
|
|
rts
|
|
|
|
|
|
|
|
************************************************************************
|
|
Decompacte anop ;Temp= handle
|
|
anop ;Temp2= ptr dest
|
|
|
|
PushLong Temp
|
|
phd ;on dereference le handle
|
|
tsc
|
|
tcd
|
|
ldy #0
|
|
lda [3],y
|
|
sta Temp3
|
|
ldy #2
|
|
lda [3],y
|
|
sta Temp3+2
|
|
pld
|
|
pla
|
|
pla
|
|
|
|
PushLong #0
|
|
PushLong Temp
|
|
_GetHandleSize ;Taille du handle ?
|
|
PullLong Temp4
|
|
|
|
lda #32768
|
|
sta UnPackAreaSz
|
|
|
|
PushWord #0
|
|
PushLong Temp3
|
|
PushWord Temp4
|
|
PushLong #Temp2
|
|
PushLong #UnpackAreaSz
|
|
_UnPackBytes
|
|
pla
|
|
rts
|
|
|
|
UnPackAreaSz dc i2'32768'
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
WaitVBL anop
|
|
lda >$e0C019
|
|
and #%0000000010000000
|
|
beq WaitVBL
|
|
rts
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
Texte16 anop ;a= ptr str
|
|
anop ;x= coordonnee x
|
|
anop ;y= coordonnee y
|
|
anop ;CarPtr= ptr image source
|
|
|
|
pha
|
|
txa
|
|
lsr a
|
|
sta Temp2
|
|
lda CarPtr
|
|
sta Temp
|
|
lda CarPtr+2
|
|
sta Temp+2
|
|
lda #0
|
|
MemY anop
|
|
clc
|
|
adc #160
|
|
dey
|
|
bne MemY
|
|
clc
|
|
adc Temp2
|
|
sta Temp2 ;offset sur l'ecran
|
|
|
|
pla
|
|
sta T16length+1
|
|
inc a
|
|
sta T16Read+1
|
|
T16length lda T16length
|
|
and #$ff
|
|
sta Temp3
|
|
bne T16NotZero
|
|
rts ;si len$(str)=0 on s'en va
|
|
|
|
T16NotZero anop
|
|
ldx #0
|
|
T16Read lda T16Read,x
|
|
and #$ff
|
|
cmp #128
|
|
bge T16Aff0
|
|
sta Temp4
|
|
ldy #0
|
|
T16Trans anop
|
|
lda T16Car,y
|
|
and #$ff
|
|
cmp Temp4
|
|
beq T16Aff
|
|
iny
|
|
cpy T16NbCar
|
|
bne T16Trans
|
|
bra T16Aff
|
|
|
|
T16Aff0 anop
|
|
and #$7f
|
|
tay
|
|
T16Aff anop
|
|
phx
|
|
tya
|
|
ldx #0
|
|
sec
|
|
T16Aff2 anop
|
|
sbc #20
|
|
inx
|
|
bcs T16Aff2
|
|
|
|
adc #20
|
|
asl a
|
|
asl a
|
|
asl a
|
|
|
|
T16Aff3 anop
|
|
dex
|
|
cpx #0
|
|
beq T16Aff4
|
|
clc
|
|
adc #16*160
|
|
bra T16Aff3
|
|
|
|
T16Aff4 anop
|
|
jsr Sprite16
|
|
|
|
lda Temp2
|
|
clc
|
|
adc #8
|
|
sta Temp2
|
|
plx
|
|
inx
|
|
cpx Temp3
|
|
bne T16Read
|
|
|
|
rts
|
|
|
|
T16Car dc c'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
|
dc c'.:!?#0123456789 '
|
|
T16CarEnd anop
|
|
T16NbCar dc i2'T16CarEnd-T16Car'
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
Nombre16 anop ;a= ptr str
|
|
anop ;x= coordonnee x
|
|
anop ;y= coordonnee y
|
|
anop ;CarPtr= ptr image source
|
|
|
|
pha
|
|
txa
|
|
lsr a
|
|
sta Temp2
|
|
lda #0
|
|
Nb16MemY anop
|
|
clc
|
|
adc #160
|
|
dey
|
|
bne Nb16MemY
|
|
clc
|
|
adc Temp2
|
|
sta Temp2 ;offset sur l'ecran
|
|
|
|
pla
|
|
sta Nb16Length+1
|
|
inc a
|
|
sta Nb16Read+1
|
|
stz Temp4
|
|
Nb16Length lda Nb16Length
|
|
and #$ff
|
|
sta Temp3
|
|
dec Temp3
|
|
ldx #0
|
|
Nb16Read lda Nb16Read,x
|
|
and #$ff
|
|
cmp #32 ;espace
|
|
bne Nb16a
|
|
lda #48 ;chiffre 0
|
|
Nb16a anop
|
|
cmp #76
|
|
bge Nb16b
|
|
clc
|
|
adc #66-48 ;0 dans image - 0 ascii
|
|
Nb16b anop
|
|
phx
|
|
jsr Nb16affiche
|
|
plx
|
|
lda Temp4 ;espace pour caractere suivant
|
|
clc
|
|
adc #8
|
|
sta Temp4
|
|
inx
|
|
cpx Temp3
|
|
blt Nb16Read
|
|
|
|
rts
|
|
|
|
Nb16Affiche anop
|
|
ldx #0
|
|
sec
|
|
Nb16Aff2 anop
|
|
sbc #20
|
|
inx
|
|
bcs Nb16Aff2
|
|
|
|
adc #20
|
|
asl a
|
|
asl a
|
|
asl a
|
|
|
|
Nb16Aff3 anop
|
|
dex
|
|
cpx #0
|
|
beq Nb16Aff4
|
|
clc
|
|
adc #16*160
|
|
bra Nb16Aff3
|
|
|
|
Nb16Aff4 anop
|
|
tax
|
|
lda Temp2 ;offset ecran source
|
|
clc
|
|
adc Temp4
|
|
tay ;offset ecran dest
|
|
|
|
Nb16Copy anop ;routine de copie des objets
|
|
lda #$0101
|
|
pha
|
|
plb
|
|
plb
|
|
Nb16doCopy ds 4*(4+3)*16
|
|
phk
|
|
plb
|
|
rts
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
HexStr anop ;Temp= valeur 32 bits
|
|
anop ;Temp2= ptr de string
|
|
anop ;a= nb caractere de la str
|
|
|
|
ldx Temp2
|
|
sta Temp3
|
|
inc Temp3
|
|
inx
|
|
stx HexSClr+1
|
|
tax
|
|
lda #48 ;chiffre 0 en ascii
|
|
HexSClr sta HexSClr,x
|
|
dex
|
|
bne HexSClr
|
|
|
|
PushLong Temp
|
|
PushLong Temp2
|
|
PushWord Temp3
|
|
PushWord #0
|
|
_Long2Dec
|
|
|
|
lda ScoreStr
|
|
and #$ff00
|
|
ora Temp3
|
|
sta ScoreStr
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
Sprite16 anop ;Temp= ptr image source
|
|
anop ;Temp2= offset ecran dest
|
|
anop ;a= offset ecran source
|
|
|
|
ldx Temp+1
|
|
stx Sp16Read+2
|
|
clc
|
|
adc Temp
|
|
sta Sp16Read+1
|
|
lda #$2000
|
|
clc
|
|
adc Temp2
|
|
sta SP16Write+1
|
|
sep #$20
|
|
longa off
|
|
lda #$e1 ;page video
|
|
pha
|
|
plb
|
|
ldx #0
|
|
txy
|
|
Sp16Read lda >Sp16Read,x
|
|
beq Sp16Next
|
|
Sp16Write sta Sp16Write,x
|
|
Sp16Next inx
|
|
iny
|
|
cpy #8
|
|
bne Sp16Read
|
|
ldy #0
|
|
rep #$30
|
|
longa on
|
|
txa
|
|
clc
|
|
adc #160-8
|
|
tax
|
|
sep #$20
|
|
longa off
|
|
cpx #16*160
|
|
bne Sp16Read
|
|
|
|
rep #$30
|
|
longa on
|
|
phk
|
|
plb
|
|
rts
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
CopyZone anop ;Temp = coor. x
|
|
anop ;Temp+2 = coor. y
|
|
anop ;Temp2 = dep relatif x
|
|
anop ;Temp2+2= dep relatif y
|
|
|
|
lda Temp2
|
|
lsr a ;un octect = 2 pts
|
|
sta Temp2
|
|
lda Temp
|
|
lsr a ;un octect = 2 pts
|
|
ldy Temp+2
|
|
CZLoop anop
|
|
cpy #0
|
|
beq CZ2
|
|
dey
|
|
clc
|
|
adc #160
|
|
bra CZLoop
|
|
|
|
CZ2 anop
|
|
clc
|
|
adc #$2000
|
|
sta CZ3+1
|
|
sta CZ4+1
|
|
ldx #0
|
|
txy
|
|
CZ3 lda >$012000,x
|
|
CZ4 sta >$e12000,x
|
|
inx
|
|
inx
|
|
cpx Temp2
|
|
blt CZ3
|
|
lda CZ3+1
|
|
clc
|
|
adc #160
|
|
sta CZ3+1
|
|
sta CZ4+1
|
|
ldx #0
|
|
iny
|
|
cpy Temp2+2
|
|
blt CZ3
|
|
rts
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
WaitSpot anop ;a= ligne
|
|
|
|
lsr a
|
|
longa off
|
|
sep #$30
|
|
sta WS1+1
|
|
WaitS anop
|
|
lda >$e0C02e
|
|
and #$7f
|
|
WS1 cmp #0
|
|
blt WaitS
|
|
cmp #100
|
|
bge WaitS
|
|
longa on
|
|
rep #$30
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
Random anop ;--> a= rnd(256)
|
|
|
|
lda >$e0c02e
|
|
xba
|
|
clc
|
|
adc VBLCounter0
|
|
sta VBLCounter0
|
|
and #$ff
|
|
rts
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
Pause anop ;a = temps de pause (1/60 sec)
|
|
pha
|
|
jsr WaitVBL ;on force l'attente a 1/60s
|
|
PauseVBL anop
|
|
lda >$e0C019
|
|
and #%0000000010000000
|
|
bne PauseVBL
|
|
pla
|
|
dec a
|
|
bne Pause
|
|
rts
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
ReadMouse anop ;a --> 0 A pas d'info souris
|
|
anop ;a --> $8000
|
|
anop ;==> Mx--> coor X My--> coor Y
|
|
anop ; MBut--> bouton
|
|
|
|
lda Mx
|
|
sta Mx2
|
|
lda My
|
|
sta My2
|
|
lda MBut
|
|
sta MBut2
|
|
|
|
longa off
|
|
longi off
|
|
sep #$30
|
|
lda >$e0C027
|
|
bpl RMDonebis
|
|
and #2
|
|
beq DoXY
|
|
lda >$e0C024
|
|
RMDonebis lda #0 ;pas d'info souris
|
|
brl RMDone
|
|
DoXY lda >$e0C024
|
|
tax
|
|
lda >$e0c024
|
|
sta Temp
|
|
longa on
|
|
longi on
|
|
rep #$30
|
|
txa
|
|
and #$ff
|
|
tax
|
|
and #%01000000
|
|
bne XPos
|
|
txa
|
|
and #%00111111
|
|
clc
|
|
adc Mx
|
|
sta Mx
|
|
bra NowDoY
|
|
XPos anop
|
|
txa
|
|
ldx Mx
|
|
and #%00111111
|
|
eor #%00111111
|
|
inc a
|
|
sta Mx
|
|
txa
|
|
sec
|
|
sbc Mx
|
|
sta Mx
|
|
NowDoY lda Temp
|
|
and #$FF
|
|
tax
|
|
and #%01000000
|
|
bne YPos
|
|
txa
|
|
and #%00111111
|
|
clc
|
|
adc My
|
|
sta My
|
|
bra XYDone
|
|
YPos anop
|
|
txa
|
|
and #%00111111
|
|
eor #%00111111
|
|
inc a
|
|
ldx My
|
|
sta My
|
|
txa
|
|
sec
|
|
sbc My
|
|
sta My
|
|
XYDone anop
|
|
stz MBut
|
|
lda Temp
|
|
and #$80
|
|
bne RMDoUp
|
|
lda #$8000
|
|
sta MBut
|
|
|
|
RMDoUp anop
|
|
lda Mx
|
|
cmp #$f000
|
|
bge doXMin
|
|
cmp #309 ;max x
|
|
bge doXMax
|
|
bra ClampY
|
|
doXMin stz Mx
|
|
bra ClampY
|
|
doXMax lda #308 ;clamp x
|
|
sta Mx
|
|
ClampY anop
|
|
lda My
|
|
cmp #$f000
|
|
bge doYMin
|
|
cmp #128 ;max y
|
|
bge doYMax
|
|
bra RMDone2
|
|
doYMin stz My
|
|
bra RMDone2
|
|
doYMax lda #127 ;clamp y
|
|
sta My
|
|
|
|
RMDone2 anop
|
|
lda Mx
|
|
cmp Mx2
|
|
bne RMDone1
|
|
lda My
|
|
cmp My2
|
|
bne RMDone1
|
|
lda MBut
|
|
cmp MBut2
|
|
bne RMDone1
|
|
lda #0
|
|
bra RMDone
|
|
RMDone1 lda #$8000
|
|
RMDone rep #$30
|
|
rts
|
|
|
|
Mx ds 2
|
|
Mx2 ds 2
|
|
My ds 2
|
|
My2 ds 2
|
|
MBut ds 2
|
|
MBut2 ds 2
|
|
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
Shadow anop ;a = 1 A shadow on
|
|
anop ;a = 0 A shadow off
|
|
|
|
eor #1
|
|
asl a
|
|
asl a
|
|
asl a
|
|
ora #%00010001
|
|
sep #$30
|
|
sta >$e0C035 ;shadowing video du bank $01
|
|
rep #$30
|
|
rts
|
|
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
Sound anop ;a = frequence du son
|
|
anop ;x = Ptr bloc info son
|
|
anop ;==> Bloc info son (words)A
|
|
anop ; _ Volume ($0 - $ff)
|
|
anop ; _ Page adresse dans DOC ($0 - $ff)
|
|
anop ; _ Longueur du son
|
|
anop ; _ Controle du son
|
|
|
|
sei
|
|
|
|
sta GSTemp2
|
|
phx
|
|
phd ;on lit les infos son
|
|
tsc
|
|
tcd
|
|
|
|
sep #$20
|
|
longa off
|
|
|
|
lda >$e100ca ;volume systeme
|
|
and #$0f ;acces aux registres du DOC
|
|
sta >$e0c03c
|
|
|
|
lda SoundCh ;Reg frequence (bas)
|
|
sta >$e0c03e
|
|
lda GSTemp2 ;Frequence
|
|
sta >$e0c03d
|
|
lda SoundCh ;Reg frequence (haut)
|
|
clc
|
|
adc #$20
|
|
sta >$e0c03e
|
|
lda GSTemp2+1 ;Frequence
|
|
sta >$e0c03d
|
|
|
|
lda SoundCh
|
|
clc
|
|
adc #$40 ;Reg Volume
|
|
sta >$e0c03e
|
|
ldy #0
|
|
lda (3),y ;Lecture Volume
|
|
sta >$e0c03d
|
|
|
|
lda SoundCh
|
|
clc
|
|
adc #$80 ;Reg adresse Ram DOC
|
|
sta >$e0c03e
|
|
ldy #2
|
|
lda (3),y ;Lecture adresse
|
|
sta >$e0c03d
|
|
|
|
lda SoundCh
|
|
clc
|
|
adc #$C0 ;Reg taille du son
|
|
sta >$e0c03e
|
|
ldy #4
|
|
lda (3),y ;Lecture taille du son
|
|
sta >$e0c03d
|
|
|
|
lda SoundCh
|
|
clc
|
|
adc #$A0 ;Reg controle du son
|
|
sta >$e0c03e
|
|
ldy #6
|
|
lda (3),y ;Lecture controle
|
|
sta >$e0c03d ;Le son est joue !
|
|
|
|
lda SoundCh
|
|
inc a
|
|
and #$f ;16 oscillos !
|
|
sta SoundCh
|
|
|
|
rep #$30
|
|
longa on
|
|
|
|
pld
|
|
pla
|
|
|
|
cli
|
|
rts
|
|
|
|
SoundCh ds 2
|
|
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
ClearDOC anop
|
|
|
|
sei
|
|
sep #$20
|
|
longa off
|
|
|
|
lda >$e100ca ;volume systeme
|
|
and #$0f ;acces a la ram DOC
|
|
ora #%01100000 ;auto inc des pointeurs
|
|
sta >$e0c03c
|
|
|
|
lda #0
|
|
sta >$e0c03e ;adresse basse
|
|
sta >$e0c03f ;adresse haute dans le DOC
|
|
|
|
ldy #0
|
|
lda #0
|
|
ClearDOCLoop anop
|
|
sta >$e0c03d ;sound doc
|
|
iny
|
|
bne ClearDOCLoop
|
|
|
|
rep #$30
|
|
longa on
|
|
|
|
cli
|
|
rts
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
SoundLoad anop ;Temp = handle du son
|
|
anop ;Temp2 = ptr bloc info son
|
|
|
|
sei
|
|
|
|
PushLong #0
|
|
PushLong Temp
|
|
_GetHandleSize ;taille du son en octets
|
|
PullLong Temp3
|
|
|
|
PushLong Temp
|
|
PushLong Temp2
|
|
|
|
phd
|
|
tsc
|
|
tcd
|
|
|
|
ldy #0
|
|
lda [7],y ;dereference de Temp
|
|
tax
|
|
ldy #2
|
|
lda [7],y
|
|
stx <7
|
|
sta <9
|
|
|
|
sep #$20
|
|
longa off
|
|
|
|
ldy #0
|
|
lda #$ff ;on fixe le volume a 255
|
|
sta [3],y
|
|
|
|
ldx #7
|
|
lda Temp3+1 ;nombre de pages mem du son
|
|
bmi SoundDOCok0 ;size = 32 ko si son > 32 ko
|
|
ldx #0
|
|
SoundDOCLoop0 anop
|
|
cmp SoundSzTable,x ;table des tailles possibles
|
|
blt SoundDOCok0
|
|
inx
|
|
bra SoundDOCLoop0
|
|
SoundDOCok0 anop
|
|
stx Temp
|
|
txa ;taille en pages (puissance de 2)
|
|
asl a
|
|
asl a
|
|
asl a
|
|
ora Temp ;resolution
|
|
ldy #4
|
|
sta [3],y
|
|
|
|
lda >$e100ca ;volume systeme
|
|
and #$0f ;acces a la ram DOC
|
|
ora #%01000000
|
|
sta >$e0c03c
|
|
|
|
stz Temp2
|
|
FindDOCadr anop
|
|
lda Temp2
|
|
sta >$e0c03f ;adr haute
|
|
lda #0
|
|
sta >$e0c03e ;adr basse
|
|
lda >$e0c03d ;une lecture pour rien
|
|
ldy #0
|
|
FindDOCadr2 anop
|
|
lda >$e0c03d ;lecture du DOC
|
|
bne FindDOCadr3
|
|
rep #$30
|
|
lda >$e0c03e
|
|
inc a ;incrementation manuelle !
|
|
sta >$e0c03e
|
|
sep #$20
|
|
iny
|
|
cpy Temp3 ;longueur du son (octets)
|
|
blt FindDOCadr2
|
|
bra FindDOCadr5
|
|
FindDOCadr3 anop
|
|
ldx Temp
|
|
lda SoundSzTable,x
|
|
clc
|
|
adc Temp2
|
|
sta Temp2
|
|
bcc FindDOCadr ;si le DOC est pleinA page 0!
|
|
|
|
FindDOCadr5 anop
|
|
lda Temp2 ;adresse du son dans le DOC
|
|
ldy #2
|
|
sta [3],y
|
|
|
|
ldy #6
|
|
lda #%00000010 ;Controle de l'oscillo
|
|
sta [3],y ;--> droite, pas int, one-shot
|
|
|
|
lda >$e100ca ;volume systeme
|
|
and #$0f ;acces a la ram DOC
|
|
ora #%01100000 ;auto inc des pointeurs
|
|
sta >$e0c03c
|
|
|
|
lda #0
|
|
sta >$e0c03e ;adresse basse
|
|
ldy #2
|
|
lda [3],y ;lecture page mem
|
|
sta >$e0c03f ;adresse haute dans le DOC
|
|
ldy #0
|
|
LoadDOCLoop anop
|
|
lda [7],y
|
|
bne LoadDOCL2
|
|
lda #1
|
|
LoadDOCL2 anop
|
|
sta >$e0c03d ;sound doc
|
|
iny
|
|
cpy Temp3 ;nb octets du son
|
|
bne LoadDOCLoop
|
|
lda #0
|
|
sta >$e0c03d ;sound doc
|
|
sta >$e0c03d
|
|
sta >$e0c03d
|
|
sta >$e0c03d
|
|
sta >$e0c03d
|
|
sta >$e0c03d
|
|
sta >$e0c03d
|
|
sta >$e0c03d
|
|
|
|
rep #$30
|
|
longa on
|
|
|
|
pld
|
|
pla ;on enleve les ptrs !
|
|
pla
|
|
pla
|
|
pla
|
|
|
|
cli
|
|
rts
|
|
|
|
|
|
SoundSzTable dc i1'1'
|
|
dc i1'2'
|
|
dc i1'4'
|
|
dc i1'8'
|
|
dc i1'16'
|
|
dc i1'32'
|
|
dc i1'64'
|
|
dc i1'128'
|
|
|
|
|
|
|
|
|
|
************************************************************************
|
|
ReadJoy anop ;mx / my
|
|
anop ;==> a=0 : pas de deplacement
|
|
|
|
lda Mx
|
|
sta Mx2
|
|
lda My
|
|
sta My2
|
|
sei
|
|
|
|
stz Paddle0
|
|
stz Paddle1
|
|
stz Paddle2
|
|
stz Paddle3
|
|
|
|
sep #$30
|
|
longa off
|
|
longi off
|
|
|
|
ldy #$30 ;Sampling value
|
|
|
|
lda >$e0c036 ;Force GS Speed to 1Mhz
|
|
pha
|
|
and #$7f
|
|
sta >$e0c036
|
|
|
|
lda >$e0c070 ;Prepare to read paddles
|
|
nop
|
|
|
|
APaddle0 lda >$e0c064 ;paddle 0
|
|
bmi AIncPaddle0
|
|
bra APaddle1
|
|
AIncPaddle0 inc Paddle0
|
|
|
|
APaddle1 lda >$e0c065 ;paddle 1
|
|
bmi AIncPaddle1
|
|
bra APaddle2
|
|
AIncPaddle1 inc Paddle1
|
|
|
|
APaddle2 lda >$e0c066 ;paddle 2
|
|
bmi AIncPaddle2
|
|
bra APaddle3
|
|
AIncPaddle2 inc Paddle2
|
|
|
|
APaddle3 lda >$e0c067 ;paddle 3
|
|
bmi AIncPaddle3
|
|
bra AContinue
|
|
AIncPaddle3 inc Paddle3
|
|
|
|
AContinue bra Adey
|
|
Adey dey
|
|
|
|
bne APaddle0
|
|
|
|
pla
|
|
sta >$e0c036 ;Restore GS speed
|
|
cli
|
|
|
|
rep #$30
|
|
longa on
|
|
longi on
|
|
|
|
lda Paddle0
|
|
and #$ff ;resultat
|
|
cmp #$18
|
|
bge AdcX
|
|
sta Temp
|
|
lda #$18
|
|
sec
|
|
sbc Temp
|
|
clc
|
|
lsr a
|
|
lsr a
|
|
lsr a
|
|
sta Temp
|
|
lda Mx
|
|
sec
|
|
sbc Temp
|
|
cmp #$f000
|
|
blt ReadXEnd0
|
|
lda #0
|
|
bra ReadXEnd0
|
|
AdcX anop
|
|
sec
|
|
sbc #$18
|
|
clc
|
|
lsr a
|
|
lsr a
|
|
lsr a
|
|
clc
|
|
adc Mx
|
|
cmp #309
|
|
blt ReadXEnd0
|
|
lda #308
|
|
|
|
ReadXEnd0 anop
|
|
sta Mx
|
|
|
|
ReadXEnd anop
|
|
lda Paddle1
|
|
and #$ff ;resultat
|
|
cmp #$18
|
|
bge AdcY
|
|
sta Temp
|
|
lda #$18
|
|
sec
|
|
sbc Temp
|
|
clc
|
|
lsr a
|
|
lsr a
|
|
lsr a
|
|
sta Temp
|
|
lda My
|
|
sec
|
|
sbc Temp
|
|
cmp #$f000
|
|
blt ReadYEnd0
|
|
lda #0
|
|
bra ReadYEnd0
|
|
AdcY anop
|
|
sec
|
|
sbc #$18
|
|
clc
|
|
lsr a
|
|
lsr a
|
|
lsr a
|
|
adc My
|
|
cmp #128
|
|
blt ReadYEnd0
|
|
lda #127
|
|
|
|
ReadYEnd0 anop
|
|
sta My
|
|
ReadYEnd anop
|
|
lda >$e0c061
|
|
and #%0000000010000000
|
|
beq RNotFire
|
|
lda #1
|
|
sta MBut
|
|
bra RDepTest
|
|
RNotFire anop
|
|
stz MBut
|
|
|
|
RDepTest anop
|
|
lda Mx
|
|
cmp Mx2
|
|
bne RDepTestF
|
|
lda My
|
|
cmp My2
|
|
bne RDepTestF
|
|
lda #0
|
|
rts
|
|
RDepTestF anop
|
|
lda #$80
|
|
rts
|
|
|
|
Paddle0 ds 2
|
|
Paddle1 ds 2
|
|
Paddle2 ds 2
|
|
Paddle3 ds 2
|
|
|