]> github.com/historicalsource and other repositories - mspacman-7800.git/blob - UTIL.S
Initial import.
[mspacman-7800.git] / UTIL.S
1 \r
2 *  UTIL.S         GENERAL UTILITY ROUTINES\r
3 \r
4 \r
5 *  MOVE A CREATURE HORIZONTALLY\r
6 *  INPUT: A - CURRENT HORIZONTAL POS, Y - DIRECTION CREATURE FACING\r
7 *  OUTPUT:A - NEW HORIZONTAL POS\r
8 HPOSADJ   CLC\r
9           ADC     PHPOSTAB,Y\r
10           RTS\r
11 \r
12 *  MOVE A CREATURE VERTICALLY\r
13 *  INPUT: A - CURRENT VERTICAL POS, Y - DIRECTION CREATURE FACING\r
14 *         X - CURRENT VERTICAL OFFSET\r
15 *  OUTPUT:A - NEW VERTICAL POS\r
16 VPOSADJ   CPY     #DUP\r
17           BEQ     VPAUP\r
18           CPY     #DDOWN\r
19           BNE     VPAOUT\r
20           CLC                            ;MOVE IT DOWN\r
21           ADC     DNADJUST,X\r
22           RTS\r
23 VPAUP     SEC                            ;MOVE IT UP\r
24           SBC     UPADJUST,X\r
25 VPAOUT    RTS\r
26 \r
27 \r
28 *  BODY OF MACRO PFILL\r
29 PFILLIT   LDY     #0\r
30 PFLOOP    STA     (TEMP0),Y\r
31           DEY\r
32           BNE     PFLOOP\r
33           INC     TEMP1\r
34           DEX\r
35           BNE     PFLOOP\r
36           RTS\r
37 \r
38 *  BODY OF MACRO PLOAD\r
39 PLOADIT   LDY     #0\r
40 PLLOOP    LDA     (TEMP2),Y\r
41           STA     (TEMP0),Y\r
42           DEY\r
43           BNE     PLLOOP\r
44           INC     TEMP1\r
45           INC     TEMP3\r
46           DEX\r
47           BNE     PLLOOP\r
48           RTS\r
49 \r
50 *  CONVERT HORIZONTAL BIT COUNT TO COLUMN\r
51 HTOC      SEC\r
52           SBC     #LEFTSIDE              ;SHIFT ORIGIN\r
53           LSR     A\r
54           LSR     A                      ;AND SCALE\r
55           RTS\r
56 \r
57 *  CONVERT COLUMN TO HORIZONTAL BIT COUNT\r
58 CTOH      ASL     A                      ;SCALE\r
59           ASL     A\r
60           CLC\r
61           ADC     #LEFTSIDE              ;SHIFT ORIGIN\r
62           RTS\r
63 \r
64 *  CONVERT VERTICAL BIT TO ZONE AND OFFSET\r
65 *  OUTPUT:  ZONE IN Y, OFFSET IN A\r
66 *  USES Y!\r
67 VTOZO     LDY     #$00                   ;BRUTE FORCE - SLOW\r
68 VTZAGAIN  CMP     #$06                   ;SEE IF ANYTHING TO DO\r
69           BCS     VTZDOIT\r
70           RTS\r
71 VTZDOIT   INY                            ;INCREMENT ZONE\r
72           SEC                            ;SUBTRACT 6\r
73           SBC     #$06\r
74           JMP     VTZAGAIN\r
75 \r
76 *  CONVERT ZONE TO VERTICAL BIT\r
77 *  USES Y!\r
78 ZTOV      TAY\r
79           LDA     #$00\r
80 ZVLOOP    CPY     #$00\r
81           BEQ     ZVOUT\r
82           CLC\r
83           ADC     #$06\r
84           DEY\r
85           JMP     ZVLOOP\r
86 ZVOUT     RTS\r
87 \r
88 \r
89 *  TABLES FOR EASY MOVEMENT\r
90 PHPOSTAB  DB      $01,$00,$FF,$00\r
91 DNADJUST  DB      $02,$01,$01,$02,$01,$01\r
92 UPADJUST  DB      $01,$01,$02,$01,$01,$02\r