1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 1
************ OBJECT LISTING ************
FILE NAME: G:\Casio SDK\Projekte\Firework\Snow.c
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
Snow.c 1 #include "mathf.h"
Snow.c 2
Snow.c 3 char *Disp_GetVRAMPtr(void);
Snow.c 4 int Timer_Install(int TimerID, void (*handler)(void), int delay);
Snow.c 5 int Timer_Start(int TimerID);
Snow.c 6 void App_PROG();
Snow.c 7 int RTC_GetTicks();
Snow.c 8 void AllClear_VRAM();
Snow.c 9
Snow.c 10 typedef struct{
Snow.c 11 unsigned int x1;
Snow.c 12 unsigned int y1;
Snow.c 13 unsigned int x2;
Snow.c 14 unsigned int y2;
Snow.c 15 unsigned char f[4];
Snow.c 16 unsigned int on_bits;
Snow.c 17 unsigned int off_bits;
Snow.c 18 } TShape;
Snow.c 19
Snow.c 20 void ShapeToVRAM( TShape* x );
Snow.c 21
Snow.c 22 char *vram;
Snow.c 23
Snow.c 24 const int SysCallWrapper[] = {0xD201422B,0x60F20000,0x80010070};
Snow.c 25 const int (*iSysCallFuncPtr)( int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallWrapper;
Snow.c 26 #define Alpha_GetData(VarName,Dest) (void)(*iSysCallFuncPtr)( VarName,(int)Dest, 0, 0, 0x04DF)
Snow.c 27 #define Alpha_ClearAll() (void)(*iSysCallFuncPtr)( 0,0, 0, 0, 0x004E1)
Snow.c 28
Snow.c 29 int InputString( unsigned char*buff, unsigned char *heading, int maxlen );
Snow.c 30
Snow.c 31 static unsigned int lastrandom=0x12345678;
Snow.c 32
Snow.c 33 unsigned int random( int seed){
P 00000000 _random: ; function: random
; frame size=4
00000000 4F12 STS.L MACL,@-R15
Snow.c 34 if (seed) lastrandom=seed;
00000002 2448 TST R4,R4
00000004 D53C MOV.L L413+4,R5 ; __$lastrandom
00000006 8900 BT L366
00000008 2542 MOV.L R4,@R5
0000000A L366:
Snow.c 35 lastrandom = ( 0x41C64E6D*lastrandom ) + 0x3039;
0000000A D33C MOV.L L413+8,R3 ; H'41C64E6D
0000000C 6252 MOV.L @R5,R2
0000000E 0237 MUL.L R3,R2
00000010 9170 MOV.W L413,R1 ; H'3039
00000012 031A STS MACL,R3
00000014 331C ADD R1,R3
Snow.c 36 return ( lastrandom >> 16 );
00000016 6033 MOV R3,R0
00000018 2532 MOV.L R3,@R5
0000001A 4029 SHLR16 R0
Snow.c 37 }
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 2
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
0000001C 000B RTS
0000001E 4F16 LDS.L @R15+,MACL
Snow.c 38
Snow.c 39 const char sprite[9][3] = {
Snow.c 40 { 0 , 1 , 0 },
Snow.c 41 { 1 , 1 , 1 },
Snow.c 42 { 1 , 0 , 1 },
Snow.c 43 { 1 , 0 , 1 },
Snow.c 44 { 1 , 0 , 1 },
Snow.c 45 { 1 , 1 , 1 },
Snow.c 46 { 0 , 0 , 1 },
Snow.c 47 { 0 , 0 , 1 },
Snow.c 48 { 0 , 0 , 1 }
Snow.c 49 };
Snow.c 50
Snow.c 51 #define abs(x) (x < 0)?-x:x
Snow.c 52 #define sgn(x) (x < 0)?-1:(x == 0)?0:1
Snow.c 53
Snow.c 54 void setpixel(unsigned char x, char y)
00000020 _setpixel: ; function: setpixel
; frame size=32
00000020 4F22 STS.L PR,@-R15
Snow.c 55 {
Snow.c 56 TShape t;
Snow.c 57 if(x&~127 || y&~63) return;
00000022 624C EXTU.B R4,R2
00000024 7FE4 ADD #-28,R15
00000026 E380 MOV #-128,R3
00000028 2238 TST R3,R2
0000002A 8B14 BF L370
0000002C 605E EXTS.B R5,R0
0000002E E2C0 MOV #-64,R2
00000030 2028 TST R2,R0
00000032 8B10 BF L370
Snow.c 58 t.x1 = x;
00000034 644C EXTU.B R4,R4
Snow.c 59 t.y1 = y;
00000036 655E EXTS.B R5,R5
00000038 2F42 MOV.L R4,@R15
Snow.c 60 t.f[0] = 2;
0000003A E302 MOV #2,R3
0000003C 1F51 MOV.L R5,@(4,R15)
0000003E E010 MOV #16,R0
00000040 0F34 MOV.B R3,@(R0,R15)
Snow.c 61 t.f[1] = 1;
00000042 E401 MOV #1,R4
Snow.c 62 t.f[2] = 1;
Snow.c 63 t.f[3] = 1;
Snow.c 64
Snow.c 65 ShapeToDD(&t);
00000044 D32E MOV.L L413+12,R3 ; _ShapeToDD
00000046 E011 MOV #17,R0
00000048 0F44 MOV.B R4,@(R0,R15)
0000004A E012 MOV #18,R0
0000004C 0F44 MOV.B R4,@(R0,R15)
0000004E E013 MOV #19,R0
00000050 0F44 MOV.B R4,@(R0,R15)
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 3
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
00000052 430B JSR @R3
00000054 64F3 MOV R15,R4
Snow.c 66 }
00000056 L370:
00000056 7F1C ADD #28,R15
00000058 4F26 LDS.L @R15+,PR
0000005A 000B RTS
0000005C 0009 NOP
Snow.c 67
Snow.c 68 void line(int x1, int y1, int x2, int y2)
0000005E _line: ; function: line
; frame size=36
Snow.c 69 {
Snow.c 70 int i, x, y, dx, dy, sx, sy, cumul;
Snow.c 71 x = x1;
Snow.c 72 y = y1;
Snow.c 73 dx = x2 - x1;
0000005E 6363 MOV R6,R3
00000060 2FE6 MOV.L R14,@-R15
Snow.c 74 dy = y2 - y1;
00000062 6273 MOV R7,R2
00000064 2FD6 MOV.L R13,@-R15
00000066 3348 SUB R4,R3
00000068 2FC6 MOV.L R12,@-R15
0000006A 6D43 MOV R4,R13
0000006C 2FB6 MOV.L R11,@-R15
0000006E 6C53 MOV R5,R12
00000070 2FA6 MOV.L R10,@-R15
00000072 6433 MOV R3,R4
00000074 2F96 MOV.L R9,@-R15
00000076 3258 SUB R5,R2
00000078 2F86 MOV.L R8,@-R15
Snow.c 75 sx = sgn(dx);
0000007A 4411 CMP/PZ R4
0000007C 4F22 STS.L PR,@-R15
0000007E 7FFC ADD #-4,R15
00000080 8D02 BT/S L371
00000082 6523 MOV R2,R5
00000084 A005 BRA L373
00000086 E8FF MOV #-1,R8
00000088 L371:
00000088 2448 TST R4,R4
0000008A 8B01 BF L372
0000008C A001 BRA L373
0000008E E800 MOV #0,R8
00000090 L372:
00000090 E801 MOV #1,R8
00000092 L373:
Snow.c 76 sy = sgn(dy);
00000092 4511 CMP/PZ R5
00000094 8901 BT L375
00000096 A005 BRA L377
00000098 E2FF MOV #-1,R2
0000009A L375:
0000009A 2558 TST R5,R5
0000009C 8B01 BF L376
0000009E A001 BRA L377
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 4
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
000000A0 E200 MOV #0,R2
000000A2 L376:
000000A2 E201 MOV #1,R2
000000A4 L377:
Snow.c 77 dx = abs(dx);
000000A4 4411 CMP/PZ R4
000000A6 8D02 BT/S L379
000000A8 2F22 MOV.L R2,@R15
000000AA A001 BRA L380
000000AC 6E4B NEG R4,R14
000000AE L379:
000000AE 6E43 MOV R4,R14
000000B0 L380:
Snow.c 78 dy = abs(dy);
000000B0 4511 CMP/PZ R5
000000B2 8901 BT L381
000000B4 A001 BRA L382
000000B6 6B5B NEG R5,R11
000000B8 L381:
000000B8 6B53 MOV R5,R11
000000BA L382:
Snow.c 79 setpixel(x, y);
000000BA 65C3 MOV R12,R5
000000BC BFB0 BSR _setpixel
000000BE 64D3 MOV R13,R4
Snow.c 80 if(dx > dy)
000000C0 3EB7 CMP/GT R11,R14
000000C2 8F1F BF/S L383
000000C4 E401 MOV #1,R4
Snow.c 81 {
Snow.c 82 cumul = dx / 2;
000000C6 6AE3 MOV R14,R10
000000C8 E300 MOV #0,R3
000000CA 33A7 CMP/GT R10,R3
000000CC 3A3E ADDC R3,R10
000000CE 4A21 SHAR R10
Snow.c 83 for(i=1 ; i<dx ; i++)
000000D0 6943 MOV R4,R9
000000D2 39E3 CMP/GE R14,R9
000000D4 892B BT L387
000000D6 L385:
Snow.c 84 {
Snow.c 85 x += sx;
Snow.c 86 cumul += dy;
000000D6 3ABC ADD R11,R10
Snow.c 87 if(cumul > dx)
000000D8 3AE7 CMP/GT R14,R10
000000DA 8F03 BF/S L386
000000DC 3D8C ADD R8,R13
Snow.c 88 {
Snow.c 89 cumul -= dx;
000000DE 3AE8 SUB R14,R10
Snow.c 90 y += sy;
000000E0 62F2 MOV.L @R15,R2
000000E2 3C2C ADD R2,R12
000000E4 L386:
Snow.c 91 }
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 5
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
Snow.c 92 setpixel(x, y);
000000E4 65C3 MOV R12,R5
000000E6 BF9B BSR _setpixel
000000E8 64D3 MOV R13,R4
000000EA 7901 ADD #1,R9
000000EC 39E3 CMP/GE R14,R9
000000EE 8BF2 BF L385
000000F0 A01D BRA L387
000000F2 0009 NOP
000000F4 L413:
000000F4 3039 .DATA.W H'3039
000000F6 0000 .DATA.W 0
000000F8 <00000000> .DATA.L __$lastrandom
000000FC 41C64E6D .DATA.L H'41C64E6D
00000100 <00000000> .DATA.L _ShapeToDD
00000104 L383:
Snow.c 93 }
Snow.c 94 }
Snow.c 95 else
Snow.c 96 {
Snow.c 97 cumul = dy / 2;
00000104 6AB3 MOV R11,R10
00000106 E300 MOV #0,R3
00000108 33A7 CMP/GT R10,R3
0000010A 3A3E ADDC R3,R10
0000010C 4A21 SHAR R10
Snow.c 98 for(i=1 ; i<dy ; i++)
0000010E 6943 MOV R4,R9
00000110 39B3 CMP/GE R11,R9
00000112 890C BT L387
00000114 L389:
Snow.c 99 {
Snow.c 100 y += sy;
00000114 63F2 MOV.L @R15,R3
Snow.c 101 cumul += dx;
00000116 3AEC ADD R14,R10
Snow.c 102 if(cumul > dy)
00000118 3AB7 CMP/GT R11,R10
0000011A 8F02 BF/S L390
0000011C 3C3C ADD R3,R12
Snow.c 103 {
Snow.c 104 cumul -= dy;
0000011E 3AB8 SUB R11,R10
Snow.c 105 x += sx;
00000120 3D8C ADD R8,R13
00000122 L390:
Snow.c 106 }
Snow.c 107 setpixel(x, y);
00000122 65C3 MOV R12,R5
00000124 BF7C BSR _setpixel
00000126 64D3 MOV R13,R4
00000128 7901 ADD #1,R9
0000012A 39B3 CMP/GE R11,R9
0000012C 8BF2 BF L389
0000012E L387:
Snow.c 108 }
Snow.c 109 }
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 6
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
Snow.c 110 }
0000012E 7F04 ADD #4,R15
00000130 4F26 LDS.L @R15+,PR
00000132 68F6 MOV.L @R15+,R8
00000134 69F6 MOV.L @R15+,R9
00000136 6AF6 MOV.L @R15+,R10
00000138 6BF6 MOV.L @R15+,R11
0000013A 6CF6 MOV.L @R15+,R12
0000013C 6DF6 MOV.L @R15+,R13
0000013E 000B RTS
00000140 6EF6 MOV.L @R15+,R14
Snow.c 111
Snow.c 112 void drawsprite(unsigned char px, char py, float dirx)
00000142 _drawsprite: ; function: drawsprite
; frame size=44
; used runtime library name:
; __adds, __muls, __stoi, __stou, __itos, __lts
00000142 6043 MOV R4,R0
00000144 2FE6 MOV.L R14,@-R15
00000146 2FD6 MOV.L R13,@-R15
00000148 2FC6 MOV.L R12,@-R15
0000014A 2FB6 MOV.L R11,@-R15
0000014C 2FA6 MOV.L R10,@-R15
0000014E 2F96 MOV.L R9,@-R15
00000150 2F86 MOV.L R8,@-R15
Snow.c 113 {
Snow.c 114 char x;
Snow.c 115 float y;
Snow.c 116 for(y = 0; y < 9; y += 1)
00000152 E903 MOV #3,R9
00000154 4F22 STS.L PR,@-R15
00000156 E809 MOV #9,R8
00000158 7FF4 ADD #-12,R15
0000015A 80F8 MOV.B R0,@(8,R15)
0000015C 6053 MOV R5,R0
0000015E 80F4 MOV.B R0,@(4,R15)
00000160 2F62 MOV.L R6,@R15
00000162 A030 BRA L391
00000164 EA00 MOV #0,R10
00000166 L392:
Snow.c 117 for(x = 0; x < 3; x++)
00000166 EB00 MOV #0,R11
00000168 84F8 MOV.B @(8,R15),R0
0000016A 6D0C EXTU.B R0,R13
0000016C D357 MOV.L L414+2,R3 ; __stoi
0000016E 430B JSR @R3
00000170 60A3 MOV R10,R0
00000172 6C03 MOV R0,R12
00000174 DE56 MOV.L L414+6,R14 ; _sprite
00000176 6303 MOV R0,R3
00000178 4000 SHLL R0
0000017A 303C ADD R3,R0
0000017C 3E0C ADD R0,R14
0000017E L393:
Snow.c 118 if(sprite[(int)y][x] == 1)
0000017E 60E0 MOV.B @R14,R0
00000180 8801 CMP/EQ #1,R0
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 7
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
00000182 8B15 BF L394
Snow.c 119 setpixel(px + x + ((9 - (int)y) * dirx), py + (int)y);
00000184 84F4 MOV.B @(4,R15),R0
00000186 6503 MOV R0,R5
00000188 D352 MOV.L L414+10,R3 ; __itos
0000018A 35CC ADD R12,R5
0000018C 6083 MOV R8,R0
0000018E 430B JSR @R3
00000190 30C8 SUB R12,R0
00000192 D251 MOV.L L414+14,R2 ; __muls
00000194 420B JSR @R2
00000196 61F2 MOV.L @R15,R1
00000198 D34E MOV.L L414+10,R3 ; __itos
0000019A 6103 MOV R0,R1
0000019C 430B JSR @R3
0000019E 60D3 MOV R13,R0
000001A0 D34E MOV.L L414+18,R3 ; __adds
000001A2 430B JSR @R3
000001A4 0009 NOP
000001A6 D44E MOV.L L414+22,R4 ; __stou
000001A8 440B JSR @R4
000001AA 0009 NOP
000001AC BF38 BSR _setpixel
000001AE 640C EXTU.B R0,R4
000001B0 L394:
000001B0 7B01 ADD #1,R11
000001B2 7D01 ADD #1,R13
000001B4 63BE EXTS.B R11,R3
000001B6 3393 CMP/GE R9,R3
000001B8 8FE1 BF/S L393
000001BA 7E01 ADD #1,R14
000001BC D049 MOV.L L414+26,R0 ; H'3F800000
000001BE D347 MOV.L L414+18,R3 ; __adds
000001C0 430B JSR @R3
000001C2 61A3 MOV R10,R1
000001C4 6A03 MOV R0,R10
000001C6 L391:
000001C6 D048 MOV.L L414+30,R0 ; H'41100000
000001C8 D248 MOV.L L414+34,R2 ; __lts
000001CA 420B JSR @R2
000001CC 61A3 MOV R10,R1
000001CE 8800 CMP/EQ #0,R0
000001D0 8BC9 BF L392
Snow.c 120 }
000001D2 7F0C ADD #12,R15
000001D4 4F26 LDS.L @R15+,PR
000001D6 68F6 MOV.L @R15+,R8
000001D8 69F6 MOV.L @R15+,R9
000001DA 6AF6 MOV.L @R15+,R10
000001DC 6BF6 MOV.L @R15+,R11
000001DE 6CF6 MOV.L @R15+,R12
000001E0 6DF6 MOV.L @R15+,R13
000001E2 000B RTS
000001E4 6EF6 MOV.L @R15+,R14
Snow.c 121
Snow.c 122 #define P2I 6.28318531
Snow.c 123
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 8
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
Snow.c 124 void drawboom(unsigned char px, char py, char boom, float radius)
000001E6 _drawboom: ; function: drawboom
; frame size=60
; used runtime library name:
; __adds, __muls, __stod, __stoi, __itos, __ltd
000001E6 6043 MOV R4,R0
000001E8 2FE6 MOV.L R14,@-R15
000001EA 2FD6 MOV.L R13,@-R15
000001EC 2FC6 MOV.L R12,@-R15
000001EE 2FB6 MOV.L R11,@-R15
000001F0 2FA6 MOV.L R10,@-R15
000001F2 2F96 MOV.L R9,@-R15
000001F4 4F22 STS.L PR,@-R15
000001F6 7FF0 ADD #-16,R15
Snow.c 125 {
Snow.c 126 float cnt;
Snow.c 127
Snow.c 128 for(cnt = 0; cnt < P2I; cnt += radius)
000001F8 D93D MOV.L L414+38,R9 ; _sinf
000001FA 80F4 MOV.B R0,@(4,R15)
000001FC DA3D MOV.L L414+42,R10; _cosf
000001FE 6053 MOV R5,R0
00000200 80FC MOV.B R0,@(12,R15)
00000202 2F60 MOV.B R6,@R15
00000204 1F72 MOV.L R7,@(8,R15)
00000206 A028 BRA L395
00000208 EE00 MOV #0,R14
0000020A L396:
Snow.c 129 line(px, py, px + (int)(cosf(cnt) * boom), py + (int)(sinf(cnt) * boom));
0000020A 84FC MOV.B @(12,R15),R0
0000020C 6B03 MOV R0,R11
0000020E 490B JSR @R9
00000210 64E3 MOV R14,R4
00000212 6203 MOV R0,R2
00000214 D32F MOV.L L414+10,R3 ; __itos
00000216 430B JSR @R3
00000218 60F0 MOV.B @R15,R0
0000021A 6C03 MOV R0,R12
0000021C D32E MOV.L L414+14,R3 ; __muls
0000021E 430B JSR @R3
00000220 6123 MOV R2,R1
00000222 D22A MOV.L L414+2,R2 ; __stoi
00000224 420B JSR @R2
00000226 0009 NOP
00000228 67B3 MOV R11,R7
0000022A 370C ADD R0,R7
0000022C 2F76 MOV.L R7,@-R15
0000022E 84F8 MOV.B @(8,R15),R0
00000230 6D03 MOV R0,R13
00000232 6DDC EXTU.B R13,R13
00000234 4A0B JSR @R10
00000236 64E3 MOV R14,R4
00000238 D327 MOV.L L414+14,R3 ; __muls
0000023A 430B JSR @R3
0000023C 61C3 MOV R12,R1
0000023E D223 MOV.L L414+2,R2 ; __stoi
00000240 420B JSR @R2
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 9
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
00000242 0009 NOP
00000244 66D3 MOV R13,R6
00000246 360C ADD R0,R6
00000248 65B3 MOV R11,R5
0000024A 64D3 MOV R13,R4
0000024C BF07 BSR _line
0000024E 67F6 MOV.L @R15+,R7
00000250 50F2 MOV.L @(8,R15),R0
00000252 D222 MOV.L L414+18,R2 ; __adds
00000254 420B JSR @R2
00000256 61E3 MOV R14,R1
00000258 6E03 MOV R0,R14
0000025A L395:
0000025A 60E3 MOV R14,R0
0000025C D326 MOV.L L414+46,R3 ; __stod
0000025E 7FF8 ADD #-8,R15
00000260 430B JSR @R3
00000262 2FF6 MOV.L R15,@-R15
00000264 D225 MOV.L L414+50,R2 ; H'5474A168
00000266 2F26 MOV.L R2,@-R15
00000268 D225 MOV.L L414+54,R2 ; H'401921FB
0000026A D326 MOV.L L414+58,R3 ; __ltd
0000026C 430B JSR @R3
0000026E 2F26 MOV.L R2,@-R15
00000270 8800 CMP/EQ #0,R0
00000272 8BCA BF L396
Snow.c 130 }
00000274 7F10 ADD #16,R15
00000276 4F26 LDS.L @R15+,PR
00000278 69F6 MOV.L @R15+,R9
0000027A 6AF6 MOV.L @R15+,R10
0000027C 6BF6 MOV.L @R15+,R11
0000027E 6CF6 MOV.L @R15+,R12
00000280 6DF6 MOV.L @R15+,R13
00000282 000B RTS
00000284 6EF6 MOV.L @R15+,R14
Snow.c 131
Snow.c 132 #define CNT 15
Snow.c 133
Snow.c 134 struct {unsigned char active;char boom;float dirx, y, x, radius;} fire[CNT];
Snow.c 135
Snow.c 136 void display_vram()
00000286 _display_vram: ; function: display_vram
; frame size=16
Snow.c 137 {
Snow.c 138 char *LCD_register_selector = (char*)0xB4000000, *LCD_data_register = (char*)0xB4010000, *mvram;
Snow.c 139 int i, j;
Snow.c 140 mvram = vram;
Snow.c 141 for(i=0 ; i<64 ; i++)
00000286 E100 MOV #0,R1
00000288 D520 MOV.L L414+66,R5 ; H'B4000000
0000028A E704 MOV #4,R7
0000028C D420 MOV.L L414+70,R4 ; H'B4010000
0000028E 6013 MOV R1,R0
00000290 2FC6 MOV.L R12,@-R15
00000292 2FB6 MOV.L R11,@-R15
00000294 2FA6 MOV.L R10,@-R15
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 10
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
00000296 EB07 MOV #7,R11
00000298 D21B MOV.L L414+62,R2 ; _vram
0000029A EA10 MOV #16,R10
0000029C 2F96 MOV.L R9,@-R15
0000029E E940 MOV #64,R9
000002A0 6C22 MOV.L @R2,R12
000002A2 L397:
Snow.c 142 {
Snow.c 143 *LCD_register_selector = 4;
Snow.c 144 *LCD_data_register = i|192;
000002A2 E3C0 MOV #-64,R3
000002A4 2570 MOV.B R7,@R5
Snow.c 145 *LCD_register_selector = 4;
Snow.c 146 *LCD_data_register = 0;
Snow.c 147 *LCD_register_selector = 7;
Snow.c 148 for(j=0 ; j<16 ; j++) *LCD_data_register = *mvram++;
000002A6 66A3 MOV R10,R6
000002A8 230B OR R0,R3
000002AA 2430 MOV.B R3,@R4
000002AC 2570 MOV.B R7,@R5
000002AE 2410 MOV.B R1,@R4
000002B0 25B0 MOV.B R11,@R5
000002B2 L398:
000002B2 4610 DT R6
000002B4 63C4 MOV.B @R12+,R3
000002B6 8FFC BF/S L398
000002B8 2430 MOV.B R3,@R4
000002BA 7001 ADD #1,R0
000002BC 3093 CMP/GE R9,R0
000002BE 8BF0 BF L397
Snow.c 149 }
Snow.c 150 }
000002C0 69F6 MOV.L @R15+,R9
000002C2 6AF6 MOV.L @R15+,R10
000002C4 6BF6 MOV.L @R15+,R11
000002C6 000B RTS
000002C8 6CF6 MOV.L @R15+,R12
000002CA L414:
000002CA 0000 .DATA.W 0
000002CC <00000000> .DATA.L __stoi
000002D0 <00000000> .DATA.L _sprite
000002D4 <00000000> .DATA.L __itos
000002D8 <00000000> .DATA.L __muls
000002DC <00000000> .DATA.L __adds
000002E0 <00000000> .DATA.L __stou
000002E4 3F800000 .DATA.L H'3F800000
000002E8 41100000 .DATA.L H'41100000
000002EC <00000000> .DATA.L __lts
000002F0 <00000000> .DATA.L _sinf
000002F4 <00000000> .DATA.L _cosf
000002F8 <00000000> .DATA.L __stod
000002FC 5474A168 .DATA.L H'5474A168
00000300 401921FB .DATA.L H'401921FB
00000304 <00000000> .DATA.L __ltd
00000308 <00000000> .DATA.L _vram
0000030C B4000000 .DATA.L H'B4000000
00000310 B4010000 .DATA.L H'B4010000
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 11
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
Snow.c 151
Snow.c 152 char isMainMenu()
00000314 _isMainMenu: ; function: isMainMenu
; frame size=0
Snow.c 153 {
Snow.c 154 unsigned int ea;
Snow.c 155 unsigned int j;
Snow.c 156 ea = *(unsigned int*)0x8001007C;
00000314 D342 MOV.L L415+4,R3 ; H'8001007C
Snow.c 157 ea += 0x0490*4;
Snow.c 158 ea = *(unsigned int*)( ea );
Snow.c 159 j = *(unsigned char*)( ea + 1 );
Snow.c 160 j *= 4;
Snow.c 161 j = ( ea + j + 4 ) & 0xFFFFFFFC;
00000316 E1FC MOV #-4,R1
00000318 9280 MOV.W L415,R2 ; H'1240
0000031A 6432 MOV.L @R3,R4
0000031C 342C ADD R2,R4
0000031E 6442 MOV.L @R4,R4
00000320 8441 MOV.B @(1,R4),R0
00000322 650C EXTU.B R0,R5
00000324 4508 SHLL2 R5
00000326 345C ADD R5,R4
00000328 7404 ADD #4,R4
0000032A 2419 AND R1,R4
Snow.c 162 j = *(unsigned int*)( j ) + 1;
0000032C 6442 MOV.L @R4,R4
Snow.c 163
Snow.c 164 return *(unsigned char*)j;
Snow.c 165 }
0000032E 000B RTS
00000330 8441 MOV.B @(1,R4),R0
Snow.c 166
Snow.c 167 char variable[24]={0};
Snow.c 168
Snow.c 169 void snowtimer(void)
00000332 _snowtimer: ; function: snowtimer
; frame size=76
; used runtime library name:
; __modlu, __adds, __addd, __subs, __divs, __divdr, __dtos, __stoi, __sto
+ u, __utos, __utod, __eqs, __gts, __lts
00000332 2FE6 MOV.L R14,@-R15
00000334 2FD6 MOV.L R13,@-R15
00000336 2FC6 MOV.L R12,@-R15
00000338 2FB6 MOV.L R11,@-R15
0000033A 2FA6 MOV.L R10,@-R15
0000033C 2F96 MOV.L R9,@-R15
0000033E 2F86 MOV.L R8,@-R15
00000340 4F22 STS.L PR,@-R15
00000342 7FF8 ADD #-8,R15
Snow.c 170 {
Snow.c 171 unsigned char x;
Snow.c 172
Snow.c 173 if(!isMainMenu())
00000344 BFE6 BSR _isMainMenu
00000346 0009 NOP
00000348 600E EXTS.B R0,R0
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 12
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
0000034A 2008 TST R0,R0
0000034C 8901 BT L416
0000034E A0F0 BRA L400
00000350 0009 NOP
00000352 L416:
Snow.c 174 {
Snow.c 175 display_vram();
00000352 BF98 BSR _display_vram
00000354 0009 NOP
Snow.c 176
Snow.c 177 for(x =CNT - 1; x > 0 ; x--)
00000356 E20E MOV #14,R2
00000358 DE32 MOV.L L415+8,R14 ; _fire
0000035A E80F MOV #15,R8
0000035C 945F MOV.W L415+2,R4 ; H'0118
0000035E E900 MOV #0,R9
00000360 2F20 MOV.B R2,@R15
00000362 34EC ADD R14,R4
00000364 1F41 MOV.L R4,@(4,R15)
00000366 6C43 MOV R4,R12
00000368 6BC3 MOV R12,R11
0000036A L401:
0000036A 6AF0 MOV.B @R15,R10
0000036C 6AAC EXTU.B R10,R10
0000036E 63A3 MOV R10,R3
00000370 4A08 SHLL2 R10
00000372 3A3C ADD R3,R10
00000374 4A08 SHLL2 R10
00000376 60A3 MOV R10,R0
00000378 00EC MOV.B @(R0,R14),R0
0000037A 600C EXTU.B R0,R0
0000037C 8801 CMP/EQ #1,R0
0000037E 8901 BT L417
00000380 A083 BRA L402
00000382 0009 NOP
00000384 L417:
Snow.c 178 {
Snow.c 179 if(fire[x].active == 1)
Snow.c 180 {
Snow.c 181 if(fire[x].boom == 0)
00000384 62A3 MOV R10,R2
00000386 32EC ADD R14,R2
00000388 8421 MOV.B @(1,R2),R0
0000038A 2008 TST R0,R0
0000038C 8B62 BF L403
Snow.c 182 {
Snow.c 183 drawsprite(fire[x].x, fire[x].y, fire[x].dirx);
0000038E 6DA3 MOV R10,R13
00000390 D525 MOV.L L415+12,R5 ; __stoi
00000392 3DEC ADD R14,R13
00000394 56D1 MOV.L @(4,R13),R6
00000396 450B JSR @R5
00000398 50D2 MOV.L @(8,R13),R0
0000039A 650E EXTS.B R0,R5
0000039C D423 MOV.L L415+16,R4 ; __stou
0000039E 440B JSR @R4
000003A0 50D3 MOV.L @(12,R13),R0
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 13
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
000003A2 BECE BSR _drawsprite
000003A4 640C EXTU.B R0,R4
Snow.c 184 fire[x].y -= fire[x].y / 64;
000003A6 D022 MOV.L L415+20,R0 ; H'42800000
000003A8 D322 MOV.L L415+24,R3 ; __divs
000003AA 430B JSR @R3
000003AC 51D2 MOV.L @(8,R13),R1
000003AE D222 MOV.L L415+28,R2 ; __subs
000003B0 420B JSR @R2
000003B2 51D2 MOV.L @(8,R13),R1
000003B4 1D02 MOV.L R0,@(8,R13)
Snow.c 185 fire[x].x += fire[x].dirx;
000003B6 50D1 MOV.L @(4,R13),R0
000003B8 D320 MOV.L L415+32,R3 ; __adds
000003BA 430B JSR @R3
000003BC 51D3 MOV.L @(12,R13),R1
000003BE 1D03 MOV.L R0,@(12,R13)
Snow.c 186 if(fire[x].y == 0 || fire[x].x > 127 || fire[x].x < 0)
000003C0 51D2 MOV.L @(8,R13),R1
000003C2 D21F MOV.L L415+36,R2 ; __eqs
000003C4 420B JSR @R2
000003C6 E000 MOV #0,R0
000003C8 8800 CMP/EQ #0,R0
000003CA 8B0B BF L405
000003CC D01D MOV.L L415+40,R0 ; H'42FE0000
000003CE D31E MOV.L L415+44,R3 ; __gts
000003D0 430B JSR @R3
000003D2 51D3 MOV.L @(12,R13),R1
000003D4 8800 CMP/EQ #0,R0
000003D6 8B05 BF L405
000003D8 51D3 MOV.L @(12,R13),R1
000003DA D21C MOV.L L415+48,R2 ; __lts
000003DC 420B JSR @R2
000003DE E000 MOV #0,R0
000003E0 8800 CMP/EQ #0,R0
000003E2 8902 BT L404
000003E4 L405:
Snow.c 187 fire[x].active = 0;
000003E4 63A3 MOV R10,R3
000003E6 33EC ADD R14,R3
000003E8 2390 MOV.B R9,@R3
000003EA L404:
Snow.c 188 if(random(0) % (int)fire[x].y == 0 && fire[x].boom == 0)
000003EA BE09 BSR _random
000003EC E400 MOV #0,R4
000003EE 6103 MOV R0,R1
000003F0 D30D MOV.L L415+12,R3 ; __stoi
000003F2 64A3 MOV R10,R4
000003F4 34EC ADD R14,R4
000003F6 430B JSR @R3
000003F8 5042 MOV.L @(8,R4),R0
000003FA D315 MOV.L L415+52,R3 ; __modlu
000003FC 430B JSR @R3
000003FE 0009 NOP
00000400 8800 CMP/EQ #0,R0
00000402 8901 BT L418
00000404 A088 BRA L409
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 14
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
00000406 0009 NOP
00000408 L418:
00000408 8441 MOV.B @(1,R4),R0
0000040A 2008 TST R0,R0
0000040C 8901 BT L419
0000040E A083 BRA L409
00000410 0009 NOP
00000412 L419:
Snow.c 189 fire[x].boom++;
00000412 3AEC ADD R14,R10
00000414 84A1 MOV.B @(1,R10),R0
00000416 7001 ADD #1,R0
00000418 A07E BRA L409
0000041A 80A1 MOV.B R0,@(1,R10)
0000041C L415:
0000041C 1240 .DATA.W H'1240
0000041E 0118 .DATA.W H'0118
00000420 8001007C .DATA.L H'8001007C
00000424 <00000000> .DATA.L _fire
00000428 <00000000> .DATA.L __stoi
0000042C <00000000> .DATA.L __stou
00000430 42800000 .DATA.L H'42800000
00000434 <00000000> .DATA.L __divs
00000438 <00000000> .DATA.L __subs
0000043C <00000000> .DATA.L __adds
00000440 <00000000> .DATA.L __eqs
00000444 42FE0000 .DATA.L H'42FE0000
00000448 <00000000> .DATA.L __gts
0000044C <00000000> .DATA.L __lts
00000450 <00000000> .DATA.L __modlu
00000454 L403:
Snow.c 190 }
Snow.c 191 else
Snow.c 192 {
Snow.c 193 drawboom(fire[x].x, fire[x].y, fire[x].boom++, fire[x].radius);
00000454 57B4 MOV.L @(16,R11),R7
00000456 84B1 MOV.B @(1,R11),R0
00000458 D548 MOV.L L420+2,R5 ; __stoi
0000045A 7001 ADD #1,R0
0000045C 80B1 MOV.B R0,@(1,R11)
0000045E 70FF ADD #-1,R0
00000460 6603 MOV R0,R6
00000462 450B JSR @R5
00000464 50B2 MOV.L @(8,R11),R0
00000466 650E EXTS.B R0,R5
00000468 D445 MOV.L L420+6,R4 ; __stou
0000046A 440B JSR @R4
0000046C 50B3 MOV.L @(12,R11),R0
0000046E BEBA BSR _drawboom
00000470 640C EXTU.B R0,R4
Snow.c 194 if(fire[x].boom >= (random(0) % 16) + 16)
00000472 84B1 MOV.B @(1,R11),R0
00000474 2F06 MOV.L R0,@-R15
00000476 BDC3 BSR _random
00000478 E400 MOV #0,R4
0000047A 2089 AND R8,R0
0000047C 62F6 MOV.L @R15+,R2
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 15
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
0000047E 7010 ADD #16,R0
00000480 3202 CMP/HS R0,R2
00000482 8B49 BF L409
Snow.c 195 fire[x].active = 0;
00000484 51F1 MOV.L @(4,R15),R1
00000486 A047 BRA L409
00000488 2190 MOV.B R9,@R1
0000048A L402:
Snow.c 196 }
Snow.c 197 }
Snow.c 198 else
Snow.c 199 {
Snow.c 200 if(random(0) % 32 == 0)
0000048A BDB9 BSR _random
0000048C E400 MOV #0,R4
0000048E C81F TST #31,R0
00000490 8B42 BF L409
Snow.c 201 {
Snow.c 202 fire[x].active = 1;
00000492 E201 MOV #1,R2
00000494 2C20 MOV.B R2,@R12
Snow.c 203 fire[x].x = random(0) % 128;
00000496 BDB3 BSR _random
00000498 E400 MOV #0,R4
0000049A D23A MOV.L L420+10,R2 ; __utos
0000049C 420B JSR @R2
0000049E C97F AND #127,R0
000004A0 1C03 MOV.L R0,@(12,R12)
Snow.c 204 fire[x].dirx = (random(0) % 20) / 10.0 - 1.0;
000004A2 7FF0 ADD #-16,R15
000004A4 BDAC BSR _random
000004A6 E400 MOV #0,R4
000004A8 D237 MOV.L L420+14,R2 ; __modlu
000004AA 6103 MOV R0,R1
000004AC 420B JSR @R2
000004AE E014 MOV #20,R0
000004B0 D336 MOV.L L420+18,R3 ; __utod
000004B2 7FF8 ADD #-8,R15
000004B4 430B JSR @R3
000004B6 2FF6 MOV.L R15,@-R15
000004B8 D136 MOV.L L420+26,R1 ; __divdr
000004BA E200 MOV #0,R2
000004BC 2F26 MOV.L R2,@-R15
000004BE D234 MOV.L L420+22,R2 ; H'40240000
000004C0 2F26 MOV.L R2,@-R15
000004C2 63F3 MOV R15,R3
000004C4 7310 ADD #16,R3
000004C6 410B JSR @R1
000004C8 2F36 MOV.L R3,@-R15
000004CA E200 MOV #0,R2
000004CC D133 MOV.L L420+34,R1 ; __addd
000004CE 2F26 MOV.L R2,@-R15
000004D0 D231 MOV.L L420+30,R2 ; H'BFF00000
000004D2 2F26 MOV.L R2,@-R15
000004D4 63F3 MOV R15,R3
000004D6 7310 ADD #16,R3
000004D8 410B JSR @R1
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 16
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
000004DA 2F36 MOV.L R3,@-R15
000004DC D230 MOV.L L420+38,R2 ; __dtos
000004DE 420B JSR @R2
000004E0 0009 NOP
000004E2 1C01 MOV.L R0,@(4,R12)
Snow.c 205 fire[x].y = 64;
000004E4 D32F MOV.L L420+42,R3 ; H'42800000
Snow.c 206 fire[x].boom = 0;
000004E6 6093 MOV R9,R0
000004E8 1C32 MOV.L R3,@(8,R12)
000004EA 80C1 MOV.B R0,@(1,R12)
Snow.c 207 fire[x].radius = P2I / ((random(0) % 16) + 8);
000004EC D32E MOV.L L420+46,R3 ; H'5474A168
000004EE 7FF8 ADD #-8,R15
000004F0 2F36 MOV.L R3,@-R15
000004F2 D32E MOV.L L420+50,R3 ; H'401921FB
000004F4 2F36 MOV.L R3,@-R15
000004F6 BD83 BSR _random
000004F8 E400 MOV #0,R4
000004FA 2089 AND R8,R0
000004FC D323 MOV.L L420+18,R3 ; __utod
000004FE 7FF8 ADD #-8,R15
00000500 7008 ADD #8,R0
00000502 430B JSR @R3
00000504 2FF6 MOV.L R15,@-R15
00000506 62F3 MOV R15,R2
00000508 D122 MOV.L L420+26,R1 ; __divdr
0000050A 7210 ADD #16,R2
0000050C 410B JSR @R1
0000050E 2F26 MOV.L R2,@-R15
00000510 D323 MOV.L L420+38,R3 ; __dtos
00000512 430B JSR @R3
00000514 0009 NOP
00000516 1C04 MOV.L R0,@(16,R12)
00000518 L409:
00000518 62F0 MOV.B @R15,R2
0000051A 7CEC ADD #-20,R12
0000051C 72FF ADD #-1,R2
0000051E 2F20 MOV.B R2,@R15
00000520 53F1 MOV.L @(4,R15),R3
00000522 622C EXTU.B R2,R2
00000524 73EC ADD #-20,R3
00000526 4215 CMP/PL R2
00000528 1F31 MOV.L R3,@(4,R15)
0000052A 8F02 BF/S L421
0000052C 7BEC ADD #-20,R11
0000052E AF1C BRA L401
00000530 0009 NOP
00000532 L421:
00000532 L400:
Snow.c 208 }
Snow.c 209 }
Snow.c 210 }
Snow.c 211 }
Snow.c 212
Snow.c 213 Alpha_GetData('A',variable);
00000532 E700 MOV #0,R7
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 17
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
00000534 D51F MOV.L L420+58,R5 ; _variable
00000536 6673 MOV R7,R6
00000538 D21D MOV.L L420+54,R2 ; _iSysCallFuncPtr
0000053A 6322 MOV.L @R2,R3
0000053C 911D MOV.W L420,R1 ; H'04DF
0000053E 2F16 MOV.L R1,@-R15
00000540 430B JSR @R3
00000542 E441 MOV #65,R4
Snow.c 214 if(variable[0])
00000544 D31B MOV.L L420+58,R3 ; _variable
00000546 6230 MOV.B @R3,R2
00000548 2228 TST R2,R2
0000054A 8D0C BT/S L411
0000054C 7F04 ADD #4,R15
Snow.c 215 {
Snow.c 216 KillTimer(1);
0000054E E401 MOV #1,R4
00000550 D219 MOV.L L420+62,R2 ; _KillTimer
00000552 7F08 ADD #8,R15
00000554 4F26 LDS.L @R15+,PR
00000556 68F6 MOV.L @R15+,R8
00000558 69F6 MOV.L @R15+,R9
0000055A 6AF6 MOV.L @R15+,R10
0000055C 6BF6 MOV.L @R15+,R11
0000055E 6CF6 MOV.L @R15+,R12
00000560 6DF6 MOV.L @R15+,R13
00000562 422B JMP @R2
00000564 6EF6 MOV.L @R15+,R14
00000566 L411:
Snow.c 217 }
Snow.c 218 }
00000566 7F08 ADD #8,R15
00000568 4F26 LDS.L @R15+,PR
0000056A 68F6 MOV.L @R15+,R8
0000056C 69F6 MOV.L @R15+,R9
0000056E 6AF6 MOV.L @R15+,R10
00000570 6BF6 MOV.L @R15+,R11
00000572 6CF6 MOV.L @R15+,R12
00000574 6DF6 MOV.L @R15+,R13
00000576 000B RTS
00000578 6EF6 MOV.L @R15+,R14
0000057A L420:
0000057A 04DF .DATA.W H'04DF
0000057C <00000000> .DATA.L __stoi
00000580 <00000000> .DATA.L __stou
00000584 <00000000> .DATA.L __utos
00000588 <00000000> .DATA.L __modlu
0000058C <00000000> .DATA.L __utod
00000590 40240000 .DATA.L H'40240000
00000594 <00000000> .DATA.L __divdr
00000598 BFF00000 .DATA.L H'BFF00000
0000059C <00000000> .DATA.L __addd
000005A0 <00000000> .DATA.L __dtos
000005A4 42800000 .DATA.L H'42800000
000005A8 5474A168 .DATA.L H'5474A168
000005AC 401921FB .DATA.L H'401921FB
000005B0 <00000000> .DATA.L _iSysCallFuncPtr
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 18
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
000005B4 <00000000> .DATA.L _variable
000005B8 <00000000> .DATA.L _KillTimer
Snow.c 219
Snow.c 220 int AddIn_main(int isAppli, unsigned short OptionNum)
000005BC _AddIn_main: ; function: AddIn_main
; frame size=24
; used runtime library name:
; __slow_mvn
000005BC 2FE6 MOV.L R14,@-R15
000005BE 2FD6 MOV.L R13,@-R15
000005C0 4F22 STS.L PR,@-R15
000005C2 7FF8 ADD #-8,R15
Snow.c 221 {
Snow.c 222 unsigned int key;
Snow.c 223 unsigned char text[3] = {0xE6, 0x91, 0};
000005C4 D22C MOV.L L422+4,R2 ; L343
000005C6 61F3 MOV R15,R1
000005C8 D32C MOV.L L422+8,R3 ; __slow_mvn
000005CA 7104 ADD #4,R1
000005CC 430B JSR @R3
000005CE E003 MOV #3,R0
Snow.c 224 random(RTC_GetTicks());
000005D0 D12B MOV.L L422+12,R1 ; _RTC_GetTicks
000005D2 410B JSR @R1
000005D4 0009 NOP
000005D6 BD13 BSR _random
000005D8 6403 MOV R0,R4
Snow.c 225 vram = Disp_GetVRAMPtr();
000005DA D22A MOV.L L422+16,R2 ; _Disp_GetVRAMPtr
000005DC 420B JSR @R2
000005DE 0009 NOP
000005E0 D329 MOV.L L422+20,R3 ; _vram
Snow.c 226 Alpha_ClearAll();
000005E2 E700 MOV #0,R7
000005E4 D129 MOV.L L422+24,R1 ; _iSysCallFuncPtr
000005E6 6673 MOV R7,R6
000005E8 2302 MOV.L R0,@R3
000005EA 6573 MOV R7,R5
000005EC 6212 MOV.L @R1,R2
000005EE 9341 MOV.W L422,R3 ; H'04E1
000005F0 2F36 MOV.L R3,@-R15
000005F2 420B JSR @R2
000005F4 6473 MOV R7,R4
Snow.c 227 AllClr_VRAM();
000005F6 D226 MOV.L L422+28,R2 ; _AllClr_VRAM
000005F8 420B JSR @R2
000005FA 0009 NOP
Snow.c 228 locate(3,3);
000005FC DE25 MOV.L L422+32,R14; _locate
000005FE E503 MOV #3,R5
00000600 4E0B JSR @R14
00000602 6453 MOV R5,R4
Snow.c 229 Print(&"~*| Firework |*~");
00000604 DD24 MOV.L L422+36,R13; _Print
00000606 D425 MOV.L L422+40,R4 ; L347
00000608 4D0B JSR @R13
0000060A 0009 NOP
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 19
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
Snow.c 230 locate(4,1);
0000060C E501 MOV #1,R5
0000060E 4E0B JSR @R14
00000610 E404 MOV #4,R4
Snow.c 231 Print(&"(C) by Casimo");
00000612 D423 MOV.L L422+44,R4 ; L348
00000614 4D0B JSR @R13
00000616 0009 NOP
Snow.c 232 locate(4,5);
00000618 E505 MOV #5,R5
0000061A 4E0B JSR @R14
0000061C E404 MOV #4,R4
Snow.c 233 Print(&"press any key");
0000061E D421 MOV.L L422+48,R4 ; L349
00000620 4D0B JSR @R13
00000622 0009 NOP
Snow.c 234 locate(6,6);
00000624 E506 MOV #6,R5
00000626 4E0B JSR @R14
00000628 6453 MOV R5,R4
Snow.c 235 Print(&"to start");
0000062A D41F MOV.L L422+52,R4 ; L350
0000062C 4D0B JSR @R13
0000062E 0009 NOP
Snow.c 236 locate(4,8);
00000630 E508 MOV #8,R5
00000632 4E0B JSR @R14
00000634 E404 MOV #4,R4
Snow.c 237 Print(&"exit with 1 A");
00000636 D41D MOV.L L422+56,R4 ; L351
00000638 4D0B JSR @R13
0000063A 0009 NOP
Snow.c 238 locate(15,8);
0000063C E508 MOV #8,R5
0000063E 4E0B JSR @R14
00000640 E40F MOV #15,R4
Snow.c 239 Print(&text);
00000642 64F3 MOV R15,R4
00000644 4D0B JSR @R13
00000646 7408 ADD #8,R4
Snow.c 240 display_vram();
00000648 BE1D BSR _display_vram
0000064A 0009 NOP
Snow.c 241 GetKey(&key);
0000064C D218 MOV.L L422+60,R2 ; _GetKey
0000064E 64F3 MOV R15,R4
00000650 420B JSR @R2
00000652 7404 ADD #4,R4
Snow.c 242 Timer_Install(6, &snowtimer, 300);
00000654 960F MOV.W L422+2,R6 ; H'012C
00000656 D517 MOV.L L422+64,R5 ; _snowtimer
00000658 D317 MOV.L L422+68,R3 ; _Timer_Install
0000065A 430B JSR @R3
0000065C E406 MOV #6,R4
Snow.c 243 Timer_Start(6);
0000065E D217 MOV.L L422+72,R2 ; _Timer_Start
00000660 420B JSR @R2
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 20
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
00000662 E406 MOV #6,R4
Snow.c 244 App_PROG();
00000664 D316 MOV.L L422+76,R3 ; _App_PROG
00000666 430B JSR @R3
00000668 0009 NOP
Snow.c 245 }
0000066A 7F0C ADD #12,R15
0000066C 4F26 LDS.L @R15+,PR
0000066E 6DF6 MOV.L @R15+,R13
00000670 000B RTS
00000672 6EF6 MOV.L @R15+,R14
00000674 L422:
00000674 04E1 .DATA.W H'04E1
00000676 012C .DATA.W H'012C
00000678 <00000000> .DATA.L L343
0000067C <00000000> .DATA.L __slow_mvn
00000680 <00000000> .DATA.L _RTC_GetTicks
00000684 <00000000> .DATA.L _Disp_GetVRAMPtr
00000688 <00000000> .DATA.L _vram
0000068C <00000000> .DATA.L _iSysCallFuncPtr
00000690 <00000000> .DATA.L _AllClr_VRAM
00000694 <00000000> .DATA.L _locate
00000698 <00000000> .DATA.L _Print
0000069C <00000000> .DATA.L L347
000006A0 <00000000> .DATA.L L348
000006A4 <00000000> .DATA.L L349
000006A8 <00000000> .DATA.L L350
000006AC <00000000> .DATA.L L351
000006B0 <00000000> .DATA.L _GetKey
000006B4 <00000000> .DATA.L _snowtimer
000006B8 <00000000> .DATA.L _Timer_Install
000006BC <00000000> .DATA.L _Timer_Start
000006C0 <00000000> .DATA.L _App_PROG
Snow.c 246
Snow.c 247 #pragma section _BR_Size
Snow.c 248 unsigned long BR_Size;
Snow.c 249 #pragma section
Snow.c 250 #pragma section _TOP
Snow.c 251 int InitializeSystem(int isAppli, unsigned short OptionNum)
P_T 00000000 _InitializeSystem: ; function: InitializeSystem
; frame size=4
Snow.c 252 {return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
00000000 D303 MOV.L L423+2,R3 ; _INIT_ADDIN_APPLICATION
00000002 7FFC ADD #-4,R15
00000004 2F51 MOV.W R5,@R15
00000006 65F1 MOV.W @R15,R5
00000008 655D EXTU.W R5,R5
0000000A 432B JMP @R3
0000000C 7F04 ADD #4,R15
0000000E L423:
0000000E 0000 .DATA.W 0
00000010 <00000000> .DATA.L _INIT_ADDIN_APPLICATION
Snow.c 253 #pragma section
Snow.c 254
C 00000000 _SysCallWrapper: ; static: SysCallWrapper
00000000 D201422B60 .DATA.L H'D201422B,H'60F20000,H'80010070
F200008001
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 21
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
0070
0000000C _sprite: ; static: sprite
0000000C 0001000101 .DATA.B H'00,H'01,H'00,H'01,H'01,H'01,H'01,H'00,H'01,H'01,H'00,H'01,H'01,H'00,H'01,H'01,
0101000101 + H'01,H'01,H'00,H'00,H'01,H'00,H'00,H'01,H'00,H'00,H'01
0001010001
0101010000
0100000100
0001
00000027 L343:
00000027 E69100 .DATA.B H'E6,H'91,H'00
0000002A 00000002 .RES.W 1
0000002C L347:
0000002C 7E2A7C2046 .SDATA "~*| Firework |*~"
697265776F
726B207C2A
7E
0000003C 00 .DATA.B H'00
0000003D 00000001 .RES.B 1
0000003E 00000002 .RES.W 1
00000040 L348:
00000040 2843292062 .SDATA "(C) by Casimo"
7920436173
696D6F
0000004D 00 .DATA.B H'00
0000004E 00000002 .RES.W 1
00000050 L349:
00000050 7072657373 .SDATA "press any key"
20616E7920
6B6579
0000005D 00 .DATA.B H'00
0000005E 00000002 .RES.W 1
00000060 L350:
00000060 746F207374 .SDATA "to start"
617274
00000068 00 .DATA.B H'00
00000069 00000001 .RES.B 1
0000006A 00000002 .RES.W 1
0000006C L351:
0000006C 6578697420 .SDATA "exit with 1 A"
7769746820
312041
00000079 00 .DATA.B H'00
D 00000000 _iSysCallFuncPtr: ; static: iSysCallFuncPtr
00000000 <00000000> .DATA.L _SysCallWrapper
00000004 __$lastrandom: ; static: lastrandom
00000004 12345678 .DATA.L H'12345678
00000008 _variable: ; static: variable
00000008 00 .DATA.B H'00
00000009 0000001701 .DATAB.B 23,0
00
B 00000000 _vram: ; static: vram
00000000 00000004 .RES.L 1
00000004 _fire: ; static: fire
00000004 0000012C .RES.L 75
B_B 00000000 _BR_Size: ; static: BR_Size
00000000 00000004 .RES.L 1
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Dec-2012 11:39:59 PAGE 1
******** STATISTICS INFORMATION ********
********** ERROR INFORMATION ***********
NUMBER OF ERRORS: 0
NUMBER OF WARNINGS: 0
******* SOURCE LINE INFORMATION ********
COMPILED SOURCE LINE: 254
******* SECTION SIZE INFORMATION *******
PROGRAM SECTION (P): 000006C4 Byte(s)
PROGRAM SECTION (P_BR_Size): 00000000 Byte(s)
PROGRAM SECTION (P_TOP): 00000014 Byte(s)
CONSTANT SECTION (C): 0000007A Byte(s)
CONSTANT SECTION (C_BR_Size): 00000000 Byte(s)
CONSTANT SECTION (C_TOP): 00000000 Byte(s)
DATA SECTION (D): 00000020 Byte(s)
DATA SECTION (D_BR_Size): 00000000 Byte(s)
DATA SECTION (D_TOP): 00000000 Byte(s)
BSS SECTION (B): 00000130 Byte(s)
BSS SECTION (B_BR_Size): 00000004 Byte(s)
BSS SECTION (B_TOP): 00000000 Byte(s)
TOTAL PROGRAM SIZE: 000008A6 Byte(s)
********** LABEL INFORMATION ***********
NUMBER OF EXTERNAL REFERENCE SYMBOLS: 33
NUMBER OF EXTERNAL DEFINITION SYMBOLS: 17
NUMBER OF INTERNAL/EXTERNAL SYMBOLS: 101
*** COMMAND PARAMETER ***
-subcommand=C:\Users\Timo\AppData\Local\Temp\hmk3709.tmp
|