• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Code: ASM Resource Thread

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Thread should be updated now. :)
    Thank you so much! :)

    I personally can't imagine how annoying/time consuming it must be to comb through tons of posts to find things to add to the first post and organize them appropriately.
    It looks like its because
    Code:
    found:
    	ldr r2, .MON
    	strb r5, [r2]
    	pop {r0-r6, pc}
    	
    
    none:
    	ldr r0, .MON
    	mov r1, #0x6
    	strb r1, [r0]
    	pop {r0-r6, pc}
    Kanto and Johto work by the fact that setting their var by script also clears the upper byte. But for anything beyond 255, you have it set to 1 or higher for the upper part of the halfword. Just change them to store a halfword instead.
    Huh. Reading through the code it makes it seem like those two commands end up storing the party position instead of Pokémon species. It'd only need a byte for the former. Or maybe I'm still not getting how all these things behave with one another.

    Regardless, it works. Thanks!
     
    417
    Posts
    9
    Years
    • Seen Nov 20, 2016
    Thank you so much! :)

    I personally can't imagine how annoying/time consuming it must be to comb through tons of posts to find things to add to the first post and organize them appropriately.

    Huh. Reading through the code it makes it seem like those two commands end up storing the party position instead of Pokémon species. It'd only need a byte for the former. Or maybe I'm still not getting how all these things behave with one another.

    Regardless, it works. Thanks!
    Oh, you're right on that, it is storing the party position. What I mean is that variables take up two bytes. So when you do

    setvar 0x8000 VENUSAUR
    The address of var8000 looks like 0x03 0x00 (flipped because little endian).

    Then when you write the return, the var correctly has 0x00 as the upper byte.
    But if you have something like

    setvar 0x8000 TREECKO
    The address of var8000 looks like 0x15 0x01 (because treecko is 0x115).

    Then when you store the party slot only as a byte, the 0x1 is still there.
    So when you use something like compare to check the var in a script, it ends up being 0x100 more than the party slot. When dealing with vars in asm, its good practice to load and store halfwords (unless there's some specific reason not to).
     

    Lunos

    Random Uruguayan User
    3,114
    Posts
    15
    Years
  • Updated light ball to raise Pikachu's attack:

    Spoiler:

    Tried it and whenever a Pokémon uses a Physical Attack, the game instantly freezes right there.
    This is a FR USA v1.0 Routine, right?
    Also, it does replace the way that the native Light Ball works giving it this new effect at the same time, right?

    Because I already checked and I'm sure I didn't failed in any step, what I did basically was:

    1) Copying the routine into a clean .txt and converting it to .bin, which ended up like this:
    Code:
    53 46 2D 2B 09 D0 41 2B 0C D1 30 88 68 38 00 04 00 0C 01 28 06 D8 04 49 08 47 30 88 19 28 01 D1 01 49 08 47 01 49 08 47 33 F0 03 08 37 F0 03 08
    I pasted it on 456750.

    2) Then I went to 3F020 and typed: 00 49 08 47 50 67 45 08 00 00 00 00 00 00 00 00 00 00
    Tried the new ROM, and got surprised by the battle freezing when my Lv5 Pikachu with a Light Ball equipped frozened the game in the moment he tried to use "Slam" on a Wild Pidgey. In another try also noticed that another Wild Pidgey's Tackle could freeze the game too.
     

    BluRose

    blu rass
    811
    Posts
    10
    Years
  • Spoiler:
    hi, by the way!
    you forgot/didn't +1 for THUMB mode
    3F020 = 00 49 08 47 51 67 45 08 00 00 00 00 00 00 00 00 00 00
     

    Froosty

    The_Learner
    535
    Posts
    9
    Years
  • I've noticed significant demand for working Dawn Stone evolutions, specifically ones that require the mon to be a specific gender. My bad if this is already posted somewhere but here y'all go:

    Code:
    .org 0x4318e
    lsl r0, r0, #0x0
    ldr r2, .MethodAddr
    bx r2
    
    .MethodAddr: .word 0x085B2521 #UPDATE THIS TO MAIN FUNCTION OFFSET+1
    
    
    .org 0x5B2520 #UPDATE THIS TO MOST CONVENIENT FREE SPACE IN YOUR HACK
    cmp r0, #0x7
    beq StandardStone
    cmp r0, #0x14 #UPDATE THIS
    beq MaleStone
    cmp r0, #0x15 #UPDATE THIS
    beq FemaleStone
    b NoEvo
    
    MaleStone:
    push {r1-r3}
    mov r0, r7
    mov r1, r8
    ldr r1, [r1, #0x0]
    bl DetermineGender
    pop {r1-r3}
    cmp r0, #0x0
    beq StandardStone
    b NoEvo
    
    
    FemaleStone:
    push {r1-r3}
    mov r0, r7
    mov r1, r8
    ldr r1, [r1, #0x0]
    bl DetermineGender
    pop {r1-r3}
    cmp r0, #0xFE
    beq StandardStone
    b NoEvo
    
    
    StandardStone:
    ldrh r0, [r1, #0x2]
    cmp r0, r9
    beq Finish
    
    NoEvo:
    ldr r2, .NoEvoReturn
    bx r2
    
    DetermineGender:
    ldr r2, .DetermineGenderFunc
    bx r2
    
    Finish:
    ldr r2, .EvoReturn
    bx r2
    
    .NoEvoReturn: .word 0x08043199
    .EvoReturn: .word 0x0804317d
    .DetermineGenderFunc: .word 0x0803f78d
    Change the values in the lines marked UPDATE THIS to the indexes of male stone evos and female stone evos. Leave their entries blank in the general evolution table; stone evolutions function differently from level-up evolutions.


    cmp r0, #0x7
    beq StandardStone
    cmp r0, #0x14 #UPDATE THIS
    beq MaleStone
    cmp r0, #0x15 #UPDATE THIS
    beq FemaleStone


    what do i update the underlined codes to??
    are they the item index number or what else?
    pls answer me!
    need it for my hack!

    thanks in advance :D

    ----------------------------check my hack progress--------------------------------
    album.php
     
    146
    Posts
    11
    Years
    • CO
    • Seen Mar 16, 2023
    Would anyone happen to have JPANs custom input routine?

    If not, then if I may make a request.
    Trying to get a number/character input menu for custom keypad passwords ect...
    If possible it would be much appreciated ^_^
     

    BLAx501!

    Pokemon Flux
    80
    Posts
    10
    Years
  • Would anyone happen to have JPANs custom input routine?

    If not, then if I may make a request.
    Trying to get a number/character input menu for custom keypad passwords ect...
    If possible it would be much appreciated ^_^

    Found it somewhere around my computer. I never found out how to use this correctly (despite the readme file with the explanation) so that's all up to you xD
     
    146
    Posts
    11
    Years
    • CO
    • Seen Mar 16, 2023
    Found it somewhere around my computer. I never found out how to use this correctly (despite the readme file with the explanation) so that's all up to you xD

    Nice!
    That would be amazing if you could pm it to me...
    I think I should be able to manage ^_^
     
    146
    Posts
    11
    Years
    • CO
    • Seen Mar 16, 2023
    I'm stupid and I forgot to paste the download link xDDD
    Here you are: http://www.mediafire.com/download/pt18qmw8k78pmco/number_box.zip

    I'll take another look to it tonight anyways :p


    Sweet!!!
    Thank you very much ^_^

    It works like a charm, just when you insert it go to your pointer(0x800000) + 0x164 and at that offset insert
    your pointer(0x800000) + 0x0179 = 0x800179 in reverse hex = 79 01 80.

    Then just create a XSE script and make sure lockall comes before the callasm.
    While callasm is followed by waitstate then just make sure to releaseall at the end...

    Thanks again though been looking for this for a bit now.
     

    Froosty

    The_Learner
    535
    Posts
    9
    Years
  • All the codes are now on github and the auto-insertion is completed via armips.
    https://github.com/jiangzhengwenjz/Double_wild_battle

    Old post:
    Spoiler:


    Its actually great.
    I havent tried it yet but surely will add it to my upcoming hack.
    By the way one question, Inserting these routines and making changes to the pointer listed in the routines will automatically activate the double battle or there is something else I need to do?
    pls answer.
    thanks in advance :)
     

    Froosty

    The_Learner
    535
    Posts
    9
    Years
  • evolution type number

    Sorry I didnt knew that you had replied to me!
    BY the way "evolution type number"
    "There are already existing upto 15"
    it means if I have already added two new methods "male(level up)(16) and female(17)(level up)"
    and If I want to make male and female evolve with stones then i should add 18 and 19 in those places ??

    thanks for your previous reply and hope you wil again make a reply.
    Thanks in advance. :)



    EDIT:
    Also Dawn stone only does the gender evolution thing, and I dont find any statement of dawn stone, can you tell me how it works with dawn stone :)
    What exactly I am asking is will only dawn stone work with gender evolution or any other stone also???
     
    Last edited:

    BLAx501!

    Pokemon Flux
    80
    Posts
    10
    Years
  • It works like a charm, just when you insert it go to your pointer(0x800000) + 0x164 and at that offset insert
    your pointer(0x800000) + 0x0179 = 0x800179 in reverse hex = 79 01 80.

    I knew that but I guess I messed up with something since when buffering the number to display it on a textbox, it showed up the cursor too :/
     

    Mystery Man

    Don't be like me!
    207
    Posts
    12
    Years
    • Seen Aug 21, 2023
    There are a lot of things I like in JPAN's hacked engine. Unfortunately, it's only for Firered, and now that I am hacking Emerald, I have attempted to make something similar to it so myself and other people can access Emerald's decryptor and encryptor pretty easily via scripting. Here are my first public ASM routines, if you will.

    Emerald Pokemon Decryptor
    Spoiler:


    Emerald Pokemon Encryptor:
    Spoiler:


    I do have a few more ASM routines that appear to work correctly, but obviously, I am an ASM neophyte, so before posting the other ones, I would like to become more adept at doing these sorts of things to ensure my routines will give people the least amount of problems possible. I am posting this under the assumption that nobody else has publicized a routine like this for Emerald, so if somebody else has already done it before the time this has been posted, let me know so I can delete this post.
     
    Last edited:

    BluRose

    blu rass
    811
    Posts
    10
    Years
  • Its actually great.
    I havent tried it yet but surely will add it to my upcoming hack.
    By the way one question, Inserting these routines and making changes to the pointer listed in the routines will automatically activate the double battle or there is something else I need to do?
    pls answer.
    thanks in advance :)
    hiya!
    old post routines:
    Spoiler:

    for the new routines in the github link, i believe it's about a 50% chance (the last time i had it explained to me it was ahaha)

    EDIT: well, i guess i'll ask something
    can someone make fbi's set static party level routine only work if the pokémon is above the level indicated and/or for a certain slot only? either would work, but preferably for a certain slot~
     
    Last edited:

    Froosty

    The_Learner
    535
    Posts
    9
    Years
  • hiya!
    old post routines:
    Spoiler:

    for the new routines in the github link, i believe it's about a 50% chance (the last time i had it explained to me it was ahaha)

    EDIT: well, i guess i'll ask something
    can someone make fbi's set static party level routine only work if the pokémon is above the level indicated and/or for a certain slot only? either would work, but preferably for a certain slot~

    Thanks for reply and one more thing,
    Will the old routice work nicely??
    I mean no major bugs??
    If there are ani major or minor bugs pls state if you know :)
     

    BluRose

    blu rass
    811
    Posts
    10
    Years
  • Thanks for reply and one more thing,
    Will the old routice work nicely??
    I mean no major bugs??
    If there are ani major or minor bugs pls state if you know :)
    so there are a few things, but nothing that crashes/freezes/stops gameplay
    if you catch the pokémon on the left, it displays the one on the right's name and the sprite after catching. it's fine when nicknamed and all that, though. the one on the right is also the only one faded when the battle starts
    you can select run for each pokémon (twice)
    you can use poké balls twice, but only when there is one pokémon
    when a pokémon faints, it asks if you'd like to switch right away. this is how it generally works, BUT when you have no pokémon to switch to, it still asks but then continues the battle regardles of choice.

    EDIT: probaby more i just haven't encountered them ahaha
     

    Froosty

    The_Learner
    535
    Posts
    9
    Years
  • so there are a few things, but nothing that crashes/freezes/stops gameplay
    if you catch the on the left, it displays the one on the right's name and the sprite after catching. it's fine when nicknamed and all that, though. the one on the right is also the only one faded when the battle starts
    you can select run for each (twice)
    you can use poké balls twice, but only when there is one
    when a faints, it asks if you'd like to switch right away. this is how it generally works, BUT when you have no to switch to, it still asks but then continues the battle regardles of choice.

    EDIT: probaby more i just haven't encountered them ahaha

    So these are only the minor bugs that wont affect the gameplay!
    Thanks most probably i will use it :)


    EDIT2: result in attachment, it is really awesome
     

    Attachments

    • BPRE0_02.png
      BPRE0_02.png
      8 KB · Views: 20
    Last edited:
    Back
    Top