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

2023-12-27 18:20

本文主要是介绍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文库

这篇关于FC忍者神龟格斗可视化hack源码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/543966

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

red5-server源码

red5-server源码:https://github.com/Red5/red5-server

TL-Tomcat中长连接的底层源码原理实现

长连接:浏览器告诉tomcat不要将请求关掉。  如果不是长连接,tomcat响应后会告诉浏览器把这个连接关掉。    tomcat中有一个缓冲区  如果发送大批量数据后 又不处理  那么会堆积缓冲区 后面的请求会越来越慢。