yandagui 发表于 2020-3-22 22:15:35

[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

lelehehe 发表于 2020-3-22 23:04:38

感谢分享!

afti 发表于 2020-3-22 23:30:10

好强大的合集

wsz7257 发表于 2020-3-23 06:04:58

爱玩魂斗罗。

wincyd 发表于 2020-3-23 13:06:17

统一收藏先

tonyowen123 发表于 2020-3-23 16:49:06


感谢分享!

liuqi459120528 发表于 2020-3-23 19:48:23

怎么个假的啊

adsl9646 发表于 2020-3-24 04:17:20

强大{:4_97:}

ssxe 发表于 2020-3-24 17:46:26

非常强大的合集

she370192822 发表于 2020-4-6 22:24:44

感谢{:4_118:}

g00dgame 发表于 2020-4-12 18:16:38

我看到了直接就有 30life 的 版本,哈哈!感谢楼主分享!

xuxiaoxin850127 发表于 2020-7-7 03:03:39

谢谢分享!

陈联峰 发表于 2020-7-7 22:05:41


感谢大佬的分享,非常感谢!!

yxcqr 发表于 2020-12-31 09:17:46

哈哈,确实无聊https://cdn.jsdelivr.net/gh/hishis/forum-master/public/images/patch.gif

keysea 发表于 2021-1-21 10:02:56

感谢楼主分享

meiguo110 发表于 2021-1-23 19:22:09

谢谢兄弟分享~~

两指琴魔 发表于 2021-1-24 21:13:44

这个应该就是魂斗罗一袋

pso2001dc 发表于 2021-2-8 20:32:39

辛苦谢谢

zhaoyunchun 发表于 2021-2-27 21:50:43

谢谢分享

mslug2 发表于 2022-12-6 16:54:33

多谢分享!!
页: [1] 2
查看完整版本: [FC][魂斗罗][24合1]