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

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

mruby版ECNLプロトタイピング・ツールを追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-csrc
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/* 初期状æ…
297‹ã«ã™ã‚‹: PanCake.reset*/
298/* PanCake.reset()*/
299/******************************************************/
300mrb_value mrb_pancake_Reset(mrb_state *mrb, mrb_value self)
301{
302 PanSend[1] = 0x3;
303 PanSend[2] = 0xD;
304
305 wait_ms(PANCAKE_WAIT);
306 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
307
308 return mrb_nil_value(); /*戻り値は無しですよ。*/
309}
310
311/******************************************************/
312/* OUTポートに出力: PanCake.out*/
313/* PanCake.out(pf)*/
314/* pf: HIGHにするポート番号を16進数で指定*/
315/******************************************************/
316mrb_value mrb_pancake_Out(mrb_state *mrb, mrb_value self)
317{
318 int pf;
319
320 mrb_get_args(mrb, "i", &pf);
321
322 PanSend[1] = 0x4;
323 PanSend[2] = 0xF;
324 PanSend[3] = (unsigned char)pf;
325
326 wait_ms(PANCAKE_WAIT);
327 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
328
329 return mrb_nil_value(); /*戻り値は無しですよ。*/
330}
331
332/******************************************************/
333/* スプライトを開始する: Sprite.start*/
334/* Sprite.start(num)*/
335/* num: 背景に使う組み込み画像番号*/
336/* 背景をベタ塗りにする場合は num のHighBitsを1にします。*/
337/* スプライト処理を停止するには num を FF にします。*/
338/******************************************************/
339mrb_value mrb_pancake_Start(mrb_state *mrb, mrb_value self)
340{
341 int num;
342
343 mrb_get_args(mrb, "i", &num);
344
345 PanSend[1] = 0x4;
346 PanSend[2] = 0x6;
347 PanSend[3] = (unsigned char)num;
348
349 wait_ms(PANCAKE_WAIT);
350 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
351
352 return mrb_nil_value(); /*戻り値は無しですよ。*/
353}
354
355/******************************************************/
356/* スプライトを作る: Sprite.create*/
357/* Sprite.create(sn, si)*/
358/* sn: スプライト番号 0~15*/
359/* si: 組み込みスプライト画像番号*/
360/* 消すのは FF*/
361/******************************************************/
362mrb_value mrb_pancake_Create(mrb_state *mrb, mrb_value self)
363{
364 int sn, si;
365
366 mrb_get_args(mrb, "ii", &sn, &si);
367
368 PanSend[1] = 0x5;
369 PanSend[2] = 0x7;
370 PanSend[3] = (unsigned char)sn;
371 PanSend[4] = (unsigned char)si;
372
373 wait_ms(PANCAKE_WAIT);
374 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
375
376 return mrb_nil_value(); /*戻り値は無しですよ。*/
377}
378
379/******************************************************/
380/* スプライトの移動: Sprite.move*/
381/* Sprite.move(sn, px,py)*/
382/* sn: スプライト番号 0~15*/
383/* px,py: 画面座標*/
384/******************************************************/
385mrb_value mrb_pancake_Move(mrb_state *mrb, mrb_value self)
386{
387 int sn, px, py;
388
389 mrb_get_args(mrb, "iii", &sn, &px, &py);
390
391 PanSend[1] = 0x6;
392 PanSend[2] = 0x8;
393 PanSend[3] = (unsigned char)sn;
394 PanSend[4] = (unsigned char)px;
395 PanSend[5] = (unsigned char)py;
396
397 wait_ms(PANCAKE_WAIT);
398 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
399
400 return mrb_nil_value(); /*戻り値は無しですよ。*/
401}
402
403/******************************************************/
404/* 音楽再生する: Music.play*/
405/* Music.play(sw)*/
406/* sw: START/STOP[01/00]*/
407/******************************************************/
408mrb_value mrb_pancake_Play(mrb_state *mrb, mrb_value self)
409{
410 int sw;
411
412 mrb_get_args(mrb, "i", &sw);
413
414 PanSend[1] = 0x4;
415 PanSend[2] = 0xC;
416 PanSend[3] = (unsigned char)sw;
417
418 wait_ms(PANCAKE_WAIT);
419 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
420
421 return mrb_nil_value(); /*戻り値は無しですよ。*/
422}
423
424/******************************************************/
425/* C D E F G A B を0x0 ~ 0xBに置き換えます*/
426/* C D E F G A B*/
427/* 0 2 4 5 7 9 B*/
428/******************************************************/
429int score2int(char s)
430{
431 if ('c' == s || s == 'C') {
432 return 0;
433 }
434 else if ('d' == s || s == 'D') {
435 return 2;
436 }
437 else if ('e' == s || s == 'E') {
438 return 4;
439 }
440 else if ('f' == s || s == 'F') {
441 return 5;
442 }
443 else if ('g' == s || s == 'G') {
444 return 7;
445 }
446 else if ('a' == s || s == 'A') {
447 return 9;
448 }
449 else if ('b' == s || s == 'B') {
450 return 11;
451 }
452 return -1;
453}
454
455/******************************************************/
456/* MMLをサウンドchに登録する: Music.score*/
457/* 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バイトまで*/
462/******************************************************/
463mrb_value mrb_pancake_Score(mrb_state *mrb, mrb_value self)
464{
465 int ch, pn, tt;
466 mrb_value text;
467
468 mrb_get_args(mrb, "iiiS", &ch, &pn, &tt, &text);
469
470 /*PanSend[1] = 0xE;*/
471 PanSend[2] = 0xB;
472 PanSend[3] = (unsigned char)ch;
473 PanSend[4] = (unsigned char)pn;
474 PanSend[5] = (unsigned char)tt;
475
476 char *s = RSTRING_PTR(text);
477 int len = RSTRING_LEN(text);
478
479 int oct = 0x40;
480 int sc = 0;
481 int j = 0;
482 for (int i = 0; i < len; i++) {
483
484 sc = score2int(s[i]);
485
486 if (s[i] == 'n' || s[i] == 'N') {
487 PanSend[6 + j] = oct + 0x0e;
488 j++;
489 }
490 else if (s[i] == 'r' || s[i] == 'R') {
491 PanSend[6 + j] = oct + 0x0f;
492 j++;
493 }
494 else if (s[i] == '$') {
495 PanSend[6 + j] = 0xfe;
496 j++;
497 }
498 else if (s[i] == '~') {
499 PanSend[6 + j] = 0xfd;
500 j++;
501 }
502 else if (s[i] == '>') {
503 oct += 0x10;
504 }
505 else if (s[i] == '<') {
506 oct -= 0x10;
507 }
508 else if (s[i] == '+') {
509 if (j > 0) {
510 if ((PanSend[6 + j - 1] & 0xf) == 0xb) {
511 PanSend[6 + j - 1] = oct + 1 + 0x0;
512 }
513 else {
514 PanSend[6 + j - 1] ++;
515 }
516 }
517 }
518 else if (s[i] == '-') {
519 if (j > 0) {
520 if ((PanSend[6 + j - 1] & 0xf) == 0x0) {
521 PanSend[6 + j - 1] = oct - 1 + 0xb;
522 }
523 else {
524 PanSend[6 + j - 1] --;
525 }
526 }
527 }
528 else if (sc >= 0 && sc <= 0xb) {
529 PanSend[6 + j] = oct + sc;
530 j++;
531 }
532 }
533 PanSend[6 + j] = 0xff;
534 j++;
535
536 PanSend[1] = 6 + j;
537
538 wait_ms(PANCAKE_WAIT);
539 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
540
541 return mrb_nil_value(); /*戻り値は無しですよ。*/
542}
543
544/******************************************************/
545/* PanCakeで使うシリアルポート番号を指定: PanCake.serial*/
546/* PanCake.serial(num)*/
547/* num: シリアルポート番号(1~3)*/
548/******************************************************/
549mrb_value mrb_pancake_Serial(mrb_state *mrb, mrb_value self)
550{
551 int num;
552 PinName txpin, rxpin;
553
554 mrb_get_args(mrb, "i", &num);
555
556 if (num <= 0 || num > 3) {
557 num = 1;
558 }
559
560 SerialNum = num;
561
562 /*シリアル通信の初期化をします*/
563 if (serial[SerialNum] != 0) {
564 serial_free(serial[SerialNum]);
565 wait_ms(50);
566 }
567
568 if(!portToPins(SCI_SCI0P2x, &txpin, &rxpin))
569 return mrb_nil_value(); /*戻り値は無しですよ。*/
570
571 serial[SerialNum] = mrb_malloc(mrb, sizeof(serial_t));
572 serial_init(serial[SerialNum], txpin, rxpin);
573 serial_baud(serial[SerialNum], PANCAKE_BAURATE);
574
575 return mrb_nil_value(); /*戻り値は無しですよ。*/
576}
577
578/******************************************************/
579/* スプライトの左右反転: Sprite.flip*/
580/* Sprite.flip(sn, fs)*/
581/* sn: スプライト番号 0~15*/
582/* fs: ON/OFF[01/00]*/
583/******************************************************/
584mrb_value mrb_pancake_Flip(mrb_state *mrb, mrb_value self)
585{
586 int sn, fs;
587
588 mrb_get_args(mrb, "ii", &sn, &fs);
589
590 PanSend[1] = 0x5;
591 PanSend[2] = 0x10;
592 PanSend[3] = (unsigned char)sn;
593 PanSend[4] = (unsigned char)fs;
594
595 wait_ms(PANCAKE_WAIT);
596 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
597
598 return mrb_nil_value(); /*戻り値は無しですよ。*/
599}
600
601/******************************************************/
602/* スプライトの回転: Sprite.rotate*/
603/* Sprite.rotate(sn, ra)*/
604/* sn: スプライト番号 0~15*/
605/* ra: 角度[0:0°,1:-90°,2:180°,3:90°]*/
606/******************************************************/
607mrb_value mrb_pancake_Rotate(mrb_state *mrb, mrb_value self)
608{
609 int sn, ra;
610
611 mrb_get_args(mrb, "ii", &sn, &ra);
612
613 PanSend[1] = 0x5;
614 PanSend[2] = 0x11;
615 PanSend[3] = (unsigned char)sn;
616 PanSend[4] = (unsigned char)ra;
617
618 wait_ms(PANCAKE_WAIT);
619 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
620
621 return mrb_nil_value(); /*戻り値は無しですよ。*/
622}
623
624/******************************************************/
625/* スプライト用8x8画像の定義: Sprite.user*/
626/* Sprite.user(dn, tc, string)*/
627/* dn: スプライトの定義番号 FD か FE*/
628/* tc: 透明色*/
629/* string: 16進数の文字列が64個(色の番号です)*/
630/******************************************************/
631mrb_value mrb_pancake_User(mrb_state *mrb, mrb_value self)
632{
633 int sn, tc;
634 mrb_value text;
635
636 mrb_get_args(mrb, "iiS", &sn, &tc, &text);
637
638 PanSend[1] = 0x25;
639 PanSend[2] = 0x12;
640 PanSend[3] = (unsigned char)sn;
641 PanSend[4] = (unsigned char)tc;
642
643 char *s = RSTRING_PTR(text);
644
645 for (int i = 0; i < 32; i++) {
646 PanSend[5 + i] = hex2int(s[i * 2]) * 16 + hex2int(s[i * 2 + 1]);
647 }
648
649 wait_ms(PANCAKE_WAIT);
650 serial_write(serial[SerialNum], (const unsigned char *)PanSend, PanSend[1]);
651
652 return mrb_nil_value(); /*戻り値は無しですよ。*/
653}
654
655/******************************************************/
656/* ライブラリを定義します*/
657/******************************************************/
658void pancake_Init(mrb_state *mrb)
659{
660 PanSend[0] = 0x80;
661
662 struct RClass *pancakeModule = mrb_define_module(mrb, "PanCake");
663 mrb_define_module_function(mrb, pancakeModule, "serial", mrb_pancake_Serial, MRB_ARGS_REQ(1));
664 mrb_define_module_function(mrb, pancakeModule, "clear", mrb_pancake_Clear, MRB_ARGS_REQ(1));
665 mrb_define_module_function(mrb, pancakeModule, "line", mrb_pancake_Line, MRB_ARGS_REQ(5));
666 mrb_define_module_function(mrb, pancakeModule, "circle", mrb_pancake_Circle, MRB_ARGS_REQ(4));
667 mrb_define_module_function(mrb, pancakeModule, "stamp", mrb_pancake_Stamp, MRB_ARGS_REQ(4));
668 mrb_define_module_function(mrb, pancakeModule, "stamp1", mrb_pancake_Stamp1, MRB_ARGS_REQ(4));
669 mrb_define_module_function(mrb, pancakeModule, "image", mrb_pancake_Image, MRB_ARGS_REQ(1));
670 mrb_define_module_function(mrb, pancakeModule, "video", mrb_pancake_Video, MRB_ARGS_REQ(1));
671 mrb_define_module_function(mrb, pancakeModule, "sound", mrb_pancake_Sound, MRB_ARGS_REQ(8));
672 mrb_define_module_function(mrb, pancakeModule, "sound1", mrb_pancake_Sound1, MRB_ARGS_REQ(3));
673 mrb_define_module_function(mrb, pancakeModule, "reset", mrb_pancake_Reset, MRB_ARGS_NONE());
674 mrb_define_module_function(mrb, pancakeModule, "out", mrb_pancake_Out, MRB_ARGS_REQ(1));
675
676 struct RClass *spriteModule = mrb_define_module(mrb, "Sprite");
677 mrb_define_module_function(mrb, spriteModule, "start", mrb_pancake_Start, MRB_ARGS_REQ(1));
678 mrb_define_module_function(mrb, spriteModule, "create", mrb_pancake_Create, MRB_ARGS_REQ(2));
679 mrb_define_module_function(mrb, spriteModule, "move", mrb_pancake_Move, MRB_ARGS_REQ(3));
680 mrb_define_module_function(mrb, spriteModule, "flip", mrb_pancake_Flip, MRB_ARGS_REQ(2));
681 mrb_define_module_function(mrb, spriteModule, "rotate", mrb_pancake_Rotate, MRB_ARGS_REQ(2));
682 mrb_define_module_function(mrb, spriteModule, "user", mrb_pancake_User, MRB_ARGS_REQ(3));
683
684 struct RClass *musicModule = mrb_define_module(mrb, "Music");
685 mrb_define_module_function(mrb, musicModule, "score", mrb_pancake_Score, MRB_ARGS_REQ(4));
686 mrb_define_module_function(mrb, musicModule, "play", mrb_pancake_Play, MRB_ARGS_REQ(1));
687}
Note: See TracBrowser for help on using the repository browser.