Un-ignored: the dev drive is the ground truth the restoration and emulator work constantly reference (DPL3/LIBDPL + VRENDER i860 renderer source, BT/RP live+dev game trees, VGL_LABS pod boot, scene/audio content). Kept in-repo for the pod-owner community. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
723 lines
13 KiB
ArmAsm
723 lines
13 KiB
ArmAsm
.file "lightwht.c"
|
|
// PGC Rel 2.0a -opt 4
|
|
.text
|
|
.globl _init_phong
|
|
.align 8
|
|
_init_phong:
|
|
.a1 = 0
|
|
.f1 = 64
|
|
addu -(.a1+.f1), sp, sp
|
|
st.l fp,(.f1-16)(sp)
|
|
addu (.f1-16), sp, fp
|
|
st.l r1, 4(fp)
|
|
st.l r4, -32(fp)
|
|
st.l r5, -28(fp)
|
|
st.l r6, -24(fp)
|
|
st.l r7, -20(fp)
|
|
st.l r8, -16(fp)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// lineno: 0
|
|
orh h%_PAZ_phong_table, r0, r31
|
|
or l%_PAZ_phong_table, r31, r8
|
|
// lineno: 54
|
|
adds 8192, r0, r16
|
|
|
|
call _malloc
|
|
nop
|
|
orh ha%.C00635, r0, r31
|
|
fld.l l%.C00635(r31), f8
|
|
orh ha%.C00633, r0, r31
|
|
fld.d l%.C00633(r31), f10
|
|
adds 127, r0, r18
|
|
st.l r16, 0(r8)
|
|
adds -1, r0, r17
|
|
adds 1, r0, r19
|
|
mov r0, r20
|
|
mov r8, r21
|
|
bla r17, r18,.B654
|
|
pfmul.dd f0, f0, f0
|
|
// lineno: 57
|
|
.B654: //.M0000
|
|
.align 8
|
|
d.pfadd.dd f0, f0, f0
|
|
nop
|
|
|
|
.PL1001:
|
|
d.fnop
|
|
xorh 0x8000, r19, r28
|
|
.DB.B654654:
|
|
d.fnop
|
|
ixfr r28, f16
|
|
d.fiadd.ss f11, f0, f17
|
|
ld.l r0(r21), r29
|
|
|
|
d.pfsub.dd f16, f10, f0
|
|
adds 1, r19, r19
|
|
d.pfadd.dd f0, f0, f0
|
|
nop
|
|
d.pfadd.dd f0, f0, f0
|
|
nop
|
|
d.pfadd.dd f0, f0, f16
|
|
nop
|
|
d.pfmov.ds f16, f0
|
|
nop
|
|
d.pfadd.dd f0, f0, f0
|
|
nop
|
|
d.pfadd.dd f0, f0, f0
|
|
nop
|
|
d.m12tpa.ss f8, f30, f30
|
|
nop
|
|
d.pfmul.ss f0, f0, f0
|
|
nop
|
|
d.pfmul.ss f0, f0, f0
|
|
bla r17, r18, .PL1002
|
|
d.pfmul.ss f0, f0, f30
|
|
fst.l f30, r20(r29)
|
|
|
|
.PL1002:
|
|
d.fnop
|
|
xorh 0x8000, r19, r28
|
|
d.fnop
|
|
ixfr r28, f16
|
|
d.fiadd.ss f11, f0, f17
|
|
ld.l r0(r21), r29
|
|
d.fnop
|
|
addu 4, r20, r20
|
|
d.pfsub.dd f16, f10, f0
|
|
adds 1, r19, r19
|
|
d.pfadd.dd f0, f0, f0
|
|
nop
|
|
d.pfadd.dd f0, f0, f0
|
|
nop
|
|
d.pfadd.dd f0, f0, f16
|
|
nop
|
|
d.pfmov.ds f16, f0
|
|
nop
|
|
d.pfadd.dd f0, f0, f0
|
|
nop
|
|
d.pfadd.dd f0, f0, f0
|
|
nop
|
|
d.m12tpa.ss f8, f30, f30
|
|
nop
|
|
d.pfmul.ss f0, f0, f0
|
|
nop
|
|
d.pfmul.ss f0, f0, f0
|
|
bla r17, r18, .PL1002
|
|
d.pfmul.ss f0, f0, f30
|
|
fst.l f30, r20(r29)
|
|
|
|
.PL1003:
|
|
|
|
|
|
|
|
d.fnop
|
|
addu 4, r20, r20
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
d.fnop
|
|
bla r17, r18, .PL1003
|
|
d.fnop
|
|
nop
|
|
fnop
|
|
nop
|
|
fnop
|
|
nop
|
|
// lineno: 58
|
|
.B546: //.B0001
|
|
ld.l r0(r8), r4
|
|
.DB.B546546:
|
|
adds 1, r0, r6
|
|
adds -16, r6, r0
|
|
|
|
bnc .B551
|
|
fld.l -4(fp), f12
|
|
fld.l -8(fp), f13
|
|
mov r7, r18
|
|
adds -1, r0, r17
|
|
mov r8, r21
|
|
// lineno: 63
|
|
.B660: //.M0002
|
|
adds 127, r0, r18
|
|
.DB.B660660:
|
|
addu 508, r4, r5
|
|
mov r0, r20
|
|
bla r17, r18,.B659
|
|
pfmul.dd f0, f0, f0
|
|
// lineno: 64
|
|
.B659: //.M0001
|
|
ld.l r0(r21), r28
|
|
.DB.B659659:
|
|
fld.l r0(r4), f16
|
|
fld.l r28(r20), f12
|
|
addu 4, r4, r4
|
|
addu 4, r20, r20
|
|
fmul.ss f12, f16, f17
|
|
|
|
|
|
bla r17, r18, .B659
|
|
fst.l f17, 4(r5)++
|
|
// lineno: 0
|
|
adds 1, r6, r6
|
|
adds -16, r6, r0
|
|
|
|
bc.t .DB.B660660
|
|
adds 127, r0, r18
|
|
// lineno: 0
|
|
mov r18, r7
|
|
fst.l f12, -4(fp)
|
|
fst.l f13, -8(fp)
|
|
// lineno: 0
|
|
.B551: //.B0003
|
|
// lineno: 70
|
|
|
|
|
|
|
|
|
|
ld.l -32(fp), r4
|
|
ld.l -28(fp), r5
|
|
ld.l -24(fp), r6
|
|
ld.l -20(fp), r7
|
|
ld.l -16(fp), r8
|
|
adds .a1+16, fp, r31
|
|
ld.l 4(fp), r1
|
|
ld.l 0(fp), fp
|
|
bri r1
|
|
mov r31, sp
|
|
.globl _compute_phong_table
|
|
.align 8
|
|
_compute_phong_table:
|
|
.a2 = 0
|
|
.f2 = 32
|
|
orh h%.STACK+.f2-16, r0, r28
|
|
or l%.STACK+.f2-16, r28, r28
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// lineno: 0
|
|
// lineno: 76
|
|
ftrunc.sd f8, f16
|
|
|
|
|
|
fxfr f16, r17
|
|
|
|
adds -2, r17, r0
|
|
|
|
bnc .B563
|
|
orh ha%_PAZ_phong_table, r0, r31
|
|
br .B663
|
|
ld.l l%_PAZ_phong_table(r31), r16
|
|
// lineno: 82
|
|
.B563: //.B0006
|
|
adds -1, r17, r17
|
|
.DB.B563563:
|
|
subs 16, r17, r0
|
|
|
|
bnc .B564
|
|
adds 15, r0, r17
|
|
// lineno: 87
|
|
.B564: //.B0007
|
|
shl 7, r17, r29
|
|
.DB.B564564:
|
|
shl 2, r29, r30
|
|
orh ha%_PAZ_phong_table, r0, r31
|
|
ld.l l%_PAZ_phong_table(r31), r16
|
|
|
|
adds r30, r16, r16
|
|
st.l r16, -4(r28)
|
|
// lineno: 0
|
|
.B663: //.R0000
|
|
// lineno: 93
|
|
|
|
|
|
|
|
|
|
bri r1
|
|
nop
|
|
.globl _traceLights
|
|
.align 8
|
|
_traceLights:
|
|
.a3 = 80
|
|
.f3 = 32
|
|
addu -(.a3+.f3), sp, sp
|
|
st.l fp,(.f3-16)(sp)
|
|
addu (.f3-16), sp, fp
|
|
st.l r1, 4(fp)
|
|
st.l r4, -8(fp)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
st.l r16, 48(fp)
|
|
// lineno: 0
|
|
// lineno: 98
|
|
orh h%.S00569, r0, r31
|
|
call _printf
|
|
or l%.S00569, r31, r16
|
|
ld.l 48(fp), r28
|
|
|
|
bte 0x0000, r28, .B572
|
|
mov r28, r4
|
|
// lineno: 105
|
|
.B673: //.M0003
|
|
fld.l 4(r4), f16
|
|
.DB.B673673:
|
|
orh h%.S00573, r0, r31
|
|
or l%.S00573, r31, r16
|
|
fmov.sd f16, f8
|
|
mov r4, r17
|
|
ld.l 48(r4), r18
|
|
fld.l 8(r4), f17
|
|
fld.l 12(r4), f18
|
|
|
|
fmov.sd f17, f10
|
|
|
|
|
|
call _printf
|
|
fmov.sd f18, f12
|
|
ld.l r0(r4), r4
|
|
|
|
xor 0x0000, r4, r0
|
|
bnc.t .DB.B673673
|
|
fld.l 4(r4), f16
|
|
// lineno: 0
|
|
st.l r4, 48(fp)
|
|
// lineno: 0
|
|
.B572: //.B0009
|
|
// lineno: 107
|
|
|
|
|
|
|
|
|
|
ld.l -8(fp), r4
|
|
adds .a3+16, fp, r31
|
|
ld.l 4(fp), r1
|
|
ld.l 0(fp), fp
|
|
bri r1
|
|
mov r31, sp
|
|
.globl _reorderLights
|
|
.align 8
|
|
_reorderLights:
|
|
.a4 = 0
|
|
.f4 = 48
|
|
orh h%.STACK+.f4-16, r0, r28
|
|
or l%.STACK+.f4-16, r28, r28
|
|
st.l r4, -24(r28)
|
|
st.l r5, -20(r28)
|
|
st.l r6, -16(r28)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// lineno: 0
|
|
orh ha%.C00593, r0, r31
|
|
fld.l l%.C00593(r31), f12
|
|
adds 1, r0, r18
|
|
// lineno: 117
|
|
ld.l r0(r16), r19
|
|
mov r0, r21
|
|
mov r0, r20
|
|
mov r0, r6
|
|
bte 0x0000, r19, .B584
|
|
mov r0, r20
|
|
mov r0, r21
|
|
mov r0, r6
|
|
// lineno: 126
|
|
.B690: //.M0004
|
|
fld.l 4(r19), f16
|
|
.DB.B690690:
|
|
fld.l 8(r19), f9
|
|
fld.l 12(r19), f8
|
|
fmul.ss f16, f16, f17
|
|
ld.l r0(r19), r5
|
|
mov r0, r17
|
|
fmul.ss f9, f9, f18
|
|
|
|
|
|
fadd.ss f18, f17, f19
|
|
|
|
|
|
fmul.ss f8, f8, f20
|
|
|
|
|
|
fadd.ss f20, f19, f10
|
|
|
|
|
|
pfle.ss f12, f10, f0
|
|
|
|
bnc .B594
|
|
mov r18, r17
|
|
// lineno: 138
|
|
.B594: //.B0012
|
|
ld.l 48(r19), r29
|
|
.DB.B594594:
|
|
|
|
btne 0x0003, r29, .B596
|
|
mov r18, r17
|
|
// lineno: 142
|
|
.B596: //.B0013
|
|
btne 0x0000, r17, .B598
|
|
ld.l 48(r19), r29
|
|
|
|
btne 0x0002, r29, .B597
|
|
// lineno: 144
|
|
.B598: //.B0015
|
|
ld.l r0(r19), r4
|
|
.DB.B598598:
|
|
btne 0x0000, r21, .B601
|
|
mov r19, r6
|
|
// lineno: 152
|
|
.B601: //.B0016
|
|
st.l r21, 0(r19)
|
|
.DB.B601601:
|
|
mov r19, r21
|
|
btne 0x0000, r20, .B603
|
|
br .B604
|
|
st.l r4, 0(r16)
|
|
// lineno: 160
|
|
.B603: //.B0017
|
|
st.l r4, 0(r20)
|
|
.DB.B603603:
|
|
// lineno: 164
|
|
.B604: //.B0018
|
|
br .B605
|
|
nop
|
|
// lineno: 0
|
|
.B597: //.B0014
|
|
mov r19, r20
|
|
.DB.B597597:
|
|
// lineno: 166
|
|
.B605: //.B0019
|
|
mov r5, r19
|
|
.DB.B605605:
|
|
xor 0x0000, r5, r0
|
|
bnc.t .DB.B690690
|
|
fld.l 4(r19), f16
|
|
// lineno: 0
|
|
// lineno: 167
|
|
.B584: //.B0011
|
|
ld.l r0(r16), r29
|
|
.DB.B584584:
|
|
|
|
st.l r29, -4(r28)
|
|
bte 0x0000, r6, .B606
|
|
st.l r29, 0(r6)
|
|
st.l r21, 0(r16)
|
|
// lineno: 181
|
|
.B606: //.B0020
|
|
ld.l -4(r28), r16
|
|
.DB.B606606:
|
|
// lineno: 0
|
|
// lineno: 182
|
|
|
|
|
|
|
|
|
|
ld.l -24(r28), r4
|
|
ld.l -20(r28), r5
|
|
ld.l -16(r28), r6
|
|
bri r1
|
|
nop
|
|
.globl _keep_this_bulb
|
|
.align 8
|
|
_keep_this_bulb:
|
|
.a5 = 80
|
|
.f5 = 48
|
|
addu -(.a5+.f5), sp, sp
|
|
st.l fp,(.f5-16)(sp)
|
|
addu (.f5-16), sp, fp
|
|
st.l r1, 4(fp)
|
|
fst.d f2, -24(fp)
|
|
fst.d f4, -16(fp)
|
|
fst.d f6, -8(fp)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
st.l r16, 48(fp)
|
|
st.l r18, 56(fp)
|
|
// lineno: 0
|
|
// lineno: 187
|
|
ld.l 48(r16), r28
|
|
|
|
btne 0x0000, r28, .B612
|
|
fld.l 4(r16), f16
|
|
orh ha%.C00036, r0, r31
|
|
fld.l l%.C00036(r31), f19
|
|
fst.l f16, r0(r18)
|
|
|
|
fld.l 8(r16), f17
|
|
|
|
|
|
fst.l f17, 4(r18)
|
|
|
|
fld.l 12(r16), f18
|
|
fst.l f19, 12(r18)
|
|
adds 1, r0, r16
|
|
br .B693
|
|
fst.l f18, 8(r18)
|
|
// lineno: 195
|
|
.B612: //.B0021
|
|
ld.l 48(r16), r28
|
|
.DB.B612612:
|
|
|
|
btne 0x0001, r28, .B615
|
|
fld.l 4(r16), f16
|
|
fld.l r0(r17), f17
|
|
fld.l 8(r16), f19
|
|
fld.l 4(r17), f20
|
|
fsub.ss f17, f16, f6
|
|
fld.l 12(r16), f23
|
|
fld.l 8(r17), f24
|
|
fmul.ss f6, f6, f18
|
|
|
|
|
|
fsub.ss f20, f19, f5
|
|
|
|
|
|
fmul.ss f5, f5, f21
|
|
|
|
|
|
fadd.ss f21, f18, f22
|
|
|
|
|
|
fsub.ss f24, f23, f4
|
|
|
|
|
|
fmul.ss f4, f4, f25
|
|
|
|
|
|
fadd.ss f25, f22, f26
|
|
|
|
|
|
call _sqrt
|
|
fmov.sd f26, f8
|
|
fmov.ds f8, f16
|
|
orh ha%.C00037, r0, r31
|
|
fld.l l%.C00037(r31), f19
|
|
frcp.ss f16, f17
|
|
fmul.ss f16, f17, f18
|
|
ld.l 48(fp), r28
|
|
|
|
fsub.ss f19, f18, f20
|
|
fld.l 56(r28), f25
|
|
|
|
fmul.ss f17, f20, f21
|
|
|
|
|
|
fmul.ss f16, f21, f22
|
|
|
|
|
|
fsub.ss f19, f22, f23
|
|
|
|
|
|
fmul.ss f23, f21, f24
|
|
|
|
|
|
fiadd.ss f24, f0, f3
|
|
|
|
fiadd.ss f16, f0, f2
|
|
|
|
pfle.ss f16, f25, f0
|
|
|
|
bnc .B622
|
|
br .B693
|
|
mov r0, r16
|
|
// lineno: 209
|
|
.B622: //.B0024
|
|
ld.l 48(fp), r28
|
|
.DB.B622622:
|
|
|
|
fld.l 52(r28), f16
|
|
|
|
|
|
pfle.ss f16, f2, f0
|
|
|
|
bnc .B625
|
|
orh ha%.C00036, r0, r31
|
|
fld.l l%.C00036(r31), f17
|
|
ld.l 56(fp), r29
|
|
|
|
br .B626
|
|
fst.l f17, 12(r29)
|
|
// lineno: 212
|
|
.B625: //.B0026
|
|
ld.l 48(fp), r28
|
|
.DB.B625625:
|
|
ld.l 56(fp), r29
|
|
fld.l 52(r28), f16
|
|
fld.l 56(r28), f17
|
|
orh ha%.C00037, r0, r31
|
|
fld.l l%.C00037(r31), f21
|
|
fsub.ss f17, f16, f18
|
|
orh ha%.C00036, r0, r31
|
|
fld.l l%.C00036(r31), f29
|
|
frcp.ss f18, f19
|
|
fmul.ss f18, f19, f20
|
|
|
|
|
|
fsub.ss f21, f20, f22
|
|
|
|
|
|
fmul.ss f19, f22, f23
|
|
|
|
|
|
fmul.ss f18, f23, f24
|
|
|
|
|
|
fsub.ss f21, f24, f25
|
|
|
|
|
|
fmul.ss f25, f23, f26
|
|
|
|
|
|
fsub.ss f2, f16, f27
|
|
|
|
|
|
fmul.ss f27, f26, f28
|
|
|
|
|
|
fsub.ss f29, f28, f30
|
|
|
|
|
|
fst.l f30, 12(r29)
|
|
// lineno: 214
|
|
.B626: //.B0027
|
|
fmul.ss f6, f3, f16
|
|
.DB.B626626:
|
|
ld.l 56(fp), r28
|
|
adds 1, r0, r16
|
|
fsub.ss f0, f16, f17
|
|
|
|
|
|
fst.l f17, r0(r28)
|
|
fmul.ss f5, f3, f18
|
|
|
|
|
|
fsub.ss f0, f18, f19
|
|
|
|
|
|
fst.l f19, 4(r28)
|
|
fmul.ss f4, f3, f20
|
|
|
|
|
|
fsub.ss f0, f20, f21
|
|
|
|
|
|
br .B693
|
|
fst.l f21, 8(r28)
|
|
// lineno: 222
|
|
.B615: //.B0023
|
|
mov r0, r16
|
|
.DB.B615615:
|
|
// lineno: 0
|
|
.B693: //.R0002
|
|
// lineno: 223
|
|
|
|
|
|
|
|
|
|
fld.d -24(fp), f2
|
|
fld.d -16(fp), f4
|
|
fld.d -8(fp), f6
|
|
adds .a5+16, fp, r31
|
|
ld.l 4(fp), r1
|
|
ld.l 0(fp), fp
|
|
bri r1
|
|
mov r31, sp
|
|
.data
|
|
.align 8
|
|
.C00635: // (0)
|
|
.long 0x3c000000 // 7.81250000E-03
|
|
.align 8
|
|
.C00633: // (8)
|
|
.long 0x80000000, 0x43300000 // 4.50360177485414400E+15
|
|
.C00593: // (16)
|
|
.long 0x3c23d70a // 9.99999978E-03
|
|
.C00036: // (20)
|
|
.long 0x3f800000 // 1.00000000E+00
|
|
.C00037: // (24)
|
|
.long 0x40000000 // 2.00000000E+00
|
|
.data
|
|
.align 1
|
|
.S00569: //
|
|
// "Trace_lights\n"
|
|
.byte 0x54,0x72,0x61,0x63,0x65,0x5f,0x6c,0x69,0x67,0x68,0x74
|
|
.byte 0x73,0x0a,0x00
|
|
.S00573: //
|
|
// "Bulb 0x%x type 0x%x pos %f,%f,%f\n"
|
|
.byte 0x42,0x75,0x6c,0x62,0x20,0x30,0x78,0x25,0x78,0x20,0x74
|
|
.byte 0x79,0x70,0x65,0x20,0x30,0x78,0x25,0x78,0x20,0x70,0x6f
|
|
.byte 0x73,0x20,0x25,0x66,0x2c,0x25,0x66,0x2c,0x25,0x66,0x0a
|
|
.byte 0x00
|
|
.lcomm .STACK,48
|
|
.data
|
|
.comm _PAZ_phong_table,4
|
|
.extern _sqrt
|
|
.extern _printf
|
|
.extern _malloc
|