//* fxprocs.c (for inclusion in vizfx.c) - screen effects ICSAL procedure definitions //* //* Screen effects ICSAL control procedures //* //* FX_Tile_Spin_Fade ICSAL procedure static int spinProc[] = { //* Note: loop is hand-initialized within FX_Tile_Spin_Fade END_do_nothing, repeat_loop, set_loop_start, 32, //36 add_sprite_rgb, -4, -4, -4, add_sprite_y, -1, add_sprite_x, -1, END_add_sprite_rotation_degree, 10, repeat_loop, END_add_sprite_rotation_degree, 10, END_add_sprite_rotation_degree, 10, END_add_sprite_rotation_degree, 10, END_add_sprite_rotation_degree, 10, END_proc }; //* FX_Meltdown ICSAL procedure static int meltProc[] = { //* Note: loop is hand-initialized within FX_Meltdown() END_do_nothing, repeat_loop, set_data_start, 1,0,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1, 1,1,1,0,1,1,1,1,1,2,1,1,1,1,2,1,1, 2,1,2,2,1,2,2,2,2,2,2,2,2,2,3,2,3, 3,2,3,3,4,3,3,4,4,3,5,4,4,5,5,5,6, 6,6,7,8,7,9,10,10,13,13,15,9, 0,0,0,0,0,0,0,0,0,0,0,0,0, //* Ensures sprite residue fade-out DATA_END, //add_sprite_rgb, 0,-1,-1, END_add_sprite_y_data, loop_while_data, END_proc }; //* Initial delay counts for the 160 2x240 screen strip //* sprites in FX_Meltdown and FX_Splice_Screen(FX_MELT_SPLICE) static int meltDelay[] = { 33,32,32,31,31,30,29,28,27,27,26,26,26,26,26,27, 27,28,29,29,30,30,30,31,31,31,31,31,31,31,30,30, 30,30,29,29,29,28,28,27,26,25,24,23,23,22,22,22, 21,21,21,20,20,19,18,17,15,12,9,6,4,3,2,2, 1,1,1,1,1,2,2,3,4,6,8,10,12,14,16,18, 19,21,22,24,25,26,27,28,29,30,31,32,32,33,33,33, 34,34,34,34,34,34,34,34,33,33,33,32,32,31,30,30, 29,29,29,28,28,28,28,27,27,27,27,27,27,28,28,28, 28,29,29,30,30,31,32,33,33,34,34,35,35,35,35,35, 35,34,34,33,33,32,31,30,29,28,27,27,26,26,26,25 }; //* FX_Peel_Screen ICSAL procedure #define LAST_X (320) static int peelProc[] = { //* Note: loop is hand-initialized within FX_Peel_Screen() END_do_nothing, repeat_loop, set_sprite_attr_brightness, A_BRIGHT_ON, set_data_start, 1,0, 0,0, 0,0, 0,0, 0,0, 1,0, 0,0, 0,0, //* Curl down y,x addition pairs 1,0, 0,0, 0,0, 1,0, 0,0, 1,0, 0,0, 1,0, 0,0, 1,0, 1,0, 0,0, 1,0, 1,0, 0,0, 1,0, 1,0, 1,0, 1,0, 1,0, 1,0, 1,0, 1,0, 2,0, 1,0, 2,0, 1,0, 2,0, 2,0, 2,0, 2,0, 2,0, 3,0, 4,0, 6,0, 4,2, 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, 2,2, //* Straight down y,x addition pairs 2,2, 2,2, DATA_END, add_sprite_rgb, -2, -2, -2, add_sprite_y_data, add_sprite_x_data, END_done_if_x_past, LAST_X, loop_while_data, set_sprite_attr_rotation, A_ROTATE_ON, //* Start reversing strip sprites set_sprite_width, 3, //* Hack needed to make reversed set_sprite_scale_xy, -(4096-1366),ONE, //* strips display correctly! add_sprite_y, 5, add_sprite_x, 4, //* First reversed strip END_done_if_x_past, LAST_X, set_sprite_height, 160, //* Needed to keep highest fps set_sprite_attr_transparency, A_TRANS_ON, //* Strips are transparent from now on set_data_start, 6,4, 4,4, 3,4, 2,4, 2,4, 2,4, 2,4, 2,4, //* Peel back y,x addition pairs 1,4, 2,4, 1,4, 2,4, 1,4, 1,4, 1,4, 1,4, 1,4, 1,4, 1,4, 1,4, 0,4, 1,4, 1,4, 0,4, 1,4, 1,4, 0,4, 1,4, 0,4, 1,4, 0,4, 1,4, DATA_END, add_sprite_rgb, 2, 2, 2, add_sprite_y_data, add_sprite_x_data, END_done_if_x_past, LAST_X, loop_while_data, set_sprite_height, 122, //* Needed to keep highest fps set_loop_start, INFINITE_LOOP, add_sprite_rgb, 4, 4, 4, add_sprite_y, 0, add_sprite_x, 4, END_done_if_x_past, LAST_X, add_sprite_rgb, 4, 4, 4, add_sprite_y, 1, add_sprite_x, 4, END_done_if_x_past, LAST_X, repeat_loop, }; //* FX_Splice_Screen ICSAL procedure static int spliceUpProc[] = { //* Note: loop is hand-initialized within FX_Splice_Screen() END_do_nothing, repeat_loop, set_data_start, -1,0,-1,-2,-2,-4,-4,-8,-8, -15,-15,-15,-15,-15,-15,-15,-15,-15,-15, -15,-15,-15,-15, //* Total so far=240 0,0,0,0,0,0,0,0,0,0,0,0,0, //* Ensures sprite residue fade-out DATA_END, END_add_sprite_y_data, loop_while_data, END_proc }; //* FX_Splice_Screen ICSAL procedure static int spliceDownProc[] = { //* Note: loop is hand-initialized within FX_Splice_Screen() END_do_nothing, repeat_loop, set_data_start, 1,0,1,2,2,4,4,8,8, 15,15,15,15,15,15,15,15,15,15, 15,15,15,15, //* Total so far=240 0,0,0,0,0,0,0,0,0,0,0,0,0, //* Ensures sprite residue fade-out DATA_END, END_add_sprite_y_data, loop_while_data, END_proc };