HackMew
Mewtwo Strikes Back
- 1,314
- Posts
- 18
- Years
- Seen Oct 26, 2011
Brief Intro
Here I've got a couple of routines for you. They are designed to get the minimum and maximum levels respectively.Description
As you can see, the routines are pretty short and simple so I did not comment them on purpose.Either way, here's a brief description of what happens:
- Get the Pokémon party level address into r1.
- Load the first value into r0, and assume it's the minimum (or maximum) value yet.
- Loop 5 times, and update the mininum (or maximum) value if needed.
- Get the LASTRESULT var address into r1 and store the minimum (or maximum) level.
The Code
GetMinPartyLevel
- FireRed/LeafGreen
Code:[div="font-family:consolas,courier new,monospace"].text .align 2 .thumb .thumb_func .global GetMinPartyLevel main: push {r0-r3, lr} ldr r1, .PARTY_LVL ldrb r0, [r1] mov r3, #0x5 loop: add r1, #0x64 ldrb r2, [r1] cmp r2, #0x0 beq return cmp r2, r0 bge next add r0, r2, #0x0 next: sub r3, #0x1 cmp r3, #0x0 bne loop return: ldr r1, .VAR strh r0, [r1] pop {r0-r3, pc} .align 2 .PARTY_LVL: .word 0x02024284 + 0x54 .VAR: .word 0x020270B6 + (0x800D * 2)[/div]
- Ruby/Sapphire
Note: The routine is the same as the FR/LG one; just replace the bottom part with the following:
Code:[div="font-family:consolas,courier new,monospace"].align 2 .PARTY_LVL: .word 0x03004360 + 0x54 .VAR: .word 0x0201E8C2 + (0x800D * 2)[/div]
- Emerald
Note: The routine is the same as the FR/LG one; just replace the bottom part with the following:
Code:[div="font-family:consolas,courier new,monospace"].align 2 .PARTY_LVL: .word 0x020244EC + 0x54 .VAR: .word 0x020275D6 + (0x800D * 2)[/div]
GetMaxPartyLevel
- FireRed/LeafGreen
Code:[div="font-family:consolas,courier new,monospace"].text .align 2 .thumb .thumb_func .global GetMaxPartyLevel main: push {r0-r3, lr} ldr r1, .PARTY_LVL ldrb r0, [r1] mov r3, #0x5 loop: add r1, #0x64 ldrb r2, [r1] cmp r2, r0 ble next add r0, r2, #0x0 next: sub r3, #0x1 cmp r3, #0x0 bne loop return: ldr r1, .VAR strh r0, [r1] pop {r0-r3, pc} .align 2 .PARTY_LVL: .word 0x02024284 + 0x54 .VAR: .word 0x020270B6 + (0x800D * 2) [/div]
- Ruby/Sapphire
Note: The routine is the same as the FR/LG one; just replace the bottom part with the following:
Code:[div="font-family:consolas,courier new,monospace"].align 2 .PARTY_LVL: .word 0x03004360 + 0x54 .VAR: .word 0x0201E8C2 + (0x800D * 2)[/div]
- Emerald
Note: The routine is the same as the FR/LG one; just replace the bottom part with the following:
Code:[div="font-family:consolas,courier new,monospace"].align 2 .PARTY_LVL: .word 0x020244EC + 0x54 .VAR: .word 0x020275D6 + (0x800D * 2)[/div]
This research document is Copyright © 2010 by HackMew.
You are not allowed to copy, modify or distribute it without permission.
Last edited: