; INES header stuff .inesprg 128 * 1024 ; 8 banks of PRG = 128kB .ineschr 0 ; no CHR, RAM only .inesmir 0 ; horizontal mirroring .inesmap 2 ; UxROM ; settings ENABLE_STARS .equ 1 ENABLE_START_SCROLLING .equ 1 ENABLE_LAST_GAME_SAVING .equ 1 ENABLE_TOP_OFFSET .equ 0 ENABLE_RIGHT_CURSOR .equ 1 GAME_NAMES_OFFSET .equ 2 BUTTON_REPEAT_FRAMES .equ 30 WRAP_GAMES .equ 30 ; games settings .include "games.asm" ; sprites data .rsset $0400 SPRITES .rs 0 SPRITE_0_Y .rs 1 SPRITE_0_TILE .rs 1 SPRITE_0_ATTR .rs 1 SPRITE_0_X .rs 1 SPRITE_1_Y .rs 1 SPRITE_1_TILE .rs 1 SPRITE_1_ATTR .rs 1 SPRITE_1_X .rs 1 ; non-volatile PRG-RAM .rsset $6000 SRAM_SIGNATURE .rs 8 SRAM_LAST_STARTED_GAME .rs 2 SRAM_LAST_STARTED_LINE .rs 2 SRAM_LAST_STARTED_SAVE .rs 1 .rsset $0000 ; zero page variables ; some common variables COPY_SOURCE_ADDR .rs 2 COPY_DEST_ADDR .rs 2 TMP .rs 2 ; selected game SELECTED_GAME .rs 2 .bank 15 ; last bank .org $FFFA ; vectors .dw NMI ; NMI vector .dw Start ; reset vector .dw IRQ ; interrupts .org $FFE0 unrom_bank_data: ; for compatibility with UNROM and UNROM's bus conflicts .db $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $0C, $0D, $0E, $0F .org $E000 Start: sei ; no interrupts ; reset stack ldx #$ff txs lda #%00000000 ; PPU disabled sta PPUCTRL sta PPUMASK jsr waitblank_simple ; clean memory lda #$00 sta > 8) & $FF bne .not_single_game stx =1 lda #%00010011 cmp > 8) & $FF sta =2 lda #%00100011 cmp > 8) & $FF adc #0 sta