Advertisement
Guest User

Untitled

a guest
Jan 17th, 2012
284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.45 KB | None | 0 0
  1. Entry:
  2. ROMF:5DCF AF xor a
  3. ROMF:5DD0 21 D7 D0 ld hl,d0d7 ;D0D7-D0D8: damage to eventually inflict,intitialise to zero
  4. ROMF:5DD3 22 ldi (hl),a
  5. ROMF:5DD4 77 ld (hl),a
  6. ROMF:5DD5 21 D4 CF ld hl,cfd4
  7. ROMF:5DD8 2A ldi a,(hl) ;*read attack base power
  8. ROMF:5DD9 A7 and a
  9. ROMF:5DDA 57 ld d,a ;*D = attack base, used later
  10. ROMF:5DDB C8 ret z ;return if attack is zero
  11. ROMF:5DDC 7E ld a,(hl) ;*test attacking type
  12. ROMF:5DDD FE 14 cp a,14 ;types >= $14 are all special
  13. ROMF:5DDF 30 35 jr nc,5e16(specialAttack)
  14. .physicalAttack
  15. ROMF:5DE1 21 F8 CF ld hl,cff8 ;CFF8: opponent defense
  16. ROMF:5DE4 2A ldi a,(hl) ;*BC = opponent defense used later
  17. ROMF:5DE5 47 ld b,a
  18. ROMF:5DE6 4E ld c,(hl)
  19. ROMF:5DE7 FA 69 D0 ld a,(d069) ;test for reflect?
  20. ROMF:5DEA CB 57 bit 2,a
  21. ROMF:5DEC 28 04 jr z,5df2(+)
  22. .doubleDefense:
  23. ROMF:5DEE CB 21 sla c ;x2 defense if bit2 of D069 is set
  24. ROMF:5DF0 CB 10 rl b
  25. .+
  26. ROMF:5DF2 21 25 D0 ld hl,d025 ;attack pointer
  27. ROMF:5DF5 FA 5E D0 ld a,(d05e)
  28. ROMF:5DF8 A7 and a
  29. ROMF:5DF9 28 4E jr z,5e49(skip)
  30.  
  31. ROMF:5DFB 0E 03 ld c,03
  32. ROMF:5DFD CD 1C 5F call 5f1c
  33. ROMF:5E00 F0 97 ld a,(ff00+97)
  34. ROMF:5E02 47 ld b,a
  35. ROMF:5E03 F0 98 ld a,(ff00+98)
  36. ROMF:5E05 4F ld c,a
  37. ROMF:5E06 C5 push bc
  38. ROMF:5E07 21 8F D1 ld hl,d18f
  39. ROMF:5E0A FA 2F CC ld a,(cc2f)
  40. ROMF:5E0D 01 2C 00 ld bc,002c
  41. ROMF:5E10 CD 87 3A call 3a87
  42. ROMF:5E13 C1 pop bc
  43. ROMF:5E14 18 33 jr 5e49
  44. .specialAttack
  45. ROMF:5E16 21 FC CF ld hl,cffc ;CFFC: opponent special
  46. ROMF:5E19 2A ldi a,(hl) ;*BC = opponent special defense used later
  47. ROMF:5E1A 47 ld b,a
  48. ROMF:5E1B 4E ld c,(hl)
  49. ROMF:5E1C FA 69 D0 ld a,(d069) ;test for lightscreen?
  50. ROMF:5E1F CB 4F bit 1,a
  51. ROMF:5E21 28 04 jr z,5e27(+)
  52. .doubleSpecialDefense
  53. ROMF:5E23 CB 21 sla c ;x2 special defense if bit1 of D069 set
  54. ROMF:5E25 CB 10 rl b
  55. .+
  56. ROMF:5E27 21 2B D0 ld hl,d02b
  57. ROMF:5E2A FA 5E D0 ld a,(d05e) ;D05E(?) decides skip
  58. ROMF:5E2D A7 and a
  59. ROMF:5E2E 28 19 jr z,5e49(skip) ;skip portion of code that pulls up inactive pokemon
  60. .loadOtherPoke
  61. ROMF:5E30 0E 05 ld c,05
  62. ROMF:5E32 CD 1C 5F call 5f1c
  63. ROMF:5E35 F0 97 ld a,(ff00+97)
  64. ROMF:5E37 47 ld b,a
  65. ROMF:5E38 F0 98 ld a,(ff00+98)
  66. ROMF:5E3A 4F ld c,a
  67. ROMF:5E3B C5 push bc
  68. ROMF:5E3C 21 95 D1 ld hl,d195 ;HL base = D195 (where other monster data is stored)
  69. ROMF:5E3F FA 2F CC ld a,(cc2f) ;multiplier = (CC2F) (desired slot #?)
  70. ROMF:5E42 01 2C 00 ld bc,002c ;mulitiplicand = 002C (bytes per monster)
  71. ROMF:5E45 CD 87 3A call 3a87(Mult1) ;HL = D195 + $002C * slot
  72. ROMF:5E48 C1 pop bc
  73. .skip
  74. ROMF:5E49 2A ldi a,(hl) ;HL: D025 when this was taken
  75. ROMF:5E4A 6E ld l,(hl)
  76. ROMF:5E4B 67 ld h,a ;*HL = attacker attack
  77. ROMF:5E4C B0 or b ;is either attack or defense high byte nonzero?
  78. ROMF:5E4D 28 15 jr z,5e64(+)
  79. ROMF:5E4F CB 38 slr b ;(defense) BC /= 4 (this is just so it fits into a single byte, 10bits max)
  80. ROMF:5E51 CB 19 rr c
  81. ROMF:5E53 CB 38 slr b
  82. ROMF:5E55 CB 19 rr c
  83. ROMF:5E57 CB 3C slr h ;(attack) HL /= 4 (to apply equal scaling)
  84. ROMF:5E59 CB 1D rr l
  85. ROMF:5E5B CB 3C slr h
  86. ROMF:5E5D CB 1D rr l
  87. ROMF:5E5F 7D ld a,l
  88. ROMF:5E60 B4 or h
  89. ROMF:5E61 20 01 jr nz,5e64(+) ;is HL result zero?
  90. ROMF:5E63 2C inc l ;minimum HL = 1
  91. .+
  92. ROMF:5E64 45 ld b,l ;*B = attack (possibly scaled) (C contains defense)
  93. ROMF:5E65 FA 22 D0 ld a,(d022) ;*E = level
  94. ROMF:5E69 FA 5E D0 ld a,(d05e) ;critical hit?
  95. ROMF:5E6C A7 and a
  96. ROMF:5E6D 28 02 jr z,5e71(+)
  97. ROMF:5E6F CB 23 sla e ;double level if it was a critical hit
  98. .+
  99. ROMF:5E71 3E 01 ld a,01 ;return Z = 0
  100. ROMF:5E73 A7 and a
  101. ROMF:5E74 C9 ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement