antoine-source/loderunner/source/LR.CODE.S

6397 lines
96 KiB
ArmAsm
Raw Normal View History

2023-07-08 16:35:15 +00:00
*
* Lode Runner
* (c) 1983, Broderbund Software
* (s) 2014, Brutal Deluxe Software
*
mx %11
lst off
2024-02-27 20:08:52 +00:00
*-----------------------------------
* MACRO
*-----------------------------------
@playsound mac
lda #]1
jsr playSOUND
eom
2024-02-08 21:48:24 +00:00
*-----------------------------------
2024-02-13 08:09:27 +00:00
* ENTRY POINT
2024-02-08 21:48:24 +00:00
*-----------------------------------
2024-02-19 16:43:51 +00:00
theGAME JSR checkJOYSTICK
2023-07-08 16:35:15 +00:00
2024-02-26 20:27:45 +00:00
* LDA #$01 ; read score table
* JSR readSCORE
2023-07-08 16:35:15 +00:00
*--- Show title page
2024-02-08 21:48:24 +00:00
* Data from $0F00 to $1A84
2023-07-08 16:35:15 +00:00
2024-02-08 21:48:24 +00:00
showTITLEPAGE
JSR clearHGR1 ; display the compressed title page
2024-02-22 11:46:31 +00:00
2024-02-27 20:08:52 +00:00
@playsound #isndINTRO
2024-02-08 21:48:24 +00:00
LDA #<logo-1
2023-07-08 16:35:15 +00:00
STA L6030+1
2024-02-08 21:48:24 +00:00
LDA #>logo-1
2023-07-08 16:35:15 +00:00
STA L6030+2
LDY #$00
2024-02-08 21:48:24 +00:00
STY theY
2024-02-13 08:09:27 +00:00
STY fgDEMO
2024-02-08 21:48:24 +00:00
STY intLEVEL
2024-02-22 11:46:31 +00:00
LDA #>oldHGR1
2024-02-08 21:48:24 +00:00
STA hgrPAGE
STA activePAGE
L6023 JSR setHGRPOINTER
2023-07-08 16:35:15 +00:00
LDY #$00
L6028 INC L6030+1
BNE L6030
INC L6030+2
L6030 LDA L6028
2024-02-23 18:50:36 +00:00
BEQ L603F ; 00: end of line
BPL L603C ; <128: skip A bytes
STA [ptrHGR1],Y ; >127: output char
2023-07-08 16:35:15 +00:00
INY
2024-02-25 20:17:48 +00:00
BPL L6028 ; from BPL
L603C TAY
BPL L6028 ; from BPL
2024-02-08 21:48:24 +00:00
L603F INC theY
LDY theY
CPY #maxHEIGHT ; until line 192
2023-07-08 16:35:15 +00:00
BCC L6023
2024-02-22 11:46:31 +00:00
* STA TXTPAGE1
2024-02-23 18:50:36 +00:00
lda ptrSCREEN+2
sta ptrHGR1+2
lda #>oldHGR1
sta hgrPAGE
2024-02-22 11:46:31 +00:00
* STA HIRES
* STA MIXCLR
* STA TXTCLR
2023-07-08 16:35:15 +00:00
JMP L618E
*---
L6056 LDA #$00
2024-02-08 21:48:24 +00:00
STA theSCORE
STA theSCORE+1
STA theSCORE+2
STA theSCORE+3
2024-02-25 20:17:48 +00:00
STA foeINTIDX ; l'intelligence des ennemis peut-<2D>tre ?
2024-02-15 18:56:59 +00:00
STA fgCIRCLE
STA tempX6
2024-02-14 20:46:43 +00:00
STA demoREPEAT
2024-02-23 18:50:36 +00:00
lda #<demoDATA
2024-02-24 20:36:24 +00:00
sta ptrDEMO ; demo actions
2024-02-14 20:46:43 +00:00
LDA #>demoDATA
STA ptrDEMO+1
2024-02-08 21:48:24 +00:00
LDA #nbLIVES ; 5 men to start with
STA theMEN
2024-02-13 08:09:27 +00:00
LDA fgDEMO
2023-07-08 16:35:15 +00:00
LSR
BEQ L6099
LDA #$01
2024-02-08 21:48:24 +00:00
JSR readSCORE ; load score
2023-07-08 16:35:15 +00:00
CMP #$00
BNE L6086
2024-02-08 21:48:24 +00:00
JSR tellNODATADISK
JMP showTITLEPAGE ; start again
2023-07-08 16:35:15 +00:00
2024-02-19 16:43:51 +00:00
L6086
* LDA scorebuf+$FF
* BNE L6091
* LDA CSWL ; this code is useless
* LDX CSWH ; if no copy protection remains
* BNE L6095
*L6091 LDA KSWL
* LDX KSWH
*L6095 STA CH
* STX CV
2024-02-14 20:46:43 +00:00
L6099 JSR clearHGRPAGES ; clear HGR pages and draw board
2024-02-22 11:46:31 +00:00
* STA TXTPAGE1
2024-02-23 18:50:36 +00:00
lda ptrSCREEN+2
sta ptrHGR1+2
lda #>oldHGR1
sta hgrPAGE
2024-02-09 22:22:41 +00:00
L609F LDX #modeGAME
2024-02-13 08:09:27 +00:00
JSR prepareLEVEL
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-14 21:41:47 +00:00
STA theKEY1
STA theKEY2
2024-02-14 20:46:43 +00:00
LDA fgDEMO ; are we in demo mode?
2023-07-08 16:35:15 +00:00
LSR
2024-02-14 20:46:43 +00:00
BEQ L60BF ; yes
2024-02-25 12:23:01 +00:00
* JSR waitKEYUP
2024-02-12 18:28:22 +00:00
LDA boardX
2024-02-08 21:48:24 +00:00
STA theX
2024-02-12 18:28:22 +00:00
LDA boardY
2024-02-08 21:48:24 +00:00
STA theY
2024-02-12 18:28:22 +00:00
LDA #sprHERO
JSR blinkSPRITE
2023-07-08 16:35:15 +00:00
L60BF LDX #$00
2024-02-14 21:41:47 +00:00
STX fgHOLE
2024-02-15 18:56:59 +00:00
STX idxNOTE
2024-02-25 20:17:48 +00:00
LDA foeINTIDX
2023-07-08 16:35:15 +00:00
CLC
2024-02-08 21:48:24 +00:00
ADC nbFOE
2023-07-08 16:35:15 +00:00
TAY
LDX L6214,Y
LDA L6CA7,X
2024-02-25 12:23:01 +00:00
STA hfoePATH1
2023-07-08 16:35:15 +00:00
LDA L6CA7+1,X
2024-02-25 12:23:01 +00:00
STA hfoePATH2
2023-07-08 16:35:15 +00:00
LDA L6CA7+2,X
2024-02-25 12:23:01 +00:00
STA hfoePATH3
2024-02-25 20:17:48 +00:00
LDY foeINTIDX
2023-07-08 16:35:15 +00:00
LDA L621D,Y
2024-02-25 12:23:01 +00:00
STA hfoeACTION
2024-02-14 20:46:43 +00:00
2024-02-18 22:14:46 +00:00
L60E4 JSR handleHERO
2024-02-14 20:46:43 +00:00
LDA fgPLAY ; are we dead?
BEQ L613F ; yes
2024-02-09 22:22:41 +00:00
JSR playMELODY
LDA nbCHEST ; remaining chests?
BNE L60F5 ; yes
2024-02-27 20:08:52 +00:00
@playsound #isndNOMORECHEST
2024-02-09 22:22:41 +00:00
JSR showINVISIBLELADDERS
2024-02-14 20:46:43 +00:00
L60F5 LDA boardY ; are we on top row
2023-07-08 16:35:15 +00:00
BNE L6107
2024-02-14 20:46:43 +00:00
LDA heroSTEPY ; are we going up?
2023-07-08 16:35:15 +00:00
CMP #$02
BNE L6107
2024-02-14 20:46:43 +00:00
LDA nbCHEST ; are there chests left?
2024-02-15 20:47:31 +00:00
BEQ L611A ; no
2023-07-08 16:35:15 +00:00
CMP #$FF
2024-02-15 20:47:31 +00:00
BEQ L611A ; no, we won
2024-02-14 20:46:43 +00:00
2024-02-15 20:47:31 +00:00
L6107 JSR checkHOLE ; are there holes active?
2024-02-14 20:46:43 +00:00
LDA fgPLAY ; are we dead?
BEQ L613F ; yes
2024-02-09 22:22:41 +00:00
JSR playMELODY
2024-02-15 20:47:31 +00:00
JSR handleFOE ; handle the foes
LDA fgPLAY ; am I dead?
BEQ L613F ; yes...
BNE L60E4 ; no, loop
2024-02-14 20:46:43 +00:00
2024-02-27 20:08:52 +00:00
L611A @playsound #isndYOUWIN
INC theLEVEL ; next level, no chests left
2024-02-08 21:48:24 +00:00
INC intLEVEL
INC theMEN ; man++
2023-07-08 16:35:15 +00:00
BNE L6124
2024-02-08 21:48:24 +00:00
DEC theMEN ; man--
2024-02-27 20:08:52 +00:00
2023-07-08 16:35:15 +00:00
L6124 LDX #$0F
2024-02-15 18:56:59 +00:00
STX temp1
L6128 LDY #$01 ; ajoute 15 x 100 points
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-08 21:48:24 +00:00
JSR printSCORE
2024-02-15 18:56:59 +00:00
JSR scoreSOUND
JSR scoreSOUND
JSR scoreSOUND
DEC temp1
2023-07-08 16:35:15 +00:00
BNE L6128
L613C JMP L609F
2024-02-08 21:48:24 +00:00
L613F DEC theMEN ; man--
JSR printMEN
2024-02-09 22:22:41 +00:00
JSR prepareMELODY
2023-07-08 16:35:15 +00:00
HEX 02400240035003500460046005700570
HEX 068006800790079008A008A009B009B0
HEX 0AC00AC00BD00BD00CE00CE00DF00DF0
HEX 00
2024-02-09 22:22:41 +00:00
L6178 JSR playMELODY
2023-07-08 16:35:15 +00:00
BCS L6178
2024-02-13 08:09:27 +00:00
LDA fgDEMO
2023-07-08 16:35:15 +00:00
LSR
BEQ L61D0
2024-02-08 21:48:24 +00:00
LDA theMEN ; man
2023-07-08 16:35:15 +00:00
BNE L613C
2024-02-09 22:22:41 +00:00
JSR checkHIGHSCORE
JSR animGAMEOVER ; we are dead, anim GAME OVER
2023-07-08 16:35:15 +00:00
BCS L61F6
2024-02-26 20:27:45 +00:00
*-----------------------------------
* ATTENTE SUR UNE PAGE
*-----------------------------------
2024-02-25 12:23:01 +00:00
* JSR waitKEYUP
2024-02-26 20:27:45 +00:00
L618E
LDX #32 ; valeurs d'attente / 255 avant
LDY #32
* LDA #$03 ; 3
* STA theY
2024-02-12 18:28:22 +00:00
L6199 LDA fgINPUT
2024-02-08 21:48:24 +00:00
CMP #chrK
2024-02-26 20:27:45 +00:00
BEQ L61A9 ; check keyboard
cmp #chrP
beq L619A
LDAL BUTN1 ; check joystick
2023-07-08 16:35:15 +00:00
BMI L6201
2024-02-26 20:27:45 +00:00
LDAL BUTN0
2023-07-08 16:35:15 +00:00
BMI L6201
2024-02-26 20:27:45 +00:00
bpl L61A9
L619A jsr read4PLAY ; check joypad
bmi L6201 ; button 1 pressed?
bvs L6201 ; button 2 pressed?
* LDA KBD
L61A9 jsr checkKEY
2023-07-08 16:35:15 +00:00
BMI L61F6
DEX
BNE L6199
DEY
BNE L6199
2024-02-26 20:27:45 +00:00
* DEC theY
* BNE L6199
2024-02-13 08:09:27 +00:00
LDA fgDEMO
2023-07-08 16:35:15 +00:00
BNE L61DE
LDX #$01
2024-02-13 08:09:27 +00:00
STX fgDEMO
2024-02-08 21:48:24 +00:00
STX theLEVEL
2024-02-13 08:09:27 +00:00
STX fgKEYBTN0
2024-02-15 18:56:59 +00:00
STX fgGOODSTART
2024-02-09 22:22:41 +00:00
LDX fgSOUND
2023-07-08 16:35:15 +00:00
STX L61D0+1
2024-02-09 22:22:41 +00:00
STA fgSOUND
2024-02-26 20:27:45 +00:00
JMP L6056 ; et boucle
2023-07-08 16:35:15 +00:00
L61D0 LDA #$00
2024-02-09 22:22:41 +00:00
STA fgSOUND
2024-02-26 20:27:45 +00:00
* LDA KBD
2024-02-13 08:09:27 +00:00
LDX fgKEYBTN0
2023-07-08 16:35:15 +00:00
BEQ L61F6
JMP L618E
L61DE CMP #$01
BNE L61F3
BEQ L61E9
L61E4 LDA #$01
2024-02-08 21:48:24 +00:00
JSR readSCORE
2024-02-18 22:14:46 +00:00
L61E9 JSR showALLSCORES
2023-07-08 16:35:15 +00:00
LDA #$02
2024-02-13 08:09:27 +00:00
STA fgDEMO
2023-07-08 16:35:15 +00:00
JMP L618E
2024-02-08 21:48:24 +00:00
L61F3 JMP showTITLEPAGE
2023-07-08 16:35:15 +00:00
2024-02-26 20:27:45 +00:00
*-----------------------------------
* GESTION TOUCHE MENU ATTENTE
*-----------------------------------
L61F6
* STA KBDSTROBE
2024-02-25 20:17:48 +00:00
CMP #chrCTRLE ; Ctrl-E - Editor
2023-07-08 16:35:15 +00:00
BEQ L6211
2024-02-08 21:48:24 +00:00
CMP #chrRET ; Return
2023-07-08 16:35:15 +00:00
BEQ L61E4
2024-02-24 20:36:24 +00:00
cmp #chrCTRLQ ; ctrl-Q - quit
beq L6212
2024-02-25 20:17:48 +00:00
cmp #chrCTRLO ; ctrl-O - open data file
beq L6213
2024-02-24 20:36:24 +00:00
2023-07-08 16:35:15 +00:00
L6201 LDX #$00
2024-02-08 21:48:24 +00:00
STX intLEVEL
2023-07-08 16:35:15 +00:00
INX
2024-02-08 21:48:24 +00:00
STX theLEVEL
2024-02-15 18:56:59 +00:00
STX fgGOODSTART
2024-02-26 20:27:45 +00:00
LDA #$02 ; mode jeu
2024-02-13 08:09:27 +00:00
STA fgDEMO
2024-02-26 20:27:45 +00:00
JMP L6056 ; loop
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
L6211 JMP enterEDITOR ; Jump to the Editor
2024-02-24 20:36:24 +00:00
L6212 jmp meQUIT ; bye for now
2024-02-25 20:17:48 +00:00
L6213 jsr doLOAD ; load a game file
bra L6201
2024-02-24 20:36:24 +00:00
*----------
2023-07-08 16:35:15 +00:00
2024-02-15 18:56:59 +00:00
L6214 HEX 000306090C0F121518 ; 0..3..6..9..12..15..18..21..24 (index in 6CA7)
2023-07-08 16:35:15 +00:00
L621D HEX 26262E4447494A4B4C4D4E4F50
2024-02-24 20:36:24 +00:00
*----------
2024-02-15 18:56:59 +00:00
scoreSOUND LDA temp1 ; son pour le score
2023-07-08 16:35:15 +00:00
ASL
ASL
ASL
ASL
LDX #$06
2024-02-13 08:09:27 +00:00
JSR getNOTE
2024-02-09 22:22:41 +00:00
JMP playMELODY
2023-07-08 16:35:15 +00:00
2024-02-13 08:09:27 +00:00
*-----------------------------------
* PREPARE LEVEL
*-----------------------------------
prepareLEVEL
STX fgLVLMODE ; 0: edit, <>0: game
2023-07-08 16:35:15 +00:00
LDX #$FF
2024-02-12 18:28:22 +00:00
STX boardX
2023-07-08 16:35:15 +00:00
INX
2024-02-09 22:22:41 +00:00
STX idxLADDERI ; index in table of for hidden ladder
2024-02-08 21:48:24 +00:00
STX nbCHEST
STX nbFOE
2024-02-12 18:28:22 +00:00
STX idxFOE
2024-02-14 21:41:47 +00:00
STX idxDIG
2024-02-13 08:09:27 +00:00
STX idxLVLDISK
STX fgODDEVEN
2024-02-08 21:48:24 +00:00
STX theY
2023-07-08 16:35:15 +00:00
TXA
2024-02-09 22:22:41 +00:00
2024-02-12 18:28:22 +00:00
LDX #sizeHOLE-2
L6252 STA tblHOLET,X
2023-07-08 16:35:15 +00:00
DEX
BPL L6252
2024-02-12 18:28:22 +00:00
LDX #sizeFOE-3
2024-02-15 18:56:59 +00:00
L625A STA tblFOETEMPO,X
2023-07-08 16:35:15 +00:00
DEX
BPL L625A
2024-02-08 21:48:24 +00:00
2023-07-08 16:35:15 +00:00
LDA #$01
2024-02-13 08:09:27 +00:00
STA fgPLAY
2024-02-08 21:48:24 +00:00
JSR diskLEVEL
LDY theY
2024-02-09 22:22:41 +00:00
L6269 LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-09 22:22:41 +00:00
LDA #$00 ; v<>rifie le contenu
STA theX ; du niveau
2024-02-13 08:09:27 +00:00
L627E LDA fgODDEVEN ; que des valeurs 0-9
2023-07-08 16:35:15 +00:00
LSR
2024-02-13 08:09:27 +00:00
LDY idxLVLDISK
2024-02-09 22:22:41 +00:00
LDA levelDISK,Y
2023-07-08 16:35:15 +00:00
BCS L628C
AND #$0F
BPL L6292
L628C LSR
LSR
LSR
LSR
2024-02-13 08:09:27 +00:00
INC idxLVLDISK
L6292 INC fgODDEVEN
2024-02-08 21:48:24 +00:00
LDY theX
2024-02-09 22:22:41 +00:00
CMP #sprHERO+1
2023-07-08 16:35:15 +00:00
BCC L629C
2024-02-09 22:22:41 +00:00
LDA #sprEMPTY
2024-02-14 20:46:43 +00:00
L629C STA (ptrBOARD),Y
STA (ptrBBACK),Y
2024-02-08 21:48:24 +00:00
INC theX
LDA theX
CMP #lvlWIDTH
2023-07-08 16:35:15 +00:00
BCC L627E
2024-02-08 21:48:24 +00:00
INC theY
LDY theY
CPY #lvlHEIGHT
2023-07-08 16:35:15 +00:00
BCC L6269
2024-02-09 22:22:41 +00:00
2024-02-08 21:48:24 +00:00
JSR decodeLEVEL
2023-07-08 16:35:15 +00:00
BCC L62C3
2024-02-08 21:48:24 +00:00
LDA intLEVEL
2023-07-08 16:35:15 +00:00
BEQ L62C4
LDX #$00
2024-02-08 21:48:24 +00:00
STX intLEVEL
2024-02-25 20:17:48 +00:00
INC foeINTIDX
2024-02-09 22:22:41 +00:00
DEX ; mode game
2024-02-13 08:09:27 +00:00
JMP prepareLEVEL
2023-07-08 16:35:15 +00:00
L62C3 RTS
2024-02-08 21:48:24 +00:00
L62C4 JMP showTITLEPAGE
*-----------------------------------
* ENCODE A LEVEL BEFORE SAVING IT
*-----------------------------------
encodeLEVEL
LDA #$00
2024-02-13 08:09:27 +00:00
STA idxLVLDISK
STA fgODDEVEN
2024-02-08 21:48:24 +00:00
STA theY
L62CF LDY theY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2023-07-08 16:35:15 +00:00
LDY #$00
2024-02-08 21:48:24 +00:00
STY theX
2024-02-13 08:09:27 +00:00
L62DF LDA fgODDEVEN
2023-07-08 16:35:15 +00:00
LSR
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
BCS L62EA
2024-02-08 21:48:24 +00:00
STA theA
2023-07-08 16:35:15 +00:00
BPL L62F7
L62EA ASL
ASL
ASL
ASL
2024-02-08 21:48:24 +00:00
ORA theA
2024-02-13 08:09:27 +00:00
LDY idxLVLDISK
2024-02-09 22:22:41 +00:00
STA levelDISK,Y
2024-02-13 08:09:27 +00:00
INC idxLVLDISK
L62F7 INC fgODDEVEN
2024-02-08 21:48:24 +00:00
INC theX
LDY theX
CPY #lvlWIDTH
2023-07-08 16:35:15 +00:00
BCC L62DF
2024-02-08 21:48:24 +00:00
INC theY
LDA theY
CMP #lvlHEIGHT
2023-07-08 16:35:15 +00:00
BCC L62CF
2024-02-26 20:27:45 +00:00
2024-02-08 21:48:24 +00:00
LDA #$02 ; write level
JMP diskLEVEL
2023-07-08 16:35:15 +00:00
2024-02-08 21:48:24 +00:00
*-----------------------------------
* LOAD/SAVE LEVEL FROM/TO DISK
*-----------------------------------
2024-02-20 20:37:01 +00:00
diskLEVEL tax
2024-02-18 22:14:46 +00:00
LDA fgDEMO ; are we in demo mode?
2023-07-08 16:35:15 +00:00
LSR
2024-02-18 22:14:46 +00:00
BEQ diskDEMO ; yes
2024-02-20 20:37:01 +00:00
cpx #1
beq dlLOAD
cpx #2
bne dlERR
2024-02-25 20:17:48 +00:00
rep #$30 ; load a level
PushLong #levelDISK
pea ^ptrLEVELS
lda intLEVEL
and #$ff
xba
clc
adc #ptrLEVELS
pha
PushLong #256
_BlockMove
sep #$30
2024-02-26 20:27:45 +00:00
jsr saveLEVELS ; save all levels
clc
rts
2024-02-20 20:37:01 +00:00
dlLOAD rep #$30 ; load a level
pea ^ptrLEVELS
lda intLEVEL
and #$ff
xba
2024-02-22 11:46:31 +00:00
clc
adc #ptrLEVELS
2024-02-20 20:37:01 +00:00
pha
PushLong #levelDISK
PushLong #256
_BlockMove
sep #$30
2024-02-25 12:23:01 +00:00
clc
2024-02-20 20:37:01 +00:00
rts
2024-02-18 22:14:46 +00:00
2024-02-20 20:37:01 +00:00
dlERR jmp showTITLEPAGE
* STA LB7F4
* LDA intLEVEL ; no, use internal level
* LSR
* LSR
* LSR
* LSR
* CLC
* ADC #$03
* STA LB7EC ; track
* LDA intLEVEL
* AND #$0F
* STA LB7ED ; sector
*
* LDA #<levelDISK ; buffer
* STA LB7F0
* LDA #>levelDISK
* STA LB7F0+1
* LDA #$00
* STA LB7EB
*
*diskRWTS LDY #<LB7E8
* LDA #>LB7E8
* jsr callRWTS ; LoGo - JSR $0023 - Souvenir from protection
* BCC L6344
* JMP showTITLEPAGE
*L6344 RTS
2023-07-08 16:35:15 +00:00
2024-02-18 22:14:46 +00:00
diskDEMO LDA theLEVEL ; demo mode uses levels in RAM
2023-07-08 16:35:15 +00:00
CLC
2024-02-08 21:48:24 +00:00
ADC #>L9E00
2024-02-14 20:46:43 +00:00
STA ptrHGR1+1
2024-02-08 21:48:24 +00:00
LDY #<L9E00
2024-02-14 20:46:43 +00:00
STY ptrHGR1
2024-02-23 18:50:36 +00:00
ldy #0
2024-02-14 20:46:43 +00:00
L6350 LDA (ptrHGR1),Y
2024-02-09 22:22:41 +00:00
STA levelDISK,Y
2023-07-08 16:35:15 +00:00
INY
BNE L6350
RTS
2024-02-08 21:48:24 +00:00
*-------------------------------
2024-02-20 20:37:01 +00:00
* READ/WRITE SCORE FILE
2024-02-08 21:48:24 +00:00
*-------------------------------
2024-02-20 20:37:01 +00:00
readSCORE cmp #1 ; load scores file from disk
beq rsLOAD
cmp #2 ; save scores file to disk
bne rsERR
2024-02-19 16:43:51 +00:00
2024-02-22 11:46:31 +00:00
ldx #0 ; copy score file
]lp lda scorebuf,x
stal ptrSCORES,x
inx
bne ]lp
jsr saveLEVELS ; and save
2024-02-20 20:37:01 +00:00
bra L6381
2024-02-22 11:46:31 +00:00
rsLOAD ldx #0 ; copy score file
]lp ldal ptrSCORES,x ; from levels in RAM
sta scorebuf,x
inx
bne ]lp
2024-02-20 20:37:01 +00:00
bra L6381
* STA LB7F4 ; command
* LDA #$0C
* STA LB7EC ; track
* LDA #$0F
* STA LB7ED ; sector
*
* LDA #<scorebuf ; where to load
* STA LB7F0
* LDA #>scorebuf
* STA LB7F0+1
* LDA #$00
* STA LB7EB
* LDY #<LB7E8 ; IOB table
* LDA #>LB7E8
* JSR callRWTS
* BCC L6381
rsERR JMP showTITLEPAGE
2024-02-08 21:48:24 +00:00
*--- Check disk (not a LR disk, data disk, master disk)
2023-07-08 16:35:15 +00:00
2024-02-08 21:48:24 +00:00
L6381 LDY #$0A ; check magic number
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-12 18:28:22 +00:00
STA theMASK1
2024-02-08 21:48:24 +00:00
L6387 LDA scorebuf+$F4,Y ; magic key
2023-07-08 16:35:15 +00:00
EOR L63A8,Y
2024-02-12 18:28:22 +00:00
ORA theMASK1
STA theMASK1
2023-07-08 16:35:15 +00:00
DEY
BPL L6387
2024-02-12 18:28:22 +00:00
LDA theMASK1
2023-07-08 16:35:15 +00:00
BEQ L639B
2024-02-20 20:37:01 +00:00
LDA #$00 ; 00 means not a LR disk
2023-07-08 16:35:15 +00:00
RTS
2024-02-20 20:37:01 +00:00
L639B LDA #$01 ; 01 master disk
2024-02-08 21:48:24 +00:00
LDX scorebuf+$FF
2023-07-08 16:35:15 +00:00
BNE L63A4
2024-02-20 20:37:01 +00:00
LDA #$FF ; FF means data disk
2023-07-08 16:35:15 +00:00
L63A4 RTS
2024-02-08 21:48:24 +00:00
2024-02-20 20:37:01 +00:00
*-----------------------------------
*callRWTS JMP $bd00 ; LoGo - ($0036) to be replaced with JMP $BD00
LB7F4 ds 1 ; The RWTS command
2023-07-08 16:35:15 +00:00
L63A8 ASC "LODE RUNNER"
2024-02-08 21:48:24 +00:00
*-----------------------------------
* DECODE A LEVEL
*-----------------------------------
2024-02-14 20:46:43 +00:00
decodeLEVEL LDY #lvlHEIGHT-1
2024-02-08 21:48:24 +00:00
STY theY
2024-02-09 22:22:41 +00:00
L63B7 LDA tblBOARDALLL,Y ; $0800
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y ; $0a00
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-08 21:48:24 +00:00
LDY #lvlWIDTH-1
STY theX
2024-02-14 20:46:43 +00:00
L63CC LDA (ptrBOARD),Y
LDX fgLVLMODE ; mode edit?
BEQ L63EE ; yes
2024-02-08 21:48:24 +00:00
CMP #sprLADDERI
2023-07-08 16:35:15 +00:00
BNE L63F0
2024-02-09 22:22:41 +00:00
LDX idxLADDERI
CPX #sizeLI-3
2023-07-08 16:35:15 +00:00
BCS L63E8
2024-02-09 22:22:41 +00:00
INC idxLADDERI
2023-07-08 16:35:15 +00:00
INX
2024-02-08 21:48:24 +00:00
LDA theY
2024-02-09 22:22:41 +00:00
STA tblLADDERIY,X
2023-07-08 16:35:15 +00:00
TYA
2024-02-09 22:22:41 +00:00
STA tblLADDERIX,X
2024-02-08 21:48:24 +00:00
L63E8 LDA #sprEMPTY ; hide it
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
STA (ptrBBACK),Y
L63EE BEQ L6450 ; mode edit
2024-02-08 21:48:24 +00:00
L63F0 CMP #sprCHEST
2023-07-08 16:35:15 +00:00
BNE L63F8
2024-02-08 21:48:24 +00:00
INC nbCHEST
2023-07-08 16:35:15 +00:00
BNE L6450
2024-02-08 21:48:24 +00:00
L63F8 CMP #sprFOE
2023-07-08 16:35:15 +00:00
BNE L642A
2024-02-14 20:46:43 +00:00
2024-02-08 21:48:24 +00:00
LDX nbFOE ; nbFOE
2024-02-09 22:22:41 +00:00
CPX #sizeFOE-3 ; max
2023-07-08 16:35:15 +00:00
BCS L63E8
2024-02-08 21:48:24 +00:00
INC nbFOE
2023-07-08 16:35:15 +00:00
INX
TYA
2024-02-09 22:22:41 +00:00
STA tblFOEX,X
2024-02-08 21:48:24 +00:00
LDA theY
2024-02-09 22:22:41 +00:00
STA tblFOEY,X
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-15 20:47:31 +00:00
STA tblFOEACTION,X
2024-02-15 18:56:59 +00:00
STA tblFOEINDEX,X
2023-07-08 16:35:15 +00:00
LDA #$02
2024-02-15 18:56:59 +00:00
STA tblFOESTEPX,X ; x-step movement
STA tblFOESTEPY,X ; y-step movement
2024-02-08 21:48:24 +00:00
LDA #sprEMPTY
2024-02-14 20:46:43 +00:00
STA (ptrBBACK),Y
LDA #sprFOE ; output a foe
2023-07-08 16:35:15 +00:00
BNE L6450
2024-02-14 20:46:43 +00:00
2023-07-08 16:35:15 +00:00
L6426 BPL L63B7
L6428 BPL L63CC
2024-02-08 21:48:24 +00:00
2024-02-14 20:46:43 +00:00
L642A CMP #sprHERO ; if the hero
2023-07-08 16:35:15 +00:00
BNE L644A
2024-02-14 20:46:43 +00:00
LDX boardX ; -1 on entry
BPL L63E8 ; we'll never return
STY boardX ; save a positive value
2024-02-08 21:48:24 +00:00
LDX theY
2024-02-12 18:28:22 +00:00
STX boardY
2023-07-08 16:35:15 +00:00
LDX #$02
2024-02-14 20:46:43 +00:00
STX heroSTEPX ; x-step movement
STX heroSTEPY ; y-step movement
2024-02-27 20:08:52 +00:00
LDX #$08 ; run right
2024-02-14 20:46:43 +00:00
STX heroINDEX ; index in sprite table
LDA #sprEMPTY ; blank in background
STA (ptrBBACK),Y
2024-02-08 21:48:24 +00:00
LDA #sprHERO
2023-07-08 16:35:15 +00:00
BNE L6450
2024-02-14 20:46:43 +00:00
2024-02-08 21:48:24 +00:00
L644A CMP #sprTRAP ; if a trap
2023-07-08 16:35:15 +00:00
BNE L6450
2024-02-08 21:48:24 +00:00
LDA #sprWALL ; output a wall
2024-02-09 22:22:41 +00:00
2024-02-14 20:46:43 +00:00
L6450 JSR coutHGR2 ; put the char in background
DEC theX ; x--
2024-02-08 21:48:24 +00:00
LDY theX
2023-07-08 16:35:15 +00:00
BPL L6428
2024-02-14 20:46:43 +00:00
DEC theY ; y--
2024-02-08 21:48:24 +00:00
LDY theY
2023-07-08 16:35:15 +00:00
BPL L6426
2024-02-14 20:46:43 +00:00
LDA fgLVLMODE ; mode edit?
BEQ L6469 ; yes
LDA boardX ; we met the hero
BPL L648B ; continue to the animation
SEC ; not ok
2023-07-08 16:35:15 +00:00
RTS
2024-02-22 11:46:31 +00:00
*--- Level is decoded for the edit mode
L6469
* LDA #>oldHGR1 ; copy HGR1 > HGR2
* STA ptrHGR2+1
* LDA #>oldHGR2
* STA ptrHGR1+1
* LDA #$00
* STA ptrHGR2
* STA ptrHGR1
* TAY
*L6478 LDA (ptrHGR1),Y
* STA (ptrHGR2),Y
* INY
* BNE L6478
* INC ptrHGR2+1
* INC ptrHGR1+1
* LDX ptrHGR1+1
* CPX #>oldHGR3 ; >HGR2+$20 BUG
* BCC L6478
rep #$30
PushLong #HGR2
2024-02-25 12:23:01 +00:00
PushLong ptrSCREEN
2024-02-22 13:16:37 +00:00
PushLong #hgrTOMOVE
2024-02-22 11:46:31 +00:00
_BlockMove
sep #$30
2024-02-14 20:46:43 +00:00
CLC ; oookkkkk
2023-07-08 16:35:15 +00:00
RTS
2024-02-14 20:46:43 +00:00
*--- Level is decoded for the game mode
2024-02-08 21:48:24 +00:00
L648B JSR circleANIMATION
2024-02-14 20:46:43 +00:00
LDY #lvlHEIGHT-1 ; clear HGR2 background
STY theY ; for hero and foes
L6492 LDA tblBOARDALLL,Y ; the background contains all other sprites
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-08 21:48:24 +00:00
LDY #lvlWIDTH-1
STY theX
2024-02-14 20:46:43 +00:00
L64A0 LDA (ptrBOARD),Y
2024-02-08 21:48:24 +00:00
CMP #sprHERO
2023-07-08 16:35:15 +00:00
BEQ L64AA
2024-02-08 21:48:24 +00:00
CMP #sprFOE
2023-07-08 16:35:15 +00:00
BNE L64AF
2024-02-08 21:48:24 +00:00
L64AA LDA #sprEMPTY
JSR coutHGR2
L64AF DEC theX
LDY theX
2023-07-08 16:35:15 +00:00
BPL L64A0
2024-02-08 21:48:24 +00:00
DEC theY
LDY theY
2023-07-08 16:35:15 +00:00
BPL L6492
2024-02-14 20:46:43 +00:00
CLC ; and say OOOKKKKKK
2023-07-08 16:35:15 +00:00
RTS
2024-02-14 20:46:43 +00:00
*-----------------------------------
*
*-----------------------------------
2024-02-18 22:14:46 +00:00
handleHERO LDA #$01
2024-02-14 20:46:43 +00:00
STA fgCHEST
2024-02-27 20:08:52 +00:00
LDA fgHOLE ; creuse-t-il un trou ?
BEQ L64CD ; non
2023-07-08 16:35:15 +00:00
BPL L64CA
2024-02-27 20:08:52 +00:00
JMP L67E7 ; <20> gauche
L64CA JMP L68AD ; <20> droite
2023-07-08 16:35:15 +00:00
2024-02-12 18:28:22 +00:00
L64CD LDY boardY
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-08 21:48:24 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BEQ L6522
2024-02-09 22:22:41 +00:00
CMP #sprBAR
2023-07-08 16:35:15 +00:00
BNE L64EB
2024-02-14 20:46:43 +00:00
LDA heroSTEPY
CMP #$02
2023-07-08 16:35:15 +00:00
BEQ L6522
2024-02-14 20:46:43 +00:00
L64EB LDA heroSTEPY
CMP #$02
2023-07-08 16:35:15 +00:00
BCC L6525
2024-02-12 18:28:22 +00:00
LDY boardY
2024-02-08 21:48:24 +00:00
CPY #lvlHEIGHT-1
2023-07-08 16:35:15 +00:00
BEQ L6522
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL+1,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-08 21:48:24 +00:00
CMP #sprEMPTY
2023-07-08 16:35:15 +00:00
BEQ L6525
2024-02-08 21:48:24 +00:00
CMP #sprFOE
2023-07-08 16:35:15 +00:00
BEQ L6522
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-08 21:48:24 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L6522
2024-02-08 21:48:24 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L6522
2024-02-08 21:48:24 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BNE L6525
L6522 JMP L6584
2024-02-15 18:56:59 +00:00
L6525 LDA #$00 ; hero fell in a hole, tell the program
STA fgHEROFELL ; to change speed
2024-02-14 20:46:43 +00:00
JSR calcSPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2024-02-27 20:08:52 +00:00
* @playsound #isndTOMBE
2024-02-14 20:46:43 +00:00
LDA #$07 ; index in sprite table: fall in a left hole
LDX fgLEFTRIGHT
2023-07-08 16:35:15 +00:00
BMI L6537
2024-02-14 20:46:43 +00:00
LDA #$0F ; fall in a right hole
L6537 STA heroINDEX
2024-02-14 21:41:47 +00:00
JSR heroNEXTSTEPX
2024-02-14 20:46:43 +00:00
INC heroSTEPY
LDA heroSTEPY
2023-07-08 16:35:15 +00:00
CMP #$05
BCS L654A
2024-02-14 20:46:43 +00:00
JSR checkCHEST
2024-02-14 21:41:47 +00:00
JMP checkCOLLISION
2023-07-08 16:35:15 +00:00
L654A LDA #$00
2024-02-14 20:46:43 +00:00
STA heroSTEPY
2024-02-12 18:28:22 +00:00
LDY boardY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-08 21:48:24 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L656B
2024-02-14 21:41:47 +00:00
LDA #sprEMPTY
2024-02-14 20:46:43 +00:00
L656B STA (ptrBOARD),Y
2024-02-12 18:28:22 +00:00
INC boardY
LDY boardY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-08 21:48:24 +00:00
LDA #sprHERO
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2024-02-14 21:41:47 +00:00
JMP checkCOLLISION
2023-07-08 16:35:15 +00:00
2024-02-15 18:56:59 +00:00
L6584 LDA fgHEROFELL
2023-07-08 16:35:15 +00:00
BNE L658F
LDA #$64
LDX #$08
2024-02-27 20:08:52 +00:00
JSR playNOTE
2023-07-08 16:35:15 +00:00
L658F LDA #$20
2024-02-15 18:56:59 +00:00
STA fgSPEED
STA fgHEROFELL
2024-02-18 22:14:46 +00:00
JSR getPLAYERINPUT
2023-07-08 16:35:15 +00:00
2024-02-14 21:41:47 +00:00
LDA theKEY1
2024-02-09 22:22:41 +00:00
CMP #chrI ; move up
2023-07-08 16:35:15 +00:00
BNE L65A4
2024-02-09 22:22:41 +00:00
JSR checkMOVEUP
2023-07-08 16:35:15 +00:00
BCS L65C2
RTS
2024-02-08 21:48:24 +00:00
L65A4 CMP #chrK ; move down
2023-07-08 16:35:15 +00:00
BNE L65AE
2024-02-09 22:22:41 +00:00
JSR checkMOVEDOWN
2023-07-08 16:35:15 +00:00
BCS L65C2
RTS
2024-02-09 22:22:41 +00:00
L65AE CMP #chrU ; dig left
2023-07-08 16:35:15 +00:00
BNE L65B8
2024-02-09 22:22:41 +00:00
JSR checkDIGLEFT
2023-07-08 16:35:15 +00:00
BCS L65C2
RTS
2024-02-09 22:22:41 +00:00
L65B8 CMP #chrO ; dig right
2023-07-08 16:35:15 +00:00
BNE L65C2
2024-02-09 22:22:41 +00:00
JSR checkDIGRIGHT
2023-07-08 16:35:15 +00:00
BCS L65C2
RTS
2024-02-14 21:41:47 +00:00
L65C2 LDA theKEY2
2024-02-08 21:48:24 +00:00
CMP #chrJ ; move left
2023-07-08 16:35:15 +00:00
BNE L65CB
2024-02-09 22:22:41 +00:00
JMP checkMOVELEFT
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
L65CB CMP #chrL ; move right
2023-07-08 16:35:15 +00:00
BNE L65D2
2024-02-09 22:22:41 +00:00
JMP checkMOVERIGHT
2023-07-08 16:35:15 +00:00
L65D2 RTS
2024-02-09 22:22:41 +00:00
*-----------------------------------
* CHECK IF WE CAN MOVE LEFT
*-----------------------------------
checkMOVELEFT
2024-02-12 18:28:22 +00:00
LDY boardY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
LDX heroSTEPX
2023-07-08 16:35:15 +00:00
CPX #$03
BCS L6600
2024-02-14 20:46:43 +00:00
LDY boardX ; already at column 0
2023-07-08 16:35:15 +00:00
BEQ L65FF
2024-02-14 20:46:43 +00:00
DEY ; what do we have to the left?
LDA (ptrBOARD),Y
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L65FF
2024-02-14 20:46:43 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L65FF
2024-02-14 20:46:43 +00:00
CMP #sprTRAP
2023-07-08 16:35:15 +00:00
BNE L6600
2024-02-14 20:46:43 +00:00
L65FF RTS ; we cannot move
2023-07-08 16:35:15 +00:00
2024-02-14 20:46:43 +00:00
L6600 JSR calcSPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2023-07-08 16:35:15 +00:00
LDA #$FF
2024-02-14 20:46:43 +00:00
STA fgLEFTRIGHT
2024-02-14 21:41:47 +00:00
JSR heroNEXTSTEPY
2024-02-14 20:46:43 +00:00
DEC heroSTEPX
2023-07-08 16:35:15 +00:00
BPL L662A
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-09 22:22:41 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L661B
2024-02-09 22:22:41 +00:00
LDA #sprEMPTY
2024-02-14 20:46:43 +00:00
L661B STA (ptrBOARD),Y
2024-02-12 18:28:22 +00:00
DEC boardX
2023-07-08 16:35:15 +00:00
DEY
2024-02-09 22:22:41 +00:00
LDA #sprHERO
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
LDA #$04
2024-02-14 20:46:43 +00:00
STA heroSTEPX
2023-07-08 16:35:15 +00:00
BNE L662D
2024-02-14 20:46:43 +00:00
L662A JSR checkCHEST
2024-02-12 18:28:22 +00:00
L662D LDY boardX ; define sprites
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y ; if we are on a bar
2024-02-09 22:22:41 +00:00
CMP #sprBAR
2023-07-08 16:35:15 +00:00
BEQ L663B
2024-02-14 21:41:47 +00:00
LDA #$00 ; run left first step
LDX #$02 ; last step
2023-07-08 16:35:15 +00:00
BNE L663F
2024-02-14 21:41:47 +00:00
L663B LDA #$03 ; bar left first step
LDX #$05 ; last step
L663F JSR setHEROSTEP
JMP checkCOLLISION
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
*-----------------------------------
* CHECK IF WE CAN MOVE RIGHT
*-----------------------------------
checkMOVERIGHT
2024-02-12 18:28:22 +00:00
LDY boardY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
LDX heroSTEPX
2023-07-08 16:35:15 +00:00
CPX #$02
BCC L6674
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-09 22:22:41 +00:00
CPY #lvlWIDTH-1
2023-07-08 16:35:15 +00:00
BEQ L6673
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-09 22:22:41 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L6673
2024-02-09 22:22:41 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L6673
2024-02-09 22:22:41 +00:00
CMP #sprTRAP
2023-07-08 16:35:15 +00:00
BNE L6674
L6673 RTS
2024-02-14 20:46:43 +00:00
L6674 JSR calcSPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2023-07-08 16:35:15 +00:00
LDA #$01
2024-02-14 20:46:43 +00:00
STA fgLEFTRIGHT
2024-02-14 21:41:47 +00:00
JSR heroNEXTSTEPY
2024-02-14 20:46:43 +00:00
INC heroSTEPX
LDA heroSTEPX
2023-07-08 16:35:15 +00:00
CMP #$05
BCC L66A2
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-09 22:22:41 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L6693
2024-02-09 22:22:41 +00:00
LDA #sprEMPTY
2024-02-14 20:46:43 +00:00
L6693 STA (ptrBOARD),Y
2024-02-12 18:28:22 +00:00
INC boardX
2023-07-08 16:35:15 +00:00
INY
2024-02-09 22:22:41 +00:00
LDA #sprHERO
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-14 20:46:43 +00:00
STA heroSTEPX
2023-07-08 16:35:15 +00:00
BEQ L66A5
2024-02-14 20:46:43 +00:00
L66A2 JSR checkCHEST
2024-02-12 18:28:22 +00:00
L66A5 LDY boardX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-09 22:22:41 +00:00
CMP #sprBAR
2023-07-08 16:35:15 +00:00
BEQ L66B3
2024-02-14 21:41:47 +00:00
LDA #$08 ; run right step 1
LDX #$0A ; run right step 3
2023-07-08 16:35:15 +00:00
BNE L66B7
2024-02-14 21:41:47 +00:00
L66B3 LDA #$0B ; bar right step 1
LDX #$0D ; bar right step 3
L66B7 JSR setHEROSTEP
JMP checkCOLLISION
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
*-----------------------------------
* CAN WE MOVE UP
*-----------------------------------
checkMOVEUP
2024-02-12 18:28:22 +00:00
LDY boardY
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-09 22:22:41 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BEQ L66ED
2024-02-14 20:46:43 +00:00
LDY heroSTEPY
2023-07-08 16:35:15 +00:00
CPY #$03
BCC L66EB
2024-02-12 18:28:22 +00:00
LDY boardY
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL+1,Y
lda tblBOARDBACKL+1,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-09 22:22:41 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BEQ L6711
L66EB SEC
RTS
2024-02-14 20:46:43 +00:00
L66ED LDY heroSTEPY
2023-07-08 16:35:15 +00:00
CPY #$03
BCS L6711
2024-02-12 18:28:22 +00:00
LDY boardY
2023-07-08 16:35:15 +00:00
BEQ L66EB
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL-1,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH-1,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-09 22:22:41 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L66EB
2024-02-09 22:22:41 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L66EB
2024-02-09 22:22:41 +00:00
CMP #sprTRAP
2023-07-08 16:35:15 +00:00
BEQ L66EB
2024-02-14 20:46:43 +00:00
L6711 JSR calcSPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
LDY boardY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-14 21:41:47 +00:00
JSR heroNEXTSTEPX
2024-02-14 20:46:43 +00:00
DEC heroSTEPY
2023-07-08 16:35:15 +00:00
BPL L6757
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-09 22:22:41 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L673B
LDA #$00
2024-02-14 20:46:43 +00:00
L673B STA (ptrBOARD),Y
2024-02-12 18:28:22 +00:00
DEC boardY
LDY boardY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-09 22:22:41 +00:00
LDA #sprHERO
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
LDA #$04
2024-02-14 20:46:43 +00:00
STA heroSTEPY
2023-07-08 16:35:15 +00:00
BNE L675A
2024-02-14 20:46:43 +00:00
L6757 JSR checkCHEST
2024-02-14 21:41:47 +00:00
L675A LDA #$10 ; climb ladder step 1
LDX #$11 ; climb ladder step 2
JSR setHEROSTEP
JSR checkCOLLISION
2023-07-08 16:35:15 +00:00
CLC
RTS
2024-02-09 22:22:41 +00:00
*-----------------------------------
* CHECK IF CAN MOVE DOWN
*-----------------------------------
checkMOVEDOWN
2024-02-14 20:46:43 +00:00
LDY heroSTEPY
2023-07-08 16:35:15 +00:00
CPY #$02
BCC L678A
2024-02-12 18:28:22 +00:00
LDY boardY
2024-02-09 22:22:41 +00:00
CPY #lvlHEIGHT-1
2023-07-08 16:35:15 +00:00
BCS L6788
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-09 22:22:41 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L6788
2024-02-09 22:22:41 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L678A
L6788 SEC
RTS
2024-02-14 20:46:43 +00:00
L678A JSR calcSPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
LDY boardY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-14 21:41:47 +00:00
JSR heroNEXTSTEPX
2024-02-14 20:46:43 +00:00
INC heroSTEPY
LDA heroSTEPY
2023-07-08 16:35:15 +00:00
CMP #$05
BCC L67D5
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-09 22:22:41 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L67B8
LDA #$00
2024-02-14 20:46:43 +00:00
L67B8 STA (ptrBOARD),Y
2024-02-12 18:28:22 +00:00
INC boardY
LDY boardY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-09 22:22:41 +00:00
LDA #sprHERO
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-14 20:46:43 +00:00
STA heroSTEPY
2023-07-08 16:35:15 +00:00
JMP L675A
L67D5 JMP L6757
2024-02-09 22:22:41 +00:00
2023-07-08 16:35:15 +00:00
L67D8 JMP L6892
2024-02-09 22:22:41 +00:00
*-----------------------------------
* CHECK IF WE CAN DIG LEFT
*-----------------------------------
checkDIGLEFT
LDA #$FF
2024-02-14 21:41:47 +00:00
STA fgHOLE
STA theKEY1
STA theKEY2
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-14 21:41:47 +00:00
STA idxDIG
2024-02-12 18:28:22 +00:00
L67E7 LDY boardY ; are we on last line?
2024-02-09 22:22:41 +00:00
CPY #lvlHEIGHT-1
2023-07-08 16:35:15 +00:00
BCS L67D8
INY
2024-02-15 20:47:31 +00:00
JSR setBOARDLINEPOINTERS
2024-02-12 18:28:22 +00:00
LDY boardX ; are we on first column?
2023-07-08 16:35:15 +00:00
BEQ L67D8
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y ; what do we have on our left?
2024-02-09 22:22:41 +00:00
CMP #sprWALL ; a wall?
2023-07-08 16:35:15 +00:00
BNE L67D8
2024-02-12 18:28:22 +00:00
LDY boardY ; yes
2024-02-15 20:47:31 +00:00
JSR setBOARDLINEPOINTERS
2024-02-12 18:28:22 +00:00
LDY boardX
2023-07-08 16:35:15 +00:00
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-09 22:22:41 +00:00
CMP #sprEMPTY
2023-07-08 16:35:15 +00:00
BNE L686E
2024-02-14 20:46:43 +00:00
JSR calcSPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2024-02-14 21:41:47 +00:00
JSR heroNEXTSTEPX
JSR heroNEXTSTEPY
LDY idxDIG
2024-02-27 20:08:52 +00:00
bne nosnddig1
@playsound #isndCREUSE
nosnddig1 LDA digNOTE,Y
2024-02-15 18:56:59 +00:00
LDX digDURATION,Y
2024-02-13 08:09:27 +00:00
JSR getNOTE
2024-02-14 21:41:47 +00:00
LDX idxDIG
2024-02-27 20:08:52 +00:00
LDA #$00 ; run left
2023-07-08 16:35:15 +00:00
CPX #$06
BCS L682B
2024-02-27 20:08:52 +00:00
LDA #$06 ; dig left
2024-02-14 20:46:43 +00:00
L682B STA heroINDEX
2024-02-14 21:41:47 +00:00
JSR checkCOLLISION
LDX idxDIG
2023-07-08 16:35:15 +00:00
CPX #$0C
BEQ L6898
CPX #$00
BEQ L684C
2024-02-15 18:56:59 +00:00
LDA seqDIGLEFT-1,X ; dig left - 1
2023-07-08 16:35:15 +00:00
PHA
2024-02-12 18:28:22 +00:00
LDX boardX
2023-07-08 16:35:15 +00:00
DEX
2024-02-12 18:28:22 +00:00
LDY boardY
2024-02-08 21:48:24 +00:00
JSR getXY
2023-07-08 16:35:15 +00:00
PLA
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2024-02-14 21:41:47 +00:00
LDX idxDIG
2024-02-15 18:56:59 +00:00
L684C LDA seqDIGLEFT,X ; dig left
2023-07-08 16:35:15 +00:00
PHA
2024-02-12 18:28:22 +00:00
LDX boardX
2023-07-08 16:35:15 +00:00
DEX
2024-02-08 21:48:24 +00:00
STX theX
2024-02-12 18:28:22 +00:00
LDY boardY
2024-02-08 21:48:24 +00:00
STY theY
JSR getXY
2023-07-08 16:35:15 +00:00
PLA
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2024-02-14 21:41:47 +00:00
LDX idxDIG
2024-02-15 18:56:59 +00:00
LDA seqDIGSTONE,X ; dig stone
2024-02-08 21:48:24 +00:00
INC theY
JSR coutHGR1
2024-02-14 21:41:47 +00:00
INC idxDIG
2023-07-08 16:35:15 +00:00
CLC
RTS
2024-02-12 18:28:22 +00:00
L686E LDY boardY
2023-07-08 16:35:15 +00:00
INY
2024-02-08 21:48:24 +00:00
STY theY
2024-02-12 18:28:22 +00:00
LDY boardX
2023-07-08 16:35:15 +00:00
DEY
2024-02-08 21:48:24 +00:00
STY theX
2024-02-12 18:28:22 +00:00
LDA #sprWALL
2024-02-08 21:48:24 +00:00
JSR coutHGR1
2024-02-14 21:41:47 +00:00
LDX idxDIG
2023-07-08 16:35:15 +00:00
BEQ L6892
DEX
2024-02-15 18:56:59 +00:00
LDA seqDIGLEFT,X
2023-07-08 16:35:15 +00:00
PHA
2024-02-12 18:28:22 +00:00
LDY boardY
LDX boardX
2023-07-08 16:35:15 +00:00
DEX
2024-02-08 21:48:24 +00:00
JSR getXY
2023-07-08 16:35:15 +00:00
PLA
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2023-07-08 16:35:15 +00:00
L6892 LDA #$00
2024-02-14 21:41:47 +00:00
STA fgHOLE
2023-07-08 16:35:15 +00:00
SEC
RTS
2024-02-12 18:28:22 +00:00
L6898 LDX boardX
2023-07-08 16:35:15 +00:00
DEX
2024-02-14 21:41:47 +00:00
JMP addNEWHOLE
2023-07-08 16:35:15 +00:00
L689E JMP L695C
2024-02-09 22:22:41 +00:00
*-----------------------------------
* CHECK IF WE CAN DIG RIGHT
*-----------------------------------
checkDIGRIGHT
LDA #$01
2024-02-14 21:41:47 +00:00
STA fgHOLE
STA theKEY1
STA theKEY2
2023-07-08 16:35:15 +00:00
LDA #$0C
2024-02-14 21:41:47 +00:00
STA idxDIG
2024-02-27 20:08:52 +00:00
2024-02-12 18:28:22 +00:00
L68AD LDY boardY ; are we on last line?
2024-02-09 22:22:41 +00:00
CPY #lvlHEIGHT-1
2023-07-08 16:35:15 +00:00
BCS L689E
INY
2024-02-15 20:47:31 +00:00
JSR setBOARDLINEPOINTERS
2024-02-12 18:28:22 +00:00
LDY boardX ; are we on lat column?
2024-02-09 22:22:41 +00:00
CPY #lvlWIDTH-1
2023-07-08 16:35:15 +00:00
BCS L689E
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-09 22:22:41 +00:00
CMP #sprWALL ; do we have a wall?
2023-07-08 16:35:15 +00:00
BNE L689E
2024-02-12 18:28:22 +00:00
LDY boardY
2024-02-15 20:47:31 +00:00
JSR setBOARDLINEPOINTERS
2024-02-12 18:28:22 +00:00
LDY boardX
2023-07-08 16:35:15 +00:00
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-09 22:22:41 +00:00
CMP #sprEMPTY
2023-07-08 16:35:15 +00:00
BNE L6936
2024-02-14 20:46:43 +00:00
JSR calcSPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2024-02-14 21:41:47 +00:00
JSR heroNEXTSTEPX
JSR heroNEXTSTEPY
LDY idxDIG
2024-02-27 20:08:52 +00:00
cpy #$0C
bne nosnddig2
@playsound #isndCREUSE
nosnddig2 LDA seqDIGSTONE,Y ; dig stone
2024-02-15 18:56:59 +00:00
LDX digNOTE2,Y
2024-02-13 08:09:27 +00:00
JSR getNOTE
2024-02-14 21:41:47 +00:00
LDX idxDIG
2024-02-27 20:08:52 +00:00
LDA #$08 ; run right
2023-07-08 16:35:15 +00:00
CPX #$12
BCS L68F3
2024-02-27 20:08:52 +00:00
LDA #$0E ; dig right
2024-02-14 20:46:43 +00:00
L68F3 STA heroINDEX
2024-02-14 21:41:47 +00:00
JSR checkCOLLISION
LDX idxDIG
2023-07-08 16:35:15 +00:00
CPX #$18
BEQ L6962
CPX #$0C
BEQ L6914
2024-02-15 18:56:59 +00:00
LDA seqDIGLEFT-1,X
2023-07-08 16:35:15 +00:00
PHA
2024-02-12 18:28:22 +00:00
LDX boardX
2023-07-08 16:35:15 +00:00
INX
2024-02-12 18:28:22 +00:00
LDY boardY
2024-02-08 21:48:24 +00:00
JSR getXY
2023-07-08 16:35:15 +00:00
PLA
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2024-02-14 21:41:47 +00:00
LDX idxDIG
2024-02-15 18:56:59 +00:00
L6914 LDA seqDIGLEFT,X
2023-07-08 16:35:15 +00:00
PHA
2024-02-12 18:28:22 +00:00
LDX boardX
2023-07-08 16:35:15 +00:00
INX
2024-02-08 21:48:24 +00:00
STX theX
2024-02-12 18:28:22 +00:00
LDY boardY
2024-02-08 21:48:24 +00:00
STY theY
JSR getXY
2023-07-08 16:35:15 +00:00
PLA
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2024-02-08 21:48:24 +00:00
INC theY
2024-02-14 21:41:47 +00:00
LDX idxDIG
2024-02-15 18:56:59 +00:00
LDA seqDIGRIGHT,X
2024-02-08 21:48:24 +00:00
JSR coutHGR1
2024-02-14 21:41:47 +00:00
INC idxDIG
2023-07-08 16:35:15 +00:00
CLC
RTS
2024-02-12 18:28:22 +00:00
L6936 LDY boardY
2023-07-08 16:35:15 +00:00
INY
2024-02-08 21:48:24 +00:00
STY theY
2024-02-12 18:28:22 +00:00
LDY boardX
2023-07-08 16:35:15 +00:00
INY
2024-02-08 21:48:24 +00:00
STY theX
2023-07-08 16:35:15 +00:00
LDA #$01
2024-02-08 21:48:24 +00:00
JSR coutHGR1
2024-02-14 21:41:47 +00:00
LDX idxDIG
2023-07-08 16:35:15 +00:00
CPX #$0C
BEQ L695C
DEX
2024-02-15 18:56:59 +00:00
LDA seqDIGLEFT,X
2023-07-08 16:35:15 +00:00
PHA
2024-02-12 18:28:22 +00:00
LDX boardX
2023-07-08 16:35:15 +00:00
INX
2024-02-12 18:28:22 +00:00
LDY boardY
2024-02-08 21:48:24 +00:00
JSR getXY
2023-07-08 16:35:15 +00:00
PLA
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2023-07-08 16:35:15 +00:00
L695C LDA #$00
2024-02-14 21:41:47 +00:00
STA fgHOLE
2023-07-08 16:35:15 +00:00
SEC
RTS
2024-02-14 21:41:47 +00:00
L6962 LDX boardX ; we're digging
2023-07-08 16:35:15 +00:00
INX
2024-02-14 21:41:47 +00:00
JMP addNEWHOLE
2023-07-08 16:35:15 +00:00
2024-02-12 18:28:22 +00:00
* Encha<EFBFBD>nement des sprites
2024-02-27 20:08:52 +00:00
sndLODERUNNER
db 5 ; 0 5
db 0 ; 1
db 0 ; 2
db 5 ; 3 2
db 0 ; 4
db 0 ; 5
db 3 ; 6 3
db 0 ; 7 7
db 5 ; 8 5
db 0 ; 9
db 0 ; A
db 5 ; B 2
db 0 ; C
db 0 ; D
db 3 ; E 3
db 0 ; F 7
db 5 ; 10 4
db 0 ; 11
2024-02-15 18:56:59 +00:00
seqLODERUNNER
2024-02-14 20:46:43 +00:00
DB $0B ; 0 court <20> gauche
DB $0C ; 1
DB $0D ; 2
DB $18 ; 3 barre <20> gauche
DB $19 ; 4
DB $1A ; 5
DB $0F ; 6 creuse <20> gauche
DB $13 ; 7 tombe dans un trou <20> gauche
DB $09 ; 8 court <20> droite
DB $10 ; 9 LR court vers la droite step 1
DB $11 ; A LR court vers la droite step 2
DB $15 ; B LR est sur la barre vers la droite step 1
DB $16 ; C LR est sur la barre vers la droite step 2
DB $17 ; D LR est sur la barre vers la droite step 3
DB $25 ; E creuse <20> droite
DB $14 ; F tombe dans un trou <20> droite
DB $0E ; 10 monte <20>chelle step 1
2024-02-15 18:56:59 +00:00
DB $12 ; 11 monte <20>chelle step 2
seqDIGLEFT DB $1B ; 12 creuse 1
2024-02-14 20:46:43 +00:00
DB $1B ; 13 creuse 1
DB $1C ; 14 creuse 2
DB $1C ; 15 creuse 2
DB $1D ; 16 creuse 3
DB $1D ; 17 creuse 3
DB $1E ; 18 creuse 4
DB $1E ; 19 creuse 4
DB $00 ; 1A
DB $00 ; 1B
DB $00 ; 1C
DB $00 ; 1D
2024-02-15 18:56:59 +00:00
seqDIGRIGHT DB $26 ; 1E creuse droite step 1
2024-02-14 20:46:43 +00:00
DB $26 ; 1F creuse droite step 1
DB $27 ; 20 creuse droite step 2
DB $27 ; 21 creuse droite step 2
DB $1D ; 22 creuse droite step 3
DB $1D ; 23 creuse droite step 3
DB $1E ; 24 creuse droite step 4
DB $1E ; 25 creuse droite step 4
DB $00 ; 26
DB $00 ; 27
DB $00 ; 28
DB $00 ; 29
2024-02-15 18:56:59 +00:00
seqDIGSTONE DB $1F ; 2A dig stone sequence
2024-02-14 20:46:43 +00:00
DB $1F ; 2B
DB $20 ; 2C
DB $20 ; 2D
DB $21 ; 2E
DB $21 ; 2F
2024-02-15 18:56:59 +00:00
DB $22 ; 30
DB $22 ; 31
DB $23 ; 32
DB $23 ; 33
DB $24 ; 34
DB $24 ; 35
*--- Sound data
digNOTE DB $20 ; musical notes when we dig
digNOTE2 DB $20 ;
2024-02-14 20:46:43 +00:00
DB $20 ;
DB $20 ;
DB $20 ;
DB $20 ;
DB $20 ;
DB $20 ;
DB $24 ;
DB $24 ;
DB $24 ;
DB $24 ;
DB $24 ;
2024-02-15 18:56:59 +00:00
digDURATION DB $04 ; duration
2024-02-14 20:46:43 +00:00
DB $04 ;
DB $04 ;
DB $04 ;
DB $04 ;
DB $04 ;
DB $04 ;
DB $04 ;
DB $03 ;
DB $03 ;
DB $02 ;
DB $02 ;
DB $01 ;
*-----------------------------------
* DEMO MODE ENGINE ENTRY POINT
*-----------------------------------
2023-07-08 16:35:15 +00:00
2024-02-26 20:27:45 +00:00
L69B7 jsr read4PLAY
bmi L69CD ; button 1 pressed?
bvs L69CD ; button 2 pressed?
2024-02-25 12:23:01 +00:00
L69B8 jsr checkKEY
2024-02-26 20:27:45 +00:00
* LDA KBD
2023-07-08 16:35:15 +00:00
BMI L69CD
2024-02-12 18:28:22 +00:00
LDA fgINPUT
2024-02-26 20:27:45 +00:00
CMP #chrK ; keyboard?
2023-07-08 16:35:15 +00:00
BEQ L69D6
2024-02-26 20:27:45 +00:00
cmp #chrP ; joypad?
beq L69B7
LDAL BUTN1 ; then joystick
2023-07-08 16:35:15 +00:00
BMI L69CD
2024-02-26 20:27:45 +00:00
LDAL BUTN0
2023-07-08 16:35:15 +00:00
BPL L69D6
2024-02-26 20:27:45 +00:00
* STA KBDSTROBE
L69CD LSR fgKEYBTN0 ; key/button pressed
2024-02-13 08:09:27 +00:00
LSR fgPLAY
2023-07-08 16:35:15 +00:00
LDA #$01
2024-02-08 21:48:24 +00:00
STA theMEN ; one man
2023-07-08 16:35:15 +00:00
RTS
2024-02-14 20:46:43 +00:00
L69D6 LDA demoREPEAT ; are we currently handling a movement?
2024-02-09 22:22:41 +00:00
BNE L69F2 ; yes
LDY #$00 ; no, get values
2024-02-14 20:46:43 +00:00
LDA (ptrDEMO),Y ; the keys
STA demoKEY
2023-07-08 16:35:15 +00:00
INY
2024-02-14 20:46:43 +00:00
LDA (ptrDEMO),Y
STA demoREPEAT ; the repeat
LDA ptrDEMO ; next entry
2023-07-08 16:35:15 +00:00
CLC
ADC #$02
2024-02-14 20:46:43 +00:00
STA ptrDEMO
LDA ptrDEMO+1
2023-07-08 16:35:15 +00:00
ADC #$00
2024-02-14 20:46:43 +00:00
STA ptrDEMO+1
L69F2 LDA demoKEY ; first entry is the fisrt key
2023-07-08 16:35:15 +00:00
AND #$0F
TAX
2024-02-14 20:46:43 +00:00
LDA tblDEMO2KEY,X
2024-02-14 21:41:47 +00:00
STA theKEY1
2024-02-14 20:46:43 +00:00
LDA demoKEY
2023-07-08 16:35:15 +00:00
LSR
LSR
LSR
LSR
TAX
2024-02-14 20:46:43 +00:00
LDA tblDEMO2KEY,X
2024-02-14 21:41:47 +00:00
STA theKEY2 ; second key
2024-02-14 20:46:43 +00:00
DEC demoREPEAT
2023-07-08 16:35:15 +00:00
RTS
2024-02-09 22:22:41 +00:00
* 0123456
2024-02-14 20:46:43 +00:00
tblDEMO2KEY ASC "IJKLOU "
2023-07-08 16:35:15 +00:00
2024-02-14 21:41:47 +00:00
*-----------------------------------
2024-02-18 22:14:46 +00:00
* GAME ENGINE ENTRY POINT
2024-02-14 21:41:47 +00:00
*-----------------------------------
2024-02-18 22:14:46 +00:00
getPLAYERINPUT
LDA fgDEMO
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L69B8
2024-02-25 12:23:01 +00:00
jsr checkKEY
2024-02-26 20:27:45 +00:00
* LDAL KBD
2024-02-25 12:23:01 +00:00
* stal KBDSTROBE
2024-02-24 20:36:24 +00:00
STA theA
2023-07-08 16:35:15 +00:00
BMI L6A2B
2024-02-12 18:28:22 +00:00
LDA fgINPUT
2024-02-08 21:48:24 +00:00
CMP #chrK
2023-07-08 16:35:15 +00:00
BEQ L6A55
2024-02-26 20:27:45 +00:00
cmp #chrP
beq L6A29
2024-02-14 21:41:47 +00:00
L6A28 JMP getJOYSTICKKEY
2024-02-26 20:27:45 +00:00
L6A29 jmp getJOYPADKEY
2023-07-08 16:35:15 +00:00
2024-02-26 20:27:45 +00:00
L6A2B CMP #chrSPC ; check control keys
BCS L6A49 ; that is a game key
* STA theA
LDY #$FF ; that's a control key
2023-07-08 16:35:15 +00:00
L6A33 INY
2024-02-09 22:22:41 +00:00
LDA tblKEY,Y
2023-07-08 16:35:15 +00:00
BEQ L6A49
2024-02-08 21:48:24 +00:00
CMP theA
2023-07-08 16:35:15 +00:00
BNE L6A33
TYA
ASL
TAY
2024-02-09 22:22:41 +00:00
LDA tblKEYADR+1,Y
2023-07-08 16:35:15 +00:00
PHA
2024-02-09 22:22:41 +00:00
LDA tblKEYADR,Y
2023-07-08 16:35:15 +00:00
PHA
RTS
2024-02-24 20:36:24 +00:00
* C1..DA 1100_0001 1101_1010
* E1..FA 1110_0001 1111_1010
L6A49 LDA fgINPUT ; joystick?
2024-02-08 21:48:24 +00:00
CMP #chrJ
2024-02-26 20:27:45 +00:00
BEQ L6A28
cmp #chrP ; joypad?
beq L6A29
2024-02-24 20:36:24 +00:00
* LDX theA ; no
* STX theKEY1
* STX theKEY2
lda theA ; support des minuscules
2024-02-25 12:23:01 +00:00
and #maskUPPER
2024-02-24 20:36:24 +00:00
sta theA
sta theKEY1
sta theKEY2
2023-07-08 16:35:15 +00:00
L6A55 RTS
2024-02-24 20:36:24 +00:00
2024-02-09 22:22:41 +00:00
*-------------------------------
* 9E - CTRL-^ - NEXT LEVEL
*-------------------------------
doNEXTLEVEL
INC theMEN ; man++
2024-02-08 21:48:24 +00:00
INC theLEVEL
INC intLEVEL
2024-02-13 08:09:27 +00:00
LSR fgPLAY
2024-02-15 18:56:59 +00:00
LSR fgGOODSTART
2023-07-08 16:35:15 +00:00
RTS
2024-02-09 22:22:41 +00:00
*-------------------------------
* 80 - CTRL-@ - EXTRA MAN
*-------------------------------
doEXTRAMAN
INC theMEN ; man++
2023-07-08 16:35:15 +00:00
BNE L6A67
2024-02-08 21:48:24 +00:00
DEC theMEN ; man--
L6A67 JSR printMEN
2024-02-15 18:56:59 +00:00
LSR fgGOODSTART
2024-02-18 22:14:46 +00:00
JMP getPLAYERINPUT
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
*-------------------------------
* 9B - ESC - PAUSE GAME
*-------------------------------
2024-02-25 12:23:01 +00:00
doPAUSE JSR checkKEY ; waitKEYDOWN
2023-07-08 16:35:15 +00:00
CMP #$9B
2024-02-09 22:22:41 +00:00
BNE doPAUSE
2024-02-18 22:14:46 +00:00
JMP getPLAYERINPUT
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
*-------------------------------
* 92 - CTRL-R - TERMINATES CURRENT GAME
*-------------------------------
doTERMINATE LDA #$01
2024-02-08 21:48:24 +00:00
STA theMEN ; man
2024-02-09 22:22:41 +00:00
*-------------------------------
* 81 - CTRL-A - ABORTS MAN
*-------------------------------
2024-02-13 08:09:27 +00:00
doABORTMAN LSR fgPLAY
2023-07-08 16:35:15 +00:00
RTS
2024-02-09 22:22:41 +00:00
*-------------------------------
* 93 - CTRL-S - TOGGLES SOUND
*-------------------------------
doTOGGLESOUND
LDA fgSOUND
2023-07-08 16:35:15 +00:00
EOR #$FF
2024-02-09 22:22:41 +00:00
STA fgSOUND
2024-02-18 22:14:46 +00:00
JMP getPLAYERINPUT
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
*-------------------------------
2024-02-24 20:36:24 +00:00
* 8A - CTRL-J - SET JOYSTICK MODE
2024-02-09 22:22:41 +00:00
*-------------------------------
2024-02-24 20:36:24 +00:00
doSETJOYSTICK
LDA #chrJ
2024-02-12 18:28:22 +00:00
STA fgINPUT
2024-02-18 22:14:46 +00:00
JMP getPLAYERINPUT
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
*-------------------------------
2024-02-24 20:36:24 +00:00
* 8B - CTRL-K - SET KEYBOARD MODE
2024-02-09 22:22:41 +00:00
*-------------------------------
2024-02-24 20:36:24 +00:00
doSETKEYBOARD
LDA #chrK
STA fgINPUT
JMP getPLAYERINPUT
*-------------------------------
* 90 - CTRL-P - SET JOYPAD MODE
*-------------------------------
doSETJOYPAD
2024-02-26 20:27:45 +00:00
lda slot4PLAY
beq nojoypad
2024-02-24 20:36:24 +00:00
LDA #chrP
2024-02-12 18:28:22 +00:00
STA fgINPUT
2024-02-26 20:27:45 +00:00
nojoypad JMP getPLAYERINPUT
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
*-------------------------------
* 98 - CTRL-X - FLIPS X-AXIS
*-------------------------------
doFLIPX LDA joyXMIN
LDX joyXMAX
STA joyXMAX
STX joyXMIN
2024-02-18 22:14:46 +00:00
JMP getPLAYERINPUT
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
*-------------------------------
* 99 - CTRL-Y - FLIPS Y-AXIS
*-------------------------------
doFLIPY LDA joyYMIN
LDX joyYMAX
STA joyYMAX
STX joyYMIN
2024-02-18 22:14:46 +00:00
JMP getPLAYERINPUT
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
*-------------------------------
* 88 - LEFT ARROW - SLOWS DOWN
*-------------------------------
doSLOWDOWN LDA theSPEED
2023-07-08 16:35:15 +00:00
BEQ L6ACD
2024-02-09 22:22:41 +00:00
DEC theSPEED
2024-02-18 22:14:46 +00:00
JMP getPLAYERINPUT
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
*-------------------------------
* 95 - RIGHT ARROW - SPEEDS UP
*-------------------------------
doSPEEDUP LDA theSPEED
2024-02-24 20:36:24 +00:00
CMP #$1f ; on ajoute 16 valeurs de tempo
2023-07-08 16:35:15 +00:00
BEQ L6ACD
2024-02-09 22:22:41 +00:00
INC theSPEED
2024-02-18 22:14:46 +00:00
L6ACD JMP getPLAYERINPUT
2023-07-08 16:35:15 +00:00
2024-02-26 20:27:45 +00:00
*-------------------------------
* GET JOYPAD KEY
*-------------------------------
getJOYPADKEY
jsr read4PLAY ; button 0: dig left
bpl getJOYK1 ; button 1: dig right
ldx #chrU
bne getJOYK2
getJOYK1 bvc getJOYK3
ldx #chrO
getJOYK2 stx theKEY1
stx theKEY2
rts
getJOYK3 jsr readJOYPAD ; set X/Y
bra L6AE8 ; and move on
2024-02-09 22:22:41 +00:00
*-------------------------------
2024-02-14 21:41:47 +00:00
* GET JOYSTICK KEY
2024-02-09 22:22:41 +00:00
*-------------------------------
2024-02-14 21:41:47 +00:00
getJOYSTICKKEY
2024-02-26 20:27:45 +00:00
LDAL BUTN1
2023-07-08 16:35:15 +00:00
BPL L6AD9
2024-02-26 20:27:45 +00:00
LDA #chrU ; dig left
2023-07-08 16:35:15 +00:00
BNE L6AE0
2024-02-26 20:27:45 +00:00
L6AD9 LDAL BUTN0
2023-07-08 16:35:15 +00:00
BPL L6AE5
2024-02-26 20:27:45 +00:00
LDA #chrO ; dig right
2024-02-14 21:41:47 +00:00
L6AE0 STA theKEY1
STA theKEY2
2023-07-08 16:35:15 +00:00
RTS
2024-02-14 21:41:47 +00:00
L6AE5 JSR readJOYSTICK ; no keys pressed
2024-02-26 20:27:45 +00:00
L6AE8 LDY theJOYX ; read joystick
2024-02-14 21:41:47 +00:00
LDA joyXMAX ; clamp
2024-02-26 20:27:45 +00:00
CMP #ctrJOY ; return key
2023-07-08 16:35:15 +00:00
BEQ L6AFA
2024-02-09 22:22:41 +00:00
CPY joyXMAX
2023-07-08 16:35:15 +00:00
BCS L6B03
2024-02-08 21:48:24 +00:00
LDA #chrL
2023-07-08 16:35:15 +00:00
BNE L6B1E
2024-02-09 22:22:41 +00:00
L6AFA CPY joyXMAX
2023-07-08 16:35:15 +00:00
BCC L6B03
2024-02-08 21:48:24 +00:00
LDA #chrL
2023-07-08 16:35:15 +00:00
BNE L6B1E
2024-02-09 22:22:41 +00:00
L6B03 LDA joyXMIN
2024-02-26 20:27:45 +00:00
CMP #ctrJOY
2023-07-08 16:35:15 +00:00
BEQ L6B13
2024-02-09 22:22:41 +00:00
CPY joyXMIN
2023-07-08 16:35:15 +00:00
BCS L6B1C
2024-02-08 21:48:24 +00:00
LDA #chrJ
2023-07-08 16:35:15 +00:00
BNE L6B1E
2024-02-09 22:22:41 +00:00
L6B13 CPY joyXMIN
2023-07-08 16:35:15 +00:00
BCC L6B1C
2024-02-08 21:48:24 +00:00
LDA #chrJ
2023-07-08 16:35:15 +00:00
BNE L6B1E
2024-02-14 21:41:47 +00:00
L6B1C LDA #chrA-1
L6B1E STA theKEY2
2024-02-12 18:28:22 +00:00
LDY theJOYY
2024-02-09 22:22:41 +00:00
LDA joyYMIN
2024-02-26 20:27:45 +00:00
CMP #ctrJOY
2023-07-08 16:35:15 +00:00
BEQ L6B32
2024-02-09 22:22:41 +00:00
CPY joyYMIN
2023-07-08 16:35:15 +00:00
BCS L6B3B
2024-02-08 21:48:24 +00:00
LDA #chrI
2023-07-08 16:35:15 +00:00
BNE L6B56
2024-02-09 22:22:41 +00:00
L6B32 CPY joyYMIN
2023-07-08 16:35:15 +00:00
BCC L6B3B
2024-02-08 21:48:24 +00:00
LDA #chrI
2023-07-08 16:35:15 +00:00
BNE L6B56
2024-02-09 22:22:41 +00:00
L6B3B LDA joyYMAX
2024-02-26 20:27:45 +00:00
CMP #ctrJOY
2023-07-08 16:35:15 +00:00
BEQ L6B4B
2024-02-09 22:22:41 +00:00
CPY joyYMAX
2023-07-08 16:35:15 +00:00
BCS L6B54
2024-02-08 21:48:24 +00:00
LDA #chrK
2023-07-08 16:35:15 +00:00
BNE L6B56
2024-02-09 22:22:41 +00:00
L6B4B CPY joyYMAX
2023-07-08 16:35:15 +00:00
BCC L6B54
2024-02-08 21:48:24 +00:00
LDA #chrK
2023-07-08 16:35:15 +00:00
BNE L6B56
2024-02-08 21:48:24 +00:00
L6B54 LDA #chrA-1
2024-02-14 21:41:47 +00:00
L6B56 STA theKEY1
2023-07-08 16:35:15 +00:00
RTS
2024-02-14 21:41:47 +00:00
*----------------------------------
2024-02-24 20:36:24 +00:00
* KEYS AND ASSOCIATED JUMPS + -
2024-02-14 21:41:47 +00:00
*----------------------------------
2024-02-24 20:36:24 +00:00
tblKEY HEX 9E,80,9B,92,81,93,8A,8B,90,88,95,98,99,8D,00
2024-02-09 22:22:41 +00:00
tblKEYADR DA doNEXTLEVEL-1 ; 9E - CTRL-^
DA doEXTRAMAN-1 ; 80 - CTRL-@
2024-02-24 20:36:24 +00:00
DA doPAUSE-1 ; 9B - ESCAPE
2024-02-09 22:22:41 +00:00
DA doTERMINATE-1 ; 92 - CTRL-R
DA doABORTMAN-1 ; 81 - CTRL-A
DA doTOGGLESOUND-1 ; 93 - CTRL-S
2024-02-24 20:36:24 +00:00
DA doSETJOYSTICK-1 ; 8A - CTRL-J
DA doSETKEYBOARD-1 ; 8B - CTRL-K
DA doSETJOYPAD-1 ; 90 - CTRL-P
DA doSPEEDUP-1 ; 88 - SPEED UP
DA doSLOWDOWN-1 ; 95 - SLOW DOWN
DA doFLIPX-1 ; 98 - CTRL-X
DA doFLIPY-1 ; 99 - CTRL-Y
2024-02-09 22:22:41 +00:00
DA displayHIGHSCORES-1 ; 8D - RETURN
2024-02-12 18:28:22 +00:00
joyXMIN DB minJOY ; x-low
joyXMAX DB ctrJOY ; x-high
joyYMIN DB minJOY ; y-low
joyYMAX DB ctrJOY ; y-high
2024-02-09 22:22:41 +00:00
2024-02-14 20:46:43 +00:00
*-----------------------------------
* CALC SPRITE X/Y
*-----------------------------------
2023-07-08 16:35:15 +00:00
2024-02-14 20:46:43 +00:00
calcSPRITEXY
LDX boardX ; calc next HGR X position
LDY heroSTEPX
JSR calcHGRX
STX theA ; save it
LDY boardY ; calc next HGR Y position
LDX heroSTEPY
JSR calcHGRY ; we keep it in Y
LDX heroINDEX ; get sprite index
2024-02-27 20:08:52 +00:00
* cpx #$12 ; joue un son dans quelques cas
* bcs calcSPRITE1
* lda sndLODERUNNER,x
* beq calcSPRITE1
* jsr playSOUND
calcSPRITE1 LDA seqLODERUNNER,X
2024-02-08 21:48:24 +00:00
LDX theA
2023-07-08 16:35:15 +00:00
RTS
2024-02-14 20:46:43 +00:00
*-----------------------------------
* CHECK CHEST
*-----------------------------------
* Check if we are on a chest
* If so, add 250 to the score
checkCHEST LDA heroSTEPX ; is sprite still in X
2023-07-08 16:35:15 +00:00
CMP #$02
BNE L6BF3
2024-02-14 20:46:43 +00:00
LDA heroSTEPY ; is sprite still in Y
2023-07-08 16:35:15 +00:00
CMP #$02
BNE L6BF3
2024-02-14 20:46:43 +00:00
LDY boardY ; yes
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
LDY boardX ; are we on a chest?
LDA (ptrBBACK),Y
2024-02-12 18:28:22 +00:00
CMP #sprCHEST
2023-07-08 16:35:15 +00:00
BNE L6BF3
2024-02-14 20:46:43 +00:00
LSR fgCHEST ; collision avec un coffre
DEC nbCHEST ; chest--
2024-02-27 20:08:52 +00:00
@playsound #isndTRESOR
2024-02-14 20:46:43 +00:00
LDY boardY ; remove it from background
2024-02-08 21:48:24 +00:00
STY theY
2024-02-12 18:28:22 +00:00
LDY boardX
2024-02-08 21:48:24 +00:00
STY theX
2024-02-12 18:28:22 +00:00
LDA #sprEMPTY
2024-02-14 20:46:43 +00:00
STA (ptrBBACK),Y
2024-02-08 21:48:24 +00:00
JSR coutHGR2
2024-02-14 20:46:43 +00:00
LDY theY ; draw it on screen
2024-02-08 21:48:24 +00:00
LDX theX
JSR getXY
2024-02-14 20:46:43 +00:00
LDA #sprCHEST
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2024-02-14 20:46:43 +00:00
LDY #$02 ; add 250 to score
2023-07-08 16:35:15 +00:00
LDA #$50
2024-02-08 21:48:24 +00:00
JSR printSCORE
2024-02-14 20:46:43 +00:00
JSR prepareMELODY ; and beep it
2023-07-08 16:35:15 +00:00
HEX 07450655054404540343025300
L6BF3 RTS
2024-02-14 20:46:43 +00:00
*-----------------------------------
2024-02-14 21:41:47 +00:00
* STEP HERO STEP
2024-02-14 20:46:43 +00:00
*-----------------------------------
2024-02-14 21:41:47 +00:00
setHEROSTEP INC heroINDEX ; A is the first step
CMP heroINDEX ; X the last
BCC L6BFD ; sets the step accordingly
2024-02-14 20:46:43 +00:00
L6BFA STA heroINDEX
2023-07-08 16:35:15 +00:00
RTS
2024-02-14 20:46:43 +00:00
L6BFD CPX heroINDEX
2023-07-08 16:35:15 +00:00
BCC L6BFA
RTS
2024-02-14 20:46:43 +00:00
*-----------------------------------
2024-02-14 21:41:47 +00:00
* CHECK COLLISION
2024-02-14 20:46:43 +00:00
*-----------------------------------
2024-02-14 21:41:47 +00:00
checkCOLLISION
JSR calcSPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2024-02-14 20:46:43 +00:00
LDA fgCOLLISION ; les sprites sont-ils entr<74>s en collision ?
BEQ L6C12 ; non
LDA fgCHEST ; en collision avec un coffre ?
BEQ L6C12 ; oui, on ne perd pas
LSR fgPLAY ; non, perdu
2023-07-08 16:35:15 +00:00
L6C12 RTS
2024-02-14 20:46:43 +00:00
*-----------------------------------
2024-02-14 21:41:47 +00:00
* SET HERO NEXT STEP X
2024-02-14 20:46:43 +00:00
*-----------------------------------
2024-02-14 21:41:47 +00:00
heroNEXTSTEPX
LDA heroSTEPX
2023-07-08 16:35:15 +00:00
CMP #$02
BCC L6C20
BEQ L6C25
2024-02-14 20:46:43 +00:00
DEC heroSTEPX
JMP checkCHEST
L6C20 INC heroSTEPX
JMP checkCHEST
2023-07-08 16:35:15 +00:00
L6C25 RTS
2024-02-14 20:46:43 +00:00
*-----------------------------------
2024-02-14 21:41:47 +00:00
* SET HERO NEXT STEP Y
2024-02-14 20:46:43 +00:00
*-----------------------------------
2024-02-14 21:41:47 +00:00
heroNEXTSTEPY
LDA heroSTEPY
2023-07-08 16:35:15 +00:00
CMP #$02
BCC L6C33
BEQ L6C38
2024-02-14 20:46:43 +00:00
DEC heroSTEPY
JMP checkCHEST
L6C33 INC heroSTEPY
JMP checkCHEST
2023-07-08 16:35:15 +00:00
L6C38 RTS
2024-02-14 20:46:43 +00:00
*-----------------------------------
2024-02-14 21:41:47 +00:00
* ADD A NEW HOLE
2024-02-14 20:46:43 +00:00
*-----------------------------------
2024-02-14 21:41:47 +00:00
addNEWHOLE LDA #$00 ; tell we're digging
STA fgHOLE
2024-02-12 18:28:22 +00:00
LDY boardY
2023-07-08 16:35:15 +00:00
INY
2024-02-08 21:48:24 +00:00
STX theX
STY theY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-14 21:41:47 +00:00
LDA #sprEMPTY ; make the hole visible
2024-02-08 21:48:24 +00:00
LDY theX
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2024-02-08 21:48:24 +00:00
JSR coutHGR1
2024-02-12 18:28:22 +00:00
LDA #sprEMPTY
2024-02-08 21:48:24 +00:00
JSR coutHGR2
DEC theY
2024-02-12 18:28:22 +00:00
LDA #sprEMPTY
2024-02-08 21:48:24 +00:00
JSR coutHGR1
INC theY
2024-02-14 21:41:47 +00:00
LDX #$FF ; add the hole to the list
2023-07-08 16:35:15 +00:00
L6C67 INX
2024-02-12 18:28:22 +00:00
CPX #sizeHOLE-2
2023-07-08 16:35:15 +00:00
BEQ L6C81
2024-02-12 18:28:22 +00:00
LDA tblHOLET,X ; <>0 tempo means there is a hole
2023-07-08 16:35:15 +00:00
BNE L6C67
2024-02-08 21:48:24 +00:00
LDA theY
2024-02-12 18:28:22 +00:00
STA tblHOLEY,X
2024-02-08 21:48:24 +00:00
LDA theX
2024-02-12 18:28:22 +00:00
STA tblHOLEX,X
2024-02-14 21:41:47 +00:00
LDA #$B4 ; its tempo
2024-02-12 18:28:22 +00:00
STA tblHOLET,X
2023-07-08 16:35:15 +00:00
SEC
L6C81 RTS
2024-02-14 20:46:43 +00:00
*-----------------------------------
2024-02-25 12:23:01 +00:00
* HANDLE EACH FOE ACTION
2024-02-14 20:46:43 +00:00
*-----------------------------------
2024-02-15 20:47:31 +00:00
handleFOE LDX nbFOE ; no foe, skip
2023-07-08 16:35:15 +00:00
BEQ L6CA6
2024-02-25 12:23:01 +00:00
INC hfoeIDX
ldx hfoeIDX ; was Y, is now X
cpx #$03
2023-07-08 16:35:15 +00:00
BCC L6C92
2024-02-25 12:23:01 +00:00
ldx #$00
stx hfoeIDX
L6C92 lda hfoePATH1,x
STA hfoePATH
L6C97 LSR hfoePATH
2023-07-08 16:35:15 +00:00
BCC L6CA2
2024-02-15 20:47:31 +00:00
JSR doFOEACTION
2024-02-13 08:09:27 +00:00
LDA fgPLAY
2023-07-08 16:35:15 +00:00
BEQ L6CA6
2024-02-25 12:23:01 +00:00
L6CA2 LDA hfoePATH
2023-07-08 16:35:15 +00:00
BNE L6C97
L6CA6 RTS
2024-02-14 20:46:43 +00:00
*-----------------------------------
2024-02-25 12:23:01 +00:00
* THE PATHS TO TAKE
2024-02-14 20:46:43 +00:00
*-----------------------------------
2023-07-08 16:35:15 +00:00
L6CA7 HEX 000000
HEX 000101
HEX 010101
HEX 010301
HEX 010303
HEX 030303
HEX 030307
HEX 030707
HEX 070707
HEX 07070F
HEX 070F0F
HEX 0F0F0F
2024-02-09 22:22:41 +00:00
2024-02-15 18:56:59 +00:00
seqFOE DB $08 ; 0 - foe runs left 1
DB $2B ; 1 - ...left 2
DB $2C ; 2 - ...left 3
DB $30 ; 3 - foe bar left 1
DB $31 ; 4 - ... left 2
DB $32 ; 5 - ... left 3
DB $36 ; 6 - foe falls left
DB $28 ; 7 - foe runs right 1
DB $29 ; 8 - ... right 2
DB $2A ; 9 - ... right 3
DB $2D ; A - foe bar right 1
DB $2E ; B - ... right 2
DB $2F ; C - ... right 3
DB $35 ; D - foe falls right
DB $33 ; E - foe ladder 1
DB $34 ; F - ... ladder 2
*-----------------------------------
*
*-----------------------------------
2024-02-08 21:48:24 +00:00
2024-02-15 20:47:31 +00:00
doFOEACTION INC idxFOE
2024-02-08 21:48:24 +00:00
LDX nbFOE
2024-02-12 18:28:22 +00:00
CPX idxFOE
2023-07-08 16:35:15 +00:00
BCS L6CE7
LDX #$01
2024-02-12 18:28:22 +00:00
STX idxFOE
2024-02-15 18:56:59 +00:00
L6CE7 JSR loadFOEDATA
2024-02-15 20:47:31 +00:00
LDA foeACTION
2023-07-08 16:35:15 +00:00
BMI L6D08
BEQ L6D08
2024-02-15 20:47:31 +00:00
DEC foeACTION
LDY foeACTION
2023-07-08 16:35:15 +00:00
CPY #$0D
BCS L6CFB
JMP L6E65
2024-02-12 18:28:22 +00:00
L6CFB LDX idxFOE
2024-02-15 18:56:59 +00:00
LDA tblFOETEMPO,X
2023-07-08 16:35:15 +00:00
BEQ L6D05
2024-02-15 18:56:59 +00:00
JMP saveFOEDATA
2023-07-08 16:35:15 +00:00
L6D05 JMP L6DB7
2024-02-14 20:46:43 +00:00
L6D08 LDY foeY
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
LDY foeX
LDA (ptrBBACK),Y
2024-02-12 18:28:22 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BEQ L6D61
2024-02-12 18:28:22 +00:00
CMP #sprBAR
2023-07-08 16:35:15 +00:00
BNE L6D26
2024-02-15 18:56:59 +00:00
LDA foeSTEPY
2023-07-08 16:35:15 +00:00
CMP #$02
BEQ L6D61
2024-02-15 18:56:59 +00:00
L6D26 LDA foeSTEPY
2023-07-08 16:35:15 +00:00
CMP #$02
BCC L6D64
2024-02-14 20:46:43 +00:00
LDY foeY
2024-02-15 18:56:59 +00:00
CPY #lvlHEIGHT-1
2023-07-08 16:35:15 +00:00
BEQ L6D61
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL+1,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
LDY foeX
LDA (ptrBOARD),Y
2024-02-12 18:28:22 +00:00
CMP #sprEMPTY
2023-07-08 16:35:15 +00:00
BEQ L6D64
2024-02-12 18:28:22 +00:00
CMP #sprHERO
2023-07-08 16:35:15 +00:00
BEQ L6D64
2024-02-12 18:28:22 +00:00
CMP #sprFOE
2023-07-08 16:35:15 +00:00
BEQ L6D61
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-12 18:28:22 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L6D61
2024-02-12 18:28:22 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L6D61
2024-02-12 18:28:22 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BNE L6D64
L6D61 JMP L6E85
2024-02-15 18:56:59 +00:00
L6D64 JSR calcFOESPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2024-02-15 20:47:31 +00:00
JSR foeNEXTSTEPX
2024-02-27 20:08:52 +00:00
* @playsound #isndTOMBE
2024-02-15 18:56:59 +00:00
LDA #$06 ; foe falls left
LDY foeLEFTRIGHT
2023-07-08 16:35:15 +00:00
BMI L6D75
2024-02-15 18:56:59 +00:00
LDA #$0D ; foe falls right
L6D75 STA foeINDEX
INC foeSTEPY
LDA foeSTEPY
2023-07-08 16:35:15 +00:00
CMP #$05
BCS L6DC0
2024-02-15 18:56:59 +00:00
LDA foeSTEPY
2023-07-08 16:35:15 +00:00
CMP #$02
BNE L6DB7
2024-02-18 22:14:46 +00:00
JSR foeTAKECHEST
2024-02-14 20:46:43 +00:00
LDY foeY
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
LDY foeX
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L6DB7
2024-02-15 20:47:31 +00:00
LDA foeACTION
2023-07-08 16:35:15 +00:00
BPL L6DA2
2024-02-08 21:48:24 +00:00
DEC nbCHEST
2024-02-25 12:23:01 +00:00
L6DA2 LDA hfoeACTION
2024-02-15 20:47:31 +00:00
STA foeACTION
2024-02-15 18:56:59 +00:00
LDY #$00 ; we trapped a foe
2023-07-08 16:35:15 +00:00
LDA #$75
2024-02-08 21:48:24 +00:00
JSR printSCORE
2024-02-09 22:22:41 +00:00
JSR prepareMELODY
2023-07-08 16:35:15 +00:00
HEX 06200430024000
2024-02-15 18:56:59 +00:00
L6DB7 JSR calcFOESPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2024-02-15 18:56:59 +00:00
JMP saveFOEDATA
2023-07-08 16:35:15 +00:00
L6DC0 LDA #$00
2024-02-15 18:56:59 +00:00
STA foeSTEPY
2024-02-14 20:46:43 +00:00
LDY foeY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
LDY foeX
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L6DE1
2024-02-14 21:51:02 +00:00
LDA #sprEMPTY
2024-02-14 20:46:43 +00:00
L6DE1 STA (ptrBOARD),Y
INC foeY
LDY foeY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
LDY foeX
LDA (ptrBOARD),Y
2024-02-12 18:28:22 +00:00
CMP #sprHERO
2023-07-08 16:35:15 +00:00
BNE L6E02
2024-02-14 21:51:02 +00:00
LSR fgPLAY ; found the hero, he's now dead
2024-02-14 20:46:43 +00:00
L6E02 LDA (ptrBBACK),Y
2024-02-12 18:28:22 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L6E58
2024-02-15 20:47:31 +00:00
LDA foeACTION
2023-07-08 16:35:15 +00:00
BPL L6E58
2024-02-14 20:46:43 +00:00
LDY foeY
2023-07-08 16:35:15 +00:00
DEY
2024-02-08 21:48:24 +00:00
STY theY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
LDY foeX
2024-02-08 21:48:24 +00:00
STY theX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-15 18:56:59 +00:00
CMP #sprEMPTY
2023-07-08 16:35:15 +00:00
BEQ L6E31
2024-02-08 21:48:24 +00:00
DEC nbCHEST
2023-07-08 16:35:15 +00:00
JMP L6E46
2024-02-15 18:56:59 +00:00
L6E31 LDA #sprCHEST
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
STA (ptrBBACK),Y
2024-02-08 21:48:24 +00:00
JSR coutHGR2
LDY theY
LDX theX
JSR getXY
2024-02-15 18:56:59 +00:00
LDA #sprCHEST
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2024-02-14 20:46:43 +00:00
L6E46 LDY foeY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-15 20:47:31 +00:00
STA foeACTION
2024-02-14 20:46:43 +00:00
LDY foeX
2024-02-14 21:51:02 +00:00
L6E58 LDA #sprFOE
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2024-02-15 18:56:59 +00:00
JSR calcFOESPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2024-02-15 18:56:59 +00:00
JMP saveFOEDATA
2023-07-08 16:35:15 +00:00
L6E65 CPY #$07
BCC L6E85
2024-02-15 18:56:59 +00:00
JSR calcFOESPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2024-02-15 20:47:31 +00:00
LDY foeACTION
2024-02-14 21:51:02 +00:00
LDA L6E7F-7,Y
2024-02-15 18:56:59 +00:00
STA foeSTEPX
L6E76 JSR calcFOESPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2024-02-15 18:56:59 +00:00
JMP saveFOEDATA
2023-07-08 16:35:15 +00:00
2024-02-14 21:51:02 +00:00
L6E7F HEX 020102030201
2024-02-14 20:46:43 +00:00
L6E85 LDX foeX
LDY foeY
2023-07-08 16:35:15 +00:00
JSR L70D8
ASL
TAY
LDA L6E97+1,Y
PHA
LDA L6E97,Y
PHA
RTS
2024-02-15 18:56:59 +00:00
L6E97 DA saveFOEDATA-1 ; 0
DA L6FBC-1 ; 1
DA L7047-1 ; 2
DA L6EAC-1 ; 3
DA L6F39-1 ; 4
2023-07-08 16:35:15 +00:00
2024-02-15 20:47:31 +00:00
L6EA1 LDA foeACTION
2023-07-08 16:35:15 +00:00
BEQ L6EA9
BMI L6EA9
2024-02-15 20:47:31 +00:00
INC foeACTION
2024-02-15 18:56:59 +00:00
L6EA9 JMP saveFOEDATA
*--- 3
2023-07-08 16:35:15 +00:00
2024-02-15 18:56:59 +00:00
L6EAC LDY foeSTEPY
2023-07-08 16:35:15 +00:00
CPY #$03
BCS L6ED5
2024-02-14 20:46:43 +00:00
LDY foeY
2023-07-08 16:35:15 +00:00
BEQ L6EA1
DEY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
LDY foeX
LDA (ptrBOARD),Y
2024-02-27 20:08:52 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L6EA1
2024-02-27 20:08:52 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L6EA1
2024-02-27 20:08:52 +00:00
CMP #sprTRAP
2023-07-08 16:35:15 +00:00
BEQ L6EA1
2024-02-27 20:08:52 +00:00
CMP #sprFOE
2023-07-08 16:35:15 +00:00
BEQ L6EA1
2024-02-15 18:56:59 +00:00
L6ED5 JSR calcFOESPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2024-02-15 20:47:31 +00:00
JSR foeNEXTSTEPX
2024-02-14 20:46:43 +00:00
LDY foeY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
DEC foeSTEPY
2023-07-08 16:35:15 +00:00
BPL L6F26
2024-02-15 20:47:31 +00:00
JSR checkDROPCHEST
2024-02-14 20:46:43 +00:00
LDY foeX
LDA (ptrBBACK),Y
2024-02-27 20:08:52 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L6F02
2024-02-27 20:08:52 +00:00
LDA #sprEMPTY
2024-02-14 20:46:43 +00:00
L6F02 STA (ptrBOARD),Y
DEC foeY
LDY foeY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
LDY foeX
LDA (ptrBOARD),Y
2024-02-12 18:28:22 +00:00
CMP #sprHERO
2023-07-08 16:35:15 +00:00
BNE L6F1C
2024-02-13 08:09:27 +00:00
LSR fgPLAY
2024-02-27 20:08:52 +00:00
L6F1C LDA #sprFOE
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
LDA #$04
2024-02-15 18:56:59 +00:00
STA foeSTEPY
2023-07-08 16:35:15 +00:00
BNE L6F29
2024-02-18 22:14:46 +00:00
L6F26 JSR foeTAKECHEST
2023-07-08 16:35:15 +00:00
L6F29 LDA #$0E
LDX #$0F
2024-02-15 18:56:59 +00:00
JSR setFOESTEP
JSR calcFOESPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2024-02-15 18:56:59 +00:00
JMP saveFOEDATA
2023-07-08 16:35:15 +00:00
2024-02-15 18:56:59 +00:00
L6F39 LDY foeSTEPY
2023-07-08 16:35:15 +00:00
CPY #$02
BCC L6F63
2024-02-14 20:46:43 +00:00
LDY foeY
2023-07-08 16:35:15 +00:00
CPY #$0F
BCS L6F60
INY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
LDY foeX
LDA (ptrBOARD),Y
2024-02-15 18:56:59 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L6F60
2024-02-15 18:56:59 +00:00
CMP #sprFOE
2023-07-08 16:35:15 +00:00
BEQ L6F60
2024-02-15 18:56:59 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L6F63
2024-02-15 18:56:59 +00:00
L6F60 JMP saveFOEDATA
2023-07-08 16:35:15 +00:00
2024-02-15 18:56:59 +00:00
L6F63 JSR calcFOESPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2024-02-15 20:47:31 +00:00
JSR foeNEXTSTEPX
2024-02-14 20:46:43 +00:00
LDY foeY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
INC foeSTEPY
LDA foeSTEPY
2023-07-08 16:35:15 +00:00
CMP #$05
BCC L6FB9
2024-02-15 20:47:31 +00:00
JSR checkDROPCHEST
2024-02-14 20:46:43 +00:00
LDY foeX
LDA (ptrBBACK),Y
2024-02-15 18:56:59 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L6F94
2024-02-15 18:56:59 +00:00
LDA #sprEMPTY
2024-02-14 20:46:43 +00:00
L6F94 STA (ptrBOARD),Y
INC foeY
LDY foeY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
LDY foeX
LDA (ptrBOARD),Y
2024-02-12 18:28:22 +00:00
CMP #sprHERO
2023-07-08 16:35:15 +00:00
BNE L6FAE
2024-02-15 18:56:59 +00:00
LSR fgPLAY ; we're dead
L6FAE LDA #sprFOE
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-15 18:56:59 +00:00
STA foeSTEPY
2023-07-08 16:35:15 +00:00
JMP L6F29
L6FB9 JMP L6F26
2024-02-14 20:46:43 +00:00
L6FBC LDY foeY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDX foeSTEPX
2023-07-08 16:35:15 +00:00
CPX #$03
BCS L6FF1
2024-02-14 20:46:43 +00:00
LDY foeX
2023-07-08 16:35:15 +00:00
BEQ L6FEE
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-15 18:56:59 +00:00
CMP #sprFOE
2023-07-08 16:35:15 +00:00
BEQ L6FEE
2024-02-15 18:56:59 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L6FEE
2024-02-15 18:56:59 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L6FEE
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-15 18:56:59 +00:00
CMP #sprTRAP
2023-07-08 16:35:15 +00:00
BNE L6FF1
2024-02-15 18:56:59 +00:00
L6FEE JMP saveFOEDATA
2023-07-08 16:35:15 +00:00
2024-02-15 18:56:59 +00:00
L6FF1 JSR calcFOESPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2024-02-15 20:47:31 +00:00
JSR foeNEXTSTEPY
2023-07-08 16:35:15 +00:00
LDA #$FF
2024-02-15 18:56:59 +00:00
STA foeLEFTRIGHT
DEC foeSTEPX
2023-07-08 16:35:15 +00:00
BPL L7026
2024-02-15 20:47:31 +00:00
JSR checkDROPCHEST
2024-02-14 20:46:43 +00:00
LDY foeX
LDA (ptrBBACK),Y
2024-02-15 18:56:59 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L700F
2024-02-15 18:56:59 +00:00
LDA #sprEMPTY
2024-02-14 20:46:43 +00:00
L700F STA (ptrBOARD),Y
DEC foeX
2023-07-08 16:35:15 +00:00
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-12 18:28:22 +00:00
CMP #sprHERO
2023-07-08 16:35:15 +00:00
BNE L701C
2024-02-15 18:56:59 +00:00
LSR fgPLAY ; foe catched hero
L701C LDA #sprFOE
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
LDA #$04
2024-02-15 18:56:59 +00:00
STA foeSTEPX
2023-07-08 16:35:15 +00:00
BNE L7029
2024-02-18 22:14:46 +00:00
L7026 JSR foeTAKECHEST
2024-02-14 20:46:43 +00:00
L7029 LDY foeX
LDA (ptrBBACK),Y
2024-02-15 18:56:59 +00:00
CMP #sprBAR
2023-07-08 16:35:15 +00:00
BEQ L7037
2024-02-15 18:56:59 +00:00
LDA #$00 ; foe runs left
2023-07-08 16:35:15 +00:00
LDX #$02
BNE L703B
2024-02-15 18:56:59 +00:00
L7037 LDA #$03 ; foe bars left
2023-07-08 16:35:15 +00:00
LDX #$05
2024-02-15 18:56:59 +00:00
L703B JSR setFOESTEP
JSR calcFOESPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2024-02-15 18:56:59 +00:00
JMP saveFOEDATA
2023-07-08 16:35:15 +00:00
2024-02-14 20:46:43 +00:00
L7047 LDY foeY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDX foeSTEPX
2023-07-08 16:35:15 +00:00
CPX #$02
BCC L707E
2024-02-14 20:46:43 +00:00
LDY foeX
2024-02-15 18:56:59 +00:00
CPY #lvlWIDTH-1
2023-07-08 16:35:15 +00:00
BEQ L707B
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-27 20:08:52 +00:00
CMP #sprFOE
2023-07-08 16:35:15 +00:00
BEQ L707B
2024-02-27 20:08:52 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L707B
2024-02-27 20:08:52 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L707B
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-27 20:08:52 +00:00
CMP #sprTRAP
2023-07-08 16:35:15 +00:00
BNE L707E
2024-02-15 18:56:59 +00:00
L707B JMP saveFOEDATA
2023-07-08 16:35:15 +00:00
2024-02-15 18:56:59 +00:00
L707E JSR calcFOESPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2024-02-15 20:47:31 +00:00
JSR foeNEXTSTEPY
2023-07-08 16:35:15 +00:00
LDA #$01
2024-02-15 18:56:59 +00:00
STA foeLEFTRIGHT
INC foeSTEPX
LDA foeSTEPX
2023-07-08 16:35:15 +00:00
CMP #$05
BCC L70B7
2024-02-15 20:47:31 +00:00
JSR checkDROPCHEST
2024-02-14 20:46:43 +00:00
LDY foeX
LDA (ptrBBACK),Y
2024-02-15 18:56:59 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L70A0
LDA #$00
2024-02-14 20:46:43 +00:00
L70A0 STA (ptrBOARD),Y
INC foeX
2023-07-08 16:35:15 +00:00
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-12 18:28:22 +00:00
CMP #sprHERO
2023-07-08 16:35:15 +00:00
BNE L70AD
2024-02-13 08:09:27 +00:00
LSR fgPLAY
2024-02-15 18:56:59 +00:00
L70AD LDA #sprFOE
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-15 18:56:59 +00:00
STA foeSTEPX
2023-07-08 16:35:15 +00:00
BEQ L70BA
2024-02-18 22:14:46 +00:00
L70B7 JSR foeTAKECHEST
2024-02-14 20:46:43 +00:00
L70BA LDY foeX
LDA (ptrBBACK),Y
2024-02-15 18:56:59 +00:00
CMP #sprBAR
2023-07-08 16:35:15 +00:00
BEQ L70C8
2024-02-15 18:56:59 +00:00
LDA #$07 ; foe runs right
2023-07-08 16:35:15 +00:00
LDX #$09
BNE L70CC
2024-02-15 18:56:59 +00:00
L70C8 LDA #$0A ; foe bars right
2023-07-08 16:35:15 +00:00
LDX #$0C
2024-02-15 18:56:59 +00:00
L70CC JSR setFOESTEP
JSR calcFOESPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2024-02-15 18:56:59 +00:00
JMP saveFOEDATA
2023-07-08 16:35:15 +00:00
2024-02-15 18:56:59 +00:00
L70D8 STX tempX4
STY tempY1
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX4
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BNE L70F7
2024-02-15 20:47:31 +00:00
LDA foeACTION
2023-07-08 16:35:15 +00:00
BEQ L70F7
BMI L70F7
2024-02-15 18:56:59 +00:00
LDA #$03 ; action 3
2023-07-08 16:35:15 +00:00
RTS
2024-02-15 18:56:59 +00:00
L70F7 LDY tempY1
2024-02-12 18:28:22 +00:00
CPY boardY
2023-07-08 16:35:15 +00:00
BEQ L7100
JMP L7186
2024-02-15 18:56:59 +00:00
L7100 LDY tempX4
STY tempX5
2024-02-12 18:28:22 +00:00
CPY boardX
2023-07-08 16:35:15 +00:00
BCS L7147
2024-02-15 18:56:59 +00:00
L7108 INC tempX5
LDY tempY1
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX5
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-15 18:56:59 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BEQ L713E
2024-02-15 18:56:59 +00:00
CMP #sprBAR
2023-07-08 16:35:15 +00:00
BEQ L713E
2024-02-15 18:56:59 +00:00
LDY tempY1
CPY #lvlHEIGHT-1
2023-07-08 16:35:15 +00:00
BEQ L713E
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL+1,Y
lda tblBOARDBACKL+1,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX5
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprEMPTY
2023-07-08 16:35:15 +00:00
BEQ L7186
2024-02-14 21:51:02 +00:00
CMP #sprTRAP
2023-07-08 16:35:15 +00:00
BEQ L7186
2024-02-15 18:56:59 +00:00
L713E LDY tempX5
2024-02-12 18:28:22 +00:00
CPY boardX
2023-07-08 16:35:15 +00:00
BNE L7108
2024-02-15 18:56:59 +00:00
LDA #$02 ; action 2
2023-07-08 16:35:15 +00:00
RTS
2024-02-15 18:56:59 +00:00
L7147 DEC tempX5
LDY tempY1
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX5
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-15 18:56:59 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BEQ L717D
2024-02-15 18:56:59 +00:00
CMP #sprBAR
2023-07-08 16:35:15 +00:00
BEQ L717D
2024-02-15 18:56:59 +00:00
LDY tempY1
CPY #lvlHEIGHT-1
2023-07-08 16:35:15 +00:00
BEQ L717D
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL+1,Y
lda tblBOARDBACKL+1,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX5
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-15 18:56:59 +00:00
CMP #sprEMPTY
2023-07-08 16:35:15 +00:00
BEQ L7186
2024-02-15 18:56:59 +00:00
CMP #sprTRAP
2023-07-08 16:35:15 +00:00
BEQ L7186
2024-02-15 18:56:59 +00:00
L717D LDY tempX5
2024-02-12 18:28:22 +00:00
CPY boardX
2023-07-08 16:35:15 +00:00
BNE L7147
2024-02-15 18:56:59 +00:00
LDA #$01 ; action 1
2023-07-08 16:35:15 +00:00
RTS
L7186 LDA #$00
STA $58
LDA #$FF
STA $59
2024-02-15 18:56:59 +00:00
LDX tempX4
LDY tempY1
2023-07-08 16:35:15 +00:00
JSR L743E
JSR L7275
JSR L71A2
JSR L720C
LDA $58
RTS
L71A1 RTS
2024-02-15 18:56:59 +00:00
L71A2 LDY tempX3
CPY tempX4
2023-07-08 16:35:15 +00:00
BEQ L71A1
2024-02-15 18:56:59 +00:00
LDY tempY1
CPY #lvlHEIGHT-1
2023-07-08 16:35:15 +00:00
BEQ L71DA
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL+1,Y
lda tblBOARDBACKL+1,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX3
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L71DA
2024-02-14 21:51:02 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L71DA
2024-02-15 18:56:59 +00:00
LDX tempX3
LDY tempY1
2023-07-08 16:35:15 +00:00
JSR L739D
2024-02-15 18:56:59 +00:00
LDX tempX3
2023-07-08 16:35:15 +00:00
JSR L72D4
CMP $59
BCS L71DA
STA $59
LDA #$01
STA $58
2024-02-15 18:56:59 +00:00
L71DA LDY tempY1
2023-07-08 16:35:15 +00:00
BEQ L7206
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX3
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BNE L7206
2024-02-15 18:56:59 +00:00
LDY tempY1
LDX tempX3
2023-07-08 16:35:15 +00:00
JSR L7300
2024-02-15 18:56:59 +00:00
LDX tempX3
2023-07-08 16:35:15 +00:00
JSR L72D4
CMP $59
BCS L7206
STA $59
LDA #$01
STA $58
2024-02-15 18:56:59 +00:00
L7206 INC tempX3
2023-07-08 16:35:15 +00:00
JMP L71A2
L720B RTS
2024-02-15 18:56:59 +00:00
L720C LDY tempX2
CPY tempX4
2023-07-08 16:35:15 +00:00
BEQ L720B
2024-02-15 18:56:59 +00:00
LDY tempY1
2023-07-08 16:35:15 +00:00
CPY #$0F
BEQ L7244
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL+1,Y
lda tblBOARDBACKL+1,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX2
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L7244
2024-02-14 21:51:02 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L7244
2024-02-15 18:56:59 +00:00
LDX tempX2
LDY tempY1
2023-07-08 16:35:15 +00:00
JSR L739D
2024-02-15 18:56:59 +00:00
LDX tempX2
2023-07-08 16:35:15 +00:00
JSR L72D4
CMP $59
BCS L7244
STA $59
LDA #$02
STA $58
2024-02-15 18:56:59 +00:00
L7244 LDY tempY1
2023-07-08 16:35:15 +00:00
BEQ L7270
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX2
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BNE L7270
2024-02-15 18:56:59 +00:00
LDY tempY1
LDX tempX2
2023-07-08 16:35:15 +00:00
JSR L7300
2024-02-15 18:56:59 +00:00
LDX tempX2
2023-07-08 16:35:15 +00:00
JSR L72D4
CMP $59
BCS L7270
STA $59
LDA #$02
STA $58
2024-02-15 18:56:59 +00:00
L7270 DEC tempX2
2023-07-08 16:35:15 +00:00
JMP L720C
2024-02-15 18:56:59 +00:00
L7275 LDY tempY1
CPY #lvlHEIGHT-1
2023-07-08 16:35:15 +00:00
BEQ L72A7
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL+1,Y
lda tblBOARDBACKL+1,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX4
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L72A7
2024-02-14 21:51:02 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L72A7
2024-02-15 18:56:59 +00:00
LDX tempX4
LDY tempY1
2023-07-08 16:35:15 +00:00
JSR L739D
2024-02-15 18:56:59 +00:00
LDX tempX4
2023-07-08 16:35:15 +00:00
JSR L72D4
CMP $59
BCS L72A7
STA $59
LDA #$04
STA $58
2024-02-15 18:56:59 +00:00
L72A7 LDY tempY1
2023-07-08 16:35:15 +00:00
BEQ L72D3
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX4
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BNE L72D3
2024-02-15 18:56:59 +00:00
LDX tempX4
LDY tempY1
2023-07-08 16:35:15 +00:00
JSR L7300
2024-02-15 18:56:59 +00:00
LDX tempX4
2023-07-08 16:35:15 +00:00
JSR L72D4
CMP $59
BCS L72D3
STA $59
LDA #$03
STA $58
L72D3 RTS
2024-02-13 08:09:27 +00:00
L72D4 STA fgODDEVEN
2024-02-12 18:28:22 +00:00
CMP boardY
2023-07-08 16:35:15 +00:00
BNE L72EB
2024-02-14 20:46:43 +00:00
CPX foeX
2023-07-08 16:35:15 +00:00
BCC L72E3
TXA
SEC
2024-02-14 20:46:43 +00:00
SBC foeX
2023-07-08 16:35:15 +00:00
RTS
2024-02-13 08:09:27 +00:00
L72E3 STX fgODDEVEN
2024-02-14 20:46:43 +00:00
LDA foeX
2023-07-08 16:35:15 +00:00
SEC
2024-02-13 08:09:27 +00:00
SBC fgODDEVEN
2023-07-08 16:35:15 +00:00
RTS
L72EB BCC L72F4
SEC
2024-02-12 18:28:22 +00:00
SBC boardY
2023-07-08 16:35:15 +00:00
CLC
ADC #$C8
RTS
2024-02-12 18:28:22 +00:00
L72F4 LDA boardY
2023-07-08 16:35:15 +00:00
SEC
2024-02-13 08:09:27 +00:00
SBC fgODDEVEN
2023-07-08 16:35:15 +00:00
CLC
ADC #$64
RTS
2024-02-15 18:56:59 +00:00
L72FD LDA tempY
2023-07-08 16:35:15 +00:00
RTS
2024-02-15 18:56:59 +00:00
L7300 STY tempY
STX tempX
2024-02-19 16:43:51 +00:00
L7304
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BNE L72FD
2024-02-15 18:56:59 +00:00
DEC tempY
LDY tempX
2023-07-08 16:35:15 +00:00
BEQ L734A
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L7340
2024-02-14 21:51:02 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L7340
2024-02-15 18:56:59 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BEQ L7340
2024-02-15 18:56:59 +00:00
LDY tempY
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX
2023-07-08 16:35:15 +00:00
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprBAR
2023-07-08 16:35:15 +00:00
BNE L734A
2024-02-15 18:56:59 +00:00
L7340 LDY tempY
STY temp1
2024-02-12 18:28:22 +00:00
CPY boardY
2023-07-08 16:35:15 +00:00
BCC L7397
BEQ L7397
2024-02-15 18:56:59 +00:00
L734A LDY tempX
CPY #lvlWIDTH-1
2023-07-08 16:35:15 +00:00
BEQ L738C
2024-02-15 18:56:59 +00:00
LDY tempY
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL+1,Y
lda tblBOARDBACKL+1,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX
2023-07-08 16:35:15 +00:00
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L7382
2024-02-14 21:51:02 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L7382
2024-02-14 21:51:02 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BEQ L7382
2024-02-15 18:56:59 +00:00
LDY tempY
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX
2023-07-08 16:35:15 +00:00
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprBAR
2023-07-08 16:35:15 +00:00
BNE L738C
2024-02-15 18:56:59 +00:00
L7382 LDY tempY
STY temp1
2024-02-12 18:28:22 +00:00
CPY boardY
2023-07-08 16:35:15 +00:00
BCC L7397
BEQ L7397
2024-02-15 18:56:59 +00:00
L738C LDY tempY
2023-07-08 16:35:15 +00:00
CPY #$01
BCC L7395
JMP L7304
L7395 TYA
RTS
2024-02-15 18:56:59 +00:00
L7397 LDA temp1
2023-07-08 16:35:15 +00:00
RTS
2024-02-15 18:56:59 +00:00
L739A LDA tempY
2023-07-08 16:35:15 +00:00
RTS
2024-02-15 18:56:59 +00:00
L739D STY tempY
STX tempX
2024-02-19 16:43:51 +00:00
L73A1
* LDA tblBOARDALLL+1,Y
lda tblBOARDBACKL+1,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L739A
2024-02-15 18:56:59 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L739A
2024-02-15 18:56:59 +00:00
LDY tempY
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprEMPTY
2023-07-08 16:35:15 +00:00
BEQ L742D
2024-02-18 22:14:46 +00:00
CPY #$00 ; first column?
BEQ L73FB ; yes
2023-07-08 16:35:15 +00:00
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprBAR
2023-07-08 16:35:15 +00:00
BEQ L73F3
2024-02-15 18:56:59 +00:00
LDY tempY
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL+1,Y
lda tblBOARDBACKL+1,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX
2023-07-08 16:35:15 +00:00
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-14 21:51:02 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L73F3
2024-02-14 21:51:02 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L73F3
2024-02-14 21:51:02 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BNE L73FB
2024-02-15 18:56:59 +00:00
L73F3 LDY tempY
STY temp1
2024-02-12 18:28:22 +00:00
CPY boardY
2023-07-08 16:35:15 +00:00
BCS L743B
2024-02-15 18:56:59 +00:00
L73FB LDY tempX
CPY #lvlWIDTH-1
2023-07-08 16:35:15 +00:00
BCS L742D
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-15 18:56:59 +00:00
CMP #sprBAR
2023-07-08 16:35:15 +00:00
BEQ L7425
2024-02-15 18:56:59 +00:00
LDY tempY
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL+1,Y
lda tblBOARDBACKL+1,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX
2023-07-08 16:35:15 +00:00
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-15 18:56:59 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L7425
2024-02-15 18:56:59 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BEQ L7425
2024-02-15 18:56:59 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BNE L742D
2024-02-15 18:56:59 +00:00
L7425 LDY tempY
STY temp1
2024-02-12 18:28:22 +00:00
CPY boardY
2023-07-08 16:35:15 +00:00
BCS L743B
2024-02-15 18:56:59 +00:00
L742D INC tempY ; next column
LDY tempY
CPY #lvlHEIGHT
2023-07-08 16:35:15 +00:00
BCS L7438
JMP L73A1
L7438 LDA #$0F
RTS
2024-02-15 18:56:59 +00:00
L743B LDA temp1
2023-07-08 16:35:15 +00:00
RTS
2024-02-15 18:56:59 +00:00
L743E STX tempX3
STX tempX2
2024-02-12 18:28:22 +00:00
STY theYSCREEN
2024-02-15 18:56:59 +00:00
L7444 LDA tempX3
2023-07-08 16:35:15 +00:00
BEQ L7490
2024-02-12 18:28:22 +00:00
LDY theYSCREEN
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-15 18:56:59 +00:00
LDY tempX3
2023-07-08 16:35:15 +00:00
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L7490
CMP #$02
BEQ L7490
CMP #$03
BEQ L748A
CMP #$04
BEQ L748A
2024-02-12 18:28:22 +00:00
LDY theYSCREEN
2023-07-08 16:35:15 +00:00
CPY #$0F
BEQ L748A
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL+1,Y
lda tblBOARDBACKL+1,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX3
2023-07-08 16:35:15 +00:00
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-27 20:08:52 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L748A
2024-02-27 20:08:52 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L748A
2024-02-27 20:08:52 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BNE L748E
2024-02-15 18:56:59 +00:00
L748A DEC tempX3
2023-07-08 16:35:15 +00:00
BPL L7444
2024-02-15 18:56:59 +00:00
L748E DEC tempX3
L7490 LDA tempX2
CMP #lvlWIDTH-1
2023-07-08 16:35:15 +00:00
BEQ L74DE
2024-02-12 18:28:22 +00:00
LDY theYSCREEN
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-15 18:56:59 +00:00
LDY tempX2
2023-07-08 16:35:15 +00:00
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-15 18:56:59 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L74DE
2024-02-15 18:56:59 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L74DE
2024-02-15 18:56:59 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BEQ L74D8
2024-02-15 18:56:59 +00:00
CMP #sprBAR
2023-07-08 16:35:15 +00:00
BEQ L74D8
2024-02-12 18:28:22 +00:00
LDY theYSCREEN
2024-02-15 18:56:59 +00:00
CPY #lvlHEIGHT-1
2023-07-08 16:35:15 +00:00
BEQ L74D8
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL+1,Y
lda tblBOARDBACKL+1,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX2
2023-07-08 16:35:15 +00:00
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-27 20:08:52 +00:00
CMP #sprWALL
2023-07-08 16:35:15 +00:00
BEQ L74D8
2024-02-27 20:08:52 +00:00
CMP #sprWALLI
2023-07-08 16:35:15 +00:00
BEQ L74D8
2024-02-27 20:08:52 +00:00
CMP #sprLADDER
2023-07-08 16:35:15 +00:00
BNE L74DC
2024-02-15 18:56:59 +00:00
L74D8 INC tempX2
2023-07-08 16:35:15 +00:00
BPL L7490
2024-02-15 18:56:59 +00:00
L74DC INC tempX2
2023-07-08 16:35:15 +00:00
L74DE RTS
2024-02-15 18:56:59 +00:00
*-----------------------------------
* CALC FOE SPRITE X/Y
*-----------------------------------
calcFOESPRITEXY
LDX foeX
LDY foeSTEPX
2024-02-14 20:46:43 +00:00
JSR calcHGRX
2024-02-08 21:48:24 +00:00
STX theA
2024-02-14 20:46:43 +00:00
LDY foeY
2024-02-15 18:56:59 +00:00
LDX foeSTEPY
2024-02-14 20:46:43 +00:00
JSR calcHGRY
2024-02-15 18:56:59 +00:00
LDX foeINDEX
LDA seqFOE,X
2024-02-08 21:48:24 +00:00
LDX theA
2023-07-08 16:35:15 +00:00
RTS
2024-02-15 18:56:59 +00:00
*-----------------------------------
2024-02-18 22:14:46 +00:00
* FOE TAKES A CHEST
2024-02-15 18:56:59 +00:00
*-----------------------------------
2024-02-18 22:14:46 +00:00
foeTAKECHEST
LDA foeSTEPX
2023-07-08 16:35:15 +00:00
CMP #$02
BNE L753D
2024-02-15 18:56:59 +00:00
LDA foeSTEPY
2023-07-08 16:35:15 +00:00
CMP #$02
BNE L753D
2024-02-14 20:46:43 +00:00
LDY foeY
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
LDY foeX
LDA (ptrBBACK),Y
2024-02-18 22:14:46 +00:00
CMP #sprCHEST
2023-07-08 16:35:15 +00:00
BNE L753D
2024-02-18 22:14:46 +00:00
LDA foeACTION ; deja un tresor ?
BMI L753D ; oui
LDA #$FF ; prends-le
2023-07-08 16:35:15 +00:00
SEC
2024-02-15 18:56:59 +00:00
SBC tempX6
2024-02-15 20:47:31 +00:00
STA foeACTION
2024-02-15 18:56:59 +00:00
LDA #sprEMPTY
2024-02-14 20:46:43 +00:00
STA (ptrBBACK),Y
LDY foeY
2024-02-08 21:48:24 +00:00
STY theY
2024-02-14 20:46:43 +00:00
LDY foeX
2024-02-08 21:48:24 +00:00
STY theX
JSR coutHGR2
LDY theY
LDX theX
JSR getXY
2024-02-18 22:14:46 +00:00
LDA #sprCHEST
2024-02-12 18:28:22 +00:00
JMP drawSPRITEXY
2023-07-08 16:35:15 +00:00
L753D RTS
2024-02-15 20:47:31 +00:00
*-----------------------------------
* FOE DROPS CHEST
*-----------------------------------
checkDROPCHEST
LDA foeACTION
BPL L7573 ; skip if positive
INC foeACTION ; here is negative
2023-07-08 16:35:15 +00:00
BNE L7573
2024-02-15 20:47:31 +00:00
LDY foeY ; here if 0
2024-02-08 21:48:24 +00:00
STY theY
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
LDY foeX
2024-02-08 21:48:24 +00:00
STY theX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2024-02-15 20:47:31 +00:00
CMP #sprEMPTY
2023-07-08 16:35:15 +00:00
BNE L7571
2024-02-15 20:47:31 +00:00
LDA #sprCHEST
2024-02-14 20:46:43 +00:00
STA (ptrBBACK),Y
2024-02-08 21:48:24 +00:00
JSR coutHGR2
LDY theY
LDX theX
JSR getXY
2024-02-15 20:47:31 +00:00
LDA #sprCHEST
2024-02-12 18:28:22 +00:00
JMP drawSPRXYCOLLISION
2023-07-08 16:35:15 +00:00
2024-02-15 20:47:31 +00:00
L7571 DEC foeACTION
2023-07-08 16:35:15 +00:00
L7573 RTS
2024-02-15 18:56:59 +00:00
*-----------------------------------
* SET FOE ANIMATION STEP
*-----------------------------------
setFOESTEP INC foeINDEX ; tutu
CMP foeINDEX
2023-07-08 16:35:15 +00:00
BCC L757D
2024-02-15 18:56:59 +00:00
L757A STA foeINDEX
2023-07-08 16:35:15 +00:00
RTS
2024-02-15 18:56:59 +00:00
L757D CPX foeINDEX
2023-07-08 16:35:15 +00:00
BCC L757A
RTS
2024-02-15 18:56:59 +00:00
*-----------------------------------
* SET FOE NEXT STEP X
*-----------------------------------
2024-02-15 20:47:31 +00:00
foeNEXTSTEPX
LDA foeSTEPX
2023-07-08 16:35:15 +00:00
CMP #$02
BCC L758F
BEQ L7594
2024-02-15 18:56:59 +00:00
DEC foeSTEPX
2024-02-18 22:14:46 +00:00
JMP foeTAKECHEST
2024-02-15 18:56:59 +00:00
L758F INC foeSTEPX
2024-02-18 22:14:46 +00:00
JMP foeTAKECHEST
2023-07-08 16:35:15 +00:00
L7594 RTS
2024-02-15 18:56:59 +00:00
*-----------------------------------
* SET FOE NEXT STEP Y
*-----------------------------------
2024-02-15 20:47:31 +00:00
foeNEXTSTEPY
LDA foeSTEPY
2023-07-08 16:35:15 +00:00
CMP #$02
BCC L75A2
BEQ L75A7
2024-02-15 18:56:59 +00:00
DEC foeSTEPY
2024-02-18 22:14:46 +00:00
JMP foeTAKECHEST
2024-02-15 18:56:59 +00:00
L75A2 INC foeSTEPY
2024-02-18 22:14:46 +00:00
JMP foeTAKECHEST
2023-07-08 16:35:15 +00:00
L75A7 RTS
2024-02-15 18:56:59 +00:00
*-----------------------------------
* SAVE FOE DATA AFTER WE USED IT
*-----------------------------------
saveFOEDATA LDX idxFOE
2024-02-14 20:46:43 +00:00
LDA foeX
2024-02-09 22:22:41 +00:00
STA tblFOEX,X
2024-02-14 20:46:43 +00:00
LDA foeY
2024-02-09 22:22:41 +00:00
STA tblFOEY,X
2024-02-15 18:56:59 +00:00
LDA foeSTEPX
STA tblFOESTEPX,X
LDA foeSTEPY
STA tblFOESTEPY,X
2024-02-15 20:47:31 +00:00
LDA foeACTION
STA tblFOEACTION,X
2024-02-15 18:56:59 +00:00
LDA foeLEFTRIGHT
STA tblFOELEFTRIGHT,X
LDA foeINDEX
STA tblFOEINDEX,X
2023-07-08 16:35:15 +00:00
RTS
2024-02-15 18:56:59 +00:00
*-----------------------------------
* LOAD FOE DATA TO USE IT
*-----------------------------------
loadFOEDATA LDX idxFOE
2024-02-09 22:22:41 +00:00
LDA tblFOEX,X
2024-02-14 20:46:43 +00:00
STA foeX
2024-02-09 22:22:41 +00:00
LDA tblFOEY,X
2024-02-14 20:46:43 +00:00
STA foeY
2024-02-15 18:56:59 +00:00
LDA tblFOESTEPX,X
STA foeSTEPX
LDA tblFOESTEPY,X
STA foeSTEPY
LDA tblFOEINDEX,X
STA foeINDEX
LDA tblFOELEFTRIGHT,X
STA foeLEFTRIGHT
2024-02-15 20:47:31 +00:00
LDA tblFOEACTION,X
STA foeACTION
2023-07-08 16:35:15 +00:00
RTS
2024-02-15 18:56:59 +00:00
*-----------------------------------
2024-02-15 20:47:31 +00:00
* CHECK HOLE - Who/What is in the hole?
2024-02-15 18:56:59 +00:00
*-----------------------------------
2024-02-15 20:47:31 +00:00
checkHOLE JSR checkRESURRECT
INC tempX6 ; next one
2024-02-15 18:56:59 +00:00
LDA tempX6
2024-02-15 20:47:31 +00:00
CMP #lvlWIDTH ; ok, we browsed the line
2023-07-08 16:35:15 +00:00
BCC L7603
2024-02-15 20:47:31 +00:00
LDA #$00 ; start again at column 0
2024-02-15 18:56:59 +00:00
STA tempX6
2024-02-15 20:47:31 +00:00
2024-02-12 18:28:22 +00:00
L7603 LDX #sizeHOLE-2
L7605 LDA tblHOLET,X
STX tempINDEX
2023-07-08 16:35:15 +00:00
BNE L760F
JMP L770D
2024-02-12 18:28:22 +00:00
L760F DEC tblHOLET,X
2023-07-08 16:35:15 +00:00
BEQ L7641
2024-02-12 18:28:22 +00:00
LDA tblHOLEX,X
2024-02-08 21:48:24 +00:00
STA theX
2024-02-12 18:28:22 +00:00
LDA tblHOLEY,X
2024-02-08 21:48:24 +00:00
STA theY
2024-02-12 18:28:22 +00:00
LDA tblHOLET,X
2024-02-15 20:47:31 +00:00
CMP #$14 ; 20
2023-07-08 16:35:15 +00:00
BNE L7639
2024-02-15 20:47:31 +00:00
LDA #$37 ; 1er sprite
2024-02-08 21:48:24 +00:00
L7627 JSR coutHGR2
LDX theX
LDY theY
JSR getXY
2024-02-15 20:47:31 +00:00
LDA #sprEMPTY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2023-07-08 16:35:15 +00:00
L7636 JMP L770D
2024-02-15 20:47:31 +00:00
L7639 CMP #$0A ; 10
2023-07-08 16:35:15 +00:00
BNE L7636
2024-02-15 20:47:31 +00:00
LDA #$38 ; 2nd sprite
2023-07-08 16:35:15 +00:00
BNE L7627
2024-02-15 20:47:31 +00:00
2024-02-12 18:28:22 +00:00
L7641 LDX tempINDEX
LDY tblHOLEY,X
2024-02-08 21:48:24 +00:00
STY theY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-12 18:28:22 +00:00
LDY tblHOLEX,X
2024-02-08 21:48:24 +00:00
STY theX
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-12 18:28:22 +00:00
CMP #sprEMPTY
2023-07-08 16:35:15 +00:00
BNE L7667
JMP L7701
2024-02-12 18:28:22 +00:00
L7667 CMP #sprHERO
2023-07-08 16:35:15 +00:00
BNE L766D
2024-02-15 20:47:31 +00:00
LSR fgPLAY ; the hero was in the hole... he's dead
L766D CMP #sprFOE
BEQ L767A ; it was a foe
2024-02-12 18:28:22 +00:00
CMP #sprCHEST
2023-07-08 16:35:15 +00:00
BNE L7677
2024-02-15 20:47:31 +00:00
DEC nbCHEST ; a chest, remove one
2023-07-08 16:35:15 +00:00
L7677 JMP L7701
2024-02-15 20:47:31 +00:00
*--- kill the foe
L767A LDA #sprWALL ; put a wall
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
STA (ptrBBACK),Y
2024-02-08 21:48:24 +00:00
JSR coutHGR1
2024-02-12 18:28:22 +00:00
LDA #sprWALL
2024-02-08 21:48:24 +00:00
JSR coutHGR2
2024-02-15 20:47:31 +00:00
LDX nbFOE ; find the foe
2024-02-09 22:22:41 +00:00
L768A LDA tblFOEX,X
2024-02-08 21:48:24 +00:00
CMP theX
2023-07-08 16:35:15 +00:00
BNE L76FE
2024-02-09 22:22:41 +00:00
LDA tblFOEY,X
2024-02-08 21:48:24 +00:00
CMP theY
2023-07-08 16:35:15 +00:00
BNE L76FE
2024-02-15 20:47:31 +00:00
LDA tblFOEACTION,X ; was he holding a chest?
2023-07-08 16:35:15 +00:00
BPL L769F
2024-02-15 20:47:31 +00:00
DEC nbCHEST ; yes, remove it
L769F LDA #$7F ; no chest
STA tblFOEACTION,X
2024-02-12 18:28:22 +00:00
STX idxFOE
2024-02-15 18:56:59 +00:00
JSR loadFOEDATA
JSR calcFOESPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
LDX idxFOE
2024-02-15 20:47:31 +00:00
LDY #$01 ; we resurrect him on line 1
2024-02-08 21:48:24 +00:00
STY theY
L76B5 LDY theY
2024-02-19 16:43:51 +00:00
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY tempX6
2024-02-14 20:46:43 +00:00
L76C3 LDA (ptrBBACK),Y
2024-02-15 20:47:31 +00:00
CMP #sprEMPTY ; only if there is a space
2023-07-08 16:35:15 +00:00
BEQ L76D9
2024-02-15 18:56:59 +00:00
INC tempX6
LDY tempX6
CPY #lvlWIDTH
2023-07-08 16:35:15 +00:00
BCC L76C3
2024-02-08 21:48:24 +00:00
INC theY
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-15 18:56:59 +00:00
STA tempX6
2023-07-08 16:35:15 +00:00
BEQ L76B5
L76D9 TYA
2024-02-09 22:22:41 +00:00
STA tblFOEX,X
2024-02-08 21:48:24 +00:00
LDA theY
2024-02-09 22:22:41 +00:00
STA tblFOEY,X
2023-07-08 16:35:15 +00:00
LDA #$14
2024-02-15 18:56:59 +00:00
STA tblFOETEMPO,X
2023-07-08 16:35:15 +00:00
LDA #$02
2024-02-15 18:56:59 +00:00
STA tblFOESTEPY,X
STA tblFOESTEPX,X
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-15 18:56:59 +00:00
STA tblFOEINDEX,X
LDY #$00 ; we killed an ennemy
2023-07-08 16:35:15 +00:00
LDA #$75
2024-02-08 21:48:24 +00:00
JSR printSCORE
2023-07-08 16:35:15 +00:00
JMP L770D
L76FE DEX
BNE L768A
2024-02-12 18:28:22 +00:00
L7701 LDA #sprWALL
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2024-02-08 21:48:24 +00:00
JSR coutHGR1
2024-02-15 18:56:59 +00:00
LDA #sprWALL
2024-02-08 21:48:24 +00:00
JSR coutHGR2
2024-02-12 18:28:22 +00:00
L770D LDX tempINDEX
2023-07-08 16:35:15 +00:00
DEX
BMI L7715
JMP L7605
L7715 RTS
2024-02-15 20:47:31 +00:00
*-----------------------------------
* CHECK RESURRECT - Can/Do we resurrect a foe?
*-----------------------------------
checkRESURRECT
LDX nbFOE ; ennemi 0 n'existe pas
2023-07-08 16:35:15 +00:00
BEQ L7715
2024-02-12 18:28:22 +00:00
LDA idxFOE
2023-07-08 16:35:15 +00:00
PHA
2024-02-15 18:56:59 +00:00
L771D LDA tblFOETEMPO,X
BEQ nextFOE
2024-02-12 18:28:22 +00:00
STX idxFOE
2024-02-15 18:56:59 +00:00
JSR loadFOEDATA
2023-07-08 16:35:15 +00:00
LDA #$7F
2024-02-15 20:47:31 +00:00
STA tblFOEACTION,X
2024-02-09 22:22:41 +00:00
LDA tblFOEX,X
2024-02-08 21:48:24 +00:00
STA theX
2024-02-09 22:22:41 +00:00
LDA tblFOEY,X
2024-02-08 21:48:24 +00:00
STA theY
2024-02-15 18:56:59 +00:00
DEC tblFOETEMPO,X ; foe must live
BEQ resurrectFOE
LDA tblFOETEMPO,X
2023-07-08 16:35:15 +00:00
CMP #$13
BNE L7752
2024-02-15 18:56:59 +00:00
LDA #$39 ; foe appears again
2024-02-08 21:48:24 +00:00
JSR coutHGR2
2024-02-15 18:56:59 +00:00
JSR calcFOESPRITEXY
2023-07-08 16:35:15 +00:00
LDA #$39
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2024-02-15 18:56:59 +00:00
JMP nextFOEalt
2023-07-08 16:35:15 +00:00
2024-02-15 18:56:59 +00:00
L7752 CMP #$0A
BNE nextFOE
LDA #$3A ; foe appears again sprite 2
2024-02-08 21:48:24 +00:00
JSR coutHGR2
2024-02-15 18:56:59 +00:00
JSR calcFOESPRITEXY
2023-07-08 16:35:15 +00:00
LDA #$3A
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2024-02-15 18:56:59 +00:00
nextFOEalt LDX idxFOE ; next ennemy
nextFOE DEX
2023-07-08 16:35:15 +00:00
BNE L771D
2024-02-15 18:56:59 +00:00
PLA ; restore
2024-02-12 18:28:22 +00:00
STA idxFOE
2024-02-15 18:56:59 +00:00
RTS ; exit
2023-07-08 16:35:15 +00:00
2024-02-15 18:56:59 +00:00
*-----------------------------------
* RESURRECT FOE
*-----------------------------------
resurrectFOE
LDY theY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-12 18:28:22 +00:00
LDX idxFOE
2024-02-15 18:56:59 +00:00
INC tblFOETEMPO,X
2024-02-08 21:48:24 +00:00
LDY theX
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-15 18:56:59 +00:00
BNE nextFOE
2024-02-09 22:22:41 +00:00
LDA #sprFOE
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2024-02-12 18:28:22 +00:00
LDA #sprEMPTY
2024-02-08 21:48:24 +00:00
JSR coutHGR2
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-12 18:28:22 +00:00
LDX idxFOE
2024-02-15 20:47:31 +00:00
STA tblFOEACTION,X
2024-02-15 18:56:59 +00:00
STA tblFOETEMPO,X
2024-02-09 22:22:41 +00:00
LDA #sprFOE
2024-02-08 21:48:24 +00:00
JSR coutHGR1
2024-02-09 22:22:41 +00:00
JSR prepareMELODY
2023-07-08 16:35:15 +00:00
HEX 027C03780474057000
2024-02-12 18:28:22 +00:00
LDX idxFOE
2024-02-15 18:56:59 +00:00
JMP nextFOE
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
*-------------------------------
* 8D - RETURN - DISPLAYS HIGH SCORE
*-------------------------------
displayHIGHSCORES
2024-02-18 22:14:46 +00:00
JSR showALLSCORES
2023-07-08 16:35:15 +00:00
LDX #$FF
LDY #$FF
LDA #$04
2024-02-14 21:41:47 +00:00
STA counter
2024-02-26 20:27:45 +00:00
2024-02-12 18:28:22 +00:00
L77B7 LDA fgINPUT
2024-02-08 21:48:24 +00:00
CMP #chrK
2023-07-08 16:35:15 +00:00
BEQ L77C7
2024-02-26 20:27:45 +00:00
cmp #chrJ
beq L77B9
cmp #chrP
bne L77C7
jsr read4PLAY
bmi L77D6
bvs L77D6
bvc L77C7
L77B9 LDAL BUTN1
2023-07-08 16:35:15 +00:00
BMI L77D6
2024-02-26 20:27:45 +00:00
LDAL BUTN0
2023-07-08 16:35:15 +00:00
BMI L77D6
2024-02-26 20:27:45 +00:00
* LDA KBD
2024-02-25 12:23:01 +00:00
L77C7 jsr checkKEY
2023-07-08 16:35:15 +00:00
BMI L77D6
DEX
BNE L77B7
DEY
BNE L77B7
2024-02-14 21:41:47 +00:00
DEC counter
2023-07-08 16:35:15 +00:00
BNE L77B7
2024-02-26 20:27:45 +00:00
* STA KBDSTROBE
2024-02-22 11:46:31 +00:00
* STA TXTPAGE1
2024-02-26 20:27:45 +00:00
L77D6 lda ptrSCREEN+2
2024-02-23 18:50:36 +00:00
sta ptrHGR1+2
lda #>oldHGR1
sta hgrPAGE
2024-02-08 21:48:24 +00:00
JSR clearHGR2
2024-02-18 22:14:46 +00:00
LDY #lvlHEIGHT-1
2024-02-08 21:48:24 +00:00
STY theY
2024-02-19 16:43:51 +00:00
L77E3
* LDA tblBOARDALLL,Y
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-15 18:56:59 +00:00
LDY #lvlWIDTH-1
2024-02-08 21:48:24 +00:00
STY theX
2024-02-14 20:46:43 +00:00
L77F1 LDA (ptrBBACK),Y
2024-02-18 22:14:46 +00:00
CMP #sprTRAP
2023-07-08 16:35:15 +00:00
BNE L77F9
2024-02-12 18:28:22 +00:00
LDA #sprWALL
2024-02-08 21:48:24 +00:00
L77F9 JSR coutHGR2
DEC theX
LDY theX
2023-07-08 16:35:15 +00:00
BPL L77F1
2024-02-08 21:48:24 +00:00
DEC theY
LDY theY
2023-07-08 16:35:15 +00:00
BPL L77E3
2024-02-12 18:28:22 +00:00
LDX #sizeHOLE-2
L780A STX tempINDEX
LDA tblHOLET,X
2023-07-08 16:35:15 +00:00
BEQ L7838
2024-02-12 18:28:22 +00:00
LDY tblHOLEY,X
2024-02-08 21:48:24 +00:00
STY theY
2024-02-12 18:28:22 +00:00
LDY tblHOLEX,X
2024-02-08 21:48:24 +00:00
STY theX
2023-07-08 16:35:15 +00:00
CMP #$15
BCC L7827
2024-02-12 18:28:22 +00:00
LDA #sprEMPTY
2024-02-08 21:48:24 +00:00
JSR coutHGR2
2023-07-08 16:35:15 +00:00
JMP L7838
L7827 CMP #$0B
BCC L7833
2024-02-18 22:14:46 +00:00
LDA #$37 ; rebuild wall step 1
2024-02-08 21:48:24 +00:00
JSR coutHGR2
2023-07-08 16:35:15 +00:00
JMP L7838
2024-02-18 22:14:46 +00:00
L7833 LDA #$38 ; rebuild wall step 2
2024-02-08 21:48:24 +00:00
JSR coutHGR2
2024-02-18 22:14:46 +00:00
2024-02-12 18:28:22 +00:00
L7838 LDX tempINDEX
2023-07-08 16:35:15 +00:00
DEX
BPL L780A
2024-02-08 21:48:24 +00:00
LDX nbFOE
2024-02-18 22:14:46 +00:00
BEQ L7868 ; skip foe n<>0
2024-02-15 18:56:59 +00:00
L7841 LDA tblFOETEMPO,X
2024-02-12 18:28:22 +00:00
STX tempINDEX
2023-07-08 16:35:15 +00:00
BEQ L7863
2024-02-09 22:22:41 +00:00
LDY tblFOEX,X
2024-02-08 21:48:24 +00:00
STY theX
2024-02-09 22:22:41 +00:00
LDY tblFOEY,X
2024-02-08 21:48:24 +00:00
STY theY
2023-07-08 16:35:15 +00:00
CMP #$14
BCS L7863
CMP #$0B
BCC L785E
2024-02-18 22:14:46 +00:00
LDA #$39 ; foe revives step 1
2023-07-08 16:35:15 +00:00
BNE L7860
2024-02-18 22:14:46 +00:00
L785E LDA #$3A ; foe revives step 2
2024-02-08 21:48:24 +00:00
L7860 JSR coutHGR2
2024-02-12 18:28:22 +00:00
L7863 LDX tempINDEX
2023-07-08 16:35:15 +00:00
DEX
BNE L7841
2024-02-18 22:14:46 +00:00
L7868 JMP getPLAYERINPUT
*-------------------------------
* SHOW ALL SCORES
*-------------------------------
2023-07-08 16:35:15 +00:00
2024-02-18 22:14:46 +00:00
showALLSCORES
2024-02-23 21:26:48 +00:00
JSR clearHGR1 ; was 2
LDA #>oldHGR1 ; was 2
STA activePAGE
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-08 21:48:24 +00:00
STA theX
STA theY
JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC " LODE RUNNER HIGH SCORES"8D8D8D
2024-02-23 22:10:50 +00:00
ASC " INITIALS LEVEL SCORE"8D
2023-07-08 16:35:15 +00:00
ASC " -------- ----- --------"8D00
2024-02-08 21:48:24 +00:00
LDA #$01 ; for x=1 to...10
2024-02-15 18:56:59 +00:00
STA tempX4
2023-07-08 16:35:15 +00:00
L78D4 CMP #$0A
BNE L78E5
LDA #$01
2024-02-08 21:48:24 +00:00
JSR outputCHAR
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-08 21:48:24 +00:00
JSR outputCHAR
2023-07-08 16:35:15 +00:00
JMP L78EF
2024-02-08 21:48:24 +00:00
L78E5 LDA #chrSPC
JSR printCHAR
2024-02-15 18:56:59 +00:00
LDA tempX4
2024-02-08 21:48:24 +00:00
JSR outputCHAR
L78EF JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC ". "00
2024-02-15 18:56:59 +00:00
LDX tempX4
2024-02-08 21:48:24 +00:00
LDY scoreoffset,X
2024-02-15 18:56:59 +00:00
STY tempY1
2024-02-08 21:48:24 +00:00
LDA scorebuf+$03,Y
2023-07-08 16:35:15 +00:00
BNE L7907
JMP L798C
2024-02-08 21:48:24 +00:00
* +0..+2 INITIALS
* +3 LEVEL
* +4..+7 SCORE
2024-02-15 18:56:59 +00:00
L7907 LDY tempY1
2024-02-08 21:48:24 +00:00
LDA scorebuf,Y
JSR printCHAR
2024-02-15 18:56:59 +00:00
LDY tempY1
2024-02-08 21:48:24 +00:00
LDA scorebuf+$01,Y
JSR printCHAR
2024-02-15 18:56:59 +00:00
LDY tempY1
2024-02-08 21:48:24 +00:00
LDA scorebuf+$02,Y
JSR printCHAR
JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC " "00
2024-02-15 18:56:59 +00:00
LDY tempY1
2024-02-08 21:48:24 +00:00
LDA scorebuf+$03,Y
JSR hex2dec
LDA theCENTAINE
JSR outputCHAR
LDA theDIZAINE
JSR outputCHAR
LDA theUNITE
JSR outputCHAR
JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC " "00
2024-02-15 18:56:59 +00:00
LDY tempY1
2024-02-08 21:48:24 +00:00
LDA scorebuf+$04,Y
JSR bcd2dec
LDA theDIZAINE
JSR outputCHAR
LDA theUNITE
JSR outputCHAR
2024-02-15 18:56:59 +00:00
LDY tempY1
2024-02-08 21:48:24 +00:00
LDA scorebuf+$05,Y
JSR bcd2dec
LDA theDIZAINE
JSR outputCHAR
LDA theUNITE
JSR outputCHAR
2024-02-15 18:56:59 +00:00
LDY tempY1
2024-02-08 21:48:24 +00:00
LDA scorebuf+$06,Y
JSR bcd2dec
LDA theDIZAINE
JSR outputCHAR
LDA theUNITE
JSR outputCHAR
2024-02-15 18:56:59 +00:00
LDY tempY1
2024-02-08 21:48:24 +00:00
LDA scorebuf+$07,Y
JSR bcd2dec
LDA theDIZAINE
JSR outputCHAR
LDA theUNITE
JSR outputCHAR
2023-07-08 16:35:15 +00:00
L798C JSR L7B7D
2024-02-15 18:56:59 +00:00
INC tempX4
LDA tempX4
2023-07-08 16:35:15 +00:00
CMP #$0B
BCS L799A
JMP L78D4
2024-02-22 11:46:31 +00:00
L799A
* STA TXTPAGE2
LDA #>oldHGR1
2024-02-08 21:48:24 +00:00
STA activePAGE
2023-07-08 16:35:15 +00:00
RTS
2024-02-08 21:48:24 +00:00
scoreoffset HEX 0000081018202830384048 ; offset of each score
2023-07-08 16:35:15 +00:00
2024-02-14 20:46:43 +00:00
*-------------------------------
* CLEAR PAGES
*-------------------------------
clearHGRPAGES
JSR clearHGR1
2024-02-08 21:48:24 +00:00
JSR clearHGR2
2023-07-08 16:35:15 +00:00
*-------------------------------
* DRAW GAME FRAME
*-------------------------------
2024-02-12 18:28:22 +00:00
drawINFOBAR
2024-02-22 11:46:31 +00:00
* LDY #$27 ; met la barre bleue
2024-02-08 21:48:24 +00:00
LDA activePAGE
2024-02-22 11:46:31 +00:00
CMP #>oldHGR2
2023-07-08 16:35:15 +00:00
BEQ L79DD
2024-02-08 21:48:24 +00:00
2024-02-22 11:46:31 +00:00
lda ptrSCREEN+2
ldx ptrSCREEN+1
ldy ptrSCREEN
bra dib2
L79DD lda #^HGR2
ldx #>HGR2
ldy #<HGR2
dib2 sta ptrDATA+2
stx ptrDATA+1
sty ptrDATA
rep #$30
ldx #160*4 ; 4 lines
ldy #$6e00 ; ligne 179
lda #$4444 ; bleu
]lp sta [ptrDATA],y
iny
iny
dex
dex
2024-02-23 22:10:50 +00:00
bne ]lp
2024-02-22 11:46:31 +00:00
sep #$30
*L79BB LDA #$AA ; ligne 176
* STA $2350,Y
* STA $2750,Y
* STA $2B50,Y
* STA $2F50,Y
* DEY
* LDA #$D5
* STA $2350,Y
* STA $2750,Y
* STA $2B50,Y
* STA $2F50,Y
* DEY
* BPL L79BB
* BMI L79FD
*
*L79DD LDA #$AA ; pareil mais sur HGR2
* STA $4350,Y
* STA $4750,Y
* STA $4B50,Y
* STA $4F50,Y
* DEY
* LDA #$D5
* STA $4350,Y
* STA $4750,Y
* STA $4B50,Y
* STA $4F50,Y
* DEY
* BPL L79DD
2023-07-08 16:35:15 +00:00
L79FD LDA #$10
2024-02-08 21:48:24 +00:00
STA theY
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-08 21:48:24 +00:00
STA theX
JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC "SCORE MEN LEVEL "00
2024-02-08 21:48:24 +00:00
JSR printMEN
JSR printLEVEL
2024-02-15 18:56:59 +00:00
LDA #$00 ; score de 0
2023-07-08 16:35:15 +00:00
TAY
2024-02-08 21:48:24 +00:00
JMP printSCORE
2023-07-08 16:35:15 +00:00
2024-02-08 21:48:24 +00:00
*-------------------------------
* SET HGR POINTER
*-------------------------------
setHGRPOINTER
LDA xhgr,Y
2024-02-14 20:46:43 +00:00
STA ptrHGR1
2024-02-08 21:48:24 +00:00
LDA yhgr,Y
2024-02-22 11:46:31 +00:00
* ORA hgrPAGE
2024-02-14 20:46:43 +00:00
STA ptrHGR1+1
2024-02-22 11:46:31 +00:00
lda hgrPAGE ; logo
cmp #>oldHGR2 ; set bank
beq shp2
lda ptrSCREEN+2 ; HGR1 = ptrSCREEN+2
sta ptrHGR1+2
rts
shp2 lda #^HGR2 ; HGR2 = ^HGR2
2024-02-19 16:43:51 +00:00
sta ptrHGR1+2
2023-07-08 16:35:15 +00:00
RTS
2024-02-08 21:48:24 +00:00
*-------------------------------
* SET HGR POINTERS
*-------------------------------
setHGRPOINTERS
2024-02-22 11:46:31 +00:00
LDA xhgr,Y ; low
2024-02-14 20:46:43 +00:00
STA ptrHGR1
STA ptrHGR2
2024-02-22 11:46:31 +00:00
LDA yhgr,Y ; high
* ORA #>oldHGR1
2024-02-14 20:46:43 +00:00
STA ptrHGR1+1
2024-02-22 11:46:31 +00:00
* EOR #$60
2024-02-14 20:46:43 +00:00
STA ptrHGR2+1
2024-02-22 11:46:31 +00:00
lda ptrSCREEN+2 ; bank
2024-02-19 16:43:51 +00:00
sta ptrHGR1+2
2024-02-22 11:46:31 +00:00
lda #^HGR2
2024-02-19 16:43:51 +00:00
sta ptrHGR2+2
2023-07-08 16:35:15 +00:00
RTS
*-------------------------------
* CLEAR HGR1
*-------------------------------
2024-02-22 11:46:31 +00:00
clearHGR1
lda ptrSCREEN+2
ldx ptrSCREEN+1
ldy ptrSCREEN
bra L7A5B
2023-07-08 16:35:15 +00:00
*-------------------------------
* CLEAR HGR2
*-------------------------------
2024-02-22 11:46:31 +00:00
clearHGR2
lda #^HGR2
ldx #>HGR2
ldy #<HGR2
2024-02-08 21:48:24 +00:00
*--- clear now
2023-07-08 16:35:15 +00:00
2024-02-24 20:36:24 +00:00
L7A5B sta ptrDATA+2 ; save address
2024-02-22 11:46:31 +00:00
stx ptrDATA+1
sty ptrDATA
2024-02-24 20:36:24 +00:00
2024-02-22 11:46:31 +00:00
rep #$30
ldy #$7cfe ; everything but SCB and Palette
lda #0
]lp sta [ptrDATA],y
dey
dey
bpl ]lp
sep #$30
2023-07-08 16:35:15 +00:00
RTS
2024-02-08 21:48:24 +00:00
*-------------------------------
* PRINT MEN
*-------------------------------
printMEN LDA theMEN ; print number of men
2023-07-08 16:35:15 +00:00
LDX #$10
2024-02-08 21:48:24 +00:00
L7A74 STX theX ; show byte2dec
JSR hex2dec
2023-07-08 16:35:15 +00:00
LDA #$10 ; print three values (0-255)
2024-02-08 21:48:24 +00:00
STA theY
LDA theCENTAINE
JSR outputCHAR
LDA theDIZAINE
JSR outputCHAR
LDA theUNITE
JMP outputCHAR
*-------------------------------
* PRINT LEVEL
*-------------------------------
2024-02-14 20:46:43 +00:00
printLEVEL LDA theLEVEL ; print level
LDX #$19 ; column offset
2023-07-08 16:35:15 +00:00
BNE L7A74
2024-02-08 21:48:24 +00:00
*-------------------------------
* ADD & PRINT SCORE
*-------------------------------
2024-02-14 20:46:43 +00:00
printSCORE CLC
2023-07-08 16:35:15 +00:00
SED
2024-02-08 21:48:24 +00:00
ADC theSCORE
STA theSCORE
2023-07-08 16:35:15 +00:00
TYA
2024-02-08 21:48:24 +00:00
ADC theSCORE+1
STA theSCORE+1
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-08 21:48:24 +00:00
ADC theSCORE+2
STA theSCORE+2
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-08 21:48:24 +00:00
ADC theSCORE+3
STA theSCORE+3
2023-07-08 16:35:15 +00:00
CLD
2024-02-08 21:48:24 +00:00
2023-07-08 16:35:15 +00:00
LDA #$05
2024-02-08 21:48:24 +00:00
STA theX
2023-07-08 16:35:15 +00:00
LDA #$10
2024-02-08 21:48:24 +00:00
STA theY
LDA theSCORE+3
JSR bcd2dec
LDA theUNITE
JSR outputCHAR
LDA theSCORE+2
JSR bcd2dec
LDA theDIZAINE
JSR outputCHAR
LDA theUNITE
JSR outputCHAR
LDA theSCORE+1
JSR bcd2dec
LDA theDIZAINE
JSR outputCHAR
LDA theUNITE
JSR outputCHAR
LDA theSCORE
JSR bcd2dec
LDA theDIZAINE
JSR outputCHAR
LDA theUNITE
JMP outputCHAR
2024-02-14 20:46:43 +00:00
*-------------------------------
* BCD TO DECIMAL CONVERSION
*-------------------------------
2024-02-08 21:48:24 +00:00
bcd2dec STA theDIZAINE
2023-07-08 16:35:15 +00:00
AND #$0F
2024-02-08 21:48:24 +00:00
STA theUNITE ; unit<69>
LDA theDIZAINE
2023-07-08 16:35:15 +00:00
LSR
LSR
LSR
LSR
2024-02-08 21:48:24 +00:00
STA theDIZAINE ; dizaine
2023-07-08 16:35:15 +00:00
RTS
2024-02-14 20:46:43 +00:00
*-------------------------------
* HEX TO DECIMAL CONVERSION
*-------------------------------
2024-02-08 21:48:24 +00:00
hex2dec LDX #$00
STX theDIZAINE
STX theCENTAINE ; centaine
2023-07-08 16:35:15 +00:00
L7AFE CMP #100
BCC L7B08
2024-02-08 21:48:24 +00:00
INC theCENTAINE
2023-07-08 16:35:15 +00:00
SBC #100
BNE L7AFE
L7B08 CMP #10
BCC L7B12
2024-02-08 21:48:24 +00:00
INC theDIZAINE
2023-07-08 16:35:15 +00:00
SBC #10
BNE L7B08
2024-02-08 21:48:24 +00:00
L7B12 STA theUNITE
2023-07-08 16:35:15 +00:00
RTS
2024-02-14 20:46:43 +00:00
*-------------------------------
* PRINT A CHARACTER
*-------------------------------
2024-02-08 21:48:24 +00:00
outputCHAR CLC ; print a char
2024-02-14 20:46:43 +00:00
ADC #spr0
2024-02-08 21:48:24 +00:00
LDX activePAGE
2024-02-22 11:46:31 +00:00
CPX #>oldHGR2
2023-07-08 16:35:15 +00:00
BEQ L7B24
2024-02-08 21:48:24 +00:00
JSR coutHGR1 ; print HGR1
INC theX
2023-07-08 16:35:15 +00:00
RTS
2024-02-08 21:48:24 +00:00
L7B24 JSR coutHGR2 ; print HGR2
INC theX
2023-07-08 16:35:15 +00:00
RTS
2024-02-14 20:46:43 +00:00
*-------------------------------
* FILTER CHARACTER
*-------------------------------
filterCHAR CMP #"A"
2023-07-08 16:35:15 +00:00
BCC L7B32
CMP #"Z"+1
BCC L7B60
L7B32 LDX #$7C
2024-02-14 20:46:43 +00:00
CMP #" " ; 7C = 00
2023-07-08 16:35:15 +00:00
BEQ L7B5F
LDX #$DB
2024-02-14 20:46:43 +00:00
CMP #">" ; DB = 5F
2023-07-08 16:35:15 +00:00
BEQ L7B5F
INX
2024-02-14 20:46:43 +00:00
CMP #"." ; DC = 60
2023-07-08 16:35:15 +00:00
BEQ L7B5F
INX
2024-02-14 20:46:43 +00:00
CMP #"(" ; DD = 61
2023-07-08 16:35:15 +00:00
BEQ L7B5F
INX
2024-02-14 20:46:43 +00:00
CMP #")" ; DE = 62
2023-07-08 16:35:15 +00:00
BEQ L7B5F
INX
2024-02-14 20:46:43 +00:00
CMP #"/" ; DF = 63
2023-07-08 16:35:15 +00:00
BEQ L7B5F
INX
2024-02-14 20:46:43 +00:00
CMP #"-" ; E0 = 64
2023-07-08 16:35:15 +00:00
BEQ L7B5F
INX
2024-02-14 20:46:43 +00:00
CMP #"<" ; E1 = 65
2023-07-08 16:35:15 +00:00
BEQ L7B5F
2024-02-14 20:46:43 +00:00
LDA #$10 ; The still Lode Runner
2023-07-08 16:35:15 +00:00
RTS
L7B5F TXA ; calculate offset
L7B60 SEC
SBC #$7C
RTS
2024-02-08 21:48:24 +00:00
*-----------------------------------
* OUTPUT A CHARACTER
*-----------------------------------
printCHAR CMP #chrRET
2023-07-08 16:35:15 +00:00
BEQ L7B7D
2024-02-14 20:46:43 +00:00
JSR filterCHAR
2024-02-08 21:48:24 +00:00
LDX activePAGE
2024-02-22 11:46:31 +00:00
CPX #>oldHGR2
2023-07-08 16:35:15 +00:00
BEQ L7B77
2024-02-08 21:48:24 +00:00
JSR coutHGR1 ; output in HGR1
INC theX
2023-07-08 16:35:15 +00:00
RTS
2024-02-08 21:48:24 +00:00
L7B77 JSR coutHGR2 ; output in HGR2
INC theX
2023-07-08 16:35:15 +00:00
RTS
2024-02-08 21:48:24 +00:00
L7B7D INC theY ; next line
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-08 21:48:24 +00:00
STA theX
2023-07-08 16:35:15 +00:00
RTS
2024-02-08 21:48:24 +00:00
*-----------------------------------
2023-07-08 16:35:15 +00:00
* CTRL-E - LEVEL EDITOR
2024-02-08 21:48:24 +00:00
*-----------------------------------
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
enterEDITOR LDA #$00
2024-02-08 21:48:24 +00:00
STA theSCORE
STA theSCORE+1
STA theSCORE+2
STA theSCORE+3
2023-07-08 16:35:15 +00:00
LDA #$05
2024-02-08 21:48:24 +00:00
STA theMEN
2024-02-13 08:09:27 +00:00
STA fgDEMO
2024-02-12 18:28:22 +00:00
LDA fgINPUT ; save interface mode
2023-07-08 16:35:15 +00:00
STA L7C76+1
2024-02-08 21:48:24 +00:00
LDA #chrK ; force keyboard in editor
2024-02-12 18:28:22 +00:00
STA fgINPUT
2024-02-22 11:46:31 +00:00
* STA TXTPAGE1
2024-02-23 18:50:36 +00:00
lda ptrSCREEN+2
sta ptrHGR1+2
lda #>oldHGR1
sta hgrPAGE
2024-02-08 21:48:24 +00:00
LDA intLEVEL ; check level
2023-07-08 16:35:15 +00:00
CMP #maxLEVEL
2024-02-14 20:46:43 +00:00
BCC editMAIN
2023-07-08 16:35:15 +00:00
LDA #$00 ; start at 0 if > 149
2024-02-08 21:48:24 +00:00
STA intLEVEL
2023-07-08 16:35:15 +00:00
2024-02-14 20:46:43 +00:00
editMAIN JSR clearHGR1 ; clear HGR1
2024-02-22 11:46:31 +00:00
LDA #>oldHGR1
2024-02-08 21:48:24 +00:00
STA activePAGE
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-08 21:48:24 +00:00
STA theX
STA theY
JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC " LODE RUNNER BOARD EDITOR"8D
ASC "----------------------------"8D
ASC " <ESC> ABORTS ANY COMMAND"8D00
2024-02-14 20:46:43 +00:00
editLOOP LDA theY ; are we at the
2023-07-08 16:35:15 +00:00
CMP #$09 ; end of the screen?
2024-02-14 20:46:43 +00:00
BCS editMAIN ; yes, bottom line
2023-07-08 16:35:15 +00:00
2024-02-08 21:48:24 +00:00
JSR printSTRING ; no, show command
2023-07-08 16:35:15 +00:00
ASC 8D
ASC "COMMAND>"00
2024-02-14 20:46:43 +00:00
JSR editWAITKEY ; wait for key
2023-07-08 16:35:15 +00:00
LDX #$00
2024-02-14 20:46:43 +00:00
L7C2E LDY tblEDITKEY,X ; authorized key?
BEQ editNEXT
CMP tblEDITKEY,X
2023-07-08 16:35:15 +00:00
BEQ L7C41
INX
BNE L7C2E
2024-02-14 20:46:43 +00:00
editNEXT JSR doBEEP ; beep
JMP editLOOP ; loop
2023-07-08 16:35:15 +00:00
L7C41 TXA ; yes, we know the key
ASL ; jump to the feature
TAX ; and handle it
2024-02-14 20:46:43 +00:00
LDA tblEDITADD+1,X
2023-07-08 16:35:15 +00:00
PHA
2024-02-14 20:46:43 +00:00
LDA tblEDITADD,X
2023-07-08 16:35:15 +00:00
PHA
RTS
2024-02-26 20:27:45 +00:00
tblEDITKEY ASC "PCEMISORQ"00
2023-07-08 16:35:15 +00:00
2024-02-14 20:46:43 +00:00
tblEDITADD DA editPLAY-1 ; Play level
2024-02-13 08:09:27 +00:00
DA editCLEAR-1 ; Clear level
DA editEDIT-1 ; Edit level
DA editMOVE-1 ; Move level
DA editINIT-1 ; Initialize
2024-02-25 20:17:48 +00:00
DA editCLEARSCORE-1 ; Clear Score file
da editOPEN-1 ; Open levels
2024-02-26 20:27:45 +00:00
da editRESTART-1 ; Restart gale
da editBYE-1 ; Quit game
2023-07-08 16:35:15 +00:00
*-------------------------------
* P - PLAY LEVEL
*-------------------------------
2024-02-13 08:09:27 +00:00
editPLAY JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC 8D
ASC ">>PLAY LEVEL"00
2024-02-13 08:09:27 +00:00
JSR inputLEVEL
2023-07-08 16:35:15 +00:00
BCS L7C8B
L7C76 LDA #$00
2024-02-12 18:28:22 +00:00
STA fgINPUT
2023-07-08 16:35:15 +00:00
LDA #$03
2024-02-13 08:09:27 +00:00
STA fgDEMO
2023-07-08 16:35:15 +00:00
LDA #$01
2024-02-15 18:56:59 +00:00
STA fgGOODSTART
LDA intLEVEL ; do we start at level 1?
2023-07-08 16:35:15 +00:00
BEQ L7C88
2024-02-15 18:56:59 +00:00
LSR fgGOODSTART ; no, we cannot change scores
2023-07-08 16:35:15 +00:00
L7C88 JMP L6056
2024-02-14 20:46:43 +00:00
L7C8B JMP editNEXT
2023-07-08 16:35:15 +00:00
*-------------------------------
* C - CLEAR LEVEL
*-------------------------------
2024-02-13 08:09:27 +00:00
editCLEAR JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC 8D
ASC ">>CLEAR LEVEL"00
2024-02-13 08:09:27 +00:00
JSR inputLEVEL
2023-07-08 16:35:15 +00:00
BCS L7CB9
2024-02-18 22:14:46 +00:00
JSR checkDISK
2023-07-08 16:35:15 +00:00
LDY #$00
TYA
2024-02-09 22:22:41 +00:00
L7CAB STA levelDISK,Y
2023-07-08 16:35:15 +00:00
INY
BNE L7CAB
2024-02-09 22:22:41 +00:00
LDA #$02 ; write
2024-02-08 21:48:24 +00:00
JSR diskLEVEL
2024-02-14 20:46:43 +00:00
JMP editLOOP
L7CB9 JMP editNEXT
2023-07-08 16:35:15 +00:00
*-------------------------------
* E - EDIT LEVEL
*-------------------------------
2024-02-13 08:09:27 +00:00
editEDIT JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC 8D
ASC ">>EDIT LEVEL"00
2024-02-13 08:09:27 +00:00
JSR inputLEVEL ; is level valid?
2023-07-08 16:35:15 +00:00
BCS L7CD5 ; no
2024-02-13 08:09:27 +00:00
JMP editEDITLEVEL ; yes, handle edit
2024-02-14 20:46:43 +00:00
L7CD5 JMP editNEXT
2023-07-08 16:35:15 +00:00
*-------------------------------
* M - MOVE LEVEL
*-------------------------------
2024-02-20 20:37:01 +00:00
editMOVE JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC 8D
ASC ">>MOVE LEVEL"00
2024-02-13 08:09:27 +00:00
JSR inputLEVEL
2023-07-08 16:35:15 +00:00
BCS L7D5A
STY L824F
2024-02-08 21:48:24 +00:00
JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC " TO LEVEL"00
2024-02-13 08:09:27 +00:00
JSR inputLEVEL
2023-07-08 16:35:15 +00:00
BCS L7D5A
STY L8250
2024-02-20 20:37:01 +00:00
* JSR printSTRING
* ASC 8D
* ASC " SOURCE DISKETTE"00
* JSR editWAITKEY
* JSR checkDISK
* LDA L824F
* STA intLEVEL
* LDA #$01 ; read
* JSR diskLEVEL
* JSR printSTRING
* ASC 8D
* ASC " DESTINATION DISKETTE"00
* JSR editWAITKEY
* JSR checkDISK
* LDA L8250
* STA intLEVEL
* LDA #$02 ; write
* JSR diskLEVEL
rep #$30
pea ^ptrLEVELS ; set source level
lda L824F
and #$ff
xba
2024-02-22 11:46:31 +00:00
clc
adc #ptrLEVELS
2024-02-20 20:37:01 +00:00
pha
pea ^ptrLEVELS ; set destination level
lda L8250
and #$ff
xba
2024-02-22 11:46:31 +00:00
clc
adc #ptrLEVELS
2024-02-20 20:37:01 +00:00
pha
PushLong #256 ; set length
_BlockMove
2024-02-26 20:27:45 +00:00
jsr saveLEVELS ; save levels and return 8-bit
2024-02-19 16:43:51 +00:00
2024-02-20 20:37:01 +00:00
mx %11
2024-02-26 20:27:45 +00:00
JMP editLOOP
L7D5A JMP editNEXT
2024-02-20 20:37:01 +00:00
*-------------------------------
* I - INITIALIZE DISKETTE => CLEAR LEVELS
*-------------------------------
2023-07-08 16:35:15 +00:00
2024-02-25 20:17:48 +00:00
editINIT JSR printSTRING
ASC 8D
ASC ">>INITIALIZE"8D
2024-02-20 20:37:01 +00:00
* ASC " THIS FORMATS THE DISKETTE"8D
2024-02-25 20:17:48 +00:00
asc " THIS CREATES A NEW FILE"8d
ASC " FOR USER CREATED LEVELS."8D8d
2024-02-20 20:37:01 +00:00
* ASC " (CAUTION. IT ERASES THE"8D
* ASC " ENTIRE DISKETTE FIRST)"8D8D
2024-02-25 20:17:48 +00:00
ASC " ARE YOU SURE (Y/N) "00
JSR editWAITKEY
CMP #chrY
BNE L7E72
jsr loadLEVELS9 ; clear all
jsr doSAVE ; save the file
bcs L7E72
2024-02-20 20:37:01 +00:00
* NOP ; NOP
* NOP
* NOP
* NOP
* NOP
* NOP
* NOP
* NOP
* NOP
* NOP
* NOP
* NOP
* NOP
* NOP
* NOP
* LDA intLEVEL
* PHA
* LDA #$04 ; Init command
* JSR diskLEVEL
*
* LDA #<boot ; Save T0/S0
* STA LB7F0
* LDA #>boot
* STA LB7F0+1
* LDA #$00
* STA LB7ED
* STA LB7EC
* LDA #$02
* STA LB7F4
* JSR diskRWTS
* LDA #$E0
* STA intLEVEL
* LDA #$01
* JSR diskLEVEL
* LDY #$37
*L7E33 LDA L8251,Y
* STA levelDISK,Y
* DEY
* BPL L7E33
* LDA #$02
* JSR diskLEVEL
* LDA #$EF
* STA intLEVEL
* LDA #$01
* JSR diskLEVEL
* LDY #$20
*L7E4C LDA L8289,Y
* STA levelDISK+$B,Y
* DEY
* BPL L7E4C
* LDA #$02
* JSR diskLEVEL
* LDA #$01
* JSR readSCORE
* LDY #$0A
*L7E61 LDA L63A8,Y
* STA scorebuf+$F4,Y
* DEY
* BPL L7E61
* LDA #$02
* JSR readSCORE
* PLA
* STA intLEVEL
2024-02-25 20:17:48 +00:00
L7E72 JMP editMAIN ; was editLOOP
2023-07-08 16:35:15 +00:00
*-------------------------------
* C - CLEAR SCORE FILE
*-------------------------------
2024-02-13 08:09:27 +00:00
editCLEARSCORE
JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC 8D
ASC ">>CLEAR SCORE FILE"8D
ASC " THIS CLEARS THE HIGH"8D
ASC " SCORE FILE OF ALL"8D
ASC " ENTRIES."8D8D
ASC " ARE YOU SURE (Y/N) "00
2024-02-14 20:46:43 +00:00
JSR editWAITKEY
2024-02-08 21:48:24 +00:00
CMP #chrY
2023-07-08 16:35:15 +00:00
BNE L7EFE
LDA #$01
2024-02-08 21:48:24 +00:00
JSR readSCORE
2023-07-08 16:35:15 +00:00
CMP #$00
BNE L7EEF
2024-02-08 21:48:24 +00:00
JSR tellNODATADISK
2024-02-14 20:46:43 +00:00
JMP editMAIN
2023-07-08 16:35:15 +00:00
L7EEF LDY #$4F ; clear score file
LDA #$00
2024-02-08 21:48:24 +00:00
L7EF3 STA scorebuf,Y
2023-07-08 16:35:15 +00:00
DEY
BPL L7EF3
LDA #$02
2024-02-08 21:48:24 +00:00
JSR readSCORE ; write score file
2024-02-14 20:46:43 +00:00
L7EFE JMP editLOOP
2023-07-08 16:35:15 +00:00
2024-02-25 20:17:48 +00:00
*-------------------------------
* O - OPEN A LEVELS FILE
*-------------------------------
editOPEN jsr editSAVECHANGES
2024-02-26 20:27:45 +00:00
jsr printSTRING
asc 8D
asc ">>LOAD LEVEL FILE"00
jsr doLOAD ; load a levels file?
bcs editOPEN99
jmp editMAIN ; yes
editOPEN99 jmp editLOOP ; no
*-------------------------------
* R - RESTART THE GAME
*-------------------------------
editRESTART jsr editSAVECHANGES
jsr printSTRING
asc ">>RESTART GAME"8D
ASC " THIS RESTARTS THE GAME"8D8D
ASC " ARE YOU SURE (Y/N) "00
JSR editWAITKEY
CMP #chrY
BNE editRES99
jmp showTITLEPAGE
editRES99 jmp editLOOP
*-------------------------------
* Q - QUIT THE GAME
*-------------------------------
editBYE jsr editSAVECHANGES
jsr printSTRING
asc ">>QUIT GAME"8D
ASC " THIS QUITS THE GAME"8D8D
ASC " ARE YOU SURE (Y/N) "00
JSR editWAITKEY
CMP #chrY
BNE editBYE99
jmp meQUIT
editBYE99 jmp editLOOP
2024-02-25 20:17:48 +00:00
2023-07-08 16:35:15 +00:00
*-------------------------------
* EDIT THE LEVEL
*-------------------------------
2024-02-13 08:09:27 +00:00
editEDITLEVEL
2024-02-25 12:23:01 +00:00
JSR clearHGR1 ; was 2
LDA #>oldHGR1 ; was 2
2024-02-08 21:48:24 +00:00
STA activePAGE
2024-02-12 18:28:22 +00:00
JSR drawINFOBAR ; show frame
2024-02-25 12:23:01 +00:00
* LDA #>oldHGR1
* STA activePAGE
2024-02-18 22:14:46 +00:00
JSR checkDISK ; check diskette (master or data disk)
2023-07-08 16:35:15 +00:00
LDX #$01
2024-02-13 08:09:27 +00:00
STX fgCHANGE
2024-02-09 22:22:41 +00:00
DEX ; mode edit
2024-02-13 08:09:27 +00:00
JSR prepareLEVEL
2023-07-08 16:35:15 +00:00
BCC L7F1F
2024-02-14 20:46:43 +00:00
JMP editNEXT
2023-07-08 16:35:15 +00:00
L7F1F LDA #$00 ; cursor is at 0,0
2024-02-08 21:48:24 +00:00
STA theX
STA theY
2024-02-13 08:09:27 +00:00
L7F25 JSR blinkATXY ; wait for key
2023-07-08 16:35:15 +00:00
CMP #"9"+1
BCS L7F54 ; no sprite
CMP #"0" ; means check commands
BCC L7F54
AND #$0F
2024-02-08 21:48:24 +00:00
STA theA ; save key
LDY theY ; get Y
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y ; get line address
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-08 21:48:24 +00:00
LDY theX ; get X
LDA theA ; get sprite
2024-02-14 20:46:43 +00:00
EOR (ptrBOARD),Y ; same as before?
2023-07-08 16:35:15 +00:00
BEQ L7F4A ; yes
2024-02-13 08:09:27 +00:00
LSR fgCHANGE ; no, tell there's a change
2024-02-08 21:48:24 +00:00
L7F4A LDA theA ; get sprite
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y ; save it
2024-02-08 21:48:24 +00:00
JSR coutHGR1 ; print sprite
2023-07-08 16:35:15 +00:00
JMP L7F25 ; loop
2024-02-25 12:23:01 +00:00
L7F54 and #maskUPPER ; for lowercase support
STA theA ; same key
2023-07-08 16:35:15 +00:00
LDY #$FF
L7F58 INY
2024-02-13 08:09:27 +00:00
LDA tblEDITKEYS,Y ; is that a command?
2023-07-08 16:35:15 +00:00
BEQ L7F6E
2024-02-08 21:48:24 +00:00
CMP theA ; same as our key?
2023-07-08 16:35:15 +00:00
BNE L7F58
TYA ; yes, jump
ASL
TAY
2024-02-13 08:09:27 +00:00
LDA tblEDITCODE+1,Y
2023-07-08 16:35:15 +00:00
PHA
2024-02-13 08:09:27 +00:00
LDA tblEDITCODE,Y
2023-07-08 16:35:15 +00:00
PHA
RTS
2024-02-09 22:22:41 +00:00
L7F6E JSR doBEEP ; beep
2023-07-08 16:35:15 +00:00
JMP L7F25 ; loop
*-------------------------------
* I - MOVE CURSOR UP
*-------------------------------
2024-02-13 08:09:27 +00:00
editUP LDA theY
2023-07-08 16:35:15 +00:00
BEQ L7F6E
2024-02-08 21:48:24 +00:00
DEC theY
2023-07-08 16:35:15 +00:00
BPL L7F25
*-------------------------------
* J - MOVE CURSOR LEFT
*-------------------------------
2024-02-13 08:09:27 +00:00
editLEFT LDA theX
2023-07-08 16:35:15 +00:00
BEQ L7F6E
2024-02-08 21:48:24 +00:00
DEC theX
2023-07-08 16:35:15 +00:00
BPL L7F25
*-------------------------------
* K - MOVE CURSOR RIGHT
*-------------------------------
2024-02-13 08:09:27 +00:00
editRIGHT LDA theX
2024-02-08 21:48:24 +00:00
CMP #lvlWIDTH-1
2023-07-08 16:35:15 +00:00
BCS L7F6E
2024-02-08 21:48:24 +00:00
INC theX
2023-07-08 16:35:15 +00:00
BNE L7F25
*-------------------------------
* M - MOVE CURSOR DOWN
*-------------------------------
2024-02-13 08:09:27 +00:00
editDOWN LDA theY
2024-02-08 21:48:24 +00:00
CMP #lvlHEIGHT-1
2023-07-08 16:35:15 +00:00
BCS L7F6E
2024-02-08 21:48:24 +00:00
INC theY
2023-07-08 16:35:15 +00:00
BNE L7F25
2024-02-08 21:48:24 +00:00
*-------------------------------
* SAVE THE LEVEL
*-------------------------------
saveLEVEL
LDA theY ; save parms
2023-07-08 16:35:15 +00:00
PHA
2024-02-08 21:48:24 +00:00
LDA theX
2023-07-08 16:35:15 +00:00
PHA
2024-02-08 21:48:24 +00:00
LDA #$01 ; check disk
JSR readSCORE
2023-07-08 16:35:15 +00:00
CMP #$00
BNE L7FAD
2024-02-08 21:48:24 +00:00
JSR tellNODATADISK
2023-07-08 16:35:15 +00:00
JMP L7FC5
L7FAD CMP #$01
BNE L7FB7
2024-02-08 21:48:24 +00:00
JSR tellMASTERDISK
2023-07-08 16:35:15 +00:00
JMP L7FC5
2024-02-08 21:48:24 +00:00
L7FB7 JSR encodeLEVEL ; prepare the level & save it
2023-07-08 16:35:15 +00:00
PLA
2024-02-08 21:48:24 +00:00
STA theX
2023-07-08 16:35:15 +00:00
PLA
2024-02-08 21:48:24 +00:00
STA theY
2023-07-08 16:35:15 +00:00
LDA #$01
2024-02-13 08:09:27 +00:00
STA fgCHANGE
2024-02-08 21:48:24 +00:00
RTS ; and return
2023-07-08 16:35:15 +00:00
L7FC5 LDA #$00
2024-02-08 21:48:24 +00:00
STA theX
STA theY
2023-07-08 16:35:15 +00:00
JMP L7F25
*-------------------------------
* CTRL-S - SAVE YOUR GAME
*-------------------------------
2024-02-13 08:09:27 +00:00
editSAVE JSR saveLEVEL
2023-07-08 16:35:15 +00:00
JMP L7F25
*-------------------------------
* CTRL-U - NEXT LEVEL
*-------------------------------
2024-02-13 08:09:27 +00:00
editLOAD LDA intLEVEL
2023-07-08 16:35:15 +00:00
CMP #maxLEVEL-1 ; 150-1
L7FD8 BEQ L7F6E
2024-02-13 08:09:27 +00:00
JSR editSAVECHANGES
2024-02-08 21:48:24 +00:00
INC intLEVEL
INC theLEVEL
2024-02-13 08:09:27 +00:00
JMP editEDITLEVEL
2023-07-08 16:35:15 +00:00
*-------------------------------
* CTRL-H - PREVIOUS LEVEL
*-------------------------------
2024-02-13 08:09:27 +00:00
editPREVIOUS
LDA intLEVEL
2023-07-08 16:35:15 +00:00
BEQ L7FD8
2024-02-13 08:09:27 +00:00
JSR editSAVECHANGES
2024-02-08 21:48:24 +00:00
DEC theLEVEL
DEC intLEVEL
2024-02-13 08:09:27 +00:00
JMP editEDITLEVEL
2023-07-08 16:35:15 +00:00
*-------------------------------
* CTRL-Q - QUIT GAME GENERATOR
*-------------------------------
2024-02-13 08:09:27 +00:00
editQUIT JSR editSAVECHANGES
2024-02-14 20:46:43 +00:00
JMP editMAIN
2023-07-08 16:35:15 +00:00
2024-02-13 08:09:27 +00:00
*-------------------------------
* WANT TO SAVE CHANGES
*-------------------------------
editSAVECHANGES
LDA fgCHANGE
2023-07-08 16:35:15 +00:00
BNE L8075
2024-02-25 12:23:01 +00:00
JSR clearHGR1 ; was 2
LDA #>oldHGR1 ; was 2
2024-02-08 21:48:24 +00:00
STA activePAGE
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-08 21:48:24 +00:00
STA theX
STA theY
JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC "LEVEL HAS BEEN CHANGED BUT"8D
ASC "NOT SAVED. DO YOU WISH TO"8D
ASC "SAVE MODIFIED LEVEL (Y/N) "00
2024-02-09 22:22:41 +00:00
JSR doBEEP
2024-02-22 11:46:31 +00:00
* STA TXTPAGE2
2023-07-08 16:35:15 +00:00
L8062 LDA #$00
JSR L85F3
2024-02-26 20:27:45 +00:00
* STA KBDSTROBE
2024-02-08 21:48:24 +00:00
CMP #chrN
2023-07-08 16:35:15 +00:00
BEQ L8075
2024-02-08 21:48:24 +00:00
CMP #chrY
2023-07-08 16:35:15 +00:00
BNE L8062
2024-02-08 21:48:24 +00:00
JSR saveLEVEL
2024-02-22 11:46:31 +00:00
L8075
* STA TXTPAGE1
2024-02-23 18:50:36 +00:00
lda ptrSCREEN+2
sta ptrHGR1+2
lda #>oldHGR1
sta hgrPAGE
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-08 21:48:24 +00:00
STA theX
STA theY
2023-07-08 16:35:15 +00:00
RTS
2024-02-18 22:14:46 +00:00
*-----------------------------------
* CHECK DISK
*-----------------------------------
checkDISK LDA #$01 ; load score
2024-02-08 21:48:24 +00:00
JSR readSCORE
CMP #$00 ; 00 means disk not identified
2023-07-08 16:35:15 +00:00
BNE L808E
2024-02-08 21:48:24 +00:00
JSR tellNODATADISK
2024-02-14 20:46:43 +00:00
JMP editMAIN
2024-02-08 21:48:24 +00:00
L808E CMP #$01 ; 01 means master disk
2023-07-08 16:35:15 +00:00
BNE L8105
2024-02-08 21:48:24 +00:00
JSR tellMASTERDISK
2024-02-14 20:46:43 +00:00
JMP editMAIN
2023-07-08 16:35:15 +00:00
2024-02-08 21:48:24 +00:00
*-----------------------------------
* MASTER DISK FOUND
*-----------------------------------
tellMASTERDISK
2024-02-25 12:23:01 +00:00
JSR clearHGR1 ; was 2
LDA #>oldHGR1 ; was 2
2024-02-08 21:48:24 +00:00
STA activePAGE
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-08 21:48:24 +00:00
STA theX
STA theY
JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC "USER NOT ALLOWED TO"8D
ASC "MANIPULATE MASTER DISKETTE."00
2024-02-08 21:48:24 +00:00
*-----------------------------------
* WAIT FOR A KEYPRESS
*-----------------------------------
L80D8 JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC 8D8D
ASC "HIT A KEY TO CONTINUE "00
2024-02-09 22:22:41 +00:00
JSR doBEEP
2024-02-22 11:46:31 +00:00
* STA TXTPAGE2
2023-07-08 16:35:15 +00:00
LDA #$00
JSR L85F3
2024-02-26 20:27:45 +00:00
* STA KBDSTROBE
2024-02-22 11:46:31 +00:00
* STA TXTPAGE1
2024-02-23 18:50:36 +00:00
lda ptrSCREEN+2
sta ptrHGR1+2
lda #>oldHGR1
sta hgrPAGE
2023-07-08 16:35:15 +00:00
L8105 RTS
2024-02-08 21:48:24 +00:00
*-----------------------------------
* LR DATA DISK NOT IDENTIFIED
*-----------------------------------
tellNODATADISK
2024-02-25 12:23:01 +00:00
JSR clearHGR1 ; was 2
LDA #>oldHGR1 ; was 2
2024-02-08 21:48:24 +00:00
STA activePAGE
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-08 21:48:24 +00:00
STA theX
STA theY
JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC "DISKETTE IN DRIVE IS NOT A"8D
ASC "LODE RUNNER DATA DISK."00
JMP L80D8
2024-02-13 08:09:27 +00:00
*-----------------------------------
* BLINK AT XY
*-----------------------------------
blinkATXY
LDY theY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-08 21:48:24 +00:00
LDY theX
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2024-02-12 18:28:22 +00:00
JSR blinkSPRITE
2024-02-26 20:27:45 +00:00
* STA KBDSTROBE
2023-07-08 16:35:15 +00:00
RTS
2024-02-25 12:23:01 +00:00
tblEDITKEYS
* ASC "JIKM"
asc "JILK" ; like the game!!
2023-07-08 16:35:15 +00:00
HEX 9395889100
2024-02-13 08:09:27 +00:00
tblEDITCODE DA editLEFT-1 ; J move left
DA editUP-1 ; I move up
DA editRIGHT-1 ; K move right
DA editDOWN-1 ; M move down
DA editSAVE-1 ; CTRL-S to save your game
DA editLOAD-1 ; CTRL-U to load next level
DA editPREVIOUS-1 ; CTRL-H to load previous level
DA editQUIT-1 ; CTRL-Q to quit game generator
2023-07-08 16:35:15 +00:00
*-------------------------------
2024-02-13 08:09:27 +00:00
* INPUT LEVEL NUMBER
2023-07-08 16:35:15 +00:00
*-------------------------------
2024-02-13 08:09:27 +00:00
inputLEVEL
LDY intLEVEL
2023-07-08 16:35:15 +00:00
INY
TYA
2024-02-08 21:48:24 +00:00
JSR hex2dec
LDA theX
2023-07-08 16:35:15 +00:00
STA L824E
2024-02-25 12:23:01 +00:00
ldx #0 ; was Y
L8189 lda theCENTAINE,x
stx L824D
2024-02-08 21:48:24 +00:00
JSR outputCHAR
2024-02-25 12:23:01 +00:00
ldx L824D
inx
cpx #$03
2023-07-08 16:35:15 +00:00
BCC L8189
2024-02-25 12:23:01 +00:00
2023-07-08 16:35:15 +00:00
LDA L824E
2024-02-08 21:48:24 +00:00
STA theX
2023-07-08 16:35:15 +00:00
LDY #$00
STY L824D
L81A4 LDX L824D
2024-02-08 21:48:24 +00:00
LDA theCENTAINE,X
2023-07-08 16:35:15 +00:00
CLC
2024-02-12 18:28:22 +00:00
ADC #spr0 ; spr0
JSR blinkSPRITE
2024-02-26 20:27:45 +00:00
* STA KBDSTROBE
2024-02-08 21:48:24 +00:00
CMP #chrRET ; return
2023-07-08 16:35:15 +00:00
BEQ L820D
2024-02-08 21:48:24 +00:00
CMP #chrLA ; left arrow
2023-07-08 16:35:15 +00:00
BNE L81C7
LDX L824D
BEQ L8207
DEC L824D
2024-02-08 21:48:24 +00:00
DEC theX
2023-07-08 16:35:15 +00:00
JMP L81A4
2024-02-08 21:48:24 +00:00
L81C7 CMP #chrRA ; right arrow
2023-07-08 16:35:15 +00:00
BNE L81DA
LDX L824D
CPX #$02
BEQ L8207
2024-02-08 21:48:24 +00:00
INC theX
2023-07-08 16:35:15 +00:00
INC L824D
JMP L81A4
2024-02-08 21:48:24 +00:00
L81DA CMP #chrESC ; esc
2023-07-08 16:35:15 +00:00
BNE L81E1
2024-02-14 20:46:43 +00:00
JMP editLOOP
2023-07-08 16:35:15 +00:00
2024-02-08 21:48:24 +00:00
L81E1 CMP #chrZERO ; 0
2023-07-08 16:35:15 +00:00
BCC L8207
2024-02-08 21:48:24 +00:00
CMP #chrNINE+1 ; 9+1
2023-07-08 16:35:15 +00:00
BCS L8207
SEC
2024-02-08 21:48:24 +00:00
SBC #chrZERO
2024-02-25 12:23:01 +00:00
* LDY L824D
* STA |$0089,Y
ldx L824D
sta theCENTAINE,x
2024-02-08 21:48:24 +00:00
JSR outputCHAR
2023-07-08 16:35:15 +00:00
INC L824D
LDA L824D
CMP #$03
BCC L81A4
DEC L824D
2024-02-08 21:48:24 +00:00
DEC theX
2023-07-08 16:35:15 +00:00
JMP L81A4
2024-02-09 22:22:41 +00:00
L8207 JSR doBEEP
2023-07-08 16:35:15 +00:00
JMP L81A4
*-------------------------------
* TRANSFORM A ASC NUMBER IN HEX
*-------------------------------
L820D LDA L824E
CLC
ADC #$03
2024-02-08 21:48:24 +00:00
STA theX
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-08 21:48:24 +00:00
LDX theCENTAINE
2023-07-08 16:35:15 +00:00
BEQ L8223
CLC
L821C ADC #100
BCS L823C
DEX
BNE L821C
2024-02-08 21:48:24 +00:00
L8223 LDX theDIZAINE
2023-07-08 16:35:15 +00:00
BEQ L822F
CLC
L8228 ADC #10
BCS L823C
DEX
BNE L8228
L822F CLC
2024-02-08 21:48:24 +00:00
ADC theUNITE
2023-07-08 16:35:15 +00:00
BCS L823C
2024-02-08 21:48:24 +00:00
STA theLEVEL
2023-07-08 16:35:15 +00:00
TAY
DEY
2024-02-08 21:48:24 +00:00
STY intLEVEL ; and make it our level
2023-07-08 16:35:15 +00:00
CPY #maxLEVEL
L823C RTS
2024-02-14 20:46:43 +00:00
editWAITKEY LDA #sprEMPTY
2024-02-12 18:28:22 +00:00
JSR blinkSPRITE
2024-02-26 20:27:45 +00:00
* STA KBDSTROBE
2024-02-25 12:23:01 +00:00
and #maskUPPER ; lowercase support
2023-07-08 16:35:15 +00:00
CMP #$9B ; escape
BNE L824C
2024-02-14 20:46:43 +00:00
JMP editLOOP
2024-02-25 12:23:01 +00:00
2023-07-08 16:35:15 +00:00
L824C RTS
2024-02-25 12:23:01 +00:00
L824D DB $60
2023-07-08 16:35:15 +00:00
L824E DB $85
2024-02-20 20:37:01 +00:00
L824F DB $0F ; level from
L8250 DB $60 ; level to
2023-07-08 16:35:15 +00:00
L8251 HEX 02110F040000FE000000000000000000
HEX 00000000000000000000000000000000
HEX 000000000000007A0000000000000000
HEX FFFF0000230F0001
L8289 HEX 220F8888888888888888CCCFC4C5A0D2
HEX D5CECEC5D2A0C4C1D4C1A0C4C9D3CBA0
HEX A0
*---------------------------------------
2024-02-23 18:50:36 +00:00
* PRINT CHAR - TATA
2023-07-08 16:35:15 +00:00
*---------------------------------------
2024-02-08 21:48:24 +00:00
coutHGR1 STA theA ; char in $1E
2024-02-22 11:46:31 +00:00
LDA #>oldHGR1 ; print HGR1
2023-07-08 16:35:15 +00:00
BNE L82B4
2024-02-08 21:48:24 +00:00
coutHGR2 STA theA ; char in $1E
2024-02-22 11:46:31 +00:00
LDA #>oldHGR2 ; print HGR2
2023-07-08 16:35:15 +00:00
2024-02-08 21:48:24 +00:00
L82B4 STA hgrPAGE ; page in $1F
2024-02-12 18:28:22 +00:00
2024-02-23 18:50:36 +00:00
LDY theY ; take Y
ldx theX
JSR getXY
STY theYSCREEN ; make it Y screen
stx theXSCREEN
jsr setHGRPOINTER
2024-02-22 11:46:31 +00:00
rep #$30
2024-02-23 18:50:36 +00:00
lda theXSCREEN ; Y for column
and #$ff
clc
adc ptrHGR1
sta ptrHGR1
lda theA ; X for sprite
2024-02-22 11:46:31 +00:00
and #$ff
asl
tax
2024-02-24 20:36:24 +00:00
patchSPR1 lda tblSPRITES,x
2024-02-23 18:50:36 +00:00
sta ptrSPR
lda #sprHEIGHT
sta nbLINES2
outerCOUT lda #0
2024-02-22 11:46:31 +00:00
tax
2024-02-23 18:50:36 +00:00
tay
2024-02-22 11:46:31 +00:00
2024-02-23 18:50:36 +00:00
sep #$30
2024-02-22 11:46:31 +00:00
2024-02-23 18:50:36 +00:00
]lp lda (ptrSPR),y
sta [ptrHGR1],y
2024-02-22 11:46:31 +00:00
iny
2024-02-23 18:50:36 +00:00
cpy #sprBYTES
bcc ]lp
rep #$30
2024-02-22 11:46:31 +00:00
2024-02-23 18:50:36 +00:00
lda ptrHGR1
2024-02-22 11:46:31 +00:00
clc
2024-02-23 18:50:36 +00:00
adc #160
sta ptrHGR1
lda ptrSPR
clc
adc #sprBYTES
sta ptrSPR
2024-02-22 11:46:31 +00:00
dec nbLINES2
2024-02-23 18:50:36 +00:00
bne outerCOUT
2024-02-22 11:46:31 +00:00
sep #$30
rts
2024-02-12 18:28:22 +00:00
2024-02-22 11:46:31 +00:00
mx %11
2024-02-23 18:50:36 +00:00
2024-02-09 22:22:41 +00:00
*---------------------------------------
2024-02-22 13:16:37 +00:00
* DRAW SPRITE AT X,Y - TOTO
2024-02-09 22:22:41 +00:00
*---------------------------------------
2024-02-12 18:28:22 +00:00
* draw a sprite at real HGR X,Y (eg. 175,111)
2023-07-08 16:35:15 +00:00
2024-02-12 18:28:22 +00:00
drawSPRITEXY
2024-02-24 20:36:24 +00:00
stx theXSCREEN
2024-02-12 18:28:22 +00:00
STY theYSCREEN
2024-02-08 21:48:24 +00:00
STA theA
2024-02-22 13:16:37 +00:00
jsr setHGRPOINTERS
2024-02-22 14:44:51 +00:00
2024-02-22 13:16:37 +00:00
rep #$30
lda theXSCREEN ; Y for column
and #$ff
2024-02-22 14:44:51 +00:00
clc
adc ptrHGR1
sta ptrHGR1
sta ptrHGR2
2024-02-22 13:16:37 +00:00
lda theA ; X for sprite
and #$ff
asl
tax
2024-02-24 20:36:24 +00:00
patchSPR2 lda tblSPRITES,x
2024-02-22 14:44:51 +00:00
sta ptrSPR
lda #sprHEIGHT
sta nbLINES2
outerDSXY lda #0
2024-02-22 13:16:37 +00:00
tax
2024-02-22 14:44:51 +00:00
tay
2024-02-22 13:16:37 +00:00
2024-02-22 14:44:51 +00:00
sep #$30
2024-02-23 18:50:36 +00:00
]lp lda (ptrSPR),y
2024-02-22 14:44:51 +00:00
tax
and tblMASK,x
2024-02-23 18:50:36 +00:00
ora [ptrHGR2],y
2024-02-22 14:44:51 +00:00
sta [ptrHGR1],y
2024-02-23 18:50:36 +00:00
2024-02-22 13:16:37 +00:00
iny
2024-02-23 18:50:36 +00:00
cpy #sprBYTES
2024-02-22 14:44:51 +00:00
bcc ]lp
2024-02-22 13:16:37 +00:00
2024-02-22 14:44:51 +00:00
rep #$30
2024-02-22 13:16:37 +00:00
2024-02-22 14:44:51 +00:00
lda ptrHGR2
2024-02-22 13:16:37 +00:00
clc
2024-02-22 14:44:51 +00:00
adc #160
sta ptrHGR2
sta ptrHGR1
lda ptrSPR
clc
2024-02-23 18:50:36 +00:00
adc #sprBYTES
2024-02-22 14:44:51 +00:00
sta ptrSPR
2024-02-22 13:16:37 +00:00
dec nbLINES2
2024-02-22 14:44:51 +00:00
bne outerDSXY
2024-02-22 13:16:37 +00:00
sep #$30
rts
mx %11
2024-02-12 18:28:22 +00:00
2024-02-09 22:22:41 +00:00
*---------------------------------------
2024-02-23 18:50:36 +00:00
* DRAW SPRITE AT X,Y WITH COLLISION - TUTU
2024-02-09 22:22:41 +00:00
*---------------------------------------
2024-02-12 18:28:22 +00:00
* $52: 00 if no collision (empty background)
* <>00 if collision
2024-02-09 22:22:41 +00:00
2024-02-12 18:28:22 +00:00
drawSPRXYCOLLISION
2024-02-24 20:36:24 +00:00
stx theXSCREEN
2024-02-12 18:28:22 +00:00
STY theYSCREEN
2024-02-08 21:48:24 +00:00
STA theA
2024-02-22 14:44:51 +00:00
jsr setHGRPOINTERS
2023-07-08 16:35:15 +00:00
LDX #$00
2024-02-12 18:28:22 +00:00
STX fgCOLLISION
2024-02-22 14:44:51 +00:00
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
2024-02-24 20:36:24 +00:00
patchSPR3 lda tblSPRITES,x
2024-02-22 14:44:51 +00:00
sta ptrSPR
lda #sprHEIGHT
sta nbLINES2
outerXYCOL lda #0
tax
tay
sep #$30
2024-02-23 18:50:36 +00:00
]lp lda [ptrHGR1],Y ; 0..1
eor [ptrHGR2],Y ; si HGR1=HGR2 => 0
2024-02-25 12:23:01 +00:00
tax
and tblMASK,x
2024-02-23 18:50:36 +00:00
ora fgCOLLISION
sta fgCOLLISION
2024-02-22 14:44:51 +00:00
2024-02-23 18:50:36 +00:00
lda [ptrHGR2],y ; 0..1
2024-02-22 14:44:51 +00:00
tax
and tblMASK,x
2024-02-23 18:50:36 +00:00
ora (ptrSPR),y
sta [ptrHGR1],y
2024-02-22 14:44:51 +00:00
iny
2024-02-23 18:50:36 +00:00
cpy #sprBYTES
2024-02-22 14:44:51 +00:00
bcc ]lp
rep #$30
lda ptrHGR2
clc
adc #160
sta ptrHGR2
sta ptrHGR1
lda ptrSPR
clc
2024-02-23 18:50:36 +00:00
adc #sprBYTES
2024-02-22 14:44:51 +00:00
sta ptrSPR
dec nbLINES2
bne outerXYCOL
sep #$30
rts
mx %11
2024-02-12 18:28:22 +00:00
2024-02-09 22:22:41 +00:00
*---------------------------------------
* CHECK HIGH SCORE
*---------------------------------------
checkHIGHSCORE
2024-02-15 18:56:59 +00:00
LDA fgGOODSTART
2023-07-08 16:35:15 +00:00
BEQ L8514
2024-02-08 21:48:24 +00:00
LDA theSCORE
ORA theSCORE+1
ORA theSCORE+2
ORA theSCORE+3
2023-07-08 16:35:15 +00:00
BEQ L8514
LDA #$01
2024-02-08 21:48:24 +00:00
JSR readSCORE
2023-07-08 16:35:15 +00:00
BEQ L8514
2024-02-09 22:22:41 +00:00
LDY #$01 ; 1<>re entr<74>e
2024-02-08 21:48:24 +00:00
L84DF LDX scoreoffset,Y
LDA theLEVEL
CMP scorebuf+$03,X
2023-07-08 16:35:15 +00:00
BCC L850F
BNE L8515
2024-02-08 21:48:24 +00:00
LDA theSCORE+3
CMP scorebuf+$04,X
2023-07-08 16:35:15 +00:00
BCC L850F
BNE L8515
2024-02-08 21:48:24 +00:00
LDA theSCORE+2
CMP scorebuf+$05,X
2023-07-08 16:35:15 +00:00
BCC L850F
BNE L8515
2024-02-08 21:48:24 +00:00
LDA theSCORE+1
CMP scorebuf+$06,X
2023-07-08 16:35:15 +00:00
BCC L850F
BNE L8515
2024-02-08 21:48:24 +00:00
LDA theSCORE
CMP scorebuf+$07,X
2023-07-08 16:35:15 +00:00
BCC L850F
BNE L8515
L850F INY
2024-02-09 22:22:41 +00:00
CPY #$0B ; derni<6E>re entr<74>e
2023-07-08 16:35:15 +00:00
BCC L84DF
L8514 RTS
2024-02-09 22:22:41 +00:00
L8515 CPY #$0A ; d<>cale les scores vers le bas
2023-07-08 16:35:15 +00:00
BEQ L8536
2024-02-15 18:56:59 +00:00
STY tempY1
2023-07-08 16:35:15 +00:00
LDY #$09
2024-02-08 21:48:24 +00:00
L851D LDX scoreoffset,Y
2023-07-08 16:35:15 +00:00
LDA #$08
2024-02-12 18:28:22 +00:00
STA nbLINES
2024-02-08 21:48:24 +00:00
L8524 LDA scorebuf,X
STA scorebuf+$08,X
2023-07-08 16:35:15 +00:00
INX
2024-02-12 18:28:22 +00:00
DEC nbLINES
2023-07-08 16:35:15 +00:00
BNE L8524
2024-02-15 18:56:59 +00:00
CPY tempY1
2023-07-08 16:35:15 +00:00
BEQ L8536
DEY
BNE L851D
2024-02-09 22:22:41 +00:00
L8536 LDX scoreoffset,Y ; permet la saisie des initiales
LDA #chrSPC
2024-02-08 21:48:24 +00:00
STA scorebuf,X
STA scorebuf+$01,X
STA scorebuf+$02,X
LDA theLEVEL
STA scorebuf+$03,X
LDA theSCORE+3
STA scorebuf+$04,X
LDA theSCORE+2
STA scorebuf+$05,X
LDA theSCORE+1
STA scorebuf+$06,X
LDA theSCORE
STA scorebuf+$07,X
2023-07-08 16:35:15 +00:00
STY $69
2024-02-08 21:48:24 +00:00
LDA scoreoffset,Y
2024-02-23 21:26:48 +00:00
clc
adc #<scorebuf
2023-07-08 16:35:15 +00:00
STA L8582+1
STA L85C9+1
2024-02-18 22:14:46 +00:00
JSR showALLSCORES
2024-02-23 21:26:48 +00:00
* LDA #>oldHGR2
lda #>oldHGR1
2024-02-08 21:48:24 +00:00
STA activePAGE
2023-07-08 16:35:15 +00:00
LDA $69
CLC
ADC #$04
2024-02-08 21:48:24 +00:00
STA theY
2023-07-08 16:35:15 +00:00
LDA #$07
2024-02-08 21:48:24 +00:00
STA theX
2023-07-08 16:35:15 +00:00
LDX #$00
STX L824D
L857F LDX L824D
2024-02-08 21:48:24 +00:00
L8582 LDA scorebuf,X
2024-02-14 20:46:43 +00:00
JSR filterCHAR
2023-07-08 16:35:15 +00:00
JSR L85F3
2024-02-26 20:27:45 +00:00
* STA KBDSTROBE
2024-02-08 21:48:24 +00:00
CMP #chrRET
2023-07-08 16:35:15 +00:00
BEQ L85E7
2024-02-08 21:48:24 +00:00
CMP #chrLA
2023-07-08 16:35:15 +00:00
BNE L85A3
LDX L824D
BEQ L85E1
DEC L824D
2024-02-08 21:48:24 +00:00
DEC theX
2023-07-08 16:35:15 +00:00
JMP L857F
2024-02-08 21:48:24 +00:00
L85A3 CMP #chrRA
2023-07-08 16:35:15 +00:00
BNE L85B6
LDX L824D
CPX #$02
BEQ L85E1
2024-02-08 21:48:24 +00:00
INC theX
2023-07-08 16:35:15 +00:00
INC L824D
JMP L857F
2024-02-08 21:48:24 +00:00
L85B6 CMP #chrDOT
2023-07-08 16:35:15 +00:00
BEQ L85C6
2024-02-08 21:48:24 +00:00
CMP #chrSPC
2023-07-08 16:35:15 +00:00
BEQ L85C6
2024-02-25 12:23:01 +00:00
and #maskUPPER ; for lowercase
2024-02-08 21:48:24 +00:00
CMP #chrA
2023-07-08 16:35:15 +00:00
BCC L85E1
2024-02-08 21:48:24 +00:00
CMP #chrZ+1
2023-07-08 16:35:15 +00:00
BCS L85E1
L85C6 LDY L824D
2024-02-08 21:48:24 +00:00
L85C9 STA scorebuf,Y
JSR printCHAR
2023-07-08 16:35:15 +00:00
INC L824D
LDA L824D
2024-02-09 22:22:41 +00:00
CMP #$03 ; max nb chars
2023-07-08 16:35:15 +00:00
BCC L857F
DEC L824D
2024-02-08 21:48:24 +00:00
DEC theX
2023-07-08 16:35:15 +00:00
JMP L857F
2024-02-09 22:22:41 +00:00
L85E1 JSR doBEEP
2023-07-08 16:35:15 +00:00
JMP L857F
2024-02-22 11:46:31 +00:00
L85E7 LDA #>oldHGR1
2024-02-08 21:48:24 +00:00
STA activePAGE
2023-07-08 16:35:15 +00:00
LDA #$02
2024-02-08 21:48:24 +00:00
JSR readSCORE
2023-07-08 16:35:15 +00:00
JMP L618E
2024-02-13 08:09:27 +00:00
L85F3 STA bsDATA
2023-07-08 16:35:15 +00:00
L85F6 LDA #$68
2024-02-14 21:41:47 +00:00
STA counter
2024-02-13 08:09:27 +00:00
LDA bsDATA
2023-07-08 16:35:15 +00:00
BNE L8601
2024-02-18 22:14:46 +00:00
LDA #sprCURSOR
2024-02-23 21:26:48 +00:00
L8601 JSR coutHGR1 ; not 2
2024-02-25 12:23:01 +00:00
L8604 jsr checkKEY
2024-02-26 20:27:45 +00:00
* LDA KBD
2023-07-08 16:35:15 +00:00
BMI L8628
2024-02-13 08:09:27 +00:00
JSR checkMOVEMENT
2024-02-14 21:41:47 +00:00
DEC counter
2023-07-08 16:35:15 +00:00
BNE L8604
2024-02-18 22:14:46 +00:00
LDA #sprEMPTY
2024-02-23 21:26:48 +00:00
JSR coutHGR1 ; not 2
2023-07-08 16:35:15 +00:00
LDA #$68
2024-02-14 21:41:47 +00:00
STA counter
2024-02-25 12:23:01 +00:00
L8619 jsr checkKEY
2024-02-26 20:27:45 +00:00
* LDA KBD
2023-07-08 16:35:15 +00:00
BMI L8628
2024-02-13 08:09:27 +00:00
JSR checkMOVEMENT
2024-02-14 21:41:47 +00:00
DEC counter
2023-07-08 16:35:15 +00:00
BNE L8619
JMP L85F6
L8628 PHA
2024-02-13 08:09:27 +00:00
LDA bsDATA
2024-02-23 21:26:48 +00:00
JSR coutHGR1 ; not 2
2023-07-08 16:35:15 +00:00
PLA
RTS
2024-02-09 22:22:41 +00:00
*-----------------------------------
* SHOW INVISIBLE LADDERS
*-----------------------------------
showINVISIBLELADDERS
LDA #$00
STA tblLADDERIX
LDX idxLADDERI
2023-07-08 16:35:15 +00:00
STX L869E
L863B LDX L869E
BEQ L8696
2024-02-09 22:22:41 +00:00
LDA tblLADDERIX,X
2023-07-08 16:35:15 +00:00
BMI L8690
2024-02-08 21:48:24 +00:00
STA theX
2024-02-09 22:22:41 +00:00
LDA tblLADDERIY,X
2024-02-08 21:48:24 +00:00
STA theY
2023-07-08 16:35:15 +00:00
TAY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2024-02-08 21:48:24 +00:00
LDY theX
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
BNE L868B
2024-02-09 22:22:41 +00:00
LDA #sprLADDER
2024-02-14 20:46:43 +00:00
STA (ptrBBACK),Y
LDA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
BNE L8670
2024-02-09 22:22:41 +00:00
LDA #sprLADDER
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2024-02-09 22:22:41 +00:00
L8670 LDA #sprLADDER
2024-02-08 21:48:24 +00:00
JSR coutHGR2
LDX theX
LDY theY
JSR getXY
2024-02-09 22:22:41 +00:00
LDA #sprLADDER
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2023-07-08 16:35:15 +00:00
LDX L869E
LDA #$FF
2024-02-09 22:22:41 +00:00
STA tblLADDERIX,X
2023-07-08 16:35:15 +00:00
BMI L8690
L868B LDA #$01
2024-02-09 22:22:41 +00:00
STA tblLADDERIX
2023-07-08 16:35:15 +00:00
L8690 DEC L869E
JMP L863B
2024-02-09 22:22:41 +00:00
L8696 LDA tblLADDERIX
2023-07-08 16:35:15 +00:00
BNE L869D
2024-02-08 21:48:24 +00:00
DEC nbCHEST
2023-07-08 16:35:15 +00:00
L869D RTS
L869E DB $00
2024-02-09 22:22:41 +00:00
*-----------------------------------
* WAIT KEY UP
*-----------------------------------
2024-02-25 12:23:01 +00:00
*
*waitKEYUP STA KBDSTROBE
* LDA KBD
* BMI waitKEYUP
* RTS
*
2024-02-09 22:22:41 +00:00
*-----------------------------------
* WAIT KEY DOWN
*-----------------------------------
2024-02-25 12:23:01 +00:00
*
*waitKEYDOWN LDA KBD
* BPL waitKEYDOWN
* STA KBDSTROBE
* RTS
*
2024-02-09 22:22:41 +00:00
*-----------------------------------
* WAIT
*-----------------------------------
doWAIT LDA L86BE,X
2023-07-08 16:35:15 +00:00
TAX
2024-02-09 22:22:41 +00:00
doWAIT1 LDY #$B4
]lp DEY
BNE ]lp
2023-07-08 16:35:15 +00:00
DEX
2024-02-09 22:22:41 +00:00
BNE doWAIT1
2023-07-08 16:35:15 +00:00
RTS
2024-02-24 20:36:24 +00:00
* index 000102030405060708090A0B0C0D0E0F
* --------------------------------
2023-07-08 16:35:15 +00:00
L86BE HEX 020406080A0C0E10121416181A1C1E20
2024-02-24 20:36:24 +00:00
hex 222426282a2c2e30323436383a3c3e40
2023-07-08 16:35:15 +00:00
2024-02-09 22:22:41 +00:00
*-----------------------------------
* The CTRL-G of Lode Runner
*-----------------------------------
doBEEP LDY #$C0
2023-07-08 16:35:15 +00:00
L86D0 LDX #$80
L86D2 DEX
BNE L86D2
2024-02-09 22:22:41 +00:00
LDA fgSOUND
2023-07-08 16:35:15 +00:00
BEQ L86DC
2024-02-26 20:27:45 +00:00
LDAL SPKR
2023-07-08 16:35:15 +00:00
L86DC DEY
BNE L86D0
RTS
2024-02-08 21:48:24 +00:00
*-----------------------------------
* PRINT STRING
*-----------------------------------
printSTRING
PLA
2024-02-14 20:46:43 +00:00
STA ptrSTRSND
2023-07-08 16:35:15 +00:00
PLA
2024-02-14 20:46:43 +00:00
STA ptrSTRSND+1
2023-07-08 16:35:15 +00:00
BNE L86F1
L86E8 LDY #$00
2024-02-14 20:46:43 +00:00
LDA (ptrSTRSND),Y
2023-07-08 16:35:15 +00:00
BEQ L86F9
2024-02-08 21:48:24 +00:00
JSR printCHAR
2024-02-14 20:46:43 +00:00
L86F1 INC ptrSTRSND
2023-07-08 16:35:15 +00:00
BNE L86E8
2024-02-14 20:46:43 +00:00
INC ptrSTRSND+1
2023-07-08 16:35:15 +00:00
BNE L86E8
2024-02-14 20:46:43 +00:00
L86F9 LDA ptrSTRSND+1
2023-07-08 16:35:15 +00:00
PHA
2024-02-14 20:46:43 +00:00
LDA ptrSTRSND
2023-07-08 16:35:15 +00:00
PHA
RTS
2024-02-08 21:48:24 +00:00
*-----------------------------------
2024-02-12 18:28:22 +00:00
* BLINK SPRITE
2024-02-08 21:48:24 +00:00
*-----------------------------------
2024-02-12 18:28:22 +00:00
* sprite is in A
2024-02-08 21:48:24 +00:00
2024-02-12 18:28:22 +00:00
blinkSPRITE
STA bsDATA
2023-07-08 16:35:15 +00:00
L8703 LDA #$68
2024-02-14 21:41:47 +00:00
STA counter
2024-02-12 18:28:22 +00:00
LDA #sprEMPTY
LDX bsDATA
2023-07-08 16:35:15 +00:00
BNE L8710
2024-02-12 18:28:22 +00:00
LDA #sprCURSOR ; cursor sprite
L8710 JSR coutHGR1 ; output empty
2024-02-25 12:23:01 +00:00
L8713 jsr checkKEY
2024-02-26 20:27:45 +00:00
* LDA KBD ; key pressed?
2024-02-12 18:28:22 +00:00
BMI L873C ; yes
2024-02-13 08:09:27 +00:00
JSR checkMOVEMENT ; buttons pressed?
2024-02-12 18:28:22 +00:00
BCS L873C ; yes
2024-02-14 21:41:47 +00:00
DEC counter
2023-07-08 16:35:15 +00:00
BNE L8713
2024-02-12 18:28:22 +00:00
LDA bsDATA ; output sprite
2024-02-08 21:48:24 +00:00
JSR coutHGR1
2024-02-12 18:28:22 +00:00
LDA #$68 ; redo the wait
2024-02-14 21:41:47 +00:00
STA counter
2024-02-25 12:23:01 +00:00
L872B jsr checkKEY
2024-02-26 20:27:45 +00:00
* LDA KBD
2023-07-08 16:35:15 +00:00
BMI L873C
2024-02-13 08:09:27 +00:00
JSR checkMOVEMENT
2023-07-08 16:35:15 +00:00
BCS L873C
2024-02-14 21:41:47 +00:00
DEC counter
2023-07-08 16:35:15 +00:00
BNE L872B
JMP L8703
2024-02-12 18:28:22 +00:00
L873C PHA ; exit with
2024-02-13 08:09:27 +00:00
LDA bsDATA ; sprite
2024-02-08 21:48:24 +00:00
JSR coutHGR1
2023-07-08 16:35:15 +00:00
PLA
RTS
2024-02-22 14:44:51 +00:00
bsDATA DB $06
2023-07-08 16:35:15 +00:00
2024-02-26 20:27:45 +00:00
*-----------------------------------
* READ JOYPAD
*-----------------------------------
readJOYPAD jsr read4PLAY
ldx #ctrJOY ; default values
ldy #ctrJOY
ror ; test up
bcc readJOYP1 ; no
ldy #0 ; yes
readJOYP1 ror ; test down
bcc readJOYP2 ; no
ldy #255 ; yes
readJOYP2 ror ; test left
bcc readJOYP3 ; no
ldx #0 ; yes
readJOYP3 ror ; test right
bcc readJOYP4 ; no
ldx #255 ; yes
readJOYP4 stx theX ; store values
sty theY
rts
2024-02-12 18:28:22 +00:00
*-----------------------------------
* READ JOYSTICK
*-----------------------------------
readJOYSTICK
LDA #$00
STA theJOYX
STA theJOYY
2024-02-26 20:27:45 +00:00
LDAL PTRIG
2023-07-08 16:35:15 +00:00
L874F LDX #$01
2024-02-26 20:27:45 +00:00
L8751 LDAL PADDL0,X
2023-07-08 16:35:15 +00:00
BPL L8769
2024-02-12 18:28:22 +00:00
INC theJOYX,X
2023-07-08 16:35:15 +00:00
L8758 DEX
BPL L8751
2024-02-26 20:27:45 +00:00
LDAL PADDL0
ORAL PADDL1
2023-07-08 16:35:15 +00:00
BPL L876C
2024-02-12 18:28:22 +00:00
LDA theJOYX
ORA theJOYY
2023-07-08 16:35:15 +00:00
BPL L874F
L8769 NOP
BPL L8758
L876C RTS
2024-02-13 08:09:27 +00:00
*-----------------------------------
* CHECK MOVEMENT
*-----------------------------------
checkMOVEMENT
LDA fgINPUT
2024-02-08 21:48:24 +00:00
CMP #chrK
2023-07-08 16:35:15 +00:00
BEQ L8798
2024-02-26 20:27:45 +00:00
cmp #chrJ
beq checkMOV1
cmp #chrP
bne L8798
jsr readJOYPAD
lda the4PLAY ; check buttons state now
bmi L8796
bvs L8796
bra checkMOV2 ; now check movement
checkMOV1 JSR readJOYSTICK
LDAL BUTN1
BMI L8796
LDAL BUTN0
BMI L8796
checkMOV2 LDA theJOYX
2024-02-12 18:28:22 +00:00
CMP #minJOY
2023-07-08 16:35:15 +00:00
BCC L8796
2024-02-12 18:28:22 +00:00
CMP #maxJOY
2023-07-08 16:35:15 +00:00
BCS L8796
2024-02-12 18:28:22 +00:00
LDA theJOYY
CMP #minJOY
2023-07-08 16:35:15 +00:00
BCC L8796
2024-02-12 18:28:22 +00:00
CMP #maxJOY
2023-07-08 16:35:15 +00:00
BCS L8796
CLC
RTS
L8796 SEC
RTS
2024-02-13 08:09:27 +00:00
L8798 LDX #$02 ; wait routine
L879A DEY ; to compensate
BNE L879A ; the skipped code above
2023-07-08 16:35:15 +00:00
DEX
BNE L879A
CLC
RTS
2024-02-08 21:48:24 +00:00
*-----------------------------------
* CHECK JOYSTICK
*-----------------------------------
checkJOYSTICK
2024-02-26 20:27:45 +00:00
LDAL PTRIG
2023-07-08 16:35:15 +00:00
LDX #$10
2024-02-26 20:27:45 +00:00
L87A7 LDAL PADDL0
2024-02-19 16:43:51 +00:00
ORAl PADDL1
2023-07-08 16:35:15 +00:00
BPL L87B9
DEY
BNE L87A7
DEX
BNE L87A7
2024-02-08 21:48:24 +00:00
LDA #chrK
2024-02-12 18:28:22 +00:00
STA fgINPUT
2023-07-08 16:35:15 +00:00
L87B9 RTS
2024-02-08 21:48:24 +00:00
*-----------------------------------
2024-02-13 08:09:27 +00:00
* PLAY A SOUND
2024-02-08 21:48:24 +00:00
*-----------------------------------
2024-02-27 20:08:52 +00:00
playNOTE STA ptrDATA
STX ptrDATA+1
2024-02-09 22:22:41 +00:00
L87BE LDA fgSOUND
2023-07-08 16:35:15 +00:00
BEQ L87C5
2024-02-26 20:27:45 +00:00
LDAL SPKR
2023-07-08 16:35:15 +00:00
L87C5 DEY
BNE L87CC
2024-02-27 20:08:52 +00:00
DEC ptrDATA+1
2023-07-08 16:35:15 +00:00
BEQ L87D4
L87CC DEX
BNE L87C5
2024-02-14 20:46:43 +00:00
LDX ptrDATA
2023-07-08 16:35:15 +00:00
JMP L87BE
L87D4 RTS
2024-02-08 21:48:24 +00:00
*-----------------------------------
2024-02-13 08:09:27 +00:00
* GET NOTE
2024-02-08 21:48:24 +00:00
*-----------------------------------
2024-02-15 18:56:59 +00:00
getNOTE INC idxNOTE
LDY idxNOTE
2024-02-14 20:46:43 +00:00
STA sndNOTE,Y
2023-07-08 16:35:15 +00:00
TXA
2024-02-14 20:46:43 +00:00
STA sndDURATION,Y
2023-07-08 16:35:15 +00:00
RTS
2024-02-08 21:48:24 +00:00
*-----------------------------------
2024-02-09 22:22:41 +00:00
* PREPARE SOUND
2024-02-08 21:48:24 +00:00
*-----------------------------------
2024-02-09 22:22:41 +00:00
prepareMELODY
PLA
2024-02-14 20:46:43 +00:00
STA ptrSTRSND
2023-07-08 16:35:15 +00:00
PLA
2024-02-14 20:46:43 +00:00
STA ptrSTRSND+1
2023-07-08 16:35:15 +00:00
BNE L8802
2024-02-09 22:22:41 +00:00
L87E9 LDY #$00 ; move sound
2024-02-14 20:46:43 +00:00
LDA (ptrSTRSND),Y ; to the two
2024-02-09 22:22:41 +00:00
BEQ L880A ; buffers
2024-02-15 18:56:59 +00:00
INC idxNOTE
LDX idxNOTE
2024-02-14 20:46:43 +00:00
STA sndDURATION,X
2023-07-08 16:35:15 +00:00
INY
2024-02-14 20:46:43 +00:00
LDA (ptrSTRSND),Y
STA sndNOTE,X
INC ptrSTRSND
2023-07-08 16:35:15 +00:00
BNE L8802
2024-02-14 20:46:43 +00:00
INC ptrSTRSND+1
L8802 INC ptrSTRSND
2023-07-08 16:35:15 +00:00
BNE L87E9
2024-02-14 20:46:43 +00:00
INC ptrSTRSND+1
2023-07-08 16:35:15 +00:00
BNE L87E9
2024-02-14 20:46:43 +00:00
L880A LDA ptrSTRSND+1
2023-07-08 16:35:15 +00:00
PHA
2024-02-14 20:46:43 +00:00
LDA ptrSTRSND
2023-07-08 16:35:15 +00:00
PHA
RTS
2024-02-09 22:22:41 +00:00
*-----------------------------------
* PLAY MELODY
*-----------------------------------
2024-02-15 20:47:31 +00:00
playMELODY LDY idxNOTE
2023-07-08 16:35:15 +00:00
BEQ L8832
2024-02-14 20:46:43 +00:00
LDA sndNOTE,Y
LDX sndDURATION,Y
2024-02-27 20:08:52 +00:00
JSR playNOTE ; play note
2024-02-15 18:56:59 +00:00
LDY idxNOTE
DEC idxNOTE
2024-02-09 22:22:41 +00:00
LDA theSPEED
2023-07-08 16:35:15 +00:00
SEC
2024-02-14 20:46:43 +00:00
SBC sndDURATION,Y
2023-07-08 16:35:15 +00:00
BEQ L8830
BCC L8830
TAX
2024-02-09 22:22:41 +00:00
JSR doWAIT1 ; wait
2023-07-08 16:35:15 +00:00
L8830 SEC
RTS
2024-02-15 20:47:31 +00:00
L8832 LDA fgHEROFELL ; is the hero in a hole?
BNE L8844 ; yes
2024-02-15 18:56:59 +00:00
LDA fgSPEED
2023-07-08 16:35:15 +00:00
LSR
2024-02-15 18:56:59 +00:00
INC fgSPEED
2024-02-09 22:22:41 +00:00
LDX theSPEED
2023-07-08 16:35:15 +00:00
INX
INX
2024-02-27 20:08:52 +00:00
JSR playNOTE
2023-07-08 16:35:15 +00:00
CLC
RTS
2024-02-15 20:47:31 +00:00
L8844 LDX theSPEED ; wait....
2024-02-09 22:22:41 +00:00
JSR doWAIT
2023-07-08 16:35:15 +00:00
CLC
RTS
2024-02-15 20:47:31 +00:00
*-------------------------------
* SET BOARD LINE POINTERS
*-------------------------------
setBOARDLINEPOINTERS
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
2024-02-19 16:43:51 +00:00
lda tblBOARDBACKL,y
2024-02-14 20:46:43 +00:00
STA ptrBBACK
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLH,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD+1
2024-02-09 22:22:41 +00:00
LDA tblBOARDBACKH,Y
2024-02-14 20:46:43 +00:00
STA ptrBBACK+1
2023-07-08 16:35:15 +00:00
RTS
*-------------------------------
* FROM A Y IN TEXT TO A Y IN HGR
*-------------------------------
2024-02-24 20:36:24 +00:00
getXY LDA ytable,Y ; in: board X/Y
PHA ; out: hgr X/Y
LDA xtable,X
TAX
PLA
TAY
2023-07-08 16:35:15 +00:00
RTS
2024-02-23 21:26:48 +00:00
*getBYBI LDA bytable,X ; in: board X
* PHA ; out: A: HGR column (0..39)
* LDA bitable,X ; X: sprite table (0..6)
* TAX
* PLA
* RTS
2023-07-08 16:35:15 +00:00
2024-02-23 21:26:48 +00:00
*getXBYBI LDA xbytable,X ; in: X: HGR x-coord
* PHA ; out: A: HGR column (0..39)
* LDA xbitable,X ; X: sprite table (0..6)
* TAX
* PLA
* RTS
2023-07-08 16:35:15 +00:00
2024-02-14 20:46:43 +00:00
*-------------------------------
* CALCULATE HGR Y-COORD
*-------------------------------
* on entry:
* X is a sprite step
* Y is a board index
* on exit:
* X is garbage
* Y is the HGR coordinate
calcHGRY TXA ; in: board X/Y
2024-02-12 18:28:22 +00:00
PHA ; out: hgr X / diff Y
2024-02-08 21:48:24 +00:00
JSR getXY
2023-07-08 16:35:15 +00:00
PLA
TAX
TYA
CLC
2024-02-12 18:28:22 +00:00
ADC tblDELTAY,X
2023-07-08 16:35:15 +00:00
TAY
RTS
2024-02-12 18:28:22 +00:00
tblDELTAY HEX FBFD000204 ; -5, -3, 0, 2, 4
2023-07-08 16:35:15 +00:00
2024-02-14 20:46:43 +00:00
*-------------------------------
* CALCULATE HGR X-COORD
*-------------------------------
* on entry:
* X is a board index
* Y is a sprite step
* on exit:
* X is the HGR coordinate
* Y is garbage
calcHGRX TYA
PHA
2024-02-08 21:48:24 +00:00
JSR getXY
2023-07-08 16:35:15 +00:00
PLA
TAY
2024-02-14 20:46:43 +00:00
TXA ; X in HGR + Y step
2023-07-08 16:35:15 +00:00
CLC
2024-02-12 18:28:22 +00:00
ADC tblDELTAX,Y
2023-07-08 16:35:15 +00:00
TAX
RTS
2024-02-12 18:28:22 +00:00
tblDELTAX HEX FEFF000102 ; -2, -1, 0, 1, 2
2023-07-08 16:35:15 +00:00
*-------------------------------
2024-02-22 13:16:37 +00:00
* CIRCLE ANIMATION - LOGO
2023-07-08 16:35:15 +00:00
*-------------------------------
2024-02-26 21:43:27 +00:00
caMAXSTEP = 170 ; 170
2024-02-26 20:27:45 +00:00
caDFTCENY = 88
caDFTCENX = 160 ; 140
2024-02-08 21:48:24 +00:00
circleANIMATION
2024-02-26 20:27:45 +00:00
LDA #caDFTCENY ; 88
2024-02-26 21:43:27 +00:00
STA caCENTERY
2024-02-26 20:27:45 +00:00
LDA #caDFTCENX ; 140
2024-02-26 21:43:27 +00:00
STA caCENTERX
2024-02-15 18:56:59 +00:00
LDA fgCIRCLE ; inner or outer animation?
BEQ L88BD ; show the level
*--- hide the level
2023-07-08 16:35:15 +00:00
2024-02-26 20:27:45 +00:00
LDX #caMAXSTEP ; 170
2024-02-26 21:43:27 +00:00
STX caCURRENTY
2024-02-26 20:27:45 +00:00
LDX #0 ; 0
STX caFGMODE
2024-02-26 21:43:27 +00:00
L88B6 JSR caDOIT
DEC caCURRENTY
2024-02-26 20:27:45 +00:00
BNE L88B6
2023-07-08 16:35:15 +00:00
2024-02-15 18:56:59 +00:00
*--- show the level
2024-02-26 21:43:27 +00:00
L88BD LDA #1 ; 1
STA caCURRENTY
2024-02-15 18:56:59 +00:00
STA fgCIRCLE
2024-02-26 20:27:45 +00:00
STA caFGMODE ; 1
2024-02-25 12:23:01 +00:00
lda #>oldHGR1 ; was 2 **logo**
sta activePAGE
2024-02-26 21:43:27 +00:00
JSR printMEN
JSR printLEVEL
2024-02-22 13:16:37 +00:00
2024-02-26 21:43:27 +00:00
L88CB JSR caDOIT
INC caCURRENTY
LDA caCURRENTY
CMP #caMAXSTEP
2023-07-08 16:35:15 +00:00
BNE L88CB
RTS
2024-02-23 18:50:36 +00:00
*---
2024-02-26 20:27:45 +00:00
caMAXMASK = 1 ; HGR: 6, SHR: 1
2024-02-26 21:43:27 +00:00
caDOIT LDA caCURRENTY
STA caY16
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-26 21:43:27 +00:00
STA caY16+1
STA caFROM ; from 0
STA caFROM+1
LDA caY16 ; to Y*2
2023-07-08 16:35:15 +00:00
ASL
2024-02-26 21:43:27 +00:00
STA caTO
LDA caY16+1
2023-07-08 16:35:15 +00:00
ROL
2024-02-26 21:43:27 +00:00
STA caTO+1
LDA #$03 ; corrige de 3
2023-07-08 16:35:15 +00:00
SEC
2024-02-26 21:43:27 +00:00
SBC caTO
STA caTO
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-26 21:43:27 +00:00
SBC caTO+1
STA caTO+1
*--- On calcule les Y
LDA caCENTERY ; Point 1
SEC ; vers le haut
SBC caCURRENTY
STA caY1
2023-07-08 16:35:15 +00:00
LDA #$00
SBC #$00
2024-02-26 21:43:27 +00:00
STA caY1high
LDA caCENTERY ; Point 2
STA caY4 ; Point 3
STA caY3
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-26 21:43:27 +00:00
STA caY4high
STA caY3high
LDA caCENTERY ; Point 4
CLC ; vers le bas
ADC caCURRENTY
STA caY2
2023-07-08 16:35:15 +00:00
LDA #$00
ADC #$00
2024-02-26 21:43:27 +00:00
STA caY2high
*--- On calcule les X
LDA caCENTERX ; points <20> gauche
2023-07-08 16:35:15 +00:00
SEC
2024-02-26 21:43:27 +00:00
SBC caCURRENTY
2023-07-08 16:35:15 +00:00
TAX
LDA #$00
SBC #$00
2024-02-26 20:27:45 +00:00
JSR caCALCX
2024-02-26 21:43:27 +00:00
STY caX1 ; x1 index
STA caX1mask ; x1 mask index
LDX caCENTERX ; points centraux
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-26 20:27:45 +00:00
JSR caCALCX
2024-02-26 21:43:27 +00:00
STY caX2
STY caX3
STA caX2mask
STA caX3mask
LDA caCENTERX ; points <20> droite
2023-07-08 16:35:15 +00:00
CLC
2024-02-26 21:43:27 +00:00
ADC caCURRENTY
2023-07-08 16:35:15 +00:00
TAX
LDA #$00
ADC #$00
2024-02-26 20:27:45 +00:00
JSR caCALCX
2024-02-26 21:43:27 +00:00
STY caX4 ; x4 index
STA caX4mask ; x4 mask index
*-- On boucle
L8951 LDA caFROM+1 ; a-t-on tout affich<63> ?
CMP caY16+1
BCC L896F ; non
2023-07-08 16:35:15 +00:00
BEQ L8969
2024-02-26 21:43:27 +00:00
L8959 LDA caFROM
CMP caY16
2023-07-08 16:35:15 +00:00
BNE L8968
2024-02-26 21:43:27 +00:00
LDA caFROM+1
CMP caY16+1
2023-07-08 16:35:15 +00:00
BNE L8968
2024-02-26 21:43:27 +00:00
JMP caDRAWPOINTS ; dernier point et sort
L8968 RTS ; oui
L8969 LDA caFROM
CMP caY16
BCS L8959 ; oui
L896F JSR caDRAWPOINTS ; non
*---
LDA caTO+1 ; en + ou en -
2023-07-08 16:35:15 +00:00
BPL L89A7
2024-02-26 21:43:27 +00:00
LDA caFROM ; *2
2023-07-08 16:35:15 +00:00
ASL
2024-02-26 21:43:27 +00:00
STA caTEMP16
LDA caFROM+1
2023-07-08 16:35:15 +00:00
ROL
2024-02-26 21:43:27 +00:00
STA caTEMP16+1
LDA caTEMP16 ; *4
2023-07-08 16:35:15 +00:00
ASL
2024-02-26 21:43:27 +00:00
STA caTEMP16
LDA caTEMP16+1
2023-07-08 16:35:15 +00:00
ROL
2024-02-26 21:43:27 +00:00
STA caTEMP16+1
LDA caTO ; temp16 += to
2023-07-08 16:35:15 +00:00
CLC
2024-02-26 21:43:27 +00:00
ADC caTEMP16
STA caTEMP16
LDA caTO+1
ADC caTEMP16+1
STA caTEMP16+1
LDA #$06 ; +=6
2023-07-08 16:35:15 +00:00
CLC
2024-02-26 21:43:27 +00:00
ADC caTEMP16
STA caTO
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-26 21:43:27 +00:00
ADC caTEMP16+1
STA caTO+1
2023-07-08 16:35:15 +00:00
JMP L8A14
2024-02-26 21:43:27 +00:00
L89A7 LDA caFROM
2023-07-08 16:35:15 +00:00
SEC
2024-02-26 21:43:27 +00:00
SBC caY16
STA caTEMP16
LDA caFROM+1
SBC caY16+1
STA caTEMP16+1
LDA caTEMP16
2023-07-08 16:35:15 +00:00
ASL
2024-02-26 21:43:27 +00:00
STA caTEMP16
LDA caTEMP16+1
2023-07-08 16:35:15 +00:00
ROL
2024-02-26 21:43:27 +00:00
STA caTEMP16+1
LDA caTEMP16
2023-07-08 16:35:15 +00:00
ASL
2024-02-26 21:43:27 +00:00
STA caTEMP16
LDA caTEMP16+1
2023-07-08 16:35:15 +00:00
ROL
2024-02-26 21:43:27 +00:00
STA caTEMP16+1
LDA caTEMP16
2023-07-08 16:35:15 +00:00
CLC
ADC #$10
2024-02-26 21:43:27 +00:00
STA caTEMP16
LDA caTEMP16+1
2023-07-08 16:35:15 +00:00
ADC #$00
2024-02-26 21:43:27 +00:00
STA caTEMP16+1
LDA caTEMP16
2023-07-08 16:35:15 +00:00
CLC
2024-02-26 21:43:27 +00:00
ADC caTO
STA caTO
LDA caTEMP16+1
ADC caTO+1
STA caTO+1
2024-02-26 20:27:45 +00:00
2024-02-26 21:43:27 +00:00
LDA caY16
2023-07-08 16:35:15 +00:00
PHP
2024-02-26 21:43:27 +00:00
DEC caY16
2023-07-08 16:35:15 +00:00
PLP
BNE L89EC
2024-02-26 21:43:27 +00:00
DEC caY16+1
L89EC INC caY1
2023-07-08 16:35:15 +00:00
BNE L89F2
2024-02-26 21:43:27 +00:00
INC caY1high
L89F2 DEC caX4mask
2023-07-08 16:35:15 +00:00
BPL L89FC
2024-02-26 20:27:45 +00:00
LDA #caMAXMASK
2024-02-26 21:43:27 +00:00
STA caX4mask
DEC caX4
L89FC INC caX1mask
LDA caX1mask
2024-02-26 20:27:45 +00:00
CMP #caMAXMASK+1
2023-07-08 16:35:15 +00:00
BNE L8A0A
LDA #$00
2024-02-26 21:43:27 +00:00
STA caX1mask
INC caX1
L8A0A DEC caY2
LDA caY2
2023-07-08 16:35:15 +00:00
CMP #$FF
BNE L8A14
2024-02-26 21:43:27 +00:00
DEC caY2high
L8A14 INC caFROM
2023-07-08 16:35:15 +00:00
BNE L8A1A
2024-02-26 21:43:27 +00:00
INC caFROM+1
L8A1A INC caX3mask
LDA caX3mask
2024-02-26 20:27:45 +00:00
CMP #caMAXMASK+1
2023-07-08 16:35:15 +00:00
BNE L8A28
LDA #$00
2024-02-26 21:43:27 +00:00
STA caX3mask
INC caX3
L8A28 DEC caY4
LDA caY4
2023-07-08 16:35:15 +00:00
CMP #$FF
BNE L8A32
2024-02-26 21:43:27 +00:00
DEC caY4high
L8A32 INC caY3 ; y++
2023-07-08 16:35:15 +00:00
BNE L8A38
2024-02-26 21:43:27 +00:00
INC caY3high
L8A38 DEC caX2mask ; mask--
2023-07-08 16:35:15 +00:00
BPL L8A42
2024-02-26 21:43:27 +00:00
LDA #caMAXMASK ; reset mask
STA caX2mask
DEC caX2 ; x--
2023-07-08 16:35:15 +00:00
L8A42 JMP L8951
2024-02-26 20:27:45 +00:00
*-----------------------------------
* CALCULE LA COLONNE (X/A)
*-----------------------------------
* in: X/A
* out: A: bit index
* Y: column
caBI2BY = 2 ; HGR: 7, SHR: 2
caCALCX STX $6F
2023-07-08 16:35:15 +00:00
LDY #$08
SEC
2024-02-26 20:27:45 +00:00
SBC #caBI2BY
2023-07-08 16:35:15 +00:00
L8A4C PHP
ROL $70
ASL $6F
ROL
PLP
BCC L8A5A
2024-02-26 20:27:45 +00:00
SBC #caBI2BY
2023-07-08 16:35:15 +00:00
JMP L8A5C
2024-02-26 20:27:45 +00:00
L8A5A ADC #caBI2BY
2023-07-08 16:35:15 +00:00
L8A5C DEY
BNE L8A4C
BCS L8A64
2024-02-26 20:27:45 +00:00
ADC #caBI2BY
2023-07-08 16:35:15 +00:00
CLC
L8A64 ROL $70
LDY $70
RTS
2024-02-26 20:27:45 +00:00
*-----------------------------------
* DRAW ALL POSSIBLE POINTS
*-----------------------------------
caDRAWPOINTS
2024-02-26 21:43:27 +00:00
LDY caY2high
2023-07-08 16:35:15 +00:00
BNE L8A8C
2024-02-26 21:43:27 +00:00
LDY caY2
CPY #176
2023-07-08 16:35:15 +00:00
BCS L8A8C
2024-02-08 21:48:24 +00:00
JSR setHGRPOINTERS
2024-02-26 21:43:27 +00:00
LDY caX3
2024-02-22 11:46:31 +00:00
CPY #hgrWIDTH
2023-07-08 16:35:15 +00:00
BCS L8A81
2024-02-26 21:43:27 +00:00
LDX caX3mask
2024-02-26 20:27:45 +00:00
JSR caDRAW
2024-02-26 21:43:27 +00:00
L8A81 LDY caX2
2024-02-22 11:46:31 +00:00
CPY #hgrWIDTH
2023-07-08 16:35:15 +00:00
BCS L8A8C
2024-02-26 21:43:27 +00:00
LDX caX2mask
2024-02-26 20:27:45 +00:00
JSR caDRAW
2024-02-26 21:43:27 +00:00
L8A8C LDY caY1high
2023-07-08 16:35:15 +00:00
BNE L8AAF
2024-02-26 21:43:27 +00:00
LDY caY1
CPY #176
2023-07-08 16:35:15 +00:00
BCS L8AAF
2024-02-08 21:48:24 +00:00
JSR setHGRPOINTERS
2024-02-26 21:43:27 +00:00
LDY caX3
2024-02-22 11:46:31 +00:00
CPY #hgrWIDTH
2023-07-08 16:35:15 +00:00
BCS L8AA4
2024-02-26 21:43:27 +00:00
LDX caX3mask
2024-02-26 20:27:45 +00:00
JSR caDRAW
2024-02-26 21:43:27 +00:00
L8AA4 LDY caX2
2024-02-22 11:46:31 +00:00
CPY #hgrWIDTH
2023-07-08 16:35:15 +00:00
BCS L8AAF
2024-02-26 21:43:27 +00:00
LDX caX2mask
2024-02-26 20:27:45 +00:00
JSR caDRAW
2024-02-26 21:43:27 +00:00
L8AAF LDY caY3high
2023-07-08 16:35:15 +00:00
BNE L8AD2
2024-02-26 21:43:27 +00:00
LDY caY3
CPY #176
2023-07-08 16:35:15 +00:00
BCS L8AD2
2024-02-08 21:48:24 +00:00
JSR setHGRPOINTERS
2024-02-26 21:43:27 +00:00
LDY caX4
2024-02-22 11:46:31 +00:00
CPY #hgrWIDTH
2023-07-08 16:35:15 +00:00
BCS L8AC7
2024-02-26 21:43:27 +00:00
LDX caX4mask
2024-02-26 20:27:45 +00:00
JSR caDRAW
2024-02-26 21:43:27 +00:00
L8AC7 LDY caX1
2024-02-22 11:46:31 +00:00
CPY #hgrWIDTH
2023-07-08 16:35:15 +00:00
BCS L8AD2
2024-02-26 21:43:27 +00:00
LDX caX1mask
2024-02-26 20:27:45 +00:00
JSR caDRAW
2024-02-26 21:43:27 +00:00
L8AD2 LDY caY4high
2023-07-08 16:35:15 +00:00
BNE L8AF5
2024-02-26 21:43:27 +00:00
LDY caY4
CPY #176
2023-07-08 16:35:15 +00:00
BCS L8AF5
2024-02-08 21:48:24 +00:00
JSR setHGRPOINTERS
2024-02-26 21:43:27 +00:00
LDY caX4
2024-02-22 11:46:31 +00:00
CPY #hgrWIDTH
2023-07-08 16:35:15 +00:00
BCS L8AEA
2024-02-26 21:43:27 +00:00
LDX caX4mask
2024-02-26 20:27:45 +00:00
JSR caDRAW
2024-02-26 21:43:27 +00:00
L8AEA LDY caX1
2024-02-22 11:46:31 +00:00
CPY #hgrWIDTH
2023-07-08 16:35:15 +00:00
BCS L8AF5
2024-02-26 21:43:27 +00:00
LDX caX1mask
2024-02-26 20:27:45 +00:00
JMP caDRAW
2023-07-08 16:35:15 +00:00
L8AF5 RTS
2024-02-26 20:27:45 +00:00
*-----------------------------------
* DRAW OR HIDE BYTE
*-----------------------------------
caDRAW LDA caFGMODE
2023-07-08 16:35:15 +00:00
BNE L8B02
2024-02-22 11:46:31 +00:00
LDA [ptrHGR1],Y ; hide
2023-07-08 16:35:15 +00:00
AND L8B0C,X
2024-02-19 16:43:51 +00:00
STA [ptrHGR1],Y
2023-07-08 16:35:15 +00:00
RTS
2024-02-22 11:46:31 +00:00
L8B02 LDA [ptrHGR2],Y ; show
2023-07-08 16:35:15 +00:00
AND L8B13,X
2024-02-19 16:43:51 +00:00
ORA [ptrHGR1],Y
STA [ptrHGR1],Y
2023-07-08 16:35:15 +00:00
RTS
2024-02-26 20:27:45 +00:00
* 00 01 00 01 02 03 04 05 06
L8B0C HEX 00,00 ; F0,F0,F0,F0,8F,8F,8F
L8B13 HEX FF,FF ; 8F,8F,8F,8F,F0,F0,F0
2023-07-08 16:35:15 +00:00
*-------------------------------
* SHOW GAME OVER
*-------------------------------
2024-02-09 22:22:41 +00:00
animGAMEOVER
LDA #$01
2023-07-08 16:35:15 +00:00
STA L8D4B
2024-02-22 11:46:31 +00:00
LDA #>oldHGR1
2024-02-08 21:48:24 +00:00
STA hgrPAGE
2023-07-08 16:35:15 +00:00
L8B23 JSR L8BCF
JSR L8BBE
JSR L8BAD
JSR L8B9C
JSR L8B8B
JSR L8B7A
JSR L8B8B
JSR L8B9C
JSR L8BAD
JSR L8BBE
JSR L8BCF
JSR L8C24
JSR L8C13
JSR L8C02
JSR L8BF1
JSR L8BE0
JSR L8BF1
JSR L8C02
JSR L8C13
JSR L8C24
LDA L8D4B
CMP #$64
BCC L8B23
JSR L8BCF
JSR L8BBE
JSR L8BAD
JSR L8B9C
JSR L8B8B
JSR L8B7A
CLC
RTS
2024-02-26 21:43:27 +00:00
*--- Data here is a list of lines to draw
2024-02-18 22:14:46 +00:00
L8B7A JSR drawGOLINE
2023-07-08 16:35:15 +00:00
HEX 000102030405060708090A020100
2024-02-18 22:14:46 +00:00
L8B8B JSR drawGOLINE
2023-07-08 16:35:15 +00:00
HEX 0000010203040507090A02010000
2024-02-18 22:14:46 +00:00
L8B9C JSR drawGOLINE
2023-07-08 16:35:15 +00:00
HEX 00000001020304090A0201000000
2024-02-18 22:14:46 +00:00
L8BAD JSR drawGOLINE
2023-07-08 16:35:15 +00:00
HEX 000000000102030A020100000000
2024-02-18 22:14:46 +00:00
L8BBE JSR drawGOLINE
2023-07-08 16:35:15 +00:00
HEX 000000000001030A010000000000
2024-02-18 22:14:46 +00:00
L8BCF JSR drawGOLINE
2023-07-08 16:35:15 +00:00
HEX 0000000000000101000000000000
2024-02-18 22:14:46 +00:00
L8BE0 JSR drawGOLINE
2023-07-08 16:35:15 +00:00
HEX 0001020A09080706050403020100
2024-02-18 22:14:46 +00:00
L8BF1 JSR drawGOLINE
2023-07-08 16:35:15 +00:00
HEX 000001020A090705040302010000
2024-02-18 22:14:46 +00:00
L8C02 JSR drawGOLINE
2023-07-08 16:35:15 +00:00
HEX 00000001020A0904030201000000
2024-02-18 22:14:46 +00:00
L8C13 JSR drawGOLINE
2023-07-08 16:35:15 +00:00
HEX 0000000001020A03020100000000
2024-02-18 22:14:46 +00:00
L8C24 JSR drawGOLINE
2023-07-08 16:35:15 +00:00
HEX 0000000000010A03010000000000
2024-02-26 21:43:27 +00:00
*--- Data here is the HGR data
*L8C35 HEX 8080808080808080808080808080
*L8C43 HEX C0AAD5AAD5AAD5AAD5AAD5AAD580
*L8C51 HEX 9080808080808080808080808082
*L8C5F HEX 90AAD1A2D5A885A8C5A2D4A29582
*L8C6D HEX 908291A2C5A88088C5A294A09082
*L8C7B HEX 908290A2C4A88088C5A294A09082
*L8C89 HEX 908290A2C4A88188C4A2D4A09582
*L8C97 HEX 90A2D1A2C4888088C4A284A08582
*L8CA5 HEX 908291A2C4888088C4AA84A08582
*L8CB3 HEX 908291A2C4888088C48A84A09182
*L8CC1 HEX 90AA91A2C4A885A88582D4A29182
*L8CCF DA L8C35-$D
* DA L8C43-$D
* DA L8C51-$D
* DA L8C5F-$D
* DA L8C6D-$D
* DA L8C7B-$D
* DA L8C89-$D
* DA L8C97-$D
* DA L8CA5-$D
* DA L8CB3-$D
* DA L8CC1-$D
* The new GAME OVER 000102 03040506 07 08090A 0B 0C0D0E0F10 11 12131415 161718 191A1B1C 1D 1E1F2021 22 23242526 27 28292A2B 2C 2D2E
L8C35 hex 000000,00000000,00,000000,00,0000000000,00,00000000,000000,00000000,00,00000000,00,00000000,00,00000000,00,0000
L8C43 hex 000066,66666666,66,666666,66,6666666666,66,66666666,666666,66666666,66,66666666,66,66666666,66,66666666,60,0000
L8C51 hex 006000,00000000,00,000000,00,0000000000,00,00000000,000000,00000000,00,00000000,00,00000000,00,00000000,00,6000
L8C5F hex 006000,66666660,00,666660,00,6666666660,00,66666660,000000,06666666,00,66600060,00,66666660,00,66666660,00,6000
L8C6D hex 006000,60000060,00,600060,00,6666600060,00,66600000,000000,06000666,00,66600060,00,66600000,00,60000060,00,6000
L8C7B hex 006000,60000000,00,600060,00,6000600060,00,66600000,000000,06000666,00,66600060,00,66600000,00,60000060,00,6000
L8C89 hex 006000,60000000,00,600060,00,6000600060,00,66666000,000000,06000006,00,66600060,00,66666000,00,66666660,00,6000
L8C97 hex 006000,60006660,00,666660,00,6000600060,00,60000000,000000,06000006,00,66600060,00,60000000,00,66666000,00,6000
L8CA5 hex 006000,60000060,00,600060,00,6000600060,00,60000000,000000,06000006,00,66666660,00,60000000,00,66666000,00,6000
L8CB3 hex 006000,60000060,00,600060,00,6000600060,00,60000000,000000,06000006,00,66666000,00,60000000,00,66600060,00,6000
L8CC1 hex 006000,66666660,00,600060,00,6000600060,00,66666660,000000,06666666,00,00600000,00,66666660,00,66600060,00,6000
L8CCF DA L8C35
DA L8C43
DA L8C51
DA L8C5F
DA L8C6D
DA L8C7B
DA L8C89
DA L8C97
DA L8CA5
DA L8CB3
DA L8CC1
2023-07-08 16:35:15 +00:00
2024-02-18 22:14:46 +00:00
drawGOLINE PLA ; pour afficher game over
2024-02-14 20:46:43 +00:00
STA ptrDATA
2023-07-08 16:35:15 +00:00
PLA
2024-02-14 20:46:43 +00:00
STA ptrDATA+1
2024-02-26 21:43:27 +00:00
LDY #$50 ; 1<>re ligne
2024-02-08 21:48:24 +00:00
STY theY
2023-07-08 16:35:15 +00:00
BNE L8D12
2024-02-08 21:48:24 +00:00
L8CF1 JSR setHGRPOINTER
2023-07-08 16:35:15 +00:00
LDY #$00
2024-02-14 20:46:43 +00:00
LDA (ptrDATA),Y
2023-07-08 16:35:15 +00:00
ASL
TAX
LDA L8CCF,X
STA L8D08+1
LDA L8CCF+1,X
STA L8D08+2
2024-02-26 21:43:27 +00:00
* LDY #$0D ; 1<>re colonne
ldy #$39
ldx #0
L8D08 LDA L8D08,x
2024-02-19 16:43:51 +00:00
STA [ptrHGR1],Y
2023-07-08 16:35:15 +00:00
INY
2024-02-26 21:43:27 +00:00
* CPY #$1B ; derni<6E>re colonne
inx
cpx #$2f
2023-07-08 16:35:15 +00:00
BCC L8D08
L8D12 JSR L8D4C
2024-02-08 21:48:24 +00:00
INC theY
LDY theY
2024-02-26 21:43:27 +00:00
CPY #$5F ; derni<6E>re ligne
2023-07-08 16:35:15 +00:00
BCC L8CF1
2024-02-26 21:43:27 +00:00
2023-07-08 16:35:15 +00:00
LDX L8D4B
LDY #$FF
L8D22 DEY
BNE L8D22
DEX
BNE L8D22
INC L8D4B
2024-02-26 21:43:27 +00:00
2024-02-12 18:28:22 +00:00
LDA fgINPUT
2024-02-08 21:48:24 +00:00
CMP #chrK
2023-07-08 16:35:15 +00:00
BEQ L8D3B
2024-02-26 21:43:27 +00:00
cmp #chrJ
beq L8D23
cmp #chrP
bne L8D3B
2024-02-26 21:49:36 +00:00
2024-02-26 21:43:27 +00:00
jsr read4PLAY
bmi L8D41 ; button 1 pressed?
bvs L8D41 ; button 2 pressed?
bvc L8D3B
L8D23 LDAL BUTN1
2023-07-08 16:35:15 +00:00
BMI L8D41
2024-02-26 20:27:45 +00:00
LDAL BUTN0
2023-07-08 16:35:15 +00:00
BMI L8D41
2024-02-26 21:49:36 +00:00
2024-02-26 20:27:45 +00:00
* LDA KBD
2024-02-26 21:49:36 +00:00
L8D3B jsr checkKEY
2023-07-08 16:35:15 +00:00
BMI L8D41
RTS
L8D41 PLA
PLA
SEC
2024-02-26 20:27:45 +00:00
* LDA KBD
* STA KBDSTROBE
2023-07-08 16:35:15 +00:00
RTS
L8D4B DB $9D
2024-02-14 20:46:43 +00:00
L8D4C INC ptrDATA
2023-07-08 16:35:15 +00:00
BNE L8D52
2024-02-14 20:46:43 +00:00
INC ptrDATA+1
2023-07-08 16:35:15 +00:00
L8D52 RTS
ds \