|
|
1.1 root 1: .long
2: .dc.l codeend-_p_base_start
3: _p_base_start::
4: .gpu
5: .org $f1b140
6:
7: S_LE .ccdef $14 ; PL
8: U_LE .ccdef $04 ; CC
9: S_GT .ccdef $18 ; MI
10: U_GT .ccdef $08 ; CS
11:
12: S_LT .ccdef $15 ; PL+NE
13: U_LT .ccdef $05 ; CC+NE
14:
15: FP .equr r14
16: scratch .equr r10
17: scratch2 .equr r11
18: RETURNVALUE .equr r29
19: RETURNPOINT .equr r28
20: MATH_A .equr r27
21: MATH_B .equr r26
22: MATH_C .equr r25
23: MATH_RTS .equr r24
24: MATH_SIGN .equr r23
25:
26: movei #codestart,scratch
27: jump T,(scratch)
28: nop
29:
30:
31: GPU_IMUL:
32: move MATH_A,MATH_SIGN
33: xor MATH_B,MATH_SIGN
34: abs MATH_A
35: abs MATH_B
36: move MATH_A,MATH_C
37: mult MATH_B,MATH_C
38: move MATH_B,scratch2
39: shrq #16,scratch2
40: mult MATH_A,scratch2
41: shlq #16,scratch2
42: add scratch2,MATH_C
43: move MATH_A,scratch2
44: shrq #16,scratch2
45: mult MATH_B,scratch2
46: shlq #16,scratch2
47: add scratch2, MATH_C
48: btst #31,MATH_SIGN
49: jump EQ,(MATH_RTS)
50: nop
51: jump T,(MATH_RTS)
52: neg MATH_C
53:
54:
55: ;=============================================================================
56: _PB_PointInSubsector:: ; subsector_t * (fixed_t x, fixed_t y)
57: ;=============================================================================
58: .extern _nodes, _numnodes, _subsectors
59:
60: pi_node .equr r15
61: pi_x .equr r16
62: pi_y .equr r17
63: pi_side .equr r18
64: pi_nodebase .equr r19
65: pi_nodex .equr r20
66: pi_nodey .equr r21
67: pi_nodedx .equr r22
68: pi_nodedy .equr r23
69:
70: load (FP),pi_x
71: load (FP+1),pi_y
72:
73: movei #_nodes,pi_nodebase
74: load (pi_nodebase),pi_nodebase
75:
76: movei #_numnodes,pi_node
77: load (pi_node),pi_node
78: subq #1,pi_node ; nodenum = numnodes-1
79:
80: nodeloop:
81: btst #15,pi_node
82: jr EQ,notsubsec
83: nop
84:
85: bclr #15,pi_node
86: moveq #12,scratch
87: mult scratch,pi_node
88: movei #_subsectors,RETURNVALUE
89: load (RETURNVALUE),RETURNVALUE
90:
91: jump T,(RETURNPOINT)
92: add pi_node,RETURNVALUE ; delay slot
93:
94: notsubsec:
95:
96: movei #56,scratch
97: mult scratch,pi_node
98: add pi_nodebase,pi_node
99: ;
100: ; pi_side = pointonnodeside (x,y,node)
101: ;
102: load (pi_node),pi_nodex
103: load (pi_node+1),pi_nodey
104: load (pi_node+2),pi_nodedx
105: load (pi_node+3),pi_nodedy
106:
107: move pi_x,scratch
108: sub pi_nodex,scratch
109:
110: move pi_y,scratch2
111: sub pi_nodey,scratch2
112:
113: sharq #16,scratch
114: sharq #16,scratch2
115: sharq #16,pi_nodedx
116: sharq #16,pi_nodedy
117:
118: imult pi_nodedy,scratch
119: imult pi_nodedx,scratch2
120:
121: cmp scratch2,scratch
122: jr S_GT,backside
123: nop
124:
125: movei #48,scratch
126: jr T,gotside
127: nop
128: backside:
129: movei #52,scratch
130: gotside:
131: ; got a subsector, return &subsectors[nodenum&~NF_SUBSECTOR];
132:
133: ;
134: ; nodenum = node->children[side]
135: ;
136: add scratch,pi_node
137: movei #nodeloop,scratch
138: jump T,(scratch)
139: load (pi_node),pi_node
140:
141:
142: ;==============================================================================
143: _PB_UnsetThingPosition::
144: ;==============================================================================
145: us_thing .equr r15
146: us_blockx .equr r16
147: us_blocky .equr r17
148: us_next .equr r18
149: us_prev .equr r19
150:
151: load (FP),us_thing
152:
153: load (us_thing+6),us_next ; thing->snext
154: load (us_thing+7),us_prev ; thing->sprev
155:
156: or us_next,us_next
157: jr EQ,nosnext
158: nop
159: moveq #7*4,scratch
160: add us_next,scratch ; thing->snext->sprev
161: load (scratch),r31 ; DSP BUG
162: store us_prev,(scratch)
163: nosnext:
164:
165: or us_prev,us_prev
166: jr EQ,nosprev
167: nop
168: moveq #6*4,scratch
169: add us_prev,scratch ; thing->sprev->snext
170: load (scratch),r31 ; DSP BUG
171: store us_next,(scratch)
172: jr T,slinksdone
173: nop
174:
175: nosprev:
176:
177: load (us_thing+13),scratch ; thing->subsector
178: load (scratch),scratch ; thing->subsector->sector
179: movei #20*4,scratch2
180: add scratch2,scratch ; thing->subsector->sector->thinglist
181: load (scratch),r31 ; DSP BUG
182: store us_next,(scratch)
183:
184: slinksdone:
185:
186: load (us_thing+25),scratch ; thing->flags
187: btst #4,scratch ; MF_NOBLOCKMAP
188: jump NE,(RETURNPOINT)
189: nop
190:
191: ;
192: ; block links
193: ;
194: load (us_thing+11),us_next
195: load (us_thing+12),us_prev
196:
197: or us_next,us_next
198: jr EQ,nobnext
199: nop
200: movei #12*4,scratch
201: add us_next,scratch ; thing->bnext->bprev
202: load (scratch),r31 ; DSP BUG
203: store us_prev,(scratch)
204: nobnext:
205:
206: or us_prev,us_prev
207: jr EQ,nobprev
208: nop
209: movei #11*4,scratch
210: add us_prev,scratch
211: load (scratch),r31 ; DSP BUG
212: store us_next,(scratch)
213: jump T,(RETURNPOINT)
214: nop
215:
216: nobprev:
217:
218: load (us_thing+3),us_blockx
219: movei #_bmaporgx,scratch
220: load (scratch),scratch
221: sub scratch,us_blockx
222: shrq #23,us_blockx
223:
224: load (us_thing+4),us_blocky
225: movei #_bmaporgy,scratch
226: load (scratch),scratch
227: sub scratch,us_blocky
228: shrq #23,us_blocky
229:
230: movei #_bmapwidth,scratch
231: load (scratch),scratch
232: mult scratch,us_blocky
233: add us_blockx,us_blocky
234: shlq #2,us_blocky ; int width table
235:
236: movei #_blocklinks,scratch
237: load (scratch),scratch
238:
239: add us_blocky,scratch
240:
241: load (scratch),r31 ; DSP BUG
242: store us_next,(scratch)
243:
244: jump T,(RETURNPOINT)
245: nop
246:
247:
248:
249: codestart:
250: ; unfuckdsp output -- add loads before external dsp stores
251:
252: ;====================
253: _P_RunMobjBase2::
254: ;2 dag registers 0 register variables
255: ;localoffset:4 regoffset:4 argoffset:16
256: ;====================
257: subq #16,FP
258:
259: movei #_activemobjs,r0
260: moveq #0,r1
261: load (r0),r30 ; FUCKING dsp!
262: or r30,r30 ; FUCKING dsp!
263: store r1,(r0)
264: movei #_basething,r0
265: movei #_mobjhead+4,r1
266: load (r1),r1
267: load (r0),r30 ; FUCKING dsp!
268: or r30,r30 ; FUCKING dsp!
269: store r1,(r0)
270:
271: movei #L75,r0
272: jump T,(r0)
273: nop
274:
275: L72:
276:
277: movei #_basething,r0
278: load (r0),r0
279: movei #128,r1
280: add r1,r0
281: load (r0),r0
282: moveq #0,r1
283: cmp r0,r1
284: movei #L77,scratch
285: jump EQ,(scratch)
286: nop
287:
288: movei #L73,r0
289: jump T,(r0)
290: nop
291:
292: L77:
293:
294: movei #_activemobjs,r0
295: load (r0),r1
296: addq #1,r1
297: load (r0),r30 ; FUCKING dsp!
298: or r30,r30 ; FUCKING dsp!
299: store r1,(r0)
300: movei #_basething,r0
301: load (r0),r0
302: addq #8,r0
303: moveq #0,r1
304: load (r0),r30 ; FUCKING dsp!
305: or r30,r30 ; FUCKING dsp!
306: store r1,(r0)
307:
308: movei #_basething,r0
309: load (r0),r0
310: store r0,(FP) ; arg[]
311: movei #_P_MobjThinker,r0
312: store r28,(FP+1) ; push ;(RETURNPOINT)
313: movei #L79,RETURNPOINT
314: jump T,(r0)
315: nop ; delay slot
316: L79:
317: load (FP+1), RETURNPOINT ; pop
318:
319: L73:
320:
321: movei #_basething,r0
322: load (r0),r1
323: addq #4,r1
324: load (r1),r1
325: load (r0),r30 ; FUCKING dsp!
326: or r30,r30 ; FUCKING dsp!
327: store r1,(r0)
328:
329: L75:
330:
331: movei #_basething,r0
332: load (r0),r0
333: movei #_mobjhead,r1
334: cmp r0,r1
335: movei #L72,scratch
336: jump NE,(scratch)
337: nop
338:
339:
340: L71:
341: jump T,(RETURNPOINT)
342: addq #16,FP ; delay slot
343:
344: ;====================
345: _P_XYMovement::
346: ;4 dag registers 4 register variables
347: ;localoffset:8 regoffset:8 argoffset:44
348: ;====================
349: movei #44,scratch
350: sub scratch,FP
351:
352: load (FP+11),r0 ; local mo
353: movei #72,r1
354: move r0,r2
355: add r1,r2
356: load (r2),r1
357: movei #-8,r2
358: and r2,r1
359: move r1,r15 ;(xuse)
360: move r1,r17 ;(xleft)
361: movei #76,r1
362: add r1,r0
363: load (r0),r0
364: and r2,r0
365: move r0,r16 ;(yuse)
366: move r0,r18 ;(yleft)
367:
368: movei #L82,r0
369: jump T,(r0)
370: nop
371:
372: L81:
373:
374: moveq #1,r0
375: move r15,r1 ;(xuse)
376: sha r0,r1
377: move r1,r15 ;(xuse)
378: move r16,r1 ;(yuse)
379: sha r0,r1
380: move r1,r16 ;(yuse)
381:
382: L82:
383:
384: movei #1048576,r0
385: cmp r15,r0 ;(xuse)
386: movei #L81,scratch
387: jump MI,(scratch)
388: nop
389: movei #-1048576,r1
390: cmp r15,r1 ;(xuse)
391: movei #L81,scratch
392: jump S_LT,(scratch)
393: nop
394: cmp r16,r0 ;(yuse)
395: movei #L81,scratch
396: jump MI,(scratch)
397: nop
398: cmp r16,r1 ;(yuse)
399: movei #L81,scratch
400: jump S_LT,(scratch)
401: nop
402:
403: movei #L85,r0
404: jump T,(r0)
405: nop
406:
407: L84:
408:
409: move r17,r0 ;(xleft)
410: sub r15,r0 ;(xuse)
411: move r0,r17 ;(xleft)
412: move r18,r0 ;(yleft)
413: sub r16,r0 ;(yuse)
414: move r0,r18 ;(yleft)
415: load (FP+11),r0 ; local mo
416: move r0,r1
417: addq #12,r1
418: load (r1),r1
419: add r15,r1 ;(xuse)
420: store r1,(FP) ; arg[]
421: addq #16,r0
422: load (r0),r0
423: add r16,r0 ;(yuse)
424: or r0,scratch ; scoreboard bug
425: store r0,(FP+1) ; arg[]
426: movei #_PB_TryMove,r0
427: store r28,(FP+2) ; push ;(RETURNPOINT)
428: store r18,(FP+3) ; push ;(yleft)
429: store r17,(FP+4) ; push ;(xleft)
430: store r16,(FP+5) ; push ;(yuse)
431: movei #L105,RETURNPOINT
432: jump T,(r0)
433: store r15,(FP+6) ; delay slot push ;(xuse)
434: L105:
435: load (FP+3),r18 ; pop ;(yleft)
436: load (FP+4),r17 ; pop ;(xleft)
437: load (FP+5),r16 ; pop ;(yuse)
438: load (FP+6),r15 ; pop ;(xuse)
439: load (FP+2), RETURNPOINT ; pop
440: moveq #0,r0
441: cmp r29,r0 ;(RETURNVALUE)
442: movei #L87,scratch
443: jump NE,(scratch)
444: nop
445:
446: load (FP+11),r0 ; local mo
447: movei #100,r1
448: add r1,r0
449: load (r0),r0
450: movei #16777216,r1
451: and r1,r0
452: moveq #0,r1
453: cmp r0,r1
454: movei #L89,scratch
455: jump EQ,(scratch)
456: nop
457:
458: load (FP+11),r0 ; local mo
459: movei #132,r1
460: add r1,r0
461: movei #_hitthing,r1
462: load (r1),r1
463: load (r0),r30 ; FUCKING dsp!
464: or r30,r30 ; FUCKING dsp!
465: store r1,(r0)
466:
467: load (FP+11),r0 ; local mo
468: addq #8,r0
469: movei #_L_SkullBash,r1
470: load (r0),r30 ; FUCKING dsp!
471: or r30,r30 ; FUCKING dsp!
472: store r1,(r0)
473:
474: L89:
475:
476: load (FP+11),r0 ; local mo
477: movei #100,r1
478: add r1,r0
479: load (r0),r0
480: movei #65536,r1
481: and r1,r0
482: moveq #0,r1
483: cmp r0,r1
484: movei #L91,scratch
485: jump EQ,(scratch)
486: nop
487:
488: movei #_ceilingline,r0
489: load (r0),r0
490: move r0,r1
491: moveq #0,r2
492: cmp r1,r2
493: movei #L93,scratch
494: jump EQ,(scratch)
495: nop
496: movei #60,r1
497: add r1,r0
498: load (r0),r0
499: move r0,r1
500: cmp r1,r2
501: movei #L93,scratch
502: jump EQ,(scratch)
503: nop
504: addq #12,r0
505: load (r0),r0
506: movei #-1,r1
507: cmp r0,r1
508: movei #L93,scratch
509: jump NE,(scratch)
510: nop
511:
512: load (FP+11),r0 ; local mo
513: addq #8,r0
514: movei #_P_RemoveMobj,r1
515: load (r0),r30 ; FUCKING dsp!
516: or r30,r30 ; FUCKING dsp!
517: store r1,(r0)
518:
519:
520: movei #L80,r0
521: jump T,(r0)
522: nop
523:
524: L93:
525:
526: load (FP+11),r0 ; local mo
527: movei #132,r1
528: add r1,r0
529: movei #_hitthing,r1
530: load (r1),r1
531: load (r0),r30 ; FUCKING dsp!
532: or r30,r30 ; FUCKING dsp!
533: store r1,(r0)
534:
535: load (FP+11),r0 ; local mo
536: addq #8,r0
537: movei #_L_MissileHit,r1
538: load (r0),r30 ; FUCKING dsp!
539: or r30,r30 ; FUCKING dsp!
540: store r1,(r0)
541:
542:
543: movei #L80,r0
544: jump T,(r0)
545: nop
546:
547: L91:
548:
549: load (FP+11),r0 ; local mo
550: movei #76,r1
551: move r0,r2
552: add r1,r2
553: moveq #0,r1
554: load (r2),r30 ; FUCKING dsp!
555: or r30,r30 ; FUCKING dsp!
556: store r1,(r2)
557: movei #72,r2
558: add r2,r0
559: load (r0),r30 ; FUCKING dsp!
560: or r30,r30 ; FUCKING dsp!
561: store r1,(r0)
562:
563:
564: movei #L80,r0
565: jump T,(r0)
566: nop
567:
568: L87:
569:
570: L85:
571:
572: moveq #0,r0
573: cmp r17,r0 ;(xleft)
574: movei #L84,scratch
575: jump NE,(scratch)
576: nop
577: cmp r18,r0 ;(yleft)
578: movei #L84,scratch
579: jump NE,(scratch)
580: nop
581:
582: load (FP+11),r0 ; local mo
583: movei #100,r1
584: add r1,r0
585: load (r0),r0
586: movei #16842752,r1
587: and r1,r0
588: moveq #0,r1
589: cmp r0,r1
590: movei #L95,scratch
591: jump EQ,(scratch)
592: nop
593:
594:
595: movei #L80,r0
596: jump T,(r0)
597: nop
598:
599: L95:
600:
601: load (FP+11),r0 ; local mo
602: move r0,r1
603: addq #20,r1
604: load (r1),r1
605: movei #56,r2
606: add r2,r0
607: load (r0),r0
608: cmp r1,r0
609: movei #L97,scratch
610: jump PL,(scratch)
611: nop
612:
613:
614: movei #L80,r0
615: jump T,(r0)
616: nop
617:
618: L97:
619:
620: load (FP+11),r0 ; local mo
621: movei #100,r1
622: add r1,r0
623: load (r0),r0
624: movei #1048576,r1
625: and r1,r0
626: moveq #0,r1
627: cmp r0,r1
628: movei #L99,scratch
629: jump EQ,(scratch)
630: nop
631:
632: load (FP+11),r0 ; local mo
633: movei #56,r1
634: move r0,r2
635: add r1,r2
636: load (r2),r1
637: movei #52,r2
638: add r2,r0
639: load (r0),r0
640: load (r0),r0
641: load (r0),r0
642: cmp r1,r0
643: movei #L101,scratch
644: jump EQ,(scratch)
645: nop
646:
647:
648: movei #L80,r0
649: jump T,(r0)
650: nop
651:
652: L101:
653:
654: L99:
655:
656: load (FP+11),r0 ; local mo
657: movei #72,r1
658: move r0,r2
659: add r1,r2
660: load (r2),r1
661: movei #-4096,r2
662: cmp r1,r2
663: movei #L103,scratch
664: jump PL,(scratch)
665: nop
666: movei #4096,r3
667: cmp r1,r3
668: movei #L103,scratch
669: jump EQ,(scratch)
670: nop
671: jump MI,(scratch)
672: nop
673: movei #76,r1
674: add r1,r0
675: load (r0),r0
676: cmp r0,r2
677: movei #L103,scratch
678: jump PL,(scratch)
679: nop
680: cmp r0,r3
681: movei #L103,scratch
682: jump EQ,(scratch)
683: nop
684: jump MI,(scratch)
685: nop
686:
687: load (FP+11),r0 ; local mo
688: movei #72,r1
689: add r1,r0
690: moveq #0,r1
691: load (r0),r30 ; FUCKING dsp!
692: or r30,r30 ; FUCKING dsp!
693: store r1,(r0)
694:
695: load (FP+11),r0 ; local mo
696: movei #76,r1
697: add r1,r0
698: moveq #0,r1
699: load (r0),r30 ; FUCKING dsp!
700: or r30,r30 ; FUCKING dsp!
701: store r1,(r0)
702:
703: movei #L104,r0
704: jump T,(r0)
705: nop
706:
707: L103:
708:
709: load (FP+11),r0 ; local mo
710: movei #72,r1
711: add r1,r0
712: movei #210,r1
713: load (r0),r2
714: sharq #8,r2
715: move r1,MATH_A
716: movei #L106,MATH_RTS
717: movei #GPU_IMUL,scratch
718: jump T,(scratch)
719: move r2,MATH_B ; delay slot
720: L106:
721: move MATH_C,r1
722: load (r0),r30 ; FUCKING dsp!
723: or r30,r30 ; FUCKING dsp!
724: store r1,(r0)
725:
726: load (FP+11),r0 ; local mo
727: movei #76,r1
728: add r1,r0
729: movei #210,r1
730: load (r0),r2
731: sharq #8,r2
732: move r1,MATH_A
733: movei #L107,MATH_RTS
734: movei #GPU_IMUL,scratch
735: jump T,(scratch)
736: move r2,MATH_B ; delay slot
737: L107:
738: move MATH_C,r1
739: load (r0),r30 ; FUCKING dsp!
740: or r30,r30 ; FUCKING dsp!
741: store r1,(r0)
742:
743: L104:
744:
745:
746: L80:
747: movei #44,scratch
748: jump T,(RETURNPOINT)
749: add scratch,FP ; delay slot
750:
751: ;====================
752: _P_FloatChange::
753: ;5 dag registers 3 register variables
754: ;localoffset:0 regoffset:4 argoffset:4
755: ;====================
756: subq #4,FP
757:
758: load (FP+1),r0 ; local mo
759: movei #116,r1
760: move r0,r2
761: add r1,r2
762: load (r2),r1
763: moveq #12,r2
764: add r2,r1
765: load (r1),r1
766: add r2,r0
767: load (r0),r0
768: sub r0,r1
769: move r1,r15 ;(dx)
770: moveq #0,r0
771: cmp r15,r0 ;(dx)
772: movei #L109,scratch
773: jump EQ,(scratch)
774: nop
775: jump MI,(scratch)
776: nop
777:
778: move r15,r0 ;(dx)
779: neg r0
780: move r0,r15 ;(dx)
781:
782: L109:
783:
784: load (FP+1),r0 ; local mo
785: movei #116,r1
786: move r0,r2
787: add r1,r2
788: load (r2),r1
789: moveq #16,r2
790: add r2,r1
791: load (r1),r1
792: add r2,r0
793: load (r0),r0
794: sub r0,r1
795: move r1,r16 ;(dy)
796: moveq #0,r0
797: cmp r16,r0 ;(dy)
798: movei #L111,scratch
799: jump EQ,(scratch)
800: nop
801: jump MI,(scratch)
802: nop
803:
804: move r16,r0 ;(dy)
805: neg r0
806: move r0,r16 ;(dy)
807:
808: L111:
809:
810: cmp r15,r16 ;(dx)(dy)
811: movei #L113,scratch
812: jump EQ,(scratch)
813: nop
814: jump MI,(scratch)
815: nop
816:
817: move FP,r0 ; &dist
818: move r15,r1 ;(dx)
819: add r16,r1 ;(dy)
820: move r15,r2 ;(dx)
821: sharq #1,r2
822: sub r2,r1
823: load (r0),r30 ; FUCKING dsp!
824: or r30,r30 ; FUCKING dsp!
825: store r1,(r0)
826:
827: movei #L114,r0
828: jump T,(r0)
829: nop
830:
831: L113:
832:
833: move FP,r0 ; &dist
834: move r15,r1 ;(dx)
835: add r16,r1 ;(dy)
836: move r16,r2 ;(dy)
837: sharq #1,r2
838: sub r2,r1
839: load (r0),r30 ; FUCKING dsp!
840: or r30,r30 ; FUCKING dsp!
841: store r1,(r0)
842:
843: L114:
844:
845: load (FP+1),r0 ; local mo
846: movei #116,r1
847: move r0,r2
848: add r1,r2
849: load (r2),r1
850: moveq #20,r2
851: add r2,r1
852: load (r1),r1
853: movei #68,r3
854: move r0,r4
855: add r3,r4
856: load (r4),r3
857: sharq #1,r3
858: add r3,r1
859: add r2,r0
860: load (r0),r0
861: sub r0,r1
862: move r1,r17 ;(delta)
863: moveq #0,r0
864: cmp r17,r0 ;(delta)
865: movei #L115,scratch
866: jump EQ,(scratch)
867: nop
868: jump MI,(scratch)
869: nop
870: load (FP),r0 ; local dist
871: moveq #3,r1
872: move r1,MATH_A
873: movei #L119,MATH_RTS
874: movei #GPU_IMUL,scratch
875: jump T,(scratch)
876: move r17,MATH_B ; delay slot ;(delta)
877: L119:
878: move MATH_C,r1
879: neg r1
880: cmp r0,r1
881: movei #L115,scratch
882: jump EQ,(scratch)
883: nop
884: jump MI,(scratch)
885: nop
886:
887: load (FP+1),r0 ; local mo
888: addq #20,r0
889: load (r0),r1
890: movei #524288,r2
891: sub r2,r1
892: load (r0),r30 ; FUCKING dsp!
893: or r30,r30 ; FUCKING dsp!
894: store r1,(r0)
895:
896: movei #L116,r0
897: jump T,(r0)
898: nop
899:
900: L115:
901:
902: moveq #0,r0
903: cmp r17,r0 ;(delta)
904: movei #L117,scratch
905: jump PL,(scratch)
906: nop
907: load (FP),r0 ; local dist
908: moveq #3,r1
909: move r1,MATH_A
910: movei #L120,MATH_RTS
911: movei #GPU_IMUL,scratch
912: jump T,(scratch)
913: move r17,MATH_B ; delay slot ;(delta)
914: L120:
915: move MATH_C,r1
916: cmp r0,r1
917: movei #L117,scratch
918: jump EQ,(scratch)
919: nop
920: jump MI,(scratch)
921: nop
922:
923: load (FP+1),r0 ; local mo
924: addq #20,r0
925: load (r0),r1
926: movei #524288,r2
927: add r2,r1
928: load (r0),r30 ; FUCKING dsp!
929: or r30,r30 ; FUCKING dsp!
930: store r1,(r0)
931:
932: L117:
933:
934: L116:
935:
936:
937: L108:
938: jump T,(RETURNPOINT)
939: addq #4,FP ; delay slot
940:
941: ;====================
942: _P_ZMovement::
943: ;4 dag registers 0 register variables
944: ;localoffset:4 regoffset:4 argoffset:24
945: ;====================
946: subq #24,FP
947:
948: load (FP+6),r0 ; local mo
949: move r0,r1
950: addq #20,r1
951: load (r1),r2
952: movei #80,r3
953: add r3,r0
954: load (r0),r0
955: add r0,r2
956: load (r1),r30 ; FUCKING dsp!
957: or r30,r30 ; FUCKING dsp!
958: store r2,(r1)
959:
960: load (FP+6),r0 ; local mo
961: movei #100,r1
962: move r0,r2
963: add r1,r2
964: load (r2),r1
965: movei #16384,r2
966: and r2,r1
967: moveq #0,r2
968: cmp r1,r2
969: movei #L122,scratch
970: jump EQ,(scratch)
971: nop
972: movei #116,r1
973: add r1,r0
974: load (r0),r0
975: moveq #0,r1
976: cmp r0,r1
977: movei #L122,scratch
978: jump EQ,(scratch)
979: nop
980:
981: load (FP+6),r0 ; local mo
982: store r0,(FP) ; arg[]
983: movei #_P_FloatChange,r0
984: store r28,(FP+1) ; push ;(RETURNPOINT)
985: movei #L140,RETURNPOINT
986: jump T,(r0)
987: nop ; delay slot
988: L140:
989: load (FP+1), RETURNPOINT ; pop
990:
991: L122:
992:
993: load (FP+6),r0 ; local mo
994: move r0,r1
995: addq #20,r1
996: load (r1),r1
997: movei #56,r2
998: add r2,r0
999: load (r0),r0
1000: cmp r1,r0
1001: movei #L124,scratch
1002: jump MI,(scratch)
1003: nop
1004:
1005: load (FP+6),r0 ; local mo
1006: movei #80,r1
1007: add r1,r0
1008: load (r0),r0
1009: moveq #0,r1
1010: cmp r0,r1
1011: movei #L126,scratch
1012: jump EQ,(scratch)
1013: nop
1014: jump MI,(scratch)
1015: nop
1016:
1017: load (FP+6),r0 ; local mo
1018: movei #80,r1
1019: add r1,r0
1020: moveq #0,r1
1021: load (r0),r30 ; FUCKING dsp!
1022: or r30,r30 ; FUCKING dsp!
1023: store r1,(r0)
1024:
1025: L126:
1026:
1027: load (FP+6),r0 ; local mo
1028: move r0,r1
1029: addq #20,r1
1030: movei #56,r2
1031: add r2,r0
1032: load (r0),r0
1033: load (r1),r30 ; FUCKING dsp!
1034: or r30,r30 ; FUCKING dsp!
1035: store r0,(r1)
1036:
1037: load (FP+6),r0 ; local mo
1038: movei #100,r1
1039: add r1,r0
1040: load (r0),r0
1041: movei #65536,r1
1042: and r1,r0
1043: moveq #0,r1
1044: cmp r0,r1
1045: movei #L125,scratch
1046: jump EQ,(scratch)
1047: nop
1048:
1049: load (FP+6),r0 ; local mo
1050: addq #8,r0
1051: movei #_P_ExplodeMissile,r1
1052: load (r0),r30 ; FUCKING dsp!
1053: or r30,r30 ; FUCKING dsp!
1054: store r1,(r0)
1055:
1056:
1057: movei #L121,r0
1058: jump T,(r0)
1059: nop
1060:
1061: L124:
1062:
1063: load (FP+6),r0 ; local mo
1064: movei #100,r1
1065: add r1,r0
1066: load (r0),r0
1067: movei #512,r1
1068: and r1,r0
1069: moveq #0,r1
1070: cmp r0,r1
1071: movei #L130,scratch
1072: jump NE,(scratch)
1073: nop
1074:
1075: load (FP+6),r0 ; local mo
1076: movei #80,r1
1077: add r1,r0
1078: load (r0),r0
1079: moveq #0,r1
1080: cmp r0,r1
1081: movei #L132,scratch
1082: jump NE,(scratch)
1083: nop
1084:
1085: load (FP+6),r0 ; local mo
1086: movei #80,r1
1087: add r1,r0
1088: movei #-524288,r1
1089: load (r0),r30 ; FUCKING dsp!
1090: or r30,r30 ; FUCKING dsp!
1091: store r1,(r0)
1092:
1093: movei #L133,r0
1094: jump T,(r0)
1095: nop
1096:
1097: L132:
1098:
1099: load (FP+6),r0 ; local mo
1100: movei #80,r1
1101: add r1,r0
1102: load (r0),r1
1103: movei #262144,r2
1104: sub r2,r1
1105: load (r0),r30 ; FUCKING dsp!
1106: or r30,r30 ; FUCKING dsp!
1107: store r1,(r0)
1108:
1109: L133:
1110:
1111: L130:
1112:
1113: L125:
1114:
1115: load (FP+6),r0 ; local mo
1116: move r0,r1
1117: addq #20,r1
1118: load (r1),r1
1119: movei #68,r2
1120: move r0,r3
1121: add r2,r3
1122: load (r3),r2
1123: add r2,r1
1124: movei #60,r2
1125: add r2,r0
1126: load (r0),r0
1127: cmp r1,r0
1128: movei #L134,scratch
1129: jump PL,(scratch)
1130: nop
1131:
1132: load (FP+6),r0 ; local mo
1133: movei #80,r1
1134: add r1,r0
1135: load (r0),r0
1136: moveq #0,r1
1137: cmp r0,r1
1138: movei #L136,scratch
1139: jump PL,(scratch)
1140: nop
1141:
1142: load (FP+6),r0 ; local mo
1143: movei #80,r1
1144: add r1,r0
1145: moveq #0,r1
1146: load (r0),r30 ; FUCKING dsp!
1147: or r30,r30 ; FUCKING dsp!
1148: store r1,(r0)
1149:
1150: L136:
1151:
1152: load (FP+6),r0 ; local mo
1153: move r0,r1
1154: addq #20,r1
1155: movei #60,r2
1156: move r0,r3
1157: add r2,r3
1158: load (r3),r2
1159: movei #68,r3
1160: add r3,r0
1161: load (r0),r0
1162: sub r0,r2
1163: load (r1),r30 ; FUCKING dsp!
1164: or r30,r30 ; FUCKING dsp!
1165: store r2,(r1)
1166:
1167: load (FP+6),r0 ; local mo
1168: movei #100,r1
1169: add r1,r0
1170: load (r0),r0
1171: movei #65536,r1
1172: and r1,r0
1173: moveq #0,r1
1174: cmp r0,r1
1175: movei #L138,scratch
1176: jump EQ,(scratch)
1177: nop
1178:
1179: load (FP+6),r0 ; local mo
1180: addq #8,r0
1181: movei #_P_ExplodeMissile,r1
1182: load (r0),r30 ; FUCKING dsp!
1183: or r30,r30 ; FUCKING dsp!
1184: store r1,(r0)
1185:
1186:
1187: movei #L121,r0
1188: jump T,(r0)
1189: nop
1190:
1191: L138:
1192:
1193: L134:
1194:
1195:
1196: L121:
1197: jump T,(RETURNPOINT)
1198: addq #24,FP ; delay slot
1199:
1200: ;====================
1201: _P_MobjThinker::
1202: ;4 dag registers 2 register variables
1203: ;localoffset:4 regoffset:4 argoffset:32
1204: ;====================
1205: subq #32,FP
1206:
1207: load (FP+8),r0 ; local mobj
1208: movei #72,r1
1209: move r0,r2
1210: add r1,r2
1211: load (r2),r1
1212: moveq #0,r2
1213: cmp r1,r2
1214: movei #L144,scratch
1215: jump NE,(scratch)
1216: nop
1217: movei #76,r1
1218: add r1,r0
1219: load (r0),r0
1220: cmp r0,r2
1221: movei #L142,scratch
1222: jump EQ,(scratch)
1223: nop
1224: L144:
1225:
1226: load (FP+8),r0 ; local mobj
1227: store r0,(FP) ; arg[]
1228: movei #_P_XYMovement,r0
1229: store r28,(FP+1) ; push ;(RETURNPOINT)
1230: store r16,(FP+2) ; push ;(state)
1231: movei #L158,RETURNPOINT
1232: jump T,(r0)
1233: store r15,(FP+3) ; delay slot push ;(st)
1234: L158:
1235: load (FP+2),r16 ; pop ;(state)
1236: load (FP+3),r15 ; pop ;(st)
1237: load (FP+1), RETURNPOINT ; pop
1238:
1239: load (FP+8),r0 ; local mobj
1240: addq #8,r0
1241: load (r0),r0
1242: moveq #0,r1
1243: cmp r0,r1
1244: movei #L145,scratch
1245: jump EQ,(scratch)
1246: nop
1247:
1248:
1249: movei #L141,r0
1250: jump T,(r0)
1251: nop
1252:
1253: L145:
1254:
1255: L142:
1256:
1257: load (FP+8),r0 ; local mobj
1258: move r0,r1
1259: addq #20,r1
1260: load (r1),r1
1261: movei #56,r2
1262: move r0,r3
1263: add r2,r3
1264: load (r3),r2
1265: cmp r1,r2
1266: movei #L149,scratch
1267: jump NE,(scratch)
1268: nop
1269: movei #80,r1
1270: add r1,r0
1271: load (r0),r0
1272: moveq #0,r1
1273: cmp r0,r1
1274: movei #L147,scratch
1275: jump EQ,(scratch)
1276: nop
1277: L149:
1278:
1279: load (FP+8),r0 ; local mobj
1280: store r0,(FP) ; arg[]
1281: movei #_P_ZMovement,r0
1282: store r28,(FP+1) ; push ;(RETURNPOINT)
1283: store r16,(FP+2) ; push ;(state)
1284: movei #L159,RETURNPOINT
1285: jump T,(r0)
1286: store r15,(FP+3) ; delay slot push ;(st)
1287: L159:
1288: load (FP+2),r16 ; pop ;(state)
1289: load (FP+3),r15 ; pop ;(st)
1290: load (FP+1), RETURNPOINT ; pop
1291:
1292: load (FP+8),r0 ; local mobj
1293: addq #8,r0
1294: load (r0),r0
1295: moveq #0,r1
1296: cmp r0,r1
1297: movei #L150,scratch
1298: jump EQ,(scratch)
1299: nop
1300:
1301:
1302: movei #L141,r0
1303: jump T,(r0)
1304: nop
1305:
1306: L150:
1307:
1308: L147:
1309:
1310: load (FP+8),r0 ; local mobj
1311: movei #92,r1
1312: add r1,r0
1313: load (r0),r0
1314: movei #-1,r1
1315: cmp r0,r1
1316: movei #L152,scratch
1317: jump NE,(scratch)
1318: nop
1319:
1320:
1321: movei #L141,r0
1322: jump T,(r0)
1323: nop
1324:
1325: L152:
1326:
1327: load (FP+8),r0 ; local mobj
1328: movei #92,r1
1329: add r1,r0
1330: load (r0),r1
1331: subq #1,r1
1332: load (r0),r30 ; FUCKING dsp!
1333: or r30,r30 ; FUCKING dsp!
1334: store r1,(r0)
1335:
1336: load (FP+8),r0 ; local mobj
1337: movei #92,r1
1338: add r1,r0
1339: load (r0),r0
1340: moveq #0,r1
1341: cmp r0,r1
1342: movei #L154,scratch
1343: jump PL,(scratch)
1344: nop
1345:
1346:
1347: movei #L141,r0
1348: jump T,(r0)
1349: nop
1350:
1351: L154:
1352:
1353: load (FP+8),r0 ; local mobj
1354: movei #96,r1
1355: add r1,r0
1356: load (r0),r0
1357: addq #16,r0
1358: load (r0),r0
1359: move r0,r16 ;(state)
1360: moveq #0,r0
1361: cmp r16,r0 ;(state)
1362: movei #L156,scratch
1363: jump NE,(scratch)
1364: nop
1365:
1366: load (FP+8),r0 ; local mobj
1367: addq #8,r0
1368: movei #_P_RemoveMobj,r1
1369: load (r0),r30 ; FUCKING dsp!
1370: or r30,r30 ; FUCKING dsp!
1371: store r1,(r0)
1372:
1373:
1374: movei #L141,r0
1375: jump T,(r0)
1376: nop
1377:
1378: L156:
1379:
1380: moveq #28,r0
1381: move r0,MATH_A
1382: movei #L160,MATH_RTS
1383: movei #GPU_IMUL,scratch
1384: jump T,(scratch)
1385: move r16,MATH_B ; delay slot ;(state)
1386: L160:
1387: move MATH_C,r0
1388: movei #_states,r1
1389: add r1,r0
1390: move r0,r15 ;(st)
1391: load (FP+8),r0 ; local mobj
1392: movei #96,r1
1393: add r1,r0
1394: load (r0),r30 ; FUCKING dsp!
1395: or r30,r30 ; FUCKING dsp!
1396: store r15,(r0) ;(st)
1397:
1398: load (FP+8),r0 ; local mobj
1399: movei #92,r1
1400: add r1,r0
1401: move r15,r1 ;(st)
1402: addq #8,r1
1403: load (r1),r1
1404: load (r0),r30 ; FUCKING dsp!
1405: or r30,r30 ; FUCKING dsp!
1406: store r1,(r0)
1407:
1408: load (FP+8),r0 ; local mobj
1409: movei #36,r1
1410: add r1,r0
1411: load (r15),r1 ;(st)
1412: load (r0),r30 ; FUCKING dsp!
1413: or r30,r30 ; FUCKING dsp!
1414: store r1,(r0)
1415:
1416: load (FP+8),r0 ; local mobj
1417: movei #40,r1
1418: add r1,r0
1419: move r15,r1 ;(st)
1420: addq #4,r1
1421: load (r1),r1
1422: load (r0),r30 ; FUCKING dsp!
1423: or r30,r30 ; FUCKING dsp!
1424: store r1,(r0)
1425:
1426: load (FP+8),r0 ; local mobj
1427: addq #8,r0
1428: move r15,r1 ;(st)
1429: addq #12,r1
1430: load (r1),r1
1431: load (r0),r30 ; FUCKING dsp!
1432: or r30,r30 ; FUCKING dsp!
1433: store r1,(r0)
1434:
1435:
1436: L141:
1437: jump T,(RETURNPOINT)
1438: addq #32,FP ; delay slot
1439:
1440: ;====================
1441: _PB_TryMove::
1442: ;3 dag registers 0 register variables
1443: ;localoffset:4 regoffset:12 argoffset:28
1444: ;====================
1445: subq #28,FP
1446:
1447: movei #_testx,r0
1448: load (FP+7),r1 ; local tryx
1449: load (r0),r30 ; FUCKING dsp!
1450: or r30,r30 ; FUCKING dsp!
1451: store r1,(r0)
1452: movei #_testy,r0
1453: load (FP+8),r1 ; local tryy
1454: load (r0),r30 ; FUCKING dsp!
1455: or r30,r30 ; FUCKING dsp!
1456: store r1,(r0)
1457: movei #_PB_CheckPosition,r0
1458: store r28,(FP+3) ; push ;(RETURNPOINT)
1459: movei #L172,RETURNPOINT
1460: jump T,(r0)
1461: nop ; delay slot
1462: L172:
1463: load (FP+3), RETURNPOINT ; pop
1464: moveq #0,r0
1465: cmp r29,r0 ;(RETURNVALUE)
1466: movei #L162,scratch
1467: jump NE,(scratch)
1468: nop
1469:
1470: moveq #0,r0
1471: move r0,RETURNVALUE
1472:
1473: movei #L161,r0
1474: jump T,(r0)
1475: nop
1476:
1477: L162:
1478:
1479: movei #_testceilingz,r0
1480: load (r0),r0
1481: movei #_testfloorz,r1
1482: load (r1),r1
1483: sub r1,r0
1484: movei #_basething,r1
1485: load (r1),r1
1486: movei #68,r2
1487: add r2,r1
1488: load (r1),r1
1489: cmp r0,r1
1490: movei #L164,scratch
1491: jump EQ,(scratch)
1492: nop
1493: jump MI,(scratch)
1494: nop
1495:
1496: moveq #0,r0
1497: move r0,RETURNVALUE
1498:
1499: movei #L161,r0
1500: jump T,(r0)
1501: nop
1502:
1503: L164:
1504:
1505: movei #_testceilingz,r0
1506: load (r0),r0
1507: movei #_basething,r1
1508: load (r1),r1
1509: move r1,r2
1510: addq #20,r2
1511: load (r2),r2
1512: sub r2,r0
1513: movei #68,r2
1514: add r2,r1
1515: load (r1),r1
1516: cmp r0,r1
1517: movei #L166,scratch
1518: jump EQ,(scratch)
1519: nop
1520: jump MI,(scratch)
1521: nop
1522:
1523: moveq #0,r0
1524: move r0,RETURNVALUE
1525:
1526: movei #L161,r0
1527: jump T,(r0)
1528: nop
1529:
1530: L166:
1531:
1532: movei #_testfloorz,r0
1533: load (r0),r0
1534: movei #_basething,r1
1535: load (r1),r1
1536: addq #20,r1
1537: load (r1),r1
1538: sub r1,r0
1539: movei #1572864,r1
1540: cmp r0,r1
1541: movei #L168,scratch
1542: jump PL,(scratch)
1543: nop
1544:
1545: moveq #0,r0
1546: move r0,RETURNVALUE
1547:
1548: movei #L161,r0
1549: jump T,(r0)
1550: nop
1551:
1552: L168:
1553:
1554: movei #_testflags,r0
1555: load (r0),r0
1556: movei #17408,r1
1557: and r1,r0
1558: moveq #0,r1
1559: cmp r0,r1
1560: movei #L170,scratch
1561: jump NE,(scratch)
1562: nop
1563: movei #_testfloorz,r0
1564: load (r0),r0
1565: movei #_testdropoffz,r1
1566: load (r1),r1
1567: sub r1,r0
1568: movei #1572864,r1
1569: cmp r0,r1
1570: movei #L170,scratch
1571: jump PL,(scratch)
1572: nop
1573:
1574: moveq #0,r0
1575: move r0,RETURNVALUE
1576:
1577: movei #L161,r0
1578: jump T,(r0)
1579: nop
1580:
1581: L170:
1582:
1583: movei #_basething,r0
1584: load (r0),r0
1585: store r0,(FP) ; arg[]
1586: movei #_PB_UnsetThingPosition,r0
1587: store r28,(FP+3) ; push ;(RETURNPOINT)
1588: movei #L173,RETURNPOINT
1589: jump T,(r0)
1590: nop ; delay slot
1591: L173:
1592: load (FP+3), RETURNPOINT ; pop
1593:
1594: move FP,r0
1595: addq #4,r0 ; &oldx
1596: movei #_basething,r1
1597: load (r1),r1
1598: move r1,r2
1599: addq #12,r2
1600: load (r2),r2
1601: load (r0),r30 ; FUCKING dsp!
1602: or r30,r30 ; FUCKING dsp!
1603: store r2,(r0)
1604: move FP,r0
1605: addq #8,r0 ; &oldy
1606: move r1,r2
1607: addq #16,r2
1608: load (r2),r2
1609: load (r0),r30 ; FUCKING dsp!
1610: or r30,r30 ; FUCKING dsp!
1611: store r2,(r0)
1612: movei #56,r0
1613: add r0,r1
1614: movei #_testfloorz,r0
1615: load (r0),r0
1616: load (r1),r30 ; FUCKING dsp!
1617: or r30,r30 ; FUCKING dsp!
1618: store r0,(r1)
1619:
1620: movei #_basething,r0
1621: load (r0),r0
1622: movei #60,r1
1623: add r1,r0
1624: movei #_testceilingz,r1
1625: load (r1),r1
1626: load (r0),r30 ; FUCKING dsp!
1627: or r30,r30 ; FUCKING dsp!
1628: store r1,(r0)
1629:
1630: movei #_basething,r0
1631: load (r0),r0
1632: addq #12,r0
1633: movei #_testx,r1
1634: load (r1),r1
1635: load (r0),r30 ; FUCKING dsp!
1636: or r30,r30 ; FUCKING dsp!
1637: store r1,(r0)
1638:
1639: movei #_basething,r0
1640: load (r0),r0
1641: addq #16,r0
1642: movei #_testy,r1
1643: load (r1),r1
1644: load (r0),r30 ; FUCKING dsp!
1645: or r30,r30 ; FUCKING dsp!
1646: store r1,(r0)
1647:
1648: movei #_basething,r0
1649: load (r0),r0
1650: store r0,(FP) ; arg[]
1651: movei #_PB_SetThingPosition,r0
1652: store r28,(FP+3) ; push ;(RETURNPOINT)
1653: movei #L174,RETURNPOINT
1654: jump T,(r0)
1655: nop ; delay slot
1656: L174:
1657: load (FP+3), RETURNPOINT ; pop
1658:
1659: moveq #1,r0
1660: move r0,RETURNVALUE
1661:
1662: L161:
1663: jump T,(RETURNPOINT)
1664: addq #28,FP ; delay slot
1665:
1666: ;====================
1667: _PB_SetThingPosition::
1668: ;5 dag registers 1 register variables
1669: ;localoffset:0 regoffset:16 argoffset:16
1670: ;====================
1671: subq #16,FP
1672:
1673: move FP,r0 ; &ss
1674: movei #_testsubsec,r1
1675: load (r1),r1
1676: load (r0),r30 ; FUCKING dsp!
1677: or r30,r30 ; FUCKING dsp!
1678: store r1,(r0)
1679: load (FP+4),r0 ; local thing
1680: movei #52,r2
1681: add r2,r0
1682: load (r0),r30 ; FUCKING dsp!
1683: or r30,r30 ; FUCKING dsp!
1684: store r1,(r0)
1685:
1686: load (FP),r0 ; local ss
1687: load (r0),r0
1688: move r0,r15 ;(sec)
1689: load (FP+4),r0 ; local thing
1690: addq #28,r0
1691: moveq #0,r1
1692: load (r0),r30 ; FUCKING dsp!
1693: or r30,r30 ; FUCKING dsp!
1694: store r1,(r0)
1695:
1696: load (FP+4),r0 ; local thing
1697: addq #24,r0
1698: movei #80,r1
1699: move r15,r2 ;(sec)
1700: add r1,r2
1701: load (r2),r1
1702: load (r0),r30 ; FUCKING dsp!
1703: or r30,r30 ; FUCKING dsp!
1704: store r1,(r0)
1705:
1706: movei #80,r0
1707: move r15,r1 ;(sec)
1708: add r0,r1
1709: load (r1),r0
1710: moveq #0,r1
1711: cmp r0,r1
1712: movei #L176,scratch
1713: jump EQ,(scratch)
1714: nop
1715:
1716: movei #80,r0
1717: move r15,r1 ;(sec)
1718: add r0,r1
1719: load (r1),r0
1720: addq #28,r0
1721: load (FP+4),r1 ; local thing
1722: load (r0),r30 ; FUCKING dsp!
1723: or r30,r30 ; FUCKING dsp!
1724: store r1,(r0)
1725:
1726: L176:
1727:
1728: movei #80,r0
1729: move r15,r1 ;(sec)
1730: add r0,r1
1731: load (FP+4),r0 ; local thing
1732: load (r1),r30 ; FUCKING dsp!
1733: or r30,r30 ; FUCKING dsp!
1734: store r0,(r1)
1735:
1736: movei #_testflags,r0
1737: load (r0),r0
1738: moveq #16,r1
1739: and r1,r0
1740: moveq #0,r1
1741: cmp r0,r1
1742: movei #L178,scratch
1743: jump NE,(scratch)
1744: nop
1745:
1746: move FP,r0
1747: addq #4,r0 ; &blockx
1748: load (FP+4),r1 ; local thing
1749: move r1,r2
1750: addq #12,r2
1751: load (r2),r2
1752: movei #_bmaporgx,r3
1753: load (r3),r3
1754: sub r3,r2
1755: moveq #23,r3
1756: sha r3,r2
1757: load (r0),r30 ; FUCKING dsp!
1758: or r30,r30 ; FUCKING dsp!
1759: store r2,(r0)
1760: move FP,r2
1761: addq #8,r2 ; &blocky
1762: addq #16,r1
1763: load (r1),r1
1764: movei #_bmaporgy,r4
1765: load (r4),r4
1766: sub r4,r1
1767: sha r3,r1
1768: load (r2),r30 ; FUCKING dsp!
1769: or r30,r30 ; FUCKING dsp!
1770: store r1,(r2)
1771: load (r0),r0
1772: moveq #0,r1
1773: cmp r0,r1
1774: movei #L180,scratch
1775: jump S_LT,(scratch)
1776: nop
1777: movei #_bmapwidth,r3
1778: load (r3),r3
1779: cmp r0,r3
1780: movei #L180,scratch
1781: jump EQ,(scratch)
1782: nop
1783: jump MI,(scratch)
1784: nop
1785: load (r2),r0
1786: cmp r0,r1
1787: movei #L180,scratch
1788: jump S_LT,(scratch)
1789: nop
1790: movei #_bmapheight,r1
1791: load (r1),r1
1792: cmp r0,r1
1793: movei #L180,scratch
1794: jump EQ,(scratch)
1795: nop
1796: jump MI,(scratch)
1797: nop
1798:
1799: move FP,r0
1800: addq #12,r0 ; &link
1801: load (FP+2),r1 ; local blocky
1802: movei #_bmapwidth,r2
1803: load (r2),r2
1804: move r1,MATH_A
1805: movei #L184,MATH_RTS
1806: movei #GPU_IMUL,scratch
1807: jump T,(scratch)
1808: move r2,MATH_B ; delay slot
1809: L184:
1810: move MATH_C,r1
1811: load (FP+1),r2 ; local blockx
1812: add r2,r1
1813: shlq #2,r1
1814: movei #_blocklinks,r2
1815: load (r2),r2
1816: add r2,r1
1817: load (r0),r30 ; FUCKING dsp!
1818: or r30,r30 ; FUCKING dsp!
1819: store r1,(r0)
1820: load (FP+4),r0 ; local thing
1821: movei #48,r1
1822: add r1,r0
1823: moveq #0,r1
1824: load (r0),r30 ; FUCKING dsp!
1825: or r30,r30 ; FUCKING dsp!
1826: store r1,(r0)
1827:
1828: load (FP+4),r0 ; local thing
1829: movei #44,r1
1830: add r1,r0
1831: load (FP+3),r1 ; local link
1832: load (r1),r1
1833: load (r0),r30 ; FUCKING dsp!
1834: or r30,r30 ; FUCKING dsp!
1835: store r1,(r0)
1836:
1837: load (FP+3),r0 ; local link
1838: load (r0),r0
1839: moveq #0,r1
1840: cmp r0,r1
1841: movei #L182,scratch
1842: jump EQ,(scratch)
1843: nop
1844:
1845: load (FP+3),r0 ; local link
1846: load (r0),r0
1847: movei #48,r1
1848: add r1,r0
1849: load (FP+4),r1 ; local thing
1850: load (r0),r30 ; FUCKING dsp!
1851: or r30,r30 ; FUCKING dsp!
1852: store r1,(r0)
1853:
1854: L182:
1855:
1856: load (FP+3),r0 ; local link
1857: load (FP+4),r1 ; local thing
1858: load (r0),r30 ; FUCKING dsp!
1859: or r30,r30 ; FUCKING dsp!
1860: store r1,(r0)
1861:
1862: movei #L181,r0
1863: jump T,(r0)
1864: nop
1865:
1866: L180:
1867:
1868: load (FP+4),r0 ; local thing
1869: movei #48,r1
1870: move r0,r2
1871: add r1,r2
1872: moveq #0,r1
1873: load (r2),r30 ; FUCKING dsp!
1874: or r30,r30 ; FUCKING dsp!
1875: store r1,(r2)
1876: movei #44,r2
1877: add r2,r0
1878: load (r0),r30 ; FUCKING dsp!
1879: or r30,r30 ; FUCKING dsp!
1880: store r1,(r0)
1881:
1882: L181:
1883:
1884: L178:
1885:
1886:
1887: L175:
1888: jump T,(RETURNPOINT)
1889: addq #16,FP ; delay slot
1890:
1891: ;====================
1892: _PB_CheckPosition::
1893: ;4 dag registers 7 register variables
1894: ;localoffset:8 regoffset:8 argoffset:56
1895: ;====================
1896: movei #56,scratch
1897: sub scratch,FP
1898:
1899: movei #_testflags,r0
1900: movei #_basething,r1
1901: load (r1),r1
1902: movei #100,r2
1903: move r1,r3
1904: add r2,r3
1905: load (r3),r2
1906: load (r0),r30 ; FUCKING dsp!
1907: or r30,r30 ; FUCKING dsp!
1908: store r2,(r0)
1909: movei #64,r0
1910: add r0,r1
1911: load (r1),r0
1912: move r0,r20 ;(r)
1913: movei #_testbbox,r0
1914: movei #_testy,r1
1915: load (r1),r1
1916: move r1,r2
1917: add r20,r2 ;(r)
1918: load (r0),r30 ; FUCKING dsp!
1919: or r30,r30 ; FUCKING dsp!
1920: store r2,(r0)
1921: movei #_testbbox+4,r0
1922: sub r20,r1 ;(r)
1923: load (r0),r30 ; FUCKING dsp!
1924: or r30,r30 ; FUCKING dsp!
1925: store r1,(r0)
1926:
1927: movei #_testbbox+12,r0
1928: movei #_testx,r1
1929: load (r1),r1
1930: add r20,r1 ;(r)
1931: load (r0),r30 ; FUCKING dsp!
1932: or r30,r30 ; FUCKING dsp!
1933: store r1,(r0)
1934:
1935: movei #_testbbox+8,r0
1936: movei #_testx,r1
1937: load (r1),r1
1938: sub r20,r1 ;(r)
1939: load (r0),r30 ; FUCKING dsp!
1940: or r30,r30 ; FUCKING dsp!
1941: store r1,(r0)
1942:
1943: movei #_testx,r0
1944: load (r0),r0
1945: store r0,(FP) ; arg[]
1946: movei #_testy,r0
1947: load (r0),r0
1948: or r0,scratch ; scoreboard bug
1949: store r0,(FP+1) ; arg[]
1950: movei #_PB_PointInSubsector,r0
1951: store r28,(FP+2) ; push ;(RETURNPOINT)
1952: store r21,(FP+3) ; push ;(xl)
1953: store r20,(FP+4) ; push ;(r)
1954: store r19,(FP+5) ; push ;(yl)
1955: store r18,(FP+6) ; push ;(xh)
1956: store r17,(FP+7) ; push ;(yh)
1957: store r16,(FP+8) ; push ;(bx)
1958: movei #L212,RETURNPOINT
1959: jump T,(r0)
1960: store r15,(FP+9) ; delay slot push ;(by)
1961: L212:
1962: load (FP+3),r21 ; pop ;(xl)
1963: load (FP+4),r20 ; pop ;(r)
1964: load (FP+5),r19 ; pop ;(yl)
1965: load (FP+6),r18 ; pop ;(xh)
1966: load (FP+7),r17 ; pop ;(yh)
1967: load (FP+8),r16 ; pop ;(bx)
1968: load (FP+9),r15 ; pop ;(by)
1969: load (FP+2), RETURNPOINT ; pop
1970: movei #_testsubsec,r0
1971: move r29,r1 ;(RETURNVALUE)
1972: load (r0),r30 ; FUCKING dsp!
1973: or r30,r30 ; FUCKING dsp!
1974: store r1,(r0)
1975: movei #_testdropoffz,r0
1976: movei #_testsubsec,r1
1977: load (r1),r1
1978: load (r1),r2
1979: load (r2),r2
1980: load (r0),r30 ; FUCKING dsp!
1981: or r30,r30 ; FUCKING dsp!
1982: store r2,(r0)
1983: movei #_testfloorz,r0
1984: load (r0),r30 ; FUCKING dsp!
1985: or r30,r30 ; FUCKING dsp!
1986: store r2,(r0)
1987: movei #_testceilingz,r0
1988: load (r1),r1
1989: addq #4,r1
1990: load (r1),r1
1991: load (r0),r30 ; FUCKING dsp!
1992: or r30,r30 ; FUCKING dsp!
1993: store r1,(r0)
1994: movei #_validcount,r0
1995: load (r0),r1
1996: addq #1,r1
1997: load (r0),r30 ; FUCKING dsp!
1998: or r30,r30 ; FUCKING dsp!
1999: store r1,(r0)
2000: movei #_ceilingline,r0
2001: moveq #0,r1
2002: load (r0),r30 ; FUCKING dsp!
2003: or r30,r30 ; FUCKING dsp!
2004: store r1,(r0)
2005: movei #_hitthing,r0
2006: load (r0),r30 ; FUCKING dsp!
2007: or r30,r30 ; FUCKING dsp!
2008: store r1,(r0)
2009: movei #_testbbox+8,r0
2010: load (r0),r0
2011: movei #_bmaporgx,r1
2012: load (r1),r1
2013: sub r1,r0
2014: movei #2097152,r2
2015: sub r2,r0
2016: moveq #23,r3
2017: sha r3,r0
2018: move r0,r21 ;(xl)
2019: movei #_testbbox+12,r0
2020: load (r0),r0
2021: sub r1,r0
2022: add r2,r0
2023: sha r3,r0
2024: move r0,r18 ;(xh)
2025: movei #_testbbox+4,r0
2026: load (r0),r0
2027: movei #_bmaporgy,r1
2028: load (r1),r1
2029: sub r1,r0
2030: sub r2,r0
2031: sha r3,r0
2032: move r0,r19 ;(yl)
2033: movei #_testbbox,r0
2034: load (r0),r0
2035: sub r1,r0
2036: add r2,r0
2037: sha r3,r0
2038: move r0,r17 ;(yh)
2039: moveq #0,r0
2040: cmp r21,r0 ;(xl)
2041: movei #L192,scratch
2042: jump EQ,(scratch)
2043: nop
2044: jump MI,(scratch)
2045: nop
2046:
2047: moveq #0,r0
2048: move r0,r21 ;(xl)
2049:
2050: L192:
2051:
2052: moveq #0,r0
2053: cmp r19,r0 ;(yl)
2054: movei #L194,scratch
2055: jump EQ,(scratch)
2056: nop
2057: jump MI,(scratch)
2058: nop
2059:
2060: moveq #0,r0
2061: move r0,r19 ;(yl)
2062:
2063: L194:
2064:
2065: movei #_bmapwidth,r0
2066: load (r0),r0
2067: cmp r18,r0 ;(xh)
2068: movei #L196,scratch
2069: jump S_LT,(scratch)
2070: nop
2071:
2072: movei #_bmapwidth,r0
2073: load (r0),r0
2074: subq #1,r0
2075: move r0,r18 ;(xh)
2076:
2077: L196:
2078:
2079: movei #_bmapheight,r0
2080: load (r0),r0
2081: cmp r17,r0 ;(yh)
2082: movei #L198,scratch
2083: jump S_LT,(scratch)
2084: nop
2085:
2086: movei #_bmapheight,r0
2087: load (r0),r0
2088: subq #1,r0
2089: move r0,r17 ;(yh)
2090:
2091: L198:
2092:
2093: move r21,r16 ;(xl)(bx)
2094:
2095: movei #L203,r0
2096: jump T,(r0)
2097: nop
2098:
2099: L200:
2100:
2101: move r19,r15 ;(yl)(by)
2102:
2103: movei #L207,r0
2104: jump T,(r0)
2105: nop
2106:
2107: L204:
2108:
2109: store r16,(FP) ; arg[] ;(bx)
2110: or r15,scratch ; scoreboard bug ;(by)
2111: store r15,(FP+1) ; arg[] ;(by)
2112: movei #_PB_MoveThingsIterator,r0
2113: store r28,(FP+2) ; push ;(RETURNPOINT)
2114: store r21,(FP+3) ; push ;(xl)
2115: store r20,(FP+4) ; push ;(r)
2116: store r19,(FP+5) ; push ;(yl)
2117: store r18,(FP+6) ; push ;(xh)
2118: store r17,(FP+7) ; push ;(yh)
2119: store r16,(FP+8) ; push ;(bx)
2120: movei #L213,RETURNPOINT
2121: jump T,(r0)
2122: store r15,(FP+9) ; delay slot push ;(by)
2123: L213:
2124: load (FP+3),r21 ; pop ;(xl)
2125: load (FP+4),r20 ; pop ;(r)
2126: load (FP+5),r19 ; pop ;(yl)
2127: load (FP+6),r18 ; pop ;(xh)
2128: load (FP+7),r17 ; pop ;(yh)
2129: load (FP+8),r16 ; pop ;(bx)
2130: load (FP+9),r15 ; pop ;(by)
2131: load (FP+2), RETURNPOINT ; pop
2132: moveq #0,r0
2133: cmp r29,r0 ;(RETURNVALUE)
2134: movei #L208,scratch
2135: jump NE,(scratch)
2136: nop
2137:
2138: moveq #0,r0
2139: move r0,RETURNVALUE
2140:
2141: movei #L185,r0
2142: jump T,(r0)
2143: nop
2144:
2145: L208:
2146:
2147: store r16,(FP) ; arg[] ;(bx)
2148: or r15,scratch ; scoreboard bug ;(by)
2149: store r15,(FP+1) ; arg[] ;(by)
2150: movei #_PB_MoveLinesIterator,r0
2151: store r28,(FP+2) ; push ;(RETURNPOINT)
2152: store r21,(FP+3) ; push ;(xl)
2153: store r20,(FP+4) ; push ;(r)
2154: store r19,(FP+5) ; push ;(yl)
2155: store r18,(FP+6) ; push ;(xh)
2156: store r17,(FP+7) ; push ;(yh)
2157: store r16,(FP+8) ; push ;(bx)
2158: movei #L214,RETURNPOINT
2159: jump T,(r0)
2160: store r15,(FP+9) ; delay slot push ;(by)
2161: L214:
2162: load (FP+3),r21 ; pop ;(xl)
2163: load (FP+4),r20 ; pop ;(r)
2164: load (FP+5),r19 ; pop ;(yl)
2165: load (FP+6),r18 ; pop ;(xh)
2166: load (FP+7),r17 ; pop ;(yh)
2167: load (FP+8),r16 ; pop ;(bx)
2168: load (FP+9),r15 ; pop ;(by)
2169: load (FP+2), RETURNPOINT ; pop
2170: moveq #0,r0
2171: cmp r29,r0 ;(RETURNVALUE)
2172: movei #L210,scratch
2173: jump NE,(scratch)
2174: nop
2175:
2176: moveq #0,r0
2177: move r0,RETURNVALUE
2178:
2179: movei #L185,r0
2180: jump T,(r0)
2181: nop
2182:
2183: L210:
2184:
2185: L205:
2186:
2187: move r15,r0 ;(by)
2188: addq #1,r0
2189: move r0,r15 ;(by)
2190:
2191: L207:
2192:
2193: cmp r15,r17 ;(by)(yh)
2194: movei #L204,scratch
2195: jump PL,(scratch)
2196: nop
2197:
2198: L201:
2199:
2200: move r16,r0 ;(bx)
2201: addq #1,r0
2202: move r0,r16 ;(bx)
2203:
2204: L203:
2205:
2206: cmp r16,r18 ;(bx)(xh)
2207: movei #L200,scratch
2208: jump PL,(scratch)
2209: nop
2210:
2211: moveq #1,r0
2212: move r0,RETURNVALUE
2213:
2214: L185:
2215: movei #56,scratch
2216: jump T,(RETURNPOINT)
2217: add scratch,FP ; delay slot
2218:
2219: ;====================
2220: _PB_BoxCrossLine::
2221: ;4 dag registers 5 register variables
2222: ;localoffset:0 regoffset:32 argoffset:32
2223: ;====================
2224: subq #32,FP
2225:
2226: movei #_testbbox+12,r0
2227: load (r0),r0
2228: load (FP+8),r1 ; local ld
2229: movei #44,r2
2230: move r1,r3
2231: add r2,r3
2232: load (r3),r2
2233: cmp r0,r2
2234: movei #L223,scratch
2235: jump PL,(scratch)
2236: nop
2237: movei #_testbbox+8,r0
2238: load (r0),r0
2239: movei #48,r2
2240: move r1,r3
2241: add r2,r3
2242: load (r3),r2
2243: cmp r0,r2
2244: movei #L223,scratch
2245: jump EQ,(scratch)
2246: nop
2247: jump MI,(scratch)
2248: nop
2249: movei #_testbbox,r0
2250: load (r0),r0
2251: movei #40,r2
2252: move r1,r3
2253: add r2,r3
2254: load (r3),r2
2255: cmp r0,r2
2256: movei #L223,scratch
2257: jump PL,(scratch)
2258: nop
2259: movei #_testbbox+4,r0
2260: load (r0),r0
2261: movei #36,r2
2262: add r2,r1
2263: load (r1),r1
2264: cmp r0,r1
2265: movei #L216,scratch
2266: jump S_LT,(scratch)
2267: nop
2268: L223:
2269:
2270: moveq #0,r0
2271: move r0,RETURNVALUE
2272:
2273: movei #L215,r0
2274: jump T,(r0)
2275: nop
2276:
2277: L216:
2278:
2279: load (FP+8),r0 ; local ld
2280: movei #52,r1
2281: add r1,r0
2282: load (r0),r0
2283: moveq #2,r1
2284: cmp r0,r1
2285: movei #L224,scratch
2286: jump NE,(scratch)
2287: nop
2288:
2289: move FP,r0 ; &x1
2290: movei #_testbbox+8,r1
2291: load (r1),r1
2292: load (r0),r30 ; FUCKING dsp!
2293: or r30,r30 ; FUCKING dsp!
2294: store r1,(r0)
2295: move FP,r0
2296: addq #4,r0 ; &x2
2297: movei #_testbbox+12,r1
2298: load (r1),r1
2299: load (r0),r30 ; FUCKING dsp!
2300: or r30,r30 ; FUCKING dsp!
2301: store r1,(r0)
2302:
2303: movei #L225,r0
2304: jump T,(r0)
2305: nop
2306:
2307: L224:
2308:
2309: move FP,r0 ; &x1
2310: movei #_testbbox+12,r1
2311: load (r1),r1
2312: load (r0),r30 ; FUCKING dsp!
2313: or r30,r30 ; FUCKING dsp!
2314: store r1,(r0)
2315: move FP,r0
2316: addq #4,r0 ; &x2
2317: movei #_testbbox+8,r1
2318: load (r1),r1
2319: load (r0),r30 ; FUCKING dsp!
2320: or r30,r30 ; FUCKING dsp!
2321: store r1,(r0)
2322:
2323: L225:
2324:
2325: load (FP+8),r0 ; local ld
2326: load (r0),r1
2327: load (r1),r1
2328: move r1,r15 ;(lx)
2329: load (r0),r1
2330: addq #4,r1
2331: load (r1),r1
2332: move r1,r16 ;(ly)
2333: move r0,r1
2334: addq #8,r1
2335: load (r1),r1
2336: moveq #16,r2
2337: sha r2,r1
2338: move r1,r17 ;(ldx)
2339: addq #12,r0
2340: load (r0),r0
2341: sha r2,r0
2342: move r0,r18 ;(ldy)
2343: move FP,r0
2344: addq #8,r0 ; &dx1
2345: load (FP),r1 ; local x1
2346: sub r15,r1 ;(lx)
2347: sha r2,r1
2348: load (r0),r30 ; FUCKING dsp!
2349: or r30,r30 ; FUCKING dsp!
2350: store r1,(r0)
2351: move FP,r0
2352: addq #12,r0 ; &dy1
2353: movei #_testbbox,r1
2354: load (r1),r1
2355: sub r16,r1 ;(ly)
2356: sha r2,r1
2357: load (r0),r30 ; FUCKING dsp!
2358: or r30,r30 ; FUCKING dsp!
2359: store r1,(r0)
2360: move FP,r0
2361: addq #16,r0 ; &dx2
2362: load (FP+1),r1 ; local x2
2363: sub r15,r1 ;(lx)
2364: sha r2,r1
2365: load (r0),r30 ; FUCKING dsp!
2366: or r30,r30 ; FUCKING dsp!
2367: store r1,(r0)
2368: move FP,r0
2369: addq #20,r0 ; &dy2
2370: movei #_testbbox+4,r1
2371: load (r1),r1
2372: sub r16,r1 ;(ly)
2373: sha r2,r1
2374: load (r0),r30 ; FUCKING dsp!
2375: or r30,r30 ; FUCKING dsp!
2376: store r1,(r0)
2377: load (FP+2),r0 ; local dx1
2378: move r18,MATH_A ;(ldy)
2379: movei #L238,MATH_RTS
2380: movei #GPU_IMUL,scratch
2381: jump T,(scratch)
2382: move r0,MATH_B ; delay slot
2383: L238:
2384: move MATH_C,r1
2385: load (FP+3),r0 ; local dy1
2386: move r0,MATH_A
2387: movei #L239,MATH_RTS
2388: movei #GPU_IMUL,scratch
2389: jump T,(scratch)
2390: move r17,MATH_B ; delay slot ;(ldx)
2391: L239:
2392: move MATH_C,r0
2393: cmp r1,r0
2394: movei #L232,scratch
2395: jump EQ,(scratch)
2396: nop
2397: jump MI,(scratch)
2398: nop
2399: moveq #1,r0
2400: move r0,r19 ;(231)
2401: movei #L233,r0
2402: jump T,(r0)
2403: nop
2404: L232:
2405: moveq #0,r0
2406: move r0,r19 ;(231)
2407: L233:
2408: move FP,r0
2409: addq #24,r0 ; &side1
2410: load (r0),r30 ; FUCKING dsp!
2411: or r30,r30 ; FUCKING dsp!
2412: store r19,(r0) ;(231)
2413: load (FP+4),r0 ; local dx2
2414: move r18,MATH_A ;(ldy)
2415: movei #L240,MATH_RTS
2416: movei #GPU_IMUL,scratch
2417: jump T,(scratch)
2418: move r0,MATH_B ; delay slot
2419: L240:
2420: move MATH_C,r1
2421: load (FP+5),r0 ; local dy2
2422: move r0,MATH_A
2423: movei #L241,MATH_RTS
2424: movei #GPU_IMUL,scratch
2425: jump T,(scratch)
2426: move r17,MATH_B ; delay slot ;(ldx)
2427: L241:
2428: move MATH_C,r0
2429: cmp r1,r0
2430: movei #L234,scratch
2431: jump EQ,(scratch)
2432: nop
2433: jump MI,(scratch)
2434: nop
2435: moveq #1,r0
2436: move r0,r19 ;(231)
2437: movei #L235,r0
2438: jump T,(r0)
2439: nop
2440: L234:
2441: moveq #0,r0
2442: move r0,r19 ;(231)
2443: L235:
2444: move FP,r0
2445: addq #28,r0 ; &side2
2446: load (r0),r30 ; FUCKING dsp!
2447: or r30,r30 ; FUCKING dsp!
2448: store r19,(r0) ;(231)
2449: load (FP+6),r0 ; local side1
2450: load (FP+7),r1 ; local side2
2451: cmp r0,r1
2452: movei #L236,scratch
2453: jump EQ,(scratch)
2454: nop
2455: moveq #1,r0
2456: move r0,r19 ;(231)
2457: movei #L237,r0
2458: jump T,(r0)
2459: nop
2460: L236:
2461: moveq #0,r0
2462: move r0,r19 ;(231)
2463: L237:
2464: move r19,RETURNVALUE ;(231)
2465:
2466: L215:
2467: jump T,(RETURNPOINT)
2468: addq #32,FP ; delay slot
2469:
2470: ;====================
2471: _PB_CheckLine::
2472: ;3 dag registers 2 register variables
2473: ;localoffset:0 regoffset:12 argoffset:12
2474: ;====================
2475: subq #12,FP
2476:
2477: load (FP+3),r0 ; local ld
2478: movei #60,r1
2479: add r1,r0
2480: load (r0),r0
2481: moveq #0,r1
2482: cmp r0,r1
2483: movei #L243,scratch
2484: jump NE,(scratch)
2485: nop
2486:
2487: moveq #0,r0
2488: move r0,RETURNVALUE
2489:
2490: movei #L242,r0
2491: jump T,(r0)
2492: nop
2493:
2494: L243:
2495:
2496: movei #_testflags,r0
2497: load (r0),r0
2498: movei #65536,r1
2499: and r1,r0
2500: moveq #0,r1
2501: cmp r0,r1
2502: movei #L245,scratch
2503: jump NE,(scratch)
2504: nop
2505: load (FP+3),r0 ; local ld
2506: addq #16,r0
2507: load (r0),r0
2508: moveq #3,r2
2509: and r2,r0
2510: cmp r0,r1
2511: movei #L245,scratch
2512: jump EQ,(scratch)
2513: nop
2514:
2515: moveq #0,r0
2516: move r0,RETURNVALUE
2517:
2518: movei #L242,r0
2519: jump T,(r0)
2520: nop
2521:
2522: L245:
2523:
2524: load (FP+3),r0 ; local ld
2525: movei #56,r1
2526: move r0,r2
2527: add r1,r2
2528: load (r2),r1
2529: move r1,r15 ;(front)
2530: movei #60,r1
2531: add r1,r0
2532: load (r0),r0
2533: move r0,r16 ;(back)
2534: moveq #4,r0
2535: move r15,r1 ;(front)
2536: add r0,r1
2537: load (r1),r1
2538: move r16,r2 ;(back)
2539: add r0,r2
2540: load (r2),r0
2541: cmp r1,r0
2542: movei #L247,scratch
2543: jump EQ,(scratch)
2544: nop
2545: jump MI,(scratch)
2546: nop
2547:
2548: move FP,r0 ; &opentop
2549: move r15,r1 ;(front)
2550: addq #4,r1
2551: load (r1),r1
2552: load (r0),r30 ; FUCKING dsp!
2553: or r30,r30 ; FUCKING dsp!
2554: store r1,(r0)
2555:
2556: movei #L248,r0
2557: jump T,(r0)
2558: nop
2559:
2560: L247:
2561:
2562: move FP,r0 ; &opentop
2563: move r16,r1 ;(back)
2564: addq #4,r1
2565: load (r1),r1
2566: load (r0),r30 ; FUCKING dsp!
2567: or r30,r30 ; FUCKING dsp!
2568: store r1,(r0)
2569:
2570: L248:
2571:
2572: load (r15),r0 ;(front)
2573: load (r16),r1 ;(back)
2574: cmp r0,r1
2575: movei #L249,scratch
2576: jump PL,(scratch)
2577: nop
2578:
2579: move FP,r0
2580: addq #4,r0 ; &openbottom
2581: load (r15),r1 ;(front)
2582: load (r0),r30 ; FUCKING dsp!
2583: or r30,r30 ; FUCKING dsp!
2584: store r1,(r0)
2585: move FP,r0
2586: addq #8,r0 ; &lowfloor
2587: load (r16),r1 ;(back)
2588: load (r0),r30 ; FUCKING dsp!
2589: or r30,r30 ; FUCKING dsp!
2590: store r1,(r0)
2591:
2592: movei #L250,r0
2593: jump T,(r0)
2594: nop
2595:
2596: L249:
2597:
2598: move FP,r0
2599: addq #4,r0 ; &openbottom
2600: load (r16),r1 ;(back)
2601: load (r0),r30 ; FUCKING dsp!
2602: or r30,r30 ; FUCKING dsp!
2603: store r1,(r0)
2604: move FP,r0
2605: addq #8,r0 ; &lowfloor
2606: load (r15),r1 ;(front)
2607: load (r0),r30 ; FUCKING dsp!
2608: or r30,r30 ; FUCKING dsp!
2609: store r1,(r0)
2610:
2611: L250:
2612:
2613: load (FP),r0 ; local opentop
2614: movei #_testceilingz,r1
2615: load (r1),r1
2616: cmp r0,r1
2617: movei #L251,scratch
2618: jump EQ,(scratch)
2619: nop
2620: jump MI,(scratch)
2621: nop
2622:
2623: movei #_testceilingz,r0
2624: load (FP),r1 ; local opentop
2625: load (r0),r30 ; FUCKING dsp!
2626: or r30,r30 ; FUCKING dsp!
2627: store r1,(r0)
2628: movei #_ceilingline,r0
2629: load (FP+3),r1 ; local ld
2630: load (r0),r30 ; FUCKING dsp!
2631: or r30,r30 ; FUCKING dsp!
2632: store r1,(r0)
2633:
2634: L251:
2635:
2636: load (FP+1),r0 ; local openbottom
2637: movei #_testfloorz,r1
2638: load (r1),r1
2639: cmp r0,r1
2640: movei #L253,scratch
2641: jump PL,(scratch)
2642: nop
2643:
2644: movei #_testfloorz,r0
2645: load (FP+1),r1 ; local openbottom
2646: load (r0),r30 ; FUCKING dsp!
2647: or r30,r30 ; FUCKING dsp!
2648: store r1,(r0)
2649:
2650: L253:
2651:
2652: load (FP+2),r0 ; local lowfloor
2653: movei #_testdropoffz,r1
2654: load (r1),r1
2655: cmp r0,r1
2656: movei #L255,scratch
2657: jump EQ,(scratch)
2658: nop
2659: jump MI,(scratch)
2660: nop
2661:
2662: movei #_testdropoffz,r0
2663: load (FP+2),r1 ; local lowfloor
2664: load (r0),r30 ; FUCKING dsp!
2665: or r30,r30 ; FUCKING dsp!
2666: store r1,(r0)
2667:
2668: L255:
2669:
2670: moveq #1,r0
2671: move r0,RETURNVALUE
2672:
2673: L242:
2674: jump T,(RETURNPOINT)
2675: addq #12,FP ; delay slot
2676:
2677: ;====================
2678: _PB_CheckThing::
2679: ;4 dag registers 4 register variables
2680: ;localoffset:0 regoffset:0 argoffset:0
2681: ;====================
2682:
2683: load (FP),r0 ; local thing
2684: movei #100,r1
2685: add r1,r0
2686: load (r0),r0
2687: moveq #2,r1
2688: and r1,r0
2689: moveq #0,r1
2690: cmp r0,r1
2691: movei #L258,scratch
2692: jump NE,(scratch)
2693: nop
2694:
2695: moveq #1,r0
2696: move r0,RETURNVALUE
2697:
2698: movei #L257,r0
2699: jump T,(r0)
2700: nop
2701:
2702: L258:
2703:
2704: load (FP),r0 ; local thing
2705: movei #64,r1
2706: move r0,r2
2707: add r1,r2
2708: load (r2),r2
2709: movei #_basething,r3
2710: load (r3),r3
2711: add r1,r3
2712: load (r3),r1
2713: add r1,r2
2714: move r2,r16 ;(blockdist)
2715: addq #12,r0
2716: load (r0),r0
2717: movei #_testx,r1
2718: load (r1),r1
2719: sub r1,r0
2720: move r0,r15 ;(delta)
2721: moveq #0,r0
2722: cmp r15,r0 ;(delta)
2723: movei #L260,scratch
2724: jump EQ,(scratch)
2725: nop
2726: jump MI,(scratch)
2727: nop
2728:
2729: move r15,r0 ;(delta)
2730: neg r0
2731: move r0,r15 ;(delta)
2732:
2733: L260:
2734:
2735: cmp r15,r16 ;(delta)(blockdist)
2736: movei #L262,scratch
2737: jump S_LT,(scratch)
2738: nop
2739:
2740: moveq #1,r0
2741: move r0,RETURNVALUE
2742:
2743: movei #L257,r0
2744: jump T,(r0)
2745: nop
2746:
2747: L262:
2748:
2749: load (FP),r0 ; local thing
2750: addq #16,r0
2751: load (r0),r0
2752: movei #_testy,r1
2753: load (r1),r1
2754: sub r1,r0
2755: move r0,r15 ;(delta)
2756: moveq #0,r0
2757: cmp r15,r0 ;(delta)
2758: movei #L264,scratch
2759: jump EQ,(scratch)
2760: nop
2761: jump MI,(scratch)
2762: nop
2763:
2764: move r15,r0 ;(delta)
2765: neg r0
2766: move r0,r15 ;(delta)
2767:
2768: L264:
2769:
2770: cmp r15,r16 ;(delta)(blockdist)
2771: movei #L266,scratch
2772: jump S_LT,(scratch)
2773: nop
2774:
2775: moveq #1,r0
2776: move r0,RETURNVALUE
2777:
2778: movei #L257,r0
2779: jump T,(r0)
2780: nop
2781:
2782: L266:
2783:
2784: load (FP),r0 ; local thing
2785: movei #_basething,r1
2786: load (r1),r1
2787: cmp r0,r1
2788: movei #L268,scratch
2789: jump NE,(scratch)
2790: nop
2791:
2792: moveq #1,r0
2793: move r0,RETURNVALUE
2794:
2795: movei #L257,r0
2796: jump T,(r0)
2797: nop
2798:
2799: L268:
2800:
2801: movei #_testflags,r0
2802: load (r0),r0
2803: movei #16777216,r1
2804: and r1,r0
2805: moveq #0,r1
2806: cmp r0,r1
2807: movei #L270,scratch
2808: jump EQ,(scratch)
2809: nop
2810:
2811: movei #_hitthing,r0
2812: load (FP),r1 ; local thing
2813: load (r0),r30 ; FUCKING dsp!
2814: or r30,r30 ; FUCKING dsp!
2815: store r1,(r0)
2816: moveq #0,r0
2817: move r0,RETURNVALUE
2818:
2819: movei #L257,r0
2820: jump T,(r0)
2821: nop
2822:
2823: L270:
2824:
2825: movei #_testflags,r0
2826: load (r0),r0
2827: movei #65536,r1
2828: and r1,r0
2829: moveq #0,r1
2830: cmp r0,r1
2831: movei #L272,scratch
2832: jump EQ,(scratch)
2833: nop
2834:
2835: movei #_basething,r0
2836: load (r0),r0
2837: moveq #20,r1
2838: add r1,r0
2839: load (r0),r0
2840: load (FP),r2 ; local thing
2841: move r2,r3
2842: add r1,r3
2843: load (r3),r1
2844: movei #68,r3
2845: add r3,r2
2846: load (r2),r2
2847: add r2,r1
2848: cmp r0,r1
2849: movei #L274,scratch
2850: jump PL,(scratch)
2851: nop
2852:
2853: moveq #1,r0
2854: move r0,RETURNVALUE
2855:
2856: movei #L257,r0
2857: jump T,(r0)
2858: nop
2859:
2860: L274:
2861:
2862: movei #_basething,r0
2863: load (r0),r0
2864: moveq #20,r1
2865: move r0,r2
2866: add r1,r2
2867: load (r2),r2
2868: movei #68,r3
2869: add r3,r0
2870: load (r0),r0
2871: add r0,r2
2872: load (FP),r0 ; local thing
2873: add r1,r0
2874: load (r0),r0
2875: cmp r2,r0
2876: movei #L276,scratch
2877: jump EQ,(scratch)
2878: nop
2879: jump MI,(scratch)
2880: nop
2881:
2882: moveq #1,r0
2883: move r0,RETURNVALUE
2884:
2885: movei #L257,r0
2886: jump T,(r0)
2887: nop
2888:
2889: L276:
2890:
2891: movei #_basething,r0
2892: load (r0),r0
2893: movei #116,r1
2894: add r1,r0
2895: load (r0),r0
2896: movei #84,r1
2897: add r1,r0
2898: load (r0),r0
2899: load (FP),r2 ; local thing
2900: add r1,r2
2901: load (r2),r1
2902: cmp r0,r1
2903: movei #L278,scratch
2904: jump NE,(scratch)
2905: nop
2906:
2907: load (FP),r0 ; local thing
2908: movei #_basething,r1
2909: load (r1),r1
2910: movei #116,r2
2911: add r2,r1
2912: load (r1),r1
2913: cmp r0,r1
2914: movei #L280,scratch
2915: jump NE,(scratch)
2916: nop
2917:
2918: moveq #1,r0
2919: move r0,RETURNVALUE
2920:
2921: movei #L257,r0
2922: jump T,(r0)
2923: nop
2924:
2925: L280:
2926:
2927: load (FP),r0 ; local thing
2928: movei #84,r1
2929: add r1,r0
2930: load (r0),r0
2931: moveq #0,r1
2932: cmp r0,r1
2933: movei #L282,scratch
2934: jump EQ,(scratch)
2935: nop
2936:
2937: moveq #0,r0
2938: move r0,RETURNVALUE
2939:
2940: movei #L257,r0
2941: jump T,(r0)
2942: nop
2943:
2944: L282:
2945:
2946: L278:
2947:
2948: load (FP),r0 ; local thing
2949: movei #100,r1
2950: add r1,r0
2951: load (r0),r0
2952: moveq #4,r1
2953: and r1,r0
2954: moveq #0,r1
2955: cmp r0,r1
2956: movei #L284,scratch
2957: jump NE,(scratch)
2958: nop
2959:
2960: load (FP),r0 ; local thing
2961: movei #100,r1
2962: add r1,r0
2963: load (r0),r0
2964: moveq #2,r1
2965: and r1,r0
2966: moveq #0,r1
2967: cmp r0,r1
2968: movei #L287,scratch
2969: jump NE,(scratch)
2970: nop
2971: moveq #1,r0
2972: move r0,r17 ;(286)
2973: movei #L288,r0
2974: jump T,(r0)
2975: nop
2976: L287:
2977: moveq #0,r0
2978: move r0,r17 ;(286)
2979: L288:
2980: move r17,RETURNVALUE ;(286)
2981:
2982: movei #L257,r0
2983: jump T,(r0)
2984: nop
2985:
2986: L284:
2987:
2988: movei #_hitthing,r0
2989: load (FP),r1 ; local thing
2990: load (r0),r30 ; FUCKING dsp!
2991: or r30,r30 ; FUCKING dsp!
2992: store r1,(r0)
2993: moveq #0,r0
2994: move r0,RETURNVALUE
2995:
2996: movei #L257,r0
2997: jump T,(r0)
2998: nop
2999:
3000: L272:
3001:
3002: load (FP),r0 ; local thing
3003: movei #100,r1
3004: add r1,r0
3005: load (r0),r0
3006: moveq #2,r1
3007: and r1,r0
3008: moveq #0,r1
3009: cmp r0,r1
3010: movei #L290,scratch
3011: jump NE,(scratch)
3012: nop
3013: moveq #1,r0
3014: move r0,r18 ;(289)
3015: movei #L291,r0
3016: jump T,(r0)
3017: nop
3018: L290:
3019: moveq #0,r0
3020: move r0,r18 ;(289)
3021: L291:
3022: move r18,RETURNVALUE ;(289)
3023:
3024: L257:
3025: jump T,(RETURNPOINT)
3026: nop ; delay slot
3027:
3028: ;====================
3029: _PB_MoveLinesIterator::
3030: ;3 dag registers 3 register variables
3031: ;localoffset:4 regoffset:4 argoffset:32
3032: ;====================
3033: subq #32,FP
3034:
3035: load (FP+9),r0 ; local y
3036: movei #_bmapwidth,r1
3037: load (r1),r1
3038: move r0,MATH_A
3039: movei #L303,MATH_RTS
3040: movei #GPU_IMUL,scratch
3041: jump T,(scratch)
3042: move r1,MATH_B ; delay slot
3043: L303:
3044: move MATH_C,r0
3045: load (FP+8),r1 ; local x
3046: add r1,r0
3047: move r0,r17 ;(offset)
3048: movei #-1,r0
3049: move r17,r1 ;(offset)
3050: sha r0,r1
3051: movei #_blockmap,r2
3052: load (r2),r2
3053: add r2,r1
3054: loadw (r1),r1
3055: movei #$ffff8000,scratch
3056: add scratch,r1
3057: xor scratch,r1
3058: move r1,r17 ;(offset)
3059: move r17,r1 ;(offset)
3060: sha r0,r1
3061: movei #_blockmaplump,r0
3062: load (r0),r0
3063: add r0,r1
3064: move r1,r16 ;(list)
3065:
3066: movei #L296,r0
3067: jump T,(r0)
3068: nop
3069:
3070: L293:
3071:
3072: movei #76,r0
3073: loadw (r16),r1 ;(list)
3074: movei #$ffff8000,scratch
3075: add scratch,r1
3076: xor scratch,r1
3077: move r0,MATH_A
3078: movei #L304,MATH_RTS
3079: movei #GPU_IMUL,scratch
3080: jump T,(scratch)
3081: move r1,MATH_B ; delay slot
3082: L304:
3083: move MATH_C,r0
3084: movei #_lines,r1
3085: load (r1),r1
3086: add r1,r0
3087: move r0,r15 ;(ld)
3088: movei #64,r0
3089: move r15,r1 ;(ld)
3090: add r0,r1
3091: load (r1),r0
3092: movei #_validcount,r1
3093: load (r1),r1
3094: cmp r0,r1
3095: movei #L297,scratch
3096: jump NE,(scratch)
3097: nop
3098:
3099: movei #L294,r0
3100: jump T,(r0)
3101: nop
3102:
3103: L297:
3104:
3105: movei #64,r0
3106: move r15,r1 ;(ld)
3107: add r0,r1
3108: movei #_validcount,r0
3109: load (r0),r0
3110: load (r1),r30 ; FUCKING dsp!
3111: or r30,r30 ; FUCKING dsp!
3112: store r0,(r1)
3113:
3114: store r15,(FP) ; arg[] ;(ld)
3115: movei #_PB_BoxCrossLine,r0
3116: store r28,(FP+1) ; push ;(RETURNPOINT)
3117: store r17,(FP+2) ; push ;(offset)
3118: store r16,(FP+3) ; push ;(list)
3119: movei #L305,RETURNPOINT
3120: jump T,(r0)
3121: store r15,(FP+4) ; delay slot push ;(ld)
3122: L305:
3123: load (FP+2),r17 ; pop ;(offset)
3124: load (FP+3),r16 ; pop ;(list)
3125: load (FP+4),r15 ; pop ;(ld)
3126: load (FP+1), RETURNPOINT ; pop
3127: moveq #0,r0
3128: cmp r29,r0 ;(RETURNVALUE)
3129: movei #L299,scratch
3130: jump EQ,(scratch)
3131: nop
3132:
3133: store r15,(FP) ; arg[] ;(ld)
3134: movei #_PB_CheckLine,r0
3135: store r28,(FP+1) ; push ;(RETURNPOINT)
3136: store r17,(FP+2) ; push ;(offset)
3137: store r16,(FP+3) ; push ;(list)
3138: movei #L306,RETURNPOINT
3139: jump T,(r0)
3140: store r15,(FP+4) ; delay slot push ;(ld)
3141: L306:
3142: load (FP+2),r17 ; pop ;(offset)
3143: load (FP+3),r16 ; pop ;(list)
3144: load (FP+4),r15 ; pop ;(ld)
3145: load (FP+1), RETURNPOINT ; pop
3146: moveq #0,r0
3147: cmp r29,r0 ;(RETURNVALUE)
3148: movei #L301,scratch
3149: jump NE,(scratch)
3150: nop
3151:
3152: moveq #0,r0
3153: move r0,RETURNVALUE
3154:
3155: movei #L292,r0
3156: jump T,(r0)
3157: nop
3158:
3159: L301:
3160:
3161: L299:
3162:
3163: L294:
3164:
3165: move r16,r0 ;(list)
3166: addq #2,r0
3167: move r0,r16 ;(list)
3168:
3169: L296:
3170:
3171: loadw (r16),r0 ;(list)
3172: movei #$ffff8000,scratch
3173: add scratch,r0
3174: xor scratch,r0
3175: movei #-1,r1
3176: cmp r0,r1
3177: movei #L293,scratch
3178: jump NE,(scratch)
3179: nop
3180:
3181: moveq #1,r0
3182: move r0,RETURNVALUE
3183:
3184: L292:
3185: jump T,(RETURNPOINT)
3186: addq #32,FP ; delay slot
3187:
3188: ;====================
3189: _PB_MoveThingsIterator::
3190: ;2 dag registers 1 register variables
3191: ;localoffset:4 regoffset:4 argoffset:20
3192: ;====================
3193: subq #20,FP
3194:
3195: load (FP+6),r0 ; local y
3196: movei #_bmapwidth,r1
3197: load (r1),r1
3198: move r0,MATH_A
3199: movei #L314,MATH_RTS
3200: movei #GPU_IMUL,scratch
3201: jump T,(scratch)
3202: move r1,MATH_B ; delay slot
3203: L314:
3204: move MATH_C,r0
3205: load (FP+5),r1 ; local x
3206: add r1,r0
3207: shlq #2,r0
3208: movei #_blocklinks,r1
3209: load (r1),r1
3210: add r1,r0
3211: load (r0),r0
3212: move r0,r15 ;(mobj)
3213:
3214: movei #L311,r0
3215: jump T,(r0)
3216: nop
3217:
3218: L308:
3219:
3220: store r15,(FP) ; arg[] ;(mobj)
3221: movei #_PB_CheckThing,r0
3222: store r28,(FP+1) ; push ;(RETURNPOINT)
3223: movei #L315,RETURNPOINT
3224: jump T,(r0)
3225: store r15,(FP+2) ; delay slot push ;(mobj)
3226: L315:
3227: load (FP+2),r15 ; pop ;(mobj)
3228: load (FP+1), RETURNPOINT ; pop
3229: moveq #0,r0
3230: cmp r29,r0 ;(RETURNVALUE)
3231: movei #L312,scratch
3232: jump NE,(scratch)
3233: nop
3234:
3235: moveq #0,r0
3236: move r0,RETURNVALUE
3237:
3238: movei #L307,r0
3239: jump T,(r0)
3240: nop
3241:
3242: L312:
3243:
3244: L309:
3245:
3246: movei #44,r0
3247: move r15,r1 ;(mobj)
3248: add r0,r1
3249: load (r1),r0
3250: move r0,r15 ;(mobj)
3251:
3252: L311:
3253:
3254: move r15,r0 ;(mobj)
3255: moveq #0,r1
3256: cmp r0,r1
3257: movei #L308,scratch
3258: jump NE,(scratch)
3259: nop
3260:
3261: moveq #1,r0
3262: move r0,RETURNVALUE
3263:
3264: L307:
3265: jump T,(RETURNPOINT)
3266: addq #20,FP ; delay slot
3267:
3268: ;=======================
3269:
3270: .extern _PB_UnsetThingPosition
3271: .extern _PB_PointInSubsector
3272: .long
3273: _testflags::
3274: .dc.l 0
3275: .long
3276: _testbbox::
3277: .dc.l 0
3278: .dc.l 0
3279: .dc.l 0
3280: .dc.l 0
3281: .long
3282: _hitthing::
3283: .dc.l 0
3284: .long
3285: _ceilingline::
3286: .dc.l 0
3287: .long
3288: _testsubsec::
3289: .dc.l 0
3290: .long
3291: _testdropoffz::
3292: .dc.l 0
3293: .long
3294: _testceilingz::
3295: .dc.l 0
3296: .long
3297: _testfloorz::
3298: .dc.l 0
3299: .long
3300: _testy::
3301: .dc.l 0
3302: .long
3303: _testx::
3304: .dc.l 0
3305: .long
3306: _basething::
3307: .dc.l 0
3308: .extern _blocklinks
3309: .extern _bmaporgy
3310: .extern _bmaporgx
3311: .extern _bmapheight
3312: .extern _bmapwidth
3313: .extern _blockmap
3314: .extern _blockmaplump
3315: .extern _P_ExplodeMissile
3316: .extern _L_MissileHit
3317: .extern _L_SkullBash
3318: .extern _P_RemoveMobj
3319: .extern _activemobjs
3320: .extern _mobjhead
3321: .extern _validcount
3322: .extern _lines
3323: .extern _states
3324:
3325: .phrase
3326: .68000
3327: codeend:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.