shithub: pokecrystal

Download patch

ref: 1544185becfcabe1c3cf032f0014c904183567fe
parent: ee906a67c76ec6b7eb85e4aa1aed588fa4aad45d
author: pikalaxalt <[email protected]>
date: Sun May 15 19:05:41 EDT 2016

Revise frame macro to account for flags in sprite anim framesets

--- a/data/sprite_engine.asm
+++ b/data/sprite_engine.asm
@@ -68,223 +68,223 @@
 ; 8d76a
 
 .Frameset_00:
-	frame SPRITE_ANIM_FRAME_IDX_00,  32
+	frame SPRITE_ANIM_FRAME_IDX_00, 32
 	endanim
 
 .Frameset_01:
-	frame SPRITE_ANIM_FRAME_IDX_00,   8
-	frame SPRITE_ANIM_FRAME_IDX_01,   8
+	frame SPRITE_ANIM_FRAME_IDX_00,  8
+	frame SPRITE_ANIM_FRAME_IDX_01,  8
 	dorestart
 
 .Frameset_02:
-	frame SPRITE_ANIM_FRAME_IDX_3D,   8
-	frame SPRITE_ANIM_FRAME_IDX_3E,   8
+	frame SPRITE_ANIM_FRAME_IDX_3D,  8
+	frame SPRITE_ANIM_FRAME_IDX_3E,  8
 	dorestart
 
 .Frameset_03:
-	frame SPRITE_ANIM_FRAME_IDX_3F,   8
-	frame SPRITE_ANIM_FRAME_IDX_40,   8
+	frame SPRITE_ANIM_FRAME_IDX_3F,  8
+	frame SPRITE_ANIM_FRAME_IDX_40,  8
 	dorestart
 
 .Frameset_04:
-	frame SPRITE_ANIM_FRAME_IDX_00,   4
-	frame SPRITE_ANIM_FRAME_IDX_01,   4
+	frame SPRITE_ANIM_FRAME_IDX_00,  4
+	frame SPRITE_ANIM_FRAME_IDX_01,  4
 	dorestart
 
 .Frameset_05:
-	frame SPRITE_ANIM_FRAME_IDX_3D,   4
-	frame SPRITE_ANIM_FRAME_IDX_3E,   4
+	frame SPRITE_ANIM_FRAME_IDX_3D,  4
+	frame SPRITE_ANIM_FRAME_IDX_3E,  4
 	dorestart
 
 .Frameset_06:
-	frame SPRITE_ANIM_FRAME_IDX_3F,   4
-	frame SPRITE_ANIM_FRAME_IDX_40,   4
+	frame SPRITE_ANIM_FRAME_IDX_3F,  4
+	frame SPRITE_ANIM_FRAME_IDX_40,  4
 	dorestart
 
 .Frameset_11:
-	frame SPRITE_ANIM_FRAME_IDX_00,   8
-	frame SPRITE_ANIM_FRAME_IDX_01,   8
-	frame SPRITE_ANIM_FRAME_IDX_00,   8
-	frame SPRITE_ANIM_FRAME_IDX_01,  72
+	frame SPRITE_ANIM_FRAME_IDX_00,  8
+	frame SPRITE_ANIM_FRAME_IDX_01,  8
+	frame SPRITE_ANIM_FRAME_IDX_00,  8
+	frame SPRITE_ANIM_FRAME_IDX_01,  8, OAM_X_FLIP
 	dorestart
 
 .Frameset_2d:
-	frame SPRITE_ANIM_FRAME_IDX_63,   8
-	frame SPRITE_ANIM_FRAME_IDX_64,   8
-	frame SPRITE_ANIM_FRAME_IDX_63,   8
-	frame SPRITE_ANIM_FRAME_IDX_64,  72
+	frame SPRITE_ANIM_FRAME_IDX_63,  8
+	frame SPRITE_ANIM_FRAME_IDX_64,  8
+	frame SPRITE_ANIM_FRAME_IDX_63,  8
+	frame SPRITE_ANIM_FRAME_IDX_64,  8, OAM_X_FLIP
 	dorestart
 
 .Frameset_2e:
-	frame SPRITE_ANIM_FRAME_IDX_65,   8
-	frame SPRITE_ANIM_FRAME_IDX_66,   8
-	frame SPRITE_ANIM_FRAME_IDX_65,   8
-	frame SPRITE_ANIM_FRAME_IDX_66,  72
+	frame SPRITE_ANIM_FRAME_IDX_65,  8
+	frame SPRITE_ANIM_FRAME_IDX_66,  8
+	frame SPRITE_ANIM_FRAME_IDX_65,  8
+	frame SPRITE_ANIM_FRAME_IDX_66,  8, OAM_X_FLIP
 	dorestart
 
 .Frameset_07:
-	frame SPRITE_ANIM_FRAME_IDX_1E,   1
-	frame SPRITE_ANIM_FRAME_IDX_1F,   1
+	frame SPRITE_ANIM_FRAME_IDX_1E,  1
+	frame SPRITE_ANIM_FRAME_IDX_1F,  1
 	dorestart
 
 .Frameset_08:
-	frame SPRITE_ANIM_FRAME_IDX_20,   1
+	frame SPRITE_ANIM_FRAME_IDX_20,  1
 	dorepeat  1
 	dorestart
 
 .Frameset_09:
-	frame SPRITE_ANIM_FRAME_IDX_21,   1
+	frame SPRITE_ANIM_FRAME_IDX_21,  1
 	dorepeat  1
 	dorestart
 
 .Frameset_0a:
-	frame SPRITE_ANIM_FRAME_IDX_81,  12
-	frame SPRITE_ANIM_FRAME_IDX_82,   1
-	frame SPRITE_ANIM_FRAME_IDX_83,   1
-	frame SPRITE_ANIM_FRAME_IDX_82,   4
-	frame SPRITE_ANIM_FRAME_IDX_81,  12
-	frame SPRITE_ANIM_FRAME_IDX_82,  12
-	frame SPRITE_ANIM_FRAME_IDX_83,   4
-	frame SPRITE_ANIM_FRAME_IDX_84,  32
-	frame SPRITE_ANIM_FRAME_IDX_85,   3
-	frame SPRITE_ANIM_FRAME_IDX_86,   3
-	frame SPRITE_ANIM_FRAME_IDX_87,   4
-	frame SPRITE_ANIM_FRAME_IDX_88,   4
-	frame SPRITE_ANIM_FRAME_IDX_89,   4
-	frame SPRITE_ANIM_FRAME_IDX_8A,  10
-	frame SPRITE_ANIM_FRAME_IDX_8B,   7
+	frame SPRITE_ANIM_FRAME_IDX_81, 12
+	frame SPRITE_ANIM_FRAME_IDX_82,  1
+	frame SPRITE_ANIM_FRAME_IDX_83,  1
+	frame SPRITE_ANIM_FRAME_IDX_82,  4
+	frame SPRITE_ANIM_FRAME_IDX_81, 12
+	frame SPRITE_ANIM_FRAME_IDX_82, 12
+	frame SPRITE_ANIM_FRAME_IDX_83,  4
+	frame SPRITE_ANIM_FRAME_IDX_84, 32
+	frame SPRITE_ANIM_FRAME_IDX_85,  3
+	frame SPRITE_ANIM_FRAME_IDX_86,  3
+	frame SPRITE_ANIM_FRAME_IDX_87,  4
+	frame SPRITE_ANIM_FRAME_IDX_88,  4
+	frame SPRITE_ANIM_FRAME_IDX_89,  4
+	frame SPRITE_ANIM_FRAME_IDX_8A, 10
+	frame SPRITE_ANIM_FRAME_IDX_8B,  7
 	endanim
 
 .Frameset_0b:
-	frame SPRITE_ANIM_FRAME_IDX_23,   3
-	frame SPRITE_ANIM_FRAME_IDX_23, 131
+	frame SPRITE_ANIM_FRAME_IDX_23,  3
+	frame SPRITE_ANIM_FRAME_IDX_23,  3, OAM_Y_FLIP
 	dorestart
 
 .Frameset_0c:
-	frame SPRITE_ANIM_FRAME_IDX_24,   2
-	frame SPRITE_ANIM_FRAME_IDX_25,   2
-	frame SPRITE_ANIM_FRAME_IDX_26,   2
-	frame SPRITE_ANIM_FRAME_IDX_25,   2
+	frame SPRITE_ANIM_FRAME_IDX_24,  2
+	frame SPRITE_ANIM_FRAME_IDX_25,  2
+	frame SPRITE_ANIM_FRAME_IDX_26,  2
+	frame SPRITE_ANIM_FRAME_IDX_25,  2
 	dorestart
 
 .Frameset_0d:
-	frame SPRITE_ANIM_FRAME_IDX_27,   7
-	frame SPRITE_ANIM_FRAME_IDX_28,   7
-	frame SPRITE_ANIM_FRAME_IDX_27, 135
-	frame SPRITE_ANIM_FRAME_IDX_28,  71
+	frame SPRITE_ANIM_FRAME_IDX_27,  7
+	frame SPRITE_ANIM_FRAME_IDX_28,  7
+	frame SPRITE_ANIM_FRAME_IDX_27,  7, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_28,  7, OAM_X_FLIP
 	dorestart
 
 .Frameset_0e:
-	frame SPRITE_ANIM_FRAME_IDX_29,   7
-	frame SPRITE_ANIM_FRAME_IDX_2A,   7
-	frame SPRITE_ANIM_FRAME_IDX_29,   7
-	frame SPRITE_ANIM_FRAME_IDX_2B,   7
+	frame SPRITE_ANIM_FRAME_IDX_29,  7
+	frame SPRITE_ANIM_FRAME_IDX_2A,  7
+	frame SPRITE_ANIM_FRAME_IDX_29,  7
+	frame SPRITE_ANIM_FRAME_IDX_2B,  7
 	dorestart
 
 .Frameset_0f:
-	frame SPRITE_ANIM_FRAME_IDX_29,   7
-	frame SPRITE_ANIM_FRAME_IDX_2C,   7
-	frame SPRITE_ANIM_FRAME_IDX_2D,   7
-	frame SPRITE_ANIM_FRAME_IDX_2C,   7
-	frame SPRITE_ANIM_FRAME_IDX_29,   7
+	frame SPRITE_ANIM_FRAME_IDX_29,  7
+	frame SPRITE_ANIM_FRAME_IDX_2C,  7
+	frame SPRITE_ANIM_FRAME_IDX_2D,  7
+	frame SPRITE_ANIM_FRAME_IDX_2C,  7
+	frame SPRITE_ANIM_FRAME_IDX_29,  7
 	endanim
 
 .Frameset_10:
-	frame SPRITE_ANIM_FRAME_IDX_2E,  20
+	frame SPRITE_ANIM_FRAME_IDX_2E, 20
 	endanim
 
 .Frameset_12:
-	frame SPRITE_ANIM_FRAME_IDX_2F,  32
+	frame SPRITE_ANIM_FRAME_IDX_2F, 32
 	endanim
 
 .Frameset_13:
-	frame SPRITE_ANIM_FRAME_IDX_30,  32
+	frame SPRITE_ANIM_FRAME_IDX_30, 32
 	endanim
 
 .Frameset_14:
-	frame SPRITE_ANIM_FRAME_IDX_30,   3
-	frame SPRITE_ANIM_FRAME_IDX_31,   3
-	frame SPRITE_ANIM_FRAME_IDX_30,   3
-	frame SPRITE_ANIM_FRAME_IDX_31,  67
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
 	dorestart
 
 .Frameset_15:
-	frame SPRITE_ANIM_FRAME_IDX_32,   4
-	frame SPRITE_ANIM_FRAME_IDX_33,   4
-	frame SPRITE_ANIM_FRAME_IDX_34,   4
+	frame SPRITE_ANIM_FRAME_IDX_32,  4
+	frame SPRITE_ANIM_FRAME_IDX_33,  4
+	frame SPRITE_ANIM_FRAME_IDX_34,  4
 	delanim
 
 .Frameset_16:
-	frame SPRITE_ANIM_FRAME_IDX_35,   3
-	frame SPRITE_ANIM_FRAME_IDX_36,   3
+	frame SPRITE_ANIM_FRAME_IDX_35,  3
+	frame SPRITE_ANIM_FRAME_IDX_36,  3
 	dorestart
 
 .Frameset_17:
-	frame SPRITE_ANIM_FRAME_IDX_37,   7
-	frame SPRITE_ANIM_FRAME_IDX_38,   7
+	frame SPRITE_ANIM_FRAME_IDX_37,  7
+	frame SPRITE_ANIM_FRAME_IDX_38,  7
 	dorestart
 
 .Frameset_18:
-	frame SPRITE_ANIM_FRAME_IDX_39,  32
+	frame SPRITE_ANIM_FRAME_IDX_39, 32
 	endanim
 
 .Frameset_19:
-	frame SPRITE_ANIM_FRAME_IDX_3B,   2
-	frame SPRITE_ANIM_FRAME_IDX_3A,   2
-	frame SPRITE_ANIM_FRAME_IDX_3B,   2
+	frame SPRITE_ANIM_FRAME_IDX_3B,  2
+	frame SPRITE_ANIM_FRAME_IDX_3A,  2
+	frame SPRITE_ANIM_FRAME_IDX_3B,  2
 	endanim
 
 .Frameset_1a:
-	frame SPRITE_ANIM_FRAME_IDX_3C,  32
+	frame SPRITE_ANIM_FRAME_IDX_3C, 32
 	endanim
 
 .Frameset_1b:
-	frame SPRITE_ANIM_FRAME_IDX_41,   8
-	frame SPRITE_ANIM_FRAME_IDX_42,   8
-	frame SPRITE_ANIM_FRAME_IDX_41,   8
-	frame SPRITE_ANIM_FRAME_IDX_42,  72
+	frame SPRITE_ANIM_FRAME_IDX_41,  8
+	frame SPRITE_ANIM_FRAME_IDX_42,  8
+	frame SPRITE_ANIM_FRAME_IDX_41,  8
+	frame SPRITE_ANIM_FRAME_IDX_42,  8, OAM_X_FLIP
 	dorestart
 
 ; XXX
-	frame SPRITE_ANIM_FRAME_IDX_43,   8
-	frame SPRITE_ANIM_FRAME_IDX_44,   8
+	frame SPRITE_ANIM_FRAME_IDX_43,  8
+	frame SPRITE_ANIM_FRAME_IDX_44,  8
 	dorestart
 
 ; XXX
-	frame SPRITE_ANIM_FRAME_IDX_45,   8
-	frame SPRITE_ANIM_FRAME_IDX_46,   8
+	frame SPRITE_ANIM_FRAME_IDX_45,  8
+	frame SPRITE_ANIM_FRAME_IDX_46,  8
 	dorestart
 
 ; XXX
-	frame SPRITE_ANIM_FRAME_IDX_47,   8
-	frame SPRITE_ANIM_FRAME_IDX_48,   8
+	frame SPRITE_ANIM_FRAME_IDX_47,  8
+	frame SPRITE_ANIM_FRAME_IDX_48,  8
 	dorestart
 
 ; XXX
-	frame SPRITE_ANIM_FRAME_IDX_49,   1
-	frame SPRITE_ANIM_FRAME_IDX_49,  65
-	frame SPRITE_ANIM_FRAME_IDX_49, 193
-	frame SPRITE_ANIM_FRAME_IDX_49, 129
+	frame SPRITE_ANIM_FRAME_IDX_49,  1
+	frame SPRITE_ANIM_FRAME_IDX_49,  1, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_49,  1, OAM_X_FLIP, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_49,  1, OAM_Y_FLIP
 	dorestart
 
 ; XXX
-	frame SPRITE_ANIM_FRAME_IDX_4A,  32
+	frame SPRITE_ANIM_FRAME_IDX_4A, 32
 	endanim
 
 ; XXX
-	frame SPRITE_ANIM_FRAME_IDX_4B,  32
+	frame SPRITE_ANIM_FRAME_IDX_4B, 32
 	endanim
 
 ; XXX
-	frame SPRITE_ANIM_FRAME_IDX_4C,  32
+	frame SPRITE_ANIM_FRAME_IDX_4C, 32
 	endanim
 
 ; XXX
-	frame SPRITE_ANIM_FRAME_IDX_4D,  32
+	frame SPRITE_ANIM_FRAME_IDX_4D, 32
 	endanim
 
 ; XXX
-	frame SPRITE_ANIM_FRAME_IDX_4E,   3
+	frame SPRITE_ANIM_FRAME_IDX_4E,  3
 	dorepeat  3
 	dorestart
 
@@ -293,193 +293,193 @@
 	endanim
 
 .Frameset_1d:
-	frame SPRITE_ANIM_FRAME_IDX_4F,  32
+	frame SPRITE_ANIM_FRAME_IDX_4F, 32
 	endanim
 
 .Frameset_1e:
-	frame SPRITE_ANIM_FRAME_IDX_50,   2
-	frame SPRITE_ANIM_FRAME_IDX_51,  16
+	frame SPRITE_ANIM_FRAME_IDX_50,  2
+	frame SPRITE_ANIM_FRAME_IDX_51, 16
 	dorepeat  1
-	frame SPRITE_ANIM_FRAME_IDX_52,   1
+	frame SPRITE_ANIM_FRAME_IDX_52,  1
 	dorepeat  1
-	frame SPRITE_ANIM_FRAME_IDX_53,   1
+	frame SPRITE_ANIM_FRAME_IDX_53,  1
 	delanim
 
 .Frameset_1f:
-	frame SPRITE_ANIM_FRAME_IDX_54,  32
+	frame SPRITE_ANIM_FRAME_IDX_54, 32
 	endanim
 
 .Frameset_20:
-	frame SPRITE_ANIM_FRAME_IDX_55,  32
+	frame SPRITE_ANIM_FRAME_IDX_55, 32
 	endanim
 
 .Frameset_21:
-	frame SPRITE_ANIM_FRAME_IDX_55,  96
+	frame SPRITE_ANIM_FRAME_IDX_55, 32, OAM_X_FLIP
 	endanim
 
 .Frameset_22:
-	frame SPRITE_ANIM_FRAME_IDX_55, 160
+	frame SPRITE_ANIM_FRAME_IDX_55, 32, OAM_Y_FLIP
 	endanim
 
 .Frameset_23:
-	frame SPRITE_ANIM_FRAME_IDX_55, 224
+	frame SPRITE_ANIM_FRAME_IDX_55, 32, OAM_X_FLIP, OAM_Y_FLIP
 	endanim
 
 .Frameset_24:
-	frame SPRITE_ANIM_FRAME_IDX_56,  10
-	frame SPRITE_ANIM_FRAME_IDX_57,   9
-	frame SPRITE_ANIM_FRAME_IDX_58,  10
-	frame SPRITE_ANIM_FRAME_IDX_59,  10
-	frame SPRITE_ANIM_FRAME_IDX_58,   9
-	frame SPRITE_ANIM_FRAME_IDX_5A,  10
+	frame SPRITE_ANIM_FRAME_IDX_56, 10
+	frame SPRITE_ANIM_FRAME_IDX_57,  9
+	frame SPRITE_ANIM_FRAME_IDX_58, 10
+	frame SPRITE_ANIM_FRAME_IDX_59, 10
+	frame SPRITE_ANIM_FRAME_IDX_58,  9
+	frame SPRITE_ANIM_FRAME_IDX_5A, 10
 	dorestart
 
 .Frameset_25:
-	frame SPRITE_ANIM_FRAME_IDX_50,   2
-	frame SPRITE_ANIM_FRAME_IDX_5B,   2
-	frame SPRITE_ANIM_FRAME_IDX_50,   2
-	frame SPRITE_ANIM_FRAME_IDX_5B,  66
+	frame SPRITE_ANIM_FRAME_IDX_50,  2
+	frame SPRITE_ANIM_FRAME_IDX_5B,  2
+	frame SPRITE_ANIM_FRAME_IDX_50,  2
+	frame SPRITE_ANIM_FRAME_IDX_5B,  2, OAM_X_FLIP
 	dorestart
 
 .Frameset_26:
-	frame SPRITE_ANIM_FRAME_IDX_5C,   2
+	frame SPRITE_ANIM_FRAME_IDX_5C,  2
 	endanim
 
 .Frameset_27:
-	frame SPRITE_ANIM_FRAME_IDX_5D,   2
+	frame SPRITE_ANIM_FRAME_IDX_5D,  2
 	endanim
 
 .Frameset_28:
-	frame SPRITE_ANIM_FRAME_IDX_5E,   2
+	frame SPRITE_ANIM_FRAME_IDX_5E,  2
 	endanim
 
 .Frameset_29:
-	frame SPRITE_ANIM_FRAME_IDX_5F,   2
+	frame SPRITE_ANIM_FRAME_IDX_5F,  2
 	endanim
 
 .Frameset_2a:
-	frame SPRITE_ANIM_FRAME_IDX_60,   2
+	frame SPRITE_ANIM_FRAME_IDX_60,  2
 	endanim
 
 .Frameset_2b:
-	frame SPRITE_ANIM_FRAME_IDX_61,   2
+	frame SPRITE_ANIM_FRAME_IDX_61,  2
 	endanim
 
 .Frameset_2c:
-	frame SPRITE_ANIM_FRAME_IDX_62,   2
+	frame SPRITE_ANIM_FRAME_IDX_62,  2
 	endanim
 
 .Frameset_2f:
-	frame SPRITE_ANIM_FRAME_IDX_32,   3
-	frame SPRITE_ANIM_FRAME_IDX_33,   3
-	frame SPRITE_ANIM_FRAME_IDX_34,   3
-	frame SPRITE_ANIM_FRAME_IDX_30,   3
-	frame SPRITE_ANIM_FRAME_IDX_31,   3
-	frame SPRITE_ANIM_FRAME_IDX_30,   3
-	frame SPRITE_ANIM_FRAME_IDX_31,  67
-	frame SPRITE_ANIM_FRAME_IDX_30,   3
-	frame SPRITE_ANIM_FRAME_IDX_31,   3
-	frame SPRITE_ANIM_FRAME_IDX_30,   3
-	frame SPRITE_ANIM_FRAME_IDX_31,  67
-	frame SPRITE_ANIM_FRAME_IDX_30,   3
-	frame SPRITE_ANIM_FRAME_IDX_31,   3
-	frame SPRITE_ANIM_FRAME_IDX_30,   3
-	frame SPRITE_ANIM_FRAME_IDX_31,  67
+	frame SPRITE_ANIM_FRAME_IDX_32,  3
+	frame SPRITE_ANIM_FRAME_IDX_33,  3
+	frame SPRITE_ANIM_FRAME_IDX_34,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
 	endanim
 
 .Frameset_30:
-	frame SPRITE_ANIM_FRAME_IDX_30,   3
-	frame SPRITE_ANIM_FRAME_IDX_31,   3
-	frame SPRITE_ANIM_FRAME_IDX_30,   3
-	frame SPRITE_ANIM_FRAME_IDX_31,  67
-	frame SPRITE_ANIM_FRAME_IDX_30,   3
-	frame SPRITE_ANIM_FRAME_IDX_31,   3
-	frame SPRITE_ANIM_FRAME_IDX_30,   3
-	frame SPRITE_ANIM_FRAME_IDX_31,  67
-	frame SPRITE_ANIM_FRAME_IDX_30,   3
-	frame SPRITE_ANIM_FRAME_IDX_31,   3
-	frame SPRITE_ANIM_FRAME_IDX_30,   3
-	frame SPRITE_ANIM_FRAME_IDX_31,  67
-	frame SPRITE_ANIM_FRAME_IDX_32,   3
-	frame SPRITE_ANIM_FRAME_IDX_33,   3
-	frame SPRITE_ANIM_FRAME_IDX_34,   3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3
+	frame SPRITE_ANIM_FRAME_IDX_30,  3
+	frame SPRITE_ANIM_FRAME_IDX_31,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_32,  3
+	frame SPRITE_ANIM_FRAME_IDX_33,  3
+	frame SPRITE_ANIM_FRAME_IDX_34,  3
 	delanim
 
 .Frameset_31:
-	frame SPRITE_ANIM_FRAME_IDX_67,   3
-	frame SPRITE_ANIM_FRAME_IDX_68,   3
+	frame SPRITE_ANIM_FRAME_IDX_67,  3
+	frame SPRITE_ANIM_FRAME_IDX_68,  3
 	dorestart
 
 .Frameset_32:
-	frame SPRITE_ANIM_FRAME_IDX_6C,   3
+	frame SPRITE_ANIM_FRAME_IDX_6C,  3
 	endanim
 
 .Frameset_33:
-	frame SPRITE_ANIM_FRAME_IDX_6D,   3
+	frame SPRITE_ANIM_FRAME_IDX_6D,  3
 	endanim
 
 .Frameset_34:
-	frame SPRITE_ANIM_FRAME_IDX_69,   2
-	frame SPRITE_ANIM_FRAME_IDX_6A,   2
-	frame SPRITE_ANIM_FRAME_IDX_6B,   2
+	frame SPRITE_ANIM_FRAME_IDX_69,  2
+	frame SPRITE_ANIM_FRAME_IDX_6A,  2
+	frame SPRITE_ANIM_FRAME_IDX_6B,  2
 	delanim
 
 .Frameset_35:
-	frame SPRITE_ANIM_FRAME_IDX_6E,   3
-	frame SPRITE_ANIM_FRAME_IDX_6F,   3
-	frame SPRITE_ANIM_FRAME_IDX_70,   3
-	frame SPRITE_ANIM_FRAME_IDX_71,   3
+	frame SPRITE_ANIM_FRAME_IDX_6E,  3
+	frame SPRITE_ANIM_FRAME_IDX_6F,  3
+	frame SPRITE_ANIM_FRAME_IDX_70,  3
+	frame SPRITE_ANIM_FRAME_IDX_71,  3
 	dorestart
 
 .Frameset_36:
-	frame SPRITE_ANIM_FRAME_IDX_71,   3
-	frame SPRITE_ANIM_FRAME_IDX_6E,   7
+	frame SPRITE_ANIM_FRAME_IDX_71,  3
+	frame SPRITE_ANIM_FRAME_IDX_6E,  7
 	endanim
 
 .Frameset_37:
-	frame SPRITE_ANIM_FRAME_IDX_72,  32
-	frame SPRITE_ANIM_FRAME_IDX_73,   7
-	frame SPRITE_ANIM_FRAME_IDX_74,   7
+	frame SPRITE_ANIM_FRAME_IDX_72, 32
+	frame SPRITE_ANIM_FRAME_IDX_73,  7
+	frame SPRITE_ANIM_FRAME_IDX_74,  7
 	endanim
 
 .Frameset_38:
-	frame SPRITE_ANIM_FRAME_IDX_75,   3
+	frame SPRITE_ANIM_FRAME_IDX_75,  3
 	endanim
 
 .Frameset_39:
-	frame SPRITE_ANIM_FRAME_IDX_76,   3
-	frame SPRITE_ANIM_FRAME_IDX_77,   3
-	frame SPRITE_ANIM_FRAME_IDX_78,   7
+	frame SPRITE_ANIM_FRAME_IDX_76,  3
+	frame SPRITE_ANIM_FRAME_IDX_77,  3
+	frame SPRITE_ANIM_FRAME_IDX_78,  7
 	delanim
 
 .Frameset_3a:
-	frame SPRITE_ANIM_FRAME_IDX_76,  67
-	frame SPRITE_ANIM_FRAME_IDX_77,  67
-	frame SPRITE_ANIM_FRAME_IDX_78,  71
+	frame SPRITE_ANIM_FRAME_IDX_76,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_77,  3, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_78,  7, OAM_X_FLIP
 	delanim
 
 .Frameset_3b:
-	frame SPRITE_ANIM_FRAME_IDX_76, 131
-	frame SPRITE_ANIM_FRAME_IDX_77, 131
-	frame SPRITE_ANIM_FRAME_IDX_78, 135
+	frame SPRITE_ANIM_FRAME_IDX_76,  3, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_77,  3, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_78,  7, OAM_Y_FLIP
 	delanim
 
 .Frameset_3c:
-	frame SPRITE_ANIM_FRAME_IDX_76, 195
-	frame SPRITE_ANIM_FRAME_IDX_77, 195
-	frame SPRITE_ANIM_FRAME_IDX_78, 199
+	frame SPRITE_ANIM_FRAME_IDX_76,  3, OAM_X_FLIP, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_77,  3, OAM_X_FLIP, OAM_Y_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_78,  7, OAM_X_FLIP, OAM_Y_FLIP
 	delanim
 
 .Frameset_3d:
-	frame SPRITE_ANIM_FRAME_IDX_79,   3
-	frame SPRITE_ANIM_FRAME_IDX_7A,   3
-	frame SPRITE_ANIM_FRAME_IDX_7B,   3
-	frame SPRITE_ANIM_FRAME_IDX_7C,   7
-	frame SPRITE_ANIM_FRAME_IDX_7D,   7
+	frame SPRITE_ANIM_FRAME_IDX_79,  3
+	frame SPRITE_ANIM_FRAME_IDX_7A,  3
+	frame SPRITE_ANIM_FRAME_IDX_7B,  3
+	frame SPRITE_ANIM_FRAME_IDX_7C,  7
+	frame SPRITE_ANIM_FRAME_IDX_7D,  7
 	endanim
 
 .Frameset_3e:
-	frame SPRITE_ANIM_FRAME_IDX_7E,   3
+	frame SPRITE_ANIM_FRAME_IDX_7E,  3
 	endanim
 
 .Frameset_3f:
@@ -487,13 +487,13 @@
 	endanim
 
 .Frameset_40:
-	frame SPRITE_ANIM_FRAME_IDX_7F,   8
-	frame SPRITE_ANIM_FRAME_IDX_80,   8
+	frame SPRITE_ANIM_FRAME_IDX_7F,  8
+	frame SPRITE_ANIM_FRAME_IDX_80,  8
 	endanim
 
 .Frameset_41:
-	frame SPRITE_ANIM_FRAME_IDX_7F,  72
-	frame SPRITE_ANIM_FRAME_IDX_80,  72
+	frame SPRITE_ANIM_FRAME_IDX_7F,  8, OAM_X_FLIP
+	frame SPRITE_ANIM_FRAME_IDX_80,  8, OAM_X_FLIP
 	endanim
 ; 8d94d
 
--- a/macros.asm
+++ b/macros.asm
@@ -140,7 +140,14 @@
 ; pic animations
 frame: MACRO
 	db \1
-	db \2
+x = \2
+IF _NARG > 2
+rept _NARG +- 2
+x = x | (1 << (\3 + 1))
+	shift
+endr
+endc
+	db x
 	ENDM
 setrepeat: MACRO
 	db $fe