ThomasSpeedrunner icon

Untitled

ThomasSpeedrunner | PRO | 08/12/13 04:25:20 PM UTC | 0 ⭐ | 7714 👁️ | Never ⏰ | []
Motorola 68000 HiSoft Dev |

0 B

|

None

|

0 👍

/

0 👎

; 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

Comments

  • Saxdutor icon
    03/30/26 02:42:03 AM UTC
    CSS |

    0 B

    |

    0 👍

    /

    0 👎

    ✅ Leaked Exploit Documentation:
     
    https://docs.google.com/document/d/1dOCZEHS5JtM51RITOJzbS4o3hZ-__wTTRXQkV1MexNQ/edit?usp=sharing
     
    This made me $13,000 in 2 days.
     
    Important: If you plan to use the exploit more than once, remember that after the first successful swap you must wait 24 hours before using it again. Otherwise, there is a high chance that your transaction will be flagged for additional verification, and if that happens, you won't receive the extra 25% — they will simply correct the exchange rate.
    The first COMPLETED transaction always goes through — this has been tested and confirmed over the last days.
     
    Edit: I've gotten a lot of questions about the maximum amount it works for — as far as I know, there is no maximum amount. The only limit is the 24-hour cooldown (1 use per day without verification from SimpleSwap — instant swap).
    
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎