Go Back   The PokéCommunity Forums > ROM Hacking > Research & Development
Reload this Page Getting the min/max level of your Pokémon party

Notices
For all updates, view the main page.

Research & Development Got a well-founded knack with ROM hacking? Love reverse-engineering the Pokémon games? Or perhaps you love your assembly language. This is the spot for polling and gathering your ideas, and then implementing them! Share your hypothesis, get ideas from others, and collaborate to create!
Research & Development programs in this forum are subject to moderator approval before they are displayed.



Reply
 
Thread Tools
  #1    
Old February 3rd, 2010 (02:36 PM). Edited April 19th, 2010 by HackMew.
HackMew's Avatar
HackMew HackMew is offline
Mewtwo Strikes Back
Crystal Tier
 
Join Date: Jun 2006
Posts: 1,314

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:
  1. Get the Pokémon party level address into r1.
  2. Load the first value into r0, and assume it's the minimum (or maximum) value yet.
  3. Loop 5 times, and update the mininum (or maximum) value if needed.
  4. Get the LASTRESULT var address into r1 and store the minimum (or maximum) level.
The minimum routine, however, is slighty different because a zero-level is not an acceptable value so there's an extra check to take that into account (otherwhise as long as your team is not full, the minimum level would always be zero, which is no good obviously). That also means the routine will loop up to 5 times rather than always 5 as it happens in the maximum routine.

The Code


GetMinPartyLevel


  • FireRed/LeafGreen

    Code:
    .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)
  • Ruby/Sapphire

    Note: The routine is the same as the FR/LG one; just replace the bottom part with the following:

    Code:
    .align 2 .PARTY_LVL: .word 0x03004360 + 0x54 .VAR: .word 0x0201E8C2 + (0x800D * 2)
  • Emerald

    Note: The routine is the same as the FR/LG one; just replace the bottom part with the following:

    Code:
    .align 2 .PARTY_LVL: .word 0x020244EC + 0x54 .VAR: .word 0x020275D6 + (0x800D * 2)

GetMaxPartyLevel


  • FireRed/LeafGreen

    Code:
    .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)
  • Ruby/Sapphire

    Note: The routine is the same as the FR/LG one; just replace the bottom part with the following:

    Code:
    .align 2 .PARTY_LVL: .word 0x03004360 + 0x54 .VAR: .word 0x0201E8C2 + (0x800D * 2)
  • Emerald

    Note: The routine is the same as the FR/LG one; just replace the bottom part with the following:

    Code:
    .align 2 .PARTY_LVL: .word 0x020244EC + 0x54 .VAR: .word 0x020275D6 + (0x800D * 2)

This research document is Copyright © 2010 by HackMew.
You are not allowed to copy, modify or distribute it without permission.
__________________
Reply With Quote
  #2    
Old February 4th, 2010 (04:33 AM).
Spherical Ice's Avatar
Spherical Ice Spherical Ice is offline
Moderator
CS
 
Join Date: Nov 2007
Location: Leicester, UK
Posts: 3,497
Send a message via Skype™ to Spherical Ice
Wow, this routine unlocks some pretty cool stuff, such as a FR/LG Battle Frontier-style thing (the opponents' Pokémon are the same level as your max Pokémon, for example). It's real cool. Nice one, HackMew!
__________________
Reply With Quote
  #3    
Old February 4th, 2010 (09:09 AM).
0m3GA ARS3NAL's Avatar
0m3GA ARS3NAL 0m3GA ARS3NAL is offline
Im comin' home...
Silver Tier
 
Join Date: Jan 2008
Location: Superjail Penitentiary
Age: 22
Gender: Male
Nature: Gentle
Posts: 1,816
don't mean to put ya down, but couldn't this be done with a script as well?
__________________
>Boot Jailbot
>Pass *****
.
.
Jailbot OS Ver 1.1.2
Greetings Warden
of Superjail Penitentiary
Awaiting user input...

>Display User_Info
╠══User Info══╣
Username:
0m3GA ARS3NAL
Age: 18
Sex: Male ♂
Race: Caucasian
Quote:
"What is this
I don't even..."

M/O: Often acts out to get attention, but recently has changed that. Has been studying up on hacking information and hopes to participate in more advanced hacking discussion.
╠══End of File══╣
Awaiting user input...

>
Reply With Quote
  #4    
Old February 4th, 2010 (09:43 AM).
HackMew's Avatar
HackMew HackMew is offline
Mewtwo Strikes Back
Crystal Tier
 
Join Date: Jun 2006
Posts: 1,314
Quote originally posted by The Master:
Wow, this routine unlocks some pretty cool stuff, such as a FR/LG Battle Frontier-style thing (the opponents' Pokémon are the same level as your max Pokémon, for example). It's real cool. Nice one, HackMew!
You're welcome :)


Quote originally posted by 0m3GA ARS3NAL:
don't mean to put ya down, but couldn't this be done with a script as well?
As far as I know, there's no special that can do that. Feel free to prove me wrong.
__________________
Reply With Quote
  #5    
Old February 4th, 2010 (10:22 AM).
0m3GA ARS3NAL's Avatar
0m3GA ARS3NAL 0m3GA ARS3NAL is offline
Im comin' home...
Silver Tier
 
Join Date: Jan 2008
Location: Superjail Penitentiary
Age: 22
Gender: Male
Nature: Gentle
Posts: 1,816
No specials really it would just be a long script I suppose... Probably much more space-efficient to use your routine... (A script version would require tons of copybyte's and comparefarbytes' as well as knowing RAM locations of variables, it's better to just use your routine and call it with callasm...)
__________________
>Boot Jailbot
>Pass *****
.
.
Jailbot OS Ver 1.1.2
Greetings Warden
of Superjail Penitentiary
Awaiting user input...

>Display User_Info
╠══User Info══╣
Username:
0m3GA ARS3NAL
Age: 18
Sex: Male ♂
Race: Caucasian
Quote:
"What is this
I don't even..."

M/O: Often acts out to get attention, but recently has changed that. Has been studying up on hacking information and hopes to participate in more advanced hacking discussion.
╠══End of File══╣
Awaiting user input...

>
Reply With Quote
  #6    
Old February 4th, 2010 (12:14 PM).
HackMew's Avatar
HackMew HackMew is offline
Mewtwo Strikes Back
Crystal Tier
 
Join Date: Jun 2006
Posts: 1,314
Quote originally posted by 0m3GA ARS3NAL:
No specials really it would just be a long script I suppose... Probably much more space-efficient to use your routine... (A script version would require tons of copybyte's and comparefarbytes' as well as knowing RAM locations of variables, it's better to just use your routine and call it with callasm...)
Yeah, indeed. Those routines are definitely more space- and time-efficient then any scripting equivalents.
__________________
Reply With Quote
  #7    
Old February 7th, 2010 (06:28 AM).
cooley's Avatar
cooley cooley is offline
///Keepin' it simple
Silver Tier
 
Join Date: Feb 2007
Location: United States
Age: 20
Gender: Male
Nature: Impish
Posts: 1,150
Send a message via Windows Live Messenger to cooley Send a message via Skype™ to cooley
Nice routine. I'll definitely be using this in the long run, thanks a lot!
__________________

Reply With Quote
  #8    
Old May 16th, 2010 (06:51 PM).
xGGxToiZ's Avatar
xGGxToiZ xGGxToiZ is offline
>.//:SO HOT:\\.<
 
Join Date: Mar 2010
Location: We're now near the Tin Tower! . xD
Age: 19
Gender: Male
Nature: Modest
Posts: 44
*Big big Bump*

Wow. This is so cool!
I could use this for my hack

And yeah, it takes less space (about 28 bytes in hex?) than the longer script version.
SO cool.
__________________


JOHTO ELITE FOUR


. . .

Reply With Quote
Reply
Quick Reply

Sponsored Links
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are UTC -8. The time now is 08:23 PM.