FC 可视化功能菜单主代码

news2024/9/24 23:30:40

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

[FC][BestVisible][Config].asm

;文件头配置
NES_16KB_PRG_SIZE           =   8
NES_8KB_CHR_SIZE            =   16
PRG_BANK_MASK               =   NES_16KB_PRG_SIZE * 2 - 1     ;bank号掩码
PRG_BANK_E000               =   NES_16KB_PRG_SIZE * 2 - 1
PRG_BANK_C000               =   NES_16KB_PRG_SIZE * 2 - 2

;文件头
;======================================================================
 .INESPRG NES_16KB_PRG_SIZE ;16KB PRG 数量
 .INESCHR NES_8KB_CHR_SIZE  ;8KB CHR 数量
 .INESMAP 4                 ;Mapper号
 .INESSUBMAP 0              ;子Mapper号
 .INESMIR 0                 ;命名表镜像 0: 水平 1: 垂直 2: 硬连线四屏
 .INESPRGRAM 7              ;PRG RAM 大小
 .INESPRGNVRAM 7            ;PRG NVRAM(非易失性)的大小。
 .INESCHRRAM 0              ;CHR RAM大小
 .INESCHRNVRAM 0            ;CHR NVRAM(非易失性)大小
 .INESBAT 0                 ;电池 和其他非易失性存储器 0: 无, 1: 存在
 .INESTIM 0                 ;CPU/PPU 时间 0: NTSC 1: PAL 2: 多区域 3: Dendy

;==================================================
FC_DOUBLE_PLAYERS           =   1       ;是否双人玩家
FC_CHAR_MODE                =   1       ;是否启用字符映射
FC_GAMEPAD_BURSTS           =   1       ;是否按键连发

;==================================================
FC_PAGE_SIZE                =   10      ;翻页属性
FC_ITEM_INTERVAL            =   2       ;条目显示间隔行数
FC_PAGE_BUF_SIZE            =   2       ;PPU单次写入缓冲项数
FC_PAGE_INIT_BUF_SIZE       =   4       ;PPU单次写入缓冲项数
FC_ITEM_SUM                 =   18 - 1  ;显示项最大索引属性
FC_PAGE_MAX                 =   FC_ITEM_SUM/FC_PAGE_SIZE*FC_PAGE_SIZE;最大页索引属性
FC_ITEM_POS                 =   $20C5   ;条目显示起始位置

;==================================================
FC_CHAR_MAX                 =   $5F
FC_CURSOR_TILE              =   $3E     ;光标图形号
FC_OFF_TILE                 =   $3C     ;关闭状态图案
FC_ON_TILE                  =   $3D     ;开启状态图案
FC_OFF_DOUBLE_TILE          =   $37     ;共享关闭状态图案
FC_ON_DOUBLE_TILE           =   $39     ;共享开启状态图案
FC_CURSOR_OFFSET_X          =   12      ;光标横坐标偏移像素值
FC_CURSOR_OFFSET_Y          =   1       ;光标纵坐标偏移像素值
FC_FUNCTION_OFFSET          =   21      ;状态图案横坐标偏移

;==================================================
Rom_Ppu_Ctrl                =   $FF     ;ROM 的 PPU 控制缓冲
Rom_Ppu_Mask                =   $FE     ;ROM 的 PPU 控制缓冲
Rom_Gamepad_Once            =   $F5     ;ROM 的 单次按键 地址
Rom_Gamepad_Keep            =   $F9     ;ROM 的 长按按键 地址
Rom_Pause_Addr              =   $25     ;ROM 的 暂停 地址
Rom_Pause_Val               =   $01     ;ROM 的 暂停 值
Rom_Pal_Addr                =   $07C0   ;ROM 的 调色板 值
Rom_Sprites_Buf             =   $0200   ;精灵缓冲地址
Stack_Bak_Addr              =   $6000   ;栈备份位置
Zero_Page_Bak_Addr          =   $6200   ;零页占用备份位置
PPU_Used_Bak_Addr           =   $6300   ;PPU缓冲占用备份位置
PPU_Name_Table_Bak_Addr     =   $6400   ;命名表备份位置
FC_Stack_Last               =   $6004   ;记录栈指针位置
FC_Page_Index_Last          =   $6002   ;记录上次页面索引
FC_Item_Index_Last          =   $6003   ;记录上次选项索引
FC_PPU_Buffer               =   $0300   ;PPU缓冲地址
;==================================================
;主程序配置
PROGRAM_BANK                =   $0A
PROGRAM_ADDR                =   $9000

;==================================================
;可视化返回处理
MACRO_ROM_VISIBLE_RETURN .MACRO
 LDA <Rom_Gamepad_Once
 AND #GAMEPAD_START
 .ENDM

;==================================================
;启用电池备份
MACRO_PRG_RAM_ENABLE .MACRO
 LDA #$80
 STA $A001
 .ENDM

;==================================================
;等待音乐停止处理
MACRO_ROM_WAIT_SOUND_STOP .MACRO
.Wait:
 JSR Wait_For_VBlank
 JSR Music_Play
 LDA $010A
 CMP #$74
 BEQ .Wait
 .ENDM

;==================================================
;零页内存地址配置
Use_Ram_Begin               =   Rom_Pause_Addr + 1
 .RSSET Use_Ram_Begin

FC_PPU_Buf_Pos              .RS 1       ;PPU 缓冲写入位置
FC_PPU_Status               .RS 1       ;PPU 显示状态
FC_Data_L                   .RS 1
FC_Data_H                   .RS 1
FC_Data_Tmp                 .RS 1
FC_Data_Cnt                 .RS 1       ;PPU 缓冲计写入数器

;==================================================
;选择项地址配置
FC_Select_Index             .RS 1       ;当前选项索引
FC_Select_Temp              .RS 1       ;临时索引

;==================================================
;光标配置
FC_Cursor_Addr_L            .RS 1       ;光标地址低位
FC_Cursor_Addr_H            .RS 1       ;光标地址高位
FC_Cursor_X                 .RS 1       ;光标横坐标
FC_Cursor_Y                 .RS 1       ;光标纵坐标

;==================================================
;翻页配置
FC_Page_Old                 .RS 1       ;旧的页起始索引
FC_Page_Cur                 .RS 1       ;当前页起始索引
FC_Page_Item_Count          .RS 1       ;页条目计数
FC_Page_Item_Buffer         .RS 1       ;页号缓存
FC_Page_Update_Max          .RS 1       ;条目缓冲阈值

;==================================================
;按键配置
FC_Gamepad_Keep             .RS 2       ;长按状态
FC_Gamepad_Once             .RS 2       ;单次按下
FC_Gamepad_Temp             .RS 2       ;按键缓冲
FC_Gamepad_Buf              .RS 2       ;按键缓冲
FC_Gamepad_Status           .RS 2       ;按键读取状态
FC_Gamepad_Merge            .RS 1       ;单次按下合并
FC_Gamepad_Bursts_Delay     .RS 1       ;按键连发延迟
FC_Time_Delay               .RS 1       ;延迟计时器
Use_Ram_End                 .RS 1       ;占用RAM地址
USE_RAM_SIZE                = Use_Ram_End - Use_Ram_Begin

;==================================================
;按键键值常量
GAMEPAD_BURSTS_DELAY        =   $20     ;连发延迟触发值
GAMEPAD_BURSTS_SPEED        =   $08     ;连发触发后速度
GAMEPAD_UP                  =   $08     ;上
GAMEPAD_DOWN                =   $04     ;下
GAMEPAD_LEFT                =   $02     ;左
GAMEPAD_RIGHT               =   $01     ;右
GAMEPAD_SELECT              =   $20     ;选择
GAMEPAD_START               =   $10     ;开始
GAMEPAD_B                   =   $40     ;B
GAMEPAD_A                   =   $80     ;A

;==================================================
;NES端口常量
PPU_CTRL                    =   $2000   ;PPU控制寄存器
PPU_MASK                    =   $2001   ;PPU掩码寄存器
PPU_STATUS                  =   $2002   ;PPU状态寄存器:读取后PPU_SCROLL和PPU_ADDRESS被复位,下一个写到PPU_SCROLL的数据是水平的,写到PPU_ADDRESS的数据是高位
PPU_OAM_ADDR                =   $2003   ;精灵RAM地址:用来设置通过PPU_OAM_DATA访问的256字节精灵RAM地址。每次访问PPU_OAM_DATA后该地址增加1
PPU_OAM_DATA                =   $2004   ;精灵RAM数据:用来读/写精灵内存。地址通过PPU_OAM_ADDR来设置,每次访问后地址增加1
PPU_SCROLL                  =   $2005   ;屏幕滚动偏移:第一个写的值会进入垂直滚动寄存器(若>239,被忽略)。第二个值出现在水平滚动寄存器 
PPU_ADDRESS                 =   $2006   ;VRAM地址:设置PPU_DATA访问的VRAM地址。第一个写地址的高6位。第二个写低8位。每次访问PPU_DATA后地址增加
PPU_DATA                    =   $2007   ;VRAM数据:用来访问VRAM数据,通过PPU_ADDRESS设置的地址在每次访问之后会增加1或32 
OAM_DMA                     =   $4014   ;DMA访问精灵RAM:通过写一个值xx到这个端口,引起CPU内存地址为$xx00-$xxFF的区域传送到精灵内存
APU_STATUS                  =   $4015   ;声音通道切换
JOY1_FRAME                  =   $4016   ;手柄1 + 选通
JOY2_FRAME                  =   $4017   ;手柄2 + 选通

[FC][BestVisible][Main].asm

;[FC][BestVisible]
;FlameCyclone
;20231207

 .INCLUDE "[FC][BestVisible][Config].asm"
 .INCLUDE "[FC][BestVisible][Data].asm"

;==================================================
;程序开始地址
 .BANK PROGRAM_BANK & PRG_BANK_MASK
 .ORG PROGRAM_ADDR

;==================================================
;程序入口
VisibleProcess
 ;非暂停状态直接结束
 LDA <Rom_Pause_Addr
 AND #Rom_Pause_Val
 BEQ .VisibleProcess_End

 ;未按下选择键直接结束
 LDA <Rom_Gamepad_Once
 CMP #GAMEPAD_SELECT
 BNE .VisibleProcess_End
 PHA
 TXA
 PHA
 TYA
 PHA

 MACRO_PRG_RAM_ENABLE;启用 PRG RAM

 ;禁用NMI中断
 LDA <Rom_Ppu_Ctrl
 AND #$7F
 STA PPU_CTRL
 
 ;备份栈, 防止栈深度过大导致异常
 TSX
 STX FC_Stack_Last
.Back_Stack
 LDA $0100,X
 STA Stack_Bak_Addr,X
 INX
 BNE .Back_Stack
 LDX #$FF
 TXS
 
 JSR Wait_Sound_Stop;等待音乐结束
 JSR Backup_Data;备份数据
 
 ;备份占用的几个地址
 LDA <FC_PPU_Status
 PHA

 ;载入上次的页起始索引与功能选项索引
 LDA FC_Page_Index_Last
 STA <FC_Page_Cur
 LDA FC_Item_Index_Last
 STA <FC_Select_Index
 
 JSR Program_Begin;可视化菜单开始
 
 ;记录本次的页起始索引与功能选项索引
 LDA <FC_Select_Index
 STA FC_Item_Index_Last
 LDA <FC_Page_Cur
 STA FC_Page_Index_Last
 
 JSR Recovery_Data;恢复数据

 ;恢复占用的几个地址
 PLA
 STA <FC_PPU_Status

 ;恢复栈
 LDX FC_Stack_Last
.Recovery_Stack
 LDA Stack_Bak_Addr,X
 STA $0100,X
 INX
 BNE .Recovery_Stack
 LDX FC_Stack_Last
 TXS
 
 ;防止触发开始键
 LDA #GAMEPAD_START
 STA <Rom_Gamepad_Keep
 LDA #$00
 STA <Rom_Gamepad_Once

 ;恢复屏幕显示控制
 LDA <Rom_Ppu_Ctrl
 STA PPU_CTRL

 PLA
 TAY
 PLA
 TAX
 PLA

.VisibleProcess_End
 MACRO_ROM_VISIBLE_RETURN
 RTS

;==================================================
;等待音乐结束
Wait_Sound_Stop
 MACRO_ROM_WAIT_SOUND_STOP
 RTS

;==================================================
;备份数据
Backup_Data
 JSR Disable_Nmi_And_Wait_For_VBlank;等待VBlank
 JSR Clear_PPU_Palette;(调色板清理)331周期
 JSR Backup_Zero_Page_RAM;备份零页内存(3597周期)
 JSR Backup_PPU_Buf_Used;备份PPU缓冲占用内存(3597周期)
 JSR Init_Zero_Page_RAM;初始化零页占用内存(289周期)
 JSR Backup_PPU_2000_23FF;备份命名表(15465周期)
 JSR Init_OAM_RAM;初始化精灵内存(2323周期)
 JSR Clear_PPU_2000_23FF;清空命名表(9275周期)
 RTS

;==================================================
;恢复数据
Recovery_Data
 JSR Disable_Nmi_And_Wait_For_VBlank;等待VBlank
 JSR Recovery_PPU_Palette;恢复调色板(521周期)
 JSR Recovery_PPU_2000_23FF;恢复命名表(14440周期)
 JSR Recovery_PPU_Buf_Used;恢复PPU缓冲占用内存(3597周期)
 JSR Recovery_Zero_Page_RAM;恢复零页备份(3341周期)
 RTS

;==================================================
;禁用NMI并且等待VBlank
Disable_Nmi_And_Wait_For_VBlank
 LDA #$00
 STA PPU_CTRL
 STA PPU_MASK
 STA <FC_PPU_Status
;==================================================
;等待VBlank中断
Wait_For_VBlank
 LDA PPU_STATUS
 BPL Wait_For_VBlank
 ;LDA <FC_Time_Delay
 ;BEQ .End
 ;DEC <FC_Time_Delay
.End
 RTS

;==================================================
;清空命名表
Clear_PPU_2000_23FF
 JSR Set_PPU_Name_Table_Addr
 LDX #$00
 LDY #$04
 TXA
.Write
 STA PPU_DATA
 DEX
 BNE .Write
 DEY
 BNE .Write
 RTS

;==================================================
;设置PPU命名表地址
Set_PPU_Name_Table_Addr
 ;LDA PPU_STATUS
 LDA #$20
 STA PPU_ADDRESS
 LDA #$00
 STA PPU_ADDRESS
 RTS

;==================================================
;设置PPU调色板地址
Set_PPU_Palette_Addr
 ;LDA PPU_STATUS
 LDA #$3F
 STA PPU_ADDRESS
 LDA #$00
 STA PPU_ADDRESS
 RTS

;==================================================
Get_Name_Table_Bak_Addr_And_Size
 LDA #LOW(PPU_Name_Table_Bak_Addr)
 STA <FC_Data_L
 LDA #HIGH(PPU_Name_Table_Bak_Addr)
 STA <FC_Data_H
 LDY #$00
 LDX #$04
 RTS

;==================================================
;备份PPU命名表
Backup_PPU_2000_23FF
 JSR Set_PPU_Name_Table_Addr
 JSR Get_Name_Table_Bak_Addr_And_Size
 LDA PPU_DATA
.Write
 LDA PPU_DATA
 STA [FC_Data_L],Y
 INY
 BNE .Write
 INC <FC_Data_H
 DEX
 BNE .Write
 RTS

;==================================================
;恢复PPU命名表
Recovery_PPU_2000_23FF
 JSR Set_PPU_Name_Table_Addr
 JSR Get_Name_Table_Bak_Addr_And_Size
.Write
 LDA [FC_Data_L],Y
 STA PPU_DATA
 INY
 BNE .Write
 INC <FC_Data_H
 DEX
 BNE .Write
 RTS

;==================================================
;备份零页占用RAM
Backup_Zero_Page_RAM
 LDX #$00
.Write
 LDA <$00,X
 STA Zero_Page_Bak_Addr,X
 INX
 BNE .Write
 RTS

;==================================================
;恢复零页占用RAM
Recovery_Zero_Page_RAM
 LDX #$00
.Write
 LDA Zero_Page_Bak_Addr,X
 STA <$00,X
 INX
 BNE .Write
 RTS

;==================================================
;初始化零页占用RAM
Init_Zero_Page_RAM
 LDX #USE_RAM_SIZE - 1
 LDA #$00
.Write
 STA <Use_Ram_Begin,X
 DEX
 BNE .Write
 STA <Use_Ram_Begin,X
 RTS

;==================================================
;备份PPU缓冲占用
Backup_PPU_Buf_Used
 LDX #$00
.Write
 LDA FC_PPU_Buffer,X
 STA PPU_Used_Bak_Addr,X
 INX
 BNE .Write
 RTS

;==================================================
;恢复PPU缓冲占用
Recovery_PPU_Buf_Used
 LDX #$00
.Write
 LDA PPU_Used_Bak_Addr,X
 STA FC_PPU_Buffer,X
 INX
 BNE .Write
 RTS

;==================================================
;初始化精灵内存
Init_OAM_RAM
 LDX #$00
 STX PPU_OAM_ADDR
 LDA #$F8
.Write
 STA PPU_OAM_DATA
 INX
 BNE .Write
 RTS

;==================================================
;恢复调色板
Recovery_PPU_Palette
 JSR Set_PPU_Palette_Addr
 LDX #$00
.Write
 LDA Rom_Pal_Addr,X
 STA PPU_DATA
 INX
 CPX #$20
 BCC .Write
 RTS

;==================================================
;初始化调色板
Init_PPU_Palette
 JSR Set_PPU_Palette_Addr
 LDX #$00
.Write
 LDA Palette_Data,X
 STA PPU_DATA
 INX
 CPX #$20
 BCC .Write
 RTS

;==================================================
;清空调色板
Clear_PPU_Palette
 JSR Set_PPU_Palette_Addr
 LDX #$20
 LDA #$0F
.Write
 STA PPU_DATA
 DEX
 BNE .Write
 RTS

;==================================================
;设置CHR图形
Init_CHR_Bank
 LDX #$05
.Write
 STX $8000
 LDA CHR_Data,x
 STA $8001
 DEX
 BPL .Write
 RTS

 .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_Begin
 JSR Init_CHR_Bank;初始化图形Bank
 JSR Init_PPU_Palette;设置调色板

 ;设置页选项缓冲数量
 LDA #FC_PAGE_INIT_BUF_SIZE
 STA <FC_Page_Update_Max

 JSR Page_Text_Update;更新页选项内容

 ;开启显示
 LDA #$1E
 STA <FC_PPU_Status

 ;禁用触发选择键与开始键
 LDA #GAMEPAD_SELECT | GAMEPAD_START
 STA <FC_Gamepad_Buf

;==================================================
;循环等待(直到按下开始键)
Main_Loop
 JSR VBlank_Proc;VBlank处理
 JSR Gamepad_Process;按键处理
 
 .IF FC_GAMEPAD_BURSTS
 JSR Gamepad_Bursts;按键超时连发处理
 .ENDIF
 
 LDA <FC_Gamepad_Once
 .IF 0 = FC_DOUBLE_PLAYERS
 ORA <FC_Gamepad_Once + 1
 .ENDIF
 STA <FC_Gamepad_Merge
 
 JSR Select_Item_Proc;选择选项处理
 JSR Function_State_Proc;功能状态处理
 
 ;返回处理
 LDA <FC_Gamepad_Keep
 CMP <FC_Gamepad_Once
 BNE Main_Loop

 LDA <FC_Gamepad_Keep + 1
 CMP <FC_Gamepad_Once + 1
 BNE Main_Loop

 LDA <FC_Gamepad_Once
 ORA <FC_Gamepad_Once + 1
 CMP #GAMEPAD_START
 BNE Main_Loop
 RTS

;==================================================
;VBlank处理
VBlank_Proc
 LDA <FC_PPU_Status
 BEQ .End
 JSR Wait_For_VBlank
.End
 JSR FC_PPU_Process;PPU处理
 JSR Show_Select_Cursor;光标处理
 RTS

;==================================================
;选择选项处理
Select_Item_Proc

.Pre_Page;上一页
 LDA <FC_Gamepad_Merge
 AND #GAMEPAD_LEFT
 BEQ .Next_Page
 JSR Switch_To_Pre_Page

.Next_Page;下一页
 LDA <FC_Gamepad_Merge
 AND #GAMEPAD_RIGHT
 BEQ .Pre_Item
 JSR Switch_To_Next_Page

.Pre_Item;前一项
 LDA <FC_Gamepad_Merge
 AND #GAMEPAD_UP
 BEQ .Next_Item
 JSR Switch_To_Pre_Item

.Next_Item;后一项
 LDA <FC_Gamepad_Merge
 
 .IF FC_DOUBLE_PLAYERS
 AND #GAMEPAD_DOWN
 .ELSE
 AND #GAMEPAD_SELECT | GAMEPAD_DOWN
 .ENDIF
 BEQ .End
 
 JSR Switch_To_Next_Item

.End
 RTS

;==================================================
;功能状态处理
Function_State_Proc
 LDX #$01
.Start

.Enable;启用功能
 .IF FC_DOUBLE_PLAYERS
 LDA <FC_Gamepad_Once,X
 .ELSE
 LDA <FC_Gamepad_Merge
 .ENDIF
 CMP #GAMEPAD_B
 BNE .Disable
 JSR Function_State_Enable
 JSR Function_State_Show
 
.Disable;禁用功能
 .IF FC_DOUBLE_PLAYERS
 LDA <FC_Gamepad_Once,X
 .ELSE
 LDA <FC_Gamepad_Merge
 .ENDIF
 CMP #GAMEPAD_A
 BNE .Flip 
 JSR Function_State_Disable
 JSR Function_State_Show
 
.Flip;翻转功能状态
 .IF FC_DOUBLE_PLAYERS
 LDA <FC_Gamepad_Once,X
 CMP #GAMEPAD_SELECT
 BNE .Next 
 JSR Function_State_Flip
 JSR Function_State_Show
 .ENDIF

.Next
 DEX
 BPL .Start

.End
 RTS

;==============================
;可视化功能初始化
Visible_Init
 LDA #$00
 STA PPU_CTRL

 ;清空栈数据
 TSX
 LDA #$00

.Init_Stack;初始化栈
 STA $0100,X
 DEX
 BNE .Init_Stack
 STA $0100,X

 MACRO_PRG_RAM_ENABLE;启用 PRG RAM

.Init_PRG_RAM;初始化PRG RAM 
 LDA #$60
 STA <$01
 LDA #$00
 STA <$00
 TAY
 LDX #$20
.Write_Data;写入数据
 STA [$00],Y
 INY
 BNE .Write_Data
 INC <$01
 DEX
 BNE .Write_Data

 LDX #$02
.Wait_For_VBlank;等待VBlank
 LDA PPU_STATUS
 BPL .Wait_For_VBlank
 DEX
 BNE .Wait_For_VBlank

 LDA <Rom_Ppu_Ctrl
 STA PPU_CTRL

 RTS

 .INCLUDE "[FC][BestVisible][Static].asm"
 .INCLUDE "[FC][BestVisible][Game].asm"


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

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

相关文章

《Kotlin核心编程》笔记:集合、序列与内联函数

集合的高阶函数API map 操作 val list listOf(1, 2, 3, 4, 5, 6) val newList list.map { it * 2 }当然&#xff0c;在 Java 8 中&#xff0c;现在也能像Kotlin那样去操作集合了。 上面的方法实际上就是一个高阶函数&#xff0c;它接收的参数实际上就是一个函数&#xff0…

sourcetree使用详解

介绍 SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端管理工具&#xff0c;同时也是Mn版本控制系统工具。支持创建、克隆、提交、push、pull 和合并等操作。——百度百科 是一款比较好用的图形化GUI的git、hg管理工具。还有一些其他的可视化代码管理工具&#x…

【webstrom】【idea】修改git历史提交记录

webstrom修改git历史提交记录 历史记录中有3条提交记录 此时2中的提交记录需要更新&#xff0c;我们可以在2中右击&#xff0c;选择“从这里执行交互式变基” 在弹框中选择需要修改提交记录2右击&#xff0c;然后选择“停止以编辑” 启动变基 更改2中内容 提交对2的更改 …

美国 AGU 发布 AI 应用手册,明确 6 大指导方针

爆发性的 AI 应用&#xff1a;风险与机遇并存 在空间和环境科学领域&#xff0c;AI 工具的应用越来越广泛——诸如天气预报和气候模拟&#xff0c;能源及水资源管理等等。可以说&#xff0c;我们正在经历前所未有的 AI 应用爆发&#xff0c;面对其中的机遇与风险&#xff0c;更…

《PySpark大数据分析实战》-11.Spark on YARN模式安装Hadoop

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

Power BI - 5分钟学习增加索引列

每天5分钟&#xff0c;今天介绍Power BI增加索引列。 什么是增加索引列&#xff1f; 增加索引列就是向表中添加一个具有显式位置值的新列&#xff0c;一般从0或者从1开始。 举例&#xff1a; 首先&#xff0c;导入一张【Sales】样例表(Excel数据源导入请参考每天5分钟第一天)…

目前最火的大模型训练框架 DeepSpeed 详解来了

目前&#xff0c;大模型的发展已经非常火热&#xff0c;关于大模型的训练、微调也是各个公司重点关注方向&#xff0c;但是大模型训练的痛点是模型参数过大&#xff0c;动辄上百亿&#xff0c;如果单靠单个GPU来完成训练基本不可能。所以需要多卡或者分布式训练来完成这项工作。…

Android 移动端编译 cityhash动态库

最近做项目&#xff0c; 硬件端 需要 用 cityhash 编译一个 动态库 提供给移动端使用&#xff0c;l 记录一下 编译过程 city .cpp // // Created by Administrator on 2023/12/12. // // Copyright (c) 2011 Google, Inc. // // Permission is hereby granted, free of charg…

Win11黑屏死机怎么办?

Win11黑屏死机是一个令人烦恼的问题&#xff0c;特别是对于那些计算机知识并不充裕的人来说。那么Win11死机黑屏怎么办呢&#xff1f;下面我们就来了解一下。 方案一&#xff1a;卸下外部硬盘驱动器 有些时候&#xff0c;电脑的外部硬件可能会导致电脑黑屏问题。在这种情况下&…

【️Java和C++主要的区别有哪些?各有哪些优缺点?】

✅Java和C主要的区别有哪些&#xff1f;各有哪些优缺点&#xff1f; ✅Java和C分别代表两种类型的语言✅ C是编译型语言✅ Java是解释型语言✅ 两者更多的主要区别如下&#xff1a; ✅知识拓展✅Java与C的参数方法有什么区别&#xff1f; ✅Java和C分别代表两种类型的语言 Java…

生成小程序URLlink链接遇到的坑

这里写自定义目录标题 前端生成小程序URL link背景用户打开小程序的常用方法短链接短链接优缺点优点缺点 生成短链接步骤 可能会遇到的问题&#xff1a;其他 注意&#x1f4e2; 前端生成小程序URL link ![h5打开小程序](https://img-blog.csdnimg.cn/direct/a4cfe3ef6d184c6d9…

打造微信私域有什么优势?

随着线上竞争愈发激烈&#xff0c;获客成本逐步攀升&#xff0c;越来越多的企业都开始打造属于自己的私域流量池。而作为目前全球拥有超过10亿活跃用户的平台&#xff0c;微信无疑是构建私域的理想选择。那么使用微信来打造私域流量有哪些优势呢? 打造微信私域的优势包括但不…

【Docker六】Docker-consul

目录 一、docker-consul概述 1、服务注册和发现&#xff1a; 1.1、服务注册和发现概念 1.2、服务注册和发现工作机制&#xff1a; 1.3、服务注册与发现的优点&#xff1a; 2、docker-consul概念 2.1、consul的主要特点&#xff1a; 二、consul架构部署&#xff1a; 1、…

VS Code连接远程Linux服务器调试MPI程序

1.在 VS Code 上安装扩展 C/C 2.通过 VS Code 连接远程 Linux 服务器 3.通过 VS Code 在远程 Linux 服务器上安装扩展 C/C 4.打开远程 Linux 服务器上的文件夹 【注】本文以 /root/ 为例。 5.创建项目文件夹&#xff0c;并在项目文件夹下创建MPI程序 6.点击左侧菜单栏的…

Docker构建镜像时空间不足:/var/lib/docker,no space left on device

背景 在一次更新业务服务功能后&#xff0c;重新在服务器上构建微服务镜像&#xff0c;在构建镜像时报错空间不足&#xff1a; /var/lib/docker, no space left on device 赶紧用 df -h 看了下磁盘使用情况&#xff0c;果然&#xff0c; devicemapper 已经满了。。由于需要紧急…

PyQt6 QToolBar工具栏控件

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计44条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…

数据库 02-03 补充 SQL的子查询(where,from),子查询作为集合来比较some,exists,all(某一个,存在,所有)

子查询&#xff1a; where字句的子查询&#xff1a; 通常用in关键字&#xff1a; 举个例子&#xff1a; in关键字&#xff1a; not in 关键字&#xff1a; in 也可以用于枚举集合&#xff1a; where中可以用子查询来作为集合来筛选元祖。 some&#xff0c;all的运算符号…

【JavaScript】闭包的理解

闭包是指在一个函数内部创建另一个函数&#xff0c;并且内部函数可以访问外部函数的变量、参数以及其他内部函数&#xff0c;即使外部函数已经执行完毕。这种机制使得内部函数保留了对外部作用域的引用&#xff0c;即使外部作用域已经不再活跃。 为什么闭包重要&#xff1f; 闭…

Unity | Shader基础知识(第六集:语法<如何加入外部颜色资源>)

目录 一、本节介绍 1 上集回顾 2 本节介绍 二、语法结构 1 复习 2 理论知识 3 Shader里声明的写法 4 Properties和SubShader毕竟不是一家人 三、 片元着色器中使用资源 四、代码实现 五、全部代码 六、下集介绍 相关阅读 Unity - Manual: Writing Surface Shaders…

ES-模糊查询

模糊查询 1 wildcard 准备数据 POST demolike/_bulk {"index": {"_id": "1"} } {"text": "草莓熊是个大坏蛋" } {"index": {"_id": "2"} } {"text": "wolf 也是一个坏蛋&q…