Skip to content

Commit

Permalink
Put bombs on first cell open
Browse files Browse the repository at this point in the history
  • Loading branch information
nzeemin committed Jul 23, 2023
1 parent e4fbb3b commit f0a1842
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 76 deletions.
38 changes: 22 additions & 16 deletions MINER.MAC
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ STGAME:
MOV (R5)+, (R3)+ ; GMEHEI
MOV (R5)+, (R3)+ ; BOMBCN
MOV (R5)+, (R3) ; FSCADR
CLR BOMBPT ; Сколько мин установлено на поле
; Подготовка игрового экрана
MOV #GAMESC, R1 ; Строка для подготовки игрового экрана
CALL PRINT
Expand All @@ -130,15 +131,12 @@ STGAME:
MOV GMEHEI, R0
ASR R0
MOV R0, CURSRY
; Очистка основных переменных
CLR BOMBPT
CLR TIME
; Очистка игрового поля
MOV #<MAXFLD+36.>, R4 ; Счётчик
MOV #FIELD0, R0
10$: MOVB #200, (R0)+ ; Заполнение байта FIELD
SOB R4, 10$
CALL PUTBOMBS
;NOTE: Бомбы расставляем при первом открытии ячейки
; Вывод смайлика
MOV #SPGOOD, R2
MOV #SCICON, R3
Expand Down Expand Up @@ -244,7 +242,10 @@ GODOWN:
BR GMCUR ; Нарисовать курсор и продолжить игру
; Клавиша пробел - открыть ячейку
GOSPC:
CALL CUR2FLD ; R1 = адрес в FIELD
TST BOMBPT ; Бомбы уже расставлены?
BNE 5$ ; да => пропускаем
CALL PUTBOMBS ; Расставляем бомбы
5$: CALL CUR2FLD ; R1 = адрес в FIELD
MOVB (R1), R0
BPL GMCUR ; Ячейка уже открыта? => продолжаем игру
BIC #177740, R0 ; Стираем признак закрытости и флаги
Expand Down Expand Up @@ -277,7 +278,7 @@ OPENAREA:
DEC R2
BITB #200, (R2) ; открыта?
BEQ 10$
BITB #160, (R2) ; можно открыть?
BITB #20, (R2) ; можно открыть?
BNE 10$
CALL OPENCELL
10$:
Expand All @@ -287,7 +288,7 @@ OPENAREA:
SUB #18., R2
BITB #200, (R2) ; открыта?
BEQ 11$
BITB #160, (R2) ; можно открыть?
BITB #20, (R2) ; можно открыть?
BNE 11$
DEC R1
CALL OPENCELL
Expand All @@ -301,7 +302,7 @@ OPENAREA:
ADD #18., R2
BITB #200, (R2) ; открыта?
BEQ 13$
BITB #160, (R2) ; можно открыть?
BITB #20, (R2) ; можно открыть?
BNE 13$
CALL OPENCELL
13$: SUB #18., R2
Expand All @@ -316,7 +317,7 @@ OPENAREA:
SUB #18., R2
BITB #200, (R2) ; открыта?
BEQ 24$
BITB #160, (R2) ; можно открыть?
BITB #20, (R2) ; можно открыть?
BNE 24$
DEC R1
CALL OPENCELL
Expand All @@ -330,7 +331,7 @@ OPENAREA:
BEQ 38$
BITB #200, (R2) ; открыта?
BEQ 28$
BITB #160, (R2) ; можно открыть?
BITB #20, (R2) ; можно открыть?
BNE 28$
CALL OPENCELL
28$:
Expand All @@ -340,7 +341,7 @@ OPENAREA:
SUB #18., R2
BITB #200, (R2) ; открыта?
BEQ 29$
BITB #160, (R2) ; можно открыть?
BITB #20, (R2) ; можно открыть?
BNE 29$
DEC R1
CALL OPENCELL
Expand All @@ -354,7 +355,7 @@ OPENAREA:
ADD #18., R2
BITB #200, (R2) ; открыта?
BEQ 36$
BITB #160, (R2) ; можно открыть?
BITB #20, (R2) ; можно открыть?
BNE 36$
CALL OPENCELL
36$: SUB #18., R2
Expand All @@ -369,7 +370,7 @@ OPENAREA:
ADD #18., R2
BITB #200, (R2) ; открыта?
BEQ 44$
BITB #160, (R2) ; можно открыть?
BITB #20, (R2) ; можно открыть?
BNE 44$
CALL OPENCELL
44$: SUB #18., R2
Expand All @@ -379,7 +380,7 @@ OPENAREA:
; Открыть пустую ячейку, с рекурсивным открытием дальше
; R0 = X, R1 = Y, R2 = адрес в FIELD
OPENCELL:
BICB #200, (R2) ; Очистить верхний бит в FIELD - открываем
BICB #340, (R2) ; Открываем ячейку, снимаем флаги
PUSH R2
PUSH R0
PUSH R1
Expand All @@ -402,6 +403,7 @@ OPENCELL:
POP R2 ; адрес в FIELD
RETURN

; Расставляем мины
PUTBOMBS:
MOV BOMBCN, R5 ; Счётчик цикла - сколько мин поставить
1$: PUSH R5
Expand All @@ -417,7 +419,11 @@ PUTBOMBS:
CLR R0
DIV GMEHEI, R0 ; R0 = частное, R1 = остаток = Y
POP R0 ; теперь R0 = X, R1 = Y
CALL XY2FLD
CMP CURSRX, R0
BNE 5$
CMP CURSRY, R1 ; совпало с курсором?
BEQ 2$ ; да => ищем другое место
5$: CALL XY2FLD
BITB #20, (R1) ; Мина уже стоит?
BNE 2$ ; да => ищем другое место
MOVB #237, (R1) ; ставим мину
Expand Down Expand Up @@ -514,7 +520,7 @@ BOMBCALC:
;MOVB R0, (R2);DEBUG открытое число
RETURN

; Проверка поля на завершение
; Проверка поля на завершение; должна вызываться только когда мины расставлены
; Результат: Z=1 - игра окончена
CHKFLD:
CLR NUMCLO ; Очищаем счётчик закрытых ячеек
Expand Down
Binary file modified SpriteRotate/tiles.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
120 changes: 60 additions & 60 deletions TILES.MAC
Original file line number Diff line number Diff line change
Expand Up @@ -153,84 +153,84 @@ SP8:
.WORD 000771, 000037, 000760, 000017, 000401, 000000, 000000, 000000
.EVEN
SPN0:
.WORD 000376, 000017, 000375, 000027, 000373, 000033, 000007, 000034
.WORD 000007, 000034, 000007, 000034, 000007, 000034, 000007, 000034
.WORD 000003, 000030, 124001, 001020, 052000, 002400, 124001, 001020
.WORD 000003, 000030, 000007, 000034, 000007, 000034, 000007, 000034
.WORD 000007, 000034, 000007, 000034, 000373, 000033, 000375, 000027
.WORD 000376, 000017
.WORD 000374, 000037, 000372, 000057, 000366, 000067, 000016, 000070
.WORD 000016, 000070, 000016, 000070, 000016, 000070, 000016, 000070
.WORD 000006, 000060, 050002, 002440, 124000, 005000, 050002, 002440
.WORD 000006, 000060, 000016, 000070, 000016, 000070, 000016, 000070
.WORD 000016, 000070, 000016, 000070, 000366, 000067, 000372, 000057
.WORD 000374, 000037
.EVEN
SPN1:
.WORD 052000, 002400, 124400, 001020, 051000, 000430, 002400, 000034
.WORD 001000, 000034, 002400, 000034, 001000, 000034, 002400, 000034
.WORD 001000, 000030, 124400, 001020, 052000, 002400, 124400, 001020
.WORD 001000, 000030, 002400, 000034, 001000, 000034, 002400, 000034
.WORD 001000, 000034, 002400, 000034, 051000, 000430, 124400, 001020
.WORD 052000, 002400
.WORD 124000, 005000, 051000, 002440, 122000, 001060, 005000, 000070
.WORD 002000, 000070, 005000, 000070, 002000, 000070, 005000, 000070
.WORD 002000, 000060, 051000, 002440, 124000, 005000, 051000, 002440
.WORD 002000, 000060, 005000, 000070, 002000, 000070, 005000, 000070
.WORD 002000, 000070, 005000, 000070, 122000, 001060, 051000, 002440
.WORD 124000, 005000
.EVEN
SPN2:
.WORD 000376, 000017, 000774, 000027, 001370, 000033, 002400, 000034
.WORD 001000, 000034, 002400, 000034, 001000, 000034, 002400, 000034
.WORD 001000, 000030, 000774, 000027, 000376, 000017, 000375, 010007
.WORD 000003, 004000, 000007, 012000, 000007, 004000, 000007, 012000
.WORD 000007, 004000, 000007, 012000, 000373, 004003, 000375, 010007
.WORD 000376, 000017
.WORD 000374, 000037, 001370, 000057, 002360, 000067, 005000, 000070
.WORD 002000, 000070, 005000, 000070, 002000, 000070, 005000, 000070
.WORD 002000, 000060, 001370, 000057, 000374, 000037, 000372, 020017
.WORD 000006, 010000, 000016, 024000, 000016, 010000, 000016, 024000
.WORD 000016, 010000, 000016, 024000, 000366, 010007, 000372, 020017
.WORD 000374, 000037
.EVEN
SPN3:
.WORD 000376, 000017, 000774, 000027, 001370, 000033, 002400, 000034
.WORD 001000, 000034, 002400, 000034, 001000, 000034, 002400, 000034
.WORD 001000, 000030, 000774, 000027, 000376, 000017, 000774, 000027
.WORD 001000, 000030, 002400, 000034, 001000, 000034, 002400, 000034
.WORD 001000, 000034, 002400, 000034, 001370, 000033, 000774, 000027
.WORD 000376, 000017
.WORD 000374, 000037, 001370, 000057, 002360, 000067, 005000, 000070
.WORD 002000, 000070, 005000, 000070, 002000, 000070, 005000, 000070
.WORD 002000, 000060, 001370, 000057, 000374, 000037, 001370, 000057
.WORD 002000, 000060, 005000, 000070, 002000, 000070, 005000, 000070
.WORD 002000, 000070, 005000, 000070, 002360, 000067, 001370, 000057
.WORD 000374, 000037
.EVEN
SPN4:
.WORD 052000, 002400, 124001, 001020, 050003, 000430, 000007, 000034
.WORD 000007, 000034, 000007, 000034, 000007, 000034, 000007, 000034
.WORD 000003, 000030, 000375, 000027, 000376, 000017, 000774, 000027
.WORD 001000, 000030, 002400, 000034, 001000, 000034, 002400, 000034
.WORD 001000, 000034, 002400, 000034, 051000, 000430, 124400, 001020
.WORD 052000, 002400
.WORD 124000, 005000, 050002, 002440, 120006, 001060, 000016, 000070
.WORD 000016, 000070, 000016, 000070, 000016, 000070, 000016, 000070
.WORD 000006, 000060, 000372, 000057, 000374, 000037, 001370, 000057
.WORD 002000, 000060, 005000, 000070, 002000, 000070, 005000, 000070
.WORD 002000, 000070, 005000, 000070, 122000, 001060, 051000, 002440
.WORD 124000, 005000
.EVEN
SPN5:
.WORD 000376, 000017, 000375, 010007, 000373, 004003, 000007, 012000
.WORD 000007, 004000, 000007, 012000, 000007, 004000, 000007, 012000
.WORD 000003, 004000, 000375, 010007, 000376, 000017, 000774, 000027
.WORD 001000, 000030, 002400, 000034, 001000, 000034, 002400, 000034
.WORD 001000, 000034, 002400, 000034, 001370, 000033, 000774, 000027
.WORD 000376, 000017
.WORD 000374, 000037, 000372, 020017, 000366, 010007, 000016, 024000
.WORD 000016, 010000, 000016, 024000, 000016, 010000, 000016, 024000
.WORD 000006, 010000, 000372, 020017, 000374, 000037, 001370, 000057
.WORD 002000, 000060, 005000, 000070, 002000, 000070, 005000, 000070
.WORD 002000, 000070, 005000, 000070, 002360, 000067, 001370, 000057
.WORD 000374, 000037
.EVEN
SPN6:
.WORD 000376, 000017, 000375, 010007, 000373, 004003, 000007, 012000
.WORD 000007, 004000, 000007, 012000, 000007, 004000, 000007, 012000
.WORD 000003, 004000, 000375, 010007, 000376, 000017, 000375, 000027
.WORD 000003, 000030, 000007, 000034, 000007, 000034, 000007, 000034
.WORD 000007, 000034, 000007, 000034, 000373, 000033, 000375, 000027
.WORD 000376, 000017
.WORD 000374, 000037, 000372, 020017, 000366, 010007, 000016, 024000
.WORD 000016, 010000, 000016, 024000, 000016, 010000, 000016, 024000
.WORD 000006, 010000, 000372, 020017, 000374, 000037, 000372, 000057
.WORD 000006, 000060, 000016, 000070, 000016, 000070, 000016, 000070
.WORD 000016, 000070, 000016, 000070, 000366, 000067, 000372, 000057
.WORD 000374, 000037
.EVEN
SPN7:
.WORD 000376, 000017, 000774, 000027, 001370, 000033, 002400, 000034
.WORD 001000, 000034, 002400, 000034, 001000, 000034, 002400, 000034
.WORD 001000, 000030, 124400, 001020, 052000, 002400, 124400, 001020
.WORD 001000, 000030, 002400, 000034, 001000, 000034, 002400, 000034
.WORD 001000, 000034, 002400, 000034, 051000, 000430, 124400, 001020
.WORD 052000, 002400
.WORD 000374, 000037, 001370, 000057, 002360, 000067, 005000, 000070
.WORD 002000, 000070, 005000, 000070, 002000, 000070, 005000, 000070
.WORD 002000, 000060, 051000, 002440, 124000, 005000, 051000, 002440
.WORD 002000, 000060, 005000, 000070, 002000, 000070, 005000, 000070
.WORD 002000, 000070, 005000, 000070, 122000, 001060, 051000, 002440
.WORD 124000, 005000
.EVEN
SPN8:
.WORD 000376, 000017, 000375, 000027, 000373, 000033, 000007, 000034
.WORD 000007, 000034, 000007, 000034, 000007, 000034, 000007, 000034
.WORD 000003, 000030, 000375, 000027, 000376, 000017, 000375, 000027
.WORD 000003, 000030, 000007, 000034, 000007, 000034, 000007, 000034
.WORD 000007, 000034, 000007, 000034, 000373, 000033, 000375, 000027
.WORD 000376, 000017
.WORD 000374, 000037, 000372, 000057, 000366, 000067, 000016, 000070
.WORD 000016, 000070, 000016, 000070, 000016, 000070, 000016, 000070
.WORD 000006, 000060, 000372, 000057, 000374, 000037, 000372, 000057
.WORD 000006, 000060, 000016, 000070, 000016, 000070, 000016, 000070
.WORD 000016, 000070, 000016, 000070, 000366, 000067, 000372, 000057
.WORD 000374, 000037
.EVEN
SPN9:
.WORD 000376, 000017, 000375, 000027, 000373, 000033, 000007, 000034
.WORD 000007, 000034, 000007, 000034, 000007, 000034, 000007, 000034
.WORD 000003, 000030, 000375, 000027, 000376, 000017, 000774, 000027
.WORD 001000, 000030, 002400, 000034, 001000, 000034, 002400, 000034
.WORD 001000, 000034, 002400, 000034, 001370, 000033, 000774, 000027
.WORD 000376, 000017
.WORD 000374, 000037, 000372, 000057, 000366, 000067, 000016, 000070
.WORD 000016, 000070, 000016, 000070, 000016, 000070, 000016, 000070
.WORD 000006, 000060, 000372, 000057, 000374, 000037, 001370, 000057
.WORD 002000, 000060, 005000, 000070, 002000, 000070, 005000, 000070
.WORD 002000, 000070, 005000, 000070, 002360, 000067, 001370, 000057
.WORD 000374, 000037
.EVEN
SPBLOCK:
.WORD 000000, 000000, 000000, 000000, 040000, 040000, 000000, 000000
Expand Down

0 comments on commit f0a1842

Please sign in to comment.