icyred21023
Usuario de plata
(I just ported this over to FireRed , it matched up perfectly! Port is in Spoilers color matched )
This is for Pokemon Emerald US (BPEE )
( FireRed Port is for 1.0 US Squirrels Version )
*Just made new and improved formula for Emerald. Open Spoiler below this line to see*
To use just use this Assembled or Disassembled Code instead of whats in the Original Post. Enjoy!
This is for Pokemon Emerald US (BPEE )
( FireRed Port is for 1.0 US Squirrels Version )
*Just made new and improved formula for Emerald. Open Spoiler below this line to see*
To use just use this Assembled or Disassembled Code instead of whats in the Original Post. Enjoy!
Código:
1088FEB418490978184A642671435431
89180978164A127872435432154BD218
1278141C0B1C6427FE1A3D1B92194919
0D1C161C69437243D2011D1C01B4101C
0D4B00F00FF8021C01BCAC4203D9661B
75436D0840195043C009FEBC08608946
064800471847000020000402EC440202
704002024447020241752E086BA60408
.THUMB
.ALIGN 2
LDRH R0, [R2]
PUSH {R1-R7}
LDR R1, = 0x02040020 @Current Player PKM Slot
LDRB R1, [R1]
LDR R2, = 0x020244EC @Player Party Data
MOV R6, #0x64 @pkm Offset
MUL R1, R6
ADD R1, #0x54 @pkm LV Data Offset
ADD R1, R1, R2
LDRB R1, [R1] @PLAYER LEVEL
LDR R2, = 0x02024070 @Enemy PKM Slot
LDRB R2, [R2]
MUL R2, R6
ADD R2, #0x54
LDR R3, = 0x02024744 @Enemy Party Data
ADD R2, R2, R3
LDRB R2, [R2] @ENEMY LEVEL
MOV R4, R2 @R4 and R2 = Enemy Level
MOV R3, R1 @R3 and R1 = Player Level
MOV R7, #0x64
SUB R6, R7, R3
SUB R5, R7, R4
ADD R2, R6
ADD R1, R5
MOV R5, R1
MOV R6, R2
MUL R1, R5
MUL R2, R6
LSL R2, #0x7
MOV R5, R3
PUSH {R0}
MOV R0, R2
LDR R3, = 0x082E7540+1 @Division Routine Address
BL LINKER
MOV R2, R0
POP {R0}
CMP R4, R5
BLS UNDERFLOW_EQUAL
SUB R6, R4, R5
MUL R5, R6
LSR R5, #0x1
ADD R0, R5
UNDERFLOW_EQUAL:
MUL R0, R2
LSR R0, #0x7
POP {R1-R7}
STR R0, [R1]
MOV R9, R1
LDR R0, = 0x0804A66A+1
BX R0
LINKER:
BX R3 @Division R0 = R0 / R1
.ALIGN 2
LDRH R0, [R2]
PUSH {R1-R7}
LDR R1, = 0x02040020 @Current Player PKM Slot
LDRB R1, [R1]
LDR R2, = 0x020244EC @Player Party Data
MOV R6, #0x64 @pkm Offset
MUL R1, R6
ADD R1, #0x54 @pkm LV Data Offset
ADD R1, R1, R2
LDRB R1, [R1] @PLAYER LEVEL
LDR R2, = 0x02024070 @Enemy PKM Slot
LDRB R2, [R2]
MUL R2, R6
ADD R2, #0x54
LDR R3, = 0x02024744 @Enemy Party Data
ADD R2, R2, R3
LDRB R2, [R2] @ENEMY LEVEL
MOV R4, R2 @R4 and R2 = Enemy Level
MOV R3, R1 @R3 and R1 = Player Level
MOV R7, #0x64
SUB R6, R7, R3
SUB R5, R7, R4
ADD R2, R6
ADD R1, R5
MOV R5, R1
MOV R6, R2
MUL R1, R5
MUL R2, R6
LSL R2, #0x7
MOV R5, R3
PUSH {R0}
MOV R0, R2
LDR R3, = 0x082E7540+1 @Division Routine Address
BL LINKER
MOV R2, R0
POP {R0}
CMP R4, R5
BLS UNDERFLOW_EQUAL
SUB R6, R4, R5
MUL R5, R6
LSR R5, #0x1
ADD R0, R5
UNDERFLOW_EQUAL:
MUL R0, R2
LSR R0, #0x7
POP {R1-R7}
STR R0, [R1]
MOV R9, R1
LDR R0, = 0x0804A66A+1
BX R0
LINKER:
BX R3 @Division R0 = R0 / R1
The Assembled Routine is ... (Disassembled at bottom)
emerald:
Enriquecido (Código BB):
10 88 F8 B4 00 25 14 4B 1B 78 64 26 73 43 13 4C 1B 19 54 33 1B 78 12 4C 24 78 74 43 11 4D 64 19 54 34
24 78 A3 42 11 D0 A3 42 05 D5 E3 1A 05 1C ED 08 6B 43 C0 18 09 E0 1B 1B 05 2B 04 D5 05 1C ED 08 6B 43
C0 1A 01 E0 05 23 F8 E7 F8 BC 08 60 89 46 05 48 00 47 00 00 20 00 04 02 EC 44 02 02 70 40 02 02 44 47
02 02 6B A6 04 08
Enriquecido (Código BB):
10 88 F8 B4 00 25 14 4B 1B 78 64 26 73 43 13 4C 1B 19 54 33 1B 78 12 4C 24 78 74 43 11 4D 64 19 54 3 4
24 78 A3 42 11 D0 A3 42 05 D5 E3 1A 05 1C ED 08 6B 43 C0 18 09 E0 1B 1B 05 2B 04 D5 05 1C ED 08 6B 43
C0 1A 01 E0 05 23 F8 E7 F8 BC 08 60 89 46 05 48 00 47 00 00 20 00 04 02 84 42 02 02 D0 3B 02 02 2C 40
02 02 AB 1D 02 08
Open Emerald Rom in HxD, and add the above code in free space (FF bytes) in HxD. Write down the offset you added it. I added mine to 0x00EB3000
Now to hook the routine and make it run, in HxD, now goto 0004A644 (This is our Hook Offset ).
00021D80
At this offset, add in the code below.
Código:
00 48 00 47 (XX XX XX XX)
Replace the XX's with a POINTER made from the offset you added the first code at (must turn offset into pointer).
So mine looks like this.
Código:
00 48 00 47 01 30 EB 08
1st step
Código:
00 EB 30 00
Código:
08 EB 30 00
Código:
08 EB 30 01
Código:
01 30 EB 08
Código:
00 48 00 47 (01 30 EB 08)
.THUMB
.ALIGN 2
LDRH R0, [R2]
PUSH {R3-R7}
MOV R5, #0
LDR R3, = 0x02040020 @Current Player Pokemon Slot
LDRB R3, [R3]
MOV R6, #0x64
MUL R3, R6
LDR R4, = 0x020244EC @Player Party Pokemon Data
ADD R3, R3, R4
ADD R3, #0x54 @Adds offset for Level Data
LDRB R3, [R3]
LDR R4, = 0x02024070 @Current ENEMY Pokemon Slot
LDRB R4, [R4]
MUL R4, R6
LDR R5, = 0x02024744 @ENEMY Party Pokemon Data
ADD R4, R4, R5
ADD R4, #0x54
LDRB R4, [R4]
CMP R3, R4
BEQ RETURN
CMP R3, R4
BPL HIGHER_SAME
SUB R3, R4, R3
MOV R5, R0
LSR R5, #0x3
MUL R3, R3, R5
ADD R0, R0, R3
B RETURN
HIGHER_SAME:
SUB R3, R3, R4
CMP R3, #0x5
BPL FIVE_LV_OR_MORE
CONT:
MOV R5, R0
LSR R5, #0x3
MUL R3, R3, R5
SUB R0, R0, R3
B RETURN
FIVE_LV_OR_MORE:
MOV R3, #0x5
B CONT
RETURN:
POP {R3-R7}
STR R0, [R1]
MOV R9, R1
LDR R0, = 0x0804A66A+1
BX R0
.ALIGN 2
LDRH R0, [R2]
PUSH {R3-R7}
MOV R5, #0
LDR R3, = 0x02040020 @Current Player Pokemon Slot
LDRB R3, [R3]
MOV R6, #0x64
MUL R3, R6
LDR R4, = 0x020244EC @Player Party Pokemon Data
ADD R3, R3, R4
ADD R3, #0x54 @Adds offset for Level Data
LDRB R3, [R3]
LDR R4, = 0x02024070 @Current ENEMY Pokemon Slot
LDRB R4, [R4]
MUL R4, R6
LDR R5, = 0x02024744 @ENEMY Party Pokemon Data
ADD R4, R4, R5
ADD R4, #0x54
LDRB R4, [R4]
CMP R3, R4
BEQ RETURN
CMP R3, R4
BPL HIGHER_SAME
SUB R3, R4, R3
MOV R5, R0
LSR R5, #0x3
MUL R3, R3, R5
ADD R0, R0, R3
B RETURN
HIGHER_SAME:
SUB R3, R3, R4
CMP R3, #0x5
BPL FIVE_LV_OR_MORE
CONT:
MOV R5, R0
LSR R5, #0x3
MUL R3, R3, R5
SUB R0, R0, R3
B RETURN
FIVE_LV_OR_MORE:
MOV R3, #0x5
B CONT
RETURN:
POP {R3-R7}
STR R0, [R1]
MOV R9, R1
LDR R0, = 0x0804A66A+1
BX R0
.THUMB
.ALIGN 2
LDRH R0, [R2]
PUSH {R3-R7}
MOV R5, #0
LDR R3, = 0x02040020 @Current Player Pokemon Slot
LDRB R3, [R3]
MOV R6, #0x64
MUL R3, R6
LDR R4, =0x02024284 @Player Party Pokemon Data
ADD R3, R3, R4
ADD R3, #0x54 @Adds offset for Level Data
LDRB R3, [R3]
LDR R4, = 0x02023BD0 @Current ENEMY Pokemon Slot
LDRB R4, [R4]
MUL R4, R6
LDR R5, = 0x0202402C @ENEMY Party Pokemon Data
ADD R4, R4, R5
ADD R4, #0x54
LDRB R4, [R4]
CMP R3, R4
BEQ RETURN
CMP R3, R4
BPL HIGHER_SAME
SUB R3, R4, R3
MOV R5, R0
LSR R5, #0x3
MUL R3, R3, R5
ADD R0, R0, R3
B RETURN
HIGHER_SAME:
SUB R3, R3, R4
CMP R3, #0x5
BPL FIVE_LV_OR_MORE
CONT:
MOV R5, R0
LSR R5, #0x3
MUL R3, R3, R5
SUB R0, R0, R3
B RETURN
FIVE_LV_OR_MORE:
MOV R3, #0x5
B CONT
RETURN:
POP {R3-R7}
STR R0, [R1]
MOV R9, R1
LDR R0, = 0x08021DAA+1
BX R0
.ALIGN 2
LDRH R0, [R2]
PUSH {R3-R7}
MOV R5, #0
LDR R3, = 0x02040020 @Current Player Pokemon Slot
LDRB R3, [R3]
MOV R6, #0x64
MUL R3, R6
LDR R4, =0x02024284 @Player Party Pokemon Data
ADD R3, R3, R4
ADD R3, #0x54 @Adds offset for Level Data
LDRB R3, [R3]
LDR R4, = 0x02023BD0 @Current ENEMY Pokemon Slot
LDRB R4, [R4]
MUL R4, R6
LDR R5, = 0x0202402C @ENEMY Party Pokemon Data
ADD R4, R4, R5
ADD R4, #0x54
LDRB R4, [R4]
CMP R3, R4
BEQ RETURN
CMP R3, R4
BPL HIGHER_SAME
SUB R3, R4, R3
MOV R5, R0
LSR R5, #0x3
MUL R3, R3, R5
ADD R0, R0, R3
B RETURN
HIGHER_SAME:
SUB R3, R3, R4
CMP R3, #0x5
BPL FIVE_LV_OR_MORE
CONT:
MOV R5, R0
LSR R5, #0x3
MUL R3, R3, R5
SUB R0, R0, R3
B RETURN
FIVE_LV_OR_MORE:
MOV R3, #0x5
B CONT
RETURN:
POP {R3-R7}
STR R0, [R1]
MOV R9, R1
LDR R0, = 0x08021DAA+1
BX R0
Última edición: