📄 mips_stub.s
字号:
load_u16_unaligned (iwram + 0x8000)execute_load_io_u16u: translate_region_align 4, 1, 1, patch_load_u16, io_registers, 0x3FE load_u16_unaligned io_registersexecute_load_palette_u16u: translate_region_align 5, 1, 1, patch_load_u16, palette_ram, 0x3FE load_u16_unaligned palette_ramexecute_load_vram_u16u: translate_region_vram_load_align16 1, 1, patch_load_u16 load_u16_unaligned vramexecute_load_oam_u16u: translate_region_align 7, 1, 1, patch_load_u16, oam_ram, 0x3FE load_u16_unaligned oam_ramexecute_load_gamepak8_u16u: translate_region_gamepak_align16 8, 1, 1, patch_load_u16 load_u16_unaligned 0execute_load_gamepak9_u16u: translate_region_gamepak_align16 9, 1, 1, patch_load_u16 load_u16_unaligned 0execute_load_gamepakA_u16u: translate_region_gamepak_align16 10, 1, 1, patch_load_u16 load_u16_unaligned 0execute_load_gamepakB_u16u: translate_region_gamepak_align16 11, 1, 1, patch_load_u16 load_u16_unaligned 0execute_load_gamepakC_u16u: translate_region_gamepak_align16 12, 1, 1, patch_load_u16 load_u16_unaligned 0execute_load_eeprom_u16u: eeprom_load_align16 1, 1, patch_load_u16execute_load_backup_u16u: backup_load_align16 1, 1, patch_load_u16 ror $2, $2, 8 # rotate value by 8bitsexecute_load_open_u16u: open_load16_align16 1, 1, patch_load_u16 ror $2, $2, 8 # rotate value by 8bitsload_u16_ftable: .long execute_load_bios_u16 # 0x00 BIOS .long execute_load_open_u16 # 0x01 open address .long execute_load_ewram_u16 # 0x02 EWRAM .long execute_load_iwram_u16 # 0x03 IWRAM .long execute_load_io_u16 # 0x04 I/O registers .long execute_load_palette_u16 # 0x05 Palette RAM .long execute_load_vram_u16 # 0x06 VRAM .long execute_load_oam_u16 # 0x07 OAM RAM .long execute_load_gamepak8_u16 # 0x08 gamepak .long execute_load_gamepak9_u16 # 0x09 gamepak .long execute_load_gamepakA_u16 # 0x0A gamepak .long execute_load_gamepakB_u16 # 0x0B gamepak .long execute_load_gamepakC_u16 # 0x0C gamepak .long execute_load_eeprom_u16 # 0x0D gamepak/eeprom .long execute_load_backup_u16 # 0x0E Flash ROM/SRAM .long execute_load_open_u16 # 0x0F open .long execute_load_bios_u16u # 0x00 BIOS unaligned .long execute_load_open_u16u # 0x01 open address unaligned .long execute_load_ewram_u16u # 0x02 EWRAM unaligned .long execute_load_iwram_u16u # 0x03 IWRAM unaligned .long execute_load_io_u16u # 0x04 I/O registers unaligned .long execute_load_palette_u16u # 0x05 Palette RAM unaligned .long execute_load_vram_u16u # 0x06 VRAM unaligned .long execute_load_oam_u16u # 0x07 OAM RAM unaligned .long execute_load_gamepak8_u16u# 0x08 gamepak unaligned .long execute_load_gamepak9_u16u# 0x09 gamepak unaligned .long execute_load_gamepakA_u16u# 0x0A gamepak unaligned .long execute_load_gamepakB_u16u# 0x0B gamepak unaligned .long execute_load_gamepakC_u16u# 0x0C gamepak unaligned .long execute_load_eeprom_u16u # 0x0D gamepak/eeprom unaligned .long execute_load_backup_u16u # 0x0E Flash ROM/SRAM unaligned .long execute_load_open_u16u # 0x0F open unalignedpatch_load_u16: patch_handler_align load_u16_ftable, 1# Signed aligned 16bit load handlersexecute_load_bios_s16: region_check_align 0, 1, 0, patch_load_s16 srl $2, $5, 14 # check if PC is in BIOS region bne $2, $0, 1f # if not, perform BIOS protected read lui $1, %hi(bios_rom) # generate upper address (delay) andi $4, $4, 0x3FFF # generate offset addu $2, $1, $4 load_s16 bios_rom1: lui $2, %hi(bios_read_protect) # generate upper address ins $2, $1, 0, 2 # bit 1 contributes load_s16 bios_read_protectexecute_load_ewram_s16: translate_region_ewram_load_align 1, 0, patch_load_s16 load_s16 (ewram + 0x8000)execute_load_s16:execute_load_iwram_s16: translate_region_align 3, 1, 0, patch_load_s16, (iwram + 0x8000), 0x7FFF load_s16 (iwram + 0x8000)execute_load_io_s16: translate_region_align 4, 1, 0, patch_load_s16, io_registers, 0x3FF load_s16 io_registersexecute_load_palette_s16: translate_region_align 5, 1, 0, patch_load_s16, palette_ram, 0x3FF load_s16 palette_ramexecute_load_vram_s16: translate_region_vram_load_align 1, 0, patch_load_s16 load_s16 vramexecute_load_oam_s16: translate_region_align 7, 1, 0, patch_load_s16, oam_ram, 0x3FF load_s16 oam_ramexecute_load_gamepak8_s16: translate_region_gamepak_align 8, 1, 0, patch_load_s16 load_s16 0execute_load_gamepak9_s16: translate_region_gamepak_align 9, 1, 0, patch_load_s16 load_s16 0execute_load_gamepakA_s16: translate_region_gamepak_align 10, 1, 0, patch_load_s16 load_s16 0execute_load_gamepakB_s16: translate_region_gamepak_align 11, 1, 0, patch_load_s16 load_s16 0execute_load_gamepakC_s16: translate_region_gamepak_align 12, 1, 0, patch_load_s16 load_s16 0execute_load_eeprom_s16: eeprom_load_align 1, 0, patch_load_s16execute_load_backup_s16: backup_load_align 1, 0, patch_load_s16 nopexecute_load_open_s16: open_load16_align 1, 0, patch_load_s16 nop# Signed unaligned 16bit load handlersexecute_load_bios_s16u: region_check_align 0, 1, 1, patch_load_s16 srl $2, $5, 14 # check if PC is in BIOS region bne $2, $0, 1f # if not, perform BIOS protected read lui $1, %hi(bios_rom) # generate upper address (delay) andi $4, $4, 0x3FFE # generate offset addu $2, $1, $4 load_s16_unaligned bios_rom1: lui $2, %hi(bios_read_protect) # generate upper address ext $1, $4, 1, 1 ins $2, $1, 1, 1 # bit 1 contributes load_s16_unaligned bios_read_protectexecute_load_ewram_s16u: translate_region_ewram_load_align16 1, 1, patch_load_s16 load_s16_unaligned (ewram + 0x8000)execute_load_iwram_s16u: translate_region_align 3, 1, 1, patch_load_s16, (iwram + 0x8000), 0x7FFE load_s16_unaligned (iwram + 0x8000)execute_load_io_s16u: translate_region_align 4, 1, 1, patch_load_s16, io_registers, 0x3FE load_s16_unaligned io_registersexecute_load_palette_s16u: translate_region_align 5, 1, 1, patch_load_s16, palette_ram, 0x3FE load_s16_unaligned palette_ramexecute_load_vram_s16u: translate_region_vram_load_align16 1, 1, patch_load_s16 load_s16_unaligned vramexecute_load_oam_s16u: translate_region_align 7, 1, 1, patch_load_s16, oam_ram, 0x3FE load_s16_unaligned oam_ramexecute_load_gamepak8_s16u: translate_region_gamepak_align16 8, 1, 1, patch_load_s16 load_s16_unaligned 0execute_load_gamepak9_s16u: translate_region_gamepak_align16 9, 1, 1, patch_load_s16 load_s16_unaligned 0execute_load_gamepakA_s16u: translate_region_gamepak_align16 10, 1, 1, patch_load_s16 load_s16_unaligned 0execute_load_gamepakB_s16u: translate_region_gamepak_align16 11, 1, 1, patch_load_s16 load_s16_unaligned 0execute_load_gamepakC_s16u: translate_region_gamepak_align16 12, 1, 1, patch_load_s16 load_s16_unaligned 0execute_load_eeprom_s16u: eeprom_load_align 1, 1, patch_load_s16execute_load_backup_s16u: backup_load_align 1, 1, patch_load_s16 seb $2, $2 # sign extend result from 8bitsexecute_load_open_s16u: open_load16_align 1, 1, patch_load_s16 seb $2, $2 # sign extend result from 8bitsload_s16_ftable: .long execute_load_bios_s16 # 0x00 BIOS .long execute_load_open_s16 # 0x01 open address .long execute_load_ewram_s16 # 0x02 EWRAM .long execute_load_iwram_s16 # 0x03 IWRAM .long execute_load_io_s16 # 0x04 I/O registers .long execute_load_palette_s16 # 0x05 Palette RAM .long execute_load_vram_s16 # 0x06 VRAM .long execute_load_oam_s16 # 0x07 OAM RAM .long execute_load_gamepak8_s16 # 0x08 gamepak .long execute_load_gamepak9_s16 # 0x09 gamepak .long execute_load_gamepakA_s16 # 0x0A gamepak .long execute_load_gamepakB_s16 # 0x0B gamepak .long execute_load_gamepakC_s16 # 0x0C gamepak .long execute_load_eeprom_s16 # 0x0D gamepak/eeprom .long execute_load_backup_s16 # 0x0E Flash ROM/SRAM .long execute_load_open_s16 # 0x0F open unaligned .long execute_load_bios_s16u # 0x00 BIOS unaligned .long execute_load_open_s16u # 0x01 open address unaligned .long execute_load_ewram_s16u # 0x02 EWRAM unaligned .long execute_load_iwram_s16u # 0x03 IWRAM unaligned .long execute_load_io_s16u # 0x04 I/O registers unaligned .long execute_load_palette_s16u # 0x05 Palette RAM unaligned .long execute_load_vram_s16u # 0x06 VRAM unaligned .long execute_load_oam_s16u # 0x07 OAM RAM unaligned .long execute_load_gamepak8_s16u# 0x08 gamepak unaligned .long execute_load_gamepak9_s16u# 0x09 gamepak unaligned .long execute_load_gamepakA_s16u# 0x0A gamepak unaligned .long execute_load_gamepakB_s16u# 0x0B gamepak unaligned .long execute_load_gamepakC_s16u# 0x0C gamepak unaligned .long execute_load_eeprom_s16u # 0x0D gamepak/eeprom unaligned .long execute_load_backup_s16u # 0x0E Flash ROM/SRAM unaligned .long execute_load_open_s16u # 0x0F open unalignedpatch_load_s16: patch_handler_align load_s16_ftable, 1# Unsigned aligned 32bit load handlersexecute_load_bios_u32: region_check_align 0, 2, 0, patch_load_u32 srl $2, $5, 14 # check if PC is in BIOS region bne $2, $0, 1f # if not, perform BIOS protected read lui $1, %hi(bios_rom) # generate upper address (delay) andi $4, $4, 0x3FFF # generate offset addu $2, $1, $4 load_u32 bios_rom1: lui $2, %hi(bios_read_protect) # generate upper address load_u32 bios_read_protectexecute_load_ewram_u32: translate_region_ewram_load_align 2, 0, patch_load_u32 load_u32 (ewram + 0x8000)execute_load_u32:execute_load_iwram_u32: translate_region_align 3, 2, 0, patch_load_u32, (iwram + 0x8000), 0x7FFF load_u32 (iwram + 0x8000)execute_load_io_u32: translate_region_align 4, 2, 0, patch_load_u32, io_registers, 0x3FF load_u32 io_registersexecute_load_palette_u32: translate_region_align 5, 2, 0, patch_load_u32, palette_ram, 0x3FF load_u32 palette_ramexecute_load_vram_u32: translate_region_vram_load_align 2, 0, patch_load_u32 load_u32 vramexecute_load_oam_u32: translate_region_align 7, 2, 0, patch_load_u32, oam_ram, 0x3FF load_u32 oam_ramexecute_load_gamepak8_u32: translate_region_gamepak_align 8, 2, 0, patch_load_u32 load_u32 0execute_load_gamepak9_u32: translate_region_gamepak_align 9, 2, 0, patch_load_u32 load_u32 0execute_load_gamepakA_u32: translate_region_gamepak_align 10, 2, 0, patch_load_u32 load_u32 0execute_load_gamepakB_u32: translate_region_gamepak_align 11, 2, 0, patch_load_u32 load_u32 0execute_load_gamepakC_u32: translate_region_gamepak_align 12, 2, 0, patch_load_u32 load_u32 0execute_load_eeprom_u32: eeprom_load_align 2, 0, patch_load_u32execute_load_backup_u32: backup_load_align 2, 0, patch_load_u32 nopexecute_load_open_u32: open_load32_align 2, 0, patch_load_u32 nop# Unsigned unaligned (by 1) 32bit load handlersexecute_load_bios_u32u1: region_check_align 0, 2, 1, patch_load_u32 srl $2, $5, 14 # check if PC is in BIOS region bne $2, $0, 1f # if not, perform BIOS protected read lui $1, %hi(bios_rom) # generate upper address (delay) andi $4, $4, 0x3FFC # generate offset addu $2, $1, $4 load_u32_unaligned bios_rom, 11: lui $2, %hi(bios_read_protect) # generate upper address load_u32_unaligned bios_read_protect, 1execute_load_ewram_u32u1: translate_region_ewram_load_align32 2, 1, patch_load_u32 load_u32_unaligned (ewram + 0x8000), 1execute_load_iwram_u32u1: translate_region_align 3, 2, 1, patch_load_u32, (iwram + 0x8000), 0x7FFC load_u32_unaligned (iwram + 0x8000), 1execute_load_io_u32u1: translate_region_align 4, 2, 1, patch_load_u32, io_registers, 0x3FC load_u32_unaligned io_registers, 1execute_load_palette_u32u1: translate_region_align 5, 2, 1, patch_load_u32, palette_ram, 0x3FC load_u32_unaligned palette_ram, 1execute_load_vram_u32u1: translate_region_vram_load_align32 2, 1, patch_load_u32 load_u32_unaligned vram, 1execute_load_oam_u32u1: translate_region_align 7, 2, 1, patch_load_u32, oam_ram, 0x3FC load_u32_unaligned oam_ram, 1execute_load_gamepak8_u32u1: translate_region_gamepak_align32 8, 2, 1, patch_load_u32 load_u32_unaligned 0, 1execute_load_gamepak9_u32u1: translate_region_gamepak_align32 9, 2, 1, patch_load_u32 load_u32_unaligned 0, 1execute_load_gamepakA_u32u1: translate_region_gamepak_align32 10, 2, 1, patch_load_u32 load_u32_unaligned 0, 1execute_load_gamepakB_u32u1: translate_region_gamepak_align32 11, 2, 1, patch_load_u32 load_u32_unaligned 0, 1execute_load_gamepakC_u32u1: translate_region_gamepak_align32 12, 2, 1, patch_load_u32 load_u32_unaligned 0, 1execute_load_eeprom_u32u1: eeprom_load_align32 2, 1, patch_load_u32execute_load_backup_u32u1: backup_load_align32 2, 1, patch_load_u32 ror $2, $2, 8 # rotate value by 8bits
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -