[FC][魂斗罗][24合1]
本帖最后由 yandagui 于 2020-3-22 22:23 编辑真是无聊透顶, 搞个假的合卡哈
http://2006.emu618.org:6180/data/attachment/album/202003/22/221551qvl23dmlbo6qbblb.png
**** Hidden Message *****
;[精简合卡菜单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 感谢分享! 好强大的合集 爱玩魂斗罗。 统一收藏先
感谢分享! 怎么个假的啊 强大{:4_97:} 非常强大的合集 感谢{:4_118:} 我看到了直接就有 30life 的 版本,哈哈!感谢楼主分享! 谢谢分享!
感谢大佬的分享,非常感谢!! 哈哈,确实无聊https://cdn.jsdelivr.net/gh/hishis/forum-master/public/images/patch.gif 感谢楼主分享 谢谢兄弟分享~~ 这个应该就是魂斗罗一袋 辛苦谢谢 谢谢分享 多谢分享!!
页:
[1]
2