source: EcnlProtoTool/trunk/mrbgems/mruby-arduino/src/sPanCake.c@ 321

Last change on this file since 321 was 321, checked in by coas-nagasima, 7 years ago

文字コードを設定

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-csrc;charset=UTF-8
File size: 18.8 KB
Line 
1/*
2 * PanCake関連
3 *
4 * Copyright (c) 2016 Wakayama.rb Ruby Board developers
5 *
6 * This software is released under the MIT License.
7 * https://github.com/wakayamarb/wrbb-v2lib-firm/blob/master/MITL
8 *
9 */
10#include <arduino.h>
11#include <string.h>
12
13#include <mruby.h>
14#include <mruby/string.h>
15
16#include "../llbruby.h"
17#include "sKernel.h"
18#include "sSerial.h"
19
20#define PANCAKE_BAURATE 115200
21#define PANCAKE_WAIT 4
22
23extern serial_t *serial[];
24
25unsigned char PanSend[96];
26int SerialNum = 1;
27
28/******************************************************/
29/* 画面を消去: PanCake.clear*/
30/* PanCake.clear(cn)*/
31/* cn: 色番号*/
32/******************************************************/
33mrb_value mrb_pancake_Clear(mrb_state *mrb, mrb_value self)
34{
35 int cn;
36
37 mrb_get_args(mrb, "i", &cn);
38
39 PanSend[1] = 0x4;
40 PanSend[2] = 0x0;
41 PanSend[3] = (unsigned char)cn;
42
43 wait_ms(PANCAKE_WAIT);
44 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
45
46 return mrb_nil_value(); /*戻り値は無しですよ。*/
47}
48
49/******************************************************/
50/* 画面に線を引く: PanCake.line*/
51/* PanCake.line(x1,y1,x2,y2,cn)*/
52/* (x1,y1)-(x2,y2)に線を引きます*/
53/* cn: 色番号*/
54/******************************************************/
55mrb_value mrb_pancake_Line(mrb_state *mrb, mrb_value self)
56{
57 int x1;
58 int y1;
59 int x2;
60 int y2;
61 int cn;
62
63 mrb_get_args(mrb, "iiiii", &x1, &y1, &x2, &y2, &cn);
64
65 PanSend[1] = 0x8;
66 PanSend[2] = 0x1;
67 PanSend[3] = (unsigned char)x1;
68 PanSend[4] = (unsigned char)y1;
69 PanSend[5] = (unsigned char)x2;
70 PanSend[6] = (unsigned char)y2;
71 PanSend[7] = (unsigned char)cn;
72
73 wait_ms(PANCAKE_WAIT);
74 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
75
76 return mrb_nil_value(); /*戻り値は無しですよ。*/
77}
78
79/******************************************************/
80/* 画面に円を描く: PanCake.circle*/
81/* PanCake.circle(xc, yc, ra, cn)*/
82/* (xc,yc)を中心に円を描く*/
83/* ra: 半径*/
84/* cn: 色番号*/
85/******************************************************/
86mrb_value mrb_pancake_Circle(mrb_state *mrb, mrb_value self)
87{
88 int xc;
89 int yc;
90 int ra;
91 int cn;
92
93 mrb_get_args(mrb, "iiii", &xc, &yc, &ra, &cn);
94
95 PanSend[1] = 0x7;
96 PanSend[2] = 0xE;
97 PanSend[3] = (unsigned char)xc;
98 PanSend[4] = (unsigned char)yc;
99 PanSend[5] = (unsigned char)ra;
100 PanSend[6] = (unsigned char)cn;
101
102 wait_ms(PANCAKE_WAIT);
103 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
104
105 return mrb_nil_value(); /*戻り値は無しですよ。*/
106}
107
108int hex2int(char s)
109{
110 /* '0' から '9' の文字なら*/
111 if ('0' <= s && s <= '9') {
112 return(s - '0');
113 }
114 /*'A' から 'F' の文字なら*/
115 else if ('A' <= s && s <= 'F') {
116 return(s - 'A' + 10);
117 }
118 /*'a' から 'f' の文字なら*/
119 else if ('a' <= s && s <= 'f') {
120 return(s - 'a' + 10);
121 }
122
123 return 0;
124}
125
126/******************************************************/
127/* 画面に8x8の絵を描く: PanCake.stamp*/
128/* PanCake.stamp(px, py, tc, string)*/
129/* px,py: 絵の左上座標*/
130/* tc: 透明色*/
131/* string: 16進数の文字列が64個*/
132/******************************************************/
133mrb_value mrb_pancake_Stamp(mrb_state *mrb, mrb_value self)
134{
135 int px;
136 int py;
137 int tc;
138 mrb_value text;
139
140 mrb_get_args(mrb, "iiiS", &px, &py, &tc, &text);
141
142 PanSend[1] = 0x26;
143 PanSend[2] = 0x2;
144 PanSend[3] = (unsigned char)px;
145 PanSend[4] = (unsigned char)py;
146 PanSend[5] = (unsigned char)tc;
147
148 char *s = RSTRING_PTR(text);
149
150 for (int i = 0; i < 32; i++) {
151 PanSend[6 + i] = hex2int(s[i * 2]) * 16 + hex2int(s[i * 2 + 1]);
152 }
153
154 wait_ms(PANCAKE_WAIT);
155 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
156
157 return mrb_nil_value(); /*戻り値は無しですよ。*/
158}
159
160/******************************************************/
161/* 画面に8x8の1色の絵を描く: PanCake.stamp1*/
162/* PanCake.stamp1(px, py, cn, string)*/
163/* px,py: 絵の左上座標*/
164/* cn: 描く色*/
165/* string: 16進数の文字列が16個*/
166/******************************************************/
167mrb_value mrb_pancake_Stamp1(mrb_state *mrb, mrb_value self)
168{
169 int px;
170 int py;
171 int cn;
172 mrb_value text;
173
174 mrb_get_args(mrb, "iiiS", &px, &py, &cn, &text);
175
176 PanSend[1] = 0xE;
177 PanSend[2] = 0x3;
178 PanSend[3] = (unsigned char)px;
179 PanSend[4] = (unsigned char)py;
180 PanSend[5] = (unsigned char)cn;
181
182 char *s = RSTRING_PTR(text);
183
184 for (int i = 0; i < 8; i++) {
185 PanSend[6 + i] = hex2int(s[i * 2]) * 16 + hex2int(s[i * 2 + 1]);
186 }
187
188 wait_ms(PANCAKE_WAIT);
189 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
190
191 return mrb_nil_value(); /*戻り値は無しですよ。*/
192}
193
194/******************************************************/
195/* 画面に組み込み画像を描く: PanCake.image*/
196/* PanCake.image(num)*/
197/* num: 組み込み画像の番号*/
198/******************************************************/
199mrb_value mrb_pancake_Image(mrb_state *mrb, mrb_value self)
200{
201 int num;
202
203 mrb_get_args(mrb, "i", &num);
204
205 PanSend[1] = 0x4;
206 PanSend[2] = 0x4;
207 PanSend[3] = (unsigned char)num;
208
209 wait_ms(PANCAKE_WAIT);
210 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
211
212 return mrb_nil_value(); /*戻り値は無しですよ。*/
213}
214
215/******************************************************/
216/* ビデオ出力のON/OFF: PanCake.video*/
217/* PanCake.video(sw)*/
218/* sw: スイッチON/OFF[01/00]*/
219/******************************************************/
220mrb_value mrb_pancake_Video(mrb_state *mrb, mrb_value self)
221{
222 int sw;
223
224 mrb_get_args(mrb, "i", &sw);
225
226 PanSend[1] = 0x4;
227 PanSend[2] = 0x5;
228 PanSend[3] = (unsigned char)sw;
229
230 wait_ms(PANCAKE_WAIT);
231 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
232
233 return mrb_nil_value(); /*戻り値は無しですよ。*/
234}
235
236/******************************************************/
237/* 4ch同時に音を鳴らす: PanCake.sound*/
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*/
243/******************************************************/
244mrb_value mrb_pancake_Sound(mrb_state *mrb, mrb_value self)
245{
246 int o0, o1, o2, o3;
247 int s0, s1, s2, s3;
248
249 mrb_get_args(mrb, "iiiiiiii", &o0, &s0, &o1, &s1, &o2, &s2, &o3, &s3);
250
251 PanSend[1] = 0xB;
252 PanSend[2] = 0x9;
253 PanSend[3] = (unsigned char)o0;
254 PanSend[4] = (unsigned char)s0;
255 PanSend[5] = (unsigned char)o1;
256 PanSend[6] = (unsigned char)s1;
257 PanSend[7] = (unsigned char)o2;
258 PanSend[8] = (unsigned char)s2;
259 PanSend[9] = (unsigned char)o3;
260 PanSend[10] = (unsigned char)s3;
261
262 wait_ms(PANCAKE_WAIT);
263 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
264
265 return mrb_nil_value(); /*戻り値は無しですよ。*/
266}
267
268/******************************************************/
269/* 1ch音を鳴らす: PanCake.sound1*/
270/* PanCake.sound1(cn, on, sn)*/
271/* cn: チャネル*/
272/* on: オクターブ(0~4~7)*/
273/* sn: 音程(0~b) eはノイズ音*/
274/* HighBits4は音色(0~3)*/
275/* 音を消すのは FF*/
276/******************************************************/
277mrb_value mrb_pancake_Sound1(mrb_state *mrb, mrb_value self)
278{
279 int cn, on, sn;
280
281 mrb_get_args(mrb, "iii", &cn, &on, &sn);
282
283 PanSend[1] = 0x6;
284 PanSend[2] = 0xA;
285 PanSend[3] = (unsigned char)cn;
286 PanSend[4] = (unsigned char)on;
287 PanSend[5] = (unsigned char)sn;
288
289 wait_ms(PANCAKE_WAIT);
290 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
291
292 return mrb_nil_value(); /*戻り値は無しですよ。*/
293}
294
295/******************************************************/
296/* 初期状態にする: PanCake.reset*/
297/* PanCake.reset()*/
298/******************************************************/
299mrb_value mrb_pancake_Reset(mrb_state *mrb, mrb_value self)
300{
301 PanSend[1] = 0x3;
302 PanSend[2] = 0xD;
303
304 wait_ms(PANCAKE_WAIT);
305 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
306
307 return mrb_nil_value(); /*戻り値は無しですよ。*/
308}
309
310/******************************************************/
311/* OUTポートに出力: PanCake.out*/
312/* PanCake.out(pf)*/
313/* pf: HIGHにするポート番号を16進数で指定*/
314/******************************************************/
315mrb_value mrb_pancake_Out(mrb_state *mrb, mrb_value self)
316{
317 int pf;
318
319 mrb_get_args(mrb, "i", &pf);
320
321 PanSend[1] = 0x4;
322 PanSend[2] = 0xF;
323 PanSend[3] = (unsigned char)pf;
324
325 wait_ms(PANCAKE_WAIT);
326 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
327
328 return mrb_nil_value(); /*戻り値は無しですよ。*/
329}
330
331/******************************************************/
332/* スプライトを開始する: Sprite.start*/
333/* Sprite.start(num)*/
334/* num: 背景に使う組み込み画像番号*/
335/* 背景をベタ塗りにする場合は num のHighBitsを1にします。*/
336/* スプライト処理を停止するには num を FF にします。*/
337/******************************************************/
338mrb_value mrb_pancake_Start(mrb_state *mrb, mrb_value self)
339{
340 int num;
341
342 mrb_get_args(mrb, "i", &num);
343
344 PanSend[1] = 0x4;
345 PanSend[2] = 0x6;
346 PanSend[3] = (unsigned char)num;
347
348 wait_ms(PANCAKE_WAIT);
349 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
350
351 return mrb_nil_value(); /*戻り値は無しですよ。*/
352}
353
354/******************************************************/
355/* スプライトを作る: Sprite.create*/
356/* Sprite.create(sn, si)*/
357/* sn: スプライト番号 0~15*/
358/* si: 組み込みスプライト画像番号*/
359/* 消すのは FF*/
360/******************************************************/
361mrb_value mrb_pancake_Create(mrb_state *mrb, mrb_value self)
362{
363 int sn, si;
364
365 mrb_get_args(mrb, "ii", &sn, &si);
366
367 PanSend[1] = 0x5;
368 PanSend[2] = 0x7;
369 PanSend[3] = (unsigned char)sn;
370 PanSend[4] = (unsigned char)si;
371
372 wait_ms(PANCAKE_WAIT);
373 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
374
375 return mrb_nil_value(); /*戻り値は無しですよ。*/
376}
377
378/******************************************************/
379/* スプライトの移動: Sprite.move*/
380/* Sprite.move(sn, px,py)*/
381/* sn: スプライト番号 0~15*/
382/* px,py: 画面座標*/
383/******************************************************/
384mrb_value mrb_pancake_Move(mrb_state *mrb, mrb_value self)
385{
386 int sn, px, py;
387
388 mrb_get_args(mrb, "iii", &sn, &px, &py);
389
390 PanSend[1] = 0x6;
391 PanSend[2] = 0x8;
392 PanSend[3] = (unsigned char)sn;
393 PanSend[4] = (unsigned char)px;
394 PanSend[5] = (unsigned char)py;
395
396 wait_ms(PANCAKE_WAIT);
397 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
398
399 return mrb_nil_value(); /*戻り値は無しですよ。*/
400}
401
402/******************************************************/
403/* 音楽再生する: Music.play*/
404/* Music.play(sw)*/
405/* sw: START/STOP[01/00]*/
406/******************************************************/
407mrb_value mrb_pancake_Play(mrb_state *mrb, mrb_value self)
408{
409 int sw;
410
411 mrb_get_args(mrb, "i", &sw);
412
413 PanSend[1] = 0x4;
414 PanSend[2] = 0xC;
415 PanSend[3] = (unsigned char)sw;
416
417 wait_ms(PANCAKE_WAIT);
418 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
419
420 return mrb_nil_value(); /*戻り値は無しですよ。*/
421}
422
423/******************************************************/
424/* C D E F G A B を0x0 ~ 0xBに置き換えます*/
425/* C D E F G A B*/
426/* 0 2 4 5 7 9 B*/
427/******************************************************/
428int score2int(char s)
429{
430 if ('c' == s || s == 'C') {
431 return 0;
432 }
433 else if ('d' == s || s == 'D') {
434 return 2;
435 }
436 else if ('e' == s || s == 'E') {
437 return 4;
438 }
439 else if ('f' == s || s == 'F') {
440 return 5;
441 }
442 else if ('g' == s || s == 'G') {
443 return 7;
444 }
445 else if ('a' == s || s == 'A') {
446 return 9;
447 }
448 else if ('b' == s || s == 'B') {
449 return 11;
450 }
451 return -1;
452}
453
454/******************************************************/
455/* MMLをサウンドchに登録する: Music.score*/
456/* Music.score(ch, pn, tt, string)*/
457/* ch: チャンネル(00~03)*/
458/* pn: 01:即再生、00:後で再生*/
459/* tt: テンポ(0~F)+音色 [ex. 30 == テンポ3、音色0]*/
460/* string: MML 64バイトまで*/
461/******************************************************/
462mrb_value mrb_pancake_Score(mrb_state *mrb, mrb_value self)
463{
464 int ch, pn, tt;
465 mrb_value text;
466
467 mrb_get_args(mrb, "iiiS", &ch, &pn, &tt, &text);
468
469 /*PanSend[1] = 0xE;*/
470 PanSend[2] = 0xB;
471 PanSend[3] = (unsigned char)ch;
472 PanSend[4] = (unsigned char)pn;
473 PanSend[5] = (unsigned char)tt;
474
475 char *s = RSTRING_PTR(text);
476 int len = RSTRING_LEN(text);
477
478 int oct = 0x40;
479 int sc = 0;
480 int j = 0;
481 for (int i = 0; i < len; i++) {
482
483 sc = score2int(s[i]);
484
485 if (s[i] == 'n' || s[i] == 'N') {
486 PanSend[6 + j] = oct + 0x0e;
487 j++;
488 }
489 else if (s[i] == 'r' || s[i] == 'R') {
490 PanSend[6 + j] = oct + 0x0f;
491 j++;
492 }
493 else if (s[i] == '$') {
494 PanSend[6 + j] = 0xfe;
495 j++;
496 }
497 else if (s[i] == '~') {
498 PanSend[6 + j] = 0xfd;
499 j++;
500 }
501 else if (s[i] == '>') {
502 oct += 0x10;
503 }
504 else if (s[i] == '<') {
505 oct -= 0x10;
506 }
507 else if (s[i] == '+') {
508 if (j > 0) {
509 if ((PanSend[6 + j - 1] & 0xf) == 0xb) {
510 PanSend[6 + j - 1] = oct + 1 + 0x0;
511 }
512 else {
513 PanSend[6 + j - 1] ++;
514 }
515 }
516 }
517 else if (s[i] == '-') {
518 if (j > 0) {
519 if ((PanSend[6 + j - 1] & 0xf) == 0x0) {
520 PanSend[6 + j - 1] = oct - 1 + 0xb;
521 }
522 else {
523 PanSend[6 + j - 1] --;
524 }
525 }
526 }
527 else if (sc >= 0 && sc <= 0xb) {
528 PanSend[6 + j] = oct + sc;
529 j++;
530 }
531 }
532 PanSend[6 + j] = 0xff;
533 j++;
534
535 PanSend[1] = 6 + j;
536
537 wait_ms(PANCAKE_WAIT);
538 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
539
540 return mrb_nil_value(); /*戻り値は無しですよ。*/
541}
542
543/******************************************************/
544/* PanCakeで使うシリアルポート番号を指定: PanCake.serial*/
545/* PanCake.serial(num)*/
546/* num: シリアルポート番号(1~3)*/
547/******************************************************/
548mrb_value mrb_pancake_Serial(mrb_state *mrb, mrb_value self)
549{
550 int num;
551 PinName txpin, rxpin;
552
553 mrb_get_args(mrb, "i", &num);
554
555 if (num <= 0 || num > 3) {
556 num = 1;
557 }
558
559 SerialNum = num;
560
561 /*シリアル通信の初期化をします*/
562 if (serial[SerialNum] != 0) {
563 serial_free(serial[SerialNum]);
564 wait_ms(50);
565 }
566
567 if(!portToPins(SCI_SCI0P2x, &txpin, &rxpin))
568 return mrb_nil_value(); /*戻り値は無しですよ。*/
569
570 serial[SerialNum] = mrb_malloc(mrb, sizeof(serial_t));
571 serial_init(serial[SerialNum], txpin, rxpin);
572 serial_baud(serial[SerialNum], PANCAKE_BAURATE);
573
574 return mrb_nil_value(); /*戻り値は無しですよ。*/
575}
576
577/******************************************************/
578/* スプライトの左右反転: Sprite.flip*/
579/* Sprite.flip(sn, fs)*/
580/* sn: スプライト番号 0~15*/
581/* fs: ON/OFF[01/00]*/
582/******************************************************/
583mrb_value mrb_pancake_Flip(mrb_state *mrb, mrb_value self)
584{
585 int sn, fs;
586
587 mrb_get_args(mrb, "ii", &sn, &fs);
588
589 PanSend[1] = 0x5;
590 PanSend[2] = 0x10;
591 PanSend[3] = (unsigned char)sn;
592 PanSend[4] = (unsigned char)fs;
593
594 wait_ms(PANCAKE_WAIT);
595 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
596
597 return mrb_nil_value(); /*戻り値は無しですよ。*/
598}
599
600/******************************************************/
601/* スプライトの回転: Sprite.rotate*/
602/* Sprite.rotate(sn, ra)*/
603/* sn: スプライト番号 0~15*/
604/* ra: 角度[0:0°,1:-90°,2:180°,3:90°]*/
605/******************************************************/
606mrb_value mrb_pancake_Rotate(mrb_state *mrb, mrb_value self)
607{
608 int sn, ra;
609
610 mrb_get_args(mrb, "ii", &sn, &ra);
611
612 PanSend[1] = 0x5;
613 PanSend[2] = 0x11;
614 PanSend[3] = (unsigned char)sn;
615 PanSend[4] = (unsigned char)ra;
616
617 wait_ms(PANCAKE_WAIT);
618 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
619
620 return mrb_nil_value(); /*戻り値は無しですよ。*/
621}
622
623/******************************************************/
624/* スプライト用8x8画像の定義: Sprite.user*/
625/* Sprite.user(dn, tc, string)*/
626/* dn: スプライトの定義番号 FD か FE*/
627/* tc: 透明色*/
628/* string: 16進数の文字列が64個(色の番号です)*/
629/******************************************************/
630mrb_value mrb_pancake_User(mrb_state *mrb, mrb_value self)
631{
632 int sn, tc;
633 mrb_value text;
634
635 mrb_get_args(mrb, "iiS", &sn, &tc, &text);
636
637 PanSend[1] = 0x25;
638 PanSend[2] = 0x12;
639 PanSend[3] = (unsigned char)sn;
640 PanSend[4] = (unsigned char)tc;
641
642 char *s = RSTRING_PTR(text);
643
644 for (int i = 0; i < 32; i++) {
645 PanSend[5 + i] = hex2int(s[i * 2]) * 16 + hex2int(s[i * 2 + 1]);
646 }
647
648 wait_ms(PANCAKE_WAIT);
649 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
650
651 return mrb_nil_value(); /*戻り値は無しですよ。*/
652}
653
654/******************************************************/
655/* ライブラリを定義します*/
656/******************************************************/
657void pancake_Init(mrb_state *mrb)
658{
659 PanSend[0] = 0x80;
660
661 struct RClass *pancakeModule = mrb_define_module(mrb, "PanCake");
662 mrb_define_module_function(mrb, pancakeModule, "serial", mrb_pancake_Serial, MRB_ARGS_REQ(1));
663 mrb_define_module_function(mrb, pancakeModule, "clear", mrb_pancake_Clear, MRB_ARGS_REQ(1));
664 mrb_define_module_function(mrb, pancakeModule, "line", mrb_pancake_Line, MRB_ARGS_REQ(5));
665 mrb_define_module_function(mrb, pancakeModule, "circle", mrb_pancake_Circle, MRB_ARGS_REQ(4));
666 mrb_define_module_function(mrb, pancakeModule, "stamp", mrb_pancake_Stamp, MRB_ARGS_REQ(4));
667 mrb_define_module_function(mrb, pancakeModule, "stamp1", mrb_pancake_Stamp1, MRB_ARGS_REQ(4));
668 mrb_define_module_function(mrb, pancakeModule, "image", mrb_pancake_Image, MRB_ARGS_REQ(1));
669 mrb_define_module_function(mrb, pancakeModule, "video", mrb_pancake_Video, MRB_ARGS_REQ(1));
670 mrb_define_module_function(mrb, pancakeModule, "sound", mrb_pancake_Sound, MRB_ARGS_REQ(8));
671 mrb_define_module_function(mrb, pancakeModule, "sound1", mrb_pancake_Sound1, MRB_ARGS_REQ(3));
672 mrb_define_module_function(mrb, pancakeModule, "reset", mrb_pancake_Reset, MRB_ARGS_NONE());
673 mrb_define_module_function(mrb, pancakeModule, "out", mrb_pancake_Out, MRB_ARGS_REQ(1));
674
675 struct RClass *spriteModule = mrb_define_module(mrb, "Sprite");
676 mrb_define_module_function(mrb, spriteModule, "start", mrb_pancake_Start, MRB_ARGS_REQ(1));
677 mrb_define_module_function(mrb, spriteModule, "create", mrb_pancake_Create, MRB_ARGS_REQ(2));
678 mrb_define_module_function(mrb, spriteModule, "move", mrb_pancake_Move, MRB_ARGS_REQ(3));
679 mrb_define_module_function(mrb, spriteModule, "flip", mrb_pancake_Flip, MRB_ARGS_REQ(2));
680 mrb_define_module_function(mrb, spriteModule, "rotate", mrb_pancake_Rotate, MRB_ARGS_REQ(2));
681 mrb_define_module_function(mrb, spriteModule, "user", mrb_pancake_User, MRB_ARGS_REQ(3));
682
683 struct RClass *musicModule = mrb_define_module(mrb, "Music");
684 mrb_define_module_function(mrb, musicModule, "score", mrb_pancake_Score, MRB_ARGS_REQ(4));
685 mrb_define_module_function(mrb, musicModule, "play", mrb_pancake_Play, MRB_ARGS_REQ(1));
686}
Note: See TracBrowser for help on using the repository browser.