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
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 1
************ OBJECT LISTING ************
FILE NAME: G:\Casio SDK\Projekte\Snow\Snow.c
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
Snow.c 1 char *Disp_GetVRAMPtr(void);
Snow.c 2 int Timer_Install(int TimerID, void (*handler)(void), int delay);
Snow.c 3 int Timer_Start(int TimerID);
Snow.c 4 void App_RUNMAT();
Snow.c 5 int RTC_GetTicks();
Snow.c 6 void AllClear_VRAM();
Snow.c 7
Snow.c 8 typedef struct{
Snow.c 9 unsigned int x1;
Snow.c 10 unsigned int y1;
Snow.c 11 unsigned int x2;
Snow.c 12 unsigned int y2;
Snow.c 13 unsigned char f[4];
Snow.c 14 unsigned int on_bits;
Snow.c 15 unsigned int off_bits;
Snow.c 16 } TShape;
Snow.c 17
Snow.c 18 void ShapeToVRAM( TShape* x );
Snow.c 19
Snow.c 20 char *vram;
Snow.c 21
Snow.c 22 const int SysCallWrapper[] = {0xD201422B,0x60F20000,0x80010070};
Snow.c 23 const int (*iSysCallFuncPtr)( int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallWrapper;
Snow.c 24 #define Alpha_GetData(VarName,Dest) (void)(*iSysCallFuncPtr)( VarName,(int)Dest, 0, 0, 0x04DF)
Snow.c 25 #define Alpha_ClearAll() (void)(*iSysCallFuncPtr)( 0,0, 0, 0, 0x004E1)
Snow.c 26
Snow.c 27 int InputString( unsigned char*buff, unsigned char *heading, int maxlen );
Snow.c 28
Snow.c 29 static unsigned int lastrandom=0x12345678;
Snow.c 30
Snow.c 31 unsigned int random( int seed){
P 00000000 _random: ; function: random
; frame size=4
00000000 4F12 STS.L MACL,@-R15
Snow.c 32 if (seed) lastrandom=seed;
00000002 2448 TST R4,R4
00000004 D539 MOV.L L363+4,R5 ; __$lastrandom
00000006 8900 BT L328
00000008 2542 MOV.L R4,@R5
0000000A L328:
Snow.c 33 lastrandom = ( 0x41C64E6D*lastrandom ) + 0x3039;
0000000A D339 MOV.L L363+8,R3 ; H'41C64E6D
0000000C 6252 MOV.L @R5,R2
0000000E 0237 MUL.L R3,R2
00000010 916A MOV.W L363,R1 ; H'3039
00000012 031A STS MACL,R3
00000014 331C ADD R1,R3
Snow.c 34 return ( lastrandom >> 16 );
00000016 6033 MOV R3,R0
00000018 2532 MOV.L R3,@R5
0000001A 4029 SHLR16 R0
Snow.c 35 }
0000001C 000B RTS
0000001E 4F16 LDS.L @R15+,MACL
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 2
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
Snow.c 36
Snow.c 37
Snow.c 38 const char sprite3[4][3][3] = {
Snow.c 39 {
Snow.c 40 { 1 , 0 , 1 },
Snow.c 41 { 0 , 1 , 0 },
Snow.c 42 { 1 , 0 , 1 }
Snow.c 43 },
Snow.c 44 {
Snow.c 45 { 0 , 1 , 0 },
Snow.c 46 { 1 , 0 , 1 },
Snow.c 47 { 0 , 1 , 0 }
Snow.c 48 },
Snow.c 49 {
Snow.c 50 { 0 , 1 , 0 },
Snow.c 51 { 1 , 1 , 1 },
Snow.c 52 { 0 , 1 , 0 }
Snow.c 53 },
Snow.c 54
Snow.c 55 {
Snow.c 56 { 0 , 1 , 0 },
Snow.c 57 { 1 , 0 , 1 },
Snow.c 58 { 0 , 1 , 0 }
Snow.c 59 }
Snow.c 60 };
Snow.c 61
Snow.c 62 const char sprite4[4][4][4] = {
Snow.c 63 {
Snow.c 64 { 1 , 0 , 0 , 1 },
Snow.c 65 { 0 , 1 , 1 , 0 },
Snow.c 66 { 0 , 1 , 1 , 0 },
Snow.c 67 { 1 , 0 , 0 , 1 }
Snow.c 68 },
Snow.c 69 {
Snow.c 70 { 0 , 1 , 1 , 0 },
Snow.c 71 { 1 , 0 , 0 , 1 },
Snow.c 72 { 1 , 0 , 0 , 1 },
Snow.c 73 { 0 , 1 , 1 , 0 }
Snow.c 74 },
Snow.c 75
Snow.c 76 {
Snow.c 77 { 1 , 0 , 0 , 1 },
Snow.c 78 { 0 , 1 , 1 , 0 },
Snow.c 79 { 0 , 1 , 1 , 0 },
Snow.c 80 { 1 , 0 , 0 , 1 }
Snow.c 81 },
Snow.c 82 {
Snow.c 83 { 0 , 1 , 1 , 0 },
Snow.c 84 { 1 , 0 , 0 , 1 },
Snow.c 85 { 1 , 0 , 0 , 1 },
Snow.c 86 { 0 , 1 , 1 , 0 }
Snow.c 87 }
Snow.c 88 };
Snow.c 89
Snow.c 90 const char sprite5[4][5][5] = {
Snow.c 91 {
Snow.c 92 { 0 , 1 , 0 , 1 , 0 },
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 3
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
Snow.c 93 { 1 , 1 , 0 , 1 , 1 },
Snow.c 94 { 0 , 0 , 1 , 0 , 0 },
Snow.c 95 { 1 , 1 , 0 , 1 , 1 },
Snow.c 96 { 0 , 1 , 0 , 1 , 0 }
Snow.c 97 },
Snow.c 98 {
Snow.c 99 { 1 , 0 , 1 , 0 , 1 },
Snow.c 100 { 0 , 1 , 0 , 1 , 0 },
Snow.c 101 { 1 , 0 , 1 , 0 , 1 },
Snow.c 102 { 0 , 1 , 0 , 1 , 0 },
Snow.c 103 { 1 , 0 , 1 , 0 , 1 }
Snow.c 104 },
Snow.c 105 {
Snow.c 106 { 1 , 0 , 1 , 0 , 1 },
Snow.c 107 { 0 , 1 , 1 , 1 , 0 },
Snow.c 108 { 1 , 1 , 0 , 1 , 1 },
Snow.c 109 { 0 , 1 , 1 , 1 , 0 },
Snow.c 110 { 1 , 0 , 1 , 0 , 1 }
Snow.c 111 },
Snow.c 112
Snow.c 113 {
Snow.c 114 { 1 , 0 , 1 , 0 , 1 },
Snow.c 115 { 0 , 1 , 1 , 1 , 0 },
Snow.c 116 { 1 , 1 , 0 , 1 , 1 },
Snow.c 117 { 0 , 1 , 1 , 1 , 0 },
Snow.c 118 { 1 , 0 , 1 , 0 , 1 }
Snow.c 119 }
Snow.c 120 };
Snow.c 121
Snow.c 122 const char sprite6[4][6][6] = {
Snow.c 123 {
Snow.c 124 { 0 , 1 , 0 , 0 , 1 , 0 },
Snow.c 125 { 1 , 1 , 0 , 0 , 1 , 1 },
Snow.c 126 { 0 , 0 , 1 , 1 , 0 , 0 },
Snow.c 127 { 0 , 0 , 1 , 1 , 0 , 0 },
Snow.c 128 { 1 , 1 , 0 , 0 , 1 , 1 },
Snow.c 129 { 0 , 1 , 0 , 0 , 1 , 0 }
Snow.c 130 },
Snow.c 131 {
Snow.c 132 { 1 , 1 , 0 , 0 , 1 , 1 },
Snow.c 133 { 1 , 0 , 1 , 1 , 0 , 1 },
Snow.c 134 { 0 , 1 , 1 , 1 , 1 , 0 },
Snow.c 135 { 0 , 1 , 1 , 1 , 1 , 0 },
Snow.c 136 { 1 , 0 , 1 , 1 , 0 , 1 },
Snow.c 137 { 1 , 1 , 0 , 0 , 1 , 1 }
Snow.c 138 },
Snow.c 139 {
Snow.c 140 { 0 , 1 , 0 , 0 , 1 , 0 },
Snow.c 141 { 1 , 1 , 1 , 1 , 1 , 1 },
Snow.c 142 { 0 , 1 , 0 , 0 , 1 , 0 },
Snow.c 143 { 0 , 1 , 0 , 0 , 1 , 0 },
Snow.c 144 { 1 , 1 , 1 , 1 , 1 , 1 },
Snow.c 145 { 0 , 1 , 0 , 0 , 1 , 0 }
Snow.c 146 },
Snow.c 147
Snow.c 148 {
Snow.c 149 { 0 , 1 , 0 , 0 , 1 , 0 },
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 4
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
Snow.c 150 { 1 , 1 , 1 , 1 , 1 , 1 },
Snow.c 151 { 0 , 1 , 0 , 0 , 1 , 0 },
Snow.c 152 { 0 , 1 , 0 , 0 , 1 , 0 },
Snow.c 153 { 1 , 1 , 1 , 1 , 1 , 1 },
Snow.c 154 { 0 , 1 , 0 , 0 , 1 , 0 }
Snow.c 155 }
Snow.c 156 };
Snow.c 157
Snow.c 158 const char sprite7[4][7][7] = {
Snow.c 159 {
Snow.c 160 { 1 , 0 , 1 , 0 , 1 , 0 , 1 },
Snow.c 161 { 0 , 1 , 1 , 0 , 1 , 1 , 0 },
Snow.c 162 { 1 , 1 , 1 , 0 , 1 , 1 , 1 },
Snow.c 163 { 0 , 0 , 0 , 1 , 0 , 0 , 0 },
Snow.c 164 { 1 , 1 , 1 , 0 , 1 , 1 , 1 },
Snow.c 165 { 0 , 1 , 1 , 0 , 1 , 1 , 0 },
Snow.c 166 { 1 , 0 , 1 , 0 , 1 , 0 , 1 }
Snow.c 167 },
Snow.c 168 {
Snow.c 169 { 0 , 1 , 1 , 0 , 1 , 1 , 0 },
Snow.c 170 { 1 , 0 , 1 , 0 , 1 , 0 , 1 },
Snow.c 171 { 1 , 1 , 0 , 1 , 0 , 1 , 1 },
Snow.c 172 { 0 , 0 , 1 , 0 , 1 , 0 , 0 },
Snow.c 173 { 1 , 1 , 0 , 1 , 0 , 1 , 1 },
Snow.c 174 { 1 , 0 , 1 , 0 , 1 , 0 , 1 },
Snow.c 175 { 0 , 1 , 1 , 0 , 1 , 1 , 0 },
Snow.c 176 },
Snow.c 177 {
Snow.c 178 { 0 , 1 , 1 , 0 , 1 , 1 , 0 },
Snow.c 179 { 1 , 0 , 0 , 1 , 0 , 0 , 1 },
Snow.c 180 { 1 , 0 , 1 , 0 , 1 , 0 , 1 },
Snow.c 181 { 0 , 1 , 0 , 1 , 0 , 1 , 0 },
Snow.c 182 { 1 , 0 , 1 , 0 , 1 , 0 , 1 },
Snow.c 183 { 1 , 0 , 0 , 1 , 0 , 0 , 1 },
Snow.c 184 { 0 , 1 , 1 , 0 , 1 , 1 , 0 },
Snow.c 185 },
Snow.c 186 {
Snow.c 187 { 1 , 1 , 1 , 0 , 1 , 1 , 1 },
Snow.c 188 { 1 , 0 , 0 , 1 , 0 , 0 , 1 },
Snow.c 189 { 1 , 0 , 1 , 0 , 1 , 0 , 1 },
Snow.c 190 { 0 , 1 , 0 , 1 , 0 , 1 , 0 },
Snow.c 191 { 1 , 0 , 1 , 0 , 1 , 0 , 1 },
Snow.c 192 { 1 , 0 , 0 , 1 , 0 , 0 , 1 },
Snow.c 193 { 1 , 1 , 1 , 0 , 1 , 1 , 1 },
Snow.c 194 }
Snow.c 195 };
Snow.c 196
Snow.c 197 void setpixel(unsigned char x, char y)
00000020 _setpixel: ; function: setpixel
; frame size=32
00000020 4F22 STS.L PR,@-R15
Snow.c 198 {
Snow.c 199 TShape t;
Snow.c 200 if(x&~127 || y&~63) return;
00000022 624C EXTU.B R4,R2
00000024 7FE4 ADD #-28,R15
00000026 E380 MOV #-128,R3
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 5
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
00000028 2238 TST R3,R2
0000002A 8B14 BF L332
0000002C 605E EXTS.B R5,R0
0000002E E2C0 MOV #-64,R2
00000030 2028 TST R2,R0
00000032 8B10 BF L332
Snow.c 201 t.x1 = x;
00000034 644C EXTU.B R4,R4
Snow.c 202 t.y1 = y;
00000036 655E EXTS.B R5,R5
00000038 2F42 MOV.L R4,@R15
Snow.c 203 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 204 t.f[1] = 1;
00000042 E401 MOV #1,R4
Snow.c 205 t.f[2] = 1;
Snow.c 206 t.f[3] = 1;
Snow.c 207
Snow.c 208 ShapeToDD(&t);
00000044 D32B MOV.L L363+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)
00000052 430B JSR @R3
00000054 64F3 MOV R15,R4
Snow.c 209 }
00000056 L332:
00000056 7F1C ADD #28,R15
00000058 4F26 LDS.L @R15+,PR
0000005A 000B RTS
0000005C 0009 NOP
Snow.c 210
Snow.c 211 void drawsprite(unsigned char px, char py, char dim, char num)
0000005E _drawsprite: ; function: drawsprite
; frame size=48
0000005E 607E EXTS.B R7,R0
00000060 2FE6 MOV.L R14,@-R15
00000062 8800 CMP/EQ #0,R0
00000064 2FD6 MOV.L R13,@-R15
00000066 EE00 MOV #0,R14
00000068 2FC6 MOV.L R12,@-R15
0000006A ED00 MOV #0,R13
0000006C 2FB6 MOV.L R11,@-R15
0000006E 6C53 MOV R5,R12
00000070 2FA6 MOV.L R10,@-R15
00000072 2F96 MOV.L R9,@-R15
00000074 2F86 MOV.L R8,@-R15
00000076 4F22 STS.L PR,@-R15
00000078 4F12 STS.L MACL,@-R15
0000007A 7FF4 ADD #-12,R15
0000007C 8D0E BT/S L317
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 6
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
0000007E 3D4C ADD R4,R13
00000080 8801 CMP/EQ #1,R0
00000082 893B BT L318
00000084 8802 CMP/EQ #2,R0
00000086 895D BT L319
00000088 8803 CMP/EQ #3,R0
0000008A 8B01 BF L364
0000008C A07F BRA L320
0000008E 0009 NOP
00000090 L364:
00000090 8804 CMP/EQ #4,R0
00000092 8B01 BF L365
00000094 A0A2 BRA L321
00000096 0009 NOP
00000098 L365:
00000098 A0C3 BRA L333
0000009A 0009 NOP
0000009C L317: ; case label
0000009C D216 MOV.L L363+16,R2 ; _sprite3
Snow.c 212 {
Snow.c 213 char x, y;
Snow.c 214 switch(num)
Snow.c 215 {
Snow.c 216 case 0:
Snow.c 217 for(y = 0; y < 3; y++)
0000009E 6BE3 MOV R14,R11
000000A0 E803 MOV #3,R8
000000A2 666E EXTS.B R6,R6
000000A4 6363 MOV R6,R3
000000A6 4608 SHLL2 R6
000000A8 4600 SHLL R6
000000AA 363C ADD R3,R6
000000AC 326C ADD R6,R2
000000AE 1F22 MOV.L R2,@(8,R15)
000000B0 L334:
Snow.c 218 for(x = 0; x < 3; x++)
000000B0 2FE0 MOV.B R14,@R15
000000B2 69D3 MOV R13,R9
000000B4 5AF2 MOV.L @(8,R15),R10
000000B6 60C3 MOV R12,R0
000000B8 30BC ADD R11,R0
000000BA 80F4 MOV.B R0,@(4,R15)
000000BC L335:
Snow.c 219 if(sprite3[dim][x][y] == 1)
000000BC 60BE EXTS.B R11,R0
000000BE 00AC MOV.B @(R0,R10),R0
000000C0 8801 CMP/EQ #1,R0
000000C2 8B03 BF L336
Snow.c 220 setpixel(px + x, py + y);
000000C4 84F4 MOV.B @(4,R15),R0
000000C6 6503 MOV R0,R5
000000C8 BFAA BSR _setpixel
000000CA 6493 MOV R9,R4
000000CC L336:
000000CC 62F0 MOV.B @R15,R2
000000CE 7901 ADD #1,R9
000000D0 7201 ADD #1,R2
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 7
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
000000D2 2F20 MOV.B R2,@R15
000000D4 622E EXTS.B R2,R2
000000D6 3283 CMP/GE R8,R2
000000D8 8FF0 BF/S L335
000000DA 7A03 ADD #3,R10
000000DC 7B01 ADD #1,R11
000000DE 62BE EXTS.B R11,R2
000000E0 3283 CMP/GE R8,R2
000000E2 8BE5 BF L334
Snow.c 221 break;
000000E4 A09D BRA L333
000000E6 0009 NOP
000000E8 L363:
000000E8 3039 .DATA.W H'3039
000000EA 0000 .DATA.W 0
000000EC <00000000> .DATA.L __$lastrandom
000000F0 41C64E6D .DATA.L H'41C64E6D
000000F4 <00000000> .DATA.L _ShapeToDD
000000F8 <00000000> .DATA.L _sprite3
000000FC L318: ; case label
000000FC D35F MOV.L L366,R3 ; _sprite4
Snow.c 222 case 1:
Snow.c 223 for(y = 0; y < 4; y++)
000000FE 6BE3 MOV R14,R11
00000100 E804 MOV #4,R8
00000102 666E EXTS.B R6,R6
00000104 4608 SHLL2 R6
00000106 4608 SHLL2 R6
00000108 336C ADD R6,R3
0000010A 1F32 MOV.L R3,@(8,R15)
0000010C L337:
Snow.c 224 for(x = 0; x < 4; x++)
0000010C 2FE0 MOV.B R14,@R15
0000010E 69D3 MOV R13,R9
00000110 5AF2 MOV.L @(8,R15),R10
00000112 60C3 MOV R12,R0
00000114 30BC ADD R11,R0
00000116 80F4 MOV.B R0,@(4,R15)
00000118 L338:
Snow.c 225 if(sprite4[dim][x][y] == 1)
00000118 60BE EXTS.B R11,R0
0000011A 00AC MOV.B @(R0,R10),R0
0000011C 8801 CMP/EQ #1,R0
0000011E 8B03 BF L339
Snow.c 226 setpixel(px + x, py + y);
00000120 84F4 MOV.B @(4,R15),R0
00000122 6503 MOV R0,R5
00000124 BF7C BSR _setpixel
00000126 6493 MOV R9,R4
00000128 L339:
00000128 62F0 MOV.B @R15,R2
0000012A 7901 ADD #1,R9
0000012C 7201 ADD #1,R2
0000012E 2F20 MOV.B R2,@R15
00000130 622E EXTS.B R2,R2
00000132 3283 CMP/GE R8,R2
00000134 8FF0 BF/S L338
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 8
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
00000136 7A04 ADD #4,R10
00000138 7B01 ADD #1,R11
0000013A 62BE EXTS.B R11,R2
0000013C 3283 CMP/GE R8,R2
0000013E 8BE5 BF L337
Snow.c 227 break;
00000140 A06F BRA L333
00000142 0009 NOP
00000144 L319: ; case label
00000144 D24E MOV.L L366+4,R2 ; _sprite5
Snow.c 228 case 2:
Snow.c 229 for(y = 0; y < 5; y++)
00000146 69E3 MOV R14,R9
00000148 E805 MOV #5,R8
0000014A 666E EXTS.B R6,R6
0000014C E319 MOV #25,R3
0000014E 263F MULS R3,R6
00000150 061A STS MACL,R6
00000152 326C ADD R6,R2
00000154 1F22 MOV.L R2,@(8,R15)
00000156 L340:
00000156 6AD3 MOV R13,R10
Snow.c 230 for(x = 0; x < 5; x++)
00000158 2FE0 MOV.B R14,@R15
0000015A 60C3 MOV R12,R0
0000015C 5BF2 MOV.L @(8,R15),R11
0000015E 309C ADD R9,R0
00000160 80F4 MOV.B R0,@(4,R15)
00000162 L341:
Snow.c 231 if(sprite5[dim][x][y] == 1)
00000162 609E EXTS.B R9,R0
00000164 00BC MOV.B @(R0,R11),R0
00000166 8801 CMP/EQ #1,R0
00000168 8B03 BF L342
Snow.c 232 setpixel(px + x, py + y);
0000016A 84F4 MOV.B @(4,R15),R0
0000016C 6503 MOV R0,R5
0000016E BF57 BSR _setpixel
00000170 64A3 MOV R10,R4
00000172 L342:
00000172 7A01 ADD #1,R10
00000174 62F0 MOV.B @R15,R2
00000176 7201 ADD #1,R2
00000178 2F20 MOV.B R2,@R15
0000017A 622E EXTS.B R2,R2
0000017C 3283 CMP/GE R8,R2
0000017E 8FF0 BF/S L341
00000180 7B05 ADD #5,R11
00000182 7901 ADD #1,R9
00000184 629E EXTS.B R9,R2
00000186 3283 CMP/GE R8,R2
00000188 8BE5 BF L340
Snow.c 233 break;
0000018A A04A BRA L333
0000018C 0009 NOP
0000018E L320: ; case label
Snow.c 234 case 3:
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 9
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
Snow.c 235 for(y = 0; y < 6; y++)
0000018E 69E3 MOV R14,R9
00000190 D23C MOV.L L366+8,R2 ; _sprite6
00000192 E806 MOV #6,R8
00000194 666E EXTS.B R6,R6
00000196 6363 MOV R6,R3
00000198 4608 SHLL2 R6
0000019A 4600 SHLL R6
0000019C 363C ADD R3,R6
0000019E 4608 SHLL2 R6
000001A0 326C ADD R6,R2
000001A2 1F22 MOV.L R2,@(8,R15)
000001A4 L343:
Snow.c 236 for(x = 0; x < 6; x++)
000001A4 2FE0 MOV.B R14,@R15
000001A6 6BD3 MOV R13,R11
000001A8 5AF2 MOV.L @(8,R15),R10
000001AA 60C3 MOV R12,R0
000001AC 309C ADD R9,R0
000001AE 80F4 MOV.B R0,@(4,R15)
000001B0 L344:
Snow.c 237 if(sprite6[dim][x][y] == 1)
000001B0 609E EXTS.B R9,R0
000001B2 00AC MOV.B @(R0,R10),R0
000001B4 8801 CMP/EQ #1,R0
000001B6 8B03 BF L345
Snow.c 238 setpixel(px + x, py + y);
000001B8 84F4 MOV.B @(4,R15),R0
000001BA 6503 MOV R0,R5
000001BC BF30 BSR _setpixel
000001BE 64B3 MOV R11,R4
000001C0 L345:
000001C0 62F0 MOV.B @R15,R2
000001C2 7B01 ADD #1,R11
000001C4 7201 ADD #1,R2
000001C6 2F20 MOV.B R2,@R15
000001C8 622E EXTS.B R2,R2
000001CA 3283 CMP/GE R8,R2
000001CC 8FF0 BF/S L344
000001CE 7A06 ADD #6,R10
000001D0 7901 ADD #1,R9
000001D2 629E EXTS.B R9,R2
000001D4 3283 CMP/GE R8,R2
000001D6 8BE5 BF L343
Snow.c 239 break;
000001D8 A023 BRA L333
000001DA 0009 NOP
000001DC L321: ; case label
000001DC D22A MOV.L L366+12,R2 ; _sprite7
Snow.c 240 case 4:
Snow.c 241 for(y = 0; y < 7; y++)
000001DE 69E3 MOV R14,R9
000001E0 E807 MOV #7,R8
000001E2 666E EXTS.B R6,R6
000001E4 E331 MOV #49,R3
000001E6 263F MULS R3,R6
000001E8 061A STS MACL,R6
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 10
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
000001EA 326C ADD R6,R2
000001EC 1F22 MOV.L R2,@(8,R15)
000001EE L346:
000001EE 6AD3 MOV R13,R10
Snow.c 242 for(x = 0; x < 7; x++)
000001F0 2FE0 MOV.B R14,@R15
000001F2 60C3 MOV R12,R0
000001F4 5BF2 MOV.L @(8,R15),R11
000001F6 309C ADD R9,R0
000001F8 80F4 MOV.B R0,@(4,R15)
000001FA L347:
Snow.c 243 if(sprite7[dim][x][y] == 1)
000001FA 609E EXTS.B R9,R0
000001FC 00BC MOV.B @(R0,R11),R0
000001FE 8801 CMP/EQ #1,R0
00000200 8B03 BF L348
Snow.c 244 setpixel(px + x, py + y);
00000202 84F4 MOV.B @(4,R15),R0
00000204 6503 MOV R0,R5
00000206 BF0B BSR _setpixel
00000208 64A3 MOV R10,R4
0000020A L348:
0000020A 7A01 ADD #1,R10
0000020C 62F0 MOV.B @R15,R2
0000020E 7201 ADD #1,R2
00000210 2F20 MOV.B R2,@R15
00000212 622E EXTS.B R2,R2
00000214 3283 CMP/GE R8,R2
00000216 8FF0 BF/S L347
00000218 7B07 ADD #7,R11
0000021A 7901 ADD #1,R9
0000021C 629E EXTS.B R9,R2
0000021E 3283 CMP/GE R8,R2
00000220 8BE5 BF L346
00000222 L333:
Snow.c 245 break;
Snow.c 246 }
Snow.c 247 }
00000222 7F0C ADD #12,R15
00000224 4F16 LDS.L @R15+,MACL
00000226 4F26 LDS.L @R15+,PR
00000228 68F6 MOV.L @R15+,R8
0000022A 69F6 MOV.L @R15+,R9
0000022C 6AF6 MOV.L @R15+,R10
0000022E 6BF6 MOV.L @R15+,R11
00000230 6CF6 MOV.L @R15+,R12
00000232 6DF6 MOV.L @R15+,R13
00000234 000B RTS
00000236 6EF6 MOV.L @R15+,R14
Snow.c 248
Snow.c 249 #define SNOWCNT 50
Snow.c 250
Snow.c 251 struct {unsigned char active, x;char y, dim, num;} snow[SNOWCNT];
Snow.c 252
Snow.c 253 void display_vram()
00000238 _display_vram: ; function: display_vram
; frame size=16
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 11
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
00000238 2FC6 MOV.L R12,@-R15
Snow.c 254 {
Snow.c 255 char *LCD_register_selector = (char*)0xB4000000, *LCD_data_register = (char*)0xB4010000, *mvram;
Snow.c 256 int i, j;
Snow.c 257 mvram = vram;
Snow.c 258 for(i=0 ; i<64 ; i++)
0000023A E100 MOV #0,R1
0000023C D514 MOV.L L366+20,R5 ; H'B4000000
0000023E E704 MOV #4,R7
00000240 D414 MOV.L L366+24,R4 ; H'B4010000
00000242 6013 MOV R1,R0
00000244 2FB6 MOV.L R11,@-R15
00000246 EB07 MOV #7,R11
00000248 2FA6 MOV.L R10,@-R15
0000024A EA10 MOV #16,R10
0000024C 2F96 MOV.L R9,@-R15
0000024E E940 MOV #64,R9
00000250 D30E MOV.L L366+16,R3 ; _vram
00000252 6C32 MOV.L @R3,R12
00000254 L349:
Snow.c 259 {
Snow.c 260 *LCD_register_selector = 4;
00000254 2570 MOV.B R7,@R5
Snow.c 261 *LCD_data_register = i|192;
00000256 E2C0 MOV #-64,R2
00000258 220B OR R0,R2
Snow.c 262 *LCD_register_selector = 4;
Snow.c 263 *LCD_data_register = 0;
Snow.c 264 *LCD_register_selector = 7;
Snow.c 265 for(j=0 ; j<16 ; j++) *LCD_data_register = *mvram++;
0000025A 66A3 MOV R10,R6
0000025C 2420 MOV.B R2,@R4
0000025E 2570 MOV.B R7,@R5
00000260 2410 MOV.B R1,@R4
00000262 25B0 MOV.B R11,@R5
00000264 L350:
00000264 63C4 MOV.B @R12+,R3
00000266 4610 DT R6
00000268 8FFC BF/S L350
0000026A 2430 MOV.B R3,@R4
0000026C 7001 ADD #1,R0
0000026E 3093 CMP/GE R9,R0
00000270 8BF0 BF L349
Snow.c 266 }
Snow.c 267 }
00000272 69F6 MOV.L @R15+,R9
00000274 6AF6 MOV.L @R15+,R10
00000276 6BF6 MOV.L @R15+,R11
00000278 000B RTS
0000027A 6CF6 MOV.L @R15+,R12
0000027C L366:
0000027C <00000000> .DATA.L _sprite4
00000280 <00000000> .DATA.L _sprite5
00000284 <00000000> .DATA.L _sprite6
00000288 <00000000> .DATA.L _sprite7
0000028C <00000000> .DATA.L _vram
00000290 B4000000 .DATA.L H'B4000000
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 12
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
00000294 B4010000 .DATA.L H'B4010000
Snow.c 268
Snow.c 269 char isMainMenu()
00000298 _isMainMenu: ; function: isMainMenu
; frame size=0
Snow.c 270 {
Snow.c 271 unsigned int ea;
Snow.c 272 unsigned int j;
Snow.c 273 ea = *(unsigned int*)0x8001007C;
00000298 D332 MOV.L L367+6,R3 ; H'8001007C
Snow.c 274 ea += 0x0490*4;
Snow.c 275 ea = *(unsigned int*)( ea );
Snow.c 276 j = *(unsigned char*)( ea + 1 );
Snow.c 277 j *= 4;
Snow.c 278 j = ( ea + j + 4 ) & 0xFFFFFFFC;
0000029A E1FC MOV #-4,R1
0000029C 925F MOV.W L367,R2 ; H'1240
0000029E 6432 MOV.L @R3,R4
000002A0 342C ADD R2,R4
000002A2 6442 MOV.L @R4,R4
000002A4 8441 MOV.B @(1,R4),R0
000002A6 650C EXTU.B R0,R5
000002A8 4508 SHLL2 R5
000002AA 345C ADD R5,R4
000002AC 7404 ADD #4,R4
000002AE 2419 AND R1,R4
Snow.c 279 j = *(unsigned int*)( j ) + 1;
000002B0 6442 MOV.L @R4,R4
Snow.c 280
Snow.c 281 return *(unsigned char*)j;
Snow.c 282 }
000002B2 000B RTS
000002B4 8441 MOV.B @(1,R4),R0
Snow.c 283
Snow.c 284 char variable[24]={0};
Snow.c 285
Snow.c 286 void snowtimer(void)
000002B6 _snowtimer: ; function: snowtimer
; frame size=40
; used runtime library name:
; __modlu
000002B6 2FE6 MOV.L R14,@-R15
000002B8 2FD6 MOV.L R13,@-R15
000002BA 2FC6 MOV.L R12,@-R15
000002BC 2FB6 MOV.L R11,@-R15
000002BE 2FA6 MOV.L R10,@-R15
000002C0 2F96 MOV.L R9,@-R15
000002C2 2F86 MOV.L R8,@-R15
000002C4 4F22 STS.L PR,@-R15
000002C6 4F12 STS.L MACL,@-R15
Snow.c 287 {
Snow.c 288 unsigned char x;
Snow.c 289
Snow.c 290 if(!isMainMenu())
000002C8 BFE6 BSR _isMainMenu
000002CA 0009 NOP
000002CC 600E EXTS.B R0,R0
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 13
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
000002CE 2008 TST R0,R0
000002D0 8B74 BF L352
Snow.c 291 {
Snow.c 292 display_vram();
000002D2 BFB1 BSR _display_vram
000002D4 0009 NOP
Snow.c 293
Snow.c 294 for(x = SNOWCNT - 1; x > 0 ; x--)
000002D6 EA31 MOV #49,R10
000002D8 D423 MOV.L L367+10,R4 ; H'000000F5+_snow
000002DA E803 MOV #3,R8
000002DC 6D43 MOV R4,R13
000002DE 6B43 MOV R4,R11
000002E0 E901 MOV #1,R9
000002E2 EC00 MOV #0,R12
000002E4 6E43 MOV R4,R14
000002E6 L353:
Snow.c 295 {
Snow.c 296 if(snow[x].active == 1)
000002E6 60AC EXTU.B R10,R0
000002E8 D120 MOV.L L367+14,R1 ; _snow
000002EA 6303 MOV R0,R3
000002EC 4008 SHLL2 R0
000002EE 303C ADD R3,R0
000002F0 001C MOV.B @(R0,R1),R0
000002F2 600C EXTU.B R0,R0
000002F4 8801 CMP/EQ #1,R0
000002F6 8B25 BF L354
Snow.c 297 {
Snow.c 298 drawsprite(snow[x].x, snow[x].y, snow[x].dim, snow[x].num);
000002F8 84E4 MOV.B @(4,R14),R0
000002FA 6703 MOV R0,R7
000002FC 84E3 MOV.B @(3,R14),R0
000002FE 6603 MOV R0,R6
00000300 84E2 MOV.B @(2,R14),R0
00000302 6503 MOV R0,R5
00000304 84E1 MOV.B @(1,R14),R0
00000306 BEAA BSR _drawsprite
00000308 6403 MOV R0,R4
Snow.c 299 snow[x].y ++;
0000030A 84E2 MOV.B @(2,R14),R0
0000030C 7001 ADD #1,R0
0000030E 80E2 MOV.B R0,@(2,R14)
Snow.c 300 snow[x].x += (random(0) % 3) - 1;
00000310 BE76 BSR _random
00000312 E400 MOV #0,R4
00000314 D216 MOV.L L367+18,R2 ; __modlu
00000316 6103 MOV R0,R1
00000318 420B JSR @R2
0000031A 6083 MOV R8,R0
0000031C 9320 MOV.W L367+2,R3 ; H'00FF
0000031E 303C ADD R3,R0
00000320 6203 MOV R0,R2
00000322 84E1 MOV.B @(1,R14),R0
00000324 302C ADD R2,R0
00000326 80E1 MOV.B R0,@(1,R14)
Snow.c 301 if(snow[x].y == 64 || snow[x].x > 127 || snow[x].x < 0)
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 14
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
00000328 84E2 MOV.B @(2,R14),R0
0000032A 8840 CMP/EQ #64,R0
0000032C 8908 BT L356
0000032E E27F MOV #127,R2
00000330 84E1 MOV.B @(1,R14),R0
00000332 600C EXTU.B R0,R0
00000334 3027 CMP/GT R2,R0
00000336 8903 BT L356
00000338 84E1 MOV.B @(1,R14),R0
0000033A 600C EXTU.B R0,R0
0000033C 4011 CMP/PZ R0
0000033E 8936 BT L357
00000340 L356:
Snow.c 302 snow[x].active = 0;
00000340 A035 BRA L357
00000342 2BC0 MOV.B R12,@R11
00000344 L354:
Snow.c 303 }
Snow.c 304 else
Snow.c 305 {
Snow.c 306 if((rand() * RTC_GetTicks()) % 32 == 0)
00000344 D20B MOV.L L367+22,R2 ; _rand
00000346 420B JSR @R2
00000348 0009 NOP
0000034A D30B MOV.L L367+26,R3 ; _RTC_GetTicks
0000034C 430B JSR @R3
0000034E 2F06 MOV.L R0,@-R15
00000350 62F6 MOV.L @R15+,R2
00000352 0207 MUL.L R0,R2
00000354 001A STS MACL,R0
00000356 4011 CMP/PZ R0
00000358 8B10 BF L359
0000035A A014 BRA L360
0000035C C91F AND #31,R0
0000035E L367:
0000035E 1240 .DATA.W H'1240
00000360 00FF .DATA.W H'00FF
00000362 0000 .DATA.W 0
00000364 8001007C .DATA.L H'8001007C
00000368 <000000F5> .DATA.L H'000000F5+_snow
0000036C <00000000> .DATA.L _snow
00000370 <00000000> .DATA.L __modlu
00000374 <00000000> .DATA.L _rand
00000378 <00000000> .DATA.L _RTC_GetTicks
0000037C L359:
0000037C 6007 NOT R0,R0
0000037E 7001 ADD #1,R0
00000380 C91F AND #31,R0
00000382 6007 NOT R0,R0
00000384 7001 ADD #1,R0
00000386 L360:
00000386 2008 TST R0,R0
00000388 8B11 BF L357
Snow.c 307 {
Snow.c 308 snow[x].active = 1;
0000038A 2D90 MOV.B R9,@R13
Snow.c 309 snow[x].x = random(0) % 128;
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 15
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
0000038C BE38 BSR _random
0000038E E400 MOV #0,R4
00000390 C97F AND #127,R0
00000392 80D1 MOV.B R0,@(1,R13)
Snow.c 310 snow[x].y = 0;
00000394 60C3 MOV R12,R0
00000396 80D2 MOV.B R0,@(2,R13)
Snow.c 311 snow[x].dim = random(0) % 4;
00000398 BE32 BSR _random
0000039A E400 MOV #0,R4
0000039C C903 AND #3,R0
0000039E 80D3 MOV.B R0,@(3,R13)
Snow.c 312 snow[x].num = random(0) % 5;
000003A0 BE2E BSR _random
000003A2 E400 MOV #0,R4
000003A4 D318 MOV.L L368+4,R3 ; __modlu
000003A6 6103 MOV R0,R1
000003A8 430B JSR @R3
000003AA E005 MOV #5,R0
000003AC 80D4 MOV.B R0,@(4,R13)
000003AE L357:
000003AE 7AFF ADD #-1,R10
000003B0 7DFB ADD #-5,R13
000003B2 7BFB ADD #-5,R11
000003B4 62AC EXTU.B R10,R2
000003B6 4215 CMP/PL R2
000003B8 8D95 BT/S L353
000003BA 7EFB ADD #-5,R14
000003BC L352:
Snow.c 313 }
Snow.c 314 }
Snow.c 315 }
Snow.c 316 }
Snow.c 317
Snow.c 318 Alpha_GetData('A',variable);
000003BC D313 MOV.L L368+8,R3 ; _iSysCallFuncPtr
000003BE E700 MOV #0,R7
000003C0 D513 MOV.L L368+12,R5 ; _variable
000003C2 6673 MOV R7,R6
000003C4 6232 MOV.L @R3,R2
000003C6 911D MOV.W L368,R1 ; H'04DF
000003C8 2F16 MOV.L R1,@-R15
000003CA 420B JSR @R2
000003CC E441 MOV #65,R4
Snow.c 319 if(variable[0])
000003CE D310 MOV.L L368+12,R3 ; _variable
000003D0 6230 MOV.B @R3,R2
000003D2 2228 TST R2,R2
000003D4 8D0C BT/S L361
000003D6 7F04 ADD #4,R15
Snow.c 320 {
Snow.c 321 KillTimer(1);
000003D8 4F16 LDS.L @R15+,MACL
000003DA E401 MOV #1,R4
000003DC D20D MOV.L L368+16,R2 ; _KillTimer
000003DE 4F26 LDS.L @R15+,PR
000003E0 68F6 MOV.L @R15+,R8
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 16
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
000003E2 69F6 MOV.L @R15+,R9
000003E4 6AF6 MOV.L @R15+,R10
000003E6 6BF6 MOV.L @R15+,R11
000003E8 6CF6 MOV.L @R15+,R12
000003EA 6DF6 MOV.L @R15+,R13
000003EC 422B JMP @R2
000003EE 6EF6 MOV.L @R15+,R14
000003F0 L361:
Snow.c 322 }
Snow.c 323 }
000003F0 4F16 LDS.L @R15+,MACL
000003F2 4F26 LDS.L @R15+,PR
000003F4 68F6 MOV.L @R15+,R8
000003F6 69F6 MOV.L @R15+,R9
000003F8 6AF6 MOV.L @R15+,R10
000003FA 6BF6 MOV.L @R15+,R11
000003FC 6CF6 MOV.L @R15+,R12
000003FE 6DF6 MOV.L @R15+,R13
00000400 000B RTS
00000402 6EF6 MOV.L @R15+,R14
00000404 L368:
00000404 04DF .DATA.W H'04DF
00000406 0000 .DATA.W 0
00000408 <00000000> .DATA.L __modlu
0000040C <00000000> .DATA.L _iSysCallFuncPtr
00000410 <00000000> .DATA.L _variable
00000414 <00000000> .DATA.L _KillTimer
Snow.c 324
Snow.c 325 int AddIn_main(int isAppli, unsigned short OptionNum)
00000418 _AddIn_main: ; function: AddIn_main
; frame size=24
; used runtime library name:
; __slow_mvn
00000418 2FE6 MOV.L R14,@-R15
0000041A 2FD6 MOV.L R13,@-R15
0000041C 4F22 STS.L PR,@-R15
0000041E 7FF8 ADD #-8,R15
Snow.c 326 {
Snow.c 327 unsigned int key;
Snow.c 328 unsigned char text[3] = {0xE6, 0x91, 0};
00000420 D22C MOV.L L369+4,R2 ; L299
00000422 61F3 MOV R15,R1
00000424 D32C MOV.L L369+8,R3 ; __slow_mvn
00000426 7104 ADD #4,R1
00000428 430B JSR @R3
0000042A E003 MOV #3,R0
Snow.c 329 random(RTC_GetTicks());
0000042C D12B MOV.L L369+12,R1 ; _RTC_GetTicks
0000042E 410B JSR @R1
00000430 0009 NOP
00000432 BDE5 BSR _random
00000434 6403 MOV R0,R4
Snow.c 330 vram = Disp_GetVRAMPtr();
00000436 D22A MOV.L L369+16,R2 ; _Disp_GetVRAMPtr
00000438 420B JSR @R2
0000043A 0009 NOP
0000043C D329 MOV.L L369+20,R3 ; _vram
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 17
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
Snow.c 331 Alpha_ClearAll();
0000043E E700 MOV #0,R7
00000440 D129 MOV.L L369+24,R1 ; _iSysCallFuncPtr
00000442 6673 MOV R7,R6
00000444 2302 MOV.L R0,@R3
00000446 6573 MOV R7,R5
00000448 6212 MOV.L @R1,R2
0000044A 9341 MOV.W L369,R3 ; H'04E1
0000044C 2F36 MOV.L R3,@-R15
0000044E 420B JSR @R2
00000450 6473 MOV R7,R4
Snow.c 332 AllClr_VRAM();
00000452 D226 MOV.L L369+28,R2 ; _AllClr_VRAM
00000454 420B JSR @R2
00000456 0009 NOP
Snow.c 333 locate(3,3);
00000458 DE25 MOV.L L369+32,R14; _locate
0000045A E503 MOV #3,R5
0000045C 4E0B JSR @R14
0000045E 6453 MOV R5,R4
Snow.c 334 Print(&"~*| Snowfall |*~");
00000460 DD24 MOV.L L369+36,R13; _Print
00000462 D425 MOV.L L369+40,R4 ; L303
00000464 4D0B JSR @R13
00000466 0009 NOP
Snow.c 335 locate(4,1);
00000468 E501 MOV #1,R5
0000046A 4E0B JSR @R14
0000046C E404 MOV #4,R4
Snow.c 336 Print(&"(C) by Casimo");
0000046E D423 MOV.L L369+44,R4 ; L304
00000470 4D0B JSR @R13
00000472 0009 NOP
Snow.c 337 locate(4,5);
00000474 E505 MOV #5,R5
00000476 4E0B JSR @R14
00000478 E404 MOV #4,R4
Snow.c 338 Print(&"press any key");
0000047A D421 MOV.L L369+48,R4 ; L305
0000047C 4D0B JSR @R13
0000047E 0009 NOP
Snow.c 339 locate(6,6);
00000480 E506 MOV #6,R5
00000482 4E0B JSR @R14
00000484 6453 MOV R5,R4
Snow.c 340 Print(&"to start");
00000486 D41F MOV.L L369+52,R4 ; L306
00000488 4D0B JSR @R13
0000048A 0009 NOP
Snow.c 341 locate(4,8);
0000048C E508 MOV #8,R5
0000048E 4E0B JSR @R14
00000490 E404 MOV #4,R4
Snow.c 342 Print(&"exit with 1 A");
00000492 D41D MOV.L L369+56,R4 ; L307
00000494 4D0B JSR @R13
00000496 0009 NOP
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 18
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
Snow.c 343 locate(15,8);
00000498 E508 MOV #8,R5
0000049A 4E0B JSR @R14
0000049C E40F MOV #15,R4
Snow.c 344 Print(&text);
0000049E 64F3 MOV R15,R4
000004A0 4D0B JSR @R13
000004A2 7408 ADD #8,R4
Snow.c 345 display_vram();
000004A4 BEC8 BSR _display_vram
000004A6 0009 NOP
Snow.c 346 GetKey(&key);
000004A8 D218 MOV.L L369+60,R2 ; _GetKey
000004AA 64F3 MOV R15,R4
000004AC 420B JSR @R2
000004AE 7404 ADD #4,R4
Snow.c 347 Timer_Install(6, &snowtimer, 300);
000004B0 960F MOV.W L369+2,R6 ; H'012C
000004B2 D517 MOV.L L369+64,R5 ; _snowtimer
000004B4 D317 MOV.L L369+68,R3 ; _Timer_Install
000004B6 430B JSR @R3
000004B8 E406 MOV #6,R4
Snow.c 348 Timer_Start(6);
000004BA D217 MOV.L L369+72,R2 ; _Timer_Start
000004BC 420B JSR @R2
000004BE E406 MOV #6,R4
Snow.c 349 App_RUN_MAT();
000004C0 D316 MOV.L L369+76,R3 ; _App_RUN_MAT
000004C2 430B JSR @R3
000004C4 0009 NOP
Snow.c 350 }
000004C6 7F0C ADD #12,R15
000004C8 4F26 LDS.L @R15+,PR
000004CA 6DF6 MOV.L @R15+,R13
000004CC 000B RTS
000004CE 6EF6 MOV.L @R15+,R14
000004D0 L369:
000004D0 04E1 .DATA.W H'04E1
000004D2 012C .DATA.W H'012C
000004D4 <00000000> .DATA.L L299
000004D8 <00000000> .DATA.L __slow_mvn
000004DC <00000000> .DATA.L _RTC_GetTicks
000004E0 <00000000> .DATA.L _Disp_GetVRAMPtr
000004E4 <00000000> .DATA.L _vram
000004E8 <00000000> .DATA.L _iSysCallFuncPtr
000004EC <00000000> .DATA.L _AllClr_VRAM
000004F0 <00000000> .DATA.L _locate
000004F4 <00000000> .DATA.L _Print
000004F8 <00000000> .DATA.L L303
000004FC <00000000> .DATA.L L304
00000500 <00000000> .DATA.L L305
00000504 <00000000> .DATA.L L306
00000508 <00000000> .DATA.L L307
0000050C <00000000> .DATA.L _GetKey
00000510 <00000000> .DATA.L _snowtimer
00000514 <00000000> .DATA.L _Timer_Install
00000518 <00000000> .DATA.L _Timer_Start
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 19
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
0000051C <00000000> .DATA.L _App_RUN_MAT
Snow.c 351
Snow.c 352 #pragma section _BR_Size
Snow.c 353 unsigned long BR_Size;
Snow.c 354 #pragma section
Snow.c 355 #pragma section _TOP
Snow.c 356 int InitializeSystem(int isAppli, unsigned short OptionNum)
P_T 00000000 _InitializeSystem: ; function: InitializeSystem
; frame size=4
Snow.c 357 {return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
00000000 D303 MOV.L L370+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 L370:
0000000E 0000 .DATA.W 0
00000010 <00000000> .DATA.L _INIT_ADDIN_APPLICATION
Snow.c 358 #pragma section
Snow.c 359
C 00000000 _SysCallWrapper: ; static: SysCallWrapper
00000000 D201422B60 .DATA.L H'D201422B,H'60F20000,H'80010070
F200008001
0070
0000000C _sprite3: ; static: sprite3
0000000C 0100010001 .DATA.B H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,
0001000100 + H'01,H'00,H'00,H'01,H'00,H'01,H'01,H'01,H'00,H'01,H'00,H'00,H'01,H'00,H'01,H'00,
0100010001 + H'01,H'00,H'01,H'00
0001000001
0001010100
0100000100
0100010001
00
00000030 _sprite4: ; static: sprite4
00000030 0100000100 .DATA.B H'01,H'00,H'00,H'01,H'00,H'01,H'01,H'00,H'00,H'01,H'01,H'00,H'01,H'00,H'00,H'01,
0101000001 + H'00,H'01,H'01,H'00,H'01,H'00,H'00,H'01,H'01,H'00,H'00,H'01,H'00,H'01,H'01,H'00,
0100010000 + H'01,H'00,H'00,H'01,H'00,H'01,H'01,H'00,H'00,H'01,H'01,H'00,H'01,H'00,H'00,H'01,
0100010100 + H'00,H'01,H'01,H'00,H'01,H'00,H'00,H'01,H'01,H'00,H'00,H'01,H'00,H'01,H'01,H'00
0100000101
0000010001
0100010000
0100010100
0001010001
0000010001
0100010000
0101000001
00010100
00000070 _sprite5: ; static: sprite5
00000070 0001000100 .DATA.B H'00,H'01,H'00,H'01,H'00,H'01,H'01,H'00,H'01,H'01,H'00,H'00,H'01,H'00,H'00,H'01,
0101000101 + H'01,H'00,H'01,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,
0000010000 + H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,
0101000101 + H'00,H'01,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'01,H'01,H'00,H'01,H'01,H'00,H'01,
0001000100 + H'01,H'00,H'01,H'01,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'01,H'00,H'01,H'00,H'01,
0100010001 + H'00,H'01,H'01,H'01,H'00,H'01,H'01,H'00,H'01,H'01,H'00,H'01,H'01,H'01,H'00,H'01,
0001000100 + H'00,H'01,H'00,H'01
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 20
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
0100010001
0001000100
0100010001
0100010001
0001010100
0101000101
0001010100
0100010001
0100010001
0001010100
0101000101
0001010100
0100010001
000000D4 _sprite6: ; static: sprite6
000000D4 0001000001 .DATA.B H'00,H'01,H'00,H'00,H'01,H'00,H'01,H'01,H'00,H'00,H'01,H'01,H'00,H'00,H'01,H'01,
0001010000 + H'00,H'00,H'00,H'00,H'01,H'01,H'00,H'00,H'01,H'01,H'00,H'00,H'01,H'01,H'00,H'01,
0101000001 + H'00,H'00,H'01,H'00,H'01,H'01,H'00,H'00,H'01,H'01,H'01,H'00,H'01,H'01,H'00,H'01,
0100000000 + H'00,H'01,H'01,H'01,H'01,H'00,H'00,H'01,H'01,H'01,H'01,H'00,H'01,H'00,H'01,H'01,
0101000001 + H'00,H'01,H'01,H'01,H'00,H'00,H'01,H'01,H'00,H'01,H'00,H'00,H'01,H'00,H'01,H'01,
0100000101 + H'01,H'01,H'01,H'01,H'00,H'01,H'00,H'00,H'01,H'00,H'00,H'01,H'00,H'00,H'01,H'00,
0001000001 + H'01,H'01,H'01,H'01,H'01,H'01,H'00,H'01,H'00,H'00,H'01,H'00,H'00,H'01,H'00,H'00,
0001010000 + H'01,H'00,H'01,H'01,H'01,H'01,H'01,H'01,H'00,H'01,H'00,H'00,H'01,H'00,H'00,H'01,
0101010001 + H'00,H'00,H'01,H'00,H'01,H'01,H'01,H'01,H'01,H'01,H'00,H'01,H'00,H'00,H'01,H'00
0100010001
0101010000
0101010100
0100010100
0101010000
0101000100
0001000101
0101010100
0100000100
0001000001
0001010101
0101000100
0001000001
0000010001
0101010101
0001000001
0000010000
0100010101
0101010001
00000100
00000164 _sprite7: ; static: sprite7
00000164 0100010001 .DATA.B H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'01,H'00,H'01,H'01,H'00,H'01,H'01,
0001000101 + H'01,H'00,H'01,H'01,H'01,H'00,H'00,H'00,H'01,H'00,H'00,H'00,H'01,H'01,H'01,H'00,
0001010001 + H'01,H'01,H'01,H'00,H'01,H'01,H'00,H'01,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,
0101000101 + H'01,H'00,H'01,H'01,H'00,H'01,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'01,
0100000001 + H'01,H'00,H'01,H'00,H'01,H'01,H'00,H'00,H'01,H'00,H'01,H'00,H'00,H'01,H'01,H'00,
0000000101 + H'01,H'00,H'01,H'01,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'01,H'00,H'01,
0100010101 + H'01,H'00,H'00,H'01,H'01,H'00,H'01,H'01,H'00,H'01,H'00,H'00,H'01,H'00,H'00,H'01,
0001010001 + H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,
0100010001 + H'01,H'00,H'01,H'00,H'01,H'01,H'00,H'00,H'01,H'00,H'00,H'01,H'00,H'01,H'01,H'00,
0001000100 + H'01,H'01,H'00,H'01,H'01,H'01,H'00,H'01,H'01,H'01,H'01,H'00,H'00,H'01,H'00,H'00,
0101000101 + H'01,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,H'00,H'01,
0001000100 + H'00,H'01,H'00,H'01,H'00,H'01,H'01,H'00,H'00,H'01,H'00,H'00,H'01,H'01,H'01,H'01,
0100010101 + H'00,H'01,H'01,H'01
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 21
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
0001000101
0000010001
0000010100
0100010101
0001000100
0100010100
0101000001
0100010100
0100000100
0001010001
0001000100
0100010001
0001000100
0100010100
0001000001
0001010001
0100010101
0001010101
0000010000
0101000100
0100010001
0001000100
0100010001
0001010000
0100000101
0101000101
01
00000228 L299:
00000228 E69100 .DATA.B H'E6,H'91,H'00
0000022B 00000001 .RES.B 1
0000022C L303:
0000022C 7E2A7C2053 .SDATA "~*| Snowfall |*~"
6E6F776661
6C6C207C2A
7E
0000023C 00 .DATA.B H'00
0000023D 00000001 .RES.B 1
0000023E 00000002 .RES.W 1
00000240 L304:
00000240 2843292062 .SDATA "(C) by Casimo"
7920436173
696D6F
0000024D 00 .DATA.B H'00
0000024E 00000002 .RES.W 1
00000250 L305:
00000250 7072657373 .SDATA "press any key"
20616E7920
6B6579
0000025D 00 .DATA.B H'00
0000025E 00000002 .RES.W 1
00000260 L306:
00000260 746F207374 .SDATA "to start"
617274
00000268 00 .DATA.B H'00
00000269 00000001 .RES.B 1
0000026A 00000002 .RES.W 1
0000026C L307:
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 22
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
0000026C 6578697420 .SDATA "exit with 1 A"
7769746820
312041
00000279 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 _snow: ; static: snow
00000004 000000FA .RES.B 250
B_B 00000000 _BR_Size: ; static: BR_Size
00000000 00000004 .RES.L 1
SH SERIES C/C++ Compiler (Ver. 6.0C) 23-Dec-2012 15:48:25 PAGE 1
******** STATISTICS INFORMATION ********
********** ERROR INFORMATION ***********
NUMBER OF ERRORS: 0
NUMBER OF WARNINGS: 0
******* SOURCE LINE INFORMATION ********
COMPILED SOURCE LINE: 359
******* SECTION SIZE INFORMATION *******
PROGRAM SECTION (P): 00000520 Byte(s)
PROGRAM SECTION (P_BR_Size): 00000000 Byte(s)
PROGRAM SECTION (P_TOP): 00000014 Byte(s)
CONSTANT SECTION (C): 0000027A 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): 000000FE Byte(s)
BSS SECTION (B_BR_Size): 00000004 Byte(s)
BSS SECTION (B_TOP): 00000000 Byte(s)
TOTAL PROGRAM SIZE: 000008D0 Byte(s)
********** LABEL INFORMATION ***********
NUMBER OF EXTERNAL REFERENCE SYMBOLS: 15
NUMBER OF EXTERNAL DEFINITION SYMBOLS: 19
NUMBER OF INTERNAL/EXTERNAL SYMBOLS: 81
*** COMMAND PARAMETER ***
-subcommand=C:\Users\Timo\AppData\Local\Temp\hmk7676.tmp
|