Draconius GO
Conversation Between Bond697 and sonic1
Showing Visitor Messages 1 to 8 of 8
  1. sonic1
    April 14th, 2012 4:57 PM
    Well, many thanks, but i don't really like taking other's work. I prefer to find things my way, because i *need* to know/learn how to do things on my own. If someone gives me a full made thing, good, but that way i can't learn the techniques needed to do a similar thing.

    I really appreciate your kindness, thanks
  2. Bond697
    April 14th, 2012 4:34 PM
    i see you're making an emerald idb. do you want mine?
  3. Bond697
    March 18th, 2012 12:52 AM
    it doesn't have to be slower. copy that routine and put it into IWRAM(0x3000000 area) in an open spot and do it that way. IWRAM can handle 32-bit reads.
  4. sonic1
    March 17th, 2012 3:37 PM
    I see! Well, if im not mistaken, all ARM instructions (even bx) can be conditional, right? Can i use that routine and make a version of it, in ARM, for emerald? (i know that its going to be slower because of the 16bit bus, but would it be worth a shot, or not?

    About gen3, i hack it since 2007 xD Asm, though, only 2 years from now, and still have a lot to learn.

    Thanks for the response
  5. Bond697
    March 17th, 2012 8:33 AM
    think about this:

    the arm cpu doesn't do division, right? so.. if someone was to throw:

    u32 doDiv(u32 x, u32 y)
    return (x/y);

    at the cpu, what would it do? short answer: it would do what you're seeing in that routine, with a lot of wasted cycles. It's also in thumb, which means it's going to be even bulkier. same thing for the modulus routine right under it. they're huge.

    that's as opposed to the divmod in dppt, hgss, and bw that is done in arm, is very fast, and returns both the result and the remainder.


    basically, gamefreak could've done a lot better in that regard. the size and speed of the division and modulus routines in emerald are both good examples of why you shouldn't just use division in arm and should actively look for another way.

    e: dunno how much you know about pokemon generation in gen3, but stuff like this is what causes methods 2 and 4 to happen.
  6. sonic1
    March 17th, 2012 4:17 AM
    Ok, many thanks!
    But why is it a great example of why i shouldn't use it on an ARM cpu? (srry for bad english)
  7. Bond697
    March 16th, 2012 9:50 PM
    division: r0/r1, return the result in r0.

    e: unsigned division, and a great example of why you shouldn't use it on an ARM cpu.
  8. sonic1
    March 16th, 2012 9:33 AM
    Hey Bond! Hi! I saw in the notable breakpoints of project pokemon that you are the one who added most of the offsets.
    I came here to ask something to you, related to Pokemon Emerald (U).
    I know that the routine at 082E7B68 is a mathematical operation, but i can't guess what it is. Could you please enlighten me?

    Thanks :D

All times are GMT -8. The time now is 5:39 AM.