home *** CD-ROM | disk | FTP | other *** search
- macro backtransnet m0
- ;translate a levelnet address into Amnesia coords.
- {
- STMFD R13!,{R2-R3}
- LDR R1,[R12,#v.levelnet]
- SUB R1,m0,R1
- LDR R2,[R12,#v.netxsize]
- MOV R2,R2,LSL #2
- SUB R2,R2,#1
- AND R0,R1,R2
- LDR R2,[R12,#v.netysize]
- MOV R2,R2,LSL #2
- SUB R2,R2,#1
- LDR R3,[R12,#v.levelshift]
- ADD R3,R3,#2
- MOV R1,R1,LSR R3
- AND R1,R1,R2
- MOV R0,R0,LSL #12+baseshift-netshift
- MOV R1,R1,LSL #12+baseshift-netshift
- ADD R0,R0,#1<<(11+baseshift-netshift)
- ADD R1,R1,#1<<(11+baseshift-netshift)
- LDMFD R13!,{R2-R3}
- }
-
- macro backtransdata m0
- ;translate a leveldata address into Amnesia coords
- {
- STMFD R13!,{R2-R3}
- LDR R1,[R12,#v.leveldata]
- SUB R1,m0,R1
- LDR R2,[R12,#v.netxsize]
- SUB R2,R2,#1
- AND R0,R1,R2
- LDR R2,[R12,#v.netysize]
- SUB R2,R2,#1
- LDR R3,[R12,#v.levelshift]
- MOV R1,R1,LSR R3
- AND R1,R1,R2
- MOV R0,R0,LSL #12+baseshift
- MOV R1,R1,LSL #12+baseshift
- ADD R0,R0,#1<<(11+baseshift)
- ADD R1,R1,#1<<(11+baseshift)
- LDMFD R13!,{R2-R3}
- }
-
- macro transnet m0,m1,m2
- ;translate the Amnesia coords in m1,m2 to a levelnet address
- {
- MOV m0,m2,LSR #12+baseshift-netshift
- LDR R14,[R12,#v.levelshift]
- MOV m0,m0,LSL R14
- MOV m0,m0,LSL #netshift
- LDR R14,[R12,#v.levelnet]
- ADD m0,m0,R14
- ADD m0,m0,m1,LSR #12+baseshift-netshift
- }
-
- macro transdata m0,m1,m2
- ;translate the Amnesia coords in m1,m2 to a leveldata address
- {
- MOV m0,m2,LSR #12+baseshift
- LDR R14,[R12,#v.levelshift]
- MOV m0,m0,LSL R14
- LDR R14,[R12,#v.leveldata]
- ADD m0,m0,R14
- ADD m0,m0,m1,LSR #12+baseshift
- }
-
-
-
- ;rem finds the remainder of m1/3 for m1<256
- macro rem3 m0
- {
- CMP m0,#192
- SUBGE m0,m0,#192
- CMP m0,#96
- SUBGE m0,m0,#96
- CMP m0,#48
- SUBGE m0,m0,#48
- CMP m0,#24
- SUBGE m0,m0,#24
- CMP m0,#12
- SUBGE m0,m0,#12
- CMP m0,#6
- SUBGE m0,m0,#6
- CMP m0,#3
- SUBGE m0,m0,#3
- }
-
- macro DIV96 m0,m1
- ;divide by 96 for m1 < 6<<12
- {
- MOV m0,#0
- CMP m1,#3<<12
- SUBGE m1,m1,#3<<12
- ORRGE m0,m0,#1<<7
- CMP m1,#3<<11
- SUBGE m1,m1,#3<<11
- ORRGE m0,m0,#1<<6
- CMP m1,#3<<10
- SUBGE m1,m1,#3<<10
- ORRGE m0,m0,#1<<5
- CMP m1,#3<<9
- SUBGE m1,m1,#3<<9
- ORRGE m0,m0,#1<<4
- CMP m1,#3<<8
- SUBGE m1,m1,#3<<8
- ORRGE m0,m0,#1<<3
- CMP m1,#3<<7
- SUBGE m1,m1,#3<<7
- ORRGE m0,m0,#1<<2
- CMP m1,#3<<6
- SUBGE m1,m1,#3<<6
- ORRGE m0,m0,#1<<1
- CMP m1,#3<<5
- SUBGE m1,m1,#3<<5
- ORRGE m0,m0,#1
- }
-