最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

[FC][分頁菜單重置]

2020-05-04 21:11 作者:FlameCyclone  | 我要投稿


;[FC][分頁菜單重置]
;FlameCyclone
;20200326

?.ORG $B600

ROM_CHAR_MAP?????? = 1???? ;字符映射
ROM_RESET????????? = $FA8E
ROM_NMI??????????? = $FB2B
;==================================================
User_Addr = $80
;==================================================
Button_Keep??????? = User_Addr????? + $01
Button_Once??????? = Button_Keep??? + $01
Button_Temp??????? = Button_Once??? + $01
Button_Buf???????? = Button_Temp??? + $01
Button_Status????? = Button_Buf???? + $01
Button_Delay?????? = Button_Status? + $01
;==================================================
BUTTON_DELAY_MAX?? = 30
BUTTON_DELAY_SPEED = 5
;==================================================
Page_Cur_L???????? = Button_Delay? + $01
Page_Cur_H???????? = Page_Cur_L? + $01
Page_Old_L???????? = Page_Cur_H + $01
Page_Old_H???????? = Page_Old_L + $01
Sel_Cur_L????????? = Page_Old_H? + $01
Sel_Cur_H????????? = Sel_Cur_L? + $01
Sel_Old_L????????? = Sel_Cur_H + $01
Sel_Old_H????????? = Sel_Old_L + $01
Sel_Data_L???????? = Sel_Old_H + $01
Sel_Data_H???????? = Sel_Data_L + $01
;==================================================
ITEM_BUF_MAX?????? = 4
;==================================================
Item_Update??????? = Sel_Data_H + $01
Item_Update_Index?? = Item_Update + $01
Item_Show_Cnt??????? = Item_Update_Index + $01
Item_Show_L??????? = Item_Show_Cnt + $01
Item_Show_H??????? = Item_Show_L + $01
Item_Clean_L??????? = Item_Show_H + $01
Item_Clean_H??????? = Item_Clean_L + $01

;============================================================
FC_MENU_MASK?? = $FF
FC_Menu_Flag?? = $FE
FC_Data_L?? = $40?????????????????????????????? ;數(shù)據(jù)地址低位
FC_Data_H?? = FC_Data_L+$01???????????????????? ;數(shù)據(jù)地址高位
FC_Data_Cnt = FC_Data_H+$01???????????????????????? ;數(shù)據(jù)計數(shù)
FC_Data_Tmp = FC_Data_Cnt+$01?????????????????????? ;數(shù)據(jù)緩存
;============================================================
FC_PPU_Buffer = $0200??????????????????????????? ;PPU緩沖地址
FC_PPU_Status = FC_PPU_Buffer+$C0??????????????? ;PPU顯示狀態(tài)
FC_PPU_Cursor = FC_PPU_Status + $01????????? ;當(dāng)前PPU緩沖位置
FC_PPU_Addr_L = FC_PPU_Cursor + $01????????????? ;PPU地址低位
FC_PPU_Addr_H = FC_PPU_Addr_L + $01????????????? ;PPU地址高位
;==================================================
ITEM_MAX???? =? 72 - 1
PAGE_SIZE???? =? 24
PAGE_MAX????? =? ITEM_MAX/PAGE_SIZE * PAGE_SIZE
;==================================================
Char_Arrow = $D8
ARROW_X_OFFSET???????? = $36 ;箭頭橫坐標(biāo)
ARROW_Y_OFFSET???????? = $1F ;箭頭縱坐標(biāo)
SPRITES_ADDR?????????? = $0400
SPRITES_PAGE?????????? = SPRITES_ADDR / 256
;==================================================
;==================================================
Sound_Init???????????? = $FFA0
Sound_Play???????????? = $FFB0
SOUND_OPEN???????????? = 1
;==================================================
SOUNG_BGM????????????? = 48
SOUNG_ITEM???????????? = 12
SOUNG_PAGE???????????? = 14
;==================================================
;Reset中斷
ResetProgram:
?CLD
?SEI
?LDX #$FF
?TXS
?LDA #$00
?STA $2000
?STA $2001
?STA $E000
?LDA #$80
?STA $A001
?LDX #$02
ResetDelayA:
?BIT $2002
?BPL ResetDelayA
ResetDelayB:
?BIT $2002
?BMI ResetDelayB
?DEX
?BNE ResetDelayA
?
?JSR PaletteClear
?JSR VramClear
?
?LDA #$0F
?STA $4015
?LDA #$C0
?STA $4017
?
?LDA #$00
?STA $8000
?LDA #$40
?STA $8001
?LDA #$01
?STA $8000
?LDA #$06
?STA $8001

RamClear:
?LDA #$00
?STA $00
?STA $01
?LDX #$08
?LDY #$00
RamClearWrite:
?STA ($00),Y
?INY
?BNE RamClearWrite
?INC $01
?DEX
?BNE RamClearWrite

?LDA #FC_MENU_MASK
?STA FC_Menu_Flag
?
?JSR PaletteSet
?
?JSR SpriteClear
?
?JSR UpdatePageEnable
?
?.IF SOUND_OPEN
?LDA #SOUNG_BGM - 1
?JSR Sound_Init
?.ENDIF
?
?
?LDA #$1E
?STA FC_PPU_Status
?LDA #$80
?STA $2000
MainLoop:
?JMP MainLoop
?
;==================================================
;清空PPU內(nèi)存
VramClear:
?LDA #$20
?STA $2006
?LDA #$00
?STA $2006
?LDY #$10
?LDA #$00
?TAX
NameTableClearBeg:
?STA $2007
?INX
?BNE NameTableClearBeg
?DEY
?BNE NameTableClearBeg
?RTS

?
SelectItemSound:
?.IF SOUND_OPEN
?LDA #SOUNG_ITEM - 1
?JSR Sound_Init
?.ENDIF
?RTS
?
?
SelectPageSound:
?.IF SOUND_OPEN
?LDA #SOUNG_PAGE - 1
?JSR Sound_Init
?.ENDIF
?RTS
?
;==================================================
;清空調(diào)色板
PaletteClear:
?JSR PaletteAddrSet
?LDA #$0F
?LDX #$00
PaletteClearWrite:
?STA $2007
?INX
?CPX #$20
?BCC PaletteClearWrite
?RTS
?
;==================================================
;設(shè)置調(diào)色板
PaletteSet:
?JSR PaletteAddrSet
?LDX #$00
PaletteSetWrite:
?LDA PaletteData,X
?STA $2007
?INX
?CPX #$20
?BCC PaletteSetWrite
?RTS

;==================================================
;調(diào)色板地址設(shè)置
PaletteAddrSet:
?LDA #$3F
?STA $2006
?LDA #$00
?STA $2006
?RTS
?

;==================================================
;保存舊選擇索引
SaveOldSelect:
?LDA Page_Cur_L
?STA Page_Old_L
?LDA Page_Cur_H
?STA Page_Old_H
?LDA Sel_Cur_L
?STA Sel_Old_L
?LDA Sel_Cur_H
?STA Sel_Old_H
?RTS

;==============================
;是否遞減索引時頁面索引改變
IsPageChangeByDecItem:
?LDA Sel_Cur_L
?CMP Page_Cur_L
?BNE IsPageChangeByDecItemEnd
?SEC
?RTS
IsPageChangeByDecItemEnd:
?CLC
?RTS

;==============================
;是否遞增索引時頁面索引改變
IsPageChangeByIncItem:
?LDA Page_Cur_L
?CLC
?ADC #PAGE_SIZE
?SEC
?SBC #$01
?CMP Sel_Cur_L
?BNE IsPageChangeByIncItemEnd
?SEC
?RTS
IsPageChangeByIncItemEnd:
?CLC
?RTS

;==============================
;是否最小索引
IsMinItem:
?LDA Sel_Cur_L
?ORA Sel_Cur_H
?BEQ IsMinItemEnd
?CLC
?RTS
IsMinItemEnd:
?SEC
?RTS

;==============================
;是否最小索引頁
IsMinPage:
?LDA Page_Cur_L
?ORA Page_Cur_H
?BEQ IsMinPageEnd
?CLC
?RTS
IsMinPageEnd:
?SEC
?RTS

;==============================
;是否最大索引
IsMaxItem:
?LDA Sel_Cur_H
?CMP #>ITEM_MAX
?BNE IsMaxItemEnd
?LDA Sel_Cur_L
?CMP #<ITEM_MAX
?BNE IsMaxItemEnd
?SEC
?RTS
IsMaxItemEnd:
?CLC
?RTS

;==============================
;是否最大索引頁
IsMaxPage:
?LDA Page_Cur_H
?CMP #>PAGE_MAX
?BNE IsMaxItemEnd
?LDA Page_Cur_L
?CMP #<PAGE_MAX
?BNE IsMaxPageEnd
?SEC
?RTS
IsMaxPageEnd:
?CLC
?RTS

;==============================
;遞減選擇索引
DecSelItem:
?LDA Sel_Cur_L
?SEC
?SBC #$01
?STA Sel_Cur_L
?BCS DecSelItemEnd
?DEC Sel_Cur_H
DecSelItemEnd:
?RTS
?
;==============================
;遞減選擇索引頁
DecSelPage:
?LDA Page_Cur_L
?SEC
?SBC #PAGE_SIZE
?STA Page_Cur_L
?BCS DecSelPageEnd
?DEC Page_Cur_H
DecSelPageEnd:
?RTS
?
;==============================
;遞增選擇索引
IncSelItem:
?LDA Sel_Cur_L
?CLC
?ADC #$01
?STA Sel_Cur_L
?BCC IncSelItemEnd
?INC Sel_Cur_H
IncSelItemEnd:
?RTS

;==============================
;遞增選擇索引頁
IncSelPage:
?LDA Page_Cur_L
?CLC
?ADC #PAGE_SIZE
?STA Page_Cur_L
?BCC IncSelPageEnd
?INC Page_Cur_H
IncSelPageEnd:
?RTS

;==============================
;遞增頁索引
DecPageIndex
?LDA Page_Cur_L
?SEC
?SBC #PAGE_SIZE
?STA Page_Cur_L
?BCS DecPageIndexEnd
?DEC Page_Cur_H
DecPageIndexEnd:
?JSR UpdatePageEnable
?RTS
?
;==============================
;遞增頁索引
IncPageIndex:
?LDA Page_Cur_L
?CLC
?ADC #PAGE_SIZE
?STA Page_Cur_L
?BCC IncPageIndexEnd
?INC Page_Cur_H
IncPageIndexEnd:
?JSR UpdatePageEnable
?RTS

;==============================
;設(shè)置最小頁
SetMinPage:
?LDA #$00
?STA Page_Cur_L
?STA Page_Cur_H
?JSR UpdatePageEnable
?RTS
?
;==============================
;設(shè)置最大頁
SetMaxPage:
?LDA #<PAGE_MAX
?STA Page_Cur_L
?LDA #>PAGE_MAX
?STA Page_Cur_H
?JSR UpdatePageEnable
?RTS
?
;==============================
;設(shè)置最小索引
SetMinItem:
?LDA #$00
?STA Sel_Cur_L
?STA Sel_Cur_H
?RTS

;==============================
;設(shè)置最大索引
SetMaxItem:
?LDA #<ITEM_MAX
?STA Sel_Cur_L
?LDA #>ITEM_MAX
?STA Sel_Cur_H
?RTS

;==============================
;換頁時遞減選擇索引
DecSelItemByPage:
?JSR GetItemOffset
?JSR DecSelPage
?JSR SetItemOffset
DecSelItemByPageEnd:
?JSR UpdatePageEnable
?RTS
?
;==============================
;換頁時遞增選擇索引
IncSelItemByPage:
?JSR GetItemOffset
?JSR IncSelPage
?JSR SetItemOffset
IncSelItemByPageEnd:
?JSR UpdatePageEnable
?RTS

;=============================
;索引偏移獲取
GetItemOffset
?LDA Sel_Cur_L
?SEC
?SBC Page_Cur_L
?STA Sel_Data_L
?LDA Sel_Cur_H
?SBC Page_Cur_H
?STA Sel_Data_H
?RTS
?
;=============================
;索引偏移設(shè)置
SetItemOffset:
?LDA Sel_Data_L
?CLC
?ADC Page_Cur_L
?STA Sel_Cur_L
?LDA Sel_Data_H
?ADC Page_Cur_H
?STA Sel_Cur_H
SetItemOffsetCheck:
?LDA Sel_Cur_H
?CMP #>ITEM_MAX
?BCC SetItemOffsetEnd
?BNE SetItemOffsetMax
?LDA Sel_Cur_L
?CMP #<ITEM_MAX
?BCC SetItemOffsetEnd
?BEQ SetItemOffsetEnd
SetItemOffsetMax:
?JSR SetMaxItem
SetItemOffsetEnd:
?RTS
?
;==============================
;選擇上一個索引
SelectPreItem:
?JSR SaveOldSelect
?JSR IsMinItem
?BCS SelectPreItemSetMaxPage
?JSR IsPageChangeByDecItem
?BCC SelectPreItemNoSavePage
?JSR DecPageIndex
SelectPreItemNoSavePage:
?JSR DecSelItem
?RTS
SelectPreItemSetMaxPage:
?JSR SetMaxPage
?JSR SetMaxItem
?RTS
?
;==============================
;選擇下一個索引
SelectNextItem:
?JSR SaveOldSelect
?JSR IsMaxItem
?BCS SelectNextItemSetMinPage
?JSR IsPageChangeByIncItem
?BCC SelectNextItemNoSavePage
?JSR IncPageIndex
SelectNextItemNoSavePage
?JSR IncSelItem
?RTS
SelectNextItemSetMinPage
?JSR SetMinPage
?JSR SetMinItem
?RTS

;==============================
;選擇上一個頁索引
SelectPrePage:
?JSR SaveOldSelect
?JSR IsMinPage
?BCS SelectPrePageSetMaxPage
?JSR DecSelItemByPage
?RTS
SelectPrePageSetMaxPage:
?JSR GetItemOffset
?JSR SetMaxPage
?JSR SetItemOffset
?RTS
?
;==============================
;選擇下一個頁索引
SelectNextPage:
?JSR SaveOldSelect
?JSR IsMaxPage
?BCS SelectNextPageSetMinPage
?JSR IncSelItemByPage
?RTS
SelectNextPageSetMinPage:
?JSR GetItemOffset
?JSR SetMinPage
?JSR SetItemOffset
?RTS

;==================================================
;選擇索引
SelectItemIndex:
?LDA Item_Update
?BEQ SelectPreItemIndex
?JSR UpdatePage
?RTS
SelectPreItemIndex:
?LDA Button_Once
?CMP #$08
?BNE SelectNextItemIndex
?JSR SelectItemSound
?JSR SelectPreItem
SelectNextItemIndex:
?LDA Button_Once
?CMP #$04
?BNE SelectPrePageIndex
?JSR SelectItemSound
?JSR SelectNextItem
SelectPrePageIndex:
?LDA Button_Once
?CMP #$02
?BNE SelectNextPageIndex
?JSR SelectPageSound
?JSR SelectPrePage
SelectNextPageIndex:
?LDA Button_Once
?CMP #$01
?BNE SelectItemIndexCheck
?JSR SelectPageSound
?JSR SelectNextPage
SelectItemIndexCheck:
?LDA Button_Once
?CMP #$10
?BNE SelectItemIndexEnd
?LDA Sel_Cur_L
?STA $01C0
?JMP ROM_RESET
SelectItemIndexEnd:
?RTS

IsPageChange:
?LDA Page_Cur_H
?CMP Page_Old_H
?BNE IsPageChangeEnd
?LDA Page_Cur_L
?CMP Page_Old_L
?BNE IsPageChangeEnd
?CLC
?RTS
IsPageChangeEnd:
?SEC
?RTS
;==================================================
;按鍵處理
ButtonProcess:
?JSR ButtonScan
?LDA Button_Keep
?STA Button_Temp
?JSR ButtonScan
?LDA Button_Keep
?CMP Button_Temp
?BEQ ButtonGetOnce
?LDA Button_Buf
?STA Button_Keep
ButtonGetOnce:
?TAY
?EOR Button_Buf
?AND Button_Keep
?STA Button_Once
?STY Button_Buf
?JSR ButtonDelay
?RTS
;==================================================
;按鍵掃描
ButtonScan:
?LDX #$01
?STX $4016
?DEX
?STX $4016
?LDY #$08
ButtonValue:
?LDA $4016
?STA Button_Status
?LSR
?ORA Button_Status
?LSR
?ROL Button_Keep
?DEY
?BNE ButtonValue
?RTS
ButtonDelay:
?LDA Button_Keep
?BNE ButtonDelayBeg
?STA Button_Delay
?RTS
ButtonDelayBeg:
?INC Button_Delay
?LDA Button_Delay
?CMP # BUTTON_DELAY_MAX + BUTTON_DELAY_SPEED
?BCC ButtonDelayEnd
?LDA # BUTTON_DELAY_MAX
?STA Button_Delay
?LDA Button_Keep
?STA Button_Once
ButtonDelayEnd:
?RTS


;========================================
MODE_CNTL = $FB?????????????? ;行寫入模式
MODE_CNTC = $FC?????????????? ;行清除模式
MODE_OVER = $FF???????????????? ;結(jié)束標(biāo)志
;----------------------------------------
FC_PPU_Process:????????????????? ;PPU處理
?LDA FC_PPU_Buffer
?BEQ FC_PPU_Process_End
?JSR FC_PPU_Process_Beg
FC_PPU_Process_End:
?LDA #$00
?STA FC_PPU_Buffer
?STA $2006
?STA $2006
?STA $2005
?STA $2005
?LDA FC_PPU_Status
?STA $2001
?RTS

;----------------------------------------
FC_PPU_Process_Beg:???????????? ;處理開始
?LDX FC_PPU_Cursor
?LDA #$00
?STA $2001
?STA FC_PPU_Buffer,X
?STA FC_PPU_Cursor
?LDX #$FF
;----------------------------------------
FC_PPU_Mode_Select:???????????? ;模式選擇
?INX
?LDA FC_PPU_Buffer,X
?CMP #MODE_CNTL
?BEQ FC_PPU_Mode_CountLine
?CMP #MODE_CNTC
?BEQ FC_PPU_Mode_CountClear
?RTS

;----------------------------------------
FC_PPU_Mode_CountLine:??????? ;行寫入模式
?JSR FC_PPU_Set_Addr
?LDY FC_PPU_Buffer,X
FC_PPU_CountLine_Write:
?INX
?LDA FC_PPU_Buffer,X
?STA $2007
?DEY
?BNE FC_PPU_CountLine_Write
?JMP FC_PPU_Mode_Select
?
;----------------------------------------
FC_PPU_Mode_CountClear:?????? ;行清除模式
?JSR FC_PPU_Write_Addr
?LDY FC_PPU_Buffer,X
?LDA #$00
FC_PPU_CountClear_Write:
?STA $2007
?DEY
?BNE FC_PPU_CountClear_Write
?JMP FC_PPU_Mode_Select
?
;----------------------------------------
FC_PPU_Set_Addr:??????????????? ;寫入地址
?INX
?LDA FC_PPU_Buffer,X
?STA FC_PPU_Addr_H
?STA $2006
?INX
?LDA FC_PPU_Buffer,X
?STA FC_PPU_Addr_L
?STA $2006
?INX
?RTS

;----------------------------------------
FC_PPU_Write_Addr:????????????? ;寫入地址
?INX
?LDA FC_PPU_Buffer,X
?STA $2006
?INX
?LDA FC_PPU_Buffer,X
?STA $2006
?INX
?RTS

;========================================
UpdatePageEnable:
?LDA #$01
?STA Item_Update
?LDA Page_Cur_L
?STA Item_Show_L
?LDA Page_Cur_H
?STA Item_Show_H
?LDA Page_Old_L
?STA Item_Clean_L
?LDA Page_Old_H
?STA Item_Clean_H
?LDA #$00
?STA Item_Update_Index
?RTS

;========================================
UpdatePageDisable:
?LDA #$00
?STA Item_Update
?RTS

;==============================
;是否最大索引頁
IsOverMaxShowItem:
?LDA Item_Show_H
?CMP #>ITEM_MAX
?BCC IsOverMaxUpdateItemEnd
?BNE IsOverMaxShowItemSet
?LDA Item_Show_L
?CMP #<ITEM_MAX
?BCC IsOverMaxUpdateItemEnd
?BEQ IsOverMaxUpdateItemEnd
IsOverMaxShowItemSet:
?SEC
?RTS
IsOverMaxUpdateItemEnd:
?CLC
?RTS

;==============================
;是否最大索引頁
IsOverMaxCleanItem:
?LDA Item_Clean_H
?CMP #>ITEM_MAX
?BCC IsOverMaxCleanItemEnd
?BNE IsOverMaxCleanItemSet
?LDA Item_Clean_L
?CMP #<ITEM_MAX
?BCC IsOverMaxCleanItemEnd
?BEQ IsOverMaxCleanItemEnd
IsOverMaxCleanItemSet:
?SEC
?RTS
IsOverMaxCleanItemEnd:
?CLC
?RTS

;========================================
UpdatePage:
?LDA Item_Update_Index
?CMP #PAGE_SIZE
?BCC UpdatePageInitBeg
?JSR UpdatePageDisable
?RTS
UpdatePageInitBeg:
?LDA #$00
?STA Item_Show_Cnt
UpdatePageBeg:
?JSR CleanOnceItem
?JSR WriteOnceItem
UpdatePageCheckClean:
?INC Item_Clean_L
?BNE UpdatePageCheckShow
?INC Item_Clean_H
UpdatePageCheckShow:
?INC Item_Show_L
?BNE UpdatePageItem
?INC Item_Show_H
UpdatePageItem:
?INC Item_Update_Index
?LDA Item_Update_Index
?CMP #PAGE_SIZE
?BCS UpdatePageEnd
?INC Item_Show_Cnt
?LDA Item_Show_Cnt
?CMP #ITEM_BUF_MAX
?BCC UpdatePageBeg
UpdatePageEnd:
?RTS

;==================================================
WriteOnceItem:
?JSR IsOverMaxShowItem
?BCC WriteOnceItemBeg
?RTS
WriteOnceItemBeg:
?LDA Item_Show_L
?CLC
?ADC #<ItemAddr_L
?STA FC_Data_L
?
?LDA Item_Show_H
?ADC #>ItemAddr_L
?STA FC_Data_H
?LDY #$00
?LDA (FC_Data_L),Y
?PHA
?
?LDA Item_Show_L
?CLC
?ADC #<ItemAddr_H
?STA FC_Data_L
?
?LDA Item_Show_H
?ADC #>ItemAddr_H
?STA FC_Data_H
?LDY #$00
?LDA (FC_Data_L),Y
?STA FC_Data_H
?PLA
?STA FC_Data_L

?LDX FC_PPU_Cursor
?LDA #MODE_CNTL
?STA FC_PPU_Buffer,X
?INX
?
?LDY Item_Update_Index
?LDA ItemShowPos_H,Y
?STA FC_PPU_Buffer,X
?INX
?LDA ItemShowPos_L,Y
?STA FC_PPU_Buffer,X
?INX
?
?LDY #$00
?LDA(FC_Data_L),Y
?STA FC_Data_Cnt
?STA FC_PPU_Buffer,X
?INX
?INY
WriteText:

?.IF ROM_CHAR_MAP
?STY FC_Data_Tmp
?LDA(FC_Data_L),Y
?TAY
?LDA Char_Rom,Y
?LDY FC_Data_Tmp
?
?.ELSE
?LDA(FC_Data_L),Y
?.ENDIF
?
?STA FC_PPU_Buffer,X
?INX
?INY
?DEC FC_Data_Cnt
?BNE WriteText
?STX FC_PPU_Cursor
?RTS

;==================================================
CleanOnceItem:
?JSR IsOverMaxCleanItem
?BCC CleanOnceItemBeg
?RTS
CleanOnceItemBeg:
?LDA Item_Clean_L
?CLC
?ADC #<ItemAddr_L
?STA FC_Data_L
?
?LDA Item_Clean_H
?ADC #>ItemAddr_L
?STA FC_Data_H
?LDY #$00
?LDA (FC_Data_L),Y
?PHA
?
?LDA Item_Clean_L
?CLC
?ADC #<ItemAddr_H
?STA FC_Data_L
?
?LDA Item_Clean_H
?ADC #>ItemAddr_H
?STA FC_Data_H
?LDY #$00
?LDA (FC_Data_L),Y
?STA FC_Data_H
?PLA
?STA FC_Data_L

?LDX FC_PPU_Cursor
?LDA #MODE_CNTC
?STA FC_PPU_Buffer,X
?INX
?
?LDY Item_Update_Index
?LDA ItemShowPos_H,Y
?STA FC_PPU_Buffer,X
?INX
?LDA ItemShowPos_L,Y
?STA FC_PPU_Buffer,X
?INX
?
?LDY #$00
?LDA(FC_Data_L),Y
?STA FC_PPU_Buffer,X
?INX
?STX FC_PPU_Cursor
CleanOnceItemEnd:
?RTS
?
?
;==================================================
;精靈清除
SpriteClear:
?LDX #$00
?LDA #$F8
SpriteClearWrite:
?STA SPRITES_ADDR,X
?INX
?BNE SpriteClearWrite
?RTS

;==================================================
;精靈設(shè)置
SpriteSet:
?LDA Sel_Cur_L
?SEC
?SBC Page_Cur_L
?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

;==================================================
;調(diào)色板數(shù)據(jù)
PaletteData:
?.DB $0F,$24,$2A,$2A,$0F,$20,$25,$25,$0F,$22,$21,$21,$0F,$27,$20,$20
?.DB $0F,$20,$16,$17,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F

;==================================================
ItemShowPos_L:
?.db $88,$A8,$C8,$E8,$08,$28,$48,$68,$88,$A8,$C8,$E8,$08,$28,$48,$68,$88,$A8,$C8,$E8,$08,$28,$48,$68,$88
ItemShowPos_H:
?.db $20,$20,$20,$20,$21,$21,$21,$21,$21,$21,$21,$21,$22,$22,$22,$22,$22,$22,$22,$22,$23,$23,$23,$23,$23

;==================================================
ItemAddr:
ItemAddr_L:
?.db <Item_001,<Item_002,<Item_003,<Item_004,<Item_005,<Item_006,<Item_007,<Item_008,<Item_009,<Item_010
?.db <Item_011,<Item_012,<Item_013,<Item_014,<Item_015,<Item_016,<Item_017,<Item_018,<Item_019,<Item_020
?.db <Item_021,<Item_022,<Item_023,<Item_024,<Item_025,<Item_026,<Item_027,<Item_028,<Item_029,<Item_030
?.db <Item_031,<Item_032,<Item_033,<Item_034,<Item_035,<Item_036,<Item_037,<Item_038,<Item_039,<Item_040
?.db <Item_041,<Item_042,<Item_043,<Item_044,<Item_045,<Item_046,<Item_047,<Item_048,<Item_049,<Item_050
?.db <Item_051,<Item_052,<Item_053,<Item_054,<Item_055,<Item_056,<Item_057,<Item_058,<Item_059,<Item_060
?.db <Item_061,<Item_062,<Item_063,<Item_064,<Item_065,<Item_066,<Item_067,<Item_068,<Item_069,<Item_070
?.db <Item_071,<Item_072
ItemAddr_H:
?.db >Item_001,>Item_002,>Item_003,>Item_004,>Item_005,>Item_006,>Item_007,>Item_008,>Item_009,>Item_010
?.db >Item_011,>Item_012,>Item_013,>Item_014,>Item_015,>Item_016,>Item_017,>Item_018,>Item_019,>Item_020
?.db >Item_021,>Item_022,>Item_023,>Item_024,>Item_025,>Item_026,>Item_027,>Item_028,>Item_029,>Item_030
?.db >Item_031,>Item_032,>Item_033,>Item_034,>Item_035,>Item_036,>Item_037,>Item_038,>Item_039,>Item_040
?.db >Item_041,>Item_042,>Item_043,>Item_044,>Item_045,>Item_046,>Item_047,>Item_048,>Item_049,>Item_050
?.db >Item_051,>Item_052,>Item_053,>Item_054,>Item_055,>Item_056,>Item_057,>Item_058,>Item_059,>Item_060
?.db >Item_061,>Item_062,>Item_063,>Item_064,>Item_065,>Item_066,>Item_067,>Item_068,>Item_069,>Item_070
?.db >Item_071,>Item_072

;==================================================
ItemText:
Item_001 .STR "01.REST 01"
Item_002 .STR "02.REST 02"
Item_003 .STR "03.REST 03"
Item_004 .STR "04.REST 04"
Item_005 .STR "05.REST 05"
Item_006 .STR "06.REST 06"
Item_007 .STR "07.REST 07"
Item_008 .STR "08.REST 08"
Item_009 .STR "09.REST 09"
Item_010 .STR "10.REST 10"
Item_011 .STR "11.REST 11"
Item_012 .STR "12.REST 12"
Item_013 .STR "13.REST 13"
Item_014 .STR "14.REST 14"
Item_015 .STR "15.REST 15"
Item_016 .STR "16.REST 16"
Item_017 .STR "17.REST 17"
Item_018 .STR "18.REST 18"
Item_019 .STR "19.REST 19"
Item_020 .STR "20.REST 20"
Item_021 .STR "21.REST 21"
Item_022 .STR "22.REST 22"
Item_023 .STR "23.REST 23"
Item_024 .STR "24.REST 24"
Item_025 .STR "25.REST 25"
Item_026 .STR "26.REST 26"
Item_027 .STR "27.REST 27"
Item_028 .STR "28.REST 28"
Item_029 .STR "29.REST 29"
Item_030 .STR "30.REST 30"
Item_031 .STR "31.REST 31"
Item_032 .STR "32.REST 32"
Item_033 .STR "33.REST 33"
Item_034 .STR "34.REST 34"
Item_035 .STR "35.REST 35"
Item_036 .STR "36.REST 36"
Item_037 .STR "37.REST 37"
Item_038 .STR "38.REST 38"
Item_039 .STR "39.REST 39"
Item_040 .STR "40.REST 40"
Item_041 .STR "41.REST 41"
Item_042 .STR "42.REST 42"
Item_043 .STR "43.REST 43"
Item_044 .STR "44.REST 44"
Item_045 .STR "45.REST 45"
Item_046 .STR "46.REST 46"
Item_047 .STR "47.REST 47"
Item_048 .STR "48.REST 48"
Item_049 .STR "49.REST 49"
Item_050 .STR "50.REST 50"
Item_051 .STR "51.REST 51"
Item_052 .STR "52.REST 52"
Item_053 .STR "53.REST 53"
Item_054 .STR "54.REST 54"
Item_055 .STR "55.REST 55"
Item_056 .STR "56.REST 56"
Item_057 .STR "57.REST 57"
Item_058 .STR "58.REST 58"
Item_059 .STR "59.REST 59"
Item_060 .STR "60.REST 60"
Item_061 .STR "61.REST 61"
Item_062 .STR "62.REST 62"
Item_063 .STR "63.REST 63"
Item_064 .STR "64.REST 64"
Item_065 .STR "65.REST 65"
Item_066 .STR "66.REST 66"
Item_067 .STR "67.REST 67"
Item_068 .STR "68.REST 68"
Item_069 .STR "69.REST 69"
Item_070 .STR "70.REST 70"
Item_071 .STR "71.REST 71"
Item_072 .STR "72.REST 72"
;==================================================


?.IF ROM_CHAR_MAP
;==================================================
Char_Rom:
?.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,$26,$00
?.DB $01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F,$10
?.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,$25,$26,$27,$28,$29
?.ENDIF


?.ORG $FF16


;Nmi中斷
NmiProgram:
?PHA
?TXA
?PHA
?TYA
?PHA
?LDA FC_Menu_Flag
?CMP #FC_MENU_MASK
?BEQ NmiProgramSet
?JMP ROM_NMI + 5
NmiProgramSet:
?LDA $2002
?JSR FC_PPU_Process
?LDA #SPRITES_PAGE
?STA $4014
?LDA #$80
?STA $2000
?JSR ButtonProcess
?JSR SelectItemIndex
?JSR SpriteSet
?
?.IF SOUND_OPEN
?JSR Sound_Play
?.ENDIF
?
?PLA
?TAY
?PLA
?TAX
?PLA

;==================================================
;Irq中斷
IrqProgram:
?RTI

?.ORG $FFFA
?.WORD NmiProgram
?.WORD ResetProgram
?.WORD IrqProgram


[FC][分頁菜單重置]的評論 (共 條)

分享到微博請遵守國家法律
道孚县| 额敏县| 洛隆县| 宁海县| 郧西县| 筠连县| 兴安盟| 尤溪县| 达拉特旗| 盐城市| 上杭县| 措勤县| 霸州市| 偃师市| 南投县| 赞皇县| 威远县| 海门市| 诸城市| 潼关县| 鹿泉市| 明光市| 彰化市| 阜南县| 镶黄旗| 广宁县| 稷山县| 潜江市| 抚顺县| 镇赉县| 大安市| 盱眙县| 芮城县| 彩票| 永靖县| 子洲县| 垫江县| 札达县| 蒙阴县| 比如县| 高青县|