;NES hardware-dependent functions by Shiru (shiru@mail.ru) ;with improvements by VEG ;Feel free to do anything you want with this code, consider it Public Domain .export _pal_all,_pal_bg,_pal_spr,_pal_col,_pal_clear .export _pal_bright,_pal_spr_bright,_pal_bg_bright .export _ppu_off,_ppu_on_all,_ppu_on_bg,_ppu_on_spr,_ppu_mask,_ppu_system .export _oam_clear,_oam_size,_oam_hide_rest .export _ppu_wait_frame,_ppu_wait_nmi .export _scroll .export _bank_spr,_bank_bg .export _vram_write .export _vram_adr,_vram_put,_vram_fill,_vram_inc .export _set_vram_update,_flush_vram_update .export _delay .export _get_ppu_ctrl_var,_set_ppu_ctrl_var .export _nesclock .export _nmi_set_callback ;NMI handler nmi: pha txa pha tya pha lda OAM_BUF ;update OAM sta PPU_OAM_DMA lda palBrightTable0,>palBrightTable1,>palBrightTable2 .byte >palBrightTable3,>palBrightTable4,>palBrightTable5 .byte >palBrightTable6,>palBrightTable7,>palBrightTable8 palBrightTable0: .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f ;black palBrightTable1: .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f palBrightTable2: .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f palBrightTable3: .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f palBrightTable4: .byte $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0f,$0f,$0f ;normal colors palBrightTable5: .byte $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1a,$1b,$1c,$00,$00,$00 palBrightTable6: .byte $10,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2a,$2b,$2c,$10,$10,$10 ;$10 because $20 is the same as $30 palBrightTable7: .byte $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3a,$3b,$3c,$20,$20,$20 palBrightTable8: .byte $30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30 ;white .byte $30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30 .byte $30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30 .byte $30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30,$30