Advertiser Content
Conversation Between Taの境界 and kearnseyboy6
1 to 15 of 30
  1. Taの境界
    March 2nd, 2015 4:02 AM
    TMs pocket is specially designed for 58 slots.
    Interesting fact is Emerald doesn't have separate TMs pocket, so each pocket can load more and more.
    I think that hijack the existing bag routine is not a good solution because the code seen had its own limitation, a better way is rewrite a new bag routine instead(I am not good in c :( ). I heard that someone in community is doing this, so you might ask him for further information.
  2. kearnseyboy6
    February 28th, 2015 5:01 AM
    Well the maximum is 42 for the bag, plus the close string/ But TMs had 58 originally so there should be enough allocated RAM for it.
  3. Taの境界
    February 28th, 2015 4:25 AM
    No idea, the maximum is 42 and I still figuring why.
    I wonder why fire red has small pockets for TMs and berries, due to the code design limit?
  4. kearnseyboy6
    February 28th, 2015 2:39 AM
    Don't worry, I am having trouble with bag extension. I can't have more than 42 items and I think it is the routine at 081083F4. Any ideas?
  5. Taの境界
    February 28th, 2015 1:08 AM
    I think I get confused on what you are saying, what really is that issue of confusion?
  6. kearnseyboy6
    February 27th, 2015 11:17 PM
    So why not make it read 0xD bytes instead of the full 0xF? Or is it much more complicated than just that?
  7. Taの境界
    February 27th, 2015 7:57 PM
    Many things will break as what we do is actually make the game read further from what it should, it will be more complicated in case you make it to follow specific orders.
  8. kearnseyboy6
    February 27th, 2015 10:12 AM
    Also why not change TM1-50 with 51-95 to fix that issue of confusion?

    Acyually that is a bad way as it breaks the compatibility! :(
  9. Taの境界
    February 27th, 2015 5:19 AM
    You're welcome, actually I never try that few bytes tweak, but theoretically it should work.
  10. kearnseyboy6
    February 26th, 2015 2:30 AM
    You beauty! Thanks for confirming that :)
  11. Taの境界
    February 25th, 2015 9:02 PM
    You are right, you will have 0xE8 free bytes or 58 item slots from saveblock if you relocated the TM slots to somewhere else, I totally forgot this thing.

    So you might assign the counter and the bytes added like this,
    change #0x1E to #0x2A for key item slot counter
    change #0x78 to #0xA8 for space needed
    change #0xD to #0x2A for pokeball slot counter
    change #0x34 to #0xA8 for space needed
  12. kearnseyboy6
    February 25th, 2015 3:52 PM
    ROM:08099E44 sub_8099E44: @ CODE XREF: saveblock_randomize_position+24p
    ROM:08099E44 LDR R1, =bag_pocket_0
    ROM:08099E46 LDR R0, =saveblock1_mapdata
    ROM:08099E48 LDR R2, [R0]
    ROM:08099E4A MOVS R3, sav1.bag_probably
    ROM:08099E4E ADDS R0, R2, R3
    ROM:08099E50 STR R0, [R1]
    ROM:08099E52 MOVS R0, #0x2A @ '*'
    ROM:08099E54 STRB R0, [R1,#(bag_pocket_0_counter - bag_pocket_0)]
    ROM:08099E56 ADDS R3, #0xA8 @ '¿'
    ROM:08099E58 ADDS R0, R2, R3
    ROM:08099E5A STR R0, [R1,#(bag_pocket_1 - bag_pocket_0)]
    ROM:08099E5C MOVS R0, #0x1E
    ROM:08099E5E STRB R0, [R1,#(bag_pocket_1_counter - bag_pocket_0)]
    ROM:08099E60 ADDS R3, #0x78 @ 'x'
    ROM:08099E62 ADDS R0, R2, R3
    ROM:08099E64 STR R0, [R1,#(bag_pocket_2 - bag_pocket_0)]
    ROM:08099E66 MOVS R0, #0xD
    ROM:08099E68 STRB R0, [R1,#(bag_pocket_2_counter - bag_pocket_0)]
    ROM:08099E6A ADDS R3, #0x34 @ '4'
    ROM:08099E6C ADDS R0, R2, R3
    ROM:08099E6E STR R0, [R1,#(bag_pocket_3 - bag_pocket_0)]
    ROM:08099E70 MOVS R0, #0x3A @ ':'
    ROM:08099E72 STRB R0, [R1,#(bag_pocket_3_counter - bag_pocket_0)]
    ROM:08099E74 LDR R0, =0x54C
    ROM:08099E76 ADDS R2, R2, R0
    ROM:08099E78 STR R2, [R1,#(bag_pocket_4 - bag_pocket_0)]
    ROM:08099E7A ADDS R1, #0x24 @ '$'
    ROM:08099E7C MOVS R0, #0x2B @ '+'
    ROM:08099E7E STRB R0, [R1]
    ROM:08099E80 BX LR
    ROM:08099E80 @ End of function sub_8099E44
    ROM:08099E80 @ ---------------------------------------------------------------------------
    ROM:08099E82 .byte 0
    ROM:08099E83 .byte 0
    ROM:08099E84 off_8099E84: .long bag_pocket_0 @ DATA XREF: sub_8099E44r
    ROM:08099E88 off_8099E88: .long saveblock1_mapdata @ DATA XREF: sub_8099E44+2r
    ROM:08099E8C dword_8099E8C: .long 0x54C @ DATA XREF: sub_8099E44+30r

    It should be safe now you have moved the TM's bag safely. Each item is 4 bytes in the RAM, hence why R3 is adding 4 times the limiter, then the next bag slot is stored after that limiter. So by extending the limiter by 0x3A items should not overwrite anything or am I missing something?

    BTW, your English is fine. Actually some sentences are perfect. Most people here in Australia put slang in their sentences anyway, so we are used to guessing sentences. XD
  13. Taの境界
    February 25th, 2015 7:16 AM
    TRUE, I hook the routine before it reads the TM slots value and assign the RAM location.
    But you can't simply change the limiter, because the memory used might overlay important data in the saveblock.
    The max value for bag slots is 0x2a and idk why.
    Btw, do you think my English bad? I don't really speak it in my real life.
  14. kearnseyboy6
    February 25th, 2015 3:59 AM
    .align 2
    .global tm_slots_hack

    ldr r0, ram
    str r0, [r1, #0x18]
    mov r0, #0x6C
    strb r0, [r1, #0x1c]
    ldr r0, return
    bx r0

    ram: .word 0x0203c000
    return: .word 0x08099e74+1

    In here you have relocated all the new TM's? and old ones?

    IF true can I just change the limiter of the bag to 0x2A + 0x34?
  15. Taの境界
    February 21st, 2015 8:00 PM
    It is pretty easy, the routine for slots is located at 0x99E44, you can hook it to your owns to relocate the RAM for slots data.
    However, the limits each slots in bag for Fire Red is 42, I am still figuring how to crack this.