Changeset 321 for EcnlProtoTool/trunk/mrbgems/mruby-arduino/src/sPanCake.c
- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mrbgems/mruby-arduino/src/sPanCake.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 1 1 /* 2 * PanCake é¢é£2 * PanCake関連 3 3 * 4 4 * Copyright (c) 2016 Wakayama.rb Ruby Board developers … … 27 27 28 28 /******************************************************/ 29 /* ç»é¢ãæ¶å»: PanCake.clear*/29 /* 画面を消去: PanCake.clear*/ 30 30 /* PanCake.clear(cn)*/ 31 /* cn: è²çªå·*/31 /* cn: 色番号*/ 32 32 /******************************************************/ 33 33 mrb_value mrb_pancake_Clear(mrb_state *mrb, mrb_value self) … … 44 44 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 45 45 46 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/47 } 48 49 /******************************************************/ 50 /* ç»é¢ã«ç·ãå¼ã: PanCake.line*/46 return mrb_nil_value(); /*戻り値は無しですよ。*/ 47 } 48 49 /******************************************************/ 50 /* 画面に線を引く: PanCake.line*/ 51 51 /* PanCake.line(x1,y1,x2,y2,cn)*/ 52 /* (x1,y1)-(x2,y2) ã«ç·ãå¼ãã¾ã*/53 /* cn: è²çªå·*/52 /* (x1,y1)-(x2,y2)に線を引きます*/ 53 /* cn: 色番号*/ 54 54 /******************************************************/ 55 55 mrb_value mrb_pancake_Line(mrb_state *mrb, mrb_value self) … … 74 74 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 75 75 76 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/77 } 78 79 /******************************************************/ 80 /* ç»é¢ã«åãæã: PanCake.circle*/76 return mrb_nil_value(); /*戻り値は無しですよ。*/ 77 } 78 79 /******************************************************/ 80 /* 画面に円を描く: PanCake.circle*/ 81 81 /* PanCake.circle(xc, yc, ra, cn)*/ 82 /* (xc,yc) ãä¸å¿ã«åãæã*/83 /* ra: åå¾*/84 /* cn: è²çªå·*/82 /* (xc,yc)を中心に円を描く*/ 83 /* ra: 半径*/ 84 /* cn: 色番号*/ 85 85 /******************************************************/ 86 86 mrb_value mrb_pancake_Circle(mrb_state *mrb, mrb_value self) … … 103 103 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 104 104 105 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/105 return mrb_nil_value(); /*戻り値は無しですよ。*/ 106 106 } 107 107 108 108 int hex2int(char s) 109 109 { 110 /* '0' ãã '9' ã®æåãªã*/110 /* '0' から '9' の文字なら*/ 111 111 if ('0' <= s && s <= '9') { 112 112 return(s - '0'); 113 113 } 114 /*'A' ãã 'F' ã®æåãªã*/114 /*'A' から 'F' の文字なら*/ 115 115 else if ('A' <= s && s <= 'F') { 116 116 return(s - 'A' + 10); 117 117 } 118 /*'a' ãã 'f' ã®æåãªã*/118 /*'a' から 'f' の文字なら*/ 119 119 else if ('a' <= s && s <= 'f') { 120 120 return(s - 'a' + 10); … … 125 125 126 126 /******************************************************/ 127 /* ç»é¢ã«8x8ã®çµµãæã: PanCake.stamp*/127 /* 画面に8x8の絵を描く: PanCake.stamp*/ 128 128 /* PanCake.stamp(px, py, tc, string)*/ 129 /* px,py: çµµã®å·¦ä¸åº§æ¨*/130 /* tc: éæè²*/131 /* string: 16 é²æ°ã®æååã64å*/129 /* px,py: 絵の左上座標*/ 130 /* tc: 透明色*/ 131 /* string: 16進数の文字列が64個*/ 132 132 /******************************************************/ 133 133 mrb_value mrb_pancake_Stamp(mrb_state *mrb, mrb_value self) … … 155 155 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 156 156 157 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/158 } 159 160 /******************************************************/ 161 /* ç»é¢ã«8x8ã®1è²ã®çµµãæã: PanCake.stamp1*/157 return mrb_nil_value(); /*戻り値は無しですよ。*/ 158 } 159 160 /******************************************************/ 161 /* 画面に8x8の1色の絵を描く: PanCake.stamp1*/ 162 162 /* PanCake.stamp1(px, py, cn, string)*/ 163 /* px,py: çµµã®å·¦ä¸åº§æ¨*/164 /* cn: æãè²*/165 /* string: 16 é²æ°ã®æååã16å*/163 /* px,py: 絵の左上座標*/ 164 /* cn: 描く色*/ 165 /* string: 16進数の文字列が16個*/ 166 166 /******************************************************/ 167 167 mrb_value mrb_pancake_Stamp1(mrb_state *mrb, mrb_value self) … … 189 189 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 190 190 191 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/192 } 193 194 /******************************************************/ 195 /* ç»é¢ã«çµã¿è¾¼ã¿ç»åãæã: PanCake.image*/191 return mrb_nil_value(); /*戻り値は無しですよ。*/ 192 } 193 194 /******************************************************/ 195 /* 画面に組み込み画像を描く: PanCake.image*/ 196 196 /* PanCake.image(num)*/ 197 /* num: çµã¿è¾¼ã¿ç»åã®çªå·*/197 /* num: 組み込み画像の番号*/ 198 198 /******************************************************/ 199 199 mrb_value mrb_pancake_Image(mrb_state *mrb, mrb_value self) … … 210 210 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 211 211 212 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/213 } 214 215 /******************************************************/ 216 /* ãããªåºåã®ON/OFF: PanCake.video*/212 return mrb_nil_value(); /*戻り値は無しですよ。*/ 213 } 214 215 /******************************************************/ 216 /* ビデオ出力のON/OFF: PanCake.video*/ 217 217 /* PanCake.video(sw)*/ 218 /* sw: ã¹ã¤ããON/OFF[01/00]*/218 /* sw: スイッチON/OFF[01/00]*/ 219 219 /******************************************************/ 220 220 mrb_value mrb_pancake_Video(mrb_state *mrb, mrb_value self) … … 231 231 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 232 232 233 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/234 } 235 236 /******************************************************/ 237 /* 4ch åæã«é³ãé³´ãã: PanCake.sound*/233 return mrb_nil_value(); /*戻り値は無しですよ。*/ 234 } 235 236 /******************************************************/ 237 /* 4ch同時に音を鳴らす: PanCake.sound*/ 238 238 /* PanCake.sound(o0, s0, o1, s1, o2, s2, o3, s3)*/ 239 /* o0,o1,o2,o3: ãªã¯ã¿ã¼ã(0ï½4ï½7)*/240 /* s0,s1,s2,s3: é³ç¨(0ï½b) eã¯ãã¤ãºé³*/241 /* HighBits4 ã¯é³è²(0ï½3)*/242 /* é³ãæ¶ãã®ã¯FF*/239 /* o0,o1,o2,o3: オクターブ(0~4~7)*/ 240 /* s0,s1,s2,s3: 音程(0~b) eはノイズ音*/ 241 /* HighBits4は音色(0~3)*/ 242 /* 音を消すのは FF*/ 243 243 /******************************************************/ 244 244 mrb_value mrb_pancake_Sound(mrb_state *mrb, mrb_value self) … … 263 263 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 264 264 265 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/266 } 267 268 /******************************************************/ 269 /* 1ch é³ãé³´ãã: PanCake.sound1*/265 return mrb_nil_value(); /*戻り値は無しですよ。*/ 266 } 267 268 /******************************************************/ 269 /* 1ch音を鳴らす: PanCake.sound1*/ 270 270 /* PanCake.sound1(cn, on, sn)*/ 271 /* cn: ãã£ãã«*/272 /* on: ãªã¯ã¿ã¼ã(0ï½4ï½7)*/273 /* sn: é³ç¨(0ï½b) eã¯ãã¤ãºé³*/274 /* HighBits4 ã¯é³è²(0ï½3)*/275 /* é³ãæ¶ãã®ã¯FF*/271 /* cn: チャネル*/ 272 /* on: オクターブ(0~4~7)*/ 273 /* sn: 音程(0~b) eはノイズ音*/ 274 /* HighBits4は音色(0~3)*/ 275 /* 音を消すのは FF*/ 276 276 /******************************************************/ 277 277 mrb_value mrb_pancake_Sound1(mrb_state *mrb, mrb_value self) … … 290 290 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 291 291 292 return mrb_nil_value(); /*æ»ãå¤ã¯ç¡ãã§ããã*/ 293 } 294 295 /******************************************************/ 296 /* åæç¶æ 297 ã«ãã: PanCake.reset*/ 292 return mrb_nil_value(); /*戻り値は無しですよ。*/ 293 } 294 295 /******************************************************/ 296 /* 初期状態にする: PanCake.reset*/ 298 297 /* PanCake.reset()*/ 299 298 /******************************************************/ … … 306 305 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 307 306 308 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/309 } 310 311 /******************************************************/ 312 /* OUT ãã¼ãã«åºå: PanCake.out*/307 return mrb_nil_value(); /*戻り値は無しですよ。*/ 308 } 309 310 /******************************************************/ 311 /* OUTポートに出力: PanCake.out*/ 313 312 /* PanCake.out(pf)*/ 314 /* pf: HIGH ã«ãããã¼ãçªå·ã16é²æ°ã§æå®*/313 /* pf: HIGHにするポート番号を16進数で指定*/ 315 314 /******************************************************/ 316 315 mrb_value mrb_pancake_Out(mrb_state *mrb, mrb_value self) … … 327 326 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 328 327 329 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/330 } 331 332 /******************************************************/ 333 /* ã¹ãã©ã¤ããéå§ãã: Sprite.start*/328 return mrb_nil_value(); /*戻り値は無しですよ。*/ 329 } 330 331 /******************************************************/ 332 /* スプライトを開始する: Sprite.start*/ 334 333 /* Sprite.start(num)*/ 335 /* num: èæ¯ã«ä½¿ãçµã¿è¾¼ã¿ç»åçªå·*/336 /* èæ¯ããã¿å¡ãã«ããå ´å㯠num ã®HighBitsã1ã«ãã¾ãã*/337 /* ã¹ãã©ã¤ãå¦çãåæ¢ããã«ã¯ num ã FF ã«ãã¾ãã*/334 /* num: 背景に使う組み込み画像番号*/ 335 /* 背景をベタ塗りにする場合は num のHighBitsを1にします。*/ 336 /* スプライト処理を停止するには num を FF にします。*/ 338 337 /******************************************************/ 339 338 mrb_value mrb_pancake_Start(mrb_state *mrb, mrb_value self) … … 350 349 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 351 350 352 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/353 } 354 355 /******************************************************/ 356 /* ã¹ãã©ã¤ããä½ã: Sprite.create*/351 return mrb_nil_value(); /*戻り値は無しですよ。*/ 352 } 353 354 /******************************************************/ 355 /* スプライトを作る: Sprite.create*/ 357 356 /* Sprite.create(sn, si)*/ 358 /* sn: ã¹ãã©ã¤ãçªå· 0ï½15*/359 /* si: çµã¿è¾¼ã¿ã¹ãã©ã¤ãç»åçªå·*/360 /* æ¶ãã®ã¯FF*/357 /* sn: スプライト番号 0~15*/ 358 /* si: 組み込みスプライト画像番号*/ 359 /* 消すのは FF*/ 361 360 /******************************************************/ 362 361 mrb_value mrb_pancake_Create(mrb_state *mrb, mrb_value self) … … 374 373 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 375 374 376 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/377 } 378 379 /******************************************************/ 380 /* ã¹ãã©ã¤ãã®ç§»å: Sprite.move*/375 return mrb_nil_value(); /*戻り値は無しですよ。*/ 376 } 377 378 /******************************************************/ 379 /* スプライトの移動: Sprite.move*/ 381 380 /* Sprite.move(sn, px,py)*/ 382 /* sn: ã¹ãã©ã¤ãçªå· 0ï½15*/383 /* px,py: ç»é¢åº§æ¨*/381 /* sn: スプライト番号 0~15*/ 382 /* px,py: 画面座標*/ 384 383 /******************************************************/ 385 384 mrb_value mrb_pancake_Move(mrb_state *mrb, mrb_value self) … … 398 397 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 399 398 400 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/401 } 402 403 /******************************************************/ 404 /* é³æ¥½åçãã: Music.play*/399 return mrb_nil_value(); /*戻り値は無しですよ。*/ 400 } 401 402 /******************************************************/ 403 /* 音楽再生する: Music.play*/ 405 404 /* Music.play(sw)*/ 406 405 /* sw: START/STOP[01/00]*/ … … 419 418 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 420 419 421 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/422 } 423 424 /******************************************************/ 425 /* C D E F G A B ã0x0 ï½ 0xBã«ç½®ãæãã¾ã*/420 return mrb_nil_value(); /*戻り値は無しですよ。*/ 421 } 422 423 /******************************************************/ 424 /* C D E F G A B を0x0 ~ 0xBに置き換えます*/ 426 425 /* C D E F G A B*/ 427 426 /* 0 2 4 5 7 9 B*/ … … 454 453 455 454 /******************************************************/ 456 /* MML ããµã¦ã³ãchã«ç»é²ãã: Music.score*/455 /* MMLをサウンドchに登録する: Music.score*/ 457 456 /* Music.score(ch, pn, tt, string)*/ 458 /* ch: ãã£ã³ãã«(00ï½03)*/459 /* pn: 01: å³åçã00:å¾ã§åç*/460 /* tt: ãã³ã(0ï½F)+é³è² [ex. 30 == ãã³ã3ãé³è²0]*/461 /* string: MML 64 ãã¤ãã¾ã§*/457 /* ch: チャンネル(00~03)*/ 458 /* pn: 01:即再生、00:後で再生*/ 459 /* tt: テンポ(0~F)+音色 [ex. 30 == テンポ3、音色0]*/ 460 /* string: MML 64バイトまで*/ 462 461 /******************************************************/ 463 462 mrb_value mrb_pancake_Score(mrb_state *mrb, mrb_value self) … … 539 538 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 540 539 541 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/542 } 543 544 /******************************************************/ 545 /* PanCake ã§ä½¿ãã·ãªã¢ã«ãã¼ãçªå·ãæå®: PanCake.serial*/540 return mrb_nil_value(); /*戻り値は無しですよ。*/ 541 } 542 543 /******************************************************/ 544 /* PanCakeで使うシリアルポート番号を指定: PanCake.serial*/ 546 545 /* PanCake.serial(num)*/ 547 /* num: ã·ãªã¢ã«ãã¼ãçªå·(1ï½3)*/546 /* num: シリアルポート番号(1~3)*/ 548 547 /******************************************************/ 549 548 mrb_value mrb_pancake_Serial(mrb_state *mrb, mrb_value self) … … 560 559 SerialNum = num; 561 560 562 /* ã·ãªã¢ã«éä¿¡ã®åæåããã¾ã*/561 /*シリアル通信の初期化をします*/ 563 562 if (serial[SerialNum] != 0) { 564 563 serial_free(serial[SerialNum]); … … 567 566 568 567 if(!portToPins(SCI_SCI0P2x, &txpin, &rxpin)) 569 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/568 return mrb_nil_value(); /*戻り値は無しですよ。*/ 570 569 571 570 serial[SerialNum] = mrb_malloc(mrb, sizeof(serial_t)); … … 573 572 serial_baud(serial[SerialNum], PANCAKE_BAURATE); 574 573 575 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/576 } 577 578 /******************************************************/ 579 /* ã¹ãã©ã¤ãã®å·¦å³å転: Sprite.flip*/574 return mrb_nil_value(); /*戻り値は無しですよ。*/ 575 } 576 577 /******************************************************/ 578 /* スプライトの左右反転: Sprite.flip*/ 580 579 /* Sprite.flip(sn, fs)*/ 581 /* sn: ã¹ãã©ã¤ãçªå· 0ï½15*/580 /* sn: スプライト番号 0~15*/ 582 581 /* fs: ON/OFF[01/00]*/ 583 582 /******************************************************/ … … 596 595 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 597 596 598 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/599 } 600 601 /******************************************************/ 602 /* ã¹ãã©ã¤ãã®å転: Sprite.rotate*/597 return mrb_nil_value(); /*戻り値は無しですよ。*/ 598 } 599 600 /******************************************************/ 601 /* スプライトの回転: Sprite.rotate*/ 603 602 /* Sprite.rotate(sn, ra)*/ 604 /* sn: ã¹ãã©ã¤ãçªå· 0ï½15*/605 /* ra: è§åº¦[0:0°,1:-90°,2:180°,3:90°]*/603 /* sn: スプライト番号 0~15*/ 604 /* ra: 角度[0:0°,1:-90°,2:180°,3:90°]*/ 606 605 /******************************************************/ 607 606 mrb_value mrb_pancake_Rotate(mrb_state *mrb, mrb_value self) … … 619 618 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 620 619 621 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/622 } 623 624 /******************************************************/ 625 /* ã¹ãã©ã¤ãç¨8x8ç»åã®å®ç¾©: Sprite.user*/620 return mrb_nil_value(); /*戻り値は無しですよ。*/ 621 } 622 623 /******************************************************/ 624 /* スプライト用8x8画像の定義: Sprite.user*/ 626 625 /* Sprite.user(dn, tc, string)*/ 627 /* dn: ã¹ãã©ã¤ãã®å®ç¾©çªå· FD ãFE*/628 /* tc: éæè²*/629 /* string: 16 é²æ°ã®æååã64å(è²ã®çªå·ã§ã)*/626 /* dn: スプライトの定義番号 FD か FE*/ 627 /* tc: 透明色*/ 628 /* string: 16進数の文字列が64個(色の番号です)*/ 630 629 /******************************************************/ 631 630 mrb_value mrb_pancake_User(mrb_state *mrb, mrb_value self) … … 650 649 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]); 651 650 652 return mrb_nil_value(); /* æ»ãå¤ã¯ç¡ãã§ããã*/653 } 654 655 /******************************************************/ 656 /* ã©ã¤ãã©ãªãå®ç¾©ãã¾ã*/651 return mrb_nil_value(); /*戻り値は無しですよ。*/ 652 } 653 654 /******************************************************/ 655 /* ライブラリを定義します*/ 657 656 /******************************************************/ 658 657 void pancake_Init(mrb_state *mrb)
Note:
See TracChangeset
for help on using the changeset viewer.