changeset 18:c330ded6d728

add task file.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Fri, 17 Dec 2010 22:18:11 +0900
parents 927401604461
children 00c3272a801f
files Makefile Makefile.mac Makefile.ps3 game_task.h spe/Atari.cc spe/asteroid.cc spe/chara_state0.cc spe/chara_state0.h spe/chara_state1.cc spe/chara_state1.h spe/chara_state10.cc spe/chara_state10.h spe/chara_state11.cc spe/chara_state11.h spe/chara_state12.cc spe/chara_state12.h spe/chara_state13.cc spe/chara_state13.h spe/chara_state2.cc spe/chara_state2.h spe/chara_state20.cc spe/chara_state20.h spe/chara_state21.cc spe/chara_state21.h spe/chara_state22.cc spe/chara_state22.h spe/chara_state23.cc spe/chara_state23.h spe/chara_state24.cc spe/chara_state24.h spe/chara_state25.cc spe/chara_state25.h spe/chara_state26.cc spe/chara_state26.h spe/chara_state27.cc spe/chara_state27.h spe/chara_state28.cc spe/chara_state28.h spe/chara_state29.cc spe/chara_state29.h spe/chara_state3.cc spe/chara_state3.h spe/chara_state30.cc spe/chara_state30.h spe/chara_state31.cc spe/chara_state31.h spe/chara_state32.cc spe/chara_state32.h spe/chara_state33.cc spe/chara_state33.h spe/chara_state34.cc spe/chara_state34.h spe/chara_state35.cc spe/chara_state35.h spe/chara_state4.cc spe/chara_state4.h spe/chara_state40.cc spe/chara_state40.h spe/chara_state400.cc spe/chara_state400.h spe/chara_state401.cc spe/chara_state401.h spe/chara_state402.cc spe/chara_state402.h spe/chara_state41.cc spe/chara_state41.h spe/chara_state410.cc spe/chara_state410.h spe/chara_state411.cc spe/chara_state411.h spe/chara_state5.cc spe/chara_state5.h spe/chara_state500.cc spe/chara_state500.h spe/chara_state501.cc spe/chara_state501.h spe/chara_state6.cc spe/chara_state6.h spe/chara_state600.cc spe/chara_state600.h spe/chara_state601.cc spe/chara_state601.h spe/chara_state602.cc spe/chara_state602.h spe/chara_state7.cc spe/chara_state7.h spe/chara_state8.cc spe/chara_state8.h spe/chara_state9.cc spe/chara_state9.h spe/noaction.cc spe/noaction.h state_task.cc
diffstat 93 files changed, 2997 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Fri Dec 17 04:16:25 2010 +0900
+++ b/Makefile	Fri Dec 17 22:18:11 2010 +0900
@@ -18,10 +18,8 @@
 
 cell:
 	@echo "Make for PS3 (Cell)"
-	@$(MAKE) -f Makefile.ps3 t_dandy
+	@$(MAKE) -f Makefile.ps3 dandy
 
 clean:
 	@$(MAKE) -f Makefile.mac clean
-	@$(MAKE) -f Makefile.ps3 clean
-	rm -f depend.inc
-
+	@$(MAKE) -f Makefile.ps3 clean
\ No newline at end of file
--- a/Makefile.mac	Fri Dec 17 04:16:25 2010 +0900
+++ b/Makefile.mac	Fri Dec 17 22:18:11 2010 +0900
@@ -26,15 +26,15 @@
 	$(CC) $(ABI) -o $@ $(OBJS) Dandy.o collision.o $(LIBS)
 
 t_dandy: $(OBJS) TaskDandy.o collision_task.o $(TASK_OBJS)
-	 $(CC) $(ABI) -o $@ $(OBJS) TaskDandy.o collision_task.o $(TASK_OBJS) $(LIBS)
+	$(CC) $(ABI) -o $@ $(OBJS) TaskDandy.o collision_task.o $(TASK_OBJS) $(LIBS)
 
 clean:
 	rm -f $(TARGET) $(OBJS) $(TASK_OBJS) Dandy.o TaskDandy.o sgoex.o main.o
 
 .c.o:
-	$(CC) $(CFLAGS) $(INCLUDES) -c $<
+	$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
 
 .cc.o:
-	$(CC) $(CFLAGS) $(INCLUDES) -c $<
+	$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
 
 debug.o:debug.h
--- a/Makefile.ps3	Fri Dec 17 04:16:25 2010 +0900
+++ b/Makefile.ps3	Fri Dec 17 22:18:11 2010 +0900
@@ -7,13 +7,13 @@
 LIBS	+=  `/usr/bin/sdl-config --libs` -lGL -lGLU -lSDL_mixer -lSDL_image `xml2-config --libs`
 LIBS +=  -lCerium -lCellManager  -lspe2 -lpthread
 
-TASK_DIR  = ppe
+TASK_DIR  = spe
 TASK_SRCS_TMP = $(wildcard $(TASK_DIR)/*.cc)
 TASK_SRCS_EXCLUDE = 
 TASK_SRCS = $(filter-out $(TASK_SRCS_EXCLUDE),$(TASK_SRCS_TMP))
 TASK_OBJS = $(TASK_SRCS:.cc=.o)
 
-TARGET = dandy t_dandy spe-main
+TARGET = dandy spe-main
 OBJS    =  Character.o Bom.o tokuten.o collision.o count2.o Character_state.o schedule3.o tama2.o syokika.o Ss.o sound.o  profile.o debug.o trace.o LoadSprite.o xml.o b64_de.o tree_controll.o object.o sys.o
 
 all: $(TARGET)
@@ -47,9 +47,9 @@
 	cd spe;$(MAKE) clean
 
 .c.o:
-	$(CC) $(CFLAGS) $(INCLUDES) -c $<
+	$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
 
 .cc.o:
-	$(CC) $(CFLAGS) $(INCLUDES) -c $<
+	$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
 
 debug.o:debug.h
--- a/game_task.h	Fri Dec 17 04:16:25 2010 +0900
+++ b/game_task.h	Fri Dec 17 22:18:11 2010 +0900
@@ -1,3 +1,47 @@
 // Game で使用する Task ID
      ATARI,
      SIMPLE_STATE,
+     NO_ACT,
+     STATE0,
+     STATE1,
+     STATE2,
+     STATE3,
+     STATE4,
+     STATE5,
+     STATE6,
+     STATE7,
+     STATE8,
+     STATE9,
+     STATE10,
+     STATE11,
+     STATE12,
+     STATE13,
+     STATE20,
+     STATE21,
+     STATE22,
+     STATE23,
+     STATE24,
+     STATE25,
+     STATE26,
+     STATE27,
+     STATE28,
+     STATE29,
+     STATE30,
+     STATE31,
+     STATE32,
+     STATE33,
+     STATE34,
+     STATE35,
+     STATE40,
+     STATE41,
+     STATE400,
+     STATE401,
+     STATE402,
+     STATE410,
+     STATE411,
+     STATE500,
+     STATE501,
+     STATE600,
+     STATE601,
+     STATE602,
+     ASTEROID,
--- a/spe/Atari.cc	Fri Dec 17 04:16:25 2010 +0900
+++ b/spe/Atari.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -74,8 +74,8 @@
 		Bom(p->x, p->y, bomend, bchar);
 		enemycount += (p->score *
 			       ((infg.stg / 128) + infg_level + 1));
-		p->state = delete_chara;
-		p->collision = noaction;
+		//p->state = delete_chara;
+		//p->collision = noaction;
 		p->f = FALSE;
 
 		property->infg = infg;
@@ -94,8 +94,8 @@
 		Bom(p->x, p->y, bomend, bchar);
 		enemycount += (p->score *
 			       ((infg.stg / 128) + infg_level + 1));
-		p->state = delete_chara;
-		p->collision = noaction;
+		//p->state = delete_chara;
+		//p->collision = noaction;
 		p->f = FALSE;
 
 		property->infg = infg;
@@ -118,8 +118,8 @@
 		Bom(p->x, p->y, bomend, bchar);
 		enemycount += (p->score *
 			       ((infg.stg / 128) + infg_level + 1));
-		p->state = delete_chara;
-		p->collision = noaction;
+		//p->state = delete_chara;
+		//p->collision = noaction;
 		p->f = FALSE;
 
 		property->infg = infg;
@@ -141,8 +141,8 @@
 		Bom(p->x, p->y, bomend, bchar);
 		enemycount += (p->score *
 			       ((infg.stg / 128) + infg_level + 1));
-		p->state = delete_chara;
-		p->collision = noaction;
+		//p->state = delete_chara;
+		//p->collision = noaction;
 		p->f = FALSE;
 
 		property->infg = infg;
@@ -162,8 +162,8 @@
 		Bom(p->x, p->y, bomend, bchar);
 		enemycount += (p->score *
 			       ((infg.stg / 128) + infg_level + 1));
-		p->state = delete_chara;
-		p->collision = noaction;
+		//p->state = delete_chara;
+		//p->collision = noaction;
 		p->f = FALSE;
 
 		property->infg = infg;
@@ -183,8 +183,8 @@
 		Bom(p->x, p->y, bomend, bchar);
 		enemycount += (p->score *
 			       ((infg.stg / 128) + infg_level + 1));
-		p->state = delete_chara;
-		p->collision = noaction;
+		//p->state = delete_chara;
+		//p->collision = noaction;
 		p->f = FALSE;
 
 		property->infg = infg;
@@ -202,8 +202,8 @@
 	    Bom(p->x, p->y, bomend, bchar);
 	    enemycount += (p->score *
 			   ((infg.stg / 128) + infg_level + 1));
-	    p->state = delete_chara;
-	    p->collision = noaction;
+	    //p->state = delete_chara;
+	    //p->collision = noaction;
 	    p->f = FALSE;
 
 	    property->infg = infg;
@@ -221,8 +221,8 @@
 	    Bom(p->x, p->y, bomend, bchar);
 	    enemycount += (p->score *
 			   ((infg.stg / 128) + infg_level + 1));
-	    p->state = delete_chara;
-	    p->collision = noaction;
+	    //p->state = delete_chara;
+	    //p->collision = noaction;
 	    p->f = FALSE;
 
 	    property->infg = infg;
@@ -246,8 +246,8 @@
 		Bom(p->x, p->y, bomend, bchar);
 		enemycount += (p->score *
 			       ((infg.stg / 128) + infg_level + 1));
-		p->state = delete_chara;
-		p->collision = noaction;
+		//p->state = delete_chara;
+		//p->collision = noaction;
 		p->f = FALSE;
 
 		property->infg = infg;
@@ -269,8 +269,8 @@
 	    Bom(p->x, p->y, bomend, bchar);
 	    enemycount += (p->score *
 			   ((infg.stg / 128) + infg_level + 1));
-	    p->state = delete_chara;
-	    p->collision = noaction;
+	    //p->state = delete_chara;
+	    //p->collision = noaction;
 	    p->f = FALSE;
 
 	    property->lg = lg;
@@ -294,8 +294,8 @@
 		    Bom(p->x, p->y, bomend, bchar);
 		    enemycount += (p->score *
 				   ((infg.stg / 128) + infg_level + 1));
-		    p->state = delete_chara;
-		    p->collision = noaction;
+		    //p->state = delete_chara;
+		    //p->collision = noaction;
 		    p->f = FALSE;
 
 		    property->infg = infg;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/asteroid.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,31 @@
+#include "asteroid.h"
+#include "tobject.h"
+
+SchedDefineTask(ASTEROID);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+    int i;
+    
+    asteroiddt[asteroidi] = p;
+    //            if(asteroidi==0)
+    //            {
+    p->x += p->vx;
+    p->y += p->vy;
+    //            }
+    if (asteroidi > 0) {
+	for (i = 0; i < asteroidi; i++) {
+	    if ((asteroiddt[i]->x + 32 > p->x)
+		&& (p->x + 32 > asteroiddt[i]->x)
+		&& (asteroiddt[i]->y + 32 > p->y)
+		&& (asteroiddt[i]->y < p->y + 32)) {
+		p->vx *= -1;
+		p->vy *= -1;
+	    }
+	}
+    }
+    asteroidi++;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state0.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,17 @@
+#include "chara_state0.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE0);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->x += p->vx;
+    p->y += p->vy;
+
+    p->task = STATE0;
+    smanager->swap();
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state0.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state1.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,17 @@
+#include "chara_state1.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE1);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->x -= p->vx;
+    p->y -= p->vy;
+
+    p->task = STATE1;
+    smanager->swap();
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state1.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state10.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,24 @@
+#include "chara_state10.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE10);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if(p->dt1 < 48)
+    {
+	p->x += p->vx;
+	p->y += p->vy;
+	p->dt1++;
+	p->task = STATE10;
+	return 0;
+    }
+    rinkf1 = 1;
+    p->dt1 = rinkx;
+    p->dt2 = rinky;
+    p->task = STATE13;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state10.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state11.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,23 @@
+#include "chara_state11.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE11);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if(rinkf1 == 0)
+    {
+	count++;
+	DefSpriteEx(54, 16, 32);
+	PutSpriteEx(54, p->x, p->y, p->s, p->s, 1);
+	p->task = STATE11;
+	return 0;
+    }
+    p->dt1 = 0;
+    p->dt2 = 0;
+    p->task = STATE12;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state11.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state12.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,131 @@
+#include "chara_state12.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE12);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if(fastebos > 60*60)
+    {
+	if(p->y > 240+32)
+	{
+	    p->state = delete_chara;
+	}
+	p->y += 3;
+	rinky += 3;
+	count++;
+	DefSpriteEx(54, 16, 32);
+	PutSpriteEx(54, p->x, p->y, 2, 2, 1);
+	p->state = chara_state12;
+	return 0;
+    }
+    if(p->dt1 <= 60)
+    {
+	if(jiki.x + 15 - rinkx < -5)
+	{
+	    p->vx = -0.8;
+	}
+      else if(jiki.x + 15 - rinkx > 5)
+      {
+	  p->vx = +0.8;
+      }
+      else p->vx = 0;
+	rinkx = p->x;
+	rinky = p->y;
+    }
+    if((p->dt1 > 60) && (p->dt1 <= 70))
+    {
+	if(p->dt1 % 2 == 1)
+	{
+	    Puttama(0, rinkx - 16, rinky);
+	    Puttama(0, rinkx, rinky);
+	    Puttama(0, rinkx + 16, rinky);
+	}
+    }
+  if((p->dt1 > 180) && (p->dt1 <= 240))
+  {
+      if(p->dt1 % 2 == 1)
+      {
+	  rinkf2 = 1;
+	  Puttama(2, rinkx - 16, p->y - 32);
+	  Puttama(3, rinkx + 32 - 16, p->y - 32);
+      }
+      else
+      {
+	  rinkf2 = 2;
+      }
+  }
+  if(p->dt1 > 240)
+  {
+      rinkf2 = 2;
+  }
+  if((p->dt1 > 240) && (p->dt1 <= 400))
+  {
+      count++;
+      PutSprite(count, rinkx - 16, rinky + 32,
+		58 + p->dt1 % 4);
+  }
+  if((p->dt1 > 300) && (p->dt1 <= 400))
+    {
+	rinkf2 = 3;
+	if(jiki.x + 15 - rinkx < -5)
+	{
+	    p->vx = -1;
+	}
+	else if(jiki.x + 15 - rinkx > 5)
+	{
+	    p->vx = +1;
+	}
+	else p->vx = 0;
+	p->x += p->vx;
+	rinkx = p->x;
+	rinky = p->y;
+	Puttama(4, rinkx - 8, rinky + 16);
+    }
+  if((p->dt1 > 400) && (p->dt1 <= 500))
+  {
+      rinkf2 = 4;
+      if(jiki.x + 15 - rinkx > 5)
+      {
+	  p->vx = -1;
+	}
+      else if(jiki.x + 15 - rinkx > 5)
+      {
+	  p->vx = +1;
+      }
+      else p->vx = 0;
+      p->x += p->vx;
+      rinkx = p->x;
+      rinky = p->y;
+  }
+  if(p->dt1 > 500)
+  {
+      rinkf2 = 5;
+      if(jiki.x + 15 - rinkx < -5)
+      {
+	  p->vx = -1;
+      }
+      else if(jiki.x + 15 - rinkx > 5)
+      {
+	  p->vx = +1;
+      }
+      else p->vx = 0;
+      p->x += p->vx;
+      rinkx = p->x;
+      rinky = p->y;
+  }
+  if(p->dt1 > 600)
+  {
+      rinkf2 = 0;
+      p->dt1 = 0;
+  }
+  fastebos++;
+  p->dt1++;
+  count++;
+  DefSpriteEx(54, 16, 32);
+  PutSpriteEx(54, p->x, p->y, 2, 2, 1);
+  return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state12.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state13.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,51 @@
+#include "chara_state13.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE13);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if(tekino0->f == FALSE){
+	Bom(p->x, p->y);
+	p->f = FALSE;
+	p->state = delete_chara;
+	p->collision = noaction;
+	return 0;
+    }
+    
+    p->x += rinkx - p->dt1;
+    p->y += rinky - p->dt2;
+    p->dt1 = rinkx;
+    p->dt2 = rinky;
+    if(rinkf2 == 1)
+    {
+	if(p->x > rinkx)
+	{
+	    Puttama(2, p->x + 32, p->y);
+	}
+	if(p->x < rinkx)
+	{
+	    Puttama(3, p->x, p->y);
+	}
+    }
+    if(rinkf2 == 4)
+    {
+	count++;
+	PutSprite(count, p->x, p->y + 56, 58+filpcount % 4);
+    }
+    if(rinkf2 == 5)
+    {
+	if(p->x > rinkx)
+	{
+	    Puttama(5, p->x + 8, p->y + 24);
+	}
+	if(p->x < rinkx)
+	{
+	    Puttama(5, p->x + 8, p->y + 24);
+	}
+    }
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state13.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state2.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,17 @@
+#include "chara_state2.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE2);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+    
+    p->vy -= 0.25;
+    p->y += p->vy;
+    
+    p->task = STATE2;
+    smanager->swap();
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state2.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state20.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,16 @@
+#include "chara_state20.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE20);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->x += p->vx;
+    p->y += p->vy;
+    p->vy -= 0.5;
+    p->vy += 0.4;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state20.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state21.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,16 @@
+#include "chara_state21.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE21);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->x += p->vx;
+    p->y += p->vy;
+    p->vx += 0.5;
+    p->vy += 0.4;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state21.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state22.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,39 @@
+#include "chara_state22.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE22);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+      int sf;
+
+      sf = rand() % 4;
+      if((sf == 0) || (sf == 1))
+      {
+	  p->x = -35;
+	  p->y = rand() % (120 - 35);
+	  p->vx = (rand() % 4 + 1);
+	  p->vy = rand() % 3 + 1;
+	  p->task = STATE23;
+      }
+      if((sf == 2))
+      {
+	  p->x = rand() % 290;
+	  p->y = -30;
+	  p->vx = rand() % 3 - 1;
+	  p->vy = (rand() % 4 + 1);
+	  p->task = STATE23;
+      }
+      if(sf == 3)
+      {
+	  p->x = 320;
+	  p->y = rand() % (120 - 35);
+	  p->vx = (rand() % 4 + 1) * -1;
+	  p->vy = rand() % 3 -1;
+	  p->task = STATE23;
+      }
+      return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state22.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state23.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,13 @@
+#include "chara_state23.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE23);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p=asteroid(p);
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state23.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state24.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,24 @@
+#include "chara_state24.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE24);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    kyeenemyno = p;
+    tekino0 = 0;
+    enemy_part1 = p->next;
+    enemy_part2 = enemy_part1->next;
+    enemy_part3 = enemy_part2->next;
+    enemy_part4 = enemy_part3->next;
+    enemy_part5 = enemy_part4->next;
+    rinkx = 0;
+    rinky = 0;
+    rinkf1 = 0;
+    rinkf2 = 0;
+    p->task = STATE25;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state24.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state25.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,48 @@
+#include "chara_state25.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE25);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    int amari;
+    
+    if(p->dt1 <= 360)
+    {
+	p->x = Mycos(p->dt1) * 30 / SANKAKU + 82 + 32;
+	p->y = Mysin(p->dt1) * 30 / SANKAKU + 30;
+    }
+    if(p->dt1 > 360)
+    {
+	p->x = Mycos(p->dt1) * 30 * -1 /SANKAKU + 142 + 32;
+	p->y = Mysin(p->dt1) * 30 / SANKAKU + 30;
+    }
+    count++;
+    PutSprite(count, p->x - 42, p->y, 64);
+    amari = rand() % 160;
+    if((amari == 1) && (enemy_part5->f == TRUE))
+    {
+	p->task = STATE26;
+	rinkf1 = 1;
+    }
+    if((amari == 2) && (enemy_part1->f == TRUE))
+    {
+	p->task = STATE27;
+	rinkf1 = 5;
+	rinkx = 0;
+	return 0;
+    }
+    if((enemy_part5->f == TRUE) && (enemy_part1->f != TRUE))
+    {
+	p->task = STATE28;
+    }
+    p->dt1 += 3;
+    if(p->dt1 == 720)
+    {
+	p->dt1 = 0;
+    }
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state25.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state26.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,34 @@
+#include "chara_state26.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE26);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if((p->dt2 > 50) && (p->dt2 < 100))
+    {
+	rinkf1 = 2;
+    }
+    if(p->dt2 > 100)
+    {
+	rinkf1 = 3;
+    }
+    if(p->dt2 == 400)
+    {
+	rinkf1 = 4;
+    }
+    count++;
+    PutSprite(count, p->x - 42, p->y, 64);
+    if(p->dt2 == 401)
+    {
+	p->dt2 = 0;
+	rinkf1 = 0;
+	p->task = STATE25;
+	return 0;
+    }
+    p->dt2++;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state26.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state27.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,63 @@
+#include "chara_state27.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE27);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if((p->dt2 > 50) && (p->dt2 < 60) && (p->x > -24) && (p->y > -24))
+    {
+	rinkf1 = 6;
+	rinkx -= 4;
+	p->x -= 4;
+	p->y -= 4;
+    }
+    if(p->dt2 == 80)
+    {
+	rinkf1 = 7;
+    }
+    if(p->dt2 == 81)
+    {
+	rinkf1 = 8;
+    }
+    if(p->dt2 == 124)
+    {
+	rinkf1 = 9;
+    }
+    if(p->dt2 == 400)
+    {
+	rinkf1 = 10;
+    }
+    if(p->dt2 == 444)
+    {
+	rinkf1 = 11;
+    }
+    if(p->dt2 == 500)
+    {
+	rinkf1 = 12;
+    }
+    if((p->dt2 > 80) && (p->dt2 < 200))
+    {
+	if((rinkx != 0) && (p->dt2 % 2 == 1))
+	{
+	    rinkx++;
+	    p->x++;
+	    p->y++;
+	}
+    }
+    count++;
+    PutSprite(count, p->x - 32, p->y, 6);
+    if(rinkf1 == 12)
+    {
+	p->dt2 = 0;
+	rinkf1 = 0;
+	rinkx = 0;
+	p->task = STATE25;
+	return 0;
+    }
+    p->dt2++;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state27.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state28.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,34 @@
+#include "chara_state28.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE28);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if (p->dt1 <= 360)
+    {
+	p->x = Mycos(p->dt1) * 30 / SANKAKU + 82 + 32;
+	p->y = Mysin(p->dt1) * 30 / SANKAKU + 30;
+    }
+    if (p->dt1 > 360)
+    {
+	p->x = Mycos(p->dt1) * 30 * -1 / SANKAKU + 142 + 32;
+	p->y = Mysin(p->dt1) * 30 / SANKAKU + 30;
+    }
+    count++;
+    PutSprite(count, p->x - 42, p->y, 64);
+    if (p->dt1 % 30 == 3)
+    {
+	Putenemy(24, p->x + 14,
+		 p->y + 14,
+		 (rand() % 5 + 0.5) * (rand() % 2 ==
+				       1 ? -1 : 1),
+		 (rand() % 5 + 0.5) * (rand() % 2 ==
+				       1 ? -1 : 1), chara_state29);
+    }
+    p->dt1 += 3;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state28.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state29.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,19 @@
+#include "chara_state29.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE29);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->x += p->vx;
+    p->y += p->vy;
+    if(p->dt1 % 18 == 1)
+    {
+	Puttama(0, p->x, p->y);
+    }
+    p->dt1++;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state29.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state3.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,24 @@
+#include "chara_state3.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE3);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+    
+    p->x += p->vx;
+    p->y += p->vy;
+    if((p->dt1 == 60) ||
+       (p->dt1 == 90) ||
+       (p->dt1 == 30))
+    {
+	Puttama(0, p->x, p->y);
+    }
+    p->dt1++;
+    
+    p->task = STATE3;
+    smanager->swap();
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state3.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state30.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,14 @@
+#include "chara_state30.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE30);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->x = p->x - 32;
+    p->y = p->y;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state30.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state31.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,68 @@
+#include "chara_state31.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE31);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if((enemy_part3->f == FALSE) || (kyeenemyno->f == FALSE))
+    {
+	Bom(p->x, p->y);
+	p->f = FALSE;
+	p->state = delete_chara;
+	p->collision = noaction;
+	return 0;
+    }
+    
+    if(rinkf1 == 0)
+    {
+	p->x = kyeenemyno->x + 40;
+	p->y = kyeenemyno->y + 28;
+	p->dt2 = 0;
+    }
+    if(rinkf1 == 5)
+    {
+	p->x = kyeenemyno->x + 52;
+	p->y = kyeenemyno->y;
+	count++;
+	PutSprite(count, p->x - 4, p->y - 20, 80 + p->dt2 % 4);
+	p->dt2++;
+    }
+    if(rinkf1 == 6)
+    {
+	if(p->y < 240 - 40)
+	{
+	    p->y += 6;
+	}
+	else 
+	{
+	    return 0;
+	}
+	count++;
+	PutSprite(count, p->x - 4, p->y - 20, 90 + p->dt2 % 4);
+	p->dt2++;
+    }
+    if(rinkf1 == 7)
+    {
+	Putenemy(22, p->x + 14, p->y + 14, 0, 0, chara_state40);
+	return 0;
+    }
+    if(rinkf1 == 11)
+    {
+	if(p->y + 20 != p->y)
+	{
+	    p->y--;
+	}
+	else 
+	{
+	    return 0;
+	}
+	count++;
+	PutSprite(count, p->x + 8, p->y + 44, 58 + p->dt2 % 4);
+	p->dt2++;
+    }
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state31.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state32.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,39 @@
+#include "chara_state32.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE32);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if ((enemy_part4->f == FALSE)
+	|| (kyeenemyno->f == FALSE))
+    {
+	Bom(p->x, p->y);
+	p->f = FALSE;
+	p->state = delete_chara;
+	p->collision = noaction;
+	return 0;
+    }
+    p->x = kyeenemyno->x - 40;
+    p->y = kyeenemyno->y + 28;
+    if (rinkf1 == 5)
+    {
+	p->x = kyeenemyno->x - 24 + 4;
+	p->y = kyeenemyno->y + 28;
+	p->charano = enemystate[20].charano;
+    }
+    if (rinkf1 == 11)
+    {
+	p->charano = enemystate[14].charano;
+    }
+  if (rinkf1 == 7)
+  {
+      Putenemy(23, p->x + 14,
+	       p->y + 14, 0, 0, chara_state41);
+      return 0;
+  }
+  return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state32.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state33.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,32 @@
+#include "chara_state33.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE33);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if (kyeenemyno->f == FALSE)
+    {
+	Bom(p->x, p->y);
+	p->f = FALSE;
+	p->state = delete_chara;
+	p->collision = noaction;
+	return 0;
+    }
+    p->x = kyeenemyno->x + 32;
+    p->y = kyeenemyno->y;
+    if (rinkf1 == 5)
+    {
+	p->x = kyeenemyno->x + 32 - 4;
+	p->y = kyeenemyno->y;
+	p->charano = enemystate[19].charano;
+    }
+    if (rinkf1 == 6)
+    {
+	p->charano = enemystate[11].charano;
+    }
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state33.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state34.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,30 @@
+#include "chara_state34.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE34);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if (kyeenemyno->f == FALSE)
+    {
+	Bom(p->x, p->y);
+	p->f = FALSE;
+	p->state = delete_chara;
+	p->collision = noaction;
+	return 0;
+    }
+    p->x = kyeenemyno->x - 32;
+    p->y = kyeenemyno->y;
+    if (rinkf1 == 5)
+    {
+	p->charano = enemystate[21].charano;
+    }
+    if (rinkf1 == 6)
+    {
+	p->charano = enemystate[12].charano;
+    }
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state34.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state35.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,60 @@
+#include "chara_state35.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE35);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if (kyeenemyno->f == FALSE)
+    {
+	Bom(p->x, p->y);
+	p->f = FALSE;
+	p->state = delete_chara;
+	p->collision = noaction;
+	return 0;
+    }
+    p->x = kyeenemyno->x;
+    p->y = kyeenemyno->y + 32;
+    if (rinkf1 == 1)
+    {
+	p->charano = enemystate[16].charano;
+    }
+    if (rinkf1 == 2)
+    {
+	count++;
+	PutSprite(count, p->x - 10,
+		  p->y + 16,
+		  58 + p->dt2 % 4);
+	count++;
+	PutSprite(count, p->x + 10,
+		  p->y + 16,
+		  58 + p->dt2 % 4);
+	p->dt2++;
+    }
+    if (rinkf1 == 3)
+    {
+	count++;
+	PutSprite(count, p->x - 10,
+		  p->y + 16,
+		  58 + p->dt2 % 4);
+	count++;
+	PutSprite(count, p->x + 10,
+		  p->y + 16,
+		  58 + p->dt2 % 4);
+	if (p->dt2 % 20 == 1)
+	{
+	    Puttama(7, p->x, p->y + 16);
+	    Puttama(7, p->x + 20,
+		    p->y + 16);
+	}
+	p->dt2++;
+    }
+    if (rinkf1 == 4) {
+	p->charano = enemystate[15].charano;
+	p->dt2 = 0;
+    }
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state35.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state4.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,22 @@
+#include "chara_state3.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE4);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+    
+    p->y += p->vy;
+    p->x += p->vx;
+    if(p->y < jiki.y && p->y + 16 > jiki.y)
+    {
+	p->vy = -2;
+	p->vx = ((jiki.x > p->x) ? 4 : -4);
+	p->task = STATE7;
+    }
+    else p->task = STATE4;
+    smanager->swap();
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state4.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state40.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,56 @@
+#include "chara_state40.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE40);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+    
+    if (enemy_part1->f == FALSE)
+    {
+	Bom(p->x, p->y);
+	p->f = FALSE;
+	p->state = delete_chara;
+	p->collision = noaction;
+	return 0;
+    }
+    if ((rinkf1 == 8) && (p->dt1 % 3 == 1))
+    {
+	if ((p->dt2 < 16))
+	{
+	    p->dt2++;
+	    DefSprite(76, "boss2_rightarm_b", 16, p->dt2, 480, boss);
+	}
+	else
+	{
+	    //                                  rinkf1=9;
+	    return 0;
+	}
+    }
+    if (rinkf1 == 9)
+    {
+	if (p->dt1 % 15 == 1)
+	{
+	    Puttama(8, p->x, p->y);
+	}
+    }
+    if (rinkf1 == 10)
+    {
+	if (p->dt2 != 0)
+	{
+	    p->dt2--;
+	    DefSprite(76, "boss2_rightarm_b", 16, p->dt2, 480, boss);
+	}
+	else
+	{
+	    p->f = FALSE;
+	    p->state = delete_chara;
+	    p->collision = noaction;
+	    //          rinkf1=11;
+	}
+    }
+    p->dt1++;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state40.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state400.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,15 @@
+#include "chara_state400.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE400);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->vy++;
+    p->y += p->vy / 4;
+    p->task = STATE400;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state400.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state401.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,24 @@
+#include "chara_state401.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE401);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+    
+    p->vx++;
+    p->x += p->vx / 8;
+    if (p->x > (jiki.x - 32))
+    {
+	p->vy--;
+    }
+    p->y += p->vy / 8;
+    if (p->dt1 % 50 == 37)
+    {
+	Puttama(1, p->x + 8, p->y + 24);
+    }
+    p->dt1++;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state401.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state402.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,24 @@
+#include "chara_state402.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE402);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->vx--;
+    p->x += p->vx / 8;
+    if (p->x < (jiki.x + 32))
+    {
+	p->vy--;
+    }
+    p->y += p->vy / 8;
+    if (p->dt1 % 50 == 37)
+    {
+	Puttama(1, p->x + 8, p->y + 24);
+    }
+    p->dt1++;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state402.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state41.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,58 @@
+#include "chara_state41.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE41);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if (enemy_part2->f == FALSE)
+    {
+	Bom(p->x, p->y);
+	p->f = FALSE;
+	p->state = delete_chara;
+	p->collision = noaction;
+	return 0;
+    }
+    p->x = kyeenemyno->x - 20 - 7;
+    p->y = kyeenemyno->y + 28 + 15;
+    if ((rinkf1 == 8) && (p->dt1 % 3 == 1))
+    {
+	if ((p->dt2 < 16))
+	{
+	    p->dt2++;
+	    DefSprite(77, "boss2_leftarmbattery", p->dt2, 16, 480, boss);	/*左腕アップアーム砲 */
+	}
+	else
+	{
+	    rinkf1 = 9;
+	    return 0;
+	}
+    }
+    if (rinkf1 == 9)
+    {
+	if (p->dt1 % 15 == 1) 
+	{
+	    Puttama(9 + rand() % 2, p->x, p->y);
+	}
+    }
+    if (rinkf1 == 10)
+    {
+	if (p->dt2 != 0)
+	{
+	    p->dt2--;
+	    DefSprite(77, "boss2_leftarmbattery", p->dt2, 16, 480, boss);
+	}
+	else
+	{
+	    p->f = FALSE;
+	    p->state = delete_chara;
+	    p->collision = noaction;
+	    return 0;
+	}
+    }
+    p->dt1++;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state41.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state410.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,14 @@
+#include "chara_state410.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE410);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    kyeenemyno = p;
+    p->task = STATE411;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state410.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state411.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,55 @@
+#include "chara_state411.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE411);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if (p->dt2 > 356)
+    {
+	p->vx = -1;
+    }
+    if (p->dt2 < -398)
+    {
+	p->vx = 1;
+    }
+    if ((p->dt1) % 62 == 0)
+	Putenemy(41,
+		 p->x,
+		 p->y,
+		 (int) -Mycos(p->dt1 / 16) * 4 /
+		 SANKAKU,
+		 (int) -Mysin(p->dt1 / 16) * 4 /
+		 SANKAKU, chara_state7);
+    if ((p->dt1) % 13 == 0)
+	Puttama(11, p->x + 32,
+		p->y + 32);
+    
+    p->dt2 += p->vx;
+    p->dt1 += p->dt2 / 4;
+    
+    p->x = jiki.x - 16 +
+	Mycos(p->dt1 / 16) * 128 / SANKAKU;
+  p->y = jiki.y - 16 +
+      Mysin(p->dt1 / 16) * 128 / SANKAKU;
+  if (p->x < 0)
+  {
+      p->x = 0;
+  }
+  if (p->x > 260)
+  {
+      p->x = 260;
+  }
+  if (p->y < 0)
+  {
+      p->y = 0;
+  }
+  if (p->y > 232)
+    {
+	p->y = 232;
+    }
+  return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state411.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state5.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,22 @@
+#include "chara_state3.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE5);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+    
+    p->y += p->vy;
+    p->x += p->vx;
+    if(p->y + 96 < jiki.y 
+       && p->y + 128 > jiki.y)
+    {
+	p->vy = -2;
+	p->vx = ((jiki.x > p->x) ? 4 : -4);
+	p->task = STATE0;
+    }
+    else p->task = STATE5;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state5.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state500.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,42 @@
+#include "chara_state500.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE500);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->s = 0;
+    
+    kyeenemyno = p;
+    p->dt2++;
+    p->dt2 %= 512;
+    p->dt1++;
+    count++;
+    DefSpriteEx(100, 16, 16);
+    //		PutSprite(count, enemy[tekino].x + 16,
+    //  enemy[tekino].y + 16, 100);
+    PutSpriteEx(100, p->x + 16, p->y + 16, 2, 2, p->dt1);
+    
+    if (p->dt1 % (5 + p->dt2 / 8) == 1) {
+	if (rand() % 2 == 1)
+	    Putenemy(24, p->x, p->y,
+		     (rand() % 5 + 0.5) * (rand() % 2 ==
+					   1 ? -1 : 1),
+		     (rand() % 5 + 0.5) * (rand() % 2 ==
+					   1 ? -1 : 1), chara_state501);
+	else
+	    Putenemy(rand() % 2 + 1, p->x,
+		     p->y,
+		     (int) Mycos(p->dt1 / 4) * 4 /
+		     SANKAKU,
+		     (int) -Mysin(p->dt1 / 4) * 4 /
+		     SANKAKU, chara_state501);
+    }
+    if (p->dt1 == 50) {
+	/*Putenemy(44,0,0,1,1,411); */
+    }
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state500.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state501.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,19 @@
+#include "chara_state501.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE501);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->x += p->vx;
+    p->y += p->vy;
+    if(p->dt1 % 32 == 1)
+    {
+	Puttama(11, p->x, p->y);
+    }
+    p->dt1++;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state501.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state6.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,22 @@
+#include "chara_state6.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE6);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->y += p->vy;
+    p->x += p->vx;
+    if(p->y + 96 < jiki.y
+       && p->y + 128 > jiki.y)
+    {
+	p->vy = 2;
+	p->vx = ((jiki.x > p->x) ? 4 : -4);
+	p->task = STATE0;
+    }
+    else p->task = STATE6;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state6.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state600.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,31 @@
+#include "chara_state600.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE600);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    kyeenemyno = p;
+    p->dt1 += 30;
+    p->dt2++;
+    p->dt1 %= 360;
+    p->x += Mycos(p->dt1) * 4 / SANKAKU;
+    p->y += Mysin(p->dt1) * 4 / SANKAKU;
+    Puttama(11, p->x + 16, p->y + 16);
+    Puttama(11, p->x + 32, p->y + 48);
+    Puttama(11, p->x + 48, p->y + 16);
+    if (p->dt2 > 240)
+	p->task = STATE601;
+    if (p->x < 0)
+	p->x = 0;
+    if (p->x > 260)
+	p->x = 260;
+    if (p->y < 0)
+	p->y = 0;
+    if (p->y > 232)
+	p->y = 232;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state600.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state601.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,31 @@
+#include "chara_state601.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE601);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->dt2++;
+    if (p->x < jiki.x)
+	p->vx++;
+    if (p->x > jiki.x)
+	p->vx--;
+    p->x += p->vx;
+    Putenemy(6, p->x + 16 + rand() % 32,
+	     p->y, 0, rand() % 4, chara_state400);
+    if (p->x < 0)
+	p->x = 0;
+    if (p->x > 260)
+	p->x = 260;
+    if (p->y < 0)
+	p->y = 0;
+    if (p->y > 232)
+	p->y = 232;
+    if (p->dt2 > 800) {
+	p->task = STATE602;
+    }
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state601.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state602.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,21 @@
+#include "chara_state602.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE602);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->dt2++;
+    Putenemy(24, p->x + 14, p->y + 14,
+	     (rand() % 5 + 0.5) * (rand() % 2 == 1 ? -1 : 1),
+	     (rand() % 5 + 0.5) * (rand() % 2 == 1 ? -1 : 1),
+	     chara_state29);
+    if (p->dt2 > 1024) {
+	p->task = STATE600;
+	p->dt2 = 0;
+    }
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state602.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state7.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,21 @@
+#include "chara_state7.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE7);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->x += p->vx;
+    p->y += p->vy;
+    if((p->dt1 == 60) || (p->dt1 == 90)
+       || (p->dt1 == 30))
+    {
+	Puttama(1, p->x, p->y);
+    }
+    p->dt1++;
+    p->task = STATE7;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state7.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state8.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,26 @@
+#include "chara_state8.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE8);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if(p->y < 520)
+    {
+	tekino0 = p;
+	kyeenemyno = p;
+	p->y += p->vy;
+	count++;
+	DefSpriteEx(p->charano, 16*4, 32*4);
+	PutSpriteEx(p->charano, (p->x * 4), (p->y * 4), 0.2, 0.2, 1);
+	p->dt1 = 512;
+	p->s = 0.125;
+	p->task = STATE8;
+	return 0;
+    }
+    p->task = STATE9;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state8.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state9.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,31 @@
+#include "chara_state9.h"
+#include "tobject.h"
+
+SchedDefineTask(STATE9);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    if(p->s <= 2)
+    {
+	p->s += 0.05;
+	p->y -= 12;
+	count++;
+	DefSpriteEx(54, 16*4, 32*4);
+	PutSpriteEx(54, (p->x * 4), (p->y * 4), p->s, p->s, 1);
+	p->task = STATE9;
+	return 0;
+    }
+    count++;
+    DefSpriteEx(54, 16, 32);
+    PutSpriteEx(54, p->x, p->y, p->s, p->s, 1);
+    rinkx = p->x;
+    rinky = p->y;
+    Putenemy(5, rinkx - 16, rinky - 16, 1, 0, chara_state10);
+    Putenemy(5, rinkx - 16, rinky - 16, -1, 0, chara_state10);
+    p->task = STATE11;
+    p->dt1 = 8192;
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/chara_state9.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/noaction.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,14 @@
+#include "noaction.h"
+#include "tobject.h"
+
+SchedDefineTask(NO_ACT);
+
+static int
+run(SchedTask *smanager, void *rbuf, void *wbuf)
+{
+    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+
+    p->task = NO_ACT;
+    smanager->swap();
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spe/noaction.h	Fri Dec 17 22:18:11 2010 +0900
@@ -0,0 +1,8 @@
+#ifndef INCLUDE_COLLISION
+#define INCLUDE_COLLISION
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+#endif
--- a/state_task.cc	Fri Dec 17 04:16:25 2010 +0900
+++ b/state_task.cc	Fri Dec 17 22:18:11 2010 +0900
@@ -15,18 +15,1160 @@
 #include "property.h"
 #include "state_task.h"
 
-extern TaskManager *tmanager;
-
 void
 SimpleStateTask(CHARACTER *p)
 {
-//    CHARACTER *one = new CHARACTER;
     HTaskPtr state_task = tmanager->create_task(SIMPLE_STATE);
 
-//    one = p;
     state_task->add_inData(p, sizeof(CHARACTER));
     state_task->add_outData(p, sizeof(CHARACTER));
 
     state_task->set_cpu(SPE_ANY);
     state_task->spawn();
 }
+
+CHARACTER * chara_state0(CHARACTER *p)
+{
+  p->x += p->vx;
+  p->y += p->vy;
+  p->state = STATE0;
+
+  return 0;
+}
+
+CHARACTER * chara_state1(CHARACTER *p)
+{
+  p->x -= p->vx;
+  p->y -= p->vy;
+  p->state = STATE1;
+
+  return 0;
+}
+
+CHARACTER * chara_state2(CHARACTER *p)
+{
+  p->vy -= 0.25;
+  p->y += p->vy;
+  p->state = chara_state2;
+  //PutSprite(count, p->x, p->y, p->charano);
+  return 0;
+}
+
+CHARACTER * chara_state3(CHARACTER *p)
+{
+  p->x += p->vx;
+  p->y += p->vy;
+  if((p->dt1 == 60) ||
+     (p->dt1 == 90) ||
+     (p->dt1 == 30))
+    {
+      Puttama(0, p->x, p->y);
+    }
+  p->dt1++;
+  p->state = chara_state3;
+  //PutSprite(count, p->x, p->y, p->charano);
+  return 0;
+}
+
+CHARACTER * chara_state4(CHARACTER *p)
+{
+  p->y += p->vy;
+  p->x += p->vx;
+  if(p->y < jiki.y && p->y + 16 > jiki.y)
+    {
+      p->vy = -2;
+      p->vx = ((jiki.x > p->x) ? 4 : -4);
+      p->state = chara_state7;
+    }
+  else p->state = chara_state4;
+  //PutSprite(count, p->x, p->y, p->charano);
+  return 0;
+}
+
+CHARACTER * chara_state5(CHARACTER *p)
+{
+  p->y += p->vy;
+  p->x += p->vx;
+  if(p->y + 96 < jiki.y 
+     && p->y + 128 > jiki.y)
+    {
+      p->vy = -2;
+      p->vx = ((jiki.x > p->x) ? 4 : -4);
+      p->state = chara_state0;
+    }
+  else p->state = chara_state5;
+  //PutSprite(count, p->x, p->y, p->charano);
+  return 0;
+}
+
+CHARACTER * chara_state6(CHARACTER *p)
+{
+  p->y += p->vy;
+  p->x += p->vx;
+  if(p->y + 96 < jiki.y
+     && p->y + 128 > jiki.y)
+    {
+      p->vy = 2;
+      p->vx = ((jiki.x > p->x) ? 4 : -4);
+      p->state = chara_state0;
+    }
+  else p->state = chara_state6;
+  //PutSprite(count, p->x, p->y, p->charano);
+  return 0;
+}
+
+CHARACTER * chara_state7(CHARACTER *p)
+{
+  p->x += p->vx;
+  p->y += p->vy;
+  if((p->dt1 == 60) || (p->dt1 == 90)
+     || (p->dt1 == 30))
+    {
+      Puttama(1, p->x, p->y);
+    }
+  p->dt1++;
+  p->state = chara_state7;
+  //PutSprite(count, p->x, p->y, p->charano);
+  return 0;
+}
+
+// state1 boss patern
+CHARACTER * chara_state8(CHARACTER *p)
+{
+  if(p->y < 520)
+    {
+      tekino0 = p;
+      kyeenemyno = p;
+      p->y += p->vy;
+      count++;
+      DefSpriteEx(p->charano, 16*4, 32*4);
+      PutSpriteEx(p->charano, (p->x * 4), (p->y * 4), 0.2, 0.2, 1);
+      p->dt1 = 512;
+      p->s = 0.125;
+      p->state = chara_state8;
+      return 0;
+    }
+  p->state = chara_state9;
+  return 0;
+}
+
+CHARACTER * chara_state9(CHARACTER *p)
+{
+  if(p->s <= 2)
+    {
+      p->s += 0.05;
+      p->y -= 12;
+      count++;
+      DefSpriteEx(54, 16*4, 32*4);
+      PutSpriteEx(54, (p->x * 4), (p->y * 4), p->s, p->s, 1);
+      p->state = chara_state9;
+      return 0;
+    }
+  count++;
+  DefSpriteEx(54, 16, 32);
+  PutSpriteEx(54, p->x, p->y, p->s, p->s, 1);
+  rinkx = p->x;
+  rinky = p->y;
+  Putenemy(5, rinkx - 16, rinky - 16, 1, 0, chara_state10);
+  Putenemy(5, rinkx - 16, rinky - 16, -1, 0, chara_state10);
+  p->state = chara_state11;
+  p->dt1 = 8192;
+  return 0;
+}
+
+
+CHARACTER * chara_state10(CHARACTER *p)
+{
+  if(p->dt1 < 48)
+    {
+      p->x += p->vx;
+      p->y += p->vy;
+      p->dt1++;
+      p->state = chara_state10;
+      //PutSprite(count, p->x, p->y,
+      return 0;
+    }
+  rinkf1 = 1;
+  p->dt1 = rinkx;
+  p->dt2 = rinky;
+  p->state = chara_state13;
+  return 0;
+}
+
+
+CHARACTER * chara_state11(CHARACTER *p)
+{
+  if(rinkf1 == 0)
+    {
+      count++;
+      DefSpriteEx(54, 16, 32);
+      PutSpriteEx(54, p->x, p->y, p->s, p->s, 1);
+      p->state = chara_state11;
+      return 0;
+    }
+  p->dt1 = 0;
+  p->dt2 = 0;
+  p->state = chara_state12;
+  return 0;
+}
+
+CHARACTER * chara_state12(CHARACTER *p)
+{
+  if(fastebos > 60*60)
+    {
+      if(p->y > 240+32)
+	{
+	  p->state = delete_chara;
+	}
+      p->y += 3;
+      rinky += 3;
+      count++;
+      DefSpriteEx(54, 16, 32);
+      PutSpriteEx(54, p->x, p->y, 2, 2, 1);
+      p->state = chara_state12;
+      return 0;
+    }
+  if(p->dt1 <= 60)
+    {
+      if(jiki.x + 15 - rinkx < -5)
+	{
+	  p->vx = -0.8;
+	}
+      else if(jiki.x + 15 - rinkx > 5)
+	{
+	  p->vx = +0.8;
+	}
+      else p->vx = 0;
+      rinkx = p->x;
+      rinky = p->y;
+    }
+  if((p->dt1 > 60) && (p->dt1 <= 70))
+    {
+      if(p->dt1 % 2 == 1)
+	{
+	  Puttama(0, rinkx - 16, rinky);
+	  Puttama(0, rinkx, rinky);
+	  Puttama(0, rinkx + 16, rinky);
+	}
+    }
+  if((p->dt1 > 180) && (p->dt1 <= 240))
+    {
+      if(p->dt1 % 2 == 1)
+	{
+	  rinkf2 = 1;
+	  Puttama(2, rinkx - 16, p->y - 32);
+	  Puttama(3, rinkx + 32 - 16, p->y - 32);
+	}
+      else
+	{
+	  rinkf2 = 2;
+	}
+    }
+  if(p->dt1 > 240)
+    {
+      rinkf2 = 2;
+    }
+  if((p->dt1 > 240) && (p->dt1 <= 400))
+    {
+      count++;
+      PutSprite(count, rinkx - 16, rinky + 32,
+		58 + p->dt1 % 4);
+    }
+  if((p->dt1 > 300) && (p->dt1 <= 400))
+    {
+      rinkf2 = 3;
+      if(jiki.x + 15 - rinkx < -5)
+	{
+	  p->vx = -1;
+	}
+      else if(jiki.x + 15 - rinkx > 5)
+	{
+	  p->vx = +1;
+	}
+      else p->vx = 0;
+      p->x += p->vx;
+      rinkx = p->x;
+      rinky = p->y;
+      Puttama(4, rinkx - 8, rinky + 16);
+    }
+  if((p->dt1 > 400) && (p->dt1 <= 500))
+    {
+      rinkf2 = 4;
+      if(jiki.x + 15 - rinkx > 5)
+	{
+	  p->vx = -1;
+	}
+      else if(jiki.x + 15 - rinkx > 5)
+	{
+	  p->vx = +1;
+	}
+      else p->vx = 0;
+      p->x += p->vx;
+      rinkx = p->x;
+      rinky = p->y;
+    }
+  if(p->dt1 > 500)
+    {
+      rinkf2 = 5;
+      if(jiki.x + 15 - rinkx < -5)
+	{
+	  p->vx = -1;
+	}
+      else if(jiki.x + 15 - rinkx > 5)
+	{
+	  p->vx = +1;
+	}
+      else p->vx = 0;
+      p->x += p->vx;
+      rinkx = p->x;
+      rinky = p->y;
+    }
+  if(p->dt1 > 600)
+    {
+      rinkf2 = 0;
+      p->dt1 = 0;
+    }
+  fastebos++;
+  p->dt1++;
+  count++;
+  DefSpriteEx(54, 16, 32);
+  PutSpriteEx(54, p->x, p->y, 2, 2, 1);
+  return 0;
+}
+
+
+CHARACTER * chara_state13(CHARACTER *p)
+{
+  if(tekino0->f == FALSE){
+    Bom(p->x, p->y);
+    p->f = FALSE;
+    p->state = delete_chara;
+    p->collision = noaction;
+    return 0;
+  }
+
+  p->x += rinkx - p->dt1;
+  p->y += rinky - p->dt2;
+  p->dt1 = rinkx;
+  p->dt2 = rinky;
+  if(rinkf2 == 1)
+    {
+      if(p->x > rinkx)
+	{
+	  Puttama(2, p->x + 32, p->y);
+	}
+      if(p->x < rinkx)
+	{
+	  Puttama(3, p->x, p->y);
+	}
+    }
+  if(rinkf2 == 4)
+    {
+      count++;
+      PutSprite(count, p->x, p->y + 56, 58+filpcount % 4);
+    }
+  if(rinkf2 == 5)
+    {
+      if(p->x > rinkx)
+	{
+	  Puttama(5, p->x + 8, p->y + 24);
+	}
+      if(p->x < rinkx)
+	{
+	  Puttama(5, p->x + 8, p->y + 24);
+	}
+    }
+  return 0;
+}
+
+
+CHARACTER * chara_state20(CHARACTER *p)
+{
+  p->x += p->vx;
+  p->y += p->vy;
+  p->vy -= 0.5;
+  p->vy += 0.4;
+  return 0;
+}
+
+CHARACTER * chara_state21(CHARACTER *p)
+{
+  p->x += p->vx;
+  p->y += p->vy;
+  p->vx += 0.5;
+  p->vy += 0.4;
+  return 0;
+}
+
+//ここまでgetate boss
+
+
+CHARACTER * chara_state22(CHARACTER *p)
+{
+  int sf;
+
+  sf = rand() % 4;
+  if((sf == 0) || (sf == 1))
+    {
+      p->x = -35;
+      p->y = rand() % (120 - 35);
+      p->vx = (rand() % 4 + 1);
+      p->vy = rand() % 3 + 1;
+      p->state = chara_state23;
+    }
+  if((sf == 2))
+    {
+      p->x = rand() % 290;
+      p->y = -30;
+      p->vx = rand() % 3 - 1;
+      p->vy = (rand() % 4 + 1);
+      p->state = chara_state23;
+    }
+  if(sf == 3)
+    {
+      p->x = 320;
+      p->y = rand() % (120 - 35);
+      p->vx = (rand() % 4 + 1) * -1;
+      p->vy = rand() % 3 -1;
+      p->state = chara_state23;
+    }
+  return 0;
+}
+	  
+CHARACTER * chara_state23(CHARACTER *p)
+{
+  p=asteroid(p);
+  return 0;
+}
+
+CHARACTER * chara_state24(CHARACTER *p)
+{
+  kyeenemyno = p;
+  tekino0 = 0;
+  enemy_part1 = p->next;
+  enemy_part2 = enemy_part1->next;
+  enemy_part3 = enemy_part2->next;
+  enemy_part4 = enemy_part3->next;
+  enemy_part5 = enemy_part4->next;
+  rinkx = 0;
+  rinky = 0;
+  rinkf1 = 0;
+  rinkf2 = 0;
+  p->state = chara_state25;
+  return 0;
+}
+
+CHARACTER * chara_state25(CHARACTER *p)
+{
+  int amari;
+
+  if(p->dt1 <= 360)
+    {
+      p->x = Mycos(p->dt1) * 30 / SANKAKU + 82 + 32;
+      p->y = Mysin(p->dt1) * 30 / SANKAKU + 30;
+    }
+  if(p->dt1 > 360)
+    {
+      p->x = Mycos(p->dt1) * 30 * -1 /SANKAKU + 142 + 32;
+      p->y = Mysin(p->dt1) * 30 / SANKAKU + 30;
+    }
+  count++;
+  PutSprite(count, p->x - 42, p->y, 64);
+  amari = rand() % 160;
+  if((amari == 1) && (enemy_part5->f == TRUE))
+    {
+      p->state = chara_state26;
+      rinkf1 = 1;
+    }
+  if((amari == 2) && (enemy_part1->f == TRUE))
+    {
+      p->state = chara_state27;
+      rinkf1 = 5;
+      rinkx = 0;
+      return 0;
+    }
+  if((enemy_part5->f == TRUE) && (enemy_part1->f != TRUE))
+    {
+      p->state = chara_state28;
+    }
+  p->dt1 += 3;
+  if(p->dt1 == 720)
+    {
+      p->dt1 = 0;
+    }
+  return 0;
+}
+
+CHARACTER * chara_state26(CHARACTER *p)
+{
+  if((p->dt2 > 50) && (p->dt2 < 100))
+    {
+      rinkf1 = 2;
+    }
+  if(p->dt2 > 100)
+    {
+      rinkf1 = 3;
+    }
+  if(p->dt2 == 400)
+    {
+      rinkf1 = 4;
+    }
+  count++;
+  PutSprite(count, p->x - 42, p->y, 64);
+  if(p->dt2 == 401)
+    {
+      p->dt2 = 0;
+      rinkf1 = 0;
+      p->state = chara_state25;
+      return 0;
+    }
+  p->dt2++;
+  return 0;
+}
+
+CHARACTER * chara_state27(CHARACTER *p) //rocket punch
+{
+  if((p->dt2 > 50) && (p->dt2 < 60) && (p->x > -24) && (p->y > -24))
+    {
+      rinkf1 = 6;
+      rinkx -= 4;
+      p->x -= 4;
+      p->y -= 4;
+    }
+  if(p->dt2 == 80)
+    {
+      rinkf1 = 7;
+    }
+  if(p->dt2 == 81)
+    {
+      rinkf1 = 8;
+    }
+  if(p->dt2 == 124)
+    {
+      rinkf1 = 9;
+    }
+  if(p->dt2 == 400)
+    {
+      rinkf1 = 10;
+    }
+  if(p->dt2 == 444)
+    {
+      rinkf1 = 11;
+    }
+  if(p->dt2 == 500)
+    {
+      rinkf1 = 12;
+    }
+  if((p->dt2 > 80) && (p->dt2 < 200))
+    {
+      if((rinkx != 0) && (p->dt2 % 2 == 1))
+	{
+	  rinkx++;
+	  p->x++;
+	  p->y++;
+	}
+    }
+  count++;
+  PutSprite(count, p->x - 32, p->y, 6);
+  if(rinkf1 == 12)
+    {
+      p->dt2 = 0;
+      rinkf1 = 0;
+      rinkx = 0;
+      p->state = chara_state25;
+      return 0;
+    }
+  p->dt2++;
+  return 0;
+}
+CHARACTER * chara_state28(CHARACTER *p)
+{
+  if (p->dt1 <= 360)
+    {
+      p->x = Mycos(p->dt1) * 30 / SANKAKU + 82 + 32;
+      p->y = Mysin(p->dt1) * 30 / SANKAKU + 30;
+    }
+  if (p->dt1 > 360)
+    {
+      p->x = Mycos(p->dt1) * 30 * -1 / SANKAKU + 142 + 32;
+      p->y = Mysin(p->dt1) * 30 / SANKAKU + 30;
+    }
+  count++;
+  PutSprite(count, p->x - 42, p->y, 64);
+  if (p->dt1 % 30 == 3)
+    {
+      Putenemy(24, p->x + 14,
+	       p->y + 14,
+	       (rand() % 5 + 0.5) * (rand() % 2 ==
+				     1 ? -1 : 1),
+	       (rand() % 5 + 0.5) * (rand() % 2 ==
+				     1 ? -1 : 1), chara_state29);
+    }
+  p->dt1 += 3;
+  return 0;
+}
+
+
+CHARACTER * chara_state29(CHARACTER *p)
+{
+  p->x += p->vx;
+  p->y += p->vy;
+  if(p->dt1 % 18 == 1)
+    {
+      Puttama(0, p->x, p->y);
+    }
+  p->dt1++;
+  return 0;
+}
+
+
+CHARACTER * chara_state30(CHARACTER *p)
+{
+  p->x = p->x - 32;
+  p->y = p->y;
+  return 0;
+}
+
+CHARACTER * chara_state31(CHARACTER *p) //right hand
+{
+  
+  if((enemy_part3->f == FALSE) || (kyeenemyno->f == FALSE))
+    {
+      Bom(p->x, p->y);
+      p->f = FALSE;
+      p->state = delete_chara;
+      p->collision = noaction;
+      return 0;
+    }
+
+  if(rinkf1 == 0)
+    {
+      p->x = kyeenemyno->x + 40;
+      p->y = kyeenemyno->y + 28;
+      p->dt2 = 0;
+    }
+  if(rinkf1 == 5)
+    {
+      p->x = kyeenemyno->x + 52;
+      p->y = kyeenemyno->y;
+      count++;
+      PutSprite(count, p->x - 4, p->y - 20, 80 + p->dt2 % 4);
+      p->dt2++;
+    }
+  if(rinkf1 == 6)
+    {
+      if(p->y < 240 - 40)
+	{
+	  p->y += 6;
+	}
+      else 
+	{
+	  return 0;
+	}
+      count++;
+      PutSprite(count, p->x - 4, p->y - 20, 90 + p->dt2 % 4);
+      p->dt2++;
+    }
+  if(rinkf1 == 7)
+    {
+      Putenemy(22, p->x + 14, p->y + 14, 0, 0, chara_state40);
+      return 0;
+    }
+  if(rinkf1 == 11)
+    {
+      if(p->y + 20 != p->y)
+	{
+	  p->y--;
+	}
+      else 
+	{
+	  return 0;
+	}
+      count++;
+      PutSprite(count, p->x + 8, p->y + 44, 58 + p->dt2 % 4);
+      p->dt2++;
+    }
+  return 0;
+}
+
+
+CHARACTER * chara_state32(CHARACTER *p) //left hand
+{
+  if ((enemy_part4->f == FALSE)
+      || (kyeenemyno->f == FALSE))
+    {
+      Bom(p->x, p->y);
+      p->f = FALSE;
+      p->state = delete_chara;
+      p->collision = noaction;
+      return 0;
+    }
+  p->x = kyeenemyno->x - 40;
+  p->y = kyeenemyno->y + 28;
+  if (rinkf1 == 5)
+    {
+      p->x = kyeenemyno->x - 24 + 4;
+      p->y = kyeenemyno->y + 28;
+      p->charano = enemystate[20].charano;
+    }
+  if (rinkf1 == 11)
+    {
+      p->charano = enemystate[14].charano;
+    }
+  if (rinkf1 == 7)
+    {
+      Putenemy(23, p->x + 14,
+	       p->y + 14, 0, 0, chara_state41);
+      //      rinkf1=8;
+      return 0;
+    }
+  return 0;
+}
+
+
+CHARACTER * chara_state33(CHARACTER *p) // right shoulder
+{
+  if (kyeenemyno->f == FALSE)
+    {
+      Bom(p->x, p->y);
+      p->f = FALSE;
+      p->state = delete_chara;
+      p->collision = noaction;
+      return 0;
+    }
+  p->x = kyeenemyno->x + 32;
+  p->y = kyeenemyno->y;
+  if (rinkf1 == 5)
+    {
+      p->x = kyeenemyno->x + 32 - 4;
+      p->y = kyeenemyno->y;
+      p->charano = enemystate[19].charano;
+    }
+  if (rinkf1 == 6)
+    {
+      p->charano = enemystate[11].charano;
+    }
+  return 0;
+}
+
+
+CHARACTER * chara_state34(CHARACTER *p) //left shoulder
+{
+  if (kyeenemyno->f == FALSE)
+    {
+      Bom(p->x, p->y);
+      p->f = FALSE;
+      p->state = delete_chara;
+      p->collision = noaction;
+      return 0;
+    }
+  p->x = kyeenemyno->x - 32;
+  p->y = kyeenemyno->y;
+  if (rinkf1 == 5)
+    {
+      p->charano = enemystate[21].charano;
+    }
+  if (rinkf1 == 6)
+    {
+      p->charano = enemystate[12].charano;
+    }
+  return 0;
+}
+
+CHARACTER * chara_state35(CHARACTER *p) // bust
+{
+  if (kyeenemyno->f == FALSE)
+    {
+      Bom(p->x, p->y);
+      p->f = FALSE;
+      p->state = delete_chara;
+      p->collision = noaction;
+      return 0;
+    }
+  p->x = kyeenemyno->x;
+  p->y = kyeenemyno->y + 32;
+  if (rinkf1 == 1)
+    {
+      p->charano = enemystate[16].charano;
+    }
+  if (rinkf1 == 2)
+    {
+      count++;
+      PutSprite(count, p->x - 10,
+		p->y + 16,
+		58 + p->dt2 % 4);
+      count++;
+      PutSprite(count, p->x + 10,
+		p->y + 16,
+		58 + p->dt2 % 4);
+      p->dt2++;
+    }
+  if (rinkf1 == 3)
+    {
+      count++;
+      PutSprite(count, p->x - 10,
+		p->y + 16,
+		58 + p->dt2 % 4);
+      count++;
+      PutSprite(count, p->x + 10,
+		p->y + 16,
+		58 + p->dt2 % 4);
+      if (p->dt2 % 20 == 1)
+	{
+	  Puttama(7, p->x, p->y + 16);
+	  Puttama(7, p->x + 20,
+		  p->y + 16);
+	}
+    p->dt2++;
+  }
+  if (rinkf1 == 4) {
+    p->charano = enemystate[15].charano;
+    p->dt2 = 0;
+  }
+  return 0;
+}
+
+
+CHARACTER * chara_state40(CHARACTER *p) //arm vulkan
+{
+  if (enemy_part1->f == FALSE)
+    {
+      Bom(p->x, p->y);
+      p->f = FALSE;
+      p->state = delete_chara;
+      p->collision = noaction;
+      return 0;
+    }
+  if ((rinkf1 == 8) && (p->dt1 % 3 == 1))
+    {
+      if ((p->dt2 < 16))
+	{
+	  p->dt2++;
+	  DefSprite(76, "boss2_rightarm_b", 16, p->dt2, 480, boss);
+	}
+      else
+	{
+	  //                                  rinkf1=9;
+	  return 0;
+	}
+    }
+  if (rinkf1 == 9)
+    {
+      if (p->dt1 % 15 == 1)
+	{
+	  Puttama(8, p->x, p->y);
+	}
+    }
+  if (rinkf1 == 10)
+    {
+      if (p->dt2 != 0)
+	{
+	  p->dt2--;
+	  DefSprite(76, "boss2_rightarm_b", 16, p->dt2, 480, boss);
+	}
+      else
+	{
+	  p->f = FALSE;
+	  p->state = delete_chara;
+	  p->collision = noaction;
+	  //          rinkf1=11;
+	}
+    }
+  p->dt1++;
+  return 0;
+}
+
+
+CHARACTER * chara_state41(CHARACTER *p) //left arm up arm vulkan
+{
+  if (enemy_part2->f == FALSE)
+    {
+      Bom(p->x, p->y);
+      p->f = FALSE;
+      p->state = delete_chara;
+      p->collision = noaction;
+      return 0;
+    }
+  p->x = kyeenemyno->x - 20 - 7;
+  p->y = kyeenemyno->y + 28 + 15;
+  if ((rinkf1 == 8) && (p->dt1 % 3 == 1))
+    {
+      if ((p->dt2 < 16))
+	{
+	  p->dt2++;
+	  DefSprite(77, "boss2_leftarmbattery", p->dt2, 16, 480, boss);	/*左腕アップアーム砲 */
+	}
+      else
+	{
+	  rinkf1 = 9;
+	  return 0;
+	}
+    }
+  if (rinkf1 == 9)
+    {
+      if (p->dt1 % 15 == 1) 
+	{
+	  Puttama(9 + rand() % 2, p->x, p->y);
+	}
+    }
+  if (rinkf1 == 10)
+    {
+      if (p->dt2 != 0)
+	{
+	  p->dt2--;
+	  DefSprite(77, "boss2_leftarmbattery", p->dt2, 16, 480, boss);
+	}
+      else
+	{
+	  p->f = FALSE;
+	  p->state = delete_chara;
+	  p->collision = noaction;
+	  return 0;
+	  //          rinkf1=11;
+	}
+    }
+  p->dt1++;
+  return 0;
+}
+
+
+CHARACTER * chara_state400(CHARACTER *p)
+{
+  p->vy++;
+  p->y += p->vy / 4;
+  p->state = chara_state400;
+  return 0;
+}
+
+
+CHARACTER * chara_state401(CHARACTER *p)
+{
+  p->vx++;
+  p->x += p->vx / 8;
+  if (p->x > (jiki.x - 32))
+    {
+      p->vy--;
+    }
+  p->y += p->vy / 8;
+  if (p->dt1 % 50 == 37)
+    {
+      Puttama(1, p->x + 8, p->y + 24);
+    }
+  p->dt1++;
+  return 0;
+}
+
+
+CHARACTER * chara_state402(CHARACTER *p)
+{
+  p->vx--;
+  p->x += p->vx / 8;
+  if (p->x < (jiki.x + 32))
+    {
+      p->vy--;
+    }
+  p->y += p->vy / 8;
+  if (p->dt1 % 50 == 37)
+    {
+      Puttama(1, p->x + 8, p->y + 24);
+    }
+  p->dt1++;
+  return 0;
+}
+
+
+CHARACTER * chara_state410(CHARACTER *p)
+{
+  kyeenemyno = p;
+  p->state = chara_state411;
+  return 0;
+}
+
+
+CHARACTER * chara_state411(CHARACTER *p)
+{
+  if (p->dt2 > 356)
+    {
+      p->vx = -1;
+    }
+  if (p->dt2 < -398)
+    {
+      p->vx = 1;
+    }
+  if ((p->dt1) % 62 == 0)
+    Putenemy(41,
+	     p->x,
+	     p->y,
+	     (int) -Mycos(p->dt1 / 16) * 4 /
+	     SANKAKU,
+	     (int) -Mysin(p->dt1 / 16) * 4 /
+	     SANKAKU, chara_state7);
+  if ((p->dt1) % 13 == 0)
+    Puttama(11, p->x + 32,
+	    p->y + 32);
+  
+  p->dt2 += p->vx;
+  p->dt1 += p->dt2 / 4;
+  
+  p->x = jiki.x - 16 +
+    Mycos(p->dt1 / 16) * 128 / SANKAKU;
+  p->y = jiki.y - 16 +
+    Mysin(p->dt1 / 16) * 128 / SANKAKU;
+  if (p->x < 0)
+    {
+      p->x = 0;
+    }
+  if (p->x > 260)
+    {
+      p->x = 260;
+    }
+  if (p->y < 0)
+    {
+      p->y = 0;
+    }
+  if (p->y > 232)
+    {
+      p->y = 232;
+    }
+  return 0;
+}
+
+
+CHARACTER * chara_state500(CHARACTER *p)
+{
+  p->s = 0;
+  
+  kyeenemyno = p;
+  p->dt2++;
+  p->dt2 %= 512;
+  p->dt1++;
+  count++;
+  DefSpriteEx(100, 16, 16);
+  //		PutSprite(count, enemy[tekino].x + 16,
+  //  enemy[tekino].y + 16, 100);
+  PutSpriteEx(100, p->x + 16, p->y + 16, 2, 2, p->dt1);
+  
+  if (p->dt1 % (5 + p->dt2 / 8) == 1) {
+    if (rand() % 2 == 1)
+      Putenemy(24, p->x, p->y,
+	       (rand() % 5 + 0.5) * (rand() % 2 ==
+				     1 ? -1 : 1),
+	       (rand() % 5 + 0.5) * (rand() % 2 ==
+				     1 ? -1 : 1), chara_state501);
+    else
+      Putenemy(rand() % 2 + 1, p->x,
+	       p->y,
+	       (int) Mycos(p->dt1 / 4) * 4 /
+	       SANKAKU,
+	       (int) -Mysin(p->dt1 / 4) * 4 /
+	       SANKAKU, chara_state501);
+  }
+  if (p->dt1 == 50) {
+    /*Putenemy(44,0,0,1,1,411); */
+  }
+  return 0;
+}
+
+
+CHARACTER * chara_state501(CHARACTER *p)
+{
+  p->x += p->vx;
+  p->y += p->vy;
+  if(p->dt1 % 32 == 1)
+    {
+      Puttama(11, p->x, p->y);
+    }
+  p->dt1++;
+  return 0;
+}
+
+
+CHARACTER * chara_state600(CHARACTER *p)
+{
+  kyeenemyno = p;
+  p->dt1 += 30;
+  p->dt2++;
+  p->dt1 %= 360;
+  p->x += Mycos(p->dt1) * 4 / SANKAKU;
+  p->y += Mysin(p->dt1) * 4 / SANKAKU;
+  Puttama(11, p->x + 16, p->y + 16);
+  Puttama(11, p->x + 32, p->y + 48);
+  Puttama(11, p->x + 48, p->y + 16);
+  if (p->dt2 > 240)
+    p->state = chara_state601;
+  if (p->x < 0)
+    p->x = 0;
+  if (p->x > 260)
+    p->x = 260;
+  if (p->y < 0)
+    p->y = 0;
+  if (p->y > 232)
+    p->y = 232;
+  return 0;
+}
+
+
+CHARACTER * chara_state601(CHARACTER *p)
+{
+  p->dt2++;
+  if (p->x < jiki.x)
+    p->vx++;
+  if (p->x > jiki.x)
+    p->vx--;
+  p->x += p->vx;
+  Putenemy(6, p->x + 16 + rand() % 32,
+	   p->y, 0, rand() % 4, chara_state400);
+  if (p->x < 0)
+    p->x = 0;
+  if (p->x > 260)
+    p->x = 260;
+  if (p->y < 0)
+    p->y = 0;
+  if (p->y > 232)
+    p->y = 232;
+  if (p->dt2 > 800) {
+    p->state = chara_state602;
+  }
+  return 0;
+}
+
+
+CHARACTER * chara_state602(CHARACTER *p)
+{
+  p->dt2++;
+  Putenemy(24, p->x + 14, p->y + 14,
+	   (rand() % 5 + 0.5) * (rand() % 2 == 1 ? -1 : 1),
+	   (rand() % 5 + 0.5) * (rand() % 2 == 1 ? -1 : 1),
+	   chara_state29);
+  if (p->dt2 > 1024) {
+    p->state = chara_state600;
+    p->dt2 = 0;
+  }
+  return 0;
+}
+
+
+CHARACTER *  asteroid(CHARACTER *p)
+{
+    int i;
+
+    asteroiddt[asteroidi] = p;
+    //            if(asteroidi==0)
+    //            {
+    p->x += p->vx;
+    p->y += p->vy;
+    //            }
+    if (asteroidi > 0) {
+	for (i = 0; i < asteroidi; i++) {
+	    if ((asteroiddt[i]->x + 32 > p->x)
+		&& (p->x + 32 > asteroiddt[i]->x)
+		&& (asteroiddt[i]->y + 32 > p->y)
+		&& (asteroiddt[i]->y < p->y + 32)) {
+		p->vx *= -1;
+		p->vy *= -1;
+	    }
+	}
+    }
+    asteroidi++;
+    return 0;
+}