mirror of https://github.com/PrimeDecomp/prime.git
216 lines
12 KiB
ArmAsm
216 lines
12 KiB
ArmAsm
.include "macros.inc"
|
|
|
|
.section .data, "wa"
|
|
.balign 8
|
|
|
|
.global sndSintab
|
|
sndSintab:
|
|
.2byte 0, 6, 12, 18, 25, 31, 37, 43, 50, 56, 62, 69, 75, 81, 87, 94
|
|
.2byte 100, 106, 113, 119, 125, 131, 138, 144, 150, 157, 163, 169, 175, 182, 188, 194
|
|
.2byte 200, 207, 213, 219, 226, 232, 238, 244, 251, 257, 263, 269, 276, 282, 288, 295
|
|
.2byte 301, 307, 313, 320, 326, 332, 338, 345, 351, 357, 363, 370, 376, 382, 388, 395
|
|
.2byte 401, 407, 413, 420, 426, 432, 438, 445, 451, 457, 463, 470, 476, 482, 488, 495
|
|
.2byte 501, 507, 513, 520, 526, 532, 538, 545, 551, 557, 563, 569, 576, 582, 588, 594
|
|
.2byte 601, 607, 613, 619, 625, 632, 638, 644, 650, 656, 663, 669, 675, 681, 687, 694
|
|
.2byte 700, 706, 712, 718, 725, 731, 737, 743, 749, 755, 762, 768, 774, 780, 786, 792
|
|
.2byte 799, 805, 811, 817, 823, 829, 836, 842, 848, 854, 860, 866, 872, 879, 885, 891
|
|
.2byte 897, 903, 909, 915, 921, 928, 934, 940, 946, 952, 958, 964, 970, 976, 983, 989
|
|
.2byte 995, 1001, 1007, 1013, 1019, 1025, 1031, 1037, 1043, 1050, 1056, 1062, 1068, 1074, 1080, 1086
|
|
.2byte 1092, 1098, 1104, 1110, 1116, 1122, 1128, 1134, 1140, 1146, 1152, 1158, 1164, 1170, 1176, 1182
|
|
.2byte 1189, 1195, 1201, 1207, 1213, 1219, 1225, 1231, 1237, 1243, 1248, 1254, 1260, 1266, 1272, 1278
|
|
.2byte 1284, 1290, 1296, 1302, 1308, 1314, 1320, 1326, 1332, 1338, 1344, 1350, 1356, 1362, 1368, 1373
|
|
.2byte 1379, 1385, 1391, 1397, 1403, 1409, 1415, 1421, 1427, 1433, 1438, 1444, 1450, 1456, 1462, 1468
|
|
.2byte 1474, 1479, 1485, 1491, 1497, 1503, 1509, 1515, 1520, 1526, 1532, 1538, 1544, 1550, 1555, 1561
|
|
.2byte 1567, 1573, 1579, 1584, 1590, 1596, 1602, 1608, 1613, 1619, 1625, 1631, 1636, 1642, 1648, 1654
|
|
.2byte 1659, 1665, 1671, 1677, 1682, 1688, 1694, 1699, 1705, 1711, 1717, 1722, 1728, 1734, 1739, 1745
|
|
.2byte 1751, 1756, 1762, 1768, 1773, 1779, 1785, 1790, 1796, 1802, 1807, 1813, 1819, 1824, 1830, 1835
|
|
.2byte 1841, 1847, 1852, 1858, 1864, 1869, 1875, 1880, 1886, 1891, 1897, 1903, 1908, 1914, 1919, 1925
|
|
.2byte 1930, 1936, 1941, 1947, 1952, 1958, 1964, 1969, 1975, 1980, 1986, 1991, 1997, 2002, 2007, 2013
|
|
.2byte 2018, 2024, 2029, 2035, 2040, 2046, 2051, 2057, 2062, 2067, 2073, 2078, 2084, 2089, 2094, 2100
|
|
.2byte 2105, 2111, 2116, 2121, 2127, 2132, 2138, 2143, 2148, 2154, 2159, 2164, 2170, 2175, 2180, 2186
|
|
.2byte 2191, 2196, 2201, 2207, 2212, 2217, 2223, 2228, 2233, 2238, 2244, 2249, 2254, 2259, 2265, 2270
|
|
.2byte 2275, 2280, 2286, 2291, 2296, 2301, 2306, 2312, 2317, 2322, 2327, 2332, 2337, 2343, 2348, 2353
|
|
.2byte 2358, 2363, 2368, 2373, 2379, 2384, 2389, 2394, 2399, 2404, 2409, 2414, 2419, 2424, 2429, 2434
|
|
.2byte 2439, 2445, 2450, 2455, 2460, 2465, 2470, 2475, 2480, 2485, 2490, 2495, 2500, 2505, 2510, 2515
|
|
.2byte 2519, 2524, 2529, 2534, 2539, 2544, 2549, 2554, 2559, 2564, 2569, 2574, 2578, 2583, 2588, 2593
|
|
.2byte 2598, 2603, 2608, 2613, 2617, 2622, 2627, 2632, 2637, 2641, 2646, 2651, 2656, 2661, 2665, 2670
|
|
.2byte 2675, 2680, 2684, 2689, 2694, 2699, 2703, 2708, 2713, 2717, 2722, 2727, 2732, 2736, 2741, 2746
|
|
.2byte 2750, 2755, 2760, 2764, 2769, 2773, 2778, 2783, 2787, 2792, 2796, 2801, 2806, 2810, 2815, 2819
|
|
.2byte 2824, 2828, 2833, 2837, 2842, 2847, 2851, 2856, 2860, 2865, 2869, 2874, 2878, 2882, 2887, 2891
|
|
.2byte 2896, 2900, 2905, 2909, 2914, 2918, 2922, 2927, 2931, 2936, 2940, 2944, 2949, 2953, 2957, 2962
|
|
.2byte 2966, 2970, 2975, 2979, 2983, 2988, 2992, 2996, 3000, 3005, 3009, 3013, 3018, 3022, 3026, 3030
|
|
.2byte 3034, 3039, 3043, 3047, 3051, 3055, 3060, 3064, 3068, 3072, 3076, 3080, 3085, 3089, 3093, 3097
|
|
.2byte 3101, 3105, 3109, 3113, 3117, 3121, 3126, 3130, 3134, 3138, 3142, 3146, 3150, 3154, 3158, 3162
|
|
.2byte 3166, 3170, 3174, 3178, 3182, 3186, 3190, 3193, 3197, 3201, 3205, 3209, 3213, 3217, 3221, 3225
|
|
.2byte 3229, 3232, 3236, 3240, 3244, 3248, 3252, 3255, 3259, 3263, 3267, 3271, 3274, 3278, 3282, 3286
|
|
.2byte 3289, 3293, 3297, 3301, 3304, 3308, 3312, 3315, 3319, 3323, 3326, 3330, 3334, 3337, 3341, 3345
|
|
.2byte 3348, 3352, 3356, 3359, 3363, 3366, 3370, 3373, 3377, 3381, 3384, 3388, 3391, 3395, 3398, 3402
|
|
.2byte 3405, 3409, 3412, 3416, 3419, 3423, 3426, 3429, 3433, 3436, 3440, 3443, 3447, 3450, 3453, 3457
|
|
.2byte 3460, 3463, 3467, 3470, 3473, 3477, 3480, 3483, 3487, 3490, 3493, 3497, 3500, 3503, 3506, 3510
|
|
.2byte 3513, 3516, 3519, 3522, 3526, 3529, 3532, 3535, 3538, 3541, 3545, 3548, 3551, 3554, 3557, 3560
|
|
.2byte 3563, 3566, 3570, 3573, 3576, 3579, 3582, 3585, 3588, 3591, 3594, 3597, 3600, 3603, 3606, 3609
|
|
.2byte 3612, 3615, 3618, 3621, 3624, 3627, 3629, 3632, 3635, 3638, 3641, 3644, 3647, 3650, 3652, 3655
|
|
.2byte 3658, 3661, 3664, 3667, 3669, 3672, 3675, 3678, 3680, 3683, 3686, 3689, 3691, 3694, 3697, 3700
|
|
.2byte 3702, 3705, 3708, 3710, 3713, 3716, 3718, 3721, 3723, 3726, 3729, 3731, 3734, 3736, 3739, 3742
|
|
.2byte 3744, 3747, 3749, 3752, 3754, 3757, 3759, 3762, 3764, 3767, 3769, 3772, 3774, 3776, 3779, 3781
|
|
.2byte 3784, 3786, 3789, 3791, 3793, 3796, 3798, 3800, 3803, 3805, 3807, 3810, 3812, 3814, 3816, 3819
|
|
.2byte 3821, 3823, 3826, 3828, 3830, 3832, 3834, 3837, 3839, 3841, 3843, 3845, 3848, 3850, 3852, 3854
|
|
.2byte 3856, 3858, 3860, 3862, 3864, 3867, 3869, 3871, 3873, 3875, 3877, 3879, 3881, 3883, 3885, 3887
|
|
.2byte 3889, 3891, 3893, 3895, 3897, 3899, 3900, 3902, 3904, 3906, 3908, 3910, 3912, 3914, 3915, 3917
|
|
.2byte 3919, 3921, 3923, 3925, 3926, 3928, 3930, 3932, 3933, 3935, 3937, 3939, 3940, 3942, 3944, 3945
|
|
.2byte 3947, 3949, 3950, 3952, 3954, 3955, 3957, 3959, 3960, 3962, 3963, 3965, 3967, 3968, 3970, 3971
|
|
.2byte 3973, 3974, 3976, 3977, 3979, 3980, 3982, 3983, 3985, 3986, 3988, 3989, 3990, 3992, 3993, 3995
|
|
.2byte 3996, 3997, 3999, 4000, 4001, 4003, 4004, 4005, 4007, 4008, 4009, 4011, 4012, 4013, 4014, 4016
|
|
.2byte 4017, 4018, 4019, 4020, 4022, 4023, 4024, 4025, 4026, 4027, 4029, 4030, 4031, 4032, 4033, 4034
|
|
.2byte 4035, 4036, 4037, 4038, 4039, 4040, 4041, 4042, 4043, 4044, 4045, 4046, 4047, 4048, 4049, 4050
|
|
.2byte 4051, 4052, 4053, 4054, 4055, 4056, 4057, 4057, 4058, 4059, 4060, 4061, 4062, 4062, 4063, 4064
|
|
.2byte 4065, 4065, 4066, 4067, 4068, 4068, 4069, 4070, 4071, 4071, 4072, 4073, 4073, 4074, 4075, 4075
|
|
.2byte 4076, 4076, 4077, 4078, 4078, 4079, 4079, 4080, 4080, 4081, 4081, 4082, 4082, 4083, 4083, 4084
|
|
.2byte 4084, 4085, 4085, 4086, 4086, 4087, 4087, 4087, 4088, 4088, 4089, 4089, 4089, 4090, 4090, 4090
|
|
.2byte 4091, 4091, 4091, 4091, 4092, 4092, 4092, 4092, 4093, 4093, 4093, 4093, 4094, 4094, 4094, 4094
|
|
.2byte 4094, 4094, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095
|
|
.skip 8
|
|
|
|
.section .sdata, "wa"
|
|
.balign 8
|
|
.global last_rnd
|
|
last_rnd:
|
|
.4byte 1
|
|
.skip 4
|
|
|
|
.section .text, "ax"
|
|
|
|
.global sndRand
|
|
sndRand:
|
|
/* 803B2DA0 003AFD00 3C 60 A8 35 */ lis r3, 0xA8351D63@ha
|
|
/* 803B2DA4 003AFD04 80 8D A0 10 */ lwz r4, last_rnd@sda21(r13)
|
|
/* 803B2DA8 003AFD08 38 03 1D 63 */ addi r0, r3, 0xA8351D63@l
|
|
/* 803B2DAC 003AFD0C 7C 04 01 D6 */ mullw r0, r4, r0
|
|
/* 803B2DB0 003AFD10 90 0D A0 10 */ stw r0, last_rnd@sda21(r13)
|
|
/* 803B2DB4 003AFD14 54 03 D4 3E */ rlwinm r3, r0, 0x1a, 0x10, 0x1f
|
|
/* 803B2DB8 003AFD18 4E 80 00 20 */ blr
|
|
|
|
.global sndSin
|
|
sndSin:
|
|
/* 803B2DBC 003AFD1C 54 60 05 3E */ clrlwi r0, r3, 0x14
|
|
/* 803B2DC0 003AFD20 28 00 04 00 */ cmplwi r0, 0x400
|
|
/* 803B2DC4 003AFD24 40 80 00 18 */ bge lbl_803B2DDC
|
|
/* 803B2DC8 003AFD28 3C 60 80 3F */ lis r3, sndSintab@ha
|
|
/* 803B2DCC 003AFD2C 54 00 0B FC */ rlwinm r0, r0, 1, 0xf, 0x1e
|
|
/* 803B2DD0 003AFD30 38 63 42 78 */ addi r3, r3, sndSintab@l
|
|
/* 803B2DD4 003AFD34 7C 63 02 AE */ lhax r3, r3, r0
|
|
/* 803B2DD8 003AFD38 4E 80 00 20 */ blr
|
|
lbl_803B2DDC:
|
|
/* 803B2DDC 003AFD3C 28 00 08 00 */ cmplwi r0, 0x800
|
|
/* 803B2DE0 003AFD40 40 80 00 20 */ bge lbl_803B2E00
|
|
/* 803B2DE4 003AFD44 54 00 05 BE */ clrlwi r0, r0, 0x16
|
|
/* 803B2DE8 003AFD48 3C 60 80 3F */ lis r3, sndSintab@ha
|
|
/* 803B2DEC 003AFD4C 20 00 03 FF */ subfic r0, r0, 0x3ff
|
|
/* 803B2DF0 003AFD50 54 00 08 3C */ slwi r0, r0, 1
|
|
/* 803B2DF4 003AFD54 38 63 42 78 */ addi r3, r3, sndSintab@l
|
|
/* 803B2DF8 003AFD58 7C 63 02 AE */ lhax r3, r3, r0
|
|
/* 803B2DFC 003AFD5C 4E 80 00 20 */ blr
|
|
lbl_803B2E00:
|
|
/* 803B2E00 003AFD60 28 00 0C 00 */ cmplwi r0, 0xc00
|
|
/* 803B2E04 003AFD64 40 80 00 20 */ bge lbl_803B2E24
|
|
/* 803B2E08 003AFD68 3C 60 80 3F */ lis r3, sndSintab@ha
|
|
/* 803B2E0C 003AFD6C 54 00 0D 7C */ rlwinm r0, r0, 1, 0x15, 0x1e
|
|
/* 803B2E10 003AFD70 38 63 42 78 */ addi r3, r3, sndSintab@l
|
|
/* 803B2E14 003AFD74 7C 03 02 AE */ lhax r0, r3, r0
|
|
/* 803B2E18 003AFD78 7C 00 00 D0 */ neg r0, r0
|
|
/* 803B2E1C 003AFD7C 7C 03 07 34 */ extsh r3, r0
|
|
/* 803B2E20 003AFD80 4E 80 00 20 */ blr
|
|
lbl_803B2E24:
|
|
/* 803B2E24 003AFD84 54 00 05 BE */ clrlwi r0, r0, 0x16
|
|
/* 803B2E28 003AFD88 3C 60 80 3F */ lis r3, sndSintab@ha
|
|
/* 803B2E2C 003AFD8C 20 00 03 FF */ subfic r0, r0, 0x3ff
|
|
/* 803B2E30 003AFD90 54 00 08 3C */ slwi r0, r0, 1
|
|
/* 803B2E34 003AFD94 38 63 42 78 */ addi r3, r3, sndSintab@l
|
|
/* 803B2E38 003AFD98 7C 03 02 AE */ lhax r0, r3, r0
|
|
/* 803B2E3C 003AFD9C 7C 00 00 D0 */ neg r0, r0
|
|
/* 803B2E40 003AFDA0 7C 03 07 34 */ extsh r3, r0
|
|
/* 803B2E44 003AFDA4 4E 80 00 20 */ blr
|
|
|
|
.global sndBSearch
|
|
sndBSearch:
|
|
/* 803B2E48 003AFDA8 94 21 FF D0 */ stwu r1, -0x30(r1)
|
|
/* 803B2E4C 003AFDAC 7C 08 02 A6 */ mflr r0
|
|
/* 803B2E50 003AFDB0 90 01 00 34 */ stw r0, 0x34(r1)
|
|
/* 803B2E54 003AFDB4 39 61 00 30 */ addi r11, r1, 0x30
|
|
/* 803B2E58 003AFDB8 4B FD 6C 19 */ bl _savegpr_24
|
|
/* 803B2E5C 003AFDBC 2C 05 00 00 */ cmpwi r5, 0
|
|
/* 803B2E60 003AFDC0 7C 78 1B 78 */ mr r24, r3
|
|
/* 803B2E64 003AFDC4 7C 99 23 78 */ mr r25, r4
|
|
/* 803B2E68 003AFDC8 7C DA 33 78 */ mr r26, r6
|
|
/* 803B2E6C 003AFDCC 7C FB 3B 78 */ mr r27, r7
|
|
/* 803B2E70 003AFDD0 41 82 00 60 */ beq lbl_803B2ED0
|
|
/* 803B2E74 003AFDD4 3B E0 00 01 */ li r31, 1
|
|
/* 803B2E78 003AFDD8 7C BE 2B 78 */ mr r30, r5
|
|
lbl_803B2E7C:
|
|
/* 803B2E7C 003AFDDC 7C 1F F2 14 */ add r0, r31, r30
|
|
/* 803B2E80 003AFDE0 7F 6C DB 78 */ mr r12, r27
|
|
/* 803B2E84 003AFDE4 7C 1D 0E 70 */ srawi r29, r0, 1
|
|
/* 803B2E88 003AFDE8 7F 03 C3 78 */ mr r3, r24
|
|
/* 803B2E8C 003AFDEC 38 1D FF FF */ addi r0, r29, -1
|
|
/* 803B2E90 003AFDF0 7C 1A 01 D6 */ mullw r0, r26, r0
|
|
/* 803B2E94 003AFDF4 7F 99 02 14 */ add r28, r25, r0
|
|
/* 803B2E98 003AFDF8 7F 84 E3 78 */ mr r4, r28
|
|
/* 803B2E9C 003AFDFC 7D 89 03 A6 */ mtctr r12
|
|
/* 803B2EA0 003AFE00 4E 80 04 21 */ bctrl
|
|
/* 803B2EA4 003AFE04 2C 03 00 00 */ cmpwi r3, 0
|
|
/* 803B2EA8 003AFE08 40 82 00 0C */ bne lbl_803B2EB4
|
|
/* 803B2EAC 003AFE0C 7F 83 E3 78 */ mr r3, r28
|
|
/* 803B2EB0 003AFE10 48 00 00 24 */ b lbl_803B2ED4
|
|
lbl_803B2EB4:
|
|
/* 803B2EB4 003AFE14 40 80 00 08 */ bge lbl_803B2EBC
|
|
/* 803B2EB8 003AFE18 3B DD FF FF */ addi r30, r29, -1
|
|
lbl_803B2EBC:
|
|
/* 803B2EBC 003AFE1C 54 60 0F FF */ rlwinm. r0, r3, 1, 0x1f, 0x1f
|
|
/* 803B2EC0 003AFE20 40 82 00 08 */ bne lbl_803B2EC8
|
|
/* 803B2EC4 003AFE24 3B FD 00 01 */ addi r31, r29, 1
|
|
lbl_803B2EC8:
|
|
/* 803B2EC8 003AFE28 7C 1F F0 00 */ cmpw r31, r30
|
|
/* 803B2ECC 003AFE2C 40 81 FF B0 */ ble lbl_803B2E7C
|
|
lbl_803B2ED0:
|
|
/* 803B2ED0 003AFE30 38 60 00 00 */ li r3, 0
|
|
lbl_803B2ED4:
|
|
/* 803B2ED4 003AFE34 39 61 00 30 */ addi r11, r1, 0x30
|
|
/* 803B2ED8 003AFE38 4B FD 6B E5 */ bl _restgpr_24
|
|
/* 803B2EDC 003AFE3C 80 01 00 34 */ lwz r0, 0x34(r1)
|
|
/* 803B2EE0 003AFE40 7C 08 03 A6 */ mtlr r0
|
|
/* 803B2EE4 003AFE44 38 21 00 30 */ addi r1, r1, 0x30
|
|
/* 803B2EE8 003AFE48 4E 80 00 20 */ blr
|
|
|
|
.global sndConvertMs
|
|
sndConvertMs:
|
|
/* 803B2EEC 003AFE4C 80 03 00 00 */ lwz r0, 0(r3)
|
|
/* 803B2EF0 003AFE50 54 00 40 2E */ slwi r0, r0, 8
|
|
/* 803B2EF4 003AFE54 90 03 00 00 */ stw r0, 0(r3)
|
|
/* 803B2EF8 003AFE58 4E 80 00 20 */ blr
|
|
|
|
.global sndConvertTicks
|
|
sndConvertTicks:
|
|
/* 803B2EFC 003AFE5C 94 21 FF F0 */ stwu r1, -0x10(r1)
|
|
/* 803B2F00 003AFE60 7C 08 02 A6 */ mflr r0
|
|
/* 803B2F04 003AFE64 90 01 00 14 */ stw r0, 0x14(r1)
|
|
/* 803B2F08 003AFE68 93 E1 00 0C */ stw r31, 0xc(r1)
|
|
/* 803B2F0C 003AFE6C 7C 7F 1B 78 */ mr r31, r3
|
|
/* 803B2F10 003AFE70 7C 83 23 78 */ mr r3, r4
|
|
/* 803B2F14 003AFE74 4B FE 5D D1 */ bl synthGetTicksPerSecond
|
|
/* 803B2F18 003AFE78 80 1F 00 00 */ lwz r0, 0(r31)
|
|
/* 803B2F1C 003AFE7C 54 00 80 1E */ slwi r0, r0, 0x10
|
|
/* 803B2F20 003AFE80 7C 00 1B 96 */ divwu r0, r0, r3
|
|
/* 803B2F24 003AFE84 1C 00 03 E8 */ mulli r0, r0, 0x3e8
|
|
/* 803B2F28 003AFE88 54 00 D9 7E */ srwi r0, r0, 5
|
|
/* 803B2F2C 003AFE8C 90 1F 00 00 */ stw r0, 0(r31)
|
|
/* 803B2F30 003AFE90 83 E1 00 0C */ lwz r31, 0xc(r1)
|
|
/* 803B2F34 003AFE94 80 01 00 14 */ lwz r0, 0x14(r1)
|
|
/* 803B2F38 003AFE98 7C 08 03 A6 */ mtlr r0
|
|
/* 803B2F3C 003AFE9C 38 21 00 10 */ addi r1, r1, 0x10
|
|
/* 803B2F40 003AFEA0 4E 80 00 20 */ blr
|
|
|
|
.global sndConvert2Ms
|
|
sndConvert2Ms:
|
|
/* 803B2F44 003AFEA4 54 63 C2 3E */ srwi r3, r3, 8
|
|
/* 803B2F48 003AFEA8 4E 80 00 20 */ blr
|