Bond697 icon

Add Daycare PKM

Bond697 | PRO | 12/02/12 06:02:43 PM UTC | 0 ⭐ | 10694 👁️ | Never ⏰ | []
ARM |

3.08 KB

|

None

|

0 👍

/

0 👎

RAM_ARM9:0200C3EC             ; =============== S U B R O U T I N E =======================================
RAM_ARM9:0200C3EC
RAM_ARM9:0200C3EC
RAM_ARM9:0200C3EC             ; void __fastcall setOneDaycarePoke(Daycare *d, int pos, void *pPkmBlk)
RAM_ARM9:0200C3EC             setOneDaycarePoke                       ; CODE XREF: sub_21BD314+2Ep
RAM_ARM9:0200C3EC F0 B4                       PUSH    {R4-R7}
RAM_ARM9:0200C3EE 06 1C                       MOVS    R6, R0
RAM_ARM9:0200C3F0 00 29                       CMP     R1, #0
RAM_ARM9:0200C3F2 16 DB                       BLT     loc_200C422     ; exit if -1
RAM_ARM9:0200C3F4 02 29                       CMP     R1, #2
RAM_ARM9:0200C3F6 14 DA                       BGE     loc_200C422     ; exit if > number of daycare slots(0 and 1)
RAM_ARM9:0200C3F8 E4 20                       MOVS    R0, #0xE4 ; 'S'
RAM_ARM9:0200C3FA 0D 1C                       MOVS    R5, R1          ; 0xe4 * slot#
RAM_ARM9:0200C3FC 45 43                       MULS    R5, R0
RAM_ARM9:0200C3FE 70 59                       LDR     R0, [R6,R5]     ; get daycare poke block status (full/empty)
RAM_ARM9:0200C400 74 19                       ADDS    R4, R6, R5      ; status pos
RAM_ARM9:0200C402 01 28                       CMP     R0, #1
RAM_ARM9:0200C404 0D D0                       BEQ     loc_200C422     ; exit if full
RAM_ARM9:0200C406 23 1D                       ADDS    R3, R4, #4
RAM_ARM9:0200C408 1B 27                       MOVS    R7, #0x1B
RAM_ARM9:0200C40A
RAM_ARM9:0200C40A             loc_200C40A                             ; CODE XREF: setOneDaycarePoke+24j
RAM_ARM9:0200C40A 03 CA                       LDMIA   R2!, {R0,R1}    ; this is a full block copy in of 1 daycare poke
RAM_ARM9:0200C40C 03 C3                       STMIA   R3!, {R0,R1}
RAM_ARM9:0200C40E 7F 1E                       SUBS    R7, R7, #1      ; a decrementing loop. when did someone at gamefreak learn to program for ARM
RAM_ARM9:0200C410 FB D1                       BNE     loc_200C40A
RAM_ARM9:0200C412 10 68                       LDR     R0, [R2]        ; load last word
RAM_ARM9:0200C414 00 21                       MOVS    R1, #0
RAM_ARM9:0200C416 18 60                       STR     R0, [R3]        ; copy last word
RAM_ARM9:0200C418 01 20                       MOVS    R0, #1
RAM_ARM9:0200C41A 20 60                       STR     R0, [R4]        ; set block full
RAM_ARM9:0200C41C 70 19                       ADDS    R0, R6, R5      ; bool pos
RAM_ARM9:0200C41E E0 30                       ADDS    R0, #0xE0 ; 'a' ; jump past pkm
RAM_ARM9:0200C420 01 60                       STR     R1, [R0]        ; zero the word after the block(usually seems to be 9x afterward)
RAM_ARM9:0200C422
RAM_ARM9:0200C422             loc_200C422                             ; CODE XREF: setOneDaycarePoke+6j
RAM_ARM9:0200C422                                                     ; setOneDaycarePoke+Aj ...
RAM_ARM9:0200C422 F0 BC                       POP     {R4-R7}
RAM_ARM9:0200C424 70 47                       BX      LR
RAM_ARM9:0200C424             ; End of function setOneDaycarePoke
RAM_ARM9:0200C424

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎