Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 58
Сообщений: 47,676
Вы сказали Спасибо: 27,929
Поблагодарили 43,532 раз(а) в 12,387 сообщениях
Сила репутации: 10Репутация: 42723 
(репутация неоспорима)
|
Ever17
Сообщение от Scorpeg
Собсна элементарно меняем ori v0,v0,0x4000 на ori v0,v0,0x2000 и наоборот - и готово.
|
Попробую по другому объяснить...
Вот твой код
z_un_08872be0:
addiu sp,sp,-0x70
sw s0,0x60(sp)
li a1,0x6
move s0,a0
sw ra,0x64(sp)
jal zz_sceCtrlReadBufferPositive - собственно ты сюда должен вывалиться из дебуггера
move a0,sp
---
тут скипнуто
---
pos_08872D28:
beq v0,zero,pos_08872D40
andi v0,a2,0x4000
lw v0,0x4(s0)
ori v0,v0,0x2000 - нажали кружок // меняем на 4000 (крестик)
sw v0,0x4(s0)
andi v0,a2,0x4000
pos_08872D40:
beq v0,zero,pos_08872D58
andi v0,a2,0x8000
lw v0,0x4(s0)
ori v0,v0,0x4000 - нажали крестик // меняем на 2000 (кружок)
sw v0,0x4(s0)
andi v0,a2,0x8000
Вот мой код (PRXTool v1.1)
; ======================================================
; Subroutine sub_0006EBE0 - Address 0x0006EBE0
sub_0006EBE0: ; Refs: 0x0006F014
0x0006EBE0: 0x27BDFF90 '...'' - addiu $sp, $sp, -112
0x0006EBE4: 0xAFB00060 '`...' - sw $s0, 96($sp)
0x0006EBE8: 0x24050006 '...$' - li $a1, 6
0x0006EBEC: 0x00808021 '!...' - move $s0, $a0
0x0006EBF0: 0xAFBF0064 'd...' - sw $ra, 100($sp)
0x0006EBF4: 0x0C03395E '^9..' - jal sceCtrlReadBufferPositive - собственно ты сюда должен вывалиться из дебуггера
0x0006EBF8: 0x03A02021 '! ..' - move $a0, $sp
---
тут скипнуто
---
loc_0006EC50: ; Refs: 0x0006EC30
0x0006EC50: 0x10400005 '..@.' - beqz $v0, loc_0006EC68
0x0006EC54: 0x30C20008 '...0' - andi $v0, $a2, 0x8
0x0006EC58: 0x8E020004 '....' - lw $v0, 4($s0)
0x0006EC5C: 0x34420001 '..B4' - ori $v0, $v0, 0x1
0x0006EC60: 0xAE020004 '....' - sw $v0, 4($s0)
0x0006EC64: 0x30C20008 '...0' - andi $v0, $a2, 0x8
loc_0006EC68: ; Refs: 0x0006EC50
0x0006EC68: 0x10400005 '..@.' - beqz $v0, loc_0006EC80
0x0006EC6C: 0x30C20010 '...0' - andi $v0, $a2, 0x10
0x0006EC70: 0x8E020004 '....' - lw $v0, 4($s0)
0x0006EC74: 0x34420008 '..B4' - ori $v0, $v0, 0x8
0x0006EC78: 0xAE020004 '....' - sw $v0, 4($s0)
0x0006EC7C: 0x30C20010 '...0' - andi $v0, $a2, 0x10
loc_0006EC80: ; Refs: 0x0006EC68
0x0006EC80: 0x10400005 '..@.' - beqz $v0, loc_0006EC98
0x0006EC84: 0x30C20020 ' ..0' - andi $v0, $a2, 0x20
0x0006EC88: 0x8E020004 '....' - lw $v0, 4($s0)
0x0006EC8C: 0x34420010 '..B4' - ori $v0, $v0, 0x10
0x0006EC90: 0xAE020004 '....' - sw $v0, 4($s0)
0x0006EC94: 0x30C20020 ' ..0' - andi $v0, $a2, 0x20
loc_0006EC98: ; Refs: 0x0006EC80
0x0006EC98: 0x10400005 '..@.' - beqz $v0, loc_0006ECB0
0x0006EC9C: 0x30C20040 '@..0' - andi $v0, $a2, 0x40
0x0006ECA0: 0x8E020004 '....' - lw $v0, 4($s0)
0x0006ECA4: 0x34420020 ' .B4' - ori $v0, $v0, 0x20
0x0006ECA8: 0xAE020004 '....' - sw $v0, 4($s0)
0x0006ECAC: 0x30C20040 '@..0' - andi $v0, $a2, 0x40
loc_0006ECB0: ; Refs: 0x0006EC98
0x0006ECB0: 0x10400005 '..@.' - beqz $v0, loc_0006ECC8
0x0006ECB4: 0x30C20080 '...0' - andi $v0, $a2, 0x80
0x0006ECB8: 0x8E020004 '....' - lw $v0, 4($s0)
0x0006ECBC: 0x34420040 '@.B4' - ori $v0, $v0, 0x40
0x0006ECC0: 0xAE020004 '....' - sw $v0, 4($s0)
0x0006ECC4: 0x30C20080 '...0' - andi $v0, $a2, 0x80
loc_0006ECC8: ; Refs: 0x0006ECB0
0x0006ECC8: 0x10400005 '..@.' - beqz $v0, loc_0006ECE0
0x0006ECCC: 0x30C20100 '...0' - andi $v0, $a2, 0x100
0x0006ECD0: 0x8E020004 '....' - lw $v0, 4($s0)
0x0006ECD4: 0x34420080 '..B4' - ori $v0, $v0, 0x80
0x0006ECD8: 0xAE020004 '....' - sw $v0, 4($s0)
0x0006ECDC: 0x30C20100 '...0' - andi $v0, $a2, 0x100
loc_0006ECE0: ; Refs: 0x0006ECC8
0x0006ECE0: 0x10400005 '..@.' - beqz $v0, loc_0006ECF8
0x0006ECE4: 0x30C20200 '...0' - andi $v0, $a2, 0x200
0x0006ECE8: 0x8E020004 '....' - lw $v0, 4($s0)
0x0006ECEC: 0x34420400 '..B4' - ori $v0, $v0, 0x400
0x0006ECF0: 0xAE020004 '....' - sw $v0, 4($s0)
0x0006ECF4: 0x30C20200 '...0' - andi $v0, $a2, 0x200
loc_0006ECF8: ; Refs: 0x0006ECE0
0x0006ECF8: 0x10400005 '..@.' - beqz $v0, loc_0006ED10
0x0006ECFC: 0x30C21000 '...0' - andi $v0, $a2, 0x1000
0x0006ED00: 0x8E020004 '....' - lw $v0, 4($s0)
0x0006ED04: 0x34420800 '..B4' - ori $v0, $v0, 0x800
0x0006ED08: 0xAE020004 '....' - sw $v0, 4($s0)
0x0006ED0C: 0x30C21000 '...0' - andi $v0, $a2, 0x1000
loc_0006ED10: ; Refs: 0x0006ECF8
0x0006ED10: 0x10400005 '..@.' - beqz $v0, loc_0006ED28
0x0006ED14: 0x30C22000 '. .0' - andi $v0, $a2, 0x2000
0x0006ED18: 0x8E020004 '....' - lw $v0, 4($s0)
0x0006ED1C: 0x34421000 '..B4' - ori $v0, $v0, 0x1000
0x0006ED20: 0xAE020004 '....' - sw $v0, 4($s0)
0x0006ED24: 0x30C22000 '. .0' - andi $v0, $a2, 0x2000
loc_0006ED28: ; Refs: 0x0006ED10
0x0006ED28: 0x10400005 '..@.' - beqz $v0, loc_0006ED40
0x0006ED2C: 0x30C24000 '.@.0' - andi $v0, $a2, 0x4000
0x0006ED30: 0x8E020004 '....' - lw $v0, 4($s0)
0x0006ED34: 0x34422000 '. B4' - ori $v0, $v0, 0x2000
0x0006ED38: 0xAE020004 '....' - sw $v0, 4($s0)
0x0006ED3C: 0x30C24000 '.@.0' - andi $v0, $a2, 0x4000
loc_0006ED40: ; Refs: 0x0006ED28
0x0006ED40: 0x10400005 '..@.' - beqz $v0, loc_0006ED58
0x0006ED44: 0x30C28000 '...0' - andi $v0, $a2, 0x8000
0x0006ED48: 0x8E020004 '....' - lw $v0, 4($s0)
0x0006ED4C: 0x34424000 '.@B4' - ori $v0, $v0, 0x4000
0x0006ED50: 0xAE020004 '....' - sw $v0, 4($s0)
0x0006ED54: 0x30C28000 '...0' - andi $v0, $a2, 0x8000
Теперь разберём мой код...
0x0006EC5C: 0x34420001 '..B4' - ori $v0, $v0, 0x1 - кнопка "SELECT"
0x0006EC74: 0x34420008 '..B4' - ori $v0, $v0, 0x8 - кнопка "START"
0x0006EC8C: 0x34420010 '..B4' - ori $v0, $v0, 0x10 - кнопка "Вверх"
0x0006ECA4: 0x34420020 ' .B4' - ori $v0, $v0, 0x20 - кнопка "Вправо"
0x0006ECBC: 0x34420040 '@.B4' - ori $v0, $v0, 0x40 - кнопка "Вниз"
0x0006ECD4: 0x34420080 '..B4' - ori $v0, $v0, 0x80 - кнопка "Влево"
0x0006ECEC: 0x34420400 '..B4' - ori $v0, $v0, 0x400 - ?
0x0006ED04: 0x34420800 '..B4' - ori $v0, $v0, 0x800 - ?
0x0006ED1C: 0x34421000 '..B4' - ori $v0, $v0, 0x1000 - кнопка "Треугольник"
0x0006ED34: 0x34422000 '. B4' - ori $v0, $v0, 0x2000 - кнопка "Круг"
0x0006ED4C: 0x34424000 '.@B4' - ori $v0, $v0, 0x4000 - кнопка "Крест"
Теперь по поводу смещения в файле EBOOT.BIN (BOOT.BIN), поясню на примере искомой кнопки "Круг" и "Крест":
0x0006ED34: 0x34422000 '. B4' - ori $v0, $v0, 0x2000 - кнопка 
0x0006ED4C: 0x34424000 '.@B4' - ori $v0, $v0, 0x4000 - кнопка
|
На первом месте указано смещение (задом наперёд) - Смещение: 0x0006ED34 + A0 = 0x0006EDD4
- Смещение: 0x0006ED4C + A0 = 0x0006EDEC
На втором месте код в этих смещениях: 0x34422000 и 0x34424000, где 0x3442 - идентификатор этой функции.
Ever17.png
Последний раз редактировалось ErikPshat; 04.02.2015 в 13:36.
|