This commit is contained in:
Antoine Vignau 2024-02-23 19:50:36 +01:00
parent 0bcc6da5fa
commit 5d56e6f443
8 changed files with 15907 additions and 12776 deletions

Binary file not shown.

View File

@ -13,6 +13,9 @@
theGAME JSR checkJOYSTICK theGAME JSR checkJOYSTICK
LDA #chrK ; force keyboard **logo**
STA fgINPUT
LDA #$01 ; read score table LDA #$01 ; read score table
JSR readSCORE JSR readSCORE
@ -39,9 +42,9 @@ L6028 INC L6030+1
BNE L6030 BNE L6030
INC L6030+2 INC L6030+2
L6030 LDA L6028 L6030 LDA L6028
BEQ L603F BEQ L603F ; 00: end of line
BPL L603C BPL L603C ; <128: skip A bytes
STA [ptrHGR1],Y STA [ptrHGR1],Y ; >127: output char
INY INY
BPL L6028 BPL L6028
L603C TAY L603C TAY
@ -51,6 +54,10 @@ L603F INC theY
CPY #maxHEIGHT ; until line 192 CPY #maxHEIGHT ; until line 192
BCC L6023 BCC L6023
* STA TXTPAGE1 * STA TXTPAGE1
lda ptrSCREEN+2
sta ptrHGR1+2
lda #>oldHGR1
sta hgrPAGE
* STA HIRES * STA HIRES
* STA MIXCLR * STA MIXCLR
* STA TXTCLR * STA TXTCLR
@ -67,6 +74,7 @@ L6056 LDA #$00
STA fgCIRCLE STA fgCIRCLE
STA tempX6 STA tempX6
STA demoREPEAT STA demoREPEAT
lda #<demoDATA
STA ptrDEMO ; demo actions STA ptrDEMO ; demo actions
LDA #>demoDATA LDA #>demoDATA
STA ptrDEMO+1 STA ptrDEMO+1
@ -95,6 +103,10 @@ L6086
L6099 JSR clearHGRPAGES ; clear HGR pages and draw board L6099 JSR clearHGRPAGES ; clear HGR pages and draw board
* STA TXTPAGE1 * STA TXTPAGE1
lda ptrSCREEN+2
sta ptrHGR1+2
lda #>oldHGR1
sta hgrPAGE
L609F LDX #modeGAME L609F LDX #modeGAME
JSR prepareLEVEL JSR prepareLEVEL
LDA #$00 LDA #$00
@ -463,6 +475,7 @@ diskDEMO LDA theLEVEL ; demo mode uses levels in RAM
STA ptrHGR1+1 STA ptrHGR1+1
LDY #<L9E00 LDY #<L9E00
STY ptrHGR1 STY ptrHGR1
ldy #0
L6350 LDA (ptrHGR1),Y L6350 LDA (ptrHGR1),Y
STA levelDISK,Y STA levelDISK,Y
INY INY
@ -3420,6 +3433,10 @@ L77C7 LDAl KBD
BNE L77B7 BNE L77B7
L77D6 STAl KBDSTROBE L77D6 STAl KBDSTROBE
* STA TXTPAGE1 * STA TXTPAGE1
lda ptrSCREEN+2
sta ptrHGR1+2
lda #>oldHGR1
sta hgrPAGE
JSR clearHGR2 JSR clearHGR2
LDY #lvlHEIGHT-1 LDY #lvlHEIGHT-1
@ -3496,15 +3513,18 @@ L7868 JMP getPLAYERINPUT
*------------------------------- *-------------------------------
showALLSCORES showALLSCORES
JSR clearHGR2 * JSR clearHGR2
LDA #>oldHGR2 * LDA #>oldHGR2
STA activePAGE * STA activePAGE
jsr clearHGR1
lda #>oldHGR1
sta activePAGE
LDA #$00 LDA #$00
STA theX STA theX
STA theY STA theY
JSR printSTRING JSR printSTRING
ASC " LODE RUNNER HIGH SCORES"8D8D8D ASC " LODE RUNNER HIGH SCORES"8D8D8D
ASC " INITIALS LEVEL SCORE"8D ASC " INITIALS LEVEL SCORE"8D
ASC " -------- ----- --------"8D00 ASC " -------- ----- --------"8D00
LDA #$01 ; for x=1 to...10 LDA #$01 ; for x=1 to...10
@ -3983,6 +4003,10 @@ enterEDITOR LDA #$00
LDA #chrK ; force keyboard in editor LDA #chrK ; force keyboard in editor
STA fgINPUT STA fgINPUT
* STA TXTPAGE1 * STA TXTPAGE1
lda ptrSCREEN+2
sta ptrHGR1+2
lda #>oldHGR1
sta hgrPAGE
LDA intLEVEL ; check level LDA intLEVEL ; check level
CMP #maxLEVEL CMP #maxLEVEL
BCC editMAIN BCC editMAIN
@ -4477,6 +4501,10 @@ L8062 LDA #$00
JSR saveLEVEL JSR saveLEVEL
L8075 L8075
* STA TXTPAGE1 * STA TXTPAGE1
lda ptrSCREEN+2
sta ptrHGR1+2
lda #>oldHGR1
sta hgrPAGE
LDA #$00 LDA #$00
STA theX STA theX
STA theY STA theY
@ -4525,7 +4553,10 @@ L80D8 JSR printSTRING
JSR L85F3 JSR L85F3
STAl KBDSTROBE STAl KBDSTROBE
* STA TXTPAGE1 * STA TXTPAGE1
lda ptrSCREEN+2
sta ptrHGR1+2
lda #>oldHGR1
sta hgrPAGE
L8105 RTS L8105 RTS
*----------------------------------- *-----------------------------------
@ -4700,7 +4731,7 @@ L8289 HEX 220F8888888888888888CCCFC4C5A0D2
HEX A0 HEX A0
*--------------------------------------- *---------------------------------------
* PRINT CHAR * PRINT CHAR - TATA
*--------------------------------------- *---------------------------------------
coutHGR1 STA theA ; char in $1E coutHGR1 STA theA ; char in $1E
@ -4712,15 +4743,12 @@ coutHGR2 STA theA ; char in $1E
L82B4 STA hgrPAGE ; page in $1F L82B4 STA hgrPAGE ; page in $1F
rep #$30 LDY theY ; take Y
lda #0 ldx theX
tax JSR getXY
tay STY theYSCREEN ; make it Y screen
sep #$30 stx theXSCREEN
jsr setHGRPOINTER
* LDY theY ; take Y
* JSR getXY
* STY theYSCREEN ; make it Y screen
* LDX theX ; take X * LDX theX ; take X
* JSR getBYBI * JSR getBYBI
* STA theXSCREEN ; make it X screen * STA theXSCREEN ; make it X screen
@ -4737,59 +4765,55 @@ L82B4 STA hgrPAGE ; page in $1F
* CMP #$05 * CMP #$05
* BCS L8301 * BCS L8301
ldy theY ; board Y
ldx theX ; board X
jsr getXY ; retourne Y HGR
jsr setHGRPOINTER ; met le pointeur
txy ; colonne
rep #$30 rep #$30
lda #sprHEIGHT
sta nbLINES2
lda theA lda theXSCREEN ; Y for column
and #$ff
clc
adc ptrHGR1
sta ptrHGR1
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
outerCOUT lda #0
tax tax
]lp lda [ptrHGR1],y ; fond - 0123
ora |$0000,x ; sprite
sta [ptrHGR1],y ; fond
iny
iny
inx
inx
lda [ptrHGR1],y ; fond - 4567
ora |$0000,x ; sprite
sta [ptrHGR1],y ; fond
iny
iny
inx
inx
sep #$20
lda [ptrHGR1],y ; fond - 89
ora |$0000,x ; sprite
sta [ptrHGR1],y ; fond
rep #$20
iny
tya
clc
adc #160-5 ; 5 = 10 pixels
tay tay
inx
sep #$30
]lp lda (ptrSPR),y
sta [ptrHGR1],y
iny
cpy #sprBYTES
bcc ]lp
rep #$30
lda ptrHGR1
clc
adc #160
sta ptrHGR1
lda ptrSPR
clc
adc #sprBYTES
sta ptrSPR
dec nbLINES2 dec nbLINES2
bne ]lp bne outerCOUT
sep #$30 sep #$30
rts rts
mx %11 mx %11
*--- sprite de 2 de large *--- sprite de 2 de large
* *
*L82DF LDY theYSCREEN *L82DF LDY theYSCREEN
@ -4886,13 +4910,28 @@ outerDSXY lda #0
sep #$30 sep #$30
]lp lda [ptrHGR2],y ; 0..1 * LDA sprDATA,X
* EOR #$7F
* AND [ptrHGR1],Y
* ORA [ptrHGR2],Y
* STA [ptrHGR1],Y
*]lp lda [ptrHGR2],y ; 0..1
* tax
* and tblMASK,x
* ora (ptrSPR),y
* sta [ptrHGR1],y
]lp lda (ptrSPR),y
* eor #$ff
tax tax
and tblMASK,x and tblMASK,x
ora (ptrSPR),y * and [ptrHGR1],y
ora [ptrHGR2],y
sta [ptrHGR1],y sta [ptrHGR1],y
iny iny
cpy #5 cpy #sprBYTES
bcc ]lp bcc ]lp
rep #$30 rep #$30
@ -4905,7 +4944,7 @@ outerDSXY lda #0
lda ptrSPR lda ptrSPR
clc clc
adc #5 adc #sprBYTES
sta ptrSPR sta ptrSPR
dec nbLINES2 dec nbLINES2
@ -4970,7 +5009,7 @@ outerDSXY lda #0
* RTS * RTS
*--------------------------------------- *---------------------------------------
* DRAW SPRITE AT X,Y WITH COLLISION * DRAW SPRITE AT X,Y WITH COLLISION - TUTU
*--------------------------------------- *---------------------------------------
* $52: 00 if no collision (empty background) * $52: 00 if no collision (empty background)
* <>00 if collision * <>00 if collision
@ -5015,20 +5054,39 @@ outerXYCOL lda #0
tay tay
sep #$30 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 * LDY theXSCREEN
* LDA [ptrHGR1],Y
* EOR [ptrHGR2],Y
* AND sprDATA,X
* ORA fgCOLLISION
* STA fgCOLLISION
* LDA sprDATA,X
* ORA [ptrHGR1],Y
* STA [ptrHGR1],Y
]lp lda [ptrHGR1],Y ; 0..1
eor [ptrHGR2],Y ; si HGR1=HGR2 => 0
and (sprDATA),y
ora fgCOLLISION
sta fgCOLLISION
* lda (sprDATA),y
* ora [ptrHGR1],y
lda [ptrHGR2],y ; 0..1
tax tax
and tblMASK,x and tblMASK,x
ora (sprDATA),y ora (ptrSPR),y
STA [ptrHGR1],y sta [ptrHGR1],y
*]lp lda [ptrHGR2],y ; 0..1
* tax
* and tblMASK,x
* ora (ptrSPR),y
* sta [ptrHGR1],y
iny iny
cpy #5 cpy #sprBYTES
bcc ]lp bcc ]lp
rep #$30 rep #$30
@ -5041,13 +5099,13 @@ outerXYCOL lda #0
lda ptrSPR lda ptrSPR
clc clc
adc #5 adc #sprBYTES
sta ptrSPR sta ptrSPR
dec nbLINES2 dec nbLINES2
bne outerXYCOL bne outerXYCOL
sep #$30 sep #$30
stz fgCOLLISION ; LoGo stz fgCOLLISION
rts rts
mx %11 mx %11
@ -5835,15 +5893,14 @@ circleANIMATION
PushWord #0 PushWord #0
_ClearScreen _ClearScreen
sep #$30 sep #$30
rts
LDX #$AA ; 170 * LDX #$AA ; 170
STX $6D * STX $6D
LDX #$00 ; 0 * LDX #$00 ; 0
STX $72 * STX $72
L88B6 JSR L88D7 *L88B6 JSR L88D7
DEC $6D * DEC $6D
BNE L88B6 * BNE L88B6
*--- show the level *--- show the level
@ -5869,6 +5926,8 @@ L88CB JSR L88D7
BNE L88CB BNE L88CB
RTS RTS
*---
L88D7 LDA $6D L88D7 LDA $6D
STA $69 STA $69
LDA #$00 LDA #$00

View File

@ -436,8 +436,8 @@ bitable DB $00 ; 0..4: sprite is 2-col wide
xbytable xbytable
]debut = $0 ]debut = $0
lup 140 lup 140
dfb <]debut dfb ]debut
]debut = ]debut+2 ]debut = ]debut+1
--^ --^
DB $00 ; and the index within the table DB $00 ; and the index within the table

View File

@ -28,6 +28,7 @@ lvlHEIGHT = 16 ; $10
sprWIDTH = 10 sprWIDTH = 10
sprHEIGHT = 11 sprHEIGHT = 11
sprBYTES = 5
nbLIVES = 5 nbLIVES = 5
maxLEVEL = 150 maxLEVEL = 150

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff