Files
TeslaRel410/sda4/DPL3/VRENDER/LIGHTWHT.S
T
CydandClaude Fable 5 db7745fcd0 sda4: commit the Glaze developer hard-drive dump
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>
2026-07-04 19:41:15 -05:00

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