Advertisement
Bond697

Add Daycare PKM

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