Oops.
[AROS-Contrib.git] / Games / Doom / amiga_sega.s
blob8d9827bd3d4dfb2fb0baafc5d25afa99334e0a73
2 .extern Sega6
3 .extern Sega3
5 # returns - xxSAxxxxxxCBMXYZxxSAxxDUxxCBRLDU
7 .align 4
9 Sega6: mflr r8
10 lis r7,0x00DF
11 lis r6,0x00BF
12 ori r7,r7,0xF000
13 ori r6,r6,0xE001
15 bl GetSega # xxSAxxDUxxCBRLDU
16 rlwinm r3,r3,16,0,15 # save
17 bl GetSega # xxSAxxDUxxCBRLDU
18 bl GetSega # xxSAxxxxxxCBRLDU
19 bl GetSega # xxSAxxxxxxCBMXYZ
20 rlwinm r3,r3,16,0,31 # xxSAxxxxxxCBMXYZxxSAxxDUxxCBRLDU
22 li r4,-0x0100 # SEL=1
23 mtlr r8
24 sth r4,0x34(r7)
25 blr
27 # returns - 0000000000000000xxSAxxDUxxCBRLDU
29 .align 4
31 Sega3: mflr r8
32 lis r7,0x00DF
33 lis r6,0x00BF
34 ori r7,r7,0xF000
35 ori r6,r6,0xE001
37 li r3,0
38 bl GetSega # xxSAxxDUxxCBRLDU
40 li r4,-0x0100 # SEL=1
41 mtlr r8
42 sth r4,0x34(r7)
43 blr
45 # read Sega controller
47 .align 4
49 GetSega: rlwinm r3,r3,0,0,15
50 li r4,-0x00FF # SEL=1, dump caps
51 sth r4,0x34(r7)
53 lbz r4,0(r6)
54 lbz r4,0(r6)
55 lbz r4,0(r6)
56 lbz r4,0(r6)
57 lbz r4,0(r6)
58 lbz r4,0(r6)
59 lbz r4,0(r6)
60 lbz r4,0(r6)
61 lbz r4,0(r6)
62 lbz r4,0(r6)
63 lbz r4,0(r6)
64 lbz r4,0(r6)
65 lbz r4,0(r6)
66 lbz r4,0(r6)
67 lbz r4,0(r6)
68 lbz r4,0(r6)
69 lbz r4,0(r6)
70 lbz r4,0(r6)
71 lbz r4,0(r6)
72 lbz r4,0(r6)
73 lbz r4,0(r6)
74 lbz r4,0(r6)
75 lbz r4,0(r6)
76 lbz r4,0(r6)
78 rlwinm. r4,r4,0,24,24
79 bne shl1
80 ori r3,r3,0x10 # B/0
82 shl1: lhz r4,0x16(r7)
83 rlwinm. r4,r4,0,17,17
84 bne shl2
85 ori r3,r3,0x20 # C/0
87 shl2: lhz r4,0xC(r7)
88 rlwinm. r5,r4,0,30,30
89 beq shl3
90 ori r3,r3,8 # R/M
92 shl3: rlwinm. r5,r4,0,22,22
93 beq shl4
94 ori r3,r3,4 # L/X
96 shl4: rlwinm r5,r4,1,0,31
97 xor r4,r4,r5
98 rlwinm. r5,r4,0,30,30
99 beq shl5
100 ori r3,r3,2 # D/Y
102 shl5: rlwinm. r5,r4,0,22,22
103 beq shl6
104 ori r3,r3,1 # U/Z
106 shl6: li r4,-0x10FF # SEL=0, dump caps
107 sth r4,0x34(r7)
109 lbz r4,0(r6)
110 lbz r4,0(r6)
111 lbz r4,0(r6)
112 lbz r4,0(r6)
113 lbz r4,0(r6)
114 lbz r4,0(r6)
115 lbz r4,0(r6)
116 lbz r4,0(r6)
117 lbz r4,0(r6)
118 lbz r4,0(r6)
119 lbz r4,0(r6)
120 lbz r4,0(r6)
121 lbz r4,0(r6)
122 lbz r4,0(r6)
123 lbz r4,0(r6)
124 lbz r4,0(r6)
125 lbz r4,0(r6)
126 lbz r4,0(r6)
127 lbz r4,0(r6)
128 lbz r4,0(r6)
129 lbz r4,0(r6)
130 lbz r4,0(r6)
131 lbz r4,0(r6)
132 lbz r4,0(r6)
134 rlwinm. r4,r4,0,24,24
135 bne shl11
136 ori r3,r3,0x1000 # A/0
138 shl11: lhz r4,0x16(r7)
139 rlwinm. r4,r4,0,17,17
140 bne shl12
141 ori r3,r3,0x2000 # S/0
143 shl12: lhz r4,0xC(r7)
144 rlwinm. r5,r4,0,30,30
145 beq shl13
146 ori r3,r3,0x800 # 0/1
148 shl13: rlwinm. r5,r4,0,22,22
149 beq shl14
150 ori r3,r3,0x400 # 0/1
152 shl14: rlwinm r5,r4,1,0,31
153 xor r4,r4,r5
154 rlwinm. r5,r4,0,30,30
155 beq shl15
156 ori r3,r3,0x200 # D/1
158 shl15: rlwinm. r5,r4,0,22,22
159 beq shl16
160 ori r3,r3,0x100 # U/1
162 shl16: blr