Get brick number from level data

This commit is contained in:
Pecusx
2024-12-03 20:44:16 +01:00
parent f93046503b
commit b7e739c316
2 changed files with 38 additions and 3 deletions
+38 -3
View File
@@ -1140,18 +1140,46 @@ randomStart
mwa #Menu_data inlevel mwa #Menu_data inlevel
;mwa #Level000_data inlevel ;mwa #Level000_data inlevel
ldy #0 ldy #0
sty BricksInLevel
sty BricksInLevel+1
nextnumber nextnumber
lda (inlevel),y lda (inlevel),y
inw inlevel inw inlevel
cmp #155 cmp #155
bne nextnumber beq nextnumber2
; check valid characters
ldx #9
@ cmp Numbers,x
beq valid1
dex
bpl @-
jmp LevelDataError
valid1 ; value in X register
; now we must multiply BricksInLevel by 10
asl BricksInLevel
rol BricksInLevel+1
mwa BricksInLevel temp
asl BricksInLevel
rol BricksInLevel+1
asl BricksInLevel
rol BricksInLevel+1
adw temp BricksInLevel BricksInLevel
; and add value
clc
txa
adc BricksInLevel
sta BricksInLevel
bcc @+
inc BricksInLevel+1
@ jmp nextnumber
nextnumber2 nextnumber2
lda (inlevel),y lda (inlevel),y
inw inlevel inw inlevel
cmp #155 cmp #155
bne nextnumber2 bne nextnumber2
; make bricks ; make bricks
mwa #0 temp
mva #8 color mva #8 color
mva #margin*2 ypos mva #margin*2 ypos
drawBricksLoopY drawBricksLoopY
@@ -1167,6 +1195,7 @@ drawBricksLoop
cmp #' ' cmp #' '
beq NoBrick ; if no brick beq NoBrick ; if no brick
jsr fatplot jsr fatplot
inw temp ; real number of bricks
NoBrick NoBrick
inc xpos inc xpos
lda xpos lda xpos
@@ -1178,6 +1207,12 @@ EndOfLine
cmp #maxBrickLines+margin*2 cmp #maxBrickLines+margin*2
bne drawBricksLoopY bne drawBricksLoopY
LevelDataEnd LevelDataEnd
cpw BricksInLevel temp
bcc BricksOK ; if defined bricks number is bigger tan real
mwa temp BricksInLevel ; set to real brick number
BricksOK
rts
LevelDataError
rts rts
.endp .endp
;-------------------------------------------------- ;--------------------------------------------------
@@ -1214,7 +1249,7 @@ LevelFileBuff
BricksInLevel BricksInLevel
.word 0 .word 0
Numbers Numbers
.byte "0123456789" .byte '0123456789'
lineAdrL lineAdrL
:margin .byte <marginLine ;8 lines of margin space :margin .byte <marginLine ;8 lines of margin space
:maxLines .byte <(display+40*#) :maxLines .byte <(display+40*#)
BIN
View File
Binary file not shown.