Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; loc_1E7D0:
- FindFloor:
- bsr.w Floor_ChkTile
- move.w (a1),d0
- move.w d0,d4
- andi.w #$3FF,d0
- beq.s loc_1E7E2
- btst d5,d4
- bne.s loc_1E7F0
- loc_1E7E2:
- add.w a3,d2
- bsr.w FindFloor2
- sub.w a3,d2
- addi.w #$10,d1
- rts
- ; ===========================================================================
- loc_1E7F0: ; block has some solidity
- movea.l (Collision_addr).w,a2 ; pointer to collision data, i.e. blockID -> collisionID array
- move.b (a2,d0.w),d0 ; get collisionID
- andi.w #$FF,d0
- beq.s loc_1E7E2
- cmpi.b #death_egg_zone,(Current_Zone).w
- bne.s LoadFloorColCurveMap_NotDEZ
- lea (ColCurveMap_DEZ).l,a2
- bra.s ContinueLoadingFloorColCurveMap
- LoadFloorColCurveMap_NotDEZ:
- lea (ColCurveMap).l,a2
- ContinueLoadingFloorColCurveMap:
- move.b (a2,d0.w),(a4) ; get angle from AngleMap --> (a4)
- lsl.w #4,d0
- move.w d3,d1 ; x_pos
- btst #$A,d4 ; adv.blockID in d4 - X flipping
- beq.s +
- not.w d1
- neg.b (a4)
- +
- btst #$B,d4 ; Y flipping
- beq.s +
- addi.b #$40,(a4)
- neg.b (a4)
- subi.b #$40,(a4)
- +
- andi.w #$F,d1 ; x_pos (mod 16)
- add.w d0,d1 ; d0 = 16*blockID -> offset in ColArray to look up
- cmpi.b #death_egg_zone,(Current_Zone).w
- bne.s LoadFloorColArray_NotDEZ
- lea (ColArray_DEZ).l,a2
- bra.s ContinueLoadingFloorColArray
- LoadFloorColArray_NotDEZ:
- lea (ColArray).l,a2
- ContinueLoadingFloorColArray:
- move.b (a2,d1.w),d0 ; heigth from ColArray
- ext.w d0
- eor.w d6,d4
- btst #$B,d4 ; Y flipping
- beq.s +
- neg.w d0
- +
- tst.w d0
- beq.w loc_1E7E2 ; no collision
- bmi.s loc_1E85E
- cmpi.b #$10,d0
- beq.s loc_1E86A
- move.w d2,d1
- andi.w #$F,d1
- add.w d1,d0
- move.w #$F,d1
- sub.w d0,d1
- rts
- ; ===========================================================================
- loc_1E85E:
- move.w d2,d1
- andi.w #$F,d1
- add.w d1,d0
- bpl.w loc_1E7E2
- loc_1E86A:
- sub.w a3,d2
- bsr.w FindFloor2
- add.w a3,d2
- subi.w #$10,d1
- rts
- ; End of function FindFloor
- ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
- ; loc_1E878:
- FindFloor2:
- bsr.w Floor_ChkTile
- move.w (a1),d0
- move.w d0,d4
- andi.w #$3FF,d0
- beq.s loc_1E88A
- btst d5,d4
- bne.s loc_1E898
- loc_1E88A:
- move.w #$F,d1
- move.w d2,d0
- andi.w #$F,d0
- sub.w d0,d1
- rts
- ; ===========================================================================
- loc_1E898:
- movea.l (Collision_addr).w,a2
- move.b (a2,d0.w),d0
- andi.w #$FF,d0
- beq.s loc_1E88A
- cmpi.b #death_egg_zone,(Current_Zone).w
- bne.s LoadFloor2ColCurveMap_NotDEZ
- lea (ColCurveMap_DEZ).l,a2
- bra.s ContinueLoadingFloor2ColCurveMap
- LoadFloor2ColCurveMap_NotDEZ:
- lea (ColCurveMap).l,a2
- ContinueLoadingFloor2ColCurveMap:
- move.b (a2,d0.w),(a4)
- lsl.w #4,d0
- move.w d3,d1
- btst #$A,d4
- beq.s +
- not.w d1
- neg.b (a4)
- +
- btst #$B,d4
- beq.s +
- addi.b #$40,(a4)
- neg.b (a4)
- subi.b #$40,(a4)
- +
- andi.w #$F,d1
- add.w d0,d1
- cmpi.b #death_egg_zone,(Current_Zone).w
- bne.s LoadFloor2ColArray_NotDEZ
- lea (ColArray_DEZ).l,a2
- bra.s ContinueLoadingFloor2ColArray
- LoadFloor2ColArray_NotDEZ:
- lea (ColArray).l,a2
- ContinueLoadingFloor2ColArray:
- move.b (a2,d1.w),d0
- ext.w d0
- eor.w d6,d4
- btst #$B,d4
- beq.s +
- neg.w d0
- +
- tst.w d0
- beq.w loc_1E88A
- bmi.s loc_1E900
- move.w d2,d1
- andi.w #$F,d1
- add.w d1,d0
- move.w #$F,d1
- sub.w d0,d1
- rts
- ; ===========================================================================
- loc_1E900:
- move.w d2,d1
- andi.w #$F,d1
- add.w d1,d0
- bpl.w loc_1E88A
- not.w d1
- rts
- ; ===========================================================================
- ; loc_1E910:
- Obj_CheckInFloor:
- bsr.w Floor_ChkTile
- move.w (a1),d0
- move.w d0,d4
- andi.w #$3FF,d0
- beq.s loc_1E922
- btst d5,d4
- bne.s loc_1E928
- loc_1E922:
- move.w #$10,d1
- rts
- ; ===========================================================================
- loc_1E928:
- movea.l (Collision_addr).w,a2
- move.b (a2,d0.w),d0
- andi.w #$FF,d0
- beq.s loc_1E922
- cmpi.b #death_egg_zone,(Current_Zone).w
- bne.s LoadObjChkFloorColCurveMap_NotDEZ
- lea (ColCurveMap_DEZ).l,a2
- bra.s ContinueLoadingObjChkFloorColCurveMap
- LoadObjChkFloorColCurveMap_NotDEZ:
- lea (ColCurveMap).l,a2
- ContinueLoadingObjChkFloorColCurveMap:
- move.b (a2,d0.w),(a4)
- lsl.w #4,d0
- move.w d3,d1
- btst #$A,d4
- beq.s +
- not.w d1
- neg.b (a4)
- +
- btst #$B,d4
- beq.s +
- addi.b #$40,(a4)
- neg.b (a4)
- subi.b #$40,(a4)
- +
- andi.w #$F,d1
- add.w d0,d1
- cmpi.b #death_egg_zone,(Current_Zone).w
- bne.s LoadFloorCheckColArray_NotDEZ
- lea (ColArray_DEZ).l,a2
- bra.s ContinueLoadingFloorCheckColArray
- LoadFloorCheckColArray_NotDEZ:
- lea (ColArray).l,a2
- ContinueLoadingFloorCheckColArray:
- move.b (a2,d1.w),d0
- ext.w d0
- eor.w d6,d4
- btst #$B,d4
- beq.s +
- neg.w d0
- +
- tst.w d0
- beq.s loc_1E922
- bmi.s loc_1E996
- cmpi.b #$10,d0
- beq.s loc_1E9A2
- move.w d2,d1
- andi.w #$F,d1
- add.w d1,d0
- move.w #$F,d1
- sub.w d0,d1
- rts
- ; ===========================================================================
- loc_1E996:
- move.w d2,d1
- andi.w #$F,d1
- add.w d1,d0
- bpl.w loc_1E922
- loc_1E9A2:
- sub.w a3,d2
- bsr.w FindFloor2
- add.w a3,d2
- subi.w #$10,d1
- rts
- ; ===========================================================================
- ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
- ; d2 = y_pos
- ; d3 = x_pos
- ; d5 = ($c,$d) - solidity type bit (L/R/B or top)
- ; returns relevant block ID in (a1)
- ; returns distance to left/right in d1
- ; returns angle in (a4)
- ; loc_1E9B0:
- FindWall:
- bsr.w Floor_ChkTile
- move.w (a1),d0
- move.w d0,d4
- andi.w #$3FF,d0 ; plain blockID
- beq.s loc_1E9C2 ; no collision
- btst d5,d4
- bne.s loc_1E9D0
- loc_1E9C2:
- add.w a3,d3
- bsr.w FindWall2
- sub.w a3,d3
- addi.w #$10,d1
- rts
- ; ===========================================================================
- loc_1E9D0:
- movea.l (Collision_addr).w,a2
- move.b (a2,d0.w),d0
- andi.w #$FF,d0 ; relevant collisionArrayEntry
- beq.s loc_1E9C2
- cmpi.b #death_egg_zone,(Current_Zone).w
- bne.s LoadWallColCurveMap_NotDEZ
- lea (ColCurveMap_DEZ).l,a2
- bra.s ContinueLoadingWallColCurveMap
- LoadWallColCurveMap_NotDEZ:
- lea (ColCurveMap).l,a2
- ContinueLoadingWallColCurveMap:
- move.b (a2,d0.w),(a4)
- lsl.w #4,d0 ; offset in collision array
- move.w d2,d1 ; y
- btst #$B,d4 ; y-mirror?
- beq.s +
- not.w d1
- addi.b #$40,(a4)
- neg.b (a4)
- subi.b #$40,(a4)
- +
- btst #$A,d4 ; x-mirror?
- beq.s +
- neg.b (a4)
- +
- andi.w #$F,d1 ; y
- add.w d0,d1 ; line to look up
- cmpi.b #death_egg_zone,(Current_Zone).w
- bne.s LoadWallColArray_NotDEZ
- lea (ColArray2_DEZ).l,a2
- bra.s ContinueLoadingWallColArray
- LoadWallColArray_NotDEZ:
- lea (ColArray2).l,a2 ; rotated collision array
- ContinueLoadingWallColArray:
- move.b (a2,d1.w),d0 ; collision value
- ext.w d0
- eor.w d6,d4 ; set x-flip flag if from the right
- btst #$A,d4 ; x-mirror?
- beq.s +
- neg.w d0
- +
- tst.w d0
- beq.w loc_1E9C2
- bmi.s loc_1EA3E
- cmpi.b #$10,d0
- beq.s loc_1EA4A
- move.w d3,d1 ; x
- andi.w #$F,d1
- add.w d1,d0
- move.w #$F,d1
- sub.w d0,d1
- rts
- ; ===========================================================================
- loc_1EA3E:
- move.w d3,d1
- andi.w #$F,d1
- add.w d1,d0
- bpl.w loc_1E9C2 ; no collision
- loc_1EA4A:
- sub.w a3,d3
- bsr.w FindWall2
- add.w a3,d3
- subi.w #$10,d1
- rts
- ; End of function FindWall
- ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
- ; loc_1EA58:
- FindWall2:
- bsr.w Floor_ChkTile
- move.w (a1),d0
- move.w d0,d4
- andi.w #$3FF,d0
- beq.s loc_1EA6A
- btst d5,d4
- bne.s loc_1EA78
- loc_1EA6A:
- move.w #$F,d1
- move.w d3,d0
- andi.w #$F,d0
- sub.w d0,d1
- rts
- ; ===========================================================================
- loc_1EA78:
- movea.l (Collision_addr).w,a2
- move.b (a2,d0.w),d0
- andi.w #$FF,d0
- beq.s loc_1EA6A
- cmpi.b #death_egg_zone,(Current_Zone).w
- bne.s LoadWall2ColCurveMap_NotDEZ
- lea (ColCurveMap_DEZ).l,a2
- bra.s ContinueLoadingWall2ColCurveMap
- LoadWall2ColCurveMap_NotDEZ:
- lea (ColCurveMap).l,a2
- ContinueLoadingWall2ColCurveMap:
- move.b (a2,d0.w),(a4)
- lsl.w #4,d0
- move.w d2,d1
- btst #$B,d4
- beq.s +
- not.w d1
- addi.b #$40,(a4)
- neg.b (a4)
- subi.b #$40,(a4)
- +
- btst #$A,d4
- beq.s +
- neg.b (a4)
- +
- andi.w #$F,d1
- add.w d0,d1
- cmpi.b #death_egg_zone,(Current_Zone).w
- bne.s LoadWall2ColArray_NotDEZ
- lea (ColArray2_DEZ).l,a2
- bra.s ContinueLoadingWall2ColArray
- LoadWall2ColArray_NotDEZ:
- lea (ColArray2).l,a2 ; rotated collision array
- ContinueLoadingWall2ColArray:
- move.b (a2,d1.w),d0
- ext.w d0
- eor.w d6,d4
- btst #$A,d4
- beq.s +
- neg.w d0
- +
- tst.w d0
- beq.w loc_1EA6A
- bmi.s loc_1EAE0
- move.w d3,d1
- andi.w #$F,d1
- add.w d1,d0
- move.w #$F,d1
- sub.w d0,d1
- rts
- ; ===========================================================================
- loc_1EAE0:
- move.w d3,d1
- andi.w #$F,d1
- add.w d1,d0
- bpl.w loc_1EA6A
- not.w d1
- rts
- ; End of function FindWall2
Advertisement