This commit is contained in:
Antoine Vignau 2024-02-22 15:44:51 +01:00
parent d9b04facb5
commit 0bcc6da5fa
5 changed files with 12789 additions and 12676 deletions

Binary file not shown.

View File

@ -4851,6 +4851,7 @@ drawSPRITEXY
jsr setHGRPOINTERS jsr setHGRPOINTERS
JSR getXBYBI JSR getXBYBI
STA theXSCREEN STA theXSCREEN
* STX sprTABLE * STX sprTABLE
* JSR getSPRITEDATA * JSR getSPRITEDATA
* LDX #sprHEIGHT ; nb lignes * LDX #sprHEIGHT ; nb lignes
@ -4861,119 +4862,112 @@ drawSPRITEXY
* BCS L8376 * BCS L8376
rep #$30 rep #$30
lda #0
tax
tay
lda #sprHEIGHT
sta nbLINES2
lda theXSCREEN ; Y for column lda theXSCREEN ; Y for column
and #$ff and #$ff
tay clc
adc ptrHGR1
sta ptrHGR1
sta ptrHGR2
lda theA ; X for sprite lda theA ; X for sprite
and #$ff and #$ff
asl asl
tax tax
lda tblSPRITES,x lda tblSPRITES,x
sta ptrSPR
lda #sprHEIGHT
sta nbLINES2
outerDSXY lda #0
tax tax
]lp lda |$0000,x ; sprite
* eor #-1
and [ptrHGR1],y ; fond
ora [ptrHGR2],y ; fond
sta [ptrHGR1],y ; fond
iny
iny
inx
inx
lda |$0000,x ; sprite
* eor #-1
and [ptrHGR1],y ; fond
ora [ptrHGR2],y ; fond
sta [ptrHGR1],y ; fond
iny
iny
inx
inx
sep #$20
lda |$0000,x ; sprite
* eor #-1
and [ptrHGR1],y ; fond
ora [ptrHGR2],y ; fond
sta [ptrHGR1],y ; fond
rep #$20
iny
tya
clc
adc #160-5 ; 5 = 10 pixels
tay tay
inx
sep #$30
]lp lda [ptrHGR2],y ; 0..1
tax
and tblMASK,x
ora (ptrSPR),y
sta [ptrHGR1],y
iny
cpy #5
bcc ]lp
rep #$30
lda ptrHGR2
clc
adc #160
sta ptrHGR2
sta ptrHGR1
lda ptrSPR
clc
adc #5
sta ptrSPR
dec nbLINES2 dec nbLINES2
bne ]lp bne outerDSXY
sep #$30 sep #$30
rts rts
mx %11 mx %11
*--- sprite de 2 de large *--- sprite de 2 de large
*
L8350 LDY theYSCREEN *L8350 LDY theYSCREEN
JSR setHGRPOINTERS * JSR setHGRPOINTERS
LDY theXSCREEN * LDY theXSCREEN
LDA sprDATA,X * LDA sprDATA,X
EOR #$7F * EOR #$7F
AND [ptrHGR1],Y * AND [ptrHGR1],Y
ORA [ptrHGR2],Y * ORA [ptrHGR2],Y
STA [ptrHGR1],Y * STA [ptrHGR1],Y
INX * INX
INY * INY
LDA sprDATA,X * LDA sprDATA,X
EOR #$7F * EOR #$7F
AND [ptrHGR1],Y * AND [ptrHGR1],Y
ORA [ptrHGR2],Y * ORA [ptrHGR2],Y
STA [ptrHGR1],Y * STA [ptrHGR1],Y
INX * INX
INX * INX
INC theYSCREEN * INC theYSCREEN
DEC nbLINES * DEC nbLINES
BNE L8350 * BNE L8350
RTS * RTS
*
*--- sprite de 3 de large *--- sprite de 3 de large
*
L8376 LDY theYSCREEN *L8376 LDY theYSCREEN
JSR setHGRPOINTERS * JSR setHGRPOINTERS
LDY theXSCREEN * LDY theXSCREEN
LDA sprDATA,X * LDA sprDATA,X
EOR #$7F * EOR #$7F
AND [ptrHGR1],Y * AND [ptrHGR1],Y
ORA [ptrHGR2],Y * ORA [ptrHGR2],Y
STA [ptrHGR1],Y * STA [ptrHGR1],Y
INX * INX
INY * INY
LDA sprDATA,X * LDA sprDATA,X
EOR #$7F * EOR #$7F
AND [ptrHGR1],Y * AND [ptrHGR1],Y
ORA [ptrHGR2],Y * ORA [ptrHGR2],Y
STA [ptrHGR1],Y * STA [ptrHGR1],Y
INX * INX
INY * INY
LDA sprDATA,X * LDA sprDATA,X
EOR #$7F * EOR #$7F
AND [ptrHGR1],Y * AND [ptrHGR1],Y
ORA [ptrHGR2],Y * ORA [ptrHGR2],Y
STA [ptrHGR1],Y * STA [ptrHGR1],Y
INX * INX
INC theYSCREEN * INC theYSCREEN
DEC nbLINES * DEC nbLINES
BNE L8376 * BNE L8376
RTS * RTS
*--------------------------------------- *---------------------------------------
* DRAW SPRITE AT X,Y WITH COLLISION * DRAW SPRITE AT X,Y WITH COLLISION
@ -4984,17 +4978,79 @@ L8376 LDY theYSCREEN
drawSPRXYCOLLISION drawSPRXYCOLLISION
STY theYSCREEN STY theYSCREEN
STA theA STA theA
jsr setHGRPOINTERS
JSR getXBYBI JSR getXBYBI
STA theXSCREEN STA theXSCREEN
STX sprTABLE * STX sprTABLE
JSR getSPRITEDATA * JSR getSPRITEDATA
LDA #sprHEIGHT * LDA #sprHEIGHT
STA nbLINES * STA nbLINES
LDX #$00 LDX #$00
STX fgCOLLISION STX fgCOLLISION
LDA sprTABLE * LDA sprTABLE
CMP #$05 * CMP #$05
BCS L83F5 * BCS L83F5
rep #$30
lda theXSCREEN ; Y for column
and #$ff
clc
adc ptrHGR1
sta ptrHGR1
sta ptrHGR2
lda theA ; X for sprite
and #$ff
asl
tax
lda tblSPRITES,x
sta ptrSPR
lda #sprHEIGHT
sta nbLINES2
outerXYCOL lda #0
tax
tay
sep #$30
]lp LDA [ptrHGR1],Y ; 0..1
EOR [ptrHGR2],Y ; si HGR1=HGR2 => 0
and (sprDATA),y
ORA fgCOLLISION
STA fgCOLLISION
lda [ptrHGR2],y
tax
and tblMASK,x
ora (sprDATA),y
STA [ptrHGR1],y
iny
cpy #5
bcc ]lp
rep #$30
lda ptrHGR2
clc
adc #160
sta ptrHGR2
sta ptrHGR1
lda ptrSPR
clc
adc #5
sta ptrSPR
dec nbLINES2
bne outerXYCOL
sep #$30
stz fgCOLLISION ; LoGo
rts
mx %11
*--- sprite de 2 de large *--- sprite de 2 de large
@ -5024,7 +5080,6 @@ L83C3 LDY theYSCREEN
INC theYSCREEN INC theYSCREEN
DEC nbLINES DEC nbLINES
BNE L83C3 BNE L83C3
stz fgCOLLISION
RTS RTS
*--- sprite de 3 de large *--- sprite de 3 de large
@ -5064,7 +5119,6 @@ L83F5 LDY theYSCREEN
INC theYSCREEN INC theYSCREEN
DEC nbLINES DEC nbLINES
BNE L83F5 BNE L83F5
stz fgCOLLISION
RTS RTS
*--------------------------------------- *---------------------------------------
@ -5490,7 +5544,7 @@ L873C PHA ; exit with
PLA PLA
RTS RTS
bsDATA DB ptrBOARD bsDATA DB $06
*----------------------------------- *-----------------------------------
* READ JOYSTICK * READ JOYSTICK

View File

@ -91,7 +91,8 @@ hgrPAGE = $1f
ptrHGR1 = $24 ; **new** long ptrHGR1 = $24 ; **new** long
ptrHGR2 = $28 ; **new** long ptrHGR2 = $28 ; **new** long
nbLINES2 = $2c ptrSPR = $2c ; **new** word
nbLINES2 = $2e ; **new** word
*CH = $24 ; ** *CH = $24 ; **
*CV = $25 ; ** *CV = $25 ; **

Binary file not shown.

File diff suppressed because it is too large Load Diff