with sprites

This commit is contained in:
Antoine Vignau 2024-02-18 23:14:46 +01:00
parent 705e30b637
commit e828fa5980
17 changed files with 1450 additions and 1898 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,21 +0,0 @@
* 0 vide
* 1 mur
* 2 mur dur
* 3 Žchelle visible
* 4 liane
* 5 trappe
* 6 Žchelle invisible
* 7 trŽsor
* 8 ennemi
* 9 hŽros
sprEMPTY = 0
sprWALL = 1
sprWALLI = 2 ; mur indestructible
sprLADDER = 3
sprCORD = 4
sprTRAP = 5
sprLADDERI = 6
sprCHEST = 7
sprFOE = 8
sprHERO = 9

File diff suppressed because it is too large Load Diff

View File

@ -319,7 +319,7 @@ L60BF LDX #$00
LDA L621D,Y LDA L621D,Y
STA $5F STA $5F
L60E4 JSR L64BD L60E4 JSR handleHERO
LDA fgPLAY ; are we dead? LDA fgPLAY ; are we dead?
BEQ L613F ; yes BEQ L613F ; yes
JSR playMELODY JSR playMELODY
@ -426,7 +426,7 @@ L61DE CMP #$01
BEQ L61E9 BEQ L61E9
L61E4 LDA #$01 L61E4 LDA #$01
JSR readSCORE JSR readSCORE
L61E9 JSR L786B L61E9 JSR showALLSCORES
LDA #$02 LDA #$02
STA fgDEMO STA fgDEMO
JMP L618E JMP L618E
@ -592,10 +592,11 @@ L62F7 INC fgODDEVEN
*----------------------------------- *-----------------------------------
diskLEVEL STA LB7F4 diskLEVEL STA LB7F4
LDA fgDEMO LDA fgDEMO ; are we in demo mode?
LSR LSR
BEQ L6345 BEQ diskDEMO ; yes
LDA intLEVEL ; level
LDA intLEVEL ; no, use internal level
LSR LSR
LSR LSR
LSR LSR
@ -607,20 +608,21 @@ diskLEVEL STA LB7F4
AND #$0F AND #$0F
STA LB7ED ; sector STA LB7ED ; sector
LDA #<levelDISK LDA #<levelDISK ; buffer
STA LB7F0 STA LB7F0
LDA #>levelDISK LDA #>levelDISK
STA LB7F0+1 STA LB7F0+1
LDA #$00 LDA #$00
STA LB7EB STA LB7EB
L6338 LDY #<LB7E8
diskRWTS LDY #<LB7E8
LDA #>LB7E8 LDA #>LB7E8
jsr callRWTS ; LoGo - JSR $0023 - Souvenir from protection jsr callRWTS ; LoGo - JSR $0023 - Souvenir from protection
BCC L6344 BCC L6344
JMP showTITLEPAGE JMP showTITLEPAGE
L6344 RTS L6344 RTS
L6345 LDA theLEVEL diskDEMO LDA theLEVEL ; demo mode uses levels in RAM
CLC CLC
ADC #>L9E00 ADC #>L9E00
STA ptrHGR1+1 STA ptrHGR1+1
@ -836,7 +838,7 @@ L64AF DEC theX
* *
*----------------------------------- *-----------------------------------
L64BD LDA #$01 handleHERO LDA #$01
STA fgCHEST STA fgCHEST
LDA fgHOLE LDA fgHOLE
BEQ L64CD BEQ L64CD
@ -938,7 +940,7 @@ L6584 LDA fgHEROFELL
L658F LDA #$20 L658F LDA #$20
STA fgSPEED STA fgSPEED
STA fgHEROFELL STA fgHEROFELL
JSR L6A12 JSR getPLAYERINPUT
LDA theKEY1 LDA theKEY1
CMP #chrI ; move up CMP #chrI ; move up
@ -1601,10 +1603,11 @@ L69F2 LDA demoKEY ; first entry is the fisrt key
tblDEMO2KEY ASC "IJKLOU " tblDEMO2KEY ASC "IJKLOU "
*----------------------------------- *-----------------------------------
* DEMO MODE ENGINE ENTRY POINT * GAME ENGINE ENTRY POINT
*----------------------------------- *-----------------------------------
L6A12 LDA fgDEMO getPLAYERINPUT
LDA fgDEMO
CMP #$01 CMP #$01
BEQ L69B8 BEQ L69B8
LDX KBD LDX KBD
@ -1664,7 +1667,7 @@ doEXTRAMAN
DEC theMEN ; man-- DEC theMEN ; man--
L6A67 JSR printMEN L6A67 JSR printMEN
LSR fgGOODSTART LSR fgGOODSTART
JMP L6A12 JMP getPLAYERINPUT
*--- dead code *--- dead code
@ -1680,7 +1683,7 @@ L6A67 JSR printMEN
doPAUSE JSR waitKEYDOWN doPAUSE JSR waitKEYDOWN
CMP #$9B CMP #$9B
BNE doPAUSE BNE doPAUSE
JMP L6A12 JMP getPLAYERINPUT
*------------------------------- *-------------------------------
* 92 - CTRL-R - TERMINATES CURRENT GAME * 92 - CTRL-R - TERMINATES CURRENT GAME
@ -1704,7 +1707,7 @@ doTOGGLESOUND
LDA fgSOUND LDA fgSOUND
EOR #$FF EOR #$FF
STA fgSOUND STA fgSOUND
JMP L6A12 JMP getPLAYERINPUT
*------------------------------- *-------------------------------
* 8A - DOWN ARROW - MOVE LEFT * 8A - DOWN ARROW - MOVE LEFT
@ -1712,7 +1715,7 @@ doTOGGLESOUND
doDOWNARROW LDA #chrJ doDOWNARROW LDA #chrJ
STA fgINPUT STA fgINPUT
JMP L6A12 JMP getPLAYERINPUT
*------------------------------- *-------------------------------
* 8B - UP ARROW - MOVE DOWN * 8B - UP ARROW - MOVE DOWN
@ -1720,7 +1723,7 @@ doDOWNARROW LDA #chrJ
doUPARROW LDA #chrK doUPARROW LDA #chrK
STA fgINPUT STA fgINPUT
JMP L6A12 JMP getPLAYERINPUT
*------------------------------- *-------------------------------
* 98 - CTRL-X - FLIPS X-AXIS * 98 - CTRL-X - FLIPS X-AXIS
@ -1730,7 +1733,7 @@ doFLIPX LDA joyXMIN
LDX joyXMAX LDX joyXMAX
STA joyXMAX STA joyXMAX
STX joyXMIN STX joyXMIN
JMP L6A12 JMP getPLAYERINPUT
*------------------------------- *-------------------------------
* 99 - CTRL-Y - FLIPS Y-AXIS * 99 - CTRL-Y - FLIPS Y-AXIS
@ -1740,7 +1743,7 @@ doFLIPY LDA joyYMIN
LDX joyYMAX LDX joyYMAX
STA joyYMAX STA joyYMAX
STX joyYMIN STX joyYMIN
JMP L6A12 JMP getPLAYERINPUT
*------------------------------- *-------------------------------
* 88 - LEFT ARROW - SLOWS DOWN * 88 - LEFT ARROW - SLOWS DOWN
@ -1749,7 +1752,7 @@ doFLIPY LDA joyYMIN
doSLOWDOWN LDA theSPEED doSLOWDOWN LDA theSPEED
BEQ L6ACD BEQ L6ACD
DEC theSPEED DEC theSPEED
JMP L6A12 JMP getPLAYERINPUT
*------------------------------- *-------------------------------
* 95 - RIGHT ARROW - SPEEDS UP * 95 - RIGHT ARROW - SPEEDS UP
@ -1759,7 +1762,7 @@ doSPEEDUP LDA theSPEED
CMP #$0F CMP #$0F
BEQ L6ACD BEQ L6ACD
INC theSPEED INC theSPEED
L6ACD JMP L6A12 L6ACD JMP getPLAYERINPUT
*------------------------------- *-------------------------------
* GET JOYSTICK KEY * GET JOYSTICK KEY
@ -2159,7 +2162,7 @@ L6D75 STA foeINDEX
LDA foeSTEPY LDA foeSTEPY
CMP #$02 CMP #$02
BNE L6DB7 BNE L6DB7
JSR L74F7 JSR foeTAKECHEST
LDY foeY LDY foeY
LDA tblBOARDALLL,Y LDA tblBOARDALLL,Y
STA ptrBBACK STA ptrBBACK
@ -2354,7 +2357,7 @@ L6F1C LDA #$08
LDA #$04 LDA #$04
STA foeSTEPY STA foeSTEPY
BNE L6F29 BNE L6F29
L6F26 JSR L74F7 L6F26 JSR foeTAKECHEST
L6F29 LDA #$0E L6F29 LDA #$0E
LDX #$0F LDX #$0F
JSR setFOESTEP JSR setFOESTEP
@ -2474,7 +2477,7 @@ L701C LDA #sprFOE
LDA #$04 LDA #$04
STA foeSTEPX STA foeSTEPX
BNE L7029 BNE L7029
L7026 JSR L74F7 L7026 JSR foeTAKECHEST
L7029 LDY foeX L7029 LDY foeX
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #sprBAR CMP #sprBAR
@ -2543,7 +2546,7 @@ L70AD LDA #sprFOE
LDA #$00 LDA #$00
STA foeSTEPX STA foeSTEPX
BEQ L70BA BEQ L70BA
L70B7 JSR L74F7 L70B7 JSR foeTAKECHEST
L70BA LDY foeX L70BA LDY foeX
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #sprBAR CMP #sprBAR
@ -2938,8 +2941,8 @@ L73A1 LDA tblBOARDALLL+1,Y
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #sprEMPTY CMP #sprEMPTY
BEQ L742D BEQ L742D
CPY #$00 CPY #$00 ; first column?
BEQ L73FB BEQ L73FB ; yes
DEY DEY
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #sprBAR CMP #sprBAR
@ -3097,10 +3100,11 @@ calcFOESPRITEXY
RTS RTS
*----------------------------------- *-----------------------------------
* * FOE TAKES A CHEST
*----------------------------------- *-----------------------------------
L74F7 LDA foeSTEPX foeTAKECHEST
LDA foeSTEPX
CMP #$02 CMP #$02
BNE L753D BNE L753D
LDA foeSTEPY LDA foeSTEPY
@ -3113,11 +3117,11 @@ L74F7 LDA foeSTEPX
STA ptrBBACK+1 STA ptrBBACK+1
LDY foeX LDY foeX
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #$07 CMP #sprCHEST
BNE L753D BNE L753D
LDA foeACTION LDA foeACTION ; deja un tresor ?
BMI L753D BMI L753D ; oui
LDA #$FF LDA #$FF ; prends-le
SEC SEC
SBC tempX6 SBC tempX6
STA foeACTION STA foeACTION
@ -3131,7 +3135,7 @@ L74F7 LDA foeSTEPX
LDY theY LDY theY
LDX theX LDX theX
JSR getXY JSR getXY
LDA #$07 LDA #sprCHEST
JMP drawSPRITEXY JMP drawSPRITEXY
L753D RTS L753D RTS
@ -3191,9 +3195,9 @@ foeNEXTSTEPX
BCC L758F BCC L758F
BEQ L7594 BEQ L7594
DEC foeSTEPX DEC foeSTEPX
JMP L74F7 JMP foeTAKECHEST
L758F INC foeSTEPX L758F INC foeSTEPX
JMP L74F7 JMP foeTAKECHEST
L7594 RTS L7594 RTS
*----------------------------------- *-----------------------------------
@ -3206,9 +3210,9 @@ foeNEXTSTEPY
BCC L75A2 BCC L75A2
BEQ L75A7 BEQ L75A7
DEC foeSTEPY DEC foeSTEPY
JMP L74F7 JMP foeTAKECHEST
L75A2 INC foeSTEPY L75A2 INC foeSTEPY
JMP L74F7 JMP foeTAKECHEST
L75A7 RTS L75A7 RTS
*----------------------------------- *-----------------------------------
@ -3476,7 +3480,7 @@ resurrectFOE
*------------------------------- *-------------------------------
displayHIGHSCORES displayHIGHSCORES
JSR L786B JSR showALLSCORES
LDX #$FF LDX #$FF
LDY #$FF LDY #$FF
LDA #$04 LDA #$04
@ -3499,7 +3503,8 @@ L77C7 LDA KBD
L77D6 STA KBDSTROBE L77D6 STA KBDSTROBE
STA TXTPAGE1 STA TXTPAGE1
JSR clearHGR2 JSR clearHGR2
LDY #$0F
LDY #lvlHEIGHT-1
STY theY STY theY
L77E3 LDA tblBOARDALLL,Y L77E3 LDA tblBOARDALLL,Y
STA ptrBBACK STA ptrBBACK
@ -3508,7 +3513,7 @@ L77E3 LDA tblBOARDALLL,Y
LDY #lvlWIDTH-1 LDY #lvlWIDTH-1
STY theX STY theX
L77F1 LDA (ptrBBACK),Y L77F1 LDA (ptrBBACK),Y
CMP #$05 CMP #sprTRAP
BNE L77F9 BNE L77F9
LDA #sprWALL LDA #sprWALL
L77F9 JSR coutHGR2 L77F9 JSR coutHGR2
@ -3534,17 +3539,18 @@ L780A STX tempINDEX
L7827 CMP #$0B L7827 CMP #$0B
BCC L7833 BCC L7833
LDA #$37 LDA #$37 ; rebuild wall step 1
JSR coutHGR2 JSR coutHGR2
JMP L7838 JMP L7838
L7833 LDA #$38 L7833 LDA #$38 ; rebuild wall step 2
JSR coutHGR2 JSR coutHGR2
L7838 LDX tempINDEX L7838 LDX tempINDEX
DEX DEX
BPL L780A BPL L780A
LDX nbFOE LDX nbFOE
BEQ L7868 BEQ L7868 ; skip foe n¡0
L7841 LDA tblFOETEMPO,X L7841 LDA tblFOETEMPO,X
STX tempINDEX STX tempINDEX
BEQ L7863 BEQ L7863
@ -3556,16 +3562,21 @@ L7841 LDA tblFOETEMPO,X
BCS L7863 BCS L7863
CMP #$0B CMP #$0B
BCC L785E BCC L785E
LDA #$39 LDA #$39 ; foe revives step 1
BNE L7860 BNE L7860
L785E LDA #$3A L785E LDA #$3A ; foe revives step 2
L7860 JSR coutHGR2 L7860 JSR coutHGR2
L7863 LDX tempINDEX L7863 LDX tempINDEX
DEX DEX
BNE L7841 BNE L7841
L7868 JMP L6A12 L7868 JMP getPLAYERINPUT
L786B JSR clearHGR2 *-------------------------------
* SHOW ALL SCORES
*-------------------------------
showALLSCORES
JSR clearHGR2
LDA #>HGR2 LDA #>HGR2
STA activePAGE STA activePAGE
LDA #$00 LDA #$00
@ -4074,7 +4085,7 @@ editCLEAR JSR printSTRING
ASC ">>CLEAR LEVEL"00 ASC ">>CLEAR LEVEL"00
JSR inputLEVEL JSR inputLEVEL
BCS L7CB9 BCS L7CB9
JSR L807F JSR checkDISK
LDY #$00 LDY #$00
TYA TYA
L7CAB STA levelDISK,Y L7CAB STA levelDISK,Y
@ -4116,7 +4127,7 @@ editMOVE JSR printSTRING
ASC 8D ASC 8D
ASC " SOURCE DISKETTE"00 ASC " SOURCE DISKETTE"00
JSR editWAITKEY JSR editWAITKEY
JSR L807F JSR checkDISK
LDA L824F LDA L824F
STA intLEVEL STA intLEVEL
LDA #$01 ; read LDA #$01 ; read
@ -4125,7 +4136,7 @@ editMOVE JSR printSTRING
ASC 8D ASC 8D
ASC " DESTINATION DISKETTE"00 ASC " DESTINATION DISKETTE"00
JSR editWAITKEY JSR editWAITKEY
JSR L807F JSR checkDISK
LDA L8250 LDA L8250
STA intLEVEL STA intLEVEL
LDA #$02 ; write LDA #$02 ; write
@ -4177,7 +4188,7 @@ editINIT JSR printSTRING
STA LB7EC STA LB7EC
LDA #$02 LDA #$02
STA LB7F4 STA LB7F4
JSR L6338 JSR diskRWTS
LDA #$E0 LDA #$E0
STA intLEVEL STA intLEVEL
LDA #$01 LDA #$01
@ -4255,7 +4266,7 @@ editEDITLEVEL
JSR drawINFOBAR ; show frame JSR drawINFOBAR ; show frame
LDA #>HGR1 LDA #>HGR1
STA activePAGE STA activePAGE
JSR L807F ; check diskette (master or data disk) JSR checkDISK ; check diskette (master or data disk)
LDX #$01 LDX #$01
STX fgCHANGE STX fgCHANGE
DEX ; mode edit DEX ; mode edit
@ -4452,13 +4463,16 @@ L8075 STA TXTPAGE1
STA theY STA theY
RTS RTS
L807F LDA #$01 ; load score *-----------------------------------
* CHECK DISK
*-----------------------------------
checkDISK LDA #$01 ; load score
JSR readSCORE JSR readSCORE
CMP #$00 ; 00 means disk not identified CMP #$00 ; 00 means disk not identified
BNE L808E BNE L808E
JSR tellNODATADISK JSR tellNODATADISK
JMP editMAIN JMP editMAIN
L808E CMP #$01 ; 01 means master disk L808E CMP #$01 ; 01 means master disk
BNE L8105 BNE L8105
JSR tellMASTERDISK JSR tellMASTERDISK
@ -5073,7 +5087,7 @@ L8536 LDX scoreoffset,Y ; permet la saisie des initiales
LDA scoreoffset,Y LDA scoreoffset,Y
STA L8582+1 STA L8582+1
STA L85C9+1 STA L85C9+1
JSR L786B JSR showALLSCORES
LDA #>HGR2 LDA #>HGR2
STA activePAGE STA activePAGE
LDA $69 LDA $69
@ -5141,14 +5155,14 @@ L85F6 LDA #$68
STA counter STA counter
LDA bsDATA LDA bsDATA
BNE L8601 BNE L8601
LDA #$0A LDA #sprCURSOR
L8601 JSR coutHGR2 L8601 JSR coutHGR2
L8604 LDA KBD L8604 LDA KBD
BMI L8628 BMI L8628
JSR checkMOVEMENT JSR checkMOVEMENT
DEC counter DEC counter
BNE L8604 BNE L8604
LDA #$00 LDA #sprEMPTY
JSR coutHGR2 JSR coutHGR2
LDA #$68 LDA #$68
STA counter STA counter
@ -5979,27 +5993,27 @@ L8B23 JSR L8BCF
CLC CLC
RTS RTS
L8B7A JSR L8CE5 L8B7A JSR drawGOLINE
HEX 000102030405060708090A020100 HEX 000102030405060708090A020100
L8B8B JSR L8CE5 L8B8B JSR drawGOLINE
HEX 0000010203040507090A02010000 HEX 0000010203040507090A02010000
L8B9C JSR L8CE5 L8B9C JSR drawGOLINE
HEX 00000001020304090A0201000000 HEX 00000001020304090A0201000000
L8BAD JSR L8CE5 L8BAD JSR drawGOLINE
HEX 000000000102030A020100000000 HEX 000000000102030A020100000000
L8BBE JSR L8CE5 L8BBE JSR drawGOLINE
HEX 000000000001030A010000000000 HEX 000000000001030A010000000000
L8BCF JSR L8CE5 L8BCF JSR drawGOLINE
HEX 0000000000000101000000000000 HEX 0000000000000101000000000000
L8BE0 JSR L8CE5 L8BE0 JSR drawGOLINE
HEX 0001020A09080706050403020100 HEX 0001020A09080706050403020100
L8BF1 JSR L8CE5 L8BF1 JSR drawGOLINE
HEX 000001020A090705040302010000 HEX 000001020A090705040302010000
L8C02 JSR L8CE5 L8C02 JSR drawGOLINE
HEX 00000001020A0904030201000000 HEX 00000001020A0904030201000000
L8C13 JSR L8CE5 L8C13 JSR drawGOLINE
HEX 0000000001020A03020100000000 HEX 0000000001020A03020100000000
L8C24 JSR L8CE5 L8C24 JSR drawGOLINE
HEX 0000000000010A03010000000000 HEX 0000000000010A03010000000000
L8C35 HEX 8080808080808080808080808080 L8C35 HEX 8080808080808080808080808080
@ -6026,7 +6040,7 @@ L8CCF DA L8C35-$D
DA L8CB3-$D DA L8CB3-$D
DA L8CC1-$D DA L8CC1-$D
L8CE5 PLA ; pour afficher game over drawGOLINE PLA ; pour afficher game over
STA ptrDATA STA ptrDATA
PLA PLA
STA ptrDATA+1 STA ptrDATA+1

File diff suppressed because it is too large Load Diff

View File

@ -78,7 +78,7 @@ demoDATA HEX 164C6602550166023618550144016614
*--- Les niveaux par dŽfaut *--- Les niveaux par dŽfaut
L9E00 HEX D1D5A0A4B1C3B3B58DF9F4E1E2ECE5A0 ; 0 L9E00 HEX D1D5A0A4B1C3B3B58DF9F4E1E2ECE5A0 ; 0 - garbage & source code
HEX C5D1D5A0A4B1C3B5B18DE2F9F4E1E2EC HEX C5D1D5A0A4B1C3B5B18DE2F9F4E1E2EC
HEX E5A0C5D1D5A0A4B1C3B6B28DE2E9F4E1 HEX E5A0C5D1D5A0A4B1C3B6B28DE2E9F4E1
HEX E2ECE5A0C5D1D5A0A4B1C3B7C58DF8E2 HEX E2ECE5A0C5D1D5A0A4B1C3B7C58DF8E2
@ -276,6 +276,7 @@ LA200 DB <LA900
DB <LACE2 DB <LACE2
DB <LAAF4 DB <LAAF4
DB <LACF2 DB <LACF2
LA280 DB >LA900 LA280 DB >LA900
DB >LA902 DB >LA902
DB >LA904 DB >LA904