# HG changeset patch # User Atuto SHIROMA # Date 1306994171 -32400 # Node ID 0b65ca27f113285727439617075d42787221187a # Parent b0249b85648836b9e670860a21ce0436b35a25d5 compile on Mac OS X 2 diff -r b0249b856488 -r 0b65ca27f113 .DS_Store Binary file .DS_Store has changed diff -r b0249b856488 -r 0b65ca27f113 Linda/lindaapi.h --- a/Linda/lindaapi.h Thu May 26 18:13:40 2011 +0900 +++ b/Linda/lindaapi.h Thu Jun 02 14:56:11 2011 +0900 @@ -103,6 +103,4 @@ } COMMAND, *COMMAND_PTR; - - #endif diff -r b0249b856488 -r 0b65ca27f113 Linda/lindaapi.h~ --- a/Linda/lindaapi.h~ Thu May 26 18:13:40 2011 +0900 +++ b/Linda/lindaapi.h~ Thu Jun 02 14:56:11 2011 +0900 @@ -1,5 +1,7 @@ -// $Id$ -// +#ifndef LINDAAPI_H +#define LINDAAPI_H + + /*---------------------------------------------------------------------- ¥Þ¥¯¥íÄêµÁ @@ -99,3 +101,8 @@ struct command_queue *next; unsigned int size; } COMMAND, *COMMAND_PTR; + + + + +#endif diff -r b0249b856488 -r 0b65ca27f113 Makefile --- a/Makefile Thu May 26 18:13:40 2011 +0900 +++ b/Makefile Thu Jun 02 14:56:11 2011 +0900 @@ -1,6 +1,6 @@ TARGET = main CC = gcc -SRCS = main.c game.c car.c col.c quotanion.c controler.c field.c camera.c gSprite.c schedule.c mytype.c gFont.c carNode.c light.c title_scene.c game_time.c ps2util.c +SRCS = main.c game.c car.c col.c quotanion.c controler.c field.c camera.c gSprite.c schedule.c mytype.c gFont.c carNode.c light.c title_scene.c game_time.c ps2util.c sjoy.c #linda/lindaapi.c linda.c OBJS = ${SRCS:.c=.o} VU1DIR = vu1code @@ -71,3 +71,4 @@ light.o: title_scene.o: game_time.o: +sjoy.o: \ No newline at end of file diff -r b0249b856488 -r 0b65ca27f113 TAGS --- a/TAGS Thu May 26 18:13:40 2011 +0900 +++ b/TAGS Thu Jun 02 14:56:11 2011 +0900 @@ -1,108 +1,3 @@ - -camera.h,74 -#define CAMERA_H2,17 -typedef struct camera{camera8,75 -} CAMERA;13,159 - -car.h,74 -#define CAR_H2,14 -typedef struct car 6,50 -} Car, *CarPtr;CarPtr19,471 - -carNode.h,23 -#define CARNODE_H2,18 - -col.h,157 -#define COL_H2,14 -typedef struct detection_face 8,72 -} ColFace, *ColFacePtr;ColFacePtr13,164 -typedef struct col_face_handler 15,189 -} ColFaceHd;19,285 - -controler.h,48 -typedef struct SGO_PAD 7,129 -} SGO_PAD;22,374 - -field.h,225 -#define FIELD_H2,16 -#define EFFECT_TEXTURE_USE 13,300 -#define EFFECT_ALPHABLEND_UNUSE 14,329 -#define EFFECT_SHADING_FLAT 15,363 -#define DEFAULT_SET 17,394 -typedef struct field 18,483 -} Field, *FieldPtr;FieldPtr26,669 - -gSprite.h,112 -#define GSPRITE_H2,18 -#define SPRITE_PRIO_FOREGROUND 5,81 -typedef struct sptable 7,115 -} SpriteTable;12,188 - -game.h,81 -#define GAME_H2,15 -typedef struct game 14,180 -} Game, *GamePtr;GamePtr21,364 - -libps2.h,316 -#define LIBPS2_H2,17 -typedef float FVECTOR[FVECTOR6,49 -typedef float FMATRIX[FMATRIX7,105 -typedef struct texture 11,193 -} TEXTURE;19,599 -typedef struct surface 23,646 -} SURFACE;32,1189 -typedef struct object 36,1242 -} OBJECT;43,1511 -} SPRITE;56,1808 -typedef struct popygon 65,1904 -} PolygonInfo;68,1956 - -linda.h,723 -#define LINDA_H2,16 -#define MODE_INIT 21,547 -#define MODE_WAIT 22,579 -#define MODE_WAIT_READY 23,611 -#define MODE_OPENING 24,643 -#define MODE_SELECT_CAR 25,675 -#define MODE_SELECT_COURSE 26,707 -#define MODE_READY 27,739 -#define MODE_MAIN_INIT 28,771 -#define MODE_MAIN_READY 29,803 -#define MODE_MAIN 30,835 -#define MODE_MAIN_PAUSE 31,867 -#define MODE_MAIN_GOAL 32,899 -#define MODE_MAIN_FINISH 33,931 -#define MODE_FINISH 34,963 -#define PLAYER_1P 36,996 -#define CLIENT_MAX 38,1017 -#define LINDA_ASK_ID 39,1038 -#define LINDA_HOST 40,1065 -#define PKT_MODE_OFFSET 43,1117 -#define PKT_CARID_OFFSET 44,1148 -#define PKT_COURSEID_OFFSET 45,1179 -#define PKT_DATA_OFFSET 46,1210 -#define PKT_HEADER_SIZE 48,1242 - -mytype.h,211 -#define RADIAN(3,18 -#define INIT_VECTOR(4,53 -#define NORM(5,122 -enum { X_AXIS=7,200 -enum { X_AXIS=0, Y_AXIS=7,200 -enum { X_AXIS=0, Y_AXIS=1, Z_AXIS=7,200 -enum { X_AXIS=0, Y_AXIS=1, Z_AXIS=2, W_AXIS=7,200 - -ps2util.h,117 -#define PS2UTIL_H2,18 -#define ALIGN_16BYTE 8,84 -typedef struct ps2sprite{ps2sprite22,350 -} ps2utilSprite;24,397 - -quotanion.h,25 -#define QUOTANION_H2,20 - -schedule.h,24 -#define SCHEDULE_H2,19 camera.c,138 static CAMERA camera,13,216 @@ -258,7 +153,7 @@ time_RaceStart(40,495 time_RaceTime(46,550 -ps2util.c,1173 +ps2util.c,1176 OBJECT *ps2util_obj_Create_fromXML(ps2util_obj_Create_fromXML12,282 void ps2util_obj_Set_effect(27,551 void ps2_vu0_copy_vector(33,617 @@ -268,30 +163,30 @@ int ps2util_sprite_Create(61,987 void ps2util_obj_Set_texture(67,1071 void ps2_vu0_unit_matrix(72,1146 -void ps2_vu0_rot_matrix_y(77,1198 -void ps2_vu0_apply_matrix(83,1281 -void ps2_vu0_scale_vector(89,1365 -void ps2_vu0_add_vector(94,1458 -void ps2_vu0_outer_product(100,1555 -float ps2_vu0_inner_product(106,1648 -void ps2_vu0_mul_matrix(113,1743 -void ps2_vu0_copy_matrix(118,1825 -void ps2util_tex_Exclude(124,1906 -void ps2util_obj_Free(129,1957 -void ps2_vu0_sub_vector(136,2011 -void ps2_vu0_normalize(144,2087 -void xml_free(150,2175 -void ps2util_obj_Draw(156,2221 -void gSprite_Init(162,2274 -void ps2util_sprite_Destroy(168,2309 -void ps2util_sprite_Set_basicAttribute(176,2385 -void ps2util_sprite_Request(186,2691 -void ps2util_sprite_Unuse_alpha(192,2752 -void ps2util_graphic_Init(197,2817 -sprite_disappear(207,2925 -void delete_name_dictionary(229,3325 -void free_texture(262,4002 -int malloc_align16(277,4308 +void ps2_vu0_rot_matrix_y(81,1374 +void ps2_vu0_apply_matrix(102,1817 +void ps2_vu0_scale_vector(111,2215 +void ps2_vu0_add_vector(119,2454 +void ps2_vu0_outer_product(125,2551 +float ps2_vu0_inner_product(134,2779 +void ps2_vu0_mul_matrix(140,2893 +void ps2_vu0_copy_matrix(145,2975 +void ps2util_tex_Exclude(151,3045 +void ps2util_obj_Free(156,3096 +void ps2_vu0_sub_vector(163,3151 +void ps2_vu0_normalize(171,3227 +void xml_free(181,3432 +void ps2util_obj_Draw(187,3478 +void gSprite_Init(193,3531 +void ps2util_sprite_Destroy(199,3566 +void ps2util_sprite_Set_basicAttribute(207,3642 +void ps2util_sprite_Request(217,3948 +void ps2util_sprite_Unuse_alpha(223,4009 +void ps2util_graphic_Init(228,4074 +sprite_disappear(238,4182 +void delete_name_dictionary(260,4582 +void free_texture(293,5259 +int malloc_align16(309,5587 quotanion.c,69 quotanion(11,226 @@ -345,7 +240,110 @@ title_finish_call(55,919 title_scene(61,968 -light.c,0 +camera.h,74 +#define CAMERA_H2,17 +typedef struct camera{camera8,75 +} CAMERA;13,159 + +car.h,74 +#define CAR_H2,14 +typedef struct car 6,50 +} Car, *CarPtr;CarPtr19,471 + +carNode.h,23 +#define CARNODE_H2,18 + +col.h,157 +#define COL_H2,14 +typedef struct detection_face 8,72 +} ColFace, *ColFacePtr;ColFacePtr13,164 +typedef struct col_face_handler 15,189 +} ColFaceHd;19,285 + +controler.h,48 +typedef struct SGO_PAD 7,129 +} SGO_PAD;22,374 + +field.h,225 +#define FIELD_H2,16 +#define EFFECT_TEXTURE_USE 13,300 +#define EFFECT_ALPHABLEND_UNUSE 14,329 +#define EFFECT_SHADING_FLAT 15,363 +#define DEFAULT_SET 17,394 +typedef struct field 18,483 +} Field, *FieldPtr;FieldPtr26,669 + +gSprite.h,112 +#define GSPRITE_H2,18 +#define SPRITE_PRIO_FOREGROUND 5,81 +typedef struct sptable 7,115 +} SpriteTable;12,188 + +game.h,81 +#define GAME_H2,15 +typedef struct game 14,180 +} Game, *GamePtr;GamePtr21,364 + +libps2.h,316 +#define LIBPS2_H2,17 +typedef float FVECTOR[FVECTOR6,49 +typedef float FMATRIX[FMATRIX7,105 +typedef struct texture 11,193 +} TEXTURE;19,599 +typedef struct surface 23,646 +} SURFACE;32,1189 +typedef struct object 36,1242 +} OBJECT;43,1511 +} SPRITE;56,1808 +typedef struct popygon 65,1904 +} PolygonInfo;68,1956 + +linda.h,723 +#define LINDA_H2,16 +#define MODE_INIT 21,547 +#define MODE_WAIT 22,579 +#define MODE_WAIT_READY 23,611 +#define MODE_OPENING 24,643 +#define MODE_SELECT_CAR 25,675 +#define MODE_SELECT_COURSE 26,707 +#define MODE_READY 27,739 +#define MODE_MAIN_INIT 28,771 +#define MODE_MAIN_READY 29,803 +#define MODE_MAIN 30,835 +#define MODE_MAIN_PAUSE 31,867 +#define MODE_MAIN_GOAL 32,899 +#define MODE_MAIN_FINISH 33,931 +#define MODE_FINISH 34,963 +#define PLAYER_1P 36,996 +#define CLIENT_MAX 38,1017 +#define LINDA_ASK_ID 39,1038 +#define LINDA_HOST 40,1065 +#define PKT_MODE_OFFSET 43,1117 +#define PKT_CARID_OFFSET 44,1148 +#define PKT_COURSEID_OFFSET 45,1179 +#define PKT_DATA_OFFSET 46,1210 +#define PKT_HEADER_SIZE 48,1242 + +mytype.h,211 +#define RADIAN(3,18 +#define INIT_VECTOR(4,53 +#define NORM(5,122 +enum { X_AXIS=7,200 +enum { X_AXIS=0, Y_AXIS=7,200 +enum { X_AXIS=0, Y_AXIS=1, Z_AXIS=7,200 +enum { X_AXIS=0, Y_AXIS=1, Z_AXIS=2, W_AXIS=7,200 + +ps2util.h,117 +#define PS2UTIL_H2,18 +#define ALIGN_16BYTE 8,84 +typedef struct ps2sprite{ps2sprite22,350 +} ps2utilSprite;24,397 + +quotanion.h,25 +#define QUOTANION_H2,20 + +schedule.h,24 +#define SCHEDULE_H2,19 title_scene.h,0 @@ -354,3 +352,5 @@ game_time.h,0 gFont.h,0 + +light.c,0 diff -r b0249b856488 -r 0b65ca27f113 camera.c --- a/camera.c Thu May 26 18:13:40 2011 +0900 +++ b/camera.c Thu Jun 02 14:56:11 2011 +0900 @@ -8,7 +8,7 @@ #include "camera.h" //大域変数ã€å„部ã§å…±æœ‰ -//extern SGO_PAD pad; +extern SGO_PAD pad; static CAMERA camera, def_camera; @@ -44,8 +44,6 @@ } - - /* ps2ä¾å­˜é–¢ä¿‚ã‹ã‚‰æ‹å€Ÿã€‚ 自分ãŒæ¶ˆã—ãŸã®ã‹ã€å…ƒã€…ç„¡ã„ã®ã‹ã¯è¦šãˆã¦ã„ãªã„ã‘ã© @@ -58,8 +56,6 @@ } - - /** * pose: カメラã®å¯¾è±¡ç‰©(obj)ã®åº§æ¨™è¡Œåˆ— * カメラãŒobjã«ã¤ã„ã¦ã„ãよã†ã«(ãã®ã‚ˆã†ãªå‹•ãã«è¦‹ã›ã‚‹ãŸã‚) @@ -68,43 +64,42 @@ void camera_update(Game *game, FMATRIX pose) { - - FVECTOR location, eyes, vertical, angle; + FVECTOR location, eyes, vertical, angle; - //int type = game->camera_type; + //int type = game->camera_type; - ps2_vu0_apply_matrix(location, pose, def_camera.xyz); - ps2_vu0_apply_matrix(eyes, pose, def_camera.zd); - ps2_vu0_apply_matrix(vertical, pose, def_camera.yd); + ps2_vu0_apply_matrix(location, pose, def_camera.xyz); + ps2_vu0_apply_matrix(eyes, pose, def_camera.zd); + ps2_vu0_apply_matrix(vertical, pose, def_camera.yd); /**When the car bends, the angle of the camera is changed**/ - //if(pad.left>0 && game.jiki->speed !=0){ + if(pad.left>0 && game->jiki->speed !=0){ if(game->jiki->speed !=0){ - if(def_camera.angle[1]<=0.2){ - def_camera.angle[1]+=0.02; - } + if(def_camera.angle[1]<=0.2){ + def_camera.angle[1]+=0.02; + } } - //else if(pad.right>0 && game.jiki->speed !=0){ - else if(game->jiki->speed !=0){ - if(def_camera.angle[1]>=-0.2){ - def_camera.angle[1]-=0.02; - } + } + else if(pad.right>0 && game->jiki->speed !=0){ + if(game->jiki->speed !=0){ + if(def_camera.angle[1]>=-0.2){ + def_camera.angle[1]-=0.02; + } } - else { - if(def_camera.angle[1]<-0.01){ - def_camera.angle[1]+=0.02; - } - else if(def_camera.angle[1]>0.01){ - def_camera.angle[1]-=0.02; - } - } - ps2_vu0_apply_matrix(angle, pose, def_camera.angle); - ps2_vu0_copy_vector(camera.xyz, location); - ps2_vu0_copy_vector(camera.zd, eyes); - ps2_vu0_copy_vector(camera.yd, vertical); - ps2_vu0_copy_vector(camera.angle, angle); - set_camera(&camera); - + } + else { + if(def_camera.angle[1]<-0.01){ + def_camera.angle[1]+=0.02; + } + else if(def_camera.angle[1]>0.01){ + def_camera.angle[1]-=0.02; + } + } + ps2_vu0_apply_matrix(angle, pose, def_camera.angle); + ps2_vu0_copy_vector(camera.xyz, location); + ps2_vu0_copy_vector(camera.zd, eyes); + ps2_vu0_copy_vector(camera.yd, vertical); + ps2_vu0_copy_vector(camera.angle, angle); + set_camera(&camera); + } - - diff -r b0249b856488 -r 0b65ca27f113 camera.h --- a/camera.h Thu May 26 18:13:40 2011 +0900 +++ b/camera.h Thu Jun 02 14:56:11 2011 +0900 @@ -4,7 +4,6 @@ #include "game.h" #include "libps2.h" - typedef struct camera{ FVECTOR xyz; FVECTOR zd; @@ -12,10 +11,8 @@ float angle[4]; } CAMERA; -extern void camera_update(Game *game, FMATRIX pose); -extern void camera_init(); +void camera_update(Game *game, FMATRIX pose); +void camera_init(); void set_camera(CAMERA *camera); - - #endif diff -r b0249b856488 -r 0b65ca27f113 car.c --- a/car.c Thu May 26 18:13:40 2011 +0900 +++ b/car.c Thu Jun 02 14:56:11 2011 +0900 @@ -1,3 +1,5 @@ +/* car.c */ + #include #include #include @@ -19,118 +21,111 @@ extern FILE* main_fp; -/* --- field.c --- */ -extern int field_rap_increment(int); -extern void field_set_actual(FieldPtr); -extern FieldPtr field_get_actual(); - - static CarPtr car_create(int car_id, char *filename, char *texname, float speed_accel, float speed_max, float rot, float brake) { - CarPtr car; - OBJECT *body; - TEXTURE* tex; - void *free_addr; + CarPtr car; + OBJECT *body; + TEXTURE* tex; + void *free_addr; - body = ps2util_obj_Create_fromXML(filename); - ps2util_obj_Set_effect(body, DEFAULT_SET); + body = ps2util_obj_Create_fromXML(filename); + ps2util_obj_Set_effect(body, DEFAULT_SET); - if (malloc_align16(&free_addr, &car, sizeof(Car)) == -1) { - fprintf(main_fp, "car.c: malloc_align16 error\n"); - exit(EXIT_FAILURE); - } - car->body = body; - car->next = NULL; - car->speed = 0.0; - car->speed_accel = speed_accel; - car->speed_max = speed_max; - car->brake = brake; - car->rotation_angle = rot; - car->y_angle = 0.0; - car->free_addr = free_addr; + if (malloc_align16(&free_addr, &car, sizeof(Car)) == -1) { + fprintf(main_fp, "car.c: malloc_align16 error\n"); + exit(EXIT_FAILURE); + } + car->body = body; + car->next = NULL; + car->speed = 0.0; + car->speed_accel = speed_accel; + car->speed_max = speed_max; + car->brake = brake; + car->rotation_angle = rot; + car->y_angle = 0.0; + car->free_addr = free_addr; - ps2_vu0_copy_vector(car->direction, direction); - ps2_vu0_copy_vector(car->location, location); - INIT_VECTOR(car->vertical, 0, -1, 0, 1); - INIT_VECTOR(car->body->xyz, 0, 0, 0, 1); - INIT_VECTOR(car->body->angle, 0, 0, 0, 1); + ps2_vu0_copy_vector(car->direction, direction); + ps2_vu0_copy_vector(car->location, location); + INIT_VECTOR(car->vertical, 0, -1, 0, 1); + INIT_VECTOR(car->body->xyz, 0, 0, 0, 1); + INIT_VECTOR(car->body->angle, 0, 0, 0, 1); - ps2util_obj_Renew_transMatrix(car->body); - ps2util_obj_Set_effect(car->body, DEFAULT_SET); + ps2util_obj_Renew_transMatrix(car->body); + ps2util_obj_Set_effect(car->body, DEFAULT_SET); - if (*texname != 'n') { - tex = read_png_file(texname); - ps2util_tex_Set(tex); - ps2util_obj_Set_texture(car->body, tex); - } + if (*texname != 'n') { + tex = read_png_file(texname); + ps2util_tex_Set(tex); + ps2util_obj_Set_texture(car->body, tex); + } #ifdef DEBUG - fprintf(main_fp, "malloc car addr = %x\n", (int)free_addr); + fprintf(main_fp, "malloc car addr = %x\n", (int)free_addr); #endif - return car; + return car; } static CarPtr car_new_readCSV(FILE *fp, int id) { - CarPtr new; - int car_id; - float speed_accel, speed_max, brake, rot; - char buff[BUFSIZE], *bufp; - char carImg[BUFSIZE], texImg[BUFSIZE]; - bool flag; + CarPtr new; + int car_id; + float speed_accel, speed_max, brake, rot; + char buff[BUFSIZE], *bufp; + char carImg[BUFSIZE], texImg[BUFSIZE]; + bool flag; - flag = false; + flag = false; - while ((bufp = fgets(buff, BUFSIZE, fp)) != NULL) { - bufp++; + while ((bufp = fgets(buff, BUFSIZE, fp)) != NULL) { + bufp++; - switch (buff[0]) { - case 'n': - if (flag == false) { - sscanf(bufp, " %d\n", &car_id); - if (id == car_id) { - flag = true; - } - } - break; - case 't': - if (flag == true) { - sscanf(bufp, " %s %s %f %f %f %f\n", - carImg, texImg, &speed_accel, &speed_max, &rot, &brake); - new = car_create(id, carImg, texImg, - speed_accel, speed_max, rot, brake); - return new; - } - break; - default: - break; + switch (buff[0]) { + case 'n': + if (flag == false) { + sscanf(bufp, " %d\n", &car_id); + if (id == car_id) { + flag = true; } + } + break; + case 't': + if (flag == true) { + sscanf(bufp, " %s %s %f %f %f %f\n", + carImg, texImg, &speed_accel, &speed_max, &rot, &brake); + new = car_create(id, carImg, texImg, + speed_accel, speed_max, rot, brake); + return new; + } + break; + default: + break; } + } - /* ã“ã“ã¾ã§è¾¿ã‚Šç€ã„ãŸã‚‰èª­ã¿è¾¼ã¿å¤±æ•— */ - fprintf(main_fp, "error - car_new_readCSV\n"); - exit(EXIT_FAILURE); + /* ã“ã“ã¾ã§è¾¿ã‚Šç€ã„ãŸã‚‰èª­ã¿è¾¼ã¿å¤±æ•— */ + fprintf(main_fp, "error - car_new_readCSV\n"); + exit(EXIT_FAILURE); } -CarPtr -car_init(int id) +CarPtr car_init(int id) { - CarPtr new; - FILE *fp; - char *filename = "car/car.dat"; + CarPtr new; + FILE *fp; + char *filename = "car/car.dat"; - if (!(fp = fopen(filename, "r"))) { - fprintf(main_fp, "error read file %s\n", filename); - exit(EXIT_FAILURE); - } - new = car_new_readCSV(fp, id); - fclose(fp); + if (!(fp = fopen(filename, "r"))) { + fprintf(main_fp, "error read file %s\n", filename); + exit(EXIT_FAILURE); + } + new = car_new_readCSV(fp, id); + fclose(fp); - return new; + return new; } /*--------------------------- @@ -143,14 +138,14 @@ FMATRIX rot; FVECTOR v; - car->y_angle += (float)flg*car->rotation_angle; - car->y_angle += (car->y_angle < 0) ? 360.0 : 0; - car->y_angle += (car->y_angle > 360.0) ? -360.0 : 0; + car->y_angle += (float)flg*car->rotation_angle; + car->y_angle += (car->y_angle < 0) ? 360.0 : 0; + car->y_angle += (car->y_angle > 360.0) ? -360.0 : 0; - ps2_vu0_unit_matrix(rot); - ps2_vu0_rot_matrix_y(rot, rot, degree2radian((float)flg*car->rotation_angle)); - ps2_vu0_copy_vector(v, car->direction); - ps2_vu0_apply_matrix(car->direction, rot, v); + ps2_vu0_unit_matrix(rot); + ps2_vu0_rot_matrix_y(rot, rot, degree2radian((float)flg*car->rotation_angle)); + ps2_vu0_copy_vector(v, car->direction); + ps2_vu0_apply_matrix(car->direction, rot, v); } /*---------------------------- @@ -160,9 +155,9 @@ void car_accelerate(CarPtr car, int flg) { - car->speed += (flg == 1) ? car->speed_accel : -car->brake; - car->speed = (car->speed < 0) ? 0 : car->speed; - car->speed = (car->speed > car->speed_max) ? car->speed_max : car->speed; + car->speed += (flg == 1) ? car->speed_accel : -car->brake; + car->speed = (car->speed < 0) ? 0 : car->speed; + car->speed = (car->speed > car->speed_max) ? car->speed_max : car->speed; } @@ -178,37 +173,37 @@ static bool car_field_check(Game *game ,CarPtr car) { - FieldPtr p; - FieldPtr f = field_get_actual(); + FieldPtr p; + FieldPtr f = field_get_actual(); - // ç¾åœ¨ã®ã‚³ãƒ¼ã‚¹ã§è¡çªãƒ»å†…外判定 - p = f; - if (col_detect(&p->colface, car->vertical, car->location) == true) { - goto FIELD_CHECK_OK; - } + // ç¾åœ¨ã®ã‚³ãƒ¼ã‚¹ã§è¡çªãƒ»å†…外判定 + p = f; + if (col_detect(&p->colface, car->vertical, car->location) == true) { + goto FIELD_CHECK_OK; + } - // ç¾åœ¨ã®ã‚³ãƒ¼ã‚¹ã®æ¬¡ã«éš£æŽ¥ã™ã‚‹ã‚³ãƒ¼ã‚¹ã§è¡çªãƒ»å†…外判定 - p = f->next; - if (col_detect(&p->colface, car->vertical, car->location) == true) { - if (field_rap_increment(1)) { - game->rap++; - } - goto FIELD_CHECK_OK; + // ç¾åœ¨ã®ã‚³ãƒ¼ã‚¹ã®æ¬¡ã«éš£æŽ¥ã™ã‚‹ã‚³ãƒ¼ã‚¹ã§è¡çªãƒ»å†…外判定 + p = f->next; + if (col_detect(&p->colface, car->vertical, car->location) == true) { + if (field_rap_increment(1)) { + game->rap++; } + goto FIELD_CHECK_OK; + } - // ç¾åœ¨ã®ã‚³ãƒ¼ã‚¹ã®å‰ã«éš£æŽ¥ã™ã‚‹ã‚³ãƒ¼ã‚¹ã§è¡çªãƒ»å†…外判定 - p = f->prev; - if (col_detect(&p->colface, car->vertical, car->location) == true) { - field_rap_increment(-1); - goto FIELD_CHECK_OK; - } + // ç¾åœ¨ã®ã‚³ãƒ¼ã‚¹ã®å‰ã«éš£æŽ¥ã™ã‚‹ã‚³ãƒ¼ã‚¹ã§è¡çªãƒ»å†…外判定 + p = f->prev; + if (col_detect(&p->colface, car->vertical, car->location) == true) { + field_rap_increment(-1); + goto FIELD_CHECK_OK; + } - // ã©ã®ã‚³ãƒ¼ã‚¹ä¸Šã«ã‚‚å±…ãªã„(å£ã«è¡çª) - return false; + // ã©ã®ã‚³ãƒ¼ã‚¹ä¸Šã«ã‚‚å±…ãªã„(å£ã«è¡çª) + return false; - FIELD_CHECK_OK: - field_set_actual(p); - return true; + FIELD_CHECK_OK: + field_set_actual(p); + return true; } @@ -238,61 +233,67 @@ { FMATRIX pose, yrot, yrotinv; - ps2_vu0_unit_matrix(yrot); - ps2_vu0_rot_matrix_y(yrot, yrot, -degree2radian(car->y_angle)); - ps2_vu0_unit_matrix(yrotinv); - ps2_vu0_rot_matrix_y(yrotinv, yrotinv, degree2radian(car->y_angle)); + ps2_vu0_unit_matrix(yrot); + ps2_vu0_rot_matrix_y(yrot, yrot, -degree2radian(car->y_angle)); + ps2_vu0_unit_matrix(yrotinv); + ps2_vu0_rot_matrix_y(yrotinv, yrotinv, degree2radian(car->y_angle)); - { - FVECTOR yd = {0, -1, 0, 1}; - FVECTOR rotaxis; - FVECTOR q; + { + FVECTOR yd = {0, -1, 0, 1}; + FVECTOR rotaxis; + FVECTOR q; - ps2_vu0_outer_product(rotaxis, car->vertical, yd); - { - float scale=1/NORM(rotaxis); - rotaxis[0] *= scale; - rotaxis[1] *= scale; - rotaxis[2] *= scale; - } + ps2_vu0_outer_product(rotaxis, car->vertical, yd); + { + float scale=1/NORM(rotaxis); + rotaxis[0] *= scale; + rotaxis[1] *= scale; + rotaxis[2] *= scale; + } - quotanion(q, rotaxis, acos(ps2_vu0_inner_product(yd, car->vertical)/(NORM(yd)*NORM(car->vertical)))); - quotanion_rotmatrix(pose, q); - } + quotanion(q, rotaxis, acos(ps2_vu0_inner_product(yd, car->vertical)/(NORM(yd)*NORM(car->vertical)))); + quotanion_rotmatrix(pose, q); + } - ps2_vu0_mul_matrix(pose, yrot, pose); - ps2_vu0_mul_matrix(pose, pose, yrotinv); - ps2_vu0_copy_matrix(car->body->transfer, pose); - ps2_vu0_rot_matrix_y(car->body->transfer, car->body->transfer, degree2radian(car->y_angle)); + ps2_vu0_mul_matrix(pose, yrot, pose); + ps2_vu0_mul_matrix(pose, pose, yrotinv); + ps2_vu0_copy_matrix(car->body->transfer, pose); + ps2_vu0_rot_matrix_y(car->body->transfer, car->body->transfer, degree2radian(car->y_angle)); } -void -car_update(Game *game,CarPtr car) +void car_update( Game *game, CarPtr car ) { - // 移動 - car_move(game,car); + // 移動 + car_move(game,car); - // 摩擦ã«ã‚ˆã‚‹é€Ÿåº¦æ¸›å°‘ - car->speed -= 0.005; - car->speed = (car->speed < 0) ? 0 : car->speed; + // 摩擦ã«ã‚ˆã‚‹é€Ÿåº¦æ¸›å°‘ + car->speed -= 0.005; + car->speed = (car->speed < 0) ? 0 : car->speed; - // 傾ã - car_axis_rotation(car); + // 傾ã + car_axis_rotation(car); } + void car_destroy(CarPtr p) { TEXTURE *t; if ((t = p->body->surfaces->texture)) { - ps2util_tex_Exclude(t); - free_texture(t); + ps2util_tex_Exclude(t); + free_texture(t); } - ps2util_obj_Free(p->body); - free(p->free_addr); + ps2util_obj_Free(p->body); + free(p->free_addr); #ifdef DEBUG - fprintf(main_fp, "free car addr = %x\n", (int)p->free_addr); + fprintf(main_fp, "free car addr = %x\n", (int)p->free_addr); #endif } + +// é©å½“ã«è‡ªä½œ +void car_id_update(Game *game, CarPtr jiki) +{ + printf("car_id_update\n"); +} diff -r b0249b856488 -r 0b65ca27f113 car.h --- a/car.h Thu May 26 18:13:40 2011 +0900 +++ b/car.h Thu Jun 02 14:56:11 2011 +0900 @@ -1,25 +1,30 @@ +/* car.h */ + #ifndef CAR_H #define CAR_H #include "libps2.h" typedef struct car { - FVECTOR direction; // å‘ã - FVECTOR vertical; // - FVECTOR location; // ä½ç½® - float speed; // 速度 - float speed_accel; // 加速度 - float speed_max; // 最高速度 - float brake; // ブレーキ - float rotation_angle; // 回転度数 - float y_angle; // 角度 - void *free_addr; - struct car *next; - OBJECT* body; + FVECTOR direction; // å‘ã + FVECTOR vertical; // + FVECTOR location; // ä½ç½® + float speed; // 速度 + float speed_accel; // 加速度 + float speed_max; // 最高速度 + float brake; // ブレーキ + float rotation_angle; // 回転度数 + float y_angle; // 角度 + void *free_addr; + struct car *next; + OBJECT* body; } Car, *CarPtr; -extern CarPtr car_init(int id); -extern void car_accelerate(CarPtr, int); -extern void car_swerve(CarPtr, int); +CarPtr car_init(int id); +void car_accelerate(CarPtr, int); +void car_swerve(CarPtr, int); + +// ã“ã“ã§å®£è¨€ã—ãŸã‚‰game.hã¨ç›¸äº’ã«includeã—ã¡ã‚ƒã†ã‹ã‚‰schedule.hã®ã»ã†ã«æ›¸ã„ã¦ã—ã¾ã„ã¾ã—㟠+// void car_update( Game *game, CarPtr car ); #endif diff -r b0249b856488 -r 0b65ca27f113 carNode.c --- a/carNode.c Thu May 26 18:13:40 2011 +0900 +++ b/carNode.c Thu Jun 02 14:56:11 2011 +0900 @@ -7,44 +7,44 @@ #include "carNode.h" /* --- car.c --- */ -extern void car_destroy(CarPtr car); +void car_destroy(CarPtr car); static CarPtr car_list; void carNode_append(CarPtr new) { - CarPtr p = car_list; + CarPtr p = car_list; - if (!p) { - car_list = new; - } else { - while (p->next) p = p->next; - p->next = new; - } + if (!p) { + car_list = new; + } else { + while (p->next) p = p->next; + p->next = new; + } } void carNode_draw() { - CarPtr p = car_list; + CarPtr p = car_list; - while (p) { - ps2util_obj_Draw(p->body); - p = p->next; - } + while (p) { + ps2util_obj_Draw(p->body); + p = p->next; + } } void carNode_destroy() { - CarPtr p = car_list; + CarPtr p = car_list; - while (p) { - car_destroy(p); - p = p->next; - } - car_list = NULL; + while (p) { + car_destroy(p); + p = p->next; + } + car_list = NULL; } diff -r b0249b856488 -r 0b65ca27f113 carNode.h --- a/carNode.h Thu May 26 18:13:40 2011 +0900 +++ b/carNode.h Thu Jun 02 14:56:11 2011 +0900 @@ -1,11 +1,10 @@ #ifndef CARNODE_H #define CARNODE_H - #include "car.h" /* --- car.c --- */ -extern void car_destroy(CarPtr car); +void car_destroy(CarPtr car); void carNode_append(CarPtr new) ; void carNode_draw(); diff -r b0249b856488 -r 0b65ca27f113 col.c --- a/col.c Thu May 26 18:13:40 2011 +0900 +++ b/col.c Thu Jun 02 14:56:11 2011 +0900 @@ -19,20 +19,20 @@ bool col_detect_approx(FVECTOR p, FVECTOR v0, FVECTOR v1){ - float v_r1, v_r2, r1_r2, r1_r1, r2_r2; - float a, b, r; + float v_r1, v_r2, r1_r2, r1_r1, r2_r2; + float a, b, r; - v_r1 = ps2_vu0_inner_product( p, v0 ); - v_r2 = ps2_vu0_inner_product( p, v1 ); - r1_r2 = ps2_vu0_inner_product( v0, v1 ); - r1_r1 = ps2_vu0_inner_product( v0, v0 ); - r2_r2 = ps2_vu0_inner_product( v1, v1 ); + v_r1 = ps2_vu0_inner_product( p, v0 ); + v_r2 = ps2_vu0_inner_product( p, v1 ); + r1_r2 = ps2_vu0_inner_product( v0, v1 ); + r1_r1 = ps2_vu0_inner_product( v0, v0 ); + r2_r2 = ps2_vu0_inner_product( v1, v1 ); - a = (v_r1 * r2_r2 - v_r2 * r1_r2); - b = (v_r2 * r1_r1 - v_r1 * r1_r2); - r = (r1_r1 * r2_r2 - r1_r2 * r1_r2); + a = (v_r1 * r2_r2 - v_r2 * r1_r2); + b = (v_r2 * r1_r1 - v_r1 * r1_r2); + r = (r1_r1 * r2_r2 - r1_r2 * r1_r2); - return (a>=0 && b>=0 && a+b-r<=0) ? true : false; + return (a>=0 && b>=0 && a+b-r<=0) ? true : false; } @@ -46,17 +46,17 @@ col_orthocenter(FVECTOR o, FVECTOR p, FVECTOR p0, FVECTOR normal) { - FVECTOR o0, d; + FVECTOR o0, d; - ps2_vu0_sub_vector(o0, p, p0); - o0[W_AXIS] = 0; - ps2_vu0_scale_vector( - d, normal, ps2_vu0_inner_product(o0, normal)); + ps2_vu0_sub_vector(o0, p, p0); + o0[W_AXIS] = 0; + ps2_vu0_scale_vector( + d, normal, ps2_vu0_inner_product(o0, normal)); - o[X_AXIS] = p[X_AXIS] - d[X_AXIS]; - o[Y_AXIS] = p[Y_AXIS] - d[Y_AXIS]; - o[Z_AXIS] = p[Z_AXIS] - d[Z_AXIS]; - o[W_AXIS] = 1; + o[X_AXIS] = p[X_AXIS] - d[X_AXIS]; + o[Y_AXIS] = p[Y_AXIS] - d[Y_AXIS]; + o[Z_AXIS] = p[Z_AXIS] - d[Z_AXIS]; + o[W_AXIS] = 1; } /** @@ -70,29 +70,29 @@ bool col_detect(ColFaceHd* hd, FVECTOR pose, FVECTOR p) { - FVECTOR o, o0; - int i; - ColFacePtr col_face=hd->colface; - for (i=0; ifacenum; i++) { + FVECTOR o, o0; + int i; + ColFacePtr col_face=hd->colface; + for (i=0; ifacenum; i++) { - // * 垂心oを求ã‚ã‚‹ - col_orthocenter(o, p, col_face[i].p0, col_face[i].normal); + // * 垂心oを求ã‚ã‚‹ + col_orthocenter(o, p, col_face[i].p0, col_face[i].normal); - // * detection face上ã®ã‚る点p0ã‹ã‚‰åž‚心oã¸ã®ãƒ™ã‚¯ãƒˆãƒ«o0を求ã‚ã‚‹ - ps2_vu0_sub_vector(o0, o, col_face[i].p0); + // * detection face上ã®ã‚る点p0ã‹ã‚‰åž‚心oã¸ã®ãƒ™ã‚¯ãƒˆãƒ«o0を求ã‚ã‚‹ + ps2_vu0_sub_vector(o0, o, col_face[i].p0); - // * ベクトルv0, v1ã®æã三角形ã¨o0ã¨ã§å†…外判定(range approx detection)を行ㆠ- if (col_detect_approx(o0, col_face[i].v0, col_face[i].v1)==true) { - goto NOCOLLISION; - } + // * ベクトルv0, v1ã®æã三角形ã¨o0ã¨ã§å†…外判定(range approx detection)を行ㆠ+ if (col_detect_approx(o0, col_face[i].v0, col_face[i].v1)==true) { + goto NOCOLLISION; } - return false; -NOCOLLISION: - ps2_vu0_copy_vector(p, o); - ps2_vu0_copy_vector(pose, col_face[i].normal); - return true; + } + return false; + NOCOLLISION: + ps2_vu0_copy_vector(p, o); + ps2_vu0_copy_vector(pose, col_face[i].normal); + return true; - return false; + return false; } @@ -105,34 +105,32 @@ col_init(ColFaceHd* hd, PolygonInfo* face) { - int i; - FVECTOR p1, p2; - ColFacePtr colface; + int i; + FVECTOR p1, p2; + ColFacePtr colface; - malloc_align16(&hd->free_addr, &colface, sizeof(ColFace)*face->siz/3); + malloc_align16(&hd->free_addr, &colface, sizeof(ColFace)*face->siz/3); - hd->facenum = face->siz/3; + hd->facenum = face->siz/3; - for (i=0; ifacenum; i++) { - memcpy(colface[i].p0, ((FVECTOR*)face->pnts)[i*3], sizeof(FVECTOR)); - memcpy(p1, ((FVECTOR*)face->pnts)[i*3+2], sizeof(FVECTOR)); - memcpy(p2, ((FVECTOR*)face->pnts)[i*3+1], sizeof(FVECTOR)); + for (i=0; ifacenum; i++) { + memcpy(colface[i].p0, ((FVECTOR*)face->pnts)[i*3], sizeof(FVECTOR)); + memcpy(p1, ((FVECTOR*)face->pnts)[i*3+2], sizeof(FVECTOR)); + memcpy(p2, ((FVECTOR*)face->pnts)[i*3+1], sizeof(FVECTOR)); - ps2_vu0_sub_vector(colface[i].v0, p1, colface[i].p0); - ps2_vu0_sub_vector(colface[i].v1, p2, colface[i].p0); + ps2_vu0_sub_vector(colface[i].v0, p1, colface[i].p0); + ps2_vu0_sub_vector(colface[i].v1, p2, colface[i].p0); - ps2_vu0_outer_product(colface[i].normal, colface[i].v0, colface[i].v1); - ps2_vu0_normalize(colface[i].normal, colface[i].normal); + ps2_vu0_outer_product(colface[i].normal, colface[i].v0, colface[i].v1); + ps2_vu0_normalize(colface[i].normal, colface[i].normal); - if (colface[i].normal[1] > 0) { - colface[i].normal[0] = -colface[i].normal[0]; - colface[i].normal[1] = -colface[i].normal[1]; - colface[i].normal[2] = -colface[i].normal[2]; - } + if (colface[i].normal[1] > 0) { + colface[i].normal[0] = -colface[i].normal[0]; + colface[i].normal[1] = -colface[i].normal[1]; + colface[i].normal[2] = -colface[i].normal[2]; } + } - hd->colface = colface; - + hd->colface = colface; } - diff -r b0249b856488 -r 0b65ca27f113 col.h --- a/col.h Thu May 26 18:13:40 2011 +0900 +++ b/col.h Thu Jun 02 14:56:11 2011 +0900 @@ -18,10 +18,8 @@ int facenum; } ColFaceHd; -extern void col_init(ColFaceHd* hd, PolygonInfo* face); -extern bool col_detect(ColFaceHd* hd, FVECTOR pose, FVECTOR p); - - +void col_init(ColFaceHd* hd, PolygonInfo* face); +bool col_detect(ColFaceHd* hd, FVECTOR pose, FVECTOR p); bool col_detect_approx(FVECTOR p, FVECTOR v0, FVECTOR v1); @@ -29,5 +27,3 @@ #endif -//FVECTOR p, FVECTOR v0, FVECTOR v1); - diff -r b0249b856488 -r 0b65ca27f113 compile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/compile Thu Jun 02 14:56:11 2011 +0900 @@ -0,0 +1,103 @@ +#include +#include +#include "libps2.h" +#include "ps2util.h" +#include "car.h" +#include "game.h" +#include "controler.h" +#include "camera.h" + +//大域変数ã€å„部ã§å…±æœ‰ +extern SGO_PAD pad; + +static CAMERA camera, def_camera; + + +void +camera_init() +{ + + //カメラã®åˆæœŸä½ç½®è¨­å®š + def_camera.xyz[0] = 0; + def_camera.xyz[1] =-7;// -3; + def_camera.xyz[2] =-14; //0; + def_camera.xyz[3] = 1; + + def_camera.zd[0] = 0; + def_camera.zd[1] = 2; + def_camera.zd[2] = 7; + def_camera.zd[3] = 1; + + def_camera.yd[0] = 0; + def_camera.yd[1] = 1; + def_camera.yd[2] = 0; + def_camera.yd[3] = 1; + + def_camera.angle[0]=-0.2;//0; //pich + def_camera.angle[1]=0; //yoh + def_camera.angle[2]=0; //roll + def_camera.angle[3]=0; + + //def_cameraã‚’cameraã«ã‚³ãƒ”ー + memcpy( &camera, &def_camera, sizeof(CAMERA)); + set_camera(&def_camera); + +} + +/* + ps2ä¾å­˜é–¢ä¿‚ã‹ã‚‰æ‹å€Ÿã€‚ + 自分ãŒæ¶ˆã—ãŸã®ã‹ã€å…ƒã€…ç„¡ã„ã®ã‹ã¯è¦šãˆã¦ã„ãªã„ã‘ã© + 呼ã°ã‚Œã¦ã„ã‚‹ã®ã§ã¨ã‚Šã‚ãˆãšï¼ˆç©ºã£ã½ã«ã—ã¦ãŠã)。 +*/ +// set_camera must be called if camera's parameters were moved +void set_camera(CAMERA *camera) +{ + //vu0_rot_camera_matrix(world_view, camera->xyz, camera->zd, camera->yd,camera->angle); +} + + +/** + * pose: カメラã®å¯¾è±¡ç‰©(obj)ã®åº§æ¨™è¡Œåˆ— + * カメラãŒobjã«ã¤ã„ã¦ã„ãよã†ã«(ãã®ã‚ˆã†ãªå‹•ãã«è¦‹ã›ã‚‹ãŸã‚) + * カメラã®ä½ç½®ãƒ™ã‚¯ãƒˆãƒ«ã€è¦–点ベクトルを更新 + */ +void +camera_update(Game *game, FMATRIX pose) +{ + FVECTOR location, eyes, vertical, angle; + + //int type = game->camera_type; + + ps2_vu0_apply_matrix(location, pose, def_camera.xyz); + ps2_vu0_apply_matrix(eyes, pose, def_camera.zd); + ps2_vu0_apply_matrix(vertical, pose, def_camera.yd); + + /**When the car bends, the angle of the camera is changed**/ + if(pad.left>0 && game->jiki->speed !=0){ + if(game->jiki->speed !=0){ + if(def_camera.angle[1]<=0.2){ + def_camera.angle[1]+=0.02; + } + } + else if(pad.right>0 && game->jiki->speed !=0){ + if(game->jiki->speed !=0){ + if(def_camera.angle[1]>=-0.2){ + def_camera.angle[1]-=0.02; + } + } + else { + if(def_camera.angle[1]<-0.01){ + def_camera.angle[1]+=0.02; + } + else if(def_camera.angle[1]>0.01){ + def_camera.angle[1]-=0.02; + } + } + ps2_vu0_apply_matrix(angle, pose, def_camera.angle); + ps2_vu0_copy_vector(camera.xyz, location); + ps2_vu0_copy_vector(camera.zd, eyes); + ps2_vu0_copy_vector(camera.yd, vertical); + ps2_vu0_copy_vector(camera.angle, angle); + set_camera(&camera); + + } diff -r b0249b856488 -r 0b65ca27f113 controler.c --- a/controler.c Thu May 26 18:13:40 2011 +0900 +++ b/controler.c Thu Jun 02 14:56:11 2011 +0900 @@ -1,100 +1,109 @@ +/* controler.c */ + #include "libps2.h" #include "ps2util.h" #include "controler.h" #include -//SGO_PAD pad; +#include "sjoy.h" // ps2関連ファイルã‹ã‚‰ + +// 使ã£ã¦ã„ãªã„ã£ã½ã„? ã©ã“ã§å®£è¨€ã—ã¦ã‚‹ã‹ã‚ã‹ã‚‰ãªã„ +/* #ifdef DEMO_CREATE qextern void setPadValue(int pad); #endif extern int getPadValue(); +*/ + + + +SGO_PAD pad; bool padCheck() { - /* - int pad1; - pad1 = sjoy_get_ps2_button( JOYPAD_1 ); + int pad1; + + pad1 = sjoy_get_ps2_button( JOYPAD_1 ); - if (pad1 & SJOY_PS2_START) { - pad.st += (pad.st < 2) ? 1 : 0; - } else { - pad.st = 0; - } + if (pad1 & SJOY_PS2_START) { + pad.st += (pad.st < 2) ? 1 : 0; + } else { + pad.st = 0; + } - if (pad1 & SJOY_PS2_SELECT) { - pad.se += (pad.se < 2) ? 1 : 0; - } else { - pad.se = 0; - } - if (pad1 & SJOY_PS2_LEFT) { - pad.left += (pad.left < 2) ? 1 : 0; - } else { - pad.left = 0; - } - if (pad1 & SJOY_PS2_RIGHT) { - pad.right += (pad.right < 2) ? 1 : 0; - } else { - pad.right = 0; - } - if (pad1 & SJOY_PS2_UP) { - pad.up += (pad.up < 2) ? 1 : 0; - } else { - pad.up = 0; - } - if (pad1 & SJOY_PS2_DOWN) { - pad.down += (pad.down < 2) ? 1 : 0; - } else { - pad.down = 0; - } - if (pad1 & SJOY_PS2_R1) { - pad.r1 += (pad.r1 < 2) ? 1 : 0; - } else { - pad.r1 = 0; - } - if (pad1 & SJOY_PS2_R2) { - pad.r2 += (pad.r2 < 2) ? 1 : 0; - } else { - pad.r2 = 0; - } - if (pad1 & SJOY_PS2_L1) { - pad.l1 += (pad.l1 < 2) ? 1 : 0; - } else { - pad.l1 = 0; - } - if (pad1 & SJOY_PS2_L2) { - pad.l2 += (pad.l2 < 2) ? 1 : 0; - } else { - pad.l2 = 0; - } - if (pad1 & SJOY_PS2_CROSS) { - pad.cross += (pad.cross < 2) ? 1 : 0; - } else { - pad.cross = 0; - } - if (pad1 & SJOY_PS2_CIRCLE) { - pad.circle += (pad.circle < 2) ? 1 : 0; - } else { - pad.circle = 0; - } - if (pad1 & SJOY_PS2_TRIANGLE) { - pad.triangle += (pad.triangle < 2) ? 1 : 0; - } else { - pad.triangle = 0; - } - if (pad1 & SJOY_PS2_SQUARE) { - pad.square += (pad.square < 2) ? 1 : 0; - } else { - pad.square = 0; - } + if (pad1 & SJOY_PS2_SELECT) { + pad.se += (pad.se < 2) ? 1 : 0; + } else { + pad.se = 0; + } + if (pad1 & SJOY_PS2_LEFT) { + pad.left += (pad.left < 2) ? 1 : 0; + } else { + pad.left = 0; + } + if (pad1 & SJOY_PS2_RIGHT) { + pad.right += (pad.right < 2) ? 1 : 0; + } else { + pad.right = 0; + } + if (pad1 & SJOY_PS2_UP) { + pad.up += (pad.up < 2) ? 1 : 0; + } else { + pad.up = 0; + } + if (pad1 & SJOY_PS2_DOWN) { + pad.down += (pad.down < 2) ? 1 : 0; + } else { + pad.down = 0; + } + if (pad1 & SJOY_PS2_R1) { + pad.r1 += (pad.r1 < 2) ? 1 : 0; + } else { + pad.r1 = 0; + } + if (pad1 & SJOY_PS2_R2) { + pad.r2 += (pad.r2 < 2) ? 1 : 0; + } else { + pad.r2 = 0; + } + if (pad1 & SJOY_PS2_L1) { + pad.l1 += (pad.l1 < 2) ? 1 : 0; + } else { + pad.l1 = 0; + } + if (pad1 & SJOY_PS2_L2) { + pad.l2 += (pad.l2 < 2) ? 1 : 0; + } else { + pad.l2 = 0; + } + if (pad1 & SJOY_PS2_CROSS) { + pad.cross += (pad.cross < 2) ? 1 : 0; + } else { + pad.cross = 0; + } + if (pad1 & SJOY_PS2_CIRCLE) { + pad.circle += (pad.circle < 2) ? 1 : 0; + } else { + pad.circle = 0; + } + if (pad1 & SJOY_PS2_TRIANGLE) { + pad.triangle += (pad.triangle < 2) ? 1 : 0; + } else { + pad.triangle = 0; + } + if (pad1 & SJOY_PS2_SQUARE) { + pad.square += (pad.square < 2) ? 1 : 0; + } else { + pad.square = 0; + } - if ( (pad1 & SJOY_PS2_SELECT) && (pad1 & SJOY_PS2_START) && - (pad1 & SJOY_PS2_L1) && (pad1 & SJOY_PS2_R1) && - (pad1 & SJOY_PS2_L2) && (pad1 & SJOY_PS2_R2)) { - return FALSE; - } - */ + if ( (pad1 & SJOY_PS2_SELECT) && (pad1 & SJOY_PS2_START) && + (pad1 & SJOY_PS2_L1) && (pad1 & SJOY_PS2_R1) && + (pad1 & SJOY_PS2_L2) && (pad1 & SJOY_PS2_R2)) { + return false; + } - return true; + return true; } diff -r b0249b856488 -r 0b65ca27f113 controler.h --- a/controler.h Thu May 26 18:13:40 2011 +0900 +++ b/controler.h Thu Jun 02 14:56:11 2011 +0900 @@ -4,6 +4,8 @@ * 1: 1回押ã—㟠* 2: 押ã—続ã‘ã¦ã„ã‚‹ */ + + typedef struct SGO_PAD { short st; short se; @@ -21,5 +23,6 @@ short square; } SGO_PAD; -extern SGO_PAD pad; +//extern SGO_PAD pad; +bool padCheck( void ); diff -r b0249b856488 -r 0b65ca27f113 field.c --- a/field.c Thu May 26 18:13:40 2011 +0900 +++ b/field.c Thu Jun 02 14:56:11 2011 +0900 @@ -21,49 +21,59 @@ static FieldPtr field_list; static FieldPtr field_actual; +// é©å½“ã«è‡ªä½œ:miya +PolygonInfo xml_read_file(char *colImg) +{ + PolygonInfo test; + printf("xml_read_file"); + + return test; +} + + static FieldPtr field_create(char *fieldImg, char *colImg, TEXTURE *tex) { - FieldPtr self; - OBJECT *obj; - PolygonInfo *xml; - void *free_addr; + FieldPtr self; + OBJECT *obj; + PolygonInfo *xml; + void *free_addr; - FVECTOR location = {0, 0, 0, 1}; - FVECTOR direction = {0, 0, 0, 1}; + FVECTOR location = {0, 0, 0, 1}; + FVECTOR direction = {0, 0, 0, 1}; - // obj = ps2util_obj_Create_fromXML(fieldImg); - memcpy(obj->xyz, location, sizeof(FVECTOR)); - memcpy(obj->angle, direction, sizeof(FVECTOR)); - ps2util_obj_Renew_transMatrix(obj); - ps2util_obj_Set_effect(obj, DEFAULT_SET); - ps2util_obj_Set_texture(obj, tex); + obj = ps2util_obj_Create_fromXML(fieldImg); + memcpy(obj->xyz, location, sizeof(FVECTOR)); + memcpy(obj->angle, direction, sizeof(FVECTOR)); + ps2util_obj_Renew_transMatrix(obj); + ps2util_obj_Set_effect(obj, DEFAULT_SET); + ps2util_obj_Set_texture(obj, tex); - // xml = xml_read_file(colImg); //ã“ã“ã§ã‚³ãƒ¼ã‚¹ã®èµ°ã‚Œã‚‹å ´æ‰€(当ãŸã‚Šåˆ¤å®š) + // xml = xml_read_file(colImg); //ã“ã“ã§ã‚³ãƒ¼ã‚¹ã®èµ°ã‚Œã‚‹å ´æ‰€(当ãŸã‚Šåˆ¤å®š) - if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1) { - fprintf(stderr, "field.c: malloc_align16 error\n"); - fflush(stderr); - exit(EXIT_FAILURE); - } - self->object = obj; - self->next = NULL; - self->prev = NULL; - self->free_addr = free_addr; + if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1) { + fprintf(stderr, "field.c: malloc_align16 error\n"); + fflush(stderr); + exit(EXIT_FAILURE); + } + self->object = obj; + self->next = NULL; + self->prev = NULL; + self->free_addr = free_addr; #ifdef DEBUG - fprintf(main_fp, "malloc fieldNode addr = %x(free), %x(obj)\n", (int)free_addr, (int)self); + fprintf(main_fp, "malloc fieldNode addr = %x(free), %x(obj)\n", (int)free_addr, (int)self); #endif - col_init(&self->colface, xml); + col_init(&self->colface, xml); #ifdef DEBUG - fprintf(main_fp, " facenum = %d\n", self->colface.facenum); - fprintf(main_fp, " facenum = %x(free), ", (int)self->colface.free_addr); - fprintf(main_fp, "facenum = %x(obj)\n", (int)self->colface.colface); + fprintf(main_fp, " facenum = %d\n", self->colface.facenum); + fprintf(main_fp, " facenum = %x(free), ", (int)self->colface.free_addr); + fprintf(main_fp, "facenum = %x(obj)\n", (int)self->colface.colface); #endif - //xml_free(xml); + //xml_free(xml); - return self; + return self; } @@ -71,62 +81,62 @@ static void field_new_readCSV(FILE *fp, int id) { - FieldPtr fieldHead = NULL; - FieldPtr newField = NULL; - FieldPtr prevField = NULL; - char buff[BUFSIZE], *bufp; - char fieldImg[BUFSIZE], colImg[BUFSIZE], texname[BUFSIZE]; - TEXTURE *tex = NULL; - int course_id; - bool flag = false; + FieldPtr fieldHead = NULL; + FieldPtr newField = NULL; + FieldPtr prevField = NULL; + char buff[BUFSIZE], *bufp; + char fieldImg[BUFSIZE], colImg[BUFSIZE], texname[BUFSIZE]; + TEXTURE *tex = NULL; + int course_id; + bool flag = false; - while ((bufp = fgets(buff, BUFSIZE, fp)) != NULL) { - bufp++; + while ((bufp = fgets(buff, BUFSIZE, fp)) != NULL) { + bufp++; - switch (buff[0]) { - case 'n': // コースIDã®èª­ã¿å–ã‚Š - if (!flag) { - sscanf(bufp, " %d\n", &course_id); - if (id == course_id) { - flag = true; - } - } else { - goto FINISH_LOAD; - } - break; - case 't': // テクスãƒãƒ£ã®ãƒ­ãƒ¼ãƒ‰ - if (flag) { - sscanf(bufp, " %s\n", texname); - //tex = read_png_file(texname); - ps2util_tex_Set(tex); - } - break; - case 'c': // コースã®ãƒ­ãƒ¼ãƒ‰ - if (flag) { - sscanf(bufp, " %s %s\n", fieldImg, colImg); - newField = field_create(fieldImg, colImg, tex); - if (!fieldHead) { - fieldHead = prevField = newField; - } else { - prevField->next = newField; - newField->prev = prevField; - prevField = newField; - } - newField->init = fieldHead; - field_num_max++; - } - break; - default: - break; + switch (buff[0]) { + case 'n': // コースIDã®èª­ã¿å–ã‚Š + if (!flag) { + sscanf(bufp, " %d\n", &course_id); + if (id == course_id) { + flag = true; } + } else { + goto FINISH_LOAD; + } + break; + case 't': // テクスãƒãƒ£ã®ãƒ­ãƒ¼ãƒ‰ + if (flag) { + sscanf(bufp, " %s\n", texname); + //tex = read_png_file(texname); + ps2util_tex_Set(tex); + } + break; + case 'c': // コースã®ãƒ­ãƒ¼ãƒ‰ + if (flag) { + sscanf(bufp, " %s %s\n", fieldImg, colImg); + newField = field_create(fieldImg, colImg, tex); + if (!fieldHead) { + fieldHead = prevField = newField; + } else { + prevField->next = newField; + newField->prev = prevField; + prevField = newField; + } + newField->init = fieldHead; + field_num_max++; + } + break; + default: + break; } + } FINISH_LOAD: - // 先頭ã¨æœ€å¾Œå°¾ã®ãƒªãƒ³ã‚¯ã‚’張る - newField->next = newField->init; - newField->init->prev = newField; + // 先頭ã¨æœ€å¾Œå°¾ã®ãƒªãƒ³ã‚¯ã‚’張る + newField->next = newField->init; + newField->init->prev = newField; - field_list = field_actual = fieldHead; + field_list = field_actual = fieldHead; } @@ -155,76 +165,75 @@ static void field_draw(FieldPtr p) { - ps2_vu0_unit_matrix(p->object->transfer); + ps2_vu0_unit_matrix(p->object->transfer); - p->object->transfer[3][0] = p->location[0]; - p->object->transfer[3][1] = p->location[1]; - p->object->transfer[3][2] = p->location[2]; - p->object->transfer[3][3] = p->location[3]; - ps2util_obj_Draw(p->object); + p->object->transfer[3][0] = p->location[0]; + p->object->transfer[3][1] = p->location[1]; + p->object->transfer[3][2] = p->location[2]; + p->object->transfer[3][3] = p->location[3]; + ps2util_obj_Draw(p->object); } -void -field_update(CarPtr car) +void field_update(CarPtr car) { - FieldPtr p; + FieldPtr p; - p = field_actual; - // current + p = field_actual; + // current + p->location[0] = -car->location[0]; + p->location[1] = -car->location[1]; + p->location[2] = -car->location[2]; + p->location[3] = 1; + field_draw(p); + + // next + p = field_actual->next; + if (p) { p->location[0] = -car->location[0]; p->location[1] = -car->location[1]; p->location[2] = -car->location[2]; p->location[3] = 1; field_draw(p); + } - // next - p = field_actual->next; - if (p) { - p->location[0] = -car->location[0]; - p->location[1] = -car->location[1]; - p->location[2] = -car->location[2]; - p->location[3] = 1; - field_draw(p); - } - - // prev - p = field_actual->prev; - if (p) { - p->location[0] = -car->location[0]; - p->location[1] = -car->location[1]; - p->location[2] = -car->location[2]; - p->location[3] = 1; - field_draw(p); - } + // prev + p = field_actual->prev; + if (p) { + p->location[0] = -car->location[0]; + p->location[1] = -car->location[1]; + p->location[2] = -car->location[2]; + p->location[3] = 1; + field_draw(p); + } } void field_destroy() { - FieldPtr p = field_list; - FieldPtr d; - TEXTURE *t; + FieldPtr p = field_list; + FieldPtr d; + TEXTURE *t; - p->prev->next = NULL; + p->prev->next = NULL; - t = p->object->surfaces->texture; - ps2util_tex_Exclude(t); - free_texture(t); + t = p->object->surfaces->texture; + ps2util_tex_Exclude(t); + free_texture(t); - while (p) { - d = p; - p = p->next; - ps2util_obj_Free(d->object); - free(d->colface.free_addr); - free(d->free_addr); + while (p) { + d = p; + p = p->next; + ps2util_obj_Free(d->object); + free(d->colface.free_addr); + free(d->free_addr); #ifdef DEBUG - fprintf(main_fp, "free fieldNode addr = %x\n", (int)d->free_addr); + fprintf(main_fp, "free fieldNode addr = %x\n", (int)d->free_addr); #endif - } + } - field_num_max = 0; - field_num = 1; + field_num_max = 0; + field_num = 1; } /* @@ -232,24 +241,24 @@ */ int field_rap_increment(int n) -{ - field_num += n; - if (field_num > field_num_max) { - field_num = 1; - return 1; - } else { - return 0; - } +{ + field_num += n; + if (field_num > field_num_max) { + field_num = 1; + return 1; + } else { + return 0; + } } void field_set_actual(FieldPtr p) { - field_actual = p; + field_actual = p; } FieldPtr field_get_actual() { - return field_actual; + return field_actual; } diff -r b0249b856488 -r 0b65ca27f113 field.h --- a/field.h Thu May 26 18:13:40 2011 +0900 +++ b/field.h Thu Jun 02 14:56:11 2011 +0900 @@ -3,6 +3,7 @@ #include "col.h" +#include "car.h" // field_update用 /* ãŸã¶ã‚“ã€ps2ã§ã€ @@ -25,7 +26,14 @@ ColFaceHd colface; } Field, *FieldPtr; -extern void field_init(int id); -extern void field_destroy(); #endif + +void field_init(int id); +void field_destroy(); + +void field_update(CarPtr car); + +int field_rap_increment(int); +void field_set_actual(FieldPtr); +FieldPtr field_get_actual(); diff -r b0249b856488 -r 0b65ca27f113 gFont.c --- a/gFont.c Thu May 26 18:13:40 2011 +0900 +++ b/gFont.c Thu Jun 02 14:56:11 2011 +0900 @@ -8,8 +8,8 @@ #include #include #include -//#include "libps2.h" -//#include "ps2util.h" +#include "libps2.h" +#include "ps2util.h" #include "gSprite.h" #define DEFOBJ 120 @@ -20,88 +20,92 @@ #define CHAR_H_SIZE 34 static SpriteTable sptable[DEFOBJ]; -//static ps2utilSprite sp[DEFOBJ*2]; // 表示スプライト用スタック +static ps2utilSprite sp[DEFOBJ*2]; // 表示スプライト用スタック static unsigned int sp_counter; static bool flag_spriteInited = false; // スプライトロードフラグ -//static TEXTURE *font_tex; +static TEXTURE *font_tex; static void gFont_Init_Png(char *texname) { - /* if (!(font_tex = read_png_file(texname))) { - fprintf(stderr, - "cannot creat texture - gFont_Init_Png().\n"); - fflush(stderr); - exit(EXIT_FAILURE); - }*/ + if (!(font_tex = read_png_file(texname))) { + fprintf(stderr, + "cannot creat texture - gFont_Init_Png().\n"); + fflush(stderr); + exit(EXIT_FAILURE); + } - /* if (ps2util_tex_Set(font_tex) == -1) { - fprintf(stderr, - "cannot set texture - gFont_Init_Png().\n"); - fflush(stderr); - exit(EXIT_FAILURE); - }*/ + if (ps2util_tex_Set(font_tex) == -1) { + fprintf(stderr, + "cannot set texture - gFont_Init_Png().\n"); + fflush(stderr); + exit(EXIT_FAILURE); + } } static void gFont_Create() { - int i; + int i; + for (i=0; i #include #include -//#include "libps2.h" -//#include "ps2util.h" -//#include "controler.h" +#include "libps2.h" +#include "ps2util.h" +#include "controler.h" //#include "linda/lindaapi.h" +#include "game.h" #include "car.h" -#include "game.h" + #include "schedule.h" -/* controler.c */ -//extern Bool padCheck(); + /* linda.c */ #ifdef LINDA //extern int linda_init(); @@ -18,28 +20,26 @@ #define linda_init 1 #endif -void -game_main() +void game_main() { - - Game *game; - bool flg = true; + Game *game; + bool flg = true; #ifdef LINDA - game->play_id = linda_init(); + game->play_id = linda_init(); #endif - - while (1) { - flg = true;//padCheck(); - if (flg == false) { - break; - } - schedule(game); - + + while (1) { + flg = padCheck(); + + if (flg == false) { + break; + } + schedule(game); + #ifdef LINDA - psx_sync_n(); + psx_sync_n(); #endif - } + } } - //ceriumã®mainルーãƒãƒ³ã«ç›´ã™ã€‚ diff -r b0249b856488 -r 0b65ca27f113 game.h --- a/game.h Thu May 26 18:13:40 2011 +0900 +++ b/game.h Thu Jun 02 14:56:11 2011 +0900 @@ -1,15 +1,15 @@ +/* game.h */ + #ifndef GAME_H #define GAME_H #include "car.h" #include "linda/lindaapi.h" -extern void game_main(); -extern void schedule(); -extern int linda_init(); -extern void psx_sync_n(); +void game_main(); - +int linda_init(); +void psx_sync_n(); typedef struct game { CarPtr jiki; @@ -24,3 +24,6 @@ extern Game *game; #endif + +// car.hã«æ›¸ãã¨ã€game.hã¨ãŠäº’ã„ã«includeã—ã¦ã—ã¾ã† +void car_id_update(Game *game, CarPtr jiki); diff -r b0249b856488 -r 0b65ca27f113 game_time.c --- a/game_time.c Thu May 26 18:13:40 2011 +0900 +++ b/game_time.c Thu Jun 02 14:56:11 2011 +0900 @@ -55,17 +55,17 @@ **/ void game_time_set_raptime (char *s,int msec) { - char chminute[3]; - char chsec[2]; - char chcsec[2]; - char raptime[10]; - int minute = game_time_conv_ms2minute (msec); - int sec = game_time_conv_ms2sec (msec); - int csec = game_time_conv_ms2cs (msec); - int i; + char chminute[3]; + char chsec[2]; + char chcsec[2]; + char raptime[10]; + int minute = game_time_conv_ms2minute (msec); + int sec = game_time_conv_ms2sec (msec); + int csec = game_time_conv_ms2cs (msec); + int i; - if (minute < 10 ){ + if (minute < 10 ){ chminute[0] = ' '; chminute[1] = '0'; chminute[2] = minute + 48; @@ -78,7 +78,7 @@ chminute[1] = (minute / 10) + 48; chminute[2] = (minute % 10) + 48; } - if (sec < 10 ){ + if (sec < 10 ){ chsec[0] = '0'; chsec[1] = sec + 48; } else { @@ -86,7 +86,7 @@ chsec[1] = (sec % 10) + 48; } - if (csec < 10 ){ + if (csec < 10 ){ chcsec[0] = '0'; chcsec[1] = csec + 48; } else { diff -r b0249b856488 -r 0b65ca27f113 game_time.h --- a/game_time.h Thu May 26 18:13:40 2011 +0900 +++ b/game_time.h Thu Jun 02 14:56:11 2011 +0900 @@ -1,10 +1,9 @@ #include #include -extern int game_time_get_msec(); -extern int game_time_conv_ms2cs(int); -extern int game_time_conv_ms2sec(int); -extern int game_time_conv_ms2minute(int); -extern void game_time_set_raptime(char *,int); - +int game_time_get_msec(); +int game_time_conv_ms2cs(int); +int game_time_conv_ms2sec(int); +int game_time_conv_ms2minute(int); +void game_time_set_raptime(char *,int); diff -r b0249b856488 -r 0b65ca27f113 libps2.h --- a/libps2.h Thu May 26 18:13:40 2011 +0900 +++ b/libps2.h Thu Jun 02 14:56:11 2011 +0900 @@ -1,3 +1,4 @@ + #ifndef LIBPS2_H #define LIBPS2_H @@ -42,10 +43,31 @@ SURFACE *surfaces; } OBJECT; +// sprite.hã‹ã‚‰ +typedef struct { + //__u64 rgbaq; + // __u64 rgbaq_addr; + // __u64 st; + // __u64 st_addr; + // __u64 xyz; + // __u64 xyz_addr; + + int xyz_addr; + +} GsPrim; + +typedef struct { + //ps2_giftag giftag; + //__u64 prim; + //__u64 prim_addr; + GsPrim primData[4]; + + int x; +} GsSpritePacket; //ps2 ä¾å­˜é–¢ä¿‚内㮠libps2.h ã‹ã‚‰ã‚‚ã£ã¦ã㟠typedef struct { - //GsSpritePacket* gs_packet; + GsSpritePacket* gs_packet; unsigned char r, g, b, a; unsigned short cx, cy; unsigned short x, y, w, h; diff -r b0249b856488 -r 0b65ca27f113 light.c --- a/light.c Thu May 26 18:13:40 2011 +0900 +++ b/light.c Thu Jun 02 14:56:11 2011 +0900 @@ -1,12 +1,16 @@ +/* light.c */ + #include -//#include "libps2.h" -//#include "light.h" +#include "libps2.h" +#include "light.h" -//FMATRIX normal_light; -//FMATRIX light_color; +#include "sjoy.h" // ps2関連ファイルã‹ã‚‰ -/* -void light_init(LIGHT *l) +FMATRIX normal_light; +FMATRIX light_color; + + +void init_light(LIGHT *l) { //Three lights in all. // The color of the light of "light0" is color0. @@ -51,12 +55,23 @@ l->ambient[3] = 1.0; } -*/ + +// 自作:miya +void ps2_vu0_normal_light_matrix(FMATRIX light_color, FVECTOR l0, FVECTOR l1, FVECTOR l2) +{ + char *miyahira; + miyahira = "ã“ã®é–¢æ•°ãªã«ï¼Ÿ"; +} - /* -void light_set(LIGHT *l) +// 自作:miya +void ps2_vu0_light_color_matrix( FMATRIX light_color, FVECTOR c0, FVECTOR c1, FVECTOR c2, FVECTOR a) +{ + char *miyahira; + miyahira = "test"; +} + +void set_light(LIGHT *l) { ps2_vu0_normal_light_matrix(normal_light, l->light0, l->light1, l->light2); ps2_vu0_light_color_matrix(light_color, l->color0, l->color1, l->color2, l->ambient); } - */ diff -r b0249b856488 -r 0b65ca27f113 light.h --- a/light.h Thu May 26 18:13:40 2011 +0900 +++ b/light.h Thu Jun 02 14:56:11 2011 +0900 @@ -1,2 +1,15 @@ -//extern void light_init(LIGHT *l); -//extern void light_set(LIGHT *l); +/* light.h */ + +typedef struct { + FVECTOR light0; + FVECTOR light1; + FVECTOR light2; + FVECTOR color0; + FVECTOR color1; + FVECTOR color2; + FVECTOR ambient; +} LIGHT; + +// functions +void init_light(LIGHT *l); +void set_light(LIGHT *l); diff -r b0249b856488 -r 0b65ca27f113 linda.c --- a/linda.c Thu May 26 18:13:40 2011 +0900 +++ b/linda.c Thu Jun 02 14:56:11 2011 +0900 @@ -71,437 +71,437 @@ send_packet(unsigned int dest, unsigned int mode, unsigned int car, unsigned int course, char *data) { - char *pkt; - char *reply; - int len = PKT_HEADER_SIZE; + char *pkt; + char *reply; + int len = PKT_HEADER_SIZE; - if (data) len += sizeof(FMATRIX); + if (data) len += sizeof(FMATRIX); - reply = psx_reply(linda_seq[dest]); + reply = psx_reply(linda_seq[dest]); - if (linda_seq[dest] == 0) { - pkt = make_packet(mode, car, course, data); - psx_out(dest, pkt, len); - free(pkt); - } else if (reply = psx_reply(linda_seq[dest])) { - pkt = make_packet(mode, car, course, data); - psx_out(dest, pkt, len); - free(pkt); - psx_free(reply); - } + if (linda_seq[dest] == 0) { + pkt = make_packet(mode, car, course, data); + psx_out(dest, pkt, len); + free(pkt); + } else if (reply = psx_reply(linda_seq[dest])) { + pkt = make_packet(mode, car, course, data); + psx_out(dest, pkt, len); + free(pkt); + psx_free(reply); + } - pkt = make_packet(mode, car, course, data); - //psx_out(dest, pkt, len); - free(pkt); + pkt = make_packet(mode, car, course, data); + psx_out(dest, pkt, len); + free(pkt); } static void get_packet(int id, int *flg, int *mode, int *car, int *course, char *data) { - char *reply = NULL; - char *pkt = NULL; + char *reply = NULL; + char *pkt = NULL; - reply = psx_reply(linda_seq[id]); - if (reply) { - pkt = reply+LINDA_HEADER_SIZE; + reply = psx_reply(linda_seq[id]); + if (reply) { + pkt = reply+LINDA_HEADER_SIZE; - if (flg) *flg = 1; - if (mode) *mode = get_header(pkt, PKT_MODE_OFFSET); - if (car) *car = get_header(pkt, PKT_CARID_OFFSET); - if (course) *course = get_header(pkt, PKT_COURSEID_OFFSET); - if (data) memcpy(data, pkt+PKT_DATA_OFFSET, sizeof(FMATRIX)); - psx_free(reply); - linda_seq[id] = psx_rd(id); - } + if (flg) *flg = 1; + if (mode) *mode = get_header(pkt, PKT_MODE_OFFSET); + if (car) *car = get_header(pkt, PKT_CARID_OFFSET); + if (course) *course = get_header(pkt, PKT_COURSEID_OFFSET); + if (data) memcpy(data, pkt+PKT_DATA_OFFSET, sizeof(FMATRIX)); + psx_free(reply); + linda_seq[id] = psx_rd(id); + } } static void linda_set_schedule(void *func, int mode, Game *game) { - int id = game->play_id; + int id = game->play_id; - linda_seq[id] = psx_in(id); - sche_func = func; - send_packet(id, mode, game->car_id, game->course_id, NULL); + linda_seq[id] = psx_in(id); + sche_func = func; + send_packet(id, mode, game->car_id, game->course_id, NULL); } static bool linda_sche_wait0(int p, Game *game) { - int i, flg=0; - int mode = 0; - int id = game->play_id; - int connect = 1; // 接続済ã¿ãƒ¦ãƒ¼ã‚¶æ•° + int i, flg=0; + int mode = 0; + int id = game->play_id; + int connect = 1; // 接続済ã¿ãƒ¦ãƒ¼ã‚¶æ•° - for (i=1; i<=CLIENT_MAX; i++) { - if (i == id) continue; - get_packet(i, &flg, &mode, NULL, NULL, NULL); - if (flg == 1 && mode == MODE_WAIT) { - connect++; - flg = 0; - } + for (i=1; i<=CLIENT_MAX; i++) { + if (i == id) continue; + get_packet(i, &flg, &mode, NULL, NULL, NULL); + if (flg == 1 && mode == MODE_WAIT) { + connect++; + flg = 0; } + } - if (p == 1 && connect == CLIENT_MAX) { - linda_set_schedule(linda_sche_wait_ready0, MODE_WAIT_READY,game); - return true; - } else { - return false; - } + if (p == 1 && connect == CLIENT_MAX) { + linda_set_schedule(linda_sche_wait_ready0, MODE_WAIT_READY,game); + return true; + } else { + return false; + } } static bool linda_sche_wait1(int p, Game *game) { - int mode; + int mode; - get_packet(PLAYER_1P, NULL, &mode, NULL, NULL, NULL); + get_packet(PLAYER_1P, NULL, &mode, NULL, NULL, NULL); - if (mode == MODE_WAIT_READY) { - linda_set_schedule(linda_sche_wait_ready1, MODE_WAIT_READY, game); - return true; - } else { - return false; - } + if (mode == MODE_WAIT_READY) { + linda_set_schedule(linda_sche_wait_ready1, MODE_WAIT_READY, game); + return true; + } else { + return false; + } } static bool linda_sche_wait_ready0(int p, Game *game) { - int i, flg, mode; - int id = game->play_id; - int connect = 1; + int i, flg, mode; + int id = game->play_id; + int connect = 1; - for (i=1; i<=CLIENT_MAX; i++) { - if (i == id) continue; - get_packet(i, &flg, &mode, NULL, NULL, NULL); - if (i == id) { - flg = 0; - continue; - } - if (flg == 1 && mode == MODE_WAIT_READY) { - connect++; - flg = 0; - } + for (i=1; i<=CLIENT_MAX; i++) { + if (i == id) continue; + get_packet(i, &flg, &mode, NULL, NULL, NULL); + if (i == id) { + flg = 0; + continue; } + if (flg == 1 && mode == MODE_WAIT_READY) { + connect++; + flg = 0; + } + } - if (p == 1 && connect == CLIENT_MAX) { - linda_set_schedule(linda_sche_opening0, MODE_OPENING,game); - return true; - } else { - return false; - } + if (p == 1 && connect == CLIENT_MAX) { + linda_set_schedule(linda_sche_opening0, MODE_OPENING,game); + return true; + } else { + return false; + } } static bool linda_sche_wait_ready1(int p, Game *game) { - int mode; + int mode; - get_packet(PLAYER_1P, NULL, &mode, NULL, NULL, NULL); + get_packet(PLAYER_1P, NULL, &mode, NULL, NULL, NULL); - if (mode == MODE_OPENING) { - linda_set_schedule(linda_sche_opening1, MODE_OPENING,game); - return true; - } else { - return false; - } + if (mode == MODE_OPENING) { + linda_set_schedule(linda_sche_opening1, MODE_OPENING,game); + return true; + } else { + return false; + } } static bool linda_sche_opening0(int p, Game *game) { - int i, flg, mode; - int id = game->play_id; - int connect = 1; + int i, flg, mode; + int id = game->play_id; + int connect = 1; - for (i=1; i<=CLIENT_MAX; i++) { - if (i == id) continue; - get_packet(i, &flg, &mode, NULL, NULL, NULL); - if (flg == 1 && mode == MODE_OPENING) { - connect++; - flg = 0; - } + for (i=1; i<=CLIENT_MAX; i++) { + if (i == id) continue; + get_packet(i, &flg, &mode, NULL, NULL, NULL); + if (flg == 1 && mode == MODE_OPENING) { + connect++; + flg = 0; } + } - if (p == 1 && connect == CLIENT_MAX) { - linda_set_schedule(linda_sche_select_car0, MODE_SELECT_CAR, game); - return true; - } else { - return false; - } + if (p == 1 && connect == CLIENT_MAX) { + linda_set_schedule(linda_sche_select_car0, MODE_SELECT_CAR, game); + return true; + } else { + return false; + } } static bool linda_sche_opening1(int p, Game *game) { - int mode; + int mode; - get_packet(PLAYER_1P, NULL, &mode, NULL, NULL, NULL); + get_packet(PLAYER_1P, NULL, &mode, NULL, NULL, NULL); - if (mode == MODE_SELECT_CAR) { - linda_set_schedule(linda_sche_select_car1, MODE_SELECT_CAR, game); - return true; - } else { - return false; - } + if (mode == MODE_SELECT_CAR) { + linda_set_schedule(linda_sche_select_car1, MODE_SELECT_CAR, game); + return true; + } else { + return false; + } } static bool linda_sche_select_car0(int p, Game *game) { - int i, flg, mode; - int id = game->play_id; - int connect = 1; + int i, flg, mode; + int id = game->play_id; + int connect = 1; - for (i=1; i<=CLIENT_MAX; i++) { - if (i == id) continue; - get_packet(i, &flg, &mode, NULL, NULL, NULL); - if (flg == 1 && mode == MODE_SELECT_CAR) { - connect++; - flg = 0; - } + for (i=1; i<=CLIENT_MAX; i++) { + if (i == id) continue; + get_packet(i, &flg, &mode, NULL, NULL, NULL); + if (flg == 1 && mode == MODE_SELECT_CAR) { + connect++; + flg = 0; } + } - if (p == 1 && connect == CLIENT_MAX) { - linda_set_schedule(linda_sche_select_course0, MODE_SELECT_COURSE, game); - return true; - } else { - return false; - } + if (p == 1 && connect == CLIENT_MAX) { + linda_set_schedule(linda_sche_select_course0, MODE_SELECT_COURSE, game); + return true; + } else { + return false; + } } static bool linda_sche_select_car1(int p, Game *game) { - int mode; + int mode; - get_packet(PLAYER_1P, NULL, &mode, NULL, NULL, NULL); + get_packet(PLAYER_1P, NULL, &mode, NULL, NULL, NULL); - if (mode == MODE_SELECT_COURSE) { - linda_set_schedule(linda_sche_select_course1, MODE_SELECT_COURSE, game); - return true; - } else { - return false; - } + if (mode == MODE_SELECT_COURSE) { + linda_set_schedule(linda_sche_select_course1, MODE_SELECT_COURSE, game); + return true; + } else { + return false; + } } static bool linda_sche_select_course0(int p, Game *game) { - int i; - int flg, mode; - int connect = 1; - int id = game->play_id; - static int course_id = 1; + int i; + int flg, mode; + int connect = 1; + int id = game->play_id; + static int course_id = 1; - if (course_id != game->course_id) { - course_id = game->course_id; - linda_seq[id] = psx_in(id); - send_packet(id, MODE_SELECT_COURSE, 0, course_id, NULL); - return false; + if (course_id != game->course_id) { + course_id = game->course_id; + linda_seq[id] = psx_in(id); + send_packet(id, MODE_SELECT_COURSE, 0, course_id, NULL); + return false; + } + + for (i=1; i<=CLIENT_MAX; i++) { + if (i == id) continue; + get_packet(i, &flg, &mode, NULL, NULL, NULL); + if (flg == 1 && mode == MODE_SELECT_COURSE) { + connect++; + flg = 0; } - for (i=1; i<=CLIENT_MAX; i++) { - if (i == id) continue; - get_packet(i, &flg, &mode, NULL, NULL, NULL); - if (flg == 1 && mode == MODE_SELECT_COURSE) { - connect++; - flg = 0; - } + } - } - - if (p == 1 && connect == CLIENT_MAX) { - linda_set_schedule(linda_sche_ready0, MODE_READY, game); - return true; - } else { - return false; - } + if (p == 1 && connect == CLIENT_MAX) { + linda_set_schedule(linda_sche_ready0, MODE_READY, game); + return true; + } else { + return false; + } } static bool linda_sche_select_course1(int p, Game *game) { - int mode, course_id; + int mode, course_id; - get_packet(PLAYER_1P, NULL, &mode, NULL, &course_id, NULL); + get_packet(PLAYER_1P, NULL, &mode, NULL, &course_id, NULL); - if (mode == MODE_SELECT_COURSE) { - game->course_id = course_id; - return false; - } else if (mode == MODE_READY) { - linda_set_schedule(linda_sche_ready1, MODE_READY, game); - return true; - } else { - return false; - } + if (mode == MODE_SELECT_COURSE) { + game->course_id = course_id; + return false; + } else if (mode == MODE_READY) { + linda_set_schedule(linda_sche_ready1, MODE_READY, game); + return true; + } else { + return false; + } } static bool linda_sche_ready0(int p, Game *game) { - int i, flg, mode; - int id = game->play_id; - int connect = 1; + int i, flg, mode; + int id = game->play_id; + int connect = 1; - for (i=1; i<=CLIENT_MAX; i++) { - if (i == id) continue; - get_packet(i, &flg, &mode, NULL, NULL, NULL); - if (flg == 1 && mode == MODE_READY) { - connect++; - flg = 0; - } + for (i=1; i<=CLIENT_MAX; i++) { + if (i == id) continue; + get_packet(i, &flg, &mode, NULL, NULL, NULL); + if (flg == 1 && mode == MODE_READY) { + connect++; + flg = 0; } + } - if (p == 1 && connect == CLIENT_MAX) { - linda_set_schedule(linda_sche_main_init, MODE_MAIN_INIT, game); - return true; - } else { - return false; - } + if (p == 1 && connect == CLIENT_MAX) { + linda_set_schedule(linda_sche_main_init, MODE_MAIN_INIT, game); + return true; + } else { + return false; + } } static bool linda_sche_ready1(int p, Game *game) { - int mode; + int mode; - get_packet(PLAYER_1P, NULL, &mode, NULL, NULL, NULL); + get_packet(PLAYER_1P, NULL, &mode, NULL, NULL, NULL); - if (mode == MODE_MAIN_INIT) { - linda_set_schedule(linda_sche_main_init, MODE_MAIN_INIT, game); - return true; - } else { - return false; - } + if (mode == MODE_MAIN_INIT) { + linda_set_schedule(linda_sche_main_init, MODE_MAIN_INIT, game); + return true; + } else { + return false; + } } static bool linda_sche_main_init(int p, Game *game) { - int i, flg, mode, car_id; - int id = game->play_id; - int connect = 1; - CarPtr car = NULL; + int i, flg, mode, car_id; + int id = game->play_id; + int connect = 1; + CarPtr car = NULL; - for (i=1; i<=CLIENT_MAX; i++) { - if (i == id) continue; - get_packet(i, &flg, &mode, &car_id, NULL, NULL); + for (i=1; i<=CLIENT_MAX; i++) { + if (i == id) continue; + get_packet(i, &flg, &mode, &car_id, NULL, NULL); - if (flg == 1 && mode == MODE_MAIN_INIT) { - if (linda_carlist[i] == NULL) { - car = car_init(car_id); - carNode_append(car); - linda_carlist[i] = car; - } - connect++; - flg = 0; - } + if (flg == 1 && mode == MODE_MAIN_INIT) { + if (linda_carlist[i] == NULL) { + car = car_init(car_id); + carNode_append(car); + linda_carlist[i] = car; + } + connect++; + flg = 0; } + } - if (p == 1 && connect == CLIENT_MAX) { - if (id == PLAYER_1P) - linda_set_schedule(linda_sche_main_ready0, MODE_MAIN_READY, game); - else - linda_set_schedule(linda_sche_main_ready1, MODE_MAIN_READY, game); - return true; - } else { - return false; - } + if (p == 1 && connect == CLIENT_MAX) { + if (id == PLAYER_1P) + linda_set_schedule(linda_sche_main_ready0, MODE_MAIN_READY, game); + else + linda_set_schedule(linda_sche_main_ready1, MODE_MAIN_READY, game); + return true; + } else { + return false; + } } static bool linda_sche_main_ready0(int p, Game *game) { - int i, flg, mode; - int id = game->play_id; - int connect = 1; + int i, flg, mode; + int id = game->play_id; + int connect = 1; - for (i=1; i<=CLIENT_MAX; i++) { - if (i == id) continue; - get_packet(i, &flg, &mode, NULL, NULL, NULL); - if (flg == 1 && mode == MODE_MAIN_READY) { - connect++; - flg = 0; - } + for (i=1; i<=CLIENT_MAX; i++) { + if (i == id) continue; + get_packet(i, &flg, &mode, NULL, NULL, NULL); + if (flg == 1 && mode == MODE_MAIN_READY) { + connect++; + flg = 0; } + } - if (p == 1 && connect == CLIENT_MAX) { - linda_set_schedule(linda_sche_main, MODE_MAIN, game); - return true; - } else { - return false; - } + if (p == 1 && connect == CLIENT_MAX) { + linda_set_schedule(linda_sche_main, MODE_MAIN, game); + return true; + } else { + return false; + } } static bool linda_sche_main_ready1(int p, Game *game) { - int mode; + int mode; - get_packet(PLAYER_1P, NULL, &mode, NULL, NULL, NULL); + get_packet(PLAYER_1P, NULL, &mode, NULL, NULL, NULL); - if (mode == MODE_MAIN) { - linda_set_schedule(linda_sche_main, MODE_MAIN, game); - return true; - } else { - return false; - } + if (mode == MODE_MAIN) { + linda_set_schedule(linda_sche_main, MODE_MAIN, game); + return true; + } else { + return false; + } } static bool linda_sche_main(int p, Game *game) { - int i, flg, mode; - int id = game->play_id; - int connect = 1; - FMATRIX po; - CarPtr mycar = game->jiki; - CarPtr enemy = NULL; + int i, flg, mode; + int id = game->play_id; + int connect = 1; + FMATRIX po; + CarPtr mycar = game->jiki; + CarPtr enemy = NULL; - for (i=1; i<=CLIENT_MAX; i++) { - ps2_vu0_unit_matrix(po); - get_packet(i, &flg, &mode, NULL, NULL, (char*)po); + for (i=1; i<=CLIENT_MAX; i++) { + ps2_vu0_unit_matrix(po); + get_packet(i, &flg, &mode, NULL, NULL, (char*)po); - if (i == id) { - ps2_vu0_copy_matrix(po, mycar->body->transfer); - ps2_vu0_copy_vector(po[3], mycar->location); + if (i == id) { + ps2_vu0_copy_matrix(po, mycar->body->transfer); + ps2_vu0_copy_vector(po[3], mycar->location); - linda_seq[i] = psx_in(i); - send_packet(i, MODE_MAIN, 0, 0, (char*)po); - } else { - enemy = linda_carlist[i]; - if (flg == 1 && mode == MODE_MAIN) { - ps2_vu0_copy_matrix(enemy->body->transfer, po); - enemy->body->transfer[3][0] -= mycar->location[0]; - enemy->body->transfer[3][1] -= mycar->location[1]; - enemy->body->transfer[3][2] -= mycar->location[2]; - enemy->body->transfer[3][3] = 1; - } - } + linda_seq[i] = psx_in(i); + send_packet(i, MODE_MAIN, 0, 0, (char*)po); + } else { + enemy = linda_carlist[i]; + if (flg == 1 && mode == MODE_MAIN) { + ps2_vu0_copy_matrix(enemy->body->transfer, po); + enemy->body->transfer[3][0] -= mycar->location[0]; + enemy->body->transfer[3][1] -= mycar->location[1]; + enemy->body->transfer[3][2] -= mycar->location[2]; + enemy->body->transfer[3][3] = 1; + } } + } - if (p == 1 && connect == CLIENT_MAX) { - if (id == PLAYER_1P) - linda_set_schedule(linda_sche_main_ready0, MODE_MAIN_READY, game); - else - linda_set_schedule(linda_sche_main_ready1, MODE_MAIN_READY, game); - return true; - } else { - return false; - } + if (p == 1 && connect == CLIENT_MAX) { + if (id == PLAYER_1P) + linda_set_schedule(linda_sche_main_ready0, MODE_MAIN_READY, game); + else + linda_set_schedule(linda_sche_main_ready1, MODE_MAIN_READY, game); + return true; + } else { + return false; + } - return false; + return false; } bool linda_update(int p, Game *game) { - return sche_func(p); + return sche_func(p); } #if 0 @@ -513,23 +513,23 @@ static int linda_jiki_compareLocation(Game *game) { - float x,y,z; - double d; + float x,y,z; + double d; - if (common_state == GAME_MAIN || common_state == GAME_GOAL) { - x = jiki.position[3][0] - game.jiki->location[0]; - y = jiki.position[3][1] - game.jiki->location[1]; - z = jiki.position[3][2] - game.jiki->location[2]; - d = sqrt(x*x+y*y+z*z); + if (common_state == GAME_MAIN || common_state == GAME_GOAL) { + x = jiki.position[3][0] - game.jiki->location[0]; + y = jiki.position[3][1] - game.jiki->location[1]; + z = jiki.position[3][2] - game.jiki->location[2]; + d = sqrt(x*x+y*y+z*z); - if (d < 1.0) { - return 1; - } else { - return 0; - } + if (d < 1.0) { + return 1; } else { - return 1; + return 0; } + } else { + return 1; + } } @@ -540,166 +540,164 @@ static int linda_jiki_compare() { - if ((jiki.car_id == game.car_id) && - (jiki.course_id == game.course_id) && - (jiki.create_flg == ((game.jiki) ? 1:0)) && - (jiki.state == common_state) && - (linda_jiki_compareLocation())) { - return 0; - } else { - return 1; - } + if ((jiki.car_id == game.car_id) && + (jiki.course_id == game.course_id) && + (jiki.create_flg == ((game.jiki) ? 1:0)) && + (jiki.state == common_state) && + (linda_jiki_compareLocation())) { + return 0; + } else { + return 1; + } } static void linda_jiki_update() { - int i,j; + int i,j; - jiki.car_id = game.car_id; - jiki.course_id = game.course_id; - jiki.create_flg = (game.jiki) ? 1 : 0; - jiki.state = common_state; + jiki.car_id = game.car_id; + jiki.course_id = game.course_id; + jiki.create_flg = (game.jiki) ? 1 : 0; + jiki.state = common_state; - if (common_state == GAME_MAIN || common_state == GAME_GOAL) { - for (i=0; i<3; i++) { - for (j=0; j<4; j++) { - jiki.position[i][j] - = game.jiki->body->transfer[i][j]; - } - } - jiki.position[3][0] = game.jiki->location[0]; - jiki.position[3][1] = game.jiki->location[1]; - jiki.position[3][2] = game.jiki->location[2]; - jiki.position[3][3] = 1; + if (common_state == GAME_MAIN || common_state == GAME_GOAL) { + for (i=0; i<3; i++) { + for (j=0; j<4; j++) { + jiki.position[i][j] + = game.jiki->body->transfer[i][j]; + } } + jiki.position[3][0] = game.jiki->location[0]; + jiki.position[3][1] = game.jiki->location[1]; + jiki.position[3][2] = game.jiki->location[2]; + jiki.position[3][3] = 1; + } } void linda_update() { - int i; - int barrier = 1; // ãƒãƒªã‚¢åŒæœŸ(?)用 - int connect = 1; - int mode, id, flg; - char* reply; - char* pkt; - CarPtr car = NULL; + int i; + int barrier = 1; // ãƒãƒªã‚¢åŒæœŸ(?)用 + int connect = 1; + int mode, id, flg; + char* reply; + char* pkt; + CarPtr car = NULL; - for (i=1; i<=CLIENT_MAX; i++) { - reply = psx_reply(linda_seq[i]); - if (reply) { - pkt = reply+LINDA_HEADER_SIZE; - mode = get_header(pkt, PKT_MODE_OFFSET); - id = get_header(pkt, PKT_ID_OFFSET); - flg = get_header(pkt, PKT_FLG_OFFSET); + for (i=1; i<=CLIENT_MAX; i++) { + reply = psx_reply(linda_seq[i]); + if (reply) { + pkt = reply+LINDA_HEADER_SIZE; + mode = get_header(pkt, PKT_MODE_OFFSET); + id = get_header(pkt, PKT_ID_OFFSET); + flg = get_header(pkt, PKT_FLG_OFFSET); - if (i != game.play_id) { - connect++; + if (i != game.play_id) { + connect++; - car = linda_carlist[i]; - if (common_state == GAME_MAIN && !car && p->create_flg == 1) { - car = car_init(p->car_id); - carNode_append(car); - linda_carlist[i] = car; - } - linda_enemy_update(i, car, p); - if (common_state == p->state) { - barrier++; - } - } - psx_free(reply); - linda_seq[i] = psx_rd(i); + car = linda_carlist[i]; + if (common_state == GAME_MAIN && !car && p->create_flg == 1) { + car = car_init(p->car_id); + carNode_append(car); + linda_carlist[i] = car; + } + linda_enemy_update(i, car, p); + if (common_state == p->state) { + barrier++; } + } + psx_free(reply); + linda_seq[i] = psx_rd(i); + } + } + + if (connect == CLIENT_MAX) { + if (game->state == GAME_WAIT) { + gFont_SetString("CONNECT OK!!", 170, 300); + if (game->play_id == 1) + gFont_SetString(" PUSH START ", 170, 400); } - if (connect == CLIENT_MAX) { - if (game->state == GAME_WAIT) { - gFont_SetString("CONNECT OK!!", 170, 300); - if (game->play_id == 1) - gFont_SetString(" PUSH START ", 170, 400); + // ã”ã¡ã‚ƒã”ã¡ã‚ƒã—ã¦ã‚‹... + // ãªã‚“ã‹ç„¡é§„ãªå‡¦ç†ãŒã‚ã‚Šãã†ã  + if (game->play_id == 1) { + // 全員ã®ãƒ•ãƒ©ã‚°æˆç«‹ + if (common_state == GAME_GOAL) { + if (game->state == GAME_FINISH) { + common_state = game->state; + } else { + game->state = common_state; } - - // ã”ã¡ã‚ƒã”ã¡ã‚ƒã—ã¦ã‚‹... - // ãªã‚“ã‹ç„¡é§„ãªå‡¦ç†ãŒã‚ã‚Šãã†ã  - if (game->play_id == 1) { - // 全員ã®ãƒ•ãƒ©ã‚°æˆç«‹ - if (common_state == GAME_GOAL) { - if (game->state == GAME_FINISH) { - common_state = game->state; - } else { - game->state = common_state; - } - } else if (barrier == CLIENT_MAX) { - common_state = game->state; - } else { - game->state = common_state; - } + } else if (barrier == CLIENT_MAX) { + common_state = game->state; + } else { + game->state = common_state; + } + } else { + if (game->state == GAME_GOAL) { + if (common_state != GAME_FINISH) { + common_state = game->state; } else { - if (game->state == GAME_GOAL) { - if (common_state != GAME_FINISH) { - common_state = game->state; - } else { - game->state = common_state; - } - } else { - game->state = common_state; - } + game->state = common_state; } - } else { - if (game->state == GAME_WAIT) { - gFont_SetString("WAITING...", 200, 100); - } + } else { game->state = common_state; + } } + } else { + if (game->state == GAME_WAIT) { + gFont_SetString("WAITING...", 200, 100); + } + game->state = common_state; + } - if (linda_jiki_compare()) { + if (linda_jiki_compare()) { #ifdef DEBUG - // ã©ã®ã‚¿ã‚¤ãƒŸãƒ³ã‚°ã§outã•ã‚Œã¦ã‚‹ã‹è¦‹ã‚‹ - // å¿…è¦ãªã¨ãã ã‘outã—ãªã„ã¨é‡ã„ã§ã™ã­å½“然ã ã‘ã© - fprintf(main_fp, "psx_out() jiki\n"); + // ã©ã®ã‚¿ã‚¤ãƒŸãƒ³ã‚°ã§outã•ã‚Œã¦ã‚‹ã‹è¦‹ã‚‹ + // å¿…è¦ãªã¨ãã ã‘outã—ãªã„ã¨é‡ã„ã§ã™ã­å½“然ã ã‘ã© + fprintf(main_fp, "psx_out() jiki\n"); #endif - linda_jiki_update(); - // ç„¡ç†çŸ¢ç† - // å¤ã„ã‚‚ã®ã‚’消ã™ã ã‘ãªã‚“ã ã‘ã© - // æ­£ã—ã„ã‚„ã‚Šæ–¹ãŒä»–ã«æœ‰ã‚‹ã®ã‹ãªï¼Ÿ - // 実行ã—続ã‘ã¦ã‚‹ã¨æœ€çµ‚çš„ã«æ¿€é‡ã«ãªã‚‹ã®ã§ - // ã“ã“ら辺ã«å•é¡ŒãŒæœ‰ã‚‹ã®ã ã‚ã†ã‹ã€‚ - psx_free(psx_reply(psx_in(game->play_id))); - linda_seq[my_id]=psx_in(game->play_id); - psx_out(game->play_id, (char*)&jiki, sizeof(CarInfo)); - } + linda_jiki_update(); + // ç„¡ç†çŸ¢ç† + // å¤ã„ã‚‚ã®ã‚’消ã™ã ã‘ãªã‚“ã ã‘ã© + // æ­£ã—ã„ã‚„ã‚Šæ–¹ãŒä»–ã«æœ‰ã‚‹ã®ã‹ãªï¼Ÿ + // 実行ã—続ã‘ã¦ã‚‹ã¨æœ€çµ‚çš„ã«æ¿€é‡ã«ãªã‚‹ã®ã§ + // ã“ã“ら辺ã«å•é¡ŒãŒæœ‰ã‚‹ã®ã ã‚ã†ã‹ã€‚ + psx_free(psx_reply(psx_in(game->play_id))); + linda_seq[my_id]=psx_in(game->play_id); + psx_out(game->play_id, (char*)&jiki, sizeof(CarInfo)); + } } #endif static int get_id() { - unsigned char * reply; - int seq; - int id; + unsigned char * reply; + int seq; + int id; - //ユーザIDãŒæ ¼ç´ã•ã‚Œã¦ã„ã‚‹TUPLE Spaceã®IDã¸ã‚¢ã‚¯ã‚»ã‚¹ - seq = psx_in(LINDA_ASK_ID); + //ユーザIDãŒæ ¼ç´ã•ã‚Œã¦ã„ã‚‹TUPLE Spaceã®IDã¸ã‚¢ã‚¯ã‚»ã‚¹ + seq = psx_in(LINDA_ASK_ID); - // IDãŒå–å¾—ã§ãã‚‹ã¾ã§ãƒ«ãƒ¼ãƒ— - while((reply = psx_reply(seq)) == 0) psx_sync_n(); + // IDãŒå–å¾—ã§ãã‚‹ã¾ã§ãƒ«ãƒ¼ãƒ— + while((reply = psx_reply(seq)) == 0) psx_sync_n(); - id = atoi(reply+LINDA_HEADER_SIZE); - psx_free(reply); - return id; + id = atoi(reply+LINDA_HEADER_SIZE); + psx_free(reply); + return id; } -void -linda_env_init() +void linda_env_init( void ) { - int i; - - for (i=0; iplay_id, MODE_WAIT, 1, 1, NULL); + if (my_id == PLAYER_1P) { + sche_func = &linda_sche_wait0; + } else { + sche_func = &linda_sche_wait1; + } + send_packet(game->play_id, MODE_WAIT, 1, 1, NULL); - return my_id; + return my_id; } diff -r b0249b856488 -r 0b65ca27f113 linda.h --- a/linda.h Thu May 26 18:13:40 2011 +0900 +++ b/linda.h Thu Jun 02 14:56:11 2011 +0900 @@ -47,32 +47,38 @@ #define PKT_HEADER_SIZE 12 #include "game.h" -//#include "schedule.h" +#include "schedule.h" #include extern Game *game; -static void linda_set_schedule(void *func, int mode, Game *game); -static bool linda_sche_wait0(int p, Game *game); -static bool linda_sche_wait1(int p, Game *game); -static bool linda_sche_wait_ready0(int p, Game *game); -static bool linda_sche_wait_ready1(int p, Game *game); -static bool linda_sche_opening0(int p, Game *game); -static bool linda_sche_opening1(int p, Game *game); -static bool linda_sche_select_car0(int p, Game *game); -static bool linda_sche_select_car1(int p, Game *game); -static bool linda_sche_select_course0(int p, Game *game); -static bool linda_sche_select_course1(int p, Game *game); -static bool linda_sche_ready0(int p, Game *game); -static bool linda_sche_ready1(int p, Game *game); -static bool linda_sche_main_init(int p, Game *game); -//static bool linda_sche_main_init(int p, Game *game); -static bool linda_sche_main_ready0(int p, Game *game); -static bool linda_sche_main_ready1(int p, Game *game); -static bool linda_sche_main(int p, Game *game); +// static を付ã‘ã¦ãŸã‚‰waringãŒå‡ºã‚‹ã‹ã‚‰æ¶ˆã—ãŸã‘ã©ã€å•é¡Œã‚る?:miya +void linda_set_schedule(void *func, int mode, Game *game); +bool linda_sche_wait0(int p, Game *game); +bool linda_sche_wait1(int p, Game *game); +bool linda_sche_wait_ready0(int p, Game *game); +bool linda_sche_wait_ready1(int p, Game *game); +bool linda_sche_opening0(int p, Game *game); +bool linda_sche_opening1(int p, Game *game); +bool linda_sche_select_car0(int p, Game *game); +bool linda_sche_select_car1(int p, Game *game); +bool linda_sche_select_course0(int p, Game *game); +bool linda_sche_select_course1(int p, Game *game); +bool linda_sche_ready0(int p, Game *game); +bool linda_sche_ready1(int p, Game *game); +bool linda_sche_main_init(int p, Game *game); +bool linda_sche_main_init(int p, Game *game); +bool linda_sche_main_ready0(int p, Game *game); +bool linda_sche_main_ready1(int p, Game *game); +bool linda_sche_main(int p, Game *game); int linda_int(Game *game); +// schedule.cã§ä½¿ç”¨ã—ã¦ã‚‹ +void linda_env_init( void ); + + + extern void psx_id(unsigned char *); extern void psx_linda(unsigned char *); extern void psx_sync(unsigned char *); diff -r b0249b856488 -r 0b65ca27f113 main.c --- a/main.c Thu May 26 18:13:40 2011 +0900 +++ b/main.c Thu Jun 02 14:56:11 2011 +0900 @@ -8,13 +8,12 @@ int main(int argc, char* argv[]) { - /*main_fp = fopen("/dev/stdout", "w"); - if (!main_fp) { - perror("main"); - }*/ + main_fp = fopen("/dev/stdout", "w"); + if (!main_fp) { + perror("main"); + } - game_main(); -// ps2util_graphic_Finish(); - return 0; + game_main(); + ps2util_graphic_Finish(); + return 0; } - diff -r b0249b856488 -r 0b65ca27f113 mytype.c --- a/mytype.c Thu May 26 18:13:40 2011 +0900 +++ b/mytype.c Thu Jun 02 14:56:11 2011 +0900 @@ -1,11 +1,10 @@ -/* - * $Id$ - */ +/* mytype.c */ + #include #include #include -//#include "libps2.h" -//#include "ps2util.h" +#include "libps2.h" +#include "ps2util.h" #include "mytype.h" static clock_t start; @@ -14,7 +13,7 @@ void wait_init() { - start = clock(); + start = clock(); } /* @@ -24,32 +23,32 @@ bool wait(double time) { - clock_t t; - double a; + clock_t t; + double a; - t = clock(); - a = (t-start)/(double)CLOCKS_PER_SEC; - if (a > time) { - return true; - } + t = clock(); + a = (t-start)/(double)CLOCKS_PER_SEC; + if (a > time) { + return true; + } - return false; + return false; } void time_RaceStart() { - race_start = clock(); + race_start = clock(); } double time_RaceTime() { - clock_t t; - double a; + clock_t t; + double a; - t = clock(); - a = (t-race_start)/(double)CLOCKS_PER_SEC; + t = clock(); + a = (t-race_start)/(double)CLOCKS_PER_SEC; - return a; + return a; } diff -r b0249b856488 -r 0b65ca27f113 mytype.h --- a/mytype.h Thu May 26 18:13:40 2011 +0900 +++ b/mytype.h Thu Jun 02 14:56:11 2011 +0900 @@ -1,3 +1,4 @@ +/* mytype.h */ #include #define RADIAN(d) ((d)*M_PI/180.0) @@ -5,3 +6,5 @@ #define NORM(v) (float)(sqrt((v)[0]*(v)[0] + (v)[1]*(v)[1] + (v)[2]*(v)[2])) enum { X_AXIS=0, Y_AXIS=1, Z_AXIS=2, W_AXIS=3, }; + +void wait_init( void ); diff -r b0249b856488 -r 0b65ca27f113 ps2util.c --- a/ps2util.c Thu May 26 18:13:40 2011 +0900 +++ b/ps2util.c Thu Jun 02 14:56:11 2011 +0900 @@ -1,9 +1,12 @@ +/* ps2util.c */ + +#include #include #include +#include #include "libps2.h" #include "ps2util.h" - /* ãŸã¶ã‚“ã€æœ¬å½“ã¯èª­ã¿è¾¼ã‚“ã  xml file ã‹ã‚‰æƒ…報をå–å¾—ã™ã‚‹ã¨ã‹ãã‚“ãªã‚“ã ã¨æ€ã† ã©ã‚“ãªå‡¦ç†ã‹åˆ†ã‹ã‚‰ãªã„ã®ã§ã€ã¨ã‚Šã‚ãˆãšã€åˆæœŸåŒ–ã—ã¦ã„る。 @@ -12,6 +15,7 @@ OBJECT *ps2util_obj_Create_fromXML(char *filename) { OBJECT *body; + /* body->xyz = {0,0,0,0}; body->angle = {0,0,0,0}; @@ -19,6 +23,7 @@ body->*name = filename; body->*free_me = NULL; */ + return body; } @@ -29,10 +34,10 @@ //none } - +// ベクトル v1 をベクトル v2 ã«ã‚³ãƒ”ーã™ã‚‹ void ps2_vu0_copy_vector(FVECTOR directionA, FVECTOR directionB) { - //none + memcpy(directionA, directionB, sizeof(FVECTOR)); } @@ -58,7 +63,7 @@ return -1; } -int ps2util_sprite_Create(ps2utilSprite sp, TEXTURE *sprite_tex) +int ps2util_sprite_Create(ps2utilSprite *Sp, TEXTURE *sprite_tex) { return -1; } @@ -69,6 +74,7 @@ //none } +// 与ãˆã‚‰ã‚ŒãŸè¡Œåˆ—ã‚’å˜ä½è¡Œåˆ—ã«å¤‰æ›ã™ã‚‹ void ps2_vu0_unit_matrix(FMATRIX m) { m[0][1] = m[0][2] = m[0][3] = 0; @@ -78,27 +84,35 @@ m[0][0] = m[1][1] = m[2][2] = m[3][3] = 1.0; } +/* +Y軸を中心ã¨ã—ãŸè¡Œåˆ—ã®å›žè»¢ +回転角 rx より X 軸を中心ã¨ã—ãŸå›žè»¢ãƒžãƒˆãƒªãƒƒã‚¯ã‚¹ã‚’求ã‚ã¦ã€ãƒžãƒˆãƒªãƒƒã‚¯ã‚¹ m1 ã«å·¦å´ã‹ã‚‰ä¹—ç®—ã—ã¦ã€ãã®çµæžœã‚’マトリックス m0 ã«ä¸Žãˆã‚‹ã€‚ +X 軸ãŸã‚™ã‘ã¦ã‚™ãªã Y 軸ã€Z 軸を中心ã¨ã—ãŸé–¢æ•°ã‚‚ã‚る。ã¾ãŸ3ã¤ã„ã£ã‚“ã«å›žè»¢ã•ã›ã‚‹é–¢æ•°ã‚‚ã‚る。 +*/ void ps2_vu0_rot_matrix_y(FMATRIX result, FMATRIX m, float radian) { - FMATRIX rot; + // 回転行列を作ã£ã¦ã‹ã‘ã¦ã‚„ã‚Œã°è‰¯ã„ + m[0][1] = m[0][2] = m[0][3] = 0; m[1][0] = m[1][2] = m[1][3] = 0; m[2][0] = m[2][1] = m[2][3] = 0; m[3][0] = m[3][1] = m[3][2] = 0; m[0][0] = m[1][1] = m[2][2] = m[3][3] = 1.0; - m[0][0] = fsign(radian); - m[2][2] = fsign(radian); - m[0][2] = -fcos(radian); - m[2][0] = fcos(radian); - - FMATRIX m1 = m; + + m[0][0] = sinf(radian); + m[2][2] = sinf(radian); + m[0][2] = -cosf(radian); + m[2][0] = cosf(radian); + + FMATRIX m1;// = m; + memcpy(&m1, m, sizeof(FMATRIX)); ps2_vu0_mul_matrix(result, m1, m); - } - +// ベクトルã®è¨ˆç®— +// マトリックス m ã«ãƒ˜ã‚™ã‚¯ãƒˆãƒ« ã‚’å³ã‹ã‚‰ä¹—ç®—ã—㦠result ã«ä¸Žãˆã‚‹ void ps2_vu0_apply_matrix(FVECTOR result, FMATRIX m, FVECTOR v) { result[0] = m[0][0] * v[0] + m[0][1] * v[1] + m[0][2] * v[2] + m[0][3] * v[3] ; @@ -116,12 +130,17 @@ mov[3] = car_direction[3]; } -void ps2_vu0_add_vector(FVECTOR car_location1, FVECTOR car_location2,FVECTOR mov) +// ベクトル v1 ã®å„è¦ç´ ã¨ãƒ™ã‚¯ãƒˆãƒ« v2 ã®å„è¦ç´ ã‚’å„々加算ã—ã¦v0ã«ä¸Žãˆã‚‹ +// v0 = v1+v2 +void ps2_vu0_add_vector(FVECTOR result, FVECTOR v0, FVECTOR v1) { - //none + result[0] = v0[0] + v1[0]; + result[1] = v0[1] + v1[1]; + result[2] = v0[2] + v1[2]; + result[3] = v0[3] + v1[3]; } - +// å¤–ç© void ps2_vu0_outer_product(FVECTOR result, FVECTOR v0, FVECTOR v1) { result[0] = v0[1] * v1[2] - v0[2] * v1[1] ; @@ -130,27 +149,40 @@ result[3] = 1; } - +// å†…ç© float ps2_vu0_inner_product(FVECTOR v0, FVECTOR v1) { return v0[0] * v1[0] + v0[1] * v1[1] + v0[2] * v1[2]; } -void ps2_vu0_mul_matrix(FMATRIX pose1, FMATRIX yrot, FMATRIX pose2) +void ps2_vu0_mul_matrix(FMATRIX result, FMATRIX m0, FMATRIX m1) { - //none -} + result[0][0] = m0[0][0] * m1[0][0] + m0[0][1] * m1[1][0] + m0[0][2] * m1[2][0] + m0[0][3] * m1[3][0]; + result[0][1] = m0[0][0] * m1[0][1] + m0[0][1] * m1[1][1] + m0[0][2] * m1[2][1] + m0[0][3] * m1[3][1]; + result[0][2] = m0[0][0] * m1[0][2] + m0[0][1] * m1[1][2] + m0[0][2] * m1[2][2] + m0[0][3] * m1[3][2]; + result[0][3] = m0[0][0] * m1[0][3] + m0[0][1] * m1[1][3] + m0[0][2] * m1[2][3] + m0[0][3] * m1[3][3]; + + result[1][0] = m0[1][0] * m1[0][0] + m0[1][1] * m1[1][0] + m0[1][2] * m1[2][0] + m0[1][3] * m1[3][0]; + result[1][1] = m0[1][0] * m1[0][1] + m0[1][1] * m1[1][1] + m0[1][2] * m1[2][1] + m0[1][3] * m1[3][1]; + result[1][2] = m0[1][0] * m1[0][2] + m0[1][1] * m1[1][2] + m0[1][2] * m1[2][2] + m0[1][3] * m1[3][2]; + result[1][3] = m0[1][0] * m1[0][3] + m0[1][1] * m1[1][3] + m0[1][2] * m1[2][3] + m0[1][3] * m1[3][3]; -void ps2_vu0_copy_matrix(FMATRIX from, FMATRIX to) -{ - to = from; + result[2][0] = m0[2][0] * m1[0][0] + m0[2][1] * m1[1][0] + m0[2][2] * m1[2][0] + m0[2][3] * m1[3][0]; + result[2][1] = m0[2][0] * m1[0][1] + m0[2][1] * m1[1][1] + m0[2][2] * m1[2][1] + m0[2][3] * m1[3][1]; + result[2][2] = m0[2][0] * m1[0][2] + m0[2][1] * m1[1][2] + m0[2][2] * m1[2][2] + m0[2][3] * m1[3][2]; + result[2][3] = m0[2][0] * m1[0][3] + m0[2][1] * m1[1][3] + m0[2][2] * m1[2][3] + m0[2][3] * m1[3][3]; + + result[3][0] = m0[3][0] * m1[0][0] + m0[3][1] * m1[1][0] + m0[3][2] * m1[2][0] + m0[3][3] * m1[3][0]; + result[3][1] = m0[3][0] * m1[0][1] + m0[3][1] * m1[1][1] + m0[3][2] * m1[2][1] + m0[3][3] * m1[3][1]; + result[3][2] = m0[3][0] * m1[0][2] + m0[3][1] * m1[1][2] + m0[3][2] * m1[2][2] + m0[3][3] * m1[3][2]; + result[3][3] = m0[3][0] * m1[0][3] + m0[3][1] * m1[1][3] + m0[3][2] * m1[2][3] + m0[3][3] * m1[3][3]; } -void ps2util_tex_Exclude(TEXTURE* t) +void ps2_vu0_copy_matrix(FMATRIX transfer, FMATRIX pose) { - //none + memcpy(transfer, pose, sizeof(FMATRIX)); } void ps2util_obj_Free(OBJECT* obj) @@ -160,17 +192,20 @@ -void ps2_vu0_sub_vector(FVECTOR o0, FVECTOR p, FVECTOR p0) +void ps2_vu0_sub_vector(FVECTOR result, FVECTOR v0, FVECTOR v1) { - //none + result[0] = v0[0] - v1[0]; + result[1] = v0[1] - v1[1]; + result[2] = v0[2] - v1[2]; + result[3] = v0[3] - v1[3]; } - void ps2_vu0_normalize(FVECTOR result, FVECTOR v) { - float d = fsqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); + // 大ãã•ã§å‰²ã£ã¦ã‚‹ã ã‘ã£ã¦ + float d;// = fsqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); result[0] = v[0] / d; result[1] = v[1] / d; result[2] = v[2] / d; @@ -190,12 +225,6 @@ } -void gSprite_Init() -{ - //none -} - - void ps2util_sprite_Destroy(ps2utilSprite *title_sprite ) { //none @@ -234,24 +263,22 @@ /* ps2 ä¾å­˜é–¢ä¿‚ã® sprite.c より引用。 */ +#define SPRITE_HAS_4VERTEXIS 4 + +#define PS2_GS_XYZ3 1 // ãªã«ã‹ã‚ã‹ã‚‰ã‚“定数ã ã‹ã‚‰é©å½“ã«ä½œã‚Šã¾ã—㟠+ inline void sprite_disappear( SPRITE* sprite ) { - int i; GsSpritePacket* packet = sprite->gs_packet; for (i=0; iprimData[i].xyz_addr = PS2_GS_XYZ3; - } - - - - /* ã‹ã‚‰ã®é–¢æ•° ps2 ä¾å­˜é–¢ä¿‚ã«ã‚ã£ãŸã‘ã©ã€( name_dictionary.c ) ã®ä¸­ã®ã‚‚ã® @@ -326,3 +353,29 @@ return(0); } + + + +// miya +void ps2util_tex_Exclude( TEXTURE* t ) +{ + char *miyahira; + miyahira = "ãªã«ã“ã®é–¢æ•°ï¼Ÿ"; +} + +void ps2util_sprite_Draw() +{ + printf("ps2util_sprite_Draw()\n"); +} + +void ps2util_graphic_Finish( void ) +{ + printf("ps2util_graphic_Finish()\n"); +} + + +// title.cã«æ›¸ã„ã¦ãŸ +void ps2util_sprite_Use_alpha( ps2utilSprite *title ) +{ + printf("ps2util_sprite_Use_alpha()\n"); +} diff -r b0249b856488 -r 0b65ca27f113 ps2util.h --- a/ps2util.h Thu May 26 18:13:40 2011 +0900 +++ b/ps2util.h Thu Jun 02 14:56:11 2011 +0900 @@ -1,3 +1,9 @@ +/* ps2util.h */ + +// é©å½“ã«æ•°å€¤å½“ã¦:miya +#define JOYPAD_1 1 + + #ifndef PS2UTIL_H #define PS2UTIL_H @@ -7,7 +13,7 @@ */ #define ALIGN_16BYTE 64 -#include "field.h" +//#include "field.h" #include "libps2.h" #include "col.h" @@ -32,26 +38,32 @@ */ void ps2util_obj_Set_effect(OBJECT*, int); -void ps2_vu0_copy_vector(FVECTOR , FVECTOR); +void ps2_vu0_copy_vector( FVECTOR a, FVECTOR b); void ps2util_obj_Renew_transMatrix(OBJECT*); TEXTURE* read_png_file(char *texname); int ps2util_tex_Set(TEXTURE*); void ps2util_obj_Set_texture(OBJECT*, TEXTURE*); -void ps2_vu0_unit_matrix(FMATRIX); -void ps2_vu0_rot_matrix_y(FMATRIX , FMATRIX , float); +void ps2_vu0_unit_matrix( FMATRIX ); +void ps2_vu0_rot_matrix_y( FMATRIX , FMATRIX , float); + +// マトリックス m0 ã«ãƒ˜ã‚™ã‚¯ãƒˆãƒ« v1 ã‚’å³ã‹ã‚‰ä¹—ç®—ã—㦠v0 ã«ä¸Žãˆã‚‹ +//void ps2_vu0_apply_matrix(ps2_vu0_fvector v0, ps2_vu0_fmatrix m0, ps2_vu0_fvector v1) void ps2_vu0_apply_matrix(FVECTOR , FMATRIX , FVECTOR ); -void ps2_vu0_scale_vector(FVECTOR , FVECTOR , float ); +void ps2_vu0_scale_vector( FVECTOR , FVECTOR , float ); void ps2_vu0_add_vector(FVECTOR , FVECTOR , FVECTOR ); void ps2_vu0_outer_product(FVECTOR rotaxis, FVECTOR car_vertical, FVECTOR yd); float ps2_vu0_inner_product(FVECTOR yd, FVECTOR car_vertical); void ps2_vu0_mul_matrix(FMATRIX pose1, FMATRIX yrot, FMATRIX pose2); -void ps2_vu0_copy_matrix(FMATRIX car_body_transfer, FMATRIX pose); -void ps2util_tex_Exclude(TEXTURE* t); +//void ps2_vu0_copy_matrix(FMATRIX *car_body_transfer, FMATRIX pose); +void ps2_vu0_copy_matrix(FMATRIX transfer, FMATRIX pose); // 一個目ã®å¼•æ•°ãŒãƒã‚¤ãƒ³ã‚¿ã ã¨ã‚³ãƒ³ãƒ‘イル通らãªã‹ã£ãŸã€‚ãªã‚“ã§ï¼Ÿ + + +void ps2util_tex_Exclude( TEXTURE* t ); void free_texture(TEXTURE *tex); @@ -66,8 +78,6 @@ void ps2util_obj_Draw(OBJECT *object); -void gSprite_Init(); - void delete_name_dictionary(const char *string); void ps2util_sprite_Destroy(ps2utilSprite *title_sprite); @@ -79,17 +89,21 @@ unsigned short sptable_tx, unsigned short sptable_ty, unsigned short sptable_tw2, unsigned short sptable_th2, int sprite_prio_foreground); + void ps2util_sprite_Request(ps2utilSprite *p); - int ps2util_sprite_Create(ps2utilSprite *sp, TEXTURE *sprite_tex); void ps2util_sprite_Unuse_alpha(ps2utilSprite *sp); void ps2util_graphic_Init(); +void ps2util_sprite_Draw(); + //ps2 ä¾å­˜é–¢ä¿‚ã® sprite.c より inline void sprite_disappear( SPRITE *sprite ); - +void ps2util_graphic_Finish( void ); - +// title.cã«æ›¸ã„ã¦ãŸ +void ps2util_sprite_Use_alpha( ps2utilSprite *title ); #endif + diff -r b0249b856488 -r 0b65ca27f113 schedule.c --- a/schedule.c Thu May 26 18:13:40 2011 +0900 +++ b/schedule.c Thu Jun 02 14:56:11 2011 +0900 @@ -1,3 +1,5 @@ +/* schedule.c */ + #include #include #include @@ -12,13 +14,16 @@ #include "controler.h" #include "camera.h" #include "carNode.h" -//#include "light.h" +#include "light.h" #include "title_scene.h" #include "game_time.h" #include "schedule.h" #include "game.h" +#include "mytype.h" +#include "linda.h" +#include "sjoy.h" #ifdef LINDA bool linda_update(int p, Game *game); @@ -32,11 +37,14 @@ #define SP_SEL_CAR 50 #define SP_SEL_COURSE 80 +// controler.cより +extern SGO_PAD pad; + static void set_schedule(Game *game); static void sche_game_init(Game *game); -//static void sche_game_wait(Game *game); -//static void sche_game_wait_ready(Game *game); +static void sche_game_wait(Game *game); +static void sche_game_wait_ready(Game *game); static void sche_game_opening(Game *game); static void sche_game_select_car(Game *game); static void sche_game_select_course(Game *game); @@ -44,75 +52,82 @@ static void sche_game_main_init(Game *game); static void sche_game_main_ready(Game *game); static void sche_game_main(Game *game); -//static void sche_game_main_pause(Game *game); +static void sche_game_main_pause(Game *game); static void sche_game_main_goal(Game *game); static void sche_game_main_finish(Game *game); static void sche_game_main_finish2(Game *game); - /* timer */ static int start_time,time_count; static int RUNNIG=0; char raptime[10]; static int ranking = 0; -//static LIGHT l; - +static LIGHT l; static int i=0; static void (*sche_func_assumption)(); static void (*sche_func)() = &sche_game_init; static int change_state = 0; + +// schedule.cã§ä½¿ç”¨ã—ã¦ã‚‹ +void linda_env_init( void ); + static void set_schedule_assumption(void *_func) { - sche_func_assumption = _func; - change_state = 1; + sche_func_assumption = _func; + change_state = 1; } static void unset_schedule() { - change_state = 0; + change_state = 0; } static void set_schedule(Game *game) { - sche_func = sche_func_assumption; - change_state = 0; + sche_func = sche_func_assumption; + change_state = 0; } static void graphic_init() { - gSprite_Init(); // グラフィック関連ã®åˆæœŸåŒ– - gFont_Init(); // フォント関連ã®åˆæœŸåŒ– + gSprite_Init(); // グラフィック関連ã®åˆæœŸåŒ– + gFont_Init(); // フォント関連ã®åˆæœŸåŒ– } -static void -play_init(Game *game) +static void +play_init( Game *game ) { - game->jiki = car_init(game->car_id); - carNode_append(game->jiki); - field_init(game->course_id); + game->jiki = car_init(game->car_id); + carNode_append(game->jiki); + field_init(game->course_id); } -static void -game_env_init(Game *game) +// é©å½“ã«è‡ªä½œ :miya +void linda_env_init( void ) +{ + printf("hogehoge"); +} + +static void game_env_init ( Game *game ) { - game->car_id = 1; - game->course_id = 1; - game->camera_type = 0; - game->rap = 1; - game->jiki = NULL; + game->car_id = 1; + game->course_id = 1; + game->camera_type = 0; + game->rap = 1; + game->jiki = NULL; - ranking = 0; + ranking = 0; - wait_init(); - + wait_init(); + linda_env_init(); } @@ -120,15 +135,15 @@ void sche_game_init(Game *game) { - game_env_init(game); - graphic_init(); - camera_init(); + game_env_init(game); + graphic_init(); + camera_init(); #ifdef LINDA - //sche_func = &sche_game_wait; - //set_schedule_assumption(sche_game_wait); + sche_func = &sche_game_wait; + set_schedule_assumption(sche_game_wait); #else - set_schedule_assumption(sche_game_opening); + set_schedule_assumption(sche_game_opening); #endif } @@ -138,14 +153,15 @@ * ・・・ã ã£ãŸã‚“ã ã‘ã©ã€ç¾åœ¨ linda を切ã£ã¦ã„ã‚‹ãŸã‚ worning ãŒå‡ºã‚‹ã€‚ * ã®ã§ cut ã™ã‚‹ã€‚ */ -/* + + static void sche_game_wait(Game *game) { - gFont_SetString("WAITING...", 200, 100); - set_schedule_assumption(sche_game_wait_ready); + gFont_SetString("WAITING...", 200, 100); + set_schedule_assumption(sche_game_wait_ready); } -*/ + /** @@ -153,115 +169,115 @@ * 全ユーザã®æŽ¥ç¶šã‚’確èªã—ãŸã‚‰å‘¼ã³å‡ºã™ * ã“ã„ã¤ã‚‚ã€linda ãŒãªã„ã®ã§ cut */ -/* + static void sche_game_wait_ready(Game *game) { - gFont_SetString("CONNECT OK!!", 170, 300); - if (game->play_id == 1) { - gFont_SetString(" PUSH START ", 170, 400); - //if (pad.st != 1) { goto WAIT_READY; } - } + gFont_SetString("CONNECT OK!!", 170, 300); + if (game->play_id == 1) { + gFont_SetString(" PUSH START ", 170, 400); + if (pad.st != 1) { goto WAIT_READY; } + } - set_schedule_assumption(sche_game_opening); + set_schedule_assumption(sche_game_opening); - //WAIT_READY: - return; + WAIT_READY: + return; } -*/ + void sche_game_opening(Game *game) { - static int blink_count = 0; - if (game->play_id==1){ - if (blink_count < 35) { - gFont_SetString("PUSH START !!", 170, 380); - } - blink_count = (blink_count > 70) ? 0 : blink_count + 1; + static int blink_count = 0; + if (game->play_id==1){ + if (blink_count < 35) { + gFont_SetString("PUSH START !!", 170, 380); + } + blink_count = (blink_count > 70) ? 0 : blink_count + 1; - // if (pad.st != 1) { goto OPENING; } - } + if (pad.st != 1) { goto OPENING; } + } - set_schedule_assumption(sche_game_select_car); + set_schedule_assumption(sche_game_select_car); - //OPENING: - return; + OPENING: + return; + - /* - if (game->play_id == 1) { - if (title_scene() < 0){ - } - } else if (game->play_id == 2) { - if (i==0){ - title_init_call(); - i=1; - } + if (game->play_id == 1) { + if (title_scene() < 0){ } - */ + } else if (game->play_id == 2) { + if (i==0){ + title_init_call(); + i=1; + } + } + + } void sche_game_select_car(Game *game) { - if (i==1){ - title_finish_call(); - i=2; - } - // gSprite_PutSpriteEx(SP_SEL_CAR+game->car_id, 190, 200, 1.5, 1.5); - // gSprite_PutSprite(24, 460, 300); - // gSprite_PutSprite(25, 120, 300); - // gFont_SetString("SELECT CAR", 180, 50); - /* - if (pad.right == 1) { - game->car_id = - (game->car_id > MAXCAR-1) ? 1 : game->car_id + 1 - } - if (pad.left == 1) { - game->car_id = - (game->car_id < 2) ? MAXCAR : game->car_id - 1 - } + if (i==1){ + title_finish_call(); + i=2; + } + gSprite_PutSpriteEx(SP_SEL_CAR+game->car_id, 190, 200, 1.5, 1.5); + gSprite_PutSprite(24, 460, 300); + gSprite_PutSprite(25, 120, 300); + gFont_SetString("SELECT CAR", 180, 50); + + if (pad.right == 1) { + game->car_id = + (game->car_id > MAXCAR-1) ? 1 : game->car_id + 1; + } + if (pad.left == 1) { + game->car_id = + (game->car_id < 2) ? MAXCAR : game->car_id - 1; + } - if (game->play_id == 1) - if (pad.circle != 1) { goto SELECT_CAR; } - */ + if (game->play_id == 1) + if (pad.circle != 1) { goto SELECT_CAR; } + - set_schedule_assumption(sche_game_select_course); + set_schedule_assumption(sche_game_select_course); - //SELECT_CAR: - return; + SELECT_CAR: + return; } void sche_game_select_course(Game *game) { - // gSprite_PutSpriteEx(SP_SEL_COURSE+game->course_id, 190, 200, 1.7, 1.8); - // gSprite_PutSprite(24, 460, 300); - // gSprite_PutSprite(25, 120, 300); + gSprite_PutSpriteEx(SP_SEL_COURSE+game->course_id, 190, 200, 1.7, 1.8); + gSprite_PutSprite(24, 460, 300); + gSprite_PutSprite(25, 120, 300); - // gFont_SetString("SELECT COURSE", 150, 50); + gFont_SetString("SELECT COURSE", 150, 50); - if (game->play_id == 1) { - /* if (pad.right == 1) { - game->course_id = - (game->course_id > MAXFIELD-1) ? 1 : game->course_id + 1; - goto SELECT_COURSE; - } - if (pad.left == 1) { - game->course_id = - (game->course_id < 2) ? MAXFIELD : game->course_id - 1; - goto SELECT_COURSE; - } - - if (pad.circle != 1) { goto SELECT_COURSE; } - */ + if (game->play_id == 1) { + if (pad.right == 1) { + game->course_id = + (game->course_id > MAXFIELD-1) ? 1 : game->course_id + 1; + goto SELECT_COURSE; + } + if (pad.left == 1) { + game->course_id = + (game->course_id < 2) ? MAXFIELD : game->course_id - 1; + goto SELECT_COURSE; } - set_schedule_assumption(sche_game_ready); + if (pad.circle != 1) { goto SELECT_COURSE; } + } - //SELECT_COURSE: - return; + set_schedule_assumption(sche_game_ready); + + SELECT_COURSE: + return; } @@ -270,212 +286,226 @@ { static int blink_count = 0;// - gSprite_PutSprite(27+game->play_id,265,10); - gSprite_PutSpriteEx(SP_SEL_CAR+game->car_id, 50, 120, 1.5, 1.5); - gSprite_PutSpriteEx(SP_SEL_COURSE+game->course_id, 340, 120, 1.7, 1.8); + gSprite_PutSprite(27+game->play_id,265,10); + gSprite_PutSpriteEx(SP_SEL_CAR+game->car_id, 50, 120, 1.5, 1.5); + gSprite_PutSpriteEx(SP_SEL_COURSE+game->course_id, 340, 120, 1.7, 1.8); - /* 点滅 */ - if (blink_count < 35) { - gFont_SetString("GAME START !!", 170, 380); - } - blink_count = (blink_count > 70) ? 0 : blink_count + 1; + /* 点滅 */ + if (blink_count < 35) { + gFont_SetString("GAME START !!", 170, 380); + } + blink_count = (blink_count > 70) ? 0 : blink_count + 1; - set_schedule_assumption(sche_game_main_init); + set_schedule_assumption(sche_game_main_init); + -/* - if (pad.st == 1) { - set_schedule_assumption(sche_game_main_init); - } - if (pad.cross > 0) { - set_schedule_assumption(sche_game_select_car); - } -*/ + if (pad.st == 1) { + set_schedule_assumption(sche_game_main_init); + } + if (pad.cross > 0) { + set_schedule_assumption(sche_game_select_car); + } + } void sche_game_main_init(Game *game) { - if (!game->jiki) - play_init(game); - RUNNIG=0; + if (!game->jiki) + play_init(game); + RUNNIG=0; - set_schedule_assumption(sche_game_main_ready); + set_schedule_assumption(sche_game_main_ready); } static void sche_game_main_ready(Game *game) { - gFont_SetString("Loading....", 180, 100); - set_schedule_assumption(sche_game_main); + gFont_SetString("Loading....", 180, 100); + set_schedule_assumption(sche_game_main); } static void sche_game_main(Game *game) { + /** begin: dispaly RAP TIME **/ + if(RUNNIG==0){ + start_time = game_time_get_msec(); + RUNNIG=1; + } - /** begin: dispaly RAP TIME **/ - if(RUNNIG==0){ - start_time = game_time_get_msec(); - RUNNIG=1; - } + time_count = game_time_get_msec() - start_time; + game_time_set_raptime(raptime,time_count); + gFont_SetString("TIME",300,20); + gFont_SetString(raptime,400,20); + /** end: dispaly RAP TIME **/ - time_count = game_time_get_msec() - start_time; - game_time_set_raptime(raptime,time_count); - gFont_SetString("TIME",300,20); - gFont_SetString(raptime,400,20); - /** end: dispaly RAP TIME **/ - - // light_init(&l); - // set_light(&l); - - car_update(game->jiki); - field_update(game->jiki); - camera_update(game,game->jiki->body->transfer); - // carNode_draw(); + // light_init 㨠init_lightã®æ›¸ãé–“é•ãˆï¼Ÿ + init_light(&l); + set_light(&l); + + car_id_update(game, game->jiki); - gFont_SetStringInt(game->rap, 50, 100); + field_update(game->jiki); + camera_update(game,game->jiki->body->transfer); + carNode_draw(); + + gFont_SetStringInt(game->rap, 50, 100); - /* スピードメーター */ - gSprite_DefSprite(23, 1, 1,(int)(106.0*(game->jiki->speed/game->jiki->speed_max)), 34); - gSprite_PutSprite(23, 400, 400); - /* km/h */ - gSprite_PutSprite(26, 470, 350); - /* Rap */ - gSprite_PutSprite(27, 80, 100); + /* スピードメーター */ + gSprite_DefSprite(23, 1, 1,(int)(106.0*(game->jiki->speed/game->jiki->speed_max)), 34); + gSprite_PutSprite(23, 400, 400); + /* km/h */ + gSprite_PutSprite(26, 470, 350); + /* Rap */ + gSprite_PutSprite(27, 80, 100); - if (game->rap > MAXRAP) { - ranking = 1; - set_schedule_assumption(sche_game_main_goal); - } + if (game->rap > MAXRAP) { + ranking = 1; + set_schedule_assumption(sche_game_main_goal); + } - gFont_SetStringInt((int)(100.0*game->jiki->speed), 380, 350); + gFont_SetStringInt((int)(100.0*game->jiki->speed), 380, 350); - /* - if ((pad.right > 0) && ((game->jiki->speed != 0) || (pad.circle > 0))) { - car_swerve(game->jiki, 1); - } - if ((pad.left > 0) && ((game->jiki->speed != 0) || (pad.circle > 0))) { - car_swerve(game->jiki, -1); - } - if (pad.circle > 0) { - car_accelerate(game->jiki, 1); - } - if (pad.cross > 0) { - car_accelerate(game->jiki, -1); - } + + if ((pad.right > 0) && ((game->jiki->speed != 0) || (pad.circle > 0))) { + car_swerve(game->jiki, 1); + } + if ((pad.left > 0) && ((game->jiki->speed != 0) || (pad.circle > 0))) { + car_swerve(game->jiki, -1); + } + if (pad.circle > 0) { + car_accelerate(game->jiki, 1); + } + if (pad.cross > 0) { + car_accelerate(game->jiki, -1); + } - if (pad.r1 == 1) { - game->camera_type = !game->camera_type; - } - if (pad.st == 1) { - set_schedule_assumption(sche_game_main_pause); - } - */ + if (pad.r1 == 1) { + game->camera_type = !game->camera_type; + } + if (pad.st == 1) { + set_schedule_assumption(sche_game_main_pause); + } + } -/* + void sche_game_main_pause(Game *game) { - static int select = 0; + static int select = 0; - field_update(game->jiki); - // carNode_draw(); + field_update(game->jiki); + carNode_draw(); - if (game->play_id == 1) { - // é¸æŠžãƒžãƒ¼ã‚¯ - gSprite_PutSprite(17, 100, 190+select*100); + if (game->play_id == 1) { + // é¸æŠžãƒžãƒ¼ã‚¯ + gSprite_PutSprite(17, 100, 190+select*100); - gFont_SetString("BACK TO GAME", 200, 200); - gFont_SetString("GO TO TITLE", 200, 300); - } else { - gFont_SetString("Pause ...", 200, 200); - } + gFont_SetString("BACK TO GAME", 200, 200); + gFont_SetString("GO TO TITLE", 200, 300); + } else { + gFont_SetString("Pause ...", 200, 200); + } - if (pad.circle == 1) { - if (select == 0) { - set_schedule_assumption(sche_game_main); - } else { - set_schedule_assumption(sche_game_main_finish); - } - } else if (pad.st == 1) { - set_schedule_assumption(sche_game_main); - } else if (pad.up == 1 || pad.down == 1) { - select = !select; + if (pad.circle == 1) { + if (select == 0) { + set_schedule_assumption(sche_game_main); + } else { + set_schedule_assumption(sche_game_main_finish); } - + } else if (pad.st == 1) { + set_schedule_assumption(sche_game_main); + } else if (pad.up == 1 || pad.down == 1) { + select = !select; + } + } -*/ + void sche_game_main_goal(Game *game) { - /** dispaly TOTAL TIME **/ - game_time_set_raptime(raptime,time_count); + /** dispaly TOTAL TIME **/ + game_time_set_raptime(raptime,time_count); - gFont_SetString("TOTAL TIME",150,20); - gFont_SetString(raptime,400,20); - gFont_SetString("GOAL !!", 220, 150); + gFont_SetString("TOTAL TIME",150,20); + gFont_SetString(raptime,400,20); + gFont_SetString("GOAL !!", 220, 150); #ifdef LINDA - if (ranking == 1) - gFont_SetString("You WIN!!", 200, 250); - else - gFont_SetString("You Lose...", 200, 250); + if (ranking == 1) + gFont_SetString("You WIN!!", 200, 250); + else + gFont_SetString("You Lose...", 200, 250); #endif - car_update(game->jiki); - field_update(game->jiki); - carNode_draw(); - camera_update(game,game->jiki->body->transfer); + + // 宣言ã§ã¯å¼•æ•°ãŒäºŒã¤ã ã£ãŸã‹ã‚‰ã€ç¬¬ä¸€å¼•æ•°ã« game を入れã¦ã¿ãŸ + car_update(game, game->jiki); + field_update(game->jiki); + carNode_draw(); + camera_update(game,game->jiki->body->transfer); - if (true){//pad.st == 1) { - set_schedule_assumption(sche_game_main_finish); - } + if (pad.st == 1) { + set_schedule_assumption(sche_game_main_finish); + } } void sche_game_main_finish(Game *game) { - field_destroy(); - carNode_destroy(); - game_env_init(game); + field_destroy(); + carNode_destroy(); + game_env_init(game); - set_schedule_assumption(sche_game_main_finish2); + set_schedule_assumption(sche_game_main_finish2); } void sche_game_main_finish2(Game *game) { - gFont_SetString("GAME OVER ...", 200, 200); + gFont_SetString("GAME OVER ...", 200, 200); + - /* - if (pad.st == 1) { - set_schedule_assumption(sche_game_opening); - } - */ + if (pad.st == 1) { + set_schedule_assumption(sche_game_opening); + } + } +// é©å½“ã«ä½œã‚Šã¾ã—㟠+void wait_sync(Game *game) +{ + printf("wait_sync\n"); +} + +// é©å½“ã« +void swap_dbuff() +{ + printf("swap_dbuff()\n"); +} void schedule(Game *game) { - sche_func(game); - - if (linda_update(change_state, game) == true){ - set_schedule(game); - } - else{ - unset_schedule(); - } + sche_func(game); + + if (linda_update(change_state, game) == true){ + set_schedule(game); + } + else{ + unset_schedule(); + } - // wait_sync(game); - // swap_dbuff(); - // sjoy_poll(); + wait_sync(game); + swap_dbuff(); + sjoy_poll(); - // ps2util_sprite_Draw(); - // gSprite_Draw_Reset(); - // gFont_Draw_Reset(); + ps2util_sprite_Draw(); + gSprite_Draw_Reset(); + gFont_Draw_Reset(); } diff -r b0249b856488 -r 0b65ca27f113 schedule.h --- a/schedule.h Thu May 26 18:13:40 2011 +0900 +++ b/schedule.h Thu Jun 02 14:56:11 2011 +0900 @@ -1,47 +1,11 @@ +/* schedule.h */ #ifndef SCHEDULE_H #define SCHEDULE_H -#include "game.h" -extern void schedule(Game *game); - -/* -static void set_schedule(); -static void sche_game_init(); -static void sche_game_wait(); -static void sche_game_wait_ready(); -static void sche_game_opening(); -static void sche_game_select_car(); -static void sche_game_select_course(); -static void sche_game_ready(); -static void sche_game_main_init(); -static void sche_game_main_ready(); -static void sche_game_main(); -static void sche_game_main_pause(); -static void sche_game_main_goal(); -static void sche_game_main_finish(); -static void sche_game_main_finish2(); -*/ -/* schedule.c */ -extern void schedule(); -extern Game *game; - - -/* --- car.c --- */ -extern void car_update(CarPtr); -/* --- carNode.c */ -extern void carNode_append(CarPtr); -extern void carNode_draw(); -extern void carNode_destroy(); -/* --- fielc.c */ -extern void field_update(CarPtr); -/* --- mytype.c --- */ -extern void wait_init(); -//extern bool wait(double); -extern void time_RaceStart(); -extern double time_RaceTime(); -/* --- linda.c --- */ -extern void linda_env_init(); - - - #endif + +// game.hã‹ã‚‰ã“ã“ã«ç§»å‹• +void schedule(); + +// car.hã‹ã‚‰ã€‚ +void car_update( Game *game, CarPtr car ); diff -r b0249b856488 -r 0b65ca27f113 sjoy.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sjoy.c Thu Jun 02 14:56:11 2011 +0900 @@ -0,0 +1,144 @@ +// Copyright(C) 2001 Sony Computer Entertainment Inc. All Rights Reserved. +// +// "sjoy.c" +// +// +#include +#include +#include +#include + + +#include "sjoy.h" + +#define N_JOY 2 + +static char *g_devName[N_JOY] = { + "/dev/js0", + "/dev/js1", +}; + +static int g_fd[N_JOY] = { + -1, -1, +}; + +//static __u32 g_button[N_JOY]; // max 32 buttons per joystick +//static __s16 g_axis[N_JOY][2]; // max 2 axis per joystick + +//---------------------------------------------------------------------- +int sjoy_open(void) +{ + int joy; + + sjoy_close(); + + for (joy = 0; joy < N_JOY; joy++) { + assert(g_fd[joy] == -1); + g_fd[joy] = open(g_devName[joy], O_RDONLY | O_NONBLOCK); + if (g_fd[joy] < 0) { + fprintf(stderr, "can't open %s\n", g_devName[joy]); + fprintf(stderr, + "You don't have permission, or should load module for joysticks.\n" + "How to load joystick module:\n" + " # modprobe ps2pad\n"); + return -1; + } + } + + return 0; +} + +//---------------------------------------------------------------------- +int sjoy_close(void) +{ + int joy; + int fail = 0; + + for (joy = 0; joy < N_JOY; joy++) { + if (g_fd[joy] >= 0) { + fail |= close(g_fd[joy]); + } + g_fd[joy] = -1; + } + + return fail ? -1 : 0; +} + +/* é©å½“ã«è‡ªä½œ:miya */ +struct js_event +{ + int type; + int number; + int value; +}; + +int g_button[10]; +int g_axis[10][10]; + +#define JS_EVENT_INIT 1 +#define JS_EVENT_BUTTON 2 +#define JS_EVENT_AXIS 3 +/* ã“ã“ã¾ã§é©å½“ã«è‡ªä½œ:miya */ + + +//---------------------------------------------------------------------- +void sjoy_poll(void) +{ + int joy; + + for (joy = 0; joy < N_JOY; joy++) { + if (g_fd[joy] < 0) { + continue; + } + for (; ;) { + struct js_event e; + int n = read(g_fd[joy], &e, sizeof(e)); + if (n != sizeof(e)) { + break; + } + switch (e.type & ~JS_EVENT_INIT) { + case JS_EVENT_BUTTON: + g_button[joy] &= ~(1 << e.number); + g_button[joy] |= (e.value << e.number); + break; + + case JS_EVENT_AXIS: + g_axis[joy][e.number] = e.value; + break; + + default: + assert(0); + break; + } + } + } + +} + +//---------------------------------------------------------------------- +int sjoy_get_button(int joy) +{ + return g_button[joy]; +} + +//---------------------------------------------------------------------- +int sjoy_get_axis(int joy, int axis) +{ + return g_axis[joy][axis]; +} + +//---------------------------------------------------------------------- +int sjoy_get_ps2_button(int joy) +{ + int w = g_button[joy]; + int a0 = g_axis[joy][0]; + int a1 = g_axis[joy][1]; + int th = 0x4000; + + w |= (a0 < -th) ? SJOY_PS2_L_LEFT : 0; + w |= (a1 > th) ? SJOY_PS2_L_DOWN : 0; + w |= (a0 > th) ? SJOY_PS2_L_RIGHT : 0; + w |= (a1 < -th) ? SJOY_PS2_L_UP : 0; + + return w; +} diff -r b0249b856488 -r 0b65ca27f113 sjoy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sjoy.h Thu Jun 02 14:56:11 2011 +0900 @@ -0,0 +1,56 @@ +// Copyright(C) 2001 Sony Computer Entertainment Inc. All Rights Reserved. +// +// "sjoy.h" +// +// +//---------------------------------------------------------------------- +// defines +//---------------------------------------------------------------------- +// original defines +#define SJOY_PS2_R_LEFT (1) +#define SJOY_PS2_R_DOWN (1 << 1) +#define SJOY_PS2_R_UP (1 << 2) +#define SJOY_PS2_R_RIGHT (1 << 3) +#define SJOY_PS2_L1 (1 << 4) +#define SJOY_PS2_R1 (1 << 5) +#define SJOY_PS2_L2 (1 << 6) +#define SJOY_PS2_R2 (1 << 7) +#define SJOY_PS2_SELECT (1 << 8) +#define SJOY_PS2_START (1 << 9) +#define SJOY_PS2_L_LEFT (1 << 10) +#define SJOY_PS2_L_DOWN (1 << 11) +#define SJOY_PS2_L_UP (1 << 12) +#define SJOY_PS2_L_RIGHT (1 << 13) + +// new defines +#define SJOY_PS2_SQUARE (1) +#define SJOY_PS2_CROSS (1 << 1) +#define SJOY_PS2_TRIANGLE (1 << 2) +#define SJOY_PS2_CIRCLE (1 << 3) +#define SJOY_PS2_LEFT (1 << 10) +#define SJOY_PS2_DOWN (1 << 11) +#define SJOY_PS2_UP (1 << 12) +#define SJOY_PS2_RIGHT (1 << 13) + +// ___ ___ +// [___] L2 (btn 6) [___] R2 (btn 7) +// [___] L1 (btn 4) [___] R1 (btn 5) +// +// (axis 1-) (btn 8) (btn 9) (btn 2) +// ^ LUp Select Start ^ RUp +// | [__] [__> | +// LLeft <-- --> LRight RLeft <-- --> RRight +// (axis 0-)| (axis 0+) (btn 0) | (btn3) +// V LDown V RDown +// (axis 1+) (btn 1) +// + +//---------------------------------------------------------------------- +// prototypes +//---------------------------------------------------------------------- +int sjoy_open(void); +int sjoy_close(void); +void sjoy_poll(void); +int sjoy_get_button(int joy); +int sjoy_get_axis(int joy, int axis); +int sjoy_get_ps2_button(int joy); diff -r b0249b856488 -r 0b65ca27f113 sprite.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sprite.h Thu Jun 02 14:56:11 2011 +0900 @@ -0,0 +1,102 @@ +#define FRAME_ANGLE_NORMAL 0 +#define FRAME_ANGLE_REVERSE_HORIZON 1 +#define FRAME_ANGLE_REVERSE_VERTICAL 2 +#define FRAME_ANGLE_ROTATE_180 3 + +// defines for visible of sprite +#define UNVISIBLE 0 +#define VISIBLE 1 + +#if 0 +typedef struct sprite_frame { + int x; + int y; + int w; + int h; + int offset_x; + int offset_y; + int angle; + int visible; + TEXTURE *texture; +} SPRITE_FRAME; + +typedef struct sprite_polygon { + FVECTOR xyz; + FVECTOR angle; + int polygon_w; + int polygon_h; + int texture_w; + int texture_h; + int offset_x; + int offset_y; + int r,g,b,a; + int visible; + ps2_giftag giftag; + ps2_dmatag *packet; +} SPRITE_POLYGON; + +typedef struct sprite_polygon_head { + int all_number; + TEXTURE *texture; + SPRITE_POLYGON *sprites; // SPRITE_POLYGON + char *free_sprites; // SPRITE_POLYGON + char *free_packets; +} SPRITE_POLYGON_HEAD; + +// sprite_frame's functions +SPRITE_FRAME *create_sprite_frame(int number, TEXTURE *tex); +int draw_sprite_frame(int number, SPRITE_FRAME *sprite); +#define free_sprite_frame free + +// sprite_polygon's functions +SPRITE_POLYGON_HEAD *create_sprite_polygon(int number, TEXTURE *tex); +int draw_sprite_polygon(int number, SPRITE_POLYGON_HEAD *sprite); +void free_sprite_polygon(SPRITE_POLYGON_HEAD *s); +int set_packet_sprite_polygon(int number, SPRITE_POLYGON_HEAD *head); +ps2_giftag *get_giftag_sprite_polygon(int number, SPRITE_POLYGON_HEAD *head); +void sprite_polygon_Set_world( void ); +#endif + +typedef struct { + /* __u64 rgbaq; + __u64 rgbaq_addr; + __u64 st; + __u64 st_addr; + __u64 xyz; + __u64 xyz_addr; + */ + int x; +} GsPrim; + + +/*! + \ref GS primitive data of a sprite. + PS2 doesn't have sprite method, so we have to implement it with using + a substitute method. Fortunately, PS2 has some powerful methods. + Then, we use the TRIANGLE_STRIP drawing option. + + TRIANGLE_STRIP takes 4 GsPrim. +*/ + + +typedef struct { + //ps2_giftag giftag; + //__u64 prim; + //__u64 prim_addr; + GsPrim primData[4]; +} GsSpritePacket; + + +/*! + \ref sprite's GS packet. + gs_packet (\ref GsSpritePacket) is an address of head of GS primitive data + which contains some sprites. then, free_add is an address to free gs_packet. + gs_packet (\ref ) is aligned at 16byte memory border, bacause GS treats this + packet data as that unit. so, we have to manage a real address after aligned. +*/ +typedef struct { + GsSpritePacket* gs_packet; + void* free_addr; + unsigned char enable_offset; + unsigned char enable_num; +} SpritePacketHeader; diff -r b0249b856488 -r 0b65ca27f113 test_vector.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test_vector.c Thu Jun 02 14:56:11 2011 +0900 @@ -0,0 +1,179 @@ +#include +#include "ps2util.h" +#include "libps2.h" + +void init_FVECTOR(FVECTOR v, float num); +void init_FMATRIX(FMATRIX m, float num); +void output_FVECTOR(FVECTOR v); +void output_FMATRIX(FMATRIX m); +void all_init(FVECTOR v0, FVECTOR v1, FMATRIX m0, FMATRIX m1, float num); + +int main(){ + + FVECTOR resultV; + FMATRIX resultM; + float resultf; + + FVECTOR v0,v1; + FMATRIX m0,m1; + + float f0 = 0.5; + float num = 0.1; + + int i,j; + int lim1 = 4; + + //v0,v1,m0,m1 ã‚’åˆæœŸåŒ– + all_init(v0, v1, m0, m1, num); + + printf("v0\n"); + output_FVECTOR(v0); + + printf("v1\n"); + output_FVECTOR(v1); + + printf("m0\n"); + output_FMATRIX(m0); + + printf("m1\n"); + output_FMATRIX(m1); + + printf("\n"); + printf("\n"); + + + + + /*-----------ps2util.c test----------*/ + + ps2_vu0_copy_vector(v0, v1); + printf("ps2_vu0_copy_vector(v0, v1)\n"); + output_FVECTOR(v0); + output_FVECTOR(v1); + printf("\n"); + all_init(v0, v1, m0, m1, num); + + ps2_vu0_unit_matrix(m0); + printf("ps2_vu0_unit_matrix(m0)\n"); + output_FMATRIX(m0); + printf("\n"); + all_init(v0, v1, m0, m1, num); + + ps2_vu0_rot_matrix_y(resultM, m0, f0); + printf("ps2_vu0_rot_matrix_y(resultM, m0, f0)\n"); + output_FMATRIX(resultM); + printf("\n"); + all_init(v0, v1, m0, m1, num); + + ps2_vu0_apply_matrix(resultV, m0, v0); + printf("ps2_vu0_apply_matrix(resultV, m0, v0)\n"); + output_FVECTOR(resultV); + printf("\n"); + all_init(v0, v1, m0, m1, num); + + ps2_vu0_scale_vector(resultV, v0, f0); + printf("ps2_vu0_sacle_vector(resultV, v0, f0)\n"); + output_FVECTOR(resultV); + printf("\n"); + all_init(v0, v1, m0, m1, num); + + ps2_vu0_add_vector(resultV, v0, v1); + printf("ps2_vu0_add_vector(resultV, v0, v1)\n"); + output_FVECTOR(resultV); + printf("\n"); + all_init(v0, v1, m0, m1, num); + + ps2_vu0_outer_product(resultV, v0, v1); + printf("ps2_vu0_outer_product(resultV, v0, v1)\n"); + output_FVECTOR(resultV); + printf("\n"); + all_init(v0, v1, m0, m1, num); + + resultf = ps2_vu0_inner_product(v0, v1); + printf("ps2_vu0_inner_product(v0, v1)\n"); + printf("resultf = %10f\n",&resultf); + printf("\n"); + all_init(v0, v1, m0, m1, num); + + ps2_vu0_mul_matrix(resultM, m0, m1); + printf("ps2_vu0_mul_matrix(resultM, m0, m1)\n"); + output_FMATRIX(resultM); + printf("\n"); + all_init(v0, v1, m0, m1, num); + + ps2_vu0_copy_matrix(m0, m1); + printf("ps2_vu0_copy_matrix(m0, m1)\n"); + output_FMATRIX(m0); + output_FMATRIX(m0); + printf("\n"); + all_init(v0, v1, m0, m1, num); + + ps2_vu0_sub_vector(resultV, v0, v1); + printf("ps2_vu0_sub_vector(resultV, v0, v1)\n"); + output_FVECTOR(resultV); + printf("\n"); + all_init(v0, v1, m0, m1, num); + + ps2_vu0_normalize(resultV, v0); + printf("ps2_vu0_normalize(result, v0)\n"); + output_FVECTOR(resultV); + printf("\n"); + all_init(v0, v1, m0, m1, num); + + +} + + + +//使用ã™ã‚‹å€¤ã®åˆæœŸåŒ– FVECTOR +void init_FVECTOR(FVECTOR v, float num){ + int i; + int lim1=4; + for ( i=0; i