Obj_CirclingPlatforms: moveq #0,d0 move.b $24(a0),d0 move.w Obj_CirclingPlatforms_Index(pc,d0.w),d1 jsr Obj_CirclingPlatforms_Index(pc,d1.w) move.w $32(a0),d0 andi.w #$FF80,d0 move.w ($FFFFEE00).w,d1 sub.w #$80,d1 andi.w #$FF80,d1 sub.w d1,d0 cmp.w #$280,d0 jhi DeleteObject jmp DisplaySprite ; =========================================================================== Obj_CirclingPlatforms_Index: dc.w Obj_CirclingPlatforms_Main-Obj_CirclingPlatforms_Index dc.w Obj_CirclingPlatforms_Platform-Obj_CirclingPlatforms_Index dc.w Obj_CirclingPlatforms_Action-Obj_CirclingPlatforms_Index ; =========================================================================== Obj_CirclingPlatforms_Main: addq.b #2,$24(a0) move.l #Map_Obj_CirclingPlatforms,4(a0) move.w #$4000,2(a0) move.b #4,1(a0) move.b #4,$18(a0) move.b #$18,$19(a0) move.w 8(a0),$32(a0) move.w $C(a0),$30(a0) Obj_CirclingPlatforms_Platform: moveq #0,d1 move.b $19(a0),d1 lea ($FFFFB000).w,a1 jsr (PlatformObject).l jmp Obj_CirclingPlatforms_Types ; =========================================================================== Obj_CirclingPlatforms_Action: moveq #0,d1 move.b $19(a0),d1 jsr (ExitPlatform).l move.w 8(a0),-(sp) jsr Obj_CirclingPlatforms_TYPES move.w (sp)+,d2 lea ($FFFFB000).w,a1 jmp (MvSonicOnPtfm).l ; =========================================================================== Obj_CirclingPlatforms_Types: moveq #0,d0 move.b $28(a0),d0 andi.w #$C,d0 lsr.w #1,d0 move.w Obj_CirclingPlatforms_TypeIndex(pc,d0.w),d1 jmp Obj_CirclingPlatforms_TypeIndex(pc,d1.w) ; =========================================================================== Obj_CirclingPlatforms_TypeIndex:dc.w Obj_CirclingPlatforms_Type00-Obj_CirclingPlatforms_TypeIndex dc.w Obj_CirclingPlatforms_Type04-Obj_CirclingPlatforms_TypeIndex ; =========================================================================== Obj_CirclingPlatforms_Type00: move.b ($FFFFFE80).w,d1 subi.b #$50,d1 ext.w d1 move.b ($FFFFFE84).w,d2 subi.b #$50,d2 ext.w d2 btst #0,$28(a0) beq.s loc1_10E24 neg.w d1 neg.w d2 loc1_10E24: btst #1,$28(a0) beq.s loc1_10E30 neg.w d1 exg d1,d2 loc1_10E30: add.w $32(a0),d1 move.w d1,8(a0) add.w $30(a0),d2 move.w d2,$C(a0) rts ; =========================================================================== Obj_CirclingPlatforms_Type04: move.b ($FFFFFE80).w,d1 subi.b #$50,d1 ext.w d1 move.b ($FFFFFE84).w,d2 subi.b #$50,d2 ext.w d2 btst #0,$28(a0) beq.s loc1_10E62 neg.w d1 neg.w d2 loc1_10E62: btst #1,$28(a0) beq.s loc1_10E6E neg.w d1 exg d1,d2 loc1_10E6E: neg.w d1 add.w $32(a0),d1 move.w d1,8(a0) add.w $30(a0),d2 move.w d2,$C(a0) rts Map_Obj_CirclingPlatforms: binclude "mappings/sprite/circlingplatform.bin" even