home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 28
/
amigaformatcd28.iso
/
-screenplay-
/
otherstuff
/
adoomppc_src
/
amiga_sega.s
< prev
next >
Wrap
Text File
|
1998-04-23
|
2KB
|
158 lines
.extern Sega6
.extern Sega3
# returns - xxSAxxxxxxCBMXYZxxSAxxDUxxCBRLDU
Sega6: mflr r8
lis r7,0x00DF
lis r6,0x00BF
ori r7,r7,0xF000
ori r6,r6,0xE001
bl GetSega # xxSAxxDUxxCBRLDU
rlwinm r3,r3,16,0,15 # save
bl GetSega # xxSAxxDUxxCBRLDU
bl GetSega # xxSAxxxxxxCBRLDU
bl GetSega # xxSAxxxxxxCBMXYZ
rlwinm r3,r3,16,0,31 # xxSAxxxxxxCBMXYZxxSAxxDUxxCBRLDU
li r4,-0x0100 # SEL=1
mtlr r8
sth r4,0x34(r7)
blr
# returns - 0000000000000000xxSAxxDUxxCBRLDU
Sega3: mflr r8
lis r7,0x00DF
lis r6,0x00BF
ori r7,r7,0xF000
ori r6,r6,0xE001
li r3,0
bl GetSega # xxSAxxDUxxCBRLDU
li r4,-0x0100 # SEL=1
mtlr r8
sth r4,0x34(r7)
blr
# read Sega controller
GetSega: rlwinm r3,r3,0,0,15
li r4,-0x00FF # SEL=1, dump caps
sth r4,0x34(r7)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
rlwinm. r4,r4,0,24,24
bne shl1
ori r3,r3,0x10 # B/0
shl1: lhz r4,0x16(r7)
rlwinm. r4,r4,0,17,17
bne shl2
ori r3,r3,0x20 # C/0
shl2: lhz r4,0xC(r7)
rlwinm. r5,r4,0,30,30
beq shl3
ori r3,r3,8 # R/M
shl3: rlwinm. r5,r4,0,22,22
beq shl4
ori r3,r3,4 # L/X
shl4: rlwinm r5,r4,1,0,31
xor r4,r4,r5
rlwinm. r5,r4,0,30,30
beq shl5
ori r3,r3,2 # D/Y
shl5: rlwinm. r5,r4,0,22,22
beq shl6
ori r3,r3,1 # U/Z
shl6: li r4,-0x10FF # SEL=0, dump caps
sth r4,0x34(r7)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
lbz r4,0(r6)
rlwinm. r4,r4,0,24,24
bne shl11
ori r3,r3,0x1000 # A/0
shl11: lhz r4,0x16(r7)
rlwinm. r4,r4,0,17,17
bne shl12
ori r3,r3,0x2000 # S/0
shl12: lhz r4,0xC(r7)
rlwinm. r5,r4,0,30,30
beq shl13
ori r3,r3,0x800 # 0/1
shl13: rlwinm. r5,r4,0,22,22
beq shl14
ori r3,r3,0x400 # 0/1
shl14: rlwinm r5,r4,1,0,31
xor r4,r4,r5
rlwinm. r5,r4,0,30,30
beq shl15
ori r3,r3,0x200 # D/1
shl15: rlwinm. r5,r4,0,22,22
beq shl16
ori r3,r3,0x100 # U/1
shl16: blr