Skip to content

Commit 7380f5a

Browse files
committed
PAL level 181 colour support
1 parent 8320372 commit 7380f5a

File tree

3 files changed

+52
-18
lines changed

3 files changed

+52
-18
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
* 0001 seeds are ignored
1414
* Floor no longer gobbled up by top line clear
1515
* Floor 0 has original no-burns behaviour again
16-
* Fixed ingame score display at 8 million with Classic Scoring
16+
* [Fixed ingame score display at 8/9 million with Classic Scoring](https://www.youtube.com/watch?v=fYdXky2i5AE)
1717
* Fixed CNROM legal screen CHR bank
1818
* Fixed CNROM legal to title flicker
1919
* Fixed piece skip when doing Sonic Drop then Hard Drop immediately
2020
* Fixed storage bug for push down points
21+
* Fixed crashes in garbage mode 4
22+
* Fixed line clearing happening on pause
2123
* Famicom Keyboard support
2224
* MMC3 Support
2325
* MMC5 Support

src/nmi/render_mode_play_and_demo.asm

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,25 @@ updatePaletteForLevel:
343343
sta PPUDATA
344344
lda colorTable2,x
345345
sta PPUDATA
346+
; PAL level 181 is a different colour because of an address change
347+
lda palFlag
348+
beq @done
349+
lda levelNumber
350+
cmp #181
351+
bne @done
352+
lda #$3F
353+
sta PPUADDR
354+
lda #$09
355+
sta PPUADDR
356+
lda #$21
357+
sta PPUDATA
358+
lda #$3F
359+
sta PPUADDR
360+
lda #$19
361+
sta PPUADDR
362+
lda #$21
363+
sta PPUDATA
364+
@done:
346365
rts
347366

348367
; 3 bytes per level in separate tables
@@ -365,22 +384,22 @@ colorTable0:
365384
.byte $00,$01,$03,$05
366385

367386
colorTable1:
368-
.byte $21,$29,$24,$2A
369-
.byte $2B,$22,$00,$05
370-
.byte $16,$27,$69,$14
371-
.byte $20,$89,$14,$20
372-
.byte $A5,$30,$C9,$A5
373-
.byte $D0,$A5,$20,$A6
374-
.byte $A5,$D0,$C9,$A9
375-
.byte $85,$A9,$A9,$A6
376-
.byte $99,$69,$C9,$A5
377-
.byte $4C,$EB,$A9,$60
378-
.byte $05,$D3,$00,$4A
379-
.byte $AA,$60,$60,$17
380-
.byte $29,$F0,$4E,$D0
381-
.byte $A0,$AB,$07,$C9
382-
.byte $38,$2A,$4E,$60
383-
.byte $00,$01,$04,$05
387+
.byte $21,$29,$24,$2A
388+
.byte $2B,$22,$00,$05
389+
.byte $16,$27,$69,$14
390+
.byte $20,$89,$14,$20
391+
.byte $A5,$30,$C9,$A5
392+
.byte $D0,$A5,$20,$A6
393+
.byte $A5,$D0,$C9,$A9
394+
.byte $85,$A9,$A9,$A6
395+
.byte $99,$69,$C9,$A5
396+
.byte $4C,$EB,$A9,$60
397+
.byte $05,$D3,$00,$4A
398+
.byte $AA,$60,$60,$17
399+
.byte $29,$F0,$4E,$D0
400+
.byte $A0,$AB,$07,$C9
401+
.byte $38,$2A,$4E,$60
402+
.byte $00,$01,$04,$05
384403

385404
colorTable2:
386405
.byte $12,$1A,$14,$12

tests/src/palettes.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ pub fn test() {
267267
let level_number = labels::get("levelNumber") as usize;
268268
let render_flags = labels::get("renderFlags") as usize;
269269

270+
270271
// spend a few frames bootstrapping
271272
for _ in 0..3 {
272273
emu.run_until_vblank();
@@ -281,11 +282,23 @@ pub fn test() {
281282

282283
for level in 0..256 {
283284
emu.memory.iram_raw[level_number] = level as u8;
284-
emu.memory.iram_raw[render_flags] = 2;
285+
emu.memory.iram_raw[render_flags] = labels::get("RENDER_LEVEL") as u8;
285286
emu.run_until_vblank();
286287
let bg_palette = &emu.ppu.palette[9..12];
287288
let sprite_palette = &emu.ppu.palette[25..28];
288289
assert_eq!(bg_palette, sprite_palette);
289290
assert_eq!(bg_palette, PALETTES[level]);
290291
}
292+
293+
let pal181 = [0x21, 0x2b, 0x25];
294+
295+
let pal_flag = labels::get("palFlag") as usize;
296+
emu.memory.iram_raw[pal_flag] = 1;
297+
emu.memory.iram_raw[level_number] = 181;
298+
emu.memory.iram_raw[render_flags] = labels::get("RENDER_LEVEL") as u8;
299+
emu.run_until_vblank();
300+
let bg_palette = &emu.ppu.palette[9..12];
301+
let sprite_palette = &emu.ppu.palette[25..28];
302+
assert_eq!(bg_palette, sprite_palette);
303+
assert_eq!(bg_palette, pal181);
291304
}

0 commit comments

Comments
 (0)