Go Back   The PokéCommunity Forums > Members List
Reload this Page kearnseyboy6's Profile

Notices
For all updates, view the main page.



kearnseyboy6 kearnseyboy6 is offline

Aussie's Toughest Mudder

Visitor Messages

Showing Visitor Messages 1 to 15 of 269
  1. FamiliaWerneck
    1 Week Ago 05:53 AM
    FamiliaWerneck
    I didn't know I could not cancel a stone evolution. If we could make it impossible to cancel Slowpoke's evolution, that would be perfect.
    Are you sure you don't know how that works?
  2. FamiliaWerneck
    2 Weeks Ago 07:26 AM
    FamiliaWerneck
    Ok, I understand now the special routine thing.

    So basically, what you are saying is that there's no way to cancel with the B button all this custom evolutions you guys did?
    Or you are saying the evolution screen only loads if the routine is true? That way, canceling the evolution via the B button is standart (default, whatever) and there's no need to implement it. Is that it?
  3. FamiliaWerneck
    2 Weeks Ago 07:21 AM
    FamiliaWerneck
    Almost everything is pretty much clear, now. I did saw your link, but got nothing out of it.
    Looking now, I find some important stuff. Still kinda lost with the special routines. You will understand.
    Let's see if I get it.
    Check this:
    Spoiler:
    .text
    .align 2
    .thumb
    .thumb_func
    .global mantykeevo

    main:
    push {r0-r7}
    add r0, r6, r7
    lsl r0, r0, #0x3
    add r0, r2, r0
    add r3, r0, r3
    ldrh r2, [r3, #0x2] @up until here, all standart stuff
    mov r5, #0x0 @counter for the party Pokémon

    loop: ldr r0, firstpoke @loads the first Pokémon in your party, I think... (speacil routine, don't get it, you see)
    mov r1, #0xB @moves the information B bytes, so you get the species byte (now, this I got from the link you gave me)
    mov r6, #0x64 @this moves 64 bytes, which is the total bytes for a party Pokémon
    add r4, r5, #0x0 @this adds the counter of the party Pokémon, so you know what Pokémon you are currently checking
    mul r4, r6 @this multiplies the 64 bytes for the counter of party Pokémon, so it jumps all the bytes of the Pokémon that were already checked.
    add r0, r0, r4 @this adds the current Pokémon to be checked to the first Pokémon, so the game knows it's going to jump X bytes starting from the first Pokémon
    bl decrypt @it branches to the "decrypt" section and returns here after that
    mov r9, r0 @moves safely the Pokémon that is to be checked in r0 to r9
    pop {r0-r7} @clears the registers
    mov r1, r9 @move the Pokémon from r9 to r1
    cmp r1, r2 @compares the current Pokémon species with the argument stored in r2
    beq levelcheck @if it is the right species, it goes to levelcheck
    cmp r5, #0x5 @it compares the Pokémon counter to five (with 0, 5 will be the sixth Pokémon, meaning you have no more party Pokémon to compare with)
    beq exit @if you don't have any more Pokémon to compare, it doesn't evolve
    add r5, #0x1 @if you have more Pokémon to compare, the counter is added by one, so you go to the next Pokémon when it loops
    b loop @restarts the looping

    levelcheck: mov r10, r3 @moves the information in r3 to r10 (what information, exactly, I don't know...)
    pop {r0-r7} @clears the registers
    mov r1, r10 @moves the information back safely to r1
    ldr r0, levelcheckloc @actually makes the evolution happen?
    bx r0 @ends the evolution?

    exit: pop {r0-r7} @clears the registers, as the requirements for evolutions were not met
    ldr r0, noevo @loads back the overworld, from what you told me
    bx r0 @ends the routine?

    decrypt: push {r0-r7}
    ldr r2, decryptpoke @loads the current Pokémon species in r2
    bx r2 @returns the current Pokémon species and stuff to r2

    .align
    firstpoke: .word 0x02024284
    levelcheckloc: .word 0x0804310D
    noevo: .word 0x08043111
    decryptpoke: .word 0x0803FBE9


    Is that it? Did I get it all?
    You see what I meant, by me still not getting some stuff?
    Also, where in the code is the function "Cancel evolution by B button"?

    Ok, and now, if that was all correct (or not =P), this would be for the Slowpoke with Shellder's removal:
    Spoiler:
    .text
    .align 2
    .thumb
    .thumb_func
    .global slowpokeevo

    main:
    push {r0-r7}
    add r0, r6, r7
    lsl r0, r0, #0x3
    add r0, r2, r0
    add r3, r0, r3
    ldrh r2, [r3, #0x2]
    mov r5, #0x0

    loop: ldr r0, firstpoke
    mov r1, #0xB
    mov r6, #0x64
    add r4, r5, #0x0
    mul r4, r6
    add r0, r0, r4
    bl decrypt
    mov r9, r0
    pop {r0-r7}
    mov r1, r9
    cmp r1, r2
    beq levelcheck
    cmp r5, #0x5
    beq exit
    add r5, #0x1
    b loop

    levelcheck: mov r10, r3
    pop {r0-r7}
    mov r1, r10
    ldr r0, levelcheckloc
    HackMew's (or anyone else's) Pokémon removal code (where I would use a b function and either write the other code here too [bl in that case], or somewhere in the ROM and specify its address down here)
    bx r0

    exit: pop {r0-r7}
    ldr r0, noevo
    bx r0

    decrypt: push {r0-r7}
    ldr r2, decryptpoke
    bx r2

    .align
    firstpoke: .word 0x02024284
    levelcheckloc: .word 0x0804310D
    noevo: .word 0x08043111
    decryptpoke: .word 0x0803FBE9

    Would that be it?
  4. FamiliaWerneck
    2 Weeks Ago 08:17 AM
    FamiliaWerneck
    No problem, I stay on all the time.
    Here goes then:
    Spoiler:
    ldrh r2, [r3, #0x2] @this loads the 'argument' you see in G3HS. There is no need for this...

    If this is not necessary, why is it there? I don't get it. If it loads the argument in G3HS, isn't this important?

    Spoiler:
    bl decrypt...

    About the b function, in the tutorials I read, there's no "l" to combine with it. All the combinations are two letter big, like eq or ge. What this "l" and the "x" (bx function) does with combined with b?
    What does decrypt do? Do you specify it later in the code? I ask this, because in some other code I saw a b"something" "label", but this label was not specified in the same code. What goes on here?

    Spoiler:
    mov r6, #0xC @move data is 12 bytes long ie. 0xC

    Ain't registers supposed to store only a word (4 bytes, two half-words...)? Why 12 bytes stored in a single register? Or is it just the address of the move data information?

    Spoiler:
    cmp r4, #0x16 @This must be the value assigned to Fairy? check the MrDS ini to confirm.

    I believe Fairy's type number is #0x17. Not sure though (not using Fairy).

    Spoiler:
    decrypt:
    push {r0-r2}
    .
    .
    .
    ldr r2, decryptpoke @loads the special routine
    bx r2 @gets the move and puts it in r2 and goes back to the loop

    How can you push r0, r1 and r2 if you didn't pop them back when you enter this branch?
    What is decryptpoke (special routine, reading what you said. But how do I know what it does? What are this special routines?)?
    Again, b function, with the "x" I told you. What's up with that? (Also, what is b used for with no other letter?)

    Spoiler:
    true:
    mov r9, r3
    pop {r0-r7}
    mov r1, r9
    ldr r0, levelcheckloc
    bx r0

    exit:
    pop {r0-r7}
    ldr r0, noevo
    bx r0

    How can you use r9 without pushing it?
    levelcheckloc and noevo are, by the way things are going, special routines. For what? Do they cover the "Cancel evolution with B button" thing?

    Spoiler:
    .align

    Finally, why .align in the end? And why not .align2?

    That's all for this code. It did seem pretty simple in the middle. My problem is mostly, looking at it now, the functions and special routines. Other stuff look as a normal programming language now that you explained.
    Thanks again for taking the time for it. You are an awesome person!
  5. FamiliaWerneck
    2 Weeks Ago 05:39 AM
    FamiliaWerneck
    Can I still ask stuff I don't understand? Do you have facebook, or other way we could talk faster?
    Bet I can take all my doubts in 10 minutes... =/
  6. FamiliaWerneck
    2 Weeks Ago 02:10 AM
    FamiliaWerneck
    I just can't believe you man!
    You don't exist! *-----*
    Thanks a lot! Is there something I can do to thank you for this man?
    You can't imagine how happy I am. Thanks!
  7. FamiliaWerneck
    2 Weeks Ago 09:05 PM
    FamiliaWerneck
    No need to test.
    I actually wanted a step-by-step explanation of your own routines, and then show you what I can make of it.
    For example, I'll take the Male Evolution. Let's look at it in parts:

    Part 1:
    Spoiler:
    .text
    .align2
    .thumb
    .thumb_func
    .global maleevo

    Until here, all good. Every simple tutorial has these explained. They just need to be there, ok, got it. Thank you, you are welcome.

    Part 2:
    Spoiler:
    main:
    push {r0-r7}

    Ok, main is called and you start the code by pushing register r0 to r7 (total 8 registers) into the stack. Here lies my first doubt. Why, like in three tutorials I saw in the site, you didn't push lr (link register) into the stack, aswell?

    Part 3:
    Spoiler:
    add r0, r6, r7

    Well. Right here is where all my reasoning breaks. Why do you add r6 and r7 and place the result in r0? I mean, you just pushed those registers into the stack. Weren't they supposed to be empty? Why did you add those? How could you? (Too dramatic? =P Just kidding. But seriously...) And what does this add do? What is stored in r6 and r7 that you need added?

    Rest of the code:
    Spoiler:
    lsl r0, r0, #0x3
    add r0, r2, r0
    add r3, r0, r3
    ldrb r2, [r3, #0x2]
    mov r0, r8
    bl decrypt2
    mov r11, r0
    pop {r0-r7}
    mov r1, r11
    cmp r1, r2
    blt exit
    mov r0, r8
    mov r1, #0xFF
    ldr r0, [r0, #0x0]
    and r1, r0
    mov r0, r8
    bl decrypt
    mov r11, r0
    pop {r0-r7}
    mov r5, r11
    ldr r2, pokemondata
    mov r4, #0x1C
    mul r5, r4
    add r5, r5, r2
    ldrb r5, [r5, #0x10]
    cmp r1, r5
    blt exit
    mov r10, r3
    pop {r0-r7}
    mov r1, r10
    ldr r0, levelcheckloc
    bx r0
    exit: pop {r0-r7}
    ldr r0, noevo
    bx r0
    decrypt: push {r0-r7}
    mov r1, #0xB
    ldr r2, decryptpoke
    bx r2
    decrypt2: push {r0-r7}
    mov r1, #0x38
    ldr r2, decryptpoke
    bx r2
    .align
    levelcheckloc: .word 0x0804310D
    noevo: .word 0x08043111
    decryptpoke: .word 0x0803FBE9
    pokemondata: .word 0x08254784


    I won't ask the rest until I understand parts 2 and 3.
    If you wanna help (and it's no problem, of course), I'd love to learn from you. I swear I'm very dedicated and a fast learner, though this may be disguised by my curiosity. =P
    joexv also said he wanted to help me. =D
    Anyways, thanks in advance man. You are awesome!
  8. FamiliaWerneck
    2 Weeks Ago 04:40 AM
    FamiliaWerneck
    Sup man.
    Sorry bothering you with stuff likethis.
    Can you help me in the ASM field?
    I started studying it this week, and I'm getting better, but I need help with the evolution routines.
    Can you check if what I do is right? I believe from a code to another, I'll just have to change the item, as the evolution method will be probably the same.
    Can you help?
  9. FBI agent
    4 Weeks Ago 04:04 AM
    FBI agent
    0x8000 = 0x0 ; Pokemon is put in party
    0x8000 = 0x1; Pokemon is put in storage

    0x8004 = Pokemon slot number.
  10. FamiliaWerneck
    4 Weeks Ago 02:56 PM
    FamiliaWerneck
    Thanks for the help. I'll try not messing too much up.
    I just asked that because of my National Pokédex test. I'm feeling something's missing there.
    Sorry bothering you more with this, I'll get into it later, waiting for the weekend, actually.
    But how do you find tables and locations in hex, asm or scripts for game mechanics, like the evolution methods?
    I'm trying to find breeding and nature mechanics so I can change them.
    Again, thanks for the help man. Anything you need, though I'm only a beginner, you just ask.
  11. FamiliaWerneck
    May 25th, 2015 06:48 AM
    FamiliaWerneck
    Got it. So you just put a Pokémon with that type of evolution in Route 1, put him to evolve at a low level, or have someone give you an item, and them you try it.
    I actually do this.
    But is there any chance you just ruin something else, while this part of the game you changed works correctly.
    Also "And yes you were right (it was the last one)". What was I right about? I said so much... =P
  12. FamiliaWerneck
    May 24th, 2015 06:15 PM
    FamiliaWerneck
    Also, this question comes from a second line of research I'm doing. XP (oh yeah! HAHAHAHA)
    I tried a new way of unlocking the National Dex early in the game. I've tested it, and so far, so good.
    But how do you test what you do? How do you know if you didn't psyduck something up in the game?
  13. FamiliaWerneck
    May 24th, 2015 06:12 PM
    FamiliaWerneck
    Ok, but if it's doable ok.
    I made a list with every Pokémon I intend to have in my game, with their respectives evolution conditions. I don't mind writing an evolution for each.
    Question is, do I have to make an evolution like that for each Pokémon like Onix, or for each item, like Metal Coat?
    I'm using that only in last case.
    Also, thought of another way. Using these items like "evolutionary stones". But they would only work if the Pokémon was at least level X.
    Pokémon wouldn't need to hold the item to evolve, thus making one less argument.
    Can that be done more efficiently? Or would I have to write an evolution method for each "evolutionary stone" too?
  14. FamiliaWerneck
    May 24th, 2015 04:36 AM
    FamiliaWerneck
    Oh, I get it. So basically, I can't for example make Onix evolve into Steelix at level 50+ with Metal Coat. Is that it?
  15. FamiliaWerneck
    May 24th, 2015 01:55 AM
    FamiliaWerneck
    I didn't get it. Why can't I make a Level + Item evolution?
    I believe that already exists in some hacked ROMs, plus a lot of people discussed this in yor thread.
    What do you mean by "there is only one argument allowed you cannot."?

About Me

  • Signature
    HOLIDAYING CURRENTLY!!

Statistics

Total Posts
Activity by Forum
Visitor Messages
Blog
General Information
  • Last Activity: 1 Day Ago 04:52 AM
  • Join Date: December 28th, 2008
  • Referrals: 0

Friends

Showing Friends 1 to 16 of 16

All times are UTC -8. The time now is 01:52 PM.