mirror of https://github.com/PrimeDecomp/prime.git
373 lines
9.2 KiB
ArmAsm
373 lines
9.2 KiB
ArmAsm
.include "macros.inc"
|
|
|
|
.section .data
|
|
|
|
.global toneup_map
|
|
toneup_map:
|
|
# ROM: 0x3F0420
|
|
.4byte 0x3F800000
|
|
.4byte 0x3F879C80
|
|
.4byte 0x3F8FACD8
|
|
.4byte 0x3F9837F0
|
|
.4byte 0x3FA14518
|
|
.4byte 0x3FAADC08
|
|
.4byte 0x3FB504F8
|
|
.4byte 0x3FBFC888
|
|
.4byte 0x3FCB2FF8
|
|
.4byte 0x3FD74500
|
|
.4byte 0x3FE411F8
|
|
.4byte 0x3FF1A1C0
|
|
.4byte 0x40000004
|
|
.4byte 0x40079C80
|
|
.4byte 0x400FACD8
|
|
.4byte 0x401837F4
|
|
.4byte 0x4021451C
|
|
.4byte 0x402ADC0C
|
|
.4byte 0x403504F8
|
|
.4byte 0x403FC88C
|
|
.4byte 0x404B2FFC
|
|
.4byte 0x40574504
|
|
.4byte 0x406411F8
|
|
.4byte 0x4071A1C4
|
|
.4byte 0x40800004
|
|
.4byte 0x40879C80
|
|
.4byte 0x408FACDA
|
|
.4byte 0x409837F4
|
|
.4byte 0x40A1451C
|
|
.4byte 0x40AADC0E
|
|
.4byte 0x40B504F8
|
|
.4byte 0x40BFC88C
|
|
.4byte 0x40CB2FFC
|
|
.4byte 0x40D74504
|
|
.4byte 0x40E411F8
|
|
.4byte 0x40F1A1C6
|
|
.4byte 0x41000004
|
|
.4byte 0x41079C81
|
|
.4byte 0x410FACDB
|
|
.4byte 0x411837F5
|
|
.4byte 0x4121451D
|
|
.4byte 0x412ADC0E
|
|
.4byte 0x413504F9
|
|
.4byte 0x413FC88D
|
|
.4byte 0x414B2FFC
|
|
.4byte 0x41574504
|
|
.4byte 0x416411F8
|
|
.4byte 0x4171A1C7
|
|
.4byte 0x41800004
|
|
.4byte 0x41879C81
|
|
.4byte 0x418FACDB
|
|
.4byte 0x419837F5
|
|
.4byte 0x41A1451D
|
|
.4byte 0x41AADC0E
|
|
.4byte 0x41B504F9
|
|
.4byte 0x41BFC88D
|
|
.4byte 0x41CB2FFC
|
|
.4byte 0x41D74504
|
|
.4byte 0x41E411F8
|
|
.4byte 0x41F1A1C7
|
|
.4byte 0x42000004
|
|
.4byte 0x42079C81
|
|
.4byte 0x420FACDB
|
|
.4byte 0x421837F5
|
|
.4byte 0x4221451D
|
|
.4byte 0x422ADC0E
|
|
.4byte 0x423504F9
|
|
.4byte 0x423FC88D
|
|
.4byte 0x424B2FFC
|
|
.4byte 0x42574504
|
|
.4byte 0x426411F8
|
|
.4byte 0x4271A1C7
|
|
.4byte 0x42800004
|
|
.4byte 0x42879C81
|
|
.4byte 0x428FACDB
|
|
.4byte 0x429837F5
|
|
.4byte 0x42A1451D
|
|
.4byte 0x42AADC0E
|
|
.4byte 0x42B504F9
|
|
.4byte 0x42BFC88D
|
|
.4byte 0x42CB2FFC
|
|
.4byte 0x42D74504
|
|
.4byte 0x42E411F8
|
|
.4byte 0x42F1A1C7
|
|
.4byte 0x43000004
|
|
.4byte 0x43079C81
|
|
.4byte 0x430FACDB
|
|
.4byte 0x431837F5
|
|
.4byte 0x4321451D
|
|
.4byte 0x432ADC0E
|
|
.4byte 0x433504F9
|
|
.4byte 0x433FC88D
|
|
.4byte 0x434B2FFC
|
|
.4byte 0x43574504
|
|
.4byte 0x436411F8
|
|
.4byte 0x4371A1C7
|
|
.4byte 0x43800004
|
|
.4byte 0x43879C81
|
|
.4byte 0x438FACDB
|
|
.4byte 0x439837F5
|
|
.4byte 0x43A1451D
|
|
.4byte 0x43AADC0E
|
|
.4byte 0x43B504F9
|
|
.4byte 0x43BFC88D
|
|
.4byte 0x43CB2FFC
|
|
.4byte 0x43D74504
|
|
.4byte 0x43E411F8
|
|
.4byte 0x43F1A1C7
|
|
.4byte 0x44000004
|
|
.4byte 0x44079C81
|
|
.4byte 0x440FACDB
|
|
.4byte 0x441837F5
|
|
.4byte 0x4421451D
|
|
.4byte 0x442ADC0E
|
|
.4byte 0x443504F9
|
|
.4byte 0x443FC88D
|
|
.4byte 0x444B2FFC
|
|
.4byte 0x44574504
|
|
.4byte 0x446411F8
|
|
.4byte 0x4471A1C7
|
|
.4byte 0x44800004
|
|
.4byte 0x44879C81
|
|
.4byte 0x448FACDB
|
|
.4byte 0x449837F5
|
|
.4byte 0x44A1451D
|
|
.4byte 0x44AADC0E
|
|
.4byte 0x44B504F9
|
|
.4byte 0x44BFC88D
|
|
|
|
.global tonedown_tab
|
|
tonedown_tab:
|
|
# ROM: 0x3F0620
|
|
.4byte 0x3F800000
|
|
.4byte 0x3F71A1C0
|
|
.4byte 0x3F6411F0
|
|
.4byte 0x3F574500
|
|
.4byte 0x3F4B2FF0
|
|
.4byte 0x3F3FC880
|
|
.4byte 0x3F3504F0
|
|
.4byte 0x3F2ADC00
|
|
.4byte 0x3F214510
|
|
.4byte 0x3F1837F0
|
|
.4byte 0x3F0FACD0
|
|
.4byte 0x3F079C80
|
|
.4byte 0x3F000000
|
|
.4byte 0x3EF1A1C0
|
|
.4byte 0x3EE411E0
|
|
.4byte 0x3ED74500
|
|
.4byte 0x3ECB3000
|
|
.4byte 0x3EBFC880
|
|
.4byte 0x3EB504E0
|
|
.4byte 0x3EAADC00
|
|
.4byte 0x3EA14520
|
|
.4byte 0x3E9837E0
|
|
.4byte 0x3E8FACE0
|
|
.4byte 0x3E879C80
|
|
.4byte 0x3E800000
|
|
.4byte 0x3E71A1C0
|
|
.4byte 0x3E641200
|
|
.4byte 0x3E574500
|
|
.4byte 0x3E4B3000
|
|
.4byte 0x3E3FC880
|
|
.4byte 0x3E350500
|
|
.4byte 0x3E2ADC00
|
|
.4byte 0x3E214500
|
|
.4byte 0x3E183800
|
|
.4byte 0x3E0FACC0
|
|
.4byte 0x3E079C80
|
|
.4byte 0x3E000000
|
|
.4byte 0x3DF1A180
|
|
.4byte 0x3DE41200
|
|
.4byte 0x3DD74500
|
|
.4byte 0x3DCB3000
|
|
.4byte 0x3DBFC880
|
|
.4byte 0x3DB50500
|
|
.4byte 0x3DAADC00
|
|
.4byte 0x3DA14500
|
|
.4byte 0x3D983800
|
|
.4byte 0x3D8FAD00
|
|
.4byte 0x3D879C80
|
|
.4byte 0x3D800000
|
|
.4byte 0x3D71A200
|
|
.4byte 0x3D641200
|
|
.4byte 0x3D574500
|
|
.4byte 0x3D4B3000
|
|
.4byte 0x3D3FC900
|
|
.4byte 0x3D350500
|
|
.4byte 0x3D2ADC00
|
|
.4byte 0x3D214500
|
|
.4byte 0x3D183800
|
|
.4byte 0x3D0FAD00
|
|
.4byte 0x3D079C00
|
|
.4byte 0x3D000000
|
|
.4byte 0x3CF1A200
|
|
.4byte 0x3CE41200
|
|
.4byte 0x3CD74400
|
|
.4byte 0x3CCB3000
|
|
.4byte 0x3CBFC800
|
|
.4byte 0x3CB50400
|
|
.4byte 0x3CAADC00
|
|
.4byte 0x3CA14600
|
|
.4byte 0x3C983800
|
|
.4byte 0x3C8FAC00
|
|
.4byte 0x3C879C00
|
|
.4byte 0x3C800000
|
|
.4byte 0x3C71A000
|
|
.4byte 0x3C641000
|
|
.4byte 0x3C574400
|
|
.4byte 0x3C4B3000
|
|
.4byte 0x3C3FC800
|
|
.4byte 0x3C350400
|
|
.4byte 0x3C2ADC00
|
|
.4byte 0x3C214400
|
|
.4byte 0x3C183800
|
|
.4byte 0x3C0FAC00
|
|
.4byte 0x3C079C00
|
|
.4byte 0x3C000000
|
|
.4byte 0x3BF1A000
|
|
.4byte 0x3BE41000
|
|
.4byte 0x3BD74800
|
|
.4byte 0x3BCB3000
|
|
.4byte 0x3BBFC800
|
|
.4byte 0x3BB50800
|
|
.4byte 0x3BAAE000
|
|
.4byte 0x3BA14800
|
|
.4byte 0x3B983800
|
|
.4byte 0x3B8FB000
|
|
.4byte 0x3B87A000
|
|
.4byte 0x3B800000
|
|
.4byte 0x3B71A000
|
|
.4byte 0x3B641000
|
|
.4byte 0x3B574000
|
|
.4byte 0x3B4B3000
|
|
.4byte 0x3B3FD000
|
|
.4byte 0x3B350000
|
|
.4byte 0x3B2AE000
|
|
.4byte 0x3B214000
|
|
.4byte 0x3B183000
|
|
.4byte 0x3B0FB000
|
|
.4byte 0x3B07A000
|
|
.4byte 0x3B000000
|
|
.4byte 0x3AF1A000
|
|
.4byte 0x3AE42000
|
|
.4byte 0x3AD74000
|
|
.4byte 0x3ACB2000
|
|
.4byte 0x3ABFC000
|
|
.4byte 0x3AB50000
|
|
.4byte 0x3AAAE000
|
|
.4byte 0x3AA14000
|
|
.4byte 0x3A984000
|
|
.4byte 0x3A8FA000
|
|
.4byte 0x3A87A000
|
|
.4byte 0x3A800000
|
|
.4byte 0x3A71C000
|
|
.4byte 0x3A640000
|
|
.4byte 0x3A574000
|
|
.4byte 0x3A4B4000
|
|
.4byte 0x3A3FC000
|
|
.4byte 0x3A350000
|
|
.4byte 0x3A2AC000
|
|
|
|
.section .sdata2
|
|
.global lbl_805AF2B0
|
|
lbl_805AF2B0:
|
|
# ROM: 0x3FBB50
|
|
.4byte 0x3F879C7D
|
|
.4byte 0
|
|
|
|
.global lbl_805AF2B8
|
|
lbl_805AF2B8:
|
|
# ROM: 0x3FBB58
|
|
.4byte 0x43300000
|
|
.4byte 0
|
|
|
|
.global lbl_805AF2C0
|
|
lbl_805AF2C0:
|
|
# ROM: 0x3FBB60
|
|
.4byte 0x45800000
|
|
.4byte 0
|
|
|
|
|
|
.section .text, "ax"
|
|
|
|
.global sndPitchUpOne
|
|
sndPitchUpOne:
|
|
/* 803A90F0 003A6050 94 21 FF E0 */ stwu r1, -0x20(r1)
|
|
/* 803A90F4 003A6054 54 63 04 3E */ clrlwi r3, r3, 0x10
|
|
/* 803A90F8 003A6058 3C 00 43 30 */ lis r0, 0x4330
|
|
/* 803A90FC 003A605C C8 22 D5 98 */ lfd f1, lbl_805AF2B8@sda21(r2)
|
|
/* 803A9100 003A6060 90 61 00 0C */ stw r3, 0xc(r1)
|
|
/* 803A9104 003A6064 C0 42 D5 90 */ lfs f2, lbl_805AF2B0@sda21(r2)
|
|
/* 803A9108 003A6068 90 01 00 08 */ stw r0, 8(r1)
|
|
/* 803A910C 003A606C C8 01 00 08 */ lfd f0, 8(r1)
|
|
/* 803A9110 003A6070 EC 00 08 28 */ fsubs f0, f0, f1
|
|
/* 803A9114 003A6074 EC 02 00 32 */ fmuls f0, f2, f0
|
|
/* 803A9118 003A6078 FC 00 00 1E */ fctiwz f0, f0
|
|
/* 803A911C 003A607C D8 01 00 10 */ stfd f0, 0x10(r1)
|
|
/* 803A9120 003A6080 80 61 00 14 */ lwz r3, 0x14(r1)
|
|
/* 803A9124 003A6084 38 21 00 20 */ addi r1, r1, 0x20
|
|
/* 803A9128 003A6088 4E 80 00 20 */ blr
|
|
|
|
.global sndGetPitch
|
|
sndGetPitch:
|
|
/* 803A912C 003A608C 94 21 FF E0 */ stwu r1, -0x20(r1)
|
|
/* 803A9130 003A6090 7C 08 02 A6 */ mflr r0
|
|
/* 803A9134 003A6094 90 01 00 24 */ stw r0, 0x24(r1)
|
|
/* 803A9138 003A6098 3C 04 00 01 */ addis r0, r4, 1
|
|
/* 803A913C 003A609C 28 00 FF FF */ cmplwi r0, 0xffff
|
|
/* 803A9140 003A60A0 40 82 00 0C */ bne lbl_803A914C
|
|
/* 803A9144 003A60A4 3C 80 40 00 */ lis r4, 0x40005622@ha
|
|
/* 803A9148 003A60A8 38 84 56 22 */ addi r4, r4, 0x40005622@l
|
|
lbl_803A914C:
|
|
/* 803A914C 003A60AC 54 86 46 3E */ srwi r6, r4, 0x18
|
|
/* 803A9150 003A60B0 54 65 06 3E */ clrlwi r5, r3, 0x18
|
|
/* 803A9154 003A60B4 7C 05 30 40 */ cmplw r5, r6
|
|
/* 803A9158 003A60B8 C0 42 D5 A0 */ lfs f2, lbl_805AF2C0@sda21(r2)
|
|
/* 803A915C 003A60BC 41 82 00 5C */ beq lbl_803A91B8
|
|
/* 803A9160 003A60C0 54 83 02 3E */ clrlwi r3, r4, 8
|
|
/* 803A9164 003A60C4 3C 00 43 30 */ lis r0, 0x4330
|
|
/* 803A9168 003A60C8 90 61 00 0C */ stw r3, 0xc(r1)
|
|
/* 803A916C 003A60CC 7C 06 28 40 */ cmplw r6, r5
|
|
/* 803A9170 003A60D0 C8 22 D5 98 */ lfd f1, lbl_805AF2B8@sda21(r2)
|
|
/* 803A9174 003A60D4 90 01 00 08 */ stw r0, 8(r1)
|
|
/* 803A9178 003A60D8 C8 01 00 08 */ lfd f0, 8(r1)
|
|
/* 803A917C 003A60DC EC 20 08 28 */ fsubs f1, f0, f1
|
|
/* 803A9180 003A60E0 40 80 00 1C */ bge lbl_803A919C
|
|
/* 803A9184 003A60E4 7C 06 28 50 */ subf r0, r6, r5
|
|
/* 803A9188 003A60E8 3C 60 80 3F */ lis r3, toneup_map@ha
|
|
/* 803A918C 003A60EC 54 00 10 3A */ slwi r0, r0, 2
|
|
/* 803A9190 003A60F0 38 63 34 20 */ addi r3, r3, toneup_map@l
|
|
/* 803A9194 003A60F4 7C 03 04 2E */ lfsx f0, r3, r0
|
|
/* 803A9198 003A60F8 48 00 00 18 */ b lbl_803A91B0
|
|
lbl_803A919C:
|
|
/* 803A919C 003A60FC 7C 05 30 50 */ subf r0, r5, r6
|
|
/* 803A91A0 003A6100 3C 60 80 3F */ lis r3, tonedown_tab@ha
|
|
/* 803A91A4 003A6104 54 00 10 3A */ slwi r0, r0, 2
|
|
/* 803A91A8 003A6108 38 63 36 20 */ addi r3, r3, tonedown_tab@l
|
|
/* 803A91AC 003A610C 7C 03 04 2E */ lfsx f0, r3, r0
|
|
lbl_803A91B0:
|
|
/* 803A91B0 003A6110 EC 01 00 32 */ fmuls f0, f1, f0
|
|
/* 803A91B4 003A6114 48 00 00 20 */ b lbl_803A91D4
|
|
lbl_803A91B8:
|
|
/* 803A91B8 003A6118 54 83 02 3E */ clrlwi r3, r4, 8
|
|
/* 803A91BC 003A611C 3C 00 43 30 */ lis r0, 0x4330
|
|
/* 803A91C0 003A6120 90 61 00 14 */ stw r3, 0x14(r1)
|
|
/* 803A91C4 003A6124 C8 22 D5 98 */ lfd f1, lbl_805AF2B8@sda21(r2)
|
|
/* 803A91C8 003A6128 90 01 00 10 */ stw r0, 0x10(r1)
|
|
/* 803A91CC 003A612C C8 01 00 10 */ lfd f0, 0x10(r1)
|
|
/* 803A91D0 003A6130 EC 00 08 28 */ fsubs f0, f0, f1
|
|
lbl_803A91D4:
|
|
/* 803A91D4 003A6134 3C 00 43 30 */ lis r0, 0x4330
|
|
/* 803A91D8 003A6138 3C 60 80 55 */ lis r3, synthInfo@ha
|
|
/* 803A91DC 003A613C 90 01 00 18 */ stw r0, 0x18(r1)
|
|
/* 803A91E0 003A6140 EC 42 00 32 */ fmuls f2, f2, f0
|
|
/* 803A91E4 003A6144 80 03 00 50 */ lwz r0, synthInfo@l(r3)
|
|
/* 803A91E8 003A6148 C8 22 D5 98 */ lfd f1, lbl_805AF2B8@sda21(r2)
|
|
/* 803A91EC 003A614C 90 01 00 1C */ stw r0, 0x1c(r1)
|
|
/* 803A91F0 003A6150 C8 01 00 18 */ lfd f0, 0x18(r1)
|
|
/* 803A91F4 003A6154 EC 00 08 28 */ fsubs f0, f0, f1
|
|
/* 803A91F8 003A6158 EC 22 00 24 */ fdivs f1, f2, f0
|
|
/* 803A91FC 003A615C 4B FE 07 59 */ bl __cvt_fp2unsigned
|
|
/* 803A9200 003A6160 80 01 00 24 */ lwz r0, 0x24(r1)
|
|
/* 803A9204 003A6164 7C 08 03 A6 */ mtlr r0
|
|
/* 803A9208 003A6168 38 21 00 20 */ addi r1, r1, 0x20
|
|
/* 803A920C 003A616C 4E 80 00 20 */ blr
|