⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mips_stub.s

📁 psp上的GBA模拟器
💻 S
📖 第 1 页 / 共 5 页
字号:
execute_load_open_u32u1:  open_load32_align32 2, 1, patch_load_u32  ror $2, $2, 8                   # rotate value by 8bits# Unsigned unaligned (by 2) 32bit load handlersexecute_load_bios_u32u2:  region_check_align 0, 2, 2, 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, 21:  lui $2, %hi(bios_read_protect)  # generate upper address  load_u32_unaligned bios_read_protect, 2execute_load_ewram_u32u2:  translate_region_ewram_load_align32 2, 2, patch_load_u32  load_u32_unaligned (ewram + 0x8000), 2execute_load_iwram_u32u2:  translate_region_align 3, 2, 2, patch_load_u32, (iwram + 0x8000), 0x7FFC  load_u32_unaligned (iwram + 0x8000), 2execute_load_io_u32u2:  translate_region_align 4, 2, 2, patch_load_u32, io_registers, 0x3FC  load_u32_unaligned io_registers, 2execute_load_palette_u32u2:  translate_region_align 5, 2, 2, patch_load_u32, palette_ram, 0x3FC  load_u32_unaligned palette_ram, 2execute_load_vram_u32u2:  translate_region_vram_load_align32 2, 2, patch_load_u32  load_u32_unaligned vram, 2execute_load_oam_u32u2:  translate_region_align 7, 2, 2, patch_load_u32, oam_ram, 0x3FC  load_u32_unaligned oam_ram, 2execute_load_gamepak8_u32u2:  translate_region_gamepak_align32 8, 2, 2, patch_load_u32  load_u32_unaligned 0, 2execute_load_gamepak9_u32u2:  translate_region_gamepak_align32 9, 2, 2, patch_load_u32  load_u32_unaligned 0, 2execute_load_gamepakA_u32u2:  translate_region_gamepak_align32 10, 2, 2, patch_load_u32  load_u32_unaligned 0, 2execute_load_gamepakB_u32u2:  translate_region_gamepak_align32 11, 2, 2, patch_load_u32  load_u32_unaligned 0, 2execute_load_gamepakC_u32u2:  translate_region_gamepak_align32 12, 2, 2, patch_load_u32  load_u32_unaligned 0, 2execute_load_eeprom_u32u2:  eeprom_load_align32 2, 2, patch_load_u32execute_load_backup_u32u2:  backup_load_align32 2, 2, patch_load_u32  ror $2, $2, 16                   # rotate value by 16bitsexecute_load_open_u32u2:  open_load32_align32 2, 2, patch_load_u32  ror $2, $2, 16                   # rotate value by 16bits# Unsigned unaligned (by 1) 32bit load handlersexecute_load_bios_u32u3:  region_check_align 0, 2, 3, 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, 31:  lui $2, %hi(bios_read_protect)  # generate upper address  load_u32_unaligned bios_read_protect, 3execute_load_ewram_u32u3:  translate_region_ewram_load_align32 2, 3, patch_load_u32  load_u32_unaligned (ewram + 0x8000), 3execute_load_iwram_u32u3:  translate_region_align 3, 2, 3, patch_load_u32, (iwram + 0x8000), 0x7FFC  load_u32_unaligned (iwram + 0x8000), 3execute_load_io_u32u3:  translate_region_align 4, 2, 3, patch_load_u32, io_registers, 0x3FC  load_u32_unaligned io_registers, 3execute_load_palette_u32u3:  translate_region_align 5, 2, 3, patch_load_u32, palette_ram, 0x3FC  load_u32_unaligned palette_ram, 3execute_load_vram_u32u3:  translate_region_vram_load_align32 2, 3, patch_load_u32  load_u32_unaligned vram, 3execute_load_oam_u32u3:  translate_region_align 7, 2, 3, patch_load_u32, oam_ram, 0x3FC  load_u32_unaligned oam_ram, 3execute_load_gamepak8_u32u3:  translate_region_gamepak_align32 8, 2, 3, patch_load_u32  load_u32_unaligned 0, 3execute_load_gamepak9_u32u3:  translate_region_gamepak_align32 9, 2, 3, patch_load_u32  load_u32_unaligned 0, 3execute_load_gamepakA_u32u3:  translate_region_gamepak_align32 10, 2, 3, patch_load_u32  load_u32_unaligned 0, 3execute_load_gamepakB_u32u3:  translate_region_gamepak_align32 11, 2, 3, patch_load_u32  load_u32_unaligned 0, 3execute_load_gamepakC_u32u3:  translate_region_gamepak_align32 12, 2, 3, patch_load_u32  load_u32_unaligned 0, 3execute_load_eeprom_u32u3:  eeprom_load_align32 2, 3, patch_load_u32execute_load_backup_u32u3:  backup_load_align32 2, 3, patch_load_u32  ror $2, $2, 24                  # rotate value by 24bitsexecute_load_open_u32u3:  open_load32_align32 2, 3, patch_load_u32  ror $2, $2, 24                  # rotate value by 24bitsload_u32_ftable:  .long execute_load_bios_u32     # 0x00 BIOS  .long execute_load_open_u32     # 0x01 open address  .long execute_load_ewram_u32    # 0x02 EWRAM  .long execute_load_iwram_u32    # 0x03 IWRAM  .long execute_load_io_u32       # 0x04 I/O registers  .long execute_load_palette_u32  # 0x05 Palette RAM  .long execute_load_vram_u32     # 0x06 VRAM  .long execute_load_oam_u32      # 0x07 OAM RAM  .long execute_load_gamepak8_u32 # 0x08 gamepak  .long execute_load_gamepak9_u32 # 0x09 gamepak  .long execute_load_gamepakA_u32 # 0x0A gamepak  .long execute_load_gamepakB_u32 # 0x0B gamepak  .long execute_load_gamepakC_u32 # 0x0C gamepak  .long execute_load_eeprom_u32   # 0x0D gamepak/eeprom  .long execute_load_backup_u32   # 0x0E Flash ROM/SRAM  .long execute_load_open_u32     # 0x0F open  .long execute_load_bios_u32u1     # 0x00 BIOS unaligned (1b)  .long execute_load_open_u32u1     # 0x01 open address unaligned (1b)  .long execute_load_ewram_u32u1    # 0x02 EWRAM unaligned (1b)  .long execute_load_iwram_u32u1    # 0x03 IWRAM unaligned (1b)  .long execute_load_io_u32u1       # 0x04 I/O registers unaligned (1b)  .long execute_load_palette_u32u1  # 0x05 Palette RAM unaligned (1b)  .long execute_load_vram_u32u1     # 0x06 VRAM unaligned (1b)  .long execute_load_oam_u32u1      # 0x07 OAM RAM unaligned (1b)  .long execute_load_gamepak8_u32u1 # 0x08 gamepak unaligned (1b)  .long execute_load_gamepak9_u32u1 # 0x09 gamepak unaligned (1b)  .long execute_load_gamepakA_u32u1 # 0x0A gamepak unaligned (1b)  .long execute_load_gamepakB_u32u1 # 0x0B gamepak unaligned (1b)  .long execute_load_gamepakC_u32u1 # 0x0C gamepak unaligned (1b)  .long execute_load_eeprom_u32u1   # 0x0D gamepak/eeprom unaligned (1b)  .long execute_load_backup_u32u1   # 0x0E Flash ROM/SRAM unaligned (1b)  .long execute_load_open_u32u1     # 0x0F open unaligned (1b)  .long execute_load_bios_u32u2     # 0x00 BIOS unaligned (2b)  .long execute_load_open_u32u2     # 0x01 open address unaligned (2b)  .long execute_load_ewram_u32u2    # 0x02 EWRAM unaligned (2b)  .long execute_load_iwram_u32u2    # 0x03 IWRAM unaligned (2b)  .long execute_load_io_u32u2       # 0x04 I/O registers unaligned (2b)  .long execute_load_palette_u32u2  # 0x05 Palette RAM unaligned (2b)  .long execute_load_vram_u32u2     # 0x06 VRAM unaligned (2b)  .long execute_load_oam_u32u2      # 0x07 OAM RAM unaligned (2b)  .long execute_load_gamepak8_u32u2 # 0x08 gamepak unaligned (2b)  .long execute_load_gamepak9_u32u2 # 0x09 gamepak unaligned (2b)  .long execute_load_gamepakA_u32u2 # 0x0A gamepak unaligned (2b)  .long execute_load_gamepakB_u32u2 # 0x0B gamepak unaligned (2b)  .long execute_load_gamepakC_u32u2 # 0x0C gamepak unaligned (2b)  .long execute_load_eeprom_u32u2   # 0x0D gamepak/eeprom unaligned (2b)  .long execute_load_backup_u32u2   # 0x0E Flash ROM/SRAM unaligned (2b)  .long execute_load_open_u32u2     # 0x0F open unaligned (2b)  .long execute_load_bios_u32u3     # 0x00 BIOS unaligned (3b)  .long execute_load_open_u32u3     # 0x01 open address unaligned (3b)  .long execute_load_ewram_u32u3    # 0x02 EWRAM unaligned (3b)  .long execute_load_iwram_u32u3    # 0x03 IWRAM unaligned (3b)  .long execute_load_io_u32u3       # 0x04 I/O registers unaligned (3b)  .long execute_load_palette_u32u3  # 0x05 Palette RAM unaligned (3b)  .long execute_load_vram_u32u3     # 0x06 VRAM unaligned (3b)  .long execute_load_oam_u32u3      # 0x07 OAM RAM unaligned (3b)  .long execute_load_gamepak8_u32u3 # 0x08 gamepak unaligned (3b)  .long execute_load_gamepak9_u32u3 # 0x09 gamepak unaligned (3b)  .long execute_load_gamepakA_u32u3 # 0x0A gamepak unaligned (3b)  .long execute_load_gamepakB_u32u3 # 0x0B gamepak unaligned (3b)  .long execute_load_gamepakC_u32u3 # 0x0C gamepak unaligned (3b)  .long execute_load_eeprom_u32u3   # 0x0D gamepak/eeprom unaligned (3b)  .long execute_load_backup_u32u3   # 0x0E Flash ROM/SRAM unaligned (3b)  .long execute_load_open_u32u3     # 0x0F open unaligned (3b)patch_load_u32:  patch_handler_align load_u32_ftable, 2# Unsigned always aligned 32bit load handlersexecute_load_bios_u32a:  region_check 0, patch_load_u32a  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_u32a:  translate_region_ewram patch_load_u32a  load_u32 (ewram + 0x8000)execute_aligned_load32:execute_load_iwram_u32a:  translate_region 3, patch_load_u32a, (iwram + 0x8000), 0x7FFF  load_u32 (iwram + 0x8000)execute_load_io_u32a:  translate_region 4, patch_load_u32a, io_registers, 0x3FF  load_u32 io_registersexecute_load_palette_u32a:  translate_region 5, patch_load_u32a, palette_ram, 0x3FF  load_u32 palette_ramexecute_load_vram_u32a:  translate_region_vram patch_load_u32a  load_u32 vramexecute_load_oam_u32a:  translate_region 7, patch_load_u32a, oam_ram, 0x3FF  load_u32 oam_ramexecute_load_gamepak8_u32a:  translate_region_gamepak_a 8, patch_load_u32a  load_u32 0execute_load_gamepak9_u32a:  translate_region_gamepak_a 9, patch_load_u32a  load_u32 0execute_load_gamepakA_u32a:  translate_region_gamepak_a 10, patch_load_u32a  load_u32 0execute_load_gamepakB_u32a:  translate_region_gamepak_a 11, patch_load_u32a  load_u32 0execute_load_gamepakC_u32a:  translate_region_gamepak_a 12, patch_load_u32a  load_u32 0execute_load_eeprom_u32a:  eeprom_load_a patch_load_u32aexecute_load_backup_u32a:  backup_load_a patch_load_u32a  nopexecute_load_open_u32a:  open_load32_a patch_load_u32aload_u32a_ftable:  .long execute_load_bios_u32a      # 0x00 BIOS unaligned (3b)  .long execute_load_open_u32a      # 0x01 open address unaligned (3b)  .long execute_load_ewram_u32a     # 0x02 EWRAM unaligned (3b)  .long execute_load_iwram_u32a     # 0x03 IWRAM unaligned (3b)  .long execute_load_io_u32a        # 0x04 I/O registers unaligned (3b)  .long execute_load_palette_u32a   # 0x05 Palette RAM unaligned (3b)  .long execute_load_vram_u32a      # 0x06 VRAM unaligned (3b)  .long execute_load_oam_u32a       # 0x07 OAM RAM unaligned (3b)  .long execute_load_gamepak8_u32a  # 0x08 gamepak unaligned (3b)  .long execute_load_gamepak9_u32a  # 0x09 gamepak unaligned (3b)  .long execute_load_gamepakA_u32a  # 0x0A gamepak unaligned (3b)  .long execute_load_gamepakB_u32a  # 0x0B gamepak unaligned (3b)  .long execute_load_gamepakC_u32a  # 0x0C gamepak unaligned (3b)  .long execute_load_eeprom_u32a    # 0x0D gamepak/eeprom unaligned (3b)  .long execute_load_backup_u32a    # 0x0E Flash ROM/SRAM unaligned (3b)  .long execute_load_open_u32a      # 0x0F open unaligned (3b)patch_load_u32a:  patch_handler load_u32a_ftable, 1# Unsigned 8bit store handlersexecute_store_ignore0_u8:  ignore_region 0, patch_store_u8execute_store_ignore1_u8:  ignore_region 1, patch_store_u8execute_store_ewram_u8:  translate_region_ewram patch_store_u8  store_u8_smc (ewram + 0x8000)execute_store_u8:execute_store_iwram_u8:  translate_region 3, patch_store_u8, (iwram + 0x8000), 0x7FFF  store_u8_smc (iwram + 0x8000)execute_store_io_u8:  region_check 4, patch_store_u8  andi $5, $5, 0xFF               # make value 8bit  andi $4, $4, 0x3FF              # wrap around address  addiu $sp, $sp, -4              # make room on the stack for $ra  sw $ra, ($sp)  save_registers  jal write_io_register8          # write the value out  sw $6, REG_PC($16)              # save the PC (delay slot)  j write_io_epilogue             # handle any state changes  nopexecute_store_palette_u8:  region_check 5, patch_store_u8  lui $2, %hi(palette_ram)        # start loading palette_ram address (delay)  ins $5, $5, 8, 8                # double value  andi $4, $4, 0x3FE              # align palette address  addu $2, $2, $4  sh $5, %lo(palette_ram)($2)     # palette_ram[address] = value  sll $1, $5, 1                   # make green 6bits  ins $1, $0, 0, 6                # make bottom bit 0  ins $1, $5, 0, 5                # insert red channel into $1  lui $2, %hi(palette_ram_converted)  addu $2, $2, $4  jr $ra                          # return  sh $1, %lo(palette_ram_converted)($2)execute_store_vram_u8:  translate_region_vram_store_align16 patch_store_u8  store_u8_double vramexecute_store_oam_u8:  translate_region 7, patch_store_u8, oam_ram, 0x3FE  lui $1, %hi(oam_update)         # write non-zero to oam_update  sw $4, %lo(oam_update)($1)      # cheap, but the address is non-zero  store_u8_double oam_ramexecute_store_ignore8_u8:  ignore_region 8, patch_store_u8execute_store_ignore9_u8:  ignore_region 9, patch_store_u8execute_store_ignoreA_u8:  ignore_region 10, patch_store_u8execute_store_ignoreB_u8:  ignore_region 11, patch_store_u8execute_store_ignoreC_u8:  ignore_region 12, patch_store_u8execute_store_eeprom_u8:  store_function write_eeprom, 13, patch_store_u8, 0x3FFexecute_store_backup_u8:  store_function write_backup, 14, patch_store_u8, 0xFFFFexecute_store_ignoreF_u8:  ignore_high patch_store_u8store_u8_ftable:  .long execute_store_ignore0_u8  # 0x00 BIOS  .long execute_store_ignore1_u8  # 0x01 open address  .long execute_store_ewram_u8    # 0x02 EWRAM  .long execute_store_iwram_u8    # 0x03 IWRAM  .long execute_store_io_u8       # 0x04 I/O registers  .long execute_store_palette_u8  # 0x05 Palette RAM  .long execute_store_vram_u8     # 0x06 VRAM  .long execute_store_oam_u8      # 0x07 OAM RAM  .long execute_store_ignore8_u8  # 0x08 gamepak  .long execute_store_ignore9_u8  # 0x09 gamepak  .long execute_store_ignoreA_u8  # 0x0A gamepak  .long execute_store_ignoreB_u8  # 0x0B gamepak  .long execute_store_ignoreC_u8  # 0x0C gamepak  .long execute_store_eeprom_u8   # 0x0D gamepak/eeprom  .long execute_store_backup_u8   # 0x0E Flash ROM/SRAM  .long execute_store_ignoreF_u8  # 0x0F open addresspatch_store_u8:  patch_handler store_u8_ftable, 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -