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

For all updates, view the main page.

GoGoJJTech's Profile Picture
Community Supporter

GoGoJJTech GoGoJJTech is offline

http://GoGoJJTech.com (WIP!)

Visitor Messages

Showing Visitor Messages 961 to 975 of 1492
  1. karatekid552
    September 2nd, 2013 02:18 AM
    Dude, why did you design those as OWs??? I mean seriously. Massive objects like that put a HUGE strain on the processor. Tiles would be much more efficient.

    Also, you really need to learn ASM well.... With this code, you can't use Dawn's OW in that slot. The code works like this:

    cmp r0, #0xD
    bgt no_change /*Branch if sprite to be loaded is greater than 0xD, or not a player sprite).
    cmp r0, #0x7
    blt hero_change
    sub r0, #0x7
    b hero_change

    It runs based upon the sprite being loaded, independent of male or female (note the sub r0, #0x7. It is going to use the same loader for both male and female.). So, you are going to run into conflicts when you encounter Dawn. Simple to fix in any case, just copy Dawn's main sprite to a fresh slot and change OWs to work that way. This was an issue in JPAN's hack itself, only mine forces it to be apparent easily. If you had ever tried to use the hero changer, it would have changed Dawn's sprite too. (Note that if you are playing as Dawn, this will affect the male player NPC too.)

    Edit 2:
    ANNNNNNNNNND I removed my ASM for the OW hack, and those palette errors still happen.

    I found that it defaulted to slot 2 because it's palette slot byte was 12, but the slot was just 2. The initial loader will load this correctly, but the one at the start menu won't (the reloader...). So, using 04 as that byte always keeps it in slot 4.

    However, even when I get it back in its normal slot, the error still happens.

    /me thinks a limiter on the reloader wasn't removed....

    Edit 3:
    Omg.... I looked at it.... This is ridiculous...

    So, now I REALLY know why GF only had 15 palettes....

    When the reloader is called, it doesn't cycle through the OWs and load their palettes. No, it goes through and does this:

    load palette 0 into slot 0
    load palette 1 into slot 1
    load palette 3 into slot 2
    load palette 4 into slot 3
    load palette 5 into slot 4 <- This is the conflict!
    load palette 6 into slot 5
    load palette 7 into slot 6
    load palette 8 into slot 7
    load palette 9 into slot 8
    load palette A into slot 9

    I think if I rewrite my ASM to write the palette every frame, that I may be able to make this code null-in-void.
  2. Le pug
    September 1st, 2013 10:05 PM
    Le pug

    well i take your advice and use advancemap 1.92 and this happens.....

    I opened it again in advancemap 1.95 to see if 1.92 was the problem and the above image is from 1.95.
    when opened in 1.92, all the maps that are in banks after 3 are completely gone but in 1.95, the connection list shows they are still there.

    i created new maps by Insert Map > Create New Space > 1 Reserved map

    and it would work. I could change anything on them and go back and forth between maps. Then I was working on a map, went to header and changed the height by like 4 units and every map went to "create new map" and now there is only 3 banks... and all the maps are apparently still there which is good because if they weren't, i'd quit for good lol. but however i can't figure why that happened and how to fix it.
  3. karatekid552
    September 1st, 2013 02:21 PM

    You mean that little palette glitch? It only occurs directly after the switch and before a warp.
  4. karatekid552
    September 1st, 2013 01:14 PM
    That doesn't happen to me. Are you using a BIOS file with VBA?

    Also, I had to erase your script on the fat guy to test the hero change. Just compile this in XSE to fix it:

    #org 0x7FA000
    msgbox 0x87FA024 MSG_FACE '"Technology just blows me away!\pI ..."

    ' Strings
    #org 0x7FA024
    = Technology just blows me away!\pI mean, now you can play with\npeople around the world...\lwirelessly!
  5. karatekid552
  6. karatekid552
    September 1st, 2013 12:55 PM
    I was right, it wasn't aligned. One sec, I'll compile, insert, and send you the rom.
  7. karatekid552
    September 1st, 2013 12:53 PM
    I didn't send it because I had to delete these lines in order to fit it:

    lsl r0, #0x18
    lsr r0, #0x18

    Those are only needed if the table has more than 256 OWs in it, so it was safe to overwrite for testing purposes, but not safe for continued usage.
  8. karatekid552
    September 1st, 2013 12:42 PM
    Just send me the ASM on here. It might just need to be aligned.

    I also ran some tests, and adding that line fixes both issues.
  9. karatekid552
    September 1st, 2013 12:34 PM
    After looking at it more and putting it in super slow mo, that is because there is a conflict based on two sprites trying to load in the same slot, at the same time. This is an issue dependent on the issue we had earlier and should go away when you add in the "mov r11, r0" line.
  10. karatekid552
    September 1st, 2013 12:22 PM
    I also see your issue, but you have it backwards. The changed palette is being loaded, but not the sprite...

    The only reason you are getting it is because the start menu has a lock command. If we could remove that.....

    Or I'll look for a separate sprite loading routine.
  11. karatekid552
    September 1st, 2013 12:19 PM
    I found the main issue, and that is that I forgot the most important line in the whole routine!!!!

    Ugghh, this was an after add in so I could make sure we were only editing the hero.

    Add this line in(It's in RED):

    .align 2

    .org 0x08XXXXXX /*Offset you plan to place this ASM. Works
    like #Dynamic in scripting in order to create dynamic labels
    that work. Otherwise, you will get bad pointers and such.*/

    /*third and final change for the number of overworlds is
    at 0x0805f2ca. In order to mantain the original functions
    from the game, slots 0ef->0ff are not able to hold original
    OW's, but 16 slots are nothing compared with the remainder

    get_ow_change: ldr r1, get_new_ow
    bx r1

    get_new_ow: pointer

    or, compiled
    00 00 00 49 08 47 Pointer

    to be placed at 0x0805f2de to complement the code
    ef_call: mov r1, #0x0
    ldr r2, end_check_addr
    bx r2

    end_check_addr: pointer

    00 21 00 4a 10 47 Pointer

    this code also reflects the possibility of change on the
    hero OW, performing a simple check on the designated addresses.*/

    get_ow_addr: push {r2-r4}
    lsl r1, r0, #0x10
    lsr r1, r1, #0x18
    mov r11, r0
    lsl r0, r0, #0x18
    lsr r0, r0, #0x18
    ldr r4, new_ow_table
    cmp r1, #0xff
    beq special_decrypter
    more_check: cmp r1, #0xff
    bgt go_old /*to allow for a multi-sized Table table*/
    cmp r1, #0x0
    bne end_check
    cmp r0, #0xef
    bgt go_old
    bl multi_check
    end_check: lsl r1, r1, #0x2
    add r3, r4, r1
    ldr r2, [r3]
    cmp r2, #0x0
    bne location_real
    ldr r2, [r4]
    location_real: ldr r1, main
    bx r1

    end_ow_change: pop {r2-r4}
    pop {r1}
    bx r1
    special_decrypter: cmp r0, #0xf /*change here for more variables usable*/
    bgt more_check
    ldr r1, var_4080
    add r0, r1, r0
    bl call_var_decrypt
    ldrb r1, [r0, #0x1]
    ldrb r0, [r0]
    b end_check

    new_ow_table: .word /*0x081a2000*/ 0xffffffff
    var_4080: .word /*0x00004080*/ 0xffffffff
    go_old: pop {r2-r4}
    ldr r1, loader_call
    bx r1

    /*this is the check that allows for trainer OW switch
    How it works: Vars 4054-59 must have a value. 0x0 for the
    default sprite, 0xyyyy for the new sprite*/
    multi_check: push {lr}
    push {r0, r1}
    cmp r0, #0xD
    bgt no_change
    cmp r0, #0x7
    blt hero_change
    sub r0, #0x7
    hero_change: ldr r1, var_Hero
    add r0, r0, r1
    bl call_var_decrypt
    b end_multi_check
    no_change: pop {r0,r1}
    pop {pc}

    end_multi_check: ldrh r1, [r0]
    cmp r1, #0x0
    beq no_change
    lsl r0, r1, #0x18
    lsr r0, r0, #0x18
    lsr r1, r1, #0x8
    pop {r2,r3}
    pop {pc}
    .hword 0x0000
    var_Hero: .word /*0x00004054*/0xffffffff
    loader_call: .word 0x0805f2d5
    /*to increase the palettes, simply repoint 0x083a5158 to a new location*/

    call_var_decrypt: ldr r2, var_decrypt
    bx r2
    var_decrypt: .word 0x0806E455

    .align 2
    /*.global runtime_player_customization_fix*/

    lsl r0, r0, #0x2
    add r3, r2, r0
    ldr r0, [r3]
    cmp r0, #0x0
    bne not_equal
    ldr r3, [r4]
    add r3,#0x40
    ldr r0,[r3]
    ldr r1, return
    bx r1
    push {r0-r3}
    mov r2, r11
    cmp r2, #0xD
    ble hero
    pop {r0-r3}
    ldr r1, return
    bx r1

    mov r2, r0
    ldr r0, [r0,#0x1C]
    ldr r1, oamt_state_hero
    push {r0-r1}
    ldr r1, [r1,#0xC]
    cmp r0, r1
    beq end_now
    ldr r0, .0x05000000
    ldr r0, [r0]
    mov r1, #0x0
    cmp r0, r1
    beq end_now
    pop {r0-r1}
    str r0, [r1,#0xC] /*Store GFX table in OAMT state*/
    mov r0, r2
    ldr r0, [r0,#0x18]
    ldr r1, oamt_state_hero /*Store animation table in OAMT state*/
    str r0, [r1,#0x8]
    mov r0, r2
    ldrb r0, [r0,#0x2]
    ldr r1, OW_palette_table /*prepare to search for palette*/
    add r1, r1, #0x4
    b skip
    add r1, r1, #0x8 /*continue searching for palette in palette table*/
    ldrb r3, [r1]
    cmp r0, r3
    bne loop
    end_loop: /*Found palette*/
    sub r1, r1, #0x4
    ldr r1, [r1]
    mov r2, r1
    ldr r1, [r1]
    ldr r0, palette_buffer_slot_1
    mov r3, #0x0
    str_loop: /*store all of palette in palette buffer*/
    add r3, r3, #0x1
    str r1, [r0]
    add r1, r2, #0x4
    add r2, r2, #0x4
    ldr r1, [r1]
    add r0, r0, #0x4
    cmp r3, #0x8
    beq end_str_loop
    b str_loop
    mov r2, #0x0
    mov r11, r2
    pop {r0-r3}
    ldr r1, return
    bx r1

    pop {r0-r1}
    b end_str_loop

    .align 2
    oamt_state_hero: .word 0x0202063C
    OW_palette_table: .word 0x08FFFFFF
    palette_buffer_slot_1: .word 0x020377F8
    return: .word end_ow_change
    .0x05000000: .word 0x05000000
  12. karatekid552
    September 1st, 2013 12:05 PM
    Hmmmmm. Let me play with it...
  13. karatekid552
    September 1st, 2013 11:29 AM
    Oh, whooops, forgot the +1 on that pointer I added.

    Here is the rom: https://www.dropbox.com/s/31iefcjpkdl925n/PLATINUM%20RED%20%28ow%20fix%29.gba

    It works now, I was able to test it.

    For DC, I just hacked the old routine and added on, I didn't do it this way, which is why this asm had issues. I hadn't tested it before. DC also required extra checks because there is one sprite in particular that I wanted warping to occur in order to change the sprite's size, so I cancelled auto-load for that sprite.
  14. Telinc1
    September 1st, 2013 02:24 AM
    Oh, I didn't know it does that. I already have a Dropbox (actually, that image is uploaded there). Will edit immediately. Thanks for letting me know!
  15. karatekid552
    August 31st, 2013 07:08 PM
    Okay, let's try this again.... Send the rom.

About Me


Total Posts
Activity by Forum
Visitor Messages
General Information
  • Last Activity: 3 Hours Ago 07:56 PM
  • Join Date: November 4th, 2012
  • Referrals: 2


Showing Friends 1 to 20 of 97


Emblem Showcase - 2 Total
Helping Hand
This member has done some kind of service to PC; Or maybe they help out other members whenever they get the chance.
Awarded: March 3rd, 2014 11:03 PM
Community supporter
These helpful members donate their money to help make PC a better place.
Awarded: November 23rd, 2014 07:19 PM

All times are UTC -8. The time now is 11:41 PM.