|  | 
 
| 本帖最后由 yandagui 于 2020-3-22 22:23 编辑 
 真是无聊透顶, 搞个假的合卡哈
 
  
 
 
 复制代码;[FC][精简合卡菜单45_52]
;FlameCyclone
;2020.03.22
;6502 Macroassembler & Simulator 1.2.11
;==================================================
RESET_PORT             = $A000
MENU_INDEX             = 03
MENU_RESET             = $F80D
MENU_NMI               = $E800
;==================================================
MULTICART_TYPE         = 52
;==================================================
Char_Arrow = $3F
SCROLL_H_VALUE         = 0
SCROLL_V_VALUE         = 8
ARROW_X_OFFSET         = $1C ;箭头横坐标
ARROW_Y_OFFSET         = $27 ;箭头纵坐标
ITEM_COUNT             = 24  ;节目总数
SPRITES_ADDR           = $0400
SPRITES_PAGE           = SPRITES_ADDR / 256
;==================================================
BTN_DELAY              = 30     ;按键重复触发时长
BTN_SPEED              = 10     ;按键重复触发速度
;==================================================
Data_L                 = $40
Data_H                 = Data_L + $01
Data_Count             = Data_H + $01
;==================================================
Sel_Index              = Data_Count + $01
;==================================================
Button_Keep            = Sel_Index + $01
Button_Once            = Button_Keep+$01
Button_Temp            = Button_Once+$01
Button_Buf             = Button_Temp+$01
Button_Status          = Button_Buf+$01
;==================================================
SEL_PROCESS_SIZE       = SelectGameLength - SelectGame
Sel_Process_Addr       = $0500
;==================================================
Second_Time            = Button_Status + $02
Btn_Delay              = Second_Time + $01
 .IF MULTICART_TYPE == 52
;========================================
Sel_Addr_L             = Btn_Delay + 2
Sel_Addr_H             = Sel_Addr_L + 1
 .ENDIF
 .IF MULTICART_TYPE == 45
;========================================
Rom_Index              = Btn_Delay + 2
CHR_Addr_L             = Rom_Index + $01
CHR_Addr_H             = CHR_Addr_L + $01
PRG_Addr               = CHR_Addr_H + $01
PRG_Size               = PRG_Addr + $01
CHR_Size               = PRG_Size + $01
MIR_Addr               = CHR_Size + $01
;========================================
 .ENDIF
BTN_UP                 = $08
BTN_DOWN               = $04
BTN_LEFT               = $02
BTN_RIGHT              = $01
BTN_SELECT             = $20
BTN_START              = $10
BTN_B                  = $40
BTN_A                  = $80
;==================================================
SOUND_OPEN             = 1     ;菜单音效
CUSTOM_MUSIC_OPEN      = 0     ;个性化音乐
BUTTON_SOUND_OPEN      = 1     ;按键选择列表音效
ATTRIBUTE_OPEN         = 1     ;属性表开启
ROM_CHAR_MAP           = 1     ;字符映射
;==================================================
ROM_MIRRIOR_OPEN       = 0     ;启用镜像选择
ROM_VRAM_OPEN          = 0     ;启用VRAM
Vram_Data              = $BC00 ;Vram数据地址
Vram_Addr              = $0200 ;Vram写入地址
Vram_Size              = $04   ;VRAM大小 * 0x100
;==================================================
Sound_Addr_Init        = $BF00 ;音乐初始化
Sound_Addr_Play        = $8000 ;音乐播放
SOUND_BGM              = 29    ;背景音效
SOUND_BUTTON           = 30    ;选择音效
SOUND_ENTER            = 34    ;进入音效
SOUND_ENTER_TIME       = 60    ;进入音效延时
;==================================================
 .ORG RESET_PORT
;==================================================
;程序初始化
ResetInit:
 CLD
 SEI
 LDX #$FF
 TXS
 LDA #$00
 STA $2000
 STA $2001
 STA $E000
 LDA #$80
 STA $A001
 LDA #$01
 STA $A000
 LDX #$02
ResetDelayA:
 BIT $2002
 BPL ResetDelayA
ResetDelayB:
 BIT $2002
 BMI ResetDelayB
 DEX
 BNE ResetDelayA
 
 LDA #$0F
 STA $4015
 LDA #$C0
 STA $4017
 JSR PaletteClear
 
MenuInit
 .IF MULTICART_TYPE == 52
MenuInitSet:
 LDX #MENU_INDEX
 LDA Rom_Select_Data
 AND #$7F
 STA $6000
 .ENDIF
 .IF MULTICART_TYPE == 45
 LDA #MENU_INDEX
 JSR GetRomPort
 LDX #$00
MenuInitSet:
 LDA CHR_Addr_L
 STA $6000
 LDA PRG_Addr
 ASL
 STA $6000
 LDA CHR_Addr_H
 ASL
 ASL
 ASL
 ASL
 ORA CHR_Size
 STA $6000
 LDA PRG_Size
 STA $6000
 INX
 BNE MenuInitSet
 .ENDIF
 
;==================================================
;RAM清空
RamClear:
 LDA #$00
 STA $00
 STA $01
 LDX #$08
 LDY #$00
RamClearWrite:
 STA ($00),Y
 INY
 BNE RamClearWrite
 INC $01
 DEX
 BNE RamClearWrite
 JSR SpriteClear
 JSR VramClear
 JSR ChrSteup
 JSR TextWrite
 JSR TimeWait
 JSR PaletteSet
 
 .IF ATTRIBUTE_OPEN 
 JSR TimeWait
 JSR AttributeSet
 .ENDIF
 
 JSR ResetScroll
 
 LDA #BTN_START
 STA Button_Buf
 LDA #$1E
 STA $2001
 
 JSR NmiDelay
 .IF SOUND_OPEN
 .IF CUSTOM_MUSIC_OPEN
 LDA #SOUND_BGM - 1
 JSR Sound_Addr_Init
 .ENDIF
 .ENDIF
 
;==================================================
;循环等待
WaitLoop:
 JSR NmiDelay
 JSR SelectChange
 JSR SpriteSet
 JMP WaitLoop
 RTS
 
;==================================================
;NMI延时
NmiDelay:
 JSR TimeWait
 LDA #SPRITES_PAGE
 STA $4014
 JSR ResetScroll
 .IF CUSTOM_MUSIC_OPEN 
 JSR Sound_Addr_Play
 .ENDIF
 
 JSR Button_Process
 RTS
 
;==================================================
;延时等待
TimeWait:
 LDA $2002
 BPL TimeWait
 RTS
;==================================================
;重设滚动
ResetScroll:
 LDA #$00
 STA $2006
 STA $2006
 LDA #SCROLL_H_VALUE
 STA $2005
 LDA #SCROLL_V_VALUE
 STA $2005
 RTS
;==================================================
;按键处理
Button_Process:
 JSR Button_Scan
 LDA Button_Keep
 STA Button_Temp
 JSR Button_Scan
 LDA Button_Keep
 CMP Button_Temp
 BEQ Button_Get_Once
 LDA Button_Buf
 STA Button_Keep
Button_Get_Once:
 TAY
 EOR Button_Buf
 AND Button_Keep
 STA Button_Once
 STY Button_Buf
 JSR ButtonDelay
 RTS
;==================================================
;按键扫描
Button_Scan:
 LDX #$01
 STX $4016
 DEX
 STX $4016
 LDY #$08
Button_Value:
 LDA $4016
 STA Button_Status
 LSR
 ORA Button_Status
 LSR
 ROL Button_Keep
 DEY
 BNE Button_Value
 RTS
;==================================================
;按键延时重复
ButtonDelay:
 LDA Button_Keep
 AND #$EF
 BNE ButtonDelaySet
 LDA #$00
 STA Btn_Delay
ButtonDelaySet:
 INC Btn_Delay
 LDA Btn_Delay
 CMP #BTN_DELAY + BTN_SPEED
 BCC ButtonDelayEnd
 LDA #BTN_DELAY
 STA Btn_Delay
 LDA Button_Keep
 STA Button_Once
ButtonDelayEnd:
 RTS
;========================================
;图形块设置
ChrSteup:
 LDX #$00
ChrSteupSetChr:
 STX $8000
 LDA ChrBankData,X
 STA $8001
 INX
 CPX #$06
 BCC ChrSteupSetChr
 
 .IF ROM_VRAM_OPEN
 LDA #<Vram_Data
 STA Data_L
 LDA #>Vram_Data
 STA Data_H
 LDA #>Vram_Addr
 STA $2006
 LDA #<Vram_Addr
 STA $2006
 LDX #Vram_Size
 LDY #$00
ChrSteupSetVram:
 LDA (Data_L),Y
 STA $2007
 INY
 BNE ChrSteupSetVram
 INC Data_H
 DEX
 BNE ChrSteupSetVram
 .ENDIF
 RTS
 
;==================================================
;精灵清除
SpriteClear:
 LDX #$00
 LDA #$F8
SpriteClearWrite:
 STA SPRITES_ADDR,X
 INX
 BNE SpriteClearWrite
 RTS
;==================================================
;精灵设置
SpriteSet:
 LDA Sel_Index
 ASL
 ASL
 ASL
 ;ASL
 CLC
 ADC #ARROW_Y_OFFSET
 STA SPRITES_ADDR
 LDA #Char_Arrow
 STA SPRITES_ADDR + 1
 LDA #$00
 STA SPRITES_ADDR + 2
 LDA #ARROW_X_OFFSET
 STA SPRITES_ADDR + 3
 RTS
;==================================================
;清空PPU内存
VramClear:
 LDA #$00
 STA $2006
 LDA #$00
 STA $2006
 TAX
 LDY #$30
 LDA #$00
NameTableClearBeg:
 STA $2007
 INX
 BNE NameTableClearBeg
 DEY
 BNE NameTableClearBeg
 RTS
 
;==================================================
;清空调色板
PaletteClear:
 JSR PaletteAddrSet
 LDA #$0F
 LDX #$00
PaletteClearWrite:
 STA $2007
 INX
 CPX #$20
 BCC PaletteClearWrite
 RTS
 
;==================================================
;设置调色板
PaletteSet:
 JSR PaletteAddrSet
 LDX #$00
PaletteSetWrite:
 LDA PaletteData,X
 STA $2007
 INX
 CPX #$20
 BCC PaletteSetWrite
 RTS
;==================================================
;调色板地址设置
PaletteAddrSet:
 LDA #$3F
 STA $2006
 LDA #$00
 STA $2006
 RTS
 
 .IF ATTRIBUTE_OPEN 
;==================================================
;设置属性表
AttributeSet:
 LDA #$23
 STA $2006
 LDA #$C0
 STA $2006
 LDX #$00
AttributeSetWrite:
 LDA AttributeData,X
 STA $2007
 INX
 CPX #$40
 BCC AttributeSetWrite
 RTS
 .ENDIF
;==================================================
;写入文本
TextWrite:
 LDA #<TextData
 STA Data_L
 LDA #>TextData
 STA Data_H
 LDY #$00
TextWriteCheckMode:
 LDA (Data_L),Y
 BEQ TextWriteOver
 CMP #$FF
 BEQ TextWriteOver
 AND #$04
 STA $2000
 JSR CheckAddr
 LDA (Data_L),Y
 STA $2006
 JSR CheckAddr
 LDA (Data_L),Y
 STA $2006
 JSR CheckAddr
 LDA (Data_L),Y
 TAX
 JSR CheckAddr
TextWriteData:
 STX Data_Count
 LDA (Data_L),Y
 
 .IF ROM_CHAR_MAP 
 TAX
 LDA Char_Rom_Map,X
 .ENDIF
 
 STA $2007
 JSR CheckAddr
 LDX Data_Count
 DEX
 BNE TextWriteData
 JMP TextWriteCheckMode
TextWriteOver:
 LDA #$00
 STA $2000
 RTS
;--------------------------------------------------
CheckAddr:
 INY
 BNE CheckAddrOver
 INC Data_H
CheckAddrOver:
 RTS
;==================================================
;选项切换
SelectChange:
 LDA Button_Once
 AND #$FF
 BEQ SelectChangeEnd
SelectChangeSound:
 .IF SOUND_OPEN 
 .IF BUTTON_SOUND_OPEN 
 JSR ButtonSound
 .ENDIF
 .ENDIF
SelectInc:
 LDA Button_Once
 AND #BTN_SELECT | BTN_DOWN
 BEQ SelectDec
 LDA Sel_Index
 CMP #ITEM_COUNT - 1
 BCC SelectIncSet
 LDA #$FF
 STA Sel_Index
SelectIncSet:
 INC Sel_Index
SelectDec:
 LDA Button_Once
 CMP #BTN_UP
 BNE SelectBeg
 LDA Sel_Index
 BNE SelectDecSet
 LDA #ITEM_COUNT
 STA Sel_Index
SelectDecSet:
 DEC Sel_Index
SelectBeg:
 LDA Button_Once
 AND #BTN_LEFT | BTN_B
 BEQ SelectEnd
 LDA #$00
 STA Sel_Index
SelectEnd:
 LDA Button_Once
 AND #BTN_RIGHT | BTN_A
 BEQ SelectOver
 LDA #ITEM_COUNT - 1
 STA Sel_Index
SelectOver:
 LDA Button_Once
 CMP #BTN_START
 BNE SelectChangeEnd
 
 .IF SOUND_OPEN
 JSR TimeWait
 JSR EnterSound
 JSR TimeWait
 JSR SoundClean
 .ENDIF
 
 JSR TimeWait
 LDA #$00
 STA $2001
 STA $4010
 STA $4011
 STA $4012
 STA $4013
 STA $4015
 JSR PaletteClear
 
 JMP RomSelect
SelectChangeEnd:
 RTS
 .IF SOUND_OPEN 
;========================================
;按键音效
ButtonSound:
 .IF CUSTOM_MUSIC_OPEN 
 LDA #SOUND_BUTTON - 1
 JSR Sound_Addr_Init
 RTS
 .ELSE
 LDA #$03
 STA $4015
 LDX #$00
ButtonSoundWrite:
 LDA ButtonSoundData,X
 STA $4000,X
 INX
 CPX #$04
 BCC ButtonSoundWrite
 RTS
ButtonSoundData:
 .DB $87,$89,$F0,$00
 .ENDIF
 .ENDIF
 .IF SOUND_OPEN 
;========================================
;进入音效
EnterSound:
 .IF CUSTOM_MUSIC_OPEN
 LDA #SOUND_ENTER - 1
 JSR Sound_Addr_Init
 LDA #SOUND_ENTER_TIME
 JSR SecondDelay
 RTS
 .ELSE
 LDA #$02
 STA $4015
 LDX #$00
EnterSoundWrite:
 LDA EnterSoundData,X
 STA $4004,X
 INX
 CPX #$04
 BCC EnterSoundWrite
 LDA #$18
 JSR SecondDelay
 RTS
EnterSoundData:
 .DB $3F,$9A,$FF,$00
 .ENDIF
 .ENDIF
 .IF SOUND_OPEN 
;========================================
;等待延时
SecondDelay:
 STA Second_Time
 BEQ SecondDelayEnd
SecondDelayWait:
 JSR NmiDelay
 LDA Button_Once
 AND #$90
 BNE SecondDelayEnd
 DEC Second_Time
 BNE SecondDelayWait
SecondDelayEnd:
 RTS
 .ENDIF
 .IF SOUND_OPEN 
;=================================================
;音频清理
SoundClean:
 LDA #$0B
 STA $4015
 LDA #$00
 STA $4008
 LDA #$0F
 STA $4015
 
 LDA #$30
 STA $4000
 JSR SoundCleanDelay
 STA $4004
 JSR SoundCleanDelay
 STA $400C
 JSR SoundCleanDelay
 LDA #$7F
 STA $4001
 JSR SoundCleanDelay
 STA $4005
 JSR SoundCleanDelay
 RTS
SoundCleanDelay:
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 NOP
 RTS
 
 .ENDIF
 
 
 .IF MULTICART_TYPE == 52
;==================================================
RomSelect:;选择节目处理
 LDX #$00
SelectProcessWrite:
 LDA SelectGame,X
 STA Sel_Process_Addr,X
 INX
 CPX #SEL_PROCESS_SIZE
 BCC SelectProcessWrite
 
 .IF ROM_MIRRIOR_OPEN 
 LDX Sel_Index
 LDA Rom_Select_Mirrior,X
 STA $A000
 .ENDIF
 
 LDA Sel_Index
 ASL
 TAX
 LDA Rom_Select_Data,X
 STA Sel_Addr_H
 INX
 LDA Rom_Select_Data,X
 STA Sel_Addr_L
 LDY #$00
 LDX Sel_Index
 LDA Stage_Data,X
 STA $01C0
 LDA Life_Data,X
 STA $01C1
 LDA Weapon_Data,X
 STA $01C2
 JMP MENU_RESET
 LDA #$00
 JMP Sel_Process_Addr
;==================================================
SelectGame:;选择节目
 STA (Sel_Addr_L),Y
 CPX #MENU_INDEX
 BNE SelectGameEnd
 JMP MENU_RESET
SelectGameEnd:
 STA $6000
 JMP ($FFFC)
SelectGameLength:
 .ENDIF
 .IF MULTICART_TYPE == 45
;==================================================
GetRomPort:
 STA Rom_Index
 JSR GetPrgBankIndex
 JSR GetChrBankIndex
 JSR GetPrgSize
 JSR GetChrSize
 LDX Rom_Index
 LDA ROM_Mirroring,X
 STA MIR_Addr
 RTS
;----------------------------------------
WriteMultiPort:
 LDA CHR_Addr_L
 STA $6000
 LDA PRG_Addr
 ASL
 STA $6000
 LDA CHR_Addr_H
 ASL
 ASL
 ASL
 ASL
 ORA CHR_Size
 STA $6000
 LDA PRG_Size
 STA $6000
 RTS
;----------------------------------------
GetPrgBankIndex:
 LDA #$00
 STA PRG_Addr
 LDA Rom_Index
 BEQ GetPrgBankIndexEnd
 LDX #$00
GetPrgBankIndexBeg:
 LDA PRG_Addr
 CLC
 ADC ROM_PRG_Size,X
 STA PRG_Addr
 INX
 CPX Rom_Index
 BCC GetPrgBankIndexBeg
GetPrgBankIndexEnd:
 RTS 
;----------------------------------------
GetChrBankIndex:
 LDA #$00
 STA CHR_Addr_L
 STA CHR_Addr_H
 LDA Rom_Index
 BEQ GetChrBankIndexEnd
 LDX #$00
GetChrBankIndexBeg:
 LDA CHR_Addr_L
 CLC
 ADC ROM_CHR_Size,X
 STA CHR_Addr_L
 ADC CHR_Addr_H
 STA CHR_Addr_H
 INX
 CPX Rom_Index
 BCC GetChrBankIndexBeg
 LDX #$00
GetChrBankIndexSet:
 ASL CHR_Addr_L
 ROL CHR_Addr_H
 INX
 CPX #$03
 BCC GetChrBankIndexSet
GetChrBankIndexEnd:
 RTS 
;----------------------------------------
GetPrgSize:
 LDX Rom_Index
 LDA ROM_PRG_Size,X
 LDX #$00
GetPrgSizeBeg:
 CMP PRG_Size_Map,X
 BEQ GetPrgSizeSetEnd
 INX
 CPX #$06
 BCC GetPrgSizeBeg
GetPrgSizeSetEnd:
 LDA PRG_Size_Data,X
 STA PRG_Size
 RTS
;----------------------------------------
GetChrSize:
 LDX Rom_Index
 LDA ROM_CHR_Size,X
 LDX #$00
GetChrSizeBeg:
 CMP CHR_Size_Map,X
 BEQ GetChrSizeSetEnd
 INX
 CPX #$06
 BCC GetChrSizeBeg
GetChrSizeSetEnd:
 LDA CHR_Size_Data,X
 STA CHR_Size
 RTS
;==================================================
;节目选择
RomSelect:
 LDX #$00
RomSelectBeg:
 LDA SelectGame,X
 STA Sel_Process_Addr,X
 INX
 CPX #SEL_PROCESS_SIZE
 BCC RomSelectBeg
 LDX Sel_Index
 LDA ROM_Order,X
 CMP #MENU_INDEX
 BNE RomSelectSet
 JMP MENU_RESET
RomSelectSet:
 JSR GetRomPort
RomSelfCheck:
 JMP Sel_Process_Addr
;==================================================
;节目选择处理
SelectGame:
 LDX #$00
SelectGameBeg:
 LDA CHR_Addr_L
 STA $6000
 LDA PRG_Addr
 ASL
 STA $6000
 LDA CHR_Addr_H
 ASL
 ASL
 ASL
 ASL
 ORA CHR_Size
 STA $6000
 LDA PRG_Size
 ORA #$C0
 STA $6000
 INX
 BNE SelectGameBeg
SelectGameSet:
 LDA MIR_Addr
 STA $A000
 JMP ($FFFC)
SelectGameLength:
 .ENDIF
;==================================================
;图形块号
ChrBankData:
 .DB $00,$02,$04,$05,$06,$07
;==================================================
;调色板数据
PaletteData:
 .DB $0F,$2A,$2A,$2A,$0F,$25,$25,$25,$0F,$21,$21,$21,$0F,$20,$20,$20
 .DB $0F,$20,$26,$16,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
 
 .IF ATTRIBUTE_OPEN 
;==================================================
;属性表数据
AttributeData:
 .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$0A,$05,$0A,$05,$09,$0A,$00
 .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .ENDIF
 .IF ROM_CHAR_MAP 
;==================================================
 ;字符映射
Char_Rom_Map:
 .DB $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
 .DB $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F
 .DB $00,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$25,$2F
 .DB $01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$3A,$3B,$3C,$3D,$3E,$3F
 .DB $40,$0B,$0C,$0D,$0E,$0F,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19
 .DB $1A,$1B,$1C,$1D,$1E,$1F,$20,$21,$22,$23,$24,$5B,$5C,$5D,$5E,$5F
 .ENDIF
;==================================================
;文本数据
TextData:
 .DB $80,$20,$49
 .STR "CONTRA 24 IN 1"
 .DB $80,$20,$84
 .STR "PUSH U.D OR START BUTTON"
 .DB $80,$20,$C5
 .STR "01.STAGE 1"
 .DB $80,$20,$E5
 .STR "02.STAGE 1 30 LIFE"
 .DB $80,$21,$05
 .STR "03.STAGE 1 30 LIFE S GUN"
 .DB $80,$21,$25
 .STR "04.STAGE 2"
 .DB $80,$21,$45
 .STR "05.STAGE 2 30 LIFE"
 .DB $80,$21,$65
 .STR "06.STAGE 2 30 LIFE S GUN"
 .DB $80,$21,$85
 .STR "07.STAGE 3"
 .DB $80,$21,$A5
 .STR "08.STAGE 3 30 LIFE"
 .DB $80,$21,$C5
 .STR "09.STAGE 3 30 LIFE S GUN"
 .DB $80,$21,$E5
 .STR "10.STAGE 4"
 .DB $80,$22,$05
 .STR "11.STAGE 4 30 LIFE"
 .DB $80,$22,$25
 .STR "12.STAGE 4 30 LIFE S GUN"
 .DB $80,$22,$45
 .STR "13.STAGE 5"
 .DB $80,$22,$65
 .STR "14.STAGE 5 30 LIFE"
 .DB $80,$22,$85
 .STR "15.STAGE 5 30 LIFE S GUN"
 .DB $80,$22,$A5
 .STR "16.STAGE 6"
 .DB $80,$22,$C5
 .STR "17.STAGE 6 30 LIFE"
 .DB $80,$22,$E5
 .STR "18.STAGE 6 30 LIFE S GUN"
 .DB $80,$23,$05
 .STR "19.STAGE 7"
 .DB $80,$23,$25
 .STR "20.STAGE 7 30 LIFE"
 .DB $80,$23,$45
 .STR "21.STAGE 7 30 LIFE S GUN"
 .DB $80,$23,$65
 .STR "22.STAGE 8"
 .DB $80,$23,$85
 .STR "23.STAGE 8 30 LIFE"
 .DB $80,$23,$A5
 .STR "24.STAGE 8 30 LIFE S GUN"
 .DB $FF 
 .IF MULTICART_TYPE == 52
;==================================================
;ROM选择数据
Rom_Select_Data:
 ;;;;;WMCCSBPP
 ;W: 禁用合卡寄存器并启用RAM
 ;M: CHR 块容量 (0=256KB   1=128KB)
 ;C: CHR 块选择 (位1,0)
 ;S: PRG 块容量 (0=256KB   1=128KB)
 ;B: CHR + PRG 高位(位2)
 ;P: PRG 块选择 (位1,0)
 .DB @11001000   ;001
 .DB @11011001   ;002
 .DB @11101010   ;003
 .DB @11111011   ;004
 .DB @11001100   ;005
 .DB @11011101   ;006
 .DB @11101110   ;007
 .DB @11111111   ;008
 .ENDIF
;==================================================
;镜像 01:水平 00:垂直
 .IF ROM_MIRRIOR_OPEN 
Rom_Select_Mirrior:
 .DB $00 ;1
 .DB $00 ;2
 .DB $00 ;3
 .DB $00 ;4
 .DB $00 ;5
 .DB $00 ;6
 .DB $00 ;7
 .DB $00 ;8
 .ENDIF
 .IF MULTICART_TYPE == 45
;========================================
CHR_Size_Map:
 .DB $01,$02,$04,$08,$10,$20
CHR_Size_Data:
 .DB $0A,$0B,$0C,$0D,$0E,$0F
;----------------------------------------
PRG_Size_Map:
 .DB $01,$02,$04,$08,$10,$20
PRG_Size_Data:
 .DB $3E,$3C,$38,$30,$20,$00
;========================================
ROM_PRG_Size:
 .DB $08,$08,$08,$08,$08,$08,$08,$08
ROM_CHR_Size:
 .DB $10,$10,$10,$10,$10,$10,$10,$10
;镜像 01:水平 00:垂直
ROM_Mirroring:
 .DB $00,$00,$00,$00,$00,$00,$00,$00
;选择序号索引
ROM_Order:
 .DB $00,$01,$02,$03,$04,$05,$06,$07
 .ENDIF
Stage_Data:
 .DB 0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7
Life_Data:
 .DB 2,29,29,2,29,29,2,29,29,2,29,29,2,29,29,2,29,29,2,29,29,2,29,29
Weapon_Data:
 .DB $00,$00,$13,$00,$00,$13,$00,$00,$13,$00,$00,$13,$00,$00,$13,$00,$00,$13,$00,$00,$13,$00,$00,$13
 | 
 
x本帖子中包含更多资源您需要 登录 才可以下载或查看,没有账号?立即注册  |