changeset 26:6bea374ee604

global alloc test.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Fri, 10 Dec 2010 02:20:37 +0900
parents 3fb8a6a34e24
children 34fde39c0a31
files Func.h character_id.h dandy.h game_task.h global_id.h main.cc ppe/PadAllocate.cc ppe/PadAllocate.h ppe/PadFree.cc ppe/PadFree.h ppe/PadUpdate.cc ppe/PadUpdate.h ppe/TitleMove.cc ppe/task_init.cc schedule.cc stage_init.cc
diffstat 16 files changed, 303 insertions(+), 123 deletions(-) [+]
line wrap: on
line diff
--- a/Func.h	Tue Oct 26 17:28:56 2010 +0900
+++ b/Func.h	Fri Dec 10 02:20:37 2010 +0900
@@ -1,51 +1,14 @@
+// Task ID
 enum {
 #include "SysTasks.h"
 #include "RenderingTasks.h"
-    TITLE_MOVE,
-    CRAB_MOVE,
-    TITLE_COLL,
-    MOVE_00,
-    MOVE_01,
-    MOVE_02,
-    MOVE_03,
-    MOVE_04,
-    MOVE_05,
-    MOVE_06,
-    MOVE_07,
-    MOVE_08,
-    MOVE_09,
-    MOVE_10,
-    MOVE_11,
-    MOVE_12,
-    MOVE_13,
-    MOVE_20,
-    MOVE_21,
-    MOVE_22,
-    MOVE_23,
-    MOVE_24,
-    MOVE_25,
-    MOVE_26,
-    MOVE_27,
-    MOVE_28,
-    MOVE_29,
-    MOVE_30,
-    MOVE_31,
-    MOVE_32,
-    MOVE_33,
-    MOVE_34,
-    MOVE_35,
-    MOVE_40,
-    MOVE_41,
-    MOVE_400,
-    MOVE_401,
-    MOVE_402,
-    MOVE_410,
-    MOVE_411,
-    MOVE_500,
-    MOVE_501,
-    MOVE_600,
-    MOVE_601,
-    MOVE_602,
-    ASTEROID,
+#include "game_task.h"
+};
 
+// global alloc ID
+enum {
+#include "RenderingGlobal.h"
+#include "global_alloc.h"
+#include "KeyID.h"
+#include "global_id.h"
 };
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/character_id.h	Fri Dec 10 02:20:37 2010 +0900
@@ -0,0 +1,117 @@
+#ifndef INCLUDE_CHARACTOR_ID
+#define INCLUDE_CHARACTOR_ID
+
+typedef enum {
+    PLAYER_LEFTMOVE = 1,
+    PLAYER_TURNTOLEFT = 2,
+    PLAYER_IDLE = 3,
+    PLAYER_TURNTORIGHT = 4,
+    PLAYER_RIGHTMOVE = 5,
+    BLUEBULLET_LEFT = 6,
+    BLUEBULLET_RIGHT = 7,
+    REDBULLET = 8,
+    LONGLASER = 9,
+    GAUGE_PANEL = 10,
+    OFFENSIVEPOWER_GAUGE = 11,
+    BURNER = 12,
+    LOCKON_SIGHT = 13,
+    SPECIAL_LASERGAUGE = 14,
+    DIFFENSIVEPOWER_GAUGE = 15,
+    GREENBULLET = 16,
+    BULEBARRIER = 17,
+    FONT_PLAYER_1 = 18,
+    FONT_GAMEOVER = 19,
+    FONT_0 = 20,
+    FONT_1 = 21,
+    FONT_2 = 22,
+    FONT_3 = 23,
+    FONT_4 = 24,
+    FONT_5 = 25,
+    FONT_6 = 26,
+    FONT_7 = 27,
+    FONT_8 = 28,
+    FONT_9 = 29,
+    REDBOMB_ANIM_0 = 30,
+    REDBOMB_ANIM_1 = 31,
+    REDBOMB_ANIM_2 = 32,
+    REDBOMB_ANIM_3 = 33,
+    REDBOMB_ANIM_4 = 34,
+    REDBOMB_ANIM_5 = 35,
+    REDBOMB_ANIM_6 = 36,
+    REDBOMB_ANIM_7 = 37,
+    FONT_HIGE = 38,
+    GREENBOMB_ANIM_0 = 40,
+    GREENBOMB_ANIM_1 = 41,
+    GREENBOMB_ANIM_2 = 42,
+    GREENBOMB_ANIM_3 = 43,
+    GREENBOMB_ANIM_4 = 44,
+    GREENBOMB_ANIM_5 = 45,
+    GREENBOMB_ANIM_6 = 46,
+    GREENBOMB_ANIM_7 = 47,
+    INFLATION_GAUGE = 48,
+    INFLATION_METER = 49,
+    ENEMY_GREENCRAB = 50,
+    ENEMY_PLANE = 51,
+    ENEMY_REDBULLET = 52,
+    FONT_PUSHSTART = 53,
+    BOSS1_ORGAN = 54,
+    ENEMY_LASER = 55,
+    ENEMY_BLUEBULLET = 56,
+    ENEMY_LIGHTNING = 57,
+    ENEMY_LASERSPLOSH_0 = 58,
+    ENEMY_LASERSPLOSH_1 = 59,
+    ENEMY_LASERSPLOSH_2 = 60,
+    ENEMY_LASERSPLOSH_3 = 61,
+    ASTEROID = 62,
+    ORBITMACHINE = 63,
+    BOSS2_BODY = 64,
+    BOSS2_RIGHTSHOULDER = 65,
+    BOSS2_LEFTSHOULDER = 66,
+    BOSS2_RIGHTARM = 67,
+    BOSS2_LEFTARM = 68,
+    BOSS2_BATTERY = 69,
+    BOSS2_OPENBATTERY = 70,
+    BOSS2_BROKENHATCH = 71,
+    BOSS2_DUMMY = 72,
+    BOSS2_RIGHTSHOULDERUP = 73,
+    BOSS2_LEFTSHOULDERUP = 74,
+    BOSS2_LEFTSHOULDERGIRD = 75,
+    BOSS2_RIGHTARMBATTERY = 76,
+    BOSS2_LEFTARMBATTERY = 77,
+    BOSS2_RIGHTHAND = 78,
+    BOSS2_RIGHTPALM = 79,
+    BOSS2_LEFTHAND = 80,
+    BOSS2_LEFTPALM = 81,
+    PLAYER_LASERSPLOSH_0 = 90,
+    PLAYER_LASERSPLOSH_1 = 91,
+    PLAYER_LASERSPLOSH_2 = 92,
+    PLAYER_LASERSPLOSH_3 = 93,
+    BOSS_POWERGAUGE = 94,
+    BLACKHOLE = 100,
+    FONT_DOYOUCONTINUE = 110,
+    FONT_ALLSTAGECLEAR = 111,
+    FONT_REST = 112,
+    FONT_STAGE = 113,
+    FONT_LINEOFZERO_000000 = 114,
+    FONT_LINEOFZERO_0000000 = 115,
+    FONT_THANKYOU = 116,
+    FONT_NYSOFT = 117,
+    FONT_1997YGGDRASIL = 118,
+    FONT_SUPERDANDY = 119,
+    FONT_1997YAS_K = 120,
+    GUNBATTERY = 180,
+    PURPLECORE = 181,
+    SPACEFISH = 182,
+    MISSILE = 183,
+    BOSS3_BODY = 184,
+    BODD4_BODY = 185,
+    TITLEFONT_SUPER = 190,
+    TITLEFONT_BATTLE = 191,
+    TITLEFONT_EMPEROR = 192,
+    GREENBARRIER = 193,
+    REMAINDER = 194,
+    EARTH = 195,
+    BOSS_CORPSE = 196,
+} CharImageNumber;
+
+#endif
--- a/dandy.h	Tue Oct 26 17:28:56 2010 +0900
+++ b/dandy.h	Fri Dec 10 02:20:37 2010 +0900
@@ -1,3 +1,6 @@
+#ifndef INCLUDE_DANDY_H
+#define INCLUDE_DANDY_H
+
 #include <math.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -13,9 +16,6 @@
   MainLoopPtr init(Viewer *viewer, int w, int h);
 };
 
-typedef void (*move)(SceneGraphPtr node, void *sgroot_, int w, int h);
-typedef void (*coll)(SceneGraphPtr node, void *sgroot_, int w, int h, SceneGraphPtr tree);
-
 typedef struct {
   double x, y; //16
   double vx, vy; //16
@@ -33,7 +33,7 @@
 extern ObjPropertyPtr charactor;
 
 //キャラクターの総数
-static const int ENEMY_NUM = 2;
+static const int ENEMY_NUM = 1;
 
 //TaskArray 生成に必要な各値
 static const int TASK_NUM = 2;
@@ -42,8 +42,6 @@
 static const int OUTDATA_NUM = 1;
 
 extern void create_title_back(Viewer *sgroot, int w, int h);
-extern void create_stage(void *sgroot, int w, int h);
-extern void schedule(SceneGraphPtr node, void *sgroot_, int w, int h);
 
 //extern create_enemy(SchedTask *s, void *enemy_, void *b);
 
@@ -108,3 +106,5 @@
     ENEMY_STATUS("t",	0, 0),\
     ENEMY_STATUS("t",	0, 0),\
 }
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/game_task.h	Fri Dec 10 02:20:37 2010 +0900
@@ -0,0 +1,7 @@
+// Game で使用する Task ID
+    TITLE_MOVE,
+    TITLE_COLL,
+    CRAB_MOVE,
+    PAD_ALLOCATE,
+    PAD_UPDATE,
+    PAD_FREE,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/global_id.h	Fri Dec 10 02:20:37 2010 +0900
@@ -0,0 +1,2 @@
+// global_alloc で使用する ID
+    PAD_INPUT,
--- a/main.cc	Tue Oct 26 17:28:56 2010 +0900
+++ b/main.cc	Fri Dec 10 02:20:37 2010 +0900
@@ -65,20 +65,7 @@
 int
 TMmain(TaskManager *manager,int argc, char *argv[])
 {
-    /*  
-	if (init(argc, argv) < 0) {
-	return -1;
-	}
-    */
-    // Task Register
-    //   ppe/task_init.cc
     task_init();
-    /*
-      for (int i = 0; i < task; ++i) {
-      twice_init(manager);
-      }
-    */
-    //create_title(sgroot, w, h);
     task_initialize();
     manager->set_TMend(TMend);
     return init(manager,argc, argv);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ppe/PadAllocate.cc	Fri Dec 10 02:20:37 2010 +0900
@@ -0,0 +1,23 @@
+#include <stdio.h>
+#include <string.h>
+#include "PadAllocate.h"
+#include "Func.h"
+
+/* これは必須 */
+SchedDefineTask(PadAllocate);
+
+static int
+run(SchedTask *s, void *rbuf, void *wbuf)
+{
+
+    void *idata = s->get_input(rbuf, 0);
+    int pad_id = (int)s->get_param(0);
+    int size = (int)s->get_param(1);
+
+    void *buff = s->global_alloc(pad_id, size);
+    if (idata != NULL) {
+	memcpy(buff,idata,size);
+    }
+
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ppe/PadAllocate.h	Fri Dec 10 02:20:37 2010 +0900
@@ -0,0 +1,9 @@
+#ifndef INCLUDED_PAD_ALLOCATE
+#define INCLUDED_PAD_ALLOCATE
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ppe/PadFree.cc	Fri Dec 10 02:20:37 2010 +0900
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <string.h>
+#include "PadFree.h"
+#include "Func.h"
+
+/* これは必須 */
+SchedDefineTask(PadFree);
+
+static int
+run(SchedTask *s, void *rbuf, void *wbuf)
+{
+
+    int pad_id = (int)s->get_param(0);
+
+    s->global_free(pad_id);
+
+    return 0;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ppe/PadFree.h	Fri Dec 10 02:20:37 2010 +0900
@@ -0,0 +1,9 @@
+#ifndef INCLUDED_PAD_FREE
+#define INCLUDED_PAD_FREE
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ppe/PadUpdate.cc	Fri Dec 10 02:20:37 2010 +0900
@@ -0,0 +1,21 @@
+#include <stdio.h>
+#include <string.h>
+#include "PadUpdate.h"
+#include "Func.h"
+
+/* これは必須 */
+SchedDefineTask(PadUpdate);
+
+static int
+run(SchedTask *s, void *rbuf, void *wbuf)
+{
+
+    void *idata = s->get_input(rbuf, 0);
+    int pad_id = (int)s->get_param(0);
+    int size = (int)s->get_param(1);
+    void *global_data = (void*)s->global_get(pad_id);
+
+    memcpy(global_data,idata,size);
+
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ppe/PadUpdate.h	Fri Dec 10 02:20:37 2010 +0900
@@ -0,0 +1,9 @@
+#ifndef INCLUDED_PAD_UPDATE
+#define INCLUDED_PAD_UPDATE
+
+#ifndef INCLUDED_SCHED_TASK
+#include "SchedTask.h"
+#endif
+
+
+#endif
--- a/ppe/TitleMove.cc	Tue Oct 26 17:28:56 2010 +0900
+++ b/ppe/TitleMove.cc	Fri Dec 10 02:20:37 2010 +0900
@@ -14,14 +14,15 @@
   ObjPropertyPtr i_obj, o_obj;
 
   i_obj = (ObjPropertyPtr)s->get_input(rbuf, 0);
-  pad = (Pad*)s->get_input(rbuf, 1);
   o_obj = (ObjPropertyPtr)s->get_output(wbuf, 0);
-
+  int pad_id = (int)s->get_param(0);
+  pad = (Pad*)s->global_get(pad_id);
+  
   if(pad->start.isPush() || pad->start.isHold()) {
-    i_obj->flag = 1;
+      printf("success \n");
   }
-
-  o_obj = i_obj;
-
+  
+  s->swap();
+  
   return 0;
 }
--- a/ppe/task_init.cc	Tue Oct 26 17:28:56 2010 +0900
+++ b/ppe/task_init.cc	Fri Dec 10 02:20:37 2010 +0900
@@ -5,6 +5,10 @@
 SchedExternTask(TitleMove);
 SchedExternTask(CrabMove);
 SchedExternTask(TitleColl);
+SchedExternTask(PadAllocate);
+SchedExternTask(PadUpdate);
+SchedExternTask(PadFree);
+
 /*
 SchedExternTask(Move00);
 SchedExternTask(Move01);
@@ -69,6 +73,10 @@
   SchedRegisterTask(TITLE_MOVE, TitleMove);
   SchedRegisterTask(CRAB_MOVE, CrabMove);
   SchedRegisterTask(TITLE_COLL, TitleColl);
+  SchedRegisterTask(PAD_ALLOCATE, PadAllocate);
+  SchedRegisterTask(PAD_UPDATE, PadUpdate);
+  SchedRegisterTask(PAD_FREE, PadFree);
+
   /*
   SchedRegisterTask(MOVE_00, Move00);
   SchedRegisterTask(MOVE_01, Move01);
--- a/schedule.cc	Tue Oct 26 17:28:56 2010 +0900
+++ b/schedule.cc	Fri Dec 10 02:20:37 2010 +0900
@@ -8,6 +8,7 @@
 void
 schedule(SceneGraphPtr node, void *sgroot_, int w, int h) 
 {
+#if 0
   SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_;
   Pad *pad = sgroot->getController();
   // Title 画面
@@ -241,6 +242,7 @@
     */
   }
   }
+#endif
 }
 
 ObjProperty enemy[300];
@@ -291,5 +293,5 @@
 
   int size = sizeof(ObjProperty)*16;
   //printf("size = %d\n", size);
-  sgroot->set_move_task(obj, move, (void*)e, size, create_enemy);
+//  sgroot->set_move_task(obj, move, (void*)e, size, create_enemy);
 }
--- a/stage_init.cc	Tue Oct 26 17:28:56 2010 +0900
+++ b/stage_init.cc	Fri Dec 10 02:20:37 2010 +0900
@@ -1,25 +1,63 @@
 #include "dandy.h"
 
-void
-create_crab(SchedTask *s, void *charactor_, void *b)
+HTaskPtr
+pad_alloc(Viewer *sgroot)
+{
+    HTaskPtr task = sgroot->manager->create_task(PAD_ALLOCATE);
+    void *pad = (void*)sgroot->getController();
+    int size = sizeof(Pad);
+
+    task->set_param(0, PAD_INPUT);
+    task->set_param(1, size);
+    task->add_inData(pad, size);
+    task->set_cpu(SPE_ANY);
+    task->spawn();
+
+    return task;
+}
+
+HTaskPtr
+pad_update(SceneGraphRoot *sgroot)
 {
-    ObjPropertyPtr charactor = (ObjPropertyPtr)charactor_;
-    SceneGraphPtr crab = (SceneGraphPtr)charactor->root;
+    HTaskPtr task = sgroot->tmanager->create_task(PAD_UPDATE);
+    void *pad = (void*)sgroot->getController();
+    int size = sizeof(Pad);
+
+    task->set_param(0, PAD_INPUT);
+    task->set_param(1, size);
+    task->add_inData(pad, size);
+    task->set_cpu(SPE_ANY);
+    task->spawn();
 
-    crab->xyz[0] = charactor->x;
-    crab->xyz[1] = charactor->y;
+    return task;
+}
+
+HTaskPtr
+pad_free(Viewer *sgroot)
+{
+    HTaskPtr task = sgroot->manager->create_task(PAD_FREE);
+
+    task->set_param(0, PAD_INPUT);
+    task->set_cpu(SPE_ANY);
+    task->spawn();
+
+    return task;
 }
 
 void
-create_title(SchedTask *s, void *charactor_, void *b)
+title_move(SceneGraphPtr node, void *sgroot_, int w, int h)
 {
-    ObjPropertyPtr charactor = (ObjPropertyPtr)charactor_;
-    SceneGraphPtr title = (SceneGraphPtr)charactor->root;
+    SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_;
 
-    if (charactor->flag == 1) {
-      title->remove();
-      charactor->flag = 0;
-    }
+    HTaskPtr update = pad_update(sgroot);
+    HTaskPtr title_task = sgroot->tmanager->create_task(TITLE_MOVE);
+    int size = sizeof(ObjProperty);
+    title_task->set_param(0, PAD_INPUT);
+    title_task->add_inData((void *)&charactor[0], size);
+    title_task->add_outData((void *)&charactor[0], size);
+    title_task->set_cpu(SPE_ANY);
+    title_task->wait_for(update);
+    title_task->spawn();
 }
 
 void
@@ -35,48 +73,13 @@
     charactor[0].vy = 0.0;
     charactor[0].flag = 0;
     charactor[0].parent = (void*)root;
-    
+
     title->xyz[0] = charactor[0].x;
     title->xyz[1] = charactor[0].y;
+    title->set_move_collision(title_move);
 
-    SceneGraphPtr crab = (SceneGraphPtr)charactor[1].root;
-    charactor[1].x = w/2;
-    charactor[1].y = h/2;
-    charactor[1].vx = 1.0;
-    charactor[1].vy = 1.0;
-    charactor[1].flag = 0;
-    charactor[1].parent = (void*)root;
-    
-    crab->xyz[0] = charactor[1].x;
-    crab->xyz[1] = charactor[1].y;
-    crab->flag_drawable = 0;
+    pad_alloc(sgroot);
 
-    int size = sizeof(ObjProperty);
-    sgroot->task_array_init(TITLE_MOVE, TASK_NUM, PARAMETER, INDATA_NUM, OUTDATA_NUM);
-    sgroot->set_pad_task(title, TITLE_MOVE, (void*)&charactor[0], size, create_title);
-    sgroot->set_pad_task(crab, CRAB_MOVE, (void*)&charactor[1], size, create_crab);
-    
     root->addChild(title);
-    root->addChild(crab);
     sgroot->setSceneData(root);
 }
-
-
-void
-create_stage(void *sgroot_, int w, int h, ObjPropertyPtr charactor) 
-{
-    SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_;
-
-    SceneGraphPtr stage = sgroot->createSceneGraph();
-    SceneGraphPtr mydandy = sgroot->createSceneGraph("mydandy"); 
-    
-    //mydandy->set_move_collision(dandy_move, dandy_coll);
-    //stage->set_move_collision(stage_move, stage_coll);
-    
-    mydandy->xyz[0] = w/2;
-    mydandy->xyz[1] = h*0.9;
-    mydandy->xyz[2] = 0.0f;
-    
-    stage->addChild(mydandy);
-    sgroot->setSceneData(stage);
-}