Skip to content

Commit 63bc5b9

Browse files
committed
new method: rewrite the nametable
1 parent f5ff2b1 commit 63bc5b9

File tree

4 files changed

+137
-188
lines changed

4 files changed

+137
-188
lines changed

src/boot.asm

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,6 @@
3636
; cpx #0 ; dex sets z flag
3737
bne @loop
3838

39-
lda #1
40-
sta debugFlag
41-
4239
; default pace to A
4340
lda #$A
4441
sta paceModifier

src/chr/game_tileset.png

191 Bytes
Loading

src/gamemodestate/initbackground.asm

Lines changed: 80 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@ gameModeState_initGameBackground:
1111
.addr game_palette
1212
jsr copyRleNametableToPpu
1313
.addr game_nametable
14+
jsr scoringBackground
15+
jsr debugNametableUI
16+
1417
lda darkMode
1518
beq @notDarkMode
1619
jsr drawDarkMode
1720
@notDarkMode:
18-
jsr scoringBackground
1921

2022
lda hzFlag
2123
beq @noHz
@@ -29,7 +31,6 @@ gameModeState_initGameBackground:
2931
sta tmp2
3032
jsr displayModeText
3133
jsr statisticsNametablePatch ; for input display
32-
jsr debugNametableUI
3334

3435
; ingame hearts
3536
lda heartsAndReady
@@ -107,11 +108,6 @@ scoringBackground:
107108
bne @noSevenDigit
108109
jsr bulkCopyToPpu
109110
.addr seven_digit_nametable
110-
lda darkMode
111-
beq @notDarkMode
112-
jsr bulkCopyToPpu
113-
.addr seven_digit_nametable_dark
114-
@notDarkMode:
115111

116112
@noSevenDigit:
117113

@@ -161,7 +157,8 @@ MODENAMES
161157
debugNametableUI:
162158
lda debugFlag
163159
beq @notDebug
164-
jsr saveStateNametableUI
160+
jsr bulkCopyToPpu
161+
.addr savestate_nametable
165162
jsr saveSlotNametablePatch
166163
@notDebug:
167164
rts
@@ -175,13 +172,6 @@ saveSlotNametablePatch:
175172
sta PPUDATA
176173
rts
177174

178-
saveStateNametableUI:
179-
lda darkMode
180-
bne @noDark
181-
jsr bulkCopyToPpu
182-
.addr savestate_nametable
183-
@noDark:
184-
rts
185175

186176
statisticsNametablePatch:
187177
lda #$21
@@ -233,134 +223,95 @@ hzStats: ; stripe
233223
.byte $FF
234224

235225
seven_digit_nametable:
236-
.byte $20, $5F, $41, $3a ; -
237-
.byte $20, $7f, $C7, $3c ; |
238-
.byte $21, $5F, $41, $3F ; -
226+
.byte $20, $5F, $41, $75 ; -
227+
.byte $20, $7f, $C7, $36 ; |
228+
.byte $21, $5F, $41, $77 ; -
239229
.byte $20, $7E, $C7, $FF ; |
240-
.byte $20, $5E, $41, $39 ; -
241-
.byte $21, $5E, $41, $3E ; -
230+
.byte $20, $5E, $41, $34 ; -
231+
.byte $21, $5E, $41, $37 ; -
242232
.byte $21, $1E, $41, $0 ; 0
243233
.byte $FF
244234

245-
seven_digit_nametable_dark:
246-
.byte $20, $5F, $41, DARK_CORNER_TILES+1
247-
.byte $21, $5F, $41, DARK_CORNER_TILES+3
248-
.byte $FF
249-
250235
savestate_nametable:
251-
.byte $22,$F7,$8,$38,$39,$39,$39,$39,$39,$39,$3A
252-
.byte $23,$17,$8,$3B,$1C,$15,$18,$1D,$FF,$FF,$3C
253-
.byte $23,$37,$8,$3B,$FF,$FF,$FF,$FF,$FF,$FF,$3C
254-
.byte $23,$57,$8,$3D,$3E,$3E,$3E,$3E,$3E,$3E,$3F
236+
.byte $22,$F7,$8,$74,$34,$34,$34,$34,$34,$34,$75
237+
.byte $23,$17,$8,$35,$1C,$15,$18,$1D,$FF,$FF,$36
238+
.byte $23,$37,$8,$35,$FF,$FF,$FF,$FF,$FF,$FF,$36
239+
.byte $23,$57,$8,$76,$37,$37,$37,$37,$37,$37,$77
255240
.byte $FF
256241

257-
DARK_CORNER_TILES := $94
258-
DARK_CORNER_TILES2 := $90
242+
NORMAL_CORNER_TILES := $70
243+
DARK_CORNER_TILES := $80
259244

260245
drawDarkMode:
261-
jsr bulkCopyToPpu
262-
.addr darkmode_stripes
263246

264-
ldx #0
265-
lda darkCorners, x
266-
@darkCornerLoop:
267-
stx tmpZ
247+
darkBuffer := playfield ; cleared right after in initGameState
248+
249+
; process the playfield in 60 chunks
250+
lda #60
251+
sta tmpZ
252+
253+
lda #$20
254+
sta tmpX
255+
lda #$00
256+
sta tmpY
257+
258+
@processChunk: ; process 16 tiles at a time
259+
lda tmpX
268260
sta PPUADDR
261+
lda tmpY
262+
sta PPUADDR
263+
lda PPUDATA
264+
265+
ldx #0
266+
@copyToBuffer:
267+
lda PPUDATA
268+
sta darkBuffer, x
269269
inx
270-
lda darkCorners, x
270+
cpx #16
271+
bne @copyToBuffer
272+
273+
; reset PPUADDR
274+
lda tmpX
275+
sta PPUADDR
276+
lda tmpY
271277
sta PPUADDR
278+
279+
ldx #0
280+
@copyToNametable:
281+
lda darkBuffer, x
282+
283+
; set pattern as blank
284+
cmp #$90
285+
bmi :+
286+
cmp #$A2
287+
bpl :+
288+
lda #$EF
289+
:
290+
; use rounded corners
291+
cmp #$70
292+
bmi :+
293+
cmp #$78
294+
bpl :+
295+
clc
296+
adc #$10
297+
:
298+
299+
sta PPUDATA
272300
inx
301+
cpx #16
302+
bne @copyToNametable
303+
273304
clc
274-
lda #DARK_CORNER_TILES
275-
ldy tmpZ
276-
cpy #40
277-
bmi @notAlt
278-
lda #DARK_CORNER_TILES2
279-
@notAlt:
280-
sta tmpX
305+
lda tmpY
306+
adc #16
307+
sta tmpY
308+
bcc @noverflow
309+
inc tmpX
310+
@noverflow:
311+
312+
sec
281313
lda tmpZ
282-
lsr
283-
and #$3
284-
adc tmpX
285-
sta PPUDATA
286-
lda darkCorners, x
287-
bne @darkCornerLoop
288-
@notDarkMode:
314+
sbc #1
315+
sta tmpZ
316+
bne @processChunk
289317
rts
290-
291-
stripeHoriz = $40
292-
stripeVert = $C0
293-
294-
darkmode_stripes:
295-
.byte $20,$00
296-
.byte $00|stripeHoriz,$FF
297-
.byte $20,$40
298-
.byte $0B|stripeHoriz,$FF
299-
.byte $20,$60
300-
.byte $18|stripeVert,$FF
301-
.byte $20,$61
302-
.byte $03|stripeVert,$FF
303-
.byte $20,$6A
304-
.byte $05|stripeVert,$FF
305-
.byte $20,$5F
306-
.byte $15|stripeVert,$FF
307-
.byte $20,$C1
308-
.byte $09|stripeHoriz,$FF
309-
.byte $20,$E1
310-
.byte $09|stripeHoriz,$FF
311-
.byte $21,$77
312-
.byte $08|stripeHoriz,$FF
313-
.byte $21,$9D
314-
.byte $07|stripeVert,$FF
315-
.byte $21,$7E
316-
.byte $0C|stripeVert,$FF
317-
.byte $22,$F7
318-
.byte $09|stripeHoriz,$FF
319-
.byte $23,$17
320-
.byte $09|stripeHoriz,$FF
321-
.byte $23,$37
322-
.byte $09|stripeHoriz,$FF
323-
.byte $23,$57
324-
.byte $00|stripeHoriz,$FF
325-
.byte $23,$97
326-
.byte $29|stripeHoriz,$FF
327-
.byte $FF
328-
329-
darkCorners:
330-
; mode
331-
.byte $20,$62
332-
.byte $20,$69
333-
.byte $20,$A2
334-
.byte $20,$A9
335-
; stats
336-
.byte $21,$01
337-
.byte $21,$0A
338-
.byte $23,$41
339-
.byte $23,$4A
340-
; lines
341-
.byte $20,$4B
342-
.byte $20,$56
343-
.byte $20,$8B
344-
.byte $20,$96
345-
; score
346-
.byte $20,$57
347-
.byte $20,$5E
348-
.byte $21,$57
349-
.byte $21,$5E
350-
; level
351-
.byte $22,$77
352-
.byte $22,$7D
353-
.byte $22,$D7
354-
.byte $22,$DD
355-
; alt tiles
356-
; next
357-
.byte $21,$97
358-
.byte $21,$9C
359-
.byte $22,$57
360-
.byte $22,$5c
361-
; game
362-
.byte $20,$AB
363-
.byte $20,$B6
364-
.byte $23,$4B
365-
.byte $23,$56
366-
.byte $0

0 commit comments

Comments
 (0)