; Startup code for cc65 and Shiru's NES library ; based on code by Groepaz/Hitmen , Ullrich von Bassewitz ; edited by Steven Hugg (remove integrated Famitone2 library, add NMICallback) .export _exit,__STARTUP__:absolute=1 .import initlib,push0,popa,popax,_main,zerobss,copydata ; Linker generated symbols .import __RAM_START__ ,__RAM_SIZE__ .import __ROM0_START__ ,__ROM0_SIZE__ .import __STARTUP_LOAD__,__STARTUP_RUN__,__STARTUP_SIZE__ .import __CODE_LOAD__ ,__CODE_RUN__ ,__CODE_SIZE__ .import __RODATA_LOAD__ ,__RODATA_RUN__ ,__RODATA_SIZE__ .import NES_MAPPER,NES_PRG_BANKS,NES_CHR_BANKS,NES_MIRRORING .include "zeropage.inc" .include "nes.inc" FT_BASE_ADR =$0100 ;page in RAM, should be $xx00 .define FT_THREAD 1 ;undefine if you call sound effects in the same thread as sound update .define FT_PAL_SUPPORT 1 ;undefine to exclude PAL support .define FT_NTSC_SUPPORT 1 ;undefine to exclude NTSC support .segment "ZEROPAGE" NTSC_MODE: .res 1 FRAME_CNT1: .res 1 FRAME_CNT2: .res 1 VRAM_UPDATE: .res 1 NAME_UPD_ADR: .res 2 NAME_UPD_ENABLE: .res 1 PAL_UPDATE: .res 1 PAL_BG_PTR: .res 2 PAL_SPR_PTR: .res 2 SCROLL_X: .res 1 SCROLL_Y: .res 1 SCROLL_X1: .res 1 SCROLL_Y1: .res 1 PPU_CTRL_VAR: .res 1 PPU_CTRL_VAR1: .res 1 PPU_MASK_VAR: .res 1 ;;FT_TEMP: .res 3 _oam_off: .res 1 NMICallback: .res 3 TEMP: .res 11 .exportzp NTSC_MODE, FRAME_CNT1, FRAME_CNT2, VRAM_UPDATE .exportzp NAME_UPD_ADR, NAME_UPD_ENABLE .exportzp PAL_UPDATE, PAL_BG_PTR, PAL_SPR_PTR .exportzp SCROLL_X, SCROLL_Y, SCROLL_X1, SCROLL_Y1 .exportzp PPU_CTRL_VAR, PPU_CTRL_VAR1, PPU_MASK_VAR .exportzp _oam_off, NMICallback .exportzp TEMP .include "zpvars.inc" .segment "HEADER" .byte $4e,$45,$53,$1a .byte (__RAM_START__+__RAM_SIZE__) sta sp+1 ; Set argument stack ptr jsr initlib ; setup NMICallback trampoline to NOP lda #$4C ;JMP xxxx sta NMICallback lda #HandyRTS sta NMICallback+2 lda #%10000000 sta