mirror of
https://frontier.innolan.net/github/amigaos-cross-toolchain6.git
synced 2024-10-19 10:29:55 +00:00
1241 lines
18 KiB
ArmAsm
1241 lines
18 KiB
ArmAsm
#NO_APP
|
|
.text
|
|
.align 2
|
|
.globl _object_setAnim
|
|
_object_setAnim:
|
|
moveq #0,d1
|
|
move.w 44(a0),d1
|
|
move.w d0,a1
|
|
cmp.l d1,a1
|
|
jeq .L1
|
|
move.w d0,44(a0)
|
|
moveq #0,d1
|
|
move.w d0,d1
|
|
move.l d1,d0
|
|
add.l d1,d0
|
|
add.l d0,d0
|
|
add.l d1,d0
|
|
add.l d0,d0
|
|
move.l d0,d1
|
|
add.l #_object_animations,d1
|
|
move.l d1,48(a0)
|
|
lea _object_animations,a1
|
|
move.w (a1,d0.l),d0
|
|
move.w d0,36(a0)
|
|
move.w d0,a1
|
|
move.l a1,d0
|
|
add.l a1,d0
|
|
add.l a1,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
add.l #_object_imageAtlas,d0
|
|
move.l d0,38(a0)
|
|
clr.w 72(a0)
|
|
.L1:
|
|
rts
|
|
.align 2
|
|
.globl _object_free
|
|
_object_free:
|
|
move.l a2,-(sp)
|
|
move.l a0,a2
|
|
move.l 82(a0),a1
|
|
cmp.w #0,a1
|
|
jeq .L6
|
|
move.l 4(a0),a0
|
|
jsr (a1)
|
|
.L6:
|
|
move.l 12(a2),a0
|
|
cmp.w #0,a0
|
|
jeq .L21
|
|
move.l 8(a2),8(a0)
|
|
move.l 8(a2),a1
|
|
cmp.w #0,a1
|
|
jeq .L9
|
|
move.l a0,12(a1)
|
|
.L9:
|
|
subq.w #1,_object_count
|
|
move.l _object_freeList,a0
|
|
cmp.w #0,a0
|
|
jeq .L22
|
|
.L11:
|
|
move.l a0,8(a2)
|
|
move.l a2,12(a0)
|
|
clr.l 12(a2)
|
|
move.l a2,_object_freeList
|
|
move.l (sp)+,a2
|
|
rts
|
|
.L21:
|
|
move.l 8(a2),a0
|
|
move.l a0,_object_activeList
|
|
jeq .L9
|
|
clr.l 12(a0)
|
|
subq.w #1,_object_count
|
|
move.l _object_freeList,a0
|
|
cmp.w #0,a0
|
|
jne .L11
|
|
.L22:
|
|
move.l a2,_object_freeList
|
|
clr.l 8(a2)
|
|
clr.l 12(a2)
|
|
move.l (sp)+,a2
|
|
rts
|
|
.align 2
|
|
.globl _object_setAction
|
|
_object_setAction:
|
|
move.w d0,46(a0)
|
|
add.w 42(a0),d0
|
|
move.w d0,a1
|
|
moveq #0,d1
|
|
move.w 44(a0),d1
|
|
cmp.l a1,d1
|
|
jeq .L23
|
|
move.w d0,44(a0)
|
|
and.l #65535,d0
|
|
move.l d0,d1
|
|
add.l d0,d1
|
|
add.l d1,d1
|
|
add.l d1,d0
|
|
add.l d0,d0
|
|
move.l d0,d1
|
|
add.l #_object_animations,d1
|
|
move.l d1,48(a0)
|
|
lea _object_animations,a1
|
|
move.w (a1,d0.l),d0
|
|
move.w d0,36(a0)
|
|
move.w d0,a1
|
|
move.l a1,d0
|
|
add.l a1,d0
|
|
add.l a1,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
add.l #_object_imageAtlas,d0
|
|
move.l d0,38(a0)
|
|
clr.w 72(a0)
|
|
.L23:
|
|
rts
|
|
.align 2
|
|
.globl _object_updatePosition
|
|
_object_updatePosition:
|
|
movem.l #16176,-(sp)
|
|
move.w 26(a0),d2
|
|
move.w 28(a0),d1
|
|
cmp.w #2,d0
|
|
jeq .L39
|
|
.L28:
|
|
move.w 24(a0),d4
|
|
move.w 22(a0),d5
|
|
add.w d5,d2
|
|
move.w d2,22(a0)
|
|
move.w _game_cameraX,d3
|
|
move.w 16(a0),d6
|
|
sub.w d3,d6
|
|
move.w d2,d0
|
|
moveq #15,d7
|
|
lsr.w d7,d0
|
|
add.w d2,d0
|
|
asr.w #1,d0
|
|
move.w d0,16(a0)
|
|
move.w d0,a1
|
|
move.w d3,a2
|
|
cmp.w #287,d6
|
|
jgt .L30
|
|
lea (32,a1),a3
|
|
move.l a3,d0
|
|
sub.l a2,d0
|
|
cmp.l #319,d0
|
|
jgt .L40
|
|
tst.w d6
|
|
jge .L30
|
|
.L32:
|
|
move.w d1,d0
|
|
add.w d4,d0
|
|
move.w 18(a0),d3
|
|
move.w d0,24(a0)
|
|
move.w d0,d1
|
|
moveq #15,d6
|
|
lsr.w d6,d1
|
|
add.w d0,d1
|
|
asr.w #1,d1
|
|
move.w d1,18(a0)
|
|
cmp.w #207,d1
|
|
jle .L33
|
|
.L41:
|
|
move.w #206,18(a0)
|
|
move.w #412,24(a0)
|
|
move.w #412,d0
|
|
.L34:
|
|
sub.w d5,d2
|
|
move.w d2,30(a0)
|
|
sub.w d4,d0
|
|
move.w d0,32(a0)
|
|
movem.l (sp)+,#3324
|
|
rts
|
|
.L30:
|
|
move.l a1,d0
|
|
sub.l a2,d0
|
|
jpl .L32
|
|
move.w d3,16(a0)
|
|
move.w d3,d2
|
|
add.w d3,d2
|
|
move.w d2,22(a0)
|
|
move.w d1,d0
|
|
add.w d4,d0
|
|
move.w 18(a0),d3
|
|
move.w d0,24(a0)
|
|
move.w d0,d1
|
|
moveq #15,d6
|
|
lsr.w d6,d1
|
|
add.w d0,d1
|
|
asr.w #1,d1
|
|
move.w d1,18(a0)
|
|
cmp.w #207,d1
|
|
jgt .L41
|
|
.L33:
|
|
cmp.w #65,d3
|
|
jle .L34
|
|
cmp.w #65,d1
|
|
jgt .L34
|
|
move.w #66,18(a0)
|
|
move.w #132,24(a0)
|
|
move.w #132,d0
|
|
sub.w d5,d2
|
|
move.w d2,30(a0)
|
|
sub.w d4,d0
|
|
move.w d0,32(a0)
|
|
movem.l (sp)+,#3324
|
|
rts
|
|
.L39:
|
|
add.w d2,d2
|
|
add.w d1,d1
|
|
jra .L28
|
|
.L40:
|
|
move.w d3,d2
|
|
add.w #287,d2
|
|
move.w d2,16(a0)
|
|
add.w d2,d2
|
|
move.w d2,22(a0)
|
|
jra .L32
|
|
.align 2
|
|
.globl _object_init
|
|
_object_init:
|
|
clr.w _object_count
|
|
clr.l _object_activeList
|
|
move.l #_object_buffer,_object_freeList
|
|
clr.l _object_buffer+12
|
|
move.l #_object_buffer+96,_object_buffer+8
|
|
move.l #_object_buffer,_object_buffer+108
|
|
move.l #_object_buffer+192,_object_buffer+104
|
|
move.l #_object_buffer+96,_object_buffer+204
|
|
move.l #_object_buffer+288,_object_buffer+200
|
|
move.l #_object_buffer+192,_object_buffer+300
|
|
move.l #_object_buffer+384,_object_buffer+296
|
|
move.l #_object_buffer+288,_object_buffer+396
|
|
move.l #_object_buffer+480,_object_buffer+392
|
|
move.l #_object_buffer+384,_object_buffer+492
|
|
move.l #_object_buffer+576,_object_buffer+488
|
|
move.l #_object_buffer+480,_object_buffer+588
|
|
move.l #_object_buffer+672,_object_buffer+584
|
|
move.l #_object_buffer+576,_object_buffer+684
|
|
move.l #_object_buffer+768,_object_buffer+680
|
|
move.l #_object_buffer+672,_object_buffer+780
|
|
move.l #_object_buffer+864,_object_buffer+776
|
|
move.l #_object_buffer+768,_object_buffer+876
|
|
move.l #_object_buffer+960,_object_buffer+872
|
|
move.l #_object_buffer+864,_object_buffer+972
|
|
move.l #_object_buffer+1056,_object_buffer+968
|
|
move.l #_object_buffer+960,_object_buffer+1068
|
|
clr.l _object_buffer+1064
|
|
rts
|
|
.align 2
|
|
.globl _object_clear
|
|
_object_clear:
|
|
subq.l #4,sp
|
|
movem.l #16190,-(sp)
|
|
move.l a0,d7
|
|
move.l 52(sp),a0
|
|
move.w a1,d2
|
|
jeq .L43
|
|
move.w d0,d5
|
|
asr.w #4,d5
|
|
move.w d1,d2
|
|
asr.w #4,d2
|
|
move.w a1,a1
|
|
ext.l d0
|
|
lea (a1,d0.l),a5
|
|
move.l a5,d0
|
|
asr.l #4,d0
|
|
move.l d0,a5
|
|
move.w a0,a0
|
|
ext.l d1
|
|
lea (a0,d1.l),a0
|
|
move.l a0,d4
|
|
asr.l #4,d4
|
|
move.w d5,d6
|
|
ext.l d6
|
|
cmp.l d0,d6
|
|
jgt .L43
|
|
move.w d2,a6
|
|
cmp.l d4,a6
|
|
jgt .L43
|
|
lsl.w #4,d5
|
|
move.l d6,d0
|
|
lsl.l #4,d0
|
|
lea (a6,d0.l),a3
|
|
add.l a3,a3
|
|
add.l #_level,a3
|
|
lsl.w #4,d2
|
|
move.w d2,46(sp)
|
|
lea _gfx_quickRenderTile,a4
|
|
.L48:
|
|
move.l a3,a2
|
|
move.w 46(sp),d2
|
|
move.l a6,d3
|
|
.L47:
|
|
tst.w d2
|
|
jlt .L49
|
|
move.w d5,d0
|
|
sub.w _game_cameraX,d0
|
|
sub.w _game_screenScrollX,d0
|
|
move.w d0,d1
|
|
add.w #-322,d1
|
|
cmp.w #-338,d1
|
|
jhi .L57
|
|
.L49:
|
|
addq.l #1,d3
|
|
add.w #16,d2
|
|
addq.l #2,a2
|
|
cmp.l d4,d3
|
|
jle .L47
|
|
.L58:
|
|
addq.l #1,d6
|
|
add.w #16,d5
|
|
lea (32,a3),a3
|
|
cmp.l a5,d6
|
|
jle .L48
|
|
.L43:
|
|
movem.l (sp)+,#31996
|
|
addq.l #4,sp
|
|
rts
|
|
.L57:
|
|
moveq #0,d1
|
|
move.w (a2),d1
|
|
move.l d1,a1
|
|
add.w #15,d0
|
|
add.l #_level+205160,a1
|
|
move.w d2,d1
|
|
ext.l d1
|
|
and.l #65535,d0
|
|
move.l d7,a0
|
|
jsr (a4)
|
|
addq.l #1,d3
|
|
add.w #16,d2
|
|
addq.l #2,a2
|
|
cmp.l d4,d3
|
|
jle .L47
|
|
jra .L58
|
|
.align 2
|
|
.globl _object_renderObject
|
|
_object_renderObject:
|
|
subq.l #8,sp
|
|
movem.l #16190,-(sp)
|
|
move.l a0,d6
|
|
tst.w 86(a1)
|
|
jeq .L59
|
|
move.l 38(a1),a4
|
|
move.w 4(a4),d4
|
|
move.w 6(a4),d7
|
|
move.w _game_cameraX,a0
|
|
add.w _game_screenScrollX,a0
|
|
move.w 16(a1),d0
|
|
sub.w a0,d0
|
|
move.w d0,a0
|
|
add.w 8(a4),a0
|
|
move.w a0,d3
|
|
add.w #15,d3
|
|
move.w 10(a4),a2
|
|
add.w 18(a1),a2
|
|
move.w a2,d5
|
|
sub.w d7,d5
|
|
move.w d5,a3
|
|
move.w (a4),d0
|
|
move.w 2(a4),d1
|
|
cmp.w #-16,d3
|
|
jge .L62
|
|
moveq #-15,d2
|
|
sub.w a0,d2
|
|
and.w #-16,d2
|
|
add.w d2,d0
|
|
sub.w d2,d4
|
|
add.w d2,d3
|
|
.L62:
|
|
move.w d3,a0
|
|
lea (a0,d4.w),a4
|
|
cmp.w #336,a4
|
|
jle .L63
|
|
add.w d4,d3
|
|
add.w #-336,d3
|
|
and.w #-16,d3
|
|
sub.w d3,d4
|
|
.L63:
|
|
tst.w d5
|
|
jlt .L79
|
|
tst.w d4
|
|
jle .L59
|
|
.L81:
|
|
tst.w d7
|
|
jle .L59
|
|
tst.w 88(a1)
|
|
jne .L80
|
|
move.w d7,a1
|
|
move.l a1,-(sp)
|
|
move.w d4,a1
|
|
move.l a1,-(sp)
|
|
move.w a3,a3
|
|
move.l a3,-(sp)
|
|
move.l a0,a1
|
|
ext.l d1
|
|
ext.l d0
|
|
move.l d6,a0
|
|
jsr _gfx_renderSprite
|
|
lea (12,sp),sp
|
|
.L59:
|
|
movem.l (sp)+,#31996
|
|
addq.l #8,sp
|
|
rts
|
|
.L79:
|
|
sub.w d5,d1
|
|
move.w a2,d7
|
|
sub.l a3,a3
|
|
tst.w d4
|
|
jgt .L81
|
|
jra .L59
|
|
.L80:
|
|
move.l a1,46(sp)
|
|
jsr _gfx_setupRenderTile
|
|
move.l 46(sp),a1
|
|
move.w 18(a1),d0
|
|
sub.w d7,d0
|
|
move.l 38(a1),a0
|
|
move.w 8(a0),d2
|
|
add.w 16(a1),d2
|
|
move.w d2,d5
|
|
asr.w #4,d5
|
|
move.w d0,d1
|
|
asr.w #4,d1
|
|
move.w d2,a0
|
|
lea (a0,d4.w),a5
|
|
move.l a5,d2
|
|
asr.l #4,d2
|
|
move.l d2,a5
|
|
move.w d0,a0
|
|
lea (a0,d7.w),a0
|
|
move.l a0,d4
|
|
asr.l #4,d4
|
|
move.w d5,d7
|
|
ext.l d7
|
|
cmp.l d2,d7
|
|
jgt .L59
|
|
move.w d1,a6
|
|
cmp.l d4,a6
|
|
jgt .L59
|
|
lsl.w #4,d5
|
|
move.l d7,d0
|
|
lsl.l #4,d0
|
|
lea (a6,d0.l),a3
|
|
add.l a3,a3
|
|
add.l #_level,a3
|
|
lsl.w #4,d1
|
|
move.w d1,50(sp)
|
|
lea _gfx_quickRenderTile,a4
|
|
move.l a3,a2
|
|
move.w 50(sp),d2
|
|
move.l a6,d3
|
|
.L68:
|
|
tst.w d2
|
|
jlt .L70
|
|
move.w d5,d0
|
|
sub.w _game_cameraX,d0
|
|
sub.w _game_screenScrollX,d0
|
|
move.w d0,d1
|
|
add.w #-322,d1
|
|
cmp.w #-338,d1
|
|
jhi .L82
|
|
.L70:
|
|
addq.l #1,d3
|
|
add.w #16,d2
|
|
addq.l #2,a2
|
|
cmp.l d4,d3
|
|
jle .L68
|
|
.L83:
|
|
addq.l #1,d7
|
|
add.w #16,d5
|
|
lea (32,a3),a3
|
|
cmp.l a5,d7
|
|
jgt .L59
|
|
move.l a3,a2
|
|
move.w 50(sp),d2
|
|
move.l a6,d3
|
|
jra .L68
|
|
.L82:
|
|
moveq #0,d1
|
|
move.w (a2),d1
|
|
move.l d1,a1
|
|
add.w #15,d0
|
|
add.l #_level+205160,a1
|
|
move.w d2,d1
|
|
ext.l d1
|
|
and.l #65535,d0
|
|
move.l d6,a0
|
|
jsr (a4)
|
|
addq.l #1,d3
|
|
add.w #16,d2
|
|
addq.l #2,a2
|
|
cmp.l d4,d3
|
|
jle .L68
|
|
jra .L83
|
|
.align 2
|
|
.globl _object_render
|
|
_object_render:
|
|
lea (-20,sp),sp
|
|
movem.l #16190,-(sp)
|
|
move.l a0,a6
|
|
move.w d0,50(sp)
|
|
moveq #0,d3
|
|
move.w d0,d3
|
|
move.l _object_activeList,a2
|
|
cmp.w #0,a2
|
|
jeq .L85
|
|
.L97:
|
|
move.l 8(a2),d2
|
|
move.l 78(a2),a1
|
|
cmp.w #0,a1
|
|
jeq .L86
|
|
move.l a2,a0
|
|
move.l d3,d0
|
|
jsr (a1)
|
|
.L86:
|
|
cmp.w #1,76(a2)
|
|
jeq .L161
|
|
move.l d2,a2
|
|
tst.l d2
|
|
jne .L97
|
|
.L166:
|
|
move.l _object_activeList,a4
|
|
move.l #_gfx_setupRenderTile,56(sp)
|
|
lea _gfx_setupRenderTile,a2
|
|
jsr (a2)
|
|
lea _gfx_quickRenderTile,a5
|
|
cmp.w #0,a4
|
|
jeq .L99
|
|
.L139:
|
|
tst.w 88(a4)
|
|
jne .L103
|
|
move.l 68(a4),a0
|
|
move.w 4(a0),d0
|
|
jne .L162
|
|
.L103:
|
|
move.l 8(a4),a4
|
|
cmp.w #0,a4
|
|
jne .L139
|
|
.L99:
|
|
move.l _object_activeList,a0
|
|
cmp.w #0,a0
|
|
jeq .L113
|
|
clr.w d1
|
|
lea _object_zBuffer,a5
|
|
.L112:
|
|
move.w d1,a1
|
|
move.l a1,d0
|
|
add.l a1,d0
|
|
add.l d0,d0
|
|
move.l a0,(a5,d0.l)
|
|
addq.w #1,d1
|
|
move.l 68(a0),a1
|
|
move.l 38(a0),a2
|
|
move.w 16(a0),d2
|
|
add.w 8(a2),d2
|
|
move.w d2,(a1)
|
|
move.w 6(a2),d0
|
|
move.w 18(a0),d2
|
|
sub.w d0,d2
|
|
move.w d2,2(a1)
|
|
move.w 4(a2),4(a1)
|
|
move.w d0,6(a1)
|
|
lea (52,a0),a2
|
|
cmp.l a1,a2
|
|
jeq .L163
|
|
move.l a2,68(a0)
|
|
move.l 8(a0),a0
|
|
cmp.w #0,a0
|
|
jne .L112
|
|
.L113:
|
|
move.w _object_count,d3
|
|
jle .L84
|
|
clr.w d7
|
|
lea _object_zBuffer,a5
|
|
move.l a5,d6
|
|
.L128:
|
|
move.w d7,a0
|
|
move.l a0,d0
|
|
add.l a0,d0
|
|
add.l d0,d0
|
|
move.l d6,a0
|
|
move.l (a0,d0.l),a3
|
|
cmp.w #1,76(a3)
|
|
jeq .L114
|
|
tst.w 86(a3)
|
|
jne .L164
|
|
.L116:
|
|
move.w 72(a3),d0
|
|
move.l 48(a3),a0
|
|
moveq #0,d1
|
|
move.w d0,d1
|
|
move.w 4(a0),a1
|
|
cmp.l d1,a1
|
|
jgt .L126
|
|
.L171:
|
|
move.w 36(a3),d0
|
|
addq.w #1,d0
|
|
move.w d0,36(a3)
|
|
clr.w 72(a3)
|
|
cmp.w 2(a0),d0
|
|
jle .L127
|
|
move.w (a0),d0
|
|
move.w d0,36(a3)
|
|
.L127:
|
|
move.w d0,a0
|
|
move.l a0,d0
|
|
add.l a0,d0
|
|
add.l a0,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
add.l #_object_imageAtlas,d0
|
|
move.l d0,38(a3)
|
|
.L114:
|
|
addq.w #1,d7
|
|
cmp.w d3,d7
|
|
jlt .L128
|
|
.L84:
|
|
movem.l (sp)+,#31996
|
|
lea (20,sp),sp
|
|
rts
|
|
.L161:
|
|
move.w 74(a2),d0
|
|
cmp.w #2,d0
|
|
jeq .L165
|
|
addq.w #1,d0
|
|
move.w d0,74(a2)
|
|
move.l d2,a2
|
|
tst.l d2
|
|
jne .L97
|
|
jra .L166
|
|
.L162:
|
|
move.w 2(a0),d3
|
|
move.w (a0),d2
|
|
move.w d2,d5
|
|
asr.w #4,d5
|
|
move.w d3,d1
|
|
asr.w #4,d1
|
|
move.w d2,a1
|
|
lea (a1,d0.w),a1
|
|
move.l a1,d0
|
|
asr.l #4,d0
|
|
move.l d0,46(sp)
|
|
move.w 6(a0),a0
|
|
lea (a0,d3.w),a0
|
|
move.l a0,d4
|
|
asr.l #4,d4
|
|
move.w d5,d6
|
|
ext.l d6
|
|
cmp.l d0,d6
|
|
jgt .L103
|
|
move.w d1,d7
|
|
ext.l d7
|
|
cmp.l d4,d7
|
|
jgt .L103
|
|
lsl.w #4,d5
|
|
move.l d6,d0
|
|
lsl.l #4,d0
|
|
move.l d0,a3
|
|
add.l d7,a3
|
|
add.l a3,a3
|
|
add.l #_level,a3
|
|
lsl.w #4,d1
|
|
move.l a4,52(sp)
|
|
move.w d1,a4
|
|
.L105:
|
|
move.l a3,a2
|
|
move.w a4,d2
|
|
move.l d7,d3
|
|
.L104:
|
|
tst.w d2
|
|
jlt .L106
|
|
move.w d5,d0
|
|
sub.w _game_cameraX,d0
|
|
sub.w _game_screenScrollX,d0
|
|
move.w d0,d1
|
|
add.w #-322,d1
|
|
cmp.w #-338,d1
|
|
jhi .L167
|
|
.L106:
|
|
addq.l #1,d3
|
|
add.w #16,d2
|
|
addq.l #2,a2
|
|
cmp.l d4,d3
|
|
jle .L104
|
|
.L168:
|
|
addq.l #1,d6
|
|
add.w #16,d5
|
|
lea (32,a3),a3
|
|
cmp.l 46(sp),d6
|
|
jle .L105
|
|
move.l 52(sp),a4
|
|
move.l 8(a4),a4
|
|
cmp.w #0,a4
|
|
jne .L139
|
|
jra .L99
|
|
.L167:
|
|
moveq #0,d1
|
|
move.w (a2),d1
|
|
move.l d1,a1
|
|
add.w #15,d0
|
|
add.l #_level+205160,a1
|
|
move.w d2,d1
|
|
ext.l d1
|
|
and.l #65535,d0
|
|
move.l a6,a0
|
|
jsr (a5)
|
|
addq.l #1,d3
|
|
add.w #16,d2
|
|
addq.l #2,a2
|
|
cmp.l d4,d3
|
|
jle .L104
|
|
jra .L168
|
|
.L163:
|
|
lea (60,a0),a2
|
|
move.l a2,68(a0)
|
|
move.l 8(a0),a0
|
|
cmp.w #0,a0
|
|
jne .L112
|
|
jra .L113
|
|
.L164:
|
|
move.l 38(a3),a4
|
|
move.w 4(a4),d4
|
|
move.w 6(a4),d5
|
|
move.w _game_cameraX,a1
|
|
add.w _game_screenScrollX,a1
|
|
move.w 16(a3),a2
|
|
sub.w a1,a2
|
|
move.w a2,a1
|
|
add.w 8(a4),a1
|
|
move.w a1,d2
|
|
add.w #15,d2
|
|
move.w 10(a4),a2
|
|
add.w 18(a3),a2
|
|
move.w a2,d0
|
|
sub.w d5,d0
|
|
move.w d0,a5
|
|
move.w (a4),a0
|
|
move.w 2(a4),46(sp)
|
|
cmp.w #-16,d2
|
|
jge .L117
|
|
moveq #-15,d1
|
|
sub.w a1,d1
|
|
and.w #-16,d1
|
|
add.w d1,a0
|
|
sub.w d1,d4
|
|
add.w d1,d2
|
|
.L117:
|
|
move.w d2,a1
|
|
lea (a1,d4.w),a4
|
|
cmp.w #336,a4
|
|
jle .L118
|
|
add.w d4,d2
|
|
add.w #-336,d2
|
|
and.w #-16,d2
|
|
sub.w d2,d4
|
|
.L118:
|
|
tst.w d0
|
|
jlt .L169
|
|
.L119:
|
|
tst.w d4
|
|
jle .L116
|
|
tst.w d5
|
|
jle .L116
|
|
tst.w 88(a3)
|
|
jne .L170
|
|
move.w d5,a2
|
|
move.l a2,-(sp)
|
|
move.w d4,a2
|
|
move.l a2,-(sp)
|
|
move.w a5,a5
|
|
move.l a5,-(sp)
|
|
move.w 58(sp),d1
|
|
ext.l d1
|
|
move.w a0,d0
|
|
ext.l d0
|
|
move.l a6,a0
|
|
jsr _gfx_renderSprite
|
|
lea (12,sp),sp
|
|
.L156:
|
|
move.w _object_count,d3
|
|
move.w 72(a3),d0
|
|
move.l 48(a3),a0
|
|
moveq #0,d1
|
|
move.w d0,d1
|
|
move.w 4(a0),a1
|
|
cmp.l d1,a1
|
|
jle .L171
|
|
.L126:
|
|
add.w 50(sp),d0
|
|
move.w d0,72(a3)
|
|
addq.w #1,d7
|
|
cmp.w d3,d7
|
|
jlt .L128
|
|
jra .L84
|
|
.L169:
|
|
sub.w d0,46(sp)
|
|
move.w a2,d5
|
|
sub.l a5,a5
|
|
jra .L119
|
|
.L165:
|
|
cmp.l _game_player1.l,a2
|
|
jeq .L172
|
|
cmp.l _game_player2.l,a2
|
|
jeq .L173
|
|
.L90:
|
|
move.l 82(a2),a1
|
|
cmp.w #0,a1
|
|
jeq .L91
|
|
move.l 4(a2),a0
|
|
jsr (a1)
|
|
.L91:
|
|
move.l 12(a2),a0
|
|
cmp.w #0,a0
|
|
jeq .L174
|
|
move.l 8(a2),8(a0)
|
|
move.l 8(a2),a1
|
|
cmp.w #0,a1
|
|
jeq .L94
|
|
move.l a0,12(a1)
|
|
.L94:
|
|
subq.w #1,_object_count
|
|
move.l _object_freeList,a0
|
|
cmp.w #0,a0
|
|
jeq .L175
|
|
move.l a0,8(a2)
|
|
move.l a2,12(a0)
|
|
clr.l 12(a2)
|
|
move.l a2,_object_freeList
|
|
move.l d2,a2
|
|
tst.l d2
|
|
jne .L97
|
|
jra .L166
|
|
.L170:
|
|
move.l 56(sp),a2
|
|
jsr (a2)
|
|
move.w 18(a3),d0
|
|
sub.w d5,d0
|
|
move.l 38(a3),a0
|
|
move.w 8(a0),d3
|
|
add.w 16(a3),d3
|
|
move.w d3,d2
|
|
asr.w #4,d2
|
|
move.w d0,d1
|
|
asr.w #4,d1
|
|
move.w d3,a0
|
|
lea (a0,d4.w),a0
|
|
move.l a0,d3
|
|
asr.l #4,d3
|
|
move.w d0,a0
|
|
lea (a0,d5.w),a0
|
|
move.l a0,d4
|
|
asr.l #4,d4
|
|
move.w d2,a5
|
|
cmp.l d3,a5
|
|
jgt .L156
|
|
move.w d1,a0
|
|
cmp.l d4,a0
|
|
jgt .L156
|
|
move.w d2,d5
|
|
lsl.w #4,d5
|
|
move.l a5,d0
|
|
lsl.l #4,d0
|
|
lea (a0,d0.l),a4
|
|
add.l a4,a4
|
|
add.l #_level,a4
|
|
lsl.w #4,d1
|
|
move.l a3,46(sp)
|
|
move.w d7,52(sp)
|
|
move.l a0,d7
|
|
move.w d1,a3
|
|
move.l d6,60(sp)
|
|
move.l d3,d6
|
|
.L123:
|
|
move.l a4,a2
|
|
move.w a3,d2
|
|
move.l d7,d3
|
|
.L122:
|
|
tst.w d2
|
|
jlt .L124
|
|
move.w d5,d0
|
|
sub.w _game_cameraX,d0
|
|
sub.w _game_screenScrollX,d0
|
|
move.w d0,d1
|
|
add.w #-322,d1
|
|
cmp.w #-338,d1
|
|
jhi .L176
|
|
.L124:
|
|
addq.l #1,d3
|
|
add.w #16,d2
|
|
addq.l #2,a2
|
|
cmp.l d4,d3
|
|
jle .L122
|
|
.L177:
|
|
addq.l #1,a5
|
|
add.w #16,d5
|
|
lea (32,a4),a4
|
|
cmp.l d6,a5
|
|
jle .L123
|
|
move.l 46(sp),a3
|
|
move.w 52(sp),d7
|
|
move.l 60(sp),d6
|
|
move.w _object_count,d3
|
|
jra .L116
|
|
.L176:
|
|
moveq #0,d1
|
|
move.w (a2),d1
|
|
move.l d1,a1
|
|
add.w #15,d0
|
|
add.l #_level+205160,a1
|
|
move.w d2,d1
|
|
ext.l d1
|
|
and.l #65535,d0
|
|
move.l a6,a0
|
|
jsr _gfx_quickRenderTile
|
|
addq.l #1,d3
|
|
add.w #16,d2
|
|
addq.l #2,a2
|
|
cmp.l d4,d3
|
|
jle .L122
|
|
jra .L177
|
|
.L173:
|
|
clr.l _game_player2
|
|
jra .L90
|
|
.L85:
|
|
move.l #_gfx_setupRenderTile,56(sp)
|
|
lea _gfx_setupRenderTile,a2
|
|
jsr (a2)
|
|
jra .L99
|
|
.L172:
|
|
clr.l _game_player1
|
|
jra .L90
|
|
.L174:
|
|
move.l 8(a2),a0
|
|
move.l a0,_object_activeList
|
|
jeq .L94
|
|
clr.l 12(a0)
|
|
jra .L94
|
|
.L175:
|
|
move.l a2,_object_freeList
|
|
clr.l 8(a2)
|
|
clr.l 12(a2)
|
|
move.l d2,a2
|
|
tst.l d2
|
|
jne .L97
|
|
jra .L166
|
|
.align 2
|
|
.globl _object_restoreBackground
|
|
_object_restoreBackground:
|
|
subq.l #8,sp
|
|
movem.l #16190,-(sp)
|
|
move.l a0,a5
|
|
move.l _object_activeList,a4
|
|
jsr _gfx_setupRenderTile
|
|
lea _gfx_quickRenderTile,a6
|
|
cmp.w #0,a4
|
|
jeq .L178
|
|
.L190:
|
|
tst.w 88(a4)
|
|
jne .L183
|
|
move.l 68(a4),a0
|
|
move.w 4(a0),d0
|
|
jne .L199
|
|
.L183:
|
|
move.l 8(a4),a4
|
|
cmp.w #0,a4
|
|
jne .L190
|
|
.L178:
|
|
movem.l (sp)+,#31996
|
|
addq.l #8,sp
|
|
rts
|
|
.L199:
|
|
move.w 2(a0),d3
|
|
move.w (a0),d2
|
|
move.w d2,d5
|
|
asr.w #4,d5
|
|
move.w d3,d1
|
|
asr.w #4,d1
|
|
move.w d2,a1
|
|
lea (a1,d0.w),a1
|
|
move.l a1,d0
|
|
asr.l #4,d0
|
|
move.l d0,44(sp)
|
|
move.w 6(a0),a0
|
|
lea (a0,d3.w),a0
|
|
move.l a0,d4
|
|
asr.l #4,d4
|
|
move.w d5,d6
|
|
ext.l d6
|
|
cmp.l d0,d6
|
|
jgt .L183
|
|
move.w d1,d7
|
|
ext.l d7
|
|
cmp.l d4,d7
|
|
jgt .L183
|
|
lsl.w #4,d5
|
|
move.l d6,d0
|
|
lsl.l #4,d0
|
|
move.l d0,a3
|
|
add.l d7,a3
|
|
add.l a3,a3
|
|
add.l #_level,a3
|
|
lsl.w #4,d1
|
|
move.l a4,48(sp)
|
|
move.w d1,a4
|
|
.L185:
|
|
move.l a3,a2
|
|
move.w a4,d2
|
|
move.l d7,d3
|
|
.L184:
|
|
tst.w d2
|
|
jlt .L186
|
|
move.w d5,d0
|
|
sub.w _game_cameraX,d0
|
|
sub.w _game_screenScrollX,d0
|
|
move.w d0,d1
|
|
add.w #-322,d1
|
|
cmp.w #-338,d1
|
|
jhi .L200
|
|
.L186:
|
|
addq.l #1,d3
|
|
add.w #16,d2
|
|
addq.l #2,a2
|
|
cmp.l d4,d3
|
|
jle .L184
|
|
.L201:
|
|
addq.l #1,d6
|
|
add.w #16,d5
|
|
lea (32,a3),a3
|
|
cmp.l 44(sp),d6
|
|
jle .L185
|
|
move.l 48(sp),a4
|
|
move.l 8(a4),a4
|
|
cmp.w #0,a4
|
|
jne .L190
|
|
jra .L178
|
|
.L200:
|
|
moveq #0,d1
|
|
move.w (a2),d1
|
|
move.l d1,a1
|
|
add.w #15,d0
|
|
add.l #_level+205160,a1
|
|
move.w d2,d1
|
|
ext.l d1
|
|
and.l #65535,d0
|
|
move.l a5,a0
|
|
jsr (a6)
|
|
addq.l #1,d3
|
|
add.w #16,d2
|
|
addq.l #2,a2
|
|
cmp.l d4,d3
|
|
jle .L184
|
|
jra .L201
|
|
.align 2
|
|
.globl _object_collision
|
|
_object_collision:
|
|
movem.l #16190,-(sp)
|
|
move.l a0,a3
|
|
move.l a1,a5
|
|
move.w 50(sp),d4
|
|
move.w 28(a0),a1
|
|
move.w 26(a0),a0
|
|
cmp.w #2,d0
|
|
jeq .L214
|
|
.L203:
|
|
move.l _object_activeList,a2
|
|
clr.l 12(a5)
|
|
clr.l 8(a5)
|
|
clr.l 4(a5)
|
|
clr.l (a5)
|
|
move.w 24(a3),a4
|
|
lea (a4,a1.w),a4
|
|
move.l a4,d0
|
|
jpl .L216
|
|
addq.l #1,d0
|
|
.L216:
|
|
asr.l #1,d0
|
|
move.l d0,a4
|
|
move.w d0,d5
|
|
move.w 22(a3),a1
|
|
lea (a1,a0.w),a0
|
|
move.l a0,d0
|
|
jpl .L217
|
|
addq.l #1,d0
|
|
.L217:
|
|
asr.l #1,d0
|
|
move.w 90(a3),a0
|
|
move.w a0,d6
|
|
sub.w d1,d6
|
|
add.w d0,d6
|
|
move.w 92(a3),d2
|
|
add.w d1,d2
|
|
sub.w a0,d2
|
|
add.w d0,d2
|
|
clr.w d7
|
|
cmp.w #0,a2
|
|
jeq .L202
|
|
lea _abs,a6
|
|
and.l #65535,d4
|
|
.L209:
|
|
tst.w 94(a2)
|
|
jeq .L205
|
|
cmp.l a3,a2
|
|
jeq .L205
|
|
move.w 18(a2),d3
|
|
move.l a4,a0
|
|
sub.w d3,a0
|
|
move.l a0,d0
|
|
jsr (a6)
|
|
cmp.l d0,d4
|
|
jlt .L205
|
|
move.w 16(a2),d1
|
|
move.w 90(a2),a0
|
|
move.w d1,d0
|
|
sub.w a0,d0
|
|
add.w 92(a2),d0
|
|
cmp.w d6,d0
|
|
jle .L205
|
|
add.w a0,d1
|
|
cmp.w d2,d1
|
|
jge .L205
|
|
cmp.w d5,d3
|
|
jlt .L206
|
|
move.l a2,(a5)
|
|
cmp.w d6,d1
|
|
jlt .L208
|
|
.L215:
|
|
move.l a2,12(a5)
|
|
moveq #1,d7
|
|
.L205:
|
|
move.l 8(a2),a2
|
|
cmp.w #0,a2
|
|
jne .L209
|
|
.L202:
|
|
move.w d7,d0
|
|
movem.l (sp)+,#31996
|
|
rts
|
|
.L214:
|
|
add.w a0,a0
|
|
add.w a1,a1
|
|
jra .L203
|
|
.L206:
|
|
move.l a2,4(a5)
|
|
cmp.w d6,d1
|
|
jge .L215
|
|
.L208:
|
|
move.l a2,8(a5)
|
|
moveq #1,d7
|
|
move.l 8(a2),a2
|
|
cmp.w #0,a2
|
|
jne .L209
|
|
jra .L202
|
|
.align 2
|
|
.globl _object_add
|
|
_object_add:
|
|
movem.l #12344,-(sp)
|
|
move.l 24(sp),d3
|
|
move.l 28(sp),a3
|
|
move.w d1,d2
|
|
move.l _object_freeList,a2
|
|
move.l 8(a2),a4
|
|
move.l a4,_object_freeList
|
|
jeq .L219
|
|
clr.l 12(a4)
|
|
.L219:
|
|
clr.w 76(a2)
|
|
move.w d1,2(a2)
|
|
move.w #1,86(a2)
|
|
move.w d0,(a2)
|
|
move.w d3,26(a2)
|
|
clr.w 28(a2)
|
|
lea (52,a2),a4
|
|
move.l a4,68(a2)
|
|
clr.w 56(a2)
|
|
clr.w 64(a2)
|
|
move.w a3,a4
|
|
move.l a4,d0
|
|
add.l a4,d0
|
|
add.l d0,d0
|
|
add.l a4,d0
|
|
add.l d0,d0
|
|
move.l d0,d1
|
|
add.l #_object_animations,d1
|
|
move.l d1,48(a2)
|
|
move.w a3,44(a2)
|
|
move.w a3,42(a2)
|
|
lea _object_animations,a3
|
|
move.w (a3,d0.l),d0
|
|
move.w d0,36(a2)
|
|
move.w d0,a3
|
|
move.l a3,d0
|
|
add.l a3,d0
|
|
add.l a3,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
add.l #_object_imageAtlas,d0
|
|
move.l d0,38(a2)
|
|
move.w a0,d0
|
|
add.w a0,d0
|
|
move.w d0,22(a2)
|
|
move.w a0,16(a2)
|
|
move.w a1,d0
|
|
add.w a1,d0
|
|
move.w d0,24(a2)
|
|
move.w a1,18(a2)
|
|
move.w a1,20(a2)
|
|
clr.w 72(a2)
|
|
clr.w 74(a2)
|
|
move.l 32(sp),78(a2)
|
|
move.l 36(sp),4(a2)
|
|
move.l 40(sp),82(a2)
|
|
clr.w 88(a2)
|
|
cmp.w #1,d2
|
|
sls d0
|
|
ext.w d0
|
|
neg.w d0
|
|
move.w d0,94(a2)
|
|
addq.w #1,_object_count
|
|
move.l _object_activeList,a0
|
|
cmp.w #0,a0
|
|
jeq .L227
|
|
move.l a0,8(a2)
|
|
move.l a2,12(a0)
|
|
clr.l 12(a2)
|
|
move.l a2,_object_activeList
|
|
move.l a2,d0
|
|
movem.l (sp)+,#7180
|
|
rts
|
|
.L227:
|
|
move.l a2,_object_activeList
|
|
clr.l 8(a2)
|
|
clr.l 12(a2)
|
|
move.l a2,d0
|
|
movem.l (sp)+,#7180
|
|
rts
|
|
.comm _object_zBuffer,48
|
|
.lcomm _object_buffer,1152
|
|
.lcomm _object_freeList,4
|
|
.comm _object_activeList,4
|
|
.comm _object_count,2
|