Thread: Research: Items
View Single Post
Old July 14th, 2011 (5:40 AM). Edited July 16th, 2011 by knizz.
knizz's Avatar
knizz knizz is offline
    Join Date: Aug 2007
    Posts: 192
    I'm sorry I can't post anything on-topic now. But I'll look into this thread again when I have my own computer back. (~4 days) I'm happy you're back and posting, JPAN. I have a IDA-Database for firered. It's worth taking a look at. I have at least some basic notes about items in there too. Also all asm-hackers are invited to join Darthatrons and my IRC-Channel ( #pokehack) which is like this thread just with faster responses.

    EDIT: I hope this helps a bit.
    080A1998 @ =============== S U B R O U T I N E =======================================
    080A1998 repel:                                  @ DATA XREF: ROM:item_super_repelo
    080A1998                                         @ ROM:083DBE98o ...
    080A1998                 PUSH    {R4,LR}
    080A199A                 LSLS    R0, R0, #0x18
    080A199C                 LSRS    R4, R0, #0x18
    080A199E                 LDR     R0, =0x4020
    080A19A0                 BL      var_load
    080A19A4                 LSLS    R0, R0, #0x10
    080A19A6                 CMP     R0, #0
    080A19A8                 BNE     loc_080A19CC
    080A19AA                 MOVS    R0, #0x29
    080A19AC                 BL      music_play
    080A19B0                 LDR     R0, =callback3table
    080A19B2                 LSLS    R1, R4, #2
    080A19B4                 ADDS    R1, R1, R4
    080A19B6                 LSLS    R1, R1, #3
    080A19B8                 ADDS    R1, R1, R0
    080A19BA                 LDR     R0, =(c3_repel+1)
    080A19BC                 STR     R0, [R1]
    080A19BE                 B       loc_080A19D8
    080A19BE @ ---------------------------------------------------------------------------
    080A19C0 dword_080A19C0: .long 0x4020            @ DATA XREF: repel+6r
    080A19C4 off_080A19C4:   .long callback3table    @ DATA XREF: repel+18r
    080A19C8 off_080A19C8:   .long c3_repel+1        @ DATA XREF: repel+22r
    080A19CC @ ---------------------------------------------------------------------------
    080A19CC loc_080A19CC:                           @ CODE XREF: repel+10j
    080A19CC                 LDR     R2, =aButTheEffectsOfARepelLingeredF @ "But the effects of a REPEL lingered fro"...
    080A19CE                 LDR     R3, =(bag_print+1)
    080A19D0                 MOVS    R0, R4
    080A19D2                 MOVS    R1, #2
    080A19D4                 BL      sub_08108E70
    080A19D8 loc_080A19D8:                           @ CODE XREF: repel+26j
    080A19D8                 POP     {R4}
    080A19DA                 POP     {R0}
    080A19DC                 BX      R0
    080A19DC @ End of function repel
    080A19DC @ ---------------------------------------------------------------------------
    080A19DE                 .byte    0
    080A19DF                 .byte    0
    080A19E0 off_080A19E0:   .long aButTheEffectsOfARepelLingeredF
    080A19E0                                         @ DATA XREF: repel:loc_080A19CCr
    080A19E0                                         @ "But the effects of a REPEL lingered fro"...
    080A19E4 off_080A19E4:   .long bag_print+1       @ DATA XREF: repel+36r
    080A19E8 @ =============== S U B R O U T I N E =======================================
    080A19E8 c3_repel:                               @ DATA XREF: repel+22o
    080A19E8                                         @ repel:off_080A19C8o
    080A19E8                 PUSH    {R4-R6,LR}
    080A19EA                 LSLS    R0, R0, #0x18
    080A19EC                 LSRS    R6, R0, #0x18
    080A19EE                 BL      sub_080723E0
    080A19F2                 LSLS    R0, R0, #0x18
    080A19F4                 CMP     R0, #0
    080A19F6                 BNE     loc_080A1A2A
    080A19F8                 LDR     R4, =var_800E   @ Used item number location
    080A19FA                 LDRH    R2, [R4]
    080A19FC                 LDR     R3, =0xFFFF
    080A19FE                 MOVS    R0, #4
    080A1A00                 MOVS    R1, #0
    080A1A02                 BL      sub_080A2294
    080A1A06                 LDR     R5, =0x4020
    080A1A08                 LDRH    R0, [R4]
    080A1A0A                 BL      item_get_quality
    080A1A0E                 MOVS    R1, R0
    080A1A10                 LSLS    R1, R1, #0x18
    080A1A12                 LSRS    R1, R1, #0x18
    080A1A14                 MOVS    R0, R5
    080A1A16                 BL      var_set
    080A1A1A                 BL      sub_080A1A44
    080A1A1E                 LDR     R2, =displayed_string
    080A1A20                 LDR     R3, =(bag_print+1)
    080A1A22                 MOVS    R0, R6
    080A1A24                 MOVS    R1, #2
    080A1A26                 BL      sub_08108E70
    080A1A2A loc_080A1A2A:                           @ CODE XREF: c3_repel+Ej
    080A1A2A                 POP     {R4-R6}
    080A1A2C                 POP     {R0}
    080A1A2E                 BX      R0
    080A1A2E @ End of function c3_repel
    080A1A2E @ ---------------------------------------------------------------------------
    080A1A30 off_080A1A30:   .long var_800E          @ DATA XREF: c3_repel+10r
    080A1A34 dword_080A1A34: .long 0xFFFF            @ DATA XREF: c3_repel+14r
    080A1A38 dword_080A1A38: .long 0x4020            @ DATA XREF: c3_repel+1Er
    080A1A3C off_080A1A3C:   .long displayed_string  @ DATA XREF: c3_repel+36r
    080A1A40 off_080A1A40:   .long bag_print+1       @ DATA XREF: c3_repel+38r
    08452EB8 brm_bottom_right_menu:seisof <aUse, brm_use+1>@ 0 @ DATA XREF: mega_func_3+28Ao
    08452EB8                                         @ ROM:off_08109BA4o ...
    08452EB8                 seisof <aToss, sub_08109CC0+1>@ 1 @ "USE"
    08452EB8                 seisof <aRegister_0, sub_0810A000+1>@ 2
    08452EB8                 seisof <aGive, sub_0810A0A8+1>@ 3
    08452EB8                 seisof <aCancel_0, brm_cancel+1>@ 4
    08452EB8                 seisof <aUse, sub_0810A324+1>@ 5
    08452EB8                 seisof <aCheck, brm_use+1>@ 6
    08452EB8                 seisof <aOpen, brm_use+1>@ 7
    08452EB8                 seisof <aOpen, sub_0810A324+1>@ 8
    08452EB8                 seisof <aWalk, brm_use+1>@ 9
    08452EB8                 seisof <aDeselect, sub_0810A000+1>@ 10
    08452EB8                 seisof <unk_084161CD, 0>@ 11
    08109C50 @ =============== S U B R O U T I N E =======================================
    08109C50 brm_use:                                @ DATA XREF: ROM:brm_bottom_right_menuo
    08109C50                 PUSH    {R4,R5,LR}
    08109C52                 LSLS    R0, R0, #0x18
    08109C54                 LSRS    R4, R0, #0x18
    08109C56                 LDR     R5, =var_800E
    08109C58                 LDRH    R0, [R5]
    08109C5A                 BL      sub_0809AA20
    08109C5E                 CMP     R0, #0
    08109C60                 BEQ     loc_08109CB4
    08109C62                 MOVS    R0, #0xA
    08109C64                 BL      sub_0810BA3C
    08109C68                 MOVS    R0, #6
    08109C6A                 BL      sub_0810BA3C
    08109C6E                 MOVS    R0, #0
    08109C70                 BL      sub_08003FA0
    08109C74                 MOVS    R0, #1
    08109C76                 BL      sub_08003FA0
    08109C7A                 MOVS    R0, #0
    08109C7C                 BL      sub_080F67A4
    08109C80                 BL      count_pokemon
    08109C84                 LSLS    R0, R0, #0x18
    08109C86                 CMP     R0, #0
    08109C88                 BNE     loc_08109CA4
    08109C8A                 LDRH    R0, [R5]
    08109C8C                 BL      sub_0809A9FC
    08109C90                 LSLS    R0, R0, #0x18
    08109C92                 LSRS    R0, R0, #0x18
    08109C94                 CMP     R0, #1
    08109C96                 BNE     loc_08109CA4
    08109C98                 MOVS    R0, R4
    08109C9A                 BL      sub_0810A170
    08109C9E                 B       loc_08109CB4
    08109C9E @ ---------------------------------------------------------------------------
    08109CA0 off_08109CA0:   .long var_800E          @ DATA XREF: brm_use+6r
    08109CA4 @ ---------------------------------------------------------------------------
    08109CA4 loc_08109CA4:                           @ CODE XREF: brm_use+38j
    08109CA4                                         @ brm_use+46j
    08109CA4                 LDR     R0, =var_800E
    08109CA6                 LDRH    R0, [R0]
    08109CA8                 BL      sub_0809AA20
    08109CAC                 MOVS    R1, R0
    08109CAE                 MOVS    R0, R4
    08109CB0                 BL      bx_r1           @ Call item function
    08109CB4 loc_08109CB4:                           @ CODE XREF: brm_use+10j
    08109CB4                                         @ brm_use+4Ej
    08109CB4                 POP     {R4,R5}
    08109CB6                 POP     {R0}
    08109CB8                 BX      R0
    08109CB8 @ End of function brm_use
    08109CB8 @ ---------------------------------------------------------------------------
    08109CBA                 .byte    0
    08109CBB                 .byte    0
    08109CBC off_08109CBC:   .long var_800E          @ DATA XREF: brm_use:loc_08109CA4r
    EDIT 2:
    JPAN, I have two of your wanted offsets.
    03005074 is the number of the NPC that is executing a script.
    03005090 is a table of structures with a function pointer that is called every frame. Think of it as pokemons multithreading system. It's called callback3 in my DB.
    Firered IDA 6.6 DB:
    VBA-M with lua scripting support
    Reply With Quote