summaryrefslogtreecommitdiff
path: root/vc
diff options
context:
space:
mode:
authorvulcandth <vulcandth@gmail.com>2022-03-26 15:59:36 -0500
committerGitHub <noreply@github.com>2022-03-26 16:59:36 -0400
commitfe8d3c51a4056f0dd61dbef332ad9e714b82089a (patch)
tree871eb178792c4355564b858e79e0e61963e0ffef /vc
parent07df4a5f88aa5b9927a0f8a7c317afa57a313ab9 (diff)
Build the Virtual Console patches with `make red_vc` and `make blue_vc` (#351)
Diffstat (limited to 'vc')
-rw-r--r--vc/pokeblue.constants.asm71
-rw-r--r--vc/pokeblue.patch.template436
-rw-r--r--vc/pokered.constants.asm74
-rw-r--r--vc/pokered.patch.template482
4 files changed, 1063 insertions, 0 deletions
diff --git a/vc/pokeblue.constants.asm b/vc/pokeblue.constants.asm
new file mode 100644
index 00000000..a197afae
--- /dev/null
+++ b/vc/pokeblue.constants.asm
@@ -0,0 +1,71 @@
+INCLUDE "constants.asm"
+
+; These are all the asm constants needed to make the blue_vc patch.
+
+vc_const: MACRO
+x = \1
+ PRINTLN "00:{04x:x} \1" ; same format as rgblink's .sym file
+ENDM
+
+; [FPA 001 Begin]
+ vc_const "M"
+ vc_const "E"
+ vc_const "G"
+ vc_const "A"
+ vc_const "P"
+ vc_const "S"
+ vc_const "L"
+ vc_const "F"
+ vc_const "X"
+ vc_const MEGA_PUNCH
+
+; [FPA 001 End]
+ vc_const EXPLOSION
+
+; [FPA 002 Begin]
+ vc_const "U"
+ vc_const "I"
+ vc_const GUILLOTINE
+
+; [FPA 002 End]
+ vc_const "K"
+ vc_const MEGA_KICK
+
+; [FPA 004 Begin]
+ vc_const "B"
+ vc_const "Z"
+ vc_const BLIZZARD
+
+; [FPA 005 Begin]
+ vc_const BUBBLEBEAM
+
+; [FPA 005 End]
+ vc_const HYPER_BEAM
+
+; [FPA 006 Begin]
+ vc_const "H"
+ vc_const "Y"
+
+; [FPA 007 Begin]
+ vc_const "T"
+ vc_const "N"
+ vc_const THUNDERBOLT
+
+; [FPA 008 Begin]
+ vc_const "R"
+ vc_const REFLECT
+
+; [FPA 009 Begin]
+ vc_const SELFDESTRUCT
+
+; [FPA 010 Begin]
+ vc_const "D"
+ vc_const DREAM_EATER
+
+; [FPA 011 Begin]
+ vc_const "O"
+ vc_const SPORE
+
+; [FPA 012 Begin]
+ vc_const "C"
+ vc_const ROCK_SLIDE
diff --git a/vc/pokeblue.patch.template b/vc/pokeblue.patch.template
new file mode 100644
index 00000000..2a8bb119
--- /dev/null
+++ b/vc/pokeblue.patch.template
@@ -0,0 +1,436 @@
+;Format Sample
+;[xxxx] ;User-defined Name (Max:31 chars)
+;Mode = 1 ;1:Fixcode; 2:Fixvalue; 3:Mask; 4:Palette; 5:Double Frame Buffer
+;Type = 0 ;0:Begin 1:End
+;Index = 0 ;Index
+;Address = x1F8000 ;ROM Address
+;MemAddress = x2000 ;RAM Address
+;Fixcode = 0 ;Mode1: Fixed Rom Code; Mode2: Fixed Value
+;DelayFrame = 0 ;Delay Frame
+;FadeFrame = 0 ;Fade Frame 0:Off
+;DarkEnable0 = 0 ;0:Off, 1:On (for Normal Mode)
+;ReduceEnable0 = 0 ;0:Off, 1:On (for Normal Mode)
+;MotionBEnable0 = 0 ;0:Off, 1:Black Fade, 2:, 3:Frame Blend (for Normal Mode)
+;Dark0 = 10 ;0~10 (for Normal Mode)
+;ReduceColorR0 = 0 ;0~31 (for Normal Mode)
+;ReduceColorG0 = 0 ;0~31 (for Normal Mode)
+;ReduceColorB0 = 0 ;0~31 (for Normal Mode)
+;MotionBlur0 = 31 ;0~31 (for Normal Mode)
+;DarkEnable1 = 0 ;0:Off, 1:On (for Green Mode)
+;ReduceEnable1 = 0 ;0:Off, 1:On (for Green Mode)
+;MotionBEnable1 = 0 ;0:Off, 1:Black Fade, 2:, 3:Frame Blend (for Green Mode)
+;Dark1 = 10 ;0~10 (for Green Mode)
+;ReduceColorR1 = 0 ;0~31 (for Green Mode)
+;ReduceColorG1 = 0 ;0~31 (for Green Mode)
+;ReduceColorB1 = 0 ;0~31 (for Green Mode)
+;MotionBlur1 = 31 ;0~31 (for Green Mode)
+;PaletteX = c31,31,31 ;X:0~15, cR,G,B (0~31)
+[SaveLimit]
+Mode = 12
+Type = 1
+Index = {hex sGameData}
+Address = {hex sGameDataEnd}
+
+[send_send_buf2]
+Mode = 2
+Address = {HEX @}
+Type = 29
+
+[send_send_buf2_ret]
+Mode = 2
+Address = {HEX @}
+Type = 30
+
+[send_byt2]
+Mode = 2
+Address = {HEX @+5}
+Type = 31
+
+[send_byt2_ret]
+Mode = 2
+Address = {HEX @}
+Type = 32
+
+[send_dummy]
+Mode = 2
+Address = {HEX @}
+Type = 33
+
+[send_dummy_end]
+Mode = 2
+Address = {HEX @}
+Type = 34
+
+[FIGHT]
+Mode = 1
+Address = {HEX @+1}
+Fixcode = {PATCH +1}
+
+[FIGHT2]
+Mode = 1
+Address = {HEX @+1}
+Fixcode = {PATCH +1}
+
+[Network10]
+Mode = 1
+Address = {HEX @+1}
+Fixcode = {PATCH +1}
+
+[Network11]
+Mode = 1
+Address = {HEX @+1}
+Fixcode = {PATCH +1}
+
+[Network17]
+Mode = 2
+Address = {HEX @}
+Type = 5
+
+[Network424]
+Mode = 2
+Address = {HEX @}
+Type = 4
+
+[Network200]
+Mode = 2
+Address = {HEX @}
+Type = 4
+
+[Network_RECHECK]
+Mode = 2
+Address = {HEX @}
+Type = 7
+
+[Network_STOP]
+Mode = 2
+Address = {HEX @}
+Type = 8
+
+[Network_END]
+Mode = 2
+Address = {HEX @}
+Type = 9
+
+[Network_RESET]
+Mode = 2
+Address = {HEX @}
+Type = 10
+
+[linkCable fake begin]
+Mode = 2
+Address = {HEX @}
+Type = 16
+
+[linkCable fake end]
+Mode = 2
+Address = {HEX @}
+Type = 17
+
+[linkCable block input]
+Mode = 2
+Address = {HEX @+5}
+Type = 18
+
+;[save game start]
+;Mode = 2
+;Address = 0x59E6
+;Type = 19
+
+[save game end]
+Mode = 2
+Address = {HEX @}
+Type = 20
+
+[Change_MSG]
+Mode = 1
+Address = {HEX @+1}
+Fixcode = {PATCH_ +1 20}
+
+[fight_ret]
+Mode = 1
+Address = {HEX @}
+Fixcode = {PATCH}
+
+[fight_ret_c]
+Mode = 2
+Address = {HEX @}
+Type = 98
+
+;rsm003758
+;No151
+[FPA 001 Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 27
+ConditionType = 11
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+5 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == == || == == == == == || == == == == == }
+ConditionValueC = {dws_ "M" "E" "G" "A" "P" MEGA_PUNCH 00 "S" "E" "L" "F" MEGA_PUNCH 00 "E" "X" "P" "L" MEGA_PUNCH }
+
+[FPA 001 End]
+Mode = 3
+Type = 1
+Address = {HEX @}
+ConditionType = 11
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+5 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == == || == == == == == || == == == == == }
+ConditionValueC = {dws_ "M" "E" "G" "A" "P" MEGA_PUNCH 00 "E" "X" "P" "L" EXPLOSION 00 "E" "X" "P" "L" MEGA_PUNCH }
+
+
+
+;rsm141151
+;No117
+[FPA 002 Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 9
+MotionBEnable1 = 3
+MotionBlur1 = 8
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "G" "U" "I" "L" GUILLOTINE }
+
+[FPA 002 End]
+Mode = 3
+Type = 1
+Address = {HEX @}
+ConditionType = 11
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+5 wAnimationID}
+ConditionValueB = {dws_ == == == == == || == == == == == == }
+ConditionValueC = {dws_ "G" "U" "I" "L" GUILLOTINE 00 "M" "E" "G" "A" "K" MEGA_KICK }
+
+
+
+;rsm143918
+;No150
+[FPA 003 Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 25
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+5 wAnimationID}
+ConditionValueB = {dws_ == == == == == == }
+ConditionValueC = {dws_ "M" "E" "G" "A" "K" MEGA_KICK }
+
+
+
+;rsm152422
+;No131
+[FPA 004 Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 25
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "B" "L" "I" "Z" BLIZZARD }
+
+
+;rsm160334
+;No123
+[FPA 005 Begin@FPA_Bubblebeam_Begin]
+Mode = 3
+Type = 0
+Address = {hex @}
+MotionBEnable0 = 3
+MotionBlur0 = 27
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "B" "U" "B" "B" BUBBLEBEAM }
+
+[FPA 005 End]
+Mode = 3
+Type = 1
+Address = {HEX @}
+ConditionType = 11
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == || == == == == == || == == == == == }
+ConditionValueC = {dws_ "B" "U" "B" "B" BUBBLEBEAM 00 "H" "Y" "P" "E" HYPER_BEAM 00 "B" "L" "I" "Z" BLIZZARD }
+
+
+;rsm163356
+;No116
+[FPA 006 Begin@FPA_Hyper_Beam_Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 1
+MotionBlur0 = 5
+MotionBEnable1 = 1
+MotionBlur1 = 5
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "H" "Y" "P" "E" HYPER_BEAM }
+
+
+
+;rsm174631
+;No57
+[FPA 007 Begin@FPA_Thunderbolt_Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 30
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "T" "H" "U" "N" THUNDERBOLT }
+
+
+[FPA 007 End@FPA_Thunderbolt_End]
+Mode = 3
+Type = 1
+Address = {HEX @}
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "T" "H" "U" "N" THUNDERBOLT }
+
+
+;rsm134518
+;No159
+[FPA 008 Begin@FPA_Reflect_Begin]
+Mode = 3
+Type = 0
+Address = {hex @}
+MotionBEnable0 = 1
+MotionBlur0 = 5
+MotionBEnable1 = 1
+MotionBlur1 = 5
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "R" "E" "F" "L" REFLECT }
+
+[FPA 008 End]
+Mode = 3
+Type = 1
+Address = {HEX @}
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "R" "E" "F" "L" REFLECT }
+
+
+
+
+;rsm140510
+;No56
+[FPA 009 Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 27
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "S" "E" "L" "F" SELFDESTRUCT}
+
+[FPA 009 End]
+Mode = 3
+Type = 1
+Address = {HEX @}
+ConditionType = 11
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == || == == == == == }
+ConditionValueC = {dws_ "S" "E" "L" "F" MEGA_PUNCH 00 "S" "E" "L" "F" SELFDESTRUCT}
+
+;rsm150211
+;No156
+[FPA 010 Begin@FPA_Dream_Eater_Begin]
+Mode = 3
+Type = 0
+Address = {hex @}
+MotionBEnable0 = 3
+MotionBlur0 = 10
+MotionBEnable1 = 3
+MotionBlur1 = 7
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "D" "R" "E" "A" DREAM_EATER }
+
+;[FPA 010 End]
+;Mode = 3
+;Type = 1
+;Address = 0x78176
+;ConditionType = 0
+;ConditionValueA = a10: 4b cf 4c cf 4d cf 4e cf 7c d0
+;ConditionValueB = a10: 00 00 00 00 00 00 00 00 00 00
+;ConditionValueC = a10: 83 00 91 00 84 00 80 00 8a 00
+
+;rsm163334
+;No36
+[FPA 011 Begin@FPA_Spore_Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 8
+MotionBEnable1 = 3
+MotionBlur1 = 8
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "S" "P" "O" "R" SPORE }
+
+[FPA 011 End]
+Mode = 3
+Type = 1
+Address = {hex @}
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "S" "P" "O" "R" SPORE }
+
+;rsm012224
+;No12
+[FPA 012 Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 27
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "R" "O" "C" "K" ROCK_SLIDE }
+
+[FPA 012 End]
+Mode = 3
+Type = 1
+Address = {hex @}
+ConditionType = 11
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == || == == == == == }
+ConditionValueC = {dws_ "R" "O" "C" "K" ROCK_SLIDE 00 "D" "R" "E" "A" DREAM_EATER }
+
+
+
+
+
+;explosion
+;No76
+[FPA 76 Begin]
+Mode = 3
+Type = 0
+Address = 0x78186
+MotionBEnable0 = 3
+MotionBlur0 = 28
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "E" "X" "P" "L" EXPLOSION } \ No newline at end of file
diff --git a/vc/pokered.constants.asm b/vc/pokered.constants.asm
new file mode 100644
index 00000000..4bc62388
--- /dev/null
+++ b/vc/pokered.constants.asm
@@ -0,0 +1,74 @@
+INCLUDE "constants.asm"
+
+; These are all the asm constants needed to make the red_vc patch.
+
+vc_const: MACRO
+x = \1
+ PRINTLN "00:{04x:x} \1" ; same format as rgblink's .sym file
+ENDM
+
+; [FPA 001 Begin]
+ vc_const "M"
+ vc_const "E"
+ vc_const "G"
+ vc_const "A"
+ vc_const "P"
+ vc_const "S"
+ vc_const "L"
+ vc_const "F"
+ vc_const "D"
+ vc_const "X"
+ vc_const MEGA_PUNCH
+
+; [FPA 002 Begin]
+ vc_const "U"
+ vc_const "I"
+ vc_const GUILLOTINE
+
+; [FPA 003 Begin]
+ vc_const "K"
+ vc_const MEGA_KICK
+
+; [FPA 004 Begin]
+ vc_const "B"
+ vc_const BUBBLEBEAM
+
+; [FPA 005 Begin]
+ vc_const "H"
+ vc_const "Y"
+ vc_const HYPER_BEAM
+
+; [FPA 006 Begin]
+ vc_const "T"
+ vc_const "N"
+ vc_const THUNDERBOLT
+
+; [FPA 007 Begin]
+ vc_const "R"
+ vc_const "F"
+ vc_const REFLECT
+
+; [FPA 008 Begin]
+ vc_const DREAM_EATER
+
+; [FPA 008 End]
+ vc_const "Z"
+ vc_const BLIZZARD
+
+; [FPA 009 Begin]
+ vc_const "O"
+ vc_const SPORE
+
+; [FPA 010 Begin]
+ vc_const "C"
+ vc_const ROCK_SLIDE
+
+; [FPA 010 End]
+ vc_const SELFDESTRUCT
+ vc_const EXPLOSION
+
+; [FPA conf Begin]
+ vc_const CONFUSION
+
+; [FPA phy Begin]
+ vc_const PSYCHIC_M
diff --git a/vc/pokered.patch.template b/vc/pokered.patch.template
new file mode 100644
index 00000000..52f5d0fe
--- /dev/null
+++ b/vc/pokered.patch.template
@@ -0,0 +1,482 @@
+;Format Sample
+;[xxxx] ;User-defined Name (Max:31 chars)
+;Mode = 1 ;1:Fixcode; 2:Fixvalue; 3:Mask; 4:Palette; 5:Double Frame Buffer
+;Type = 0 ;0:Begin 1:End
+;Index = 0 ;Index
+;Address = x1F8000 ;ROM Address
+;MemAddress = x2000 ;RAM Address
+;Fixcode = 0 ;Mode1: Fixed Rom Code; Mode2: Fixed Value
+;DelayFrame = 0 ;Delay Frame
+;FadeFrame = 0 ;Fade Frame 0:Off
+;DarkEnable0 = 0 ;0:Off, 1:On (for Normal Mode)
+;ReduceEnable0 = 0 ;0:Off, 1:On (for Normal Mode)
+;MotionBEnable0 = 0 ;0:Off, 1:Black Fade, 2:, 3:Frame Blend (for Normal Mode)
+;Dark0 = 10 ;0~10 (for Normal Mode)
+;ReduceColorR0 = 0 ;0~31 (for Normal Mode)
+;ReduceColorG0 = 0 ;0~31 (for Normal Mode)
+;ReduceColorB0 = 0 ;0~31 (for Normal Mode)
+;MotionBlur0 = 31 ;0~31 (for Normal Mode)
+;DarkEnable1 = 0 ;0:Off, 1:On (for Green Mode)
+;ReduceEnable1 = 0 ;0:Off, 1:On (for Green Mode)
+;MotionBEnable1 = 0 ;0:Off, 1:Black Fade, 2:, 3:Frame Blend (for Green Mode)
+;Dark1 = 10 ;0~10 (for Green Mode)
+;ReduceColorR1 = 0 ;0~31 (for Green Mode)
+;ReduceColorG1 = 0 ;0~31 (for Green Mode)
+;ReduceColorB1 = 0 ;0~31 (for Green Mode)
+;MotionBlur1 = 31 ;0~31 (for Green Mode)
+;PaletteX = c31,31,31 ;X:0~15, cR,G,B (0~31)
+[SaveLimit]
+Mode = 12
+Type = 1
+Index = {hex sGameData}
+Address = {hex sGameDataEnd}
+
+;[Fix pokemon]
+;Mode = 2
+;Address = 0x1551
+;Type = 3
+
+[send_send_buf2]
+Mode = 2
+Address = {HEX @}
+Type = 29
+
+[send_send_buf2_ret]
+Mode = 2
+Address = {HEX @}
+Type = 30
+
+[send_byt2]
+Mode = 2
+Address = {HEX @+5}
+Type = 31
+
+[send_byt2_ret]
+Mode = 2
+Address = {HEX @}
+Type = 32
+
+[send_dummy]
+Mode = 2
+Address = {HEX @}
+Type = 33
+
+[send_dummy_end]
+Mode = 2
+Address = {HEX @}
+Type = 34
+
+[FIGHT]
+Mode = 1
+Address = {HEX @+1}
+Fixcode = {PATCH +1}
+
+[FIGHT2]
+Mode = 1
+Address = {HEX @+1}
+Fixcode = {PATCH +1}
+
+[Network10]
+Mode = 1
+Address = {HEX @+1}
+Fixcode = {PATCH +1}
+
+[Network11]
+Mode = 1
+Address = {HEX @+1}
+Fixcode = {PATCH +1}
+
+[Network17]
+Mode = 2
+Address = {HEX @}
+Type = 5
+
+[Network424]
+Mode = 2
+Address = {HEX @}
+Type = 4
+
+[Network200]
+Mode = 2
+Address = {HEX @}
+Type = 4
+
+[Network_RECHECK]
+Mode = 2
+Address = {HEX @}
+Type = 7
+
+[Network_STOP]
+Mode = 2
+Address = {HEX @}
+Type = 8
+
+[Network_END]
+Mode = 2
+Address = {HEX @}
+Type = 9
+
+[Network_RESET]
+Mode = 2
+Address = {HEX @}
+Type = 10
+
+[linkCable fake begin]
+Mode = 2
+Address = {HEX @}
+Type = 16
+
+[linkCable fake end]
+Mode = 2
+Address = {HEX @}
+Type = 17
+
+[linkCable block input]
+Mode = 2
+Address = {HEX @+5}
+Type = 18
+
+;[save game start]
+;Mode = 2
+;Address = 0x59E6
+;Type = 19
+
+[save game end]
+Mode = 2
+Address = {HEX @}
+Type = 20
+
+;93 A7 A4 7F AB A8 AD AA 7F A7
+;at 93
+[Change_MSG]
+Mode = 1
+Address = {HEX @+1}
+Fixcode = {PATCH_ +1 20}
+
+[fight_ret]
+Mode = 1
+Address = {HEX @}
+Fixcode = {PATCH}
+
+[fight_ret_c]
+Mode = 2
+Address = {HEX @}
+Type = 98
+
+; The effect_no decide which animation will be played.
+; So we use it as a condition value. The address of effect_no is 0xd07c
+; a7 c0 3e 05 ea
+; and a A7
+; ret nz C0
+;
+; ld a,5 3E 05
+; ld (anime_buf),a EA
+;
+;
+;effect_select_rdy:
+; ld (effect_no),a
+;
+; call put_wait
+;
+; ld a,B_EFFECT_SELECT
+
+
+;rsm033659
+;no151 mega punch
+[FPA 001 Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 21
+MotionBEnable1 = 3
+MotionBlur1 = 21
+ConditionType = 11
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+5 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+4 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == == || == == == == == == || == == == == == }
+ConditionValueC = {dws_ "M" "E" "G" "A" "P" MEGA_PUNCH 00 "S" "E" "L" "F" "D" MEGA_PUNCH 00 "E" "X" "P" "L" MEGA_PUNCH }
+
+
+[FPA 001 End]
+Mode = 3
+Type = 1
+Address = {HEX @}
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+5 wAnimationID}
+ConditionValueB = {dws_ == == == == == == }
+ConditionValueC = {dws_ "M" "E" "G" "A" "P" MEGA_PUNCH }
+
+
+;rsm032916
+;no117 guillotine
+[FPA 002 Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 9
+MotionBEnable1 = 3
+MotionBlur1 = 8
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "G" "U" "I" "L" GUILLOTINE }
+
+[FPA 002 End]
+Mode = 3
+Type = 1
+Address = {HEX @}
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "G" "U" "I" "L" GUILLOTINE }
+
+
+;rsm041307
+;no150 mega kick
+[FPA 003 Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 25
+MotionBEnable1 = 3
+MotionBlur1 = 21
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+5 wAnimationID}
+ConditionValueB = {dws_ == == == == == == }
+ConditionValueC = {dws_ "M" "E" "G" "A" "K" MEGA_KICK }
+
+
+;rsm001929
+;no123 bubble beam
+[FPA 004 Begin@FPA_Bubblebeam_Begin]
+Mode = 3
+Type = 0
+Address = {hex @}
+MotionBEnable0 = 3
+MotionBlur0 = 30
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "B" "U" "B" "B" BUBBLEBEAM }
+
+[FPA 004 End]
+Mode = 3
+Type = 1
+Address = {hex @}
+ConditionType = 11
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+5 wAnimationID}
+ConditionValueB = {dws_ == == == == == || == == == == == == }
+ConditionValueC = {dws_ "B" "U" "B" "B" BUBBLEBEAM 00 "M" "E" "G" "A" "K" MEGA_KICK }
+
+
+;rsm103658
+;no116 hyper beam
+[FPA 005 Begin@FPA_Hyper_Beam_Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 1
+MotionBlur0 = 5
+MotionBEnable1 = 1
+MotionBlur1 = 5
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "H" "Y" "P" "E" HYPER_BEAM }
+
+[FPA 005 End]
+Mode = 3
+Type = 1
+Address = {HEX @}
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "H" "Y" "P" "E" HYPER_BEAM }
+
+
+;rsm133358
+;no57 thunderbolt
+[FPA 006 Begin@FPA_Thunderbolt_Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 30
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "T" "H" "U" "N" THUNDERBOLT }
+
+
+[FPA 006 End@FPA_Thunderbolt_End]
+Mode = 3
+Type = 1
+Address = {HEX @}
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "T" "H" "U" "N" THUNDERBOLT }
+
+;rsm152340
+;no159 reflect
+[FPA 007 Begin@FPA_Reflect_Begin]
+Mode = 3
+Type = 0
+Address = {hex @}
+MotionBEnable0 = 1
+MotionBlur0 = 6
+MotionBEnable1 = 1
+MotionBlur1 = 5
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "R" "E" "F" "L" REFLECT }
+
+[FPA 007 End]
+Mode = 3
+Type = 1
+Address = {HEX @}
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "R" "E" "F" "L" REFLECT }
+
+;rsm171812
+;no156 dream eater
+[FPA 008 Begin@FPA_Dream_Eater_Begin]
+Mode = 3
+Type = 0
+Address = {hex @}
+MotionBEnable0 = 3
+MotionBlur0 = 10
+MotionBEnable1 = 3
+MotionBlur1 = 7
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "D" "R" "E" "A" DREAM_EATER }
+
+[FPA 008 End]
+Mode = 3
+Type = 1
+Address = {HEX @}
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+4} {dws/ wAnimationID}
+ConditionValueB = {dws_ == == == == == } {dws/ == }
+ConditionValueC = {dws_ "B" "L" "I" "Z" "Z" } {dws/ BLIZZARD }
+
+;rsm174650
+;no36 spore
+[FPA 009 Begin@FPA_Spore_Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 8
+MotionBEnable1 = 3
+MotionBlur1 = 8
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "S" "P" "O" "R" SPORE }
+
+
+;rsm152115
+;no12 rock slide
+[FPA 010 Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 27
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "R" "O" "C" "K" ROCK_SLIDE }
+
+[FPA 010 End]
+Mode = 3
+Type = 1
+Address = {HEX @}
+ConditionType = 11
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+4 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+4 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+5 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID 00 wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == || == == == == == || == == == == == || == == == == == == || == == == == == == || == == == == == == || == == == == == || == == == == == }
+ConditionValueC = {dws_ "D" "R" "E" "A" DREAM_EATER 00 "R" "O" "C" "K" ROCK_SLIDE 00 "S" "P" "O" "R" SPORE 00 "S" "E" "L" "F" "D" MEGA_PUNCH 00 "S" "E" "L" "F" "D" SELFDESTRUCT 00 "C" "O" "N" "F" "S" CONFUSION 00 "E" "X" "P" "L" EXPLOSION 00 "E" "X" "P" "L" MEGA_PUNCH }
+
+
+;explosion
+;No76 explosion
+[FPA 76 Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 28
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wAnimationID}
+ConditionValueB = {dws_ == == == == == }
+ConditionValueC = {dws_ "E" "X" "P" "L" EXPLOSION }
+
+
+;No56 self-destruct
+[FPA 56 Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 23
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+4 wAnimationID}
+ConditionValueB = {dws_ == == == == == == }
+ConditionValueC = {dws_ "S" "E" "L" "F" "D" SELFDESTRUCT}
+
+
+;No131 blizzard
+[FPA 131 Begin]
+Mode = 3
+Type = 0
+Address = {HEX @}
+MotionBEnable0 = 3
+MotionBlur0 = 26
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+4 wAnimationID}
+ConditionValueB = {dws_ == == == == == == }
+ConditionValueC = {dws_ "B" "L" "I" "Z" "Z" BLIZZARD }
+
+
+;confusion
+[FPA conf Begin]
+Mode = 3
+Type = 0
+Address = {hex @}
+MotionBEnable1 = 3
+MotionBlur1 = 21
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+5 wAnimationID}
+ConditionValueB = {dws_ == == == == == == }
+ConditionValueC = {dws_ "C" "O" "N" "F" "S" CONFUSION }
+
+;phychic
+[FPA phy Begin]
+Mode = 3
+Type = 0
+Address = {hex @}
+MotionBEnable1 = 3
+MotionBlur1 = 21
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+5 wAnimationID}
+ConditionValueB = {dws_ == == == == == == }
+ConditionValueC = {dws_ "P" "S" "Y" "C" "I" PSYCHIC_M }
+
+[FPA phy End]
+Mode = 3
+Type = 1
+Address = {hex @}
+ConditionType = 0
+ConditionValueA = {dws_ wStringBuffer wStringBuffer+1 wStringBuffer+2 wStringBuffer+3 wStringBuffer+5 wAnimationID}
+ConditionValueB = {dws_ == == == == == == }
+ConditionValueC = {dws_ "P" "S" "Y" "C" "I" PSYCHIC_M }
+
+