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

6029 lines
83 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
2024-02-08 21:48:24 +00:00
org $0
2023-07-08 16:35:15 +00:00
lst off
2024-02-08 21:48:24 +00:00
ds $800
* 0 vide
* 1 mur
* 2 mur dur
* 3 <EFBFBD>chelle visible
* 4 liane
* 5 trappe
* 6 <EFBFBD>chelle invisible
* 7 tr<EFBFBD>sor
* 8 ennemi
* 9 h<EFBFBD>ros
2024-02-12 18:28:22 +00:00
* Sprite quand heros ennemi tombe dans un trou :
* - venant de gauche : 20 53 (35h)
* - venant de droite : 19 54 (36h)
*
2024-02-08 21:48:24 +00:00
*-----------------------------------
* EQUATES
*-----------------------------------
2024-02-12 18:28:22 +00:00
lvlWIDTH = 28 ; $1c
lvlHEIGHT = 16 ; $10
sprWIDTH = 10
sprHEIGHT = 11
2024-02-08 21:48:24 +00:00
nbLIVES = 5
maxLEVEL = 150
maxHEIGHT = 192 ; lines
2024-02-09 22:22:41 +00:00
modeEDIT = 0 ; to decode level
modeGAME = 1
2024-02-08 21:48:24 +00:00
sprEMPTY = 0
sprWALL = 1
sprWALLI = 2 ; mur indestructible
sprLADDER = 3
2024-02-09 22:22:41 +00:00
sprBAR = 4
2024-02-08 21:48:24 +00:00
sprTRAP = 5
sprLADDERI = 6
sprCHEST = 7
sprFOE = 8
sprHERO = 9
2024-02-12 18:28:22 +00:00
sprCURSOR = 10
spr0 = $3b ; until $44
2024-02-14 20:46:43 +00:00
sprA = $45 ; until $5e >.()/-< (latest sprite is $65)
2024-02-12 18:28:22 +00:00
minJOY = $12 ; joystick min/center/max values
ctrJOY = $25
maxJOY = $3b
2024-02-14 20:46:43 +00:00
*--- The big zero page usage
2024-02-12 18:28:22 +00:00
boardX = $00
boardY = $01
2024-02-14 20:46:43 +00:00
heroSTEPX = $02
heroSTEPY = $03
heroSPRITE = $04
fgLEFTRIGHT = $05
ptrBOARD = $06 ; $06..$07: pointer to board
ptrBBACK = $08 ; $08..$09: pointer to back board
ptrDATA = $0a ; $0a..$0b: pointer to data (HGR or other)
ptrHGR1 = $0c ; $0c..$0d
ptrHGR2 = $0e ; $0e..$0f
ptrSTRSND = $10 ; $10..$11: pointer to some table (string, sound)
foeX = $12
foeY = $13
foeC88 = $14
foeC90 = $15
foeC70 = $16
foeC78 = $17 ; coordinate
foeC80 = $18 ; coordinate
2024-02-12 18:28:22 +00:00
idxFOE = $19 ; current foe index
2024-02-14 20:46:43 +00:00
fgODDEVEN = $1a
2024-02-12 18:28:22 +00:00
theYSCREEN = $1b
theXSCREEN = $1c
nbLINES = $1d
2024-02-08 21:48:24 +00:00
theA = $1e
hgrPAGE = $1f
2024-02-14 20:46:43 +00:00
CH = $24 ; **
CV = $25 ; **
CSWL = $36 ; **
CSWH = $37 ; **
KSWL = $38 ; **
KSWH = $39 ; **
2024-02-12 18:28:22 +00:00
theMASK1 = $50
theMASK2 = $51
fgCOLLISION = $52
theJOYX = $65
theJOYY = $66
sprTABLE = $71
2024-02-08 21:48:24 +00:00
theX = $85
theY = $86
activePAGE = $87
2024-02-12 18:28:22 +00:00
tempINDEX = $88
2024-02-08 21:48:24 +00:00
theCENTAINE = $89
theDIZAINE = theCENTAINE+1 ; 8a
theUNITE = theDIZAINE+1 ; 8b
2024-02-09 22:22:41 +00:00
theSPEED = $8c ; 8c
2024-02-08 21:48:24 +00:00
nbFOE = $8d ; 8d
theSCORE = $8e ; 8e..8f.90..91
2024-02-13 08:09:27 +00:00
idxLVLDISK = $92 ; index in level buffer from disk
2024-02-08 21:48:24 +00:00
nbCHEST = $93 ; 93
2024-02-14 20:46:43 +00:00
fgCHEST = $94 ; 94 1: not a chest, 0: a chest
intLEVEL = $96 ; 96 theLEVEL-1
2024-02-12 18:28:22 +00:00
fgSOUND = $99 ; 99
2024-02-13 08:09:27 +00:00
fgPLAY = $9a ; 1: alive, 0: dead
2024-02-09 22:22:41 +00:00
fgLVLMODE = $a2 ; 0: edit, <>0: game
idxLADDERI = $a3
theLEVEL = $a6
2024-02-13 08:09:27 +00:00
fgDEMO = $a7
2024-02-14 20:46:43 +00:00
ptrDEMO = $a8 ; $a8..$a9 - pointer to demo data
demoKEY = $aa ; the demo key actions
demoREPEAT = $ab ; the demo repeat factor
2024-02-13 08:09:27 +00:00
fgKEYBTN0 = $ac ; 1: no key/btn0 pressed, 0: key/btn0 pressed
fgCHANGE = $ad ; 1: no change, 0: change
2024-02-12 18:28:22 +00:00
sprDATA = $df ; $df..$ff
2024-02-08 21:48:24 +00:00
2024-02-12 18:28:22 +00:00
fgINPUT = $95 ; "J"oystick, "K"eyboard
2024-02-08 21:48:24 +00:00
theMEN = $98
chrLA = $88
chrRET = $8d
chrRA = $95
chrESC = $9b
chrSPC = " "
chrZERO = "0"
chrNINE = "9"
chrDOT = "."
chrA = "A"
chrI = "I"
chrJ = "J"
chrK = "K"
chrL = "L"
chrN = "N"
chrO = "O"
chrU = "U"
chrY = "Y"
chrZ = "Z"
*-----------------------------------
* SOFTSWITCHES
*-----------------------------------
KBD EQU $C000
KBDSTROBE EQU $C010
SPKR EQU $C030
TXTCLR EQU $C050
MIXCLR EQU $C052
TXTPAGE1 EQU $C054
TXTPAGE2 EQU $C055
HIRES EQU $C057
BUTN0 EQU $C061
BUTN1 EQU $C062
PADDL0 EQU $C064
PADDL1 EQU $C065
PTRIG EQU $C070
SETKBD EQU $FE89
*-----------------------------------
* DONNEES
*-----------------------------------
put LR.Data
*-----------------------------------
* PAGES GRAPHIQUES
*-----------------------------------
HGR1 ds 8192,$20
HGR2 ds 8192,$40
*-----------------------------------
2024-02-13 08:09:27 +00:00
* ENTRY POINT
2024-02-08 21:48:24 +00:00
*-----------------------------------
L6000 JSR checkJOYSTICK
2023-07-08 16:35:15 +00:00
LDA #$01 ; read score table
2024-02-08 21:48:24 +00:00
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
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
LDA #>HGR1
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
BEQ L603F
BPL L603C
2024-02-14 20:46:43 +00:00
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INY
BPL L6028
L603C TAY
BPL L6028
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
STA TXTPAGE1
STA HIRES
STA MIXCLR
STA TXTCLR
JMP L618E
*---
L6056 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
STA $97
STA $A5
STA $53
2024-02-14 20:46:43 +00:00
STA demoREPEAT
STA ptrDEMO ; demo actions
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-08 21:48:24 +00:00
L6086 LDA scorebuf+$FF
2023-07-08 16:35:15 +00:00
BNE L6091
2024-02-14 20:46:43 +00:00
LDA CSWL ; this code is useless
LDX CSWH ; if no copy protection remains
2023-07-08 16:35:15 +00:00
BNE L6095
2024-02-14 20:46:43 +00:00
L6091 LDA KSWL
LDX KSWH
L6095 STA CH
STX CV
L6099 JSR clearHGRPAGES ; clear HGR pages and draw board
2023-07-08 16:35:15 +00:00
STA TXTPAGE1
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
STA $9E
STA $9F
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-09 22:22:41 +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
STX $9C
STX $54
LDA $97
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
STA $60
LDA L6CA7+1,X
STA $61
LDA L6CA7+2,X
STA $62
LDY $97
LDA L621D,Y
STA $5F
2024-02-14 20:46:43 +00:00
2023-07-08 16:35:15 +00:00
L60E4 JSR L64BD
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
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?
2023-07-08 16:35:15 +00:00
BEQ L611A
CMP #$FF
2024-02-14 20:46:43 +00:00
BEQ L611A ; we won
2023-07-08 16:35:15 +00:00
L6107 JSR L75F4
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
2023-07-08 16:35:15 +00:00
JSR L6C82
2024-02-13 08:09:27 +00:00
LDA fgPLAY
2023-07-08 16:35:15 +00:00
BEQ L613F
2024-02-14 20:46:43 +00:00
BNE L60E4 ; loop
2024-02-08 21:48:24 +00:00
L611A INC theLEVEL
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--
2023-07-08 16:35:15 +00:00
L6124 LDX #$0F
STX $5C
L6128 LDY #$01
LDA #$00
2024-02-08 21:48:24 +00:00
JSR printSCORE
2023-07-08 16:35:15 +00:00
JSR L622A
JSR L622A
JSR L622A
DEC $5C
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-09 22:22:41 +00:00
L618E JSR waitKEYUP
2023-07-08 16:35:15 +00:00
LDX #$FF
LDY #$FF
LDA #$03
2024-02-08 21:48:24 +00:00
STA theY
2024-02-12 18:28:22 +00:00
L6199 LDA fgINPUT
2024-02-08 21:48:24 +00:00
CMP #chrK
2023-07-08 16:35:15 +00:00
BEQ L61A9
LDA BUTN1
BMI L6201
LDA BUTN0
BMI L6201
L61A9 LDA KBD
BMI L61F6
DEX
BNE L6199
DEY
BNE L6199
2024-02-08 21:48:24 +00:00
DEC theY
2023-07-08 16:35:15 +00:00
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
2023-07-08 16:35:15 +00:00
STX $9D
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
2023-07-08 16:35:15 +00:00
JMP L6056
L61D0 LDA #$00
2024-02-09 22:22:41 +00:00
STA fgSOUND
2023-07-08 16:35:15 +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
2023-07-08 16:35:15 +00:00
L61E9 JSR L786B
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
L61F6 STA KBDSTROBE
2024-02-09 22:22:41 +00:00
CMP #$85 ; 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
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
2023-07-08 16:35:15 +00:00
STX $9D
LDA #$02
2024-02-13 08:09:27 +00:00
STA fgDEMO
2023-07-08 16:35:15 +00:00
JMP L6056
2024-02-09 22:22:41 +00:00
L6211 JMP enterEDITOR ; Jump to the Editor
2023-07-08 16:35:15 +00:00
2024-02-14 20:46:43 +00:00
L6214 HEX 000306090C0F121518 ; 0..3..6..9..12..15..18..21..24
2023-07-08 16:35:15 +00:00
L621D HEX 26262E4447494A4B4C4D4E4F50
L622A LDA $5C
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
2023-07-08 16:35:15 +00:00
STX $A0
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
2023-07-08 16:35:15 +00:00
L625A STA L0C98,X
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
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
2023-07-08 16:35:15 +00:00
INC $97
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-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
*-----------------------------------
diskLEVEL STA LB7F4
2024-02-13 08:09:27 +00:00
LDA fgDEMO
2023-07-08 16:35:15 +00:00
LSR
BEQ L6345
2024-02-08 21:48:24 +00:00
LDA intLEVEL ; level
2023-07-08 16:35:15 +00:00
LSR
LSR
LSR
LSR
CLC
ADC #$03
2024-02-08 21:48:24 +00:00
STA LB7EC ; track
LDA intLEVEL
2023-07-08 16:35:15 +00:00
AND #$0F
2024-02-08 21:48:24 +00:00
STA LB7ED ; sector
2024-02-09 22:22:41 +00:00
LDA #<levelDISK
2023-07-08 16:35:15 +00:00
STA LB7F0
2024-02-09 22:22:41 +00:00
LDA #>levelDISK
2023-07-08 16:35:15 +00:00
STA LB7F0+1
LDA #$00
STA LB7EB
L6338 LDY #<LB7E8
LDA #>LB7E8
2024-02-08 21:48:24 +00:00
jsr callRWTS ; LoGo - JSR $0023 - Souvenir from protection
2023-07-08 16:35:15 +00:00
BCC L6344
2024-02-08 21:48:24 +00:00
JMP showTITLEPAGE
2023-07-08 16:35:15 +00:00
L6344 RTS
2024-02-08 21:48:24 +00:00
L6345 LDA theLEVEL
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
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
*-------------------------------
* CALL RWTS
*-------------------------------
readSCORE STA LB7F4 ; command
2023-07-08 16:35:15 +00:00
LDA #$0C
2024-02-08 21:48:24 +00:00
STA LB7EC ; track
2023-07-08 16:35:15 +00:00
LDA #$0F
2024-02-08 21:48:24 +00:00
STA LB7ED ; sector
LDA #<scorebuf ; where to load
2023-07-08 16:35:15 +00:00
STA LB7F0
2024-02-08 21:48:24 +00:00
LDA #>scorebuf
2023-07-08 16:35:15 +00:00
STA LB7F0+1
LDA #$00
STA LB7EB
2024-02-08 21:48:24 +00:00
LDY #<LB7E8 ; IOB table
2023-07-08 16:35:15 +00:00
LDA #>LB7E8
2024-02-08 21:48:24 +00:00
JSR callRWTS
2023-07-08 16:35:15 +00:00
BCC L6381
2024-02-08 21:48:24 +00:00
JMP showTITLEPAGE
*--- 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-12 18:28:22 +00:00
LDA #$00 ; 0 means not a LR disk
2023-07-08 16:35:15 +00:00
RTS
2024-02-08 21:48:24 +00:00
L639B LDA #$01 ; master disk
LDX scorebuf+$FF
2023-07-08 16:35:15 +00:00
BNE L63A4
2024-02-12 18:28:22 +00:00
LDA #$FF ; FF means master disk
2023-07-08 16:35:15 +00:00
L63A4 RTS
2024-02-08 21:48:24 +00:00
callRWTS JMP $bd00 ; LoGo - ($0036) to be replaced with JMP $BD00
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
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
STA L0C70,X
STA L0C88,X
LDA #$02
STA L0C78,X
STA L0C80,X
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
2023-07-08 16:35:15 +00:00
LDX #$08
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-14 20:46:43 +00:00
*--- Level is decode for the edit mode
L6469 LDA #>HGR1 ; copy HGR1 > HGR2
STA ptrHGR2+1
2024-02-08 21:48:24 +00:00
LDA #>HGR2
2024-02-14 20:46:43 +00:00
STA ptrHGR1+1
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-14 20:46:43 +00:00
STA ptrHGR2
STA ptrHGR1
2023-07-08 16:35:15 +00:00
TAY
2024-02-14 20:46:43 +00:00
L6478 LDA (ptrHGR1),Y
STA (ptrHGR2),Y
2023-07-08 16:35:15 +00:00
INY
BNE L6478
2024-02-14 20:46:43 +00:00
INC ptrHGR2+1
INC ptrHGR1+1
LDX ptrHGR1+1
2024-02-08 21:48:24 +00:00
CPX #>HGR2+$20
2023-07-08 16:35:15 +00:00
BCC L6478
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
*-----------------------------------
*
*-----------------------------------
2023-07-08 16:35:15 +00:00
L64BD LDA #$01
2024-02-14 20:46:43 +00:00
STA fgCHEST
2023-07-08 16:35:15 +00:00
LDA $9C
BEQ L64CD
BPL L64CA
JMP L67E7
L64CA JMP L68AD
2024-02-12 18:28:22 +00:00
L64CD LDY boardY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,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
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
L6525 LDA #$00
STA $9B
2024-02-14 20:46:43 +00:00
JSR calcSPRITEXY
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
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
2023-07-08 16:35:15 +00:00
JSR L6C13
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
2023-07-08 16:35:15 +00:00
JMP L6C02
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
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
LDA #$00
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
2023-07-08 16:35:15 +00:00
JMP L6C02
L6584 LDA $9B
BNE L658F
LDA #$64
LDX #$08
2024-02-09 22:22:41 +00:00
JSR playSOUND
2023-07-08 16:35:15 +00:00
L658F LDA #$20
STA $A4
STA $9B
JSR L6A12
LDA $9E
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
L65C2 LDA $9F
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
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
2023-07-08 16:35:15 +00:00
JSR L6C26
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
LDA #$00
LDX #$02
BNE L663F
L663B LDA #$03
LDX #$05
L663F JSR L6BF4
JMP L6C02
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
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
2023-07-08 16:35:15 +00:00
JSR L6C26
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
LDA #$08
LDX #$0A
BNE L66B7
L66B3 LDA #$0B
LDX #$0D
L66B7 JSR L6BF4
JMP L6C02
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-09 22:22:41 +00:00
LDA tblBOARDALLL,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-09 22:22:41 +00:00
LDA tblBOARDALLL+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
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
JSR L6C13
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
2023-07-08 16:35:15 +00:00
L675A LDA #$10
LDX #$11
JSR L6BF4
JSR L6C02
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
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
JSR L6C13
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
2023-07-08 16:35:15 +00:00
STA $9C
STA $9E
STA $9F
LDA #$00
STA $A0
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
JSR L884B
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
2023-07-08 16:35:15 +00:00
JSR L884B
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
2023-07-08 16:35:15 +00:00
JSR L6C13
JSR L6C26
LDY $A0
LDA L699E,Y
LDX L69AB,Y
2024-02-13 08:09:27 +00:00
JSR getNOTE
2023-07-08 16:35:15 +00:00
LDX $A0
LDA #$00
CPX #$06
BCS L682B
LDA #$06
2024-02-14 20:46:43 +00:00
L682B STA heroINDEX
2023-07-08 16:35:15 +00:00
JSR L6C02
LDX $A0
CPX #$0C
BEQ L6898
CPX #$00
BEQ L684C
LDA L6979,X
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
2023-07-08 16:35:15 +00:00
LDX $A0
L684C LDA L697A,X
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
2023-07-08 16:35:15 +00:00
LDX $A0
LDA L6992,X
2024-02-08 21:48:24 +00:00
INC theY
JSR coutHGR1
2023-07-08 16:35:15 +00:00
INC $A0
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
2023-07-08 16:35:15 +00:00
LDX $A0
BEQ L6892
DEX
LDA L697A,X
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
STA $9C
SEC
RTS
2024-02-12 18:28:22 +00:00
L6898 LDX boardX
2023-07-08 16:35:15 +00:00
DEX
JMP L6C39
L689E JMP L695C
2024-02-09 22:22:41 +00:00
*-----------------------------------
* CHECK IF WE CAN DIG RIGHT
*-----------------------------------
checkDIGRIGHT
LDA #$01
2023-07-08 16:35:15 +00:00
STA $9C
STA $9E
STA $9F
LDA #$0C
STA $A0
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
JSR L884B
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
2023-07-08 16:35:15 +00:00
JSR L884B
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
2023-07-08 16:35:15 +00:00
JSR L6C13
JSR L6C26
LDY $A0
LDA L6992,Y
LDX L699F,Y
2024-02-13 08:09:27 +00:00
JSR getNOTE
2023-07-08 16:35:15 +00:00
LDX $A0
LDA #$08
CPX #$12
BCS L68F3
LDA #$0E
2024-02-14 20:46:43 +00:00
L68F3 STA heroINDEX
2023-07-08 16:35:15 +00:00
JSR L6C02
LDX $A0
CPX #$18
BEQ L6962
CPX #$0C
BEQ L6914
LDA L6979,X
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
LDX $A0
L6914 LDA L697A,X
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
2023-07-08 16:35:15 +00:00
LDX $A0
LDA L6986,X
2024-02-08 21:48:24 +00:00
JSR coutHGR1
2023-07-08 16:35:15 +00:00
INC $A0
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
2023-07-08 16:35:15 +00:00
LDX $A0
CPX #$0C
BEQ L695C
DEX
LDA L697A,X
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
STA $9C
SEC
RTS
2024-02-12 18:28:22 +00:00
L6962 LDX boardX
2023-07-08 16:35:15 +00:00
INX
JMP L6C39
2024-02-12 18:28:22 +00:00
* Encha<EFBFBD>nement des sprites
2024-02-14 20:46:43 +00:00
L6968
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
L6979 DB $12 ; 11 monte <20>chelle step 2
L697A DB $1B ; 12 creuse 1
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
L6986 DB $26 ; 1E creuse droite step 1
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
L6992 DB $1F ; 2A dig left sprites
DB $1F ; 2B
DB $20 ; 2C
DB $20 ; 2D
DB $21 ; 2E
DB $21 ; 2F
DB $22 ;
DB $22 ;
DB $23 ;
DB $23 ;
DB $24 ;
DB $24 ;
L699E DB $20 ;
L699F DB $20 ;
DB $20 ;
DB $20 ;
DB $20 ;
DB $20 ;
DB $20 ;
DB $20 ;
DB $24 ;
DB $24 ;
DB $24 ;
DB $24 ;
DB $24 ;
L69AB DB $04 ;
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
L69B8 LDA KBD
BMI L69CD
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 L69D6
LDA BUTN1
BMI L69CD
LDA BUTN0
BPL L69D6
2024-02-13 08:09:27 +00:00
L69CD LSR fgKEYBTN0
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
2023-07-08 16:35:15 +00:00
STA $9E
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-09 22:22:41 +00:00
STA $9F ; 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-13 08:09:27 +00:00
L6A12 LDA fgDEMO
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L69B8
LDX KBD
STX KBDSTROBE
2024-02-08 21:48:24 +00:00
STX 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
L6A28 JMP L6AD0
2024-02-09 22:22:41 +00:00
L6A2B CPX #chrSPC
2023-07-08 16:35:15 +00:00
BCS L6A49
2024-02-08 21:48:24 +00:00
STX theA
2023-07-08 16:35:15 +00:00
LDY #$FF
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-12 18:28:22 +00:00
L6A49 LDA fgINPUT
2024-02-08 21:48:24 +00:00
CMP #chrJ
2023-07-08 16:35:15 +00:00
BEQ L6A28
2024-02-08 21:48:24 +00:00
LDX theA
2023-07-08 16:35:15 +00:00
STX $9E
STX $9F
L6A55 RTS
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
2023-07-08 16:35:15 +00:00
LSR $9D
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
2023-07-08 16:35:15 +00:00
LSR $9D
JMP L6A12
INC $97
2024-02-08 21:48:24 +00:00
INC theMEN ; man++
2024-02-13 08:09:27 +00:00
LSR fgPLAY
2023-07-08 16:35:15 +00:00
RTS
2024-02-09 22:22:41 +00:00
*-------------------------------
* 9B - ESC - PAUSE GAME
*-------------------------------
doPAUSE JSR waitKEYDOWN
2023-07-08 16:35:15 +00:00
CMP #$9B
2024-02-09 22:22:41 +00:00
BNE doPAUSE
2023-07-08 16:35:15 +00:00
JMP L6A12
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
2023-07-08 16:35:15 +00:00
JMP L6A12
2024-02-09 22:22:41 +00:00
*-------------------------------
* 8A - DOWN ARROW - MOVE LEFT
*-------------------------------
doDOWNARROW LDA #chrJ
2024-02-12 18:28:22 +00:00
STA fgINPUT
2023-07-08 16:35:15 +00:00
JMP L6A12
2024-02-09 22:22:41 +00:00
*-------------------------------
* 8B - UP ARROW - MOVE DOWN
*-------------------------------
doUPARROW LDA #chrK
2024-02-12 18:28:22 +00:00
STA fgINPUT
2023-07-08 16:35:15 +00:00
JMP L6A12
2024-02-09 22:22:41 +00:00
*-------------------------------
* 98 - CTRL-X - FLIPS X-AXIS
*-------------------------------
doFLIPX LDA joyXMIN
LDX joyXMAX
STA joyXMAX
STX joyXMIN
2023-07-08 16:35:15 +00:00
JMP L6A12
2024-02-09 22:22:41 +00:00
*-------------------------------
* 99 - CTRL-Y - FLIPS Y-AXIS
*-------------------------------
doFLIPY LDA joyYMIN
LDX joyYMAX
STA joyYMAX
STX joyYMIN
2023-07-08 16:35:15 +00:00
JMP L6A12
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
2023-07-08 16:35:15 +00:00
JMP L6A12
2024-02-09 22:22:41 +00:00
*-------------------------------
* 95 - RIGHT ARROW - SPEEDS UP
*-------------------------------
doSPEEDUP LDA theSPEED
2023-07-08 16:35:15 +00:00
CMP #$0F
BEQ L6ACD
2024-02-09 22:22:41 +00:00
INC theSPEED
2023-07-08 16:35:15 +00:00
L6ACD JMP L6A12
2024-02-09 22:22:41 +00:00
*-------------------------------
*
*-------------------------------
2023-07-08 16:35:15 +00:00
L6AD0 LDA BUTN1
BPL L6AD9
2024-02-08 21:48:24 +00:00
LDA #chrU
2023-07-08 16:35:15 +00:00
BNE L6AE0
L6AD9 LDA BUTN0
BPL L6AE5
2024-02-08 21:48:24 +00:00
LDA #chrO
2023-07-08 16:35:15 +00:00
L6AE0 STA $9E
STA $9F
RTS
2024-02-12 18:28:22 +00:00
L6AE5 JSR readJOYSTICK
LDY theJOYX
2024-02-09 22:22:41 +00:00
LDA joyXMAX
2023-07-08 16:35:15 +00:00
CMP #$2E
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
2023-07-08 16:35:15 +00:00
CMP #$2E
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
L6B1C LDA #$C0
L6B1E STA $9F
2024-02-12 18:28:22 +00:00
LDY theJOYY
2024-02-09 22:22:41 +00:00
LDA joyYMIN
2023-07-08 16:35:15 +00:00
CMP #$2E
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
2023-07-08 16:35:15 +00:00
CMP #$2E
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
2023-07-08 16:35:15 +00:00
L6B56 STA $9E
RTS
2024-02-09 22:22:41 +00:00
tblKEY HEX 9E809B9281938A8B889598998D00
tblKEYADR DA doNEXTLEVEL-1 ; 9E - CTRL-^
DA doEXTRAMAN-1 ; 80 - CTRL-@
DA doPAUSE-1 ; 9B - ESCAPE
DA doTERMINATE-1 ; 92 - CTRL-R
DA doABORTMAN-1 ; 81 - CTRL-A
DA doTOGGLESOUND-1 ; 93 - CTRL-S
DA doDOWNARROW-1 ; 8A - DOWN ARROW
DA doUPARROW-1 ; 8B - UP ARROW
DA doSPEEDUP-1 ; 88 - LEFT ARROW
DA doSLOWDOWN-1 ; 95 - RIGHT ARROW
DA doFLIPX-1 ; 98 - CTRL-X
DA doFLIPY-1 ; 99 - CTRL-Y
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
2023-07-08 16:35:15 +00:00
LDA L6968,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-09 22:22:41 +00:00
LDA tblBOARDALLL,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--
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
*-----------------------------------
*
*-----------------------------------
L6BF4 INC heroINDEX
CMP heroINDEX
2023-07-08 16:35:15 +00:00
BCC L6BFD
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
*-----------------------------------
*
*-----------------------------------
L6C02 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
*-----------------------------------
*
*-----------------------------------
L6C13 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
*-----------------------------------
*
*-----------------------------------
L6C26 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
*-----------------------------------
*
*-----------------------------------
2023-07-08 16:35:15 +00:00
L6C39 LDA #$00
STA $9C
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-12 18:28:22 +00:00
LDA #sprEMPTY
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
2023-07-08 16:35:15 +00:00
LDX #$FF
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
2023-07-08 16:35:15 +00:00
LDA #$B4
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-08 21:48:24 +00:00
L6C82 LDX nbFOE
2023-07-08 16:35:15 +00:00
BEQ L6CA6
INC $64
LDY $64
CPY #$03
BCC L6C92
LDY #$00
STY $64
L6C92 LDA |$0060,Y
STA $63
L6C97 LSR $63
BCC L6CA2
JSR L6CDB
2024-02-13 08:09:27 +00:00
LDA fgPLAY
2023-07-08 16:35:15 +00:00
BEQ L6CA6
L6CA2 LDA $63
BNE L6C97
L6CA6 RTS
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
2023-07-08 16:35:15 +00:00
L6CCB HEX 082B2C3031323628292A2D2E2F353334
2024-02-08 21:48:24 +00:00
2024-02-12 18:28:22 +00:00
L6CDB 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
2023-07-08 16:35:15 +00:00
L6CE7 JSR L75CE
2024-02-14 20:46:43 +00:00
LDA foeC70
2023-07-08 16:35:15 +00:00
BMI L6D08
BEQ L6D08
2024-02-14 20:46:43 +00:00
DEC foeC70
LDY foeC70
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
2023-07-08 16:35:15 +00:00
LDA L0C98,X
BEQ L6D05
JMP L75A8
L6D05 JMP L6DB7
2024-02-14 20:46:43 +00:00
L6D08 LDY foeY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,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-14 20:46:43 +00:00
LDA foeC80
2023-07-08 16:35:15 +00:00
CMP #$02
BEQ L6D61
2024-02-14 20:46:43 +00:00
L6D26 LDA foeC80
2023-07-08 16:35:15 +00:00
CMP #$02
BCC L6D64
2024-02-14 20:46:43 +00:00
LDY foeY
2023-07-08 16:35:15 +00:00
CPY #$0F
BEQ L6D61
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL+1,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
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
L6D64 JSR L74DF
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2023-07-08 16:35:15 +00:00
JSR L7582
LDA #$06
2024-02-14 20:46:43 +00:00
LDY foeC90
2023-07-08 16:35:15 +00:00
BMI L6D75
LDA #$0D
2024-02-14 20:46:43 +00:00
L6D75 STA foeC88
INC foeC80
LDA foeC80
2023-07-08 16:35:15 +00:00
CMP #$05
BCS L6DC0
2024-02-14 20:46:43 +00:00
LDA foeC80
2023-07-08 16:35:15 +00:00
CMP #$02
BNE L6DB7
JSR L74F7
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 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
2023-07-08 16:35:15 +00:00
CMP #$01
BNE L6DB7
2024-02-14 20:46:43 +00:00
LDA foeC70
2023-07-08 16:35:15 +00:00
BPL L6DA2
2024-02-08 21:48:24 +00:00
DEC nbCHEST
2023-07-08 16:35:15 +00:00
L6DA2 LDA $5F
2024-02-14 20:46:43 +00:00
STA foeC70
2023-07-08 16:35:15 +00:00
LDY #$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
L6DB7 JSR L74DF
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2023-07-08 16:35:15 +00:00
JMP L75A8
L6DC0 LDA #$00
2024-02-14 20:46:43 +00:00
STA foeC80
LDY foeY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
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
2023-07-08 16:35:15 +00:00
CMP #$01
BNE L6DE1
LDA #$00
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
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-13 08:09:27 +00:00
LSR fgPLAY
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-14 20:46:43 +00:00
LDA foeC70
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
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
2023-07-08 16:35:15 +00:00
CMP #$00
BEQ L6E31
2024-02-08 21:48:24 +00:00
DEC nbCHEST
2023-07-08 16:35:15 +00:00
JMP L6E46
L6E31 LDA #$07
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
2023-07-08 16:35:15 +00:00
LDA #$07
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-14 20:46:43 +00:00
STA foeC70
LDY foeX
2023-07-08 16:35:15 +00:00
L6E58 LDA #$08
2024-02-14 20:46:43 +00:00
STA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
JSR L74DF
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2023-07-08 16:35:15 +00:00
JMP L75A8
L6E65 CPY #$07
BCC L6E85
JSR L74DF
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2024-02-14 20:46:43 +00:00
LDY foeC70
2023-07-08 16:35:15 +00:00
LDA L6E76+2,Y
2024-02-14 20:46:43 +00:00
STA foeC78
2023-07-08 16:35:15 +00:00
L6E76 JSR L74DF
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2023-07-08 16:35:15 +00:00
JMP L75A8
2024-02-14 20:46:43 +00:00
L6E7F HEX 020102030201 ; TOTO
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
L6E97 DA L75A8-1
DA L6FBC-1
DA L7047-1
DA L6EAC-1
DA L6F39-1
2024-02-14 20:46:43 +00:00
L6EA1 LDA foeC70
2023-07-08 16:35:15 +00:00
BEQ L6EA9
BMI L6EA9
2024-02-14 20:46:43 +00:00
INC foeC70
2023-07-08 16:35:15 +00:00
L6EA9 JMP L75A8
2024-02-14 20:46:43 +00:00
L6EAC LDY foeC80
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
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L6EA1
CMP #$02
BEQ L6EA1
CMP #$05
BEQ L6EA1
CMP #$08
BEQ L6EA1
L6ED5 JSR L74DF
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2023-07-08 16:35:15 +00:00
JSR L7582
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
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
DEC foeC80
2023-07-08 16:35:15 +00:00
BPL L6F26
JSR L753E
2024-02-14 20:46:43 +00:00
LDY foeX
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BNE L6F02
LDA #$00
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
2023-07-08 16:35:15 +00:00
L6F1C LDA #$08
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 foeC80
2023-07-08 16:35:15 +00:00
BNE L6F29
L6F26 JSR L74F7
L6F29 LDA #$0E
LDX #$0F
JSR L7574
JSR L74DF
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2023-07-08 16:35:15 +00:00
JMP L75A8
2024-02-14 20:46:43 +00:00
L6F39 LDY foeC80
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
2023-07-08 16:35:15 +00:00
CMP #$02
BEQ L6F60
CMP #$08
BEQ L6F60
CMP #$01
BNE L6F63
L6F60 JMP L75A8
L6F63 JSR L74DF
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2023-07-08 16:35:15 +00:00
JSR L7582
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
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
INC foeC80
LDA foeC80
2023-07-08 16:35:15 +00:00
CMP #$05
BCC L6FB9
JSR L753E
2024-02-14 20:46:43 +00:00
LDY foeX
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BNE L6F94
LDA #$00
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-13 08:09:27 +00:00
LSR fgPLAY
2023-07-08 16:35:15 +00:00
L6FAE LDA #$08
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 foeC80
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
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 foeC78
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
2023-07-08 16:35:15 +00:00
CMP #$08
BEQ L6FEE
CMP #$02
BEQ L6FEE
CMP #$01
BEQ L6FEE
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$05
BNE L6FF1
L6FEE JMP L75A8
L6FF1 JSR L74DF
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2023-07-08 16:35:15 +00:00
JSR L7595
LDA #$FF
2024-02-14 20:46:43 +00:00
STA foeC90
DEC foeC78
2023-07-08 16:35:15 +00:00
BPL L7026
JSR L753E
2024-02-14 20:46:43 +00:00
LDY foeX
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BNE L700F
LDA #$00
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-13 08:09:27 +00:00
LSR fgPLAY
2023-07-08 16:35:15 +00:00
L701C LDA #$08
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 foeC78
2023-07-08 16:35:15 +00:00
BNE L7029
L7026 JSR L74F7
2024-02-14 20:46:43 +00:00
L7029 LDY foeX
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$04
BEQ L7037
LDA #$00
LDX #$02
BNE L703B
L7037 LDA #$03
LDX #$05
L703B JSR L7574
JSR L74DF
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2023-07-08 16:35:15 +00:00
JMP L75A8
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
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 foeC78
2023-07-08 16:35:15 +00:00
CPX #$02
BCC L707E
2024-02-14 20:46:43 +00:00
LDY foeX
2023-07-08 16:35:15 +00:00
CPY #$1B
BEQ L707B
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
CMP #$08
BEQ L707B
CMP #$02
BEQ L707B
CMP #$01
BEQ L707B
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$05
BNE L707E
L707B JMP L75A8
L707E JSR L74DF
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2023-07-08 16:35:15 +00:00
JSR L7595
LDA #$01
2024-02-14 20:46:43 +00:00
STA foeC90
INC foeC78
LDA foeC78
2023-07-08 16:35:15 +00:00
CMP #$05
BCC L70B7
JSR L753E
2024-02-14 20:46:43 +00:00
LDY foeX
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
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
2023-07-08 16:35:15 +00:00
L70AD LDA #$08
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 foeC78
2023-07-08 16:35:15 +00:00
BEQ L70BA
L70B7 JSR L74F7
2024-02-14 20:46:43 +00:00
L70BA LDY foeX
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$04
BEQ L70C8
LDA #$07
LDX #$09
BNE L70CC
L70C8 LDA #$0A
LDX #$0C
L70CC JSR L7574
JSR L74DF
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2023-07-08 16:35:15 +00:00
JMP L75A8
L70D8 STX $55
STY $56
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,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
2023-07-08 16:35:15 +00:00
LDY $55
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BNE L70F7
2024-02-14 20:46:43 +00:00
LDA foeC70
2023-07-08 16:35:15 +00:00
BEQ L70F7
BMI L70F7
LDA #$03
RTS
L70F7 LDY $56
2024-02-12 18:28:22 +00:00
CPY boardY
2023-07-08 16:35:15 +00:00
BEQ L7100
JMP L7186
L7100 LDY $55
STY $57
2024-02-12 18:28:22 +00:00
CPY boardX
2023-07-08 16:35:15 +00:00
BCS L7147
L7108 INC $57
LDY $56
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,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
2023-07-08 16:35:15 +00:00
LDY $57
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$03
BEQ L713E
CMP #$04
BEQ L713E
LDY $56
CPY #$0F
BEQ L713E
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL+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
2023-07-08 16:35:15 +00:00
LDY $57
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$00
BEQ L7186
CMP #$05
BEQ L7186
L713E LDY $57
2024-02-12 18:28:22 +00:00
CPY boardX
2023-07-08 16:35:15 +00:00
BNE L7108
LDA #$02
RTS
L7147 DEC $57
LDY $56
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,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
2023-07-08 16:35:15 +00:00
LDY $57
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$03
BEQ L717D
CMP #$04
BEQ L717D
LDY $56
CPY #$0F
BEQ L717D
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL+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
2023-07-08 16:35:15 +00:00
LDY $57
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$00
BEQ L7186
CMP #$05
BEQ L7186
L717D LDY $57
2024-02-12 18:28:22 +00:00
CPY boardX
2023-07-08 16:35:15 +00:00
BNE L7147
LDA #$01
RTS
L7186 LDA #$00
STA $58
LDA #$FF
STA $59
LDX $55
LDY $56
JSR L743E
JSR L7275
JSR L71A2
JSR L720C
LDA $58
RTS
L71A1 RTS
L71A2 LDY $5A
CPY $55
BEQ L71A1
LDY $56
CPY #$0F
BEQ L71DA
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL+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
2023-07-08 16:35:15 +00:00
LDY $5A
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L71DA
CMP #$02
BEQ L71DA
LDX $5A
LDY $56
JSR L739D
LDX $5A
JSR L72D4
CMP $59
BCS L71DA
STA $59
LDA #$01
STA $58
L71DA LDY $56
BEQ L7206
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,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
2023-07-08 16:35:15 +00:00
LDY $5A
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$03
BNE L7206
LDY $56
LDX $5A
JSR L7300
LDX $5A
JSR L72D4
CMP $59
BCS L7206
STA $59
LDA #$01
STA $58
L7206 INC $5A
JMP L71A2
L720B RTS
L720C LDY $5B
CPY $55
BEQ L720B
LDY $56
CPY #$0F
BEQ L7244
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL+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
2023-07-08 16:35:15 +00:00
LDY $5B
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L7244
CMP #$02
BEQ L7244
LDX $5B
LDY $56
JSR L739D
LDX $5B
JSR L72D4
CMP $59
BCS L7244
STA $59
LDA #$02
STA $58
L7244 LDY $56
BEQ L7270
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,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
2023-07-08 16:35:15 +00:00
LDY $5B
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$03
BNE L7270
LDY $56
LDX $5B
JSR L7300
LDX $5B
JSR L72D4
CMP $59
BCS L7270
STA $59
LDA #$02
STA $58
L7270 DEC $5B
JMP L720C
L7275 LDY $56
CPY #$0F
BEQ L72A7
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL+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
2023-07-08 16:35:15 +00:00
LDY $55
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L72A7
CMP #$02
BEQ L72A7
LDX $55
LDY $56
JSR L739D
LDX $55
JSR L72D4
CMP $59
BCS L72A7
STA $59
LDA #$04
STA $58
L72A7 LDY $56
BEQ L72D3
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,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
2023-07-08 16:35:15 +00:00
LDY $55
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$03
BNE L72D3
LDX $55
LDY $56
JSR L7300
LDX $55
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
L72FD LDA $5E
RTS
L7300 STY $5E
STX $5D
2024-02-09 22:22:41 +00:00
L7304 LDA tblBOARDALLL,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
2023-07-08 16:35:15 +00:00
LDY $5D
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$03
BNE L72FD
DEC $5E
LDY $5D
BEQ L734A
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L7340
CMP #$02
BEQ L7340
CMP #$03
BEQ L7340
LDY $5E
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,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
2023-07-08 16:35:15 +00:00
LDY $5D
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$04
BNE L734A
L7340 LDY $5E
STY $5C
2024-02-12 18:28:22 +00:00
CPY boardY
2023-07-08 16:35:15 +00:00
BCC L7397
BEQ L7397
L734A LDY $5D
CPY #$1B
BEQ L738C
LDY $5E
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL+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
2023-07-08 16:35:15 +00:00
LDY $5D
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L7382
CMP #$02
BEQ L7382
CMP #$03
BEQ L7382
LDY $5E
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,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
2023-07-08 16:35:15 +00:00
LDY $5D
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$04
BNE L738C
L7382 LDY $5E
STY $5C
2024-02-12 18:28:22 +00:00
CPY boardY
2023-07-08 16:35:15 +00:00
BCC L7397
BEQ L7397
L738C LDY $5E
CPY #$01
BCC L7395
JMP L7304
L7395 TYA
RTS
L7397 LDA $5C
RTS
L739A LDA $5E
RTS
L739D STY $5E
STX $5D
2024-02-09 22:22:41 +00:00
L73A1 LDA tblBOARDALLL+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
2023-07-08 16:35:15 +00:00
LDY $5D
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L739A
CMP #$02
BEQ L739A
LDY $5E
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,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
2023-07-08 16:35:15 +00:00
LDY $5D
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$00
BEQ L742D
CPY #$00
BEQ L73FB
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$04
BEQ L73F3
LDY $5E
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL+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
2023-07-08 16:35:15 +00:00
LDY $5D
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L73F3
CMP #$02
BEQ L73F3
CMP #$03
BNE L73FB
L73F3 LDY $5E
STY $5C
2024-02-12 18:28:22 +00:00
CPY boardY
2023-07-08 16:35:15 +00:00
BCS L743B
L73FB LDY $5D
CPY #$1B
BCS L742D
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$04
BEQ L7425
LDY $5E
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL+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
2023-07-08 16:35:15 +00:00
LDY $5D
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L7425
CMP #$03
BEQ L7425
CMP #$02
BNE L742D
L7425 LDY $5E
STY $5C
2024-02-12 18:28:22 +00:00
CPY boardY
2023-07-08 16:35:15 +00:00
BCS L743B
L742D INC $5E
LDY $5E
CPY #$10
BCS L7438
JMP L73A1
L7438 LDA #$0F
RTS
L743B LDA $5C
RTS
L743E STX $5A
STX $5B
2024-02-12 18:28:22 +00:00
STY theYSCREEN
2023-07-08 16:35:15 +00:00
L7444 LDA $5A
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
2023-07-08 16:35:15 +00:00
LDY $5A
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-09 22:22:41 +00:00
LDA tblBOARDALLL+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
2023-07-08 16:35:15 +00:00
LDY $5A
DEY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L748A
CMP #$02
BEQ L748A
CMP #$03
BNE L748E
L748A DEC $5A
BPL L7444
L748E DEC $5A
L7490 LDA $5B
CMP #$1B
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
2023-07-08 16:35:15 +00:00
LDY $5B
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L74DE
CMP #$02
BEQ L74DE
CMP #$03
BEQ L74D8
CMP #$04
BEQ L74D8
2024-02-12 18:28:22 +00:00
LDY theYSCREEN
2023-07-08 16:35:15 +00:00
CPY #$0F
BEQ L74D8
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL+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
2023-07-08 16:35:15 +00:00
LDY $5B
INY
2024-02-14 20:46:43 +00:00
LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$01
BEQ L74D8
CMP #$02
BEQ L74D8
CMP #$03
BNE L74DC
L74D8 INC $5B
BPL L7490
L74DC INC $5B
L74DE RTS
2024-02-14 20:46:43 +00:00
L74DF LDX foeX
LDY foeC78
JSR calcHGRX
2024-02-08 21:48:24 +00:00
STX theA
2024-02-14 20:46:43 +00:00
LDY foeY
LDX foeC80
JSR calcHGRY
LDX foeC88
2023-07-08 16:35:15 +00:00
LDA L6CCB,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
L74F7 LDA foeC78
2023-07-08 16:35:15 +00:00
CMP #$02
BNE L753D
2024-02-14 20:46:43 +00:00
LDA foeC80
2023-07-08 16:35:15 +00:00
CMP #$02
BNE L753D
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 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
2023-07-08 16:35:15 +00:00
CMP #$07
BNE L753D
2024-02-14 20:46:43 +00:00
LDA foeC70
2023-07-08 16:35:15 +00:00
BMI L753D
LDA #$FF
SEC
SBC $53
2024-02-14 20:46:43 +00:00
STA foeC70
2023-07-08 16:35:15 +00:00
LDA #$00
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
2023-07-08 16:35:15 +00:00
LDA #$07
2024-02-12 18:28:22 +00:00
JMP drawSPRITEXY
2023-07-08 16:35:15 +00:00
L753D RTS
2024-02-14 20:46:43 +00:00
L753E LDA foeC70
2023-07-08 16:35:15 +00:00
BPL L7573
2024-02-14 20:46:43 +00:00
INC foeC70
2023-07-08 16:35:15 +00:00
BNE L7573
2024-02-14 20:46:43 +00:00
LDY foeY
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 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
2023-07-08 16:35:15 +00:00
CMP #$00
BNE L7571
LDA #$07
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
2023-07-08 16:35:15 +00:00
LDA #$07
2024-02-12 18:28:22 +00:00
JMP drawSPRXYCOLLISION
2023-07-08 16:35:15 +00:00
2024-02-14 20:46:43 +00:00
L7571 DEC foeC70
2023-07-08 16:35:15 +00:00
L7573 RTS
2024-02-14 20:46:43 +00:00
L7574 INC foeC88
CMP foeC88
2023-07-08 16:35:15 +00:00
BCC L757D
2024-02-14 20:46:43 +00:00
L757A STA foeC88
2023-07-08 16:35:15 +00:00
RTS
2024-02-14 20:46:43 +00:00
L757D CPX foeC88
2023-07-08 16:35:15 +00:00
BCC L757A
RTS
2024-02-14 20:46:43 +00:00
L7582 LDA foeC78
2023-07-08 16:35:15 +00:00
CMP #$02
BCC L758F
BEQ L7594
2024-02-14 20:46:43 +00:00
DEC foeC78
2023-07-08 16:35:15 +00:00
JMP L74F7
2024-02-14 20:46:43 +00:00
L758F INC foeC78
2023-07-08 16:35:15 +00:00
JMP L74F7
L7594 RTS
2024-02-14 20:46:43 +00:00
L7595 LDA foeC80
2023-07-08 16:35:15 +00:00
CMP #$02
BCC L75A2
BEQ L75A7
2024-02-14 20:46:43 +00:00
DEC foeC80
2023-07-08 16:35:15 +00:00
JMP L74F7
2024-02-14 20:46:43 +00:00
L75A2 INC foeC80
2023-07-08 16:35:15 +00:00
JMP L74F7
L75A7 RTS
2024-02-12 18:28:22 +00:00
L75A8 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-14 20:46:43 +00:00
LDA foeC78
2023-07-08 16:35:15 +00:00
STA L0C78,X
2024-02-14 20:46:43 +00:00
LDA foeC80
2023-07-08 16:35:15 +00:00
STA L0C80,X
2024-02-14 20:46:43 +00:00
LDA foeC70
2023-07-08 16:35:15 +00:00
STA L0C70,X
2024-02-14 20:46:43 +00:00
LDA foeC90
2023-07-08 16:35:15 +00:00
STA L0C90,X
2024-02-14 20:46:43 +00:00
LDA foeC88
2023-07-08 16:35:15 +00:00
STA L0C88,X
RTS
2024-02-12 18:28:22 +00:00
L75CE 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
2023-07-08 16:35:15 +00:00
LDA L0C78,X
2024-02-14 20:46:43 +00:00
STA foeC78
2023-07-08 16:35:15 +00:00
LDA L0C80,X
2024-02-14 20:46:43 +00:00
STA foeC80
2023-07-08 16:35:15 +00:00
LDA L0C88,X
2024-02-14 20:46:43 +00:00
STA foeC88
2023-07-08 16:35:15 +00:00
LDA L0C90,X
2024-02-14 20:46:43 +00:00
STA foeC90
2023-07-08 16:35:15 +00:00
LDA L0C70,X
2024-02-14 20:46:43 +00:00
STA foeC70
2023-07-08 16:35:15 +00:00
RTS
L75F4 JSR L7716
INC $53
LDA $53
CMP #$1C
BCC L7603
LDA #$00
STA $53
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
2023-07-08 16:35:15 +00:00
CMP #$14
BNE L7639
LDA #$37
2024-02-08 21:48:24 +00:00
L7627 JSR coutHGR2
LDX theX
LDY theY
JSR getXY
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
2023-07-08 16:35:15 +00:00
L7636 JMP L770D
L7639 CMP #$0A
BNE L7636
LDA #$38
BNE L7627
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
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-13 08:09:27 +00:00
LSR fgPLAY
2024-02-12 18:28:22 +00:00
L766D CMP #sprFOE
2023-07-08 16:35:15 +00:00
BEQ L767A
2024-02-12 18:28:22 +00:00
CMP #sprCHEST
2023-07-08 16:35:15 +00:00
BNE L7677
2024-02-08 21:48:24 +00:00
DEC nbCHEST
2023-07-08 16:35:15 +00:00
L7677 JMP L7701
2024-02-12 18:28:22 +00:00
L767A LDA #sprWALL
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
LDX nbFOE
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
LDA L0C70,X
BPL L769F
2024-02-08 21:48:24 +00:00
DEC nbCHEST
2023-07-08 16:35:15 +00:00
L769F LDA #$7F
STA L0C70,X
2024-02-12 18:28:22 +00:00
STX idxFOE
2023-07-08 16:35:15 +00:00
JSR L75CE
JSR L74DF
2024-02-12 18:28:22 +00:00
JSR drawSPRITEXY
LDX idxFOE
2023-07-08 16:35:15 +00:00
LDY #$01
2024-02-08 21:48:24 +00:00
STY theY
L76B5 LDY theY
2024-02-09 22:22:41 +00:00
LDA tblBOARDALLL,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
2023-07-08 16:35:15 +00:00
LDY $53
2024-02-14 20:46:43 +00:00
L76C3 LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$00
BEQ L76D9
INC $53
LDY $53
CPY #$1C
BCC L76C3
2024-02-08 21:48:24 +00:00
INC theY
2023-07-08 16:35:15 +00:00
LDA #$00
STA $53
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
STA L0C98,X
LDA #$02
STA L0C80,X
STA L0C78,X
LDA #$00
STA L0C88,X
LDY #$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
2023-07-08 16:35:15 +00:00
LDA #$01
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-08 21:48:24 +00:00
L7716 LDX nbFOE
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
L771D LDA L0C98,X
BEQ L7765
2024-02-12 18:28:22 +00:00
STX idxFOE
2023-07-08 16:35:15 +00:00
JSR L75CE
LDA #$7F
STA L0C70,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
2023-07-08 16:35:15 +00:00
DEC L0C98,X
BEQ L776C
LDA L0C98,X
CMP #$13
BNE L7752
LDA #$39
2024-02-08 21:48:24 +00:00
JSR coutHGR2
2023-07-08 16:35:15 +00:00
JSR L74DF
LDA #$39
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
2023-07-08 16:35:15 +00:00
JMP L7763
2024-02-14 20:46:43 +00:00
L7752 CMP #$0A ; tutu
2023-07-08 16:35:15 +00:00
BNE L7765
LDA #$3A
2024-02-08 21:48:24 +00:00
JSR coutHGR2
2023-07-08 16:35:15 +00:00
JSR L74DF
LDA #$3A
2024-02-12 18:28:22 +00:00
JSR drawSPRXYCOLLISION
L7763 LDX idxFOE
2023-07-08 16:35:15 +00:00
L7765 DEX
BNE L771D
PLA
2024-02-12 18:28:22 +00:00
STA idxFOE
2023-07-08 16:35:15 +00:00
RTS
2024-02-08 21:48:24 +00:00
L776C 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
2023-07-08 16:35:15 +00:00
INC L0C98,X
2024-02-08 21:48:24 +00:00
LDY theX
2024-02-14 20:46:43 +00:00
LDA (ptrBOARD),Y
2023-07-08 16:35:15 +00:00
BNE L7765
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
2023-07-08 16:35:15 +00:00
STA L0C70,X
STA L0C98,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
2023-07-08 16:35:15 +00:00
JMP L7765
2024-02-09 22:22:41 +00:00
*-------------------------------
* 8D - RETURN - DISPLAYS HIGH SCORE
*-------------------------------
displayHIGHSCORES
JSR L786B
2023-07-08 16:35:15 +00:00
LDX #$FF
LDY #$FF
LDA #$04
STA $A1
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
LDA BUTN1
BMI L77D6
LDA BUTN0
BMI L77D6
L77C7 LDA KBD
BMI L77D6
DEX
BNE L77B7
DEY
BNE L77B7
DEC $A1
BNE L77B7
L77D6 STA KBDSTROBE
STA TXTPAGE1
2024-02-08 21:48:24 +00:00
JSR clearHGR2
2023-07-08 16:35:15 +00:00
LDY #$0F
2024-02-08 21:48:24 +00:00
STY theY
2024-02-09 22:22:41 +00:00
L77E3 LDA tblBOARDALLL,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
2023-07-08 16:35:15 +00:00
LDY #$1B
2024-02-08 21:48:24 +00:00
STY theX
2024-02-14 20:46:43 +00:00
L77F1 LDA (ptrBBACK),Y
2023-07-08 16:35:15 +00:00
CMP #$05
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
LDA #$37
2024-02-08 21:48:24 +00:00
JSR coutHGR2
2023-07-08 16:35:15 +00:00
JMP L7838
L7833 LDA #$38
2024-02-08 21:48:24 +00:00
JSR coutHGR2
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
2023-07-08 16:35:15 +00:00
BEQ L7868
L7841 LDA L0C98,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
LDA #$39
BNE L7860
L785E LDA #$3A
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
L7868 JMP L6A12
2024-02-08 21:48:24 +00:00
L786B JSR clearHGR2
LDA #>HGR2
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
ASC " INITIALS LEVEL SCORE"8D
ASC " -------- ----- --------"8D00
2024-02-08 21:48:24 +00:00
LDA #$01 ; for x=1 to...10
2023-07-08 16:35:15 +00:00
STA $55
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
2023-07-08 16:35:15 +00:00
LDA $55
2024-02-08 21:48:24 +00:00
JSR outputCHAR
L78EF JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC ". "00
LDX $55
2024-02-08 21:48:24 +00:00
LDY scoreoffset,X
2023-07-08 16:35:15 +00:00
STY $56
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
2023-07-08 16:35:15 +00:00
L7907 LDY $56
2024-02-08 21:48:24 +00:00
LDA scorebuf,Y
JSR printCHAR
2023-07-08 16:35:15 +00:00
LDY $56
2024-02-08 21:48:24 +00:00
LDA scorebuf+$01,Y
JSR printCHAR
2023-07-08 16:35:15 +00:00
LDY $56
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
LDY $56
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
LDY $56
2024-02-08 21:48:24 +00:00
LDA scorebuf+$04,Y
JSR bcd2dec
LDA theDIZAINE
JSR outputCHAR
LDA theUNITE
JSR outputCHAR
2023-07-08 16:35:15 +00:00
LDY $56
2024-02-08 21:48:24 +00:00
LDA scorebuf+$05,Y
JSR bcd2dec
LDA theDIZAINE
JSR outputCHAR
LDA theUNITE
JSR outputCHAR
2023-07-08 16:35:15 +00:00
LDY $56
2024-02-08 21:48:24 +00:00
LDA scorebuf+$06,Y
JSR bcd2dec
LDA theDIZAINE
JSR outputCHAR
LDA theUNITE
JSR outputCHAR
2023-07-08 16:35:15 +00:00
LDY $56
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
INC $55
LDA $55
CMP #$0B
BCS L799A
JMP L78D4
L799A STA TXTPAGE2
2024-02-08 21:48:24 +00:00
LDA #>HGR1
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
LDY #$27 ; met la barre bleue
2024-02-08 21:48:24 +00:00
LDA activePAGE
CMP #>HGR2
2023-07-08 16:35:15 +00:00
BEQ L79DD
L79BB LDA #$AA
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
2024-02-08 21:48:24 +00:00
2024-02-12 18:28:22 +00:00
L79DD LDA #$AA ; pareil mais sur HGR2
2023-07-08 16:35:15 +00:00
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
2024-02-08 21:48:24 +00:00
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
2023-07-08 16:35:15 +00:00
LDA #$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
ORA hgrPAGE
2024-02-14 20:46:43 +00:00
STA ptrHGR1+1
2023-07-08 16:35:15 +00:00
RTS
2024-02-08 21:48:24 +00:00
*-------------------------------
* SET HGR POINTERS
*-------------------------------
setHGRPOINTERS
LDA xhgr,Y
2024-02-14 20:46:43 +00:00
STA ptrHGR1
STA ptrHGR2
2024-02-08 21:48:24 +00:00
LDA yhgr,Y
2024-02-13 08:09:27 +00:00
ORA #>HGR1
2024-02-14 20:46:43 +00:00
STA ptrHGR1+1
2023-07-08 16:35:15 +00:00
EOR #$60
2024-02-14 20:46:43 +00:00
STA ptrHGR2+1
2023-07-08 16:35:15 +00:00
RTS
*-------------------------------
* CLEAR HGR1
*-------------------------------
2024-02-08 21:48:24 +00:00
clearHGR1 LDA #>HGR1
LDX #>HGR1+$20
2023-07-08 16:35:15 +00:00
BNE L7A5B
*-------------------------------
* CLEAR HGR2
*-------------------------------
2024-02-08 21:48:24 +00:00
clearHGR2 LDA #>HGR2
LDX #>HGR2+$20
*--- clear now
2023-07-08 16:35:15 +00:00
2024-02-14 20:46:43 +00:00
L7A5B STA ptrDATA+1
2023-07-08 16:35:15 +00:00
LDA #$00
2024-02-14 20:46:43 +00:00
STA ptrDATA
2023-07-08 16:35:15 +00:00
TAY
LDA #$80
2024-02-14 20:46:43 +00:00
L7A64 STA (ptrDATA),Y
2023-07-08 16:35:15 +00:00
INY
BNE L7A64
2024-02-14 20:46:43 +00:00
INC ptrDATA+1
CPX ptrDATA+1
2023-07-08 16:35:15 +00:00
BNE L7A64
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
CPX #>HGR2
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
CPX #>HGR2
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
2024-02-14 20:46:43 +00:00
LDA CSWL
STA CH
LDA CSWH
STA CV
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
2023-07-08 16:35:15 +00:00
STA TXTPAGE1
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-08 21:48:24 +00:00
LDA #>HGR1
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-14 20:46:43 +00:00
tblEDITKEY ASC "PCEMIS"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
DA editCLEARSCORE-1 ; Clear Score file
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
STA $9D
2024-02-08 21:48:24 +00:00
LDA intLEVEL
2023-07-08 16:35:15 +00:00
BEQ L7C88
LSR $9D
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
JSR L807F
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-13 08:09:27 +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-08 21:48:24 +00:00
JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC 8D
ASC " SOURCE DISKETTE"00
2024-02-14 20:46:43 +00:00
JSR editWAITKEY
2023-07-08 16:35:15 +00:00
JSR L807F
LDA L824F
2024-02-08 21:48:24 +00:00
STA intLEVEL
2024-02-09 22:22:41 +00:00
LDA #$01 ; read
2024-02-08 21:48:24 +00:00
JSR diskLEVEL
JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC 8D
ASC " DESTINATION DISKETTE"00
2024-02-14 20:46:43 +00:00
JSR editWAITKEY
2023-07-08 16:35:15 +00:00
JSR L807F
LDA L8250
2024-02-08 21:48:24 +00:00
STA intLEVEL
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
L7D5A JMP editNEXT
2023-07-08 16:35:15 +00:00
*-------------------------------
* I - INITIALIZE DISKETTE
*-------------------------------
2024-02-13 08:09:27 +00:00
editINIT JSR printSTRING
2023-07-08 16:35:15 +00:00
ASC 8D
ASC ">>INITIALIZE"8D
ASC " THIS FORMATS THE DISKETTE"8D
ASC " FOR USER CREATED LEVELS."8D
ASC " (CAUTION. IT ERASES THE"8D
ASC " ENTIRE DISKETTE FIRST)"8D8D
ASC " ARE YOU SURE (Y/N) "00
2024-02-14 20:46:43 +00:00
JSR editWAITKEY
2024-02-13 08:09:27 +00:00
CMP #chrY
2023-07-08 16:35:15 +00:00
BNE L7E72
NOP ; NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
2024-02-08 21:48:24 +00:00
LDA intLEVEL
2023-07-08 16:35:15 +00:00
PHA
LDA #$04 ; Init command
2024-02-08 21:48:24 +00:00
JSR diskLEVEL
2023-07-08 16:35:15 +00:00
2024-02-08 21:48:24 +00:00
LDA #<boot ; Save T0/S0
2023-07-08 16:35:15 +00:00
STA LB7F0
2024-02-08 21:48:24 +00:00
LDA #>boot
2023-07-08 16:35:15 +00:00
STA LB7F0+1
LDA #$00
STA LB7ED
STA LB7EC
LDA #$02
STA LB7F4
JSR L6338
LDA #$E0
2024-02-08 21:48:24 +00:00
STA intLEVEL
2023-07-08 16:35:15 +00:00
LDA #$01
2024-02-08 21:48:24 +00:00
JSR diskLEVEL
2023-07-08 16:35:15 +00:00
LDY #$37
L7E33 LDA L8251,Y
2024-02-09 22:22:41 +00:00
STA levelDISK,Y
2023-07-08 16:35:15 +00:00
DEY
BPL L7E33
LDA #$02
2024-02-08 21:48:24 +00:00
JSR diskLEVEL
2023-07-08 16:35:15 +00:00
LDA #$EF
2024-02-08 21:48:24 +00:00
STA intLEVEL
2023-07-08 16:35:15 +00:00
LDA #$01
2024-02-08 21:48:24 +00:00
JSR diskLEVEL
2023-07-08 16:35:15 +00:00
LDY #$20
L7E4C LDA L8289,Y
2024-02-09 22:22:41 +00:00
STA levelDISK+$B,Y
2023-07-08 16:35:15 +00:00
DEY
BPL L7E4C
LDA #$02
2024-02-08 21:48:24 +00:00
JSR diskLEVEL
2023-07-08 16:35:15 +00:00
LDA #$01
2024-02-08 21:48:24 +00:00
JSR readSCORE
2023-07-08 16:35:15 +00:00
LDY #$0A
L7E61 LDA L63A8,Y
2024-02-08 21:48:24 +00:00
STA scorebuf+$F4,Y
2023-07-08 16:35:15 +00:00
DEY
BPL L7E61
LDA #$02
2024-02-08 21:48:24 +00:00
JSR readSCORE
2023-07-08 16:35:15 +00:00
PLA
2024-02-08 21:48:24 +00:00
STA intLEVEL
2024-02-14 20:46:43 +00:00
L7E72 JMP 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
*-------------------------------
* EDIT THE LEVEL
*-------------------------------
2024-02-13 08:09:27 +00:00
editEDITLEVEL
JSR clearHGR2 ; clear HGR2
2024-02-08 21:48:24 +00:00
LDA #>HGR2
STA activePAGE
2024-02-12 18:28:22 +00:00
JSR drawINFOBAR ; show frame
2024-02-08 21:48:24 +00:00
LDA #>HGR1
STA activePAGE
2023-07-08 16:35:15 +00:00
JSR L807F ; check diskette (master or data disk)
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-08 21:48:24 +00:00
L7F54 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-08 21:48:24 +00:00
JSR clearHGR2
LDA #>HGR2
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
2023-07-08 16:35:15 +00:00
STA TXTPAGE2
L8062 LDA #$00
JSR L85F3
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
2023-07-08 16:35:15 +00:00
L8075 STA TXTPAGE1
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-08 21:48:24 +00:00
L807F LDA #$01 ; load score
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
2023-07-08 16:35:15 +00:00
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
JSR clearHGR2
LDA #>HGR2
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
2023-07-08 16:35:15 +00:00
STA TXTPAGE2
LDA #$00
JSR L85F3
STA KBDSTROBE
STA TXTPAGE1
2024-02-08 21:48:24 +00:00
2023-07-08 16:35:15 +00:00
L8105 RTS
2024-02-08 21:48:24 +00:00
*-----------------------------------
* LR DATA DISK NOT IDENTIFIED
*-----------------------------------
tellNODATADISK
JSR clearHGR2
LDA #>HGR2
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
2023-07-08 16:35:15 +00:00
STA KBDSTROBE
RTS
2024-02-13 08:09:27 +00:00
tblEDITKEYS ASC "JIKM"
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
LDY #$00
L8189 LDA |$0089,Y
STY L824D
2024-02-08 21:48:24 +00:00
JSR outputCHAR
2023-07-08 16:35:15 +00:00
LDY L824D
INY
CPY #$03
BCC L8189
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
2023-07-08 16:35:15 +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
2023-07-08 16:35:15 +00:00
LDY L824D
STA |$0089,Y
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
2023-07-08 16:35:15 +00:00
STA KBDSTROBE
CMP #$9B ; escape
BNE L824C
2024-02-14 20:46:43 +00:00
JMP editLOOP
2023-07-08 16:35:15 +00:00
L824C RTS
L824D RTS
L824E DB $85
L824F DB $0F
L8250 DB $60
L8251 HEX 02110F040000FE000000000000000000
HEX 00000000000000000000000000000000
HEX 000000000000007A0000000000000000
HEX FFFF0000230F0001
L8289 HEX 220F8888888888888888CCCFC4C5A0D2
HEX D5CECEC5D2A0C4C1D4C1A0C4C9D3CBA0
HEX A0
*---------------------------------------
* PRINT CHAR
*---------------------------------------
2024-02-08 21:48:24 +00:00
coutHGR1 STA theA ; char in $1E
LDA #>HGR1 ; 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
LDA #>HGR2 ; print HGR2
2023-07-08 16:35:15 +00:00
2024-02-08 21:48:24 +00:00
L82B4 STA hgrPAGE ; page in $1F
LDY theY ; take Y
JSR getXY
2024-02-12 18:28:22 +00:00
STY theYSCREEN ; make it Y screen
2024-02-08 21:48:24 +00:00
LDX theX ; take X
JSR getBYBI
2024-02-12 18:28:22 +00:00
STA theXSCREEN ; make it X screen
STX sprTABLE
LDA tblMASK1,X
STA theMASK1
LDA tblMASK2,X
STA theMASK2
JSR getSPRITEDATA
LDA #sprHEIGHT
STA nbLINES
2023-07-08 16:35:15 +00:00
LDX #$00
2024-02-12 18:28:22 +00:00
LDA sprTABLE ; derniere table de sprite?
2023-07-08 16:35:15 +00:00
CMP #$05
BCS L8301
2024-02-12 18:28:22 +00:00
*--- sprite de 2 de large
L82DF LDY theYSCREEN
2024-02-08 21:48:24 +00:00
JSR setHGRPOINTER
2024-02-12 18:28:22 +00:00
LDY theXSCREEN
2024-02-14 20:46:43 +00:00
LDA (ptrHGR1),Y ; 1
2024-02-12 18:28:22 +00:00
AND theMASK1
ORA sprDATA,X
2024-02-14 20:46:43 +00:00
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
INY
2024-02-14 20:46:43 +00:00
LDA (ptrHGR1),Y ; 2
2024-02-12 18:28:22 +00:00
AND theMASK2
ORA sprDATA,X
2024-02-14 20:46:43 +00:00
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
INX
2024-02-12 18:28:22 +00:00
INC theYSCREEN
DEC nbLINES
2023-07-08 16:35:15 +00:00
BNE L82DF
RTS
2024-02-12 18:28:22 +00:00
*--- sprite de 3 de large
2024-02-09 22:22:41 +00:00
2024-02-12 18:28:22 +00:00
L8301 LDY theYSCREEN
2024-02-08 21:48:24 +00:00
JSR setHGRPOINTER
2024-02-12 18:28:22 +00:00
LDY theXSCREEN
2024-02-14 20:46:43 +00:00
LDA (ptrHGR1),Y ; 1
2024-02-12 18:28:22 +00:00
AND theMASK1
ORA sprDATA,X
2024-02-14 20:46:43 +00:00
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
INY
2024-02-12 18:28:22 +00:00
LDA sprDATA,X ; 2
2024-02-14 20:46:43 +00:00
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
INY
2024-02-14 20:46:43 +00:00
LDA (ptrHGR1),Y ; 3
2024-02-12 18:28:22 +00:00
AND theMASK2
ORA sprDATA,X
2024-02-14 20:46:43 +00:00
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
2024-02-12 18:28:22 +00:00
INC theYSCREEN
DEC nbLINES
2023-07-08 16:35:15 +00:00
BNE L8301
RTS
2024-02-12 18:28:22 +00:00
tblMASK1 HEX 000103070F1F3F ; mask1
tblMASK2 HEX F8F0E0C080FEFC ; mask2
2024-02-09 22:22:41 +00:00
*---------------------------------------
2024-02-12 18:28:22 +00:00
* DRAW SPRITE AT X,Y
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
STY theYSCREEN
2024-02-08 21:48:24 +00:00
STA theA
JSR getXBYBI
2024-02-12 18:28:22 +00:00
STA theXSCREEN
STX sprTABLE
JSR getSPRITEDATA
LDX #sprHEIGHT ; nb lignes
STX nbLINES
2023-07-08 16:35:15 +00:00
LDX #$00
2024-02-12 18:28:22 +00:00
LDA sprTABLE
2023-07-08 16:35:15 +00:00
CMP #$05
BCS L8376
2024-02-12 18:28:22 +00:00
*--- sprite de 2 de large
L8350 LDY theYSCREEN
2024-02-08 21:48:24 +00:00
JSR setHGRPOINTERS
2024-02-12 18:28:22 +00:00
LDY theXSCREEN
LDA sprDATA,X
2023-07-08 16:35:15 +00:00
EOR #$7F
2024-02-14 20:46:43 +00:00
AND (ptrHGR1),Y
ORA (ptrHGR2),Y
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
INY
2024-02-12 18:28:22 +00:00
LDA sprDATA,X
2023-07-08 16:35:15 +00:00
EOR #$7F
2024-02-14 20:46:43 +00:00
AND (ptrHGR1),Y
ORA (ptrHGR2),Y
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
INX
2024-02-12 18:28:22 +00:00
INC theYSCREEN
DEC nbLINES
2023-07-08 16:35:15 +00:00
BNE L8350
RTS
2024-02-12 18:28:22 +00:00
*--- sprite de 3 de large
2024-02-09 22:22:41 +00:00
2024-02-12 18:28:22 +00:00
L8376 LDY theYSCREEN
2024-02-08 21:48:24 +00:00
JSR setHGRPOINTERS
2024-02-12 18:28:22 +00:00
LDY theXSCREEN
LDA sprDATA,X
2023-07-08 16:35:15 +00:00
EOR #$7F
2024-02-14 20:46:43 +00:00
AND (ptrHGR1),Y
ORA (ptrHGR2),Y
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
INY
2024-02-12 18:28:22 +00:00
LDA sprDATA,X
2023-07-08 16:35:15 +00:00
EOR #$7F
2024-02-14 20:46:43 +00:00
AND (ptrHGR1),Y
ORA (ptrHGR2),Y
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
INY
2024-02-12 18:28:22 +00:00
LDA sprDATA,X
2023-07-08 16:35:15 +00:00
EOR #$7F
2024-02-14 20:46:43 +00:00
AND (ptrHGR1),Y
ORA (ptrHGR2),Y
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
2024-02-12 18:28:22 +00:00
INC theYSCREEN
DEC nbLINES
2023-07-08 16:35:15 +00:00
BNE L8376
RTS
2024-02-09 22:22:41 +00:00
*---------------------------------------
2024-02-12 18:28:22 +00:00
* DRAW SPRITE AT X,Y WITH COLLISION
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
STY theYSCREEN
2024-02-08 21:48:24 +00:00
STA theA
JSR getXBYBI
2024-02-12 18:28:22 +00:00
STA theXSCREEN
STX sprTABLE
JSR getSPRITEDATA
LDA #sprHEIGHT
STA nbLINES
2023-07-08 16:35:15 +00:00
LDX #$00
2024-02-12 18:28:22 +00:00
STX fgCOLLISION
LDA sprTABLE
2023-07-08 16:35:15 +00:00
CMP #$05
BCS L83F5
2024-02-12 18:28:22 +00:00
*--- sprite de 2 de large
L83C3 LDY theYSCREEN
2024-02-08 21:48:24 +00:00
JSR setHGRPOINTERS
2024-02-12 18:28:22 +00:00
LDY theXSCREEN
2024-02-14 20:46:43 +00:00
LDA (ptrHGR1),Y
EOR (ptrHGR2),Y
2024-02-12 18:28:22 +00:00
AND sprDATA,X
ORA fgCOLLISION
STA fgCOLLISION
LDA sprDATA,X
2024-02-14 20:46:43 +00:00
ORA (ptrHGR1),Y
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
INY
2024-02-14 20:46:43 +00:00
LDA (ptrHGR1),Y
EOR (ptrHGR2),Y
2024-02-12 18:28:22 +00:00
AND sprDATA,X
ORA fgCOLLISION
STA fgCOLLISION
LDA sprDATA,X
2024-02-14 20:46:43 +00:00
ORA (ptrHGR1),Y
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
INX
2024-02-12 18:28:22 +00:00
INC theYSCREEN
DEC nbLINES
2023-07-08 16:35:15 +00:00
BNE L83C3
RTS
2024-02-12 18:28:22 +00:00
*--- sprite de 3 de large
2024-02-09 22:22:41 +00:00
2024-02-12 18:28:22 +00:00
L83F5 LDY theYSCREEN
2024-02-08 21:48:24 +00:00
JSR setHGRPOINTERS
2024-02-12 18:28:22 +00:00
LDY theXSCREEN
2024-02-14 20:46:43 +00:00
LDA (ptrHGR1),Y
EOR (ptrHGR2),Y
2024-02-12 18:28:22 +00:00
AND sprDATA,X
ORA fgCOLLISION
STA fgCOLLISION
LDA sprDATA,X
2024-02-14 20:46:43 +00:00
ORA (ptrHGR1),Y
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
INY
2024-02-14 20:46:43 +00:00
LDA (ptrHGR1),Y
EOR (ptrHGR2),Y
2024-02-12 18:28:22 +00:00
AND sprDATA,X
ORA fgCOLLISION
STA fgCOLLISION
LDA sprDATA,X
2024-02-14 20:46:43 +00:00
ORA (ptrHGR1),Y
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
INY
2024-02-14 20:46:43 +00:00
LDA (ptrHGR1),Y
EOR (ptrHGR2),Y
2024-02-12 18:28:22 +00:00
AND sprDATA,X
ORA fgCOLLISION
STA fgCOLLISION
LDA sprDATA,X
2024-02-14 20:46:43 +00:00
ORA (ptrHGR1),Y
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INX
2024-02-12 18:28:22 +00:00
INC theYSCREEN
DEC nbLINES
2023-07-08 16:35:15 +00:00
BNE L83F5
RTS
2024-02-09 22:22:41 +00:00
*---------------------------------------
2024-02-12 18:28:22 +00:00
* GET SPRITE DATA
2024-02-09 22:22:41 +00:00
*---------------------------------------
2024-02-12 18:28:22 +00:00
* Move sprite data at $df..$ff
2024-02-09 22:22:41 +00:00
2024-02-12 18:28:22 +00:00
getSPRITEDATA
LDA #sprHEIGHT ; char height
STA nbLINES
2024-02-09 22:22:41 +00:00
2024-02-14 20:46:43 +00:00
LDA #<tblOFFSPR ; pointer to index of sprite in each table
STA ptrDATA
LDA #>tblOFFSPR
STA ptrDATA+1
2024-02-09 22:22:41 +00:00
2024-02-14 20:46:43 +00:00
LDA tblPTRSPR,X ; one of the six tables
2023-07-08 16:35:15 +00:00
STA L845A+2
STA L8466+2
STA L848B+2
STA L8497+2
2024-02-09 22:22:41 +00:00
2023-07-08 16:35:15 +00:00
LDX #$00
2024-02-08 21:48:24 +00:00
L8455 LDY theA
2024-02-14 20:46:43 +00:00
LDA (ptrDATA),Y
2023-07-08 16:35:15 +00:00
TAY
2024-02-14 20:46:43 +00:00
L845A LDA LA200,Y ; a
2023-07-08 16:35:15 +00:00
STA L846F+1
CLC
ADC #$01
STA L8474+1
2024-02-14 20:46:43 +00:00
L8466 LDA LA280,Y ; a+1
2023-07-08 16:35:15 +00:00
STA L846F+2
STA L8474+2
2024-02-14 20:46:43 +00:00
L846F LDA LA200 ; b
2024-02-12 18:28:22 +00:00
STA sprDATA,X
2024-02-14 20:46:43 +00:00
L8474 LDA LA200 ; b+1
2023-07-08 16:35:15 +00:00
STA $E0,X
2024-02-09 22:22:41 +00:00
2024-02-14 20:46:43 +00:00
LDA ptrDATA ; next line
2023-07-08 16:35:15 +00:00
CLC
ADC #$68
2024-02-14 20:46:43 +00:00
STA ptrDATA
LDA ptrDATA+1
2023-07-08 16:35:15 +00:00
ADC #$00
2024-02-14 20:46:43 +00:00
STA ptrDATA+1
2024-02-09 22:22:41 +00:00
2024-02-08 21:48:24 +00:00
LDY theA
2024-02-14 20:46:43 +00:00
LDA (ptrDATA),Y
2023-07-08 16:35:15 +00:00
TAY
2024-02-14 20:46:43 +00:00
L848B LDA LA200,Y ; c
2023-07-08 16:35:15 +00:00
STA L84A0+1
CLC
ADC #$01
STA L84A7+1
2024-02-14 20:46:43 +00:00
L8497 LDA LA280,Y ; c+1
2023-07-08 16:35:15 +00:00
STA L84A0+2
STA L84A7+2
2024-02-14 20:46:43 +00:00
L84A0 LDA LA200 ; d
2023-07-08 16:35:15 +00:00
ORA $E0,X
STA $E0,X
2024-02-14 20:46:43 +00:00
L84A7 LDA LA200 ; d+1
2023-07-08 16:35:15 +00:00
STA $E1,X
2024-02-09 22:22:41 +00:00
2024-02-14 20:46:43 +00:00
LDA ptrDATA
2023-07-08 16:35:15 +00:00
CLC
ADC #$68
2024-02-14 20:46:43 +00:00
STA ptrDATA
LDA ptrDATA+1
2023-07-08 16:35:15 +00:00
ADC #$00
2024-02-14 20:46:43 +00:00
STA ptrDATA+1
2023-07-08 16:35:15 +00:00
INX
INX
INX
2024-02-12 18:28:22 +00:00
DEC nbLINES
2023-07-08 16:35:15 +00:00
BNE L8455
RTS
2024-02-14 20:46:43 +00:00
tblPTRSPR DB >LA200 ; The six tables of sprites
2023-07-08 16:35:15 +00:00
DB >LA300
DB >LA400
DB >LA500
DB >LA600
DB >LA700
DB >LA800
2024-02-09 22:22:41 +00:00
*---------------------------------------
* CHECK HIGH SCORE
*---------------------------------------
checkHIGHSCORE
LDA $9D
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
STY $56
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
CPY $56
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
2023-07-08 16:35:15 +00:00
STA L8582+1
STA L85C9+1
JSR L786B
2024-02-08 21:48:24 +00:00
LDA #>HGR2
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
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-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-08 21:48:24 +00:00
L85E7 LDA #>HGR1
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
STA $A1
2024-02-13 08:09:27 +00:00
LDA bsDATA
2023-07-08 16:35:15 +00:00
BNE L8601
LDA #$0A
2024-02-08 21:48:24 +00:00
L8601 JSR coutHGR2
2023-07-08 16:35:15 +00:00
L8604 LDA KBD
BMI L8628
2024-02-13 08:09:27 +00:00
JSR checkMOVEMENT
2023-07-08 16:35:15 +00:00
DEC $A1
BNE L8604
LDA #$00
2024-02-08 21:48:24 +00:00
JSR coutHGR2
2023-07-08 16:35:15 +00:00
LDA #$68
STA $A1
L8619 LDA KBD
BMI L8628
2024-02-13 08:09:27 +00:00
JSR checkMOVEMENT
2023-07-08 16:35:15 +00:00
DEC $A1
BNE L8619
JMP L85F6
L8628 PHA
2024-02-13 08:09:27 +00:00
LDA bsDATA
2024-02-08 21:48:24 +00:00
JSR coutHGR2
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
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
*-----------------------------------
waitKEYUP
STA KBDSTROBE
2023-07-08 16:35:15 +00:00
LDA KBD
2024-02-09 22:22:41 +00:00
BMI waitKEYUP
2023-07-08 16:35:15 +00:00
RTS
2024-02-09 22:22:41 +00:00
*-----------------------------------
* WAIT KEY DOWN
*-----------------------------------
waitKEYDOWN
LDA KBD
BPL waitKEYDOWN
2023-07-08 16:35:15 +00:00
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
L86BE HEX 020406080A0C0E10121416181A1C1E20
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
LDA SPKR
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
STA $A1
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
L8713 LDA KBD ; key pressed?
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
2023-07-08 16:35:15 +00:00
DEC $A1
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
2023-07-08 16:35:15 +00:00
STA $A1
L872B LDA KBD
BMI L873C
2024-02-13 08:09:27 +00:00
JSR checkMOVEMENT
2023-07-08 16:35:15 +00:00
BCS L873C
DEC $A1
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-14 20:46:43 +00:00
bsDATA DB ptrBOARD
2023-07-08 16:35:15 +00:00
2024-02-12 18:28:22 +00:00
*-----------------------------------
* READ JOYSTICK
*-----------------------------------
readJOYSTICK
LDA #$00
STA theJOYX
STA theJOYY
2023-07-08 16:35:15 +00:00
LDA PTRIG
L874F LDX #$01
2024-02-12 18:28:22 +00:00
L8751 LDA 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
LDA PADDL0
ORA PADDL1
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-12 18:28:22 +00:00
JSR readJOYSTICK
LDA theJOYX
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
LDA BUTN1
BMI L8796
LDA BUTN0
BMI 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
LDA PTRIG
2023-07-08 16:35:15 +00:00
LDX #$10
L87A7 LDA PADDL0
ORA PADDL1
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-14 20:46:43 +00:00
playSOUND STA ptrDATA
2023-07-08 16:35:15 +00:00
STX $0B
2024-02-09 22:22:41 +00:00
L87BE LDA fgSOUND
2023-07-08 16:35:15 +00:00
BEQ L87C5
LDA SPKR
L87C5 DEY
BNE L87CC
DEC $0B
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-13 08:09:27 +00:00
getNOTE INC $54
2023-07-08 16:35:15 +00:00
LDY $54
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
2023-07-08 16:35:15 +00:00
INC $54
LDX $54
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
*-----------------------------------
playMELODY
LDY $54
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-09 22:22:41 +00:00
JSR playSOUND ; play note
2023-07-08 16:35:15 +00:00
LDY $54
DEC $54
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
L8832 LDA $9B
BNE L8844
LDA $A4
LSR
INC $A4
2024-02-09 22:22:41 +00:00
LDX theSPEED
2023-07-08 16:35:15 +00:00
INX
INX
2024-02-09 22:22:41 +00:00
JSR playSOUND
2023-07-08 16:35:15 +00:00
CLC
RTS
2024-02-09 22:22:41 +00:00
L8844 LDX theSPEED
JSR doWAIT
2023-07-08 16:35:15 +00:00
CLC
RTS
2024-02-09 22:22:41 +00:00
L884B LDA tblBOARDALLL,Y
2024-02-14 20:46:43 +00:00
STA ptrBOARD
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-12 18:28:22 +00:00
getXY LDA ytable,Y ; in: board X/Y
2024-02-13 08:09:27 +00:00
PHA ; out: hgr X/Y
2024-02-08 21:48:24 +00:00
LDA xtable,X
2023-07-08 16:35:15 +00:00
TAX
PLA
TAY
RTS
2024-02-08 21:48:24 +00:00
getBYBI LDA bytable,X
2023-07-08 16:35:15 +00:00
PHA
2024-02-08 21:48:24 +00:00
LDA bitable,X
2023-07-08 16:35:15 +00:00
TAX
PLA
RTS
2024-02-08 21:48:24 +00:00
getXBYBI LDA xbytable,X
2023-07-08 16:35:15 +00:00
PHA
2024-02-08 21:48:24 +00:00
LDA xbitable,X
2023-07-08 16:35:15 +00:00
TAX
PLA
RTS
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
*-------------------------------
* CIRCLE ANIMATION
*-------------------------------
2024-02-08 21:48:24 +00:00
circleANIMATION
LDA #$58 ; 88
2023-07-08 16:35:15 +00:00
STA $73
LDA #$8C ; 140
STA $74
LDA $A5
BEQ L88BD
LDX #$AA ; 170
STX $6D
LDX #$00 ; 0
STX $72
L88B6 JSR L88D7
DEC $6D
BNE L88B6
L88BD LDA #$01
STA $6D
STA $A5
STA $72
2024-02-08 21:48:24 +00:00
JSR printMEN
JSR printLEVEL
2023-07-08 16:35:15 +00:00
L88CB JSR L88D7
INC $6D
LDA $6D
CMP #$AA ; 170
BNE L88CB
RTS
L88D7 LDA $6D
STA $69
LDA #$00
STA $6A
STA $67
STA $68
LDA $69
ASL
STA $6B
LDA $6A
ROL
STA $6C
LDA #$03
SEC
SBC $6B
STA $6B
LDA #$00
SBC $6C
STA $6C
LDA $73
SEC
SBC $6D
STA $75
LDA #$00
SBC #$00
STA $79
LDA $73
STA $76
STA $77
LDA #$00
STA $7A
STA $7B
LDA $73
CLC
ADC $6D
STA $78
LDA #$00
ADC #$00
STA $7C
LDA $74
SEC
SBC $6D
TAX
LDA #$00
SBC #$00
JSR L8A45
STY $7D
STA $81
LDX $74
LDA #$00
JSR L8A45
STY $7E
STY $7F
STA $82
STA $83
LDA $74
CLC
ADC $6D
TAX
LDA #$00
ADC #$00
JSR L8A45
STY $80
STA $84
L8951 LDA $68
CMP $6A
BCC L896F
BEQ L8969
L8959 LDA $67
CMP $69
BNE L8968
LDA $68
CMP $6A
BNE L8968
JMP L8A69
L8968 RTS
L8969 LDA $67
CMP $69
BCS L8959
L896F JSR L8A69
LDA $6C
BPL L89A7
LDA $67
ASL
STA $6F
LDA $68
ROL
STA $70
LDA $6F
ASL
STA $6F
LDA $70
ROL
STA $70
LDA $6B
CLC
ADC $6F
STA $6F
LDA $6C
ADC $70
STA $70
LDA #$06
CLC
ADC $6F
STA $6B
LDA #$00
ADC $70
STA $6C
JMP L8A14
L89A7 LDA $67
SEC
SBC $69
STA $6F
LDA $68
SBC $6A
STA $70
LDA $6F
ASL
STA $6F
LDA $70
ROL
STA $70
LDA $6F
ASL
STA $6F
LDA $70
ROL
STA $70
LDA $6F
CLC
ADC #$10
STA $6F
LDA $70
ADC #$00
STA $70
LDA $6F
CLC
ADC $6B
STA $6B
LDA $70
ADC $6C
STA $6C
LDA $69
PHP
DEC $69
PLP
BNE L89EC
DEC $6A
L89EC INC $75
BNE L89F2
INC $79
L89F2 DEC $84
BPL L89FC
LDA #$06
STA $84
DEC $80
L89FC INC $81
LDA $81
CMP #$07
BNE L8A0A
LDA #$00
STA $81
INC $7D
L8A0A DEC $78
LDA $78
CMP #$FF
BNE L8A14
DEC $7C
L8A14 INC $67
BNE L8A1A
INC $68
L8A1A INC $83
LDA $83
CMP #$07
BNE L8A28
LDA #$00
STA $83
INC $7F
L8A28 DEC $76
LDA $76
CMP #$FF
BNE L8A32
DEC $7A
L8A32 INC $77
BNE L8A38
INC $7B
L8A38 DEC $82
BPL L8A42
LDA #$06
STA $82
DEC $7E
L8A42 JMP L8951
L8A45 STX $6F
LDY #$08
SEC
SBC #$07
L8A4C PHP
ROL $70
ASL $6F
ROL
PLP
BCC L8A5A
SBC #$07
JMP L8A5C
L8A5A ADC #$07
L8A5C DEY
BNE L8A4C
BCS L8A64
ADC #$07
CLC
L8A64 ROL $70
LDY $70
RTS
L8A69 LDY $7C
BNE L8A8C
LDY $78
CPY #$B0
BCS L8A8C
2024-02-08 21:48:24 +00:00
JSR setHGRPOINTERS
2023-07-08 16:35:15 +00:00
LDY $7F
CPY #$28
BCS L8A81
LDX $83
JSR L8AF6
L8A81 LDY $7E
CPY #$28
BCS L8A8C
LDX $82
JSR L8AF6
L8A8C LDY $79
BNE L8AAF
LDY $75
CPY #$B0
BCS L8AAF
2024-02-08 21:48:24 +00:00
JSR setHGRPOINTERS
2023-07-08 16:35:15 +00:00
LDY $7F
CPY #$28
BCS L8AA4
LDX $83
JSR L8AF6
L8AA4 LDY $7E
CPY #$28
BCS L8AAF
LDX $82
JSR L8AF6
L8AAF LDY $7B
BNE L8AD2
LDY $77
CPY #$B0
BCS L8AD2
2024-02-08 21:48:24 +00:00
JSR setHGRPOINTERS
2023-07-08 16:35:15 +00:00
LDY $80
CPY #$28
BCS L8AC7
LDX $84
JSR L8AF6
L8AC7 LDY $7D
CPY #$28
BCS L8AD2
LDX $81
JSR L8AF6
L8AD2 LDY $7A
BNE L8AF5
LDY $76
CPY #$B0
BCS L8AF5
2024-02-08 21:48:24 +00:00
JSR setHGRPOINTERS
2023-07-08 16:35:15 +00:00
LDY $80
CPY #$28
BCS L8AEA
LDX $84
JSR L8AF6
L8AEA LDY $7D
CPY #$28
BCS L8AF5
LDX $81
JMP L8AF6
L8AF5 RTS
L8AF6 LDA $72
BNE L8B02
2024-02-14 20:46:43 +00:00
LDA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
AND L8B0C,X
2024-02-14 20:46:43 +00:00
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
RTS
2024-02-14 20:46:43 +00:00
L8B02 LDA (ptrHGR2),Y
2023-07-08 16:35:15 +00:00
AND L8B13,X
2024-02-14 20:46:43 +00:00
ORA (ptrHGR1),Y
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
RTS
L8B0C HEX F0F0F0F08F8F8F
L8B13 HEX 8F8F8F8FF0F0F0
*-------------------------------
* 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-08 21:48:24 +00:00
LDA #>HGR1
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
L8B7A JSR L8CE5
HEX 000102030405060708090A020100
L8B8B JSR L8CE5
HEX 0000010203040507090A02010000
L8B9C JSR L8CE5
HEX 00000001020304090A0201000000
L8BAD JSR L8CE5
HEX 000000000102030A020100000000
L8BBE JSR L8CE5
HEX 000000000001030A010000000000
L8BCF JSR L8CE5
HEX 0000000000000101000000000000
L8BE0 JSR L8CE5
HEX 0001020A09080706050403020100
L8BF1 JSR L8CE5
HEX 000001020A090705040302010000
L8C02 JSR L8CE5
HEX 00000001020A0904030201000000
L8C13 JSR L8CE5
HEX 0000000001020A03020100000000
L8C24 JSR L8CE5
HEX 0000000000010A03010000000000
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
L8CE5 PLA
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
2023-07-08 16:35:15 +00:00
LDY #$50
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
LDY #$0D
L8D08 LDA L8D08,Y
2024-02-14 20:46:43 +00:00
STA (ptrHGR1),Y
2023-07-08 16:35:15 +00:00
INY
CPY #$1B
BCC L8D08
L8D12 JSR L8D4C
2024-02-08 21:48:24 +00:00
INC theY
LDY theY
2023-07-08 16:35:15 +00:00
CPY #$5F
BCC L8CF1
LDX L8D4B
LDY #$FF
L8D22 DEY
BNE L8D22
DEX
BNE L8D22
INC L8D4B
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
LDA BUTN1
BMI L8D41
LDA BUTN0
BMI L8D41
L8D3B LDA KBD
BMI L8D41
RTS
L8D41 PLA
PLA
SEC
LDA KBD
STA KBDSTROBE
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 \
*-------------------------------
* NOT USED?
*-------------------------------
L8E00 LDA #$44 ; MASTER DISKETTE
STA $0478
LDA #$00
JSR LB9A0
NOP
NOP
NOP
NOP
NOP
NOP
LDA #$20
STA $4F
L8E14 DEY
BNE L8E20
DEC $4F
BNE L8E20
JMP LBEAF
NOP
NOP
L8E20 LDA $C08C,X
BPL L8E20
L8E25 CMP #$D4
BNE L8E14
NOP
L8E2A LDA $C08C,X
BPL L8E2A
L8E2F CMP #$D5
BNE L8E25
NOP
L8E34 LDA $C08C,X
BPL L8E34
CMP #$D6
BNE L8E2F
LDA $C088,X
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
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
JMP LB7B5
ds \
*---------------------------------------
put LR.Tables
put LR.RWTS