This commit is contained in:
Antoine Vignau 2024-02-15 21:47:31 +01:00
parent 4fee959c35
commit 705e30b637
3 changed files with 10290 additions and 10233 deletions

View File

@ -78,7 +78,7 @@ foeX = $12
foeY = $13 foeY = $13
foeINDEX = $14 foeINDEX = $14
foeLEFTRIGHT = $15 foeLEFTRIGHT = $15
foeC70 = $16 foeACTION = $16
foeSTEPX = $17 ; coordinate foeSTEPX = $17 ; coordinate
foeSTEPY = $18 ; coordinate foeSTEPY = $18 ; coordinate
idxFOE = $19 ; current foe index idxFOE = $19 ; current foe index
@ -333,20 +333,20 @@ L60F5 LDA boardY ; are we on top row
CMP #$02 CMP #$02
BNE L6107 BNE L6107
LDA nbCHEST ; are there chests left? LDA nbCHEST ; are there chests left?
BEQ L611A BEQ L611A ; no
CMP #$FF CMP #$FF
BEQ L611A ; we won BEQ L611A ; no, we won
L6107 JSR L75F4 L6107 JSR checkHOLE ; are there holes active?
LDA fgPLAY ; are we dead? LDA fgPLAY ; are we dead?
BEQ L613F ; yes BEQ L613F ; yes
JSR playMELODY JSR playMELODY
JSR L6C82 JSR handleFOE ; handle the foes
LDA fgPLAY LDA fgPLAY ; am I dead?
BEQ L613F BEQ L613F ; yes...
BNE L60E4 ; loop BNE L60E4 ; no, loop
L611A INC theLEVEL L611A INC theLEVEL ; next level, no chests left
INC intLEVEL INC intLEVEL
INC theMEN ; man++ INC theMEN ; man++
BNE L6124 BNE L6124
@ -732,7 +732,7 @@ L63F8 CMP #sprFOE
LDA theY LDA theY
STA tblFOEY,X STA tblFOEY,X
LDA #$00 LDA #$00
STA L0C70,X STA tblFOEACTION,X
STA tblFOEINDEX,X STA tblFOEINDEX,X
LDA #$02 LDA #$02
STA tblFOESTEPX,X ; x-step movement STA tblFOESTEPX,X ; x-step movement
@ -1263,7 +1263,7 @@ L67E7 LDY boardY ; are we on last line?
CPY #lvlHEIGHT-1 CPY #lvlHEIGHT-1
BCS L67D8 BCS L67D8
INY INY
JSR L884B JSR setBOARDLINEPOINTERS
LDY boardX ; are we on first column? LDY boardX ; are we on first column?
BEQ L67D8 BEQ L67D8
DEY DEY
@ -1271,7 +1271,7 @@ L67E7 LDY boardY ; are we on last line?
CMP #sprWALL ; a wall? CMP #sprWALL ; a wall?
BNE L67D8 BNE L67D8
LDY boardY ; yes LDY boardY ; yes
JSR L884B JSR setBOARDLINEPOINTERS
LDY boardX LDY boardX
DEY DEY
LDA (ptrBOARD),Y LDA (ptrBOARD),Y
@ -1368,7 +1368,7 @@ L68AD LDY boardY ; are we on last line?
CPY #lvlHEIGHT-1 CPY #lvlHEIGHT-1
BCS L689E BCS L689E
INY INY
JSR L884B JSR setBOARDLINEPOINTERS
LDY boardX ; are we on lat column? LDY boardX ; are we on lat column?
CPY #lvlWIDTH-1 CPY #lvlWIDTH-1
BCS L689E BCS L689E
@ -1377,7 +1377,7 @@ L68AD LDY boardY ; are we on last line?
CMP #sprWALL ; do we have a wall? CMP #sprWALL ; do we have a wall?
BNE L689E BNE L689E
LDY boardY LDY boardY
JSR L884B JSR setBOARDLINEPOINTERS
LDY boardX LDY boardX
INY INY
LDA (ptrBOARD),Y LDA (ptrBOARD),Y
@ -2021,7 +2021,7 @@ L6C81 RTS
* *
*----------------------------------- *-----------------------------------
L6C82 LDX nbFOE handleFOE LDX nbFOE ; no foe, skip
BEQ L6CA6 BEQ L6CA6
INC $64 INC $64
LDY $64 LDY $64
@ -2033,7 +2033,7 @@ L6C92 LDA |$0060,Y
STA $63 STA $63
L6C97 LSR $63 L6C97 LSR $63
BCC L6CA2 BCC L6CA2
JSR L6CDB JSR doFOEACTION
LDA fgPLAY LDA fgPLAY
BEQ L6CA6 BEQ L6CA6
L6CA2 LDA $63 L6CA2 LDA $63
@ -2078,18 +2078,18 @@ seqFOE DB $08 ; 0 - foe runs left 1
* *
*----------------------------------- *-----------------------------------
L6CDB INC idxFOE doFOEACTION INC idxFOE
LDX nbFOE LDX nbFOE
CPX idxFOE CPX idxFOE
BCS L6CE7 BCS L6CE7
LDX #$01 LDX #$01
STX idxFOE STX idxFOE
L6CE7 JSR loadFOEDATA L6CE7 JSR loadFOEDATA
LDA foeC70 LDA foeACTION
BMI L6D08 BMI L6D08
BEQ L6D08 BEQ L6D08
DEC foeC70 DEC foeACTION
LDY foeC70 LDY foeACTION
CPY #$0D CPY #$0D
BCS L6CFB BCS L6CFB
JMP L6E65 JMP L6E65
@ -2146,7 +2146,7 @@ L6D61 JMP L6E85
L6D64 JSR calcFOESPRITEXY L6D64 JSR calcFOESPRITEXY
JSR drawSPRITEXY JSR drawSPRITEXY
JSR L7582 JSR foeNEXTSTEPX
LDA #$06 ; foe falls left LDA #$06 ; foe falls left
LDY foeLEFTRIGHT LDY foeLEFTRIGHT
BMI L6D75 BMI L6D75
@ -2169,11 +2169,11 @@ L6D75 STA foeINDEX
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #sprWALL CMP #sprWALL
BNE L6DB7 BNE L6DB7
LDA foeC70 LDA foeACTION
BPL L6DA2 BPL L6DA2
DEC nbCHEST DEC nbCHEST
L6DA2 LDA $5F L6DA2 LDA $5F
STA foeC70 STA foeACTION
LDY #$00 ; we trapped a foe LDY #$00 ; we trapped a foe
LDA #$75 LDA #$75
JSR printSCORE JSR printSCORE
@ -2217,7 +2217,7 @@ L6DE1 STA (ptrBOARD),Y
L6E02 LDA (ptrBBACK),Y L6E02 LDA (ptrBBACK),Y
CMP #sprWALL CMP #sprWALL
BNE L6E58 BNE L6E58
LDA foeC70 LDA foeACTION
BPL L6E58 BPL L6E58
LDY foeY LDY foeY
DEY DEY
@ -2252,7 +2252,7 @@ L6E46 LDY foeY
LDA tblBOARDALLH,Y LDA tblBOARDALLH,Y
STA ptrBOARD+1 STA ptrBOARD+1
LDA #$00 LDA #$00
STA foeC70 STA foeACTION
LDY foeX LDY foeX
L6E58 LDA #sprFOE L6E58 LDA #sprFOE
STA (ptrBOARD),Y STA (ptrBOARD),Y
@ -2264,7 +2264,7 @@ L6E65 CPY #$07
BCC L6E85 BCC L6E85
JSR calcFOESPRITEXY JSR calcFOESPRITEXY
JSR drawSPRITEXY JSR drawSPRITEXY
LDY foeC70 LDY foeACTION
LDA L6E7F-7,Y LDA L6E7F-7,Y
STA foeSTEPX STA foeSTEPX
L6E76 JSR calcFOESPRITEXY L6E76 JSR calcFOESPRITEXY
@ -2290,10 +2290,10 @@ L6E97 DA saveFOEDATA-1 ; 0
DA L6EAC-1 ; 3 DA L6EAC-1 ; 3
DA L6F39-1 ; 4 DA L6F39-1 ; 4
L6EA1 LDA foeC70 L6EA1 LDA foeACTION
BEQ L6EA9 BEQ L6EA9
BMI L6EA9 BMI L6EA9
INC foeC70 INC foeACTION
L6EA9 JMP saveFOEDATA L6EA9 JMP saveFOEDATA
*--- 3 *--- 3
@ -2320,7 +2320,7 @@ L6EAC LDY foeSTEPY
BEQ L6EA1 BEQ L6EA1
L6ED5 JSR calcFOESPRITEXY L6ED5 JSR calcFOESPRITEXY
JSR drawSPRITEXY JSR drawSPRITEXY
JSR L7582 JSR foeNEXTSTEPX
LDY foeY LDY foeY
LDA tblBOARDALLL,Y LDA tblBOARDALLL,Y
STA ptrBOARD STA ptrBOARD
@ -2331,7 +2331,7 @@ L6ED5 JSR calcFOESPRITEXY
STA ptrBBACK+1 STA ptrBBACK+1
DEC foeSTEPY DEC foeSTEPY
BPL L6F26 BPL L6F26
JSR L753E JSR checkDROPCHEST
LDY foeX LDY foeX
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #$01 CMP #$01
@ -2385,7 +2385,7 @@ L6F60 JMP saveFOEDATA
L6F63 JSR calcFOESPRITEXY L6F63 JSR calcFOESPRITEXY
JSR drawSPRITEXY JSR drawSPRITEXY
JSR L7582 JSR foeNEXTSTEPX
LDY foeY LDY foeY
LDA tblBOARDALLL,Y LDA tblBOARDALLL,Y
STA ptrBOARD STA ptrBOARD
@ -2398,7 +2398,7 @@ L6F63 JSR calcFOESPRITEXY
LDA foeSTEPY LDA foeSTEPY
CMP #$05 CMP #$05
BCC L6FB9 BCC L6FB9
JSR L753E JSR checkDROPCHEST
LDY foeX LDY foeX
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #sprWALL CMP #sprWALL
@ -2451,12 +2451,12 @@ L6FEE JMP saveFOEDATA
L6FF1 JSR calcFOESPRITEXY L6FF1 JSR calcFOESPRITEXY
JSR drawSPRITEXY JSR drawSPRITEXY
JSR L7595 JSR foeNEXTSTEPY
LDA #$FF LDA #$FF
STA foeLEFTRIGHT STA foeLEFTRIGHT
DEC foeSTEPX DEC foeSTEPX
BPL L7026 BPL L7026
JSR L753E JSR checkDROPCHEST
LDY foeX LDY foeX
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #sprWALL CMP #sprWALL
@ -2518,14 +2518,14 @@ L707B JMP saveFOEDATA
L707E JSR calcFOESPRITEXY L707E JSR calcFOESPRITEXY
JSR drawSPRITEXY JSR drawSPRITEXY
JSR L7595 JSR foeNEXTSTEPY
LDA #$01 LDA #$01
STA foeLEFTRIGHT STA foeLEFTRIGHT
INC foeSTEPX INC foeSTEPX
LDA foeSTEPX LDA foeSTEPX
CMP #$05 CMP #$05
BCC L70B7 BCC L70B7
JSR L753E JSR checkDROPCHEST
LDY foeX LDY foeX
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #sprWALL CMP #sprWALL
@ -2568,7 +2568,7 @@ L70D8 STX tempX4
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #sprWALL CMP #sprWALL
BNE L70F7 BNE L70F7
LDA foeC70 LDA foeACTION
BEQ L70F7 BEQ L70F7
BMI L70F7 BMI L70F7
LDA #$03 ; action 3 LDA #$03 ; action 3
@ -3115,12 +3115,12 @@ L74F7 LDA foeSTEPX
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #$07 CMP #$07
BNE L753D BNE L753D
LDA foeC70 LDA foeACTION
BMI L753D BMI L753D
LDA #$FF LDA #$FF
SEC SEC
SBC tempX6 SBC tempX6
STA foeC70 STA foeACTION
LDA #sprEMPTY LDA #sprEMPTY
STA (ptrBBACK),Y STA (ptrBBACK),Y
LDY foeY LDY foeY
@ -3135,11 +3135,17 @@ L74F7 LDA foeSTEPX
JMP drawSPRITEXY JMP drawSPRITEXY
L753D RTS L753D RTS
L753E LDA foeC70 *-----------------------------------
BPL L7573 * FOE DROPS CHEST
INC foeC70 *-----------------------------------
checkDROPCHEST
LDA foeACTION
BPL L7573 ; skip if positive
INC foeACTION ; here is negative
BNE L7573 BNE L7573
LDY foeY
LDY foeY ; here if 0
STY theY STY theY
LDA tblBOARDALLL,Y LDA tblBOARDALLL,Y
STA ptrBBACK STA ptrBBACK
@ -3148,18 +3154,18 @@ L753E LDA foeC70
LDY foeX LDY foeX
STY theX STY theX
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #$00 CMP #sprEMPTY
BNE L7571 BNE L7571
LDA #$07 LDA #sprCHEST
STA (ptrBBACK),Y STA (ptrBBACK),Y
JSR coutHGR2 JSR coutHGR2
LDY theY LDY theY
LDX theX LDX theX
JSR getXY JSR getXY
LDA #$07 LDA #sprCHEST
JMP drawSPRXYCOLLISION JMP drawSPRXYCOLLISION
L7571 DEC foeC70 L7571 DEC foeACTION
L7573 RTS L7573 RTS
*----------------------------------- *-----------------------------------
@ -3179,7 +3185,8 @@ L757D CPX foeINDEX
* SET FOE NEXT STEP X * SET FOE NEXT STEP X
*----------------------------------- *-----------------------------------
L7582 LDA foeSTEPX foeNEXTSTEPX
LDA foeSTEPX
CMP #$02 CMP #$02
BCC L758F BCC L758F
BEQ L7594 BEQ L7594
@ -3193,7 +3200,8 @@ L7594 RTS
* SET FOE NEXT STEP Y * SET FOE NEXT STEP Y
*----------------------------------- *-----------------------------------
L7595 LDA foeSTEPY foeNEXTSTEPY
LDA foeSTEPY
CMP #$02 CMP #$02
BCC L75A2 BCC L75A2
BEQ L75A7 BEQ L75A7
@ -3216,8 +3224,8 @@ saveFOEDATA LDX idxFOE
STA tblFOESTEPX,X STA tblFOESTEPX,X
LDA foeSTEPY LDA foeSTEPY
STA tblFOESTEPY,X STA tblFOESTEPY,X
LDA foeC70 LDA foeACTION
STA L0C70,X STA tblFOEACTION,X
LDA foeLEFTRIGHT LDA foeLEFTRIGHT
STA tblFOELEFTRIGHT,X STA tblFOELEFTRIGHT,X
LDA foeINDEX LDA foeINDEX
@ -3241,21 +3249,22 @@ loadFOEDATA LDX idxFOE
STA foeINDEX STA foeINDEX
LDA tblFOELEFTRIGHT,X LDA tblFOELEFTRIGHT,X
STA foeLEFTRIGHT STA foeLEFTRIGHT
LDA L0C70,X LDA tblFOEACTION,X
STA foeC70 STA foeACTION
RTS RTS
*----------------------------------- *-----------------------------------
* * CHECK HOLE - Who/What is in the hole?
*----------------------------------- *-----------------------------------
L75F4 JSR L7716 checkHOLE JSR checkRESURRECT
INC tempX6 INC tempX6 ; next one
LDA tempX6 LDA tempX6
CMP #lvlWIDTH CMP #lvlWIDTH ; ok, we browsed the line
BCC L7603 BCC L7603
LDA #$00 LDA #$00 ; start again at column 0
STA tempX6 STA tempX6
L7603 LDX #sizeHOLE-2 L7603 LDX #sizeHOLE-2
L7605 LDA tblHOLET,X L7605 LDA tblHOLET,X
STX tempINDEX STX tempINDEX
@ -3269,21 +3278,22 @@ L760F DEC tblHOLET,X
LDA tblHOLEY,X LDA tblHOLEY,X
STA theY STA theY
LDA tblHOLET,X LDA tblHOLET,X
CMP #$14 CMP #$14 ; 20
BNE L7639 BNE L7639
LDA #$37 LDA #$37 ; 1er sprite
L7627 JSR coutHGR2 L7627 JSR coutHGR2
LDX theX LDX theX
LDY theY LDY theY
JSR getXY JSR getXY
LDA #$00 LDA #sprEMPTY
JSR drawSPRITEXY JSR drawSPRITEXY
L7636 JMP L770D L7636 JMP L770D
L7639 CMP #$0A L7639 CMP #$0A ; 10
BNE L7636 BNE L7636
LDA #$38 LDA #$38 ; 2nd sprite
BNE L7627 BNE L7627
L7641 LDX tempINDEX L7641 LDX tempINDEX
LDY tblHOLEY,X LDY tblHOLEY,X
STY theY STY theY
@ -3303,38 +3313,41 @@ L7641 LDX tempINDEX
L7667 CMP #sprHERO L7667 CMP #sprHERO
BNE L766D BNE L766D
LSR fgPLAY LSR fgPLAY ; the hero was in the hole... he's dead
L766D CMP #sprFOE L766D CMP #sprFOE
BEQ L767A BEQ L767A ; it was a foe
CMP #sprCHEST CMP #sprCHEST
BNE L7677 BNE L7677
DEC nbCHEST DEC nbCHEST ; a chest, remove one
L7677 JMP L7701 L7677 JMP L7701
L767A LDA #sprWALL *--- kill the foe
L767A LDA #sprWALL ; put a wall
STA (ptrBOARD),Y STA (ptrBOARD),Y
STA (ptrBBACK),Y STA (ptrBBACK),Y
JSR coutHGR1 JSR coutHGR1
LDA #sprWALL LDA #sprWALL
JSR coutHGR2 JSR coutHGR2
LDX nbFOE
LDX nbFOE ; find the foe
L768A LDA tblFOEX,X L768A LDA tblFOEX,X
CMP theX CMP theX
BNE L76FE BNE L76FE
LDA tblFOEY,X LDA tblFOEY,X
CMP theY CMP theY
BNE L76FE BNE L76FE
LDA L0C70,X LDA tblFOEACTION,X ; was he holding a chest?
BPL L769F BPL L769F
DEC nbCHEST DEC nbCHEST ; yes, remove it
L769F LDA #$7F L769F LDA #$7F ; no chest
STA L0C70,X STA tblFOEACTION,X
STX idxFOE STX idxFOE
JSR loadFOEDATA JSR loadFOEDATA
JSR calcFOESPRITEXY JSR calcFOESPRITEXY
JSR drawSPRITEXY JSR drawSPRITEXY
LDX idxFOE LDX idxFOE
LDY #$01 LDY #$01 ; we resurrect him on line 1
STY theY STY theY
L76B5 LDY theY L76B5 LDY theY
LDA tblBOARDALLL,Y LDA tblBOARDALLL,Y
@ -3343,7 +3356,7 @@ L76B5 LDY theY
STA ptrBBACK+1 STA ptrBBACK+1
LDY tempX6 LDY tempX6
L76C3 LDA (ptrBBACK),Y L76C3 LDA (ptrBBACK),Y
CMP #sprEMPTY CMP #sprEMPTY ; only if there is a space
BEQ L76D9 BEQ L76D9
INC tempX6 INC tempX6
LDY tempX6 LDY tempX6
@ -3382,7 +3395,12 @@ L770D LDX tempINDEX
JMP L7605 JMP L7605
L7715 RTS L7715 RTS
L7716 LDX nbFOE ; ennemi 0 n'existe pas *-----------------------------------
* CHECK RESURRECT - Can/Do we resurrect a foe?
*-----------------------------------
checkRESURRECT
LDX nbFOE ; ennemi 0 n'existe pas
BEQ L7715 BEQ L7715
LDA idxFOE LDA idxFOE
PHA PHA
@ -3391,7 +3409,7 @@ L771D LDA tblFOETEMPO,X
STX idxFOE STX idxFOE
JSR loadFOEDATA JSR loadFOEDATA
LDA #$7F LDA #$7F
STA L0C70,X STA tblFOEACTION,X
LDA tblFOEX,X LDA tblFOEX,X
STA theX STA theX
LDA tblFOEY,X LDA tblFOEY,X
@ -3444,7 +3462,7 @@ resurrectFOE
JSR coutHGR2 JSR coutHGR2
LDA #$00 LDA #$00
LDX idxFOE LDX idxFOE
STA L0C70,X STA tblFOEACTION,X
STA tblFOETEMPO,X STA tblFOETEMPO,X
LDA #sprFOE LDA #sprFOE
JSR coutHGR1 JSR coutHGR1
@ -5462,8 +5480,7 @@ L880A LDA ptrSTRSND+1
* PLAY MELODY * PLAY MELODY
*----------------------------------- *-----------------------------------
playMELODY playMELODY LDY idxNOTE
LDY idxNOTE
BEQ L8832 BEQ L8832
LDA sndNOTE,Y LDA sndNOTE,Y
LDX sndDURATION,Y LDX sndDURATION,Y
@ -5480,8 +5497,8 @@ playMELODY
L8830 SEC L8830 SEC
RTS RTS
L8832 LDA fgHEROFELL L8832 LDA fgHEROFELL ; is the hero in a hole?
BNE L8844 BNE L8844 ; yes
LDA fgSPEED LDA fgSPEED
LSR LSR
INC fgSPEED INC fgSPEED
@ -5492,12 +5509,17 @@ L8832 LDA fgHEROFELL
CLC CLC
RTS RTS
L8844 LDX theSPEED L8844 LDX theSPEED ; wait....
JSR doWAIT JSR doWAIT
CLC CLC
RTS RTS
L884B LDA tblBOARDALLL,Y *-------------------------------
* SET BOARD LINE POINTERS
*-------------------------------
setBOARDLINEPOINTERS
LDA tblBOARDALLL,Y
STA ptrBOARD STA ptrBOARD
STA ptrBBACK STA ptrBBACK
LDA tblBOARDALLH,Y LDA tblBOARDALLH,Y

File diff suppressed because it is too large Load Diff

View File

@ -78,7 +78,7 @@ tblLADDERIY ds sizeLI ; que 45
sizeFOE = 8 ; on pourrait avoir 8 ennemis sizeFOE = 8 ; on pourrait avoir 8 ennemis
tblFOEX ds sizeFOE ; $0C60 mais le jeu n'en autorise tblFOEX ds sizeFOE ; $0C60 mais le jeu n'en autorise
tblFOEY ds sizeFOE ; que 5 tblFOEY ds sizeFOE ; que 5
L0C70 ds sizeFOE tblFOEACTION ds sizeFOE
tblFOESTEPX ds sizeFOE ; animation step in x-coord tblFOESTEPX ds sizeFOE ; animation step in x-coord
tblFOESTEPY ds sizeFOE ; animation step in y-coord tblFOESTEPY ds sizeFOE ; animation step in y-coord
tblFOEINDEX ds sizeFOE ; animation index tblFOEINDEX ds sizeFOE ; animation index