[FC][Menu paging][20190517]

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems. See the NESdev wiki for more information.

Moderator: Moderators

Post Reply
FlameCyclone
Posts: 15
Joined: Fri Jun 02, 2017 2:45 am

[FC][Menu paging][20190517]

Post by FlameCyclone »

[FC][菜单分页][20190517]
[FC][菜单分页][20190518]-0.png
[FC][菜单分页][20190518]-0.png (2.64 KiB) Viewed 8580 times
[FC][菜单分页][20190518]-1.png
[FC][菜单分页][20190518]-1.png (1.42 KiB) Viewed 8580 times

Code: Select all

;[FC][菜单分页][20190517]
;FlameCyclone
;============================================================
RESET_ADDR = $E000                              ;重置中断指针
;============================================================
ITEM_MAX_COUNT  = 256                               ;最大项数
ITEM_PAGE_SIZE = 12                                 ;每页项数
ITEM_BUFFER_SIZE = 03                         ;单次写入缓冲数
;------------------------------------------------------------
ITEM_MAX  = ITEM_MAX_COUNT - 001                    ;最大项数
;------------------------------------------------------------
 .IF ITEM_MAX < ITEM_PAGE_SIZE
ITEM_PAGE = ITEM_MAX_COUNT                          ;每页项数
ITEM_PAGE_MAX   = 0                                   ;最大页
 .ELSE
ITEM_PAGE = ITEM_PAGE_SIZE                          ;每页项数
ITEM_PAGE_MAX   = ITEM_MAX / ITEM_PAGE * ITEM_PAGE    ;最大页
 .ENDIF
 .IF ITEM_MAX_COUNT % ITEM_PAGE
ITEM_PAGE_SUM  = ITEM_MAX_COUNT / ITEM_PAGE + 1       ;总页数
 .ELSE
ITEM_PAGE_SUM  = ITEM_MAX_COUNT / ITEM_PAGE           ;总页数
 .ENDIF
;============================================================
CHAR_NULL  = $00                                  ;空字符索引
CHAR_SPACE = ' '                                ;空格字符索引
CHAR_POINT = '.'                                ;空格句号索引
CHAR_PER   = '/'                                ;斜杠符号索引
CHAR_DIGIT = '0'                                ;数字字符起始
CHAR_ARROW = $1F                            ;光标箭头图形索引
;============================================================
ORDER_INDEX_LENGTH = $03                        ;序号数字长度
PAGE_INDEX_LENGTH  = $02                        ;页号数字长度
SOUND_INDEX_LENGTH = $03                        ;曲号数字长度
;------------------------------------------------------------
NMUBER_LENGTH_MAX  = $03                        ;最大数字长度
;============================================================
FC_Data_L   = $40                               ;数据地址低位
FC_Data_H   = FC_Data_L+$01                     ;数据地址高位
FC_Data_Cnt = FC_Data_H+$01                         ;数据计数
;============================================================
FC_PPU_Buffer = $0200                            ;PPU缓冲地址
FC_PPU_Status = FC_PPU_Buffer+$C0                ;PPU显示状态
FC_PPU_Cursor = FC_PPU_Status + $01          ;当前PPU缓冲位置
FC_PPU_Addr_L = FC_PPU_Cursor + $01              ;PPU地址低位
FC_PPU_Addr_H = FC_PPU_Addr_L + $01              ;PPU地址高位
;============================================================
Item_Index_Cur  = FC_PPU_Addr_H + $01               ;当前索引
Item_Index_Old  = Item_Index_Cur + $01              ;历史索引
Item_Page_Cur   = Item_Index_Old + $01                ;当前页
Item_Page_Old   = Item_Page_Cur + $01                 ;历史页
Item_Index_Cnt  = Item_Page_Old + $01               ;索引计数
Item_Write_Buf  = Item_Index_Cnt + $01          ;项缓冲最大数
;============================================================
BTN_DELAY_TIME  = $18                           ;按键延时启动
BTN_DELAY_SPEED = $08                           ;按键延时速度
;------------------------------------------------------------
Btn_Once        = Item_Write_Buf + $01              ;单次按键
Btn_Keep        = Btn_Once + $01                    ;长按按键
Btn_Delay       = Btn_Keep + $01                    ;长按延时
;------------------------------------------------------------
BTN_UP     = $08                                        ;上键
BTN_DOWN   = $04                                        ;下键
BTN_LEFT   = $02                                        ;左键
BTN_RIGHT  = $01                                        ;右键
BTN_B      = $40                                         ;B键
BTN_A      = $80                                         ;A键
BTN_SELECT = $20                                      ;选择键
BTN_START  = $10                                      ;开始键
;============================================================
SCROLL_H_VALUE = $04                                ;水平滚动
SCROLL_V_VALUE = $EC                                ;垂直滚动
;------------------------------------------------------------
Scroll_H = Btn_Delay + $01                          ;水平滚动
Scroll_V = Scroll_H + $01                           ;垂直滚动
;============================================================
DEC_100 = Scroll_V + $01                          ;十进制百位
DEC_010 = DEC_100 + $01                           ;十进制十位
DEC_001 = DEC_010 + $01                           ;十进制个位
;============================================================
Sound_Index = DEC_001 + $01                         ;曲目索引
Sound_Init = $8003                                ;初始化地址
Sound_Play = $8000                                  ;播放地址
;------------------------------------------------------------
SOUND_MAX = 017                                     ;最大曲目
SOUND_BGM = 007                                     ;默认背景
SOUND_BTN = 028                                     ;按键音效
;============================================================
 .ORG RESET_ADDR
;========================================
ProgramBegin:                   ;程序开始
 SEI
 CLD
 LDX #$FF
 TXS
 LDA #$00
 STA $2000
 STA $2001

;========================================
TimeDelay:                      ;延时等待
 LDX #$02
TimeDelayA:
 BIT $2002
 BPL TimeDelayA
TimeDelayB:
 BIT $2002
 BMI TimeDelayB
 DEX
 BNE TimeDelayA

;========================================
ClearScreen:                    ;清空屏幕
 JSR PaletteClear
 JSR NameTableClear

;========================================
PortInit:                     ;端口初始化
 LDA #$0F
 STA $4015
 LDA #$C0
 STA $4017
 LDA #$00
 STA $A000

;========================================
RamInit:                      ;内存初始化
 LDX #$00
 TXA
 STA $00
 STA $01
 LDY #$00
RamInitSet:
 STA ($00),Y
 INY
 BNE RamInitSet
 INC $01
 INX
 CPX #$08
 BCC RamInitSet

;========================================
ScreenInit:                   ;屏幕初始化
 JSR ChrSteup
 JSR PaletteSteup
 JSR PpuLayoutSteup
 LDA #SCROLL_H_VALUE
 STA Scroll_H
 LDA #SCROLL_V_VALUE
 STA Scroll_V
 JSR ShowTitle
 JSR ShowPageItems
 JSR ShowPageIndex
 JSR ShowArrow
 LDA #$0E
 STA FC_PPU_Status
 LDA #SOUND_BGM - 1
 STA Sound_Index
 JSR Sound_Init
;========================================
Circle:                             ;循环
 JSR NmiDelay
 JSR ButtonProcess
 JSR ChangeItemIndex
 JMP Circle

;========================================
NmiDelay:                        ;NMI延时
 LDA $2002
 BPL NmiDelay
 JSR FC_PPU_Process
 LDA Scroll_H
 STA $2005
 LDA Scroll_V
 STA $2005
 JSR Sound_Play
 RTS
 
;========================================
MODE_CNTL = $FB               ;行写入模式
MODE_CNTC = $FC               ;行清除模式
MODE_CNTN = $FD               ;行转行模式
MODE_CNTS = $FE         ;转行空格写入模式
;----------------------------------------
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
 CMP #MODE_CNTN
 BEQ FC_PPU_Mode_CountNext
 CMP #MODE_CNTS
 BEQ FC_PPU_Mode_CountSpace
 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_Mode_CountNext:      ;转行写入模式
 JSR FC_PPU_Set_Next
FC_PPU_CountNext_Write:
 LDA FC_PPU_Addr_H
 STA $2006
 LDA FC_PPU_Addr_L
 STA $2006
 INX
 LDY FC_PPU_Buffer,X
 JMP FC_PPU_CountLine_Write

;----------------------------------------
FC_PPU_Mode_CountSpace: ;转行空格写入模式
 JSR FC_PPU_Set_Next
FC_PPU_Mode_CountSpace_Write:
 INX
 LDA FC_PPU_Addr_H
 STA $2006
 LDA FC_PPU_Addr_L
 AND #$E0
 CLC
 ADC FC_PPU_Buffer,X
 STA FC_PPU_Addr_L
 STA $2006
 INX
 LDY FC_PPU_Buffer,X
 JMP FC_PPU_CountLine_Write

;----------------------------------------
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

;----------------------------------------
FC_PPU_Set_Next:                ;地址转行
 LDA FC_PPU_Addr_L
 CLC
 ADC #$20
 STA FC_PPU_Addr_L
 BCC FC_PPU_Set_Next_End
 INC FC_PPU_Addr_H
FC_PPU_Set_Next_End:
 RTS

;==================================================
FC_PPU_Source_Write_Buffer:        ;写入PPU缓冲数据
 LDA (FC_Data_L),Y
 STA FC_PPU_Buffer,X
 INX
 INY
 RTS

;========================================
SRC_MODE_NULL  = $FF      ;无地址写入模式
;----------------------------------------
FC_PPU_Write_Source:          ;源数据写入
 PHA
 TXA
 PHA
 TYA
 PHA
 LDX FC_PPU_Cursor
 LDY #$00
 LDA FC_Data_Cnt
 STY FC_Data_Cnt
 INC FC_Data_Cnt
 CMP #SRC_MODE_NULL
 BNE FC_PPU_Write_Line
 JSR FC_PPU_Source_Write_Buffer
 STA FC_Data_Cnt
FC_PPU_Write_Source_Set:
 JSR FC_PPU_Source_Write_Buffer
 DEC FC_Data_Cnt
 BNE FC_PPU_Write_Source_Set
FC_PPU_Write_Line:
 LDA (FC_Data_L),Y
 CMP #MODE_CNTL
 BNE FC_PPU_Write_Next
 JSR FC_PPU_Source_Write_Buffer
 JSR FC_PPU_Source_Write_Buffer
 JSR FC_PPU_Source_Write_Buffer
 JSR FC_PPU_Source_Write_Buffer
 STA FC_Data_Cnt
 BNE FC_PPU_Write_Source_Set
FC_PPU_Write_Next:
 CMP #MODE_CNTN
 BNE FC_PPU_Write_Space
 JSR FC_PPU_Source_Write_Buffer
 JSR FC_PPU_Source_Write_Buffer
 STA FC_Data_Cnt
 BNE FC_PPU_Write_Source_Set
FC_PPU_Write_Space:
 CMP #MODE_CNTS
 BNE FC_PPU_Write_Clear
 JSR FC_PPU_Source_Write_Buffer
 JSR FC_PPU_Source_Write_Buffer
 JSR FC_PPU_Source_Write_Buffer
 STA FC_Data_Cnt
 BNE FC_PPU_Write_Source_Set
FC_PPU_Write_Clear:
 CMP #MODE_CNTC
 BNE FC_PPU_Write_Source_End
 JSR FC_PPU_Source_Write_Buffer
 JSR FC_PPU_Source_Write_Buffer
 BNE FC_PPU_Write_Line
FC_PPU_Write_Source_End:
 STX FC_PPU_Cursor
 LDA #$00
 STA FC_Data_Cnt
 PLA
 TAY
 PLA
 TAX
 PLA
 RTS

;========================================
FC_PPU_Source_Write:     ;写入PPU缓冲数据
 STA FC_PPU_Buffer,X
 INX
 INY
 RTS

;========================================
FC_PPU_Clear_Source:          ;源数据清除
 PHA
 TXA
 PHA
 TYA
 PHA
 LDX FC_PPU_Cursor
 LDY #$00
 LDA FC_Data_Cnt
 STY FC_Data_Cnt
 INC FC_Data_Cnt
 CMP #SRC_MODE_NULL
 BNE FC_PPU_Clear_Line
FC_PPU_Clear_Source_Set:
 LDA (FC_Data_L),Y
 STA FC_PPU_Buffer,X
 TYA
 CLC
 ADC (FC_Data_L),Y
 TAY
 INX
 INY
FC_PPU_Clear_Line:
 LDA (FC_Data_L),Y
 CMP #MODE_CNTL
 BNE FC_PPU_Clear_Next
 LDA #MODE_CNTC
 JSR FC_PPU_Source_Write
 LDA (FC_Data_L),Y
 STA FC_PPU_Addr_H
 JSR FC_PPU_Source_Write
 LDA (FC_Data_L),Y
 STA FC_PPU_Addr_L
 JSR FC_PPU_Source_Write
 JMP FC_PPU_Clear_Source_Set
FC_PPU_Clear_Next:
 CMP #MODE_CNTN
 BNE FC_PPU_Clear_Space
 JSR FC_PPU_Set_Next
 LDA #MODE_CNTC
 STA FC_PPU_Buffer,X
 INX
 LDA FC_PPU_Addr_H
 STA FC_PPU_Buffer,X
 INX
 LDA FC_PPU_Addr_L
 JSR FC_PPU_Source_Write
 JMP FC_PPU_Clear_Source_Set
FC_PPU_Clear_Space:
 CMP #MODE_CNTS
 BNE FC_PPU_Clear_Clear
 JSR FC_PPU_Set_Next
 INY
 LDA #MODE_CNTC
 STA FC_PPU_Buffer,X
 INX
 LDA FC_PPU_Addr_H
 STA FC_PPU_Buffer,X
 INX
 LDA FC_PPU_Addr_L
 AND #$E0
 CLC
 ADC (FC_Data_L),Y
 STA FC_PPU_Addr_L
 JSR FC_PPU_Source_Write
 JMP FC_PPU_Clear_Source_Set
FC_PPU_Clear_Clear:
 CMP #MODE_CNTC
 BNE FC_PPU_Clear_Source_End
 JSR FC_PPU_Source_Write
 LDA (FC_Data_L),Y
 JSR FC_PPU_Source_Write
 LDA (FC_Data_L),Y
 JSR FC_PPU_Source_Write
 LDA (FC_Data_L),Y
 JSR FC_PPU_Source_Write
 JMP FC_PPU_Clear_Line
FC_PPU_Clear_Source_End:
 STX FC_PPU_Cursor
 LDA #$00
 STA FC_Data_Cnt
 PLA
 TAY
 PLA
 TAX
 PLA
 RTS

;========================================
ButtonProcess:                  ;按键扫描
 LDX #$01
 STX $4016
 DEX
 STX $4016
ButtonScan
 LDY #$08
ButtonScanBeg:
 LDA $4016,X
 LSR
 ROL Btn_Once,X
 LSR
 DEY
 BNE ButtonScanBeg
ButtonSet: 
 LDA Btn_Once,X
 TAY
 EOR Btn_Keep,X
 AND Btn_Once,X
 STA Btn_Once,X
 TYA
 STA Btn_Keep,X
;----------------------------------------
ButtonDelay:                ;按键长按延迟
 LDA Btn_Keep
 BEQ ButtonDelayEnd
 CMP #$10
 BEQ ButtonDelayEnd
 LDA Btn_Delay
 CMP #BTN_DELAY_TIME
 BCS ButtonDelayPress
 INC Btn_Delay
 RTS
ButtonDelayPress:
 INC Btn_Delay
 LDA Btn_Delay
 SEC
 SBC #BTN_DELAY_TIME
 CMP #BTN_DELAY_SPEED
 BCS ButtonDelayFinish
 RTS
ButtonDelayFinish:
 LDA Btn_Keep
 STA Btn_Once
 LDA #BTN_DELAY_TIME
ButtonDelayEnd:
 STA Btn_Delay
 RTS

;========================================
HexToDec:            ;8位十六进制转十进制
 LDY #$00
 BCC Count100
 INY
 SBC #100
Count100:
 CMP #100
 BCC Set100
 SBC #100
 INY
 BNE Count100
Set100:
 STY DEC_100
 LDY #$00
Count010:
 CMP #10
 BCC Set010
 SBC #10
 INY
 BNE Count010
Set010:
 STY DEC_010
 STA DEC_001
 RTS

;========================================
ChrSteup:                     ;图形块设置
 LDX #$00
ChrSteupSet:
 STX $8000
 LDA Chr_Bank_Data,X
 STA $8001
 INX
 CPX #$06
 BCC ChrSteupSet
 RTS

;========================================
PaletteClear:                 ;调色板清空
 LDA #$3F
 STA $2006
 LDA #$00
 STA $2006
 LDX #$00
 LDA #$0F
PaletteClearSet:
 STA $2007
 INX
 CPX #$20
 BCC PaletteClearSet
 RTS

;========================================
NameTableClear:               ;命名表清空
 LDA #$20
 STA $2006
 LDA #$00
 STA $2006
 LDX #$00
 LDY #$00
 LDA #$00
NameTableClearSet:
 STA $2007
 INX
 BNE NameTableClearSet
 INY
 CPY #10
 BCC NameTableClearSet
 RTS

;========================================
PaletteSteup:             ;背景调色板设置
 LDA #$3F
 STA $2006
 LDA #$00
 STA $2006
 LDX #$00
PaletteSteupSet:
 LDA Palette_Data,X
 STA $2007
 INX
 CPX #$10
 BCC PaletteSteupSet
 RTS

;========================================
PpuLayoutSteup:               ;属性表配置
 LDA #$23
 STA $2006
 LDA #$C0
 STA $2006
 LDX #$00
PpuLayoutSteupSet:
 LDA PpuLayout_Data,X
 STA $2007
 INX
 CPX #$40
 BCC PpuLayoutSteupSet
 RTS
 
;========================================
GetPageIndex:                 ;计算页索引
 LDA #$00
 STA Item_Page_Cur
 LDA Item_Index_Cur
 CMP #ITEM_PAGE
 BCC GetPageIndexReturn
 LDA #$00
 CLC
GetPageIndexSet:
 ADC #ITEM_PAGE
 BCS GetPageMaxIndex
 CMP Item_Index_Cur
 BEQ GetPageIndexEnd
 BCS GetPageIndexReturn
 STA Item_Page_Cur
 BNE GetPageIndexSet
GetPageIndexEnd:
 STA Item_Page_Cur
GetPageIndexReturn:
 RTS
GetPageMaxIndex:
 LDA #ITEM_PAGE_MAX
 STA Item_Page_Cur
 RTS
 
;========================================
SaveOldSelect:              ;保存历史索引
 LDA Item_Page_Cur
 STA Item_Page_Old
 LDA Item_Index_Cur
 STA Item_Index_Old
 RTS

;========================================
SetLastPage:              ;设置上一页索引
 JSR SaveOldSelect
 LDA #ITEM_MAX
 CMP #ITEM_PAGE
 BCS SetLastPageMul
 LDA #$00
 STA Item_Index_Cur
 RTS
SetLastPageMul:
 LDA Item_Index_Cur
 CMP #ITEM_PAGE
 BCC SetMaxPage
 SEC
 SBC #ITEM_PAGE
 STA Item_Index_Cur
 RTS
SetMaxPage:
 LDA #ITEM_PAGE_MAX
 CLC
 ADC Item_Index_Cur
 BCS SetLastMaxSet
 CMP #ITEM_MAX
SetLastMaxSet
 BCC SetLastPageSet
 LDA #ITEM_MAX
SetLastPageSet:
 STA Item_Index_Cur
 RTS

;========================================
SetNextPage:              ;设置下一页索引
 JSR SaveOldSelect
 LDA #ITEM_MAX
 CMP #ITEM_PAGE
 BCS SetNextPageMul
 LDA #ITEM_PAGE - 1
 STA Item_Index_Cur
 RTS
SetNextPageMul:
 LDA Item_Index_Cur
 CMP #ITEM_PAGE_MAX
 BCS SetNext
 CLC
 ADC #ITEM_PAGE
 BCS SetNextMaxSet
 CMP #ITEM_MAX
 BCC SetNextSet
SetNextMaxSet
 LDA #ITEM_MAX
SetNextSet:
 STA Item_Index_Cur
 RTS
SetNext:
 LDA Item_Index_Cur
 SEC
 SBC #ITEM_PAGE_MAX
 STA Item_Index_Cur
 RTS

;========================================
SetLastItem:              ;设置上一项索引
 JSR SaveOldSelect
 LDA Item_Index_Cur
 BEQ SetMaxItem
 LDA Item_Index_Cur
 CMP Item_Page_Cur
 BNE SetLastItemSet
SetLastItemSet:
 DEC Item_Index_Cur
 RTS
SetMaxItem:
 LDA #ITEM_MAX
 STA Item_Index_Cur
 JSR GetPageIndex
 RTS

;========================================
SetNextItem:              ;设置下一项索引
 JSR SaveOldSelect
 LDA Item_Index_Cur
 CMP #ITEM_MAX
 BEQ SetMinItem
 LDA Item_Page_Cur
 CLC
 ADC #ITEM_PAGE -1
 CMP Item_Index_Cur
 BNE SetNextItemSet
SetNextItemSet:
 INC Item_Index_Cur
 RTS
SetMinItem:
 LDA #$00
 STA Item_Index_Cur
 JSR GetPageIndex
 RTS

;========================================
SetOrderPos:                ;设置序号位置
 LDY Item_Index_Cnt
 LDA Pos_Data_H,Y
 STA FC_PPU_Buffer,X
 INX
 LDA Pos_Data_L,Y
 STA FC_PPU_Buffer,X
 INX
 LDA #ORDER_INDEX_LENGTH + 1
 STA FC_PPU_Buffer,X
 INX
 RTS

;========================================
ClearOrder:                     ;清除序号
 LDA Item_Page_Cur
 CMP Item_Page_Old
 BEQ ClearOrderEnd
 LDA Item_Page_Old
 CLC
 ADC Item_Index_Cnt
 BCS ClearOrderEnd
 CMP #ITEM_MAX
 BEQ ClearOrderSet
 BCS ClearOrderEnd
ClearOrderSet:
 LDX FC_PPU_Cursor
 LDA #MODE_CNTC
 STA FC_PPU_Buffer,X
 INX
 JSR SetOrderPos
ClearOrderWrite:
 STX FC_PPU_Cursor
ClearOrderEnd:
 RTS

;========================================
WriteNum:                       ;写入数字
 TAY
WriteNumSet:
 LDA DEC_100,Y
 CLC
 ADC #CHAR_DIGIT
 STA FC_PPU_Buffer,X
 INX
 INY
 CPY #$03
 BCC WriteNumSet
 RTS

;========================================
ShowOrder:                      ;显示序号
 LDA Item_Page_Cur
 CLC
 ADC Item_Index_Cnt
 BCS ShowOrderEnd
 CMP #ITEM_MAX
 BEQ ShowOrderSet
 BCS ShowOrderEnd
ShowOrderSet:
 CLC
 ADC #$01
 JSR HexToDec
 LDX FC_PPU_Cursor
 LDA #MODE_CNTL
 STA FC_PPU_Buffer,X
 INX
 JSR SetOrderPos
 LDA #NMUBER_LENGTH_MAX - ORDER_INDEX_LENGTH
 JSR WriteNum
 LDA #CHAR_POINT
 STA FC_PPU_Buffer,X
 INX
 STX FC_PPU_Cursor
ShowOrderEnd:
 RTS
 
;========================================
UpdateOrder:                    ;更新序号
 JSR ClearOrder
 JSR ShowOrder
 RTS

;========================================
SetTextPos:                 ;设置文本位置
 LDY Item_Index_Cnt
 LDA Pos_Data_H,Y
 STA FC_PPU_Buffer,X
 STA FC_PPU_Addr_H
 INX
 LDA Pos_Data_L,Y
 CLC
 ADC #ORDER_INDEX_LENGTH + 1
 STA FC_PPU_Buffer,X
 STA FC_PPU_Addr_L
 INX
 RTS

;========================================
ClearText:                      ;清除文本
 LDA Item_Page_Cur
 CMP Item_Page_Old
 BEQ ClearTextEnd
 LDA Item_Page_Old
 CLC
 ADC Item_Index_Cnt
 BCS ClearTextEnd
 CMP #ITEM_MAX
 BEQ ClearTextSet
 BCS ClearTextEnd
ClearTextSet:
 LDX FC_PPU_Cursor
 LDA #MODE_CNTC
 STA FC_PPU_Buffer,X
 INX
 JSR SetTextPos
 STX FC_PPU_Cursor
 LDA Item_Page_Old
 CLC
 ADC Item_Index_Cnt
 TAY
 LDA Text_Data_L,Y
 STA FC_Data_L
 LDA Text_Data_H,Y
 STA FC_Data_H
 LDA #SRC_MODE_NULL
 STA FC_Data_Cnt
 JSR FC_PPU_Clear_Source
ClearTextEnd:
 RTS

;========================================
ShowText:                       ;显示文本
 LDA Item_Page_Cur
 CLC
 ADC Item_Index_Cnt
 BCS ShowTextEnd
 CMP #ITEM_MAX
 BEQ ShowTextSet
 BCS ShowTextEnd
ShowTextSet:
 LDX FC_PPU_Cursor
 LDA #MODE_CNTL
 STA FC_PPU_Buffer,X
 INX
 JSR SetTextPos
 STX FC_PPU_Cursor
 LDA Item_Page_Cur
 CLC
 ADC Item_Index_Cnt
 TAY
 LDA Text_Data_L,Y
 STA FC_Data_L
 LDA Text_Data_H,Y
 STA FC_Data_H
 LDA #SRC_MODE_NULL
 STA FC_Data_Cnt
 JSR FC_PPU_Write_Source
ShowTextEnd:
 RTS

;========================================
UpdateText:                     ;更新文本
 JSR ClearText
 JSR ShowText
 RTS

;========================================
ShowTitle:                      ;显示标题
 LDA #<Title_Text_Data
 STA FC_Data_L
 LDA #>Title_Text_Data
 STA FC_Data_H
 JSR FC_PPU_Write_Source
ShowTitleEnd:
 JSR NmiDelay
 RTS

;========================================
SetArrowPos:                ;设置箭头位置
 TAY
 LDA Pos_Data_H,Y
 STA FC_PPU_Buffer,X
 INX
 LDA Pos_Data_L,Y
 SEC
 SBC #$02
 STA FC_PPU_Buffer,X
 INX
 LDA #$01
 STA FC_PPU_Buffer,X
 INX
 RTS

;========================================
ShowArrow:                      ;显示箭头
ShowArrowClear:
 LDX FC_PPU_Cursor
 LDA #MODE_CNTL
 STA FC_PPU_Buffer,X
 INX
 LDA Item_Index_Old
 SEC
 SBC Item_Page_Old
 JSR SetArrowPos
 LDA #CHAR_NULL
 STA FC_PPU_Buffer,X
 INX
ShowArrowShow:
 LDA #MODE_CNTL
 STA FC_PPU_Buffer,X
 INX
 LDA Item_Index_Cur
 SEC
 SBC Item_Page_Cur
 JSR SetArrowPos
 LDA #CHAR_ARROW
 STA FC_PPU_Buffer,X
 INX
 STX FC_PPU_Cursor
 RTS

;========================================
UpdateArrow:                    ;更新箭头
 LDA Item_Index_Old
 SEC
 SBC Item_Page_Old
 STA FC_Data_Cnt
 LDA Item_Index_Cur
 SEC
 SBC Item_Page_Cur
 CMP FC_Data_Cnt
 BEQ UpdateArrowEnd
 JSR ShowArrow
UpdateArrowEnd:
 RTS

;========================================
ShowSingleItem:             ;显示一项内容
 JSR UpdateOrder
 JSR UpdateText
ShowSingleItemEnd:
 RTS

;========================================
ShowPageItems:              ;显示一页内容
 LDA #$00
 STA Item_Index_Cnt
 STA Item_Write_Buf
ShowPageItemsSet:
 JSR ShowSingleItem
 INC Item_Write_Buf
 LDA Item_Write_Buf
 CMP #ITEM_BUFFER_SIZE
 BCC ShowPageItemsWrite
 JSR NmiDelay
 LDA #$00
 STA Item_Write_Buf
ShowPageItemsWrite:
 INC Item_Index_Cnt
 LDA Item_Index_Cnt
 CMP #ITEM_PAGE
 BCC ShowPageItemsSet
 LDA Item_Write_Buf
 BEQ ShowPageItemsEnd
 JSR NmiDelay
 LDA #$00
 STA Item_Write_Buf
ShowPageItemsEnd:
 RTS

;========================================
UpdatePage:                   ;更新页内容
 LDA Item_Page_Cur
 CMP Item_Page_Old
 BEQ UpdatePageEnd
 JSR ShowPageItems
 JSR ShowPageIndex
UpdatePageEnd:
 RTS

;========================================
SetPageIndexPos:           ;设置页号位置
 LDX FC_PPU_Cursor
 LDY #$00
 LDA Title_Text_Data,Y
 STA FC_PPU_Buffer,X
 INX
 INY
 LDA Title_Text_Data,Y
 STA FC_PPU_Buffer,X
 INX
 INY
 LDA Title_Text_Data,Y
 INY
 CLC
 ADC Title_Text_Data,Y
 ADC #$02
 STA FC_PPU_Buffer,X
 INX
 LDA #PAGE_INDEX_LENGTH * 2 + 1
 STA FC_PPU_Buffer,X
 INX
SetPageIndexPosEnd:
 STX FC_PPU_Cursor
 RTS

;========================================
ShowPageIndex:                  ;显示页号
 LDA Item_Page_Cur
 LDX #$01
ShowPageIndexSet:
 CMP #ITEM_PAGE
 BCC ShowPageIndexEnd
 SEC
 SBC #ITEM_PAGE
 INX
 BNE ShowPageIndexSet
ShowPageIndexEnd:
 TXA
 CLC
 JSR HexToDec
 JSR SetPageIndexPos
 LDA #NMUBER_LENGTH_MAX - PAGE_INDEX_LENGTH
 JSR WriteNum
 LDA #CHAR_PER
 STA FC_PPU_Buffer,X
 INX
 LDA #ITEM_PAGE_SUM
 CLC
 JSR HexToDec
 LDA #NMUBER_LENGTH_MAX - PAGE_INDEX_LENGTH
 JSR WriteNum
 STX FC_PPU_Cursor
 RTS

;========================================
LastSound:                    ;播放上一首
 LDA Sound_Index
 BEQ LastSoundEnd
LastSoundSet:
 DEC Sound_Index
 LDA Sound_Index
 JSR Sound_Init
LastSoundEnd:
 RTS

;========================================
NextSound:                    ;播放下一首
 LDA Sound_Index
 CMP #SOUND_MAX - 1
 BEQ NextSoundEnd
NextSoundSet:
 INC Sound_Index
 LDA Sound_Index
 JSR Sound_Init
NextSoundEnd:
 RTS

;========================================
StopSound:                      ;停止音乐
 LDA #$0B
 STA $4015
 LDA #$00
 STA $4008
 LDA #$0F
 STA $4015
 LDA #$30
 STA $4000
 STA $4004
 STA $400C
 LDA #$7F
 STA $4001
 STA $4005
 RTS

;========================================
ChangeItemIndex:              ;改变项索引
 LDA Btn_Once
 AND #$FF
 BNE ChangeItemSound
 RTS
ChangeItemSound:
 LDA Btn_Once
 AND #$2F
 BEQ SelectLastPage
 LDA #SOUND_BTN - 1
 JSR Sound_Init
SelectLastPage:
 LDA Btn_Once
 CMP #BTN_LEFT
 BNE SelectNextPage
 JSR SetLastPage
 JSR GetPageIndex
SelectNextPage:
 LDA Btn_Once
 CMP #BTN_RIGHT
 BNE SelectLastItem
 JSR SetNextPage
 JSR GetPageIndex
SelectLastItem:
 LDA Btn_Once
 CMP #BTN_UP
 BNE SelectNextItem
 JSR SetLastItem
 JSR GetPageIndex
SelectNextItem:
 LDA Btn_Once
 AND #BTN_SELECT | BTN_DOWN
 BEQ SelectLastSound
 JSR SetNextItem
 JSR GetPageIndex
SelectLastSound:
 LDA Btn_Once
 CMP #BTN_B
 BNE SelectNextSound
 JSR LastSound
SelectNextSound:
 LDA Btn_Once
 CMP #BTN_A
 BNE SelectResetSound
 JSR NextSound
SelectResetSound:
 LDA Btn_Once
 CMP #BTN_START
 BNE ChangeItemIndexEnd
 LDA Sound_Index
 JSR Sound_Init
ChangeItemIndexEnd:
 JSR UpdatePage
 JSR UpdateArrow
ChangeItemIndexReturn:
 RTS

;========================================
Chr_Bank_Data:                  ;图形块号
 .DB $00,$02,$04,$05,$06,$07

;========================================
Palette_Data:             ;背景调色板数据
 .DB $0F,$24,$24,$24,$0F,$20,$20,$20,$0F,$27,$27,$27,$0F,$2C,$2C,$2C

;========================================
PpuLayout_Data:               ;属性表数据
 .DB $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$FF,$55,$00,$00,$00,$00,$00,$00
 .DB $FF,$55,$00,$00,$00,$00,$00,$00,$FF,$55,$00,$00,$00,$00,$00,$00
 .DB $FF,$55,$00,$00,$00,$00,$00,$00,$FF,$55,$00,$00,$00,$00,$00,$00
 .DB $FF,$55,$00,$00,$00,$00,$00,$00,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA

;========================================
Pos_Data_L:      ;节目坐标位置低位
 .DB $84,$C4,$04,$44,$84,$C4,$04,$44,$84,$C4,$04,$44
Pos_Data_H:;节目坐标位置高位
 .DB $20,$20,$21,$21,$21,$21,$22,$22,$22,$22,$23,$23

;========================================
Text_Data_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,<ITEM_073,<ITEM_074,<ITEM_075,<ITEM_076,<ITEM_077,<ITEM_078,<ITEM_079,<ITEM_080
 .DB <ITEM_081,<ITEM_082,<ITEM_083,<ITEM_084,<ITEM_085,<ITEM_086,<ITEM_087,<ITEM_088,<ITEM_089,<ITEM_090
 .DB <ITEM_091,<ITEM_092,<ITEM_093,<ITEM_094,<ITEM_095,<ITEM_096,<ITEM_097,<ITEM_098,<ITEM_099,<ITEM_100
 .DB <ITEM_101,<ITEM_102,<ITEM_103,<ITEM_104,<ITEM_105,<ITEM_106,<ITEM_107,<ITEM_108,<ITEM_109,<ITEM_110
 .DB <ITEM_111,<ITEM_112,<ITEM_113,<ITEM_114,<ITEM_115,<ITEM_116,<ITEM_117,<ITEM_118,<ITEM_119,<ITEM_120
 .DB <ITEM_121,<ITEM_122,<ITEM_123,<ITEM_124,<ITEM_125,<ITEM_126,<ITEM_127,<ITEM_128,<ITEM_129,<ITEM_130
 .DB <ITEM_131,<ITEM_132,<ITEM_133,<ITEM_134,<ITEM_135,<ITEM_136,<ITEM_137,<ITEM_138,<ITEM_139,<ITEM_140
 .DB <ITEM_141,<ITEM_142,<ITEM_143,<ITEM_144,<ITEM_145,<ITEM_146,<ITEM_147,<ITEM_148,<ITEM_149,<ITEM_150
 .DB <ITEM_151,<ITEM_152,<ITEM_153,<ITEM_154,<ITEM_155,<ITEM_156,<ITEM_157,<ITEM_158,<ITEM_159,<ITEM_160
 .DB <ITEM_161,<ITEM_162,<ITEM_163,<ITEM_164,<ITEM_165,<ITEM_166,<ITEM_167,<ITEM_168,<ITEM_169,<ITEM_170
 .DB <ITEM_171,<ITEM_172,<ITEM_173,<ITEM_174,<ITEM_175,<ITEM_176,<ITEM_177,<ITEM_178,<ITEM_179,<ITEM_180
 .DB <ITEM_181,<ITEM_182,<ITEM_183,<ITEM_184,<ITEM_185,<ITEM_186,<ITEM_187,<ITEM_188,<ITEM_189,<ITEM_190
 .DB <ITEM_191,<ITEM_192,<ITEM_193,<ITEM_194,<ITEM_195,<ITEM_196,<ITEM_197,<ITEM_198,<ITEM_199,<ITEM_200
 .DB <ITEM_201,<ITEM_202,<ITEM_203,<ITEM_204,<ITEM_205,<ITEM_206,<ITEM_207,<ITEM_208,<ITEM_209,<ITEM_210
 .DB <ITEM_211,<ITEM_212,<ITEM_213,<ITEM_214,<ITEM_215,<ITEM_216,<ITEM_217,<ITEM_218,<ITEM_219,<ITEM_220
 .DB <ITEM_221,<ITEM_222,<ITEM_223,<ITEM_224,<ITEM_225,<ITEM_226,<ITEM_227,<ITEM_228,<ITEM_229,<ITEM_230
 .DB <ITEM_231,<ITEM_232,<ITEM_233,<ITEM_234,<ITEM_235,<ITEM_236,<ITEM_237,<ITEM_238,<ITEM_239,<ITEM_240
 .DB <ITEM_241,<ITEM_242,<ITEM_243,<ITEM_244,<ITEM_245,<ITEM_246,<ITEM_247,<ITEM_248,<ITEM_249,<ITEM_250
 .DB <ITEM_251,<ITEM_252,<ITEM_253,<ITEM_254,<ITEM_255,<ITEM_256
;----------------------------------------
Text_Data_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,>ITEM_073,>ITEM_074,>ITEM_075,>ITEM_076,>ITEM_077,>ITEM_078,>ITEM_079,>ITEM_080
 .DB >ITEM_081,>ITEM_082,>ITEM_083,>ITEM_084,>ITEM_085,>ITEM_086,>ITEM_087,>ITEM_088,>ITEM_089,>ITEM_090
 .DB >ITEM_091,>ITEM_092,>ITEM_093,>ITEM_094,>ITEM_095,>ITEM_096,>ITEM_097,>ITEM_098,>ITEM_099,>ITEM_100
 .DB >ITEM_101,>ITEM_102,>ITEM_103,>ITEM_104,>ITEM_105,>ITEM_106,>ITEM_107,>ITEM_108,>ITEM_109,>ITEM_110
 .DB >ITEM_111,>ITEM_112,>ITEM_113,>ITEM_114,>ITEM_115,>ITEM_116,>ITEM_117,>ITEM_118,>ITEM_119,>ITEM_120
 .DB >ITEM_121,>ITEM_122,>ITEM_123,>ITEM_124,>ITEM_125,>ITEM_126,>ITEM_127,>ITEM_128,>ITEM_129,>ITEM_130
 .DB >ITEM_131,>ITEM_132,>ITEM_133,>ITEM_134,>ITEM_135,>ITEM_136,>ITEM_137,>ITEM_138,>ITEM_139,>ITEM_140
 .DB >ITEM_141,>ITEM_142,>ITEM_143,>ITEM_144,>ITEM_145,>ITEM_146,>ITEM_147,>ITEM_148,>ITEM_149,>ITEM_150
 .DB >ITEM_151,>ITEM_152,>ITEM_153,>ITEM_154,>ITEM_155,>ITEM_156,>ITEM_157,>ITEM_158,>ITEM_159,>ITEM_160
 .DB >ITEM_161,>ITEM_162,>ITEM_163,>ITEM_164,>ITEM_165,>ITEM_166,>ITEM_167,>ITEM_168,>ITEM_169,>ITEM_170
 .DB >ITEM_171,>ITEM_172,>ITEM_173,>ITEM_174,>ITEM_175,>ITEM_176,>ITEM_177,>ITEM_178,>ITEM_179,>ITEM_180
 .DB >ITEM_181,>ITEM_182,>ITEM_183,>ITEM_184,>ITEM_185,>ITEM_186,>ITEM_187,>ITEM_188,>ITEM_189,>ITEM_190
 .DB >ITEM_191,>ITEM_192,>ITEM_193,>ITEM_194,>ITEM_195,>ITEM_196,>ITEM_197,>ITEM_198,>ITEM_199,>ITEM_200
 .DB >ITEM_201,>ITEM_202,>ITEM_203,>ITEM_204,>ITEM_205,>ITEM_206,>ITEM_207,>ITEM_208,>ITEM_209,>ITEM_210
 .DB >ITEM_211,>ITEM_212,>ITEM_213,>ITEM_214,>ITEM_215,>ITEM_216,>ITEM_217,>ITEM_218,>ITEM_219,>ITEM_220
 .DB >ITEM_221,>ITEM_222,>ITEM_223,>ITEM_224,>ITEM_225,>ITEM_226,>ITEM_227,>ITEM_228,>ITEM_229,>ITEM_230
 .DB >ITEM_231,>ITEM_232,>ITEM_233,>ITEM_234,>ITEM_235,>ITEM_236,>ITEM_237,>ITEM_238,>ITEM_239,>ITEM_240
 .DB >ITEM_241,>ITEM_242,>ITEM_243,>ITEM_244,>ITEM_245,>ITEM_246,>ITEM_247,>ITEM_248,>ITEM_249,>ITEM_250
 .DB >ITEM_251,>ITEM_252,>ITEM_253,>ITEM_254,>ITEM_255,>ITEM_256

;========================================
Title_Text_Data:            ;标题文本数据
 .DB MODE_CNTL,$20,$43
 .STR "VIDEO GAMES 256 IN 1"

;========================================
Text_Data:                      ;节目文本
ITEM_001 .STR "CONTRA"
ITEM_002 .STR "SUPER CONTRA"
ITEM_003 .STR "CONTRA FORCE"
ITEM_004 .STR "FINAL MISSION"
ITEM_005 .STR "KAGE"
ITEM_006 .STR "CHIP TO DALE"
ITEM_007 .STR "CHIP TO DALE 2"
ITEM_008 .STR "DOUBLE DRAGON"
ITEM_009 .STR "DOUBLE DRAGON 2"
ITEM_010 .STR "DOUBLE DRAGON 3"

ITEM_011 .STR "NEKKETSU DODGEBALL"
ITEM_012 .STR "NEKKETSU SOCCER HEN"
ITEM_013 .STR "NEKKETSU KAKUTOU"
ITEM_014 .STR "NEKKETSU KOUSHIN KYOKU"
ITEM_015 .STR "NEKKETSU STREET BASKET"
ITEM_016 .STR "NEKKETSU HOCKEY BU"
ITEM_017 .STR "NEKKETSU SHIN KIROKU"
ITEM_018 .STR "NEKKETSU MONOGATARI"
ITEM_019 .STR "NEKKETSU KUNIO KUN"

ITEM_020 .STR "NEKKETSU SOCCER LEAGUE"
ITEM_021 .STR "NEKKETSU KOUHA"
ITEM_022 .STR "MONSTER IN MY POCKET"
ITEM_023 .STR "WAI WAI WORLD"
ITEM_024 .STR "IKARI III"
ITEM_025 .STR "DATSUGOKU"
ITEM_026 .STR "SNOW BROS"
ITEM_027 .STR "NINJA TURTLES"
ITEM_028 .STR "NINJA TURTLES 2"
ITEM_029 .STR "NINJA TURTLES 3"
ITEM_030 .STR "TURTLES FIGHTER"

ITEM_031 .STR "HEAVY BARREL"
ITEM_032 .STR "JACKAL"
ITEM_033 .STR "RUSH N ATTACK"
ITEM_034 .STR "LIFE FORCE"
ITEM_035 .STR "GUERRILLA WAR"
ITEM_036 .STR "SILK WORM"
ITEM_037 .STR "SUPER MARIO BROS"
ITEM_038 .STR "SUPER MARIO BROS 2"
ITEM_039 .STR "SUPER MARIO BROS 3"
ITEM_040 .STR "ADVENTURE ISLAND"

ITEM_041 .STR "ADVENTURE ISLAND 2"
ITEM_042 .STR "ADVENTURE ISLAND 3"
ITEM_043 .STR "ADVENTURE ISLAND 4"
ITEM_044 .STR "ROCKMAN"
ITEM_045 .STR "ROCKMAN 2"
ITEM_046 .STR "ROCKMAN 3"
ITEM_047 .STR "ROCKMAN 5"
ITEM_048 .STR "NINJA GAIDEN"
ITEM_049 .STR "NINJA GAIDEN 2"
ITEM_050 .STR "NINJA GAIDEN 3"

ITEM_051 .STR "CASTLEVANIA"
ITEM_052 .STR "CASTLEVANIA 2"
ITEM_053 .STR "CASTLEVANIA 3"
ITEM_054 .STR "BATMAN"
ITEM_055 .STR "BATMAN RETURNS"
ITEM_056 .STR "POWER BLADE"
ITEM_057 .STR "POWER BLADE 2"
ITEM_058 .STR "ROBOCOP"
ITEM_059 .STR "ROBOCOP 2"
ITEM_060 .STR "ROBOCOP 3"

ITEM_061 .STR "KID NIKI 2"
ITEM_062 .STR "KID NIKI 3"
ITEM_063 .STR "FLINTSTONES"
ITEM_064 .STR "FLINTSTONES 2"
ITEM_065 .STR "FLINTSTONES JETSONS"
ITEM_066 .STR "DUCK TALES"
ITEM_067 .STR "DUCK TALES 2"
ITEM_068 .STR "TINY TOON ADVENTURES"
ITEM_069 .STR "TINY TOON ADVENTURES 2"
ITEM_070 .STR "SAIYUUKI WORLD"

ITEM_071 .STR "SAIYUUKI WORLD 2"
ITEM_072 .STR "ROLLERGAMES"
ITEM_073 .STR "BONKS ADVENTURE"
ITEM_074 .STR "TOKI"
ITEM_075 .STR "PANIC RESTAURANT"
ITEM_076 .STR "WEREWOLF"
ITEM_077 .STR "SPARTAN X2"
ITEM_078 .STR "JACKIE CHANS"
ITEM_079 .STR "DAIKU NO GEN SAN"
ITEM_080 .STR "KABUKI QUANTUM FIGHTER"

ITEM_081 .STR "ASTYANAX"
ITEM_082 .STR "THE ROCKETEER"
ITEM_083 .STR "GUN DEC"
ITEM_084 .STR "HINOTORI"
ITEM_085 .STR "SWORD MASTER"
ITEM_086 .STR "KARNOV"
ITEM_087 .STR "KYOURYUU S JUURANGER"
ITEM_088 .STR "MIGHTY FINAL FIGHT"
ITEM_089 .STR "DRAGON FIGHTER"
ITEM_090 .STR "BAD DUDES"
 
ITEM_091 .STR "MCDONALDLAND"
ITEM_092 .STR "LITTLE NEMO"
ITEM_093 .STR "UFOURIA"
ITEM_094 .STR "TOTALLY RAD"
ITEM_095 .STR "MATENDOUJI"
ITEM_096 .STR "CHOUJIN SENTAI JETMAN"
ITEM_097 .STR "ROCKIN KATS"
ITEM_098 .STR "YUME PENGUIN MONOGATARI"
ITEM_099 .STR "CODE NAME VIPER"
ITEM_100 .STR "SQUASHED"

ITEM_101 .STR "NINJA CRUSADERS"
ITEM_102 .STR "MITSUME GA TOORU"
ITEM_103 .STR "CAPTAIN AMERICA"
ITEM_104 .STR "YOUNG INDIANA JONES"
ITEM_105 .STR "JAMES BOND JR"
ITEM_106 .STR "SECRET TIES"
ITEM_107 .STR "SAINT SEIYA 2"
ITEM_108 .STR "LITTLE SAMSON"
ITEM_109 .STR "TIME DIVER EON MAN"
ITEM_110 .STR "TARGET RENEGADE"

ITEM_111 .STR "JUNGLE BOOK"
ITEM_112 .STR "SHATTERHAND"
ITEM_113 .STR "KICK MASTER"
ITEM_114 .STR "CROSS FIRE"
ITEM_115 .STR "BUCKY OHARE"
ITEM_116 .STR "WACKY RACES"
ITEM_117 .STR "RYGAR"
ITEM_118 .STR "BIO MIRACLE BOKUTTE UPA"
ITEM_119 .STR "BIONIC COMMANDO"

ITEM_120 .STR "BANANA PRINCE"
ITEM_121 .STR "LITTLE MERMAID"
ITEM_122 .STR "GREMLINS 2"
ITEM_123 .STR "MAGICAL DOROPIE"
ITEM_124 .STR "JOURNEY TO SILIUS"
ITEM_125 .STR "G.I. JOE"
ITEM_126 .STR "G.I. JOE 2"
ITEM_127 .STR "ZEN"
ITEM_128 .STR "DOKI! DOKI! YUUENCHI"
ITEM_129 .STR "GETSUFUU MADEN"
ITEM_130 .STR "MOON CRYSTAL"

ITEM_131 .STR "JOE AND MAC"
ITEM_132 .STR "SPIDER MAN"
ITEM_133 .STR "LETHAL WEAPON"
ITEM_134 .STR "JURASSIC PARK"
ITEM_135 .STR "MAD CITY"
ITEM_136 .STR "LOW G MAN"
ITEM_137 .STR "TWIN BEE"
ITEM_138 .STR "TWIN BEE 2"
ITEM_139 .STR "BLASTER MASTER"
ITEM_140 .STR "OVER HORIZON"

ITEM_141 .STR "CHITEI SENKUU VAZOLDER"
ITEM_142 .STR "ABADOX"
ITEM_143 .STR "SAMURAI ZOMBIE NATION"
ITEM_144 .STR "PARODIUS"
ITEM_145 .STR "ISOLATED WARRIOR"
ITEM_146 .STR "TOP GUN"
ITEM_147 .STR "TOP GUN 2"
ITEM_148 .STR "ROBOCCO WARS"
ITEM_149 .STR "GUN NAC"
ITEM_150 .STR "THUNDERCADE"

ITEM_151 .STR "SUMMER CARNIVAL 92"
ITEM_152 .STR "DRAGON SPIRIT"
ITEM_153 .STR "KYUUKYOKU TIGER"
ITEM_154 .STR "LEGENDARY WINGS"
ITEM_155 .STR "BURAI FIGHTER"
ITEM_156 .STR "ZANAC"
ITEM_157 .STR "GRADIUS"
ITEM_158 .STR "BATTLE FORMULA"
ITEM_159 .STR "CHUKA TAISEN"
ITEM_160 .STR "ALADDIN"

ITEM_161 .STR "ULTRAMAN CLUB"
ITEM_162 .STR "8 EYES"
ITEM_163 .STR "DARKMAN"
ITEM_164 .STR "SPY VS SPY"
ITEM_165 .STR "MISSION IMPOSSIBLE"
ITEM_166 .STR "DRAGONS LAIR"
ITEM_167 .STR "THE LONE RANGER"
ITEM_168 .STR "HIRYUU NO KEN III"
ITEM_169 .STR "METAL GEAR SOLID"
ITEM_170 .STR "GAIAPOLIS"

ITEM_171 .STR "GUARDIAN LEGEND"
ITEM_172 .STR "STREET FIGHTER 2010"
ITEM_173 .STR "TOXIC CRUSADERS"
ITEM_174 .STR "GOLGO 13"
ITEM_175 .STR "DRAGON SCROLL"
ITEM_176 .STR "LUPIN SANSEI"
ITEM_177 .STR "MAJOU DENSETSU 2"
ITEM_178 .STR "TERMINATOR 2"
ITEM_179 .STR "GHOULS N GHOSTS"
ITEM_180 .STR "THE GOONIES 2"

ITEM_181 .STR "KAMEN NO NINJA"
ITEM_182 .STR "BIO FORCE APE"
ITEM_183 .STR "ALTERED BEAST"
ITEM_184 .STR "TAIYOU NO YUUSHA"
ITEM_185 .STR "WOLVERINE"
ITEM_186 .STR "HOOK"
ITEM_187 .STR "WIDGET"
ITEM_188 .STR "COWBOY KID"
ITEM_189 .STR "NEW GHOSTBUSTERS II"
ITEM_190 .STR "ROD LAND"
 
ITEM_191 .STR "ALIEN 3"
ITEM_192 .STR "SD HERO SOUKESSEN"
ITEM_193 .STR "BOMBERMAN 2"
ITEM_194 .STR "METAL STORM"
ITEM_195 .STR "CHASE H.Q."
ITEM_196 .STR "RAINBOW ISLANDS"
ITEM_197 .STR "THE PUNISHER"
ITEM_198 .STR "GUN.SMOKE"
ITEM_199 .STR "MEIKYUU JIMA"
ITEM_200 .STR "TROG"

ITEM_201 .STR "SOLOMONS KEY 2"
ITEM_202 .STR "FLYING HERO"
ITEM_203 .STR "COBRA COMMAND"
ITEM_204 .STR "WCW WORLD"
ITEM_205 .STR "SUPER SPIKE VBALL"
ITEM_206 .STR "SIDE POCKET"
ITEM_207 .STR "DOUBLE DRIBBLE"
ITEM_208 .STR "CAPTAIN TSUBASA 2"
ITEM_209 .STR "JOY MECH FIGHT"
ITEM_210 .STR "FIGHTING ROAD"

ITEM_211 .STR "STREET FIGHTER 16P"
ITEM_212 .STR "FELIX THE CAT"
ITEM_213 .STR "DARKWING DUCK"
ITEM_214 .STR "DARKWING DUCK 2"
ITEM_215 .STR "KEROPPI NO DAIBOUKEN"
ITEM_216 .STR "CAT NINDEN TEYANDEE"
ITEM_217 .STR "MICKEY MOUSE 3"
ITEM_218 .STR "BUBBLE BOBBLE PART 2"
ITEM_219 .STR "TALESPIN"

ITEM_220 .STR "TOM AND JERRY"
ITEM_221 .STR "HOKUTO NO KEN 2"
ITEM_222 .STR "CAESARS PALACE"
ITEM_223 .STR "TERRA CRESTA"
ITEM_224 .STR "X MAN"
ITEM_225 .STR "CONAN"
ITEM_226 .STR "ROBO WARRIOR"
ITEM_227 .STR "GREAT BATTLE CYBER"
ITEM_228 .STR "SHADOWGATE"
ITEM_229 .STR "HAPPY BIRTHDAY BUGS"
ITEM_230 .STR "NINJA BROTHERS"

ITEM_231 .STR "DYNATRON CITY"
ITEM_232 .STR "IMAGE FIGHT"
ITEM_233 .STR "MICKEYS NUMBERLAND"
ITEM_234 .STR "MICKEYS LETTERLAND"
ITEM_235 .STR "SILVA SAGA II"
ITEM_236 .STR "DEJA VU"
ITEM_237 .STR "ULTIMATE BASKETBALL"
ITEM_238 .STR "HOME ALONE 2"
ITEM_239 .STR "HEROES OF MIGHT"
ITEM_240 .STR "THE IMMORTAL"

ITEM_241 .STR "TETRASTAR THE FIGHTER"
ITEM_242 .STR "WARIOS WOODS"
ITEM_243 .STR "FINAL FANTASY"
ITEM_244 .STR "FINAL FANTASY 2"
ITEM_245 .STR "METAL MAX"
ITEM_246 .STR "METROID"
ITEM_247 .STR "SWEET HOME"
ITEM_248 .STR "LEGEND OF ZELDA"
ITEM_249 .STR "SUGORO QUEST"
ITEM_250 .STR "YS II"

ITEM_251 .STR "DYNASTY WARS"
ITEM_252 .STR "GOD SLAYER"
ITEM_253 .STR "RADIA SENKI"
ITEM_254 .STR "SUPER ROBOT TAISEN 2"
ITEM_255 .STR "EARTHBOUND"
ITEM_256 .STR "GACHAPON SENSHI 4"
[FC][菜单分页][20190518].zip
(26.78 KiB) Downloaded 439 times
User avatar
B00daW
Posts: 586
Joined: Thu Jan 03, 2008 1:48 pm

Re: [FC][Menu paging][20190517]

Post by B00daW »

Hey FlameCyclone,

Thanks for posting your code! I just have to say that it's just so darn, ironically hilarious that a Chinese guy is posting source code for a multicart menu. I just had to laugh!

Have a nice day!
Post Reply