FC忍者神龟格斗可视化hack源码

[FC][忍者神龟格斗][最佳可视化][Final]
时间:2023.12.22
作者:FlameCyclone
内容:
1.可视化功能菜单   
    (1)菜单按键操作
        1.上下键: 移动选项
        2.左右键: 翻页
        3.选择键: 翻转功能开关
        4.开始键: 退出菜单
        5.B键: 启用功能
        6.A键: 禁用功能
    
    (2)功能列表
         1.时间锁定: 剩余时间不减
         2.击杀玩家1: 玩家1被击败
         3.击杀玩家2: 玩家2被击败
         4.血量锁定: 剩余血量不减
         5.快捷技能: B/A + 选择键释放技能
         6.拥有能量球: 保持拥有能量球状态, 选择键发射

2.其他
    (1)进入可视化菜单后背景音乐将会继续播放
    (2)翻页, 移动光标, 启用禁用功能, 翻转功能时均有音效
    (3)进入可视化菜单时光标将保持上次退出时的位置
    (4)故事模式下可选所有角色

工程总览:

编译环境(Visual Code):

运行效果:

程序主要逻辑(6502汇编)

[FC][BestVisible][Main].asm

;[FC][BestVisible]
;FlameCyclone
;20231207.INCLUDE "[FC][BestVisible][Config].asm".INCLUDE "[FC][BestVisible][Data].asm".ORG $0000.BASE $00.HEX 4E 45 53 1A.DB NES_16KB_PRG_SIZE, NES_8KB_CHR_SIZE.DB ((Mapper & $F) << 4) | Trainer | FourScreen | Battery_backed | Mirroring.DB (Mapper & $F);==================================================
;程序开始地址BANK_ORG PROGRAM_BANK, PROGRAM_ADDR
;==================================================
;程序入口
VisibleProcess;非暂停状态直接结束LDA Rom_Pause_AddrAND #Rom_Pause_ValBEQ .VisibleProcess_End;未按下选择键直接结束LDA Rom_Gamepad_OnceCMP #GAMEPAD_SELECTBNE .VisibleProcess_EndPHATXAPHATYAPHAMACRO_PRG_RAM_ENABLE;启用 PRG RAMLDA #$80STA PPU_CTRL;仅启用NMI中断LDA #$00STA PPU_MASK;关闭显示JSR Init_Menu_Memory;菜单内存初始化;备份栈, 防止栈深度过大导致异常TSXSTX FC_Stack_Last
.Back_StackLDA $0100,XSTA Stack_Bak_Addr,XINXBNE .Back_StackLDX #$FFTXS;备份占用的几个地址LDA FC_PPU_StatusPHALDA Rom_Ppu_MaskPHA;设置菜单标记LDA #MENU_MODE_FLAGSTA Rom_Ppu_MaskJSR Backup_Data;备份数据;载入上次的页起始索引与功能选项索引LDA FC_Page_Index_LastSTA FC_Page_CurLDA FC_Item_Index_LastSTA FC_Select_IndexJSR Program_Begin;可视化菜单开始;记录本次的页起始索引与功能选项索引LDA FC_Select_IndexSTA FC_Item_Index_LastLDA FC_Page_CurSTA FC_Page_Index_LastJSR Recovery_Data;恢复数据;恢复占用的几个地址PLASTA Rom_Ppu_MaskPLASTA FC_PPU_Status;恢复栈LDX FC_Stack_Last
.Recovery_StackLDA Stack_Bak_Addr,XSTA $0100,XINXBNE .Recovery_StackLDX FC_Stack_LastTXS;防止触发开始键LDA #GAMEPAD_STARTSTA Rom_Gamepad_KeepLDA #$00STA Rom_Gamepad_Once;恢复屏幕显示控制LDA Rom_Ppu_CtrlSTA PPU_CTRLPLATAYPLATAXPLA.VisibleProcess_EndRTS;==================================================
;菜单内存初始化
Init_Menu_MemoryLDA FC_Menu_Init_FlagCMP #MENU_INIT_FLAGBEQ Init_Menu_Memory.EndLDX #$00TXA
Init_Menu_Memory.WriteSTA FC_Menu_Used_Addr,XINXBNE Init_Menu_Memory.WriteLDA #MENU_INIT_FLAGSTA FC_Menu_Init_Flag
Init_Menu_Memory.EndRTS;==================================================
;备份数据
Backup_DataJSR Backup_Zero_Page_RAM;备份零页内存(3597周期)JSR Backup_PPU_Buf_Used;备份PPU缓冲占用内存(3597周期)JSR Clear_PPU_Palette;调色板清理(399周期)JSR VBlank_Palette_Enable;启用调色板(20周期)JSR Wait_For_VBlank_Finished;等待VBlank处理完毕JSR Init_Zero_Page_RAM;初始化零页占用内存(289周期)JSR Backup_PPU_2000_23FF;备份命名表(15461周期)JSR Wait_For_VBlank_Finished;等待VBlank处理完毕JSR Init_OAM_RAM;初始化精灵内存(2323周期)JSR Clear_PPU_2000_23FF;清空命名表(9273周期)RTS;==================================================
;恢复数据
Recovery_DataLDA #$00STA FC_PPU_Status;关闭显示STA FC_NMI_Proc_Flag;不处理任何任务JSR Recovery_PPU_Palette;恢复调色板(525周期)JSR VBlank_Palette_Enable;启用调色板JSR Wait_For_VBlank_Finished;等待VBlank处理完毕JSR Recovery_PPU_2000_23FF;恢复命名表(14565周期)JSR Recovery_PPU_Buf_Used;恢复PPU缓冲占用内存(3633周期)JSR Recovery_Zero_Page_RAM;恢复零页备份(3632周期)RTS;==================================================
;清空命名表
Clear_PPU_2000_23FFJSR Set_PPU_Name_Table_AddrLDX #$00LDY #$04TXA
Clear_PPU_2000_23FF.WriteSTA PPU_DATADEXBNE Clear_PPU_2000_23FF.WriteDEYBNE Clear_PPU_2000_23FF.WriteRTS;==================================================
;设置PPU命名表地址
Set_PPU_Name_Table_Addr;LDA PPU_STATUSLDA #$20STA PPU_ADDRESSLDA #$00STA PPU_ADDRESSRTS;==================================================
;设置PPU调色板地址
Set_PPU_Palette_Addr;LDA PPU_STATUSLDA #$3FSTA PPU_ADDRESSLDA #$00STA PPU_ADDRESSRTS;==================================================
Get_Name_Table_Bak_Addr_And_SizeLDA #<PPU_Name_Table_Bak_AddrSTA FC_Data_LLDA #>PPU_Name_Table_Bak_AddrSTA FC_Data_HLDY #$00LDX #$04RTS;==================================================
;备份PPU命名表
Backup_PPU_2000_23FFJSR Set_PPU_Name_Table_AddrJSR Get_Name_Table_Bak_Addr_And_SizeLDA PPU_DATA
Backup_PPU_2000_23FF.WriteLDA PPU_DATASTA (FC_Data_L),YINYBNE Backup_PPU_2000_23FF.WriteINC FC_Data_HDEXBNE Backup_PPU_2000_23FF.WriteRTS;==================================================
;恢复PPU命名表
Recovery_PPU_2000_23FFJSR Set_PPU_Name_Table_AddrJSR Get_Name_Table_Bak_Addr_And_Size
Recovery_PPU_2000_23FF.WriteLDA (FC_Data_L),YSTA PPU_DATAINYBNE Recovery_PPU_2000_23FF.WriteINC FC_Data_HDEXBNE Recovery_PPU_2000_23FF.WriteRTS;==================================================
;备份零页占用RAM
Backup_Zero_Page_RAMLDX #$00
Backup_Zero_Page_RAM.WriteLDA $00,XSTA Zero_Page_Bak_Addr,XINXBNE Backup_Zero_Page_RAM.WriteRTS;==================================================
;恢复零页占用RAM
Recovery_Zero_Page_RAMLDX #$00
Recovery_Zero_Page_RAM.WriteLDA Zero_Page_Bak_Addr,XSTA $00,XINXBNE Recovery_Zero_Page_RAM.WriteRTS;==================================================
;初始化零页占用RAM
Init_Zero_Page_RAMLDX #USE_RAM_SIZE - 1LDA #$00
Init_Zero_Page_RAM.WriteSTA Use_Ram_Begin,XDEXBNE Init_Zero_Page_RAM.WriteSTA Use_Ram_Begin,XRTS;==================================================
;备份PPU缓冲占用
Backup_PPU_Buf_UsedLDX #$00
Backup_PPU_Buf_Used.WriteLDA FC_PPU_Buffer,XSTA PPU_Used_Bak_Addr,XINXBNE Backup_PPU_Buf_Used.WriteRTS;==================================================
;恢复PPU缓冲占用
Recovery_PPU_Buf_UsedLDX #$00
Recovery_PPU_Buf_Used.WriteLDA PPU_Used_Bak_Addr,XSTA FC_PPU_Buffer,XINXBNE Recovery_PPU_Buf_Used.WriteRTS;==================================================
;初始化精灵内存
Init_OAM_RAMLDX #$00STX PPU_OAM_ADDRLDA #$F8
Init_OAM_RAM.WriteSTA PPU_OAM_DATAINXBNE Init_OAM_RAM.WriteRTS;==================================================
;恢复调色板
Recovery_PPU_PaletteLDX #$00
Recovery_PPU_Palette.WriteLDA Rom_Pal_Addr,XSTA FC_PPU_Palette,XINXCPX #$20BCC Recovery_PPU_Palette.WriteRTS;==================================================
;初始化调色板
Init_PPU_PaletteLDX #$00
Init_PPU_Palette.WriteLDA Palette_Data,XSTA FC_PPU_Palette,XINXCPX #$20BCC Init_PPU_Palette.WriteRTS;==================================================
;清空调色板
Clear_PPU_PaletteLDX #$00LDA #$0F
Clear_PPU_Palette.WriteSTA FC_PPU_Palette,XINXCPX #$20BCC Clear_PPU_Palette.WriteRTS;==================================================
;设置CHR图形
Init_CHR_BankLDX #$05
Init_CHR_Bank.WriteSTX $8000LDA CHR_Data,xSTA $8001DEXBPL Init_CHR_Bank.WriteRTS.INCLUDE "[FC][BestVisible][Cursor].asm".INCLUDE "[FC][BestVisible][Function].asm".INCLUDE "[FC][BestVisible][PPU].asm".INCLUDE "[FC][BestVisible][Gamepad].asm".INCLUDE "[FC][BestVisible][Page].asm".INCLUDE "[FC][BestVisible][Text].asm";==================================================
;程序开始
Program_BeginJSR Init_CHR_Bank;初始化图形BankJSR Init_PPU_Palette;设置调色板JSR VBlank_Palette_EnableJSR Wait_For_VBlank_Finished;设置页选项缓冲数量LDA #FC_PAGE_INIT_BUF_SIZESTA FC_Page_Update_MaxJSR VBlank_Text_Enable;开启显示LDA #$0ESTA FC_PPU_StatusJSR Page_Text_Update;更新页选项内容;禁用触发选择键与开始键LDA #GAMEPAD_SELECT | GAMEPAD_STARTSTA FC_Gamepad_BufJSR VBlank_Gamepad_Enable;启用输入;==================================================
;循环等待(直到按下开始键)
Main_LoopLDA FC_NMI_Proc_FlagAND #FC_NMI_PROC_TYPE_EXITBEQ Main_LoopRTS;==================================================
;NMI中断处理
NMI_ProcessLDA #$00STA PPU_MASKPPU_Text_Process_With_Flag;PPU文本处理检查LDA FC_NMI_Proc_FlagAND #FC_NMI_PROC_TYPE_TEXTBEQ .PPU_Text_Process_With_Flag_EndJSR FC_PPU_Text_Process;PPU文本处理
.PPU_Text_Process_With_Flag_EndPPU_Palette_Process_With_Flag;PPU调色板处理检查LDA FC_NMI_Proc_FlagAND #FC_NMI_PROC_TYPE_PALETTEBEQ .PPU_Palette_Process_With_Flag_EndJSR FC_PPU_Palette_Process;PPU文本处理
.PPU_Palette_Process_With_Flag_EndJSR Show_Select_Cursor;光标显示LDA #$00STA FC_PPU_BufferSTA PPU_ADDRESSSTA PPU_ADDRESSSTA PPU_SCROLLSTA PPU_SCROLLLDA FC_PPU_StatusSTA PPU_MASKMACRO_ROM_SOUND_CHECK;取消音乐暂停;==================================================
;输入处理检查
Gamepad_Process_With_FlagLDA FC_NMI_Proc_FlagAND #FC_NMI_PROC_TYPE_GAMEPADBEQ .Gamepad_Process_With_Flag_EndJSR Gamepad_Process;按键处理.IF FC_GAMEPAD_BURSTSJSR Gamepad_Bursts;按键超时连发处理.ENDIFLDA FC_Gamepad_Once.IF 0 == FC_DOUBLE_PLAYERSORA FC_Gamepad_Once + 1.ENDIFSTA FC_Gamepad_Merge
.Gamepad_Process_With_Flag_End;==================================================
;功能处理检查
.Function_Process_With_FlagLDA FC_NMI_Proc_FlagAND #FC_NMI_PROC_TYPE_GAMEPADBEQ .Function_Process_With_Flag_EndJSR Check_For_Exit;退出检查JSR Select_Item_Proc;选择选项处理JSR Function_State_Proc;功能状态处理.Function_Process_With_Flag_EndJSR Music_Play;音乐播放;清除VBlank标记LDA FC_NMI_Proc_FlagAND #FC_NMI_PROC_TYPE_VBLANK ^ $FFSTA FC_NMI_Proc_FlagJMP Rom_Nmi_Proc_End;==================================================
;播放选项变化音乐
Play_Music_For_Item_ChangeLDA #FC_ITEM_CHANGE_SOUNDJSR Music_SelectRTS;==================================================
;播放翻页变化音乐
Play_Music_For_Page_ChangeLDA #FC_PAGE_CHANGE_SOUNDJSR Music_SelectRTS;==================================================
;播放功能翻转音乐
Play_Music_For_Function_FlipLDA #FC_FUNCTION_FLIP_SOUNDJSR Music_SelectRTS;==================================================
;播放功能启用音乐
Play_Music_For_Function_EnableLDA #FC_FUNCTION_ON_SOUNDJSR Music_SelectRTS;==================================================
;播放功能禁用音乐
Play_Music_For_Function_DisableLDA #FC_FUNCTION_OFF_SOUNDJSR Music_SelectRTS;==================================================
;退出检查
Check_For_ExitLDA FC_Gamepad_KeepCMP FC_Gamepad_OnceBNE .EndLDA FC_Gamepad_Keep + 1CMP FC_Gamepad_Once + 1BNE .EndLDA FC_Gamepad_OnceORA FC_Gamepad_Once + 1CMP #GAMEPAD_STARTBNE .EndLDA FC_NMI_Proc_FlagORA #FC_NMI_PROC_TYPE_EXITSTA FC_NMI_Proc_Flag
.EndRTS;==================================================
;等待VBlank处理完毕
Wait_For_VBlank_FinishedLDA FC_NMI_Proc_FlagORA #FC_NMI_PROC_TYPE_VBLANKSTA FC_NMI_Proc_Flag
.WaitLDA FC_NMI_Proc_FlagAND #FC_NMI_PROC_TYPE_VBLANKBNE .WaitRTS;==================================================
;启用文本处理
VBlank_Text_EnableLDA FC_NMI_Proc_FlagORA #FC_NMI_PROC_TYPE_TEXTSTA FC_NMI_Proc_FlagRTS;==================================================
;禁用文本处理
VBlank_Text_DisableLDA FC_NMI_Proc_FlagAND #FC_NMI_PROC_TYPE_TEXT ^ $FFSTA FC_NMI_Proc_FlagRTS;==================================================
;启用调色板处理
VBlank_Palette_EnableLDA FC_NMI_Proc_FlagORA #FC_NMI_PROC_TYPE_PALETTESTA FC_NMI_Proc_FlagRTS;==================================================
;禁用调色板处理
VBlank_Palette_DisableLDA FC_NMI_Proc_FlagAND #FC_NMI_PROC_TYPE_PALETTE ^ $FFSTA FC_NMI_Proc_FlagRTS;==================================================
;启用输入处理
VBlank_Gamepad_EnableLDA FC_NMI_Proc_FlagORA #FC_NMI_PROC_TYPE_GAMEPADSTA FC_NMI_Proc_FlagRTS;==================================================
;禁用输入处理
VBlank_Gamepad_DisableLDA FC_NMI_Proc_FlagAND #FC_NMI_PROC_TYPE_GAMEPAD ^ $FFSTA FC_NMI_Proc_FlagRTS;==================================================
;选择选项处理
Select_Item_Proc.Pre_Page;上一页LDA FC_Gamepad_MergeAND #GAMEPAD_LEFTBEQ .Next_PageJSR Play_Music_For_Page_ChangeJSR Switch_To_Pre_Page.Next_Page;下一页LDA FC_Gamepad_MergeAND #GAMEPAD_RIGHTBEQ .Pre_ItemJSR Play_Music_For_Page_ChangeJSR Switch_To_Next_Page.Pre_Item;前一项LDA FC_Gamepad_MergeAND #GAMEPAD_UPBEQ .Next_ItemJSR Play_Music_For_Item_ChangeJSR Switch_To_Pre_Item.Next_Item;后一项LDA FC_Gamepad_Merge.IF FC_DOUBLE_PLAYERSAND #GAMEPAD_DOWN.ELSEAND #GAMEPAD_SELECT | GAMEPAD_DOWN.ENDIFBEQ Select_Item_Proc.EndJSR Play_Music_For_Item_ChangeJSR Switch_To_Next_ItemSelect_Item_Proc.EndRTS;==================================================
;功能状态处理
Function_State_ProcLDX #$01
.Start.Enable;启用功能.IF FC_DOUBLE_PLAYERSLDA FC_Gamepad_Once,X.ELSELDA FC_Gamepad_Merge.ENDIFCMP #GAMEPAD_BBNE .DisableJSR Play_Music_For_Function_EnableJSR Function_State_EnableJSR Function_State_ShowJSR VBlank_Text_Enable.Disable;禁用功能.IF FC_DOUBLE_PLAYERSLDA FC_Gamepad_Once,X.ELSELDA FC_Gamepad_Merge.ENDIFCMP #GAMEPAD_ABNE .Flip JSR Play_Music_For_Function_DisableJSR Function_State_DisableJSR Function_State_ShowJSR VBlank_Text_Enable.Flip;翻转功能状态.IF FC_DOUBLE_PLAYERSLDA FC_Gamepad_Once,XCMP #GAMEPAD_SELECTBNE .Next JSR Play_Music_For_Function_FlipJSR Function_State_FlipJSR Function_State_ShowJSR VBlank_Text_Enable.ENDIF.NextDEXBPL .StartFunction_State_Proc.EndRTS;==============================
;可视化功能初始化
Visible_InitLDA #$00STA PPU_CTRL;清空栈数据TSXLDA #$00.Init_Stack;初始化栈STA $0100,XDEXBNE .Init_StackSTA $0100,XMACRO_PRG_RAM_ENABLE;启用 PRG RAM.Init_PRG_RAM;初始化PRG RAM LDA #$60STA $01LDA #$00STA $00TAYLDX #$20
.Write_Data;写入数据STA ($00),YINYBNE .Write_DataINC $01DEXBNE .Write_DataLDX #$02
.Wait_For_VBlank;等待VBlankLDA PPU_STATUSBPL .Wait_For_VBlankDEXBNE .Wait_For_VBlankLDA Rom_Ppu_CtrlSTA PPU_CTRLRTS.INCLUDE "[FC][BestVisible][Static].asm".INCLUDE "[FC][BestVisible][Game].asm"

[FC][BestVisible][Game].asm

;==================================================
INIT_VISIBLE_MEM            =   1;启用初始化程序
INSTRUCTION_OPTIMIZATION    =   1;指令优化;==================================================
;暂停时按开始键中转BANK_ORG PRG_BANK_C000, $D30CJSR VisibleMenuNOP;==================================================
;重启时初始化内存BANK_ORG PRG_BANK_E000, $F1FA.IF INIT_VISIBLE_MEMJSR Init_Function_Mem.ENDIF;==================================================
;NMI中断中转BANK_ORG PRG_BANK_E000, Rom_Nmi_AddrJMP NmiProgram;==================================================
;时间不减BANK_ORG PRG_BANK_E000, $EABFJSR Function_Lock_Time;==================================================
;血量不减BANK_ORG $02, $803EJSR Function_Lock_Blood;==================================================
;功能实现跳转BANK_ORG $02, $9D1FJSR Function_Implement;==================================================
;故事模式可选全角色
Story_Mode_Select_All_RoleBANK_ORG $06, $8112.DB $F0, $07BANK_ORG $06, $81E7LDY #$01NOP;==================================================
;全角色最终boss处理BANK_ORG PRG_BANK_E000, $E24AJMP All_Role_Final_Boss_Process;==================================================
;可视化处理入口BANK_ORG PRG_BANK_E000, $EF61
VisibleMenuLDA Rom_Pause_AddrBEQ VisibleMenu.EndPHPSEIJSR Switch_Main_Bank   ;切换到可视化程序 bankJSR VisibleProcess     ;可视化处理JSR $F65FPLP
VisibleMenu.EndMACRO_ROM_VISIBLE_RETURNRTS;--------------------------------------------------
;初始化 可视化 所需内存
Init_Function_Mem.IF INIT_VISIBLE_MEMJSR Switch_Main_Bank   ;切换到可视化程序 bankJSR Visible_Init       ;可视化初始化.IF INSTRUCTION_OPTIMIZATIONJMP $F2C6.ELSEJSR $F2C6RTS.ENDIF.ENDIF;--------------------------------------------------
;选择音乐
Music_SelectJSR $F690JMP Switch_Main_Bank;--------------------------------------------------
;播放音乐
Music_PlayJSR $F659				;切换音乐Bank;--------------------------------------------------
;切换到主程序
Switch_Main_BankLDA #$06STA $8000LDA #PROGRAM_BANK | $30STA $8001RTS;==================================================
;NMI中断处理
NmiProgram;读取清除Vblank标志, 防止重复进入LDA PPU_STATUS;检查是否为菜单NMILDA Rom_Ppu_MaskCMP #MENU_MODE_FLAGBEQ .Visible_NMI;宿主 ROM NMI处理JMP Rom_Nmi_Proc_Beg;菜单NMI处理
.Visible_NMIJMP NMI_Process;全角色最终boss处理
All_Role_Final_Boss_ProcessLDA <$A3CMP #$07BCC All_Role_Final_Boss_Process.EndLDA #$06STA <$A3STA <$9E
All_Role_Final_Boss_Process.EndJMP $DC25;--------------------------------------------------
;时间不减
Function_Lock_TimeLDA $6012AND #$01BNE Function_Lock_Time.EndDEC $0674
Function_Lock_Time.EndRTS;--------------------------------------------------
;血量不减
Function_Lock_BloodLDA $6010,XAND #$01BNE Function_Lock_Blood.EndDEC $0590,X
Function_Lock_Blood.EndRTS;==================================================BANK_ORG PRG_BANK_E000, $FF00
;功能实现
Function_Implement;杀死玩家
Function_Kill_Player;奖励关卡检测LDA $95CMP #$19BNE Function_Kill_Player_1LDA $6012AND #$06 ^ $FFSTA $6012
Function_Kill_Player_1LDA $6012AND #$02BEQ Function_Kill_Player_2LDA $6012AND #$02 ^ $FFSTA $6012LDA #$00STA $0520STA $0521LDA #$04STA $0530
Function_Kill_Player_2LDA $6012AND #$04BEQ Function_Kill_Player.EndLDA $6012AND #$04 ^ $FFSTA $6012LDA #$00STA $0520STA $0521LDA #$04STA $0531
Function_Kill_Player.End;--------------------------------------------------
;快捷技能
Function_Skill_FastLDA $6010,XAND #$02BEQ Function_Skill_Fast.EndLDA $0520,XBNE Function_Skill_Fast.EndLDA <$FA,XCMP #$60BNE Label_0LDA #$08STA $0520,XLDA #$00STA $04A0,X
Label_0LDA <$FA,XCMP #$A0BNE Label_1LDA #$08STA $0520,XLDA #$01STA $04A0,X
Label_1LDA <$FA,XCMP #$20BNE Function_Skill_Fast.EndLDA $0536CMP #$04BEQ Function_Skill_Fast.EndLDA $0600,XBEQ Function_Skill_Fast.EndLDA #$05STA $0520,X
Function_Skill_Fast.End;--------------------------------------------------
;拥有能量球
Power_BallLDA $6010,XAND #$04BEQ Power_Ball.EndLDA #$80STA $0600,X
Power_Ball.EndLDA $0600,XRTS

源码资源(使用VS code安装 ZG Assembler 插件编译)

FC忍者神龟格斗可视化修改源码资源-CSDN文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/578620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

143.【Nginx-02】

Nginx-02 (五)、Nginx负载均衡1.负载均衡概述2.负载均衡的原理及处理流程(1).负载均衡的作用 3.负载均衡常用的处理方式(1).用户手动选择(2).DNS轮询方式(3).四/七层负载均衡(4).Nginx七层负载均衡指令 ⭐(5).Nginx七层负载均衡的实现流程 ⭐ 4.负载均衡状态(1).down (停用)(2)…

小学班委有哪些职位

在成长的道路上&#xff0c;班委是一个不可或缺的角色。它不仅是一个职位&#xff0c;更是一份责任和担当。对于孩子们来说&#xff0c;成为班委不仅意味着荣誉&#xff0c;更意味着在集体中发挥自己的力量&#xff0c;为班级做贡献。 那么&#xff0c;小学班委有哪些职位呢&am…

配置Nginx出现403 (Forbidden)静态文件加载不出来

出现问题如图 出现此问题可能和索引文件缺失、访问限制等原因有关&#xff0c;在默认的Nginx的配置中&#xff0c;出现此问题的大概率问题可能出现在启动用户和nginx工作用户不一致所致。 Nginx的默认配置文件的 nginx.conf 里首行是 user www-data; 如果你是在 root 下启用…

基于JAVA实现的简易学生信息管理系统(附源码)

一、前言 最近在学习JAVA&#xff0c;这几天跟着网上的视频学完基础知识之后&#xff0c;做了一个学生信息管理系统&#xff0c;写的比较普通&#xff0c;没太大亮点&#xff0c;希望可以给初学者一些参考经验&#xff0c;另外&#xff0c;如有不恰当的地方还请各位指正&am…

浅谈智能型电动机保护器在也门化工行业的应用

1.背景信息Background 现代化工工业中&#xff0c;电动机作为一种拖动机械&#xff0c;成为所有动力机械基础&#xff0c;科学技术不断进步和工艺控制不断完善&#xff0c;尤其是自动化生产要求&#xff0c;迫切需要开发和完善电动机控制和保护设备&#xff0c;实现对生产过程…

卫星接收LNBs的专用电路

都具有FET偏置控制器电路的卫星接收器LNB电路 芯片的描述&#xff1a;D3211是一-块用于卫星接收LNBs的专用电路&#xff0c;具有极化电压检测切换、22KHz脉冲检测切换和提供高放、本振级GaAs或HEMT FET晶体管工作点偏置等功能。D321 1内部的22K检测及切换控制由22K有源滤波器、…

一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】

文章目录 前言发现宝藏第01节 Selenium概述第02节 安装浏览器驱动&#xff08;以Google为例&#xff09;第03节 定位页面元素1. 打开指定页面2. id 定位3. name 定位4. class 定位5. tag 定位6. xpath 定位7. css 选择器8. link 定位9. 示例 有道翻译 第04节 浏览器控制1. 修改…

重装系统后桌面图标没有了,“此电脑”怎么添加?

重装电脑系统对于使用电脑的用户来说是一种很常见的操作。但是有时在重装系统之后&#xff0c;我们会发现电脑桌面图标不见了&#xff0c;那么这时该怎么办呢&#xff1f;“此电脑”该怎么添加呢&#xff1f; 解决方法&#xff1a; 1.在桌面空白处单击鼠标右键&#xff0c;选择…

绝地反击,不做背锅侠!

那么作为运维人员&#xff0c;如何摆脱以上背黑锅的尴尬局面呢&#xff1f;堡垒机当然是破解此局面的绝杀大招。 1.统一登录入口 提供统一入口&#xff0c;集中管理和分配账户密码、所有运维人员只能登录堡垒机才能访问服务器&#xff0c;梳理“人与服务器”之间的关系&#…

C++设计模式 #7 工厂方法(Factory Method)

“对象创建”模式 通过“对象创建”模式绕开new&#xff0c;来避免对象创建&#xff08;new&#xff09;过程中所导致的紧耦合&#xff08;依赖具体类&#xff09;&#xff0c;从而支持创建的稳定。它是接口抽象之后的第一步工作。 动机 在软件系统中&#xff0c;经常面临着创…

全球市场拓展指南:出海企业品牌力觉醒与长期主义引领

近年来&#xff0c;随着全球化的深入推进&#xff0c;越来越多的企业纷纷踏上了出海之路&#xff0c;希望在国际市场中寻找新的增长点。然而&#xff0c;仅仅依靠产品和服务的优势已经不能满足出海企业在激烈的国际市场竞争中立于不败之地。在这个背景下&#xff0c;企业们慢慢…

英特尔A770显卡介绍与解读

基础介绍 英特尔A770显卡。这是英特尔推出的一款高性能显卡&#xff0c;属于他们的Arc系列。这个系列的显卡主要面向游戏玩家和专业内容创作者&#xff0c;提供高性能图形处理能力。 A770显卡配备了先进的特性&#xff0c;例如支持硬件级光线追踪、AI加速技术&#xff0c;以及…

【实用干货】通过PMP认证考试的心得分享

要知道&#xff0c;PMP备考考试只是暂时的&#xff0c;但通过获得PMP证书和能力将是持久的。 参加PMP认证考试的整个过程不仅让我获得了PMP培训结业证书和PMP认证证书&#xff0c;更重要的是让我学到了大量项目管理知识&#xff0c;为我提供了全新的思维模式。 一、备考期间需…

jquery Tab切换,CSS3制作发光字

jquery Tab切换&#xff0c;CSS3制作发光字 代码如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta ht…

Three.js起步案例(画线)

Three.js官网 <template><div id"webgl"></div> </template><script setup> import * as THREE from three; import { OrbitControls } from three/addons/controls/OrbitControls.js;const scene new THREE.Scene();// 画线 // 材…

springboot参数校验常用注解及分组校验

一、使用方式添加Validated 二、常见注解 Null 被注解的元素必须为null NotNull 被注解的元素必须不为null NotBlank 只能作用在接收的 String 类型上&#xff0c;注意是只能&#xff0c;不能为 null&#xff0c;而且调用 trim() 后&#xff0c;长度必须大于 0即&#xff…

2015年第四届数学建模国际赛小美赛C题科学能解决恐怖主义吗解题全过程文档及程序

2015年第四届数学建模国际赛小美赛 C题 科学能解决恐怖主义吗 原题再现&#xff1a; 为什么人们转向恐怖主义&#xff0c;特别是自杀性恐怖主义&#xff1f;主要原因是什么&#xff1f;这通常是大问题和小问题的结合&#xff0c;或者是一些人所说的“推拉”因素。更大的问题包…

【JavaScript】复制文本到剪切板

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

tvbox最新接口配置

TVBox是在Github的开源项目&#xff0c;本身是一个空壳软件&#xff0c;可免费使用及再开发。安装后需要配置接口才能正常使用。 TVBox&#xff0c;也被称为网络电视盒子&#xff0c;是一种可以连接到电视的设备&#xff0c;使电视具有智能电视的功能。TVBox的主要功能是通过网…

免费高清无水印视频素材在哪里下?

剪辑是一门创意工作&#xff0c;但很多初学者常常感到困惑&#xff0c;原因并不是因为他们不懂剪辑&#xff0c;而是因为他们不知道从哪里找到合适的素材。今天&#xff0c;我们将为大家盘点一些超全的剪辑素材资源&#xff0c;包括视频素材、音乐素材和图片素材等&#xff0c;…