00000200 4e71	nop	
00000202 4e71	nop	
00000204 60fa	bra.s	ErrorTrap
00000206 4ab900a10008	tst.l	(HW_Port_1_Control-1).l
0000020c 6606	bne.s	PortA_Ok
0000020e 4a7900a1000c	tst.w	(HW_Expansion_Control-1).l
00000214 667c	bne.s	PortC_OK
00000216 4bfa007c	lea	SetupValues(pc),a5
0000021a 4c9d00e0	movem.w	(a5)+,d5-d7
0000021e 4cdd1f00	movem.l	(a5)+,a0-a4
00000222 1029ef01	move.b	HW_Version-Z80_Bus_Request(a1),d0
00000226 0200000f	andi.b	#$F,d0
0000022a 6708	beq.s	SkipSecurity
0000022c 237c534547412f00	move.l	#'SEGA',Security_Addr-Z80_Bus_Request(a1)
00000234 3014	move.w	(a4),d0
00000236 7000	moveq	#0,d0
00000238 2c40	movea.l	d0,a6
0000023a 4e66	move.l	a6,usp
0000023c 7217	moveq	#VDPInitValues_End-VDPInitValues-1,d1
0000023e 1a1d	move.b	(a5)+,d5
00000240 3885	move.w	d5,(a4)
00000242 da47	add.w	d7,d5
00000244 51c9fff8	dbf	d1,VDPInitLoop
00000248 289d	move.l	(a5)+,(a4)
0000024a 3680	move.w	d0,(a3)
0000024c 3287	move.w	d7,(a1)
0000024e 3487	move.w	d7,(a2)
00000250 0111	btst	d0,(a1)
00000252 66fc	bne.s	WaitForZ80
00000254 7425	moveq	#Z80StartupCodeEnd-Z80StartupCodeBegin-1,d2
00000256 10dd	move.b	(a5)+,(a0)+
00000258 51cafffc	dbf	d2,Z80InitLoop
0000025c 3480	move.w	d0,(a2)
0000025e 3280	move.w	d0,(a1)
00000260 3487	move.w	d7,(a2)
00000262 2d00	move.l	d0,-(a6)
00000264 51cefffc	dbf	d6,ClrRAMLoop
00000268 289d	move.l	(a5)+,(a4)
0000026a 289d	move.l	(a5)+,(a4)
0000026c 761f	moveq	#bytesToLcnt($80),d3
0000026e 2680	move.l	d0,(a3)
00000270 51cbfffc	dbf	d3,ClrCRAMLoop
00000274 289d	move.l	(a5)+,(a4)
00000276 7813	moveq	#bytesToLcnt($50),d4
00000278 2680	move.l	d0,(a3)
0000027a 51ccfffc	dbf	d4,ClrVSRAMLoop
0000027e 7a03	moveq	#PSGInitValues_End-PSGInitValues-1,d5
00000280 175d0011	move.b	(a5)+,PSG_input-VDP_data_port(a3)
00000284 51cdfffa	dbf	d5,PSGInitLoop
00000288 3480	move.w	d0,(a2)
0000028a 4cd67fff	movem.l	(a6),d0-a6
0000028e 46fc2700	move	#$2700,sr
00000292 606c	bra.s	GameProgram
00000300 4a7900c00004	tst.w	(VDP_control_port).l
00000306 323900c00004	move.w	(VDP_control_port).l,d1
0000030c 08010001	btst	#1,d1
00000310 66f4	bne.s	CheckSumCheck
00000312 0839000600a1000d	btst	#6,(HW_Expansion_Control).l
0000031a 670c	beq.s	ChecksumTest
0000031c 0cb8696e6974fffc	cmpi.l	#'init',(Checksum_fourcc).w
00000324 6700004a	beq.w	GameInit
00000328 207c00000200	movea.l	#EndOfHeader,a0
0000032e 227c000001a4	movea.l	#ROMEndLoc,a1
00000334 2011	move.l	(a1),d0
00000336 7200	moveq	#0,d1
00000338 d258	add.w	(a0)+,d1
0000033a b088	cmp.l	a0,d0
0000033c 64fa	bhs.s	ChecksumLoop
0000033e 227c0000018e	movea.l	#Checksum,a1
00000344 b251	cmp.w	(a1),d1
00000346 66000086	bne.w	ChecksumError
0000034a 4df8fe00	lea	(CrossResetRAM).w,a6
0000034e 7e00	moveq	#0,d7
00000350 3c3c007f	move.w	#bytesToLcnt(CrossResetRAM_End-CrossResetRAM),d6
00000356 51cefffc	dbf	d6,-
0000035a 103900a10001	move.b	(HW_Version).l,d0
00000360 020000c0	andi.b	#$C0,d0
00000364 11c0fff8	move.b	d0,(Graphics_Flags).w
00000368 21fc696e6974fffc	move.l	#'init',(Checksum_fourcc).w
00000370 4df900ff0000	lea	(RAM_Start&$FFFFFF).l,a6
00000376 7e00	moveq	#0,d7
00000378 3c3c3f7f	move.w	#bytesToLcnt(CrossResetRAM-RAM_Start),d6
0000037c 2cc7	move.l	d7,(a6)+
0000037e 51cefffc	dbf	d6,GameClrRAM
00000382 61000dd4	bsr.w	VDPSetupGame
00000386 61000f82	bsr.w	JmpTo_SoundDriverLoad
0000038a 61000d60	bsr.w	JoypadInit
0000038e 11fc0000f600	move.b	#GameModeID_SegaScreen,(Game_Mode).w
00000394 1038f600	move.b	(Game_Mode).w,d0
00000398 0240003c	andi.w	#$3C,d0
0000039c 4ebb0004	jsr	GameModesArray(pc,d0.w)
000003a0 60f2	bra.s	MainGameLoop
000003a2 60003414	bra.w	SegaScreen
000003a6 600035f0	bra.w	TitleScreen
000003aa 60003b18	bra.w	Level
000003ae 60003b14	bra.w	Level
000003b2 60004bb0	bra.w	SpecialStage
000003ba 60007994	bra.w	TwoPlayerResults
000003be 60000030	bra.w	LevelSelectMenu2P
000003c6 60000034	bra.w	OptionsMenu
000003ca 60000036	bra.w	LevelSelectMenu
000003ce 2f01	move.l	d1,-(sp)
000003d0 61000d86	bsr.w	VDPSetupGame
000003d4 221f	move.l	(sp)+,d1
000003d6 23fcc000000000c00004	move.l	#vdpComm($0000,CRAM,WRITE),(VDP_control_port).l
000003e0 7e3f	moveq	#16*4-1,d7
000003e2 33fc000e00c00000	move.w	#$00E,(VDP_data_port).l
000003ea 51cffff6	dbf	d7,Checksum_Red
000003ee 60fe	bra.s	ChecksumFailed_Loop
000003f0 4ef900008bd4	jmp	(MenuScreen).l
000003f6 4ef900009c7c	jmp	(EndingSequence).l
000003fc 4ef900008bd4	jmp	(MenuScreen).l
00000402 4ef900008bd4	jmp	(MenuScreen).l
00000408 48e7fffe	movem.l	d0-a6,-(sp)
0000040c 4a38f62a	tst.b	(Vint_routine).w
00000410 67000072	beq.w	Vint_Lag
0000041a 02400008	andi.w	#8,d0
0000041e 67f4	beq.s	-
00000420 23fc4000001000c00004	move.l	#vdpComm($0000,VSRAM,WRITE),(VDP_control_port).l
0000042a 23f8f61600c00000	move.l	(Vscroll_Factor).w,(VDP_data_port).l
00000432 08380006fff8	btst	#6,(Graphics_Flags).w
00000438 6708	beq.s	+
0000043a 303c0700	move.w	#$700,d0
00000442 1038f62a	move.b	(Vint_routine).w,d0
00000446 11fc0000f62a	move.b	#VintID_Lag,(Vint_routine).w
0000044c 31fc0001f644	move.w	#1,(Hint_flag).w
00000452 0240003e	andi.w	#$3E,d0
00000456 303b0010	move.w	Vint_SwitchTbl(pc,d0.w),d0
0000045a 4ebb000c	jsr	Vint_SwitchTbl(pc,d0.w)
0000045e 52b8fe0c	addq.l	#1,(Vint_runcount).w
00000462 4cdf7fff	movem.l	(sp)+,d0-a6
00000466 4e73	rte	
00000484 0c380088f600	cmpi.b	#GameModeID_TitleCard|GameModeID_Demo,(Game_Mode).w
0000048a 6738	beq.s	.isInLevelMode
0000048c 0c38008cf600	cmpi.b	#GameModeID_TitleCard|GameModeID_Level,(Game_Mode).w
00000492 6730	beq.s	.isInLevelMode
00000494 0c380008f600	cmpi.b	#GameModeID_Demo,(Game_Mode).w
0000049a 6728	beq.s	.isInLevelMode
0000049c 0c38000cf600	cmpi.b	#GameModeID_Level,(Game_Mode).w
000004a2 6720	beq.s	.isInLevelMode
000004a4 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
000004ac 0839000000a11100	btst	#0,(Z80_Bus_Request).l
000004b4 66f6	bne.s	.loop
000004b6 61000bcc	bsr.w	sndDriverInput
000004ba 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
000004c2 609a	bra.s	VintRet
000004c4 4a38f730	tst.b	(Water_flag).w
000004c8 6700009c	beq.w	Vint0_noWater
000004cc 303900c00004	move.w	(VDP_control_port).l,d0
000004d2 08380006fff8	btst	#6,(Graphics_Flags).w
000004d8 6708	beq.s	+
000004da 303c0700	move.w	#$700,d0
000004e2 31fc0001f644	move.w	#1,(Hint_flag).w
000004e8 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
000004f0 0839000000a11100	btst	#0,(Z80_Bus_Request).l
000004f8 66f6	bne.s	.loop
000004fa 4a38f64e	tst.b	(Water_fullscreen_flag).w
000004fe 6626	bne.s	.useUnderwaterPalette
00000500 4bf900c00004	lea	(VDP_control_port).l,a5
00000506 2abc94009340	move.l	#(($9400|((((palette_line_size*4)>>1)&$FF00)>>8))<<16)|($9300|(((palette_line_size*4)>>1)&$FF)),(a5)
0000050c 2abc96fd9580	move.l	#(($9600|((((Normal_palette)>>1)&$FF00)>>8))<<16)|($9500|(((Normal_palette)>>1)&$FF)),(a5)
00000512 3abc977f	move.w	#$9700|(((((Normal_palette)>>1)&$FF0000)>>16)&$7F),(a5)
00000516 3abcc000	move.w	#((vdpComm($0000,CRAM,DMA)>>16)&$FFFF),(a5)
0000051a 31fc0080f640	move.w	#(vdpComm($0000,CRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000520 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000524 6024	bra.s	.afterSetPalette
00000526 4bf900c00004	lea	(VDP_control_port).l,a5
0000052c 2abc94009340	move.l	#(($9400|((((palette_line_size*4)>>1)&$FF00)>>8))<<16)|($9300|(((palette_line_size*4)>>1)&$FF)),(a5)
00000532 2abc96f89540	move.l	#(($9600|((((Underwater_palette)>>1)&$FF00)>>8))<<16)|($9500|(((Underwater_palette)>>1)&$FF)),(a5)
00000538 3abc977f	move.w	#$9700|(((((Underwater_palette)>>1)&$FF0000)>>16)&$7F),(a5)
0000053c 3abcc000	move.w	#((vdpComm($0000,CRAM,DMA)>>16)&$FFFF),(a5)
00000540 31fc0080f640	move.w	#(vdpComm($0000,CRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000546 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
0000054a 3ab8f624	move.w	(Hint_counter_reserve).w,(a5)
0000054e 33fc823000c00004	move.w	#$8200|(VRAM_Plane_A_Name_Table/$400),(VDP_control_port).l
00000556 61000b2c	bsr.w	sndDriverInput
0000055a 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
00000562 6000fefa	bra.w	VintRet
00000566 303900c00004	move.w	(VDP_control_port).l,d0
0000056c 23fc4000001000c00004	move.l	#vdpComm($0000,VSRAM,WRITE),(VDP_control_port).l
00000576 23f8f61600c00000	move.l	(Vscroll_Factor).w,(VDP_data_port).l
0000057e 08380006fff8	btst	#6,(Graphics_Flags).w
00000584 6708	beq.s	+
00000586 303c0700	move.w	#$700,d0
0000058e 31fc0001f644	move.w	#1,(Hint_flag).w
00000594 33f8f62400c00004	move.w	(Hint_counter_reserve).w,(VDP_control_port).l
0000059c 33fc823000c00004	move.w	#$8200|(VRAM_Plane_A_Name_Table/$400),(VDP_control_port).l
000005a4 21f8f61eeeec	move.l	(Vscroll_Factor_P2).w,(Vscroll_Factor_P2_HInt).w
000005aa 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
000005b2 0839000000a11100	btst	#0,(Z80_Bus_Request).l
000005ba 66f6	bne.s	.loop
000005bc 4bf900c00004	lea	(VDP_control_port).l,a5
000005c2 2abc94019340	move.l	#(($9400|((((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF)),(a5)
000005c8 2abc96fc9500	move.l	#(($9600|((((Sprite_Table)>>1)&$FF00)>>8))<<16)|($9500|(((Sprite_Table)>>1)&$FF)),(a5)
000005ce 3abc977f	move.w	#$9700|(((((Sprite_Table)>>1)&$FF0000)>>16)&$7F),(a5)
000005d2 3abc7800	move.w	#((vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)>>16)&$FFFF),(a5)
000005d6 31fc0083f640	move.w	#(vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
000005dc 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
000005e0 61000aa2	bsr.w	sndDriverInput
000005e4 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
000005ec 6000fe70	bra.w	VintRet
000005f0 610008a6	bsr.w	Do_ControllerPal
000005f4 4bf900c00004	lea	(VDP_control_port).l,a5
000005fa 2abc940193c0	move.l	#(($9400|((((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF)),(a5)
00000600 2abc96f09500	move.l	#(($9600|((((Horiz_Scroll_Buf)>>1)&$FF00)>>8))<<16)|($9500|(((Horiz_Scroll_Buf)>>1)&$FF)),(a5)
00000606 3abc977f	move.w	#$9700|(((((Horiz_Scroll_Buf)>>1)&$FF0000)>>16)&$7F),(a5)
0000060a 3abc7c00	move.w	#((vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)>>16)&$FFFF),(a5)
0000060e 31fc0083f640	move.w	#(vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000614 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
0000061c 4a78f614	tst.w	(Demo_Time_left).w
00000620 67000006	beq.w	+
00000624 5378f614	subq.w	#1,(Demo_Time_left).w
00000628 4e75	rts	
0000062a 1038fe0f	move.b	(Vint_runcount+3).w,d0
0000062e 0240000f	andi.w	#$F,d0
00000632 661e	bne.s	+
00000634 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
0000063c 0839000000a11100	btst	#0,(Z80_Bus_Request).l
00000644 66f6	bne.s	.loop
00000646 61000ad4	bsr.w	ReadJoypads
0000064a 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
00000652 4a78f614	tst.w	(Demo_Time_left).w
00000656 67000006	beq.w	+
0000065a 5378f614	subq.w	#1,(Demo_Time_left).w
0000065e 4e75	rts	
00000660 61000836	bsr.w	Do_ControllerPal
00000664 6100107a	bsr.w	ProcessDPLC
00000668 4a78f614	tst.w	(Demo_Time_left).w
0000066c 67000006	beq.w	+
00000670 5378f614	subq.w	#1,(Demo_Time_left).w
00000674 4e75	rts	
00000676 61000820	bsr.w	Do_ControllerPal
0000067a 4e75	rts	
0000067c 0c380010f600	cmpi.b	#GameModeID_SpecialStage,(Game_Mode).w
00000682 6700017e	beq.w	Vint_Pause_specialStage
00000686 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
0000068e 0839000000a11100	btst	#0,(Z80_Bus_Request).l
00000696 66f6	bne.s	.loop
00000698 61000a82	bsr.w	ReadJoypads
0000069c 4a38f622	tst.b	(Teleport_timer).w
000006a0 6756	beq.s	.setNormalOrUnderwaterPalette
000006a2 4bf900c00004	lea	(VDP_control_port).l,a5
000006a8 4a78f63a	tst.w	(Game_paused).w
000006ac 6600009a	bne.w	.afterPaletteSetup
000006b0 5338f622	subq.b	#1,(Teleport_timer).w
000006b4 6606	bne.s	+
000006b6 11fc0000f623	move.b	#0,(Teleport_flag).w
000006bc 0c380010f622	cmpi.b	#16,(Teleport_timer).w
000006c2 6534	blo.s	.setNormalOrUnderwaterPalette
000006c4 4df900c00000	lea	(VDP_data_port).l,a6
000006ca 23fcc000000000c00004	move.l	#vdpComm($0000,CRAM,WRITE),(VDP_control_port).l
000006d4 303c0eee	move.w	#$EEE,d0
000006d8 323c001f	move.w	#16*2-1,d1
000006de 51c9fffc	dbf	d1,-
000006e2 23fcc042000000c00004	move.l	#vdpComm($0042,CRAM,WRITE),(VDP_control_port).l
000006ec 323c001f	move.w	#32-1,d1
000006f2 51c9fffc	dbf	d1,-
000006f6 6050	bra.s	.afterPaletteSetup
000006f8 4a38f64e	tst.b	(Water_fullscreen_flag).w
000006fc 6626	bne.s	.useUnderwaterPalette
000006fe 4bf900c00004	lea	(VDP_control_port).l,a5
00000704 2abc94009340	move.l	#(($9400|((((palette_line_size*4)>>1)&$FF00)>>8))<<16)|($9300|(((palette_line_size*4)>>1)&$FF)),(a5)
0000070a 2abc96fd9580	move.l	#(($9600|((((Normal_palette)>>1)&$FF00)>>8))<<16)|($9500|(((Normal_palette)>>1)&$FF)),(a5)
00000710 3abc977f	move.w	#$9700|(((((Normal_palette)>>1)&$FF0000)>>16)&$7F),(a5)
00000714 3abcc000	move.w	#((vdpComm($0000,CRAM,DMA)>>16)&$FFFF),(a5)
00000718 31fc0080f640	move.w	#(vdpComm($0000,CRAM,DMA)&$FFFF),(DMA_data_thunk).w
0000071e 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000722 6024	bra.s	.afterPaletteSetup
00000724 4bf900c00004	lea	(VDP_control_port).l,a5
0000072a 2abc94009340	move.l	#(($9400|((((palette_line_size*4)>>1)&$FF00)>>8))<<16)|($9300|(((palette_line_size*4)>>1)&$FF)),(a5)
00000730 2abc96f89540	move.l	#(($9600|((((Underwater_palette)>>1)&$FF00)>>8))<<16)|($9500|(((Underwater_palette)>>1)&$FF)),(a5)
00000736 3abc977f	move.w	#$9700|(((((Underwater_palette)>>1)&$FF0000)>>16)&$7F),(a5)
0000073a 3abcc000	move.w	#((vdpComm($0000,CRAM,DMA)>>16)&$FFFF),(a5)
0000073e 31fc0080f640	move.w	#(vdpComm($0000,CRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000744 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000748 3ab8f624	move.w	(Hint_counter_reserve).w,(a5)
0000074c 33fc823000c00004	move.w	#$8200|(VRAM_Plane_A_Name_Table/$400),(VDP_control_port).l
00000754 4bf900c00004	lea	(VDP_control_port).l,a5
0000075a 2abc940193c0	move.l	#(($9400|((((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF)),(a5)
00000760 2abc96f09500	move.l	#(($9600|((((Horiz_Scroll_Buf)>>1)&$FF00)>>8))<<16)|($9500|(((Horiz_Scroll_Buf)>>1)&$FF)),(a5)
00000766 3abc977f	move.w	#$9700|(((((Horiz_Scroll_Buf)>>1)&$FF0000)>>16)&$7F),(a5)
0000076a 3abc7c00	move.w	#((vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)>>16)&$FFFF),(a5)
0000076e 31fc0083f640	move.w	#(vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000774 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000778 4bf900c00004	lea	(VDP_control_port).l,a5
0000077e 2abc94019340	move.l	#(($9400|((((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF)),(a5)
00000784 2abc96fc9500	move.l	#(($9600|((((Sprite_Table)>>1)&$FF00)>>8))<<16)|($9500|(((Sprite_Table)>>1)&$FF)),(a5)
0000078a 3abc977f	move.w	#$9700|(((((Sprite_Table)>>1)&$FF0000)>>16)&$7F),(a5)
0000078e 3abc7800	move.w	#((vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)>>16)&$FFFF),(a5)
00000792 31fc0083f640	move.w	#(vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000798 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
0000079c 61000d0e	bsr.w	ProcessDMAQueue
000007a0 610008e2	bsr.w	sndDriverInput
000007a4 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
000007ac 4cf800ffee00	movem.l	(Camera_RAM).w,d0-d7
000007b2 48f800ffee60	movem.l	d0-d7,(Camera_RAM_copy).w
000007b8 4cf800ffee20	movem.l	(Camera_X_pos_P2).w,d0-d7
000007be 48f800ffee80	movem.l	d0-d7,(Camera_P2_copy).w
000007c4 4cf8000fee50	movem.l	(Scroll_flags).w,d0-d3
000007ca 48f8000feea0	movem.l	d0-d3,(Scroll_flags_copy).w
000007d0 21f8f61eeeec	move.l	(Vscroll_Factor_P2).w,(Vscroll_Factor_P2_HInt).w
000007d6 0c38005cf625	cmpi.b	#$5C,(Hint_counter_reserve+1).w
000007dc 6408	bhs.s	Do_Updates
000007de 11fc0001f64f	move.b	#1,(Do_Updates_in_H_int).w
000007e4 4e75	rts	
000007ea 4eb900040d8a	jsr	(HudUpdate).l
000007f0 61000f0a	bsr.w	ProcessDPLC2
000007f4 4a78f614	tst.w	(Demo_Time_left).w
000007f8 67000006	beq.w	+
000007fc 5378f614	subq.w	#1,(Demo_Time_left).w
00000800 4e75	rts	
00000802 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
0000080a 0839000000a11100	btst	#0,(Z80_Bus_Request).l
00000812 66f6	bne.s	.loop
00000814 61000906	bsr.w	ReadJoypads
00000818 4eb900001084	jsr	(sndDriverInput).l
0000081e 4a38db11	tst.b	(SS_Last_Alternate_HorizScroll_Buf).w
00000822 6726	beq.s	loc_84A
00000824 4bf900c00004	lea	(VDP_control_port).l,a5
0000082a 2abc940193c0	move.l	#(($9400|((((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF)),(a5)
00000830 2abc96eb9580	move.l	#(($9600|((((SS_Horiz_Scroll_Buf_2)>>1)&$FF00)>>8))<<16)|($9500|(((SS_Horiz_Scroll_Buf_2)>>1)&$FF)),(a5)
00000836 3abc977f	move.w	#$9700|(((((SS_Horiz_Scroll_Buf_2)>>1)&$FF0000)>>16)&$7F),(a5)
0000083a 3abc7c00	move.w	#((vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)>>16)&$FFFF),(a5)
0000083e 31fc0083f640	move.w	#(vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000844 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000848 6024	bra.s	loc_86E
0000084a 4bf900c00004	lea	(VDP_control_port).l,a5
00000850 2abc940193c0	move.l	#(($9400|((((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF)),(a5)
00000856 2abc96f09500	move.l	#(($9600|((((SS_Horiz_Scroll_Buf_1)>>1)&$FF00)>>8))<<16)|($9500|(((SS_Horiz_Scroll_Buf_1)>>1)&$FF)),(a5)
0000085c 3abc977f	move.w	#$9700|(((((SS_Horiz_Scroll_Buf_1)>>1)&$FF0000)>>16)&$7F),(a5)
00000860 3abc7c00	move.w	#((vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)>>16)&$FFFF),(a5)
00000864 31fc0083f640	move.w	#(vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
0000086a 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
0000086e 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
00000876 4e75	rts	
00000878 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
00000880 0839000000a11100	btst	#0,(Z80_Bus_Request).l
00000888 66f6	bne.s	.loop
0000088a 61000890	bsr.w	ReadJoypads
0000088e 61000258	bsr.w	SSSet_VScroll
00000892 4bf900c00004	lea	(VDP_control_port).l,a5
00000898 2abc94009340	move.l	#(($9400|((((palette_line_size*4)>>1)&$FF00)>>8))<<16)|($9300|(((palette_line_size*4)>>1)&$FF)),(a5)
0000089e 2abc96fd9580	move.l	#(($9600|((((Normal_palette)>>1)&$FF00)>>8))<<16)|($9500|(((Normal_palette)>>1)&$FF)),(a5)
000008a4 3abc977f	move.w	#$9700|(((((Normal_palette)>>1)&$FF0000)>>16)&$7F),(a5)
000008a8 3abcc000	move.w	#((vdpComm($0000,CRAM,DMA)>>16)&$FFFF),(a5)
000008ac 31fc0080f640	move.w	#(vdpComm($0000,CRAM,DMA)&$FFFF),(DMA_data_thunk).w
000008b2 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
000008b6 4bf900c00004	lea	(VDP_control_port).l,a5
000008bc 2abc94019340	move.l	#(($9400|((((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF)),(a5)
000008c2 2abc96fc9500	move.l	#(($9600|((((Sprite_Table)>>1)&$FF00)>>8))<<16)|($9500|(((Sprite_Table)>>1)&$FF)),(a5)
000008c8 3abc977f	move.w	#$9700|(((((Sprite_Table)>>1)&$FF0000)>>16)&$7F),(a5)
000008cc 3abc7800	move.w	#((vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)>>16)&$FFFF),(a5)
000008d0 31fc0083f640	move.w	#(vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
000008d6 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
000008da 4a38db0f	tst.b	(SS_Alternate_HorizScroll_Buf).w
000008de 6726	beq.s	loc_906
000008e0 4bf900c00004	lea	(VDP_control_port).l,a5
000008e6 2abc940193c0	move.l	#(($9400|((((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF)),(a5)
000008ec 2abc96eb9580	move.l	#(($9600|((((SS_Horiz_Scroll_Buf_2)>>1)&$FF00)>>8))<<16)|($9500|(((SS_Horiz_Scroll_Buf_2)>>1)&$FF)),(a5)
000008f2 3abc977f	move.w	#$9700|(((((SS_Horiz_Scroll_Buf_2)>>1)&$FF0000)>>16)&$7F),(a5)
000008f6 3abc7c00	move.w	#((vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)>>16)&$FFFF),(a5)
000008fa 31fc0083f640	move.w	#(vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000900 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000904 6024	bra.s	loc_92A
00000906 4bf900c00004	lea	(VDP_control_port).l,a5
0000090c 2abc940193c0	move.l	#(($9400|((((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF)),(a5)
00000912 2abc96f09500	move.l	#(($9600|((((SS_Horiz_Scroll_Buf_1)>>1)&$FF00)>>8))<<16)|($9500|(((SS_Horiz_Scroll_Buf_1)>>1)&$FF)),(a5)
00000918 3abc977f	move.w	#$9700|(((((SS_Horiz_Scroll_Buf_1)>>1)&$FF0000)>>16)&$7F),(a5)
0000091c 3abc7c00	move.w	#((vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)>>16)&$FFFF),(a5)
00000920 31fc0083f640	move.w	#(vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000926 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
0000092a 4a38db0e	tst.b	(SSTrack_Orientation).w
0000092e 6720	beq.s	++
00000930 7000	moveq	#0,d0
00000932 1038db0d	move.b	(SSTrack_drawing_index).w,d0
00000936 0c000004	cmpi.b	#4,d0
0000093a 6c14	bge.s	++
0000093c d000	add.b	d0,d0
0000093e 4a38db0c	tst.b	(SS_Alternate_PNT).w
00000942 6704	beq.s	+
00000948 303b0030	move.w	SS_PNTA_Transfer_Table(pc,d0.w),d0
0000094c 4ebb002c	jsr	SS_PNTA_Transfer_Table(pc,d0.w)
00000950 610001b0	bsr.w	SSRun_Animation_Timers
0000095a 1038db0d	move.b	(SSTrack_drawing_index).w,d0
0000095e b001	cmp.b	d1,d0
00000960 6d32	blt.s	+++
00000962 11fc0000db0d	move.b	#0,(SSTrack_drawing_index).w
00000968 4df900c00004	lea	(VDP_control_port).l,a6
0000096e 4a38db0c	tst.b	(SS_Alternate_PNT).w
00000972 6716	beq.s	+
00000974 3cbc8230	move.w	#$8200|(VRAM_SS_Plane_A_Name_Table1/$400),(a6)
00000978 6014	bra.s	++
0000098a 3cbc8220	move.w	#$8200|(VRAM_SS_Plane_A_Name_Table2/$400),(a6)
0000098e 0a380001db0c	eori.b	#1,(SS_Alternate_PNT).w
00000994 61000b16	bsr.w	ProcessDMAQueue
00000998 4eb900001084	jsr	(sndDriverInput).l
0000099e 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
000009a6 61000d54	bsr.w	ProcessDPLC2
000009aa 4a78f614	tst.w	(Demo_Time_left).w
000009ae 67000006	beq.w	+
000009b2 5378f614	subq.w	#1,(Demo_Time_left).w
000009b6 4e75	rts	
000009b8 4bf900c00004	lea	(VDP_control_port).l,a5
000009be 2abc94039380	move.l	#(($9400|((((PNT_Buffer_End-PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9300|(((PNT_Buffer_End-PNT_Buffer)>>1)&$FF)),(a5)
000009c4 2abc96e89500	move.l	#(($9600|((((PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9500|(((PNT_Buffer)>>1)&$FF)),(a5)
000009ca 3abc977f	move.w	#$9700|(((((PNT_Buffer)>>1)&$FF0000)>>16)&$7F),(a5)
000009ce 3abc4000	move.w	#((vdpComm(VRAM_SS_Plane_A_Name_Table1 + 0 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)>>16)&$FFFF),(a5)
000009d2 31fc0083f640	move.w	#(vdpComm(VRAM_SS_Plane_A_Name_Table1 + 0 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)&$FFFF),(DMA_data_thunk).w
000009d8 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
000009dc 4e75	rts	
000009de 4bf900c00004	lea	(VDP_control_port).l,a5
000009e4 2abc94039380	move.l	#(($9400|((((PNT_Buffer_End-PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9300|(((PNT_Buffer_End-PNT_Buffer)>>1)&$FF)),(a5)
000009ea 2abc96e89500	move.l	#(($9600|((((PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9500|(((PNT_Buffer)>>1)&$FF)),(a5)
000009f0 3abc977f	move.w	#$9700|(((((PNT_Buffer)>>1)&$FF0000)>>16)&$7F),(a5)
000009f4 3abc4700	move.w	#((vdpComm(VRAM_SS_Plane_A_Name_Table1 + 1 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)>>16)&$FFFF),(a5)
000009f8 31fc0083f640	move.w	#(vdpComm(VRAM_SS_Plane_A_Name_Table1 + 1 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)&$FFFF),(DMA_data_thunk).w
000009fe 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000a02 4e75	rts	
00000a04 4bf900c00004	lea	(VDP_control_port).l,a5
00000a0a 2abc94039380	move.l	#(($9400|((((PNT_Buffer_End-PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9300|(((PNT_Buffer_End-PNT_Buffer)>>1)&$FF)),(a5)
00000a10 2abc96e89500	move.l	#(($9600|((((PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9500|(((PNT_Buffer)>>1)&$FF)),(a5)
00000a16 3abc977f	move.w	#$9700|(((((PNT_Buffer)>>1)&$FF0000)>>16)&$7F),(a5)
00000a1a 3abc4e00	move.w	#((vdpComm(VRAM_SS_Plane_A_Name_Table1 + 2 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)>>16)&$FFFF),(a5)
00000a1e 31fc0083f640	move.w	#(vdpComm(VRAM_SS_Plane_A_Name_Table1 + 2 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000a24 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000a28 4e75	rts	
00000a2a 4bf900c00004	lea	(VDP_control_port).l,a5
00000a30 2abc94039380	move.l	#(($9400|((((PNT_Buffer_End-PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9300|(((PNT_Buffer_End-PNT_Buffer)>>1)&$FF)),(a5)
00000a36 2abc96e89500	move.l	#(($9600|((((PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9500|(((PNT_Buffer)>>1)&$FF)),(a5)
00000a3c 3abc977f	move.w	#$9700|(((((PNT_Buffer)>>1)&$FF0000)>>16)&$7F),(a5)
00000a40 3abc5500	move.w	#((vdpComm(VRAM_SS_Plane_A_Name_Table1 + 3 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)>>16)&$FFFF),(a5)
00000a44 31fc0083f640	move.w	#(vdpComm(VRAM_SS_Plane_A_Name_Table1 + 3 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000a4a 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000a4e 4e75	rts	
00000a50 4bf900c00004	lea	(VDP_control_port).l,a5
00000a56 2abc94039380	move.l	#(($9400|((((PNT_Buffer_End-PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9300|(((PNT_Buffer_End-PNT_Buffer)>>1)&$FF)),(a5)
00000a5c 2abc96e89500	move.l	#(($9600|((((PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9500|(((PNT_Buffer)>>1)&$FF)),(a5)
00000a62 3abc977f	move.w	#$9700|(((((PNT_Buffer)>>1)&$FF0000)>>16)&$7F),(a5)
00000a66 3abc4000	move.w	#((vdpComm(VRAM_SS_Plane_A_Name_Table2 + 0 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)>>16)&$FFFF),(a5)
00000a6a 31fc0082f640	move.w	#(vdpComm(VRAM_SS_Plane_A_Name_Table2 + 0 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000a70 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000a74 4e75	rts	
00000a76 4bf900c00004	lea	(VDP_control_port).l,a5
00000a7c 2abc94039380	move.l	#(($9400|((((PNT_Buffer_End-PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9300|(((PNT_Buffer_End-PNT_Buffer)>>1)&$FF)),(a5)
00000a82 2abc96e89500	move.l	#(($9600|((((PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9500|(((PNT_Buffer)>>1)&$FF)),(a5)
00000a88 3abc977f	move.w	#$9700|(((((PNT_Buffer)>>1)&$FF0000)>>16)&$7F),(a5)
00000a8c 3abc4700	move.w	#((vdpComm(VRAM_SS_Plane_A_Name_Table2 + 1 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)>>16)&$FFFF),(a5)
00000a90 31fc0082f640	move.w	#(vdpComm(VRAM_SS_Plane_A_Name_Table2 + 1 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000a96 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000a9a 4e75	rts	
00000a9c 4bf900c00004	lea	(VDP_control_port).l,a5
00000aa2 2abc94039380	move.l	#(($9400|((((PNT_Buffer_End-PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9300|(((PNT_Buffer_End-PNT_Buffer)>>1)&$FF)),(a5)
00000aa8 2abc96e89500	move.l	#(($9600|((((PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9500|(((PNT_Buffer)>>1)&$FF)),(a5)
00000aae 3abc977f	move.w	#$9700|(((((PNT_Buffer)>>1)&$FF0000)>>16)&$7F),(a5)
00000ab2 3abc4e00	move.w	#((vdpComm(VRAM_SS_Plane_A_Name_Table2 + 2 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)>>16)&$FFFF),(a5)
00000ab6 31fc0082f640	move.w	#(vdpComm(VRAM_SS_Plane_A_Name_Table2 + 2 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000abc 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000ac0 4e75	rts	
00000ac2 4bf900c00004	lea	(VDP_control_port).l,a5
00000ac8 2abc94039380	move.l	#(($9400|((((PNT_Buffer_End-PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9300|(((PNT_Buffer_End-PNT_Buffer)>>1)&$FF)),(a5)
00000ace 2abc96e89500	move.l	#(($9600|((((PNT_Buffer)>>1)&$FF00)>>8))<<16)|($9500|(((PNT_Buffer)>>1)&$FF)),(a5)
00000ad4 3abc977f	move.w	#$9700|(((((PNT_Buffer)>>1)&$FF0000)>>16)&$7F),(a5)
00000ad8 3abc5500	move.w	#((vdpComm(VRAM_SS_Plane_A_Name_Table2 + 3 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)>>16)&$FFFF),(a5)
00000adc 31fc0082f640	move.w	#(vdpComm(VRAM_SS_Plane_A_Name_Table2 + 3 * (PNT_Buffer_End-PNT_Buffer),VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000ae2 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000ae6 4e75	rts	
00000ae8 303900c00004	move.w	(VDP_control_port).l,d0
00000aee 23fc4000001000c00004	move.l	#vdpComm($0000,VSRAM,WRITE),(VDP_control_port).l
00000af8 23f8f61600c00000	move.l	(Vscroll_Factor).w,(VDP_data_port).l
00000b00 4e75	rts	
00000b02 3038db16	move.w	(SS_Cur_Speed_Factor).w,d0
00000b06 b078db12	cmp.w	(SS_New_Speed_Factor).w,d0
00000b0a 670c	beq.s	+
00000b0c 21f8db12db16	move.l	(SS_New_Speed_Factor).w,(SS_Cur_Speed_Factor).w
00000b12 11fc0000db1f	move.b	#0,(SSTrack_duration_timer).w
00000b1e 6e1e	bgt.s	+
00000b20 41f900000b46	lea	(SSAnim_Base_Duration).l,a0
00000b26 3038db16	move.w	(SS_Cur_Speed_Factor).w,d0
00000b2a e248	lsr.w	#1,d0
00000b2c 12300000	move.b	(a0,d0.w),d1
00000b30 11c1db21	move.b	d1,(SS_player_anim_frame_timer).w
00000b34 11c1db1f	move.b	d1,(SSTrack_duration_timer).w
00000b38 5338db21	subq.b	#1,(SS_player_anim_frame_timer).w
00000b3c 4e75	rts	
00000b3e 1238db21	move.b	(SS_player_anim_frame_timer).w,d1
00000b42 5201	addq.b	#1,d1
00000b44 4e75	rts	
00000b4e 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
00000b56 0839000000a11100	btst	#0,(Z80_Bus_Request).l
00000b5e 66f6	bne.s	.loop
00000b60 4eb9000014ac	jsr	(ProcessDMAQueue).l
00000b66 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
00000b6e 4e75	rts	
00000b70 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
00000b78 0839000000a11100	btst	#0,(Z80_Bus_Request).l
00000b80 66f6	bne.s	.loop
00000b82 61000598	bsr.w	ReadJoypads
00000b86 4a38f64e	tst.b	(Water_fullscreen_flag).w
00000b8a 6626	bne.s	loc_BB2
00000b8c 4bf900c00004	lea	(VDP_control_port).l,a5
00000b92 2abc94009340	move.l	#(($9400|((((palette_line_size*4)>>1)&$FF00)>>8))<<16)|($9300|(((palette_line_size*4)>>1)&$FF)),(a5)
00000b98 2abc96fd9580	move.l	#(($9600|((((Normal_palette)>>1)&$FF00)>>8))<<16)|($9500|(((Normal_palette)>>1)&$FF)),(a5)
00000b9e 3abc977f	move.w	#$9700|(((((Normal_palette)>>1)&$FF0000)>>16)&$7F),(a5)
00000ba2 3abcc000	move.w	#((vdpComm($0000,CRAM,DMA)>>16)&$FFFF),(a5)
00000ba6 31fc0080f640	move.w	#(vdpComm($0000,CRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000bac 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000bb0 6024	bra.s	loc_BD6
00000bb2 4bf900c00004	lea	(VDP_control_port).l,a5
00000bb8 2abc94009340	move.l	#(($9400|((((palette_line_size*4)>>1)&$FF00)>>8))<<16)|($9300|(((palette_line_size*4)>>1)&$FF)),(a5)
00000bbe 2abc96f89540	move.l	#(($9600|((((Underwater_palette)>>1)&$FF00)>>8))<<16)|($9500|(((Underwater_palette)>>1)&$FF)),(a5)
00000bc4 3abc977f	move.w	#$9700|(((((Underwater_palette)>>1)&$FF0000)>>16)&$7F),(a5)
00000bc8 3abcc000	move.w	#((vdpComm($0000,CRAM,DMA)>>16)&$FFFF),(a5)
00000bcc 31fc0080f640	move.w	#(vdpComm($0000,CRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000bd2 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000bd6 3ab8f624	move.w	(Hint_counter_reserve).w,(a5)
00000bda 4bf900c00004	lea	(VDP_control_port).l,a5
00000be0 2abc940193c0	move.l	#(($9400|((((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF)),(a5)
00000be6 2abc96f09500	move.l	#(($9600|((((Horiz_Scroll_Buf)>>1)&$FF00)>>8))<<16)|($9500|(((Horiz_Scroll_Buf)>>1)&$FF)),(a5)
00000bec 3abc977f	move.w	#$9700|(((((Horiz_Scroll_Buf)>>1)&$FF0000)>>16)&$7F),(a5)
00000bf0 3abc7c00	move.w	#((vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)>>16)&$FFFF),(a5)
00000bf4 31fc0083f640	move.w	#(vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000bfa 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000bfe 4bf900c00004	lea	(VDP_control_port).l,a5
00000c04 2abc94019340	move.l	#(($9400|((((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF)),(a5)
00000c0a 2abc96fc9500	move.l	#(($9600|((((Sprite_Table)>>1)&$FF00)>>8))<<16)|($9500|(((Sprite_Table)>>1)&$FF)),(a5)
00000c10 3abc977f	move.w	#$9700|(((((Sprite_Table)>>1)&$FF0000)>>16)&$7F),(a5)
00000c14 3abc7800	move.w	#((vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)>>16)&$FFFF),(a5)
00000c18 31fc0083f640	move.w	#(vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000c1e 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000c22 61000888	bsr.w	ProcessDMAQueue
00000c26 4eb900015584	jsr	(DrawLevelTitleCard).l
00000c2c 4eb900001084	jsr	(sndDriverInput).l
00000c32 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
00000c3a 4cf800ffee00	movem.l	(Camera_RAM).w,d0-d7
00000c40 48f800ffee60	movem.l	d0-d7,(Camera_RAM_copy).w
00000c46 4cf80003ee50	movem.l	(Scroll_flags).w,d0-d1
00000c4c 48f80003eea0	movem.l	d0-d1,(Scroll_flags_copy).w
00000c52 21f8f61eeeec	move.l	(Vscroll_Factor_P2).w,(Vscroll_Factor_P2_HInt).w
00000c58 61000a86	bsr.w	ProcessDPLC
00000c5c 4e75	rts	
00000c5e 61000238	bsr.w	Do_ControllerPal
00000c62 5238f628	addq.b	#1,(VIntSubE_RunCount).w
00000c66 11fc000ef62a	move.b	#VintID_UnusedE,(Vint_routine).w
00000c6c 4e75	rts	
00000c6e 61000228	bsr.w	Do_ControllerPal
00000c72 3ab8f624	move.w	(Hint_counter_reserve).w,(a5)
00000c76 60000a68	bra.w	ProcessDPLC
00000c7a 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
00000c82 0839000000a11100	btst	#0,(Z80_Bus_Request).l
00000c8a 66f6	bne.s	.loop
00000c8c 6100048e	bsr.w	ReadJoypads
00000c90 4bf900c00004	lea	(VDP_control_port).l,a5
00000c96 2abc94009340	move.l	#(($9400|((((palette_line_size*4)>>1)&$FF00)>>8))<<16)|($9300|(((palette_line_size*4)>>1)&$FF)),(a5)
00000c9c 2abc96fd9580	move.l	#(($9600|((((Normal_palette)>>1)&$FF00)>>8))<<16)|($9500|(((Normal_palette)>>1)&$FF)),(a5)
00000ca2 3abc977f	move.w	#$9700|(((((Normal_palette)>>1)&$FF0000)>>16)&$7F),(a5)
00000ca6 3abcc000	move.w	#((vdpComm($0000,CRAM,DMA)>>16)&$FFFF),(a5)
00000caa 31fc0080f640	move.w	#(vdpComm($0000,CRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000cb0 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000cb4 4bf900c00004	lea	(VDP_control_port).l,a5
00000cba 2abc94019340	move.l	#(($9400|((((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF)),(a5)
00000cc0 2abc96fc9500	move.l	#(($9600|((((Sprite_Table)>>1)&$FF00)>>8))<<16)|($9500|(((Sprite_Table)>>1)&$FF)),(a5)
00000cc6 3abc977f	move.w	#$9700|(((((Sprite_Table)>>1)&$FF0000)>>16)&$7F),(a5)
00000cca 3abc7800	move.w	#((vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)>>16)&$FFFF),(a5)
00000cce 31fc0083f640	move.w	#(vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000cd4 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000cd8 4bf900c00004	lea	(VDP_control_port).l,a5
00000cde 2abc940193c0	move.l	#(($9400|((((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF)),(a5)
00000ce4 2abc96f09500	move.l	#(($9600|((((Horiz_Scroll_Buf)>>1)&$FF00)>>8))<<16)|($9500|(((Horiz_Scroll_Buf)>>1)&$FF)),(a5)
00000cea 3abc977f	move.w	#$9700|(((((Horiz_Scroll_Buf)>>1)&$FF0000)>>16)&$7F),(a5)
00000cee 3abc7c00	move.w	#((vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)>>16)&$FFFF),(a5)
00000cf2 31fc0083f640	move.w	#(vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000cf8 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000cfc 610007ae	bsr.w	ProcessDMAQueue
00000d00 61000382	bsr.w	sndDriverInput
00000d04 4cf800ffee00	movem.l	(Camera_RAM).w,d0-d7
00000d0a 48f800ffee60	movem.l	d0-d7,(Camera_RAM_copy).w
00000d10 4cf8000fee50	movem.l	(Scroll_flags).w,d0-d3
00000d16 48f8000feea0	movem.l	d0-d3,(Scroll_flags_copy).w
00000d20 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
00000d28 3038f662	move.w	(Ending_VInt_Subrout).w,d0
00000d2c 670c	beq.s	+
00000d2e 4278f662	clr.w	(Ending_VInt_Subrout).w
00000d32 303b0006	move.w	off_D3C-2(pc,d0.w),d0
00000d36 4ebb0004	jsr	off_D3C(pc,d0.w)
00000d3a 4e75	rts	
00000d40 4bf900c00004	lea	(VDP_control_port).l,a5
00000d46 3abc8f01	move.w	#$8F01,(a5)
00000d4a 2abc941f93ff	move.l	#(($9400|((((VRAM_EndSeq_Plane_Table_Size)-1)&$FF00)>>8))<<16)|($9300|(((VRAM_EndSeq_Plane_Table_Size)-1)&$FF)),(a5)
00000d50 3abc9780	move.w	#$9780,(a5)
00000d54 2abc40000083	move.l	#vdpComm(VRAM_EndSeq_Plane_A_Name_Table,VRAM,DMA),(a5)
00000d5a 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
00000d62 3215	move.w	(a5),d1
00000d64 08010001	btst	#1,d1
00000d68 66f8	bne.s	.loop
00000d6a 3abc8f02	move.w	#$8F02,(a5)
00000d6e 4e75	rts	
00000d70 4bf900c00004	lea	(VDP_control_port).l,a5
00000d76 3abc8f01	move.w	#$8F01,(a5)
00000d7a 2abc941f93ff	move.l	#(($9400|((((VRAM_EndSeq_Plane_Table_Size)-1)&$FF00)>>8))<<16)|($9300|(((VRAM_EndSeq_Plane_Table_Size)-1)&$FF)),(a5)
00000d80 3abc9780	move.w	#$9780,(a5)
00000d84 2abc40000081	move.l	#vdpComm(VRAM_EndSeq_Plane_B_Name_Table2,VRAM,DMA),(a5)
00000d8a 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
00000d92 3215	move.w	(a5),d1
00000d94 08010001	btst	#1,d1
00000d98 66f8	bne.s	.loop
00000d9a 3abc8f02	move.w	#$8F02,(a5)
00000d9e 4bf900c00004	lea	(VDP_control_port).l,a5
00000da4 3abc8f01	move.w	#$8F01,(a5)
00000da8 2abc941f93ff	move.l	#(($9400|((((VRAM_EndSeq_Plane_Table_Size)-1)&$FF00)>>8))<<16)|($9300|(((VRAM_EndSeq_Plane_Table_Size)-1)&$FF)),(a5)
00000dae 3abc9780	move.w	#$9780,(a5)
00000db2 2abc40000083	move.l	#vdpComm(VRAM_EndSeq_Plane_A_Name_Table,VRAM,DMA),(a5)
00000db8 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
00000dc0 3215	move.w	(a5),d1
00000dc2 08010001	btst	#1,d1
00000dc6 66f8	bne.s	.loop
00000dc8 3abc8f02	move.w	#$8F02,(a5)
00000dcc 4df900c00004	lea	(VDP_control_port).l,a6
00000dd2 3cbc8b00	move.w	#$8B00,(a6)
00000dd6 3cbc8402	move.w	#$8400|(VRAM_EndSeq_Plane_B_Name_Table2/$2000),(a6)
00000dda 3cbc9011	move.w	#$9011,(a6)
00000dde 43f9ffff0000	lea	(Chunk_Table).l,a1
00000de4 203c50ac0003	move.l	#vdpComm(VRAM_EndSeq_Plane_A_Name_Table + planeLoc(64,22,33),VRAM,WRITE),d0
00000dea 7216	moveq	#23-1,d1
00000dec 740e	moveq	#15-1,d2
00000dee 6100061e	bsr.w	PlaneMapToVRAM_H40
00000df2 4e75	rts	
00000df4 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
00000dfc 0839000000a11100	btst	#0,(Z80_Bus_Request).l
00000e04 66f6	bne.s	.loop
00000e06 61000314	bsr.w	ReadJoypads
00000e0a 4bf900c00004	lea	(VDP_control_port).l,a5
00000e10 2abc94009340	move.l	#(($9400|((((palette_line_size*4)>>1)&$FF00)>>8))<<16)|($9300|(((palette_line_size*4)>>1)&$FF)),(a5)
00000e16 2abc96fd9580	move.l	#(($9600|((((Normal_palette)>>1)&$FF00)>>8))<<16)|($9500|(((Normal_palette)>>1)&$FF)),(a5)
00000e1c 3abc977f	move.w	#$9700|(((((Normal_palette)>>1)&$FF0000)>>16)&$7F),(a5)
00000e20 3abcc000	move.w	#((vdpComm($0000,CRAM,DMA)>>16)&$FFFF),(a5)
00000e24 31fc0080f640	move.w	#(vdpComm($0000,CRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000e2a 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000e2e 4bf900c00004	lea	(VDP_control_port).l,a5
00000e34 2abc94019340	move.l	#(($9400|((((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF)),(a5)
00000e3a 2abc96fc9500	move.l	#(($9600|((((Sprite_Table)>>1)&$FF00)>>8))<<16)|($9500|(((Sprite_Table)>>1)&$FF)),(a5)
00000e40 3abc977f	move.w	#$9700|(((((Sprite_Table)>>1)&$FF0000)>>16)&$7F),(a5)
00000e44 3abc7800	move.w	#((vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)>>16)&$FFFF),(a5)
00000e48 31fc0083f640	move.w	#(vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000e4e 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000e52 4bf900c00004	lea	(VDP_control_port).l,a5
00000e58 2abc940193c0	move.l	#(($9400|((((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF)),(a5)
00000e5e 2abc96f09500	move.l	#(($9600|((((Horiz_Scroll_Buf)>>1)&$FF00)>>8))<<16)|($9500|(((Horiz_Scroll_Buf)>>1)&$FF)),(a5)
00000e64 3abc977f	move.w	#$9700|(((((Horiz_Scroll_Buf)>>1)&$FF0000)>>16)&$7F),(a5)
00000e68 3abc7c00	move.w	#((vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)>>16)&$FFFF),(a5)
00000e6c 31fc0083f640	move.w	#(vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000e72 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000e76 61000634	bsr.w	ProcessDMAQueue
00000e7a 61000208	bsr.w	sndDriverInput
00000e7e 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
00000e86 61000858	bsr.w	ProcessDPLC
00000e8a 4a78f614	tst.w	(Demo_Time_left).w
00000e8e 67000006	beq.w	+
00000e92 5378f614	subq.w	#1,(Demo_Time_left).w
00000e96 4e75	rts	
00000e98 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
00000ea0 0839000000a11100	btst	#0,(Z80_Bus_Request).l
00000ea8 66f6	bne.s	.loop
00000eaa 61000270	bsr.w	ReadJoypads
00000eae 4a38f64e	tst.b	(Water_fullscreen_flag).w
00000eb2 6626	bne.s	loc_EDA
00000eb4 4bf900c00004	lea	(VDP_control_port).l,a5
00000eba 2abc94009340	move.l	#(($9400|((((palette_line_size*4)>>1)&$FF00)>>8))<<16)|($9300|(((palette_line_size*4)>>1)&$FF)),(a5)
00000ec0 2abc96fd9580	move.l	#(($9600|((((Normal_palette)>>1)&$FF00)>>8))<<16)|($9500|(((Normal_palette)>>1)&$FF)),(a5)
00000ec6 3abc977f	move.w	#$9700|(((((Normal_palette)>>1)&$FF0000)>>16)&$7F),(a5)
00000eca 3abcc000	move.w	#((vdpComm($0000,CRAM,DMA)>>16)&$FFFF),(a5)
00000ece 31fc0080f640	move.w	#(vdpComm($0000,CRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000ed4 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000ed8 6024	bra.s	loc_EFE
00000eda 4bf900c00004	lea	(VDP_control_port).l,a5
00000ee0 2abc94009340	move.l	#(($9400|((((palette_line_size*4)>>1)&$FF00)>>8))<<16)|($9300|(((palette_line_size*4)>>1)&$FF)),(a5)
00000ee6 2abc96f89540	move.l	#(($9600|((((Underwater_palette)>>1)&$FF00)>>8))<<16)|($9500|(((Underwater_palette)>>1)&$FF)),(a5)
00000eec 3abc977f	move.w	#$9700|(((((Underwater_palette)>>1)&$FF0000)>>16)&$7F),(a5)
00000ef0 3abcc000	move.w	#((vdpComm($0000,CRAM,DMA)>>16)&$FFFF),(a5)
00000ef4 31fc0080f640	move.w	#(vdpComm($0000,CRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000efa 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000efe 4bf900c00004	lea	(VDP_control_port).l,a5
00000f04 2abc94019340	move.l	#(($9400|((((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF)),(a5)
00000f0a 2abc96fc9500	move.l	#(($9600|((((Sprite_Table)>>1)&$FF00)>>8))<<16)|($9500|(((Sprite_Table)>>1)&$FF)),(a5)
00000f10 3abc977f	move.w	#$9700|(((((Sprite_Table)>>1)&$FF0000)>>16)&$7F),(a5)
00000f14 3abc7800	move.w	#((vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)>>16)&$FFFF),(a5)
00000f18 31fc0083f640	move.w	#(vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000f1e 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000f22 4bf900c00004	lea	(VDP_control_port).l,a5
00000f28 2abc940193c0	move.l	#(($9400|((((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Horiz_Scroll_Table_Size)>>1)&$FF)),(a5)
00000f2e 2abc96f09500	move.l	#(($9600|((((Horiz_Scroll_Buf)>>1)&$FF00)>>8))<<16)|($9500|(((Horiz_Scroll_Buf)>>1)&$FF)),(a5)
00000f34 3abc977f	move.w	#$9700|(((((Horiz_Scroll_Buf)>>1)&$FF0000)>>16)&$7F),(a5)
00000f38 3abc7c00	move.w	#((vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)>>16)&$FFFF),(a5)
00000f3c 31fc0083f640	move.w	#(vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000f42 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000f46 6100013c	bsr.w	sndDriverInput
00000f4a 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
00000f52 4e75	rts	
00000f54 4a78f644	tst.w	(Hint_flag).w
00000f58 670000a4	beq.w	H_Int_Done
00000f5c 4a78ffd8	tst.w	(Two_player_mode).w
00000f60 6700009e	beq.w	PalToCRAM
00000f64 31fc0000f644	move.w	#0,(Hint_flag).w
00000f6a 2f0d	move.l	a5,-(sp)
00000f6c 2f00	move.l	d0,-(sp)
00000f74 02400004	andi.w	#4,d0
00000f78 67f4	beq.s	-
00000f7a 3038f60c	move.w	(VDP_Reg1_val).w,d0
00000f7e 020000bf	andi.b	#$BF,d0
00000f82 33c000c00004	move.w	d0,(VDP_control_port).l
00000f88 33fc822800c00004	move.w	#$8200|(VRAM_Plane_A_Name_Table_2P/$400),(VDP_control_port).l
00000f90 23fc4000001000c00004	move.l	#vdpComm($0000,VSRAM,WRITE),(VDP_control_port).l
00000f9a 23f8eeec00c00000	move.l	(Vscroll_Factor_P2_HInt).w,(VDP_data_port).l
00000fa2 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
00000faa 0839000000a11100	btst	#0,(Z80_Bus_Request).l
00000fb2 66f6	bne.s	.loop
00000fb4 4bf900c00004	lea	(VDP_control_port).l,a5
00000fba 2abc94019340	move.l	#(($9400|((((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF00)>>8))<<16)|($9300|(((VRAM_Sprite_Attribute_Table_Size)>>1)&$FF)),(a5)
00000fc0 2abc96ee9580	move.l	#(($9600|((((Sprite_Table_P2)>>1)&$FF00)>>8))<<16)|($9500|(((Sprite_Table_P2)>>1)&$FF)),(a5)
00000fc6 3abc977f	move.w	#$9700|(((((Sprite_Table_P2)>>1)&$FF0000)>>16)&$7F),(a5)
00000fca 3abc7800	move.w	#((vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)>>16)&$FFFF),(a5)
00000fce 31fc0083f640	move.w	#(vdpComm(VRAM_Sprite_Attribute_Table,VRAM,DMA)&$FFFF),(DMA_data_thunk).w
00000fd4 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
00000fd8 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
00000fe6 02400004	andi.w	#4,d0
00000fea 67f4	beq.s	-
00000fec 3038f60c	move.w	(VDP_Reg1_val).w,d0
00000ff0 00000040	ori.b	#$40,d0
00000ff4 33c000c00004	move.w	d0,(VDP_control_port).l
00000ffa 201f	move.l	(sp)+,d0
00000ffc 2a5f	movea.l	(sp)+,a5
00000ffe 4e73	rte	
00001000 46fc2700	move	#$2700,sr
00001004 31fc0000f644	move.w	#0,(Hint_flag).w
0000100a 48e700c0	movem.l	a0-a1,-(sp)
0000100e 43f900c00000	lea	(VDP_data_port).l,a1
00001014 41f8f080	lea	(Underwater_palette).w,a0
00001018 237cc00000000004	move.l	#vdpComm($0000,CRAM,WRITE),VDP_control_port-VDP_data_port(a1)
00001020 2298	move.l	(a0)+,(a1)
00001022 2298	move.l	(a0)+,(a1)
00001024 2298	move.l	(a0)+,(a1)
00001026 2298	move.l	(a0)+,(a1)
00001028 2298	move.l	(a0)+,(a1)
0000102a 2298	move.l	(a0)+,(a1)
0000102c 2298	move.l	(a0)+,(a1)
0000102e 2298	move.l	(a0)+,(a1)
00001030 2298	move.l	(a0)+,(a1)
00001032 2298	move.l	(a0)+,(a1)
00001034 2298	move.l	(a0)+,(a1)
00001036 2298	move.l	(a0)+,(a1)
00001038 2298	move.l	(a0)+,(a1)
0000103a 2298	move.l	(a0)+,(a1)
0000103c 2298	move.l	(a0)+,(a1)
0000103e 2298	move.l	(a0)+,(a1)
00001040 2298	move.l	(a0)+,(a1)
00001042 2298	move.l	(a0)+,(a1)
00001044 2298	move.l	(a0)+,(a1)
00001046 2298	move.l	(a0)+,(a1)
00001048 2298	move.l	(a0)+,(a1)
0000104a 2298	move.l	(a0)+,(a1)
0000104c 2298	move.l	(a0)+,(a1)
0000104e 2298	move.l	(a0)+,(a1)
00001050 2298	move.l	(a0)+,(a1)
00001052 2298	move.l	(a0)+,(a1)
00001054 2298	move.l	(a0)+,(a1)
00001056 2298	move.l	(a0)+,(a1)
00001058 2298	move.l	(a0)+,(a1)
0000105a 2298	move.l	(a0)+,(a1)
0000105c 2298	move.l	(a0)+,(a1)
0000105e 2298	move.l	(a0)+,(a1)
00001060 337c8adf0004	move.w	#$8A00|223,VDP_control_port-VDP_data_port(a1)
00001066 4cdf0300	movem.l	(sp)+,a0-a1
0000106a 4a38f64f	tst.b	(Do_Updates_in_H_int).w
0000106e 6602	bne.s	loc_1072
00001070 4e73	rte	
00001072 4238f64f	clr.b	(Do_Updates_in_H_int).w
00001076 48e7fffe	movem.l	d0-a6,-(sp)
0000107a 6100f76a	bsr.w	Do_Updates
0000107e 4cdf7fff	movem.l	(sp)+,d0-a6
00001082 4e73	rte	
00001084 41f900ffffe0	lea	(Sound_Queue&$00FFFFFF).l,a0
0000108a 43f900a01b80	lea	(Z80_RAM+zAbsVar).l,a1
00001090 0c2900800008	cmpi.b	#$80,zVar.QueueToPlay(a1)
00001096 662c	bne.s	.doSFX
0000109c 6706	beq.s	.checkMusic2
000010a2 600a	bra.s	.playMusic
000010a4 10280004	move.b	SoundQueue.Music1(a0),d0
000010a8 671a	beq.s	.doSFX
000010aa 42280004	clr.b	SoundQueue.Music1(a0)
000010ae 1200	move.b	d0,d1
000010b0 040100fe	subi.b	#MusID_Pause,d1
000010b4 650a	bcs.s	.isNotPauseCommand
000010b6 0601007f	addi.b	#$7F,d1
000010ba 13410003	move.b	d1,zVar.StopMusic(a1)
000010be 6004	bra.s	.doSFX
000010c0 13400008	move.b	d0,zVar.QueueToPlay(a1)
000010c4 7203	moveq	#4-1,d1
000010c6 10301001	move.b	SoundQueue.SFX0(a0,d1.w),d0
000010ca 670e	beq.s	.skip
000010cc 4a311009	tst.b	zVar.Queue0(a1,d1.w)
000010d0 6608	bne.s	.skip
000010d2 42301001	clr.b	SoundQueue.SFX0(a0,d1.w)
000010d6 13801009	move.b	d0,zVar.Queue0(a1,d1.w)
000010da 51c9ffea	dbf	d1,.loop
000010de 4e75	rts	
000010e0 4ef90000da5c	jmp	(extractJmpToName("JmpTo_LoadTilesAsYouMove")).l
000010e6 4ef90003a68a	jmp	(extractJmpToName("JmpTo_SegaScr_VInt")).l
000010ec 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
000010f4 0839000000a11100	btst	#0,(Z80_Bus_Request).l
000010fc 66f6	bne.s	.loop
000010fe 7040	moveq	#$40,d0
00001100 13c000a10009	move.b	d0,(HW_Port_1_Control).l
00001106 13c000a1000b	move.b	d0,(HW_Port_2_Control).l
0000110c 13c000a1000d	move.b	d0,(HW_Expansion_Control).l
00001112 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
0000111a 4e75	rts	
0000111c 41f8f604	lea	(Ctrl_1).w,a0
00001120 43f900a10003	lea	(HW_Port_1_Data).l,a1
00001126 6102	bsr.s	Joypad_Read
00001128 5449	addq.w	#2,a1
0000112a 12bc0000	move.b	#0,(a1)
0000112e 4e71	nop	
00001130 4e71	nop	
00001132 1011	move.b	(a1),d0
00001134 e508	lsl.b	#2,d0
00001136 020000c0	andi.b	#$C0,d0
0000113a 12bc0040	move.b	#$40,(a1)
0000113e 4e71	nop	
00001140 4e71	nop	
00001142 1211	move.b	(a1),d1
00001144 0201003f	andi.b	#$3F,d1
00001148 8001	or.b	d1,d0
0000114a 4600	not.b	d0
0000114c 1210	move.b	(a0),d1
0000114e b101	eor.b	d0,d1
00001150 10c0	move.b	d0,(a0)+
00001152 c200	and.b	d0,d1
00001154 10c1	move.b	d1,(a0)+
00001156 4e75	rts	
00001158 41f900c00004	lea	(VDP_control_port).l,a0
0000115e 43f900c00000	lea	(VDP_data_port).l,a1
00001164 45f9000011e2	lea	(VDPSetupArray).l,a2
0000116a 7e12	moveq	#bytesToWcnt(VDPSetupArray_End-VDPSetupArray),d7
0000116c 309a	move.w	(a2)+,(a0)
0000116e 51cffffc	dbf	d7,VDP_Loop
00001172 3039000011e4	move.w	(VDPSetupArray+2).l,d0
00001178 31c0f60c	move.w	d0,(VDP_Reg1_val).w
0000117c 31fc8adff624	move.w	#$8A00+223,(Hint_counter_reserve).w
00001182 7000	moveq	#0,d0
00001184 23fc4000001000c00004	move.l	#vdpComm($0000,VSRAM,WRITE),(VDP_control_port).l
0000118e 3280	move.w	d0,(a1)
00001190 3280	move.w	d0,(a1)
00001192 23fcc000000000c00004	move.l	#vdpComm($0000,CRAM,WRITE),(VDP_control_port).l
0000119c 3e3c003f	move.w	#bytesToWcnt(palette_line_size*4),d7
000011a0 3280	move.w	d0,(a1)
000011a2 51cffffc	dbf	d7,VDP_ClrCRAM
000011a6 42b8f616	clr.l	(Vscroll_Factor).w
000011aa 42b8f61a	clr.l	(unk_F61A).w
000011ae 2f01	move.l	d1,-(sp)
000011b0 4bf900c00004	lea	(VDP_control_port).l,a5
000011b6 3abc8f01	move.w	#$8F01,(a5)
000011ba 2abc94ff93ff	move.l	#(($9400|(((($10000)-1)&$FF00)>>8))<<16)|($9300|((($10000)-1)&$FF)),(a5)
000011c0 3abc9780	move.w	#$9780,(a5)
000011c4 2abc40000080	move.l	#vdpComm($0000,VRAM,DMA),(a5)
000011ca 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
000011d2 3215	move.w	(a5),d1
000011d4 08010001	btst	#1,d1
000011d8 66f8	bne.s	.loop
000011da 3abc8f02	move.w	#$8F02,(a5)
000011de 221f	move.l	(sp)+,d1
000011e0 4e75	rts	
00001208 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
00001210 0839000000a11100	btst	#0,(Z80_Bus_Request).l
00001218 66f6	bne.s	.loop
0000121a 4bf900c00004	lea	(VDP_control_port).l,a5
00001220 3abc8f01	move.w	#$8F01,(a5)
00001224 2abc9400933f	move.l	#(($9400|((((tiles_to_bytes(2))-1)&$FF00)>>8))<<16)|($9300|(((tiles_to_bytes(2))-1)&$FF)),(a5)
0000122a 3abc9780	move.w	#$9780,(a5)
0000122e 2abc40000080	move.l	#vdpComm($0000,VRAM,DMA),(a5)
00001234 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
0000123c 3215	move.w	(a5),d1
0000123e 08010001	btst	#1,d1
00001242 66f8	bne.s	.loop
00001244 3abc8f02	move.w	#$8F02,(a5)
00001248 4bf900c00004	lea	(VDP_control_port).l,a5
0000124e 3abc8f01	move.w	#$8F01,(a5)
00001252 2abc940f93ff	move.l	#(($9400|((((VRAM_Plane_Table_Size)-1)&$FF00)>>8))<<16)|($9300|(((VRAM_Plane_Table_Size)-1)&$FF)),(a5)
00001258 3abc9780	move.w	#$9780,(a5)
0000125c 2abc40000083	move.l	#vdpComm(VRAM_Plane_A_Name_Table,VRAM,DMA),(a5)
00001262 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
0000126a 3215	move.w	(a5),d1
0000126c 08010001	btst	#1,d1
00001270 66f8	bne.s	.loop
00001272 3abc8f02	move.w	#$8F02,(a5)
00001276 4bf900c00004	lea	(VDP_control_port).l,a5
0000127c 3abc8f01	move.w	#$8F01,(a5)
00001280 2abc940f93ff	move.l	#(($9400|((((VRAM_Plane_Table_Size)-1)&$FF00)>>8))<<16)|($9300|(((VRAM_Plane_Table_Size)-1)&$FF)),(a5)
00001286 3abc9780	move.w	#$9780,(a5)
0000128a 2abc60000083	move.l	#vdpComm(VRAM_Plane_B_Name_Table,VRAM,DMA),(a5)
00001290 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
00001298 3215	move.w	(a5),d1
0000129a 08010001	btst	#1,d1
0000129e 66f8	bne.s	.loop
000012a0 3abc8f02	move.w	#$8F02,(a5)
000012a4 4a78ffd8	tst.w	(Two_player_mode).w
000012a8 672e	beq.s	+
000012aa 4bf900c00004	lea	(VDP_control_port).l,a5
000012b0 3abc8f01	move.w	#$8F01,(a5)
000012b4 2abc940f93ff	move.l	#(($9400|((((VRAM_Plane_Table_Size)-1)&$FF00)>>8))<<16)|($9300|(((VRAM_Plane_Table_Size)-1)&$FF)),(a5)
000012ba 3abc9780	move.w	#$9780,(a5)
000012be 2abc60000082	move.l	#vdpComm(VRAM_Plane_A_Name_Table_2P,VRAM,DMA),(a5)
000012c4 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
000012cc 3215	move.w	(a5),d1
000012ce 08010001	btst	#1,d1
000012d2 66f8	bne.s	.loop
000012d4 3abc8f02	move.w	#$8F02,(a5)
000012d8 42b8f616	clr.l	(Vscroll_Factor).w
000012dc 42b8f61a	clr.l	(unk_F61A).w
000012e0 43f8f800	lea	(Sprite_Table).w,a1
000012e4 7000	moveq	#0,d0
000012e6 323c00a0	move.w	#bytesToLcnt((Sprite_Table_End+4-Sprite_Table) - ((Sprite_Table)&1)),d1
000012ea 22c0	move.l	d0,(a1)+
000012ec 51c9fffc	dbf	d1,.loop
000012f0 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
000012f4 7000	moveq	#0,d0
000012f6 323c0100	move.w	#bytesToLcnt((Horiz_Scroll_Buf+HorizontalScrollBuffer.len+4-Horiz_Scroll_Buf) - ((Horiz_Scroll_Buf)&1)),d1
000012fa 22c0	move.l	d0,(a1)+
000012fc 51c9fffc	dbf	d1,.loop
00001300 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
00001308 4e75	rts	
0000130a 4e71	nop	
0000130c 4ef9000ec000	jmp	(SoundDriverLoad).l
00001312 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
0000131a 33fc010000a11200	move.w	#$100,(Z80_Reset).l
00001322 43f900a00000	lea	(Z80_RAM).l,a1
00001328 12fc00f3	move.b	#$F3,(a1)+
0000132c 12fc00f3	move.b	#$F3,(a1)+
00001330 12fc00c3	move.b	#$C3,(a1)+
00001334 12fc0000	move.b	#0,(a1)+
00001338 12fc0000	move.b	#0,(a1)+
0000133c 33fc000000a11200	move.w	#0,(Z80_Reset).l
00001344 4e71	nop	
00001346 4e71	nop	
00001348 4e71	nop	
0000134a 4e71	nop	
0000134c 33fc010000a11200	move.w	#$100,(Z80_Reset).l
00001354 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
0000135c 4e75	rts	
0000135e 4a38ffe0	tst.b	(Sound_Queue.Music0).w
00001362 6606	bne.s	+
00001364 11c0ffe0	move.b	d0,(Sound_Queue.Music0).w
00001368 4e75	rts	
0000136a 11c0ffe4	move.b	d0,(Sound_Queue.Music1).w
0000136e 4e75	rts	
00001370 11c0ffe1	move.b	d0,(Sound_Queue.SFX0).w
00001374 4e75	rts	
00001376 11c0ffe2	move.b	d0,(Sound_Queue.SFX1).w
0000137a 4e75	rts	
0000137c 4a280001	tst.b	render_flags(a0)
00001380 6a04	bpl.s	.return
00001382 11c0ffe1	move.b	d0,(Sound_Queue.SFX0).w
00001386 4e75	rts	
00001388 4e71	nop	
0000138a 4a38fe12	tst.b	(Life_count).w
0000138e 67000068	beq.w	Unpause
00001392 4a78f63a	tst.w	(Game_paused).w
00001396 660e	bne.s	+
00001398 1038f605	move.b	(Ctrl_1_Press).w,d0
0000139c 8038f607	or.b	(Ctrl_2_Press).w,d0
000013a0 02000080	andi.b	#button_start_mask,d0
000013a4 6758	beq.s	Pause_DoNothing
000013a6 31fc0001f63a	move.w	#1,(Game_paused).w
000013ac 11fc00feffe0	move.b	#MusID_Pause,(Sound_Queue.Music0).w
000013b2 11fc0010f62a	move.b	#VintID_Pause,(Vint_routine).w
000013b8 61001fca	bsr.w	WaitForVint
000013bc 4a38ffd1	tst.b	(Slow_motion_flag).w
000013c0 6722	beq.s	Pause_ChkStart
000013c2 08380006f605	btst	#button_A,(Ctrl_1_Press).w
000013c8 670a	beq.s	Pause_ChkBC
000013ca 11fc0004f600	move.b	#GameModeID_TitleScreen,(Game_Mode).w
000013d0 4e71	nop	
000013d2 601e	bra.s	Pause_Resume
000013d4 08380004f604	btst	#button_B,(Ctrl_1_Held).w
000013da 6624	bne.s	Pause_SlowMo
000013dc 08380005f605	btst	#button_C,(Ctrl_1_Press).w
000013e2 661c	bne.s	Pause_SlowMo
000013e4 1038f605	move.b	(Ctrl_1_Press).w,d0
000013e8 8038f607	or.b	(Ctrl_2_Press).w,d0
000013ec 02000080	andi.b	#button_start_mask,d0
000013f0 67c0	beq.s	Pause_Loop
000013f2 11fc00ffffe0	move.b	#MusID_Unpause,(Sound_Queue.Music0).w
000013f8 31fc0000f63a	move.w	#0,(Game_paused).w
000013fe 4e75	rts	
00001400 31fc0001f63a	move.w	#1,(Game_paused).w
00001406 11fc00ffffe0	move.b	#MusID_Unpause,(Sound_Queue.Music0).w
0000140c 4e75	rts	
0000140e 4df900c00000	lea	(VDP_data_port).l,a6
00001414 283c00800000	move.l	#vdpCommDelta(planeLoc(64,0,1)),d4
0000141e 3601	move.w	d1,d3
00001422 51cbfffc	dbf	d3,-
00001426 d084	add.l	d4,d0
00001428 51cafff0	dbf	d2,--
0000142c 4e75	rts	
0000142e 4df900c00000	lea	(VDP_data_port).l,a6
00001434 283c01000000	move.l	#vdpCommDelta(planeLoc(128,0,1)),d4
0000143e 3601	move.w	d1,d3
00001442 51cbfffc	dbf	d3,-
00001446 d084	add.l	d4,d0
00001448 51cafff0	dbf	d2,--
0000144c 4e75	rts	
0000144e 2278dcfc	movea.l	(VDP_Command_Buffer_Slot).w,a1
00001452 b2fcdcfc	cmpa.w	#VDP_Command_Buffer_Slot,a1
00001456 6752	beq.s	.return
00001458 303c9300	move.w	#$9300,d0
0000145c 1003	move.b	d3,d0
0000145e 32c0	move.w	d0,(a1)+
00001460 303c9400	move.w	#$9400,d0
00001464 e04b	lsr.w	#8,d3
00001466 1003	move.b	d3,d0
00001468 32c0	move.w	d0,(a1)+
0000146a 303c9500	move.w	#$9500,d0
0000146e e289	lsr.l	#1,d1
00001470 1001	move.b	d1,d0
00001472 32c0	move.w	d0,(a1)+
00001474 303c9600	move.w	#$9600,d0
00001478 e089	lsr.l	#8,d1
0000147a 1001	move.b	d1,d0
0000147c 32c0	move.w	d0,(a1)+
0000147e 303c9700	move.w	#$9700,d0
00001482 e089	lsr.l	#8,d1
00001484 1001	move.b	d1,d0
00001486 32c0	move.w	d0,(a1)+
00001488 02820000ffff	andi.l	#$FFFF,d2
0000148e e58a	lsl.l	#2,d2
00001490 e44a	lsr.w	#2,d2
00001492 4842	swap	d2
00001494 008240000080	ori.l	#vdpComm($0000,VRAM,DMA),d2
0000149a 22c2	move.l	d2,(a1)+
0000149c 21c9dcfc	move.l	a1,(VDP_Command_Buffer_Slot).w
000014a0 b2fcdcfc	cmpa.w	#VDP_Command_Buffer_Slot,a1
000014a4 6704	beq.s	.return
000014a6 32bc0000	move.w	#0,(a1)
000014aa 4e75	rts	
000014ac 4bf900c00004	lea	(VDP_control_port).l,a5
000014b2 43f8dc00	lea	(VDP_Command_Buffer).w,a1
000014b6 3019	move.w	(a1)+,d0
000014b8 6714	beq.s	.done
000014ba 3a80	move.w	d0,(a5)
000014bc 3a99	move.w	(a1)+,(a5)
000014be 3a99	move.w	(a1)+,(a5)
000014c0 3a99	move.w	(a1)+,(a5)
000014c2 3a99	move.w	(a1)+,(a5)
000014c4 3a99	move.w	(a1)+,(a5)
000014c6 3a99	move.w	(a1)+,(a5)
000014c8 b2fcdcfc	cmpa.w	#VDP_Command_Buffer_Slot,a1
000014cc 66e8	bne.s	.loop
000014ce 31fc0000dc00	move.w	#0,(VDP_Command_Buffer).w
000014d4 21fcffffdc00dcfc	move.l	#VDP_Command_Buffer,(VDP_Command_Buffer_Slot).w
000014dc 4e75	rts	
000014de 48e7ffdc	movem.l	d0-a1/a3-a5,-(sp)
000014e2 47f9000015a0	lea	(NemDec_WriteAndStay).l,a3
000014e8 49f900c00000	lea	(VDP_data_port).l,a4
000014ee 600a	bra.s	NemDecMain
000014f0 48e7ffdc	movem.l	d0-a1/a3-a5,-(sp)
000014f4 47f9000015b6	lea	(NemDec_WriteAndAdvance).l,a3
000014fa 43f8aa00	lea	(Decomp_Buffer).w,a1
000014fe 3418	move.w	(a0)+,d2
00001500 e34a	lsl.w	#1,d2
00001502 6404	bcc.s	.noXORMode
00001504 d6fc000a	adda.w	#NemDec_WriteAndStay_XOR-NemDec_WriteAndStay,a3
00001508 e54a	lsl.w	#2,d2
0000150a 3a42	movea.w	d2,a5
0000150c 7608	moveq	#8,d3
0000150e 7400	moveq	#0,d2
00001510 7800	moveq	#0,d4
00001512 610000b8	bsr.w	NemDecPrepare
00001516 1a18	move.b	(a0)+,d5
00001518 e145	asl.w	#8,d5
0000151a 1a18	move.b	(a0)+,d5
0000151c 3c3c0010	move.w	#$10,d6
00001520 6106	bsr.s	NemDecRun
00001522 4cdf3bff	movem.l	(sp)+,d0-a1/a3-a5
00001526 4e75	rts	
00001528 3e06	move.w	d6,d7
0000152a 5147	subq.w	#8,d7
0000152c 3205	move.w	d5,d1
0000152e ee69	lsr.w	d7,d1
00001530 0c0100fc	cmpi.b	#%11111100,d1
00001534 643e	bhs.s	NemDec_InlineData
00001536 024100ff	andi.w	#$FF,d1
0000153a d241	add.w	d1,d1
0000153c 10311000	move.b	(a1,d1.w),d0
00001540 4880	ext.w	d0
00001542 9c40	sub.w	d0,d6
00001544 0c460009	cmpi.w	#9,d6
00001548 6406	bhs.s	.afterNewByteRead
0000154a 5046	addq.w	#8,d6
0000154c e145	asl.w	#8,d5
0000154e 1a18	move.b	(a0)+,d5
00001550 12311001	move.b	1(a1,d1.w),d1
00001554 3001	move.w	d1,d0
00001556 0241000f	andi.w	#$F,d1
0000155a 024000f0	andi.w	#$F0,d0
0000155e e848	lsr.w	#4,d0
00001560 e98c	lsl.l	#4,d4
00001562 8801	or.b	d1,d4
00001564 5343	subq.w	#1,d3
00001566 6606	bne.s	.writePixelLoopExitCheck
00001568 4ed3	jmp	(a3)
0000156a 7800	moveq	#0,d4
0000156c 7608	moveq	#8,d3
0000156e 51c8fff0	dbf	d0,.writePixel
00001572 60b4	bra.s	NemDecRun
00001574 5d46	subq.w	#6,d6
00001576 0c460009	cmpi.w	#9,d6
0000157a 6406	bhs.s	+
0000157c 5046	addq.w	#8,d6
0000157e e145	asl.w	#8,d5
00001580 1a18	move.b	(a0)+,d5
00001582 5f46	subq.w	#7,d6
00001584 3205	move.w	d5,d1
00001586 ec69	lsr.w	d6,d1
00001588 3001	move.w	d1,d0
0000158a 0241000f	andi.w	#$F,d1
0000158e 02400070	andi.w	#$70,d0
00001592 0c460009	cmpi.w	#9,d6
00001596 64c6	bhs.s	NemDecRun.getRepeatCount
00001598 5046	addq.w	#8,d6
0000159a e145	asl.w	#8,d5
0000159c 1a18	move.b	(a0)+,d5
0000159e 60be	bra.s	NemDecRun.getRepeatCount
000015a0 2884	move.l	d4,(a4)
000015a2 534d	subq.w	#1,a5
000015a4 380d	move.w	a5,d4
000015a6 66c2	bne.s	NemDecRun.writePixelLoopEntry
000015a8 4e75	rts	
000015aa b982	eor.l	d4,d2
000015ac 2882	move.l	d2,(a4)
000015ae 534d	subq.w	#1,a5
000015b0 380d	move.w	a5,d4
000015b2 66b6	bne.s	NemDecRun.writePixelLoopEntry
000015b4 4e75	rts	
000015b6 28c4	move.l	d4,(a4)+
000015b8 534d	subq.w	#1,a5
000015ba 380d	move.w	a5,d4
000015bc 66ac	bne.s	NemDecRun.writePixelLoopEntry
000015be 4e75	rts	
000015c0 b982	eor.l	d4,d2
000015c2 28c2	move.l	d2,(a4)+
000015c4 534d	subq.w	#1,a5
000015c6 380d	move.w	a5,d4
000015c8 66a0	bne.s	NemDecRun.writePixelLoopEntry
000015ca 4e75	rts	
000015cc 1018	move.b	(a0)+,d0
000015ce 0c0000ff	cmpi.b	#$FF,d0
000015d2 6602	bne.s	+
000015d4 4e75	rts	
000015d8 1018	move.b	(a0)+,d0
000015da 0c000080	cmpi.b	#$80,d0
000015de 64ee	bhs.s	.checkCodeTableDescriptionEnd
000015e0 1200	move.b	d0,d1
000015e2 0247000f	andi.w	#$F,d7
000015e6 02410070	andi.w	#$70,d1
000015ea 8e41	or.w	d1,d7
000015ec 0240000f	andi.w	#$F,d0
000015f0 1200	move.b	d0,d1
000015f2 e149	lsl.w	#8,d1
000015f4 8e41	or.w	d1,d7
000015f6 7208	moveq	#8,d1
000015f8 9240	sub.w	d0,d1
000015fa 660a	bne.s	.shorterThan8BitCode
000015fc 1018	move.b	(a0)+,d0
000015fe d040	add.w	d0,d0
00001600 33870000	move.w	d7,(a1,d0.w)
00001604 60d2	bra.s	.nextCode
00001606 1018	move.b	(a0)+,d0
00001608 e368	lsl.w	d1,d0
0000160a d040	add.w	d0,d0
0000160c 7a01	moveq	#1,d5
0000160e e36d	lsl.w	d1,d5
00001610 5345	subq.w	#1,d5
00001612 33870000	move.w	d7,(a1,d0.w)
00001616 5440	addq.w	#2,d0
00001618 51cdfff8	dbf	d5,.shorterThan8BitCodeLoop
0000161c 60ba	bra.s	.nextCode
0000161e 48e70060	movem.l	a1-a2,-(sp)
00001622 43f900042660	lea	(ArtLoadCues).l,a1
00001628 d040	add.w	d0,d0
0000162a 30310000	move.w	(a1,d0.w),d0
0000162e 43f10000	lea	(a1,d0.w),a1
00001632 45f8f680	lea	(Plc_Buffer).w,a2
00001636 4a92	tst.l	(a2)
00001638 6704	beq.s	.foundFreeSpace
0000163a 5c4a	addq.w	#6,a2
0000163c 60f8	bra.s	.findFreeSpaceLoop
0000163e 3019	move.w	(a1)+,d0
00001640 6b08	bmi.s	.return
00001642 24d9	move.l	(a1)+,(a2)+
00001644 34d9	move.w	(a1)+,(a2)+
00001646 51c8fffa	dbf	d0,.copyPLCLoop
0000164a 4cdf0600	movem.l	(sp)+,a1-a2
0000164e 4e75	rts	
00001650 48e70060	movem.l	a1-a2,-(sp)
00001654 43f900042660	lea	(ArtLoadCues).l,a1
0000165a d040	add.w	d0,d0
0000165c 30310000	move.w	(a1,d0.w),d0
00001660 43f10000	lea	(a1,d0.w),a1
00001664 6116	bsr.s	ClearPLC
00001666 45f8f680	lea	(Plc_Buffer).w,a2
0000166a 3019	move.w	(a1)+,d0
0000166c 6b08	bmi.s	.return
0000166e 24d9	move.l	(a1)+,(a2)+
00001670 34d9	move.w	(a1)+,(a2)+
00001672 51c8fffa	dbf	d0,.copyPLCLoop
00001676 4cdf0600	movem.l	(sp)+,a1-a2
0000167a 4e75	rts	
0000167c 45f8f680	lea	(Plc_Buffer).w,a2
00001680 701f	moveq	#bytesToLcnt(Plc_Buffer_End-Plc_Buffer),d0
00001684 51c8fffc	dbf	d0,-
00001688 4e75	rts	
0000168a 4ab8f680	tst.l	(Plc_Buffer).w
0000168e 674e	beq.s	.return
00001690 4a78f6f8	tst.w	(Plc_PatternsLeft).w
00001694 6648	bne.s	.return
00001696 2078f680	movea.l	(Plc_Buffer).w,a0
0000169e 4e71	nop	
000016a0 43f8aa00	lea	(Decomp_Buffer).w,a1
000016a4 3418	move.w	(a0)+,d2
000016a6 6a04	bpl.s	+
000016a8 d6fc000a	adda.w	#NemDec_WriteAndStay_XOR-NemDec_WriteAndStay,a3
000016ac 02427fff	andi.w	#$7FFF,d2
000016b0 31c2f6f8	move.w	d2,(Plc_PatternsLeft).w
000016b4 6100ff16	bsr.w	NemDecPrepare
000016b8 1a18	move.b	(a0)+,d5
000016ba e145	asl.w	#8,d5
000016bc 1a18	move.b	(a0)+,d5
000016be 7c10	moveq	#$10,d6
000016c0 7000	moveq	#0,d0
000016c2 21c8f680	move.l	a0,(Plc_Buffer).w
000016c6 21cbf6e0	move.l	a3,(Plc_PtrNemCode).w
000016ca 21c0f6e4	move.l	d0,(Plc_RepeatCount).w
000016ce 21c0f6e8	move.l	d0,(Plc_PaletteIndex).w
000016d2 21c0f6ec	move.l	d0,(Plc_PreviousRow).w
000016d6 21c5f6f0	move.l	d5,(Plc_DataWord).w
000016da 21c6f6f4	move.l	d6,(Plc_ShiftValue).w
000016de 4e75	rts	
000016e0 4a78f6f8	tst.w	(Plc_PatternsLeft).w
000016e4 67000092	beq.w	+
000016e8 31fc0006f6fa	move.w	#6,(Plc_FramePatternsLeft).w
000016ee 7000	moveq	#0,d0
000016f0 3038f684	move.w	(Plc_Buffer+4).w,d0
000016f4 067800c0f684	addi.w	#6*$20,(Plc_Buffer+4).w
000016fa 6018	bra.s	ProcessDPLC_Main
000016fc 4a78f6f8	tst.w	(Plc_PatternsLeft).w
00001700 6776	beq.s	+
00001702 31fc0003f6fa	move.w	#3,(Plc_FramePatternsLeft).w
00001708 7000	moveq	#0,d0
0000170a 3038f684	move.w	(Plc_Buffer+4).w,d0
0000170e 06780060f684	addi.w	#$60,(Plc_Buffer+4).w
00001714 49f900c00004	lea	(VDP_control_port).l,a4
0000171a e588	lsl.l	#2,d0
0000171c e448	lsr.w	#2,d0
0000171e 00404000	ori.w	#vdpComm($0000,VRAM,WRITE)>>16,d0
00001722 4840	swap	d0
00001724 2880	move.l	d0,(a4)
00001726 594c	subq.w	#4,a4
00001728 2078f680	movea.l	(Plc_Buffer).w,a0
0000172c 2678f6e0	movea.l	(Plc_PtrNemCode).w,a3
00001730 2038f6e4	move.l	(Plc_RepeatCount).w,d0
00001734 2238f6e8	move.l	(Plc_PaletteIndex).w,d1
00001738 2438f6ec	move.l	(Plc_PreviousRow).w,d2
0000173c 2a38f6f0	move.l	(Plc_DataWord).w,d5
00001740 2c38f6f4	move.l	(Plc_ShiftValue).w,d6
00001744 43f8aa00	lea	(Decomp_Buffer).w,a1
0000174c 6100fe1c	bsr.w	NemDecRun.writePixelLoopEntry
00001750 5378f6f8	subq.w	#1,(Plc_PatternsLeft).w
00001754 6724	beq.s	ProcessDPLC_Pop
00001756 5378f6fa	subq.w	#1,(Plc_FramePatternsLeft).w
0000175a 66ec	bne.s	-
0000175c 21c8f680	move.l	a0,(Plc_Buffer).w
00001760 21cbf6e0	move.l	a3,(Plc_PtrNemCode).w
00001764 21c0f6e4	move.l	d0,(Plc_RepeatCount).w
00001768 21c1f6e8	move.l	d1,(Plc_PaletteIndex).w
0000176c 21c2f6ec	move.l	d2,(Plc_PreviousRow).w
00001770 21c5f6f0	move.l	d5,(Plc_DataWord).w
00001774 21c6f6f4	move.l	d6,(Plc_ShiftValue).w
00001778 4e75	rts	
0000177a 41f8f680	lea	(Plc_Buffer).w,a0
0000177e 7015	moveq	#bytesToLcnt(Plc_Buffer_Only_End-Plc_Buffer-6),d0
00001784 51c8fffa	dbf	d0,-
00001788 4e75	rts	
0000178a 43f900042660	lea	(ArtLoadCues).l,a1
00001790 d040	add.w	d0,d0
00001792 30310000	move.w	(a1,d0.w),d0
00001796 43f10000	lea	(a1,d0.w),a1
0000179a 3219	move.w	(a1)+,d1
0000179e 7000	moveq	#0,d0
000017a0 3019	move.w	(a1)+,d0
000017a2 e588	lsl.l	#2,d0
000017a4 e448	lsr.w	#2,d0
000017a6 00404000	ori.w	#vdpComm($0000,VRAM,WRITE)>>16,d0
000017aa 4840	swap	d0
000017ac 23c000c00004	move.l	d0,(VDP_control_port).l
000017b2 6100fd2a	bsr.w	NemDec
000017b6 51c9ffe4	dbf	d1,-
000017ba 4e75	rts	
000017bc 48e7ff7c	movem.l	d0-d7/a1-a5,-(sp)
000017c0 3640	movea.w	d0,a3
000017c2 1018	move.b	(a0)+,d0
000017c4 4880	ext.w	d0
000017c6 3a40	movea.w	d0,a5
000017c8 1818	move.b	(a0)+,d4
000017ca e70c	lsl.b	#3,d4
000017cc 3458	movea.w	(a0)+,a2
000017ce d4cb	adda.w	a3,a2
000017d0 3858	movea.w	(a0)+,a4
000017d2 d8cb	adda.w	a3,a4
000017d4 1a18	move.b	(a0)+,d5
000017d6 e145	asl.w	#8,d5
000017d8 1a18	move.b	(a0)+,d5
000017da 7c10	moveq	#16,d6
000017dc 7007	moveq	#7,d0
000017de 3e06	move.w	d6,d7
000017e0 9e40	sub.w	d0,d7
000017e2 3205	move.w	d5,d1
000017e4 ee69	lsr.w	d7,d1
000017e6 0241007f	andi.w	#$7F,d1
000017ea 3401	move.w	d1,d2
000017ec 0c410040	cmpi.w	#$40,d1
000017f0 6404	bhs.s	.sevenbitentry
000017f2 7006	moveq	#6,d0
000017f4 e24a	lsr.w	#1,d2
000017f6 61000132	bsr.w	EniDec_ChkGetNextByte
000017fa 0242000f	andi.w	#$F,d2
000017fe e849	lsr.w	#4,d1
00001800 d241	add.w	d1,d1
00001802 4efb104e	jmp	EniDec_JmpTable(pc,d1.w)
00001806 32ca	move.w	a2,(a1)+
00001808 524a	addq.w	#1,a2
0000180a 51cafffa	dbf	d2,EniDec_Sub0
0000180e 60cc	bra.s	EniDec_Loop
00001810 32cc	move.w	a4,(a1)+
00001812 51cafffc	dbf	d2,EniDec_Sub4
00001816 60c4	bra.s	EniDec_Loop
00001818 61000060	bsr.w	EniDec_GetInlineCopyVal
0000181c 32c1	move.w	d1,(a1)+
0000181e 51cafffc	dbf	d2,.loop
00001822 60b8	bra.s	EniDec_Loop
00001824 61000054	bsr.w	EniDec_GetInlineCopyVal
00001828 32c1	move.w	d1,(a1)+
0000182a 5241	addq.w	#1,d1
0000182c 51cafffa	dbf	d2,.loop
00001830 60aa	bra.s	EniDec_Loop
00001832 61000046	bsr.w	EniDec_GetInlineCopyVal
00001836 32c1	move.w	d1,(a1)+
00001838 5341	subq.w	#1,d1
0000183a 51cafffa	dbf	d2,.loop
0000183e 609c	bra.s	EniDec_Loop
00001840 0c42000f	cmpi.w	#$F,d2
00001844 671c	beq.s	EniDec_End
00001846 61000032	bsr.w	EniDec_GetInlineCopyVal
0000184a 32c1	move.w	d1,(a1)+
0000184c 51cafff8	dbf	d2,.loop
00001850 608a	bra.s	EniDec_Loop
00001852 60b2	bra.s	EniDec_Sub0
00001854 60b0	bra.s	EniDec_Sub0
00001856 60b8	bra.s	EniDec_Sub4
00001858 60b6	bra.s	EniDec_Sub4
0000185a 60bc	bra.s	EniDec_Sub8
0000185c 60c6	bra.s	EniDec_SubA
0000185e 60d2	bra.s	EniDec_SubC
00001860 60de	bra.s	EniDec_SubE
00001862 5348	subq.w	#1,a0
00001864 0c460010	cmpi.w	#16,d6
00001868 6602	bne.s	.notnewbyte
0000186a 5348	subq.w	#1,a0
0000186c 3008	move.w	a0,d0
0000186e e248	lsr.w	#1,d0
00001870 6402	bcc.s	.evenbyte
00001872 5248	addq.w	#1,a0
00001874 4cdf3eff	movem.l	(sp)+,d0-d7/a1-a5
00001878 4e75	rts	
0000187a 360b	move.w	a3,d3
0000187c 1204	move.b	d4,d1
0000187e d201	add.b	d1,d1
00001880 640a	bcc.s	.skippriority
00001882 5346	subq.w	#1,d6
00001884 0d05	btst	d6,d5
00001886 6704	beq.s	.skippriority
00001888 00438000	ori.w	#high_priority,d3
0000188c d201	add.b	d1,d1
0000188e 640a	bcc.s	.skiphighpal
00001890 5346	subq.w	#1,d6
00001892 0d05	btst	d6,d5
00001894 6704	beq.s	.skiphighpal
00001896 06434000	addi.w	#palette_line_2,d3
0000189a d201	add.b	d1,d1
0000189c 640a	bcc.s	.skiplowpal
0000189e 5346	subq.w	#1,d6
000018a0 0d05	btst	d6,d5
000018a2 6704	beq.s	.skiplowpal
000018a4 06432000	addi.w	#palette_line_1,d3
000018a8 d201	add.b	d1,d1
000018aa 640a	bcc.s	.skipyflip
000018ac 5346	subq.w	#1,d6
000018ae 0d05	btst	d6,d5
000018b0 6704	beq.s	.skipyflip
000018b2 00431000	ori.w	#flip_y,d3
000018b6 d201	add.b	d1,d1
000018b8 640a	bcc.s	.skipxflip
000018ba 5346	subq.w	#1,d6
000018bc 0d05	btst	d6,d5
000018be 6704	beq.s	.skipxflip
000018c0 00430800	ori.w	#flip_x,d3
000018c4 3205	move.w	d5,d1
000018c6 3e06	move.w	d6,d7
000018c8 9e4d	sub.w	a5,d7
000018ca 6428	bcc.s	.enoughbits
000018cc 3c07	move.w	d7,d6
000018ce 06460010	addi.w	#16,d6
000018d2 4447	neg.w	d7
000018d4 ef69	lsl.w	d7,d1
000018d6 1a10	move.b	(a0),d5
000018d8 ef3d	rol.b	d7,d5
000018da de47	add.w	d7,d7
000018dc ca7b702a	and.w	EniDec_AndVals-2(pc,d7.w),d5
000018e0 d245	add.w	d5,d1
000018e2 300d	move.w	a5,d0
000018e4 d040	add.w	d0,d0
000018e6 c27b0020	and.w	EniDec_AndVals-2(pc,d0.w),d1
000018ea d243	add.w	d3,d1
000018ec 1a18	move.b	(a0)+,d5
000018ee e14d	lsl.w	#8,d5
000018f0 1a18	move.b	(a0)+,d5
000018f2 4e75	rts	
000018f4 6710	beq.s	.justenough
000018f6 ee69	lsr.w	d7,d1
000018f8 300d	move.w	a5,d0
000018fa d040	add.w	d0,d0
000018fc c27b000a	and.w	EniDec_AndVals-2(pc,d0.w),d1
00001900 d243	add.w	d3,d1
00001902 300d	move.w	a5,d0
00001904 6024	bra.s	EniDec_ChkGetNextByte
00001906 7c10	moveq	#16,d6
00001908 60d8	bra.s	.maskvalue
0000192a 9c40	sub.w	d0,d6
0000192c 0c460009	cmpi.w	#9,d6
00001930 6406	bhs.s	.return
00001932 5046	addq.w	#8,d6
00001934 e145	asl.w	#8,d5
00001936 1a18	move.b	(a0)+,d5
00001938 4e75	rts	
0000193a 558f	subq.l	#2,sp
0000193c 1f580001	move.b	(a0)+,1(sp)
00001940 1e98	move.b	(a0)+,(sp)
00001942 3a17	move.w	(sp),d5
00001944 780f	moveq	#$F,d4
00001946 e24d	lsr.w	#1,d5
00001948 40c6	move	sr,d6
0000194a 51cc000c	dbf	d4,.chkbit
0000194e 1f580001	move.b	(a0)+,1(sp)
00001952 1e98	move.b	(a0)+,(sp)
00001954 3a17	move.w	(sp),d5
00001956 780f	moveq	#$F,d4
00001958 44c6	move	d6,ccr
0000195a 6404	bcc.s	Kos_RLE
0000195c 12d8	move.b	(a0)+,(a1)+
0000195e 60e6	bra.s	Kos_Loop
00001960 7600	moveq	#0,d3
00001962 e24d	lsr.w	#1,d5
00001964 40c6	move	sr,d6
00001966 51cc000c	dbf	d4,.chkbit
0000196a 1f580001	move.b	(a0)+,1(sp)
0000196e 1e98	move.b	(a0)+,(sp)
00001970 3a17	move.w	(sp),d5
00001972 780f	moveq	#$F,d4
00001974 44c6	move	d6,ccr
00001976 652c	bcs.s	Kos_SeparateRLE
00001978 e24d	lsr.w	#1,d5
0000197a 51cc000c	dbf	d4,.loop1
0000197e 1f580001	move.b	(a0)+,1(sp)
00001982 1e98	move.b	(a0)+,(sp)
00001984 3a17	move.w	(sp),d5
00001986 780f	moveq	#$F,d4
00001988 e353	roxl.w	#1,d3
0000198a e24d	lsr.w	#1,d5
0000198c 51cc000c	dbf	d4,.loop2
00001990 1f580001	move.b	(a0)+,1(sp)
00001994 1e98	move.b	(a0)+,(sp)
00001996 3a17	move.w	(sp),d5
00001998 780f	moveq	#$F,d4
0000199a e353	roxl.w	#1,d3
0000199c 5243	addq.w	#1,d3
0000199e 74ff	moveq	#-1,d2
000019a0 1418	move.b	(a0)+,d2
000019a2 6016	bra.s	Kos_RLELoop
000019a4 1018	move.b	(a0)+,d0
000019a6 1218	move.b	(a0)+,d1
000019a8 74ff	moveq	#-1,d2
000019aa 1401	move.b	d1,d2
000019ac eb4a	lsl.w	#5,d2
000019ae 1400	move.b	d0,d2
000019b0 02410007	andi.w	#7,d1
000019b4 6710	beq.s	Kos_SeparateRLE2
000019b6 1601	move.b	d1,d3
000019b8 5243	addq.w	#1,d3
000019ba 10312000	move.b	(a1,d2.w),d0
000019be 12c0	move.b	d0,(a1)+
000019c0 51cbfff8	dbf	d3,Kos_RLELoop
000019c4 6080	bra.s	Kos_Loop
000019c6 1218	move.b	(a0)+,d1
000019c8 670c	beq.s	Kos_Done
000019ca 0c010001	cmpi.b	#1,d1
000019ce 6700ff76	beq.w	Kos_Loop
000019d2 1601	move.b	d1,d3
000019d4 60e4	bra.s	Kos_RLELoop
000019d6 548f	addq.l	#2,sp
000019d8 4e75	rts	
000019da 4e71	nop	
000019dc 61000760	bsr.w	PalCycle_SuperSonic
000019e0 7400	moveq	#0,d2
000019e2 7000	moveq	#0,d0
000019e4 1038fe10	move.b	(Current_Zone).w,d0
000019e8 d040	add.w	d0,d0
000019ea 303b0008	move.w	PalCycle(pc,d0.w),d0
000019ee 4efb0004	jmp	PalCycle(pc,d0.w)
000019f2 4e75	rts	
00001a16 4e75	rts	
00001a18 41f900001e7a	lea	(CyclingPal_EHZ_ARZ_Water).l,a0
00001a1e 5378f634	subq.w	#1,(PalCycle_Timer).w
00001a22 6a20	bpl.s	.return
00001a24 31fc0007f634	move.w	#7,(PalCycle_Timer).w
00001a2a 3038f632	move.w	(PalCycle_Frame).w,d0
00001a2e 5278f632	addq.w	#1,(PalCycle_Frame).w
00001a32 02400003	andi.w	#3,d0
00001a36 e748	lsl.w	#3,d0
00001a38 21f00000fb26	move.l	(a0,d0.w),(Normal_palette_line2+6).w
00001a3e 21f00004fb3c	move.l	4(a0,d0.w),(Normal_palette_line2+$1C).w
00001a44 4e75	rts	
00001a46 5378f634	subq.w	#1,(PalCycle_Timer).w
00001a4a 6a28	bpl.s	.return
00001a4c 31fc0002f634	move.w	#2,(PalCycle_Timer).w
00001a52 41f900001f1a	lea	(CyclingPal_WoodConveyor).l,a0
00001a58 3038f632	move.w	(PalCycle_Frame).w,d0
00001a5c 5578f632	subq.w	#2,(PalCycle_Frame).w
00001a60 6406	bcc.s	+
00001a62 31fc0006f632	move.w	#6,(PalCycle_Frame).w
00001a6c 22f00000	move.l	(a0,d0.w),(a1)+
00001a70 22b00004	move.l	4(a0,d0.w),(a1)
00001a74 4e75	rts	
00001a76 5378f634	subq.w	#1,(PalCycle_Timer).w
00001a7a 6a2a	bpl.s	++
00001a7c 31fc0011f634	move.w	#$11,(PalCycle_Timer).w
00001a82 41f900001f2a	lea	(CyclingPal_MTZ1).l,a0
00001a88 3038f632	move.w	(PalCycle_Frame).w,d0
00001a8c 5478f632	addq.w	#2,(PalCycle_Frame).w
00001a90 0c78000cf632	cmpi.w	#$C,(PalCycle_Frame).w
00001a96 6506	blo.s	+
00001a98 31fc0000f632	move.w	#0,(PalCycle_Frame).w
00001aa2 32b00000	move.w	(a0,d0.w),(a1)
00001aa6 5378f666	subq.w	#1,(PalCycle_Timer2).w
00001aaa 6a2e	bpl.s	++
00001aac 31fc0002f666	move.w	#2,(PalCycle_Timer2).w
00001ab2 41f900001f36	lea	(CyclingPal_MTZ2).l,a0
00001ab8 3038f652	move.w	(PalCycle_Frame2).w,d0
00001abc 5478f652	addq.w	#2,(PalCycle_Frame2).w
00001ac0 0c780006f652	cmpi.w	#6,(PalCycle_Frame2).w
00001ac6 6506	blo.s	+
00001ac8 31fc0000f652	move.w	#0,(PalCycle_Frame2).w
00001ad2 22f00000	move.l	(a0,d0.w),(a1)+
00001ad6 32b00004	move.w	4(a0,d0.w),(a1)
00001ada 5378f668	subq.w	#1,(PalCycle_Timer3).w
00001ade 6a2a	bpl.s	.return
00001ae0 31fc0009f668	move.w	#9,(PalCycle_Timer3).w
00001ae6 41f900001f42	lea	(CyclingPal_MTZ3).l,a0
00001aec 3038f654	move.w	(PalCycle_Frame3).w,d0
00001af0 5478f654	addq.w	#2,(PalCycle_Frame3).w
00001af4 0c780014f654	cmpi.w	#$14,(PalCycle_Frame3).w
00001afa 6506	blo.s	+
00001afc 31fc0000f654	move.w	#0,(PalCycle_Frame3).w
00001b06 32b00000	move.w	(a0,d0.w),(a1)
00001b0a 4e75	rts	
00001b0c 41f900001e9a	lea	(CyclingPal_Lava).l,a0
00001b12 5378f634	subq.w	#1,(PalCycle_Timer).w
00001b16 6a26	bpl.s	.return
00001b18 31fc0000f634	move.w	#0,(PalCycle_Timer).w
00001b1e 3038f632	move.w	(PalCycle_Frame).w,d0
00001b22 5278f632	addq.w	#1,(PalCycle_Frame).w
00001b26 0240000f	andi.w	#$F,d0
00001b2a 11fb0014f635	move.b	PalCycle_HTZ_LavaDelayData(pc,d0.w),(PalCycle_Timer+1).w
00001b30 e748	lsl.w	#3,d0
00001b32 21f00000fb26	move.l	(a0,d0.w),(Normal_palette_line2+6).w
00001b38 21f00004fb3c	move.l	4(a0,d0.w),(Normal_palette_line2+$1C).w
00001b3e 4e75	rts	
00001b50 5378f634	subq.w	#1,(PalCycle_Timer).w
00001b54 6a3a	bpl.s	.return
00001b56 31fc0004f634	move.w	#4,(PalCycle_Timer).w
00001b5c 41f900001f56	lea	(CyclingPal_HPZWater).l,a0
00001b62 3038f632	move.w	(PalCycle_Frame).w,d0
00001b66 5578f632	subq.w	#2,(PalCycle_Frame).w
00001b6a 6406	bcc.s	+
00001b6c 31fc0006f632	move.w	#6,(PalCycle_Frame).w
00001b76 22f00000	move.l	(a0,d0.w),(a1)+
00001b7a 22b00004	move.l	4(a0,d0.w),(a1)
00001b7e 41f900001f66	lea	(CyclingPal_HPZUnderwater).l,a0
00001b84 43f8f0f2	lea	(Underwater_palette_line4+$12).w,a1
00001b88 22f00000	move.l	(a0,d0.w),(a1)+
00001b8c 22b00004	move.l	4(a0,d0.w),(a1)
00001b90 4e75	rts	
00001b92 5378f634	subq.w	#1,(PalCycle_Timer).w
00001b96 6a26	bpl.s	.return
00001b98 31fc0007f634	move.w	#7,(PalCycle_Timer).w
00001b9e 41f900001f76	lea	(CyclingPal_Oil).l,a0
00001ba4 3038f632	move.w	(PalCycle_Frame).w,d0
00001ba8 5478f632	addq.w	#2,(PalCycle_Frame).w
00001bac 02780006f632	andi.w	#6,(PalCycle_Frame).w
00001bb2 43f8fb54	lea	(Normal_palette_line3+$14).w,a1
00001bb6 22f00000	move.l	(a0,d0.w),(a1)+
00001bba 22b00004	move.l	4(a0,d0.w),(a1)
00001bbe 4e75	rts	
00001bc0 4a38f7aa	tst.b	(Current_Boss_ID).w
00001bc4 6626	bne.s	.return
00001bc6 5378f634	subq.w	#1,(PalCycle_Timer).w
00001bca 6a20	bpl.s	.return
00001bcc 31fc0001f634	move.w	#1,(PalCycle_Timer).w
00001bd2 41f900001f86	lea	(CyclingPal_Lantern).l,a0
00001bd8 3038f632	move.w	(PalCycle_Frame).w,d0
00001bdc 5478f632	addq.w	#2,(PalCycle_Frame).w
00001be0 02780006f632	andi.w	#6,(PalCycle_Frame).w
00001be6 31f00000fb36	move.w	(a0,d0.w),(Normal_palette_line2+$16).w
00001bec 4e75	rts	
00001bee 5378f634	subq.w	#1,(PalCycle_Timer).w
00001bf2 6a000098	bpl.w	CNZ_SkipToBossPalCycle
00001bf6 31fc0007f634	move.w	#7,(PalCycle_Timer).w
00001bfc 41f900001f8e	lea	(CyclingPal_CNZ1).l,a0
00001c02 3038f632	move.w	(PalCycle_Frame).w,d0
00001c06 5478f632	addq.w	#2,(PalCycle_Frame).w
00001c0a 0c780006f632	cmpi.w	#6,(PalCycle_Frame).w
00001c10 6506	blo.s	+
00001c12 31fc0000f632	move.w	#0,(PalCycle_Frame).w
00001c18 41f00000	lea	(a0,d0.w),a0
00001c1c 43f8fb00	lea	(Normal_palette).w,a1
00001c26 33680006004c	move.w	6(a0),$4C(a1)
00001c2c 3368000c004e	move.w	$C(a0),$4E(a1)
00001c32 336800120056	move.w	$12(a0),$56(a1)
00001c38 336800180058	move.w	$18(a0),$58(a1)
00001c3e 3368001e005a	move.w	$1E(a0),$5A(a1)
00001c44 41f900001fb2	lea	(CyclingPal_CNZ3).l,a0
00001c4a 41f00000	lea	(a0,d0.w),a0
00001c54 336800060066	move.w	6(a0),$66(a1)
00001c5a 3368000c0068	move.w	$C(a0),$68(a1)
00001c60 41f900001fc4	lea	(CyclingPal_CNZ4).l,a0
00001c66 3038f650	move.w	(PalCycle_Frame_CNZ).w,d0
00001c6a 5478f650	addq.w	#2,(PalCycle_Frame_CNZ).w
00001c6e 0c780024f650	cmpi.w	#$24,(PalCycle_Frame_CNZ).w
00001c74 6506	blo.s	+
00001c76 31fc0000f650	move.w	#0,(PalCycle_Frame_CNZ).w
00001c7c 43f8fb72	lea	(Normal_palette_line4+$12).w,a1
00001c80 32f00004	move.w	4(a0,d0.w),(a1)+
00001c84 32f00002	move.w	2(a0,d0.w),(a1)+
00001c88 32f00000	move.w	(a0,d0.w),(a1)+
00001c8c 4a38f7aa	tst.b	(Current_Boss_ID).w
00001c90 67000082	beq.w	+++
00001c94 5378f666	subq.w	#1,(PalCycle_Timer2).w
00001c98 6a00007a	bpl.w	+++
00001c9c 31fc0003f666	move.w	#3,(PalCycle_Timer2).w
00001ca2 3038f652	move.w	(PalCycle_Frame2).w,d0
00001ca6 5478f652	addq.w	#2,(PalCycle_Frame2).w
00001caa 0c780006f652	cmpi.w	#6,(PalCycle_Frame2).w
00001cb0 6506	blo.s	+
00001cb2 31fc0000f652	move.w	#0,(PalCycle_Frame2).w
00001cbe 41f00000	lea	(a0,d0.w),a0
00001cc2 43f8fb00	lea	(Normal_palette).w,a1
00001ccc 336800060026	move.w	6(a0),$26(a1)
00001cd2 3368000c0028	move.w	$C(a0),$28(a1)
00001cd8 41f900001ffe	lea	(CyclingPal_CNZ2_B).l,a0
00001cde 3038f654	move.w	(PalCycle_Frame3).w,d0
00001ce2 5478f654	addq.w	#2,(PalCycle_Frame3).w
00001ce6 0c780014f654	cmpi.w	#$14,(PalCycle_Frame3).w
00001cec 6506	blo.s	+
00001cee 31fc0000f654	move.w	#0,(PalCycle_Frame3).w
00001cfa 41f900002012	lea	(CyclingPal_CNZ3_B).l,a0
00001d00 3038f656	move.w	(PalCycle_Frame2_CNZ).w,d0
00001d04 5478f656	addq.w	#2,(PalCycle_Frame2_CNZ).w
00001d08 0278000ef656	andi.w	#$E,(PalCycle_Frame2_CNZ).w
00001d0e 33700000003e	move.w	(a0,d0.w),$3E(a1)
00001d16 5378f634	subq.w	#1,(PalCycle_Timer).w
00001d1a 6a6a	bpl.s	.return
00001d1c 31fc0007f634	move.w	#7,(PalCycle_Timer).w
00001d22 41f900002022	lea	(CyclingPal_CPZ1).l,a0
00001d28 3038f632	move.w	(PalCycle_Frame).w,d0
00001d2c 5c78f632	addq.w	#6,(PalCycle_Frame).w
00001d30 0c780036f632	cmpi.w	#$36,(PalCycle_Frame).w
00001d36 6506	blo.s	+
00001d38 31fc0000f632	move.w	#0,(PalCycle_Frame).w
00001d42 22f00000	move.l	(a0,d0.w),(a1)+
00001d46 32b00004	move.w	4(a0,d0.w),(a1)
00001d4a 41f900002058	lea	(CyclingPal_CPZ2).l,a0
00001d50 3038f652	move.w	(PalCycle_Frame2).w,d0
00001d54 5478f652	addq.w	#2,(PalCycle_Frame2).w
00001d58 0c78002af652	cmpi.w	#$2A,(PalCycle_Frame2).w
00001d5e 6506	blo.s	+
00001d60 31fc0000f652	move.w	#0,(PalCycle_Frame2).w
00001d6c 41f900002082	lea	(CyclingPal_CPZ3).l,a0
00001d72 3038f654	move.w	(PalCycle_Frame3).w,d0
00001d76 5478f654	addq.w	#2,(PalCycle_Frame3).w
00001d7a 0278001ef654	andi.w	#$1E,(PalCycle_Frame3).w
00001d80 31f00000fb5e	move.w	(a0,d0.w),(Normal_palette_line3+$1E).w
00001d86 4e75	rts	
00001d88 41f900001e7a	lea	(CyclingPal_EHZ_ARZ_Water).l,a0
00001d8e 5378f634	subq.w	#1,(PalCycle_Timer).w
00001d92 6a20	bpl.s	.return
00001d94 31fc0005f634	move.w	#5,(PalCycle_Timer).w
00001d9a 3038f632	move.w	(PalCycle_Frame).w,d0
00001d9e 5278f632	addq.w	#1,(PalCycle_Frame).w
00001da2 02400003	andi.w	#3,d0
00001da6 e748	lsl.w	#3,d0
00001da8 43f8fb44	lea	(Normal_palette_line3+4).w,a1
00001dac 22f00000	move.l	(a0,d0.w),(a1)+
00001db0 22b00004	move.l	4(a0,d0.w),(a1)
00001db4 4e75	rts	
00001db6 5378f634	subq.w	#1,(PalCycle_Timer).w
00001dba 6a40	bpl.s	+++
00001dbc 31fc0001f634	move.w	#1,(PalCycle_Timer).w
00001dc2 41f9000020a2	lea	(CyclingPal_WFZFire).l,a0
00001dc8 4a38f72e	tst.b	(WFZ_SCZ_Fire_Toggle).w
00001dcc 670c	beq.s	+
00001dce 31fc0005f634	move.w	#5,(PalCycle_Timer).w
00001dd4 41f9000020c2	lea	(CyclingPal_WFZBelt).l,a0
00001dde 5078f632	addq.w	#8,(PalCycle_Frame).w
00001de2 0c780020f632	cmpi.w	#$20,(PalCycle_Frame).w
00001de8 6506	blo.s	+
00001dea 31fc0000f632	move.w	#0,(PalCycle_Frame).w
00001df4 22f00000	move.l	(a0,d0.w),(a1)+
00001df8 22b00004	move.l	4(a0,d0.w),(a1)
00001e00 6a28	bpl.s	++
00001e02 31fc0003f666	move.w	#3,(PalCycle_Timer2).w
00001e08 41f9000020e2	lea	(CyclingPal_WFZ1).l,a0
00001e0e 3038f652	move.w	(PalCycle_Frame2).w,d0
00001e12 5478f652	addq.w	#2,(PalCycle_Frame2).w
00001e16 0c780044f652	cmpi.w	#$44,(PalCycle_Frame2).w
00001e1c 6506	blo.s	+
00001e1e 31fc0000f652	move.w	#0,(PalCycle_Frame2).w
00001e2a 5378f668	subq.w	#1,(PalCycle_Timer3).w
00001e2e 6a28	bpl.s	.return
00001e30 31fc0005f668	move.w	#5,(PalCycle_Timer3).w
00001e36 41f900002126	lea	(CyclingPal_WFZ2).l,a0
00001e3c 3038f654	move.w	(PalCycle_Frame3).w,d0
00001e40 5478f654	addq.w	#2,(PalCycle_Frame3).w
00001e44 0c780018f654	cmpi.w	#$18,(PalCycle_Frame3).w
00001e4a 6506	blo.s	+
00001e4c 31fc0000f654	move.w	#0,(PalCycle_Frame3).w
00001e58 4e75	rts	
0000213e 1038f65f	move.b	(Super_Sonic_palette).w,d0
00002142 6742	beq.s	.return
00002144 6b0000a0	bmi.w	.normal
00002148 5300	subq.b	#1,d0
0000214a 663c	bne.s	.revert
0000214c 5338f65e	subq.b	#1,(Palette_timer).w
00002150 6a34	bpl.s	.return
00002152 11fc0003f65e	move.b	#3,(Palette_timer).w
00002158 41f900002246	lea	(CyclingPal_SSTransformation).l,a0
0000215e 3038f65c	move.w	(Palette_frame).w,d0
00002162 5078f65c	addq.w	#8,(Palette_frame).w
00002166 0c780030f65c	cmpi.w	#$30,(Palette_frame).w
0000216c 650c	blo.s	+
0000216e 11fc00fff65f	move.b	#-1,(Super_Sonic_palette).w
00002174 11fc0000b02a	move.b	#0,(MainCharacter+obj_control).w
0000217a 43f8fb04	lea	(Normal_palette+4).w,a1
0000217e 22f00000	move.l	(a0,d0.w),(a1)+
00002182 22b00004	move.l	4(a0,d0.w),(a1)
00002186 4e75	rts	
00002188 5338f65e	subq.b	#1,(Palette_timer).w
0000218c 6af8	bpl.s	.return
0000218e 11fc0003f65e	move.b	#3,(Palette_timer).w
00002194 41f900002246	lea	(CyclingPal_SSTransformation).l,a0
0000219a 3038f65c	move.w	(Palette_frame).w,d0
0000219e 5178f65c	subq.w	#8,(Palette_frame).w
000021a2 640c	bcc.s	+
000021a4 11fc0000f65c	move.b	#0,(Palette_frame).w
000021aa 11fc0000f65f	move.b	#0,(Super_Sonic_palette).w
000021b0 43f8fb04	lea	(Normal_palette+4).w,a1
000021b4 22f00000	move.l	(a0,d0.w),(a1)+
000021b8 22b00004	move.l	4(a0,d0.w),(a1)
000021bc 41f9000022c6	lea	(CyclingPal_CPZUWTransformation).l,a0
000021c2 0c38000dfe10	cmpi.b	#chemical_plant_zone,(Current_Zone).w
000021c8 670e	beq.s	+
000021ca 0c38000ffe10	cmpi.b	#aquatic_ruin_zone,(Current_Zone).w
000021d0 66b4	bne.s	.return
000021d2 41f900002346	lea	(CyclingPal_ARZUWTransformation).l,a0
000021dc 22f00000	move.l	(a0,d0.w),(a1)+
000021e0 22b00004	move.l	4(a0,d0.w),(a1)
000021e4 4e75	rts	
000021e6 5338f65e	subq.b	#1,(Palette_timer).w
000021ea 6a9a	bpl.s	.return
000021ec 11fc0007f65e	move.b	#7,(Palette_timer).w
000021f2 41f900002246	lea	(CyclingPal_SSTransformation).l,a0
000021f8 3038f65c	move.w	(Palette_frame).w,d0
000021fc 5078f65c	addq.w	#8,(Palette_frame).w
00002200 0c780078f65c	cmpi.w	#$78,(Palette_frame).w
00002206 6506	blo.s	+
00002208 31fc0030f65c	move.w	#$30,(Palette_frame).w
0000220e 43f8fb04	lea	(Normal_palette+4).w,a1
00002212 22f00000	move.l	(a0,d0.w),(a1)+
00002216 22b00004	move.l	4(a0,d0.w),(a1)
0000221a 41f9000022c6	lea	(CyclingPal_CPZUWTransformation).l,a0
00002220 0c38000dfe10	cmpi.b	#chemical_plant_zone,(Current_Zone).w
00002226 6710	beq.s	+
00002228 0c38000ffe10	cmpi.b	#aquatic_ruin_zone,(Current_Zone).w
0000222e 6600ff56	bne.w	.return
00002232 41f900002346	lea	(CyclingPal_ARZUWTransformation).l,a0
0000223c 22f00000	move.l	(a0,d0.w),(a1)+
00002240 22b00004	move.l	4(a0,d0.w),(a1)
00002244 4e75	rts	
000023c6 31fc003ff626	move.w	#$3F,(Palette_fade_range).w
000023cc 7000	moveq	#0,d0
000023ce 41f8fb00	lea	(Normal_palette).w,a0
000023d2 1038f626	move.b	(Palette_fade_start).w,d0
000023d6 d0c0	adda.w	d0,a0
000023d8 7200	moveq	#0,d1
000023da 1038f627	move.b	(Palette_fade_length).w,d0
000023de 30c1	move.w	d1,(a0)+
000023e0 51c8fffc	dbf	d0,.palettewrite
000023e4 383c0015	move.w	#$15,d4
000023e8 11fc0012f62a	move.b	#VintID_Fade,(Vint_routine).w
000023ee 61000f94	bsr.w	WaitForVint
000023f2 610a	bsr.s	.UpdateAllColours
000023f4 6100f294	bsr.w	RunPLC_RAM
000023f8 51ccffee	dbf	d4,.nextframe
000023fc 4e75	rts	
000023fe 7000	moveq	#0,d0
00002400 41f8fb00	lea	(Normal_palette).w,a0
00002404 43f8fb80	lea	(Target_palette).w,a1
00002408 1038f626	move.b	(Palette_fade_start).w,d0
0000240c d0c0	adda.w	d0,a0
0000240e d2c0	adda.w	d0,a1
00002410 1038f627	move.b	(Palette_fade_length).w,d0
00002414 6128	bsr.s	.UpdateColour
00002416 51c8fffc	dbf	d0,.nextcolour
0000241a 4a38f730	tst.b	(Water_flag).w
0000241e 671c	beq.s	.skipunderwater
00002420 7000	moveq	#0,d0
00002422 41f8f080	lea	(Underwater_palette).w,a0
00002426 43f8f000	lea	(Underwater_target_palette).w,a1
0000242a 1038f626	move.b	(Palette_fade_start).w,d0
0000242e d0c0	adda.w	d0,a0
00002430 d2c0	adda.w	d0,a1
00002432 1038f627	move.b	(Palette_fade_length).w,d0
00002436 6106	bsr.s	.UpdateColour
00002438 51c8fffc	dbf	d0,.nextcolour2
0000243c 4e75	rts	
0000243e 3419	move.w	(a1)+,d2
00002440 3610	move.w	(a0),d3
00002442 b642	cmp.w	d2,d3
00002444 6720	beq.s	.updatenone
00002446 3203	move.w	d3,d1
00002448 06410200	addi.w	#$200,d1
0000244c b242	cmp.w	d2,d1
0000244e 6204	bhi.s	.updategreen
00002450 30c1	move.w	d1,(a0)+
00002452 4e75	rts	
00002454 3203	move.w	d3,d1
00002456 06410020	addi.w	#$20,d1
0000245a b242	cmp.w	d2,d1
0000245c 6204	bhi.s	.updatered
0000245e 30c1	move.w	d1,(a0)+
00002460 4e75	rts	
00002462 5458	addq.w	#2,(a0)+
00002464 4e75	rts	
00002466 5448	addq.w	#2,a0
00002468 4e75	rts	
0000246a 31fc003ff626	move.w	#$3F,(Palette_fade_range).w
00002470 383c0015	move.w	#$15,d4
00002474 11fc0012f62a	move.b	#VintID_Fade,(Vint_routine).w
0000247a 61000f08	bsr.w	WaitForVint
0000247e 610a	bsr.s	.UpdateAllColours
00002480 6100f208	bsr.w	RunPLC_RAM
00002484 51ccffee	dbf	d4,.nextframe
00002488 4e75	rts	
0000248a 7000	moveq	#0,d0
0000248c 41f8fb00	lea	(Normal_palette).w,a0
00002490 1038f626	move.b	(Palette_fade_start).w,d0
00002494 d0c0	adda.w	d0,a0
00002496 1038f627	move.b	(Palette_fade_length).w,d0
0000249a 611c	bsr.s	.UpdateColour
0000249c 51c8fffc	dbf	d0,.nextcolour
000024a0 7000	moveq	#0,d0
000024a2 41f8f080	lea	(Underwater_palette).w,a0
000024a6 1038f626	move.b	(Palette_fade_start).w,d0
000024aa d0c0	adda.w	d0,a0
000024ac 1038f627	move.b	(Palette_fade_length).w,d0
000024b0 6106	bsr.s	.UpdateColour
000024b2 51c8fffc	dbf	d0,.nextcolour2
000024b6 4e75	rts	
000024b8 3410	move.w	(a0),d2
000024ba 6728	beq.s	.updatenone
000024bc 3202	move.w	d2,d1
000024be 0241000e	andi.w	#$E,d1
000024c2 6704	beq.s	.updategreen
000024c4 5558	subq.w	#2,(a0)+
000024c6 4e75	rts	
000024c8 3202	move.w	d2,d1
000024ca 024100e0	andi.w	#$E0,d1
000024ce 6706	beq.s	.updateblue
000024d0 04580020	subi.w	#$20,(a0)+
000024d4 4e75	rts	
000024d6 3202	move.w	d2,d1
000024d8 02410e00	andi.w	#$E00,d1
000024dc 6706	beq.s	.updatenone
000024de 04580200	subi.w	#$200,(a0)+
000024e2 4e75	rts	
000024e4 5448	addq.w	#2,a0
000024e6 4e75	rts	
000024e8 31fc003ff626	move.w	#$3F,(Palette_fade_range).w
000024ee 7000	moveq	#0,d0
000024f0 41f8fb00	lea	(Normal_palette).w,a0
000024f4 1038f626	move.b	(Palette_fade_start).w,d0
000024f8 d0c0	adda.w	d0,a0
000024fa 323c0eee	move.w	#$EEE,d1
000024fe 1038f627	move.b	(Palette_fade_length).w,d0
00002502 30c1	move.w	d1,(a0)+
00002504 51c8fffc	dbf	d0,.palettewrite
00002508 383c0015	move.w	#$15,d4
0000250c 11fc0012f62a	move.b	#VintID_Fade,(Vint_routine).w
00002512 61000e70	bsr.w	WaitForVint
00002516 610a	bsr.s	.UpdateAllColours
00002518 6100f170	bsr.w	RunPLC_RAM
0000251c 51ccffee	dbf	d4,.nextframe
00002520 4e75	rts	
00002522 7000	moveq	#0,d0
00002524 41f8fb00	lea	(Normal_palette).w,a0
00002528 43f8fb80	lea	(Target_palette).w,a1
0000252c 1038f626	move.b	(Palette_fade_start).w,d0
00002530 d0c0	adda.w	d0,a0
00002532 d2c0	adda.w	d0,a1
00002534 1038f627	move.b	(Palette_fade_length).w,d0
00002538 6128	bsr.s	.UpdateColour
0000253a 51c8fffc	dbf	d0,.nextcolour
0000253e 4a38f730	tst.b	(Water_flag).w
00002542 671c	beq.s	.skipunderwater
00002544 7000	moveq	#0,d0
00002546 41f8f080	lea	(Underwater_palette).w,a0
0000254a 43f8f000	lea	(Underwater_target_palette).w,a1
0000254e 1038f626	move.b	(Palette_fade_start).w,d0
00002552 d0c0	adda.w	d0,a0
00002554 d2c0	adda.w	d0,a1
00002556 1038f627	move.b	(Palette_fade_length).w,d0
0000255a 6106	bsr.s	.UpdateColour
0000255c 51c8fffc	dbf	d0,.nextcolour2
00002560 4e75	rts	
00002562 3419	move.w	(a1)+,d2
00002564 3610	move.w	(a0),d3
00002566 b642	cmp.w	d2,d3
00002568 6724	beq.s	.updatenone
0000256a 3203	move.w	d3,d1
0000256c 04410200	subi.w	#$200,d1
00002570 6508	bcs.s	.updategreen
00002572 b242	cmp.w	d2,d1
00002574 6504	blo.s	.updategreen
00002576 30c1	move.w	d1,(a0)+
00002578 4e75	rts	
0000257a 3203	move.w	d3,d1
0000257c 04410020	subi.w	#$20,d1
00002580 6508	bcs.s	.updatered
00002582 b242	cmp.w	d2,d1
00002584 6504	blo.s	.updatered
00002586 30c1	move.w	d1,(a0)+
00002588 4e75	rts	
0000258a 5558	subq.w	#2,(a0)+
0000258c 4e75	rts	
0000258e 5448	addq.w	#2,a0
00002590 4e75	rts	
00002592 31fc003ff626	move.w	#$3F,(Palette_fade_range).w
00002598 383c0015	move.w	#$15,d4
0000259c 11fc0012f62a	move.b	#VintID_Fade,(Vint_routine).w
000025a2 61000de0	bsr.w	WaitForVint
000025a6 610a	bsr.s	.UpdateAllColours
000025a8 6100f0e0	bsr.w	RunPLC_RAM
000025ac 51ccffee	dbf	d4,.nextframe
000025b0 4e75	rts	
000025b2 7000	moveq	#0,d0
000025b4 41f8fb00	lea	(Normal_palette).w,a0
000025b8 1038f626	move.b	(Palette_fade_start).w,d0
000025bc d0c0	adda.w	d0,a0
000025be 1038f627	move.b	(Palette_fade_length).w,d0
000025c2 611c	bsr.s	.UpdateColour
000025c4 51c8fffc	dbf	d0,.nextcolour
000025c8 7000	moveq	#0,d0
000025ca 41f8f080	lea	(Underwater_palette).w,a0
000025ce 1038f626	move.b	(Palette_fade_start).w,d0
000025d2 d0c0	adda.w	d0,a0
000025d4 1038f627	move.b	(Palette_fade_length).w,d0
000025d8 6106	bsr.s	.UpdateColour
000025da 51c8fffc	dbf	d0,.nextcolour2
000025de 4e75	rts	
000025e0 3410	move.w	(a0),d2
000025e2 0c420eee	cmpi.w	#$EEE,d2
000025e6 6734	beq.s	.updatenone
000025e8 3202	move.w	d2,d1
000025ea 0241000e	andi.w	#$E,d1
000025ee 0c41000e	cmpi.w	#$E,d1
000025f2 6704	beq.s	.updategreen
000025f4 5458	addq.w	#2,(a0)+
000025f6 4e75	rts	
000025f8 3202	move.w	d2,d1
000025fa 024100e0	andi.w	#$E0,d1
000025fe 0c4100e0	cmpi.w	#$E0,d1
00002602 6706	beq.s	.updateblue
00002604 06580020	addi.w	#$20,(a0)+
00002608 4e75	rts	
0000260a 3202	move.w	d2,d1
0000260c 02410e00	andi.w	#$E00,d1
00002610 0c410e00	cmpi.w	#$E00,d1
00002614 6706	beq.s	.updatenone
00002616 06580200	addi.w	#$200,(a0)+
0000261a 4e75	rts	
0000261c 5448	addq.w	#2,a0
0000261e 4e75	rts	
00002620 4a38f635	tst.b	(PalCycle_Timer+1).w
00002624 665a	bne.s	loc_2680
00002626 43f8fb20	lea	(Normal_palette_line2).w,a1
0000262a 41f9000026d6	lea	(Pal_Sega1).l,a0
00002630 7205	moveq	#5,d1
00002632 3038f632	move.w	(PalCycle_Frame).w,d0
00002636 6a08	bpl.s	loc_2640
00002638 5448	addq.w	#2,a0
0000263a 5341	subq.w	#1,d1
0000263c 5440	addq.w	#2,d0
0000263e 60f6	bra.s	loc_2636
00002640 3400	move.w	d0,d2
00002642 0242001e	andi.w	#$1E,d2
00002646 6602	bne.s	loc_264A
00002648 5440	addq.w	#2,d0
0000264a 0c400060	cmpi.w	#$60,d0
0000264e 6404	bhs.s	loc_2654
00002650 33980000	move.w	(a0)+,(a1,d0.w)
00002654 5440	addq.w	#2,d0
00002656 51c9ffe8	dbf	d1,loc_2640
0000265a 3038f632	move.w	(PalCycle_Frame).w,d0
0000265e 5440	addq.w	#2,d0
00002660 3400	move.w	d0,d2
00002662 0242001e	andi.w	#$1E,d2
00002666 6602	bne.s	loc_266A
00002668 5440	addq.w	#2,d0
0000266a 0c400064	cmpi.w	#$64,d0
0000266e 6d08	blt.s	loc_2678
00002670 31fc0401f634	move.w	#$401,(PalCycle_Timer).w
00002676 70f4	moveq	#-$C,d0
00002678 31c0f632	move.w	d0,(PalCycle_Frame).w
0000267c 7001	moveq	#1,d0
0000267e 4e75	rts	
00002680 5338f634	subq.b	#1,(PalCycle_Timer).w
00002684 6a4c	bpl.s	loc_26D2
00002686 11fc0004f634	move.b	#4,(PalCycle_Timer).w
0000268c 3038f632	move.w	(PalCycle_Frame).w,d0
00002690 0640000c	addi.w	#$C,d0
00002694 0c400030	cmpi.w	#$30,d0
00002698 6504	blo.s	loc_269E
0000269a 7000	moveq	#0,d0
0000269c 4e75	rts	
0000269e 31c0f632	move.w	d0,(PalCycle_Frame).w
000026a2 41f9000026e2	lea	(Pal_Sega2).l,a0
000026a8 41f00000	lea	(a0,d0.w),a0
000026ac 43f8fb04	lea	(Normal_palette+4).w,a1
000026b0 22d8	move.l	(a0)+,(a1)+
000026b2 22d8	move.l	(a0)+,(a1)+
000026b4 3298	move.w	(a0)+,(a1)
000026b6 43f8fb20	lea	(Normal_palette_line2).w,a1
000026ba 7000	moveq	#0,d0
000026bc 722c	moveq	#$2C,d1
000026be 3400	move.w	d0,d2
000026c0 0242001e	andi.w	#$1E,d2
000026c4 6602	bne.s	loc_26C8
000026c6 5440	addq.w	#2,d0
000026c8 33900000	move.w	(a0),(a1,d0.w)
000026cc 5440	addq.w	#2,d0
000026ce 51c9ffee	dbf	d1,loc_26BE
000026d2 7001	moveq	#1,d0
000026d4 4e75	rts	
00002712 43f900002782	lea	(PalPointers).l,a1
00002718 e748	lsl.w	#3,d0
0000271a d2c0	adda.w	d0,a1
0000271c 2459	movea.l	(a1)+,a2
0000271e 3659	movea.w	(a1)+,a3
00002720 d6fc0080	adda.w	#Target_palette-Normal_palette,a3
00002724 3e19	move.w	(a1)+,d7
00002728 51cffffc	dbf	d7,-
0000272c 4e75	rts	
0000272e 43f900002782	lea	(PalPointers).l,a1
00002734 e748	lsl.w	#3,d0
00002736 d2c0	adda.w	d0,a1
00002738 2459	movea.l	(a1)+,a2
0000273a 3659	movea.w	(a1)+,a3
0000273c 3e19	move.w	(a1)+,d7
00002740 51cffffc	dbf	d7,-
00002744 4e75	rts	
00002746 43f900002782	lea	(PalPointers).l,a1
0000274c e748	lsl.w	#3,d0
0000274e d2c0	adda.w	d0,a1
00002750 2459	movea.l	(a1)+,a2
00002752 3659	movea.w	(a1)+,a3
00002754 97fc00000a80	suba.l	#Normal_palette-Underwater_palette,a3
0000275a 3e19	move.w	(a1)+,d7
0000275e 51cffffc	dbf	d7,-
00002762 4e75	rts	
00002764 43f900002782	lea	(PalPointers).l,a1
0000276a e748	lsl.w	#3,d0
0000276c d2c0	adda.w	d0,a1
0000276e 2459	movea.l	(a1)+,a2
00002770 3659	movea.w	(a1)+,a3
00002772 97fc00000b00	suba.l	#Normal_palette-Underwater_target_palette,a3
00002778 3e19	move.w	(a1)+,d7
0000277c 51cffffc	dbf	d7,-
00002780 4e75	rts	
00003382 4e71	nop	
00003384 46fc2300	move	#$2300,sr
0000338c 66fa	bne.s	-
0000338e 4e75	rts	
00003390 2238f636	move.l	(RNG_seed).w,d1
00003394 6606	bne.s	.afterSanity0ResetCheck
00003396 223c2a6d365a	move.l	#$2A6D365A,d1
0000339c 2001	move.l	d1,d0
0000339e e581	asl.l	#2,d1
000033a0 d280	add.l	d0,d1
000033a2 e781	asl.l	#3,d1
000033a4 d280	add.l	d0,d1
000033a6 3001	move.w	d1,d0
000033a8 4841	swap	d1
000033aa d041	add.w	d1,d0
000033ac 3200	move.w	d0,d1
000033ae 4841	swap	d1
000033b0 21c1f636	move.l	d1,(RNG_seed).w
000033b4 4e75	rts	
000033b6 024000ff	andi.w	#$FF,d0
000033ba d040	add.w	d0,d0
000033bc 06400080	addi.w	#$80,d0
000033c0 323b000c	move.w	Sine_Data(pc,d0.w),d1
000033c4 04400080	subi.w	#$80,d0
000033c8 303b0004	move.w	Sine_Data(pc,d0.w),d0
000033cc 4e75	rts	
0000364e 48e71800	movem.l	d3-d4,-(sp)
00003652 7600	moveq	#0,d3
00003654 7800	moveq	#0,d4
00003656 3601	move.w	d1,d3
00003658 3802	move.w	d2,d4
0000365a 8843	or.w	d3,d4
0000365c 674c	beq.s	CalcAngle_Zero
0000365e 3802	move.w	d2,d4
00003660 4a43	tst.w	d3
00003662 6a000004	bpl.w	.skip
00003666 4443	neg.w	d3
00003668 4a44	tst.w	d4
0000366a 6a000004	bpl.w	.skip
0000366e 4444	neg.w	d4
00003670 b843	cmp.w	d3,d4
00003672 6400000e	bhs.w	+
00003676 e18c	lsl.l	#8,d4
00003678 88c3	divu.w	d3,d4
0000367a 7000	moveq	#0,d0
0000367c 103b4036	move.b	Angle_Data(pc,d4.w),d0
00003680 600a	bra.s	++
00003682 e18b	lsl.l	#8,d3
00003684 86c4	divu.w	d4,d3
00003686 7040	moveq	#$40,d0
00003688 903b302a	sub.b	Angle_Data(pc,d3.w),d0
0000368c 4a41	tst.w	d1
0000368e 6a000008	bpl.w	+
00003692 4440	neg.w	d0
00003694 06400080	addi.w	#$80,d0
00003698 4a42	tst.w	d2
0000369a 6a000008	bpl.w	+
0000369e 4440	neg.w	d0
000036a0 06400100	addi.w	#$100,d0
000036a4 4cdf0018	movem.l	(sp)+,d3-d4
000036a8 4e75	rts	
000036aa 303c0040	move.w	#$40,d0
000036ae 4cdf0018	movem.l	(sp)+,d3-d4
000036b2 4e75	rts	
000037b6 4e71	nop	
000037b8 103c00fd	move.b	#MusID_Stop,d0
000037bc 6100dba0	bsr.w	PlayMusic
000037c0 6100deba	bsr.w	ClearPLC
000037c4 6100eca4	bsr.w	Pal_FadeToBlack
000037c8 43f8f700	lea	(Misc_Variables).w,a1
000037cc 7000	moveq	#0,d0
000037ce 323c003f	move.w	#bytesToLcnt((Misc_Variables_End-Misc_Variables) - ((Misc_Variables)&1)),d1
000037d2 22c0	move.l	d0,(a1)+
000037d4 51c9fffc	dbf	d1,.loop
000037d8 43f8b000	lea	(Object_RAM).w,a1
000037dc 7000	moveq	#0,d0
000037de 323c07ff	move.w	#bytesToLcnt((Object_RAM_End-Object_RAM) - ((Object_RAM)&1)),d1
000037e2 22c0	move.l	d0,(a1)+
000037e4 51c9fffc	dbf	d1,.loop
000037e8 4df900c00004	lea	(VDP_control_port).l,a6
000037ee 3cbc8004	move.w	#$8004,(a6)
000037f2 3cbc8230	move.w	#$8200|(VRAM_SegaScr_Plane_A_Name_Table/$400),(a6)
000037f6 3cbc8405	move.w	#$8400|(VRAM_SegaScr_Plane_B_Name_Table/$2000),(a6)
000037fa 3cbc8700	move.w	#$8700,(a6)
000037fe 3cbc8b03	move.w	#$8B03,(a6)
00003802 3cbc8c81	move.w	#$8C81,(a6)
00003806 3cbc9003	move.w	#$9003,(a6)
0000380a 4238f64e	clr.b	(Water_fullscreen_flag).w
0000380e 4278ffd8	clr.w	(Two_player_mode).w
00003812 46fc2700	move	#$2700,sr
00003816 3038f60c	move.w	(VDP_Reg1_val).w,d0
0000381a 020000bf	andi.b	#$BF,d0
0000381e 33c000c00004	move.w	d0,(VDP_control_port).l
00003824 6100d9e2	bsr.w	ClearScreen
00003828 4bf900c00004	lea	(VDP_control_port).l,a5
0000382e 3abc8f01	move.w	#$8F01,(a5)
00003832 2abc941f93ff	move.l	#(($9400|((((VRAM_SegaScr_Plane_Table_Size)-1)&$FF00)>>8))<<16)|($9300|(((VRAM_SegaScr_Plane_Table_Size)-1)&$FF)),(a5)
00003838 3abc9780	move.w	#$9780,(a5)
0000383c 2abc40000083	move.l	#vdpComm(VRAM_SegaScr_Plane_A_Name_Table,VRAM,DMA),(a5)
00003842 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
0000384a 3215	move.w	(a5),d1
0000384c 08010001	btst	#1,d1
00003850 66f8	bne.s	.loop
00003852 3abc8f02	move.w	#$8F02,(a5)
00003856 23fc4020000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_Sega_Logo),VRAM,WRITE),(VDP_control_port).l
00003860 41f900074876	lea	(ArtNem_SEGA).l,a0
00003866 6100dc76	bsr.w	NemDec
0000386a 23fc5000000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_Trails),VRAM,WRITE),(VDP_control_port).l
00003874 41f900074cf6	lea	(ArtNem_IntroTrails).l,a0
0000387a 6100dc62	bsr.w	NemDec
0000387e 23fc5100000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtUnc_Giant_Sonic),VRAM,WRITE),(VDP_control_port).l
00003888 41f90008be12	lea	(ArtNem_SilverSonic).l,a0
0000388e 6100dc4e	bsr.w	NemDec
00003892 43f9ffff0000	lea	(Chunk_Table).l,a1
00003898 41f900074d0e	lea	(MapEng_SEGA).l,a0
0000389e 303c0000	move.w	#make_art_tile(ArtTile_VRAM_Start,0,0),d0
000038a2 6100df18	bsr.w	EniDec
000038a6 43f9ffff0000	lea	(Chunk_Table).l,a1
000038ac 203c60000002	move.l	#vdpComm(VRAM_SegaScr_Plane_B_Name_Table,VRAM,WRITE),d0
000038b2 7227	moveq	#40-1,d1
000038b4 741b	moveq	#28-1,d2
000038b6 610000b6	bsr.w	PlaneMapToVRAM_H80_Sega
000038ba 4a38fff8	tst.b	(Graphics_Flags).w
000038be 6b0e	bmi.s	SegaScreen_Contin
000038c0 43f8b080	lea	(SegaHideTM).w,a1
000038c4 12bc00b1	move.b	#ObjID_SegaHideTM,id(a1)
000038c8 137c004e0028	move.b	#$4E,subtype(a1)
000038ce 7000	moveq	#PalID_SEGA,d0
000038d0 6100ee5c	bsr.w	PalLoad_Now
000038d4 31fcfff6f632	move.w	#-$A,(PalCycle_Frame).w
000038da 31fc0000f634	move.w	#0,(PalCycle_Timer).w
000038e0 31fc0000f662	move.w	#0,(SegaScr_VInt_Subrout).w
000038e6 31fc0000f660	move.w	#0,(SegaScr_PalDone_Flag).w
000038ec 43f8b040	lea	(SegaScreenObject).w,a1
000038f0 12bc00b0	move.b	#ObjID_SonicOnSegaScr,id(a1)
000038f4 137c004c0028	move.b	#$4C,subtype(a1)
000038fa 31fc00f0f614	move.w	#4*60,(Demo_Time_left).w
00003900 3038f60c	move.w	(VDP_Reg1_val).w,d0
00003904 00000040	ori.b	#$40,d0
00003908 33c000c00004	move.w	d0,(VDP_control_port).l
0000390e 11fc0002f62a	move.b	#VintID_SEGA,(Vint_routine).w
00003914 6100fa6e	bsr.w	WaitForVint
0000391c 4eb900016604	jsr	(BuildSprites).l
00003922 4a38f660	tst.b	(SegaScr_PalDone_Flag).w
00003926 67e6	beq.s	Sega_WaitPalette
00003928 103c00fa	move.b	#SndID_SegaSound,d0
0000392c 6100da42	bsr.w	PlaySound
00003930 11fc0002f62a	move.b	#VintID_SEGA,(Vint_routine).w
00003936 6100fa4c	bsr.w	WaitForVint
0000393a 31fc00b4f614	move.w	#3*60,(Demo_Time_left).w
00003940 11fc0014f62a	move.b	#VintID_PCM,(Vint_routine).w
00003946 6100fa3c	bsr.w	WaitForVint
0000394a 4a78f614	tst.w	(Demo_Time_left).w
0000394e 670e	beq.s	Sega_GotoTitle
00003950 1038f605	move.b	(Ctrl_1_Press).w,d0
00003954 8038f607	or.b	(Ctrl_2_Press).w,d0
00003958 02000080	andi.b	#button_start_mask,d0
0000395c 67e2	beq.s	Sega_WaitEnd
0000395e 4278f660	clr.w	(SegaScr_PalDone_Flag).w
00003962 4278f662	clr.w	(SegaScr_VInt_Subrout).w
00003966 11fc0004f600	move.b	#GameModeID_TitleScreen,(Game_Mode).w
0000396c 4e75	rts	
0000396e 4df900c00000	lea	(VDP_data_port).l,a6
00003974 283c01000000	move.l	#vdpCommDelta(planeLoc(128,0,1)),d4
0000397e 3601	move.w	d1,d3
00003982 51cbfffc	dbf	d3,-
00003986 d084	add.l	d4,d0
00003988 51cafff0	dbf	d2,--
0000398c 4e75	rts	
0000398e 4e71	nop	
00003990 4ef900015f9c	jmp	(extractJmpToName("JmpTo_RunObjects")).l
00003998 103c00fd	move.b	#MusID_Stop,d0
0000399c 6100d9c0	bsr.w	PlayMusic
000039a0 6100dcda	bsr.w	ClearPLC
000039a4 6100eac4	bsr.w	Pal_FadeToBlack
000039a8 46fc2700	move	#$2700,sr
000039ac 4df900c00004	lea	(VDP_control_port).l,a6
000039b2 3cbc8004	move.w	#$8004,(a6)
000039b6 3cbc8230	move.w	#$8200|(VRAM_TtlScr_Plane_A_Name_Table/$400),(a6)
000039ba 3cbc8407	move.w	#$8400|(VRAM_TtlScr_Plane_B_Name_Table/$2000),(a6)
000039be 3cbc9001	move.w	#$9001,(a6)
000039c2 3cbc9200	move.w	#$9200,(a6)
000039c6 3cbc8b03	move.w	#$8B03,(a6)
000039ca 3cbc8720	move.w	#$8720,(a6)
000039ce 4238f64e	clr.b	(Water_fullscreen_flag).w
000039d2 3cbc8c81	move.w	#$8C81,(a6)
000039d6 6100d830	bsr.w	ClearScreen
000039da 43f8ac00	lea	(Object_Display_Lists).w,a1
000039de 7000	moveq	#0,d0
000039e0 323c00ff	move.w	#bytesToLcnt((Object_Display_Lists_End-Object_Display_Lists) - ((Object_Display_Lists)&1)),d1
000039e4 22c0	move.l	d0,(a1)+
000039e6 51c9fffc	dbf	d1,.loop
000039ea 43f8b000	lea	(Object_RAM).w,a1
000039ee 7000	moveq	#0,d0
000039f0 323c07ff	move.w	#bytesToLcnt((Object_RAM_End-Object_RAM) - ((Object_RAM)&1)),d1
000039f4 22c0	move.l	d0,(a1)+
000039f6 51c9fffc	dbf	d1,.loop
000039fa 43f8f700	lea	(Misc_Variables).w,a1
000039fe 7000	moveq	#0,d0
00003a00 323c003f	move.w	#bytesToLcnt((Misc_Variables_End-Misc_Variables) - ((Misc_Variables)&1)),d1
00003a04 22c0	move.l	d0,(a1)+
00003a06 51c9fffc	dbf	d1,.loop
00003a0a 43f8ee00	lea	(Camera_RAM).w,a1
00003a0e 7000	moveq	#0,d0
00003a10 323c003f	move.w	#bytesToLcnt((Camera_RAM_End-Camera_RAM) - ((Camera_RAM)&1)),d1
00003a14 22c0	move.l	d0,(a1)+
00003a16 51c9fffc	dbf	d1,.loop
00003a1a 23fc6000000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_CreditText),VRAM,WRITE),(VDP_control_port).l
00003a24 41f90000bd26	lea	(ArtNem_CreditText).l,a0
00003a2a 6100dab2	bsr.w	NemDec
00003a2e 43f90000b2b0	lea	(off_B2B0).l,a1
00003a34 4eb90000b272	jsr	(loc_B272).l
00003a3a 43f8fb80	lea	(Target_palette).w,a1
00003a3e 7000	moveq	#0,d0
00003a40 323c001f	move.w	#bytesToLcnt((Target_palette_End-Target_palette) - ((Target_palette)&1)),d1
00003a44 22c0	move.l	d0,(a1)+
00003a46 51c9fffc	dbf	d1,.loop
00003a4a 7003	moveq	#PalID_BGND,d0
00003a4c 6100ecc4	bsr.w	PalLoad_ForFade
00003a50 6100e974	bsr.w	Pal_FadeFromBlack
00003a54 46fc2700	move	#$2700,sr
00003a58 23fc4000000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_Title),VRAM,WRITE),(VDP_control_port).l
00003a62 41f900074f6c	lea	(ArtNem_Title).l,a0
00003a68 6100da74	bsr.w	NemDec
00003a6c 23fc6a00000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_TitleSprites),VRAM,WRITE),(VDP_control_port).l
00003a76 41f90007667a	lea	(ArtNem_TitleSprites).l,a0
00003a7c 6100da60	bsr.w	NemDec
00003a80 23fc7e40000100c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_MenuJunk),VRAM,WRITE),(VDP_control_port).l
00003a8a 41f900078cbc	lea	(ArtNem_MenuJunk).l,a0
00003a90 6100da4c	bsr.w	NemDec
00003a94 23fc4040000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_Player1VS2),VRAM,WRITE),(VDP_control_port).l
00003a9e 41f900003df4	lea	(ArtNem_Player1VS2).l,a0
00003aa4 6100da38	bsr.w	NemDec
00003aa8 23fc5000000300c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_FontStuff_TtlScr),VRAM,WRITE),(VDP_control_port).l
00003ab2 41f90007c43a	lea	(ArtNem_FontStuff).l,a0
00003ab8 6100da24	bsr.w	NemDec
00003abc 11fc0000fe30	move.b	#0,(Last_star_pole_hit).w
00003ac2 11fc0000fee0	move.b	#0,(Last_star_pole_hit_2P).w
00003ac8 31fc0000fe08	move.w	#0,(Debug_placement_mode).w
00003ace 31fc0000fff0	move.w	#0,(Demo_mode_flag).w
00003ad4 31fc0000ffda	move.w	#0,(unk_FFDA).w
00003ada 31fc0000f634	move.w	#0,(PalCycle_Timer).w
00003ae0 31fc0000ffd8	move.w	#0,(Two_player_mode).w
00003ae6 11fc0000f711	move.b	#0,(Level_started_flag).w
00003aec 6100e97c	bsr.w	Pal_FadeToBlack
00003af0 46fc2700	move	#$2700,sr
00003af4 43f9ffff0000	lea	(Chunk_Table).l,a1
00003afa 41f900074dc6	lea	(MapEng_TitleScreen).l,a0
00003b00 303c4000	move.w	#make_art_tile(ArtTile_ArtNem_Title,2,0),d0
00003b04 6100dcb6	bsr.w	EniDec
00003b08 43f9ffff0000	lea	(Chunk_Table).l,a1
00003b0e 203c60000003	move.l	#vdpComm(VRAM_TtlScr_Plane_B_Name_Table,VRAM,WRITE),d0
00003b14 7227	moveq	#40-1,d1
00003b16 741b	moveq	#28-1,d2
00003b18 6100d8f4	bsr.w	PlaneMapToVRAM_H40
00003b1c 43f9ffff0000	lea	(Chunk_Table).l,a1
00003b22 41f900074e3a	lea	(MapEng_TitleBack).l,a0
00003b28 303c4000	move.w	#make_art_tile(ArtTile_ArtNem_Title,2,0),d0
00003b2c 6100dc8e	bsr.w	EniDec
00003b30 43f9ffff0000	lea	(Chunk_Table).l,a1
00003b36 203c60500003	move.l	#vdpComm(VRAM_TtlScr_Plane_B_Name_Table+planeLoc(64,40,0),VRAM,WRITE),d0
00003b3c 7217	moveq	#24-1,d1
00003b3e 741b	moveq	#28-1,d2
00003b40 6100d8cc	bsr.w	PlaneMapToVRAM_H40
00003b44 43f9ffff0000	lea	(Chunk_Table).l,a1
00003b4a 41f900074e86	lea	(MapEng_TitleLogo).l,a0
00003b50 303ce000	move.w	#make_art_tile(ArtTile_ArtNem_Title,3,1),d0
00003b54 6100dc66	bsr.w	EniDec
00003b58 43f9ffff0858	lea	(Chunk_Table+planeLoc(40,28,26)).l,a1
00003b5e 45f900003e82	lea	(CopyrightText).l,a2
00003b64 7c0a	moveq	#bytesToWcnt(CopyrightText_End-CopyrightText),d6
00003b68 51cefffc	dbf	d6,-
00003b6c 43f9ffff0000	lea	(Chunk_Table).l,a1
00003b72 203c40000003	move.l	#vdpComm(VRAM_TtlScr_Plane_A_Name_Table,VRAM,WRITE),d0
00003b78 7227	moveq	#40-1,d1
00003b7a 741b	moveq	#28-1,d2
00003b7c 6100d890	bsr.w	PlaneMapToVRAM_H40
00003b80 43f8fb00	lea	(Normal_palette).w,a1
00003b84 7000	moveq	#0,d0
00003b86 323c003f	move.w	#bytesToLcnt((Target_palette_End-Normal_palette) - ((Normal_palette)&1)),d1
00003b8a 22c0	move.l	d0,(a1)+
00003b8c 51c9fffc	dbf	d1,.loop
00003b90 7001	moveq	#PalID_Title,d0
00003b92 6100eb7e	bsr.w	PalLoad_ForFade
00003b96 11fc0000fffa	move.b	#0,(Debug_mode_flag).w
00003b9c 31fc0000ffd8	move.w	#0,(Two_player_mode).w
00003ba2 31fc0280f614	move.w	#60*10+40,(Demo_Time_left).w
00003ba8 4278f604	clr.w	(Ctrl_1).w
00003bac 11fc000eb040	move.b	#ObjID_TitleIntro,(IntroSonic+id).w
00003bb2 11fc0002b068	move.b	#2,(IntroSonic+subtype).w
00003bb8 4eb900015f9c	jsr	(RunObjects).l
00003bbe 4eb900016604	jsr	(BuildSprites).l
00003bc4 7000	moveq	#PLCID_Std1,d0
00003bc6 6100da88	bsr.w	LoadPLC2
00003bca 31fc0000ffd4	move.w	#0,(Correct_cheat_entries).w
00003bd0 31fc0000ffd6	move.w	#0,(Correct_cheat_entries_2).w
00003bd6 4e71	nop	
00003bd8 4e71	nop	
00003bda 4e71	nop	
00003bdc 4e71	nop	
00003bde 4e71	nop	
00003be0 4e71	nop	
00003be2 31fc0004eed2	move.w	#4,(Sonic_Pos_Record_Index).w
00003be8 31fc0000e500	move.w	#0,(Sonic_Pos_Record_Buf).w
00003bee 43f8ff20	lea	(Results_Data_2P).w,a1
00003bf2 700b	moveq	#bytesToWcnt(Results_Data_2P_End-Results_Data_2P),d0
00003bf8 51c8fffa	dbf	d0,-
00003bfc 31fcfd80ee00	move.w	#-$280,(Camera_X_pos).w
00003c02 3038f60c	move.w	(VDP_Reg1_val).w,d0
00003c06 00000040	ori.b	#$40,d0
00003c0a 33c000c00004	move.w	d0,(VDP_control_port).l
00003c10 6100e7b4	bsr.w	Pal_FadeFromBlack
00003c14 11fc0004f62a	move.b	#VintID_Title,(Vint_routine).w
00003c1a 6100f768	bsr.w	WaitForVint
00003c1e 4eb900015f9c	jsr	(RunObjects).l
00003c28 4eb900016604	jsr	(BuildSprites).l
00003c2e 43f8f804	lea	(Sprite_Table+4).w,a1
00003c32 7000	moveq	#0,d0
00003c34 7c4f	moveq	#(Sprite_Table_End-Sprite_Table)/8-1,d6
00003c38 6608	bne.s	+
00003c3a 08400002	bchg	#2,d0
00003c3e 33400002	move.w	d0,2(a1)
00003c44 51cefff0	dbf	d6,-
00003c48 6100da40	bsr.w	RunPLC_RAM
00003c4c 61000166	bsr.w	TailsNameCheat
00003c50 4a78f614	tst.w	(Demo_Time_left).w
00003c54 670000d8	beq.w	TitleScreen_Demo
00003c58 4a38b06f	tst.b	(IntroSonic+obj0e_intro_complete).w
00003c5c 6700ffb6	beq.w	TitleScreen_Loop
00003c60 1038f605	move.b	(Ctrl_1_Press).w,d0
00003c64 8038f607	or.b	(Ctrl_2_Press).w,d0
00003c68 02000080	andi.b	#button_start_mask,d0
00003c6c 6700ffa6	beq.w	TitleScreen_Loop
00003c70 11fc000cf600	move.b	#GameModeID_Level,(Game_Mode).w
00003c76 11fc0003fe12	move.b	#3,(Life_count).w
00003c7c 11fc0003fec6	move.b	#3,(Life_count_2P).w
00003c82 7000	moveq	#0,d0
00003c84 31c0fe20	move.w	d0,(Ring_count).w
00003c88 21c0fe22	move.l	d0,(Timer).w
00003c8c 21c0fe26	move.l	d0,(Score).w
00003c90 31c0fed0	move.w	d0,(Ring_count_2P).w
00003c94 21c0fed2	move.l	d0,(Timer_2P).w
00003c98 21c0fed6	move.l	d0,(Score_2P).w
00003c9c 11c0fe18	move.b	d0,(Continue_count).w
00003ca0 21fc00001388ffc0	move.l	#5000,(Next_Extra_life_score).w
00003ca8 21fc00001388ffc4	move.l	#5000,(Next_Extra_life_score_2P).w
00003cb0 103c00f9	move.b	#MusID_FadeOut,d0
00003cb4 6100d6ba	bsr.w	PlaySound
00003cb8 7000	moveq	#0,d0
00003cba 1038ff86	move.b	(Title_screen_option).w,d0
00003cbe 6636	bne.s	TitleScreen_CheckIfChose2P
00003cc0 7000	moveq	#0,d0
00003cc2 31c0ff8a	move.w	d0,(Two_player_mode_copy).w
00003cc6 31c0ffd8	move.w	d0,(Two_player_mode).w
00003cca 31c0fe10	move.w	d0,(Current_ZoneAndAct).w
00003cce 4a38ffd0	tst.b	(Level_select_flag).w
00003cd2 6710	beq.s	+
00003cd4 08380006f604	btst	#button_A,(Ctrl_1_Held).w
00003cda 6708	beq.s	+
00003cdc 11fc0028f600	move.b	#GameModeID_LevelSelect,(Game_Mode).w
00003ce2 4e75	rts	
00003ce4 31c0fe16	move.w	d0,(Current_Special_StageAndAct).w
00003ce8 31c0ffb0	move.w	d0,(Got_Emerald).w
00003cec 21c0ffb2	move.l	d0,(Got_Emeralds_array).w
00003cf0 21c0ffb6	move.l	d0,(Got_Emeralds_array+4).w
00003cf4 4e75	rts	
00003cf6 5300	subq.b	#1,d0
00003cf8 6626	bne.s	TitleScreen_ChoseOptions
00003cfa 7201	moveq	#1,d1
00003cfc 31c1ff8a	move.w	d1,(Two_player_mode_copy).w
00003d00 31c1ffd8	move.w	d1,(Two_player_mode).w
00003d04 7000	moveq	#0,d0
00003d06 31c0ffb0	move.w	d0,(Got_Emerald).w
00003d0a 21c0ffb2	move.l	d0,(Got_Emeralds_array).w
00003d0e 21c0ffb6	move.l	d0,(Got_Emeralds_array+4).w
00003d12 11fc001cf600	move.b	#GameModeID_2PLevelSelect,(Game_Mode).w
00003d18 11fc0000ff88	move.b	#0,(Current_Zone_2P).w
00003d1e 4e75	rts	
00003d20 11fc0024f600	move.b	#GameModeID_OptionsMenu,(Game_Mode).w
00003d26 11fc0000ff8c	move.b	#0,(Options_menu_box).w
00003d2c 4e75	rts	
00003d2e 103c00f9	move.b	#MusID_FadeOut,d0
00003d32 6100d63c	bsr.w	PlaySound
00003d36 3038fff2	move.w	(Demo_number).w,d0
00003d3a 02400007	andi.w	#7,d0
00003d3e d040	add.w	d0,d0
00003d40 303b006a	move.w	DemoLevels(pc,d0.w),d0
00003d44 31c0fe10	move.w	d0,(Current_ZoneAndAct).w
00003d48 5278fff2	addq.w	#1,(Demo_number).w
00003d4c 0c780004fff2	cmpi.w	#(DemoLevels_End-DemoLevels)/2,(Demo_number).w
00003d52 6506	blo.s	+
00003d54 31fc0000fff2	move.w	#0,(Demo_number).w
00003d5a 31fc0001fff0	move.w	#1,(Demo_mode_flag).w
00003d60 11fc0008f600	move.b	#GameModeID_Demo,(Game_Mode).w
00003d66 0c780000fe10	cmpi.w	#emerald_hill_zone_act_1,(Current_ZoneAndAct).w
00003d6c 6606	bne.s	+
00003d6e 31fc0001ffd8	move.w	#1,(Two_player_mode).w
00003d74 11fc0003fe12	move.b	#3,(Life_count).w
00003d7a 11fc0003fec6	move.b	#3,(Life_count_2P).w
00003d80 7000	moveq	#0,d0
00003d82 31c0fe20	move.w	d0,(Ring_count).w
00003d86 21c0fe22	move.l	d0,(Timer).w
00003d8a 21c0fe26	move.l	d0,(Score).w
00003d8e 31c0fed0	move.w	d0,(Ring_count_2P).w
00003d92 21c0fed2	move.l	d0,(Timer_2P).w
00003d96 21c0fed6	move.l	d0,(Score_2P).w
00003d9a 21fc00001388ffc0	move.l	#5000,(Next_Extra_life_score).w
00003da2 21fc00001388ffc4	move.l	#5000,(Next_Extra_life_score_2P).w
00003daa 4e75	rts	
00003db4 41f900003dee	lea	(TailsNameCheat_Buttons).l,a0
00003dba 3038ffd4	move.w	(Correct_cheat_entries).w,d0
00003dbe d0c0	adda.w	d0,a0
00003dc0 1038f605	move.b	(Ctrl_1_Press).w,d0
00003dc4 0200000f	andi.b	#button_up_mask|button_down_mask|button_left_mask|button_right_mask,d0
00003dc8 6722	beq.s	++
00003dca b010	cmp.b	(a0),d0
00003dcc 6618	bne.s	+
00003dce 5278ffd4	addq.w	#1,(Correct_cheat_entries).w
00003dd2 4a280001	tst.b	1(a0)
00003dd6 6614	bne.s	++
00003dd8 08780007fff8	bchg	#7,(Graphics_Flags).w
00003dde 103c00b5	move.b	#SndID_Ring,d0
00003de2 6100d58c	bsr.w	PlaySound
00003de6 31fc0000ffd4	move.w	#0,(Correct_cheat_entries).w
00003dec 4e75	rts	
00003e98 4ef90000c51e	jmp	(extractJmpToName("JmpTo_SwScrl_Title")).l
00003ec4 08f80007f600	bset	#GameModeFlag_TitleCard,(Game_Mode).w
00003eca 4a78fff0	tst.w	(Demo_mode_flag).w
00003ece 6b08	bmi.s	+
00003ed0 103c00f9	move.b	#MusID_FadeOut,d0
00003ed4 6100d49a	bsr.w	PlaySound
00003ed8 6100d7a2	bsr.w	ClearPLC
00003edc 6100e58c	bsr.w	Pal_FadeToBlack
00003ee0 4a78fff0	tst.w	(Demo_mode_flag).w
00003ee4 6b62	bmi.s	Level_ClrRam
00003ee6 46fc2700	move	#$2700,sr
00003eea 6100d31c	bsr.w	ClearScreen
00003eee 4eb9000157d2	jsr	(LoadTitleCard).l
00003ef4 46fc2300	move	#$2300,sr
00003ef8 7000	moveq	#0,d0
00003efa 31c0fe04	move.w	d0,(Level_frame_counter).w
00003efe 1038fe10	move.b	(Current_Zone).w,d0
00003f02 d040	add.w	d0,d0
00003f04 d040	add.w	d0,d0
00003f06 3200	move.w	d0,d1
00003f08 d040	add.w	d0,d0
00003f0a d041	add.w	d1,d0
00003f0c 45f900042594	lea	(LevelArtPointers).l,a2
00003f12 45f20000	lea	(a2,d0.w),a2
00003f16 7000	moveq	#0,d0
00003f18 1012	move.b	(a2),d0
00003f1a 6704	beq.s	+
00003f1c 6100d700	bsr.w	LoadPLC
00003f20 7001	moveq	#PLCID_Std2,d0
00003f22 6100d6fa	bsr.w	LoadPLC
00003f26 61000528	bsr.w	Level_SetPlayerMode
00003f2a 7006	moveq	#PLCID_MilesLife2P,d0
00003f2c 4a78ffd8	tst.w	(Two_player_mode).w
00003f30 660a	bne.s	+
00003f32 0c780002ff70	cmpi.w	#2,(Player_mode).w
00003f38 660e	bne.s	Level_ClrRam
00003f3a 5240	addq.w	#PLCID_MilesLife-PLCID_MilesLife2P,d0
00003f3c 4a38fff8	tst.b	(Graphics_Flags).w
00003f40 6a02	bpl.s	+
00003f42 5440	addq.w	#PLCID_TailsLife2P-PLCID_MilesLife2P,d0
00003f44 6100d6d8	bsr.w	LoadPLC
00003f48 43f8ac00	lea	(Object_Display_Lists).w,a1
00003f4c 7000	moveq	#0,d0
00003f4e 323c00ff	move.w	#bytesToLcnt((Object_Display_Lists_End-Object_Display_Lists) - ((Object_Display_Lists)&1)),d1
00003f52 22c0	move.l	d0,(a1)+
00003f54 51c9fffc	dbf	d1,.loop
00003f58 43f8b000	lea	(Object_RAM).w,a1
00003f5c 7000	moveq	#0,d0
00003f5e 323c08ff	move.w	#bytesToLcnt((LevelOnly_Object_RAM_End-Object_RAM) - ((Object_RAM)&1)),d1
00003f62 22c0	move.l	d0,(a1)+
00003f64 51c9fffc	dbf	d1,.loop
00003f68 43f8f628	lea	(MiscLevelVariables).w,a1
00003f6c 7000	moveq	#0,d0
00003f6e 323c0015	move.w	#bytesToLcnt((MiscLevelVariables_End-MiscLevelVariables) - ((MiscLevelVariables)&1)),d1
00003f72 22c0	move.l	d0,(a1)+
00003f74 51c9fffc	dbf	d1,.loop
00003f78 43f8f700	lea	(Misc_Variables).w,a1
00003f7c 7000	moveq	#0,d0
00003f7e 323c003f	move.w	#bytesToLcnt((Misc_Variables_End-Misc_Variables) - ((Misc_Variables)&1)),d1
00003f82 22c0	move.l	d0,(a1)+
00003f84 51c9fffc	dbf	d1,.loop
00003f88 43f8fe60	lea	(Oscillating_Data).w,a1
00003f8c 7000	moveq	#0,d0
00003f8e 323c0013	move.w	#bytesToLcnt((Oscillating_variables_End-Oscillating_Data) - ((Oscillating_Data)&1)),d1
00003f92 22c0	move.l	d0,(a1)+
00003f94 51c9fffc	dbf	d1,.loop
00003f98 43f8e700	lea	(CNZ_saucer_data).w,a1
00003f9c 7000	moveq	#0,d0
00003f9e 323c003f	move.w	#bytesToLcnt((CNZ_saucer_data_End+$C0-CNZ_saucer_data) - ((CNZ_saucer_data)&1)),d1
00003fa2 22c0	move.l	d0,(a1)+
00003fa4 51c9fffc	dbf	d1,.loop
00003fa8 0c780d01fe10	cmpi.w	#chemical_plant_zone_act_2,(Current_ZoneAndAct).w
00003fae 6710	beq.s	Level_InitWater
00003fb0 0c38000ffe10	cmpi.b	#aquatic_ruin_zone,(Current_Zone).w
00003fb6 6708	beq.s	Level_InitWater
00003fb8 0c380008fe10	cmpi.b	#hidden_palace_zone,(Current_Zone).w
00003fbe 660c	bne.s	+
00003fc0 11fc0001f730	move.b	#1,(Water_flag).w
00003fc6 31fc0000ffd8	move.w	#0,(Two_player_mode).w
00003fcc 4df900c00004	lea	(VDP_control_port).l,a6
00003fd2 3cbc8b03	move.w	#$8B03,(a6)
00003fd6 3cbc8230	move.w	#$8200|(VRAM_Plane_A_Name_Table/$400),(a6)
00003fda 3cbc8407	move.w	#$8400|(VRAM_Plane_B_Name_Table/$2000),(a6)
00003fde 3cbc857c	move.w	#$8500|(VRAM_Sprite_Attribute_Table/$200),(a6)
00003fe2 3cbc9001	move.w	#$9001,(a6)
00003fe6 3cbc8004	move.w	#$8004,(a6)
00003fea 3cbc8720	move.w	#$8720,(a6)
00003fee 3cbc8c81	move.w	#$8C81,(a6)
00003ff2 4a38ffd2	tst.b	(Debug_options_flag).w
00003ff6 671a	beq.s	++
00003ff8 08380005f604	btst	#button_C,(Ctrl_1_Held).w
00003ffe 6704	beq.s	+
00004000 3cbc8c89	move.w	#$8C89,(a6)
00004004 08380006f604	btst	#button_A,(Ctrl_1_Held).w
0000400a 6706	beq.s	+
0000400c 11fc0001fffa	move.b	#1,(Debug_mode_flag).w
00004012 31fc8adff624	move.w	#$8ADF,(Hint_counter_reserve).w
00004018 4a78ffd8	tst.w	(Two_player_mode).w
0000401c 670e	beq.s	+
0000401e 31fc8a6bf624	move.w	#$8A6B,(Hint_counter_reserve).w
00004024 3cbc8014	move.w	#$8014,(a6)
00004028 3cbc8c87	move.w	#$8C87,(a6)
0000402c 3cb8f624	move.w	(Hint_counter_reserve).w,(a6)
00004030 4278dc00	clr.w	(VDP_Command_Buffer).w
00004034 21fcffffdc00dcfc	move.l	#VDP_Command_Buffer,(VDP_Command_Buffer_Slot).w
0000403c 4a38f730	tst.b	(Water_flag).w
00004040 673a	beq.s	Level_LoadPal
00004042 3cbc8014	move.w	#$8014,(a6)
00004046 7000	moveq	#0,d0
00004048 3038fe10	move.w	(Current_ZoneAndAct).w,d0
0000404c 04400800	subi.w	#hidden_palace_zone_act_1,d0
00004050 e218	ror.b	#1,d0
00004052 ec48	lsr.w	#6,d0
00004054 0240fffe	andi.w	#$FFFE,d0
00004058 43f900004584	lea	(WaterHeight).l,a1
0000405e 30310000	move.w	(a1,d0.w),d0
00004062 31c0f646	move.w	d0,(Water_Level_1).w
00004066 31c0f648	move.w	d0,(Water_Level_2).w
0000406a 31c0f64a	move.w	d0,(Water_Level_3).w
0000406e 4238f64d	clr.b	(Water_routine).w
00004072 4238f64e	clr.b	(Water_fullscreen_flag).w
00004076 11fc0001f64c	move.b	#1,(Water_on).w
0000407c 7003	moveq	#PalID_BGND,d0
0000407e 6100e6ae	bsr.w	PalLoad_Now
00004082 4a38f730	tst.b	(Water_flag).w
00004086 6726	beq.s	Level_GetBgm
00004088 7015	moveq	#PalID_HPZ_U,d0
0000408a 0c380008fe10	cmpi.b	#hidden_palace_zone,(Current_Zone).w
00004090 670c	beq.s	Level_WaterPal
00004092 7016	moveq	#PalID_CPZ_U,d0
00004094 0c38000dfe10	cmpi.b	#chemical_plant_zone,(Current_Zone).w
0000409a 6702	beq.s	Level_WaterPal
0000409c 7017	moveq	#PalID_ARZ_U,d0
0000409e 6100e6a6	bsr.w	PalLoad_Water_Now
000040a2 4a38fe30	tst.b	(Last_star_pole_hit).w
000040a6 6706	beq.s	Level_GetBgm
000040a8 11f8fe53f64e	move.b	(Saved_Water_move).w,(Water_fullscreen_flag).w
000040ae 4a78fff0	tst.w	(Demo_mode_flag).w
000040b2 6b60	bmi.s	+
000040b4 7000	moveq	#0,d0
000040b6 1038fe10	move.b	(Current_Zone).w,d0
000040be 4a78ffd8	tst.w	(Two_player_mode).w
000040c2 6704	beq.s	Level_PlayBgm
000040c8 10310000	move.b	(a1,d0.w),d0
000040cc 31c0ff90	move.w	d0,(Level_Music).w
000040d0 6100d28c	bsr.w	PlayMusic
000040d4 11fc0034b080	move.b	#ObjID_TitleCard,(TitleCard+id).w
000040da 11fc000cf62a	move.b	#VintID_TitleCard,(Vint_routine).w
000040e0 6100f2a2	bsr.w	WaitForVint
000040e4 4eb900015f9c	jsr	(RunObjects).l
000040ea 4eb900016604	jsr	(BuildSprites).l
000040f0 6100d598	bsr.w	RunPLC_RAM
000040f4 3038b088	move.w	(TitleCard_ZoneName+x_pos).w,d0
000040f8 b078b0b0	cmp.w	(TitleCard_ZoneName+titlecard_x_target).w,d0
000040fc 66dc	bne.s	Level_TtlCard
000040fe 4ab8f680	tst.l	(Plc_Buffer).w
00004102 66d6	bne.s	Level_TtlCard
00004104 11fc000cf62a	move.b	#VintID_TitleCard,(Vint_routine).w
0000410a 6100f278	bsr.w	WaitForVint
0000410e 4eb90004106e	jsr	(Hud_Base).l
00004114 7003	moveq	#PalID_BGND,d0
00004116 6100e5fa	bsr.w	PalLoad_ForFade
0000411a 61007ea0	bsr.w	LevelSizeLoad
00004122 4278f616	clr.w	(Vscroll_Factor_FG).w
00004126 31fcff20f61e	move.w	#-screen_height,(Vscroll_Factor_P2_FG).w
0000412c 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
00004130 7000	moveq	#0,d0
00004132 323c00ff	move.w	#bytesToLcnt((Horiz_Scroll_Buf+HorizontalScrollBuffer.len-Horiz_Scroll_Buf) - ((Horiz_Scroll_Buf)&1)),d1
00004136 22c0	move.l	d0,(a1)+
00004138 51c9fffc	dbf	d1,.loop
0000413c 61000d5a	bsr.w	LoadZoneTiles
00004144 4eb9000402d4	jsr	(LoadAnimatedBlocks).l
0000414e 4eb90001eaf0	jsr	(ConvertCollisionArray).l
00004154 61000866	bsr.w	LoadCollisionIndexes
00004158 610003b4	bsr.w	WaterEffects
0000415c 61000310	bsr.w	InitPlayers
00004160 31fc0000f602	move.w	#0,(Ctrl_1_Logical).w
00004166 31fc0000f66a	move.w	#0,(Ctrl_2_Logical).w
0000416c 31fc0000f604	move.w	#0,(Ctrl_1).w
00004172 31fc0000f606	move.w	#0,(Ctrl_2).w
00004178 11fc0001f7cc	move.b	#1,(Control_Locked).w
0000417e 11fc0001f7cf	move.b	#1,(Control_Locked_P2).w
00004184 11fc0000f711	move.b	#0,(Level_started_flag).w
0000418a 4a38f730	tst.b	(Water_flag).w
0000418e 6718	beq.s	+
00004190 11fc0004b380	move.b	#ObjID_WaterSurface,(WaterSurface1+id).w
00004196 31fc0060b388	move.w	#$60,(WaterSurface1+x_pos).w
0000419c 11fc0004b3c0	move.b	#ObjID_WaterSurface,(WaterSurface2+id).w
000041a2 31fc0120b3c8	move.w	#$120,(WaterSurface2+x_pos).w
000041a8 0c38000dfe10	cmpi.b	#chemical_plant_zone,(Current_Zone).w
000041ae 6606	bne.s	+
000041b0 11fc007cb340	move.b	#ObjID_CPZPylon,(CPZPylon+id).w
000041b6 0c38000afe10	cmpi.b	#oil_ocean_zone,(Current_Zone).w
000041bc 6606	bne.s	Level_ClrHUD
000041be 11fc0007b380	move.b	#ObjID_Oil,(Oil+id).w
000041c4 7000	moveq	#0,d0
000041c6 4a38fe30	tst.b	(Last_star_pole_hit).w
000041ca 6618	bne.s	Level_FromCheckpoint
000041cc 31c0fe20	move.w	d0,(Ring_count).w
000041d0 21c0fe22	move.l	d0,(Timer).w
000041d4 11c0fe1b	move.b	d0,(Extra_life_flags).w
000041d8 31c0fed0	move.w	d0,(Ring_count_2P).w
000041dc 21c0fed2	move.l	d0,(Timer_2P).w
000041e0 11c0fec7	move.b	d0,(Extra_life_flags_2P).w
000041e4 11c0fe1a	move.b	d0,(Time_Over_flag).w
000041e8 11c0fecc	move.b	d0,(Time_Over_flag_2P).w
000041ec 11c0ff4e	move.b	d0,(SlotMachine_Routine).w
000041f0 31c0ff4c	move.w	d0,(SlotMachineInUse).w
000041f4 31c0fe08	move.w	d0,(Debug_placement_mode).w
000041f8 31c0fe02	move.w	d0,(Level_Inactive_flag).w
000041fc 11c0f622	move.b	d0,(Teleport_timer).w
00004200 11c0f623	move.b	d0,(Teleport_flag).w
00004204 31c0fef0	move.w	d0,(Rings_Collected).w
00004208 31c0fef2	move.w	d0,(Rings_Collected_2P).w
0000420c 31c0fef4	move.w	d0,(Monitors_Broken).w
00004210 31c0fef6	move.w	d0,(Monitors_Broken_2P).w
00004214 31c0fef8	move.w	d0,(Loser_Time_Left).w
00004218 61000856	bsr.w	OscillateNumInit
0000421c 11fc0001fe1f	move.b	#1,(Update_HUD_score).w
00004222 11fc0001fe1d	move.b	#1,(Update_HUD_rings).w
00004228 11fc0001fe1e	move.b	#1,(Update_HUD_timer).w
0000422e 11fc0001feca	move.b	#1,(Update_HUD_timer_2P).w
00004234 4eb900017aa4	jsr	(ObjectsManager).l
0000423a 4eb900016f88	jsr	(RingsManager).l
00004240 4eb9000173bc	jsr	(SpecialCNZBumpers).l
00004246 4eb900015f9c	jsr	(RunObjects).l
0000424c 4eb900016604	jsr	(BuildSprites).l
00004256 6100097a	bsr.w	SetLevelEndType
0000425a 31fc0000f790	move.w	#0,(Demo_button_index).w
00004260 31fc0000f732	move.w	#0,(Demo_button_index_2P).w
00004266 43f900004948	lea	(DemoScriptPointers).l,a1
0000426c 7000	moveq	#0,d0
0000426e 1038fe10	move.b	(Current_Zone).w,d0
00004272 e548	lsl.w	#2,d0
00004274 22710000	movea.l	(a1,d0.w),a1
00004278 4a78fff0	tst.w	(Demo_mode_flag).w
0000427c 6a12	bpl.s	+
0000427e 43f90000498c	lea	(EndingDemoScriptPointers).l,a1
00004284 3038fff4	move.w	(Ending_demo_number).w,d0
00004288 5340	subq.w	#1,d0
0000428a e548	lsl.w	#2,d0
0000428c 22710000	movea.l	(a1,d0.w),a1
00004290 11e90001f792	move.b	1(a1),(Demo_press_counter).w
00004296 4a38fe10	tst.b	(Current_Zone).w
0000429a 660c	bne.s	+
0000429c 43f900004d08	lea	(Demo_EHZ_Tails).l,a1
000042a2 11e90001f734	move.b	1(a1),(Demo_press_counter_2P).w
000042a8 31fc0668f614	move.w	#$668,(Demo_Time_left).w
000042ae 4a78fff0	tst.w	(Demo_mode_flag).w
000042b2 6a14	bpl.s	+
000042b4 31fc021cf614	move.w	#$21C,(Demo_Time_left).w
000042ba 0c780004fff4	cmpi.w	#4,(Ending_demo_number).w
000042c0 6606	bne.s	+
000042c2 31fc01fef614	move.w	#$1FE,(Demo_Time_left).w
000042c8 4a38f730	tst.b	(Water_flag).w
000042cc 671a	beq.s	++
000042ce 7015	moveq	#PalID_HPZ_U,d0
000042d0 0c380008fe10	cmpi.b	#hidden_palace_zone,(Current_Zone).w
000042d6 670c	beq.s	+
000042d8 7016	moveq	#PalID_CPZ_U,d0
000042da 0c38000dfe10	cmpi.b	#chemical_plant_zone,(Current_Zone).w
000042e0 6702	beq.s	+
000042e2 7017	moveq	#PalID_ARZ_U,d0
000042e4 6100e47e	bsr.w	PalLoad_Water_ForFade
000042e8 31fcffffb0be	move.w	#-1,(TitleCard_ZoneName+titlecard_leaveflag).w
000042ee 11fc000eb1e4	move.b	#$E,(TitleCard_Left+routine).w
000042f4 31fc000ab1f4	move.w	#$A,(TitleCard_Left+titlecard_location).w
00004300 6100f082	bsr.w	WaitForVint
00004304 4eb900015f9c	jsr	(RunObjects).l
0000430a 4eb900016604	jsr	(BuildSprites).l
00004310 6100d378	bsr.w	RunPLC_RAM
00004314 4a38b140	tst.b	(TitleCard_Background+id).w
00004318 66e0	bne.s	-
0000431a 43f8b080	lea	(TitleCard).w,a1
0000431e 137c00160024	move.b	#$16,TitleCard_ZoneName-TitleCard+routine(a1)
00004324 337c002d001e	move.w	#$2D,TitleCard_ZoneName-TitleCard+anim_frame_duration(a1)
0000432a 137c00160064	move.b	#$16,TitleCard_Zone-TitleCard+routine(a1)
00004330 337c002d005e	move.w	#$2D,TitleCard_Zone-TitleCard+anim_frame_duration(a1)
00004336 4a290080	tst.b	TitleCard_ActNumber-TitleCard+id(a1)
0000433a 670c	beq.s	+
0000433c 137c001600a4	move.b	#$16,TitleCard_ActNumber-TitleCard+routine(a1)
00004342 337c002d009e	move.w	#$2D,TitleCard_ActNumber-TitleCard+anim_frame_duration(a1)
0000434e 11fc0000f7cf	move.b	#0,(Control_Locked_P2).w
00004354 11fc0001f711	move.b	#1,(Level_started_flag).w
0000435a 08b80007f600	bclr	#GameModeFlag_TitleCard,(Game_Mode).w
00004360 6100d026	bsr.w	PauseGame
00004364 11fc0008f62a	move.b	#VintID_Level,(Vint_routine).w
0000436a 6100f018	bsr.w	WaitForVint
0000436e 5278fe04	addq.w	#1,(Level_frame_counter).w
00004372 610004aa	bsr.w	MoveSonicInDemo
00004376 61000196	bsr.w	WaterEffects
0000437a 4eb900015f9c	jsr	(RunObjects).l
00004380 4a78fe02	tst.w	(Level_Inactive_flag).w
00004384 6600fb3e	bne.w	Level
0000438c 61000156	bsr.w	UpdateWaterSurface
00004390 4eb900016f88	jsr	(RingsManager).l
00004396 0c38000cfe10	cmpi.b	#casino_night_zone,(Current_Zone).w
0000439c 6606	bne.s	+
0000439e 4eb9000173bc	jsr	(SpecialCNZBumpers).l
000043a8 6100d632	bsr.w	PalCycle_Load
000043ac 6100d2dc	bsr.w	RunPLC_RAM
000043b0 61000714	bsr.w	OscillateNumDo
000043b4 610007ae	bsr.w	ChangeRingFrame
000043b8 6100088e	bsr.w	CheckLoadSignpostArt
000043bc 4eb900016604	jsr	(BuildSprites).l
000043c2 4eb900017aa4	jsr	(ObjectsManager).l
000043c8 0c380008f600	cmpi.b	#GameModeID_Demo,(Game_Mode).w
000043ce 670c	beq.s	+
000043d0 0c38000cf600	cmpi.b	#GameModeID_Level,(Game_Mode).w
000043d6 6700ff88	beq.w	Level_MainLoop
000043da 4e75	rts	
000043dc 4a78fe02	tst.w	(Level_Inactive_flag).w
000043e0 6618	bne.s	+
000043e2 4a78f614	tst.w	(Demo_Time_left).w
000043e6 6712	beq.s	+
000043e8 0c380008f600	cmpi.b	#GameModeID_Demo,(Game_Mode).w
000043ee 6700ff70	beq.w	Level_MainLoop
000043f2 11fc0000f600	move.b	#GameModeID_SegaScreen,(Game_Mode).w
000043f8 4e75	rts	
000043fa 0c380008f600	cmpi.b	#GameModeID_Demo,(Game_Mode).w
00004400 6606	bne.s	+
00004402 11fc0000f600	move.b	#GameModeID_SegaScreen,(Game_Mode).w
00004408 31fc003cf614	move.w	#1*60,(Demo_Time_left).w
0000440e 31fc003ff626	move.w	#$3F,(Palette_fade_range).w
00004414 4278f794	clr.w	(PalChangeSpeed).w
00004418 11fc0008f62a	move.b	#VintID_Level,(Vint_routine).w
0000441e 6100ef64	bsr.w	WaitForVint
00004422 610003fa	bsr.w	MoveSonicInDemo
00004426 4eb900015f9c	jsr	(RunObjects).l
0000442c 4eb900016604	jsr	(BuildSprites).l
00004432 4eb900017aa4	jsr	(ObjectsManager).l
00004438 5378f794	subq.w	#1,(PalChangeSpeed).w
0000443c 6a0a	bpl.s	+
0000443e 31fc0002f794	move.w	#2,(PalChangeSpeed).w
00004444 6100e044	bsr.w	Pal_FadeToBlack.UpdateAllColours
00004448 4a78f614	tst.w	(Demo_Time_left).w
0000444c 66ca	bne.s	-
0000444e 4e75	rts	
00004450 0c380088f600	cmpi.b	#GameModeID_TitleCard|GameModeID_Demo,(Game_Mode).w
00004456 670e	beq.s	+
00004458 4a78ffd8	tst.w	(Two_player_mode).w
0000445c 6608	bne.s	+
0000445e 31f8ff72ff70	move.w	(Player_option).w,(Player_mode).w
00004464 4e75	rts	
00004466 31fc0000ff70	move.w	#0,(Player_mode).w
0000446c 4e75	rts	
0000446e 3038ff70	move.w	(Player_mode).w,d0
00004472 664a	bne.s	InitPlayers_Alone
00004474 11fc0001b000	move.b	#ObjID_Sonic,(MainCharacter+id).w
0000447a 11fc0008d100	move.b	#ObjID_SpindashDust,(Sonic_Dust+id).w
00004480 0c380006fe10	cmpi.b	#wing_fortress_zone,(Current_Zone).w
00004486 6734	beq.s	+
00004488 0c38000efe10	cmpi.b	#death_egg_zone,(Current_Zone).w
0000448e 672c	beq.s	+
00004490 0c380010fe10	cmpi.b	#sky_chase_zone,(Current_Zone).w
00004496 6724	beq.s	+
00004498 11fc0002b040	move.b	#ObjID_Tails,(Sidekick+id).w
0000449e 31f8b008b048	move.w	(MainCharacter+x_pos).w,(Sidekick+x_pos).w
000044a4 31f8b00cb04c	move.w	(MainCharacter+y_pos).w,(Sidekick+y_pos).w
000044aa 04780020b048	subi.w	#$20,(Sidekick+x_pos).w
000044b6 11fc0008d140	move.b	#ObjID_SpindashDust,(Tails_Dust+id).w
000044bc 4e75	rts	
000044be 5340	subq.w	#1,d0
000044c0 660e	bne.s	InitPlayers_TailsAlone
000044c2 11fc0001b000	move.b	#ObjID_Sonic,(MainCharacter+id).w
000044c8 11fc0008d100	move.b	#ObjID_SpindashDust,(Sonic_Dust+id).w
000044ce 4e75	rts	
000044d0 11fc0002b000	move.b	#ObjID_Tails,(MainCharacter+id).w
000044d6 11fc0008d140	move.b	#ObjID_SpindashDust,(Tails_Dust+id).w
000044e2 4e75	rts	
000044e4 4a38f730	tst.b	(Water_flag).w
000044e8 6722	beq.s	++
000044ea 3238ee00	move.w	(Camera_X_pos).w,d1
000044ee 08380000fe05	btst	#0,(Level_frame_counter+1).w
000044f4 6704	beq.s	+
000044f6 06410020	addi.w	#$20,d1
000044fa 3001	move.w	d1,d0
000044fc 06400060	addi.w	#$60,d0
00004500 31c0b388	move.w	d0,(WaterSurface1+x_pos).w
00004504 06410120	addi.w	#$120,d1
00004508 31c1b3c8	move.w	d1,(WaterSurface2+x_pos).w
0000450c 4e75	rts	
0000450e 4a38f730	tst.b	(Water_flag).w
00004512 6756	beq.s	NonWaterEffects
00004514 4a38eedc	tst.b	(Deform_lock).w
00004518 660c	bne.s	MoveWater
0000451a 0c380006b024	cmpi.b	#6,(MainCharacter+routine).w
00004520 6404	bhs.s	MoveWater
00004522 61000080	bsr.w	DynamicWater
00004526 4238f64e	clr.b	(Water_fullscreen_flag).w
0000452a 7000	moveq	#0,d0
0000452c 0c38000ffe10	cmpi.b	#aquatic_ruin_zone,(Current_Zone).w
00004532 6706	beq.s	+
00004534 1038fe60	move.b	(Oscillating_Data).w,d0
00004538 e248	lsr.w	#1,d0
0000453a d078f648	add.w	(Water_Level_2).w,d0
0000453e 31c0f646	move.w	d0,(Water_Level_1).w
00004542 3038f646	move.w	(Water_Level_1).w,d0
00004546 9078ee04	sub.w	(Camera_Y_pos).w,d0
0000454a 6410	bhs.s	+
0000454c 4a40	tst.w	d0
0000454e 6a0c	bpl.s	+
00004550 11fc00dff625	move.b	#screen_height-1,(Hint_counter_reserve+1).w
00004556 11fc0001f64e	move.b	#1,(Water_fullscreen_flag).w
0000455c 0c4000df	cmpi.w	#screen_height-1,d0
00004560 6504	blo.s	+
00004562 303c00df	move.w	#screen_height-1,d0
00004566 11c0f625	move.b	d0,(Hint_counter_reserve+1).w
0000456a 0c38000afe10	cmpi.b	#oil_ocean_zone,(Current_Zone).w
00004570 6604	bne.s	+
00004572 61000144	bsr.w	OilSlides
00004576 0c380006fe10	cmpi.b	#wing_fortress_zone,(Current_Zone).w
0000457c 6604	bne.s	+
0000457e 6100008a	bsr.w	WindTunnel
00004582 4e75	rts	
000045a4 7000	moveq	#0,d0
000045a6 3038fe10	move.w	(Current_ZoneAndAct).w,d0
000045aa 04400800	subi.w	#hidden_palace_zone_act_1,d0
000045ae e218	ror.b	#1,d0
000045b0 ec48	lsr.w	#6,d0
000045b2 0240fffe	andi.w	#$FFFE,d0
000045b6 303b0020	move.w	Dynamic_water_routine_table(pc,d0.w),d0
000045ba 4ebb001c	jsr	Dynamic_water_routine_table(pc,d0.w)
000045be 7200	moveq	#0,d1
000045c0 1238f64c	move.b	(Water_on).w,d1
000045c4 3038f64a	move.w	(Water_Level_3).w,d0
000045c8 9078f648	sub.w	(Water_Level_2).w,d0
000045cc 6708	beq.s	++
000045ce 6402	bcc.s	+
000045d0 4441	neg.w	d1
000045d2 d378f648	add.w	d1,(Water_Level_2).w
000045d6 4e75	rts	
000045f8 4e75	rts	
000045fa 0c781de0ee00	cmpi.w	#$1DE0,(Camera_X_pos).w
00004600 6506	blo.s	+
00004602 31fc0510f64a	move.w	#$510,(Water_Level_3).w
0000460a 4a78fe08	tst.w	(Debug_placement_mode).w
0000460e 66000096	bne.w	WindTunnel_End
00004612 45f9000046a8	lea	(WindTunnelsCoordinates).l,a2
00004618 7201	moveq	#(WindTunnelsCoordinates_End-WindTunnelsCoordinates)/8-1,d1
0000461a 43f8b000	lea	(MainCharacter).w,a1
0000461e 30290008	move.w	x_pos(a1),d0
00004622 b052	cmp.w	windtunnel_min_x_pos(a2),d0
00004624 6500006a	blo.w	WindTunnel_Leave
00004628 b06a0004	cmp.w	windtunnel_max_x_pos(a2),d0
0000462c 64000062	bhs.w	WindTunnel_Leave
00004630 3429000c	move.w	y_pos(a1),d2
00004634 b46a0002	cmp.w	windtunnel_min_y_pos(a2),d2
00004638 65000056	blo.w	WindTunnel_Leave
0000463c b46a0006	cmp.w	windtunnel_max_y_pos(a2),d2
00004640 644e	bhs.s	WindTunnel_Leave
00004642 4a38f7c9	tst.b	(WindTunnel_holding_flag).w
00004646 6600005e	bne.w	WindTunnel_End
0000464a 0c2900040024	cmpi.b	#4,routine(a1)
00004650 6450	bhs.s	WindTunnel_LeaveHurt
00004652 11fc0001f7c7	move.b	#1,(WindTunnel_flag).w
0000465e 337cfc000010	move.w	#-$400,x_vel(a1)
00004664 337c00000012	move.w	#0,y_vel(a1)
0000466a 137c000f001c	move.b	#AniIDSonAni_Float2,anim(a1)
00004670 08e900010022	bset	#status.player.in_air,status(a1)
00004676 08380000f604	btst	#button_up,(Ctrl_1_Held).w
0000467c 6704	beq.s	+
0000467e 5369000c	subq.w	#1,y_pos(a1)
00004682 08380001f604	btst	#button_down,(Ctrl_1_Held).w
00004688 6704	beq.s	+
0000468a 5269000c	addq.w	#1,y_pos(a1)
0000468e 4e75	rts	
00004690 504a	addq.w	#8,a2
00004692 51c9ff8a	dbf	d1,-
00004696 4a38f7c7	tst.b	(WindTunnel_flag).w
0000469a 670a	beq.s	WindTunnel_End
0000469c 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
000046a2 4238f7c7	clr.b	(WindTunnel_flag).w
000046a6 4e75	rts	
000046b8 43f8b000	lea	(MainCharacter).w,a1
000046bc 1438f602	move.b	(Ctrl_1_Held_Logical).w,d2
000046c0 6108	bsr.s	+
000046c2 43f8b040	lea	(Sidekick).w,a1
000046c6 1438f66a	move.b	(Ctrl_2_Held_Logical).w,d2
000046ca 082900010022	btst	#status.player.in_air,status(a1)
000046d0 662c	bne.s	+
000046d2 3029000c	move.w	y_pos(a1),d0
000046d6 d040	add.w	d0,d0
000046d8 02400f00	andi.w	#$F00,d0
000046dc 32290008	move.w	x_pos(a1),d1
000046e0 ee49	lsr.w	#7,d1
000046e2 0241007f	andi.w	#$7F,d1
000046e6 d041	add.w	d1,d0
000046e8 45f88000	lea	(Level_Layout).w,a2
000046ec 10320000	move.b	(a2,d0.w),d0
000046f0 45fa012c	lea	OilSlides_Chunks_End(pc),a2
000046f4 721f	moveq	#OilSlides_Chunks_End-OilSlides_Chunks-1,d1
000046f8 57c9fffc	dbeq	d1,-
000046fc 6714	beq.s	loc_4712
000046fe 4a29002b	tst.b	status_secondary(a1)
00004702 6a0c	bpl.s	+
00004704 337c0005002e	move.w	#5,move_lock(a1)
0000470a 0229007f002b	andi.b	#~(1<<status_secondary.sliding)&$FF,status_secondary(a1)
00004712 45f9000047de	lea	(OilSlides_Speeds).l,a2
00004718 10321000	move.b	(a2,d1.w),d0
0000471c 6750	beq.s	loc_476E
0000471e 12290014	move.b	inertia(a1),d1
00004722 4a00	tst.b	d0
00004724 6a0c	bpl.s	+
00004726 b200	cmp.b	d0,d1
00004728 6f12	ble.s	++
0000472a 046900400014	subi.w	#$40,inertia(a1)
00004730 600a	bra.s	++
00004732 b200	cmp.b	d0,d1
00004734 6c06	bge.s	+
00004736 066900400014	addi.w	#$40,inertia(a1)
0000473c 08a900000022	bclr	#status.player.x_flip,status(a1)
00004742 4a01	tst.b	d1
00004744 6a06	bpl.s	+
00004746 08e900000022	bset	#status.player.x_flip,status(a1)
0000474c 137c001b001c	move.b	#AniIDSonAni_Slide,anim(a1)
00004752 00290080002b	ori.b	#1<<status_secondary.sliding,status_secondary(a1)
00004758 1038fe0f	move.b	(Vint_runcount+3).w,d0
0000475c 0200001f	andi.b	#$1F,d0
00004760 660a	bne.s	+
00004762 303c00f0	move.w	#SndID_OilSlide,d0
00004766 4eb900001370	jsr	(PlaySound).l
0000476c 4e75	rts	
0000476e 323c0004	move.w	#4,d1
00004772 30290014	move.w	inertia(a1),d0
00004776 08020002	btst	#button_left,d2
0000477a 6714	beq.s	+
0000477c 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
00004782 08e900000022	bset	#status.player.x_flip,status(a1)
00004788 9041	sub.w	d1,d0
0000478a 4a40	tst.w	d0
0000478c 6a02	bpl.s	+
0000478e 9041	sub.w	d1,d0
00004790 08020003	btst	#button_right,d2
00004794 6714	beq.s	+
00004796 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
0000479c 08a900000022	bclr	#status.player.x_flip,status(a1)
000047a2 d041	add.w	d1,d0
000047a4 4a40	tst.w	d0
000047a6 6b02	bmi.s	+
000047a8 d041	add.w	d1,d0
000047aa 323c0004	move.w	#4,d1
000047ae 4a40	tst.w	d0
000047b0 6720	beq.s	+++
000047b2 6b10	bmi.s	++
000047b4 9041	sub.w	d1,d0
000047b6 620a	bhi.s	+
000047b8 303c0000	move.w	#0,d0
000047bc 137c0005001c	move.b	#AniIDSonAni_Wait,anim(a1)
000047c4 d041	add.w	d1,d0
000047c6 620a	bhi.s	+
000047c8 303c0000	move.w	#0,d0
000047cc 137c0005001c	move.b	#AniIDSonAni_Wait,anim(a1)
000047d2 33400014	move.w	d0,inertia(a1)
000047d6 00290080002b	ori.b	#1<<status_secondary.sliding,status_secondary(a1)
000047dc 4e75	rts	
0000481e 4a78fff0	tst.w	(Demo_mode_flag).w
00004822 66000086	bne.w	MoveDemo_On
00004826 4e75	rts	
00004828 43f900004948	lea	(DemoScriptPointers).l,a1
0000482e 7000	moveq	#0,d0
00004830 1038fe10	move.b	(Current_Zone).w,d0
00004834 e548	lsl.w	#2,d0
00004836 22710000	movea.l	(a1,d0.w),a1
0000483a 3038f790	move.w	(Demo_button_index).w,d0
0000483e d2c0	adda.w	d0,a1
00004840 1038f604	move.b	(Ctrl_1_Held).w,d0
00004844 b011	cmp.b	(a1),d0
00004846 660e	bne.s	+
00004848 52290001	addq.b	#1,1(a1)
0000484c 0c2900ff0001	cmpi.b	#$FF,1(a1)
00004852 6702	beq.s	+
00004854 6014	bra.s	MoveDemo_Record_P2
00004856 13400002	move.b	d0,2(a1)
0000485a 137c00000003	move.b	#0,3(a1)
00004860 5478f790	addq.w	#2,(Demo_button_index).w
00004864 027803fff790	andi.w	#$3FF,(Demo_button_index).w
0000486a 0c380000fe10	cmpi.b	#emerald_hill_zone,(Current_Zone).w
00004870 6636	bne.s	++
00004872 43f900fec000	lea	($FEC000).l,a1
00004878 3038f732	move.w	(Demo_button_index_2P).w,d0
0000487c d2c0	adda.w	d0,a1
0000487e 1038f606	move.b	(Ctrl_2_Held).w,d0
00004882 b011	cmp.b	(a1),d0
00004884 660e	bne.s	+
00004886 52290001	addq.b	#1,1(a1)
0000488a 0c2900ff0001	cmpi.b	#$FF,1(a1)
00004890 6702	beq.s	+
00004892 6014	bra.s	++
00004894 13400002	move.b	d0,2(a1)
00004898 137c00000003	move.b	#0,3(a1)
0000489e 5478f732	addq.w	#2,(Demo_button_index_2P).w
000048a2 027803fff732	andi.w	#$3FF,(Demo_button_index_2P).w
000048aa 1038f605	move.b	(Ctrl_1_Press).w,d0
000048ae 8038f607	or.b	(Ctrl_2_Press).w,d0
000048b2 02000080	andi.b	#button_start_mask,d0
000048b6 670c	beq.s	+
000048b8 4a78fff0	tst.w	(Demo_mode_flag).w
000048bc 6b06	bmi.s	+
000048be 11fc0004f600	move.b	#GameModeID_TitleScreen,(Game_Mode).w
000048c4 43f900004948	lea	(DemoScriptPointers).l,a1
000048ca 7000	moveq	#0,d0
000048cc 1038fe10	move.b	(Current_Zone).w,d0
000048d0 0c380010f600	cmpi.b	#GameModeID_SpecialStage,(Game_Mode).w
000048d6 6602	bne.s	MoveDemo_On_P1
000048d8 7006	moveq	#6,d0
000048da e548	lsl.w	#2,d0
000048dc 22710000	movea.l	(a1,d0.w),a1
000048e0 3038f790	move.w	(Demo_button_index).w,d0
000048e4 d2c0	adda.w	d0,a1
000048e6 1011	move.b	(a1),d0
000048e8 41f8f604	lea	(Ctrl_1_Held).w,a0
000048ec 1200	move.b	d0,d1
000048ee 7400	moveq	#0,d2
000048f0 b500	eor.b	d2,d0
000048f2 10c1	move.b	d1,(a0)+
000048f4 c001	and.b	d1,d0
000048f6 10c0	move.b	d0,(a0)+
000048f8 5338f792	subq.b	#1,(Demo_press_counter).w
000048fc 640a	bcc.s	MoveDemo_On_P2
000048fe 11e90003f792	move.b	3(a1),(Demo_press_counter).w
00004904 5478f790	addq.w	#2,(Demo_button_index).w
00004908 0c380000fe10	cmpi.b	#emerald_hill_zone,(Current_Zone).w
0000490e 6630	bne.s	MoveDemo_On_SkipP2
00004910 43f900004d08	lea	(Demo_EHZ_Tails).l,a1
00004916 3038f732	move.w	(Demo_button_index_2P).w,d0
0000491a d2c0	adda.w	d0,a1
0000491c 1011	move.b	(a1),d0
0000491e 41f8f606	lea	(Ctrl_2_Held).w,a0
00004922 1200	move.b	d0,d1
00004924 7400	moveq	#0,d2
00004926 b500	eor.b	d2,d0
00004928 10c1	move.b	d1,(a0)+
0000492a c001	and.b	d1,d0
0000492c 10c0	move.b	d0,(a0)+
0000492e 5338f734	subq.b	#1,(Demo_press_counter_2P).w
00004932 640a	bcc.s	+
00004934 11e90003f734	move.b	3(a1),(Demo_press_counter_2P).w
0000493a 5478f732	addq.w	#2,(Demo_button_index_2P).w
0000493e 4e75	rts	
00004940 31fc0000f606	move.w	#0,(Ctrl_2).w
00004946 4e75	rts	
000049bc 7000	moveq	#0,d0
000049be 1038fe10	move.b	(Current_Zone).w,d0
000049c2 e548	lsl.w	#2,d0
000049c4 21fcffffd600f796	move.l	#Primary_Collision,(Collision_addr).w
000049cc 3f00	move.w	d0,-(sp)
000049ce 207b0018	movea.l	Off_ColP(pc,d0.w),a0
000049d2 43f8d600	lea	(Primary_Collision).w,a1
000049d6 6100cf62	bsr.w	KosDec
000049da 301f	move.w	(sp)+,d0
000049dc 207b004e	movea.l	Off_ColS(pc,d0.w),a0
000049e0 43f8d900	lea	(Secondary_Collision).w,a1
000049e4 6000cf54	bra.w	KosDec
00004a70 43f8fe5e	lea	(Oscillating_Numbers).w,a1
00004a74 45f900004a84	lea	(Osc_Data).l,a2
00004a7a 7220	moveq	#bytesToWcnt(Osc_Data_End-Osc_Data),d1
00004a7c 32da	move.w	(a2)+,(a1)+
00004a7e 51c9fffc	dbf	d1,Osc_Loop
00004a82 4e75	rts	
00004ac6 4a78ffd8	tst.w	(Two_player_mode).w
00004aca 6608	bne.s	+
00004acc 0c380006b024	cmpi.b	#6,(MainCharacter+routine).w
00004ad2 644e	bhs.s	OscillateNumDo_Return
00004ad4 43f8fe5e	lea	(Oscillating_Numbers).w,a1
00004ad8 45f900004b24	lea	(Osc_Data2).l,a2
00004ade 3619	move.w	(a1)+,d3
00004ae0 720f	moveq	#bytesToLcnt(Osc_Data2_End-Osc_Data2),d1
00004ae4 381a	move.w	(a2)+,d4
00004ae6 0303	btst	d1,d3
00004ae8 6618	bne.s	+
00004aea 30290002	move.w	2(a1),d0
00004aee d042	add.w	d2,d0
00004af0 33400002	move.w	d0,2(a1)
00004afc 621a	bhi.s	++
00004afe 03c3	bset	d1,d3
00004b00 6016	bra.s	++
00004b02 30290002	move.w	2(a1),d0
00004b06 9042	sub.w	d2,d0
00004b08 33400002	move.w	d0,2(a1)
00004b14 6302	bls.s	+
00004b16 0383	bclr	d1,d3
00004b18 5849	addq.w	#4,a1
00004b1a 51c9ffc6	dbf	d1,-
00004b1e 31c3fe5e	move.w	d3,(Oscillation_Control).w
00004b22 4e75	rts	
00004b64 5338fea0	subq.b	#1,(Logspike_anim_counter).w
00004b68 6a10	bpl.s	+
00004b6a 11fc000bfea0	move.b	#$B,(Logspike_anim_counter).w
00004b70 5338fea1	subq.b	#1,(Logspike_anim_frame).w
00004b74 02380007fea1	andi.b	#7,(Logspike_anim_frame).w
00004b7a 5338fea2	subq.b	#1,(Rings_anim_counter).w
00004b7e 6a10	bpl.s	+
00004b80 11fc0007fea2	move.b	#7,(Rings_anim_counter).w
00004b86 5238fea3	addq.b	#1,(Rings_anim_frame).w
00004b8a 02380003fea3	andi.b	#3,(Rings_anim_frame).w
00004b90 5338fea4	subq.b	#1,(Unknown_anim_counter).w
00004b94 6a18	bpl.s	+
00004b96 11fc0007fea4	move.b	#7,(Unknown_anim_counter).w
00004b9c 5238fea5	addq.b	#1,(Unknown_anim_frame).w
00004ba0 0c380006fea5	cmpi.b	#6,(Unknown_anim_frame).w
00004ba6 6506	blo.s	+
00004ba8 11fc0000fea5	move.b	#0,(Unknown_anim_frame).w
00004bae 4a38fea6	tst.b	(Ring_spill_anim_counter).w
00004bb2 671c	beq.s	+
00004bb4 7000	moveq	#0,d0
00004bb6 1038fea6	move.b	(Ring_spill_anim_counter).w,d0
00004bba d078fea8	add.w	(Ring_spill_anim_accum).w,d0
00004bbe 31c0fea8	move.w	d0,(Ring_spill_anim_accum).w
00004bc2 ef58	rol.w	#7,d0
00004bc4 02400003	andi.w	#3,d0
00004bc8 11c0fea7	move.b	d0,(Ring_spill_anim_frame).w
00004bcc 5338fea6	subq.b	#1,(Ring_spill_anim_counter).w
00004bd0 4e75	rts	
00004bd2 31fc0000ffc8	move.w	#0,(Level_Has_Signpost).w
00004bd8 4a78ffd8	tst.w	(Two_player_mode).w
00004bdc 6662	bne.s	LevelEnd_SetSignpost
00004bde 0c780001fe10	cmpi.w	#emerald_hill_zone_act_2,(Current_ZoneAndAct).w
00004be4 67000060	beq.w	+
00004be8 0c780500fe10	cmpi.w	#metropolis_zone_act_3,(Current_ZoneAndAct).w
00004bee 67000056	beq.w	+
00004bf2 0c780600fe10	cmpi.w	#wing_fortress_zone_act_1,(Current_ZoneAndAct).w
00004bf8 6700004c	beq.w	+
00004bfc 0c780701fe10	cmpi.w	#hill_top_zone_act_2,(Current_ZoneAndAct).w
00004c02 67000042	beq.w	+
00004c06 0c780a01fe10	cmpi.w	#oil_ocean_zone_act_2,(Current_ZoneAndAct).w
00004c0c 67000038	beq.w	+
00004c10 0c780b01fe10	cmpi.w	#mystic_cave_zone_act_2,(Current_ZoneAndAct).w
00004c16 672e	beq.s	+
00004c18 0c780c01fe10	cmpi.w	#casino_night_zone_act_2,(Current_ZoneAndAct).w
00004c1e 6726	beq.s	+
00004c20 0c780d01fe10	cmpi.w	#chemical_plant_zone_act_2,(Current_ZoneAndAct).w
00004c26 671e	beq.s	+
00004c28 0c780e00fe10	cmpi.w	#death_egg_zone_act_1,(Current_ZoneAndAct).w
00004c2e 6716	beq.s	+
00004c30 0c780f01fe10	cmpi.w	#aquatic_ruin_zone_act_2,(Current_ZoneAndAct).w
00004c36 670e	beq.s	+
00004c38 0c781000fe10	cmpi.w	#sky_chase_zone_act_1,(Current_ZoneAndAct).w
00004c3e 6706	beq.s	+
00004c40 31fc0001ffc8	move.w	#1,(Level_Has_Signpost).w
00004c48 4a78ffc8	tst.w	(Level_Has_Signpost).w
00004c4c 6758	beq.s	+
00004c4e 4a78fe08	tst.w	(Debug_placement_mode).w
00004c52 6652	bne.s	+
00004c54 3038ee00	move.w	(Camera_X_pos).w,d0
00004c58 3238eeca	move.w	(Camera_Max_X_pos).w,d1
00004c5c 04410100	subi.w	#$100,d1
00004c60 b041	cmp.w	d1,d0
00004c62 6d1c	blt.s	SignpostUpdateTailsBounds
00004c64 4a38fe1e	tst.b	(Update_HUD_timer).w
00004c68 6716	beq.s	SignpostUpdateTailsBounds
00004c6a b278eec8	cmp.w	(Camera_Min_X_pos).w,d1
00004c6e 6710	beq.s	SignpostUpdateTailsBounds
00004c70 31c1eec8	move.w	d1,(Camera_Min_X_pos).w
00004c74 4a78ffd8	tst.w	(Two_player_mode).w
00004c78 662c	bne.s	+
00004c7a 7027	moveq	#PLCID_Signpost,d0
00004c7c 6000c9d2	bra.w	LoadPLC2
00004c80 4a78ffd8	tst.w	(Two_player_mode).w
00004c84 6720	beq.s	+
00004c86 3038ee20	move.w	(Camera_X_pos_P2).w,d0
00004c8a 3238eefa	move.w	(Tails_Max_X_pos).w,d1
00004c8e 04410100	subi.w	#$100,d1
00004c92 b041	cmp.w	d1,d0
00004c94 6d10	blt.s	+
00004c96 4a38feca	tst.b	(Update_HUD_timer_2P).w
00004c9a 670a	beq.s	+
00004c9c b278eef8	cmp.w	(Tails_Min_X_pos).w,d1
00004ca0 6704	beq.s	+
00004ca2 31c1eef8	move.w	d1,(Tails_Min_X_pos).w
00004e98 7000	moveq	#0,d0
00004e9a 1038fe10	move.b	(Current_Zone).w,d0
00004e9e d040	add.w	d0,d0
00004ea0 d040	add.w	d0,d0
00004ea2 3200	move.w	d0,d1
00004ea4 d040	add.w	d0,d0
00004ea6 d041	add.w	d1,d0
00004ea8 45f900042594	lea	(LevelArtPointers).l,a2
00004eae 45f20000	lea	(a2,d0.w),a2
00004eb2 201a	move.l	(a2)+,d0
00004eb4 028000ffffff	andi.l	#$FFFFFF,d0
00004eba 2040	movea.l	d0,a0
00004ebc 43f9ffff0000	lea	(Chunk_Table).l,a1
00004ec2 6100ca76	bsr.w	KosDec
00004ec6 3609	move.w	a1,d3
00004ec8 0c380007fe10	cmpi.b	#hill_top_zone,(Current_Zone).w
00004ece 6614	bne.s	+
00004ed0 41f900098ab4	lea	(ArtKos_HTZ).l,a0
00004ed6 43f9ffff3f80	lea	(Chunk_Table+tiles_to_bytes(ArtTile_ArtKos_NumTiles_HTZ_Main)).l,a1
00004edc 6100ca5c	bsr.w	KosDec
00004ee0 363c6fc0	move.w	#tiles_to_bytes(ArtTile_ArtKos_NumTiles_HTZ),d3
00004ee4 0c380006fe10	cmpi.b	#wing_fortress_zone,(Current_Zone).w
00004eea 6614	bne.s	+
00004eec 41f9000c7ec4	lea	(ArtKos_WFZ).l,a0
00004ef2 43f9ffff60e0	lea	(Chunk_Table+tiles_to_bytes(ArtTile_ArtKos_NumTiles_WFZ_Main)).l,a1
00004ef8 6100ca40	bsr.w	KosDec
00004efc 363c6f20	move.w	#tiles_to_bytes(ArtTile_ArtKos_NumTiles_WFZ),d3
00004f00 0c38000efe10	cmpi.b	#death_egg_zone,(Current_Zone).w
00004f06 6604	bne.s	+
00004f08 363c64c0	move.w	#tiles_to_bytes(ArtTile_ArtKos_NumTiles_DEZ),d3
00004f0c 3e03	move.w	d3,d7
00004f0e 02430fff	andi.w	#$FFF,d3
00004f12 e24b	lsr.w	#1,d3
00004f14 e95f	rol.w	#4,d7
00004f16 0247000f	andi.w	#$F,d7
00004f1c ef4a	lsl.w	#7,d2
00004f1e eb4a	lsl.w	#5,d2
00004f20 223c00ffffff	move.l	#$FFFFFF,d1
00004f26 3202	move.w	d2,d1
00004f28 4eb90000144e	jsr	(QueueDMATransfer).l
00004f2e 3f07	move.w	d7,-(sp)
00004f30 11fc000cf62a	move.b	#VintID_TitleCard,(Vint_routine).w
00004f36 6100e44c	bsr.w	WaitForVint
00004f3a 6100c74e	bsr.w	RunPLC_RAM
00004f3e 3e1f	move.w	(sp)+,d7
00004f40 363c0800	move.w	#$800,d3
00004f44 51cfffd4	dbf	d7,-
00004f48 4e75	rts	
00004f4a 4e71	nop	
00004f4c 4ef90000e3c6	jmp	(extractJmpToName("JmpTo_loadZoneBlockMaps")).l
00004f52 4ef90000c3d0	jmp	(extractJmpToName("JmpTo_DeformBgLayer")).l
00004f58 4ef90003fcc4	jmp	(extractJmpToName("JmpTo_AniArt_Load")).l
00004f5e 4ef90000e300	jmp	(extractJmpToName("JmpTo_DrawInitialBG")).l
00004f64 0c380007fe16	cmpi.b	#7,(Current_Special_Stage).w
00004f6a 6506	blo.s	+
00004f6c 11fc0000fe16	move.b	#0,(Current_Special_Stage).w
00004f72 303c00ca	move.w	#SndID_SpecStageEntry,d0
00004f76 6100c3f8	bsr.w	PlaySound
00004f7a 103c00f9	move.b	#MusID_FadeOut,d0
00004f7e 6100c3de	bsr.w	PlayMusic
00004f82 6100d60e	bsr.w	Pal_FadeToWhite
00004f86 4a78ffd8	tst.w	(Two_player_mode).w
00004f8a 670c	beq.s	+
00004f8c 31fc0000ffd8	move.w	#0,(Two_player_mode).w
00004f92 50f8fe00	st.b	(SS_2p_Flag).w
00004f96 6004	bra.s	++
00004f98 51f8fe00	sf.b	(SS_2p_Flag).w
00004f9c 46fc2700	move	#$2700,sr
00004fa0 4df900c00004	lea	(VDP_control_port).l,a6
00004fa6 3cbc8b03	move.w	#$8B03,(a6)
00004faa 3cbc8004	move.w	#$8004,(a6)
00004fae 31fc8adff624	move.w	#$8ADF,(Hint_counter_reserve).w
00004fb4 3cbc8230	move.w	#$8200|(VRAM_SS_Plane_A_Name_Table1/$400),(a6)
00004fb8 3cbc8405	move.w	#$8400|(VRAM_SS_Plane_B_Name_Table/$2000),(a6)
00004fbc 3cbc8c08	move.w	#$8C08,(a6)
00004fc0 3cbc9003	move.w	#$9003,(a6)
00004fc4 3cbc8700	move.w	#$8700,(a6)
00004fc8 3cbc8d3f	move.w	#$8D00|(VRAM_Horiz_Scroll_Table/$400),(a6)
00004fcc 3cbc857c	move.w	#$8500|(VRAM_Sprite_Attribute_Table/$200),(a6)
00004fd0 3038f60c	move.w	(VDP_Reg1_val).w,d0
00004fd4 020000bf	andi.b	#$BF,d0
00004fd8 33c000c00004	move.w	d0,(VDP_control_port).l
00004fde 4bf900c00004	lea	(VDP_control_port).l,a5
00004fe4 3abc8f01	move.w	#$8F01,(a5)
00004fe8 2abc941f93ff	move.l	#(($9400|((((VRAM_SS_Plane_Table_Size)-1)&$FF00)>>8))<<16)|($9300|(((VRAM_SS_Plane_Table_Size)-1)&$FF)),(a5)
00004fee 3abc9780	move.w	#$9780,(a5)
00004ff2 2abc40000082	move.l	#vdpComm(VRAM_SS_Plane_A_Name_Table2,VRAM,DMA),(a5)
00004ff8 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
00005000 3215	move.w	(a5),d1
00005002 08010001	btst	#1,d1
00005006 66f8	bne.s	.loop
00005008 3abc8f02	move.w	#$8F02,(a5)
0000500c 4bf900c00004	lea	(VDP_control_port).l,a5
00005012 3abc8f01	move.w	#$8F01,(a5)
00005016 2abc941f93ff	move.l	#(($9400|((((VRAM_SS_Plane_Table_Size)-1)&$FF00)>>8))<<16)|($9300|(((VRAM_SS_Plane_Table_Size)-1)&$FF)),(a5)
0000501c 3abc9780	move.w	#$9780,(a5)
00005020 2abc40000083	move.l	#vdpComm(VRAM_SS_Plane_A_Name_Table1,VRAM,DMA),(a5)
00005026 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
0000502e 3215	move.w	(a5),d1
00005030 08010001	btst	#1,d1
00005034 66f8	bne.s	.loop
00005036 3abc8f02	move.w	#$8F02,(a5)
0000503a 4bf900c00004	lea	(VDP_control_port).l,a5
00005040 3abc8f01	move.w	#$8F01,(a5)
00005044 2abc941f93ff	move.l	#(($9400|((((VRAM_SS_Plane_Table_Size)-1)&$FF00)>>8))<<16)|($9300|(((VRAM_SS_Plane_Table_Size)-1)&$FF)),(a5)
0000504a 3abc9780	move.w	#$9780,(a5)
0000504e 2abc60000082	move.l	#vdpComm(VRAM_SS_Plane_B_Name_Table,VRAM,DMA),(a5)
00005054 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
0000505c 3215	move.w	(a5),d1
0000505e 08010001	btst	#1,d1
00005062 66f8	bne.s	.loop
00005064 3abc8f02	move.w	#$8F02,(a5)
00005068 4bf900c00004	lea	(VDP_control_port).l,a5
0000506e 3abc8f01	move.w	#$8F01,(a5)
00005072 2abc9403937f	move.l	#(($9400|((((VRAM_Horiz_Scroll_Table_Size)-1)&$FF00)>>8))<<16)|($9300|(((VRAM_Horiz_Scroll_Table_Size)-1)&$FF)),(a5)
00005078 3abc9780	move.w	#$9780,(a5)
0000507c 2abc7c000083	move.l	#vdpComm(VRAM_Horiz_Scroll_Table,VRAM,DMA),(a5)
00005082 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
0000508a 3215	move.w	(a5),d1
0000508c 08010001	btst	#1,d1
00005090 66f8	bne.s	.loop
00005092 3abc8f02	move.w	#$8F02,(a5)
00005096 42b8f616	clr.l	(Vscroll_Factor).w
0000509a 42b8f61a	clr.l	(unk_F61A).w
0000509e 4238db23	clr.b	(SpecialStage_Started).w
000050a2 43f8f800	lea	(Sprite_Table).w,a1
000050a6 7000	moveq	#0,d0
000050a8 323c00a0	move.w	#bytesToLcnt((Sprite_Table_End+4-Sprite_Table) - ((Sprite_Table)&1)),d1
000050ac 22c0	move.l	d0,(a1)+
000050ae 51c9fffc	dbf	d1,.loop
000050b2 43f8e000	lea	(SS_Horiz_Scroll_Buf_1).w,a1
000050b6 7000	moveq	#0,d0
000050b8 323c0100	move.w	#bytesToLcnt((SS_Horiz_Scroll_Buf_1+HorizontalScrollBuffer.len+4-SS_Horiz_Scroll_Buf_1) - ((SS_Horiz_Scroll_Buf_1)&1)),d1
000050bc 22c0	move.l	d0,(a1)+
000050be 51c9fffc	dbf	d1,.loop
000050c2 43f8d000	lea	(SS_Shared_RAM).w,a1
000050c6 7000	moveq	#0,d0
000050c8 323c0300	move.w	#bytesToLcnt((SS_Shared_RAM_End+4-SS_Shared_RAM) - ((SS_Shared_RAM)&1)),d1
000050cc 22c0	move.l	d0,(a1)+
000050ce 51c9fffc	dbf	d1,.loop
000050d2 43f8ac00	lea	(Object_Display_Lists).w,a1
000050d6 7000	moveq	#0,d0
000050d8 323c00ff	move.w	#bytesToLcnt((Object_Display_Lists_End-Object_Display_Lists) - ((Object_Display_Lists)&1)),d1
000050dc 22c0	move.l	d0,(a1)+
000050de 51c9fffc	dbf	d1,.loop
000050e2 43f8b000	lea	(Object_RAM).w,a1
000050e6 7000	moveq	#0,d0
000050e8 323c07ff	move.w	#bytesToLcnt((Object_RAM_End-Object_RAM) - ((Object_RAM)&1)),d1
000050ec 22c0	move.l	d0,(a1)+
000050ee 51c9fffc	dbf	d1,.loop
000050f2 46fc2300	move	#$2300,sr
000050f6 4df900c00004	lea	(VDP_control_port).l,a6
000050fc 3cbc8f02	move.w	#$8F02,(a6)
00005100 61001b9a	bsr.w	ssInitTableBuffers
00005104 61001be0	bsr.w	ssLdComprsdData
00005108 31fc0000db0a	move.w	#0,(SpecialStage_CurrentSegment).w
0000510e 703c	moveq	#PLCID_SpecialStage,d0
00005110 6100c678	bsr.w	RunPLC_ROM
00005114 4238f711	clr.b	(Level_started_flag).w
00005118 21fc00000000ee00	move.l	#0,(Camera_X_pos).w
00005120 21fc00000000ee04	move.l	#0,(Camera_Y_pos).w
00005128 21fc00000000eef0	move.l	#0,(Camera_X_pos_copy).w
00005130 21fc00000000eef4	move.l	#0,(Camera_Y_pos_copy).w
00005138 0c780001ff70	cmpi.w	#1,(Player_mode).w
0000513e 6e0c	bgt.s	+
00005140 11fc0009b000	move.b	#ObjID_SonicSS,(MainCharacter+id).w
00005146 4a78ff70	tst.w	(Player_mode).w
0000514a 6606	bne.s	++
00005158 11fc005fb0c0	move.b	#ObjID_StartBanner,(SpecialStageStartBanner+id).w
0000515e 11fc0087b100	move.b	#ObjID_SSNumberOfRings,(SpecialStageNumberOfRings+id).w
00005164 31fc0080f73e	move.w	#$80,(SS_Offset_X).w
0000516a 31fc0036f740	move.w	#$36,(SS_Offset_Y).w
00005170 61001be0	bsr.w	SSPlaneB_Background
00005174 61001c5e	bsr.w	SSDecompressPlayerArt
00005178 61002628	bsr.w	SSInitPalAndData
0000517c 21fc000c0000db12	move.l	#$C0000,(SS_New_Speed_Factor).w
00005184 4278f602	clr.w	(Ctrl_1_Logical).w
00005188 4278f66a	clr.w	(Ctrl_2_Logical).w
00005192 6100e1f0	bsr.w	WaitForVint
00005196 1038db0d	move.b	(SSTrack_drawing_index).w,d0
0000519a 66f0	bne.s	-
0000519c 61000466	bsr.w	SSTrack_Draw
000051a6 6100e1dc	bsr.w	WaitForVint
000051aa 61000458	bsr.w	SSTrack_Draw
000051ae 61000364	bsr.w	SSLoadCurrentPerspective
000051b2 61000380	bsr.w	SSObjectsManager
000051b6 1038db1f	move.b	(SSTrack_duration_timer).w,d0
000051ba 5340	subq.w	#1,d0
000051bc 66e2	bne.s	-
000051be 4eb90003561e	jsr	(Obj5A_CreateRingsToGoText).l
000051c4 61001c1e	bsr.w	SS_ScrollBG
000051c8 4eb900015f9c	jsr	(RunObjects).l
000051ce 4eb900016604	jsr	(BuildSprites).l
000051d4 6100c4b4	bsr.w	RunPLC_RAM
000051d8 11fc001af62a	move.b	#VintID_CtrlDMA,(Vint_routine).w
000051de 6100e1a4	bsr.w	WaitForVint
000051e2 303c0092	move.w	#MusID_SpecStage,d0
000051e6 6100c176	bsr.w	PlayMusic
000051ea 3038f60c	move.w	(VDP_Reg1_val).w,d0
000051ee 00000040	ori.b	#$40,d0
000051f2 33c000c00004	move.w	d0,(VDP_control_port).l
000051f8 6100d2ee	bsr.w	Pal_FadeFromWhite
00005200 31f8f604f602	move.w	(Ctrl_1).w,(Ctrl_1_Logical).w
00005206 31f8f606f66a	move.w	(Ctrl_2).w,(Ctrl_2_Logical).w
0000520c 0c380010f600	cmpi.b	#GameModeID_SpecialStage,(Game_Mode).w
00005212 66000206	bne.w	SpecialStage_Unpause
00005216 11fc000af62a	move.b	#VintID_S2SS,(Vint_routine).w
0000521c 6100e166	bsr.w	WaitForVint
00005220 610003e2	bsr.w	SSTrack_Draw
00005224 6100242a	bsr.w	SSSetGeometryOffsets
00005228 610002ea	bsr.w	SSLoadCurrentPerspective
0000522c 61000306	bsr.w	SSObjectsManager
00005230 61001bb2	bsr.w	SS_ScrollBG
00005234 4eb900015f9c	jsr	(RunObjects).l
0000523a 4eb900016604	jsr	(BuildSprites).l
00005240 6100c448	bsr.w	RunPLC_RAM
00005244 4a38db23	tst.b	(SpecialStage_Started).w
00005248 67b2	beq.s	-
0000524a 703d	moveq	#PLCID_SpecStageBombs,d0
0000524c 6100c3d0	bsr.w	LoadPLC
00005254 0c380010f600	cmpi.b	#GameModeID_SpecialStage,(Game_Mode).w
0000525a 660001be	bne.w	SpecialStage_Unpause
0000525e 11fc000af62a	move.b	#VintID_S2SS,(Vint_routine).w
00005264 6100e11e	bsr.w	WaitForVint
00005268 6100039a	bsr.w	SSTrack_Draw
0000526c 610023e2	bsr.w	SSSetGeometryOffsets
00005270 610002a2	bsr.w	SSLoadCurrentPerspective
00005274 610002be	bsr.w	SSObjectsManager
00005278 61001b6a	bsr.w	SS_ScrollBG
0000527c 610001bc	bsr.w	PalCycle_SS
00005280 4a38db87	tst.b	(SS_Pause_Only_flag).w
00005284 671a	beq.s	+
00005286 3038f604	move.w	(Ctrl_1).w,d0
0000528a 02408080	andi.w	#(button_start_mask<<8)|button_start_mask,d0
0000528e 31c0f602	move.w	d0,(Ctrl_1_Logical).w
00005292 3038f606	move.w	(Ctrl_2).w,d0
00005296 02408080	andi.w	#(button_start_mask<<8)|button_start_mask,d0
0000529a 31c0f66a	move.w	d0,(Ctrl_2_Logical).w
0000529e 600c	bra.s	++
000052a0 31f8f604f602	move.w	(Ctrl_1).w,(Ctrl_1_Logical).w
000052a6 31f8f606f66a	move.w	(Ctrl_2).w,(Ctrl_2_Logical).w
000052ac 4eb900015f9c	jsr	(RunObjects).l
000052b2 4a38db86	tst.b	(SS_Check_Rings_flag).w
000052b6 660c	bne.s	+
000052b8 4eb900016604	jsr	(BuildSprites).l
000052be 6100c3ca	bsr.w	RunPLC_RAM
000052c2 608c	bra.s	-
000052c4 02380007ffb1	andi.b	#7,(Emerald_count).w
000052ca 4a38fe00	tst.b	(SS_2p_Flag).w
000052ce 6712	beq.s	+
000052d0 41f8ffa0	lea	(SS2p_RingBuffer).w,a0
000052d4 3018	move.w	(a0)+,d0
000052d6 d058	add.w	(a0)+,d0
000052d8 d058	add.w	(a0)+,d0
000052da d058	add.w	(a0)+,d0
000052dc d058	add.w	(a0)+,d0
000052de d058	add.w	(a0)+,d0
000052e0 6008	bra.s	++
000052e2 3038fe20	move.w	(Ring_count).w,d0
000052e6 d078fed0	add.w	(Ring_count_2P).w,d0
000052ea b078db9a	cmp.w	(SS_Perfect_rings_left).w,d0
000052ee 6604	bne.s	+
000052f0 50f8ff42	st.b	(Perfect_rings_flag).w
000052f4 6100d29c	bsr.w	Pal_FadeToWhite
000052f8 4a78ff8a	tst.w	(Two_player_mode_copy).w
000052fc 6600010e	bne.w	loc_540C
00005300 46fc2700	move	#$2700,sr
00005304 4df900c00004	lea	(VDP_control_port).l,a6
0000530a 3cbc8230	move.w	#$8200|(VRAM_Menu_Plane_A_Name_Table/$400),(a6)
0000530e 3cbc8407	move.w	#$8400|(VRAM_Menu_Plane_B_Name_Table/$2000),(a6)
00005312 3cbc9001	move.w	#$9001,(a6)
00005316 3cbc8c81	move.w	#$8C81,(a6)
0000531a 6100beec	bsr.w	ClearScreen
00005322 4278dc00	clr.w	(VDP_Command_Buffer).w
00005326 21fcffffdc00dcfc	move.l	#VDP_Command_Buffer,(VDP_Command_Buffer_Slot).w
0000532e 46fc2300	move	#$2300,sr
00005332 7027	moveq	#PalID_Result,d0
00005334 6100d3f8	bsr.w	PalLoad_Now
00005338 7000	moveq	#PLCID_Std1,d0
0000533a 6100c314	bsr.w	LoadPLC2
0000533e 203c40400000	move.l	#vdpComm(tiles_to_bytes(ArtTile_VRAM_Start+2),VRAM,WRITE),d0
00005344 41fa24dc	lea	SpecialStage_ResultsLetters(pc),a0
0000534c 23fc7200000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_SpecialStageResults),VRAM,WRITE),(VDP_control_port).l
00005356 41f90007eb58	lea	(ArtNem_SpecialStageResults).l,a0
0000535c 6100c180	bsr.w	NemDec
00005360 3038ff70	move.w	(Player_mode).w,d0
00005364 670e	beq.s	++
00005366 5340	subq.w	#1,d0
00005368 6706	beq.s	+
0000536a 4278fe20	clr.w	(Ring_count).w
0000536e 6004	bra.s	++
00005370 4278fed0	clr.w	(Ring_count_2P).w
00005374 31f8fe20f7d2	move.w	(Ring_count).w,(Bonus_Countdown_1).w
0000537a 31f8fed0f7d4	move.w	(Ring_count_2P).w,(Bonus_Countdown_2).w
00005380 4278ff8e	clr.w	(Total_Bonus_Countdown).w
00005384 4a38ffb0	tst.b	(Got_Emerald).w
00005388 6706	beq.s	+
0000538a 31fc03e8ff8e	move.w	#1000,(Total_Bonus_Countdown).w
00005390 11fc0001fe1f	move.b	#1,(Update_HUD_score).w
00005396 11fc0001f7d6	move.b	#1,(Update_Bonus_score).w
0000539c 303c009a	move.w	#MusID_EndLevel,d0
000053a0 4eb900001370	jsr	(PlaySound).l
000053a6 43f8ac00	lea	(Object_Display_Lists).w,a1
000053aa 7000	moveq	#0,d0
000053ac 323c00ff	move.w	#bytesToLcnt((Object_Display_Lists_End-Object_Display_Lists) - ((Object_Display_Lists)&1)),d1
000053b0 22c0	move.l	d0,(a1)+
000053b2 51c9fffc	dbf	d1,.loop
000053b6 43f8b000	lea	(Object_RAM).w,a1
000053ba 7000	moveq	#0,d0
000053bc 323c07ff	move.w	#bytesToLcnt((Object_RAM_End-Object_RAM) - ((Object_RAM)&1)),d1
000053c0 22c0	move.l	d0,(a1)+
000053c2 51c9fffc	dbf	d1,.loop
000053c6 11fc006fb800	move.b	#ObjID_SSResults,(SpecialStageResults+id).w
000053cc 11fc0008f62a	move.b	#VintID_Level,(Vint_routine).w
000053d2 6100dfb0	bsr.w	WaitForVint
000053d6 4eb900015f9c	jsr	(RunObjects).l
000053dc 4eb900016604	jsr	(BuildSprites).l
000053e2 6100c2a6	bsr.w	RunPLC_RAM
000053e6 4a78fe02	tst.w	(Level_Inactive_flag).w
000053ea 67e0	beq.s	-
000053ec 4ab8f680	tst.l	(Plc_Buffer).w
000053f0 66da	bne.s	-
000053f2 303c00ca	move.w	#SndID_SpecStageEntry,d0
000053f6 6100bf78	bsr.w	PlaySound
000053fa 6100d196	bsr.w	Pal_FadeToWhite
000053fe 4a78ff8a	tst.w	(Two_player_mode_copy).w
00005402 6608	bne.s	loc_540C
00005404 11fc000cf600	move.b	#GameModeID_Level,(Game_Mode).w
0000540a 4e75	rts	
0000540c 31fc0003ff10	move.w	#VsRSID_SS,(Results_Screen_2P).w
00005412 11fc0018f600	move.b	#GameModeID_2PResults,(Game_Mode).w
00005418 4e75	rts	
0000541a 11fc00ffffe0	move.b	#MusID_Unpause,(Sound_Queue.Music0).w
00005420 11fc0008f62a	move.b	#VintID_Level,(Vint_routine).w
00005426 6000df5c	bra.w	WaitForVint
0000543a 1038fe0f	move.b	(Vint_runcount+3).w,d0
0000543e 02000003	andi.b	#3,d0
00005442 662c	bne.s	+
00005444 1038db9e	move.b	(SS_Star_color_1).w,d0
0000544e 02400007	andi.w	#7,d0
00005452 d040	add.w	d0,d0
00005454 31fb00d4fb1c	move.w	Pal_SpecialStageStars(pc,d0.w),(Normal_palette+$1C).w
0000545a 1038db9f	move.b	(SS_Star_color_2).w,d0
00005464 02400007	andi.w	#7,d0
00005468 d040	add.w	d0,d0
0000546a 31fb00befb1e	move.w	Pal_SpecialStageStars(pc,d0.w),(Normal_palette+$1E).w
00005470 0c380006fe16	cmpi.b	#6,(Current_Special_Stage).w
00005476 660a	bne.s	+
00005478 0c380003fe17	cmpi.b	#3,(Current_Special_Act).w
0000547e 6700005c	beq.w	SSCheckpoint_rainbow
00005482 4a38db98	tst.b	(SS_Checkpoint_Rainbow_flag).w
00005486 6732	beq.s	+
00005488 1038fe0f	move.b	(Vint_runcount+3).w,d0
0000548c 02000007	andi.b	#7,d0
00005490 6628	bne.s	+
00005492 1038db99	move.b	(SS_Rainbow_palette).w,d0
0000549c 02000003	andi.b	#3,d0
000054a0 d040	add.w	d0,d0
000054a2 3200	move.w	d0,d1
000054a4 d040	add.w	d0,d0
000054a6 d041	add.w	d1,d0
000054a8 31fb001afb76	move.w	word_54C4(pc,d0.w),(Normal_palette_line4+$16).w
000054ae 31fb0016fb78	move.w	word_54C6(pc,d0.w),(Normal_palette_line4+$18).w
000054b4 31fb0012fb7a	move.w	word_54C8(pc,d0.w),(Normal_palette_line4+$1A).w
000054ba 4e75	rts	
000054dc 4a38db87	tst.b	(SS_Pause_Only_flag).w
000054e0 67a0	beq.s	-
000054e2 7000	moveq	#0,d0
000054e4 1038fe0f	move.b	(Vint_runcount+3).w,d0
000054e8 02000001	andi.b	#1,d0
000054ec 6600ff94	bne.w	-
000054f0 3438fe20	move.w	(Ring_count).w,d2
000054f4 d478fed0	add.w	(Ring_count_2P).w,d2
000054f8 b478db8c	cmp.w	(SS_Ring_Requirement).w,d2
000054fc 6d00ff84	blt.w	-
00005500 41f8fb02	lea	(Normal_palette+2).w,a0
00005504 2248	movea.l	a0,a1
00005506 3018	move.w	(a0)+,d0
00005508 720b	moveq	#$B,d1
0000550c 51c9fffc	dbf	d1,-
00005510 3280	move.w	d0,(a1)
00005512 4e75	rts	
00005514 0c380004db0d	cmpi.b	#4,(SSTrack_drawing_index).w
0000551a 6616	bne.s	+
0000551c 207cffff6a60	movea.l	#SSRAM_MiscKoz_SpecialPerspective,a0
00005522 7000	moveq	#0,d0
00005524 1038db10	move.b	(SSTrack_mapping_frame).w,d0
00005528 d040	add.w	d0,d0
0000552a d0f00000	adda.w	(a0,d0.w),a0
0000552e 21c8db82	move.l	a0,(SS_CurrentPerspective).w
00005534 0c380004db0d	cmpi.b	#4,(SSTrack_drawing_index).w
0000553a 660000a0	bne.w	return_55DC
0000553e 7000	moveq	#0,d0
00005540 1038db0a	move.b	(SpecialStage_CurrentSegment).w,d0
00005544 b038db4c	cmp.b	(SpecialStage_LastSegment2).w,d0
00005548 67000092	beq.w	return_55DC
0000554c 11c0db4c	move.b	d0,(SpecialStage_LastSegment2).w
00005550 2278db8e	movea.l	(SS_CurrentLevelLayout).w,a1
00005554 16310000	move.b	(a1,d0.w),d3
00005558 0243007f	andi.w	#$7F,d3
0000555c 41f9000055fe	lea	(Ani_SSTrack_Len).l,a0
00005562 16303000	move.b	(a0,d3.w),d3
00005566 d643	add.w	d3,d3
00005568 d643	add.w	d3,d3
0000556a 2078db88	movea.l	(SS_CurrentLevelObjectLocations).w,a0
0000556e 61001a1e	bsr.w	SSAllocateObject
00005572 6668	bne.s	return_55DC
00005574 7000	moveq	#0,d0
00005576 1018	move.b	(a0)+,d0
00005578 6b38	bmi.s	++
0000557a 1200	move.b	d0,d1
0000557c 02010040	andi.b	#$40,d1
00005580 6618	bne.s	+
00005582 5278db9a	addq.w	#1,(SS_Perfect_rings_left).w
00005586 12bc0060	move.b	#ObjID_SSRing,id(a1)
0000558a d040	add.w	d0,d0
0000558c d040	add.w	d0,d0
0000558e d043	add.w	d3,d0
00005590 33400030	move.w	d0,objoff_30(a1)
00005594 13580026	move.b	(a0)+,angle(a1)
00005598 60d4	bra.s	-
0000559a 0240003f	andi.w	#$3F,d0
0000559e 12bc0061	move.b	#ObjID_SSBomb,id(a1)
000055a2 d040	add.w	d0,d0
000055a4 d040	add.w	d0,d0
000055a6 d043	add.w	d3,d0
000055a8 33400030	move.w	d0,objoff_30(a1)
000055ac 13580026	move.b	(a0)+,angle(a1)
000055b0 60bc	bra.s	-
000055b2 21c8db88	move.l	a0,(SS_CurrentLevelObjectLocations).w
000055b6 5200	addq.b	#1,d0
000055b8 6722	beq.s	return_55DC
000055ba 5200	addq.b	#1,d0
000055bc 671a	beq.s	++
000055be 5200	addq.b	#1,d0
000055c0 670a	beq.s	+
000055c2 50f8db95	st.b	(SS_NoCheckpoint_flag).w
000055c6 51f8dba0	sf.b	(SS_NoCheckpointMsg_flag).w
000055ca 600c	bra.s	++
000055cc 4a38fe00	tst.b	(SS_2p_Flag).w
000055d0 6606	bne.s	+
000055d2 12bc0059	move.b	#ObjID_SSEmerald,id(a1)
000055d6 4e75	rts	
000055d8 12bc005a	move.b	#ObjID_SSMessage,id(a1)
000055dc 4e75	rts	
00005604 7000	moveq	#0,d0
00005606 1038db0d	move.b	(SSTrack_drawing_index).w,d0
0000560a 0c000004	cmpi.b	#4,d0
0000560e 6c0015fa	bge.w	SSTrackSetOrientation
00005612 d040	add.w	d0,d0
00005614 d040	add.w	d0,d0
00005616 660000ba	bne.w	SSTrack_BeginDraw
0000561a 21f8db2cdb28	move.l	(SSTrack_last_mappings).w,(SSTrack_last_mappings_copy).w
00005620 11f8db10db39	move.b	(SSTrack_mapping_frame).w,(SSTrack_last_mapping_frame).w
00005626 7200	moveq	#0,d1
00005628 7400	moveq	#0,d2
0000562a 7600	moveq	#0,d3
0000562c 7800	moveq	#0,d4
0000562e 1238db0a	move.b	(SpecialStage_CurrentSegment).w,d1
00005632 1438db0b	move.b	(SSTrack_anim_frame).w,d2
00005636 2278db8e	movea.l	(SS_CurrentLevelLayout).w,a1
0000563a 16311000	move.b	(a1,d1.w),d3
0000563e 0203007f	andi.b	#$7F,d3
00005642 11c3db08	move.b	d3,(SSTrack_anim).w
00005646 3203	move.w	d3,d1
00005648 d643	add.w	d3,d3
0000564a 43f9000063dc	lea	(Ani_SpecialStageTrack).l,a1
00005650 d2f13000	adda.w	(a1,d3.w),a1
00005654 d2c2	adda.w	d2,a1
00005656 7800	moveq	#0,d4
00005658 1811	move.b	(a1),d4
0000565a 11c4db10	move.b	d4,(SSTrack_mapping_frame).w
0000565e e54c	lsl.w	#2,d4
00005660 43f90000643e	lea	(Map_SpecialStageTrack).l,a1
00005666 20714000	movea.l	(a1,d4.w),a0
0000566a 2248	movea.l	a0,a1
0000566c 7400	moveq	#0,d2
0000566e 1418	move.b	(a0)+,d2
00005670 1418	move.b	(a0)+,d2
00005672 1418	move.b	(a0)+,d2
00005674 e14a	lsl.w	#8,d2
00005676 1418	move.b	(a0)+,d2
00005678 5842	addq.w	#4,d2
0000567a d2c2	adda.w	d2,a1
0000567c 2449	movea.l	a1,a2
0000567e 7400	moveq	#0,d2
00005680 1419	move.b	(a1)+,d2
00005682 1419	move.b	(a1)+,d2
00005684 1419	move.b	(a1)+,d2
00005686 e14a	lsl.w	#8,d2
00005688 1419	move.b	(a1)+,d2
0000568a 5842	addq.w	#4,d2
0000568c d4c2	adda.w	d2,a2
0000568e 141a	move.b	(a2)+,d2
00005690 141a	move.b	(a2)+,d2
00005692 141a	move.b	(a2)+,d2
00005694 141a	move.b	(a2)+,d2
00005696 21c8db00	move.l	a0,(SSTrack_mappings_bitflags).w
0000569a 21c8db2c	move.l	a0,(SSTrack_last_mappings).w
0000569e 21c9db04	move.l	a1,(SSTrack_mappings_uncompressed).w
000056a2 21cadb3a	move.l	a2,(SSTrack_mappings_RLE).w
000056aa 14341000	move.b	(a4,d1.w),d2
000056ae 11f8db0bdb09	move.b	(SSTrack_anim_frame).w,(SSTrack_last_anim_frame).w
000056ba b438db0b	cmp.b	(SSTrack_anim_frame).w,d2
000056be 6612	bne.s	SSTrack_BeginDraw
000056c0 11fc0000db0b	move.b	#0,(SSTrack_anim_frame).w
000056c6 11f8db0adb22	move.b	(SpecialStage_CurrentSegment).w,(SpecialStage_LastSegment).w
000056d2 4a38db0c	tst.b	(SS_Alternate_PNT).w
000056d6 6704	beq.s	+
000056d8 06400010	addi.w	#$10,d0
000056e0 26730000	movea.l	(a3,d0.w),a3
000056e4 23cb00c00004	move.l	a3,(VDP_control_port).l
000056ea 4df900c00000	lea	(VDP_data_port).l,a6
000056f0 61001518	bsr.w	SSTrackSetOrientation
000056f4 2078db00	movea.l	(SSTrack_mappings_bitflags).w,a0
000056f8 2278db04	movea.l	(SSTrack_mappings_uncompressed).w,a1
000056fc 2478db3a	movea.l	(SSTrack_mappings_RLE).w,a2
00005700 47f8db3e	lea	(SSDrawRegBuffer).w,a3
00005704 4c9b00fc	movem.w	(a3)+,d2-d7
00005708 47f90000651e	lea	(SSPNT_UncLUT).l,a3
0000570e 49f9000069e6	lea	(SSPNT_RLELUT).l,a4
00005714 3a7cfff8	movea.w	#-8,a5
00005718 7000	moveq	#0,d0
0000571a 4a38db0e	tst.b	(SSTrack_Orientation).w
0000571e 6600066a	bne.w	SSTrackDrawLineFlipLoop
00005726 bafc0000	cmpa.w	#0,a5
0000572a 6700062c	beq.w	SSTrackDraw_return
0000572e 7200	moveq	#0,d1
00005730 5347	subq.w	#1,d7
00005732 6a04	bpl.s	+
00005734 1c18	move.b	(a0)+,d6
00005736 7e07	moveq	#7,d7
00005738 dc06	add.b	d6,d6
0000573a 644c	bcc.s	SSTrackDrawRLE
0000573c 5305	subq.b	#1,d5
0000573e 6a04	bpl.s	+
00005740 1819	move.b	(a1)+,d4
00005742 7a07	moveq	#7,d5
00005744 d804	add.b	d4,d4
00005746 6420	bcc.s	+
00005748 700a	moveq	#$A,d0
0000574a 9005	sub.b	d5,d0
0000574c 5700	subq.b	#3,d0
0000574e d040	add.w	d0,d0
00005750 303b0006	move.w	SSTrackDrawUnc_Read10LUT(pc,d0.w),d0
00005754 4efb0002	jmp	SSTrackDrawUnc_Read10LUT(pc,d0.w)
00005768 7006	moveq	#6,d0
0000576a 9005	sub.b	d5,d0
0000576c 5200	addq.b	#1,d0
0000576e d040	add.w	d0,d0
00005770 303b0006	move.w	SSTrackDrawUnc_Read6LUT(pc,d0.w),d0
00005774 4efb0002	jmp	SSTrackDrawUnc_Read6LUT(pc,d0.w)
00005788 5303	subq.b	#1,d3
0000578a 6a10	bpl.s	++
0000578c 141a	move.b	(a2)+,d2
0000578e 0c0200ff	cmpi.b	#-1,d2
00005792 6606	bne.s	+
00005794 7600	moveq	#0,d3
00005796 6000ff8a	bra.w	SSTrackDrawLineLoop
0000579a 7607	moveq	#7,d3
0000579c d402	add.b	d2,d2
0000579e 641e	bcc.s	+
000057a0 7007	moveq	#7,d0
000057a2 9003	sub.b	d3,d0
000057a4 d000	add.b	d0,d0
000057a6 303b0006	move.w	SSTrackDrawRLE_Read7LUT(pc,d0.w),d0
000057aa 4efb0002	jmp	SSTrackDrawRLE_Read7LUT(pc,d0.w)
000057be 7006	moveq	#6,d0
000057c0 9003	sub.b	d3,d0
000057c2 5200	addq.b	#1,d0
000057c4 d000	add.b	d0,d0
000057c6 303b0006	move.w	SSTrackDrawRLE_Read6LUT(pc,d0.w),d0
000057ca 4efb0002	jmp	SSTrackDrawRLE_Read6LUT(pc,d0.w)
000057de 7000	moveq	#0,d0
000057e0 1019	move.b	(a1)+,d0
000057e2 e548	lsl.w	#2,d0
000057e4 1819	move.b	(a1)+,d4
000057e6 e51c	rol.b	#2,d4
000057e8 1204	move.b	d4,d1
000057ea 02010003	andi.b	#3,d1
000057ee 8001	or.b	d1,d0
000057f0 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
000057f4 d040	add.w	d0,d0
000057f6 30330000	move.w	(a3,d0.w),d0
000057fa 00406000	ori.w	#palette_line_3,d0
000057fe 3c80	move.w	d0,(a6)
00005800 7a06	moveq	#6,d5
00005802 6000ff2a	bra.w	SSTrackDrawLoop_Inner
00005806 1004	move.b	d4,d0
00005808 e548	lsl.w	#2,d0
0000580a 02400200	andi.w	#$200,d0
0000580e 1219	move.b	(a1)+,d1
00005810 e349	lsl.w	#1,d1
00005812 8041	or.w	d1,d0
00005814 1819	move.b	(a1)+,d4
00005816 e31c	rol.b	#1,d4
00005818 1204	move.b	d4,d1
0000581a 02010001	andi.b	#1,d1
0000581e 8001	or.b	d1,d0
00005820 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
00005824 d040	add.w	d0,d0
00005826 30330000	move.w	(a3,d0.w),d0
0000582a 00406000	ori.w	#palette_line_3,d0
0000582e 3c80	move.w	d0,(a6)
00005830 7a07	moveq	#7,d5
00005832 6000fefa	bra.w	SSTrackDrawLoop_Inner
00005836 1004	move.b	d4,d0
00005838 e548	lsl.w	#2,d0
0000583a 02400300	andi.w	#$300,d0
0000583e 1019	move.b	(a1)+,d0
00005840 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
00005844 d040	add.w	d0,d0
00005846 30330000	move.w	(a3,d0.w),d0
0000584a 00406000	ori.w	#palette_line_3,d0
0000584e 3c80	move.w	d0,(a6)
00005850 7a00	moveq	#0,d5
00005852 6000feda	bra.w	SSTrackDrawLoop_Inner
00005856 1004	move.b	d4,d0
00005858 e548	lsl.w	#2,d0
0000585a 02400380	andi.w	#$380,d0
0000585e 1819	move.b	(a1)+,d4
00005860 e21c	ror.b	#1,d4
00005862 1204	move.b	d4,d1
00005864 0201007f	andi.b	#$7F,d1
00005868 8001	or.b	d1,d0
0000586a 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
0000586e d040	add.w	d0,d0
00005870 30330000	move.w	(a3,d0.w),d0
00005874 00406000	ori.w	#palette_line_3,d0
00005878 3c80	move.w	d0,(a6)
0000587a 7a01	moveq	#1,d5
0000587c 6000feb0	bra.w	SSTrackDrawLoop_Inner
00005880 1004	move.b	d4,d0
00005882 e548	lsl.w	#2,d0
00005884 024003c0	andi.w	#$3C0,d0
00005888 1819	move.b	(a1)+,d4
0000588a e41c	ror.b	#2,d4
0000588c 1204	move.b	d4,d1
0000588e 0201003f	andi.b	#$3F,d1
00005892 8001	or.b	d1,d0
00005894 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
00005898 d040	add.w	d0,d0
0000589a 30330000	move.w	(a3,d0.w),d0
0000589e 00406000	ori.w	#palette_line_3,d0
000058a2 3c80	move.w	d0,(a6)
000058a4 7a02	moveq	#2,d5
000058a6 6000fe86	bra.w	SSTrackDrawLoop_Inner
000058aa 1004	move.b	d4,d0
000058ac e548	lsl.w	#2,d0
000058ae 024003e0	andi.w	#$3E0,d0
000058b2 1819	move.b	(a1)+,d4
000058b4 e61c	ror.b	#3,d4
000058b6 1204	move.b	d4,d1
000058b8 0201001f	andi.b	#$1F,d1
000058bc 8001	or.b	d1,d0
000058be 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
000058c2 d040	add.w	d0,d0
000058c4 30330000	move.w	(a3,d0.w),d0
000058c8 00406000	ori.w	#palette_line_3,d0
000058cc 3c80	move.w	d0,(a6)
000058ce 7a03	moveq	#3,d5
000058d0 6000fe5c	bra.w	SSTrackDrawLoop_Inner
000058d4 1004	move.b	d4,d0
000058d6 e548	lsl.w	#2,d0
000058d8 024003f0	andi.w	#$3F0,d0
000058dc 1819	move.b	(a1)+,d4
000058de e81c	ror.b	#4,d4
000058e0 1204	move.b	d4,d1
000058e2 0201000f	andi.b	#$F,d1
000058e6 8001	or.b	d1,d0
000058e8 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
000058ec d040	add.w	d0,d0
000058ee 30330000	move.w	(a3,d0.w),d0
000058f2 00406000	ori.w	#palette_line_3,d0
000058f6 3c80	move.w	d0,(a6)
000058f8 7a04	moveq	#4,d5
000058fa 6000fe32	bra.w	SSTrackDrawLoop_Inner
000058fe 1004	move.b	d4,d0
00005900 e548	lsl.w	#2,d0
00005902 024003f8	andi.w	#$3F8,d0
00005906 1819	move.b	(a1)+,d4
00005908 e71c	rol.b	#3,d4
0000590a 1204	move.b	d4,d1
0000590c 02010007	andi.b	#7,d1
00005910 8001	or.b	d1,d0
00005912 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
00005916 d040	add.w	d0,d0
00005918 30330000	move.w	(a3,d0.w),d0
0000591c 00406000	ori.w	#palette_line_3,d0
00005920 3c80	move.w	d0,(a6)
00005922 7a05	moveq	#5,d5
00005924 6000fe08	bra.w	SSTrackDrawLoop_Inner
00005928 1819	move.b	(a1)+,d4
0000592a e41c	ror.b	#2,d4
0000592c 1004	move.b	d4,d0
0000592e 0240003f	andi.w	#$3F,d0
00005932 d040	add.w	d0,d0
00005934 30330000	move.w	(a3,d0.w),d0
00005938 00406000	ori.w	#palette_line_3,d0
0000593c 3c80	move.w	d0,(a6)
0000593e 7a02	moveq	#2,d5
00005940 6000fdec	bra.w	SSTrackDrawLoop_Inner
00005944 1004	move.b	d4,d0
00005946 e408	lsr.b	#2,d0
00005948 02400020	andi.w	#$20,d0
0000594c 1819	move.b	(a1)+,d4
0000594e e61c	ror.b	#3,d4
00005950 1204	move.b	d4,d1
00005952 0201001f	andi.b	#$1F,d1
00005956 8001	or.b	d1,d0
00005958 d040	add.w	d0,d0
0000595a 30330000	move.w	(a3,d0.w),d0
0000595e 00406000	ori.w	#palette_line_3,d0
00005962 3c80	move.w	d0,(a6)
00005964 7a03	moveq	#3,d5
00005966 6000fdc6	bra.w	SSTrackDrawLoop_Inner
0000596a 1004	move.b	d4,d0
0000596c e408	lsr.b	#2,d0
0000596e 02400030	andi.w	#$30,d0
00005972 1819	move.b	(a1)+,d4
00005974 e81c	ror.b	#4,d4
00005976 1204	move.b	d4,d1
00005978 0201000f	andi.b	#$F,d1
0000597c 8001	or.b	d1,d0
0000597e d040	add.w	d0,d0
00005980 30330000	move.w	(a3,d0.w),d0
00005984 00406000	ori.w	#palette_line_3,d0
00005988 3c80	move.w	d0,(a6)
0000598a 7a04	moveq	#4,d5
0000598c 6000fda0	bra.w	SSTrackDrawLoop_Inner
00005990 1004	move.b	d4,d0
00005992 e408	lsr.b	#2,d0
00005994 02400038	andi.w	#$38,d0
00005998 1819	move.b	(a1)+,d4
0000599a e71c	rol.b	#3,d4
0000599c 1204	move.b	d4,d1
0000599e 02010007	andi.b	#7,d1
000059a2 8001	or.b	d1,d0
000059a4 d040	add.w	d0,d0
000059a6 30330000	move.w	(a3,d0.w),d0
000059aa 00406000	ori.w	#palette_line_3,d0
000059ae 3c80	move.w	d0,(a6)
000059b0 7a05	moveq	#5,d5
000059b2 6000fd7a	bra.w	SSTrackDrawLoop_Inner
000059b6 1004	move.b	d4,d0
000059b8 e408	lsr.b	#2,d0
000059ba 0240003c	andi.w	#$3C,d0
000059be 1819	move.b	(a1)+,d4
000059c0 e51c	rol.b	#2,d4
000059c2 1204	move.b	d4,d1
000059c4 02010003	andi.b	#3,d1
000059c8 8001	or.b	d1,d0
000059ca d040	add.w	d0,d0
000059cc 30330000	move.w	(a3,d0.w),d0
000059d0 00406000	ori.w	#palette_line_3,d0
000059d4 3c80	move.w	d0,(a6)
000059d6 7a06	moveq	#6,d5
000059d8 6000fd54	bra.w	SSTrackDrawLoop_Inner
000059dc 1004	move.b	d4,d0
000059de e408	lsr.b	#2,d0
000059e0 0240003e	andi.w	#$3E,d0
000059e4 1819	move.b	(a1)+,d4
000059e6 e31c	rol.b	#1,d4
000059e8 1204	move.b	d4,d1
000059ea 02010001	andi.b	#1,d1
000059ee 8001	or.b	d1,d0
000059f0 d040	add.w	d0,d0
000059f2 30330000	move.w	(a3,d0.w),d0
000059f6 00406000	ori.w	#palette_line_3,d0
000059fa 3c80	move.w	d0,(a6)
000059fc 7a07	moveq	#7,d5
000059fe 6000fd2e	bra.w	SSTrackDrawLoop_Inner
00005a02 e40c	lsr.b	#2,d4
00005a04 0244003f	andi.w	#$3F,d4
00005a08 d844	add.w	d4,d4
00005a0a 38334000	move.w	(a3,d4.w),d4
00005a0e 00446000	ori.w	#palette_line_3,d4
00005a12 3c84	move.w	d4,(a6)
00005a14 7a00	moveq	#0,d5
00005a16 6000fd16	bra.w	SSTrackDrawLoop_Inner
00005a1a e41c	ror.b	#2,d4
00005a1c 1004	move.b	d4,d0
00005a1e 0240003f	andi.w	#$3F,d0
00005a22 d040	add.w	d0,d0
00005a24 30330000	move.w	(a3,d0.w),d0
00005a28 00406000	ori.w	#palette_line_3,d0
00005a2c 3c80	move.w	d0,(a6)
00005a2e 7a01	moveq	#1,d5
00005a30 6000fcfc	bra.w	SSTrackDrawLoop_Inner
00005a34 141a	move.b	(a2)+,d2
00005a36 e21a	ror.b	#1,d2
00005a38 1002	move.b	d2,d0
00005a3a 0240007f	andi.w	#$7F,d0
00005a3e 7601	moveq	#1,d3
00005a40 0c00007f	cmpi.b	#$7F,d0
00005a44 6700fcdc	beq.w	SSTrackDrawLineLoop
00005a48 06400040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d0
00005a4c d040	add.w	d0,d0
00005a4e d040	add.w	d0,d0
00005a50 32340000	move.w	(a4,d0.w),d1
00005a54 30340002	move.w	2(a4,d0.w),d0
00005a58 0041e000	ori.w	#palette_line_3|high_priority,d1
00005a5e 51c8fffc	dbf	d0,-
00005a62 6000fcca	bra.w	SSTrackDrawLoop_Inner
00005a66 1202	move.b	d2,d1
00005a68 e209	lsr.b	#1,d1
00005a6a 02010040	andi.b	#$40,d1
00005a6e 141a	move.b	(a2)+,d2
00005a70 e41a	ror.b	#2,d2
00005a72 1002	move.b	d2,d0
00005a74 0240003f	andi.w	#$3F,d0
00005a78 8001	or.b	d1,d0
00005a7a 7602	moveq	#2,d3
00005a7c 0c00007f	cmpi.b	#$7F,d0
00005a80 6700fca0	beq.w	SSTrackDrawLineLoop
00005a84 06400040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d0
00005a88 d040	add.w	d0,d0
00005a8a d040	add.w	d0,d0
00005a8c 32340000	move.w	(a4,d0.w),d1
00005a90 30340002	move.w	2(a4,d0.w),d0
00005a94 0041e000	ori.w	#palette_line_3|high_priority,d1
00005a9a 51c8fffc	dbf	d0,-
00005a9e 6000fc8e	bra.w	SSTrackDrawLoop_Inner
00005aa2 1202	move.b	d2,d1
00005aa4 e209	lsr.b	#1,d1
00005aa6 02010060	andi.b	#$60,d1
00005aaa 141a	move.b	(a2)+,d2
00005aac e61a	ror.b	#3,d2
00005aae 1002	move.b	d2,d0
00005ab0 0240001f	andi.w	#$1F,d0
00005ab4 8001	or.b	d1,d0
00005ab6 7603	moveq	#3,d3
00005ab8 0c00007f	cmpi.b	#$7F,d0
00005abc 6700fc64	beq.w	SSTrackDrawLineLoop
00005ac0 06400040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d0
00005ac4 d040	add.w	d0,d0
00005ac6 d040	add.w	d0,d0
00005ac8 32340000	move.w	(a4,d0.w),d1
00005acc 30340002	move.w	2(a4,d0.w),d0
00005ad0 0041e000	ori.w	#palette_line_3|high_priority,d1
00005ad6 51c8fffc	dbf	d0,-
00005ada 6000fc52	bra.w	SSTrackDrawLoop_Inner
00005ade 1202	move.b	d2,d1
00005ae0 e209	lsr.b	#1,d1
00005ae2 02010070	andi.b	#$70,d1
00005ae6 141a	move.b	(a2)+,d2
00005ae8 e81a	ror.b	#4,d2
00005aea 1002	move.b	d2,d0
00005aec 0240000f	andi.w	#$F,d0
00005af0 8001	or.b	d1,d0
00005af2 7604	moveq	#4,d3
00005af4 0c00007f	cmpi.b	#$7F,d0
00005af8 6700fc28	beq.w	SSTrackDrawLineLoop
00005afc 06400040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d0
00005b00 d040	add.w	d0,d0
00005b02 d040	add.w	d0,d0
00005b04 32340000	move.w	(a4,d0.w),d1
00005b08 30340002	move.w	2(a4,d0.w),d0
00005b0c 0041e000	ori.w	#palette_line_3|high_priority,d1
00005b12 51c8fffc	dbf	d0,-
00005b16 6000fc16	bra.w	SSTrackDrawLoop_Inner
00005b1a 1202	move.b	d2,d1
00005b1c e209	lsr.b	#1,d1
00005b1e 02010078	andi.b	#$78,d1
00005b22 141a	move.b	(a2)+,d2
00005b24 e71a	rol.b	#3,d2
00005b26 1002	move.b	d2,d0
00005b28 02400007	andi.w	#7,d0
00005b2c 8001	or.b	d1,d0
00005b2e 7605	moveq	#5,d3
00005b30 0c00007f	cmpi.b	#$7F,d0
00005b34 6700fbec	beq.w	SSTrackDrawLineLoop
00005b38 06400040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d0
00005b3c d040	add.w	d0,d0
00005b3e d040	add.w	d0,d0
00005b40 32340000	move.w	(a4,d0.w),d1
00005b44 30340002	move.w	2(a4,d0.w),d0
00005b48 0041e000	ori.w	#palette_line_3|high_priority,d1
00005b4e 51c8fffc	dbf	d0,-
00005b52 6000fbda	bra.w	SSTrackDrawLoop_Inner
00005b56 1202	move.b	d2,d1
00005b58 e209	lsr.b	#1,d1
00005b5a 0201007c	andi.b	#$7C,d1
00005b5e 141a	move.b	(a2)+,d2
00005b60 e51a	rol.b	#2,d2
00005b62 1002	move.b	d2,d0
00005b64 02400003	andi.w	#3,d0
00005b68 8001	or.b	d1,d0
00005b6a 7606	moveq	#6,d3
00005b6c 0c00007f	cmpi.b	#$7F,d0
00005b70 6700fbb0	beq.w	SSTrackDrawLineLoop
00005b74 06400040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d0
00005b78 d040	add.w	d0,d0
00005b7a d040	add.w	d0,d0
00005b7c 32340000	move.w	(a4,d0.w),d1
00005b80 30340002	move.w	2(a4,d0.w),d0
00005b84 0041e000	ori.w	#palette_line_3|high_priority,d1
00005b8a 51c8fffc	dbf	d0,-
00005b8e 6000fb9e	bra.w	SSTrackDrawLoop_Inner
00005b92 1202	move.b	d2,d1
00005b94 e209	lsr.b	#1,d1
00005b96 0201007e	andi.b	#$7E,d1
00005b9a 141a	move.b	(a2)+,d2
00005b9c e31a	rol.b	#1,d2
00005b9e 1002	move.b	d2,d0
00005ba0 02400001	andi.w	#1,d0
00005ba4 8001	or.b	d1,d0
00005ba6 7607	moveq	#7,d3
00005ba8 0c00007f	cmpi.b	#$7F,d0
00005bac 6700fb74	beq.w	SSTrackDrawLineLoop
00005bb0 06400040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d0
00005bb4 d040	add.w	d0,d0
00005bb6 d040	add.w	d0,d0
00005bb8 32340000	move.w	(a4,d0.w),d1
00005bbc 30340002	move.w	2(a4,d0.w),d0
00005bc0 0041e000	ori.w	#palette_line_3|high_priority,d1
00005bc6 51c8fffc	dbf	d0,-
00005bca 6000fb62	bra.w	SSTrackDrawLoop_Inner
00005bce e20a	lsr.b	#1,d2
00005bd0 0242007f	andi.w	#$7F,d2
00005bd4 7600	moveq	#0,d3
00005bd6 0c02007f	cmpi.b	#$7F,d2
00005bda 6700fb46	beq.w	SSTrackDrawLineLoop
00005bde 06420040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d2
00005be2 d442	add.w	d2,d2
00005be4 d442	add.w	d2,d2
00005be6 32342000	move.w	(a4,d2.w),d1
00005bea 30342002	move.w	2(a4,d2.w),d0
00005bee 0041e000	ori.w	#palette_line_3|high_priority,d1
00005bf4 51c8fffc	dbf	d0,-
00005bf8 6000fb34	bra.w	SSTrackDrawLoop_Inner
00005bfc 141a	move.b	(a2)+,d2
00005bfe e41a	ror.b	#2,d2
00005c00 1002	move.b	d2,d0
00005c02 0240003f	andi.w	#$3F,d0
00005c06 d040	add.w	d0,d0
00005c08 d040	add.w	d0,d0
00005c0a 7602	moveq	#2,d3
00005c0c 32340000	move.w	(a4,d0.w),d1
00005c10 30340002	move.w	2(a4,d0.w),d0
00005c14 0041e000	ori.w	#palette_line_3|high_priority,d1
00005c1a 51c8fffc	dbf	d0,-
00005c1e 6000fb0e	bra.w	SSTrackDrawLoop_Inner
00005c22 1002	move.b	d2,d0
00005c24 e408	lsr.b	#2,d0
00005c26 02400020	andi.w	#$20,d0
00005c2a 141a	move.b	(a2)+,d2
00005c2c e61a	ror.b	#3,d2
00005c2e 1202	move.b	d2,d1
00005c30 0201001f	andi.b	#$1F,d1
00005c34 8001	or.b	d1,d0
00005c36 7603	moveq	#3,d3
00005c38 d040	add.w	d0,d0
00005c3a d040	add.w	d0,d0
00005c3c 32340000	move.w	(a4,d0.w),d1
00005c40 30340002	move.w	2(a4,d0.w),d0
00005c44 0041e000	ori.w	#palette_line_3|high_priority,d1
00005c4a 51c8fffc	dbf	d0,-
00005c4e 6000fade	bra.w	SSTrackDrawLoop_Inner
00005c52 1002	move.b	d2,d0
00005c54 e408	lsr.b	#2,d0
00005c56 02400030	andi.w	#$30,d0
00005c5a 141a	move.b	(a2)+,d2
00005c5c e81a	ror.b	#4,d2
00005c5e 1202	move.b	d2,d1
00005c60 0201000f	andi.b	#$F,d1
00005c64 8001	or.b	d1,d0
00005c66 d040	add.w	d0,d0
00005c68 d040	add.w	d0,d0
00005c6a 7604	moveq	#4,d3
00005c6c 32340000	move.w	(a4,d0.w),d1
00005c70 30340002	move.w	2(a4,d0.w),d0
00005c74 0041e000	ori.w	#palette_line_3|high_priority,d1
00005c7a 51c8fffc	dbf	d0,-
00005c7e 6000faae	bra.w	SSTrackDrawLoop_Inner
00005c82 1002	move.b	d2,d0
00005c84 e408	lsr.b	#2,d0
00005c86 02400038	andi.w	#$38,d0
00005c8a 141a	move.b	(a2)+,d2
00005c8c e71a	rol.b	#3,d2
00005c8e 1202	move.b	d2,d1
00005c90 02010007	andi.b	#7,d1
00005c94 8001	or.b	d1,d0
00005c96 d040	add.w	d0,d0
00005c98 d040	add.w	d0,d0
00005c9a 7605	moveq	#5,d3
00005c9c 32340000	move.w	(a4,d0.w),d1
00005ca0 30340002	move.w	2(a4,d0.w),d0
00005ca4 0041e000	ori.w	#palette_line_3|high_priority,d1
00005caa 51c8fffc	dbf	d0,-
00005cae 6000fa7e	bra.w	SSTrackDrawLoop_Inner
00005cb2 1002	move.b	d2,d0
00005cb4 e408	lsr.b	#2,d0
00005cb6 0240003c	andi.w	#$3C,d0
00005cba 141a	move.b	(a2)+,d2
00005cbc e51a	rol.b	#2,d2
00005cbe 1202	move.b	d2,d1
00005cc0 02010003	andi.b	#3,d1
00005cc4 8001	or.b	d1,d0
00005cc6 d040	add.w	d0,d0
00005cc8 d040	add.w	d0,d0
00005cca 7606	moveq	#6,d3
00005ccc 32340000	move.w	(a4,d0.w),d1
00005cd0 30340002	move.w	2(a4,d0.w),d0
00005cd4 0041e000	ori.w	#palette_line_3|high_priority,d1
00005cda 51c8fffc	dbf	d0,-
00005cde 6000fa4e	bra.w	SSTrackDrawLoop_Inner
00005ce2 1002	move.b	d2,d0
00005ce4 e408	lsr.b	#2,d0
00005ce6 0240003e	andi.w	#$3E,d0
00005cea 141a	move.b	(a2)+,d2
00005cec e31a	rol.b	#1,d2
00005cee 1202	move.b	d2,d1
00005cf0 02010001	andi.b	#1,d1
00005cf4 8001	or.b	d1,d0
00005cf6 d040	add.w	d0,d0
00005cf8 d040	add.w	d0,d0
00005cfa 7607	moveq	#7,d3
00005cfc 32340000	move.w	(a4,d0.w),d1
00005d00 30340002	move.w	2(a4,d0.w),d0
00005d04 0041e000	ori.w	#palette_line_3|high_priority,d1
00005d0a 51c8fffc	dbf	d0,-
00005d0e 6000fa1e	bra.w	SSTrackDrawLoop_Inner
00005d12 e40a	lsr.b	#2,d2
00005d14 0242003f	andi.w	#$3F,d2
00005d18 d442	add.w	d2,d2
00005d1a d442	add.w	d2,d2
00005d1c 7600	moveq	#0,d3
00005d1e 32342000	move.w	(a4,d2.w),d1
00005d22 30342002	move.w	2(a4,d2.w),d0
00005d26 0041e000	ori.w	#palette_line_3|high_priority,d1
00005d2c 51c8fffc	dbf	d0,-
00005d30 6000f9fc	bra.w	SSTrackDrawLoop_Inner
00005d34 e41a	ror.b	#2,d2
00005d36 1002	move.b	d2,d0
00005d38 0240003f	andi.w	#$3F,d0
00005d3c d040	add.w	d0,d0
00005d3e d040	add.w	d0,d0
00005d40 7601	moveq	#1,d3
00005d42 32340000	move.w	(a4,d0.w),d1
00005d46 30340002	move.w	2(a4,d0.w),d0
00005d4a 0041e000	ori.w	#palette_line_3|high_priority,d1
00005d50 51c8fffc	dbf	d0,-
00005d54 6000f9d8	bra.w	SSTrackDrawLoop_Inner
00005d58 0c380003db0d	cmpi.b	#3,(SSTrack_drawing_index).w
00005d5e 6716	beq.s	+
00005d60 21c8db00	move.l	a0,(SSTrack_mappings_bitflags).w
00005d64 21c9db04	move.l	a1,(SSTrack_mappings_uncompressed).w
00005d68 21cadb3a	move.l	a2,(SSTrack_mappings_RLE).w
00005d6c 47f8db4a	lea	(SSDrawRegBuffer_End).w,a3
00005d70 48a33f00	movem.w	d2-d7,-(a3)
00005d74 4e75	rts	
00005d76 45f8db3e	lea	(SSDrawRegBuffer).w,a2
00005d7a 7000	moveq	#0,d0
00005d7c 34c0	move.w	d0,(a2)+
00005d7e 34c0	move.w	d0,(a2)+
00005d80 34c0	move.w	d0,(a2)+
00005d82 34c0	move.w	d0,(a2)+
00005d84 34c0	move.w	d0,(a2)+
00005d86 34c0	move.w	d0,(a2)+
00005d88 4e75	rts	
00005d8e bafc0000	cmpa.w	#0,a5
00005d92 6700ffc4	beq.w	SSTrackDraw_return
00005d96 4df8d000	lea	(PNT_Buffer).w,a6
00005d9a 4840	swap	d0
00005d9c 06400100	addi.w	#$100,d0
00005da0 02400f00	andi.w	#$F00,d0
00005da4 dcc0	adda.w	d0,a6
00005da6 4840	swap	d0
00005da8 7200	moveq	#0,d1
00005daa 5347	subq.w	#1,d7
00005dac 6a04	bpl.s	+
00005dae 1c18	move.b	(a0)+,d6
00005db0 7e07	moveq	#7,d7
00005db2 dc06	add.b	d6,d6
00005db4 6450	bcc.s	SSTrackDrawFlipRLE
00005db6 5305	subq.b	#1,d5
00005db8 6a04	bpl.s	+
00005dba 1819	move.b	(a1)+,d4
00005dbc 7a07	moveq	#7,d5
00005dbe d804	add.b	d4,d4
00005dc0 6422	bcc.s	+
00005dc2 303c000a	move.w	#$A,d0
00005dc6 9005	sub.b	d5,d0
00005dc8 5700	subq.b	#3,d0
00005dca d040	add.w	d0,d0
00005dcc 303b0006	move.w	SSTrackDrawFlipUnc_Read10LUT(pc,d0.w),d0
00005dd0 4efb0002	jmp	SSTrackDrawFlipUnc_Read10LUT(pc,d0.w)
00005de4 303c0006	move.w	#6,d0
00005de8 9005	sub.b	d5,d0
00005dea 5200	addq.b	#1,d0
00005dec d040	add.w	d0,d0
00005dee 303b0006	move.w	SSTrackDrawFlipUnc_Read6LUT(pc,d0.w),d0
00005df2 4efb0002	jmp	SSTrackDrawFlipUnc_Read6LUT(pc,d0.w)
00005e06 5303	subq.b	#1,d3
00005e08 6a10	bpl.s	++
00005e0a 141a	move.b	(a2)+,d2
00005e0c 0c0200ff	cmpi.b	#-1,d2
00005e10 6606	bne.s	+
00005e12 7600	moveq	#0,d3
00005e14 6000ff74	bra.w	SSTrackDrawLineFlipLoop
00005e18 7607	moveq	#7,d3
00005e1a d402	add.b	d2,d2
00005e1c 6420	bcc.s	+
00005e1e 303c0007	move.w	#7,d0
00005e22 9003	sub.b	d3,d0
00005e24 d000	add.b	d0,d0
00005e26 303b0006	move.w	SSTrackDrawFlipRLE_Read7LUT(pc,d0.w),d0
00005e2a 4efb0002	jmp	SSTrackDrawFlipRLE_Read7LUT(pc,d0.w)
00005e3e 303c0006	move.w	#6,d0
00005e42 9003	sub.b	d3,d0
00005e44 5200	addq.b	#1,d0
00005e46 d000	add.b	d0,d0
00005e48 303b0006	move.w	SSTrackDrawFlipRLE_Read6LUT(pc,d0.w),d0
00005e4c 4efb0002	jmp	SSTrackDrawFlipRLE_Read6LUT(pc,d0.w)
00005e60 303c0000	move.w	#0,d0
00005e64 1019	move.b	(a1)+,d0
00005e66 e548	lsl.w	#2,d0
00005e68 1819	move.b	(a1)+,d4
00005e6a e51c	rol.b	#2,d4
00005e6c 1204	move.b	d4,d1
00005e6e 02010003	andi.b	#3,d1
00005e72 8001	or.b	d1,d0
00005e74 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
00005e78 d040	add.w	d0,d0
00005e7a 30330000	move.w	(a3,d0.w),d0
00005e7e 0a406800	eori.w	#flip_x|palette_line_3,d0
00005e82 3d00	move.w	d0,-(a6)
00005e84 7a06	moveq	#6,d5
00005e86 6000ff20	bra.w	SSTrackDrawFlipLoop_Inner
00005e8a 1004	move.b	d4,d0
00005e8c e548	lsl.w	#2,d0
00005e8e 02400200	andi.w	#$200,d0
00005e92 1219	move.b	(a1)+,d1
00005e94 e349	lsl.w	#1,d1
00005e96 8041	or.w	d1,d0
00005e98 1819	move.b	(a1)+,d4
00005e9a e31c	rol.b	#1,d4
00005e9c 1204	move.b	d4,d1
00005e9e 02010001	andi.b	#1,d1
00005ea2 8001	or.b	d1,d0
00005ea4 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
00005ea8 d040	add.w	d0,d0
00005eaa 30330000	move.w	(a3,d0.w),d0
00005eae 0a406800	eori.w	#flip_x|palette_line_3,d0
00005eb2 3d00	move.w	d0,-(a6)
00005eb4 7a07	moveq	#7,d5
00005eb6 6000fef0	bra.w	SSTrackDrawFlipLoop_Inner
00005eba 1004	move.b	d4,d0
00005ebc e548	lsl.w	#2,d0
00005ebe 02400300	andi.w	#$300,d0
00005ec2 1019	move.b	(a1)+,d0
00005ec4 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
00005ec8 d040	add.w	d0,d0
00005eca 30330000	move.w	(a3,d0.w),d0
00005ece 0a406800	eori.w	#flip_x|palette_line_3,d0
00005ed2 3d00	move.w	d0,-(a6)
00005ed4 7a00	moveq	#0,d5
00005ed6 6000fed0	bra.w	SSTrackDrawFlipLoop_Inner
00005eda 1004	move.b	d4,d0
00005edc e548	lsl.w	#2,d0
00005ede 02400380	andi.w	#$380,d0
00005ee2 1819	move.b	(a1)+,d4
00005ee4 e21c	ror.b	#1,d4
00005ee6 1204	move.b	d4,d1
00005ee8 0201007f	andi.b	#$7F,d1
00005eec 8001	or.b	d1,d0
00005eee 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
00005ef2 d040	add.w	d0,d0
00005ef4 30330000	move.w	(a3,d0.w),d0
00005ef8 0a406800	eori.w	#flip_x|palette_line_3,d0
00005efc 3d00	move.w	d0,-(a6)
00005efe 7a01	moveq	#1,d5
00005f00 6000fea6	bra.w	SSTrackDrawFlipLoop_Inner
00005f04 1004	move.b	d4,d0
00005f06 e548	lsl.w	#2,d0
00005f08 024003c0	andi.w	#$3C0,d0
00005f0c 1819	move.b	(a1)+,d4
00005f0e e41c	ror.b	#2,d4
00005f10 1204	move.b	d4,d1
00005f12 0201003f	andi.b	#$3F,d1
00005f16 8001	or.b	d1,d0
00005f18 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
00005f1c d040	add.w	d0,d0
00005f1e 30330000	move.w	(a3,d0.w),d0
00005f22 0a406800	eori.w	#flip_x|palette_line_3,d0
00005f26 3d00	move.w	d0,-(a6)
00005f28 7a02	moveq	#2,d5
00005f2a 6000fe7c	bra.w	SSTrackDrawFlipLoop_Inner
00005f2e 1004	move.b	d4,d0
00005f30 e548	lsl.w	#2,d0
00005f32 024003e0	andi.w	#$3E0,d0
00005f36 1819	move.b	(a1)+,d4
00005f38 e61c	ror.b	#3,d4
00005f3a 1204	move.b	d4,d1
00005f3c 0201001f	andi.b	#$1F,d1
00005f40 8001	or.b	d1,d0
00005f42 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
00005f46 d040	add.w	d0,d0
00005f48 30330000	move.w	(a3,d0.w),d0
00005f4c 0a406800	eori.w	#flip_x|palette_line_3,d0
00005f50 3d00	move.w	d0,-(a6)
00005f52 7a03	moveq	#3,d5
00005f54 6000fe52	bra.w	SSTrackDrawFlipLoop_Inner
00005f58 1004	move.b	d4,d0
00005f5a e548	lsl.w	#2,d0
00005f5c 024003f0	andi.w	#$3F0,d0
00005f60 1819	move.b	(a1)+,d4
00005f62 e81c	ror.b	#4,d4
00005f64 1204	move.b	d4,d1
00005f66 0201000f	andi.b	#$F,d1
00005f6a 8001	or.b	d1,d0
00005f6c 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
00005f70 d040	add.w	d0,d0
00005f72 30330000	move.w	(a3,d0.w),d0
00005f76 0a406800	eori.w	#flip_x|palette_line_3,d0
00005f7a 3d00	move.w	d0,-(a6)
00005f7c 7a04	moveq	#4,d5
00005f7e 6000fe28	bra.w	SSTrackDrawFlipLoop_Inner
00005f82 1004	move.b	d4,d0
00005f84 e548	lsl.w	#2,d0
00005f86 024003f8	andi.w	#$3F8,d0
00005f8a 1819	move.b	(a1)+,d4
00005f8c e71c	rol.b	#3,d4
00005f8e 1204	move.b	d4,d1
00005f90 02010007	andi.b	#7,d1
00005f94 8001	or.b	d1,d0
00005f96 06400040	addi.w	#(SSPNT_UncLUT_Part2-SSPNT_UncLUT)/2,d0
00005f9a d040	add.w	d0,d0
00005f9c 30330000	move.w	(a3,d0.w),d0
00005fa0 0a406800	eori.w	#flip_x|palette_line_3,d0
00005fa4 3d00	move.w	d0,-(a6)
00005fa6 7a05	moveq	#5,d5
00005fa8 6000fdfe	bra.w	SSTrackDrawFlipLoop_Inner
00005fac 1819	move.b	(a1)+,d4
00005fae e41c	ror.b	#2,d4
00005fb0 1004	move.b	d4,d0
00005fb2 0240003f	andi.w	#$3F,d0
00005fb6 d040	add.w	d0,d0
00005fb8 30330000	move.w	(a3,d0.w),d0
00005fbc 0a406800	eori.w	#flip_x|palette_line_3,d0
00005fc0 3d00	move.w	d0,-(a6)
00005fc2 7a02	moveq	#2,d5
00005fc4 6000fde2	bra.w	SSTrackDrawFlipLoop_Inner
00005fc8 1004	move.b	d4,d0
00005fca e408	lsr.b	#2,d0
00005fcc 02400020	andi.w	#$20,d0
00005fd0 1819	move.b	(a1)+,d4
00005fd2 e61c	ror.b	#3,d4
00005fd4 1204	move.b	d4,d1
00005fd6 0201001f	andi.b	#$1F,d1
00005fda 8001	or.b	d1,d0
00005fdc d040	add.w	d0,d0
00005fde 30330000	move.w	(a3,d0.w),d0
00005fe2 0a406800	eori.w	#flip_x|palette_line_3,d0
00005fe6 3d00	move.w	d0,-(a6)
00005fe8 7a03	moveq	#3,d5
00005fea 6000fdbc	bra.w	SSTrackDrawFlipLoop_Inner
00005fee 1004	move.b	d4,d0
00005ff0 e408	lsr.b	#2,d0
00005ff2 02400030	andi.w	#$30,d0
00005ff6 1819	move.b	(a1)+,d4
00005ff8 e81c	ror.b	#4,d4
00005ffa 1204	move.b	d4,d1
00005ffc 0201000f	andi.b	#$F,d1
00006000 8001	or.b	d1,d0
00006002 d040	add.w	d0,d0
00006004 30330000	move.w	(a3,d0.w),d0
00006008 0a406800	eori.w	#flip_x|palette_line_3,d0
0000600c 3d00	move.w	d0,-(a6)
0000600e 7a04	moveq	#4,d5
00006010 6000fd96	bra.w	SSTrackDrawFlipLoop_Inner
00006014 1004	move.b	d4,d0
00006016 e408	lsr.b	#2,d0
00006018 02400038	andi.w	#$38,d0
0000601c 1819	move.b	(a1)+,d4
0000601e e71c	rol.b	#3,d4
00006020 1204	move.b	d4,d1
00006022 02010007	andi.b	#7,d1
00006026 8001	or.b	d1,d0
00006028 d040	add.w	d0,d0
0000602a 30330000	move.w	(a3,d0.w),d0
0000602e 0a406800	eori.w	#flip_x|palette_line_3,d0
00006032 3d00	move.w	d0,-(a6)
00006034 7a05	moveq	#5,d5
00006036 6000fd70	bra.w	SSTrackDrawFlipLoop_Inner
0000603a 1004	move.b	d4,d0
0000603c e408	lsr.b	#2,d0
0000603e 0240003c	andi.w	#$3C,d0
00006042 1819	move.b	(a1)+,d4
00006044 e51c	rol.b	#2,d4
00006046 1204	move.b	d4,d1
00006048 02010003	andi.b	#3,d1
0000604c 8001	or.b	d1,d0
0000604e d040	add.w	d0,d0
00006050 30330000	move.w	(a3,d0.w),d0
00006054 0a406800	eori.w	#flip_x|palette_line_3,d0
00006058 3d00	move.w	d0,-(a6)
0000605a 7a06	moveq	#6,d5
0000605c 6000fd4a	bra.w	SSTrackDrawFlipLoop_Inner
00006060 1004	move.b	d4,d0
00006062 e408	lsr.b	#2,d0
00006064 0240003e	andi.w	#$3E,d0
00006068 1819	move.b	(a1)+,d4
0000606a e31c	rol.b	#1,d4
0000606c 1204	move.b	d4,d1
0000606e 02010001	andi.b	#1,d1
00006072 8001	or.b	d1,d0
00006074 d040	add.w	d0,d0
00006076 30330000	move.w	(a3,d0.w),d0
0000607a 0a406800	eori.w	#flip_x|palette_line_3,d0
0000607e 3d00	move.w	d0,-(a6)
00006080 7a07	moveq	#7,d5
00006082 6000fd24	bra.w	SSTrackDrawFlipLoop_Inner
00006086 e40c	lsr.b	#2,d4
00006088 0244003f	andi.w	#$3F,d4
0000608c d844	add.w	d4,d4
0000608e 30334000	move.w	(a3,d4.w),d0
00006092 0a406800	eori.w	#flip_x|palette_line_3,d0
00006096 3d00	move.w	d0,-(a6)
00006098 7a00	moveq	#0,d5
0000609a 6000fd0c	bra.w	SSTrackDrawFlipLoop_Inner
0000609e e41c	ror.b	#2,d4
000060a0 1004	move.b	d4,d0
000060a2 0240003f	andi.w	#$3F,d0
000060a6 d040	add.w	d0,d0
000060a8 30330000	move.w	(a3,d0.w),d0
000060ac 0a406800	eori.w	#flip_x|palette_line_3,d0
000060b0 3d00	move.w	d0,-(a6)
000060b2 7a01	moveq	#1,d5
000060b4 6000fcf2	bra.w	SSTrackDrawFlipLoop_Inner
000060b8 141a	move.b	(a2)+,d2
000060ba e21a	ror.b	#1,d2
000060bc 1002	move.b	d2,d0
000060be 0240007f	andi.w	#$7F,d0
000060c2 7601	moveq	#1,d3
000060c4 0c00007f	cmpi.b	#$7F,d0
000060c8 6700fcc0	beq.w	SSTrackDrawLineFlipLoop
000060cc 06400040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d0
000060d0 d040	add.w	d0,d0
000060d2 d040	add.w	d0,d0
000060d4 32340000	move.w	(a4,d0.w),d1
000060d8 30340002	move.w	2(a4,d0.w),d0
000060dc 0041e000	ori.w	#palette_line_3|high_priority,d1
000060e2 51c8fffc	dbf	d0,-
000060e6 6000fcc0	bra.w	SSTrackDrawFlipLoop_Inner
000060ea 1202	move.b	d2,d1
000060ec e209	lsr.b	#1,d1
000060ee 02010040	andi.b	#$40,d1
000060f2 141a	move.b	(a2)+,d2
000060f4 e41a	ror.b	#2,d2
000060f6 1002	move.b	d2,d0
000060f8 0240003f	andi.w	#$3F,d0
000060fc 8001	or.b	d1,d0
000060fe 7602	moveq	#2,d3
00006100 0c00007f	cmpi.b	#$7F,d0
00006104 6700fc84	beq.w	SSTrackDrawLineFlipLoop
00006108 06400040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d0
0000610c d040	add.w	d0,d0
0000610e d040	add.w	d0,d0
00006110 32340000	move.w	(a4,d0.w),d1
00006114 30340002	move.w	2(a4,d0.w),d0
00006118 0041e000	ori.w	#palette_line_3|high_priority,d1
0000611e 51c8fffc	dbf	d0,-
00006122 6000fc84	bra.w	SSTrackDrawFlipLoop_Inner
00006126 1202	move.b	d2,d1
00006128 e209	lsr.b	#1,d1
0000612a 02010060	andi.b	#$60,d1
0000612e 141a	move.b	(a2)+,d2
00006130 e61a	ror.b	#3,d2
00006132 1002	move.b	d2,d0
00006134 0240001f	andi.w	#$1F,d0
00006138 8001	or.b	d1,d0
0000613a 7603	moveq	#3,d3
0000613c 0c00007f	cmpi.b	#$7F,d0
00006140 6700fc48	beq.w	SSTrackDrawLineFlipLoop
00006144 06400040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d0
00006148 d040	add.w	d0,d0
0000614a d040	add.w	d0,d0
0000614c 32340000	move.w	(a4,d0.w),d1
00006150 30340002	move.w	2(a4,d0.w),d0
00006154 0041e000	ori.w	#palette_line_3|high_priority,d1
0000615a 51c8fffc	dbf	d0,-
0000615e 6000fc48	bra.w	SSTrackDrawFlipLoop_Inner
00006162 1202	move.b	d2,d1
00006164 e209	lsr.b	#1,d1
00006166 02010070	andi.b	#$70,d1
0000616a 141a	move.b	(a2)+,d2
0000616c e81a	ror.b	#4,d2
0000616e 1002	move.b	d2,d0
00006170 0240000f	andi.w	#$F,d0
00006174 8001	or.b	d1,d0
00006176 7604	moveq	#4,d3
00006178 0c00007f	cmpi.b	#$7F,d0
0000617c 6700fc0c	beq.w	SSTrackDrawLineFlipLoop
00006180 06400040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d0
00006184 d040	add.w	d0,d0
00006186 d040	add.w	d0,d0
00006188 32340000	move.w	(a4,d0.w),d1
0000618c 30340002	move.w	2(a4,d0.w),d0
00006190 0041e000	ori.w	#palette_line_3|high_priority,d1
00006196 51c8fffc	dbf	d0,-
0000619a 6000fc0c	bra.w	SSTrackDrawFlipLoop_Inner
0000619e 1202	move.b	d2,d1
000061a0 e209	lsr.b	#1,d1
000061a2 02010078	andi.b	#$78,d1
000061a6 141a	move.b	(a2)+,d2
000061a8 e71a	rol.b	#3,d2
000061aa 1002	move.b	d2,d0
000061ac 02400007	andi.w	#7,d0
000061b0 8001	or.b	d1,d0
000061b2 7605	moveq	#5,d3
000061b4 0c00007f	cmpi.b	#$7F,d0
000061b8 6700fbd0	beq.w	SSTrackDrawLineFlipLoop
000061bc 06400040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d0
000061c0 d040	add.w	d0,d0
000061c2 d040	add.w	d0,d0
000061c4 32340000	move.w	(a4,d0.w),d1
000061c8 30340002	move.w	2(a4,d0.w),d0
000061cc 0041e000	ori.w	#palette_line_3|high_priority,d1
000061d2 51c8fffc	dbf	d0,-
000061d6 6000fbd0	bra.w	SSTrackDrawFlipLoop_Inner
000061da 1202	move.b	d2,d1
000061dc e209	lsr.b	#1,d1
000061de 0201007c	andi.b	#$7C,d1
000061e2 141a	move.b	(a2)+,d2
000061e4 e51a	rol.b	#2,d2
000061e6 1002	move.b	d2,d0
000061e8 02400003	andi.w	#3,d0
000061ec 8001	or.b	d1,d0
000061ee 7606	moveq	#6,d3
000061f0 0c00007f	cmpi.b	#$7F,d0
000061f4 6700fb94	beq.w	SSTrackDrawLineFlipLoop
000061f8 06400040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d0
000061fc d040	add.w	d0,d0
000061fe d040	add.w	d0,d0
00006200 32340000	move.w	(a4,d0.w),d1
00006204 30340002	move.w	2(a4,d0.w),d0
00006208 0041e000	ori.w	#palette_line_3|high_priority,d1
0000620e 51c8fffc	dbf	d0,-
00006212 6000fb94	bra.w	SSTrackDrawFlipLoop_Inner
00006216 1202	move.b	d2,d1
00006218 e209	lsr.b	#1,d1
0000621a 0201007e	andi.b	#$7E,d1
0000621e 141a	move.b	(a2)+,d2
00006220 e31a	rol.b	#1,d2
00006222 1002	move.b	d2,d0
00006224 02400001	andi.w	#1,d0
00006228 8001	or.b	d1,d0
0000622a 7607	moveq	#7,d3
0000622c 0c00007f	cmpi.b	#$7F,d0
00006230 6700fb58	beq.w	SSTrackDrawLineFlipLoop
00006234 06400040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d0
00006238 d040	add.w	d0,d0
0000623a d040	add.w	d0,d0
0000623c 32340000	move.w	(a4,d0.w),d1
00006240 30340002	move.w	2(a4,d0.w),d0
00006244 0041e000	ori.w	#palette_line_3|high_priority,d1
0000624a 51c8fffc	dbf	d0,-
0000624e 6000fb58	bra.w	SSTrackDrawFlipLoop_Inner
00006252 e20a	lsr.b	#1,d2
00006254 0242007f	andi.w	#$7F,d2
00006258 7600	moveq	#0,d3
0000625a 0c02007f	cmpi.b	#$7F,d2
0000625e 6700fb2a	beq.w	SSTrackDrawLineFlipLoop
00006262 06420040	addi.w	#(SSPNT_RLELUT_Part2-SSPNT_RLELUT)/4,d2
00006266 d442	add.w	d2,d2
00006268 d442	add.w	d2,d2
0000626a 32342000	move.w	(a4,d2.w),d1
0000626e 30342002	move.w	2(a4,d2.w),d0
00006272 0041e000	ori.w	#palette_line_3|high_priority,d1
00006278 51c8fffc	dbf	d0,-
0000627c 6000fb2a	bra.w	SSTrackDrawFlipLoop_Inner
00006280 141a	move.b	(a2)+,d2
00006282 e41a	ror.b	#2,d2
00006284 1002	move.b	d2,d0
00006286 0240003f	andi.w	#$3F,d0
0000628a d040	add.w	d0,d0
0000628c d040	add.w	d0,d0
0000628e 7602	moveq	#2,d3
00006290 32340000	move.w	(a4,d0.w),d1
00006294 30340002	move.w	2(a4,d0.w),d0
00006298 0041e000	ori.w	#palette_line_3|high_priority,d1
0000629e 51c8fffc	dbf	d0,-
000062a2 6000fb04	bra.w	SSTrackDrawFlipLoop_Inner
000062a6 1002	move.b	d2,d0
000062a8 e408	lsr.b	#2,d0
000062aa 02400020	andi.w	#$20,d0
000062ae 141a	move.b	(a2)+,d2
000062b0 e61a	ror.b	#3,d2
000062b2 1202	move.b	d2,d1
000062b4 0201001f	andi.b	#$1F,d1
000062b8 8001	or.b	d1,d0
000062ba 7603	moveq	#3,d3
000062bc d040	add.w	d0,d0
000062be d040	add.w	d0,d0
000062c0 32340000	move.w	(a4,d0.w),d1
000062c4 30340002	move.w	2(a4,d0.w),d0
000062c8 0041e000	ori.w	#palette_line_3|high_priority,d1
000062ce 51c8fffc	dbf	d0,-
000062d2 6000fad4	bra.w	SSTrackDrawFlipLoop_Inner
000062d6 1002	move.b	d2,d0
000062d8 e408	lsr.b	#2,d0
000062da 02400030	andi.w	#$30,d0
000062de 141a	move.b	(a2)+,d2
000062e0 e81a	ror.b	#4,d2
000062e2 1202	move.b	d2,d1
000062e4 0201000f	andi.b	#$F,d1
000062e8 8001	or.b	d1,d0
000062ea d040	add.w	d0,d0
000062ec d040	add.w	d0,d0
000062ee 7604	moveq	#4,d3
000062f0 32340000	move.w	(a4,d0.w),d1
000062f4 30340002	move.w	2(a4,d0.w),d0
000062f8 0041e000	ori.w	#palette_line_3|high_priority,d1
000062fe 51c8fffc	dbf	d0,-
00006302 6000faa4	bra.w	SSTrackDrawFlipLoop_Inner
00006306 1002	move.b	d2,d0
00006308 e408	lsr.b	#2,d0
0000630a 02400038	andi.w	#$38,d0
0000630e 141a	move.b	(a2)+,d2
00006310 e71a	rol.b	#3,d2
00006312 1202	move.b	d2,d1
00006314 02010007	andi.b	#7,d1
00006318 8001	or.b	d1,d0
0000631a d040	add.w	d0,d0
0000631c d040	add.w	d0,d0
0000631e 7605	moveq	#5,d3
00006320 32340000	move.w	(a4,d0.w),d1
00006324 30340002	move.w	2(a4,d0.w),d0
00006328 0041e000	ori.w	#palette_line_3|high_priority,d1
0000632e 51c8fffc	dbf	d0,-
00006332 6000fa74	bra.w	SSTrackDrawFlipLoop_Inner
00006336 1002	move.b	d2,d0
00006338 e408	lsr.b	#2,d0
0000633a 0240003c	andi.w	#$3C,d0
0000633e 141a	move.b	(a2)+,d2
00006340 e51a	rol.b	#2,d2
00006342 1202	move.b	d2,d1
00006344 02010003	andi.b	#3,d1
00006348 8001	or.b	d1,d0
0000634a d040	add.w	d0,d0
0000634c d040	add.w	d0,d0
0000634e 7606	moveq	#6,d3
00006350 32340000	move.w	(a4,d0.w),d1
00006354 30340002	move.w	2(a4,d0.w),d0
00006358 0041e000	ori.w	#palette_line_3|high_priority,d1
0000635e 51c8fffc	dbf	d0,-
00006362 6000fa44	bra.w	SSTrackDrawFlipLoop_Inner
00006366 1002	move.b	d2,d0
00006368 e408	lsr.b	#2,d0
0000636a 0240003e	andi.w	#$3E,d0
0000636e 141a	move.b	(a2)+,d2
00006370 e31a	rol.b	#1,d2
00006372 1202	move.b	d2,d1
00006374 02010001	andi.b	#1,d1
00006378 8001	or.b	d1,d0
0000637a d040	add.w	d0,d0
0000637c d040	add.w	d0,d0
0000637e 7607	moveq	#7,d3
00006380 32340000	move.w	(a4,d0.w),d1
00006384 30340002	move.w	2(a4,d0.w),d0
00006388 0041e000	ori.w	#palette_line_3|high_priority,d1
0000638e 51c8fffc	dbf	d0,-
00006392 6000fa14	bra.w	SSTrackDrawFlipLoop_Inner
00006396 e40a	lsr.b	#2,d2
00006398 0242003f	andi.w	#$3F,d2
0000639c d442	add.w	d2,d2
0000639e d442	add.w	d2,d2
000063a0 7600	moveq	#0,d3
000063a2 32342000	move.w	(a4,d2.w),d1
000063a6 30342002	move.w	2(a4,d2.w),d0
000063aa 0041e000	ori.w	#palette_line_3|high_priority,d1
000063b0 51c8fffc	dbf	d0,-
000063b4 6000f9f2	bra.w	SSTrackDrawFlipLoop_Inner
000063b8 e41a	ror.b	#2,d2
000063ba 1002	move.b	d2,d0
000063bc 0240003f	andi.w	#$3F,d0
000063c0 d040	add.w	d0,d0
000063c2 d040	add.w	d0,d0
000063c4 7601	moveq	#1,d3
000063c6 32340000	move.w	(a4,d0.w),d1
000063ca 30340002	move.w	2(a4,d0.w),d0
000063ce 0041e000	ori.w	#palette_line_3|high_priority,d1
000063d4 51c8fffc	dbf	d0,-
000063d8 6000f9ce	bra.w	SSTrackDrawFlipLoop_Inner
00006c0a 11f8db0fdb11	move.b	(SS_Alternate_HorizScroll_Buf).w,(SS_Last_Alternate_HorizScroll_Buf).w
00006c10 7200	moveq	#0,d1
00006c12 2078db00	movea.l	(SSTrack_mappings_bitflags).w,a0
00006c16 b1fc000d090a	cmpa.l	#MapSpec_Straight2,a0
00006c1c 6d2c	blt.s	+
00006c1e b1fc000d0ea6	cmpa.l	#MapSpec_Straight3,a0
00006c24 6c24	bge.s	+
00006c26 2a78db8e	movea.l	(SS_CurrentLevelLayout).w,a5
00006c2a 1238db0a	move.b	(SpecialStage_CurrentSegment).w,d1
00006c2e 12351000	move.b	(a5,d1.w),d1
00006c32 6a54	bpl.s	+++
00006c34 50f8db0e	st.b	(SSTrack_Orientation).w
00006c38 1038db0d	move.b	(SSTrack_drawing_index).w,d0
00006c3c b038db21	cmp.b	(SS_player_anim_frame_timer).w,d0
00006c40 6d000058	blt.w	return_6C9A
00006c44 50f8db0f	st.b	(SS_Alternate_HorizScroll_Buf).w
00006c48 4e75	rts	
00006c4a b1fc000cf0bc	cmpa.l	#MapSpec_Rise14,a0
00006c50 6d18	blt.s	+
00006c52 b1fc000cf580	cmpa.l	#MapSpec_Rise15,a0
00006c58 6c10	bge.s	+
00006c5a 2a78db8e	movea.l	(SS_CurrentLevelLayout).w,a5
00006c5e 1238db0a	move.b	(SpecialStage_CurrentSegment).w,d1
00006c62 12351000	move.b	(a5,d1.w),d1
00006c66 6a20	bpl.s	++
00006c68 60ca	bra.s	-
00006c6a b1fc000d3092	cmpa.l	#MapSpec_Drop6,a0
00006c70 6d28	blt.s	return_6C9A
00006c72 b1fc000d3522	cmpa.l	#MapSpec_Drop7,a0
00006c78 6c20	bge.s	return_6C9A
00006c7a 2a78db8e	movea.l	(SS_CurrentLevelLayout).w,a5
00006c7e 1238db0a	move.b	(SpecialStage_CurrentSegment).w,d1
00006c82 12351000	move.b	(a5,d1.w),d1
00006c86 6bac	bmi.s	-
00006c88 51f8db0e	sf.b	(SSTrack_Orientation).w
00006c8c 1038db0d	move.b	(SSTrack_drawing_index).w,d0
00006c90 b038db21	cmp.b	(SS_player_anim_frame_timer).w,d0
00006c94 6d04	blt.s	return_6C9A
00006c96 51f8db0f	sf.b	(SS_Alternate_HorizScroll_Buf).w
00006c9a 4e75	rts	
00006c9c 43f8e000	lea	(SS_Horiz_Scroll_Buf_1).w,a1
00006ca0 45f8d700	lea	(SS_Horiz_Scroll_Buf_2).w,a2
00006ca4 7000	moveq	#0,d0
00006ca6 7200	moveq	#0,d1
00006ca8 7400	moveq	#0,d2
00006caa 7600	moveq	#0,d3
00006cac 323cff00	move.w	#-$100,d1
00006cb0 343cfe00	move.w	#-$200,d2
00006cb4 363cfd00	move.w	#-$300,d3
00006cb8 4841	swap	d1
00006cba 4842	swap	d2
00006cbc 4843	swap	d3
00006cbe 781f	moveq	#bytesToXcnt(HorizontalScrollBuffer.len,4*8),d4
00006cc2 22c0	move.l	d0,(a1)+
00006cc4 22c1	move.l	d1,(a1)+
00006cc6 22c1	move.l	d1,(a1)+
00006cc8 22c2	move.l	d2,(a1)+
00006cca 22c2	move.l	d2,(a1)+
00006ccc 22c3	move.l	d3,(a1)+
00006cce 22c3	move.l	d3,(a1)+
00006cd0 24c3	move.l	d3,(a2)+
00006cd2 24c3	move.l	d3,(a2)+
00006cd4 24c2	move.l	d2,(a2)+
00006cd6 24c2	move.l	d2,(a2)+
00006cd8 24c1	move.l	d1,(a2)+
00006cda 24c1	move.l	d1,(a2)+
00006cdc 24c0	move.l	d0,(a2)+
00006cde 24c0	move.l	d0,(a2)+
00006ce0 51ccffde	dbf	d4,-
00006ce4 4e75	rts	
00006ce6 41f9000dca38	lea	(ArtKos_Special).l,a0
00006cec 43f9ffff0000	lea	(Chunk_Table).l,a1
00006cf2 6100ac46	bsr.w	KosDec
00006cf6 23fc4000000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_VRAM_Start),VRAM,WRITE),(VDP_control_port).l
00006d00 43f900c00000	lea	(VDP_data_port).l,a1
00006d06 207cffff0000	movea.l	#Chunk_Table,a0
00006d0c 3018	move.w	(a0)+,d0
00006d0e 5340	subq.w	#1,d0
00006d10 2290	move.l	(a0),(a1)
00006d12 2290	move.l	(a0),(a1)
00006d14 2290	move.l	(a0),(a1)
00006d16 2290	move.l	(a0),(a1)
00006d18 2290	move.l	(a0),(a1)
00006d1a 2290	move.l	(a0),(a1)
00006d1c 2290	move.l	(a0),(a1)
00006d1e 2298	move.l	(a0)+,(a1)
00006d20 51c8ffee	dbf	d0,-
00006d24 41f9000e24fe	lea	(MiscKoz_SpecialPerspective).l,a0
00006d2a 43f9ffff6a60	lea	(SSRAM_MiscKoz_SpecialPerspective).l,a1
00006d30 6100ac08	bsr.w	KosDec
00006d34 41f9000e34ee	lea	(MiscNem_SpecialLevelLayout).l,a0
00006d3a 49f8855c	lea	(SSRAM_MiscNem_SpecialLevelLayout).w,a4
00006d3e 6100a7b0	bsr.w	NemDecToRAM
00006d42 41f9000e35f2	lea	(MiscKoz_SpecialObjectLocations).l,a0
00006d48 43f88778	lea	(SSRAM_MiscKoz_SpecialObjectLocations).w,a1
00006d4c 6100abec	bsr.w	KosDec
00006d50 4e75	rts	
00006d52 46fc2700	move	#$2700,sr
00006d56 227cffff0000	movea.l	#Chunk_Table+planeLoc(32,0,0),a1
00006d5c 41f9000dd30c	lea	(MapEng_SpecialBackBottom).l,a0
00006d62 303c0700	move.w	#make_art_tile(ArtTile_ArtNem_SpecialBack,0,0),d0
00006d66 6100aa54	bsr.w	EniDec
00006d6a 227cffff0400	movea.l	#Chunk_Table+planeLoc(32,0,16),a1
00006d70 41f9000dd1de	lea	(MapEng_SpecialBack).l,a0
00006d76 303c0700	move.w	#make_art_tile(ArtTile_ArtNem_SpecialBack,0,0),d0
00006d7a 6100aa40	bsr.w	EniDec
00006d7e 43f9ffff0000	lea	(Chunk_Table).l,a1
00006d84 203c60000002	move.l	#vdpComm(VRAM_SS_Plane_B_Name_Table + planeLoc(128,32*.c,0),VRAM,WRITE),d0
00006d8a 721f	moveq	#32-1,d1
00006d8c 741f	moveq	#32-1,d2
00006d8e 6100a69e	bsr.w	PlaneMapToVRAM_H80_SpecialStage
00006d92 43f9ffff0000	lea	(Chunk_Table).l,a1
00006d98 203c60400002	move.l	#vdpComm(VRAM_SS_Plane_B_Name_Table + planeLoc(128,32*.c,0),VRAM,WRITE),d0
00006d9e 721f	moveq	#32-1,d1
00006da0 741f	moveq	#32-1,d2
00006da2 6100a68a	bsr.w	PlaneMapToVRAM_H80_SpecialStage
00006da6 43f9ffff0000	lea	(Chunk_Table).l,a1
00006dac 203c60800002	move.l	#vdpComm(VRAM_SS_Plane_B_Name_Table + planeLoc(128,32*.c,0),VRAM,WRITE),d0
00006db2 721f	moveq	#32-1,d1
00006db4 741f	moveq	#32-1,d2
00006db6 6100a676	bsr.w	PlaneMapToVRAM_H80_SpecialStage
00006dba 43f9ffff0000	lea	(Chunk_Table).l,a1
00006dc0 203c60c00002	move.l	#vdpComm(VRAM_SS_Plane_B_Name_Table + planeLoc(128,32*.c,0),VRAM,WRITE),d0
00006dc6 721f	moveq	#32-1,d1
00006dc8 741f	moveq	#32-1,d2
00006dca 6100a662	bsr.w	PlaneMapToVRAM_H80_SpecialStage
00006dce 46fc2300	move	#$2300,sr
00006dd2 4e75	rts	
00006dd4 41f9000deeae	lea	(ArtNem_SpecialSonicAndTails).l,a0
00006dda 49f900ff0000	lea	(SSRAM_ArtNem_SpecialSonicAndTails & $FFFFFF).l,a4
00006de0 6000a70e	bra.w	NemDecToRAM
00006de4 61000056	bsr.w	SSPlaneB_SetHorizOffset
00006de8 610000f6	bsr.w	SSTrack_SetVscroll
00006dec 4e75	rts	
00006e3c 7e00	moveq	#0,d7
00006e3e 7c00	moveq	#0,d6
00006e40 7000	moveq	#0,d0
00006e42 1438db09	move.b	(SSTrack_last_anim_frame).w,d2
00006e46 1038db08	move.b	(SSTrack_anim).w,d0
00006e4a d040	add.w	d0,d0
00006e4c 303b0006	move.w	off_6E54(pc,d0.w),d0
00006e50 4efb0002	jmp	off_6E54(pc,d0.w)
00006e5e 7200	moveq	#0,d1
00006e60 0c020001	cmpi.b	#1,d2
00006e64 6d22	blt.s	++
00006e66 7202	moveq	#2,d1
00006e68 0c020002	cmpi.b	#2,d2
00006e6c 6d1a	blt.s	++
00006e6e 7204	moveq	#4,d1
00006e70 0c02000a	cmpi.b	#$A,d2
00006e74 6d12	blt.s	++
00006e76 7202	moveq	#2,d1
00006e78 0c02000b	cmpi.b	#$B,d2
00006e7c 6d0a	blt.s	++
00006e7e 7200	moveq	#0,d1
00006e80 0c02000c	cmpi.b	#$C,d2
00006e84 6d02	blt.s	++
00006e86 4e75	rts	
00006e88 7000	moveq	#0,d0
00006e8a 7400	moveq	#0,d2
00006e8c 1038db0d	move.b	(SSTrack_drawing_index).w,d0
00006e94 d0f01000	adda.w	(a0,d1.w),a0
00006e98 14300000	move.b	(a0,d0.w),d2
00006e9c 4a38db11	tst.b	(SS_Last_Alternate_HorizScroll_Buf).w
00006ea0 6608	bne.s	+
00006ea2 4a38db0f	tst.b	(SS_Alternate_HorizScroll_Buf).w
00006ea6 6716	beq.s	+++
00006ea8 600c	bra.s	++
00006eaa 4a38db0f	tst.b	(SS_Alternate_HorizScroll_Buf).w
00006eae 660e	bne.s	++
00006eb0 43f8e002	lea	(SS_Horiz_Scroll_Buf_1 + 2).w,a1
00006eb4 6018	bra.s	+++
00006eb6 43f8d702	lea	(SS_Horiz_Scroll_Buf_2 + 2).w,a1
00006eba 4442	neg.w	d2
00006ebc 6010	bra.s	++
00006ebe 43f8e002	lea	(SS_Horiz_Scroll_Buf_1 + 2).w,a1
00006ec2 4a38db0f	tst.b	(SS_Alternate_HorizScroll_Buf).w
00006ec6 6706	beq.s	+
00006ec8 43f8d702	lea	(SS_Horiz_Scroll_Buf_2 + 2).w,a1
00006ecc 4442	neg.w	d2
00006ece 303c00ff	move.w	#bytesToLcnt(HorizontalScrollBuffer.len),d0
00006eda 51c8fff6	dbf	d0,-
00006ede 4e75	rts	
00006ee0 31f8f618db34	move.w	(Vscroll_Factor_BG).w,(SSTrack_LastVScroll).w
00006ee6 7e00	moveq	#0,d7
00006ee8 7000	moveq	#0,d0
00006eea 7400	moveq	#0,d2
00006eec 1438db09	move.b	(SSTrack_last_anim_frame).w,d2
00006ef0 1038db08	move.b	(SSTrack_anim).w,d0
00006ef4 d040	add.w	d0,d0
00006ef6 303b0006	move.w	off_6EFE(pc,d0.w),d0
00006efa 4efb0002	jmp	off_6EFE(pc,d0.w)
00006f08 4e75	rts	
00006f0a 123b2006	move.b	+(pc,d2.w),d1
00006f0e 6a5a	bpl.s	SSTrack_ApplyVscroll
00006f10 4e75	rts	
00006f2a 50c7	st.b	d7
00006f2c 123b2006	move.b	+(pc,d2.w),d1
00006f30 6a38	bpl.s	SSTrack_ApplyVscroll
00006f32 4e75	rts	
00006f4c 4a38db87	tst.b	(SS_Pause_Only_flag).w
00006f50 6606	bne.s	+
00006f52 123b2006	move.b	++(pc,d2.w),d1
00006f56 6a12	bpl.s	SSTrack_ApplyVscroll
00006f58 4e75	rts	
00006f6a 7000	moveq	#0,d0
00006f6c 7400	moveq	#0,d2
00006f6e 1038db0d	move.b	(SSTrack_drawing_index).w,d0
00006f76 d0f01000	adda.w	(a0,d1.w),a0
00006f7a 14300000	move.b	(a0,d0.w),d2
00006f7e 4a07	tst.b	d7
00006f80 6a06	bpl.s	+
00006f82 d578f618	add.w	d2,(Vscroll_Factor_BG).w
00006f86 4e75	rts	
00006f88 9578f618	sub.w	d2,(Vscroll_Factor_BG).w
00006f8c 4e75	rts	
00006f8e 43f8b200	lea	(SS_Dynamic_Object_RAM).w,a1
00006f92 3a3c0076	move.w	#(SS_Dynamic_Object_RAM_End-SS_Dynamic_Object_RAM)/object_size-1,d5
00006f98 6708	beq.s	+
00006f9a 43e90040	lea	next_object(a1),a1
00006f9e 51cdfff6	dbf	d5,-
00006fa2 4e75	rts	
00006fa4 2248	movea.l	a0,a1
00006fa6 3a3ccfc0	move.w	#SS_Dynamic_Object_RAM_End,d5
00006faa 9a48	sub.w	a0,d5
00006fac ec4d	lsr.w	#object_size_bits,d5
00006fae 5345	subq.w	#1,d5
00006fb0 650c	bcs.s	+
00006fb4 6708	beq.s	+
00006fb6 43e90040	lea	next_object(a1),a1
00006fba 51cdfff6	dbf	d5,-
00006fc0 10280024	move.b	routine(a0),d0
00006fc4 6600087e	bne.w	JmpTo_DisplaySprite
00006fc8 217c000070700004	move.l	#Obj5E_MapUnc_7070,mappings(a0)
00006fd0 317c01fa0002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialHUD,0,0),art_tile(a0)
00006fd6 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00006fdc 117c00000018	move.b	#0,priority(a0)
00006fe2 117c00010024	move.b	#1,routine(a0)
00006fe8 08e800060001	bset	#render_flags.multi_sprite,render_flags(a0)
00006fee 7200	moveq	#0,d1
00006ff0 4a38fe00	tst.b	(SS_2p_Flag).w
00006ff4 670c	beq.s	+
00006ff6 5c41	addq.w	#6,d1
00006ff8 4a38fff8	tst.b	(Graphics_Flags).w
00006ffc 6a14	bpl.s	++
00006ffe 5241	addq.w	#1,d1
00007000 6010	bra.s	++
00007006 02410003	andi.w	#3,d1
0000700a 4a38fff8	tst.b	(Graphics_Flags).w
0000700e 6a02	bpl.s	+
00007010 5641	addq.w	#3,d1
00007012 d241	add.w	d1,d1
00007014 7400	moveq	#0,d2
00007016 7600	moveq	#0,d3
00007018 43f900007042	lea	(SSHUDLayout).l,a1
0000701e 45e80010	lea	subspr_data(a0),a2
00007022 d2f11000	adda.w	(a1,d1.w),a1
00007026 1619	move.b	(a1)+,d3
00007028 1143000f	move.b	d3,mainspr_childsprites(a0)
0000702c 5343	subq.w	#1,d3
0000702e 7000	moveq	#0,d0
00007030 1019	move.b	(a1)+,d0
00007036 15992005	move.b	(a1)+,sub2_mapframe-sub2_x_pos(a2,d2.w)
0000703a 5c42	addq.w	#next_subspr,d2
0000703c 51cbfff4	dbf	d3,-
00007040 4e75	rts	
000070f0 7000	moveq	#0,d0
000070f2 10280024	move.b	routine(a0),d0
000070f6 323b0006	move.w	Obj5F_Index(pc,d0.w),d1
000070fa 4efb1002	jmp	Obj5F_Index(pc,d1.w)
0000710a 7000	moveq	#0,d0
0000710c 10280026	move.b	angle(a0),d0
00007110 6100c2a4	bsr.w	CalcSine
00007114 c1e80014	muls.w	objoff_14(a0),d0
00007118 c3e80014	muls.w	objoff_14(a0),d1
0000711c e040	asr.w	#8,d0
0000711e e041	asr.w	#8,d1
00007120 d3680008	add.w	d1,x_pos(a0)
00007124 d168000c	add.w	d0,y_pos(a0)
00007128 0c6800000008	cmpi.w	#0,x_pos(a0)
0000712e 6d000720	blt.w	JmpTo_DeleteObject
00007132 0c6801000008	cmpi.w	#$100,x_pos(a0)
00007138 6e000716	bgt.w	JmpTo_DeleteObject
0000713c 0c680000000c	cmpi.w	#0,y_pos(a0)
00007142 6d00070c	blt.w	JmpTo_DeleteObject
0000714a 4a38fe00	tst.b	(SS_2p_Flag).w
0000714e 6708	beq.s	+
00007150 303c0008	move.w	#8,d0
0000715e 317cffc0000c	move.w	#-$40,y_pos(a0)
00007164 317c01000012	move.w	#$100,y_vel(a0)
0000716a 217c000072400004	move.l	#Obj5F_MapUnc_7240,mappings(a0)
00007172 317c038a0002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialStart,0,0),art_tile(a0)
00007178 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0000717e 117c00010018	move.b	#1,priority(a0)
00007184 117c00020024	move.b	#2,routine(a0)
0000718e 0c680048000c	cmpi.w	#$48,y_pos(a0)
00007194 6d0006ae	blt.w	JmpTo_DisplaySprite
00007198 317c00000012	move.w	#0,y_vel(a0)
0000719e 317c0048000c	move.w	#$48,y_pos(a0)
000071a4 117c00040024	move.b	#4,routine(a0)
000071aa 117c000f002a	move.b	#$F,objoff_2A(a0)
000071ba 66000688	bne.w	JmpTo_DisplaySprite
000071be 7c06	moveq	#6,d6
000071c0 45f90000728c	lea	(Obj5F_MapUnc_7240.frame2).l,a2
000071c6 7602	moveq	#2,d3
000071c8 317c00080014	move.w	#8,objoff_14(a0)
000071ce 117c00060024	move.b	#6,routine(a0)
000071d8 662c	bne.s	+
000071da 7000	moveq	#0,d0
000071dc 323c000f	move.w	#bytesToLcnt(object_size),d1
000071e6 5840	addq.w	#4,d0
000071e8 51c9fff6	dbf	d1,-
000071ec 1343001a	move.b	d3,mapping_frame(a1)
000071f0 5243	addq.w	#1,d3
000071f2 343cffd8	move.w	#-$28,d2
000071f6 322a0008	move.w	8(a2),d1
000071fa 6100c452	bsr.w	CalcAngle
000071fe 13400026	move.b	d0,angle(a1)
00007202 45ea000a	lea	$A(a2),a2
0000720a 117c000a0024	move.b	#$A,routine(a0)
00007210 317c001e002a	move.w	#$1E,objoff_2A(a0)
00007216 4e75	rts	
0000721e 6a1c	bpl.s	+++
00007220 4a38fe00	tst.b	(SS_2p_Flag).w
00007224 670a	beq.s	+
00007226 303c000a	move.w	#$A,d0
0000722e 6004	bra.s	++
0000723e 4e75	rts	
00007356 7000	moveq	#0,d0
00007358 1028000a	move.b	objoff_A(a0),d0
0000735c 323b0006	move.w	Obj87_Index(pc,d0.w),d1
00007360 4efb1002	jmp	Obj87_Index(pc,d1.w)
0000736c 117c0002000a	move.b	#2,objoff_A(a0)
00007372 217c000072d20004	move.l	#Obj5F_MapUnc_72D2,mappings(a0)
0000737a 317c41fa0002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialHUD,2,0),art_tile(a0)
00007380 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00007386 08e800060001	bset	#render_flags.multi_sprite,render_flags(a0)
0000738c 117c0002000f	move.b	#2,mainspr_childsprites(a0)
00007392 303c0020	move.w	#$20,d0
00007396 7200	moveq	#0,d1
00007398 43e80010	lea	subspr_data(a0),a1
0000739c 32bc0048	move.w	#$48,sub2_x_pos-subspr_data(a1)
000073a0 33400002	move.w	d0,sub2_y_pos-subspr_data(a1)
000073a4 33410004	move.w	d1,mainspr_height-subspr_data(a1)
000073a8 337c00e00006	move.w	#$E0,sub3_x_pos-subspr_data(a1)
000073ae 33400008	move.w	d0,sub3_y_pos-subspr_data(a1)
000073b2 3341000a	move.w	d1,mapping_frame-subspr_data(a1)
000073b6 3340000e	move.w	d0,sub4_y_pos-subspr_data(a1)
000073ba 33400014	move.w	d0,sub5_y_pos-subspr_data(a1)
000073be 3340001a	move.w	d0,sub6_y_pos-subspr_data(a1)
000073c2 33400020	move.w	d0,sub7_y_pos-subspr_data(a1)
000073c6 4a38fe00	tst.b	(SS_2p_Flag).w
000073ca 665e	bne.s	+++
000073cc 0c780000ff70	cmpi.w	#0,(Player_mode).w
000073d2 670c	beq.s	+
000073da 32bc0094	move.w	#$94,sub2_x_pos-subspr_data(a1)
000073de 4e75	rts	
000073e0 6100fbac	bsr.w	SSAllocateObject
000073e4 6642	bne.s	+
000073e6 12bc0087	move.b	#ObjID_SSNumberOfRings,id(a1)
000073ea 137c0004000a	move.b	#4,objoff_A(a1)
000073f0 237c000072d20004	move.l	#Obj5F_MapUnc_72D2,mappings(a1)
000073f8 337c41fa0002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialHUD,2,0),art_tile(a1)
000073fe 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
00007404 08e900060001	bset	#render_flags.multi_sprite,render_flags(a1)
0000740a 137c0001000f	move.b	#1,mainspr_childsprites(a1)
00007410 45e90010	lea	subspr_data(a1),a2
00007414 34bc0080	move.w	#$80,sub2_x_pos-subspr_data(a2)
00007418 35400002	move.w	d0,sub2_y_pos-subspr_data(a2)
0000741c 35410004	move.w	d1,mainspr_height-subspr_data(a2)
00007420 35400008	move.w	d0,sub3_y_pos-subspr_data(a2)
00007424 3540000e	move.w	d0,sub4_y_pos-subspr_data(a2)
0000742a 6100fb62	bsr.w	SSAllocateObject
0000742e 66f8	bne.s	-
00007430 12bc0087	move.b	#ObjID_SSNumberOfRings,id(a1)
00007434 137c0006000a	move.b	#6,objoff_A(a1)
0000743a 237c000072d20004	move.l	#Obj5F_MapUnc_72D2,mappings(a1)
00007442 337c41fa0002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialHUD,2,0),art_tile(a1)
00007448 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0000744e 08e900060001	bset	#render_flags.multi_sprite,render_flags(a1)
00007454 137c0000000f	move.b	#0,mainspr_childsprites(a1)
0000745a 45e90010	lea	subspr_data(a1),a2
0000745e 303c002c	move.w	#$2C,d0
00007462 323c000a	move.w	#$A,d1
00007466 35400002	move.w	d0,sub2_y_pos-subspr_data(a2)
0000746a 35410004	move.w	d1,mainspr_height-subspr_data(a2)
0000746e 35400008	move.w	d0,sub3_y_pos-subspr_data(a2)
00007472 3541000a	move.w	d1,mapping_frame-subspr_data(a2)
00007476 3540000e	move.w	d0,sub4_y_pos-subspr_data(a2)
0000747a 35410010	move.w	d1,sub4_mapframe-1-subspr_data(a2)
0000747e 4e75	rts	
00007480 7000	moveq	#0,d0
00007482 7600	moveq	#0,d3
00007484 7a00	moveq	#0,d5
00007486 43e80010	lea	sub2_x_pos(a0),a1
0000748a 2449	movea.l	a1,a2
0000748c 5a4a	addq.w	#sub2_mapframe-sub2_x_pos,a2
0000748e 0c780002ff70	cmpi.w	#2,(Player_mode).w
00007494 6754	beq.s	loc_74EA
00007496 1038b03c	move.b	(MainCharacter+ss_rings_hundreds).w,d0
0000749a 6708	beq.s	+
0000749c 5243	addq.w	#1,d3
0000749e 1480	move.b	d0,(a2)
000074a0 45ea0006	lea	next_subspr(a2),a2
000074a8 4a03	tst.b	d3
000074aa 6604	bne.s	+
000074ac 4a00	tst.b	d0
000074ae 6708	beq.s	++
000074b2 1480	move.b	d0,(a2)
000074b4 45ea0006	lea	next_subspr(a2),a2
000074ba 14b8b03e	move.b	(MainCharacter+ss_rings_units).w,(a2)
000074be 45ea0006	lea	next_subspr(a2),a2
000074c2 3803	move.w	d3,d4
000074c4 5344	subq.w	#1,d4
000074c6 323c0048	move.w	#$48,d1
000074ca 4a78ff70	tst.w	(Player_mode).w
000074ce 6704	beq.s	+
000074d0 06410054	addi.w	#$54,d1
000074dc 5c45	addq.w	#next_subspr,d5
000074de 51ccfff4	dbf	d4,-
000074e2 0c780001ff70	cmpi.w	#1,(Player_mode).w
000074e8 674c	beq.s	loc_7536
000074ea 7000	moveq	#0,d0
000074ec 7800	moveq	#0,d4
000074ee 1038b07c	move.b	(Sidekick+ss_rings_hundreds).w,d0
000074f2 6708	beq.s	+
000074f4 5244	addq.w	#1,d4
000074f6 1480	move.b	d0,(a2)
000074f8 45ea0006	lea	next_subspr(a2),a2
00007500 4a04	tst.b	d4
00007502 6604	bne.s	+
00007504 4a00	tst.b	d0
00007506 6708	beq.s	++
00007508 5244	addq.w	#1,d4
0000750a 1480	move.b	d0,(a2)
0000750c 45ea0006	lea	next_subspr(a2),a2
00007514 5244	addq.w	#1,d4
00007516 d644	add.w	d4,d3
00007518 5344	subq.w	#1,d4
0000751a 323c00e0	move.w	#$E0,d1
0000751e 4a78ff70	tst.w	(Player_mode).w
00007522 6704	beq.s	+
00007524 04410044	subi.w	#$44,d1
00007530 5c45	addq.w	#6,d5
00007532 51ccfff4	dbf	d4,-
00007536 1143000f	move.b	d3,mainspr_childsprites(a0)
0000753e 7000	moveq	#0,d0
00007540 7200	moveq	#0,d1
00007542 7400	moveq	#0,d2
00007544 7601	moveq	#1,d3
00007546 1038b03e	move.b	(MainCharacter+ss_rings_units).w,d0
0000754a d038b07e	add.b	(Sidekick+ss_rings_units).w,d0
0000754e 1238b03d	move.b	(MainCharacter+ss_rings_tens).w,d1
00007552 d238b07d	add.b	(Sidekick+ss_rings_tens).w,d1
00007556 1438b03c	move.b	(MainCharacter+ss_rings_hundreds).w,d2
0000755a d438b07c	add.b	(Sidekick+ss_rings_hundreds).w,d2
0000755e 0c00000a	cmpi.b	#10,d0
00007562 6506	blo.s	+
00007564 5241	addq.w	#1,d1
00007566 0400000a	subi.b	#10,d0
0000756a 4a01	tst.b	d1
0000756c 6718	beq.s	++
0000756e 0c01000a	cmpi.b	#10,d1
00007572 6508	blo.s	+
00007578 0401000a	subi.b	#10,d1
0000757c 5243	addq.w	#1,d3
0000757e 4a02	tst.b	d2
00007580 670a	beq.s	++
00007582 5243	addq.w	#1,d3
00007584 6006	bra.s	++
00007586 4a02	tst.b	d2
00007588 6702	beq.s	+
0000758a 5443	addq.w	#2,d3
0000758c 43e80010	lea	subspr_data(a0),a1
00007590 1143000f	move.b	d3,mainspr_childsprites(a0)
00007594 0c030002	cmpi.b	#2,d3
00007598 6d22	blt.s	+
0000759a 672c	beq.s	++
0000759c 32bc0078	move.w	#$78,sub2_x_pos-subspr_data(a1)
000075a0 13420005	move.b	d2,sub2_mapframe-subspr_data(a1)
000075a4 337c00800006	move.w	#$80,sub3_x_pos-subspr_data(a1)
000075aa 1341000b	move.b	d1,sub3_mapframe-subspr_data(a1)
000075ae 337c0088000c	move.w	#$88,sub4_x_pos-subspr_data(a1)
000075b4 13400011	move.b	d0,sub4_mapframe-subspr_data(a1)
000075bc 32bc0080	move.w	#$80,sub2_x_pos-subspr_data(a1)
000075c0 13400005	move.b	d0,sub2_mapframe-subspr_data(a1)
000075c8 32bc007c	move.w	#$7C,sub2_x_pos-subspr_data(a1)
000075cc 13410005	move.b	d1,sub2_mapframe-subspr_data(a1)
000075d0 337c00840006	move.w	#$84,sub3_x_pos-subspr_data(a1)
000075d6 1340000b	move.b	d0,sub3_mapframe-subspr_data(a1)
000075de 1038db93	move.b	(SS_2P_BCD_Score).w,d0
000075e2 6602	bne.s	+
000075e4 4e75	rts	
000075e6 43e80010	lea	sub2_x_pos(a0),a1
000075ea 7400	moveq	#0,d2
000075ec 1200	move.b	d0,d1
000075ee 020000f0	andi.b	#$F0,d0
000075f2 6728	beq.s	+
000075f4 5242	addq.w	#1,d2
000075f6 32bc0020	move.w	#$20,(a1)
000075fa 43e90006	lea	next_subspr(a1),a1
000075fe 04000010	subi.b	#$10,d0
00007602 6718	beq.s	+
00007604 5242	addq.w	#1,d2
00007606 32bc0030	move.w	#$30,(a1)
0000760a 43e90006	lea	next_subspr(a1),a1
0000760e 04000010	subi.b	#$10,d0
00007612 6708	beq.s	+
00007614 5242	addq.w	#1,d2
00007616 32bc0040	move.w	#$40,(a1)
0000761a 602c	bra.s	++
0000761c 0201000f	andi.b	#$F,d1
00007620 6726	beq.s	+
00007622 5242	addq.w	#1,d2
00007624 32bc00b8	move.w	#$B8,(a1)
00007628 43e90006	lea	next_subspr(a1),a1
00007630 6716	beq.s	+
00007632 5242	addq.w	#1,d2
00007634 32bc00c8	move.w	#$C8,(a1)
00007638 43e90006	lea	next_subspr(a1),a1
00007640 6706	beq.s	+
00007642 5242	addq.w	#1,d2
00007644 32bc00d8	move.w	#$D8,(a1)
00007648 1142000f	move.b	d2,mainspr_childsprites(a0)
00007650 1038db0d	move.b	(SSTrack_drawing_index).w,d0
00007654 b038db21	cmp.b	(SS_player_anim_frame_timer).w,d0
00007658 6702	beq.s	+
0000765a 4e75	rts	
0000765c 7000	moveq	#0,d0
0000765e 1038db10	move.b	(SSTrack_mapping_frame).w,d0
00007662 d040	add.w	d0,d0
00007664 45fb0024	lea	SSCurveOffsets(pc,d0.w),a2
00007668 101a	move.b	(a2)+,d0
0000766a 4a38db0e	tst.b	(SSTrack_Orientation).w
0000766e 6702	beq.s	+
00007670 4400	neg.b	d0
00007672 4880	ext.w	d0
00007674 06400080	addi.w	#$80,d0
00007678 31c0f73e	move.w	d0,(SS_Offset_X).w
0000767c 1012	move.b	(a2),d0
0000767e 4880	ext.w	d0
00007680 06400036	addi.w	#$36,d0
00007684 31c0f740	move.w	d0,(SS_Offset_Y).w
00007688 4e75	rts	
000076fa 7200	moveq	#0,d1
000076fc 7401	moveq	#1,d2
000076fe 3038fe16	move.w	(Current_Special_StageAndAct).w,d0
00007702 1200	move.b	d0,d1
00007704 e048	lsr.w	#8,d0
00007706 d040	add.w	d0,d0
00007708 d040	add.w	d0,d0
0000770a d041	add.w	d1,d0
0000770c 4a78ff70	tst.w	(Player_mode).w
00007710 6606	bne.s	+
00007712 123b0042	move.b	SpecialStage_RingReq_Team(pc,d0.w),d1
00007716 6004	bra.s	++
00007718 123b0058	move.b	SpecialStage_RingReq_Alone(pc,d0.w),d1
0000771c 31c1db8c	move.w	d1,(SS_Ring_Requirement).w
00007720 7000	moveq	#0,d0
00007722 0c410064	cmpi.w	#100,d1
00007726 6d18	blt.s	+
00007728 5242	addq.w	#1,d2
0000772a 04410064	subi.w	#100,d1
0000772e 303c0100	move.w	#$100,d0
00007732 0c410064	cmpi.w	#100,d1
00007736 6d08	blt.s	+
00007738 04410064	subi.w	#100,d1
0000773c 06400100	addi.w	#$100,d0
00007740 82fc000a	divu.w	#10,d1
00007744 e949	lsl.w	#4,d1
00007746 8001	or.b	d1,d0
00007748 4841	swap	d1
0000774a 8001	or.b	d1,d0
0000774c 3200	move.w	d0,d1
00007754 4e75	rts	
000077a2 4238fe17	clr.b	(Current_Special_Act).w
000077a6 11fc00ffdb4c	move.b	#-1,(SpecialStage_LastSegment2).w
000077ac 31fc0000fe20	move.w	#0,(Ring_count).w
000077b2 31fc0000fed0	move.w	#0,(Ring_count_2P).w
000077b8 11fc0000ff42	move.b	#0,(Perfect_rings_flag).w
000077be 11fc0000ffb0	move.b	#0,(Got_Emerald).w
000077c4 11fc0004db9f	move.b	#4,(SS_Star_color_2).w
000077ca 45f8ffa0	lea	(SS2p_RingBuffer).w,a2
000077ce 7000	moveq	#0,d0
000077d0 34c0	move.w	d0,(a2)+
000077d2 34c0	move.w	d0,(a2)+
000077d4 34c0	move.w	d0,(a2)+
000077d6 34c0	move.w	d0,(a2)+
000077d8 34c0	move.w	d0,(a2)+
000077da 34c0	move.w	d0,(a2)+
000077dc 7018	moveq	#PalID_SS,d0
000077de 6100af32	bsr.w	PalLoad_ForFade
000077e6 7000	moveq	#0,d0
000077e8 1038fe16	move.b	(Current_Special_Stage).w,d0
000077ec d040	add.w	d0,d0
000077ee 3200	move.w	d0,d1
000077f0 4a38fe00	tst.b	(SS_2p_Flag).w
000077f4 670a	beq.s	+
000077f6 0c000004	cmpi.b	#4,d0
000077fa 6504	blo.s	+
00007800 30310000	move.w	(a1,d0.w),d0
00007804 6100af0c	bsr.w	PalLoad_ForFade
00007808 41f88778	lea	(SSRAM_MiscKoz_SpecialObjectLocations).w,a0
0000780c d0f01000	adda.w	(a0,d1.w),a0
00007810 21c8db88	move.l	a0,(SS_CurrentLevelObjectLocations).w
00007814 41f8855c	lea	(SSRAM_MiscNem_SpecialLevelLayout).w,a0
00007818 d0f01000	adda.w	(a0,d1.w),a0
0000781c 21c8db8e	move.l	a0,(SS_CurrentLevelLayout).w
00007820 4e75	rts	
00007842 4e71	nop	
00007844 4ef9000164f4	jmp	(extractJmpToName("JmpTo_DisplaySprite")).l
0000784a 4ef9000157a4	jmp	(extractJmpToName("JmpTo_LoadTitleCardSS")).l
00007850 4ef9000164e6	jmp	(extractJmpToName("JmpTo_DeleteObject")).l
00007856 4ef900035ce2	jmp	(extractJmpToName("JmpTo_Obj5A_CreateRingReqMessage")).l
0000785c 4ef900035daa	jmp	(extractJmpToName("JmpTo_Obj5A_PrintPhrase")).l
00007862 4ef9000163ac	jmp	(extractJmpToName("JmpTo_ObjectMove")).l
00007868 4ef90004106e	jmp	(extractJmpToName("JmpTo_Hud_Base")).l
00007870 6100abf8	bsr.w	Pal_FadeToBlack
00007874 46fc2700	move	#$2700,sr
00007878 3038f60c	move.w	(VDP_Reg1_val).w,d0
0000787c 020000bf	andi.b	#$BF,d0
00007880 33c000c00004	move.w	d0,(VDP_control_port).l
00007886 4df900c00004	lea	(VDP_control_port).l,a6
0000788c 3cbc8004	move.w	#$8004,(a6)
00007890 3cbc8700	move.w	#$8700,(a6)
00007894 61009972	bsr.w	ClearScreen
00007898 43f8b000	lea	(Object_RAM).w,a1
0000789c 7000	moveq	#0,d0
0000789e 323c07ff	move.w	#bytesToLcnt((Object_RAM_End-Object_RAM) - ((Object_RAM)&1)),d1
000078a2 22c0	move.l	d0,(a1)+
000078a4 51c9fffc	dbf	d1,.loop
000078a8 6100015a	bsr.w	ContinueScreen_LoadLetters
000078ac 23fc6000000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_ContinueTails),VRAM,WRITE),(VDP_control_port).l
000078b6 41f90007bdbe	lea	(ArtNem_ContinueTails).l,a0
000078bc 61009c20	bsr.w	NemDec
000078c0 23fc6480000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_MiniContinue),VRAM,WRITE),(VDP_control_port).l
000078ca 41f90007c0aa	lea	(ArtNem_MiniSonic).l,a0
000078d0 0c780002ff70	cmpi.w	#2,(Player_mode).w
000078d6 6606	bne.s	+
000078d8 41f90007c2f2	lea	(ArtNem_MiniTails).l,a0
000078de 61009bfe	bsr.w	NemDec
000078e2 720a	moveq	#$A,d1
000078e4 4eb9000411a4	jsr	(ContScrCounter).l
000078ea 701b	moveq	#PalID_SS1,d0
000078ec 6100ae24	bsr.w	PalLoad_ForFade
000078f0 31fc0000fb80	move.w	#0,(Target_palette).w
000078f6 103c009c	move.b	#MusID_Continue,d0
000078fa 61009a62	bsr.w	PlayMusic
000078fe 31fc0293f614	move.w	#(11*60)-1,(Demo_Time_left).w
00007904 4238f711	clr.b	(Level_started_flag).w
00007908 42b8eef0	clr.l	(Camera_X_pos_copy).w
0000790c 21fc01000000eef4	move.l	#$1000000,(Camera_Y_pos_copy).w
00007914 11fc00dbb000	move.b	#ObjID_ContinueChars,(MainCharacter+id).w
0000791a 11fc00dbb040	move.b	#ObjID_ContinueChars,(Sidekick+id).w
00007920 11fc0006b064	move.b	#6,(Sidekick+routine).w
00007926 11fc00dab080	move.b	#ObjID_ContinueText,(ContinueText+id).w
0000792c 11fc00dab0c0	move.b	#ObjID_ContinueIcons,(ContinueIcons+id).w
00007932 11fc0004b0e4	move.b	#4,(ContinueIcons+routine).w
00007938 4eb900015f9c	jsr	(RunObjects).l
0000793e 4eb900016604	jsr	(BuildSprites).l
00007944 11fc0016f62a	move.b	#VintID_Menu,(Vint_routine).w
0000794a 6100ba38	bsr.w	WaitForVint
0000794e 3038f60c	move.w	(VDP_Reg1_val).w,d0
00007952 00000040	ori.b	#$40,d0
00007956 33c000c00004	move.w	d0,(VDP_control_port).l
0000795c 6100aa68	bsr.w	Pal_FadeFromBlack
00007960 11fc0016f62a	move.b	#VintID_Menu,(Vint_routine).w
00007966 6100ba1c	bsr.w	WaitForVint
0000796a 0c380004b024	cmpi.b	#4,(MainCharacter+routine).w
00007970 641c	bhs.s	+
00007972 46fc2700	move	#$2700,sr
00007976 3238f614	move.w	(Demo_Time_left).w,d1
0000797a 82fc003c	divu.w	#60,d1
0000797e 02810000000f	andi.l	#$F,d1
00007984 4eb9000411a4	jsr	(ContScrCounter).l
0000798a 46fc2300	move	#$2300,sr
0000798e 4eb900015f9c	jsr	(RunObjects).l
00007994 4eb900016604	jsr	(BuildSprites).l
0000799a 0c780180b048	cmpi.w	#$180,(Sidekick+x_pos).w
000079a0 6418	bhs.s	+
000079a2 0c380004b024	cmpi.b	#4,(MainCharacter+routine).w
000079a8 64b6	bhs.s	-
000079aa 4a78f614	tst.w	(Demo_Time_left).w
000079ae 6600ffb0	bne.w	-
000079b2 11fc0000f600	move.b	#GameModeID_SegaScreen,(Game_Mode).w
000079b8 4e75	rts	
000079ba 11fc000cf600	move.b	#GameModeID_Level,(Game_Mode).w
000079c0 11fc0003fe12	move.b	#3,(Life_count).w
000079c6 11fc0003fec6	move.b	#3,(Life_count_2P).w
000079cc 7000	moveq	#0,d0
000079ce 31c0fe20	move.w	d0,(Ring_count).w
000079d2 21c0fe22	move.l	d0,(Timer).w
000079d6 21c0fe26	move.l	d0,(Score).w
000079da 11c0fe30	move.b	d0,(Last_star_pole_hit).w
000079de 31c0fed0	move.w	d0,(Ring_count_2P).w
000079e2 21c0fed2	move.l	d0,(Timer_2P).w
000079e6 21c0fed6	move.l	d0,(Score_2P).w
000079ea 11c0fee0	move.b	d0,(Last_star_pole_hit_2P).w
000079ee 21fc00001388ffc0	move.l	#5000,(Next_Extra_life_score).w
000079f6 21fc00001388ffc4	move.l	#5000,(Next_Extra_life_score_2P).w
000079fe 5338fe18	subq.b	#1,(Continue_count).w
00007a02 4e75	rts	
00007a04 23fc7000000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_TitleCard),VRAM,WRITE),(VDP_control_port).l
00007a0e 41f90007d22c	lea	(ArtNem_TitleCard).l,a0
00007a14 61009ac8	bsr.w	NemDec
00007a18 49f88000	lea	(Level_Layout).w,a4
00007a1c 41f90007d58a	lea	(ArtNem_TitleCard2).l,a0
00007a22 61009acc	bsr.w	NemDecToRAM
00007a26 41f900007a5e	lea	(ContinueScreen_AdditionalLetters).l,a0
00007a2c 23fc7200000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ContinueScreen_Additional),VRAM,WRITE),(VDP_control_port).l
00007a36 43f88000	lea	(Level_Layout).w,a1
00007a3a 4df900c00000	lea	(VDP_data_port).l,a6
00007a40 7000	moveq	#0,d0
00007a42 1018	move.b	(a0)+,d0
00007a44 6b16	bmi.s	+
00007a46 eb48	lsl.w	#5,d0
00007a48 45f10000	lea	(a1,d0.w),a2
00007a4c 7200	moveq	#0,d1
00007a4e 1218	move.b	(a0)+,d1
00007a50 e749	lsl.w	#3,d1
00007a52 5341	subq.w	#1,d1
00007a56 51c9fffc	dbf	d1,-
00007a5a 60e4	bra.s	--
00007a68 7000	moveq	#0,d0
00007a6a 10280024	move.b	routine(a0),d0
00007a6e 323b0006	move.w	ObjDA_Index(pc,d0.w),d1
00007a72 4efb1002	jmp	ObjDA_Index(pc,d1.w)
00007a7e 54280024	addq.b	#2,routine(a0)
00007a82 217c00007cb60004	move.l	#ObjDA_MapUnc_7CB6,mappings(a0)
00007a8a 317c85000002	move.w	#make_art_tile(ArtTile_ArtNem_ContinueText,0,1),art_tile(a0)
00007a94 117c00000001	move.b	#0,render_flags(a0)
00007a9a 117c003c0019	move.b	#60,width_pixels(a0)
00007aa0 317c01200008	move.w	#spriteScreenPositionXCentered(0),x_pixel(a0)
00007aa6 317c00c0000a	move.w	#spriteScreenPositionYCentered(-48),y_pixel(a0)
00007aac 4ef9000164f4	jmp	(DisplaySprite).l
00007ad0 2248	movea.l	a0,a1
00007ad6 7200	moveq	#0,d1
00007ad8 1238fe18	move.b	(Continue_count).w,d1
00007adc 5501	subq.b	#2,d1
00007ade 6406	bcc.s	+
00007ae0 4ef9000164e6	jmp	(DeleteObject).l
00007ae6 7601	moveq	#1,d3
00007ae8 0c01000e	cmpi.b	#$E,d1
00007aec 6504	blo.s	+
00007aee 7600	moveq	#0,d3
00007af0 720e	moveq	#$E,d1
00007af2 1401	move.b	d1,d2
00007af4 02020001	andi.b	#1,d2
00007afe 335a0008	move.w	(a2)+,x_pixel(a1)
00007b02 4a02	tst.b	d2
00007b04 6706	beq.s	+
00007b06 0469000a0008	subi.w	#10,x_pixel(a1)
00007b0c 337c00d0000a	move.w	#spriteScreenPositionYCentered(-32),y_pixel(a1)
00007b12 137c0004001a	move.b	#4,mapping_frame(a1)
00007b18 137c00060024	move.b	#6,routine(a1)
00007b1e 237c00007cb60004	move.l	#ObjDA_MapUnc_7CB6,mappings(a1)
00007b26 337c85240002	move.w	#make_art_tile(ArtTile_ArtNem_ContinueText_2,0,1),art_tile(a1)
00007b30 137c00000001	move.b	#0,render_flags(a1)
00007b36 43e90040	lea	next_object(a1),a1
00007b3a 51c9ffbc	dbf	d1,-
00007b3e 43e9ffc0	lea	-next_object(a1),a1
00007b42 13430028	move.b	d3,subtype(a1)
00007b46 4a280028	tst.b	subtype(a0)
00007b4a 671a	beq.s	+
00007b4c 0c380004b024	cmpi.b	#4,(MainCharacter+routine).w
00007b52 6512	blo.s	+
00007b54 1038fe0f	move.b	(Vint_runcount+3).w,d0
00007b58 02000001	andi.b	#1,d0
00007b5c 6608	bne.s	+
00007b5e 4a78b010	tst.w	(MainCharacter+x_vel).w
00007b62 6618	bne.s	JmpTo2_DeleteObject
00007b64 4e75	rts	
00007b66 1038fe0f	move.b	(Vint_runcount+3).w,d0
00007b6a 0200000f	andi.b	#$F,d0
00007b6e 6606	bne.s	JmpTo3_DisplaySprite
00007b70 08680000001a	bchg	#0,mapping_frame(a0)
00007b76 4ef9000164f4	jmp	(DisplaySprite).l
00007b7c 4ef9000164e6	jmp	(DeleteObject).l
00007b82 7000	moveq	#0,d0
00007b84 10280024	move.b	routine(a0),d0
00007b88 323b000c	move.w	ObjDB_Index(pc,d0.w),d1
00007b8c 4ebb1008	jsr	ObjDB_Index(pc,d1.w)
00007b90 4ef9000164f4	jmp	(DisplaySprite).l
00007ba2 54280024	addq.b	#2,routine(a0)
00007ba6 317c009c0008	move.w	#$9C,x_pos(a0)
00007bac 317c019c000c	move.w	#$19C,y_pos(a0)
00007bb2 217c0006fbe00004	move.l	#MapUnc_Sonic,mappings(a0)
00007bba 317c07800002	move.w	#make_art_tile(ArtTile_ArtUnc_Sonic,0,0),art_tile(a0)
00007bc0 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00007bc6 117c00020018	move.b	#2,priority(a0)
00007bcc 117c0020001c	move.b	#AniIDSonAni_Lying,anim(a0)
00007bd2 4a38f605	tst.b	(Ctrl_1_Press).w
00007bd6 6b0c	bmi.s	ObjDB_Sonic_StartRunning
00007bd8 4eb90001b350	jsr	(Sonic_Animate).l
00007bde 4ef90001b848	jmp	(LoadSonicDynPLC).l
00007be4 54280024	addq.b	#2,routine(a0)
00007be8 117c0021001c	move.b	#AniIDSonAni_LieDown,anim(a0)
00007bee 42680014	clr.w	inertia(a0)
00007bf2 103c00e0	move.b	#SndID_SpindashRev,d0
00007bf6 61009778	bsr.w	PlaySound
00007bfa 0c6808000014	cmpi.w	#$800,inertia(a0)
00007c00 6608	bne.s	+
00007c02 317c10000010	move.w	#$1000,x_vel(a0)
00007c08 6006	bra.s	++
00007c0a 066800200014	addi.w	#$20,inertia(a0)
00007c10 4eb9000163ac	jsr	(ObjectMove).l
00007c16 4eb90001b350	jsr	(Sonic_Animate).l
00007c1c 4ef90001b848	jmp	(LoadSonicDynPLC).l
00007c22 54280024	addq.b	#2,routine(a0)
00007c26 317c00b80008	move.w	#$B8,x_pos(a0)
00007c2c 317c01a0000c	move.w	#$1A0,y_pos(a0)
00007c32 217c00007cb60004	move.l	#ObjDA_MapUnc_7CB6,mappings(a0)
00007c3a 317c05000002	move.w	#make_art_tile(ArtTile_ArtNem_ContinueTails,0,0),art_tile(a0)
00007c40 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00007c46 117c00020018	move.b	#2,priority(a0)
00007c4c 117c0000001c	move.b	#0,anim(a0)
00007c52 4a38f605	tst.b	(Ctrl_1_Press).w
00007c56 6b0c	bmi.s	ObjDB_Tails_StartRunning
00007c58 43f900007cb0	lea	(Ani_objDB).l,a1
00007c5e 4ef900016544	jmp	(AnimateSprite).l
00007c64 54280024	addq.b	#2,routine(a0)
00007c68 217c000739e20004	move.l	#MapUnc_Tails,mappings(a0)
00007c70 317c07a00002	move.w	#make_art_tile(ArtTile_ArtUnc_Tails,0,0),art_tile(a0)
00007c76 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
00007c7c 42680014	clr.w	inertia(a0)
00007c80 103c00e0	move.b	#SndID_SpindashRev,d0
00007c84 610096ea	bsr.w	PlaySound
00007c88 0c6807200014	cmpi.w	#$720,inertia(a0)
00007c8e 6608	bne.s	+
00007c90 317c10000010	move.w	#$1000,x_vel(a0)
00007c96 6006	bra.s	++
00007c98 066800180014	addi.w	#$18,inertia(a0)
00007c9e 4eb9000163ac	jsr	(ObjectMove).l
00007ca4 4eb90001cdc4	jsr	(Tails_Animate).l
00007caa 4ef90001d1ac	jmp	(LoadTailsDynPLC).l
00007d44 4ef900016d8a	jmp	(extractJmpToName("JmpTo_Adjust2PArtPointer2")).l
00007d4a 4ef900016d6e	jmp	(extractJmpToName("JmpTo_Adjust2PArtPointer")).l
00007d50 6100a718	bsr.w	Pal_FadeToBlack
00007d54 46fc2700	move	#$2700,sr
00007d58 3038f60c	move.w	(VDP_Reg1_val).w,d0
00007d5c 020000bf	andi.b	#$BF,d0
00007d60 33c000c00004	move.w	d0,(VDP_control_port).l
00007d66 610094a0	bsr.w	ClearScreen
00007d6a 4df900c00004	lea	(VDP_control_port).l,a6
00007d70 3cbc8004	move.w	#$8004,(a6)
00007d74 3cbc8230	move.w	#$8200|(VRAM_Menu_Plane_A_Name_Table/$400),(a6)
00007d78 3cbc8407	move.w	#$8400|(VRAM_Menu_Plane_B_Name_Table/$2000),(a6)
00007d7c 3cbc8230	move.w	#$8200|(VRAM_Menu_Plane_A_Name_Table/$400),(a6)
00007d80 3cbc8700	move.w	#$8700,(a6)
00007d84 3cbc8c81	move.w	#$8C81,(a6)
00007d88 3cbc9001	move.w	#$9001,(a6)
00007d8c 43f8ac00	lea	(Object_Display_Lists).w,a1
00007d90 7000	moveq	#0,d0
00007d92 323c00ff	move.w	#bytesToLcnt((Object_Display_Lists_End-Object_Display_Lists) - ((Object_Display_Lists)&1)),d1
00007d96 22c0	move.l	d0,(a1)+
00007d98 51c9fffc	dbf	d1,.loop
00007d9c 43f8b000	lea	(Object_RAM).w,a1
00007da0 7000	moveq	#0,d0
00007da2 323c07ff	move.w	#bytesToLcnt((Object_RAM_End-Object_RAM) - ((Object_RAM)&1)),d1
00007da6 22c0	move.l	d0,(a1)+
00007da8 51c9fffc	dbf	d1,.loop
00007dac 23fc4200000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_FontStuff),VRAM,WRITE),(VDP_control_port).l
00007db6 41f90007c43a	lea	(ArtNem_FontStuff).l,a0
00007dbc 61009720	bsr.w	NemDec
00007dc0 23fc4e00000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_1P2PWins),VRAM,WRITE),(VDP_control_port).l
00007dca 41f90007c9ae	lea	(ArtNem_1P2PWins).l,a0
00007dd0 6100970c	bsr.w	NemDec
00007dd4 43f9ffff0000	lea	(Chunk_Table).l,a1
00007dda 41f90007cb80	lea	(MapEng_MenuBack).l,a0
00007de0 303c6000	move.w	#make_art_tile(ArtTile_VRAM_Start,3,0),d0
00007de4 610099d6	bsr.w	EniDec
00007de8 43f9ffff0000	lea	(Chunk_Table).l,a1
00007dee 203c60000003	move.l	#vdpComm(VRAM_Plane_B_Name_Table,VRAM,WRITE),d0
00007df4 7227	moveq	#40-1,d1
00007df6 741b	moveq	#28-1,d2
00007df8 61009614	bsr.w	PlaneMapToVRAM_H40
00007dfc 3038ff10	move.w	(Results_Screen_2P).w,d0
00007e00 d040	add.w	d0,d0
00007e02 d040	add.w	d0,d0
00007e04 d040	add.w	d0,d0
00007e06 45fa09d4	lea	TwoPlayerResultsPointers(pc),a2
00007e0a 20720000	movea.l	(a2,d0.w),a0
00007e0e 24720004	movea.l	4(a2,d0.w),a2
00007e12 43f9ffff0000	lea	(Chunk_Table).l,a1
00007e18 303c0000	move.w	#make_art_tile(ArtTile_VRAM_Start,0,0),d0
00007e1c 6100999e	bsr.w	EniDec
00007e20 4e92	jsr	(a2)
00007e22 43f9ffff0000	lea	(Chunk_Table).l,a1
00007e28 203c40000003	move.l	#vdpComm(tiles_to_bytes(ArtTile_TwoPlayerResults),VRAM,WRITE),d0
00007e2e 7227	moveq	#40-1,d1
00007e30 741b	moveq	#28-1,d2
00007e32 610095da	bsr.w	PlaneMapToVRAM_H40
00007e36 4278dc00	clr.w	(VDP_Command_Buffer).w
00007e3a 21fcffffdc00dcfc	move.l	#VDP_Command_Buffer,(VDP_Command_Buffer_Slot).w
00007e42 4238f711	clr.b	(Level_started_flag).w
00007e46 4278f7f0	clr.w	(Anim_Counters).w
00007e4a 45f9000087c6	lea	(Anim_SonicMilesBG).l,a2
00007e54 7000	moveq	#PLCID_Std1,d0
00007e56 610097f8	bsr.w	LoadPLC2
00007e5a 7026	moveq	#PalID_Menu,d0
00007e5c 6100a8b4	bsr.w	PalLoad_ForFade
00007e60 7000	moveq	#0,d0
00007e62 103c0081	move.b	#MusID_2PResult,d0
00007e66 b078ff90	cmp.w	(Level_Music).w,d0
00007e6a 6708	beq.s	+
00007e6c 31c0ff90	move.w	d0,(Level_Music).w
00007e70 610094ec	bsr.w	PlayMusic
00007e74 31fc0707f614	move.w	#(30*60)-1,(Demo_Time_left).w
00007e7a 4278ffd8	clr.w	(Two_player_mode).w
00007e7e 42b8ee00	clr.l	(Camera_X_pos).w
00007e82 42b8ee04	clr.l	(Camera_Y_pos).w
00007e86 42b8f616	clr.l	(Vscroll_Factor).w
00007e8a 42b8f61e	clr.l	(Vscroll_Factor_P2).w
00007e8e 42b8eeec	clr.l	(Vscroll_Factor_P2_HInt).w
00007e92 11fc0021b000	move.b	#ObjID_2PResults,(VSResults_HUD+id).w
00007e98 11fc0016f62a	move.b	#VintID_Menu,(Vint_routine).w
00007e9e 6100b4e4	bsr.w	WaitForVint
00007ea2 3038f60c	move.w	(VDP_Reg1_val).w,d0
00007ea6 00000040	ori.b	#$40,d0
00007eaa 33c000c00004	move.w	d0,(VDP_control_port).l
00007eb0 6100a514	bsr.w	Pal_FadeFromBlack
00007eba 6100b4c8	bsr.w	WaitForVint
00007ebe 45f9000087c6	lea	(Anim_SonicMilesBG).l,a2
00007ec8 4eb900015f9c	jsr	(RunObjects).l
00007ece 4eb900016604	jsr	(BuildSprites).l
00007ed4 610097b4	bsr.w	RunPLC_RAM
00007ed8 4ab8f680	tst.l	(Plc_Buffer).w
00007edc 66d6	bne.s	-
00007ede 1038f605	move.b	(Ctrl_1_Press).w,d0
00007ee2 8038f607	or.b	(Ctrl_2_Press).w,d0
00007ee6 02000080	andi.b	#button_start_mask,d0
00007eea 67c8	beq.s	-
00007eec 3038ff10	move.w	(Results_Screen_2P).w,d0
00007ef0 660000c0	bne.w	TwoPlayerResultsDone_Zone
00007ef4 4a38fe11	tst.b	(Current_Act).w
00007ef8 6642	bne.s	+
00007efa 5238fe11	addq.b	#1,(Current_Act).w
00007efe 11fc0001ff89	move.b	#1,(Current_Act_2P).w
00007f04 11fc000cf600	move.b	#GameModeID_Level,(Game_Mode).w
00007f0a 11fc0000fe30	move.b	#0,(Last_star_pole_hit).w
00007f10 11fc0000fee0	move.b	#0,(Last_star_pole_hit_2P).w
00007f16 7001	moveq	#1,d0
00007f18 31c0ffd8	move.w	d0,(Two_player_mode).w
00007f1c 31c0ff8a	move.w	d0,(Two_player_mode_copy).w
00007f20 7000	moveq	#0,d0
00007f22 21c0fe26	move.l	d0,(Score).w
00007f26 21c0fed6	move.l	d0,(Score_2P).w
00007f2a 21fc00001388ffc0	move.l	#5000,(Next_Extra_life_score).w
00007f32 21fc00001388ffc4	move.l	#5000,(Next_Extra_life_score_2P).w
00007f3a 4e75	rts	
00007f3c 11fc0002ff89	move.b	#2,(Current_Act_2P).w
00007f42 61000560	bsr.w	sub_84A4
00007f46 49f8ff38	lea	(SS_Total_Won).w,a4
00007f4a 4254	clr.w	(a4)
00007f4c 614c	bsr.s	sub_7F9A
00007f4e 614a	bsr.s	sub_7F9A
00007f50 1214	move.b	(a4),d1
00007f52 922c0001	sub.b	1(a4),d1
00007f56 670e	beq.s	+
00007f58 31fc0001ff10	move.w	#VsRSID_Zone,(Results_Screen_2P).w
00007f5e 11fc0018f600	move.b	#GameModeID_2PResults,(Game_Mode).w
00007f64 4e75	rts	
00007f66 1038ff88	move.b	(Current_Zone_2P).w,d0
00007f6a 5200	addq.b	#1,d0
00007f6c 11c0fe16	move.b	d0,(Current_Special_Stage).w
00007f70 31fc0003ff10	move.w	#VsRSID_SS,(Results_Screen_2P).w
00007f76 11fc0001f7cd	move.b	#1,(f_bigring).w
00007f7c 11fc0010f600	move.b	#GameModeID_SpecialStage,(Game_Mode).w
00007f82 7001	moveq	#1,d0
00007f84 31c0ffd8	move.w	d0,(Two_player_mode).w
00007f88 31c0ff8a	move.w	d0,(Two_player_mode_copy).w
00007f8c 11fc0000fe30	move.b	#0,(Last_star_pole_hit).w
00007f92 11fc0000fee0	move.b	#0,(Last_star_pole_hit_2P).w
00007f98 4e75	rts	
00007f9a 7200	moveq	#0,d1
00007f9c 1215	move.b	(a5),d1
00007f9e 922d0001	sub.b	1(a5),d1
00007fa2 670a	beq.s	++
00007fa4 6504	bcs.s	+
00007fa6 5214	addq.b	#1,(a4)
00007fa8 6004	bra.s	++
00007faa 522c0001	addq.b	#1,1(a4)
00007fae 544d	addq.w	#2,a5
00007fb0 4e75	rts	
00007fb2 5340	subq.w	#1,d0
00007fb4 666a	bne.s	TwoPlayerResultsDone_Game
00007fb6 49f8ff20	lea	(Results_Data_2P).w,a4
00007fba 7000	moveq	#0,d0
00007fbc 7200	moveq	#0,d1
00007fbe 301c	move.w	(a4)+,d0
00007fc0 d280	add.l	d0,d1
00007fc2 301c	move.w	(a4)+,d0
00007fc4 d280	add.l	d0,d1
00007fc6 544c	addq.w	#2,a4
00007fc8 301c	move.w	(a4)+,d0
00007fca d280	add.l	d0,d1
00007fcc 301c	move.w	(a4)+,d0
00007fce d280	add.l	d0,d1
00007fd0 544c	addq.w	#2,a4
00007fd2 301c	move.w	(a4)+,d0
00007fd4 d280	add.l	d0,d1
00007fd6 301c	move.w	(a4)+,d0
00007fd8 d280	add.l	d0,d1
00007fda 544c	addq.w	#2,a4
00007fdc 301c	move.w	(a4)+,d0
00007fde d280	add.l	d0,d1
00007fe0 301c	move.w	(a4)+,d0
00007fe2 d280	add.l	d0,d1
00007fe4 4841	swap	d1
00007fe6 4a41	tst.w	d1
00007fe8 660e	bne.s	+
00007fea 31fc0002ff10	move.w	#VsRSID_Game,(Results_Screen_2P).w
00007ff0 11fc0018f600	move.b	#GameModeID_2PResults,(Game_Mode).w
00007ff6 4e75	rts	
00007ff8 4a78ff98	tst.w	(Game_Over_2P).w
00007ffc 671a	beq.s	+
00007ffe 43f8ff20	lea	(Results_Data_2P).w,a1
00008002 700b	moveq	#bytesToWcnt(Results_Data_2P_End-Results_Data_2P),d0
00008008 51c8fffa	dbf	d0,-
0000800c 11fc0003fe12	move.b	#3,(Life_count).w
00008012 11fc0003fec6	move.b	#3,(Life_count_2P).w
00008018 11fc001cf600	move.b	#GameModeID_2PLevelSelect,(Game_Mode).w
0000801e 4e75	rts	
00008020 5340	subq.w	#1,d0
00008022 6608	bne.s	TwoPlayerResultsDone_SpecialStage
00008024 11fc0000f600	move.b	#GameModeID_SegaScreen,(Game_Mode).w
0000802a 4e75	rts	
0000802c 5340	subq.w	#1,d0
0000802e 6600008a	bne.w	TwoPlayerResultsDone_SpecialStages
00008032 0c380003ff88	cmpi.b	#3,(Current_Zone_2P).w
00008038 670e	beq.s	+
0000803a 31fc0001ff10	move.w	#VsRSID_Zone,(Results_Screen_2P).w
00008040 11fc0018f600	move.b	#GameModeID_2PResults,(Game_Mode).w
00008046 4e75	rts	
00008048 4a38ff89	tst.b	(Current_Act_2P).w
0000804c 671e	beq.s	+
0000804e 0c380002ff89	cmpi.b	#2,(Current_Act_2P).w
00008054 6756	beq.s	loc_80AC
00008056 6100044c	bsr.w	sub_84A4
0000805a 49f8ff38	lea	(SS_Total_Won).w,a4
0000805e 4254	clr.w	(a4)
00008060 6132	bsr.s	sub_8094
00008062 6130	bsr.s	sub_8094
00008064 1214	move.b	(a4),d1
00008066 922c0001	sub.b	1(a4),d1
0000806a 6640	bne.s	loc_80AC
0000806c 5238ff89	addq.b	#1,(Current_Act_2P).w
00008070 5238fe16	addq.b	#1,(Current_Special_Stage).w
00008074 31fc0003ff10	move.w	#VsRSID_SS,(Results_Screen_2P).w
0000807a 11fc0001f7cd	move.b	#1,(f_bigring).w
00008080 11fc0010f600	move.b	#GameModeID_SpecialStage,(Game_Mode).w
00008086 31fc0001ffd8	move.w	#1,(Two_player_mode).w
0000808c 31fc0000ff90	move.w	#0,(Level_Music).w
00008092 4e75	rts	
00008094 7200	moveq	#0,d1
00008096 1215	move.b	(a5),d1
00008098 922d0001	sub.b	1(a5),d1
0000809c 670a	beq.s	++
0000809e 6504	bcs.s	+
000080a0 5214	addq.b	#1,(a4)
000080a2 6004	bra.s	++
000080a4 522c0001	addq.b	#1,1(a4)
000080a8 544d	addq.w	#2,a5
000080aa 4e75	rts	
000080ac 31fc0004ff10	move.w	#VsRSID_SSZone,(Results_Screen_2P).w
000080b2 11fc0018f600	move.b	#GameModeID_2PResults,(Game_Mode).w
000080b8 4e75	rts	
000080ba 6000fefa	bra.w	TwoPlayerResultsDone_ZoneOrSpecialStages
000080be 7000	moveq	#0,d0
000080c0 10280024	move.b	routine(a0),d0
000080c4 323b0006	move.w	Obj21_Index(pc,d0.w),d1
000080c8 4efb1002	jmp	Obj21_Index(pc,d1.w)
000080e4 54280024	addq.b	#2,routine(a0)
000080e8 3038ff10	move.w	(Results_Screen_2P).w,d0
000080ec d040	add.w	d0,d0
000080ee d040	add.w	d0,d0
000080f0 217b00de0008	move.l	Obj21_PositionTable(pc,d0.w),x_pixel(a0)
000080f6 217c000081460004	move.l	#Obj21_MapUnc_8146,mappings(a0)
000080fe 317c00700002	move.w	#make_art_tile(ArtTile_ArtNem_1P2PWins,0,0),art_tile(a0)
00008108 117c00000001	move.b	#0,render_flags(a0)
0000810e 117c00000018	move.b	#0,priority(a0)
00008114 7202	moveq	#2,d1
00008116 1038ff38	move.b	(SS_Total_Won).w,d0
0000811a 9038ff39	sub.b	(SS_Total_Won+1).w,d0
0000811e 6708	beq.s	++
00008120 6504	bcs.s	+
00008122 7200	moveq	#0,d1
00008124 6002	bra.s	++
00008126 7201	moveq	#1,d1
00008128 1141001a	move.b	d1,mapping_frame(a0)
0000812c 026807ff0002	andi.w	#tile_mask,art_tile(a0)
00008132 08380003fe0f	btst	#3,(Vint_runcount+3).w
00008138 6706	beq.s	JmpTo4_DisplaySprite
0000813a 006820000002	ori.w	#palette_line_1,art_tile(a0)
00008140 4ef9000164f4	jmp	(DisplaySprite).l
0000819a 343c01f2	move.w	#$1F2,d2
0000819e 7000	moveq	#0,d0
000081a0 610004d0	bsr.w	sub_8672
000081a4 343c0216	move.w	#$216,d2
000081a8 7200	moveq	#0,d1
000081aa 1238ff89	move.b	(Current_Act_2P).w,d1
000081ae 5201	addq.b	#1,d1
000081b0 610004fe	bsr.w	sub_86B0
000081b4 343c033e	move.w	#$33E,d2
000081b8 2238fe26	move.l	(Score).w,d1
000081bc 61000538	bsr.w	sub_86F6
000081c0 343c0352	move.w	#$352,d2
000081c4 2238fed6	move.l	(Score_2P).w,d1
000081c8 6100052c	bsr.w	sub_86F6
000081cc 343c03da	move.w	#$3DA,d2
000081d0 7000	moveq	#0,d0
000081d2 3238fe22	move.w	(Timer_minute_word).w,d1
000081d6 610004d8	bsr.w	sub_86B0
000081da 343c03e0	move.w	#$3E0,d2
000081de 7200	moveq	#0,d1
000081e0 1238fe24	move.b	(Timer_second).w,d1
000081e4 610004ca	bsr.w	sub_86B0
000081e8 343c03e6	move.w	#$3E6,d2
000081ec 7200	moveq	#0,d1
000081ee 1238fe25	move.b	(Timer_frame).w,d1
000081f2 c2fc01b0	mulu.w	#$1B0,d1
000081f6 e089	lsr.l	#8,d1
000081f8 610004b6	bsr.w	sub_86B0
000081fc 343c03ee	move.w	#$3EE,d2
00008200 7000	moveq	#0,d0
00008202 3238fed2	move.w	(Timer_minute_word_2P).w,d1
00008206 610004a8	bsr.w	sub_86B0
0000820a 343c03f4	move.w	#$3F4,d2
0000820e 7200	moveq	#0,d1
00008210 1238fed4	move.b	(Timer_second_2P).w,d1
00008214 6100049a	bsr.w	sub_86B0
00008218 343c03fa	move.w	#$3FA,d2
0000821c 7200	moveq	#0,d1
0000821e 1238fed5	move.b	(Timer_frame_2P).w,d1
00008222 c2fc01b0	mulu.w	#$1B0,d1
00008226 e089	lsr.l	#8,d1
00008228 61000486	bsr.w	sub_86B0
0000822c 343c0486	move.w	#$486,d2
00008230 7000	moveq	#0,d0
00008232 3238fe20	move.w	(Ring_count).w,d1
00008236 61000478	bsr.w	sub_86B0
0000823a 343c049a	move.w	#$49A,d2
0000823e 3238fed0	move.w	(Ring_count_2P).w,d1
00008242 6100046c	bsr.w	sub_86B0
00008246 343c0526	move.w	#$526,d2
0000824a 7000	moveq	#0,d0
0000824c 3238fef0	move.w	(Rings_Collected).w,d1
00008250 6100045e	bsr.w	sub_86B0
00008254 343c053a	move.w	#$53A,d2
00008258 3238fef2	move.w	(Rings_Collected_2P).w,d1
0000825c 61000452	bsr.w	sub_86B0
00008260 343c05c6	move.w	#$5C6,d2
00008264 7000	moveq	#0,d0
00008266 3238fef4	move.w	(Monitors_Broken).w,d1
0000826a 61000444	bsr.w	sub_86B0
0000826e 343c05da	move.w	#$5DA,d2
00008272 3238fef6	move.w	(Monitors_Broken_2P).w,d1
00008276 61000438	bsr.w	sub_86B0
0000827a 610001fa	bsr.w	sub_8476
0000827e 343c0364	move.w	#$364,d2
00008282 303c6000	move.w	#$6000,d0
00008286 2238fe26	move.l	(Score).w,d1
0000828a 92b8fed6	sub.l	(Score_2P).w,d1
0000828e 610003c2	bsr.w	sub_8652
00008292 343c0404	move.w	#$404,d2
00008296 2238fed2	move.l	(Timer_2P).w,d1
0000829a 92b8fe22	sub.l	(Timer).w,d1
0000829e 610003b2	bsr.w	sub_8652
000082a2 343c04a4	move.w	#$4A4,d2
000082a6 7200	moveq	#0,d1
000082a8 3238fe20	move.w	(Ring_count).w,d1
000082ac 9278fed0	sub.w	(Ring_count_2P).w,d1
000082b0 610003a0	bsr.w	sub_8652
000082b4 343c0544	move.w	#$544,d2
000082b8 7200	moveq	#0,d1
000082ba 3238fef0	move.w	(Rings_Collected).w,d1
000082be 9278fef2	sub.w	(Rings_Collected_2P).w,d1
000082c2 6100038e	bsr.w	sub_8652
000082c6 343c05e4	move.w	#$5E4,d2
000082ca 7200	moveq	#0,d1
000082cc 3238fef4	move.w	(Monitors_Broken).w,d1
000082d0 9278fef6	sub.w	(Monitors_Broken_2P).w,d1
000082d4 6100037c	bsr.w	sub_8652
000082d8 343c0706	move.w	#$706,d2
000082dc 7000	moveq	#0,d0
000082de 7200	moveq	#0,d1
000082e0 1214	move.b	(a4),d1
000082e2 610003cc	bsr.w	sub_86B0
000082e6 343c070e	move.w	#$70E,d2
000082ea 7200	moveq	#0,d1
000082ec 122c0001	move.b	1(a4),d1
000082f0 610003be	bsr.w	sub_86B0
000082f4 31d4ff38	move.w	(a4),(SS_Total_Won).w
000082f8 4e75	rts	
000082fa 343c0242	move.w	#$242,d2
000082fe 7000	moveq	#0,d0
00008300 61000370	bsr.w	sub_8672
00008304 6100019e	bsr.w	sub_84A4
00008308 49f8ff38	lea	(SS_Total_Won).w,a4
0000830c 4254	clr.w	(a4)
0000830e 3c3c0398	move.w	#$398,d6
00008312 61000236	bsr.w	sub_854A
00008316 3c3c0488	move.w	#$488,d6
0000831a 6100022e	bsr.w	sub_854A
0000831e 3c3c0618	move.w	#$618,d6
00008322 61000226	bsr.w	sub_854A
00008326 4e75	rts	
00008328 4bf8ff20	lea	(Results_Data_2P).w,a5
0000832c 49f8ff38	lea	(SS_Total_Won).w,a4
00008330 4254	clr.w	(a4)
00008332 3c3c0208	move.w	#$208,d6
00008336 6100018c	bsr.w	sub_84C4
0000833a 3c3c0258	move.w	#$258,d6
0000833e 61000184	bsr.w	sub_84C4
00008342 3c3c02a8	move.w	#$2A8,d6
00008346 6100017c	bsr.w	sub_84C4
0000834a 3c3c0348	move.w	#$348,d6
0000834e 61000174	bsr.w	sub_84C4
00008352 3c3c0398	move.w	#$398,d6
00008356 6100016c	bsr.w	sub_84C4
0000835a 3c3c03e8	move.w	#$3E8,d6
0000835e 61000164	bsr.w	sub_84C4
00008362 3c3c0488	move.w	#$488,d6
00008366 6100015c	bsr.w	sub_84C4
0000836a 3c3c04d8	move.w	#$4D8,d6
0000836e 61000154	bsr.w	sub_84C4
00008372 3c3c0528	move.w	#$528,d6
00008376 6100014c	bsr.w	sub_84C4
0000837a 3c3c05c8	move.w	#$5C8,d6
0000837e 61000144	bsr.w	sub_84C4
00008382 3c3c0618	move.w	#$618,d6
00008386 6100013c	bsr.w	sub_84C4
0000838a 3c3c0668	move.w	#$668,d6
0000838e 61000134	bsr.w	sub_84C4
00008392 343c070a	move.w	#$70A,d2
00008396 7000	moveq	#0,d0
00008398 7200	moveq	#0,d1
0000839a 1214	move.b	(a4),d1
0000839c 61000312	bsr.w	sub_86B0
000083a0 343c0710	move.w	#$710,d2
000083a4 7200	moveq	#0,d1
000083a6 122c0001	move.b	1(a4),d1
000083aa 61000304	bsr.w	sub_86B0
000083ae 4e75	rts	
000083b0 343c0266	move.w	#$266,d2
000083b4 7200	moveq	#0,d1
000083b6 1238ff89	move.b	(Current_Act_2P).w,d1
000083ba 5201	addq.b	#1,d1
000083bc 610002f2	bsr.w	sub_86B0
000083c0 343c04d6	move.w	#$4D6,d2
000083c4 7000	moveq	#0,d0
000083c6 3238ffa0	move.w	(SS2p_RingBuffer).w,d1
000083ca 610002e4	bsr.w	sub_86B0
000083ce 343c04e6	move.w	#$4E6,d2
000083d2 3238ffa2	move.w	(SS2p_RingBuffer+2).w,d1
000083d6 610002d8	bsr.w	sub_86B0
000083da 343c0576	move.w	#$576,d2
000083de 7000	moveq	#0,d0
000083e0 3238ffa4	move.w	(SS2p_RingBuffer+4).w,d1
000083e4 610002ca	bsr.w	sub_86B0
000083e8 343c0586	move.w	#$586,d2
000083ec 3238ffa6	move.w	(SS2p_RingBuffer+6).w,d1
000083f0 610002be	bsr.w	sub_86B0
000083f4 343c0616	move.w	#$616,d2
000083f8 7000	moveq	#0,d0
000083fa 3238ffa8	move.w	(SS2p_RingBuffer+8).w,d1
000083fe 610002b0	bsr.w	sub_86B0
00008402 343c0626	move.w	#$626,d2
00008406 3238ffaa	move.w	(SS2p_RingBuffer+$A).w,d1
0000840a 610002a4	bsr.w	sub_86B0
0000840e 61000066	bsr.w	sub_8476
00008412 303c6000	move.w	#$6000,d0
00008416 343c04f0	move.w	#$4F0,d2
0000841a 7200	moveq	#0,d1
0000841c 3238ffa0	move.w	(SS2p_RingBuffer).w,d1
00008420 9278ffa2	sub.w	(SS2p_RingBuffer+2).w,d1
00008424 6100022c	bsr.w	sub_8652
00008428 343c0590	move.w	#$590,d2
0000842c 7200	moveq	#0,d1
0000842e 3238ffa4	move.w	(SS2p_RingBuffer+4).w,d1
00008432 9278ffa6	sub.w	(SS2p_RingBuffer+6).w,d1
00008436 6100021a	bsr.w	sub_8652
0000843a 343c0630	move.w	#$630,d2
0000843e 7200	moveq	#0,d1
00008440 3238ffa8	move.w	(SS2p_RingBuffer+8).w,d1
00008444 9278ffaa	sub.w	(SS2p_RingBuffer+$A).w,d1
00008448 61000208	bsr.w	sub_8652
0000844c 31d4ff38	move.w	(a4),(SS_Total_Won).w
00008450 4e75	rts	
00008452 61000050	bsr.w	sub_84A4
00008456 49f8ff38	lea	(SS_Total_Won).w,a4
0000845a 4254	clr.w	(a4)
0000845c 3c3c04d4	move.w	#$4D4,d6
00008460 6100016c	bsr.w	sub_85CE
00008464 3c3c0574	move.w	#$574,d6
00008468 61000164	bsr.w	sub_85CE
0000846c 3c3c0614	move.w	#$614,d6
00008470 6100015c	bsr.w	sub_85CE
00008474 4e75	rts	
00008476 49f8ff20	lea	(EHZ_Results_2P).w,a4
0000847a 1038ff88	move.b	(Current_Zone_2P).w,d0
0000847e 6714	beq.s	+
00008480 49f8ff26	lea	(MCZ_Results_2P).w,a4
00008484 5300	subq.b	#1,d0
00008486 670c	beq.s	+
00008488 49f8ff2c	lea	(CNZ_Results_2P).w,a4
0000848c 5300	subq.b	#1,d0
0000848e 6704	beq.s	+
00008490 49f8ff32	lea	(SS_Results_2P).w,a4
00008494 7000	moveq	#0,d0
00008496 1038ff89	move.b	(Current_Act_2P).w,d0
0000849a d040	add.w	d0,d0
0000849c 49f40000	lea	(a4,d0.w),a4
000084a0 4254	clr.w	(a4)
000084a2 4e75	rts	
000084a4 4bf8ff20	lea	(EHZ_Results_2P).w,a5
000084a8 1038ff88	move.b	(Current_Zone_2P).w,d0
000084ac 6714	beq.s	+
000084ae 4bf8ff26	lea	(MCZ_Results_2P).w,a5
000084b2 5300	subq.b	#1,d0
000084b4 670c	beq.s	+
000084b6 4bf8ff2c	lea	(CNZ_Results_2P).w,a5
000084ba 5300	subq.b	#1,d0
000084bc 6704	beq.s	+
000084be 4bf8ff32	lea	(SS_Results_2P).w,a5
000084c2 4e75	rts	
000084c4 3015	move.w	(a5),d0
000084c6 6b34	bmi.s	+
000084c8 3406	move.w	d6,d2
000084ca 7000	moveq	#0,d0
000084cc 7200	moveq	#0,d1
000084ce 1215	move.b	(a5),d1
000084d0 610001de	bsr.w	sub_86B0
000084d4 5046	addq.w	#8,d6
000084d6 3406	move.w	d6,d2
000084d8 7200	moveq	#0,d1
000084da 122d0001	move.b	1(a5),d1
000084de 610001d0	bsr.w	sub_86B0
000084e2 06460012	addi.w	#$12,d6
000084e6 3406	move.w	d6,d2
000084e8 303c6000	move.w	#$6000,d0
000084ec 7200	moveq	#0,d1
000084ee 1215	move.b	(a5),d1
000084f0 922d0001	sub.b	1(a5),d1
000084f4 6100015c	bsr.w	sub_8652
000084f8 544d	addq.w	#2,a5
000084fa 4e75	rts	
000084fc 5846	addq.w	#4,d6
000084fe 4640	not.w	d0
00008500 6620	bne.s	+
00008502 43f9000087ac	lea	(Text2P_NoGame).l,a1
00008508 3406	move.w	d6,d2
0000850a 6100018c	bsr.w	loc_8698
0000850e 06460016	addi.w	#$16,d6
00008512 3406	move.w	d6,d2
00008514 43f9000087c1	lea	(Text2P_Blank).l,a1
0000851a 6100017c	bsr.w	loc_8698
0000851e 544d	addq.w	#2,a5
00008520 4e75	rts	
00008522 7000	moveq	#0,d0
00008524 43f900008798	lea	(Text2P_GameOver).l,a1
0000852a 3406	move.w	d6,d2
0000852c 6100016a	bsr.w	loc_8698
00008530 06460016	addi.w	#$16,d6
00008534 3406	move.w	d6,d2
00008536 303c6000	move.w	#$6000,d0
0000853a 7200	moveq	#0,d1
0000853c 1215	move.b	(a5),d1
0000853e 922d0001	sub.b	1(a5),d1
00008542 6100010e	bsr.w	sub_8652
00008546 544d	addq.w	#2,a5
00008548 4e75	rts	
0000854a 3015	move.w	(a5),d0
0000854c 6b34	bmi.s	loc_8582
0000854e 3406	move.w	d6,d2
00008550 7000	moveq	#0,d0
00008552 7200	moveq	#0,d1
00008554 1215	move.b	(a5),d1
00008556 61000158	bsr.w	sub_86B0
0000855a 5046	addq.w	#8,d6
0000855c 3406	move.w	d6,d2
0000855e 7200	moveq	#0,d1
00008560 122d0001	move.b	1(a5),d1
00008564 6100014a	bsr.w	sub_86B0
00008568 0646000c	addi.w	#$C,d6
0000856c 3406	move.w	d6,d2
0000856e 303c6000	move.w	#$6000,d0
00008572 7200	moveq	#0,d1
00008574 1215	move.b	(a5),d1
00008576 922d0001	sub.b	1(a5),d1
0000857a 610000d6	bsr.w	sub_8652
0000857e 544d	addq.w	#2,a5
00008580 4e75	rts	
00008582 4640	not.w	d0
00008584 6620	bne.s	loc_85A6
00008586 43f9000087ac	lea	(Text2P_NoGame).l,a1
0000858c 3406	move.w	d6,d2
0000858e 61000108	bsr.w	loc_8698
00008592 06460014	addi.w	#$14,d6
00008596 3406	move.w	d6,d2
00008598 43f9000087c1	lea	(Text2P_Blank).l,a1
0000859e 610000f8	bsr.w	loc_8698
000085a2 544d	addq.w	#2,a5
000085a4 4e75	rts	
000085a6 7000	moveq	#0,d0
000085a8 43f900008798	lea	(Text2P_GameOver).l,a1
000085ae 3406	move.w	d6,d2
000085b0 610000e6	bsr.w	loc_8698
000085b4 06460014	addi.w	#$14,d6
000085b8 3406	move.w	d6,d2
000085ba 303c6000	move.w	#$6000,d0
000085be 7200	moveq	#0,d1
000085c0 1215	move.b	(a5),d1
000085c2 922d0001	sub.b	1(a5),d1
000085c6 6100008a	bsr.w	sub_8652
000085ca 544d	addq.w	#2,a5
000085cc 4e75	rts	
000085ce 3015	move.w	(a5),d0
000085d0 6b36	bmi.s	+
000085d2 3406	move.w	d6,d2
000085d4 7000	moveq	#0,d0
000085d6 7200	moveq	#0,d1
000085d8 1215	move.b	(a5),d1
000085da 610000d4	bsr.w	sub_86B0
000085de 0646000c	addi.w	#$C,d6
000085e2 3406	move.w	d6,d2
000085e4 7200	moveq	#0,d1
000085e6 122d0001	move.b	1(a5),d1
000085ea 610000c4	bsr.w	sub_86B0
000085ee 06460010	addi.w	#$10,d6
000085f2 3406	move.w	d6,d2
000085f4 303c6000	move.w	#$6000,d0
000085f8 7200	moveq	#0,d1
000085fa 1215	move.b	(a5),d1
000085fc 922d0001	sub.b	1(a5),d1
00008600 61000050	bsr.w	sub_8652
00008604 544d	addq.w	#2,a5
00008606 4e75	rts	
00008608 4640	not.w	d0
0000860a 6620	bne.s	loc_862C
0000860c 43f9000087ac	lea	(Text2P_NoGame).l,a1
00008612 3406	move.w	d6,d2
00008614 5842	addq.w	#4,d2
00008616 61000080	bsr.w	loc_8698
0000861a 06460014	addi.w	#$14,d6
0000861e 3406	move.w	d6,d2
00008620 43f9000087c1	lea	(Text2P_Blank).l,a1
00008626 6170	bsr.s	loc_8698
00008628 544d	addq.w	#2,a5
0000862a 4e75	rts	
0000862c 7000	moveq	#0,d0
0000862e 43f900008798	lea	(Text2P_GameOver).l,a1
00008634 3406	move.w	d6,d2
00008636 6160	bsr.s	loc_8698
00008638 06460014	addi.w	#$14,d6
0000863c 3406	move.w	d6,d2
0000863e 303c6000	move.w	#$6000,d0
00008642 7200	moveq	#0,d1
00008644 1215	move.b	(a5),d1
00008646 922d0001	sub.b	1(a5),d1
0000864a 61000006	bsr.w	sub_8652
0000864e 544d	addq.w	#2,a5
00008650 4e75	rts	
00008652 43f9000087b4	lea	(Text2P_Tied).l,a1
00008658 6716	beq.s	++
0000865a 650a	bcs.s	+
0000865c 43f9000087b9	lea	(Text2P_1P).l,a1
00008662 5214	addq.b	#1,(a4)
00008664 600a	bra.s	++
00008666 43f9000087bd	lea	(Text2P_2P).l,a1
0000866c 522c0001	addq.b	#1,1(a4)
00008670 6026	bra.s	loc_8698
00008672 43f90000874a	lea	(Text2P_EmeraldHill).l,a1
00008678 1238ff88	move.b	(Current_Zone_2P).w,d1
0000867c 671a	beq.s	loc_8698
0000867e 43f900008757	lea	(Text2P_MysticCave).l,a1
00008684 5301	subq.b	#1,d1
00008686 6710	beq.s	loc_8698
00008688 43f900008764	lea	(Text2P_CasinoNight).l,a1
0000868e 5301	subq.b	#1,d1
00008690 6706	beq.s	loc_8698
00008692 43f900008771	lea	(Text2P_SpecialStage).l,a1
00008698 45f9ffff0000	lea	(Chunk_Table).l,a2
0000869e 45f22000	lea	(a2,d2.w),a2
000086a2 7200	moveq	#0,d1
000086a4 1219	move.b	(a1)+,d1
000086a8 34c0	move.w	d0,(a2)+
000086aa 51c9fffa	dbf	d1,-
000086ae 4e75	rts	
000086b0 45f9ffff0000	lea	(Chunk_Table).l,a2
000086b6 45f22000	lea	(a2,d2.w),a2
000086ba 47f9000086f0	lea	(word_86F0).l,a3
000086c0 7400	moveq	#0,d2
000086c2 7a02	moveq	#2,d5
000086c6 381b	move.w	(a3)+,d4
000086ca 6504	bcs.s	+
000086cc 5243	addq.w	#1,d3
000086ce 60f8	bra.s	-
000086d0 d244	add.w	d4,d1
000086d2 4a45	tst.w	d5
000086d4 670a	beq.s	++
000086d6 4a43	tst.w	d3
000086d8 6702	beq.s	+
000086da 7401	moveq	#1,d2
000086dc 4a42	tst.w	d2
000086de 6708	beq.s	++
000086e0 06030010	addi.b	#$10,d3
000086e4 1003	move.b	d3,d0
000086e6 3480	move.w	d0,(a2)
000086e8 544a	addq.w	#2,a2
000086ea 51cdffd8	dbf	d5,--
000086ee 4e75	rts	
000086f6 45f9ffff0000	lea	(Chunk_Table).l,a2
000086fc 45f22000	lea	(a2,d2.w),a2
00008700 47f900008732	lea	(dword_8732).l,a3
00008706 7400	moveq	#0,d2
00008708 7a05	moveq	#5,d5
0000870c 281b	move.l	(a3)+,d4
00008710 6504	bcs.s	+
00008712 5243	addq.w	#1,d3
00008714 60f8	bra.s	-
00008716 d284	add.l	d4,d1
00008718 4a43	tst.w	d3
0000871a 6702	beq.s	+
0000871c 7401	moveq	#1,d2
0000871e 4a42	tst.w	d2
00008720 6708	beq.s	+
00008722 06030010	addi.b	#$10,d3
00008726 1003	move.b	d3,d0
00008728 3480	move.w	d0,(a2)
0000872a 544a	addq.w	#2,a2
0000872c 51cdffdc	dbf	d5,--
00008730 4e75	rts	
00008bc8 4ef900016d6e	jmp	(extractJmpToName("JmpTo2_Adjust2PArtPointer")).l
00008bce 4ef90003ff2c	jmp	(extractJmpToName("JmpTo_Dynamic_Normal")).l
00008bd4 61009894	bsr.w	Pal_FadeToBlack
00008bd8 46fc2700	move	#$2700,sr
00008bdc 3038f60c	move.w	(VDP_Reg1_val).w,d0
00008be0 020000bf	andi.b	#$BF,d0
00008be4 33c000c00004	move.w	d0,(VDP_control_port).l
00008bea 6100861c	bsr.w	ClearScreen
00008bee 4df900c00004	lea	(VDP_control_port).l,a6
00008bf4 3cbc8004	move.w	#$8004,(a6)
00008bf8 3cbc8230	move.w	#$8200|(VRAM_Menu_Plane_A_Name_Table/$400),(a6)
00008bfc 3cbc8407	move.w	#$8400|(VRAM_Menu_Plane_B_Name_Table/$2000),(a6)
00008c00 3cbc8230	move.w	#$8200|(VRAM_Menu_Plane_A_Name_Table/$400),(a6)
00008c04 3cbc8700	move.w	#$8700,(a6)
00008c08 3cbc8c81	move.w	#$8C81,(a6)
00008c0c 3cbc9001	move.w	#$9001,(a6)
00008c10 43f8ac00	lea	(Object_Display_Lists).w,a1
00008c14 7000	moveq	#0,d0
00008c16 323c00ff	move.w	#bytesToLcnt((Object_Display_Lists_End-Object_Display_Lists) - ((Object_Display_Lists)&1)),d1
00008c1a 22c0	move.l	d0,(a1)+
00008c1c 51c9fffc	dbf	d1,.loop
00008c20 43f8b000	lea	(Object_RAM).w,a1
00008c24 7000	moveq	#0,d0
00008c26 323c07ff	move.w	#bytesToLcnt((Object_RAM_End-Object_RAM) - ((Object_RAM)&1)),d1
00008c2a 22c0	move.l	d0,(a1)+
00008c2c 51c9fffc	dbf	d1,.loop
00008c30 4278dc00	clr.w	(VDP_Command_Buffer).w
00008c34 21fcffffdc00dcfc	move.l	#VDP_Command_Buffer,(VDP_Command_Buffer_Slot).w
00008c3c 23fc4200000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_FontStuff),VRAM,WRITE),(VDP_control_port).l
00008c46 41f90007c43a	lea	(ArtNem_FontStuff).l,a0
00008c4c 61008890	bsr.w	NemDec
00008c50 23fc4e00000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_MenuBox),VRAM,WRITE),(VDP_control_port).l
00008c5a 41f90007d990	lea	(ArtNem_MenuBox).l,a0
00008c60 6100887c	bsr.w	NemDec
00008c64 23fc5200000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_LevelSelectPics),VRAM,WRITE),(VDP_control_port).l
00008c6e 41f90007da10	lea	(ArtNem_LevelSelectPics).l,a0
00008c74 61008868	bsr.w	NemDec
00008c78 43f9ffff0000	lea	(Chunk_Table).l,a1
00008c7e 41f90007cb80	lea	(MapEng_MenuBack).l,a0
00008c84 303c6000	move.w	#make_art_tile(ArtTile_VRAM_Start,3,0),d0
00008c88 61008b32	bsr.w	EniDec
00008c8c 43f9ffff0000	lea	(Chunk_Table).l,a1
00008c92 203c60000003	move.l	#vdpComm(VRAM_Plane_B_Name_Table,VRAM,WRITE),d0
00008c98 7227	moveq	#40-1,d1
00008c9a 741b	moveq	#28-1,d2
00008ca0 0c380024f600	cmpi.b	#GameModeID_OptionsMenu,(Game_Mode).w
00008ca6 67000324	beq.w	MenuScreen_Options
00008caa 0c380028f600	cmpi.b	#GameModeID_LevelSelect,(Game_Mode).w
00008cb0 67000644	beq.w	MenuScreen_LevelSelect
00008cb4 43f9ffff0000	lea	(Chunk_Table).l,a1
00008cba 41f900009a60	lea	(MapEng_LevSel2P).l,a0
00008cc0 303c0070	move.w	#make_art_tile(ArtTile_ArtNem_MenuBox,0,0),d0
00008cc4 61008af6	bsr.w	EniDec
00008cc8 43f9ffff0198	lea	(Chunk_Table+$198).l,a1
00008cce 41f900009a60	lea	(MapEng_LevSel2P).l,a0
00008cd4 303c2070	move.w	#make_art_tile(ArtTile_ArtNem_MenuBox,1,0),d0
00008cd8 61008ae2	bsr.w	EniDec
00008cdc 43f9ffff0330	lea	(Chunk_Table+$330).l,a1
00008ce2 41f900009c32	lea	(MapEng_LevSelIcon).l,a0
00008ce8 303c0090	move.w	#make_art_tile(ArtTile_ArtNem_LevelSelectPics,0,0),d0
00008cec 61008ace	bsr.w	EniDec
00008cf0 45f9ffff0498	lea	(Chunk_Table+$498).l,a2
00008cf6 720f	moveq	#bytesToWcnt(tiles_to_bytes(1)),d1
00008cfc 51c9fffa	dbf	d1,-
00008d00 6100017c	bsr.w	Update2PLevSelSelection
00008d04 5238ff88	addq.b	#1,(Current_Zone_2P).w
00008d08 02380003ff88	andi.b	#3,(Current_Zone_2P).w
00008d0e 6100020c	bsr.w	ClearOld2PLevSelSelection
00008d12 5238ff88	addq.b	#1,(Current_Zone_2P).w
00008d16 02380003ff88	andi.b	#3,(Current_Zone_2P).w
00008d1c 610001fe	bsr.w	ClearOld2PLevSelSelection
00008d20 5238ff88	addq.b	#1,(Current_Zone_2P).w
00008d24 02380003ff88	andi.b	#3,(Current_Zone_2P).w
00008d2a 610001f0	bsr.w	ClearOld2PLevSelSelection
00008d2e 5238ff88	addq.b	#1,(Current_Zone_2P).w
00008d32 02380003ff88	andi.b	#3,(Current_Zone_2P).w
00008d38 4278ff70	clr.w	(Player_mode).w
00008d3c 4238ff89	clr.b	(Current_Act_2P).w
00008d40 4278ff10	clr.w	(Results_Screen_2P).w
00008d44 4238f711	clr.b	(Level_started_flag).w
00008d48 4278f7f0	clr.w	(Anim_Counters).w
00008d4c 4278ff98	clr.w	(Game_Over_2P).w
00008d50 45f9000087c6	lea	(Anim_SonicMilesBG).l,a2
00008d5a 7026	moveq	#PalID_Menu,d0
00008d5c 610099b4	bsr.w	PalLoad_ForFade
00008d60 43f8fb40	lea	(Normal_palette_line3).w,a1
00008d64 45f8fbc0	lea	(Target_palette_line3).w,a2
00008d68 7207	moveq	#bytesToLcnt(tiles_to_bytes(1)),d1
00008d6c 4299	clr.l	(a1)+
00008d6e 51c9fffa	dbf	d1,-
00008d72 103c0091	move.b	#MusID_Options,d0
00008d7a 31fc0707f614	move.w	#(30*60)-1,(Demo_Time_left).w
00008d80 4278ffd8	clr.w	(Two_player_mode).w
00008d84 42b8ee00	clr.l	(Camera_X_pos).w
00008d88 42b8ee04	clr.l	(Camera_Y_pos).w
00008d8c 11fc0016f62a	move.b	#VintID_Menu,(Vint_routine).w
00008d92 6100a5f0	bsr.w	WaitForVint
00008d96 3038f60c	move.w	(VDP_Reg1_val).w,d0
00008d9a 00000040	ori.b	#$40,d0
00008d9e 33c000c00004	move.w	d0,(VDP_control_port).l
00008da4 61009620	bsr.w	Pal_FadeFromBlack
00008da8 11fc0016f62a	move.b	#VintID_Menu,(Vint_routine).w
00008dae 6100a5d4	bsr.w	WaitForVint
00008db2 46fc2700	move	#$2700,sr
00008db6 61000164	bsr.w	ClearOld2PLevSelSelection
00008dba 6100009e	bsr.w	LevelSelect2P_Controls
00008dbe 610000be	bsr.w	Update2PLevSelSelection
00008dc2 46fc2300	move	#$2300,sr
00008dc6 45f9000087c6	lea	(Anim_SonicMilesBG).l,a2
00008dd0 1038f605	move.b	(Ctrl_1_Press).w,d0
00008dd4 8038f607	or.b	(Ctrl_2_Press).w,d0
00008dd8 02000080	andi.b	#button_start_mask,d0
00008ddc 6604	bne.s	LevelSelect2P_PressStart
00008dde 6000ffc8	bra.w	LevelSelect2P_Main
00008de2 6100011a	bsr.w	Chk2PZoneCompletion
00008de6 6b0c	bmi.s	loc_8DF4
00008de8 303c00ed	move.w	#SndID_Error,d0
00008df0 6000ffb6	bra.w	LevelSelect2P_Main
00008df4 7000	moveq	#0,d0
00008df6 1038ff88	move.b	(Current_Zone_2P).w,d0
00008dfa d040	add.w	d0,d0
00008dfc 303b0054	move.w	LevelSelect2P_LevelOrder(pc,d0.w),d0
00008e00 6b38	bmi.s	loc_8E3A
00008e02 31c0fe10	move.w	d0,(Current_ZoneAndAct).w
00008e06 31fc0001ffd8	move.w	#1,(Two_player_mode).w
00008e0c 11fc000cf600	move.b	#GameModeID_Level,(Game_Mode).w
00008e12 11fc0000fe30	move.b	#0,(Last_star_pole_hit).w
00008e18 11fc0000fee0	move.b	#0,(Last_star_pole_hit_2P).w
00008e1e 7000	moveq	#0,d0
00008e20 21c0fe26	move.l	d0,(Score).w
00008e24 21c0fed6	move.l	d0,(Score_2P).w
00008e28 21fc00001388ffc0	move.l	#5000,(Next_Extra_life_score).w
00008e30 21fc00001388ffc4	move.l	#5000,(Next_Extra_life_score_2P).w
00008e38 4e75	rts	
00008e3a 11fc0004fe16	move.b	#4,(Current_Special_Stage).w
00008e40 11fc0010f600	move.b	#GameModeID_SpecialStage,(Game_Mode).w
00008e46 7001	moveq	#1,d0
00008e48 31c0ffd8	move.w	d0,(Two_player_mode).w
00008e4c 31c0ff8a	move.w	d0,(Two_player_mode_copy).w
00008e50 4e75	rts	
00008e5a 1038f605	move.b	(Ctrl_1_Press).w,d0
00008e5e 8038f607	or.b	(Ctrl_2_Press).w,d0
00008e62 1200	move.b	d0,d1
00008e64 02000003	andi.b	#button_up_mask|button_down_mask,d0
00008e68 6706	beq.s	+
00008e6a 08780001ff88	bchg	#1,(Current_Zone_2P).w
00008e70 0201000c	andi.b	#button_left_mask|button_right_mask,d1
00008e74 6706	beq.s	+
00008e76 08780000ff88	bchg	#0,(Current_Zone_2P).w
00008e7c 4e75	rts	
00008e7e 7000	moveq	#0,d0
00008e80 1038ff88	move.b	(Current_Zone_2P).w,d0
00008e84 e948	lsl.w	#4,d0
00008e86 47f900008f7e	lea	(LevSel2PIconData).l,a3
00008e8c 47f30000	lea	(a3,d0.w),a3
00008e90 303c6000	move.w	#palette_line_3,d0
00008e94 45f9ffff0048	lea	(Chunk_Table+$48).l,a2
00008e9a 225b	movea.l	(a3)+,a1
00008e9c 61000120	bsr.w	MenuScreenTextToRAM
00008ea0 45f9ffff0094	lea	(Chunk_Table+$94).l,a2
00008ea6 225b	movea.l	(a3)+,a1
00008ea8 61000114	bsr.w	MenuScreenTextToRAM
00008eac 45f9ffff00d8	lea	(Chunk_Table+$D8).l,a2
00008eb2 226b0004	movea.l	4(a3),a1
00008eb6 61000046	bsr.w	Chk2PZoneCompletion
00008eba 6b06	bmi.s	+
00008ebc 43f9ffff0468	lea	(Chunk_Table+$468).l,a1
00008ec2 7202	moveq	#2,d1
00008ec6 24d9	move.l	(a1)+,(a2)+
00008ec8 45ea001a	lea	$1A(a2),a2
00008ecc 51c9fff6	dbf	d1,-
00008ed0 43f9ffff0000	lea	(Chunk_Table).l,a1
00008ed6 201b	move.l	(a3)+,d0
00008ed8 7210	moveq	#17-1,d1
00008eda 740b	moveq	#12-1,d2
00008ee0 43f900009880	lea	(Pal_LevelIcons).l,a1
00008ee6 7000	moveq	#0,d0
00008ee8 1013	move.b	(a3),d0
00008eea eb48	lsl.w	#5,d0
00008eec 43f10000	lea	(a1,d0.w),a1
00008ef0 45f8fb40	lea	(Normal_palette_line3).w,a2
00008ef4 7207	moveq	#bytesToLcnt(palette_line_size),d1
00008ef8 51c9fffc	dbf	d1,-
00008efc 4e75	rts	
00008efe 7000	moveq	#0,d0
00008f00 1038ff88	move.b	(Current_Zone_2P).w,d0
00008f04 3200	move.w	d0,d1
00008f06 d040	add.w	d0,d0
00008f08 d041	add.w	d1,d0
00008f0a d040	add.w	d0,d0
00008f0c 4bf8ff20	lea	(Results_Data_2P).w,a5
00008f10 4bf50000	lea	(a5,d0.w),a5
00008f14 3015	move.w	(a5),d0
00008f16 d06d0002	add.w	2(a5),d0
00008f1a 4e75	rts	
00008f1c 7000	moveq	#0,d0
00008f1e 1038ff88	move.b	(Current_Zone_2P).w,d0
00008f22 e948	lsl.w	#4,d0
00008f24 47f900008f7e	lea	(LevSel2PIconData).l,a3
00008f2a 47f30000	lea	(a3,d0.w),a3
00008f2e 7000	moveq	#palette_line_0,d0
00008f30 45f9ffff01e0	lea	(Chunk_Table+$1E0).l,a2
00008f36 225b	movea.l	(a3)+,a1
00008f38 61000084	bsr.w	MenuScreenTextToRAM
00008f3c 45f9ffff022c	lea	(Chunk_Table+$22C).l,a2
00008f42 225b	movea.l	(a3)+,a1
00008f44 61000078	bsr.w	MenuScreenTextToRAM
00008f48 45f9ffff0270	lea	(Chunk_Table+$270).l,a2
00008f4e 43f9ffff0498	lea	(Chunk_Table+$498).l,a1
00008f54 6100ffa8	bsr.w	Chk2PZoneCompletion
00008f58 6b06	bmi.s	+
00008f5a 43f9ffff0468	lea	(Chunk_Table+$468).l,a1
00008f60 7202	moveq	#2,d1
00008f64 24d9	move.l	(a1)+,(a2)+
00008f66 45ea001a	lea	$1A(a2),a2
00008f6a 51c9fff6	dbf	d1,-
00008f6e 43f9ffff0198	lea	(Chunk_Table+$198).l,a1
00008f74 201b	move.l	(a3)+,d0
00008f76 7210	moveq	#17-1,d1
00008f78 740b	moveq	#12-1,d2
00008fbe 7200	moveq	#0,d1
00008fc0 1219	move.b	(a1)+,d1
00008fc4 34c0	move.w	d0,(a2)+
00008fc6 51c9fffa	dbf	d1,-
00008fca 4e75	rts	
00008fcc 43f9ffff0000	lea	(Chunk_Table).l,a1
00008fd2 41f900009ab2	lea	(MapEng_Options).l,a0
00008fd8 303c0070	move.w	#make_art_tile(ArtTile_ArtNem_MenuBox,0,0),d0
00008fdc 610087de	bsr.w	EniDec
00008fe0 43f9ffff0160	lea	(Chunk_Table+$160).l,a1
00008fe6 41f900009ab2	lea	(MapEng_Options).l,a0
00008fec 303c2070	move.w	#make_art_tile(ArtTile_ArtNem_MenuBox,1,0),d0
00008ff0 610087ca	bsr.w	EniDec
00008ff4 4238ff8c	clr.b	(Options_menu_box).w
00008ff8 6100018c	bsr.w	OptionScreen_DrawSelected
00008ffc 5238ff8c	addq.b	#1,(Options_menu_box).w
00009000 610001f6	bsr.w	OptionScreen_DrawUnselected
00009004 5238ff8c	addq.b	#1,(Options_menu_box).w
00009008 610001ee	bsr.w	OptionScreen_DrawUnselected
0000900c 4238ff8c	clr.b	(Options_menu_box).w
00009010 4238f711	clr.b	(Level_started_flag).w
00009014 4278f7f0	clr.w	(Anim_Counters).w
00009018 45f9000087c6	lea	(Anim_SonicMilesBG).l,a2
00009022 7026	moveq	#PalID_Menu,d0
00009024 610096ec	bsr.w	PalLoad_ForFade
00009028 103c0091	move.b	#MusID_Options,d0
00009030 4278ffd8	clr.w	(Two_player_mode).w
00009034 42b8ee00	clr.l	(Camera_X_pos).w
00009038 42b8ee04	clr.l	(Camera_Y_pos).w
0000903c 4278ffd4	clr.w	(Correct_cheat_entries).w
00009040 4278ffd6	clr.w	(Correct_cheat_entries_2).w
00009044 11fc0016f62a	move.b	#VintID_Menu,(Vint_routine).w
0000904a 6100a338	bsr.w	WaitForVint
0000904e 3038f60c	move.w	(VDP_Reg1_val).w,d0
00009052 00000040	ori.b	#$40,d0
00009056 33c000c00004	move.w	d0,(VDP_control_port).l
0000905c 61009368	bsr.w	Pal_FadeFromBlack
00009060 11fc0016f62a	move.b	#VintID_Menu,(Vint_routine).w
00009066 6100a31c	bsr.w	WaitForVint
0000906a 46fc2700	move	#$2700,sr
0000906e 61000188	bsr.w	OptionScreen_DrawUnselected
00009072 6100006c	bsr.w	OptionScreen_Controls
00009076 6100010e	bsr.w	OptionScreen_DrawSelected
0000907a 46fc2300	move	#$2300,sr
0000907e 45f9000087c6	lea	(Anim_SonicMilesBG).l,a2
00009088 1038f605	move.b	(Ctrl_1_Press).w,d0
0000908c 8038f607	or.b	(Ctrl_2_Press).w,d0
00009090 02000080	andi.b	#button_start_mask,d0
00009094 6604	bne.s	OptionScreen_Select
00009096 6000ffc8	bra.w	OptionScreen_Main
0000909a 1038ff8c	move.b	(Options_menu_box).w,d0
0000909e 6616	bne.s	OptionScreen_Select_Not1P
000090a0 7000	moveq	#0,d0
000090a2 31c0ffd8	move.w	d0,(Two_player_mode).w
000090a6 31c0ff8a	move.w	d0,(Two_player_mode_copy).w
000090aa 31c0fe10	move.w	d0,(Current_ZoneAndAct).w
000090ae 11fc000cf600	move.b	#GameModeID_Level,(Game_Mode).w
000090b4 4e75	rts	
000090b6 5300	subq.b	#1,d0
000090b8 661e	bne.s	OptionScreen_Select_Other
000090ba 7001	moveq	#1,d0
000090bc 31c0ffd8	move.w	d0,(Two_player_mode).w
000090c0 31c0ff8a	move.w	d0,(Two_player_mode_copy).w
000090c4 11fc001cf600	move.b	#GameModeID_2PLevelSelect,(Game_Mode).w
000090ca 11fc0000ff88	move.b	#0,(Current_Zone_2P).w
000090d0 31fc0000ff70	move.w	#0,(Player_mode).w
000090d6 4e75	rts	
000090d8 11fc0000f600	move.b	#GameModeID_SegaScreen,(Game_Mode).w
000090de 4e75	rts	
000090e0 7400	moveq	#0,d2
000090e2 1438ff8c	move.b	(Options_menu_box).w,d2
000090e6 1038f605	move.b	(Ctrl_1_Press).w,d0
000090ea 8038f607	or.b	(Ctrl_2_Press).w,d0
000090ee 08000000	btst	#button_up,d0
000090f2 6708	beq.s	+
000090f4 5302	subq.b	#1,d2
000090f6 6404	bcc.s	+
000090f8 143c0002	move.b	#2,d2
000090fc 08000001	btst	#button_down,d0
00009100 670a	beq.s	+
00009102 5202	addq.b	#1,d2
00009104 0c020003	cmpi.b	#3,d2
00009108 6502	blo.s	+
0000910a 7400	moveq	#0,d2
0000910c 11c2ff8c	move.b	d2,(Options_menu_box).w
00009110 e54a	lsl.w	#2,d2
00009112 163b2066	move.b	OptionScreen_Choices(pc,d2.w),d3
00009116 227b2062	movea.l	OptionScreen_Choices(pc,d2.w),a1
0000911a 3411	move.w	(a1),d2
0000911c 08000002	btst	#button_left,d0
00009120 6706	beq.s	+
00009122 5302	subq.b	#1,d2
00009124 6402	bcc.s	+
00009126 1403	move.b	d3,d2
00009128 08000003	btst	#button_right,d0
0000912c 6708	beq.s	+
0000912e 5202	addq.b	#1,d2
00009130 b403	cmp.b	d3,d2
00009132 6302	bls.s	+
00009134 7400	moveq	#0,d2
00009136 08000006	btst	#button_A,d0
0000913a 670a	beq.s	+
0000913c 06020010	addi.b	#$10,d2
00009140 b403	cmp.b	d3,d2
00009142 6302	bls.s	+
00009144 7400	moveq	#0,d2
00009146 3282	move.w	d2,(a1)
00009148 0c380002ff8c	cmpi.b	#2,(Options_menu_box).w
0000914e 6628	bne.s	+
00009150 02400030	andi.w	#button_B_mask|button_C_mask,d0
00009154 6722	beq.s	+
00009156 3038ff84	move.w	(Sound_test_sound).w,d0
0000915a 06400080	addi.w	#$80,d0
00009162 41f9000097b2	lea	(level_select_cheat).l,a0
00009168 45f9000097b7	lea	(continues_cheat).l,a2
0000916e 43f8ffd0	lea	(Level_select_flag).w,a1
00009172 7400	moveq	#0,d2
00009174 610005d0	bsr.w	CheckCheats
00009178 4e75	rts	
00009186 610000e0	bsr.w	OptionScreen_SelectTextPtr
0000918a 7200	moveq	#0,d1
0000918c 1238ff8c	move.b	(Options_menu_box).w,d1
00009190 e749	lsl.w	#3,d1
00009192 47f9000092ba	lea	(OptScrBoxData).l,a3
00009198 47f31000	lea	(a3,d1.w),a3
0000919c 303c6000	move.w	#palette_line_3,d0
000091a0 45f9ffff0030	lea	(Chunk_Table+$30).l,a2
000091a6 225b	movea.l	(a3)+,a1
000091a8 6100fe14	bsr.w	MenuScreenTextToRAM
000091ac 45f9ffff00b6	lea	(Chunk_Table+$B6).l,a2
000091b2 7200	moveq	#0,d1
000091b4 0c380002ff8c	cmpi.b	#2,(Options_menu_box).w
000091ba 6712	beq.s	+
000091bc 1238ff8c	move.b	(Options_menu_box).w,d1
000091c0 e549	lsl.w	#2,d1
000091c2 43faffb6	lea	OptionScreen_Choices(pc),a1
000091c6 22711000	movea.l	(a1,d1.w),a1
000091ca 3211	move.w	(a1),d1
000091cc e549	lsl.w	#2,d1
000091ce 22741000	movea.l	(a4,d1.w),a1
000091d2 6100fdea	bsr.w	MenuScreenTextToRAM
000091d6 0c380002ff8c	cmpi.b	#2,(Options_menu_box).w
000091dc 660a	bne.s	+
000091de 45f9ffff00c2	lea	(Chunk_Table+$C2).l,a2
000091e4 610000b0	bsr.w	OptionScreen_HexDumpSoundTest
000091e8 43f9ffff0000	lea	(Chunk_Table).l,a1
000091ee 201b	move.l	(a3)+,d0
000091f0 7215	moveq	#22-1,d1
000091f2 7407	moveq	#8-1,d2
000091f8 6100006e	bsr.w	OptionScreen_SelectTextPtr
000091fc 7200	moveq	#0,d1
000091fe 1238ff8c	move.b	(Options_menu_box).w,d1
00009202 e749	lsl.w	#3,d1
00009204 47f9000092ba	lea	(OptScrBoxData).l,a3
0000920a 47f31000	lea	(a3,d1.w),a3
0000920e 7000	moveq	#palette_line_0,d0
00009210 45f9ffff0190	lea	(Chunk_Table+$190).l,a2
00009216 225b	movea.l	(a3)+,a1
00009218 6100fda4	bsr.w	MenuScreenTextToRAM
0000921c 45f9ffff0216	lea	(Chunk_Table+$216).l,a2
00009222 7200	moveq	#0,d1
00009224 0c380002ff8c	cmpi.b	#2,(Options_menu_box).w
0000922a 6712	beq.s	+
0000922c 1238ff8c	move.b	(Options_menu_box).w,d1
00009230 e549	lsl.w	#2,d1
00009232 43faff46	lea	OptionScreen_Choices(pc),a1
00009236 22711000	movea.l	(a1,d1.w),a1
0000923a 3211	move.w	(a1),d1
0000923c e549	lsl.w	#2,d1
0000923e 22741000	movea.l	(a4,d1.w),a1
00009242 6100fd7a	bsr.w	MenuScreenTextToRAM
00009246 0c380002ff8c	cmpi.b	#2,(Options_menu_box).w
0000924c 660a	bne.s	+
0000924e 45f9ffff0222	lea	(Chunk_Table+$222).l,a2
00009254 61000040	bsr.w	OptionScreen_HexDumpSoundTest
00009258 43f9ffff0160	lea	(Chunk_Table+$160).l,a1
0000925e 201b	move.l	(a3)+,d0
00009260 7215	moveq	#22-1,d1
00009262 7407	moveq	#8-1,d2
00009268 49f9000092d2	lea	(off_92D2).l,a4
0000926e 4a38fff8	tst.b	(Graphics_Flags).w
00009272 6a06	bpl.s	+
00009274 49f9000092de	lea	(off_92DE).l,a4
0000927a 4a38ff8c	tst.b	(Options_menu_box).w
0000927e 6706	beq.s	+
00009280 49f9000092ea	lea	(off_92EA).l,a4
00009286 0c380002ff8c	cmpi.b	#2,(Options_menu_box).w
0000928c 6606	bne.s	+
0000928e 49f9000092f2	lea	(off_92F2).l,a4
00009294 4e75	rts	
00009296 3238ff84	move.w	(Sound_test_sound).w,d1
0000929a 1401	move.b	d1,d2
0000929c e809	lsr.b	#4,d1
0000929e 6102	bsr.s	+
000092a0 1202	move.b	d2,d1
000092a2 0241000f	andi.w	#$F,d1
000092a6 0c01000a	cmpi.b	#$A,d1
000092aa 6504	blo.s	+
000092ac 06010004	addi.b	#4,d1
000092b0 06010010	addi.b	#$10,d1
000092b4 1001	move.b	d1,d0
000092b6 34c0	move.w	d0,(a2)+
000092b8 4e75	rts	
000092f6 43f9ffff0000	lea	(Chunk_Table).l,a1
000092fc 41f900009ade	lea	(MapEng_LevSel).l,a0
00009302 303c0000	move.w	#make_art_tile(ArtTile_VRAM_Start,0,0),d0
00009306 610084b4	bsr.w	EniDec
0000930a 43f9ffff0000	lea	(Chunk_Table).l,a1
00009310 203c40000003	move.l	#vdpComm(VRAM_Plane_A_Name_Table,VRAM,WRITE),d0
00009316 7227	moveq	#40-1,d1
00009318 741b	moveq	#28-1,d2
0000931e 7600	moveq	#palette_line_0,d3
00009320 61000338	bsr.w	LevelSelect_DrawSoundNumber
00009324 43f9ffff08c0	lea	(Chunk_Table+planeLoc(40,0,28)).l,a1
0000932a 41f900009c32	lea	(MapEng_LevSelIcon).l,a0
00009330 303c0090	move.w	#make_art_tile(ArtTile_ArtNem_LevelSelectPics,0,0),d0
00009334 61008486	bsr.w	EniDec
00009338 6100034e	bsr.w	LevelSelect_DrawIcon
0000933c 4278ff70	clr.w	(Player_mode).w
00009340 4278ff10	clr.w	(Results_Screen_2P).w
00009344 4238f711	clr.b	(Level_started_flag).w
00009348 4278f7f0	clr.w	(Anim_Counters).w
0000934c 45f9000087c6	lea	(Anim_SonicMilesBG).l,a2
00009356 7026	moveq	#PalID_Menu,d0
00009358 610093b8	bsr.w	PalLoad_ForFade
0000935c 43f8fb40	lea	(Normal_palette_line3).w,a1
00009360 45f8fbc0	lea	(Target_palette_line3).w,a2
00009364 7207	moveq	#bytesToLcnt(palette_line_size),d1
00009368 4299	clr.l	(a1)+
0000936a 51c9fffa	dbf	d1,-
0000936e 103c0091	move.b	#MusID_Options,d0
00009376 31fc0707f614	move.w	#(30*60)-1,(Demo_Time_left).w
0000937c 4278ffd8	clr.w	(Two_player_mode).w
00009380 42b8ee00	clr.l	(Camera_X_pos).w
00009384 42b8ee04	clr.l	(Camera_Y_pos).w
00009388 4278ffd4	clr.w	(Correct_cheat_entries).w
0000938c 4278ffd6	clr.w	(Correct_cheat_entries_2).w
00009390 11fc0016f62a	move.b	#VintID_Menu,(Vint_routine).w
00009396 61009fec	bsr.w	WaitForVint
0000939a 3038f60c	move.w	(VDP_Reg1_val).w,d0
0000939e 00000040	ori.b	#$40,d0
000093a2 33c000c00004	move.w	d0,(VDP_control_port).l
000093a8 6100901c	bsr.w	Pal_FadeFromBlack
000093ac 11fc0016f62a	move.b	#VintID_Menu,(Vint_routine).w
000093b2 61009fd0	bsr.w	WaitForVint
000093b6 46fc2700	move	#$2700,sr
000093ba 7600	moveq	#palette_line_0,d3
000093bc 610001fa	bsr.w	LevelSelect_MarkFields
000093c0 6100011a	bsr.w	LevSelControls
000093c4 363c6000	move.w	#palette_line_3,d3
000093c8 610001ee	bsr.w	LevelSelect_MarkFields
000093cc 610002ba	bsr.w	LevelSelect_DrawIcon
000093d0 46fc2300	move	#$2300,sr
000093d4 45f9000087c6	lea	(Anim_SonicMilesBG).l,a2
000093de 1038f605	move.b	(Ctrl_1_Press).w,d0
000093e2 8038f607	or.b	(Ctrl_2_Press).w,d0
000093e6 02000080	andi.b	#button_start_mask,d0
000093ea 6604	bne.s	LevelSelect_PressStart
000093ec 6000ffbe	bra.w	LevelSelect_Main
000093f0 3038ff82	move.w	(Level_select_zone).w,d0
000093f4 d040	add.w	d0,d0
000093f6 303b005c	move.w	LevelSelect_Order(pc,d0.w),d0
000093fa 6b000050	bmi.w	LevelSelect_Return
000093fe 0c404000	cmpi.w	#$4000,d0
00009402 667c	bne.s	LevelSelect_StartZone
00009404 11fc0010f600	move.b	#GameModeID_SpecialStage,(Game_Mode).w
0000940a 4278fe10	clr.w	(Current_ZoneAndAct).w
0000940e 11fc0003fe12	move.b	#3,(Life_count).w
00009414 11fc0003fec6	move.b	#3,(Life_count_2P).w
0000941a 7000	moveq	#0,d0
0000941c 31c0fe20	move.w	d0,(Ring_count).w
00009420 21c0fe22	move.l	d0,(Timer).w
00009424 21c0fe26	move.l	d0,(Score).w
00009428 31c0fed0	move.w	d0,(Ring_count_2P).w
0000942c 21c0fed2	move.l	d0,(Timer_2P).w
00009430 21c0fed6	move.l	d0,(Score_2P).w
00009434 21fc00001388ffc0	move.l	#5000,(Next_Extra_life_score).w
0000943c 21fc00001388ffc4	move.l	#5000,(Next_Extra_life_score_2P).w
00009444 31f8ff72ff70	move.w	(Player_option).w,(Player_mode).w
0000944a 4e75	rts	
0000944c 11fc0000f600	move.b	#GameModeID_SegaScreen,(Game_Mode).w
00009452 4e75	rts	
00009480 02403fff	andi.w	#$3FFF,d0
00009484 31c0fe10	move.w	d0,(Current_ZoneAndAct).w
00009488 11fc000cf600	move.b	#GameModeID_Level,(Game_Mode).w
0000948e 11fc0003fe12	move.b	#3,(Life_count).w
00009494 11fc0003fec6	move.b	#3,(Life_count_2P).w
0000949a 7000	moveq	#0,d0
0000949c 31c0fe20	move.w	d0,(Ring_count).w
000094a0 21c0fe22	move.l	d0,(Timer).w
000094a4 21c0fe26	move.l	d0,(Score).w
000094a8 31c0fed0	move.w	d0,(Ring_count_2P).w
000094ac 21c0fed2	move.l	d0,(Timer_2P).w
000094b0 21c0fed6	move.l	d0,(Score_2P).w
000094b4 11c0fe18	move.b	d0,(Continue_count).w
000094b8 21fc00001388ffc0	move.l	#5000,(Next_Extra_life_score).w
000094c0 21fc00001388ffc4	move.l	#5000,(Next_Extra_life_score_2P).w
000094c8 103c00f9	move.b	#MusID_FadeOut,d0
000094d0 7000	moveq	#0,d0
000094d2 31c0ff8a	move.w	d0,(Two_player_mode_copy).w
000094d6 31c0ffd8	move.w	d0,(Two_player_mode).w
000094da 4e75	rts	
000094dc 1238f605	move.b	(Ctrl_1_Press).w,d1
000094e0 02010003	andi.b	#button_up_mask|button_down_mask,d1
000094e4 6606	bne.s	+
000094e6 5378ff80	subq.w	#1,(LevSel_HoldTimer).w
000094ea 6a36	bpl.s	LevSelControls_CheckLR
000094ec 31fc000bff80	move.w	#$B,(LevSel_HoldTimer).w
000094f2 1238f604	move.b	(Ctrl_1_Held).w,d1
000094f6 02010003	andi.b	#button_up_mask|button_down_mask,d1
000094fa 6726	beq.s	LevSelControls_CheckLR
000094fc 3038ff82	move.w	(Level_select_zone).w,d0
00009500 08010000	btst	#button_up,d1
00009504 6706	beq.s	+
00009506 5340	subq.w	#1,d0
00009508 6402	bcc.s	+
0000950a 7015	moveq	#$15,d0
0000950c 08010001	btst	#button_down,d1
00009510 670a	beq.s	+
00009512 5240	addq.w	#1,d0
00009514 0c400016	cmpi.w	#$16,d0
00009518 6502	blo.s	+
0000951a 7000	moveq	#0,d0
0000951c 31c0ff82	move.w	d0,(Level_select_zone).w
00009520 4e75	rts	
00009522 0c780015ff82	cmpi.w	#$15,(Level_select_zone).w
00009528 6660	bne.s	LevSelControls_SwitchSide
0000952a 3038ff84	move.w	(Sound_test_sound).w,d0
0000952e 1238f605	move.b	(Ctrl_1_Press).w,d1
00009532 08010002	btst	#button_left,d1
00009536 6706	beq.s	+
00009538 5300	subq.b	#1,d0
0000953a 6402	bcc.s	+
0000953c 707f	moveq	#$7F,d0
0000953e 08010003	btst	#button_right,d1
00009542 670a	beq.s	+
00009544 5200	addq.b	#1,d0
00009546 0c400080	cmpi.w	#$80,d0
0000954a 6502	blo.s	+
0000954c 7000	moveq	#0,d0
0000954e 08010006	btst	#button_A,d1
00009552 6708	beq.s	+
00009554 06000010	addi.b	#$10,d0
00009558 0200007f	andi.b	#$7F,d0
0000955c 31c0ff84	move.w	d0,(Sound_test_sound).w
00009560 02410030	andi.w	#button_B_mask|button_C_mask,d1
00009564 6722	beq.s	+
00009566 3038ff84	move.w	(Sound_test_sound).w,d0
0000956a 06400080	addi.w	#$80,d0
00009572 41f9000097bc	lea	(debug_cheat).l,a0
00009578 45f9000097c5	lea	(super_sonic_cheat).l,a2
0000957e 43f8ffd2	lea	(Debug_options_flag).w,a1
00009582 7401	moveq	#1,d2
00009584 610001c0	bsr.w	CheckCheats
00009588 4e75	rts	
0000958a 1238f605	move.b	(Ctrl_1_Press).w,d1
0000958e 0201000c	andi.b	#button_left_mask|button_right_mask,d1
00009592 670c	beq.s	+
00009594 3038ff82	move.w	(Level_select_zone).w,d0
00009598 103b0008	move.b	LevelSelect_SwitchTable(pc,d0.w),d0
0000959c 31c0ff82	move.w	d0,(Level_select_zone).w
000095a0 4e75	rts	
000095b8 49f9ffff0000	lea	(Chunk_Table).l,a4
000095be 4bf9000096ee	lea	(LevSel_MarkTable).l,a5
000095c4 4df900c00000	lea	(VDP_data_port).l,a6
000095ca 7000	moveq	#0,d0
000095cc 3038ff82	move.w	(Level_select_zone).w,d0
000095d0 e548	lsl.w	#2,d0
000095d2 47f50000	lea	(a5,d0.w),a3
000095d6 7000	moveq	#0,d0
000095d8 1013	move.b	(a3),d0
000095da c0fc0050	mulu.w	#$50,d0
000095de 7200	moveq	#0,d1
000095e0 122b0001	move.b	1(a3),d1
000095e4 d041	add.w	d1,d0
000095e6 43f40000	lea	(a4,d0.w),a1
000095ea 7200	moveq	#0,d1
000095ec 1213	move.b	(a3),d1
000095ee ef49	lsl.w	#7,d1
000095f0 d22b0001	add.b	1(a3),d1
000095f4 0641c000	addi.w	#VRAM_Plane_A_Name_Table,d1
000095f8 e589	lsl.l	#2,d1
000095fa e449	lsr.w	#2,d1
000095fc 00414000	ori.w	#vdpComm($0000,VRAM,WRITE)>>16,d1
00009600 4841	swap	d1
00009602 2d410004	move.l	d1,4(a6)
00009606 740d	moveq	#$D,d2
0000960a d043	add.w	d3,d0
0000960c 3c80	move.w	d0,(a6)
0000960e 51cafff8	dbf	d2,-
00009612 544b	addq.w	#2,a3
00009614 7000	moveq	#0,d0
00009616 1013	move.b	(a3),d0
00009618 6732	beq.s	+
0000961a c0fc0050	mulu.w	#$50,d0
0000961e 7200	moveq	#0,d1
00009620 122b0001	move.b	1(a3),d1
00009624 d041	add.w	d1,d0
00009626 43f40000	lea	(a4,d0.w),a1
0000962a 7200	moveq	#0,d1
0000962c 1213	move.b	(a3),d1
0000962e ef49	lsl.w	#7,d1
00009630 d22b0001	add.b	1(a3),d1
00009634 0641c000	addi.w	#VRAM_Plane_A_Name_Table,d1
00009638 e589	lsl.l	#2,d1
0000963a e449	lsr.w	#2,d1
0000963c 00414000	ori.w	#vdpComm($0000,VRAM,WRITE)>>16,d1
00009640 4841	swap	d1
00009642 2d410004	move.l	d1,4(a6)
00009646 3019	move.w	(a1)+,d0
00009648 d043	add.w	d3,d0
0000964a 3c80	move.w	d0,(a6)
0000964c 0c780015ff82	cmpi.w	#$15,(Level_select_zone).w
00009652 6604	bne.s	+
00009654 61000004	bsr.w	LevelSelect_DrawSoundNumber
00009658 4e75	rts	
0000965a 23fc4944000300c00004	move.l	#vdpComm(VRAM_Plane_A_Name_Table+planeLoc(64,34,18),VRAM,WRITE),(VDP_control_port).l
00009664 3038ff84	move.w	(Sound_test_sound).w,d0
00009668 1400	move.b	d0,d2
0000966a e808	lsr.b	#4,d0
0000966c 6102	bsr.s	+
0000966e 1002	move.b	d2,d0
00009670 0240000f	andi.w	#$F,d0
00009674 0c00000a	cmpi.b	#$A,d0
00009678 6504	blo.s	+
0000967a 06000004	addi.b	#4,d0
0000967e 06000010	addi.b	#$10,d0
00009682 d043	add.w	d3,d0
00009684 3c80	move.w	d0,(a6)
00009686 4e75	rts	
00009688 3038ff82	move.w	(Level_select_zone).w,d0
0000968c 47f9000096d8	lea	(LevSel_IconTable).l,a3
00009692 47f30000	lea	(a3,d0.w),a3
00009696 43f9ffff08c0	lea	(Chunk_Table+planeLoc(40,0,28)).l,a1
0000969c 7000	moveq	#0,d0
0000969e 1013	move.b	(a3),d0
000096a0 e748	lsl.w	#3,d0
000096a2 3200	move.w	d0,d1
000096a4 d040	add.w	d0,d0
000096a6 d041	add.w	d1,d0
000096a8 43f10000	lea	(a1,d0.w),a1
000096ac 203c4b360003	move.l	#vdpComm(VRAM_Plane_A_Name_Table+planeLoc(64,27,22),VRAM,WRITE),d0
000096b2 7203	moveq	#4-1,d1
000096b4 7402	moveq	#3-1,d2
000096ba 43f900009880	lea	(Pal_LevelIcons).l,a1
000096c0 7000	moveq	#0,d0
000096c2 1013	move.b	(a3),d0
000096c4 eb48	lsl.w	#5,d0
000096c6 43f10000	lea	(a1,d0.w),a1
000096ca 45f8fb40	lea	(Normal_palette_line3).w,a2
000096ce 7207	moveq	#bytesToLcnt(palette_line_size),d1
000096d0 24d9	move.l	(a1)+,(a2)+
000096d2 51c9fffc	dbf	d1,-
000096d6 4e75	rts	
00009746 3038ffd4	move.w	(Correct_cheat_entries).w,d0
0000974a d0c0	adda.w	d0,a0
0000974c 3038ff84	move.w	(Sound_test_sound).w,d0
00009750 b010	cmp.b	(a0),d0
00009752 6616	bne.s	+
00009754 5278ffd4	addq.w	#1,(Correct_cheat_entries).w
00009758 4a280001	tst.b	1(a0)
0000975c 6612	bne.s	++
0000975e 32bc0101	move.w	#$101,(a1)
00009762 103c00b5	move.b	#SndID_Ring,d0
0000976a 31fc0000ffd4	move.w	#0,(Correct_cheat_entries).w
00009770 3038ffd6	move.w	(Correct_cheat_entries_2).w,d0
00009774 d4c0	adda.w	d0,a2
00009776 3038ff84	move.w	(Sound_test_sound).w,d0
0000977a b012	cmp.b	(a2),d0
0000977c 662c	bne.s	++
0000977e 5278ffd6	addq.w	#1,(Correct_cheat_entries_2).w
00009782 4a2a0001	tst.b	1(a2)
00009786 6628	bne.s	+++
00009788 4a42	tst.w	d2
0000978a 6610	bne.s	+
0000978c 11fc000ffe18	move.b	#$F,(Continue_count).w
00009792 103c003f	move.b	#SndID_ContinueJingle&$7F,d0
0000979a 600e	bra.s	++
0000979c 31fc0007ffb0	move.w	#7,(Got_Emerald).w
000097a2 103c009d	move.b	#MusID_Emerald,d0
000097aa 31fc0000ffd6	move.w	#0,(Correct_cheat_entries_2).w
000097b0 4e75	rts	
00009c64 4ef900001370	jmp	(extractJmpToName("JmpTo_PlaySound")).l
00009c6a 4ef90000135e	jmp	(extractJmpToName("JmpTo_PlayMusic")).l
00009c70 4ef90000140e	jmp	(extractJmpToName("JmpTo_PlaneMapToVRAM_H40")).l
00009c76 4ef90003ff2c	jmp	(extractJmpToName("JmpTo2_Dynamic_Normal")).l
00009c7c 43f8b000	lea	(Object_RAM).w,a1
00009c80 7000	moveq	#0,d0
00009c82 323c07ff	move.w	#bytesToLcnt((Object_RAM_End-Object_RAM) - ((Object_RAM)&1)),d1
00009c86 22c0	move.l	d0,(a1)+
00009c88 51c9fffc	dbf	d1,.loop
00009c8c 43f8f700	lea	(Misc_Variables).w,a1
00009c90 7000	moveq	#0,d0
00009c92 323c003f	move.w	#bytesToLcnt((Misc_Variables_End-Misc_Variables) - ((Misc_Variables)&1)),d1
00009c96 22c0	move.l	d0,(a1)+
00009c98 51c9fffc	dbf	d1,.loop
00009c9c 43f8ee00	lea	(Camera_RAM).w,a1
00009ca0 7000	moveq	#0,d0
00009ca2 323c003f	move.w	#bytesToLcnt((Camera_RAM_End-Camera_RAM) - ((Camera_RAM)&1)),d1
00009ca6 22c0	move.l	d0,(a1)+
00009ca8 51c9fffc	dbf	d1,.loop
00009cac 46fc2700	move	#$2700,sr
00009cb0 3038f60c	move.w	(VDP_Reg1_val).w,d0
00009cb4 020000bf	andi.b	#$BF,d0
00009cb8 33c000c00004	move.w	d0,(VDP_control_port).l
00009cbe 33fc010000a11100	move.w	#$100,(Z80_Bus_Request).l
00009cc6 0839000000a11100	btst	#0,(Z80_Bus_Request).l
00009cce 66f6	bne.s	.loop
00009cd0 4bf900c00004	lea	(VDP_control_port).l,a5
00009cd6 3abc8f01	move.w	#$8F01,(a5)
00009cda 2abc940f93ff	move.l	#(($9400|((((VRAM_Plane_Table_Size)-1)&$FF00)>>8))<<16)|($9300|(((VRAM_Plane_Table_Size)-1)&$FF)),(a5)
00009ce0 3abc9780	move.w	#$9780,(a5)
00009ce4 2abc40000083	move.l	#vdpComm(VRAM_Plane_A_Name_Table,VRAM,DMA),(a5)
00009cea 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
00009cf2 3215	move.w	(a5),d1
00009cf4 08010001	btst	#1,d1
00009cf8 66f8	bne.s	.loop
00009cfa 3abc8f02	move.w	#$8F02,(a5)
00009cfe 42b8f616	clr.l	(Vscroll_Factor).w
00009d02 42b8f61a	clr.l	(unk_F61A).w
00009d06 33fc000000a11100	move.w	#0,(Z80_Bus_Request).l
00009d0e 4df900c00004	lea	(VDP_control_port).l,a6
00009d14 3cbc8b03	move.w	#$8B03,(a6)
00009d18 3cbc8230	move.w	#$8200|(VRAM_EndSeq_Plane_A_Name_Table/$400),(a6)
00009d1c 3cbc8407	move.w	#$8400|(VRAM_EndSeq_Plane_B_Name_Table1/$2000),(a6)
00009d20 3cbc857c	move.w	#$8500|(VRAM_Sprite_Attribute_Table/$200),(a6)
00009d24 3cbc9001	move.w	#$9001,(a6)
00009d28 3cbc8004	move.w	#$8004,(a6)
00009d2c 3cbc8720	move.w	#$8720,(a6)
00009d30 31fc8adff624	move.w	#$8ADF,(Hint_counter_reserve).w
00009d36 3cb8f624	move.w	(Hint_counter_reserve).w,(a6)
00009d3a 4238fe19	clr.b	(Super_Sonic_flag).w
00009d3e 0c380007ffb1	cmpi.b	#7,(Emerald_count).w
00009d44 661e	bne.s	+
00009d46 0c780002ff70	cmpi.w	#2,(Player_mode).w
00009d4c 6716	beq.s	+
00009d4e 50f8fe19	st.b	(Super_Sonic_flag).w
00009d52 11fc00fff65f	move.b	#-1,(Super_Sonic_palette).w
00009d58 11fc000ff65e	move.b	#$F,(Palette_timer).w
00009d5e 31fc0030f65c	move.w	#$30,(Palette_frame).w
00009d64 7000	moveq	#0,d0
00009d66 0c780002ff70	cmpi.w	#2,(Player_mode).w
00009d6c 670a	beq.s	+
00009d6e 4a38fe19	tst.b	(Super_Sonic_flag).w
00009d72 6606	bne.s	++
00009d74 60000006	bra.w	+++
00009d78 5440	addq.w	#2,d0
00009d7a 5440	addq.w	#2,d0
00009d7c 31c0f750	move.w	d0,(Ending_Routine).w
00009d80 61000e60	bsr.w	EndingSequence_LoadCharacterArt
00009d84 61000eaa	bsr.w	EndingSequence_LoadFlickyArt
00009d88 23fc6ac0000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_EndingFinalTornado),VRAM,WRITE),(VDP_control_port).l
00009d92 41f900091f3c	lea	(ArtNem_EndingFinalTornado).l,a0
00009d9c 23fc6500000100c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_EndingPics),VRAM,WRITE),(VDP_control_port).l
00009da6 41f900090992	lea	(ArtNem_EndingPics).l,a0
00009db0 23fc5260000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_EndingMiniTornado),VRAM,WRITE),(VDP_control_port).l
00009dba 41f9000927e0	lea	(ArtNem_EndingMiniTornado).l,a0
00009dc4 23fc6000000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_Tornado),VRAM,WRITE),(VDP_control_port).l
00009dce 41f90008cc44	lea	(ArtNem_Tornado).l,a0
00009dd8 23fc69e0000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_Clouds),VRAM,WRITE),(VDP_control_port).l
00009de2 41f90008dafc	lea	(ArtNem_Clouds).l,a0
00009dec 31fc0e00fe10	move.w	#death_egg_zone_act_1,(Current_ZoneAndAct).w
00009df2 46fc2300	move	#$2300,sr
00009df6 7095	moveq	#signextendB(MusID_Ending),d0
00009dfc 223c0eee0eee	move.l	#$EEE0EEE,d1
00009e02 43f8fb00	lea	(Normal_palette).w,a1
00009e06 701f	moveq	#bytesToLcnt(palette_line_size*4),d0
00009e0a 51c8fffc	dbf	d0,-
00009e0e 43f90000ac7e	lea	(Pal_AC7E).l,a1
00009e14 45f8fb80	lea	(Target_palette).w,a2
00009e18 701f	moveq	#bytesToLcnt(palette_line_size*4),d0
00009e1c 51c8fffc	dbf	d0,-
00009e20 4238eebd	clr.b	(Screen_Shaking_Flag).w
00009e24 7000	moveq	#0,d0
00009e26 31c0fe08	move.w	d0,(Debug_placement_mode).w
00009e2a 31c0fe02	move.w	d0,(Level_Inactive_flag).w
00009e2e 31c0fe04	move.w	d0,(Level_frame_counter).w
00009e32 31c0ee00	move.w	d0,(Camera_X_pos).w
00009e36 31c0ee04	move.w	d0,(Camera_Y_pos).w
00009e3a 31c0eef0	move.w	d0,(Camera_X_pos_copy).w
00009e3e 31c0eef4	move.w	d0,(Camera_Y_pos_copy).w
00009e42 31c0ee08	move.w	d0,(Camera_BG_X_pos).w
00009e46 31fc00c8ee0c	move.w	#$C8,(Camera_BG_Y_pos).w
00009e4c 21c0f616	move.l	d0,(Vscroll_Factor).w
00009e50 11c0ee42	move.b	d0,(Horiz_block_crossed_flag_BG).w
00009e54 11c0ee43	move.b	d0,(Verti_block_crossed_flag_BG).w
00009e58 31c0f662	move.w	d0,(Ending_VInt_Subrout).w
00009e5c 31c0f660	move.w	d0,(Credits_Trigger).w
00009e60 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
00009e64 7000	moveq	#0,d0
00009e66 323c0100	move.w	#bytesToLcnt((Horiz_Scroll_Buf+HorizontalScrollBuffer.len+4-Horiz_Scroll_Buf) - ((Horiz_Scroll_Buf)&1)),d1
00009e6a 22c0	move.l	d0,(a1)+
00009e6c 51c9fffc	dbf	d1,.loop
00009e70 31fc7ffff634	move.w	#$7FFF,(PalCycle_Timer).w
00009e76 43f8b100	lea	(CutScene).w,a1
00009e7a 12bc00ca	move.b	#ObjID_CutScene,id(a1)
00009e7e 137c00060024	move.b	#6,routine(a1)
00009e84 337c0060003c	move.w	#$60,objoff_3C(a1)
00009e8a 337c00010030	move.w	#1,objoff_30(a1)
00009e90 0c780004f750	cmpi.w	#4,(Ending_Routine).w
00009e96 660c	bne.s	+
00009e98 337c0010002e	move.w	#$10,objoff_2E(a1)
00009e9e 337c0100003c	move.w	#$100,objoff_3C(a1)
00009ea4 11fc0018f62a	move.b	#VintID_Ending,(Vint_routine).w
00009eaa 610094d8	bsr.w	WaitForVint
00009eae 3038f60c	move.w	(VDP_Reg1_val).w,d0
00009eb2 00000040	ori.b	#$40,d0
00009eb6 33c000c00004	move.w	d0,(VDP_control_port).l
00009ebc 11fc0018f62a	move.b	#VintID_Ending,(Vint_routine).w
00009ec2 610094c0	bsr.w	WaitForVint
00009ec6 5278fe04	addq.w	#1,(Level_frame_counter).w
00009eca 4eb900003390	jsr	(RandomNumber).l
00009ed0 4eb900015f9c	jsr	(RunObjects).l
00009ed6 4eb900016604	jsr	(BuildSprites).l
00009edc 4a38f661	tst.b	(Ending_PalCycle_flag).w
00009ee0 6704	beq.s	+
00009ee6 6100000c	bsr.w	EndgameCredits
00009eea 4a78fe02	tst.w	(Level_Inactive_flag).w
00009eee 6700ffcc	beq.w	-
00009ef2 4e75	rts	
00009ef4 4a38f660	tst.b	(Credits_Trigger).w
00009ef8 670001c4	beq.w	.return
00009efc 6100856c	bsr.w	Pal_FadeToBlack
00009f00 4df900c00004	lea	(VDP_control_port).l,a6
00009f06 3cbc8004	move.w	#$8004,(a6)
00009f0a 3cbc8230	move.w	#$8200|(VRAM_EndSeq_Plane_A_Name_Table/$400),(a6)
00009f0e 3cbc8407	move.w	#$8400|(VRAM_EndSeq_Plane_B_Name_Table1/$2000),(a6)
00009f12 3cbc9001	move.w	#$9001,(a6)
00009f16 3cbc9200	move.w	#$9200,(a6)
00009f1a 3cbc8b03	move.w	#$8B03,(a6)
00009f1e 3cbc8700	move.w	#$8700,(a6)
00009f22 4238f64e	clr.b	(Water_fullscreen_flag).w
00009f26 3cbc8c81	move.w	#$8C81,(a6)
00009f2e 43f8ac00	lea	(Object_Display_Lists).w,a1
00009f32 7000	moveq	#0,d0
00009f34 323c00ff	move.w	#bytesToLcnt((Object_Display_Lists_End-Object_Display_Lists) - ((Object_Display_Lists)&1)),d1
00009f38 22c0	move.l	d0,(a1)+
00009f3a 51c9fffc	dbf	d1,.loop
00009f3e 43f8b000	lea	(Object_RAM).w,a1
00009f42 7000	moveq	#0,d0
00009f44 323c07ff	move.w	#bytesToLcnt((Object_RAM_End-Object_RAM) - ((Object_RAM)&1)),d1
00009f48 22c0	move.l	d0,(a1)+
00009f4a 51c9fffc	dbf	d1,.loop
00009f4e 43f8f700	lea	(Misc_Variables).w,a1
00009f52 7000	moveq	#0,d0
00009f54 323c003f	move.w	#bytesToLcnt((Misc_Variables_End-Misc_Variables) - ((Misc_Variables)&1)),d1
00009f58 22c0	move.l	d0,(a1)+
00009f5a 51c9fffc	dbf	d1,.loop
00009f5e 43f8ee00	lea	(Camera_RAM).w,a1
00009f62 7000	moveq	#0,d0
00009f64 323c003f	move.w	#bytesToLcnt((Camera_RAM_End-Camera_RAM) - ((Camera_RAM)&1)),d1
00009f68 22c0	move.l	d0,(a1)+
00009f6a 51c9fffc	dbf	d1,.loop
00009f6e 4238eebd	clr.b	(Screen_Shaking_Flag).w
00009f72 7000	moveq	#0,d0
00009f74 31c0fe02	move.w	d0,(Level_Inactive_flag).w
00009f78 31c0fe04	move.w	d0,(Level_frame_counter).w
00009f7c 31c0ee00	move.w	d0,(Camera_X_pos).w
00009f80 31c0ee04	move.w	d0,(Camera_Y_pos).w
00009f84 31c0eef0	move.w	d0,(Camera_X_pos_copy).w
00009f88 31c0eef4	move.w	d0,(Camera_Y_pos_copy).w
00009f8c 31c0ee08	move.w	d0,(Camera_BG_X_pos).w
00009f90 31c0ee0c	move.w	d0,(Camera_BG_Y_pos).w
00009f94 21c0f616	move.l	d0,(Vscroll_Factor).w
00009f98 11c0ee42	move.b	d0,(Horiz_block_crossed_flag_BG).w
00009f9c 11c0ee43	move.b	d0,(Verti_block_crossed_flag_BG).w
00009fa0 31c0f662	move.w	d0,(Ending_VInt_Subrout).w
00009fa4 31c0f660	move.w	d0,(Credits_Trigger).w
00009fa8 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
00009fac 7000	moveq	#0,d0
00009fae 323c0100	move.w	#bytesToLcnt((Horiz_Scroll_Buf+HorizontalScrollBuffer.len+4-Horiz_Scroll_Buf) - ((Horiz_Scroll_Buf)&1)),d1
00009fb2 22c0	move.l	d0,(a1)+
00009fb4 51c9fffc	dbf	d1,.loop
00009fb8 709e	moveq	#signextendB(MusID_Credits),d0
00009fbe 4278fb80	clr.w	(Target_palette).w
00009fc2 31fc0eeefb8c	move.w	#$EEE,(Target_palette+$C).w
00009fc8 31fc00eefbac	move.w	#$EE,(Target_palette_line2+$C).w
00009fce 23fc4020000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_CreditText_CredScr),VRAM,WRITE),(VDP_control_port).l
00009fd8 41f90000bd26	lea	(ArtNem_CreditText).l,a0
00009fe2 4278ff4c	clr.w	(CreditsScreenIndex).w
00009fea 61001276	bsr.w	ShowCreditsScreen
00009fee 610083d6	bsr.w	Pal_FadeFromBlack
00009ff2 303c018e	move.w	#$18E,d0
00009ff6 08380006fff8	btst	#6,(Graphics_Flags).w
00009ffc 6704	beq.s	+
00009ffe 303c0144	move.w	#$144,d0
0000a008 6100937a	bsr.w	WaitForVint
0000a00c 51c8fff4	dbf	d0,-
0000a010 61008458	bsr.w	Pal_FadeToBlack
0000a014 43f90000b2ca	lea	(off_B2CA).l,a1
0000a01a 5278ff4c	addq.w	#1,(CreditsScreenIndex).w
0000a01e 3038ff4c	move.w	(CreditsScreenIndex).w,d0
0000a022 e548	lsl.w	#2,d0
0000a024 20310000	move.l	(a1,d0.w),d0
0000a028 6abc	bpl.s	--
0000a02a 6100843e	bsr.w	Pal_FadeToBlack
0000a032 23fc4000000000c00004	move.l	#vdpComm($0000,VRAM,WRITE),(VDP_control_port).l
0000a03c 41f900094b28	lea	(ArtNem_EndingTitle).l,a0
0000a046 41f90000b23a	lea	(MapEng_EndGameLogo).l,a0
0000a04c 43f9ffff0000	lea	(Chunk_Table).l,a1
0000a052 303c0000	move.w	#0,d0
0000a05a 43f9ffff0000	lea	(Chunk_Table).l,a1
0000a060 203c45980003	move.l	#vdpComm(VRAM_Plane_A_Name_Table+planeLoc(64,12,11),VRAM,WRITE),d0
0000a066 720f	moveq	#16-1,d1
0000a068 7405	moveq	#6-1,d2
0000a06e 4278ff4c	clr.w	(CreditsScreenIndex).w
0000a072 6100004c	bsr.w	EndgameLogoFlash
0000a076 303c003b	move.w	#$3B,d0
0000a080 61009302	bsr.w	WaitForVint
0000a084 51c8fff4	dbf	d0,-
0000a088 3c3c0257	move.w	#$257,d6
0000a092 610092f0	bsr.w	WaitForVint
0000a096 5278ff4c	addq.w	#1,(CreditsScreenIndex).w
0000a09a 61000024	bsr.w	EndgameLogoFlash
0000a09e 0c78005eff4c	cmpi.w	#$5E,(CreditsScreenIndex).w
0000a0a4 65e6	blo.s	-
0000a0a6 1238f605	move.b	(Ctrl_1_Press).w,d1
0000a0aa 020100f0	andi.b	#button_B_mask|button_C_mask|button_A_mask|button_start_mask,d1
0000a0ae 6604	bne.s	+
0000a0b0 51ceffda	dbf	d6,-
0000a0b4 50f8fe02	st.b	(Level_Inactive_flag).w
0000a0b8 11fc0000f600	move.b	#GameModeID_SegaScreen,(Game_Mode).w
0000a0be 4e75	rts	
0000a0c0 45f8fb02	lea	(Normal_palette+2).w,a2
0000a0c4 3038ff4c	move.w	(CreditsScreenIndex).w,d0
0000a0c8 0c400024	cmpi.w	#$24,d0
0000a0cc 64f0	bhs.s	EndgameCredits.return
0000a0ce 08000000	btst	#0,d0
0000a0d2 66ea	bne.s	EndgameCredits.return
0000a0d4 e248	lsr.w	#1,d0
0000a0d6 103b0014	move.b	byte_A0EC(pc,d0.w),d0
0000a0da c0fc0018	mulu.w	#$18,d0
0000a0de 43fb001e	lea	pal_A0FE(pc,d0.w),a1
0000a0e2 7005	moveq	#5,d0
0000a0e6 51c8fffc	dbf	d0,-
0000a0ea 4e75	rts	
0000a1d6 52680032	addq.w	#1,objoff_32(a0)
0000a1da 0c780004f750	cmpi.w	#4,(Ending_Routine).w
0000a1e0 6718	beq.s	+
0000a1e2 0c780002f750	cmpi.w	#2,(Ending_Routine).w
0000a1e8 6610	bne.s	+
0000a1ea 50f8fe19	st.b	(Super_Sonic_flag).w
0000a1ee 31fc0100fe20	move.w	#$100,(Ring_count).w
0000a1f4 11fc00fff65f	move.b	#-1,(Super_Sonic_palette).w
0000a1fa 7000	moveq	#0,d0
0000a1fc 10280024	move.b	routine(a0),d0
0000a200 323b0006	move.w	ObjCA_Index(pc,d0.w),d1
0000a204 4efb1002	jmp	ObjCA_Index(pc,d1.w)
0000a218 7004	moveq	#4,d0
0000a21a 323c0180	move.w	#$180,d1
0000a21e 08380006fff8	btst	#6,(Graphics_Flags).w
0000a224 6704	beq.s	sub_A22A
0000a226 323c0100	move.w	#$100,d1
0000a22a 43f8b0c0	lea	(EndSeqPaletteChanger).w,a1
0000a22e 12bc00c9	move.b	#ObjID_TtlScrPalChanger,id(a1)
0000a232 13400028	move.b	d0,subtype(a1)
0000a236 54280024	addq.b	#2,routine(a0)
0000a23a 3141003c	move.w	d1,objoff_3C(a0)
0000a23e 4e75	rts	
0000a240 5368003c	subq.w	#1,objoff_3C(a0)
0000a244 6b02	bmi.s	+
0000a246 4e75	rts	
0000a248 54280024	addq.b	#2,routine(a0)
0000a24c 4e75	rts	
0000a24e 7006	moveq	#6,d0
0000a250 323c0080	move.w	#$80,d1
0000a254 60d4	bra.s	sub_A22A
0000a256 3028002e	move.w	objoff_2E(a0),d0
0000a25a 0c400010	cmpi.w	#$10,d0
0000a25e 644c	bhs.s	+
0000a260 5868002e	addq.w	#4,objoff_2E(a0)
0000a264 42280024	clr.b	routine(a0)
0000a268 2f08	move.l	a0,-(sp)
0000a26a 207b0030	movea.l	off_A29C(pc,d0.w),a0
0000a26e 43f9ffff0000	lea	(Chunk_Table).l,a1
0000a274 303c0328	move.w	#make_art_tile(ArtTile_ArtNem_EndingPics,0,0),d0
0000a27c 46fc2700	move	#$2700,sr
0000a280 43f9ffff0000	lea	(Chunk_Table).l,a1
0000a286 203c441c0003	move.l	#vdpComm(VRAM_Plane_A_Name_Table + planeLoc(64,14,8),VRAM,WRITE),d0
0000a28c 720b	moveq	#12-1,d1
0000a28e 7408	moveq	#9-1,d2
0000a294 46fc2300	move	#$2300,sr
0000a298 205f	movea.l	(sp)+,a0
0000a29a 4e75	rts	
0000a2ac 31fc0002f662	move.w	#2,(Ending_VInt_Subrout).w
0000a2b2 50f8f7cc	st.b	(Control_Locked).w
0000a2b6 50f8f661	st.b	(Ending_PalCycle_flag).w
0000a2ba 43f8b000	lea	(MainCharacter).w,a1
0000a2be 3038f750	move.w	(Ending_Routine).w,d0
0000a2c2 303b0016	move.w	ObjCA_State5_States(pc,d0.w),d0
0000a2c6 4ebb0012	jsr	ObjCA_State5_States(pc,d0.w)
0000a2ca 323c0080	move.w	#$80,d1
0000a2ce 6100ff5a	bsr.w	sub_A22A
0000a2d2 317c0040003c	move.w	#$40,objoff_3C(a0)
0000a2d8 4e75	rts	
0000a2e0 7008	moveq	#8,d0
0000a2e2 12bc0001	move.b	#ObjID_Sonic,id(a1)
0000a2e6 137c0081002a	move.b	#$81,obj_control(a1)
0000a2ec 4e75	rts	
0000a2ee 700c	moveq	#$C,d0
0000a2f0 60f0	bra.s	-
0000a2f2 700e	moveq	#$E,d0
0000a2f4 12bc0002	move.b	#ObjID_Tails,id(a1)
0000a2f8 137c0081002a	move.b	#$81,obj_control(a1)
0000a2fe 11fc0005b080	move.b	#ObjID_TailsTails,(Tails_Tails_Cutscene+id).w
0000a304 31c9b0be	move.w	a1,(Tails_Tails_Cutscene+parent).w
0000a308 4e75	rts	
0000a30a 5368003c	subq.w	#1,objoff_3C(a0)
0000a30e 6a10	bpl.s	+
0000a310 700a	moveq	#$A,d0
0000a312 323c0080	move.w	#$80,d1
0000a316 6100ff12	bsr.w	sub_A22A
0000a31a 317c00c0003c	move.w	#$C0,objoff_3C(a0)
0000a320 43f8b000	lea	(MainCharacter).w,a1
0000a324 137c000f001c	move.b	#AniIDSonAni_Float2,anim(a1)
0000a32a 337c00a00008	move.w	#$A0,x_pos(a1)
0000a330 337c0050000c	move.w	#$50,y_pos(a1)
0000a336 0c780002f750	cmpi.w	#2,(Ending_Routine).w
0000a33c 660c	bne.s	+
0000a33e 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
0000a344 337c10000014	move.w	#$1000,inertia(a1)
0000a34a 4e75	rts	
0000a34c 5368003c	subq.w	#1,objoff_3C(a0)
0000a350 6b14	bmi.s	+
0000a352 7800	moveq	#0,d4
0000a354 7a00	moveq	#0,d5
0000a356 31fc0000eeb0	move.w	#0,(Camera_X_pos_diff).w
0000a35c 31fc0100eeb2	move.w	#$100,(Camera_Y_pos_diff).w
0000a362 6000301e	bra.w	SwScrl_DEZ
0000a366 54280024	addq.b	#2,routine(a0)
0000a36a 317c0100003c	move.w	#$100,objoff_3C(a0)
0000a370 0c780004f750	cmpi.w	#4,(Ending_Routine).w
0000a376 6614	bne.s	return_A38C
0000a378 317c0880003c	move.w	#$880,objoff_3C(a0)
0000a37e 08380006fff8	btst	#6,(Graphics_Flags).w
0000a384 6706	beq.s	return_A38C
0000a386 317c0660003c	move.w	#$660,objoff_3C(a0)
0000a38c 4e75	rts	
0000a38e 08380006fff8	btst	#6,(Graphics_Flags).w
0000a394 670c	beq.s	+
0000a396 0c680e400032	cmpi.w	#$E40,objoff_32(a0)
0000a39c 6720	beq.s	loc_A3BE
0000a39e 6000000a	bra.w	++
0000a3a2 0c6811400032	cmpi.w	#$1140,objoff_32(a0)
0000a3a8 6714	beq.s	loc_A3BE
0000a3aa 5368003c	subq.w	#1,objoff_3C(a0)
0000a3ae 660a	bne.s	+
0000a3b0 45f90000ad62	lea	(ChildObject_AD62).l,a2
0000a3ba 600007e0	bra.w	loc_AB9C
0000a3be 54280024	addq.b	#2,routine(a0)
0000a3c2 50f8f660	st.b	(Credits_Trigger).w
0000a3c6 4e75	rts	
0000a3cc 7000	moveq	#0,d0
0000a3ce 10280024	move.b	routine(a0),d0
0000a3d2 323b0006	move.w	ObjCC_Index(pc,d0.w),d1
0000a3d6 4efb1002	jmp	ObjCC_Index(pc,d1.w)
0000a3de 43f90003afc8	lea	(ObjB2_SubObjData).l,a1
0000a3e8 0c780002ff70	cmpi.w	#2,(Player_mode).w
0000a3ee 660c	bne.s	+
0000a3f0 117c0004001a	move.b	#4,mapping_frame(a0)
0000a3f6 117c0001001c	move.b	#1,anim(a0)
0000a3fc 317cfff00008	move.w	#-$10,x_pos(a0)
0000a402 317c00c0000c	move.w	#$C0,y_pos(a0)
0000a408 317c01000010	move.w	#$100,x_vel(a0)
0000a40e 317cff800012	move.w	#-$80,y_vel(a0)
0000a414 117c00140035	move.b	#$14,objoff_35(a0)
0000a41a 117c00030018	move.b	#3,priority(a0)
0000a420 31fc0004f662	move.w	#4,(Ending_VInt_Subrout).w
0000a426 2f08	move.l	a0,-(sp)
0000a428 41f90009076e	lea	(MapEng_EndingTailsPlane).l,a0
0000a42e 0c780004f750	cmpi.w	#4,(Ending_Routine).w
0000a434 6606	bne.s	+
0000a436 41f9000907c0	lea	(MapEng_EndingSonicPlane).l,a0
0000a43c 43f9ffff0000	lea	(Chunk_Table).l,a1
0000a442 303c8156	move.w	#make_art_tile(ArtTile_ArtNem_EndingFinalTornado,0,1),d0
0000a44a 205f	movea.l	(sp)+,a0
0000a44c 31fc0c00fb40	move.w	#$C00,(Normal_palette_line3).w
0000a456 7000	moveq	#0,d0
0000a458 10280025	move.b	routine_secondary(a0),d0
0000a45c 323b000a	move.w	ObjCC_State2_States(pc,d0.w),d1
0000a460 4ebb1006	jsr	ObjCC_State2_States(pc,d1.w)
0000a474 0c6800a00008	cmpi.w	#$A0,x_pos(a0)
0000a47a 670e	beq.s	+
0000a480 43f90003afdc	lea	(Ani_objB2_a).l,a1
0000a48a 54280025	addq.b	#2,routine_secondary(a0)
0000a48e 317c0480003c	move.w	#$480,objoff_3C(a0)
0000a494 08380006fff8	btst	#6,(Graphics_Flags).w
0000a49a 6706	beq.s	+
0000a49c 317c03d0003c	move.w	#$3D0,objoff_3C(a0)
0000a4a2 317c00400032	move.w	#$40,objoff_32(a0)
0000a4a8 50f8b134	st.b	(CutScene+objoff_34).w
0000a4ac 42680010	clr.w	x_vel(a0)
0000a4b0 42680012	clr.w	y_vel(a0)
0000a4b4 60ca	bra.s	-
0000a4b6 61000702	bsr.w	sub_ABBA
0000a4ba 61000068	bsr.w	sub_A524
0000a4be 5368003c	subq.w	#1,objoff_3C(a0)
0000a4c2 6b02	bmi.s	+
0000a4c4 60ba	bra.s	-
0000a4c6 54280025	addq.b	#2,routine_secondary(a0)
0000a4ca 317c0002003c	move.w	#2,objoff_3C(a0)
0000a4d0 42680032	clr.w	objoff_32(a0)
0000a4d4 4228001a	clr.b	mapping_frame(a0)
0000a4d8 0c780002f750	cmpi.w	#2,(Ending_Routine).w
0000a4de 6714	beq.s	+
0000a4e0 117c0007001a	move.b	#7,mapping_frame(a0)
0000a4e6 0c780004f750	cmpi.w	#4,(Ending_Routine).w
0000a4ec 6606	bne.s	+
0000a4ee 117c0018001a	move.b	#$18,mapping_frame(a0)
0000a4f4 4228001c	clr.b	anim(a0)
0000a4f8 4228001b	clr.b	anim_frame(a0)
0000a4fc 4228001e	clr.b	anim_frame_duration(a0)
0000a500 217c0000ada20004	move.l	#ObjCF_MapUnc_ADA2,mappings(a0)
0000a508 317c00000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,0,0),art_tile(a0)
0000a50e 4eb900016d6e	jsr	(Adjust2PArtPointer).l
0000a514 046800140008	subi.w	#$14,x_pos(a0)
0000a51a 06680014000c	addi.w	#$14,y_pos(a0)
0000a520 6000006a	bra.w	sub_A58C
0000a524 43f8b000	lea	(MainCharacter).w,a1
0000a528 3038f750	move.w	(Ending_Routine).w,d0
0000a52c 303b0006	move.w	off_A534(pc,d0.w),d0
0000a530 4efb0002	jmp	off_A534(pc,d0.w)
0000a53a 3028000c	move.w	y_pos(a0),d0
0000a53e 0440001c	subi.w	#$1C,d0
0000a542 3340000c	move.w	d0,y_pos(a1)
0000a546 336800080008	move.w	x_pos(a0),x_pos(a1)
0000a54c 237c01000505001a	move.l	#(1<<24)|(0<<16)|(AniIDSonAni_Wait<<8)|(AniIDSonAni_Wait<<0),mapping_frame(a1)
0000a554 337c0100001e	move.w	#$100,anim_frame_duration(a1)
0000a55a 4e75	rts	
0000a55c 4a680032	tst.w	objoff_32(a0)
0000a560 6712	beq.s	+
0000a562 53680032	subq.w	#1,objoff_32(a0)
0000a566 06a9000080000008	addi.l	#$8000,x_pos(a1)
0000a56e 5269000c	addq.w	#1,y_pos(a1)
0000a572 4e75	rts	
0000a574 337c00c00008	move.w	#$C0,x_pos(a1)
0000a57a 337c0090000c	move.w	#$90,y_pos(a1)
0000a580 4e75	rts	
0000a582 3028000c	move.w	y_pos(a0),d0
0000a586 04400018	subi.w	#$18,d0
0000a58a 60b6	bra.s	-
0000a58c 4a38fe19	tst.b	(Super_Sonic_flag).w
0000a590 6600fdfa	bne.w	return_A38C
0000a594 43f8b000	lea	(MainCharacter).w,a1
0000a598 337c02000008	move.w	#$200,x_pos(a1)
0000a59e 337c0000000c	move.w	#0,y_pos(a1)
0000a5a4 4e75	rts	
0000a5a6 61e4	bsr.s	sub_A58C
0000a5a8 5368003c	subq.w	#1,objoff_3C(a0)
0000a5ac 6a38	bpl.s	+
0000a5ae 317c0002003c	move.w	#2,objoff_3C(a0)
0000a5b4 30280032	move.w	objoff_32(a0),d0
0000a5b8 0c40001c	cmpi.w	#$1C,d0
0000a5bc 642a	bhs.s	++
0000a5be 52680032	addq.w	#1,objoff_32(a0)
0000a5c2 3238f750	move.w	(Ending_Routine).w,d1
0000a5c6 323b1034	move.w	off_A5FC(pc,d1.w),d1
0000a5ca 43fb1030	lea	off_A5FC(pc,d1.w),a1
0000a5ce 11710000001a	move.b	(a1,d0.w),mapping_frame(a0)
0000a5d4 d040	add.w	d0,d0
0000a5d6 d040	add.w	d0,d0
0000a5d8 223b007c	move.l	word_A656(pc,d0.w),d1
0000a5dc 3141000c	move.w	d1,y_pos(a0)
0000a5e0 4841	swap	d1
0000a5e2 31410008	move.w	d1,x_pos(a0)
0000a5e6 4e75	rts	
0000a5e8 54280025	addq.b	#2,routine_secondary(a0)
0000a5ec 317c0060003c	move.w	#$60,objoff_3C(a0)
0000a5f2 42280031	clr.b	objoff_31(a0)
0000a5f6 42680032	clr.w	objoff_32(a0)
0000a5fa 4e75	rts	
0000a6c6 5368003c	subq.w	#1,objoff_3C(a0)
0000a6ca 6b54	bmi.s	loc_A720
0000a6cc 4a38fe19	tst.b	(Super_Sonic_flag).w
0000a6d0 6738	beq.s	+
0000a6d2 53280031	subq.b	#1,objoff_31(a0)
0000a6d6 6a32	bpl.s	+
0000a6d8 56280031	addq.b	#3,objoff_31(a0)
0000a6dc 30280032	move.w	objoff_32(a0),d0
0000a6e0 58680032	addq.w	#4,objoff_32(a0)
0000a6e4 0c400078	cmpi.w	#$78,d0
0000a6e8 6420	bhs.s	+
0000a6ea 0c40000c	cmpi.w	#$C,d0
0000a6ee 651c	blo.s	++
0000a6f0 6100fea2	bsr.w	loc_A594
0000a6f4 223b0070	move.l	word_A766(pc,d0.w),d1
0000a6f8 3141000c	move.w	d1,y_pos(a0)
0000a6fc 4841	swap	d1
0000a6fe 31410008	move.w	d1,x_pos(a0)
0000a702 e448	lsr.w	#2,d0
0000a704 117b0042001a	move.b	byte_A748(pc,d0.w),mapping_frame(a0)
0000a70a 4e75	rts	
0000a70c 203b0058	move.l	word_A766(pc,d0.w),d0
0000a710 43f8b000	lea	(MainCharacter).w,a1
0000a714 3340000c	move.w	d0,y_pos(a1)
0000a718 4840	swap	d0
0000a71a 33400008	move.w	d0,x_pos(a1)
0000a71e 4e75	rts	
0000a720 54280025	addq.b	#2,routine_secondary(a0)
0000a724 4268003c	clr.w	objoff_3C(a0)
0000a728 42680032	clr.w	objoff_32(a0)
0000a72c 45f90000ad6e	lea	(ChildObject_AD6E).l,a2
0000a736 4a38fe19	tst.b	(Super_Sonic_flag).w
0000a73a 6600fc50	bne.w	return_A38C
0000a73e 45f90000ad6a	lea	(ChildObject_AD6A).l,a2
0000a7de 6100fdb4	bsr.w	loc_A594
0000a7e2 5368003c	subq.w	#1,objoff_3C(a0)
0000a7e6 6a24	bpl.s	+
0000a7e8 317c0002003c	move.w	#2,objoff_3C(a0)
0000a7ee 30280032	move.w	objoff_32(a0),d0
0000a7f2 0c40001c	cmpi.w	#$1C,d0
0000a7f6 6416	bhs.s	++
0000a7f8 58680032	addq.w	#4,objoff_32(a0)
0000a7fc 43fb0024	lea	word_A822(pc,d0.w),a1
0000a800 3019	move.w	(a1)+,d0
0000a802 d178e000	add.w	d0,(Horiz_Scroll_Buf).w
0000a806 3019	move.w	(a1)+,d0
0000a808 d178f616	add.w	d0,(Vscroll_Factor_FG).w
0000a80c 4e75	rts	
0000a80e 54280025	addq.b	#2,routine_secondary(a0)
0000a812 08e800030022	bset	#status.npc.p1_standing,status(a0)
0000a818 42280031	clr.b	objoff_31(a0)
0000a81c 42680032	clr.w	objoff_32(a0)
0000a820 4e75	rts	
0000a83e 4a38fe19	tst.b	(Super_Sonic_flag).w
0000a842 6700fb48	beq.w	return_A38C
0000a846 117c0017001a	move.b	#$17,mapping_frame(a0)
0000a84c 53280031	subq.b	#1,objoff_31(a0)
0000a850 6a20	bpl.s	+
0000a852 56280031	addq.b	#3,objoff_31(a0)
0000a856 30280032	move.w	objoff_32(a0),d0
0000a85a 0c400020	cmpi.w	#$20,d0
0000a85e 6412	bhs.s	+
0000a860 58680032	addq.w	#4,objoff_32(a0)
0000a864 223b000e	move.l	word_A874(pc,d0.w),d1
0000a868 3141000c	move.w	d1,y_pos(a0)
0000a86c 4841	swap	d1
0000a86e 31410008	move.w	d1,x_pos(a0)
0000a872 4e75	rts	
0000a894 7000	moveq	#0,d0
0000a896 10280024	move.b	routine(a0),d0
0000a89a 323b0006	move.w	ObjCE_Index(pc,d0.w),d1
0000a89e 4efb1002	jmp	ObjCE_Index(pc,d1.w)
0000a8aa 43f90003b322	lea	(ObjB3_SubObjData).l,a1
0000a8b4 217c0000ada20004	move.l	#ObjCF_MapUnc_ADA2,mappings(a0)
0000a8bc 317c80000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,0,1),art_tile(a0)
0000a8c2 117c00010018	move.b	#1,priority(a0)
0000a8c8 4eb900016d6e	jsr	(Adjust2PArtPointer).l
0000a8ce 117c000c001a	move.b	#$C,mapping_frame(a0)
0000a8d4 0c780004f750	cmpi.w	#4,(Ending_Routine).w
0000a8da 660c	bne.s	+
0000a8dc 117c000f001a	move.b	#$F,mapping_frame(a0)
0000a8e2 317ca0000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,1,1),art_tile(a0)
0000a8e8 303c00e8	move.w	#$E8,d0
0000a8ec 31400008	move.w	d0,x_pos(a0)
0000a8f0 31400030	move.w	d0,objoff_30(a0)
0000a8f4 303c0118	move.w	#$118,d0
0000a8f8 3140000c	move.w	d0,y_pos(a0)
0000a8fc 31400032	move.w	d0,objoff_32(a0)
0000a900 4e75	rts	
0000a902 3268002c	movea.w	objoff_2C(a0),a1
0000a906 082900030022	btst	#status.npc.p1_standing,status(a1)
0000a90c 661c	bne.s	+
0000a90e 30280030	move.w	objoff_30(a0),d0
0000a912 d078e000	add.w	(Horiz_Scroll_Buf).w,d0
0000a916 31400008	move.w	d0,x_pos(a0)
0000a91a 30280032	move.w	objoff_32(a0),d0
0000a91e 9078f616	sub.w	(Vscroll_Factor_FG).w,d0
0000a922 3140000c	move.w	d0,y_pos(a0)
0000a92a 54280024	addq.b	#2,routine(a0)
0000a92e 4268003c	clr.w	objoff_3C(a0)
0000a936 5368003c	subq.w	#1,objoff_3C(a0)
0000a93a 6a38	bpl.s	BranchTo2_JmpTo5_DisplaySprite
0000a93c 317c0004003c	move.w	#4,objoff_3C(a0)
0000a942 30280034	move.w	objoff_34(a0),d0
0000a946 0c400004	cmpi.w	#4,d0
0000a94a 642c	bhs.s	++
0000a94c 54680034	addq.w	#2,objoff_34(a0)
0000a950 43fb002e	lea	byte_A980(pc,d0.w),a1
0000a954 0c780002f750	cmpi.w	#2,(Ending_Routine).w
0000a95a 6604	bne.s	+
0000a95c 43fb0026	lea	byte_A984(pc,d0.w),a1
0000a960 1019	move.b	(a1)+,d0
0000a962 4880	ext.w	d0
0000a964 d1680008	add.w	d0,x_pos(a0)
0000a968 1019	move.b	(a1)+,d0
0000a96a 4880	ext.w	d0
0000a96c d168000c	add.w	d0,y_pos(a0)
0000a970 5228001a	addq.b	#1,mapping_frame(a0)
0000a978 54280024	addq.b	#2,routine(a0)
0000a988 7000	moveq	#0,d0
0000a98a 10280024	move.b	routine(a0),d0
0000a98e 323b0006	move.w	ObjCF_Index(pc,d0.w),d1
0000a992 4efb1002	jmp	ObjCF_Index(pc,d1.w)
0000a99a 43f90003b322	lea	(ObjB3_SubObjData).l,a1
0000a9a4 217c0000ada20004	move.l	#ObjCF_MapUnc_ADA2,mappings(a0)
0000a9ac 317c80000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,0,1),art_tile(a0)
0000a9b2 117c00030018	move.b	#3,priority(a0)
0000a9b8 4eb900016d6e	jsr	(Adjust2PArtPointer).l
0000a9be 117c0005001a	move.b	#5,mapping_frame(a0)
0000a9c4 117c0002001c	move.b	#2,anim(a0)
0000a9ca 303c010f	move.w	#$10F,d0
0000a9ce 31400008	move.w	d0,x_pos(a0)
0000a9d2 31400030	move.w	d0,objoff_30(a0)
0000a9d6 303c015e	move.w	#$15E,d0
0000a9da 3140000c	move.w	d0,y_pos(a0)
0000a9de 31400032	move.w	d0,objoff_32(a0)
0000a9e2 4e75	rts	
0000a9e4 43f90000ad82	lea	(Ani_objCF).l,a1
0000a9ee 6000ff1e	bra.w	loc_A90E
0000a9f2 7000	moveq	#0,d0
0000a9f4 10280024	move.b	routine(a0),d0
0000a9f8 323b0006	move.w	ObjCB_Index(pc,d0.w),d1
0000a9fc 4efb1002	jmp	ObjCB_Index(pc,d1.w)
0000aa06 43f90003b322	lea	(ObjB3_SubObjData).l,a1
0000aa10 30280002	move.w	art_tile(a0),d0
0000aa14 02401fff	andi.w	#$1FFF,d0
0000aa18 00406000	ori.w	#palette_mask,d0
0000aa1c 31400002	move.w	d0,art_tile(a0)
0000aa20 117c00300019	move.b	#$30,width_pixels(a0)
0000aa26 2038f636	move.l	(RNG_seed).w,d0
0000aa2a e298	ror.l	#1,d0
0000aa2c 21c0f636	move.l	d0,(RNG_seed).w
0000aa30 3200	move.w	d0,d1
0000aa32 02400003	andi.w	#3,d0
0000aa36 117b0032001a	move.b	ObjCB_Frames(pc,d0.w),mapping_frame(a0)
0000aa3c d040	add.w	d0,d0
0000aa3e 317b002e0012	move.w	ObjCB_YSpeeds(pc,d0.w),y_vel(a0)
0000aa44 4a38b134	tst.b	(CutScene+$34).w
0000aa48 6710	beq.s	+
0000aa4a 024100ff	andi.w	#$FF,d1
0000aa4e 3141000c	move.w	d1,y_pos(a0)
0000aa52 317c01500008	move.w	#$150,x_pos(a0)
0000aa58 4e75	rts	
0000aa5a 024101ff	andi.w	#$1FF,d1
0000aa5e 31410008	move.w	d1,x_pos(a0)
0000aa62 317c0100000c	move.w	#$100,y_pos(a0)
0000aa68 4e75	rts	
0000aa76 4a38b134	tst.b	(CutScene+objoff_34).w
0000aa7a 670e	beq.s	loc_AA8A
0000aa7c 54280024	addq.b	#2,routine(a0)
0000aa80 316800120010	move.w	y_vel(a0),x_vel(a0)
0000aa86 42680012	clr.w	y_vel(a0)
0000aa8e 4a38b134	tst.b	(CutScene+objoff_34).w
0000aa92 670e	beq.s	+
0000aa94 0c68ffe00008	cmpi.w	#-$20,x_pos(a0)
0000aa9a 6d0014d2	blt.w	JmpTo3_DeleteObject
0000aaa2 4a68000c	tst.w	y_pos(a0)
0000aaa6 6b0014c6	bmi.w	JmpTo3_DeleteObject
0000aaae 7000	moveq	#0,d0
0000aab0 10280024	move.b	routine(a0),d0
0000aab4 323b0006	move.w	ObjCD_Index(pc,d0.w),d1
0000aab8 4efb1002	jmp	ObjCD_Index(pc,d1.w)
0000aac0 43f90000ad72	lea	(ObjCD_SubObjData).l,a1
0000aaca 2038f636	move.l	(RNG_seed).w,d0
0000aace e698	ror.l	#3,d0
0000aad0 21c0f636	move.l	d0,(RNG_seed).w
0000aad4 2200	move.l	d0,d1
0000aad6 0240007f	andi.w	#$7F,d0
0000aada 343cff60	move.w	#-$A0,d2
0000aade d440	add.w	d0,d2
0000aae0 31420008	move.w	d2,x_pos(a0)
0000aae4 e699	ror.l	#3,d1
0000aae6 024100ff	andi.w	#$FF,d1
0000aaea 7408	moveq	#8,d2
0000aaec d441	add.w	d1,d2
0000aaee 3142000c	move.w	d2,y_pos(a0)
0000aaf2 317c01000010	move.w	#$100,x_vel(a0)
0000aaf8 7020	moveq	#$20,d0
0000aafa 0c410020	cmpi.w	#$20,d1
0000aafe 6502	blo.s	+
0000ab00 4440	neg.w	d0
0000ab02 31400012	move.w	d0,y_vel(a0)
0000ab06 317c00c0003c	move.w	#$C0,endingbird_delay(a0)
0000ab0c 4e75	rts	
0000ab0e 7000	moveq	#0,d0
0000ab10 10280025	move.b	routine_secondary(a0),d0
0000ab14 323b0018	move.w	ObjCD_Main_States(pc,d0.w),d1
0000ab18 4ebb1014	jsr	ObjCD_Main_States(pc,d1.w)
0000ab20 43f90000ad7c	lea	(Ani_objCD).l,a1
0000ab34 5368003c	subq.w	#1,endingbird_delay(a0)
0000ab38 6a20	bpl.s	+
0000ab3a 54280025	addq.b	#2,routine_secondary(a0)
0000ab3e 31680012002e	move.w	y_vel(a0),objoff_2E(a0)
0000ab44 42680010	clr.w	x_vel(a0)
0000ab48 3168000c0032	move.w	y_pos(a0),objoff_32(a0)
0000ab4e 317c00800012	move.w	#$80,y_vel(a0)
0000ab54 317c0180003c	move.w	#$180,endingbird_delay(a0)
0000ab5a 4e75	rts	
0000ab5c 5368003c	subq.w	#1,endingbird_delay(a0)
0000ab60 6b14	bmi.s	++
0000ab62 3028000c	move.w	y_pos(a0),d0
0000ab66 72fc	moveq	#-4,d1
0000ab68 b0680032	cmp.w	objoff_32(a0),d0
0000ab6c 6402	bhs.s	+
0000ab6e 4441	neg.w	d1
0000ab70 d3680012	add.w	d1,y_vel(a0)
0000ab74 4e75	rts	
0000ab76 54280025	addq.b	#2,routine_secondary(a0)
0000ab7a 317cff000010	move.w	#-$100,x_vel(a0)
0000ab80 3168002e0012	move.w	objoff_2E(a0),y_vel(a0)
0000ab86 317c00c0003c	move.w	#$C0,endingbird_delay(a0)
0000ab8c 4e75	rts	
0000ab8e 5368003c	subq.w	#1,endingbird_delay(a0)
0000ab92 6b02	bmi.s	+
0000ab94 4e75	rts	
0000ab96 584f	addq.w	#4,sp
0000ab9c 53680030	subq.w	#1,objoff_30(a0)
0000aba0 6a16	bpl.s	+
0000aba2 2038f636	move.l	(RNG_seed).w,d0
0000aba6 0240001f	andi.w	#$1F,d0
0000abaa 31400030	move.w	d0,objoff_30(a0)
0000abae 45f90000ad5e	lea	(ChildObject_AD5E).l,a2
0000abb8 4e75	rts	
0000abba 53680030	subq.w	#1,objoff_30(a0)
0000abbe 6a20	bpl.s	+
0000abc0 4a280035	tst.b	objoff_35(a0)
0000abc4 671a	beq.s	+
0000abc6 53280035	subq.b	#1,objoff_35(a0)
0000abca 2038f636	move.l	(RNG_seed).w,d0
0000abce 0240000f	andi.w	#$F,d0
0000abd2 31400030	move.w	d0,objoff_30(a0)
0000abd6 45f90000ad66	lea	(ChildObject_AD66).l,a2
0000abe2 3038f750	move.w	(Ending_Routine).w,d0
0000abe6 303b0006	move.w	EndingSequence_LoadCharacterArt_Characters(pc,d0.w),d0
0000abea 4efb0002	jmp	EndingSequence_LoadCharacterArt_Characters(pc,d0.w)
0000abf4 23fc4320000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_EndingCharacter),VRAM,WRITE),(VDP_control_port).l
0000abfe 41f900092f0a	lea	(ArtNem_EndingSonic).l,a0
0000ac08 23fc4320000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_EndingCharacter),VRAM,WRITE),(VDP_control_port).l
0000ac12 41f900093848	lea	(ArtNem_EndingSuperSonic).l,a0
0000ac1c 23fc4320000000c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_EndingCharacter),VRAM,WRITE),(VDP_control_port).l
0000ac26 41f900093f3c	lea	(ArtNem_EndingTails).l,a0
0000ac30 3038f750	move.w	(Ending_Routine).w,d0
0000ac34 303b0006	move.w	EndingSequence_LoadFlickyArt_Flickies(pc,d0.w),d0
0000ac38 4efb0002	jmp	EndingSequence_LoadFlickyArt_Flickies(pc,d0.w)
0000ac42 23fc7280000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_Animal_2),VRAM,WRITE),(VDP_control_port).l
0000ac4c 41f90007ef60	lea	(ArtNem_Flicky).l,a0
0000ac56 23fc7280000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_Animal_2),VRAM,WRITE),(VDP_control_port).l
0000ac60 41f90007f5e2	lea	(ArtNem_Eagle).l,a0
0000ac6a 23fc7280000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_Animal_2),VRAM,WRITE),(VDP_control_port).l
0000ac74 41f90007f340	lea	(ArtNem_Chicken).l,a0
0000b262 43fa0066	lea	off_B2CA(pc),a1
0000b266 3038ff4c	move.w	(CreditsScreenIndex).w,d0
0000b26a e548	lsl.w	#2,d0
0000b26c 20310000	move.l	(a1,d0.w),d0
0000b270 2240	movea.l	d0,a1
0000b272 46fc2700	move	#$2700,sr
0000b276 4df900c00000	lea	(VDP_data_port).l,a6
0000b27c 2019	move.l	(a1)+,d0
0000b27e 6b18	bmi.s	++
0000b280 2440	movea.l	d0,a2
0000b282 3019	move.w	(a1)+,d0
0000b284 6118	bsr.s	sub_B29E
0000b286 2d400004	move.l	d0,4(a6)
0000b28a 101a	move.b	(a2)+,d0
0000b28c e148	lsl.w	#8,d0
0000b28e 101a	move.b	(a2)+,d0
0000b290 6b04	bmi.s	+
0000b292 3c80	move.w	d0,(a6)
0000b294 60f8	bra.s	-
0000b298 46fc2300	move	#$2300,sr
0000b29c 4e75	rts	
0000b29e 02800000ffff	andi.l	#$FFFF,d0
0000b2a4 e588	lsl.l	#2,d0
0000b2a6 e448	lsr.w	#2,d0
0000b2a8 00404000	ori.w	#vdpComm($0000,VRAM,WRITE)>>16,d0
0000b2ac 4840	swap	d0
0000b2ae 4e75	rts	
0000bf68 4ef9000164f4	jmp	(extractJmpToName("JmpTo5_DisplaySprite")).l
0000bf6e 4ef9000164e6	jmp	(extractJmpToName("JmpTo3_DeleteObject")).l
0000bf74 4ef900001370	jmp	(extractJmpToName("JmpTo2_PlaySound")).l
0000bf7a 4ef90003af58	jmp	(extractJmpToName("JmpTo_ObjB2_Animate_Pilot")).l
0000bf80 4ef900016544	jmp	(extractJmpToName("JmpTo_AnimateSprite")).l
0000bf86 4ef9000014de	jmp	(extractJmpToName("JmpTo_NemDec")).l
0000bf8c 4ef9000017bc	jmp	(extractJmpToName("JmpTo_EniDec")).l
0000bf92 4ef900001208	jmp	(extractJmpToName("JmpTo_ClearScreen")).l
0000bf98 4ef90000135e	jmp	(extractJmpToName("JmpTo2_PlayMusic")).l
0000bf9e 4ef9000367d0	jmp	(extractJmpToName("JmpTo_LoadChildObject")).l
0000bfa4 4ef90000140e	jmp	(extractJmpToName("JmpTo2_PlaneMapToVRAM_H40")).l
0000bfaa 4ef9000163ac	jmp	(extractJmpToName("JmpTo2_ObjectMove")).l
0000bfb0 4ef9000019dc	jmp	(extractJmpToName("JmpTo_PalCycle_Load")).l
0000bfb6 4ef900036602	jmp	(extractJmpToName("JmpTo_LoadSubObject_Part3")).l
0000bfbc 4278ee50	clr.w	(Scroll_flags).w
0000bfc0 4278ee52	clr.w	(Scroll_flags_BG).w
0000bfc4 4278ee54	clr.w	(Scroll_flags_BG2).w
0000bfc8 4278ee56	clr.w	(Scroll_flags_BG3).w
0000bfcc 4278ee58	clr.w	(Scroll_flags_P2).w
0000bfd0 4278ee5a	clr.w	(Scroll_flags_BG_P2).w
0000bfd4 4278ee5c	clr.w	(Scroll_flags_BG2_P2).w
0000bfd8 4278ee5e	clr.w	(Scroll_flags_BG3_P2).w
0000bfdc 4278eea0	clr.w	(Scroll_flags_copy).w
0000bfe0 4278eea2	clr.w	(Scroll_flags_BG_copy).w
0000bfe4 4278eea4	clr.w	(Scroll_flags_BG2_copy).w
0000bfe8 4278eea6	clr.w	(Scroll_flags_BG3_copy).w
0000bfec 4278eea8	clr.w	(Scroll_flags_copy_P2).w
0000bff0 4278eeaa	clr.w	(Scroll_flags_BG_copy_P2).w
0000bff4 4278eeac	clr.w	(Scroll_flags_BG2_copy_P2).w
0000bff8 4278eeae	clr.w	(Scroll_flags_BG3_copy_P2).w
0000bffc 4238eedc	clr.b	(Deform_lock).w
0000c000 4238eebc	clr.b	(Screen_Shaking_Flag_HTZ).w
0000c004 4238eebd	clr.b	(Screen_Shaking_Flag).w
0000c008 4238eebe	clr.b	(Scroll_lock).w
0000c00c 4238eebf	clr.b	(Scroll_lock_P2).w
0000c010 7000	moveq	#0,d0
0000c012 11c0eedf	move.b	d0,(Dynamic_Resize_Routine).w
0000c016 3038fe10	move.w	(Current_ZoneAndAct).w,d0
0000c01a e218	ror.b	#1,d0
0000c01c e848	lsr.w	#4,d0
0000c01e 41fb0034	lea	LevelSize(pc,d0.w),a0
0000c022 2018	move.l	(a0)+,d0
0000c024 21c0eec8	move.l	d0,(Camera_Min_X_pos).w
0000c028 21c0eec0	move.l	d0,(Camera_Min_X_pos_target).w
0000c02c 21c0eef8	move.l	d0,(Tails_Min_X_pos).w
0000c030 2018	move.l	(a0)+,d0
0000c032 21c0eecc	move.l	d0,(Camera_Min_Y_pos).w
0000c036 21c0eec4	move.l	d0,(Camera_Min_Y_pos_target).w
0000c03a 21c0eefc	move.l	d0,(Tails_Min_Y_pos).w
0000c03e 31fc1010ee40	move.w	#$1010,(Horiz_block_crossed_flag).w
0000c044 31fc0060eed8	move.w	#(screen_height/2)-16,(Camera_Y_pos_bias).w
0000c04a 31fc0060eeda	move.w	#(screen_height/2)-16,(Camera_Y_pos_bias_P2).w
0000c050 60000112	bra.w	+
0000c164 4a38fe30	tst.b	(Last_star_pole_hit).w
0000c168 6710	beq.s	+
0000c16a 4eb90001f35e	jsr	(Obj79_LoadData).l
0000c170 3238b008	move.w	(MainCharacter+x_pos).w,d1
0000c174 3038b00c	move.w	(MainCharacter+y_pos).w,d0
0000c178 601c	bra.s	++
0000c17a 3038fe10	move.w	(Current_ZoneAndAct).w,d0
0000c17e e218	ror.b	#1,d0
0000c180 ea48	lsr.w	#5,d0
0000c182 43fb004c	lea	StartLocations(pc,d0.w),a1
0000c186 7200	moveq	#0,d1
0000c188 3219	move.w	(a1)+,d1
0000c18a 31c1b008	move.w	d1,(MainCharacter+x_pos).w
0000c18e 7000	moveq	#0,d0
0000c190 3011	move.w	(a1),d0
0000c192 31c0b00c	move.w	d0,(MainCharacter+y_pos).w
0000c196 044100a0	subi.w	#$A0,d1
0000c19a 6402	bcc.s	+
0000c19c 7200	moveq	#0,d1
0000c19e 3438eeca	move.w	(Camera_Max_X_pos).w,d2
0000c1a2 b242	cmp.w	d2,d1
0000c1a4 6502	blo.s	+
0000c1a6 3202	move.w	d2,d1
0000c1a8 31c1ee00	move.w	d1,(Camera_X_pos).w
0000c1ac 31c1ee20	move.w	d1,(Camera_X_pos_P2).w
0000c1b0 04400060	subi.w	#$60,d0
0000c1b4 6402	bcc.s	+
0000c1b6 7000	moveq	#0,d0
0000c1b8 b078eece	cmp.w	(Camera_Max_Y_pos).w,d0
0000c1bc 6d04	blt.s	+
0000c1be 3038eece	move.w	(Camera_Max_Y_pos).w,d0
0000c1c2 31c0ee04	move.w	d0,(Camera_Y_pos).w
0000c1c6 31c0ee24	move.w	d0,(Camera_Y_pos_P2).w
0000c1ca 6100008c	bsr.w	InitCameraValues
0000c1ce 4e75	rts	
0000c258 4a38fe30	tst.b	(Last_star_pole_hit).w
0000c25c 6628	bne.s	+
0000c25e 31c0ee0c	move.w	d0,(Camera_BG_Y_pos).w
0000c262 31c0ee14	move.w	d0,(Camera_BG2_Y_pos).w
0000c266 31c1ee08	move.w	d1,(Camera_BG_X_pos).w
0000c26a 31c1ee10	move.w	d1,(Camera_BG2_X_pos).w
0000c26e 31c1ee18	move.w	d1,(Camera_BG3_X_pos).w
0000c272 31c0ee2c	move.w	d0,(Camera_BG_Y_pos_P2).w
0000c276 31c0ee34	move.w	d0,(Camera_BG2_Y_pos_P2).w
0000c27a 31c1ee28	move.w	d1,(Camera_BG_X_pos_P2).w
0000c27e 31c1ee30	move.w	d1,(Camera_BG2_X_pos_P2).w
0000c282 31c1ee38	move.w	d1,(Camera_BG3_X_pos_P2).w
0000c286 7400	moveq	#0,d2
0000c288 1438fe10	move.b	(Current_Zone).w,d2
0000c28c d442	add.w	d2,d2
0000c28e 343b2006	move.w	InitCam_Index(pc,d2.w),d2
0000c292 4efb2002	jmp	InitCam_Index(pc,d2.w)
0000c2b8 42b8ee08	clr.l	(Camera_BG_X_pos).w
0000c2bc 42b8ee0c	clr.l	(Camera_BG_Y_pos).w
0000c2c0 42b8ee14	clr.l	(Camera_BG2_Y_pos).w
0000c2c4 42b8ee1c	clr.l	(Camera_BG3_Y_pos).w
0000c2c8 45f8a800	lea	(TempArray_LayerDef).w,a2
0000c2cc 429a	clr.l	(a2)+
0000c2ce 429a	clr.l	(a2)+
0000c2d0 429a	clr.l	(a2)+
0000c2d2 42b8ee28	clr.l	(Camera_BG_X_pos_P2).w
0000c2d6 42b8ee2c	clr.l	(Camera_BG_Y_pos_P2).w
0000c2da 42b8ee34	clr.l	(Camera_BG2_Y_pos_P2).w
0000c2de 42b8ee3c	clr.l	(Camera_BG3_Y_pos_P2).w
0000c2e2 4e75	rts	
0000c2e4 e440	asr.w	#2,d0
0000c2e6 31c0ee0c	move.w	d0,(Camera_BG_Y_pos).w
0000c2ea e641	asr.w	#3,d1
0000c2ec 31c1ee08	move.w	d1,(Camera_BG_X_pos).w
0000c2f0 4e75	rts	
0000c2f2 4e75	rts	
0000c2f4 42b8ee08	clr.l	(Camera_BG_X_pos).w
0000c2f8 42b8ee0c	clr.l	(Camera_BG_Y_pos).w
0000c2fc 42b8ee14	clr.l	(Camera_BG2_Y_pos).w
0000c300 42b8ee1c	clr.l	(Camera_BG3_Y_pos).w
0000c304 45f8a800	lea	(TempArray_LayerDef).w,a2
0000c308 429a	clr.l	(a2)+
0000c30a 429a	clr.l	(a2)+
0000c30c 429a	clr.l	(a2)+
0000c30e 42b8ee28	clr.l	(Camera_BG_X_pos_P2).w
0000c312 42b8ee2c	clr.l	(Camera_BG_Y_pos_P2).w
0000c316 42b8ee34	clr.l	(Camera_BG2_Y_pos_P2).w
0000c31a 42b8ee3c	clr.l	(Camera_BG3_Y_pos_P2).w
0000c31e 4e75	rts	
0000c320 4e75	rts	
0000c322 e648	lsr.w	#3,d0
0000c324 06400050	addi.w	#$50,d0
0000c328 31c0ee0c	move.w	d0,(Camera_BG_Y_pos).w
0000c32c 42b8ee08	clr.l	(Camera_BG_X_pos).w
0000c330 4e75	rts	
0000c332 42b8ee08	clr.l	(Camera_BG_X_pos).w
0000c336 42b8ee28	clr.l	(Camera_BG_X_pos_P2).w
0000c33a 4a38fe11	tst.b	(Current_Act).w
0000c33e 6612	bne.s	+
0000c340 80fc0003	divu.w	#3,d0
0000c344 04400140	subi.w	#$140,d0
0000c348 31c0ee0c	move.w	d0,(Camera_BG_Y_pos).w
0000c34c 31c0ee2c	move.w	d0,(Camera_BG_Y_pos_P2).w
0000c350 4e75	rts	
0000c352 80fc0006	divu.w	#6,d0
0000c356 04400010	subi.w	#$10,d0
0000c35a 31c0ee0c	move.w	d0,(Camera_BG_Y_pos).w
0000c35e 31c0ee2c	move.w	d0,(Camera_BG_Y_pos_P2).w
0000c362 4e75	rts	
0000c364 42b8ee08	clr.l	(Camera_BG_X_pos).w
0000c368 42b8ee0c	clr.l	(Camera_BG_Y_pos).w
0000c36c 42b8ee2c	clr.l	(Camera_BG_Y_pos_P2).w
0000c370 4e75	rts	
0000c372 e448	lsr.w	#2,d0
0000c374 31c0ee0c	move.w	d0,(Camera_BG_Y_pos).w
0000c378 31c0ee2c	move.w	d0,(Camera_BG_Y_pos_P2).w
0000c37c e249	lsr.w	#1,d1
0000c37e 31c1ee10	move.w	d1,(Camera_BG2_X_pos).w
0000c382 e449	lsr.w	#2,d1
0000c384 31c1ee08	move.w	d1,(Camera_BG_X_pos).w
0000c388 4e75	rts	
0000c38a 4e75	rts	
0000c38c 4a38fe11	tst.b	(Current_Act).w
0000c390 670c	beq.s	+
0000c392 044000e0	subi.w	#$E0,d0
0000c396 e248	lsr.w	#1,d0
0000c398 31c0ee0c	move.w	d0,(Camera_BG_Y_pos).w
0000c39c 6008	bra.s	loc_C3A6
0000c39e 04400180	subi.w	#$180,d0
0000c3a2 31c0ee0c	move.w	d0,(Camera_BG_Y_pos).w
0000c3a6 c3fc0119	muls.w	#$119,d1
0000c3aa e081	asr.l	#8,d1
0000c3ac 31c1ee08	move.w	d1,(Camera_BG_X_pos).w
0000c3b0 31c1f672	move.w	d1,(Camera_ARZ_BG_X_pos).w
0000c3b4 4278ee0a	clr.w	(Camera_BG_X_pos+2).w
0000c3b8 4278f674	clr.w	(Camera_ARZ_BG_X_pos+2).w
0000c3bc 42b8ee14	clr.l	(Camera_BG2_Y_pos).w
0000c3c0 42b8ee1c	clr.l	(Camera_BG3_Y_pos).w
0000c3c4 4e75	rts	
0000c3c6 42b8ee08	clr.l	(Camera_BG_X_pos).w
0000c3ca 42b8ee0c	clr.l	(Camera_BG_Y_pos).w
0000c3ce 4e75	rts	
0000c3d0 4a38eedc	tst.b	(Deform_lock).w
0000c3d4 6702	beq.s	+
0000c3d6 4e75	rts	
0000c3d8 4278ee50	clr.w	(Scroll_flags).w
0000c3dc 4278ee52	clr.w	(Scroll_flags_BG).w
0000c3e0 4278ee54	clr.w	(Scroll_flags_BG2).w
0000c3e4 4278ee56	clr.w	(Scroll_flags_BG3).w
0000c3e8 4278ee58	clr.w	(Scroll_flags_P2).w
0000c3ec 4278ee5a	clr.w	(Scroll_flags_BG_P2).w
0000c3f0 4278ee5c	clr.w	(Scroll_flags_BG2_P2).w
0000c3f4 4278ee5e	clr.w	(Scroll_flags_BG3_P2).w
0000c3f8 4278eeb0	clr.w	(Camera_X_pos_diff).w
0000c3fc 4278eeb2	clr.w	(Camera_Y_pos_diff).w
0000c400 4278eeb8	clr.w	(Camera_X_pos_diff_P2).w
0000c404 4278eeba	clr.w	(Camera_Y_pos_diff_P2).w
0000c408 0c380010fe10	cmpi.b	#sky_chase_zone,(Current_Zone).w
0000c40e 6600000a	bne.w	+
0000c412 4a78fe08	tst.w	(Debug_placement_mode).w
0000c416 670000b8	beq.w	loc_C4D0
0000c41a 4a38eebe	tst.b	(Scroll_lock).w
0000c41e 6660	bne.s	DeformBgLayerAfterScrollVert
0000c420 41f8b000	lea	(MainCharacter).w,a0
0000c424 43f8ee00	lea	(Camera_X_pos).w,a1
0000c428 45f8eec8	lea	(Camera_Boundaries).w,a2
0000c42c 47f8ee50	lea	(Scroll_flags).w,a3
0000c430 49f8eeb0	lea	(Camera_X_pos_diff).w,a4
0000c434 4bf8eed0	lea	(Camera_Delay).w,a5
0000c438 4df8e500	lea	(Sonic_Pos_Record_Buf).w,a6
0000c43c 0c780002ff70	cmpi.w	#2,(Player_mode).w
0000c442 6608	bne.s	+
0000c444 4bf8eed4	lea	(Camera_Delay_P2).w,a5
0000c448 4df8e600	lea	(Tails_Pos_Record_Buf).w,a6
0000c44c 610012b6	bsr.w	ScrollHoriz
0000c450 45f8ee40	lea	(Horiz_block_crossed_flag).w,a2
0000c454 6100128c	bsr.w	SetHorizScrollFlags
0000c458 43f8ee04	lea	(Camera_Y_pos).w,a1
0000c45c 45f8eec8	lea	(Camera_Boundaries).w,a2
0000c460 49f8eeb2	lea	(Camera_Y_pos_diff).w,a4
0000c464 3638eed8	move.w	(Camera_Y_pos_bias).w,d3
0000c468 0c780002ff70	cmpi.w	#2,(Player_mode).w
0000c46e 6604	bne.s	+
0000c470 3638eeda	move.w	(Camera_Y_pos_bias_P2).w,d3
0000c474 61001304	bsr.w	ScrollVerti
0000c478 45f8ee41	lea	(Verti_block_crossed_flag).w,a2
0000c47c 610013fa	bsr.w	SetVertiScrollFlags
0000c480 4a78ffd8	tst.w	(Two_player_mode).w
0000c484 674a	beq.s	loc_C4D0
0000c486 4a38eebf	tst.b	(Scroll_lock_P2).w
0000c48a 6644	bne.s	loc_C4D0
0000c48c 41f8b040	lea	(Sidekick).w,a0
0000c490 43f8ee20	lea	(Camera_X_pos_P2).w,a1
0000c494 45f8eef8	lea	(Camera_Boundaries_P2).w,a2
0000c498 47f8ee58	lea	(Scroll_flags_P2).w,a3
0000c49c 49f8eeb8	lea	(Camera_X_pos_diff_P2).w,a4
0000c4a0 4bf8eed4	lea	(Camera_Delay_P2).w,a5
0000c4a4 4df8e600	lea	(Tails_Pos_Record_Buf).w,a6
0000c4a8 6100125a	bsr.w	ScrollHoriz
0000c4ac 45f8ee48	lea	(Horiz_block_crossed_flag_P2).w,a2
0000c4b0 61001230	bsr.w	SetHorizScrollFlags
0000c4b4 43f8ee24	lea	(Camera_Y_pos_P2).w,a1
0000c4b8 45f8eef8	lea	(Camera_Boundaries_P2).w,a2
0000c4bc 49f8eeba	lea	(Camera_Y_pos_diff_P2).w,a4
0000c4c0 3638eeda	move.w	(Camera_Y_pos_bias_P2).w,d3
0000c4c4 610012b4	bsr.w	ScrollVerti
0000c4c8 45f8ee49	lea	(Verti_block_crossed_flag_P2).w,a2
0000c4cc 610013aa	bsr.w	SetVertiScrollFlags
0000c4d0 610020fe	bsr.w	RunDynamicLevelEvents
0000c4d4 31f8ee04f616	move.w	(Camera_Y_pos).w,(Vscroll_Factor_FG).w
0000c4da 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000c4e0 21f8ee00eef0	move.l	(Camera_X_pos).w,(Camera_X_pos_copy).w
0000c4e6 21f8ee04eef4	move.l	(Camera_Y_pos).w,(Camera_Y_pos_copy).w
0000c4ec 7000	moveq	#0,d0
0000c4ee 1038fe10	move.b	(Current_Zone).w,d0
0000c4f2 d040	add.w	d0,d0
0000c4f4 303b0006	move.w	SwScrl_Index(pc,d0.w),d0
0000c4f8 4efb0002	jmp	SwScrl_Index(pc,d0.w)
0000c51e 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000c524 5278ee00	addq.w	#1,(Camera_X_pos).w
0000c528 3438ee00	move.w	(Camera_X_pos).w,d2
0000c52c 4442	neg.w	d2
0000c52e e442	asr.w	#2,d2
0000c530 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000c534 7000	moveq	#0,d0
0000c536 323c009f	move.w	#160-1,d1
0000c53c 51c9fffc	dbf	d1,-
0000c540 3002	move.w	d2,d0
0000c542 323c001f	move.w	#32-1,d1
0000c548 51c9fffc	dbf	d1,-
0000c54c 3600	move.w	d0,d3
0000c54e 1238fe0f	move.b	(Vint_runcount+3).w,d1
0000c552 02410007	andi.w	#7,d1
0000c556 6604	bne.s	+
0000c558 5378a800	subq.w	#1,(TempArray_LayerDef).w
0000c55c 3238a800	move.w	(TempArray_LayerDef).w,d1
0000c560 0241001f	andi.w	#$1F,d1
0000c564 45fa011c	lea	SwScrl_RippleData(pc),a2
0000c568 45f21000	lea	(a2,d1.w),a2
0000c56c 323c000f	move.w	#16-1,d1
0000c572 4880	ext.w	d0
0000c574 d043	add.w	d3,d0
0000c576 22c0	move.l	d0,(a1)+
0000c578 51c9fff6	dbf	d1,-
0000c57c 4e75	rts	
0000c57e 4a78ffd8	tst.w	(Two_player_mode).w
0000c582 66000140	bne.w	SwScrl_EHZ_2P
0000c586 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000c58c 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000c590 3038ee00	move.w	(Camera_X_pos).w,d0
0000c594 4440	neg.w	d0
0000c596 3400	move.w	d0,d2
0000c598 4840	swap	d0
0000c59a 303c0000	move.w	#0,d0
0000c59e 323c0015	move.w	#22-1,d1
0000c5a4 51c9fffc	dbf	d1,-
0000c5a8 3002	move.w	d2,d0
0000c5aa ec40	asr.w	#6,d0
0000c5ac 323c0039	move.w	#58-1,d1
0000c5b2 51c9fffc	dbf	d1,-
0000c5b6 3600	move.w	d0,d3
0000c5b8 1238fe0f	move.b	(Vint_runcount+3).w,d1
0000c5bc 02410007	andi.w	#7,d1
0000c5c0 6604	bne.s	+
0000c5c2 5378a800	subq.w	#1,(TempArray_LayerDef).w
0000c5c6 3238a800	move.w	(TempArray_LayerDef).w,d1
0000c5ca 0241001f	andi.w	#$1F,d1
0000c5ce 45f90000c682	lea	(SwScrl_RippleData).l,a2
0000c5d4 45f21000	lea	(a2,d1.w),a2
0000c5d8 323c0014	move.w	#21-1,d1
0000c5de 4880	ext.w	d0
0000c5e0 d043	add.w	d3,d0
0000c5e2 22c0	move.l	d0,(a1)+
0000c5e4 51c9fff6	dbf	d1,-
0000c5e8 303c0000	move.w	#0,d0
0000c5ec 323c000a	move.w	#11-1,d1
0000c5f2 51c9fffc	dbf	d1,-
0000c5f6 3002	move.w	d2,d0
0000c5f8 e840	asr.w	#4,d0
0000c5fa 323c000f	move.w	#16-1,d1
0000c600 51c9fffc	dbf	d1,-
0000c604 3002	move.w	d2,d0
0000c606 e840	asr.w	#4,d0
0000c608 3200	move.w	d0,d1
0000c60a e241	asr.w	#1,d1
0000c60c d041	add.w	d1,d0
0000c60e 323c000f	move.w	#16-1,d1
0000c614 51c9fffc	dbf	d1,-
0000c618 2800	move.l	d0,d4
0000c61a 4844	swap	d4
0000c61c 3002	move.w	d2,d0
0000c61e e240	asr.w	#1,d0
0000c620 3202	move.w	d2,d1
0000c622 e641	asr.w	#3,d1
0000c624 9041	sub.w	d1,d0
0000c626 48c0	ext.l	d0
0000c628 e180	asl.l	#8,d0
0000c62a 81fc0030	divs.w	#$30,d0
0000c62e 48c0	ext.l	d0
0000c630 e180	asl.l	#8,d0
0000c632 7600	moveq	#0,d3
0000c634 3602	move.w	d2,d3
0000c636 e643	asr.w	#3,d3
0000c638 323c000e	move.w	#15-1,d1
0000c63e 32c3	move.w	d3,(a1)+
0000c640 4843	swap	d3
0000c642 d680	add.l	d0,d3
0000c644 4843	swap	d3
0000c646 51c9fff4	dbf	d1,-
0000c64a 323c0008	move.w	#18/2-1,d1
0000c650 32c3	move.w	d3,(a1)+
0000c652 32c4	move.w	d4,(a1)+
0000c654 32c3	move.w	d3,(a1)+
0000c656 4843	swap	d3
0000c658 d680	add.l	d0,d3
0000c65a d680	add.l	d0,d3
0000c65c 4843	swap	d3
0000c65e 51c9ffee	dbf	d1,-
0000c662 323c000e	move.w	#45/3-1,d1
0000c668 32c3	move.w	d3,(a1)+
0000c66a 32c4	move.w	d4,(a1)+
0000c66c 32c3	move.w	d3,(a1)+
0000c66e 32c4	move.w	d4,(a1)+
0000c670 32c3	move.w	d3,(a1)+
0000c672 4843	swap	d3
0000c674 d680	add.l	d0,d3
0000c676 d680	add.l	d0,d3
0000c678 d680	add.l	d0,d3
0000c67a 4843	swap	d3
0000c67c 51c9ffe8	dbf	d1,-
0000c680 4e75	rts	
0000c6c4 1238fe0f	move.b	(Vint_runcount+3).w,d1
0000c6c8 02410007	andi.w	#7,d1
0000c6cc 6604	bne.s	+
0000c6ce 5378a800	subq.w	#1,(TempArray_LayerDef).w
0000c6d2 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000c6d8 02b8fffefffef616	andi.l	#$FFFEFFFE,(Vscroll_Factor).w
0000c6e0 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000c6e4 3038ee00	move.w	(Camera_X_pos).w,d0
0000c6e8 323c000a	move.w	#11-1,d1
0000c6ec 612c	bsr.s	.doBackground
0000c6ee 7000	moveq	#0,d0
0000c6f0 31c0f620	move.w	d0,(Vscroll_Factor_P2_BG).w
0000c6f4 047800e0f620	subi.w	#screen_height,(Vscroll_Factor_P2_BG).w
0000c6fa 31f8ee24f61e	move.w	(Camera_Y_pos_P2).w,(Vscroll_Factor_P2_FG).w
0000c700 047800e0f61e	subi.w	#screen_height,(Vscroll_Factor_P2_FG).w
0000c706 02b8fffefffef61e	andi.l	#$FFFEFFFE,(Vscroll_Factor_P2).w
0000c70e 43f8e1b0	lea	(Horiz_Scroll_Buf+(screen_height/2-4)*2*2).w,a1
0000c712 3038ee20	move.w	(Camera_X_pos_P2).w,d0
0000c716 323c000e	move.w	#11+4-1,d1
0000c71a 4440	neg.w	d0
0000c71c 3400	move.w	d0,d2
0000c71e 4840	swap	d0
0000c720 303c0000	move.w	#0,d0
0000c726 51c9fffc	dbf	d1,-
0000c72a 3002	move.w	d2,d0
0000c72c ec40	asr.w	#6,d0
0000c72e 323c001c	move.w	#29-1,d1
0000c734 51c9fffc	dbf	d1,-
0000c738 3600	move.w	d0,d3
0000c73a 3238a800	move.w	(TempArray_LayerDef).w,d1
0000c73e 0241001f	andi.w	#$1F,d1
0000c746 45f21000	lea	(a2,d1.w),a2
0000c74a 323c000a	move.w	#11-1,d1
0000c750 4880	ext.w	d0
0000c752 d043	add.w	d3,d0
0000c754 22c0	move.l	d0,(a1)+
0000c756 51c9fff6	dbf	d1,-
0000c75a 303c0000	move.w	#0,d0
0000c75e 323c0004	move.w	#5-1,d1
0000c764 51c9fffc	dbf	d1,-
0000c768 3002	move.w	d2,d0
0000c76a e840	asr.w	#4,d0
0000c76c 323c0007	move.w	#8-1,d1
0000c772 51c9fffc	dbf	d1,-
0000c776 3002	move.w	d2,d0
0000c778 e840	asr.w	#4,d0
0000c77a 3200	move.w	d0,d1
0000c77c e241	asr.w	#1,d1
0000c77e d041	add.w	d1,d0
0000c780 323c0007	move.w	#8-1,d1
0000c786 51c9fffc	dbf	d1,-
0000c78a 3002	move.w	d2,d0
0000c78c e240	asr.w	#1,d0
0000c78e 3202	move.w	d2,d1
0000c790 e641	asr.w	#3,d1
0000c792 9041	sub.w	d1,d0
0000c794 48c0	ext.l	d0
0000c796 e180	asl.l	#8,d0
0000c798 81fc0030	divs.w	#$30,d0
0000c79c 48c0	ext.l	d0
0000c79e e180	asl.l	#8,d0
0000c7a0 7600	moveq	#0,d3
0000c7a2 3602	move.w	d2,d3
0000c7a4 e643	asr.w	#3,d3
0000c7a6 323c0027	move.w	#40-1,d1
0000c7ac 32c3	move.w	d3,(a1)+
0000c7ae 4843	swap	d3
0000c7b0 d680	add.l	d0,d3
0000c7b2 4843	swap	d3
0000c7b4 51c9fff4	dbf	d1,-
0000c7b8 4e75	rts	
0000c7ba 3838eeb0	move.w	(Camera_X_pos_diff).w,d4
0000c7be 48c4	ext.l	d4
0000c7c0 eb84	asl.l	#5,d4
0000c7c2 3a38eeb2	move.w	(Camera_Y_pos_diff).w,d5
0000c7c6 48c5	ext.l	d5
0000c7c8 ed85	asl.l	#6,d5
0000c7ca 610010ce	bsr.w	SetHorizVertiScrollFlagsBG
0000c7ce 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000c7d4 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000c7d8 323c00df	move.w	#screen_height-1,d1
0000c7dc 3038ee00	move.w	(Camera_X_pos).w,d0
0000c7e0 4440	neg.w	d0
0000c7e2 4840	swap	d0
0000c7e4 3038ee08	move.w	(Camera_BG_X_pos).w,d0
0000c7e8 4440	neg.w	d0
0000c7ec 51c9fffc	dbf	d1,-
0000c7f0 4e75	rts	
0000c7f2 3838eeb0	move.w	(Camera_X_pos_diff).w,d4
0000c7f6 48c4	ext.l	d4
0000c7f8 eb84	asl.l	#5,d4
0000c7fa 3a38eeb2	move.w	(Camera_Y_pos_diff).w,d5
0000c7fe 48c5	ext.l	d5
0000c800 ed85	asl.l	#6,d5
0000c802 61001096	bsr.w	SetHorizVertiScrollFlagsBG
0000c806 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000c80c 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000c810 323c00df	move.w	#screen_height-1,d1
0000c814 3038ee00	move.w	(Camera_X_pos).w,d0
0000c818 4440	neg.w	d0
0000c81a 4840	swap	d0
0000c81c 3038ee08	move.w	(Camera_BG_X_pos).w,d0
0000c820 4440	neg.w	d0
0000c824 51c9fffc	dbf	d1,-
0000c828 4e75	rts	
0000c82a 3838eeb4	move.w	(Camera_BG_X_pos_diff).w,d4
0000c82e 48c4	ext.l	d4
0000c830 e184	asl.l	#8,d4
0000c832 7c02	moveq	#scroll_flag_bg1_left,d6
0000c834 610010ce	bsr.w	SetHorizScrollFlagsBG
0000c838 3a38eeb6	move.w	(Camera_BG_Y_pos_diff).w,d5
0000c83c 48c5	ext.l	d5
0000c83e e18d	lsl.l	#8,d5
0000c840 7c06	moveq	#scroll_flag_bg1_up_whole_row_2,d6
0000c842 610010f4	bsr.w	SetVertiScrollFlagsBG
0000c846 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000c84c 2038ee08	move.l	(Camera_BG_X_pos).w,d0
0000c850 2200	move.l	d0,d1
0000c852 45f8a800	lea	(TempArray_LayerDef).w,a2
0000c856 24c0	move.l	d0,(a2)+
0000c858 24c1	move.l	d1,(a2)+
0000c85a 069a00008000	addi.l	#$8000,(a2)+
0000c860 069a00004000	addi.l	#$4000,(a2)+
0000c866 069a00002000	addi.l	#$2000,(a2)+
0000c86c 47f90000c8ca	lea	(SwScrl_WFZ_Transition_Array).l,a3
0000c872 0c782700ee00	cmpi.w	#$2700,(Camera_X_pos).w
0000c878 6406	bhs.s	.got_array
0000c87a 47f90000c916	lea	(SwScrl_WFZ_Normal_Array).l,a3
0000c880 45f8a800	lea	(TempArray_LayerDef).w,a2
0000c884 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000c888 3238ee0c	move.w	(Camera_BG_Y_pos).w,d1
0000c88c 024107ff	andi.w	#$7FF,d1
0000c890 7000	moveq	#0,d0
0000c892 7600	moveq	#0,d3
0000c894 101b	move.b	(a3)+,d0
0000c896 524b	addq.w	#1,a3
0000c898 9240	sub.w	d0,d1
0000c89a 64f8	bcc.s	.seg_loop
0000c89c 4441	neg.w	d1
0000c89e 343c00df	move.w	#screen_height-1,d2
0000c8a2 3038ee00	move.w	(Camera_X_pos).w,d0
0000c8a6 4440	neg.w	d0
0000c8a8 4840	swap	d0
0000c8aa 162bffff	move.b	-1(a3),d3
0000c8ae 30323000	move.w	(a2,d3.w),d0
0000c8b2 4440	neg.w	d0
0000c8b4 22c0	move.l	d0,(a1)+
0000c8b6 5341	subq.w	#1,d1
0000c8b8 660a	bne.s	.next_row
0000c8ba 121b	move.b	(a3)+,d1
0000c8bc 161b	move.b	(a3)+,d3
0000c8be 30323000	move.w	(a2,d3.w),d0
0000c8c2 4440	neg.w	d0
0000c8c4 51caffee	dbf	d2,.row_loop
0000c8c8 4e75	rts	
0000c964 4a78ffd8	tst.w	(Two_player_mode).w
0000c968 660001a6	bne.w	SwScrl_HTZ_2P
0000c96c 4a38eebc	tst.b	(Screen_Shaking_Flag_HTZ).w
0000c970 66000120	bne.w	HTZ_Screen_Shake
0000c974 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000c97a 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000c97e 3038ee00	move.w	(Camera_X_pos).w,d0
0000c982 4440	neg.w	d0
0000c984 3400	move.w	d0,d2
0000c986 4840	swap	d0
0000c988 3002	move.w	d2,d0
0000c98a e640	asr.w	#3,d0
0000c98c 323c007f	move.w	#128-1,d1
0000c992 51c9fffc	dbf	d1,-
0000c996 2800	move.l	d0,d4
0000c998 3038a822	move.w	(TempArray_LayerDef+$22).w,d0
0000c99c 5878a822	addq.w	#4,(TempArray_LayerDef+$22).w
0000c9a0 9440	sub.w	d0,d2
0000c9a2 3002	move.w	d2,d0
0000c9a4 3200	move.w	d0,d1
0000c9a6 e240	asr.w	#1,d0
0000c9a8 e841	asr.w	#4,d1
0000c9aa 9041	sub.w	d1,d0
0000c9ac 48c0	ext.l	d0
0000c9ae e180	asl.l	#8,d0
0000c9b0 81fc0070	divs.w	#256*44/100,d0
0000c9b4 48c0	ext.l	d0
0000c9b6 e180	asl.l	#8,d0
0000c9b8 45f8a800	lea	(TempArray_LayerDef).w,a2
0000c9bc 7600	moveq	#0,d3
0000c9be 3601	move.w	d1,d3
0000c9c0 4843	swap	d3
0000c9c2 d680	add.l	d0,d3
0000c9c4 4843	swap	d3
0000c9c6 34c3	move.w	d3,(a2)+
0000c9c8 4843	swap	d3
0000c9ca d680	add.l	d0,d3
0000c9cc 4843	swap	d3
0000c9ce 34c3	move.w	d3,(a2)+
0000c9d0 4843	swap	d3
0000c9d2 d680	add.l	d0,d3
0000c9d4 4843	swap	d3
0000c9d6 34c3	move.w	d3,(a2)+
0000c9d8 34c3	move.w	d3,(a2)+
0000c9da 4843	swap	d3
0000c9dc d680	add.l	d0,d3
0000c9de d680	add.l	d0,d3
0000c9e0 4843	swap	d3
0000c9e2 7203	moveq	#4-1,d1
0000c9e6 34c3	move.w	d3,(a2)+
0000c9e8 34c3	move.w	d3,(a2)+
0000c9ea 4843	swap	d3
0000c9ec d680	add.l	d0,d3
0000c9ee d680	add.l	d0,d3
0000c9f0 d680	add.l	d0,d3
0000c9f2 4843	swap	d3
0000c9f4 51c9ffee	dbf	d1,-
0000c9f8 d080	add.l	d0,d0
0000c9fa d080	add.l	d0,d0
0000c9fc 3803	move.w	d3,d4
0000c9fe 22c4	move.l	d4,(a1)+
0000ca00 22c4	move.l	d4,(a1)+
0000ca02 22c4	move.l	d4,(a1)+
0000ca04 4843	swap	d3
0000ca06 d680	add.l	d0,d3
0000ca08 4843	swap	d3
0000ca0a 3803	move.w	d3,d4
0000ca0c 22c4	move.l	d4,(a1)+
0000ca0e 22c4	move.l	d4,(a1)+
0000ca10 22c4	move.l	d4,(a1)+
0000ca12 22c4	move.l	d4,(a1)+
0000ca14 22c4	move.l	d4,(a1)+
0000ca16 4843	swap	d3
0000ca18 d680	add.l	d0,d3
0000ca1a 4843	swap	d3
0000ca1c 3803	move.w	d3,d4
0000ca1e 323c0006	move.w	#7-1,d1
0000ca24 51c9fffc	dbf	d1,-
0000ca28 4843	swap	d3
0000ca2a d680	add.l	d0,d3
0000ca2c d680	add.l	d0,d3
0000ca2e 4843	swap	d3
0000ca30 3803	move.w	d3,d4
0000ca32 323c0007	move.w	#8-1,d1
0000ca38 51c9fffc	dbf	d1,-
0000ca3c 4843	swap	d3
0000ca3e d680	add.l	d0,d3
0000ca40 d680	add.l	d0,d3
0000ca42 4843	swap	d3
0000ca44 3803	move.w	d3,d4
0000ca46 323c0009	move.w	#10-1,d1
0000ca4c 51c9fffc	dbf	d1,-
0000ca50 4843	swap	d3
0000ca52 d680	add.l	d0,d3
0000ca54 d680	add.l	d0,d3
0000ca56 d680	add.l	d0,d3
0000ca58 4843	swap	d3
0000ca5a 3803	move.w	d3,d4
0000ca5c 323c000e	move.w	#15-1,d1
0000ca62 51c9fffc	dbf	d1,-
0000ca66 4843	swap	d3
0000ca68 d680	add.l	d0,d3
0000ca6a d680	add.l	d0,d3
0000ca6c d680	add.l	d0,d3
0000ca6e 4843	swap	d3
0000ca70 343c0002	move.w	#3-1,d2
0000ca76 323c000f	move.w	#16-1,d1
0000ca7c 51c9fffc	dbf	d1,-
0000ca80 4843	swap	d3
0000ca82 d680	add.l	d0,d3
0000ca84 d680	add.l	d0,d3
0000ca86 d680	add.l	d0,d3
0000ca88 d680	add.l	d0,d3
0000ca8a 4843	swap	d3
0000ca8c 51caffe6	dbf	d2,--
0000ca90 4e75	rts	
0000ca92 3838eeb4	move.w	(Camera_BG_X_pos_diff).w,d4
0000ca96 48c4	ext.l	d4
0000ca98 e18c	lsl.l	#8,d4
0000ca9a 7c02	moveq	#scroll_flag_bg1_left,d6
0000ca9c 61000e66	bsr.w	SetHorizScrollFlagsBG
0000caa0 3a38eeb6	move.w	(Camera_BG_Y_pos_diff).w,d5
0000caa4 48c5	ext.l	d5
0000caa6 e18d	lsl.l	#8,d5
0000caa8 7c00	moveq	#scroll_flag_bg1_up,d6
0000caaa 61000e8c	bsr.w	SetVertiScrollFlagsBG
0000caae 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000cab4 31f8ee04f616	move.w	(Camera_Y_pos).w,(Vscroll_Factor_FG).w
0000caba 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000cac0 7400	moveq	#0,d2
0000cac2 4a38eebd	tst.b	(Screen_Shaking_Flag).w
0000cac6 6726	beq.s	+
0000cac8 3038fe04	move.w	(Level_frame_counter).w,d0
0000cacc 0240003f	andi.w	#$3F,d0
0000cad4 43f10000	lea	(a1,d0.w),a1
0000cad8 7000	moveq	#0,d0
0000cada 1019	move.b	(a1)+,d0
0000cadc d178f616	add.w	d0,(Vscroll_Factor_FG).w
0000cae0 d178f618	add.w	d0,(Vscroll_Factor_BG).w
0000cae4 d178eef4	add.w	d0,(Camera_Y_pos_copy).w
0000cae8 1419	move.b	(a1)+,d2
0000caea d578eef0	add.w	d2,(Camera_X_pos_copy).w
0000caee 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000caf2 323c00df	move.w	#screen_height-1,d1
0000caf6 3038ee00	move.w	(Camera_X_pos).w,d0
0000cafa d042	add.w	d2,d0
0000cafc 4440	neg.w	d0
0000cafe 4840	swap	d0
0000cb00 3038ee08	move.w	(Camera_BG_X_pos).w,d0
0000cb04 d042	add.w	d2,d0
0000cb06 4440	neg.w	d0
0000cb0a 51c9fffc	dbf	d1,-
0000cb0e 4e75	rts	
0000cb10 3838eeb0	move.w	(Camera_X_pos_diff).w,d4
0000cb14 48c4	ext.l	d4
0000cb16 ed84	asl.l	#6,d4
0000cb18 3a38eeb2	move.w	(Camera_Y_pos_diff).w,d5
0000cb1c 48c5	ext.l	d5
0000cb1e e585	asl.l	#2,d5
0000cb20 7a00	moveq	#0,d5
0000cb22 61000d76	bsr.w	SetHorizVertiScrollFlagsBG
0000cb26 11fc0000ee52	move.b	#0,(Scroll_flags_BG).w
0000cb2c 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000cb32 02b8fffefffef616	andi.l	#$FFFEFFFE,(Vscroll_Factor).w
0000cb3a 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000cb3e 323c006f	move.w	#112-1,d1
0000cb42 3038ee00	move.w	(Camera_X_pos).w,d0
0000cb46 4440	neg.w	d0
0000cb48 4840	swap	d0
0000cb4a 3038ee08	move.w	(Camera_BG_X_pos).w,d0
0000cb4e 4440	neg.w	d0
0000cb52 51c9fffc	dbf	d1,-
0000cb56 3838eeb8	move.w	(Camera_X_pos_diff_P2).w,d4
0000cb5a 48c4	ext.l	d4
0000cb5c ed84	asl.l	#6,d4
0000cb5e d9b8ee28	add.l	d4,(Camera_BG_X_pos_P2).w
0000cb62 7000	moveq	#0,d0
0000cb64 31c0f620	move.w	d0,(Vscroll_Factor_P2_BG).w
0000cb68 047800e0f620	subi.w	#screen_height,(Vscroll_Factor_P2_BG).w
0000cb6e 31f8ee24f61e	move.w	(Camera_Y_pos_P2).w,(Vscroll_Factor_P2_FG).w
0000cb74 047800e0f61e	subi.w	#screen_height,(Vscroll_Factor_P2_FG).w
0000cb7a 02b8fffefffef61e	andi.l	#$FFFEFFFE,(Vscroll_Factor_P2).w
0000cb82 43f8e1b0	lea	(Horiz_Scroll_Buf+(112-4)*2*2).w,a1
0000cb86 323c0073	move.w	#112+4-1,d1
0000cb8a 3038ee20	move.w	(Camera_X_pos_P2).w,d0
0000cb8e 4440	neg.w	d0
0000cb90 4840	swap	d0
0000cb92 3038ee28	move.w	(Camera_BG_X_pos_P2).w,d0
0000cb96 4440	neg.w	d0
0000cb9a 51c9fffc	dbf	d1,-
0000cb9e 4e75	rts	
0000cba0 3838eeb0	move.w	(Camera_X_pos_diff).w,d4
0000cba4 48c4	ext.l	d4
0000cba6 ed84	asl.l	#6,d4
0000cba8 7c02	moveq	#scroll_flag_bg1_left,d6
0000cbaa 61000d58	bsr.w	SetHorizScrollFlagsBG
0000cbae 3a38eeb2	move.w	(Camera_Y_pos_diff).w,d5
0000cbb2 48c5	ext.l	d5
0000cbb4 ef85	asl.l	#7,d5
0000cbb6 7c06	moveq	#scroll_flag_bg1_up_whole_row_2,d6
0000cbb8 61000d7e	bsr.w	SetVertiScrollFlagsBG
0000cbbc 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000cbc2 43f8a800	lea	(TempArray_LayerDef).w,a1
0000cbc6 3438ee00	move.w	(Camera_X_pos).w,d2
0000cbca 4442	neg.w	d2
0000cbcc 3002	move.w	d2,d0
0000cbce e240	asr.w	#1,d0
0000cbd0 323c0007	move.w	#8-1,d1
0000cbd6 51c9fffc	dbf	d1,-
0000cbda 3002	move.w	d2,d0
0000cbdc e640	asr.w	#3,d0
0000cbde 9042	sub.w	d2,d0
0000cbe0 48c0	ext.l	d0
0000cbe2 e780	asl.l	#3,d0
0000cbe4 81fc0008	divs.w	#8,d0
0000cbe8 48c0	ext.l	d0
0000cbea e980	asl.l	#4,d0
0000cbec e180	asl.l	#8,d0
0000cbee 7600	moveq	#0,d3
0000cbf0 3602	move.w	d2,d3
0000cbf2 e243	asr.w	#1,d3
0000cbf4 45f8a860	lea	(TempArray_LayerDef+(8+7+26+7)*2).w,a2
0000cbf8 4843	swap	d3
0000cbfa d680	add.l	d0,d3
0000cbfc 4843	swap	d3
0000cbfe 32c3	move.w	d3,(a1)+
0000cc00 32c3	move.w	d3,(a1)+
0000cc02 32c3	move.w	d3,(a1)+
0000cc04 3503	move.w	d3,-(a2)
0000cc06 3503	move.w	d3,-(a2)
0000cc08 3503	move.w	d3,-(a2)
0000cc0a 4843	swap	d3
0000cc0c d680	add.l	d0,d3
0000cc0e 4843	swap	d3
0000cc10 32c3	move.w	d3,(a1)+
0000cc12 32c3	move.w	d3,(a1)+
0000cc14 3503	move.w	d3,-(a2)
0000cc16 3503	move.w	d3,-(a2)
0000cc18 4843	swap	d3
0000cc1a d680	add.l	d0,d3
0000cc1c 4843	swap	d3
0000cc1e 32c3	move.w	d3,(a1)+
0000cc20 3503	move.w	d3,-(a2)
0000cc22 4843	swap	d3
0000cc24 d680	add.l	d0,d3
0000cc26 4843	swap	d3
0000cc28 32c3	move.w	d3,(a1)+
0000cc2a 3503	move.w	d3,-(a2)
0000cc2c 3038ee08	move.w	(Camera_BG_X_pos).w,d0
0000cc30 4440	neg.w	d0
0000cc32 323c0019	move.w	#26-1,d1
0000cc38 51c9fffc	dbf	d1,-
0000cc3c d2fc000e	adda.w	#7*2,a1
0000cc40 3002	move.w	d2,d0
0000cc42 e240	asr.w	#1,d0
0000cc44 323c0017	move.w	#24-1,d1
0000cc4a 51c9fffc	dbf	d1,-
0000cc4e 45f8a800	lea	(TempArray_LayerDef).w,a2
0000cc52 3038ee0c	move.w	(Camera_BG_Y_pos).w,d0
0000cc56 3400	move.w	d0,d2
0000cc58 024003f0	andi.w	#$3F0,d0
0000cc5c e648	lsr.w	#3,d0
0000cc5e 45f20000	lea	(a2,d0.w),a2
0000cc62 60000a3a	bra.w	SwScrl_HPZ_Continued
0000cc66 3038eeb0	move.w	(Camera_X_pos_diff).w,d0
0000cc6a 48c0	ext.l	d0
0000cc6c eb80	asl.l	#5,d0
0000cc6e d1b8ee08	add.l	d0,(Camera_BG_X_pos).w
0000cc72 3038eeb2	move.w	(Camera_Y_pos_diff).w,d0
0000cc76 48c0	ext.l	d0
0000cc78 eb80	asl.l	#5,d0
0000cc7a 2638ee0c	move.l	(Camera_BG_Y_pos).w,d3
0000cc7e d083	add.l	d3,d0
0000cc80 7c04	moveq	#scroll_flag_bg1_up_whole_row,d6
0000cc82 61000cbc	bsr.w	SetVertiScrollFlagsBG2
0000cc86 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000cc8c 43f8e380	lea	(Horiz_Scroll_Buf+screen_height*2*2).w,a1
0000cc90 3038ee00	move.w	(Camera_X_pos).w,d0
0000cc94 4440	neg.w	d0
0000cc96 4840	swap	d0
0000cc98 3e38ee08	move.w	(Camera_BG_X_pos).w,d7
0000cc9c 4447	neg.w	d7
0000cc9e 3238ee0c	move.w	(Camera_BG_Y_pos).w,d1
0000cca2 04410050	subi.w	#80,d1
0000cca6 6402	bcc.s	+
0000cca8 7200	moveq	#0,d1
0000ccaa 044100b0	subi.w	#176,d1
0000ccae 6502	bcs.s	+
0000ccb0 7200	moveq	#0,d1
0000ccb2 3c3c00df	move.w	#screen_height-1,d6
0000ccb6 d246	add.w	d6,d1
0000ccb8 3007	move.w	d7,d0
0000ccba 6160	bsr.s	.doLines
0000ccbc 6152	bsr.s	.doMediumClouds
0000ccbe 6156	bsr.s	.doSlowClouds
0000ccc0 6148	bsr.s	.doFastClouds
0000ccc2 3007	move.w	d7,d0
0000ccc4 e840	asr.w	#4,d0
0000ccc6 7206	moveq	#7-1,d1
0000ccc8 6152	bsr.s	.doLines
0000ccca 1238fe0f	move.b	(Vint_runcount+3).w,d1
0000ccce 02410007	andi.w	#7,d1
0000ccd2 6604	bne.s	+
0000ccd4 5378a800	subq.w	#1,(TempArray_LayerDef).w
0000ccd8 3238a800	move.w	(TempArray_LayerDef).w,d1
0000ccdc 0241001f	andi.w	#$1F,d1
0000cce0 45faf9a0	lea	SwScrl_RippleData(pc),a2
0000cce4 45f21000	lea	(a2,d1.w),a2
0000cce8 7220	moveq	#33-1,d1
0000ccec 4880	ext.w	d0
0000ccee 2300	move.l	d0,-(a1)
0000ccf0 5346	subq.w	#1,d6
0000ccf2 6b14	bmi.s	+
0000ccf4 51c9fff4	dbf	d1,-
0000ccf8 6116	bsr.s	.doMediumClouds
0000ccfa 611a	bsr.s	.doSlowClouds
0000ccfc 610c	bsr.s	.doFastClouds
0000ccfe 6116	bsr.s	.doSlowClouds
0000cd00 610e	bsr.s	.doMediumClouds
0000cd02 3007	move.w	d7,d0
0000cd04 7247	moveq	#72-1,d1
0000cd06 6114	bsr.s	.doLines
0000cd08 4e75	rts	
0000cd0a 3007	move.w	d7,d0
0000cd0c e440	asr.w	#2,d0
0000cd0e 600a	bra.s	+
0000cd10 3007	move.w	d7,d0
0000cd12 e640	asr.w	#3,d0
0000cd14 6004	bra.s	+
0000cd16 3007	move.w	d7,d0
0000cd18 e840	asr.w	#4,d0
0000cd1a 7207	moveq	#8-1,d1
0000cd1c 2300	move.l	d0,-(a1)
0000cd1e 5346	subq.w	#1,d6
0000cd20 6b06	bmi.s	+
0000cd22 51c9fff8	dbf	d1,.doLines
0000cd26 4e75	rts	
0000cd28 588f	addq.l	#4,sp
0000cd2a 4e75	rts	
0000cd2c 4a78ffd8	tst.w	(Two_player_mode).w
0000cd30 66000152	bne.w	SwScrl_MCZ_2P
0000cd34 3038ee04	move.w	(Camera_Y_pos).w,d0
0000cd38 2638ee0c	move.l	(Camera_BG_Y_pos).w,d3
0000cd3c 4a38fe11	tst.b	(Current_Act).w
0000cd40 660a	bne.s	+
0000cd42 80fc0003	divu.w	#3,d0
0000cd46 04400140	subi.w	#320,d0
0000cd4a 6008	bra.s	++
0000cd4c 80fc0006	divu.w	#6,d0
0000cd50 04400010	subi.w	#16,d0
0000cd54 4840	swap	d0
0000cd56 7c06	moveq	#scroll_flag_bg1_up_whole_row_2,d6
0000cd58 61000be6	bsr.w	SetVertiScrollFlagsBG2
0000cd5c 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000cd62 7400	moveq	#0,d2
0000cd64 4a38eebd	tst.b	(Screen_Shaking_Flag).w
0000cd68 6726	beq.s	+
0000cd6a 3038fe04	move.w	(Level_frame_counter).w,d0
0000cd6e 0240003f	andi.w	#$3F,d0
0000cd76 43f10000	lea	(a1,d0.w),a1
0000cd7a 7000	moveq	#0,d0
0000cd7c 1019	move.b	(a1)+,d0
0000cd7e d178f616	add.w	d0,(Vscroll_Factor_FG).w
0000cd82 d178f618	add.w	d0,(Vscroll_Factor_BG).w
0000cd86 d178eef4	add.w	d0,(Camera_Y_pos_copy).w
0000cd8a 1419	move.b	(a1)+,d2
0000cd8c d578eef0	add.w	d2,(Camera_X_pos_copy).w
0000cd90 45f8a800	lea	(TempArray_LayerDef).w,a2
0000cd94 47ea001e	lea	15*2(a2),a3
0000cd98 3038ee00	move.w	(Camera_X_pos).w,d0
0000cd9c 48c0	ext.l	d0
0000cd9e e980	asl.l	#4,d0
0000cda0 81fc000a	divs.w	#10,d0
0000cda4 48c0	ext.l	d0
0000cda6 e980	asl.l	#4,d0
0000cda8 e180	asl.l	#8,d0
0000cdaa 2200	move.l	d0,d1
0000cdac 4841	swap	d1
0000cdae 36c1	move.w	d1,(a3)+
0000cdb0 3541000e	move.w	d1,7*2(a2)
0000cdb4 4841	swap	d1
0000cdb6 d280	add.l	d0,d1
0000cdb8 4841	swap	d1
0000cdba 36c1	move.w	d1,(a3)+
0000cdbc 3541000c	move.w	d1,6*2(a2)
0000cdc0 4841	swap	d1
0000cdc2 d280	add.l	d0,d1
0000cdc4 4841	swap	d1
0000cdc6 36c1	move.w	d1,(a3)+
0000cdc8 3541000a	move.w	d1,5*2(a2)
0000cdcc 4841	swap	d1
0000cdce d280	add.l	d0,d1
0000cdd0 4841	swap	d1
0000cdd2 36c1	move.w	d1,(a3)+
0000cdd4 35410008	move.w	d1,4*2(a2)
0000cdd8 4841	swap	d1
0000cdda d280	add.l	d0,d1
0000cddc 4841	swap	d1
0000cdde 36c1	move.w	d1,(a3)+
0000cde0 35410006	move.w	d1,3*2(a2)
0000cde4 35410010	move.w	d1,8*2(a2)
0000cde8 3541001c	move.w	d1,14*2(a2)
0000cdec 4841	swap	d1
0000cdee d280	add.l	d0,d1
0000cdf0 4841	swap	d1
0000cdf2 36c1	move.w	d1,(a3)+
0000cdf4 4841	swap	d1
0000cdf6 d280	add.l	d0,d1
0000cdf8 4841	swap	d1
0000cdfa 36c1	move.w	d1,(a3)+
0000cdfc 35410004	move.w	d1,2*2(a2)
0000ce00 35410012	move.w	d1,9*2(a2)
0000ce04 3541001a	move.w	d1,13*2(a2)
0000ce08 4841	swap	d1
0000ce0a d280	add.l	d0,d1
0000ce0c 4841	swap	d1
0000ce0e 36c1	move.w	d1,(a3)+
0000ce10 35410002	move.w	d1,1*2(a2)
0000ce14 35410014	move.w	d1,10*2(a2)
0000ce18 35410018	move.w	d1,12*2(a2)
0000ce1c 4841	swap	d1
0000ce1e d280	add.l	d0,d1
0000ce20 4841	swap	d1
0000ce22 36c1	move.w	d1,(a3)+
0000ce24 3481	move.w	d1,0*2(a2)
0000ce26 35410016	move.w	d1,11*2(a2)
0000ce2a 47f90000ce6c	lea	(SwScrl_MCZ_RowHeights).l,a3
0000ce30 45f8a800	lea	(TempArray_LayerDef).w,a2
0000ce34 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000ce38 3238ee0c	move.w	(Camera_BG_Y_pos).w,d1
0000ce3c 7000	moveq	#0,d0
0000ce3e 101b	move.b	(a3)+,d0
0000ce40 544a	addq.w	#2,a2
0000ce42 9240	sub.w	d0,d1
0000ce44 64f8	bcc.s	.segmentLoop
0000ce46 4441	neg.w	d1
0000ce48 554a	subq.w	#2,a2
0000ce4a 343c00df	move.w	#screen_height-1,d2
0000ce4e 3038ee00	move.w	(Camera_X_pos).w,d0
0000ce52 4440	neg.w	d0
0000ce54 4840	swap	d0
0000ce56 301a	move.w	(a2)+,d0
0000ce58 4440	neg.w	d0
0000ce5a 22c0	move.l	d0,(a1)+
0000ce5c 5341	subq.w	#1,d1
0000ce5e 6606	bne.s	.nextRow
0000ce60 121b	move.b	(a3)+,d1
0000ce62 301a	move.w	(a2)+,d0
0000ce64 4440	neg.w	d0
0000ce66 51cafff2	dbf	d2,.rowLoop
0000ce6a 4e75	rts	
0000ce84 7000	moveq	#0,d0
0000ce86 3038ee04	move.w	(Camera_Y_pos).w,d0
0000ce8a 4a38fe11	tst.b	(Current_Act).w
0000ce8e 660a	bne.s	+
0000ce90 80fc0003	divu.w	#3,d0
0000ce94 04400140	subi.w	#320,d0
0000ce98 6008	bra.s	++
0000ce9a 80fc0006	divu.w	#6,d0
0000ce9e 04400010	subi.w	#16,d0
0000cea2 31c0ee0c	move.w	d0,(Camera_BG_Y_pos).w
0000cea6 31c0f618	move.w	d0,(Vscroll_Factor_BG).w
0000ceaa 02b8fffefffef616	andi.l	#$FFFEFFFE,(Vscroll_Factor).w
0000ceb2 45f8a800	lea	(TempArray_LayerDef).w,a2
0000ceb6 47ea001e	lea	15*2(a2),a3
0000ceba 3038ee00	move.w	(Camera_X_pos).w,d0
0000cebe 48c0	ext.l	d0
0000cec0 e980	asl.l	#4,d0
0000cec2 81fc000a	divs.w	#10,d0
0000cec6 48c0	ext.l	d0
0000cec8 e980	asl.l	#4,d0
0000ceca e180	asl.l	#8,d0
0000cecc 2200	move.l	d0,d1
0000cece 4841	swap	d1
0000ced0 36c1	move.w	d1,(a3)+
0000ced2 3541000e	move.w	d1,7*2(a2)
0000ced6 4841	swap	d1
0000ced8 d280	add.l	d0,d1
0000ceda 4841	swap	d1
0000cedc 36c1	move.w	d1,(a3)+
0000cede 3541000c	move.w	d1,6*2(a2)
0000cee2 4841	swap	d1
0000cee4 d280	add.l	d0,d1
0000cee6 4841	swap	d1
0000cee8 36c1	move.w	d1,(a3)+
0000ceea 3541000a	move.w	d1,5*2(a2)
0000ceee 4841	swap	d1
0000cef0 d280	add.l	d0,d1
0000cef2 4841	swap	d1
0000cef4 36c1	move.w	d1,(a3)+
0000cef6 35410008	move.w	d1,4*2(a2)
0000cefa 4841	swap	d1
0000cefc d280	add.l	d0,d1
0000cefe 4841	swap	d1
0000cf00 36c1	move.w	d1,(a3)+
0000cf02 35410006	move.w	d1,3*2(a2)
0000cf06 35410010	move.w	d1,8*2(a2)
0000cf0a 3541001c	move.w	d1,14*2(a2)
0000cf0e 4841	swap	d1
0000cf10 d280	add.l	d0,d1
0000cf12 4841	swap	d1
0000cf14 36c1	move.w	d1,(a3)+
0000cf16 4841	swap	d1
0000cf18 d280	add.l	d0,d1
0000cf1a 4841	swap	d1
0000cf1c 36c1	move.w	d1,(a3)+
0000cf1e 35410004	move.w	d1,2*2(a2)
0000cf22 35410012	move.w	d1,9*2(a2)
0000cf26 3541001a	move.w	d1,13*2(a2)
0000cf2a 4841	swap	d1
0000cf2c d280	add.l	d0,d1
0000cf2e 4841	swap	d1
0000cf30 36c1	move.w	d1,(a3)+
0000cf32 35410002	move.w	d1,1*2(a2)
0000cf36 35410014	move.w	d1,10*2(a2)
0000cf3a 35410018	move.w	d1,12*2(a2)
0000cf3e 4841	swap	d1
0000cf40 d280	add.l	d0,d1
0000cf42 4841	swap	d1
0000cf44 36c1	move.w	d1,(a3)+
0000cf46 3481	move.w	d1,0*2(a2)
0000cf48 35410016	move.w	d1,11*2(a2)
0000cf4c 47f90000cf90	lea	(SwScrl_MCZ2P_RowHeights).l,a3
0000cf52 45f8a800	lea	(TempArray_LayerDef).w,a2
0000cf56 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000cf5a 3238ee0c	move.w	(Camera_BG_Y_pos).w,d1
0000cf5e e249	lsr.w	#1,d1
0000cf60 7000	moveq	#0,d0
0000cf62 101b	move.b	(a3)+,d0
0000cf64 544a	addq.w	#2,a2
0000cf66 9240	sub.w	d0,d1
0000cf68 64f8	bcc.s	.segmentLoop
0000cf6a 4441	neg.w	d1
0000cf6c 554a	subq.w	#2,a2
0000cf6e 343c006f	move.w	#112-1,d2
0000cf72 3038ee00	move.w	(Camera_X_pos).w,d0
0000cf76 4440	neg.w	d0
0000cf78 4840	swap	d0
0000cf7a 301a	move.w	(a2)+,d0
0000cf7c 4440	neg.w	d0
0000cf7e 22c0	move.l	d0,(a1)+
0000cf80 5341	subq.w	#1,d1
0000cf82 6606	bne.s	.nextRow
0000cf84 121b	move.b	(a3)+,d1
0000cf86 301a	move.w	(a2)+,d0
0000cf88 4440	neg.w	d0
0000cf8a 51cafff2	dbf	d2,.rowLoop
0000cf8e 6018	bra.s	+
0000cfa8 7000	moveq	#0,d0
0000cfaa 3038ee24	move.w	(Camera_Y_pos_P2).w,d0
0000cfae 4a38fe11	tst.b	(Current_Act).w
0000cfb2 660a	bne.s	+
0000cfb4 80fc0003	divu.w	#3,d0
0000cfb8 04400140	subi.w	#320,d0
0000cfbc 6008	bra.s	++
0000cfbe 80fc0006	divu.w	#6,d0
0000cfc2 04400010	subi.w	#16,d0
0000cfc6 31c0ee2c	move.w	d0,(Camera_BG_Y_pos_P2).w
0000cfca 31c0f620	move.w	d0,(Vscroll_Factor_P2_BG).w
0000cfce 047800e0f620	subi.w	#screen_height,(Vscroll_Factor_P2_BG).w
0000cfd4 31f8ee24f61e	move.w	(Camera_Y_pos_P2).w,(Vscroll_Factor_P2_FG).w
0000cfda 047800e0f61e	subi.w	#screen_height,(Vscroll_Factor_P2_FG).w
0000cfe0 02b8fffefffef61e	andi.l	#$FFFEFFFE,(Vscroll_Factor_P2).w
0000cfe8 45f8a800	lea	(TempArray_LayerDef).w,a2
0000cfec 47ea001e	lea	15*2(a2),a3
0000cff0 3038ee20	move.w	(Camera_X_pos_P2).w,d0
0000cff4 48c0	ext.l	d0
0000cff6 e980	asl.l	#4,d0
0000cff8 81fc000a	divs.w	#10,d0
0000cffc 48c0	ext.l	d0
0000cffe e980	asl.l	#4,d0
0000d000 e180	asl.l	#8,d0
0000d002 2200	move.l	d0,d1
0000d004 4841	swap	d1
0000d006 36c1	move.w	d1,(a3)+
0000d008 3541000e	move.w	d1,7*2(a2)
0000d00c 4841	swap	d1
0000d00e d280	add.l	d0,d1
0000d010 4841	swap	d1
0000d012 36c1	move.w	d1,(a3)+
0000d014 3541000c	move.w	d1,6*2(a2)
0000d018 4841	swap	d1
0000d01a d280	add.l	d0,d1
0000d01c 4841	swap	d1
0000d01e 36c1	move.w	d1,(a3)+
0000d020 3541000a	move.w	d1,5*2(a2)
0000d024 4841	swap	d1
0000d026 d280	add.l	d0,d1
0000d028 4841	swap	d1
0000d02a 36c1	move.w	d1,(a3)+
0000d02c 35410008	move.w	d1,4*2(a2)
0000d030 4841	swap	d1
0000d032 d280	add.l	d0,d1
0000d034 4841	swap	d1
0000d036 36c1	move.w	d1,(a3)+
0000d038 35410006	move.w	d1,3*2(a2)
0000d03c 35410010	move.w	d1,8*2(a2)
0000d040 3541001c	move.w	d1,14*2(a2)
0000d044 4841	swap	d1
0000d046 d280	add.l	d0,d1
0000d048 4841	swap	d1
0000d04a 36c1	move.w	d1,(a3)+
0000d04c 4841	swap	d1
0000d04e d280	add.l	d0,d1
0000d050 4841	swap	d1
0000d052 36c1	move.w	d1,(a3)+
0000d054 35410004	move.w	d1,2*2(a2)
0000d058 35410012	move.w	d1,9*2(a2)
0000d05c 3541001a	move.w	d1,13*2(a2)
0000d060 4841	swap	d1
0000d062 d280	add.l	d0,d1
0000d064 4841	swap	d1
0000d066 36c1	move.w	d1,(a3)+
0000d068 35410002	move.w	d1,1*2(a2)
0000d06c 35410014	move.w	d1,10*2(a2)
0000d070 35410018	move.w	d1,12*2(a2)
0000d074 4841	swap	d1
0000d076 d280	add.l	d0,d1
0000d078 4841	swap	d1
0000d07a 36c1	move.w	d1,(a3)+
0000d07c 3481	move.w	d1,0*2(a2)
0000d07e 35410016	move.w	d1,11*2(a2)
0000d086 45f8a800	lea	(TempArray_LayerDef).w,a2
0000d08a 43f8e1b0	lea	(Horiz_Scroll_Buf+(112-4)*2*2).w,a1
0000d08e 3238ee2c	move.w	(Camera_BG_Y_pos_P2).w,d1
0000d092 e249	lsr.w	#1,d1
0000d094 7017	moveq	#19+4,d0
0000d096 6002	bra.s	.useOwnSegmentSize
0000d098 101b	move.b	(a3)+,d0
0000d09a 544a	addq.w	#2,a2
0000d09c 9240	sub.w	d0,d1
0000d09e 64f8	bcc.s	.segmentLoop
0000d0a0 4441	neg.w	d1
0000d0a2 554a	subq.w	#2,a2
0000d0a4 343c0073	move.w	#112+4-1,d2
0000d0a8 3038ee20	move.w	(Camera_X_pos_P2).w,d0
0000d0ac 4440	neg.w	d0
0000d0ae 4840	swap	d0
0000d0b0 301a	move.w	(a2)+,d0
0000d0b2 4440	neg.w	d0
0000d0b4 22c0	move.l	d0,(a1)+
0000d0b6 5341	subq.w	#1,d1
0000d0b8 6606	bne.s	.nextRow
0000d0ba 121b	move.b	(a3)+,d1
0000d0bc 301a	move.w	(a2)+,d0
0000d0be 4440	neg.w	d0
0000d0c0 51cafff2	dbf	d2,.rowLoop
0000d0c4 4e75	rts	
0000d0c6 4a78ffd8	tst.w	(Two_player_mode).w
0000d0ca 660000c8	bne.w	SwScrl_CNZ_2P
0000d0ce 3038ee04	move.w	(Camera_Y_pos).w,d0
0000d0d2 ec48	lsr.w	#6,d0
0000d0d4 31c0ee0c	move.w	d0,(Camera_BG_Y_pos).w
0000d0d8 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000d0de 3438ee00	move.w	(Camera_X_pos).w,d2
0000d0e2 6100007c	bsr.w	SwScrl_CNZ_GenerateScrollValues
0000d0e6 47f90000d156	lea	(SwScrl_CNZ_RowHeights).l,a3
0000d0ec 45f8a800	lea	(TempArray_LayerDef).w,a2
0000d0f0 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000d0f4 3238ee0c	move.w	(Camera_BG_Y_pos).w,d1
0000d0f8 7000	moveq	#0,d0
0000d0fa 101b	move.b	(a3)+,d0
0000d0fc 544a	addq.w	#2,a2
0000d0fe 9240	sub.w	d0,d1
0000d100 64f8	bcc.s	.segmentLoop
0000d102 4441	neg.w	d1
0000d104 554a	subq.w	#2,a2
0000d106 343c00df	move.w	#screen_height-1,d2
0000d10a 3038ee00	move.w	(Camera_X_pos).w,d0
0000d10e 4440	neg.w	d0
0000d110 4840	swap	d0
0000d112 301a	move.w	(a2)+,d0
0000d114 4440	neg.w	d0
0000d116 22c0	move.l	d0,(a1)+
0000d118 5341	subq.w	#1,d1
0000d11a 6608	bne.s	.nextRow
0000d11c 301a	move.w	(a2)+,d0
0000d11e 4440	neg.w	d0
0000d120 121b	move.b	(a3)+,d1
0000d122 6706	beq.s	.isRipplingSegment
0000d124 51cafff0	dbf	d2,.rowLoop
0000d128 4e75	rts	
0000d12a 323c000f	move.w	#16-1,d1
0000d12e 3600	move.w	d0,d3
0000d130 1038fe0f	move.b	(Vint_runcount+3).w,d0
0000d134 e648	lsr.w	#3,d0
0000d136 4440	neg.w	d0
0000d138 0240001f	andi.w	#$1F,d0
0000d140 49f40000	lea	(a4,d0.w),a4
0000d144 101c	move.b	(a4)+,d0
0000d146 4880	ext.w	d0
0000d148 d043	add.w	d3,d0
0000d14a 22c0	move.l	d0,(a1)+
0000d14c 51c9fff6	dbf	d1,.rippleLoop
0000d150 04420010	subi.w	#16,d2
0000d154 60c6	bra.s	.nextSegment
0000d160 43f8a800	lea	(TempArray_LayerDef).w,a1
0000d164 3002	move.w	d2,d0
0000d166 e640	asr.w	#3,d0
0000d168 9042	sub.w	d2,d0
0000d16a 48c0	ext.l	d0
0000d16c eb80	asl.l	#5,d0
0000d16e e180	asl.l	#8,d0
0000d170 7600	moveq	#0,d3
0000d172 3602	move.w	d2,d3
0000d174 323c0006	move.w	#7-1,d1
0000d17a 4843	swap	d3
0000d17c d680	add.l	d0,d3
0000d17e 4843	swap	d3
0000d180 51c9fff6	dbf	d1,-
0000d184 3002	move.w	d2,d0
0000d186 e640	asr.w	#3,d0
0000d188 33400004	move.w	d0,4(a1)
0000d18c e240	asr.w	#1,d0
0000d18e 32c0	move.w	d0,(a1)+
0000d190 32c0	move.w	d0,(a1)+
0000d192 4e75	rts	
0000d194 3038ee04	move.w	(Camera_Y_pos).w,d0
0000d198 ec48	lsr.w	#6,d0
0000d19a 31c0ee0c	move.w	d0,(Camera_BG_Y_pos).w
0000d19e 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000d1a4 02b8fffefffef616	andi.l	#$FFFEFFFE,(Vscroll_Factor).w
0000d1ac 3438ee00	move.w	(Camera_X_pos).w,d2
0000d1b0 6100ffae	bsr.w	SwScrl_CNZ_GenerateScrollValues
0000d1b4 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000d1b8 3238ee0c	move.w	(Camera_BG_Y_pos).w,d1
0000d1bc 7000	moveq	#0,d0
0000d1be 3038ee00	move.w	(Camera_X_pos).w,d0
0000d1c2 343c006f	move.w	#112-1,d2
0000d1c6 47f90000d272	lea	(SwScrl_CNZ2P_RowHeights_P1).l,a3
0000d1cc 6148	bsr.s	.doBackground
0000d1ce 3038ee24	move.w	(Camera_Y_pos_P2).w,d0
0000d1d2 ec48	lsr.w	#6,d0
0000d1d4 31c0ee2c	move.w	d0,(Camera_BG_Y_pos_P2).w
0000d1d8 31c0f620	move.w	d0,(Vscroll_Factor_P2_BG).w
0000d1dc 047800e0f620	subi.w	#screen_height,(Vscroll_Factor_P2_BG).w
0000d1e2 31f8ee24f61e	move.w	(Camera_Y_pos_P2).w,(Vscroll_Factor_P2_FG).w
0000d1e8 047800e0f61e	subi.w	#screen_height,(Vscroll_Factor_P2_FG).w
0000d1ee 02b8fffefffef61e	andi.l	#$FFFEFFFE,(Vscroll_Factor_P2).w
0000d1f6 3438ee20	move.w	(Camera_X_pos_P2).w,d2
0000d1fa 6100ff64	bsr.w	SwScrl_CNZ_GenerateScrollValues
0000d1fe 43f8e1b0	lea	(Horiz_Scroll_Buf+(112-4)*2*2).w,a1
0000d202 3238ee2c	move.w	(Camera_BG_Y_pos_P2).w,d1
0000d206 7000	moveq	#0,d0
0000d208 3038ee20	move.w	(Camera_X_pos_P2).w,d0
0000d20c 343c0073	move.w	#112+4-1,d2
0000d210 47f90000d271	lea	(SwScrl_CNZ2P_RowHeights_P2).l,a3
0000d216 e249	lsr.w	#1,d1
0000d218 45f8a800	lea	(TempArray_LayerDef).w,a2
0000d21c 7600	moveq	#0,d3
0000d21e 161b	move.b	(a3)+,d3
0000d220 544a	addq.w	#2,a2
0000d222 9243	sub.w	d3,d1
0000d224 64f8	bcc.s	.segmentLoop
0000d226 4441	neg.w	d1
0000d228 554a	subq.w	#2,a2
0000d22a 4440	neg.w	d0
0000d22c 4840	swap	d0
0000d22e 301a	move.w	(a2)+,d0
0000d230 4440	neg.w	d0
0000d232 22c0	move.l	d0,(a1)+
0000d234 5341	subq.w	#1,d1
0000d236 6608	bne.s	.nextRow
0000d238 301a	move.w	(a2)+,d0
0000d23a 4440	neg.w	d0
0000d23c 121b	move.b	(a3)+,d1
0000d23e 6706	beq.s	.isRipplingSegment
0000d240 51cafff0	dbf	d2,.rowLoop
0000d244 4e75	rts	
0000d246 323c0007	move.w	#8-1,d1
0000d24a 3600	move.w	d0,d3
0000d24c 1038fe0f	move.b	(Vint_runcount+3).w,d0
0000d250 e648	lsr.w	#3,d0
0000d252 4440	neg.w	d0
0000d254 0240001f	andi.w	#$1F,d0
0000d25c 49f40000	lea	(a4,d0.w),a4
0000d260 101c	move.b	(a4)+,d0
0000d262 4880	ext.w	d0
0000d264 d043	add.w	d3,d0
0000d266 22c0	move.l	d0,(a1)+
0000d268 51c9fff6	dbf	d1,.rippleLoop
0000d26c 5142	subq.w	#8,d2
0000d26e 60c8	bra.s	.nextSegment
0000d27c 3838eeb0	move.w	(Camera_X_pos_diff).w,d4
0000d280 48c4	ext.l	d4
0000d282 eb84	asl.l	#5,d4
0000d284 3a38eeb2	move.w	(Camera_Y_pos_diff).w,d5
0000d288 48c5	ext.l	d5
0000d28a ed85	asl.l	#6,d5
0000d28c 6100060c	bsr.w	SetHorizVertiScrollFlagsBG
0000d290 3838eeb0	move.w	(Camera_X_pos_diff).w,d4
0000d294 48c4	ext.l	d4
0000d296 ef84	asl.l	#7,d4
0000d298 7c04	moveq	#scroll_flag_advanced_bg2_left,d6
0000d29a 6100072c	bsr.w	SetHorizScrollFlagsBG2
0000d29e 3038ee0c	move.w	(Camera_BG_Y_pos).w,d0
0000d2a2 31c0ee14	move.w	d0,(Camera_BG2_Y_pos).w
0000d2a6 31c0f618	move.w	d0,(Vscroll_Factor_BG).w
0000d2aa 1038ee52	move.b	(Scroll_flags_BG).w,d0
0000d2ae 8038ee54	or.b	(Scroll_flags_BG2).w,d0
0000d2b2 11c0ee56	move.b	d0,(Scroll_flags_BG3).w
0000d2b6 4238ee52	clr.b	(Scroll_flags_BG).w
0000d2ba 4238ee54	clr.b	(Scroll_flags_BG2).w
0000d2be 1238fe0f	move.b	(Vint_runcount+3).w,d1
0000d2c2 02410007	andi.w	#7,d1
0000d2c6 6604	bne.s	+
0000d2c8 5378a800	subq.w	#1,(TempArray_LayerDef).w
0000d2cc 41f90000ddd1	lea	(CPZ_CameraSections+1).l,a0
0000d2d2 3038ee0c	move.w	(Camera_BG_Y_pos).w,d0
0000d2d6 3400	move.w	d0,d2
0000d2d8 024003f0	andi.w	#$3F0,d0
0000d2dc e848	lsr.w	#4,d0
0000d2de 41f00000	lea	(a0,d0.w),a0
0000d2e2 3800	move.w	d0,d4
0000d2e4 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000d2e8 323c000e	move.w	#screen_height/block_height+1-1,d1
0000d2ec 3038ee00	move.w	(Camera_X_pos).w,d0
0000d2f0 4440	neg.w	d0
0000d2f2 4840	swap	d0
0000d2f4 0242000f	andi.w	#$F,d2
0000d2f8 3038ee08	move.w	(Camera_BG_X_pos).w,d0
0000d2fc 0c040012	cmpi.b	#18,d4
0000d300 6748	beq.s	.doPartialSpecialLineBlock
0000d302 6504	blo.s	+
0000d304 3038ee10	move.w	(Camera_BG2_X_pos).w,d0
0000d308 4440	neg.w	d0
0000d30a d442	add.w	d2,d2
0000d30c 4efb2014	jmp	.doPartialLineBlock(pc,d2.w)
0000d310 3038ee08	move.w	(Camera_BG_X_pos).w,d0
0000d314 0c040012	cmpi.b	#18,d4
0000d318 673a	beq.s	.doFullSpecialLineBlock
0000d31a 6504	blo.s	+
0000d31c 3038ee10	move.w	(Camera_BG2_X_pos).w,d0
0000d320 4440	neg.w	d0
0000d322 22c0	move.l	d0,(a1)+
0000d324 22c0	move.l	d0,(a1)+
0000d326 22c0	move.l	d0,(a1)+
0000d328 22c0	move.l	d0,(a1)+
0000d32a 22c0	move.l	d0,(a1)+
0000d32c 22c0	move.l	d0,(a1)+
0000d32e 22c0	move.l	d0,(a1)+
0000d330 22c0	move.l	d0,(a1)+
0000d332 22c0	move.l	d0,(a1)+
0000d334 22c0	move.l	d0,(a1)+
0000d336 22c0	move.l	d0,(a1)+
0000d338 22c0	move.l	d0,(a1)+
0000d33a 22c0	move.l	d0,(a1)+
0000d33c 22c0	move.l	d0,(a1)+
0000d33e 22c0	move.l	d0,(a1)+
0000d340 22c0	move.l	d0,(a1)+
0000d342 5204	addq.b	#1,d4
0000d344 51c9ffca	dbf	d1,.doFullLineBlock
0000d348 4e75	rts	
0000d34a 303c000f	move.w	#$F,d0
0000d34e 9042	sub.w	d2,d0
0000d350 3400	move.w	d0,d2
0000d352 6004	bra.s	+
0000d354 343c000f	move.w	#16-1,d2
0000d358 3638ee08	move.w	(Camera_BG_X_pos).w,d3
0000d35c 4443	neg.w	d3
0000d35e 3038a800	move.w	(TempArray_LayerDef).w,d0
0000d362 0240001f	andi.w	#$1F,d0
0000d36a 45f20000	lea	(a2,d0.w),a2
0000d36e 101a	move.b	(a2)+,d0
0000d370 4880	ext.w	d0
0000d372 d043	add.w	d3,d0
0000d374 22c0	move.l	d0,(a1)+
0000d376 51cafff6	dbf	d2,.doLine
0000d37a 5204	addq.b	#1,d4
0000d37c 51c9ff92	dbf	d1,.doFullLineBlock
0000d380 4e75	rts	
0000d382 3838eeb0	move.w	(Camera_X_pos_diff).w,d4
0000d386 48c4	ext.l	d4
0000d388 e184	asl.l	#8,d4
0000d38a 3a38eeb2	move.w	(Camera_Y_pos_diff).w,d5
0000d38e 48c5	ext.l	d5
0000d390 e185	asl.l	#8,d5
0000d392 61000506	bsr.w	SetHorizVertiScrollFlagsBG
0000d396 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000d39c 3838ee00	move.w	(Camera_X_pos).w,d4
0000d3a0 45f8a800	lea	(TempArray_LayerDef).w,a2
0000d3a4 34c4	move.w	d4,(a2)+
0000d3a6 565a	addq.w	#3,(a2)+
0000d3a8 545a	addq.w	#2,(a2)+
0000d3aa 585a	addq.w	#4,(a2)+
0000d3ac 525a	addq.w	#1,(a2)+
0000d3ae 545a	addq.w	#2,(a2)+
0000d3b0 585a	addq.w	#4,(a2)+
0000d3b2 565a	addq.w	#3,(a2)+
0000d3b4 585a	addq.w	#4,(a2)+
0000d3b6 545a	addq.w	#2,(a2)+
0000d3b8 5c5a	addq.w	#6,(a2)+
0000d3ba 565a	addq.w	#3,(a2)+
0000d3bc 585a	addq.w	#4,(a2)+
0000d3be 525a	addq.w	#1,(a2)+
0000d3c0 545a	addq.w	#2,(a2)+
0000d3c2 585a	addq.w	#4,(a2)+
0000d3c4 565a	addq.w	#3,(a2)+
0000d3c6 545a	addq.w	#2,(a2)+
0000d3c8 565a	addq.w	#3,(a2)+
0000d3ca 585a	addq.w	#4,(a2)+
0000d3cc 525a	addq.w	#1,(a2)+
0000d3ce 565a	addq.w	#3,(a2)+
0000d3d0 585a	addq.w	#4,(a2)+
0000d3d2 545a	addq.w	#2,(a2)+
0000d3d4 5252	addq.w	#1,(a2)
0000d3d6 301a	move.w	(a2)+,d0
0000d3d8 7200	moveq	#0,d1
0000d3da 3200	move.w	d0,d1
0000d3dc e248	lsr.w	#1,d0
0000d3de 34c0	move.w	d0,(a2)+
0000d3e0 565a	addq.w	#3,(a2)+
0000d3e2 545a	addq.w	#2,(a2)+
0000d3e4 585a	addq.w	#4,(a2)+
0000d3e6 4841	swap	d1
0000d3e8 2001	move.l	d1,d0
0000d3ea e689	lsr.l	#3,d1
0000d3ec 9081	sub.l	d1,d0
0000d3ee 4840	swap	d0
0000d3f0 35400004	move.w	d0,4(a2)
0000d3f4 4840	swap	d0
0000d3f6 9081	sub.l	d1,d0
0000d3f8 4840	swap	d0
0000d3fa 35400002	move.w	d0,2(a2)
0000d3fe 4840	swap	d0
0000d400 9081	sub.l	d1,d0
0000d402 4840	swap	d0
0000d404 34c0	move.w	d0,(a2)+
0000d406 584a	addq.w	#2*2,a2
0000d408 525a	addq.w	#1,(a2)+
0000d40a 34c4	move.w	d4,(a2)+
0000d40c 34c4	move.w	d4,(a2)+
0000d40e 34c4	move.w	d4,(a2)+
0000d410 47f90000d48a	lea	(SwScrl_DEZ_RowHeights).l,a3
0000d416 45f8a800	lea	(TempArray_LayerDef).w,a2
0000d41a 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000d41e 3238ee0c	move.w	(Camera_BG_Y_pos).w,d1
0000d422 7000	moveq	#0,d0
0000d424 101b	move.b	(a3)+,d0
0000d426 544a	addq.w	#2,a2
0000d428 9240	sub.w	d0,d1
0000d42a 64f8	bcc.s	.segmentLoop
0000d42c 4441	neg.w	d1
0000d42e 554a	subq.w	#2,a2
0000d430 343c00df	move.w	#screen_height-1,d2
0000d434 3038ee00	move.w	(Camera_X_pos).w,d0
0000d438 4440	neg.w	d0
0000d43a 4840	swap	d0
0000d43c 301a	move.w	(a2)+,d0
0000d43e 4440	neg.w	d0
0000d440 22c0	move.l	d0,(a1)+
0000d442 5341	subq.w	#1,d1
0000d444 6606	bne.s	.nextRow
0000d446 121b	move.b	(a3)+,d1
0000d448 301a	move.w	(a2)+,d0
0000d44a 4440	neg.w	d0
0000d44c 51cafff2	dbf	d2,.rowLoop
0000d450 7400	moveq	#0,d2
0000d452 4a38eebd	tst.b	(Screen_Shaking_Flag).w
0000d456 6730	beq.s	++
0000d458 5378f660	subq.w	#1,(DEZ_Shake_Timer).w
0000d45c 6a04	bpl.s	+
0000d45e 4238eebd	clr.b	(Screen_Shaking_Flag).w
0000d462 3038fe04	move.w	(Level_frame_counter).w,d0
0000d466 0240003f	andi.w	#$3F,d0
0000d46e 43f10000	lea	(a1,d0.w),a1
0000d472 7000	moveq	#0,d0
0000d474 1019	move.b	(a1)+,d0
0000d476 d178f616	add.w	d0,(Vscroll_Factor_FG).w
0000d47a d178f618	add.w	d0,(Vscroll_Factor_BG).w
0000d47e d178eef4	add.w	d0,(Camera_Y_pos_copy).w
0000d482 1419	move.b	(a1)+,d2
0000d484 d578eef0	add.w	d2,(Camera_X_pos_copy).w
0000d488 4e75	rts	
0000d4ae 3838eeb0	move.w	(Camera_X_pos_diff).w,d4
0000d4b2 48c4	ext.l	d4
0000d4b4 c9fc0119	muls.w	#281,d4
0000d4b8 7c02	moveq	#scroll_flag_bg1_left,d6
0000d4ba 610004b0	bsr.w	SetHorizScrollFlagsBG_ARZ
0000d4be 3a38eeb2	move.w	(Camera_Y_pos_diff).w,d5
0000d4c2 48c5	ext.l	d5
0000d4c4 ef85	asl.l	#7,d5
0000d4c6 4a38fe11	tst.b	(Current_Act).w
0000d4ca 6602	bne.s	+
0000d4cc e385	asl.l	#1,d5
0000d4ce 7c06	moveq	#scroll_flag_bg1_up_whole_row_2,d6
0000d4d0 61000466	bsr.w	SetVertiScrollFlagsBG
0000d4d4 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000d4da 7400	moveq	#0,d2
0000d4dc 4a38eebd	tst.b	(Screen_Shaking_Flag).w
0000d4e0 6726	beq.s	.screenNotShaking
0000d4e2 3038fe04	move.w	(Level_frame_counter).w,d0
0000d4e6 0240003f	andi.w	#$3F,d0
0000d4ee 43f10000	lea	(a1,d0.w),a1
0000d4f2 7000	moveq	#0,d0
0000d4f4 1019	move.b	(a1)+,d0
0000d4f6 d178f616	add.w	d0,(Vscroll_Factor_FG).w
0000d4fa d178f618	add.w	d0,(Vscroll_Factor_BG).w
0000d4fe d178eef4	add.w	d0,(Camera_Y_pos_copy).w
0000d502 1419	move.b	(a1)+,d2
0000d504 d578eef0	add.w	d2,(Camera_X_pos_copy).w
0000d508 45f8a800	lea	(TempArray_LayerDef).w,a2
0000d50c 47ea0006	lea	3*2(a2),a3
0000d510 3038ee00	move.w	(Camera_X_pos).w,d0
0000d514 48c0	ext.l	d0
0000d516 e980	asl.l	#4,d0
0000d518 81fc000a	divs.w	#10,d0
0000d51c 48c0	ext.l	d0
0000d51e e980	asl.l	#4,d0
0000d520 e180	asl.l	#8,d0
0000d522 2200	move.l	d0,d1
0000d524 4841	swap	d1
0000d526 36c1	move.w	d1,(a3)+
0000d528 4841	swap	d1
0000d52a d281	add.l	d1,d1
0000d52c d280	add.l	d0,d1
0000d52e 4841	swap	d1
0000d530 36c1	move.w	d1,(a3)+
0000d532 4841	swap	d1
0000d534 d280	add.l	d0,d1
0000d536 4841	swap	d1
0000d538 36c1	move.w	d1,(a3)+
0000d53a 4841	swap	d1
0000d53c d280	add.l	d0,d1
0000d53e 4841	swap	d1
0000d540 36c1	move.w	d1,(a3)+
0000d542 4841	swap	d1
0000d544 d280	add.l	d0,d1
0000d546 4841	swap	d1
0000d548 36c1	move.w	d1,(a3)+
0000d54a 4841	swap	d1
0000d54c d280	add.l	d0,d1
0000d54e 4841	swap	d1
0000d550 36c1	move.w	d1,(a3)+
0000d552 4841	swap	d1
0000d554 d280	add.l	d0,d1
0000d556 4841	swap	d1
0000d558 36c1	move.w	d1,(a3)+
0000d55a 4841	swap	d1
0000d55c d280	add.l	d0,d1
0000d55e 4841	swap	d1
0000d560 36c1	move.w	d1,(a3)+
0000d562 3481	move.w	d1,(a2)
0000d564 35410004	move.w	d1,4(a2)
0000d568 3038ee08	move.w	(Camera_BG_X_pos).w,d0
0000d56c 35400002	move.w	d0,2(a2)
0000d570 35400016	move.w	d0,$16(a2)
0000d578 35400004	move.w	d0,4(a2)
0000d57c 35400018	move.w	d0,12*2(a2)
0000d580 3540001a	move.w	d0,13*2(a2)
0000d584 3540001c	move.w	d0,14*2(a2)
0000d588 3540001e	move.w	d0,15*2(a2)
0000d58c 47f90000d5ce	lea	(SwScrl_ARZ_RowHeights).l,a3
0000d592 45f8a800	lea	(TempArray_LayerDef).w,a2
0000d596 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000d59a 3238ee0c	move.w	(Camera_BG_Y_pos).w,d1
0000d59e 7000	moveq	#0,d0
0000d5a0 101b	move.b	(a3)+,d0
0000d5a2 544a	addq.w	#2,a2
0000d5a4 9240	sub.w	d0,d1
0000d5a6 64f8	bcc.s	.findTopRowLoop
0000d5a8 4441	neg.w	d1
0000d5aa 554a	subq.w	#2,a2
0000d5ac 343c00df	move.w	#screen_height-1,d2
0000d5b0 3038ee00	move.w	(Camera_X_pos).w,d0
0000d5b4 4440	neg.w	d0
0000d5b6 4840	swap	d0
0000d5b8 301a	move.w	(a2)+,d0
0000d5ba 4440	neg.w	d0
0000d5be 5341	subq.w	#1,d1
0000d5c0 6606	bne.s	+
0000d5c2 121b	move.b	(a3)+,d1
0000d5c4 301a	move.w	(a2)+,d0
0000d5c6 4440	neg.w	d0
0000d5cc 4e75	rts	
0000d5de 4a78fe08	tst.w	(Debug_placement_mode).w
0000d5e2 66000082	bne.w	SwScrl_Minimal
0000d5e6 43f8ee00	lea	(Camera_X_pos).w,a1
0000d5ea 47f8ee50	lea	(Scroll_flags).w,a3
0000d5ee 49f8eeb0	lea	(Camera_X_pos_diff).w,a4
0000d5f2 3038f736	move.w	(Tornado_Velocity_X).w,d0
0000d5f6 3811	move.w	(a1),d4
0000d5f8 d051	add.w	(a1),d0
0000d5fa 3200	move.w	d0,d1
0000d5fc 9251	sub.w	(a1),d1
0000d5fe e141	asl.w	#8,d1
0000d600 3280	move.w	d0,(a1)
0000d602 3881	move.w	d1,(a4)
0000d604 45f8ee40	lea	(Horiz_block_crossed_flag).w,a2
0000d608 610000d8	bsr.w	SetHorizScrollFlags
0000d60c 43f8ee04	lea	(Camera_Y_pos).w,a1
0000d610 49f8eeb2	lea	(Camera_Y_pos_diff).w,a4
0000d614 3038f738	move.w	(Tornado_Velocity_Y).w,d0
0000d618 3811	move.w	(a1),d4
0000d61a d051	add.w	(a1),d0
0000d61c 3200	move.w	d0,d1
0000d61e 9251	sub.w	(a1),d1
0000d620 e141	asl.w	#8,d1
0000d622 3280	move.w	d0,(a1)
0000d624 3881	move.w	d1,(a4)
0000d626 45f8ee41	lea	(Verti_block_crossed_flag).w,a2
0000d62a 6100024c	bsr.w	SetVertiScrollFlags
0000d62e 3838eeb0	move.w	(Camera_X_pos_diff).w,d4
0000d632 6704	beq.s	+
0000d634 383c0100	move.w	#$100,d4
0000d638 48c4	ext.l	d4
0000d63a ef84	asl.l	#7,d4
0000d63c 7a00	moveq	#0,d5
0000d63e 6100025a	bsr.w	SetHorizVertiScrollFlagsBG
0000d642 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000d648 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000d64c 323c00df	move.w	#screen_height-1,d1
0000d650 3038ee00	move.w	(Camera_X_pos).w,d0
0000d654 4440	neg.w	d0
0000d656 4840	swap	d0
0000d658 3038ee08	move.w	(Camera_BG_X_pos).w,d0
0000d65c 4440	neg.w	d0
0000d660 51c9fffc	dbf	d1,-
0000d664 4e75	rts	
0000d666 3838eeb0	move.w	(Camera_X_pos_diff).w,d4
0000d66a 48c4	ext.l	d4
0000d66c eb84	asl.l	#5,d4
0000d66e 3a38eeb2	move.w	(Camera_Y_pos_diff).w,d5
0000d672 48c5	ext.l	d5
0000d674 ed85	asl.l	#6,d5
0000d676 61000222	bsr.w	SetHorizVertiScrollFlagsBG
0000d67a 31f8ee0cf618	move.w	(Camera_BG_Y_pos).w,(Vscroll_Factor_BG).w
0000d680 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000d684 323c00df	move.w	#screen_height-1,d1
0000d688 3038ee00	move.w	(Camera_X_pos).w,d0
0000d68c 4440	neg.w	d0
0000d68e 4840	swap	d0
0000d690 3038ee08	move.w	(Camera_BG_X_pos).w,d0
0000d694 4440	neg.w	d0
0000d698 51c9fffc	dbf	d1,-
0000d69c 4e75	rts	
0000d69e 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0000d6a2 323c000e	move.w	#screen_height/block_height+1-1,d1
0000d6a6 3038ee00	move.w	(Camera_X_pos).w,d0
0000d6aa 4440	neg.w	d0
0000d6ac 4840	swap	d0
0000d6ae 0242000f	andi.w	#$F,d2
0000d6b2 d442	add.w	d2,d2
0000d6b4 301a	move.w	(a2)+,d0
0000d6b6 4efb2004	jmp	.doPartialLineBlock(pc,d2.w)
0000d6ba 301a	move.w	(a2)+,d0
0000d6bc 22c0	move.l	d0,(a1)+
0000d6be 22c0	move.l	d0,(a1)+
0000d6c0 22c0	move.l	d0,(a1)+
0000d6c2 22c0	move.l	d0,(a1)+
0000d6c4 22c0	move.l	d0,(a1)+
0000d6c6 22c0	move.l	d0,(a1)+
0000d6c8 22c0	move.l	d0,(a1)+
0000d6ca 22c0	move.l	d0,(a1)+
0000d6cc 22c0	move.l	d0,(a1)+
0000d6ce 22c0	move.l	d0,(a1)+
0000d6d0 22c0	move.l	d0,(a1)+
0000d6d2 22c0	move.l	d0,(a1)+
0000d6d4 22c0	move.l	d0,(a1)+
0000d6d6 22c0	move.l	d0,(a1)+
0000d6d8 22c0	move.l	d0,(a1)+
0000d6da 22c0	move.l	d0,(a1)+
0000d6dc 51c9ffdc	dbf	d1,.doFullLineBlock
0000d6e0 4e75	rts	
0000d6e2 3011	move.w	(a1),d0
0000d6e4 02400010	andi.w	#$10,d0
0000d6e8 1212	move.b	(a2),d1
0000d6ea b300	eor.b	d1,d0
0000d6ec 6614	bne.s	++
0000d6ee 0a120010	eori.b	#$10,(a2)
0000d6f2 3011	move.w	(a1),d0
0000d6f4 9044	sub.w	d4,d0
0000d6f6 6a06	bpl.s	+
0000d6f8 08d30002	bset	#scroll_flag_fg_left,(a3)
0000d6fc 4e75	rts	
0000d6fe 08d30003	bset	#scroll_flag_fg_right,(a3)
0000d702 4e75	rts	
0000d704 3811	move.w	(a1),d4
0000d706 4a38f623	tst.b	(Teleport_flag).w
0000d70a 6636	bne.s	.return
0000d70c 3215	move.w	Horiz_scroll_delay_val-Camera_Delay(a5),d1
0000d70e 671e	beq.s	.scrollNotDelayed
0000d710 04410100	subi.w	#$100,d1
0000d714 3a81	move.w	d1,Horiz_scroll_delay_val-Camera_Delay(a5)
0000d716 7200	moveq	#0,d1
0000d718 1215	move.b	Horiz_scroll_delay_val-Camera_Delay(a5),d1
0000d71a e509	lsl.b	#2,d1
0000d71c 5801	addq.b	#4,d1
0000d71e 302d0002	move.w	Sonic_Pos_Record_Index-Camera_Delay(a5),d0
0000d722 9001	sub.b	d1,d0
0000d724 30360000	move.w	(a6,d0.w),d0
0000d728 02403fff	andi.w	#$3FFF,d0
0000d72c 6004	bra.s	.checkIfShouldScroll
0000d72e 30280008	move.w	x_pos(a0),d0
0000d732 9051	sub.w	(a1),d0
0000d734 04400090	subi.w	#(screen_width/2)-16,d0
0000d738 6d0a	blt.s	.scrollLeft
0000d73a 04400010	subi.w	#16,d0
0000d73e 6c18	bge.s	.scrollRight
0000d740 4254	clr.w	(a4)
0000d742 4e75	rts	
0000d744 0c40fff0	cmpi.w	#-16,d0
0000d748 6e04	bgt.s	.maxNotReached
0000d74a 303cfff0	move.w	#-16,d0
0000d74e d051	add.w	(a1),d0
0000d750 b052	cmp.w	Camera_Min_X_pos-Camera_Boundaries(a2),d0
0000d752 6e1a	bgt.s	.doScroll
0000d754 3012	move.w	Camera_Min_X_pos-Camera_Boundaries(a2),d0
0000d756 6016	bra.s	.doScroll
0000d758 0c400010	cmpi.w	#16,d0
0000d75c 6504	blo.s	.maxNotReached2
0000d75e 303c0010	move.w	#16,d0
0000d762 d051	add.w	(a1),d0
0000d764 b06a0002	cmp.w	Camera_Max_X_pos-Camera_Boundaries(a2),d0
0000d768 6d04	blt.s	.doScroll
0000d76a 302a0002	move.w	Camera_Max_X_pos-Camera_Boundaries(a2),d0
0000d76e 3200	move.w	d0,d1
0000d770 9251	sub.w	(a1),d1
0000d772 e141	asl.w	#8,d1
0000d774 3280	move.w	d0,(a1)
0000d776 3881	move.w	d1,(a4)
0000d778 4e75	rts	
0000d77a 7200	moveq	#0,d1
0000d77c 3028000c	move.w	y_pos(a0),d0
0000d780 9051	sub.w	(a1),d0
0000d782 0c78ff00eecc	cmpi.w	#-$100,(Camera_Min_Y_pos).w
0000d788 6604	bne.s	.noWrap
0000d78a 024007ff	andi.w	#$7FF,d0
0000d78e 082800020022	btst	#status.player.rolling,status(a0)
0000d794 6702	beq.s	.notRolling
0000d796 5b40	subq.w	#5,d0
0000d798 082800010022	btst	#status.player.in_air,status(a0)
0000d79e 6716	beq.s	.checkBoundaryCrossed_onGround
0000d7a0 06400020	addi.w	#$20,d0
0000d7a4 9043	sub.w	d3,d0
0000d7a6 6554	bcs.s	.doScroll_fast
0000d7a8 04400040	subi.w	#$40,d0
0000d7ac 644e	bcc.s	.doScroll_fast
0000d7ae 4a38eede	tst.b	(Camera_Max_Y_Pos_Changing).w
0000d7b2 665a	bne.s	.scrollUpOrDown_maxYPosChanging
0000d7b4 600a	bra.s	.doNotScroll
0000d7b6 9043	sub.w	d3,d0
0000d7b8 660a	bne.s	.decideScrollType
0000d7ba 4a38eede	tst.b	(Camera_Max_Y_Pos_Changing).w
0000d7be 664e	bne.s	.scrollUpOrDown_maxYPosChanging
0000d7c0 4254	clr.w	(a4)
0000d7c2 4e75	rts	
0000d7c4 0c430060	cmpi.w	#(screen_height/2)-16,d3
0000d7c8 6620	bne.s	.doScroll_slow
0000d7ca 32280014	move.w	inertia(a0),d1
0000d7ce 6a02	bpl.s	.skip
0000d7d0 4441	neg.w	d1
0000d7d2 0c410800	cmpi.w	#$800,d1
0000d7d6 6424	bhs.s	.doScroll_fast
0000d7d8 323c0600	move.w	#6<<8,d1
0000d7dc 0c400006	cmpi.w	#6,d0
0000d7e0 6e68	bgt.s	.scrollDown_max
0000d7e2 0c40fffa	cmpi.w	#-6,d0
0000d7e6 6d3c	blt.s	.scrollUp_max
0000d7e8 602a	bra.s	.scrollUpOrDown
0000d7ea 323c0200	move.w	#2<<8,d1
0000d7ee 0c400002	cmpi.w	#2,d0
0000d7f2 6e56	bgt.s	.scrollDown_max
0000d7f4 0c40fffe	cmpi.w	#-2,d0
0000d7f8 6d2a	blt.s	.scrollUp_max
0000d7fa 6018	bra.s	.scrollUpOrDown
0000d7fc 323c1000	move.w	#16<<8,d1
0000d800 0c400010	cmpi.w	#16,d0
0000d804 6e44	bgt.s	.scrollDown_max
0000d806 0c40fff0	cmpi.w	#-16,d0
0000d80a 6d18	blt.s	.scrollUp_max
0000d80c 6006	bra.s	.scrollUpOrDown
0000d80e 7000	moveq	#0,d0
0000d810 11c0eede	move.b	d0,(Camera_Max_Y_Pos_Changing).w
0000d814 7200	moveq	#0,d1
0000d816 3200	move.w	d0,d1
0000d818 d251	add.w	(a1),d1
0000d81a 4a40	tst.w	d0
0000d81c 6a000034	bpl.w	.scrollDown
0000d820 6000000c	bra.w	.scrollUp
0000d824 4441	neg.w	d1
0000d826 48c1	ext.l	d1
0000d828 e181	asl.l	#8,d1
0000d82a d291	add.l	(a1),d1
0000d82c 4841	swap	d1
0000d82e b26a0004	cmp.w	Camera_Min_Y_pos-Camera_Boundaries(a2),d1
0000d832 6e34	bgt.s	.doScroll
0000d834 0c41ff00	cmpi.w	#-$100,d1
0000d838 6e0a	bgt.s	.minYPosReached
0000d83a 024107ff	andi.w	#$7FF,d1
0000d83e 025107ff	andi.w	#$7FF,(a1)
0000d842 6024	bra.s	.doScroll
0000d844 322a0004	move.w	Camera_Min_Y_pos-Camera_Boundaries(a2),d1
0000d848 601e	bra.s	.doScroll
0000d84a 48c1	ext.l	d1
0000d84c e181	asl.l	#8,d1
0000d84e d291	add.l	(a1),d1
0000d850 4841	swap	d1
0000d852 b26a0006	cmp.w	Camera_Max_Y_pos-Camera_Boundaries(a2),d1
0000d856 6d10	blt.s	.doScroll
0000d858 04410800	subi.w	#$800,d1
0000d85c 6506	bcs.s	.maxYPosReached
0000d85e 04510800	subi.w	#$800,(a1)
0000d862 6004	bra.s	.doScroll
0000d864 322a0006	move.w	Camera_Max_Y_pos-Camera_Boundaries(a2),d1
0000d868 3811	move.w	(a1),d4
0000d86a 4841	swap	d1
0000d86c 2601	move.l	d1,d3
0000d86e 9691	sub.l	(a1),d3
0000d870 e09b	ror.l	#8,d3
0000d872 3883	move.w	d3,(a4)
0000d874 2281	move.l	d1,(a1)
0000d876 4e75	rts	
0000d878 3011	move.w	(a1),d0
0000d87a 02400010	andi.w	#$10,d0
0000d87e 1212	move.b	(a2),d1
0000d880 b300	eor.b	d1,d0
0000d882 6614	bne.s	++
0000d884 0a120010	eori.b	#$10,(a2)
0000d888 3011	move.w	(a1),d0
0000d88a 9044	sub.w	d4,d0
0000d88c 6a06	bpl.s	+
0000d88e 08d30000	bset	#scroll_flag_fg_up,(a3)
0000d892 4e75	rts	
0000d894 08d30001	bset	#scroll_flag_fg_down,(a3)
0000d898 4e75	rts	
0000d89a 2438ee08	move.l	(Camera_BG_X_pos).w,d2
0000d89e 2002	move.l	d2,d0
0000d8a0 d084	add.l	d4,d0
0000d8a2 21c0ee08	move.l	d0,(Camera_BG_X_pos).w
0000d8a6 2200	move.l	d0,d1
0000d8a8 4841	swap	d1
0000d8aa 02410010	andi.w	#$10,d1
0000d8ae 1638ee42	move.b	(Horiz_block_crossed_flag_BG).w,d3
0000d8b2 b701	eor.b	d3,d1
0000d8b4 6618	bne.s	++
0000d8b6 0a380010ee42	eori.b	#$10,(Horiz_block_crossed_flag_BG).w
0000d8bc 9082	sub.l	d2,d0
0000d8be 6a08	bpl.s	+
0000d8c0 08f80002ee52	bset	#scroll_flag_bg1_left,(Scroll_flags_BG).w
0000d8c6 6006	bra.s	++
0000d8c8 08f80003ee52	bset	#scroll_flag_bg1_right,(Scroll_flags_BG).w
0000d8ce 2638ee0c	move.l	(Camera_BG_Y_pos).w,d3
0000d8d2 2003	move.l	d3,d0
0000d8d4 d085	add.l	d5,d0
0000d8d6 21c0ee0c	move.l	d0,(Camera_BG_Y_pos).w
0000d8da 2200	move.l	d0,d1
0000d8dc 4841	swap	d1
0000d8de 02410010	andi.w	#$10,d1
0000d8e2 1438ee43	move.b	(Verti_block_crossed_flag_BG).w,d2
0000d8e6 b501	eor.b	d2,d1
0000d8e8 6618	bne.s	++
0000d8ea 0a380010ee43	eori.b	#$10,(Verti_block_crossed_flag_BG).w
0000d8f0 9083	sub.l	d3,d0
0000d8f2 6a08	bpl.s	+
0000d8f4 08f80000ee52	bset	#scroll_flag_bg1_up,(Scroll_flags_BG).w
0000d8fa 4e75	rts	
0000d8fc 08f80001ee52	bset	#scroll_flag_bg1_down,(Scroll_flags_BG).w
0000d902 4e75	rts	
0000d904 2438ee08	move.l	(Camera_BG_X_pos).w,d2
0000d908 2002	move.l	d2,d0
0000d90a d084	add.l	d4,d0
0000d90c 21c0ee08	move.l	d0,(Camera_BG_X_pos).w
0000d910 2200	move.l	d0,d1
0000d912 4841	swap	d1
0000d914 02410010	andi.w	#$10,d1
0000d918 1638ee42	move.b	(Horiz_block_crossed_flag_BG).w,d3
0000d91c b701	eor.b	d3,d1
0000d91e 6616	bne.s	++
0000d920 0a380010ee42	eori.b	#$10,(Horiz_block_crossed_flag_BG).w
0000d926 9082	sub.l	d2,d0
0000d928 6a06	bpl.s	+
0000d92a 0df8ee52	bset	d6,(Scroll_flags_BG).w
0000d92e 6006	bra.s	++
0000d930 5206	addq.b	#1,d6
0000d932 0df8ee52	bset	d6,(Scroll_flags_BG).w
0000d936 4e75	rts	
0000d938 2638ee0c	move.l	(Camera_BG_Y_pos).w,d3
0000d93c 2003	move.l	d3,d0
0000d93e d085	add.l	d5,d0
0000d940 21c0ee0c	move.l	d0,(Camera_BG_Y_pos).w
0000d944 2200	move.l	d0,d1
0000d946 4841	swap	d1
0000d948 02410010	andi.w	#$10,d1
0000d94c 1438ee43	move.b	(Verti_block_crossed_flag_BG).w,d2
0000d950 b501	eor.b	d2,d1
0000d952 6616	bne.s	++
0000d954 0a380010ee43	eori.b	#$10,(Verti_block_crossed_flag_BG).w
0000d95a 9083	sub.l	d3,d0
0000d95c 6a06	bpl.s	+
0000d95e 0df8ee52	bset	d6,(Scroll_flags_BG).w
0000d962 4e75	rts	
0000d964 5206	addq.b	#1,d6
0000d966 0df8ee52	bset	d6,(Scroll_flags_BG).w
0000d96a 4e75	rts	
0000d96c 2038f672	move.l	(Camera_ARZ_BG_X_pos).w,d0
0000d970 d084	add.l	d4,d0
0000d972 21c0f672	move.l	d0,(Camera_ARZ_BG_X_pos).w
0000d976 43f8ee08	lea	(Camera_BG_X_pos).w,a1
0000d97a 3411	move.w	(a1),d2
0000d97c 3038f672	move.w	(Camera_ARZ_BG_X_pos).w,d0
0000d980 9042	sub.w	d2,d0
0000d982 6504	blo.s	+
0000d984 620e	bhi.s	++
0000d986 4e75	rts	
0000d988 0c40fff0	cmpi.w	#-16,d0
0000d98c 6e10	bgt.s	++
0000d98e 303cfff0	move.w	#-16,d0
0000d992 600a	bra.s	++
0000d994 0c400010	cmpi.w	#16,d0
0000d998 6504	blo.s	+
0000d99a 303c0010	move.w	#16,d0
0000d99e d051	add.w	(a1),d0
0000d9a0 3280	move.w	d0,(a1)
0000d9a2 3200	move.w	d0,d1
0000d9a4 02410010	andi.w	#$10,d1
0000d9a8 1638ee42	move.b	(Horiz_block_crossed_flag_BG).w,d3
0000d9ac b701	eor.b	d3,d1
0000d9ae 6616	bne.s	++
0000d9b0 0a380010ee42	eori.b	#$10,(Horiz_block_crossed_flag_BG).w
0000d9b6 9042	sub.w	d2,d0
0000d9b8 6a06	bpl.s	+
0000d9ba 0df8ee52	bset	d6,(Scroll_flags_BG).w
0000d9be 6006	bra.s	++
0000d9c0 5206	addq.b	#1,d6
0000d9c2 0df8ee52	bset	d6,(Scroll_flags_BG).w
0000d9c6 4e75	rts	
0000d9c8 2438ee10	move.l	(Camera_BG2_X_pos).w,d2
0000d9cc 2002	move.l	d2,d0
0000d9ce d084	add.l	d4,d0
0000d9d0 21c0ee10	move.l	d0,(Camera_BG2_X_pos).w
0000d9d4 2200	move.l	d0,d1
0000d9d6 4841	swap	d1
0000d9d8 02410010	andi.w	#$10,d1
0000d9dc 1638ee44	move.b	(Horiz_block_crossed_flag_BG2).w,d3
0000d9e0 b701	eor.b	d3,d1
0000d9e2 6616	bne.s	++
0000d9e4 0a380010ee44	eori.b	#$10,(Horiz_block_crossed_flag_BG2).w
0000d9ea 9082	sub.l	d2,d0
0000d9ec 6a06	bpl.s	+
0000d9ee 0df8ee54	bset	d6,(Scroll_flags_BG2).w
0000d9f2 6006	bra.s	++
0000d9f4 5206	addq.b	#1,d6
0000d9f6 0df8ee54	bset	d6,(Scroll_flags_BG2).w
0000d9fa 4e75	rts	
0000d9fc 2438ee18	move.l	(Camera_BG3_X_pos).w,d2
0000da00 2002	move.l	d2,d0
0000da02 d084	add.l	d4,d0
0000da04 21c0ee18	move.l	d0,(Camera_BG3_X_pos).w
0000da08 2200	move.l	d0,d1
0000da0a 4841	swap	d1
0000da0c 02410010	andi.w	#$10,d1
0000da10 1638ee46	move.b	(Horiz_block_crossed_flag_BG3).w,d3
0000da14 b701	eor.b	d3,d1
0000da16 6616	bne.s	++
0000da18 0a380010ee46	eori.b	#$10,(Horiz_block_crossed_flag_BG3).w
0000da1e 9082	sub.l	d2,d0
0000da20 6a06	bpl.s	+
0000da22 0df8ee56	bset	d6,(Scroll_flags_BG3).w
0000da26 6006	bra.s	++
0000da28 5206	addq.b	#1,d6
0000da2a 0df8ee56	bset	d6,(Scroll_flags_BG3).w
0000da2e 4e75	rts	
0000da30 4bf900c00004	lea	(VDP_control_port).l,a5
0000da36 4df900c00000	lea	(VDP_data_port).l,a6
0000da3c 45f8ee52	lea	(Scroll_flags_BG).w,a2
0000da40 47f8ee08	lea	(Camera_BG_X_pos).w,a3
0000da44 49f88080	lea	(Level_Layout+$80).w,a4
0000da48 343c6000	move.w	#vdpComm(VRAM_Plane_B_Name_Table,VRAM,WRITE)>>16,d2
0000da4c 61000174	bsr.w	Draw_BG1
0000da50 45f8ee54	lea	(Scroll_flags_BG2).w,a2
0000da54 47f8ee10	lea	(Camera_BG2_X_pos).w,a3
0000da58 60000238	bra.w	Draw_BG2
0000da5c 4bf900c00004	lea	(VDP_control_port).l,a5
0000da62 4df900c00000	lea	(VDP_data_port).l,a6
0000da68 45f8eea2	lea	(Scroll_flags_BG_copy).w,a2
0000da6c 47f8ee68	lea	(Camera_BG_copy).w,a3
0000da70 49f88080	lea	(Level_Layout+$80).w,a4
0000da74 343c6000	move.w	#vdpComm(VRAM_Plane_B_Name_Table,VRAM,WRITE)>>16,d2
0000da78 61000148	bsr.w	Draw_BG1
0000da7c 45f8eea4	lea	(Scroll_flags_BG2_copy).w,a2
0000da80 47f8ee70	lea	(Camera_BG2_copy).w,a3
0000da84 6100020c	bsr.w	Draw_BG2
0000da88 45f8eea6	lea	(Scroll_flags_BG3_copy).w,a2
0000da8c 47f8ee78	lea	(Camera_BG3_copy).w,a3
0000da90 610002f0	bsr.w	Draw_BG3
0000da94 4a78ffd8	tst.w	(Two_player_mode).w
0000da98 6714	beq.s	+
0000da9a 45f8eea8	lea	(Scroll_flags_copy_P2).w,a2
0000da9e 47f8ee80	lea	(Camera_P2_copy).w,a3
0000daa2 49f88000	lea	(Level_Layout).w,a4
0000daa6 343c6000	move.w	#vdpComm(VRAM_Plane_A_Name_Table_2P,VRAM,WRITE)>>16,d2
0000daaa 610000b0	bsr.w	Draw_FG_P2
0000daae 45f8eea0	lea	(Scroll_flags_copy).w,a2
0000dab2 47f8ee60	lea	(Camera_RAM_copy).w,a3
0000dab6 49f88000	lea	(Level_Layout).w,a4
0000daba 343c4000	move.w	#vdpComm(VRAM_Plane_A_Name_Table,VRAM,WRITE)>>16,d2
0000dabe 4a38f72c	tst.b	(Screen_redraw_flag).w
0000dac2 6732	beq.s	Draw_FG
0000dac4 11fc0000f72c	move.b	#0,(Screen_redraw_flag).w
0000daca 78f0	moveq	#-block_width,d4
0000dacc 7c0f	moveq	#(1+screen_height/block_height+1)-1,d6
0000dace 48e70e00	movem.l	d4-d6,-(sp)
0000dad2 7af0	moveq	#-block_width,d5
0000dad4 3204	move.w	d4,d1
0000dad6 610007ae	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000dada 3801	move.w	d1,d4
0000dadc 7af0	moveq	#-block_width,d5
0000dade 610004b2	bsr.w	DrawBlockRow
0000dae2 4cdf0070	movem.l	(sp)+,d4-d6
0000dae6 06440010	addi.w	#block_height,d4
0000daea 51ceffe2	dbf	d6,Draw_All
0000daee 11fc0000eea0	move.b	#0,(Scroll_flags_copy).w
0000daf4 4e75	rts	
0000daf6 4a12	tst.b	(a2)
0000daf8 6760	beq.s	return_DB5A
0000dafa 08920000	bclr	#scroll_flag_fg_up,(a2)
0000dafe 6710	beq.s	+
0000db00 78f0	moveq	#-block_height,d4
0000db02 7af0	moveq	#-block_width,d5
0000db04 61000780	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000db08 78f0	moveq	#-block_height,d4
0000db0a 7af0	moveq	#-block_width,d5
0000db0c 61000484	bsr.w	DrawBlockRow
0000db10 08920001	bclr	#scroll_flag_fg_down,(a2)
0000db14 6714	beq.s	+
0000db16 383c00e0	move.w	#screen_height,d4
0000db1a 7af0	moveq	#-block_width,d5
0000db1c 61000768	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000db20 383c00e0	move.w	#screen_height,d4
0000db24 7af0	moveq	#-block_width,d5
0000db26 6100046a	bsr.w	DrawBlockRow
0000db2a 08920002	bclr	#scroll_flag_fg_left,(a2)
0000db2e 6710	beq.s	+
0000db30 78f0	moveq	#-block_height,d4
0000db32 7af0	moveq	#-block_width,d5
0000db34 61000750	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000db38 78f0	moveq	#-block_height,d4
0000db3a 7af0	moveq	#-block_width,d5
0000db3c 610003c6	bsr.w	DrawBlockColumn
0000db40 08920003	bclr	#scroll_flag_fg_right,(a2)
0000db44 6714	beq.s	return_DB5A
0000db46 78f0	moveq	#-block_height,d4
0000db48 3a3c0140	move.w	#screen_width,d5
0000db4c 61000738	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000db50 78f0	moveq	#-block_height,d4
0000db52 3a3c0140	move.w	#screen_width,d5
0000db56 610003ac	bsr.w	DrawBlockColumn
0000db5a 4e75	rts	
0000db5c 4a12	tst.b	(a2)
0000db5e 6760	beq.s	return_DBC0
0000db60 08920000	bclr	#scroll_flag_fg_up,(a2)
0000db64 6710	beq.s	+
0000db66 78f0	moveq	#-block_height,d4
0000db68 7af0	moveq	#-block_width,d5
0000db6a 61000756	bsr.w	CalculateVRAMAddressOfBlockForPlayer2
0000db6e 78f0	moveq	#-block_height,d4
0000db70 7af0	moveq	#-block_width,d5
0000db72 6100041e	bsr.w	DrawBlockRow
0000db76 08920001	bclr	#scroll_flag_fg_down,(a2)
0000db7a 6714	beq.s	+
0000db7c 383c00e0	move.w	#screen_height,d4
0000db80 7af0	moveq	#-block_width,d5
0000db82 6100073e	bsr.w	CalculateVRAMAddressOfBlockForPlayer2
0000db86 383c00e0	move.w	#screen_height,d4
0000db8a 7af0	moveq	#-block_width,d5
0000db8c 61000404	bsr.w	DrawBlockRow
0000db90 08920002	bclr	#scroll_flag_fg_left,(a2)
0000db94 6710	beq.s	+
0000db96 78f0	moveq	#-block_height,d4
0000db98 7af0	moveq	#-block_width,d5
0000db9a 61000726	bsr.w	CalculateVRAMAddressOfBlockForPlayer2
0000db9e 78f0	moveq	#-block_height,d4
0000dba0 7af0	moveq	#-block_width,d5
0000dba2 61000360	bsr.w	DrawBlockColumn
0000dba6 08920003	bclr	#scroll_flag_fg_right,(a2)
0000dbaa 6714	beq.s	return_DBC0
0000dbac 78f0	moveq	#-block_height,d4
0000dbae 3a3c0140	move.w	#screen_width,d5
0000dbb2 6100070e	bsr.w	CalculateVRAMAddressOfBlockForPlayer2
0000dbb6 78f0	moveq	#-block_height,d4
0000dbb8 3a3c0140	move.w	#screen_width,d5
0000dbbc 61000346	bsr.w	DrawBlockColumn
0000dbc0 4e75	rts	
0000dbc2 4a12	tst.b	(a2)
0000dbc4 670000ca	beq.w	return_DC90
0000dbc8 08920000	bclr	#scroll_flag_bg1_up,(a2)
0000dbcc 6710	beq.s	+
0000dbce 78f0	moveq	#-block_height,d4
0000dbd0 7af0	moveq	#-block_width,d5
0000dbd2 610006b2	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000dbd6 78f0	moveq	#-block_height,d4
0000dbd8 7af0	moveq	#-block_width,d5
0000dbda 610003b6	bsr.w	DrawBlockRow
0000dbde 08920001	bclr	#scroll_flag_bg1_down,(a2)
0000dbe2 6714	beq.s	+
0000dbe4 383c00e0	move.w	#screen_height,d4
0000dbe8 7af0	moveq	#-block_width,d5
0000dbea 6100069a	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000dbee 383c00e0	move.w	#screen_height,d4
0000dbf2 7af0	moveq	#-block_width,d5
0000dbf4 6100039c	bsr.w	DrawBlockRow
0000dbf8 08920002	bclr	#scroll_flag_bg1_left,(a2)
0000dbfc 6710	beq.s	+
0000dbfe 78f0	moveq	#-block_height,d4
0000dc00 7af0	moveq	#-block_width,d5
0000dc02 61000682	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000dc06 78f0	moveq	#-block_height,d4
0000dc08 7af0	moveq	#-block_width,d5
0000dc0a 610002f8	bsr.w	DrawBlockColumn
0000dc0e 08920003	bclr	#scroll_flag_bg1_right,(a2)
0000dc12 6714	beq.s	+
0000dc14 78f0	moveq	#-block_height,d4
0000dc16 3a3c0140	move.w	#screen_width,d5
0000dc1a 6100066a	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000dc1e 78f0	moveq	#-block_height,d4
0000dc20 3a3c0140	move.w	#screen_width,d5
0000dc24 610002de	bsr.w	DrawBlockColumn
0000dc28 08920004	bclr	#scroll_flag_bg1_up_whole_row,(a2)
0000dc2c 6712	beq.s	+
0000dc2e 78f0	moveq	#-block_height,d4
0000dc30 7a00	moveq	#0,d5
0000dc32 61000654	bsr.w	CalculateVRAMAddressOfBlockForPlayer1.AbsoluteX
0000dc36 78f0	moveq	#-block_height,d4
0000dc38 7a00	moveq	#0,d5
0000dc3a 7c1f	moveq	#gameplay_plane_width/block_width-1,d6
0000dc3c 61000358	bsr.w	DrawBlockRow.AbsoluteXCustomWidth
0000dc40 08920005	bclr	#scroll_flag_bg1_down_whole_row,(a2)
0000dc44 6716	beq.s	+
0000dc46 383c00e0	move.w	#screen_height,d4
0000dc4a 7a00	moveq	#0,d5
0000dc4c 6100063a	bsr.w	CalculateVRAMAddressOfBlockForPlayer1.AbsoluteX
0000dc50 383c00e0	move.w	#screen_height,d4
0000dc54 7a00	moveq	#0,d5
0000dc56 7c1f	moveq	#gameplay_plane_width/block_width-1,d6
0000dc58 6100033c	bsr.w	DrawBlockRow.AbsoluteXCustomWidth
0000dc5c 08920006	bclr	#scroll_flag_bg1_up_whole_row_2,(a2)
0000dc60 6712	beq.s	+
0000dc62 78f0	moveq	#-block_height,d4
0000dc64 7af0	moveq	#-block_width,d5
0000dc66 6100061e	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000dc6a 78f0	moveq	#-block_height,d4
0000dc6c 7af0	moveq	#-block_width,d5
0000dc6e 7c1f	moveq	#gameplay_plane_width/block_width-1,d6
0000dc70 61000318	bsr.w	DrawBlockRow_CustomWidth
0000dc74 08920007	bclr	#scroll_flag_bg1_down_whole_row_2,(a2)
0000dc78 6716	beq.s	return_DC90
0000dc7a 383c00e0	move.w	#screen_height,d4
0000dc7e 7af0	moveq	#-block_width,d5
0000dc80 61000604	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000dc84 383c00e0	move.w	#screen_height,d4
0000dc88 7af0	moveq	#-block_width,d5
0000dc8a 7c1f	moveq	#gameplay_plane_width/block_width-1,d6
0000dc8c 610002fc	bsr.w	DrawBlockRow_CustomWidth
0000dc90 4e75	rts	
0000dc92 4a12	tst.b	(a2)
0000dc94 6700003e	beq.w	++
0000dc98 08920000	bclr	#scroll_flag_bg2_left,(a2)
0000dc9c 6716	beq.s	+
0000dc9e 383c0070	move.w	#block_height*7,d4
0000dca2 7af0	moveq	#-block_width,d5
0000dca4 610005e0	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000dca8 383c0070	move.w	#block_height*7,d4
0000dcac 7af0	moveq	#-block_width,d5
0000dcae 7c02	moveq	#3-1,d6
0000dcb0 61000254	bsr.w	DrawBlockColumn.CustomHeight
0000dcb4 08920001	bclr	#scroll_flag_bg2_right,(a2)
0000dcb8 671a	beq.s	+
0000dcba 383c0070	move.w	#block_height*7,d4
0000dcbe 3a3c0140	move.w	#screen_width,d5
0000dcc2 610005c2	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000dcc6 383c0070	move.w	#block_height*7,d4
0000dcca 3a3c0140	move.w	#screen_width,d5
0000dcce 7c02	moveq	#3-1,d6
0000dcd0 61000234	bsr.w	DrawBlockColumn.CustomHeight
0000dcd4 4e75	rts	
0000dcf8 78f0	moveq	#-block_height,d4
0000dcfa 08920000	bclr	#scroll_flag_advanced_bg_up,(a2)
0000dcfe 660a	bne.s	.doUpOrDown
0000dd00 08920001	bclr	#scroll_flag_advanced_bg_down,(a2)
0000dd04 674c	beq.s	.checkIfShouldDoLeftOrRight
0000dd06 383c00e0	move.w	#screen_height,d4
0000dd0e 3038ee0c	move.w	(Camera_BG_Y_pos).w,d0
0000dd12 d044	add.w	d4,d0
0000dd14 024001f0	andi.w	#$1F0,d0
0000dd18 e848	lsr.w	#4,d0
0000dd1a 10300000	move.b	(a0,d0.w),d0
0000dd1e 47f90000de7e	lea	(BGCameraLookup).l,a3
0000dd24 36730000	movea.w	(a3,d0.w),a3
0000dd28 6714	beq.s	.doWholeRow
0000dd2a 7af0	moveq	#-block_width,d5
0000dd2c 48e70c00	movem.l	d4-d5,-(sp)
0000dd30 61000554	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000dd34 4cdf0030	movem.l	(sp)+,d4-d5
0000dd38 61000258	bsr.w	DrawBlockRow
0000dd3c 6014	bra.s	.checkIfShouldDoLeftOrRight
0000dd3e 7a00	moveq	#0,d5
0000dd40 48e70c00	movem.l	d4-d5,-(sp)
0000dd44 61000542	bsr.w	CalculateVRAMAddressOfBlockForPlayer1.AbsoluteX
0000dd48 4cdf0030	movem.l	(sp)+,d4-d5
0000dd4c 7c1f	moveq	#gameplay_plane_width/block_width-1,d6
0000dd4e 61000246	bsr.w	DrawBlockRow.AbsoluteXCustomWidth
0000dd52 4a12	tst.b	(a2)
0000dd54 6602	bne.s	.doLeftOrRight
0000dd56 4e75	rts	
0000dd58 78f0	moveq	#-block_height,d4
0000dd5a 7af0	moveq	#-block_width,d5
0000dd5c 1012	move.b	(a2),d0
0000dd5e 020000a8	andi.b	#(1<<scroll_flag_advanced_bg1_right)|(1<<scroll_flag_advanced_bg2_right)|(1<<scroll_flag_advanced_bg3_right),d0
0000dd62 6708	beq.s	+
0000dd64 e208	lsr.b	#1,d0
0000dd66 1480	move.b	d0,(a2)
0000dd68 3a3c0140	move.w	#screen_width,d5
0000dd70 3038ee0c	move.w	(Camera_BG_Y_pos).w,d0
0000dd74 024001f0	andi.w	#$1F0,d0
0000dd78 e848	lsr.w	#4,d0
0000dd7a 41f00000	lea	(a0,d0.w),a0
0000dd7e 60000106	bra.w	DrawBlockColumn_Advanced
0000dd82 4a12	tst.b	(a2)
0000dd84 67000048	beq.w	++
0000dd88 0c38000dfe10	cmpi.b	#chemical_plant_zone,(Current_Zone).w
0000dd8e 67000082	beq.w	Draw_BG3_CPZ
0000dd92 08920000	bclr	#scroll_flag_bg3_left,(a2)
0000dd96 6716	beq.s	+
0000dd98 383c0040	move.w	#block_height*4,d4
0000dd9c 7af0	moveq	#-block_width,d5
0000dd9e 610004e6	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000dda2 383c0040	move.w	#block_height*4,d4
0000dda6 7af0	moveq	#-block_width,d5
0000dda8 7c02	moveq	#3-1,d6
0000ddaa 6100015a	bsr.w	DrawBlockColumn.CustomHeight
0000ddae 08920001	bclr	#scroll_flag_bg3_right,(a2)
0000ddb2 671a	beq.s	+
0000ddb4 383c0040	move.w	#block_height*4,d4
0000ddb8 3a3c0140	move.w	#screen_width,d5
0000ddbc 610004c8	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000ddc0 383c0040	move.w	#block_height*4,d4
0000ddc4 3a3c0140	move.w	#screen_width,d5
0000ddc8 7c02	moveq	#3-1,d6
0000ddca 6100013a	bsr.w	DrawBlockColumn.CustomHeight
0000ddce 4e75	rts	
0000de12 78f0	moveq	#-block_height,d4
0000de14 08920000	bclr	#scroll_flag_advanced_bg_up,(a2)
0000de18 660a	bne.s	.doUpOrDown
0000de1a 08920001	bclr	#scroll_flag_advanced_bg_down,(a2)
0000de1e 672e	beq.s	.checkIfShouldDoLeftOrRight
0000de20 383c00e0	move.w	#screen_height,d4
0000de28 3038ee0c	move.w	(Camera_BG_Y_pos).w,d0
0000de2c d044	add.w	d4,d0
0000de2e 024003f0	andi.w	#$3F0,d0
0000de32 e848	lsr.w	#4,d0
0000de34 10300000	move.b	(a0,d0.w),d0
0000de38 367b0044	movea.w	BGCameraLookup(pc,d0.w),a3
0000de3c 7af0	moveq	#-block_width,d5
0000de3e 48e70c00	movem.l	d4-d5,-(sp)
0000de42 61000442	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000de46 4cdf0030	movem.l	(sp)+,d4-d5
0000de4a 61000146	bsr.w	DrawBlockRow
0000de4e 4a12	tst.b	(a2)
0000de50 6602	bne.s	.doLeftOrRight
0000de52 4e75	rts	
0000de54 78f0	moveq	#-block_height,d4
0000de56 7af0	moveq	#-block_width,d5
0000de58 1012	move.b	(a2),d0
0000de5a 020000a8	andi.b	#(1<<scroll_flag_advanced_bg1_right)|(1<<scroll_flag_advanced_bg2_right)|(1<<scroll_flag_advanced_bg3_right),d0
0000de5e 6708	beq.s	+
0000de60 e208	lsr.b	#1,d0
0000de62 1480	move.b	d0,(a2)
0000de64 3a3c0140	move.w	#screen_width,d5
0000de6c 3038ee0c	move.w	(Camera_BG_Y_pos).w,d0
0000de70 024007f0	andi.w	#$7F0,d0
0000de74 e848	lsr.w	#4,d0
0000de76 41f00000	lea	(a0,d0.w),a0
0000de7a 6000000a	bra.w	DrawBlockColumn_Advanced
0000de86 4a78ffd8	tst.w	(Two_player_mode).w
0000de8a 663c	bne.s	.doubleResolution
0000de8c 7c0f	moveq	#(1+screen_height/block_height+1)-1,d6
0000de8e 2e3c00800000	move.l	#vdpCommDelta(gameplay_plane_width/tile_width*2),d7
0000de94 7000	moveq	#0,d0
0000de96 1018	move.b	(a0)+,d0
0000de98 0112	btst	d0,(a2)
0000de9a 6720	beq.s	+
0000de9c 367b00e0	movea.w	BGCameraLookup(pc,d0.w),a3
0000dea0 48e70c80	movem.l	d4-d5/a0,-(sp)
0000dea4 48e70c00	movem.l	d4-d5,-(sp)
0000dea8 6100039a	bsr.w	GetBlock
0000deac 4cdf0030	movem.l	(sp)+,d4-d5
0000deb0 610003d4	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000deb4 610002be	bsr.w	ProcessAndWriteBlock_Vertical
0000deb8 4cdf0130	movem.l	(sp)+,d4-d5/a0
0000debc 06440010	addi.w	#block_height,d4
0000dec0 51ceffd2	dbf	d6,-
0000dec4 4212	clr.b	(a2)
0000dec6 4e75	rts	
0000dec8 7c0f	moveq	#(1+screen_height/block_height+1)-1,d6
0000deca 2e3c00800000	move.l	#vdpCommDelta(gameplay_plane_width/tile_width*2),d7
0000ded0 7000	moveq	#0,d0
0000ded2 1018	move.b	(a0)+,d0
0000ded4 0112	btst	d0,(a2)
0000ded6 6720	beq.s	+
0000ded8 367b00a4	movea.w	BGCameraLookup(pc,d0.w),a3
0000dedc 48e70c80	movem.l	d4-d5/a0,-(sp)
0000dee0 48e70c00	movem.l	d4-d5,-(sp)
0000dee4 6100035e	bsr.w	GetBlock
0000dee8 4cdf0030	movem.l	(sp)+,d4-d5
0000deec 61000398	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000def0 61000308	bsr.w	ProcessAndWriteBlock_DoubleResolution_Vertical
0000def4 4cdf0130	movem.l	(sp)+,d4-d5/a0
0000def8 06440010	addi.w	#block_height,d4
0000defc 51ceffd2	dbf	d6,-
0000df00 4212	clr.b	(a2)
0000df02 4e75	rts	
0000df04 7c0f	moveq	#(1+screen_height/block_height+1)-1,d6
0000df06 da53	add.w	(a3),d5
0000df08 d86b0004	add.w	4(a3),d4
0000df0c 2e3c00800000	move.l	#vdpCommDelta(gameplay_plane_width/tile_width*2),d7
0000df12 2200	move.l	d0,d1
0000df14 61000188	bsr.w	GetAddressOfBlockInChunk
0000df18 4a78ffd8	tst.w	(Two_player_mode).w
0000df1c 6636	bne.s	.doubleResolution
0000df20 024303ff	andi.w	#$3FF,d3
0000df24 e74b	lsl.w	#3,d3
0000df26 43f89000	lea	(Block_Table).w,a1
0000df2a d2c3	adda.w	d3,a1
0000df2c 2001	move.l	d1,d0
0000df2e 61000244	bsr.w	ProcessAndWriteBlock_Vertical
0000df32 d0fc0010	adda.w	#chunk_width/block_width*2,a0
0000df36 06410100	addi.w	#gameplay_plane_width/tile_width*2*2,d1
0000df3a 02410fff	andi.w	#((gameplay_plane_width/tile_width)*(gameplay_plane_height/tile_height)*2)-1,d1
0000df3e 06440010	addi.w	#block_height,d4
0000df42 3004	move.w	d4,d0
0000df44 02400070	andi.w	#$70,d0
0000df48 6604	bne.s	+
0000df4a 61000152	bsr.w	GetAddressOfBlockInChunk
0000df52 4e75	rts	
0000df56 024303ff	andi.w	#$3FF,d3
0000df5a e74b	lsl.w	#3,d3
0000df5c 43f89000	lea	(Block_Table).w,a1
0000df60 d2c3	adda.w	d3,a1
0000df62 2001	move.l	d1,d0
0000df64 61000294	bsr.w	ProcessAndWriteBlock_DoubleResolution_Vertical
0000df68 d0fc0010	adda.w	#chunk_width/block_width*2,a0
0000df6c 06410080	addi.w	#gameplay_plane_width/tile_width*2,d1
0000df70 02410fff	andi.w	#((gameplay_plane_width/tile_width)*(gameplay_plane_height/tile_height)*2)-1,d1
0000df74 06440010	addi.w	#block_height,d4
0000df78 3004	move.w	d4,d0
0000df7a 02400070	andi.w	#$70,d0
0000df7e 6604	bne.s	+
0000df80 6100011c	bsr.w	GetAddressOfBlockInChunk
0000df88 4e75	rts	
0000df8a da53	add.w	(a3),d5
0000df8c d86b0004	add.w	4(a3),d4
0000df90 6008	bra.s	DrawBlockRow.AbsoluteXAbsoluteYCustomWidth
0000df92 7c15	moveq	#(1+screen_width/block_width+1)-1,d6
0000df94 da53	add.w	(a3),d5
0000df96 d86b0004	add.w	4(a3),d4
0000df9a 4a78ffd8	tst.w	(Two_player_mode).w
0000df9e 6678	bne.s	.doubleResolution
0000dfa0 2f0a	move.l	a2,-(sp)
0000dfa2 3f06	move.w	d6,-(sp)
0000dfa4 45f8ef00	lea	(Block_cache).w,a2
0000dfa8 2200	move.l	d0,d1
0000dfaa 8242	or.w	d2,d1
0000dfac 4841	swap	d1
0000dfae 2f01	move.l	d1,-(sp)
0000dfb0 2a81	move.l	d1,(a5)
0000dfb2 4841	swap	d1
0000dfb4 610000e8	bsr.w	GetAddressOfBlockInChunk
0000dfba 024303ff	andi.w	#$3FF,d3
0000dfbe e74b	lsl.w	#3,d3
0000dfc0 43f89000	lea	(Block_Table).w,a1
0000dfc4 d2c3	adda.w	d3,a1
0000dfc6 6100010c	bsr.w	ProcessAndWriteBlock_Horizontal
0000dfca 5448	addq.w	#2,a0
0000dfcc 5801	addq.b	#4,d1
0000dfce 6a0a	bpl.s	+
0000dfd0 0201007f	andi.b	#$7F,d1
0000dfd4 4841	swap	d1
0000dfd6 2a81	move.l	d1,(a5)
0000dfd8 4841	swap	d1
0000dfda 06450010	addi.w	#block_width,d5
0000dfde 3005	move.w	d5,d0
0000dfe0 02400070	andi.w	#$70,d0
0000dfe4 6604	bne.s	+
0000dfe6 610000b6	bsr.w	GetAddressOfBlockInChunk
0000dfea 51ceffcc	dbf	d6,-
0000dfee 221f	move.l	(sp)+,d1
0000dff0 068100800000	addi.l	#vdpCommDelta(gameplay_plane_width/tile_width*2),d1
0000dff6 45f8ef00	lea	(Block_cache).w,a2
0000dffa 2a81	move.l	d1,(a5)
0000dffc 4841	swap	d1
0000dffe 3c1f	move.w	(sp)+,d6
0000e002 5801	addq.b	#4,d1
0000e004 6b0a	bmi.s	+
0000e006 00010080	ori.b	#$80,d1
0000e00a 4841	swap	d1
0000e00c 2a81	move.l	d1,(a5)
0000e00e 4841	swap	d1
0000e010 51ceffee	dbf	d6,-
0000e014 245f	movea.l	(sp)+,a2
0000e016 4e75	rts	
0000e018 2200	move.l	d0,d1
0000e01a 8242	or.w	d2,d1
0000e01c 4841	swap	d1
0000e01e 2a81	move.l	d1,(a5)
0000e020 4841	swap	d1
0000e022 4a01	tst.b	d1
0000e024 6b3c	bmi.s	+++
0000e026 61000076	bsr.w	GetAddressOfBlockInChunk
0000e02c 024303ff	andi.w	#$3FF,d3
0000e030 e74b	lsl.w	#3,d3
0000e032 43f89000	lea	(Block_Table).w,a1
0000e036 d2c3	adda.w	d3,a1
0000e038 610000fc	bsr.w	ProcessAndWriteBlock_DoubleResolution_Horizontal
0000e03c 5448	addq.w	#2,a0
0000e03e 5801	addq.b	#4,d1
0000e040 6a0a	bpl.s	+
0000e042 0201007f	andi.b	#$7F,d1
0000e046 4841	swap	d1
0000e048 2a81	move.l	d1,(a5)
0000e04a 4841	swap	d1
0000e04c 06450010	addi.w	#block_width,d5
0000e050 3005	move.w	d5,d0
0000e052 02400070	andi.w	#$70,d0
0000e056 6604	bne.s	+
0000e058 61000044	bsr.w	GetAddressOfBlockInChunk
0000e060 4e75	rts	
0000e062 6100003a	bsr.w	GetAddressOfBlockInChunk
0000e068 024303ff	andi.w	#$3FF,d3
0000e06c e74b	lsl.w	#3,d3
0000e06e 43f89000	lea	(Block_Table).w,a1
0000e072 d2c3	adda.w	d3,a1
0000e074 610000c0	bsr.w	ProcessAndWriteBlock_DoubleResolution_Horizontal
0000e078 5448	addq.w	#2,a0
0000e07a 5801	addq.b	#4,d1
0000e07c 6b0a	bmi.s	+
0000e07e 00010080	ori.b	#$80,d1
0000e082 4841	swap	d1
0000e084 2a81	move.l	d1,(a5)
0000e086 4841	swap	d1
0000e088 06450010	addi.w	#block_width,d5
0000e08c 3005	move.w	d5,d0
0000e08e 02400070	andi.w	#$70,d0
0000e092 6604	bne.s	+
0000e094 61000008	bsr.w	GetAddressOfBlockInChunk
0000e09c 4e75	rts	
0000e09e 48e70c00	movem.l	d4-d5,-(sp)
0000e0a2 3604	move.w	d4,d3
0000e0a4 d643	add.w	d3,d3
0000e0a6 02430f00	andi.w	#$F00,d3
0000e0aa e64d	lsr.w	#3,d5
0000e0ac 3005	move.w	d5,d0
0000e0ae e848	lsr.w	#4,d0
0000e0b0 0240007f	andi.w	#$7F,d0
0000e0b4 d043	add.w	d3,d0
0000e0b6 76ff	moveq	#-1,d3
0000e0b8 4243	clr.w	d3
0000e0ba 16340000	move.b	(a4,d0.w),d3
0000e0be ef4b	lsl.w	#7,d3
0000e0c0 02440070	andi.w	#$70,d4
0000e0c4 0245000e	andi.w	#$E,d5
0000e0c8 d644	add.w	d4,d3
0000e0ca d645	add.w	d5,d3
0000e0cc 2043	movea.l	d3,a0
0000e0ce 4cdf0030	movem.l	(sp)+,d4-d5
0000e0d2 4e75	rts	
0000e0d4 08100003	btst	#3,(a0)
0000e0d8 6626	bne.s	.flipY
0000e0da 08100002	btst	#2,(a0)
0000e0de 6606	bne.s	.flipX
0000e0e0 2c99	move.l	(a1)+,(a6)
0000e0e2 24d9	move.l	(a1)+,(a2)+
0000e0e4 4e75	rts	
0000e0e6 2619	move.l	(a1)+,d3
0000e0e8 0a8308000800	eori.l	#(flip_x<<16)|flip_x,d3
0000e0ee 4843	swap	d3
0000e0f0 2c83	move.l	d3,(a6)
0000e0f2 2619	move.l	(a1)+,d3
0000e0f4 0a8308000800	eori.l	#(flip_x<<16)|flip_x,d3
0000e0fa 4843	swap	d3
0000e0fc 24c3	move.l	d3,(a2)+
0000e0fe 4e75	rts	
0000e100 08100002	btst	#2,(a0)
0000e104 6616	bne.s	.flipXY
0000e106 2019	move.l	(a1)+,d0
0000e108 2619	move.l	(a1)+,d3
0000e10a 0a8310001000	eori.l	#(flip_y<<16)|flip_y,d3
0000e110 2c83	move.l	d3,(a6)
0000e112 0a8010001000	eori.l	#(flip_y<<16)|flip_y,d0
0000e118 24c0	move.l	d0,(a2)+
0000e11a 4e75	rts	
0000e11c 2019	move.l	(a1)+,d0
0000e11e 2619	move.l	(a1)+,d3
0000e120 0a8318001800	eori.l	#((flip_x|flip_y)<<16)|flip_x|flip_y,d3
0000e126 4843	swap	d3
0000e128 2c83	move.l	d3,(a6)
0000e12a 0a8018001800	eori.l	#((flip_x|flip_y)<<16)|flip_x|flip_y,d0
0000e130 4840	swap	d0
0000e132 24c0	move.l	d0,(a2)+
0000e134 4e75	rts	
0000e136 08100003	btst	#3,(a0)
0000e13a 6618	bne.s	.flipY
0000e13c 08100002	btst	#2,(a0)
0000e140 6604	bne.s	.flipX
0000e142 2c99	move.l	(a1)+,(a6)
0000e144 4e75	rts	
0000e146 2619	move.l	(a1)+,d3
0000e148 0a8308000800	eori.l	#(flip_x<<16)|flip_x,d3
0000e14e 4843	swap	d3
0000e150 2c83	move.l	d3,(a6)
0000e152 4e75	rts	
0000e154 08100002	btst	#2,(a0)
0000e158 660c	bne.s	.flipXY
0000e15a 2619	move.l	(a1)+,d3
0000e15c 0a8310001000	eori.l	#(flip_y<<16)|flip_y,d3
0000e162 2c83	move.l	d3,(a6)
0000e164 4e75	rts	
0000e166 2619	move.l	(a1)+,d3
0000e168 0a8318001800	eori.l	#((flip_x|flip_y)<<16)|flip_x|flip_y,d3
0000e16e 4843	swap	d3
0000e170 2c83	move.l	d3,(a6)
0000e172 4e75	rts	
0000e174 8042	or.w	d2,d0
0000e176 4840	swap	d0
0000e178 08100003	btst	#3,(a0)
0000e17c 6632	bne.s	.flipY
0000e17e 08100002	btst	#2,(a0)
0000e182 660c	bne.s	.flipX
0000e184 2a80	move.l	d0,(a5)
0000e186 2c99	move.l	(a1)+,(a6)
0000e188 d087	add.l	d7,d0
0000e18a 2a80	move.l	d0,(a5)
0000e18c 2c99	move.l	(a1)+,(a6)
0000e18e 4e75	rts	
0000e190 2a80	move.l	d0,(a5)
0000e192 2619	move.l	(a1)+,d3
0000e194 0a8308000800	eori.l	#(flip_x<<16)|flip_x,d3
0000e19a 4843	swap	d3
0000e19c 2c83	move.l	d3,(a6)
0000e19e d087	add.l	d7,d0
0000e1a0 2a80	move.l	d0,(a5)
0000e1a2 2619	move.l	(a1)+,d3
0000e1a4 0a8308000800	eori.l	#(flip_x<<16)|flip_x,d3
0000e1aa 4843	swap	d3
0000e1ac 2c83	move.l	d3,(a6)
0000e1ae 4e75	rts	
0000e1b0 08100002	btst	#2,(a0)
0000e1b4 6620	bne.s	.flipXY
0000e1b6 2f05	move.l	d5,-(sp)
0000e1b8 2a80	move.l	d0,(a5)
0000e1ba 2a19	move.l	(a1)+,d5
0000e1bc 2619	move.l	(a1)+,d3
0000e1be 0a8310001000	eori.l	#(flip_y<<16)|flip_y,d3
0000e1c4 2c83	move.l	d3,(a6)
0000e1c6 d087	add.l	d7,d0
0000e1c8 2a80	move.l	d0,(a5)
0000e1ca 0a8510001000	eori.l	#(flip_y<<16)|flip_y,d5
0000e1d0 2c85	move.l	d5,(a6)
0000e1d2 2a1f	move.l	(sp)+,d5
0000e1d4 4e75	rts	
0000e1d6 2f05	move.l	d5,-(sp)
0000e1d8 2a80	move.l	d0,(a5)
0000e1da 2a19	move.l	(a1)+,d5
0000e1dc 2619	move.l	(a1)+,d3
0000e1de 0a8318001800	eori.l	#((flip_x|flip_y)<<16)|flip_x|flip_y,d3
0000e1e4 4843	swap	d3
0000e1e6 2c83	move.l	d3,(a6)
0000e1e8 d087	add.l	d7,d0
0000e1ea 2a80	move.l	d0,(a5)
0000e1ec 0a8518001800	eori.l	#((flip_x|flip_y)<<16)|flip_x|flip_y,d5
0000e1f2 4845	swap	d5
0000e1f4 2c85	move.l	d5,(a6)
0000e1f6 2a1f	move.l	(sp)+,d5
0000e1f8 4e75	rts	
0000e1fa 8042	or.w	d2,d0
0000e1fc 4840	swap	d0
0000e1fe 08100003	btst	#3,(a0)
0000e202 661c	bne.s	.flipY
0000e204 08100002	btst	#2,(a0)
0000e208 6606	bne.s	.flipX
0000e20a 2a80	move.l	d0,(a5)
0000e20c 2c99	move.l	(a1)+,(a6)
0000e20e 4e75	rts	
0000e210 2a80	move.l	d0,(a5)
0000e212 2619	move.l	(a1)+,d3
0000e214 0a8308000800	eori.l	#(flip_x<<16)|flip_x,d3
0000e21a 4843	swap	d3
0000e21c 2c83	move.l	d3,(a6)
0000e21e 4e75	rts	
0000e220 08100002	btst	#2,(a0)
0000e224 660e	bne.s	.flipXY
0000e226 2a80	move.l	d0,(a5)
0000e228 2619	move.l	(a1)+,d3
0000e22a 0a8310001000	eori.l	#(flip_y<<16)|flip_y,d3
0000e230 2c83	move.l	d3,(a6)
0000e232 4e75	rts	
0000e234 2a80	move.l	d0,(a5)
0000e236 2619	move.l	(a1)+,d3
0000e238 0a8318001800	eori.l	#((flip_x|flip_y)<<16)|flip_x|flip_y,d3
0000e23e 4843	swap	d3
0000e240 2c83	move.l	d3,(a6)
0000e242 4e75	rts	
0000e244 da53	add.w	(a3),d5
0000e246 d86b0004	add.w	4(a3),d4
0000e24a 43f89000	lea	(Block_Table).w,a1
0000e24e 3604	move.w	d4,d3
0000e250 d643	add.w	d3,d3
0000e252 02430f00	andi.w	#$F00,d3
0000e256 e64d	lsr.w	#3,d5
0000e258 3005	move.w	d5,d0
0000e25a e848	lsr.w	#4,d0
0000e25c 0240007f	andi.w	#$7F,d0
0000e260 d043	add.w	d3,d0
0000e262 76ff	moveq	#-1,d3
0000e264 4243	clr.w	d3
0000e266 16340000	move.b	(a4,d0.w),d3
0000e26a ef4b	lsl.w	#7,d3
0000e26c 02440070	andi.w	#$70,d4
0000e270 0245000e	andi.w	#$E,d5
0000e274 d644	add.w	d4,d3
0000e276 d645	add.w	d5,d3
0000e278 2043	movea.l	d3,a0
0000e27a 3610	move.w	(a0),d3
0000e27c 024303ff	andi.w	#$3FF,d3
0000e280 e74b	lsl.w	#3,d3
0000e282 d2c3	adda.w	d3,a1
0000e284 4e75	rts	
0000e286 da53	add.w	(a3),d5
0000e288 4a78ffd8	tst.w	(Two_player_mode).w
0000e28c 661a	bne.s	.AbsoluteX_DoubleResolution
0000e28e d86b0004	add.w	4(a3),d4
0000e292 024400f0	andi.w	#$F0,d4
0000e296 024501f0	andi.w	#$1F0,d5
0000e29a e94c	lsl.w	#4,d4
0000e29c e44d	lsr.w	#2,d5
0000e29e d845	add.w	d5,d4
0000e2a0 7003	moveq	#vdpComm(VRAM_Plane_A_Name_Table,VRAM,WRITE)&$FFFF,d0
0000e2a2 4840	swap	d0
0000e2a4 3004	move.w	d4,d0
0000e2a6 4e75	rts	
0000e2a8 d86b0004	add.w	4(a3),d4
0000e2ac 024401f0	andi.w	#$1F0,d4
0000e2b0 024501f0	andi.w	#$1F0,d5
0000e2b4 e74c	lsl.w	#3,d4
0000e2b6 e44d	lsr.w	#2,d5
0000e2b8 d845	add.w	d5,d4
0000e2ba 7003	moveq	#vdpComm(VRAM_Plane_A_Name_Table,VRAM,WRITE)&$FFFF,d0
0000e2bc 4840	swap	d0
0000e2be 3004	move.w	d4,d0
0000e2c0 4e75	rts	
0000e2c2 4a78ffd8	tst.w	(Two_player_mode).w
0000e2c6 661c	bne.s	.doubleResolution
0000e2c8 d86b0004	add.w	4(a3),d4
0000e2cc da53	add.w	(a3),d5
0000e2ce 024400f0	andi.w	#$F0,d4
0000e2d2 024501f0	andi.w	#$1F0,d5
0000e2d6 e94c	lsl.w	#4,d4
0000e2d8 e44d	lsr.w	#2,d5
0000e2da d845	add.w	d5,d4
0000e2dc 7002	moveq	#vdpComm(VRAM_Plane_A_Name_Table_2P,VRAM,WRITE)&$FFFF,d0
0000e2de 4840	swap	d0
0000e2e0 3004	move.w	d4,d0
0000e2e2 4e75	rts	
0000e2e4 d86b0004	add.w	4(a3),d4
0000e2e8 da53	add.w	(a3),d5
0000e2ea 024401f0	andi.w	#$1F0,d4
0000e2ee 024501f0	andi.w	#$1F0,d5
0000e2f2 e74c	lsl.w	#3,d4
0000e2f4 e44d	lsr.w	#2,d5
0000e2f6 d845	add.w	d5,d4
0000e2f8 7002	moveq	#vdpComm(VRAM_Plane_A_Name_Table_2P,VRAM,WRITE)&$FFFF,d0
0000e2fa 4840	swap	d0
0000e2fc 3004	move.w	d4,d0
0000e2fe 4e75	rts	
0000e300 4bf900c00004	lea	(VDP_control_port).l,a5
0000e306 4df900c00000	lea	(VDP_data_port).l,a6
0000e30c 47f8ee08	lea	(Camera_BG_X_pos).w,a3
0000e310 49f88080	lea	(Level_Layout+$80).w,a4
0000e314 343c6000	move.w	#vdpComm(VRAM_Plane_B_Name_Table,VRAM,WRITE)>>16,d2
0000e318 7800	moveq	#0,d4
0000e31a 0c38000cfe10	cmpi.b	#casino_night_zone,(Current_Zone).w
0000e320 67000016	beq.w	++
0000e324 4a78ffd8	tst.w	(Two_player_mode).w
0000e328 6700000c	beq.w	+
0000e32c 0c38000bfe10	cmpi.b	#mystic_cave_zone,(Current_Zone).w
0000e332 67000062	beq.w	DrawInitialBG_LoadWholeBackground_512x512
0000e336 78f0	moveq	#-block_height,d4
0000e338 7c0f	moveq	#gameplay_plane_height/block_height-1,d6
0000e33e 7a00	moveq	#0,d5
0000e340 3204	move.w	d4,d1
0000e342 6100ff42	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
0000e346 3801	move.w	d1,d4
0000e348 7a00	moveq	#0,d5
0000e34a 7c1f	moveq	#gameplay_plane_width/block_width-1,d6
0000e34c 46fc2700	move	#$2700,sr
0000e350 6100fc38	bsr.w	DrawBlockRow_CustomWidth
0000e354 46fc2300	move	#$2300,sr
0000e358 4cdf0070	movem.l	(sp)+,d4-d6
0000e35c 06440010	addi.w	#block_height,d4
0000e360 51ceffd8	dbf	d6,-
0000e364 4e75	rts	
0000e366 78f0	moveq	#-block_height,d4
0000e368 7c0f	moveq	#gameplay_plane_height/block_height-1,d6
0000e36e 7a00	moveq	#0,d5
0000e370 3204	move.w	d4,d1
0000e372 6100ff4e	bsr.w	CalculateVRAMAddressOfBlockForPlayer2
0000e376 3801	move.w	d1,d4
0000e378 7a00	moveq	#0,d5
0000e37a 7c1f	moveq	#gameplay_plane_width/block_width-1,d6
0000e37c 46fc2700	move	#$2700,sr
0000e380 6100fc08	bsr.w	DrawBlockRow_CustomWidth
0000e384 46fc2300	move	#$2300,sr
0000e388 4cdf0070	movem.l	(sp)+,d4-d6
0000e38c 06440010	addi.w	#block_height,d4
0000e390 51ceffd8	dbf	d6,-
0000e394 4e75	rts	
0000e396 7800	moveq	#0,d4
0000e398 7c1f	moveq	#gameplay_plane_height_2p/block_height-1,d6
0000e39e 7a00	moveq	#0,d5
0000e3a0 3204	move.w	d4,d1
0000e3a2 6100ff08	bsr.w	CalculateVRAMAddressOfBlockForPlayer1.AbsoluteXAbsoluteY_DoubleResolution
0000e3a6 3801	move.w	d1,d4
0000e3a8 7a00	moveq	#0,d5
0000e3aa 7c1f	moveq	#gameplay_plane_width/block_width-1,d6
0000e3ac 46fc2700	move	#$2700,sr
0000e3b0 6100fbe8	bsr.w	DrawBlockRow.AbsoluteXAbsoluteYCustomWidth
0000e3b4 46fc2300	move	#$2300,sr
0000e3b8 4cdf0070	movem.l	(sp)+,d4-d6
0000e3bc 06440010	addi.w	#block_height,d4
0000e3c0 51ceffd8	dbf	d6,-
0000e3c4 4e75	rts	
0000e3c6 7000	moveq	#0,d0
0000e3c8 1038fe10	move.b	(Current_Zone).w,d0
0000e3cc d040	add.w	d0,d0
0000e3ce d040	add.w	d0,d0
0000e3d0 3200	move.w	d0,d1
0000e3d2 d040	add.w	d0,d0
0000e3d4 d041	add.w	d1,d0
0000e3d6 45f900042594	lea	(LevelArtPointers).l,a2
0000e3dc 45f20000	lea	(a2,d0.w),a2
0000e3e0 2f0a	move.l	a2,-(sp)
0000e3e2 584a	addq.w	#4,a2
0000e3e4 201a	move.l	(a2)+,d0
0000e3e6 028000ffffff	andi.l	#$FFFFFF,d0
0000e3ec 2040	movea.l	d0,a0
0000e3ee 43f89000	lea	(Block_Table).w,a1
0000e3f6 0c380007fe10	cmpi.b	#hill_top_zone,(Current_Zone).w
0000e3fc 660e	bne.s	+
0000e3fe 43f89980	lea	(Block_Table+$980).w,a1
0000e402 41f9000985a4	lea	(BM16_HTZ).l,a0
0000e40c 4a78ffd8	tst.w	(Two_player_mode).w
0000e410 671e	beq.s	+
0000e412 43f89000	lea	(Block_Table).w,a1
0000e416 343c0bff	move.w	#bytesToWcnt(Block_Table_End-Block_Table),d2
0000e41c 3200	move.w	d0,d1
0000e41e 0240f800	andi.w	#$F800,d0
0000e422 024107ff	andi.w	#$7FF,d1
0000e426 e249	lsr.w	#1,d1
0000e428 8041	or.w	d1,d0
0000e42a 32c0	move.w	d0,(a1)+
0000e42c 51caffec	dbf	d2,-
0000e430 201a	move.l	(a2)+,d0
0000e432 028000ffffff	andi.l	#$FFFFFF,d0
0000e438 2040	movea.l	d0,a0
0000e43a 43f9ffff0000	lea	(Chunk_Table).l,a1
0000e444 6100001c	bsr.w	loadLevelLayout
0000e448 245f	movea.l	(sp)+,a2
0000e44a 584a	addq.w	#4,a2
0000e44c 7000	moveq	#0,d0
0000e44e 1012	move.b	(a2),d0
0000e450 6704	beq.s	+
0000e456 584a	addq.w	#4,a2
0000e458 7000	moveq	#0,d0
0000e45a 1012	move.b	(a2),d0
0000e460 4e75	rts	
0000e462 7000	moveq	#0,d0
0000e464 3038fe10	move.w	(Current_ZoneAndAct).w,d0
0000e468 e218	ror.b	#1,d0
0000e46a ec48	lsr.w	#6,d0
0000e46c 41f900045a80	lea	(Off_Level).l,a0
0000e472 30300000	move.w	(a0,d0.w),d0
0000e476 41f00800	lea	(a0,d0.l),a0
0000e47a 43f88000	lea	(Level_Layout).w,a1
0000e482 47f88000	lea	(Level_Layout).w,a3
0000e486 323c03ff	move.w	#bytesToLcnt(Level_Layout_End-Level_Layout),d1
0000e48a 7000	moveq	#0,d0
0000e48e 51c9fffc	dbf	d1,-
0000e492 47f88000	lea	(Level_Layout).w,a3
0000e496 7200	moveq	#0,d1
0000e498 61000008	bsr.w	.loadLayout
0000e49c 47f88080	lea	(Level_Layout+$80).w,a3
0000e4a0 7202	moveq	#2,d1
0000e4a2 7000	moveq	#0,d0
0000e4a4 3038fe10	move.w	(Current_ZoneAndAct).w,d0
0000e4a8 e218	ror.b	#1,d0
0000e4aa ea48	lsr.w	#5,d0
0000e4ac d041	add.w	d1,d0
0000e4ae 43f900045a80	lea	(Off_Level).l,a1
0000e4b4 30310000	move.w	(a1,d0.w),d0
0000e4b8 43f10800	lea	(a1,d0.l),a1
0000e4bc 7200	moveq	#0,d1
0000e4be 3401	move.w	d1,d2
0000e4c0 1219	move.b	(a1)+,d1
0000e4c2 1419	move.b	(a1)+,d2
0000e4c4 2a01	move.l	d1,d5
0000e4c6 5285	addq.l	#1,d5
0000e4c8 7600	moveq	#0,d3
0000e4ca 363c0080	move.w	#$80,d3
0000e4ce 86c5	divu.w	d5,d3
0000e4d0 5343	subq.w	#1,d3
0000e4d2 204b	movea.l	a3,a0
0000e4d4 3803	move.w	d3,d4
0000e4d6 2f09	move.l	a1,-(sp)
0000e4d8 3001	move.w	d1,d0
0000e4da 10d9	move.b	(a1)+,(a0)+
0000e4dc 51c8fffc	dbf	d0,.nextByte
0000e4e0 225f	movea.l	(sp)+,a1
0000e4e2 51ccfff2	dbf	d4,.repeatRow
0000e4e6 43f15000	lea	(a1,d5.w),a1
0000e4ea 47eb0100	lea	$100(a3),a3
0000e4ee 51caffe2	dbf	d2,.nextRow
0000e4f2 4e75	rts	
0000e4f4 43f900fe0000	lea	($FE0000).l,a1
0000e4fa 45f900fe0080	lea	($FE0000+8*8*2).l,a2
0000e500 47f9ffff0000	lea	(Chunk_Table).l,a3
0000e506 323c003f	move.w	#64-1,d1
0000e50e 6100008c	bsr.w	ConvertHalfOf256x256ChunkToTwo128x128Chunks
0000e512 51c9fff6	dbf	d1,-
0000e516 43f900fe0000	lea	($FE0000).l,a1
0000e51c 45f900ff0000	lea	($FF0000).l,a2
0000e522 323c003f	move.w	#bytesToWcnt(8*8*2),d1
0000e52a 51c9fffa	dbf	d1,-
0000e52e 323c3fbf	move.w	#bytesToWcnt($8000-(8*8*2)),d1
0000e534 51c9fffc	dbf	d1,-
0000e538 4e75	rts	
0000e53a 43f900fe0000	lea	($FE0000).l,a1
0000e540 47f9ffff0000	lea	(Chunk_Table).l,a3
0000e546 701f	moveq	#bytesToLcnt(8*8*2),d0
0000e54a 51c8fffc	dbf	d0,-
0000e54e 7e00	moveq	#0,d7
0000e550 43f900fe0000	lea	($FE0000).l,a1
0000e556 3a3c00ff	move.w	#$100-1,d5
0000e55a 47f9ffff0000	lea	(Chunk_Table).l,a3
0000e560 3c07	move.w	d7,d6
0000e562 48e70070	movem.l	a1-a3,-(sp)
0000e566 303c003f	move.w	#bytesToWcnt(8*8*2),d0
0000e56c 6612	bne.s	+
0000e56e 51c8fffa	dbf	d0,-
0000e572 4cdf0e00	movem.l	(sp)+,a1-a3
0000e576 d2fc0080	adda.w	#8*8*2,a1
0000e57a 51cdffde	dbf	d5,.nextChunk
0000e57e 601a	bra.s	++
0000e580 4cdf0e00	movem.l	(sp)+,a1-a3
0000e584 d6fc0080	adda.w	#8*8*2,a3
0000e588 51ceffd8	dbf	d6,.doNextComparison
0000e58c 701f	moveq	#bytesToLcnt(8*8*2),d0
0000e590 51c8fffc	dbf	d0,-
0000e594 5287	addq.l	#1,d7
0000e596 51cdffc2	dbf	d5,.nextChunk
0000e59a 60fe	bra.s	-
0000e59c 7007	moveq	#8-1,d0
0000e59e 22db	move.l	(a3)+,(a1)+
0000e5a0 22db	move.l	(a3)+,(a1)+
0000e5a2 22db	move.l	(a3)+,(a1)+
0000e5a4 22db	move.l	(a3)+,(a1)+
0000e5a6 24db	move.l	(a3)+,(a2)+
0000e5a8 24db	move.l	(a3)+,(a2)+
0000e5aa 24db	move.l	(a3)+,(a2)+
0000e5ac 24db	move.l	(a3)+,(a2)+
0000e5ae 51c8ffee	dbf	d0,-
0000e5b2 d2fc0080	adda.w	#8*8*2,a1
0000e5b6 d4fc0080	adda.w	#8*8*2,a2
0000e5ba 4e75	rts	
0000e5bc 4ef90000272e	jmp	(extractJmpToName("JmpTo_PalLoad_Now")).l
0000e5c2 4ef90000161e	jmp	(extractJmpToName("JmpTo_LoadPLC")).l
0000e5c8 4ef90000193a	jmp	(extractJmpToName("JmpTo_KosDec")).l
0000e5d0 7000	moveq	#0,d0
0000e5d2 1038fe10	move.b	(Current_Zone).w,d0
0000e5d6 d040	add.w	d0,d0
0000e5d8 303b005c	move.w	DynamicLevelEventIndex(pc,d0.w),d0
0000e5dc 4ebb0058	jsr	DynamicLevelEventIndex(pc,d0.w)
0000e5e0 7202	moveq	#2,d1
0000e5e2 3038eec6	move.w	(Camera_Max_Y_pos_target).w,d0
0000e5e6 9078eece	sub.w	(Camera_Max_Y_pos).w,d0
0000e5ea 6722	beq.s	++
0000e5ec 6422	bcc.s	+++
0000e5ee 4441	neg.w	d1
0000e5f0 3038ee04	move.w	(Camera_Y_pos).w,d0
0000e5f4 b078eec6	cmp.w	(Camera_Max_Y_pos_target).w,d0
0000e5f8 630a	bls.s	+
0000e5fa 31c0eece	move.w	d0,(Camera_Max_Y_pos).w
0000e5fe 0278fffeeece	andi.w	#$FFFE,(Camera_Max_Y_pos).w
0000e604 d378eece	add.w	d1,(Camera_Max_Y_pos).w
0000e608 11fc0001eede	move.b	#1,(Camera_Max_Y_Pos_Changing).w
0000e60e 4e75	rts	
0000e610 3038ee04	move.w	(Camera_Y_pos).w,d0
0000e618 b078eece	cmp.w	(Camera_Max_Y_pos).w,d0
0000e61c 650c	blo.s	+
0000e61e 08380001b022	btst	#status.player.in_air,(MainCharacter+status).w
0000e624 6704	beq.s	+
0000e626 d241	add.w	d1,d1
0000e628 d241	add.w	d1,d1
0000e62a d378eece	add.w	d1,(Camera_Max_Y_pos).w
0000e62e 11fc0001eede	move.b	#1,(Camera_Max_Y_Pos_Changing).w
0000e634 4e75	rts	
0000e658 4a38fe11	tst.b	(Current_Act).w
0000e65c 6602	bne.s	LevEvents_EHZ2
0000e65e 4e75	rts	
0000e660 7000	moveq	#0,d0
0000e662 1038eedf	move.b	(Dynamic_Resize_Routine).w,d0
0000e666 303b0006	move.w	LevEvents_EHZ2_Index(pc,d0.w),d0
0000e66a 4efb0002	jmp	LevEvents_EHZ2_Index(pc,d0.w)
0000e676 4a78ffd8	tst.w	(Two_player_mode).w
0000e67a 6626	bne.s	++
0000e67c 0c782780ee00	cmpi.w	#$2780,(Camera_X_pos).w
0000e682 651c	blo.s	+
0000e684 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000e68a 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000e690 31fc0390eec6	move.w	#$390,(Camera_Max_Y_pos_target).w
0000e696 31fc0390eefe	move.w	#$390,(Tails_Max_Y_pos).w
0000e69c 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000e6a0 4e75	rts	
0000e6a2 31fc2920eeca	move.w	#$2920,(Camera_Max_X_pos).w
0000e6a8 31fc2920eefa	move.w	#$2920,(Tails_Max_X_pos).w
0000e6ae 4e75	rts	
0000e6b0 0c7828f0ee00	cmpi.w	#$28F0,(Camera_X_pos).w
0000e6b6 6534	blo.s	+
0000e6b8 31fc28f0eec8	move.w	#$28F0,(Camera_Min_X_pos).w
0000e6be 31fc2940eeca	move.w	#$2940,(Camera_Max_X_pos).w
0000e6c4 31fc28f0eef8	move.w	#$28F0,(Tails_Min_X_pos).w
0000e6ca 31fc2940eefa	move.w	#$2940,(Tails_Max_X_pos).w
0000e6d0 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000e6d4 303c00f9	move.w	#MusID_FadeOut,d0
0000e6dc 4238f73a	clr.b	(Boss_spawn_delay).w
0000e6e0 11fc0002f7aa	move.b	#2,(Current_Boss_ID).w
0000e6e6 7029	moveq	#PLCID_EhzBoss,d0
0000e6ec 4e75	rts	
0000e6ee 0c780388ee04	cmpi.w	#$388,(Camera_Y_pos).w
0000e6f4 650c	blo.s	+
0000e6f6 31fc0388eecc	move.w	#$388,(Camera_Min_Y_pos).w
0000e6fc 31fc0388eefc	move.w	#$388,(Tails_Min_Y_pos).w
0000e702 5238f73a	addq.b	#1,(Boss_spawn_delay).w
0000e706 0c38005af73a	cmpi.b	#$5A,(Boss_spawn_delay).w
0000e70c 6528	blo.s	++
0000e712 6616	bne.s	+
0000e714 12bc0056	move.b	#ObjID_EHZBoss,id(a1)
0000e718 137c00810028	move.b	#$81,subtype(a1)
0000e71e 337c29d00008	move.w	#$29D0,x_pos(a1)
0000e724 337c0426000c	move.w	#$426,y_pos(a1)
0000e72a 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000e72e 303c0093	move.w	#MusID_Boss,d0
0000e736 4e75	rts	
0000e738 4a38f7a7	tst.b	(Boss_defeated_flag).w
0000e73c 6712	beq.s	+
0000e73e 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000e744 31f8eecaeefa	move.w	(Camera_Max_X_pos).w,(Tails_Max_X_pos).w
0000e74a 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000e750 4e75	rts	
0000e752 4e75	rts	
0000e754 4e75	rts	
0000e756 4e75	rts	
0000e758 4e75	rts	
0000e75a 7000	moveq	#0,d0
0000e75c 1038eedf	move.b	(Dynamic_Resize_Routine).w,d0
0000e760 303b0006	move.w	LevEvents_MTZ3_Index(pc,d0.w),d0
0000e764 4efb0002	jmp	LevEvents_MTZ3_Index(pc,d0.w)
0000e772 0c782530ee00	cmpi.w	#$2530,(Camera_X_pos).w
0000e778 6516	blo.s	+
0000e77a 31fc0500eece	move.w	#$500,(Camera_Max_Y_pos).w
0000e780 31fc0450eec6	move.w	#$450,(Camera_Max_Y_pos_target).w
0000e786 31fc0450eefe	move.w	#$450,(Tails_Max_Y_pos).w
0000e78c 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000e790 4e75	rts	
0000e792 0c782980ee00	cmpi.w	#$2980,(Camera_X_pos).w
0000e798 651c	blo.s	+
0000e79a 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000e7a0 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000e7a6 31fc0400eec6	move.w	#$400,(Camera_Max_Y_pos_target).w
0000e7ac 31fc0400eefe	move.w	#$400,(Tails_Max_Y_pos).w
0000e7b2 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000e7b6 4e75	rts	
0000e7b8 0c782a80ee00	cmpi.w	#$2A80,(Camera_X_pos).w
0000e7be 6534	blo.s	+
0000e7c0 31fc2ab0eec8	move.w	#$2AB0,(Camera_Min_X_pos).w
0000e7c6 31fc2ab0eeca	move.w	#$2AB0,(Camera_Max_X_pos).w
0000e7cc 31fc2ab0eef8	move.w	#$2AB0,(Tails_Min_X_pos).w
0000e7d2 31fc2ab0eefa	move.w	#$2AB0,(Tails_Max_X_pos).w
0000e7d8 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000e7dc 303c00f9	move.w	#MusID_FadeOut,d0
0000e7e4 4238f73a	clr.b	(Boss_spawn_delay).w
0000e7e8 11fc0007f7aa	move.b	#7,(Current_Boss_ID).w
0000e7ee 702e	moveq	#PLCID_MtzBoss,d0
0000e7f4 4e75	rts	
0000e7f6 0c780400ee04	cmpi.w	#$400,(Camera_Y_pos).w
0000e7fc 650c	blo.s	+
0000e7fe 31fc0400eecc	move.w	#$400,(Camera_Min_Y_pos).w
0000e804 31fc0400eefc	move.w	#$400,(Tails_Min_Y_pos).w
0000e80a 5238f73a	addq.b	#1,(Boss_spawn_delay).w
0000e80e 0c38005af73a	cmpi.b	#$5A,(Boss_spawn_delay).w
0000e814 6516	blo.s	++
0000e81a 6604	bne.s	+
0000e81c 12bc0054	move.b	#ObjID_MTZBoss,id(a1)
0000e820 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000e824 303c0093	move.w	#MusID_Boss,d0
0000e82c 4e75	rts	
0000e82e 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000e834 31f8eecaeefa	move.w	(Camera_Max_X_pos).w,(Tails_Max_X_pos).w
0000e83a 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000e840 4e75	rts	
0000e842 7000	moveq	#0,d0
0000e844 1038eedf	move.b	(Dynamic_Resize_Routine).w,d0
0000e848 303b0018	move.w	LevEvents_WFZ_Index(pc,d0.w),d0
0000e84c 4ebb0014	jsr	LevEvents_WFZ_Index(pc,d0.w)
0000e850 3038f660	move.w	(WFZ_LevEvent_Subrout).w,d0
0000e854 303b0006	move.w	LevEvents_WFZ_Index2(pc,d0.w),d0
0000e858 4efb0002	jmp	LevEvents_WFZ_Index2(pc,d0.w)
0000e86a 21f8ee00ee08	move.l	(Camera_X_pos).w,(Camera_BG_X_pos).w
0000e870 21f8ee04ee0c	move.l	(Camera_Y_pos).w,(Camera_BG_Y_pos).w
0000e876 7000	moveq	#0,d0
0000e878 31c0eeb4	move.w	d0,(Camera_BG_X_pos_diff).w
0000e87c 31c0eeb6	move.w	d0,(Camera_BG_Y_pos_diff).w
0000e880 31c0eee2	move.w	d0,(Camera_BG_X_offset).w
0000e884 31c0eee4	move.w	d0,(Camera_BG_Y_offset).w
0000e888 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000e88c 4e75	rts	
0000e88e 0c782bc0ee00	cmpi.w	#$2BC0,(Camera_X_pos).w
0000e894 6512	blo.s	+
0000e896 0c780580ee04	cmpi.w	#$580,(Camera_Y_pos).w
0000e89c 650a	blo.s	+
0000e89e 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000e8a2 31fc0000f662	move.w	#0,(WFZ_BG_Y_Speed).w
0000e8a8 31f8eeb0eeb4	move.w	(Camera_X_pos_diff).w,(Camera_BG_X_pos_diff).w
0000e8ae 31f8eeb2eeb6	move.w	(Camera_Y_pos_diff).w,(Camera_BG_Y_pos_diff).w
0000e8b4 3038ee00	move.w	(Camera_X_pos).w,d0
0000e8b8 3238ee04	move.w	(Camera_Y_pos).w,d1
0000e8bc 600002ba	bra.w	ScrollBG
0000e8c0 0c780800eee2	cmpi.w	#$800,(Camera_BG_X_offset).w
0000e8c6 6704	beq.s	+
0000e8c8 5478eee2	addq.w	#2,(Camera_BG_X_offset).w
0000e8cc 0c780600eee2	cmpi.w	#$600,(Camera_BG_X_offset).w
0000e8d2 6d18	blt.s	LevEvents_WFZ_Routine3_Part2
0000e8d4 3038f662	move.w	(WFZ_BG_Y_Speed).w,d0
0000e8d8 7204	moveq	#4,d1
0000e8da 0c400840	cmpi.w	#$840,d0
0000e8de 6406	bhs.s	+
0000e8e0 d041	add.w	d1,d0
0000e8e2 31c0f662	move.w	d0,(WFZ_BG_Y_Speed).w
0000e8e6 e048	lsr.w	#8,d0
0000e8e8 d178eee4	add.w	d0,(Camera_BG_Y_offset).w
0000e8ec 31f8eeb0eeb4	move.w	(Camera_X_pos_diff).w,(Camera_BG_X_pos_diff).w
0000e8f2 31f8eeb2eeb6	move.w	(Camera_Y_pos_diff).w,(Camera_BG_Y_pos_diff).w
0000e8f8 3038ee00	move.w	(Camera_X_pos).w,d0
0000e8fc 3238ee04	move.w	(Camera_Y_pos).w,d1
0000e900 60000276	bra.w	ScrollBG
0000e904 0c78fd40eee2	cmpi.w	#-$2C0,(Camera_BG_X_offset).w
0000e90a 6726	beq.s	++
0000e912 0c781b81eee4	cmpi.w	#$1B81,(Camera_BG_Y_offset).w
0000e918 6718	beq.s	++
0000e91a 3038f662	move.w	(WFZ_BG_Y_Speed).w,d0
0000e91e 670c	beq.s	+
0000e920 7204	moveq	#4,d1
0000e922 4441	neg.w	d1
0000e924 d041	add.w	d1,d0
0000e926 31c0f662	move.w	d0,(WFZ_BG_Y_Speed).w
0000e92a e048	lsr.w	#8,d0
0000e92c 5240	addq.w	#1,d0
0000e92e d178eee4	add.w	d0,(Camera_BG_Y_offset).w
0000e932 31f8eeb0eeb4	move.w	(Camera_X_pos_diff).w,(Camera_BG_X_pos_diff).w
0000e938 31f8eeb2eeb6	move.w	(Camera_Y_pos_diff).w,(Camera_BG_Y_pos_diff).w
0000e93e 3038ee00	move.w	(Camera_X_pos).w,d0
0000e942 3238ee04	move.w	(Camera_Y_pos).w,d1
0000e946 60000230	bra.w	ScrollBG
0000e94a 0c782880ee00	cmpi.w	#$2880,(Camera_X_pos).w
0000e950 6518	blo.s	+
0000e952 0c780400ee04	cmpi.w	#$400,(Camera_Y_pos).w
0000e958 6510	blo.s	+
0000e95a 5478f660	addq.w	#2,(WFZ_LevEvent_Subrout).w
0000e95e 703e	moveq	#PLCID_WfzBoss,d0
0000e964 31fc2880eec8	move.w	#$2880,(Camera_Min_X_pos).w
0000e96a 4e75	rts	
0000e96c 0c780500ee04	cmpi.w	#$500,(Camera_Y_pos).w
0000e972 650e	blo.s	+
0000e974 5478f660	addq.w	#2,(WFZ_LevEvent_Subrout).w
0000e978 50f8f7cc	st.b	(Control_Locked).w
0000e97c 703f	moveq	#PLCID_Tornado,d0
0000e982 4e75	rts	
0000e984 4e75	rts	
0000e986 4a38fe11	tst.b	(Current_Act).w
0000e98a 6600025e	bne.w	LevEvents_HTZ2
0000e98e 7000	moveq	#0,d0
0000e990 1038eedf	move.b	(Dynamic_Resize_Routine).w,d0
0000e994 303b0006	move.w	LevEvents_HTZ_Index(pc,d0.w),d0
0000e998 4efb0002	jmp	LevEvents_HTZ_Index(pc,d0.w)
0000e9a2 0c780400ee04	cmpi.w	#$400,(Camera_Y_pos).w
0000e9a8 6540	blo.s	LevEvents_HTZ_Routine1_Part2
0000e9aa 0c781800ee00	cmpi.w	#$1800,(Camera_X_pos).w
0000e9b0 6538	blo.s	LevEvents_HTZ_Routine1_Part2
0000e9b2 11fc0001eebc	move.b	#1,(Screen_Shaking_Flag_HTZ).w
0000e9b8 21f8ee00ee08	move.l	(Camera_X_pos).w,(Camera_BG_X_pos).w
0000e9be 21f8ee04ee0c	move.l	(Camera_Y_pos).w,(Camera_BG_Y_pos).w
0000e9c4 7000	moveq	#0,d0
0000e9c6 31c0eeb4	move.w	d0,(Camera_BG_X_pos_diff).w
0000e9ca 31c0eeb6	move.w	d0,(Camera_BG_Y_pos_diff).w
0000e9ce 31c0eee2	move.w	d0,(Camera_BG_X_offset).w
0000e9d2 31fc0140eee4	move.w	#320,(Camera_BG_Y_offset).w
0000e9d8 04780100ee0c	subi.w	#$100,(Camera_BG_Y_pos).w
0000e9de 31fc0000eee6	move.w	#0,(HTZ_Terrain_Delay).w
0000e9e4 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000e9e8 4e75	rts	
0000e9ea 4a38eebc	tst.b	(Screen_Shaking_Flag_HTZ).w
0000e9ee 67f8	beq.s	-
0000e9f0 303c0200	move.w	#$200,d0
0000e9f4 7200	moveq	#0,d1
0000e9f6 31c1eeb4	move.w	d1,(Camera_BG_X_pos_diff).w
0000e9fa 31c1eeb6	move.w	d1,(Camera_BG_Y_pos_diff).w
0000e9fe 61000178	bsr.w	ScrollBG
0000ea02 8240	or.w	d0,d1
0000ea04 66e2	bne.s	-
0000ea06 11fc0000eebc	move.b	#0,(Screen_Shaking_Flag_HTZ).w
0000ea0c 4e75	rts	
0000ea0e 0c781978ee00	cmpi.w	#$1978,(Camera_X_pos).w
0000ea14 6500008a	blo.w	LevEvents_HTZ_Routine2_Continue
0000ea18 0c781e00ee00	cmpi.w	#$1E00,(Camera_X_pos).w
0000ea1e 6508	blo.s	.keep_shaking
0000ea20 11fc0000eebd	move.b	#0,(Screen_Shaking_Flag).w
0000ea26 6078	bra.s	LevEvents_HTZ_Routine2_Continue
0000ea28 4a38eee8	tst.b	(HTZ_Terrain_Direction).w
0000ea2c 662a	bne.s	.sinking
0000ea2e 0c780140eee4	cmpi.w	#320,(Camera_BG_Y_offset).w
0000ea34 674c	beq.s	.flip_delay
0000ea36 3038fe04	move.w	(Level_frame_counter).w,d0
0000ea3a 3200	move.w	d0,d1
0000ea3c 02400003	andi.w	#3,d0
0000ea40 665e	bne.s	LevEvents_HTZ_Routine2_Continue
0000ea42 5278eee4	addq.w	#1,(Camera_BG_Y_offset).w
0000ea46 0241003f	andi.w	#$3F,d1
0000ea4a 6654	bne.s	LevEvents_HTZ_Routine2_Continue
0000ea4c 303c00e1	move.w	#SndID_Rumbling2,d0
0000ea50 4eb900001370	jsr	(PlaySound).l
0000ea56 6048	bra.s	LevEvents_HTZ_Routine2_Continue
0000ea58 0c7800e0eee4	cmpi.w	#224,(Camera_BG_Y_offset).w
0000ea5e 6722	beq.s	.flip_delay
0000ea60 3038fe04	move.w	(Level_frame_counter).w,d0
0000ea64 3200	move.w	d0,d1
0000ea66 02400003	andi.w	#3,d0
0000ea6a 6634	bne.s	LevEvents_HTZ_Routine2_Continue
0000ea6c 5378eee4	subq.w	#1,(Camera_BG_Y_offset).w
0000ea70 0241003f	andi.w	#$3F,d1
0000ea74 662a	bne.s	LevEvents_HTZ_Routine2_Continue
0000ea76 303c00e1	move.w	#SndID_Rumbling2,d0
0000ea7a 4eb900001370	jsr	(PlaySound).l
0000ea80 601e	bra.s	LevEvents_HTZ_Routine2_Continue
0000ea82 11fc0000eebd	move.b	#0,(Screen_Shaking_Flag).w
0000ea88 5378eee6	subq.w	#1,(HTZ_Terrain_Delay).w
0000ea8c 6a12	bpl.s	LevEvents_HTZ_Routine2_Continue
0000ea8e 31fc0078eee6	move.w	#$78,(HTZ_Terrain_Delay).w
0000ea94 0a380001eee8	eori.b	#1,(HTZ_Terrain_Direction).w
0000ea9a 11fc0001eebd	move.b	#1,(Screen_Shaking_Flag).w
0000eaa0 0c781800ee00	cmpi.w	#$1800,(Camera_X_pos).w
0000eaa6 6520	blo.s	.exit_left
0000eaa8 0c781f00ee00	cmpi.w	#$1F00,(Camera_X_pos).w
0000eaae 643e	bhs.s	.exit_right
0000eab0 31f8eeb0eeb4	move.w	(Camera_X_pos_diff).w,(Camera_BG_X_pos_diff).w
0000eab6 31f8eeb2eeb6	move.w	(Camera_Y_pos_diff).w,(Camera_BG_Y_pos_diff).w
0000eabc 3038ee00	move.w	(Camera_X_pos).w,d0
0000eac0 3238ee04	move.w	(Camera_Y_pos).w,d1
0000eac4 600000b2	bra.w	ScrollBG
0000eac8 21fc04000000ee08	move.l	#$4000000,(Camera_BG_X_pos).w
0000ead0 7000	moveq	#0,d0
0000ead2 21c0ee0c	move.l	d0,(Camera_BG_Y_pos).w
0000ead6 21c0eee2	move.l	d0,(Camera_BG_X_offset).w
0000eada 11c0eee8	move.b	d0,(HTZ_Terrain_Direction).w
0000eade 5538eedf	subq.b	#2,(Dynamic_Resize_Routine).w
0000eae2 303c00f8	move.w	#MusID_StopSFX,d0
0000eae6 4eb900001370	jsr	(PlaySound).l
0000eaec 4e75	rts	
0000eaee 21fc04000000ee08	move.l	#$4000000,(Camera_BG_X_pos).w
0000eaf6 7000	moveq	#0,d0
0000eaf8 21c0ee0c	move.l	d0,(Camera_BG_Y_pos).w
0000eafc 21c0eee2	move.l	d0,(Camera_BG_X_offset).w
0000eb00 11c0eee8	move.b	d0,(HTZ_Terrain_Direction).w
0000eb04 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000eb08 303c00f8	move.w	#MusID_StopSFX,d0
0000eb0c 4eb900001370	jsr	(PlaySound).l
0000eb12 4e75	rts	
0000eb14 0c781f00ee00	cmpi.w	#$1F00,(Camera_X_pos).w
0000eb1a 6438	bhs.s	LevEvents_HTZ_Routine3_Part2
0000eb1c 11fc0001eebc	move.b	#1,(Screen_Shaking_Flag_HTZ).w
0000eb22 21f8ee00ee08	move.l	(Camera_X_pos).w,(Camera_BG_X_pos).w
0000eb28 21f8ee04ee0c	move.l	(Camera_Y_pos).w,(Camera_BG_Y_pos).w
0000eb2e 7000	moveq	#0,d0
0000eb30 31c0eeb4	move.w	d0,(Camera_BG_X_pos_diff).w
0000eb34 31c0eeb6	move.w	d0,(Camera_BG_Y_pos_diff).w
0000eb38 31c0eee2	move.w	d0,(Camera_BG_X_offset).w
0000eb3c 31fc0140eee4	move.w	#320,(Camera_BG_Y_offset).w
0000eb42 04780100ee0c	subi.w	#$100,(Camera_BG_Y_pos).w
0000eb48 31fc0000eee6	move.w	#0,(HTZ_Terrain_Delay).w
0000eb4e 5538eedf	subq.b	#2,(Dynamic_Resize_Routine).w
0000eb52 4e75	rts	
0000eb54 4a38eebc	tst.b	(Screen_Shaking_Flag_HTZ).w
0000eb58 67f8	beq.s	-
0000eb5a 303c0200	move.w	#$200,d0
0000eb5e 7200	moveq	#0,d1
0000eb60 31c1eeb4	move.w	d1,(Camera_BG_X_pos_diff).w
0000eb64 31c1eeb6	move.w	d1,(Camera_BG_Y_pos_diff).w
0000eb68 6100000e	bsr.w	ScrollBG
0000eb6c 8240	or.w	d0,d1
0000eb6e 66e2	bne.s	-
0000eb70 11fc0000eebc	move.b	#0,(Screen_Shaking_Flag_HTZ).w
0000eb76 4e75	rts	
0000eb78 9078ee08	sub.w	(Camera_BG_X_pos).w,d0
0000eb7c 9078eee2	sub.w	(Camera_BG_X_offset).w,d0
0000eb80 6a0c	bpl.s	.going_right
0000eb82 0c40fff0	cmpi.w	#-16,d0
0000eb86 6e04	bgt.s	.skip_x_cap
0000eb88 303cfff0	move.w	#-16,d0
0000eb8c 600a	bra.s	.move_x
0000eb8e 0c400010	cmpi.w	#16,d0
0000eb92 6504	blo.s	.move_x
0000eb94 303c0010	move.w	#16,d0
0000eb98 11c0eeb4	move.b	d0,(Camera_BG_X_pos_diff).w
0000eb9c 9278ee0c	sub.w	(Camera_BG_Y_pos).w,d1
0000eba0 9278eee4	sub.w	(Camera_BG_Y_offset).w,d1
0000eba4 6a0c	bpl.s	.going_down
0000eba6 0c41fff0	cmpi.w	#-16,d1
0000ebaa 6e04	bgt.s	.skip_y_cap
0000ebac 323cfff0	move.w	#-16,d1
0000ebb0 600a	bra.s	.move_y
0000ebb2 0c410010	cmpi.w	#16,d1
0000ebb6 6504	blo.s	.move_y
0000ebb8 323c0010	move.w	#16,d1
0000ebbc 11c1eeb6	move.b	d1,(Camera_BG_Y_pos_diff).w
0000ebc0 4e75	rts	
0000ebc2 08380000f606	btst	#button_up,(Ctrl_2_Held).w
0000ebc8 670a	beq.s	+
0000ebca 4a78eee4	tst.w	(Camera_BG_Y_offset).w
0000ebce 6704	beq.s	+
0000ebd0 5378eee4	subq.w	#1,(Camera_BG_Y_offset).w
0000ebd4 08380001f606	btst	#button_down,(Ctrl_2_Held).w
0000ebda 670c	beq.s	+
0000ebdc 0c780700eee4	cmpi.w	#$700,(Camera_BG_Y_offset).w
0000ebe2 6704	beq.s	+
0000ebe4 5278eee4	addq.w	#1,(Camera_BG_Y_offset).w
0000ebe8 4e75	rts	
0000ebea 6100037a	bsr.w	LevEvents_HTZ2_Prepare
0000ebee 7000	moveq	#0,d0
0000ebf0 1038eedf	move.b	(Dynamic_Resize_Routine).w,d0
0000ebf4 303b0006	move.w	LevEvents_HTZ2_Index(pc,d0.w),d0
0000ebf8 4efb0002	jmp	LevEvents_HTZ2_Index(pc,d0.w)
0000ec0e 0c7814c0ee00	cmpi.w	#$14C0,(Camera_X_pos).w
0000ec14 6556	blo.s	LevEvents_HTZ2_Routine1_Part2
0000ec16 11fc0001eebc	move.b	#1,(Screen_Shaking_Flag_HTZ).w
0000ec1c 21f8ee00ee08	move.l	(Camera_X_pos).w,(Camera_BG_X_pos).w
0000ec22 21f8ee04ee0c	move.l	(Camera_Y_pos).w,(Camera_BG_Y_pos).w
0000ec28 7000	moveq	#0,d0
0000ec2a 31c0eeb4	move.w	d0,(Camera_BG_X_pos_diff).w
0000ec2e 31c0eeb6	move.w	d0,(Camera_BG_Y_pos_diff).w
0000ec32 31c0eee2	move.w	d0,(Camera_BG_X_offset).w
0000ec36 31fc02c0eee4	move.w	#$2C0,(Camera_BG_Y_offset).w
0000ec3c 04780100ee0c	subi.w	#$100,(Camera_BG_Y_pos).w
0000ec42 31fc0000eee6	move.w	#0,(HTZ_Terrain_Delay).w
0000ec48 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000ec4c 0c780380ee04	cmpi.w	#$380,(Camera_Y_pos).w
0000ec52 6516	blo.s	+
0000ec54 31fcf980eee2	move.w	#-$680,(Camera_BG_X_offset).w
0000ec5a 06780480ee08	addi.w	#$480,(Camera_BG_X_pos).w
0000ec60 31fc0300eee4	move.w	#$300,(Camera_BG_Y_offset).w
0000ec66 5c38eedf	addq.b	#6,(Dynamic_Resize_Routine).w
0000ec6a 4e75	rts	
0000ec6c 4a38eebc	tst.b	(Screen_Shaking_Flag_HTZ).w
0000ec70 67f8	beq.s	-
0000ec72 303c0200	move.w	#$200,d0
0000ec76 7200	moveq	#0,d1
0000ec78 31c1eeb4	move.w	d1,(Camera_BG_X_pos_diff).w
0000ec7c 31c1eeb6	move.w	d1,(Camera_BG_Y_pos_diff).w
0000ec80 6100fef6	bsr.w	ScrollBG
0000ec84 8240	or.w	d0,d1
0000ec86 66e2	bne.s	-
0000ec88 11fc0000eebc	move.b	#0,(Screen_Shaking_Flag_HTZ).w
0000ec8e 4e75	rts	
0000ec90 0c781678ee00	cmpi.w	#$1678,(Camera_X_pos).w
0000ec96 6500008a	blo.w	LevEvents_HTZ2_Routine2_Continue
0000ec9a 0c781a00ee00	cmpi.w	#$1A00,(Camera_X_pos).w
0000eca0 6508	blo.s	.keep_shaking
0000eca2 11fc0000eebd	move.b	#0,(Screen_Shaking_Flag).w
0000eca8 6078	bra.s	LevEvents_HTZ2_Routine2_Continue
0000ecaa 4a38eee8	tst.b	(HTZ_Terrain_Direction).w
0000ecae 662a	bne.s	.sinking
0000ecb0 0c7802c0eee4	cmpi.w	#$2C0,(Camera_BG_Y_offset).w
0000ecb6 674c	beq.s	.flip_delay
0000ecb8 3038fe04	move.w	(Level_frame_counter).w,d0
0000ecbc 3200	move.w	d0,d1
0000ecbe 02400003	andi.w	#3,d0
0000ecc2 665e	bne.s	LevEvents_HTZ2_Routine2_Continue
0000ecc4 5278eee4	addq.w	#1,(Camera_BG_Y_offset).w
0000ecc8 0241003f	andi.w	#$3F,d1
0000eccc 6654	bne.s	LevEvents_HTZ2_Routine2_Continue
0000ecce 303c00e1	move.w	#SndID_Rumbling2,d0
0000ecd2 4eb900001370	jsr	(PlaySound).l
0000ecd8 6048	bra.s	LevEvents_HTZ2_Routine2_Continue
0000ecda 0c780000eee4	cmpi.w	#0,(Camera_BG_Y_offset).w
0000ece0 6722	beq.s	.flip_delay
0000ece2 3038fe04	move.w	(Level_frame_counter).w,d0
0000ece6 3200	move.w	d0,d1
0000ece8 02400003	andi.w	#3,d0
0000ecec 6634	bne.s	LevEvents_HTZ2_Routine2_Continue
0000ecee 5378eee4	subq.w	#1,(Camera_BG_Y_offset).w
0000ecf2 0241003f	andi.w	#$3F,d1
0000ecf6 662a	bne.s	LevEvents_HTZ2_Routine2_Continue
0000ecf8 303c00e1	move.w	#SndID_Rumbling2,d0
0000ecfc 4eb900001370	jsr	(PlaySound).l
0000ed02 601e	bra.s	LevEvents_HTZ2_Routine2_Continue
0000ed04 11fc0000eebd	move.b	#0,(Screen_Shaking_Flag).w
0000ed0a 5378eee6	subq.w	#1,(HTZ_Terrain_Delay).w
0000ed0e 6a12	bpl.s	LevEvents_HTZ2_Routine2_Continue
0000ed10 31fc0078eee6	move.w	#$78,(HTZ_Terrain_Delay).w
0000ed16 0a380001eee8	eori.b	#1,(HTZ_Terrain_Direction).w
0000ed1c 11fc0001eebd	move.b	#1,(Screen_Shaking_Flag).w
0000ed22 0c7814c0ee00	cmpi.w	#$14C0,(Camera_X_pos).w
0000ed28 6520	blo.s	.exit_left
0000ed2a 0c781b00ee00	cmpi.w	#$1B00,(Camera_X_pos).w
0000ed30 643e	bhs.s	.exit_right
0000ed32 31f8eeb0eeb4	move.w	(Camera_X_pos_diff).w,(Camera_BG_X_pos_diff).w
0000ed38 31f8eeb2eeb6	move.w	(Camera_Y_pos_diff).w,(Camera_BG_Y_pos_diff).w
0000ed3e 3038ee00	move.w	(Camera_X_pos).w,d0
0000ed42 3238ee04	move.w	(Camera_Y_pos).w,d1
0000ed46 6000fe30	bra.w	ScrollBG
0000ed4a 21fc04000000ee08	move.l	#$4000000,(Camera_BG_X_pos).w
0000ed52 7000	moveq	#0,d0
0000ed54 21c0ee0c	move.l	d0,(Camera_BG_Y_pos).w
0000ed58 21c0eee2	move.l	d0,(Camera_BG_X_offset).w
0000ed5c 11c0eee8	move.b	d0,(HTZ_Terrain_Direction).w
0000ed60 5538eedf	subq.b	#2,(Dynamic_Resize_Routine).w
0000ed64 303c00f8	move.w	#MusID_StopSFX,d0
0000ed68 4eb900001370	jsr	(PlaySound).l
0000ed6e 4e75	rts	
0000ed70 21fc04000000ee08	move.l	#$4000000,(Camera_BG_X_pos).w
0000ed78 7000	moveq	#0,d0
0000ed7a 21c0ee0c	move.l	d0,(Camera_BG_Y_pos).w
0000ed7e 21c0eee2	move.l	d0,(Camera_BG_X_offset).w
0000ed82 11c0eee8	move.b	d0,(HTZ_Terrain_Direction).w
0000ed86 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000ed8a 303c00f8	move.w	#MusID_StopSFX,d0
0000ed8e 4eb900001370	jsr	(PlaySound).l
0000ed94 4e75	rts	
0000ed96 0c781b00ee00	cmpi.w	#$1B00,(Camera_X_pos).w
0000ed9c 6438	bhs.s	LevEvents_HTZ2_Routine3_Part2
0000ed9e 11fc0001eebc	move.b	#1,(Screen_Shaking_Flag_HTZ).w
0000eda4 21f8ee00ee08	move.l	(Camera_X_pos).w,(Camera_BG_X_pos).w
0000edaa 21f8ee04ee0c	move.l	(Camera_Y_pos).w,(Camera_BG_Y_pos).w
0000edb0 7000	moveq	#0,d0
0000edb2 31c0eeb4	move.w	d0,(Camera_BG_X_pos_diff).w
0000edb6 31c0eeb6	move.w	d0,(Camera_BG_Y_pos_diff).w
0000edba 31c0eee2	move.w	d0,(Camera_BG_X_offset).w
0000edbe 31fc02c0eee4	move.w	#$2C0,(Camera_BG_Y_offset).w
0000edc4 04780100ee0c	subi.w	#$100,(Camera_BG_Y_pos).w
0000edca 31fc0000eee6	move.w	#0,(HTZ_Terrain_Delay).w
0000edd0 5538eedf	subq.b	#2,(Dynamic_Resize_Routine).w
0000edd4 4e75	rts	
0000edd6 4a38eebc	tst.b	(Screen_Shaking_Flag_HTZ).w
0000edda 67f8	beq.s	-
0000eddc 303c0200	move.w	#$200,d0
0000ede0 7200	moveq	#0,d1
0000ede2 31c1eeb4	move.w	d1,(Camera_BG_X_pos_diff).w
0000ede6 31c1eeb6	move.w	d1,(Camera_BG_Y_pos_diff).w
0000edea 6100fd8c	bsr.w	ScrollBG
0000edee 8240	or.w	d0,d1
0000edf0 66e2	bne.s	-
0000edf2 11fc0000eebc	move.b	#0,(Screen_Shaking_Flag_HTZ).w
0000edf8 4e75	rts	
0000edfa 0c7815f0ee00	cmpi.w	#$15F0,(Camera_X_pos).w
0000ee00 65000082	blo.w	LevEvents_HTZ2_Routine4_Continue
0000ee04 0c781ac0ee00	cmpi.w	#$1AC0,(Camera_X_pos).w
0000ee0a 6478	bhs.s	LevEvents_HTZ2_Routine4_Continue
0000ee0c 4a38eee8	tst.b	(HTZ_Terrain_Direction).w
0000ee10 662a	bne.s	.sinking
0000ee12 0c780300eee4	cmpi.w	#$300,(Camera_BG_Y_offset).w
0000ee18 674c	beq.s	.flip_delay
0000ee1a 3038fe04	move.w	(Level_frame_counter).w,d0
0000ee1e 3200	move.w	d0,d1
0000ee20 02400003	andi.w	#3,d0
0000ee24 665e	bne.s	LevEvents_HTZ2_Routine4_Continue
0000ee26 5278eee4	addq.w	#1,(Camera_BG_Y_offset).w
0000ee2a 0241003f	andi.w	#$3F,d1
0000ee2e 6654	bne.s	LevEvents_HTZ2_Routine4_Continue
0000ee30 303c00e1	move.w	#SndID_Rumbling2,d0
0000ee34 4eb900001370	jsr	(PlaySound).l
0000ee3a 6048	bra.s	LevEvents_HTZ2_Routine4_Continue
0000ee3c 0c780000eee4	cmpi.w	#0,(Camera_BG_Y_offset).w
0000ee42 6722	beq.s	.flip_delay
0000ee44 3038fe04	move.w	(Level_frame_counter).w,d0
0000ee48 3200	move.w	d0,d1
0000ee4a 02400003	andi.w	#3,d0
0000ee4e 6634	bne.s	LevEvents_HTZ2_Routine4_Continue
0000ee50 5378eee4	subq.w	#1,(Camera_BG_Y_offset).w
0000ee54 0241003f	andi.w	#$3F,d1
0000ee58 662a	bne.s	LevEvents_HTZ2_Routine4_Continue
0000ee5a 303c00e1	move.w	#SndID_Rumbling2,d0
0000ee5e 4eb900001370	jsr	(PlaySound).l
0000ee64 601e	bra.s	LevEvents_HTZ2_Routine4_Continue
0000ee66 11fc0000eebd	move.b	#0,(Screen_Shaking_Flag).w
0000ee6c 5378eee6	subq.w	#1,(HTZ_Terrain_Delay).w
0000ee70 6a12	bpl.s	LevEvents_HTZ2_Routine4_Continue
0000ee72 31fc0078eee6	move.w	#$78,(HTZ_Terrain_Delay).w
0000ee78 0a380001eee8	eori.b	#1,(HTZ_Terrain_Direction).w
0000ee7e 11fc0001eebd	move.b	#1,(Screen_Shaking_Flag).w
0000ee84 0c7814c0ee00	cmpi.w	#$14C0,(Camera_X_pos).w
0000ee8a 6520	blo.s	.exit_left
0000ee8c 0c781b00ee00	cmpi.w	#$1B00,(Camera_X_pos).w
0000ee92 643e	bhs.s	.exit_right
0000ee94 31f8eeb0eeb4	move.w	(Camera_X_pos_diff).w,(Camera_BG_X_pos_diff).w
0000ee9a 31f8eeb2eeb6	move.w	(Camera_Y_pos_diff).w,(Camera_BG_Y_pos_diff).w
0000eea0 3038ee00	move.w	(Camera_X_pos).w,d0
0000eea4 3238ee04	move.w	(Camera_Y_pos).w,d1
0000eea8 6000fcce	bra.w	ScrollBG
0000eeac 21fc04000000ee08	move.l	#$4000000,(Camera_BG_X_pos).w
0000eeb4 7000	moveq	#0,d0
0000eeb6 21c0ee0c	move.l	d0,(Camera_BG_Y_pos).w
0000eeba 21c0eee2	move.l	d0,(Camera_BG_X_offset).w
0000eebe 11c0eee8	move.b	d0,(HTZ_Terrain_Direction).w
0000eec2 5d38eedf	subq.b	#6,(Dynamic_Resize_Routine).w
0000eec6 303c00f8	move.w	#MusID_StopSFX,d0
0000eeca 4eb900001370	jsr	(PlaySound).l
0000eed0 4e75	rts	
0000eed2 21fc04000000ee08	move.l	#$4000000,(Camera_BG_X_pos).w
0000eeda 7000	moveq	#0,d0
0000eedc 21c0ee0c	move.l	d0,(Camera_BG_Y_pos).w
0000eee0 21c0eee2	move.l	d0,(Camera_BG_X_offset).w
0000eee4 11c0eee8	move.b	d0,(HTZ_Terrain_Direction).w
0000eee8 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000eeec 303c00f8	move.w	#MusID_StopSFX,d0
0000eef0 4eb900001370	jsr	(PlaySound).l
0000eef6 4e75	rts	
0000eef8 0c781b00ee00	cmpi.w	#$1B00,(Camera_X_pos).w
0000eefe 6440	bhs.s	LevEvents_HTZ2_Routine5_Part2
0000ef00 11fc0001eebc	move.b	#1,(Screen_Shaking_Flag_HTZ).w
0000ef06 21f8ee00ee08	move.l	(Camera_X_pos).w,(Camera_BG_X_pos).w
0000ef0c 21f8ee04ee0c	move.l	(Camera_Y_pos).w,(Camera_BG_Y_pos).w
0000ef12 7000	moveq	#0,d0
0000ef14 31c0eeb4	move.w	d0,(Camera_BG_X_pos_diff).w
0000ef18 31c0eeb6	move.w	d0,(Camera_BG_Y_pos_diff).w
0000ef1c 31fcf980eee2	move.w	#-$680,(Camera_BG_X_offset).w
0000ef22 06780480ee08	addi.w	#$480,(Camera_BG_X_pos).w
0000ef28 31fc0300eee4	move.w	#$300,(Camera_BG_Y_offset).w
0000ef2e 04780100ee0c	subi.w	#$100,(Camera_BG_Y_pos).w
0000ef34 31fc0000eee6	move.w	#0,(HTZ_Terrain_Delay).w
0000ef3a 5538eedf	subq.b	#2,(Dynamic_Resize_Routine).w
0000ef3e 4e75	rts	
0000ef40 4a38eebc	tst.b	(Screen_Shaking_Flag_HTZ).w
0000ef44 67f8	beq.s	-
0000ef46 303c0200	move.w	#$200,d0
0000ef4a 7200	moveq	#0,d1
0000ef4c 31c1eeb4	move.w	d1,(Camera_BG_X_pos_diff).w
0000ef50 31c1eeb6	move.w	d1,(Camera_BG_Y_pos_diff).w
0000ef54 6100fc22	bsr.w	ScrollBG
0000ef58 8240	or.w	d0,d1
0000ef5a 66e2	bne.s	-
0000ef5c 11fc0000eebc	move.b	#0,(Screen_Shaking_Flag_HTZ).w
0000ef62 4e75	rts	
0000ef64 4e75	rts	
0000ef66 0c782b00ee00	cmpi.w	#$2B00,(Camera_X_pos).w
0000ef6c 6514	blo.s	+
0000ef6e 0c38000aeedf	cmpi.b	#$A,(Dynamic_Resize_Routine).w
0000ef74 6c0c	bge.s	+
0000ef76 11fc000aeedf	move.b	#$A,(Dynamic_Resize_Routine).w
0000ef7c 11fc0000eebc	move.b	#0,(Screen_Shaking_Flag_HTZ).w
0000ef82 4e75	rts	
0000ef84 0c782c50ee00	cmpi.w	#$2C50,(Camera_X_pos).w
0000ef8a 651c	blo.s	+
0000ef8c 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000ef92 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000ef98 31fc0480eec6	move.w	#$480,(Camera_Max_Y_pos_target).w
0000ef9e 31fc0480eefe	move.w	#$480,(Tails_Max_Y_pos).w
0000efa4 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000efa8 4e75	rts	
0000efaa 0c782edfee00	cmpi.w	#$2EDF,(Camera_X_pos).w
0000efb0 6534	blo.s	+
0000efb2 31fc2ee0eec8	move.w	#$2EE0,(Camera_Min_X_pos).w
0000efb8 31fc2f5eeeca	move.w	#$2F5E,(Camera_Max_X_pos).w
0000efbe 31fc2ee0eef8	move.w	#$2EE0,(Tails_Min_X_pos).w
0000efc4 31fc2f5eeefa	move.w	#$2F5E,(Tails_Max_X_pos).w
0000efca 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000efce 303c00f9	move.w	#MusID_FadeOut,d0
0000efd6 4238f73a	clr.b	(Boss_spawn_delay).w
0000efda 11fc0003f7aa	move.b	#3,(Current_Boss_ID).w
0000efe0 702a	moveq	#PLCID_HtzBoss,d0
0000efe6 4e75	rts	
0000efe8 0c780478ee04	cmpi.w	#$478,(Camera_Y_pos).w
0000efee 650c	blo.s	+
0000eff0 31fc0478eecc	move.w	#$478,(Camera_Min_Y_pos).w
0000eff6 31fc0478eefc	move.w	#$478,(Tails_Min_Y_pos).w
0000effc 5238f73a	addq.b	#1,(Boss_spawn_delay).w
0000f000 0c38005af73a	cmpi.b	#$5A,(Boss_spawn_delay).w
0000f006 6516	blo.s	++
0000f00c 6604	bne.s	+
0000f00e 12bc0052	move.b	#ObjID_HTZBoss,id(a1)
0000f012 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f016 303c0093	move.w	#MusID_Boss,d0
0000f01e 4e75	rts	
0000f020 4a38f7a7	tst.b	(Boss_defeated_flag).w
0000f024 6732	beq.s	++
0000f026 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000f02c 31f8eecaeefa	move.w	(Camera_Max_X_pos).w,(Tails_Max_X_pos).w
0000f032 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000f038 0c7830e0ee00	cmpi.w	#$30E0,(Camera_X_pos).w
0000f03e 6518	blo.s	++
0000f040 0c780428eecc	cmpi.w	#$428,(Camera_Min_Y_pos).w
0000f046 6504	blo.s	+
0000f048 5578eecc	subq.w	#2,(Camera_Min_Y_pos).w
0000f04c 0c780430eec6	cmpi.w	#$430,(Camera_Max_Y_pos_target).w
0000f052 6504	blo.s	+
0000f054 5578eec6	subq.w	#2,(Camera_Max_Y_pos_target).w
0000f058 4e75	rts	
0000f05a 4e75	rts	
0000f05c 4e75	rts	
0000f05e 4a38fe11	tst.b	(Current_Act).w
0000f062 6602	bne.s	LevEvents_OOZ2
0000f064 4e75	rts	
0000f066 7000	moveq	#0,d0
0000f068 1038eedf	move.b	(Dynamic_Resize_Routine).w,d0
0000f06c 303b0006	move.w	LevEvents_OOZ2_Index(pc,d0.w),d0
0000f070 4efb0002	jmp	LevEvents_OOZ2_Index(pc,d0.w)
0000f07c 0c782668ee00	cmpi.w	#$2668,(Camera_X_pos).w
0000f082 6522	blo.s	+
0000f084 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000f08a 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000f090 31fc02d8b38c	move.w	#$2D8,(Oil+y_pos).w
0000f096 31fc01e0eec6	move.w	#$1E0,(Camera_Max_Y_pos_target).w
0000f09c 31fc01e0eefe	move.w	#$1E0,(Tails_Max_Y_pos).w
0000f0a2 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f0a6 4e75	rts	
0000f0a8 0c782880ee00	cmpi.w	#$2880,(Camera_X_pos).w
0000f0ae 653a	blo.s	+
0000f0b0 31fc2880eec8	move.w	#$2880,(Camera_Min_X_pos).w
0000f0b6 31fc28c0eeca	move.w	#$28C0,(Camera_Max_X_pos).w
0000f0bc 31fc2880eef8	move.w	#$2880,(Tails_Min_X_pos).w
0000f0c2 31fc28c0eefa	move.w	#$28C0,(Tails_Max_X_pos).w
0000f0c8 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f0cc 303c00f9	move.w	#MusID_FadeOut,d0
0000f0d4 4238f73a	clr.b	(Boss_spawn_delay).w
0000f0d8 11fc0008f7aa	move.b	#8,(Current_Boss_ID).w
0000f0de 702f	moveq	#PLCID_OozBoss,d0
0000f0e4 7025	moveq	#PalID_OOZ_B,d0
0000f0ea 4e75	rts	
0000f0ec 0c7801d8ee04	cmpi.w	#$1D8,(Camera_Y_pos).w
0000f0f2 650c	blo.s	+
0000f0f4 31fc01d8eecc	move.w	#$1D8,(Camera_Min_Y_pos).w
0000f0fa 31fc01d8eefc	move.w	#$1D8,(Tails_Min_Y_pos).w
0000f100 5238f73a	addq.b	#1,(Boss_spawn_delay).w
0000f104 0c38005af73a	cmpi.b	#$5A,(Boss_spawn_delay).w
0000f10a 6516	blo.s	++
0000f110 6604	bne.s	+
0000f112 12bc0055	move.b	#ObjID_OOZBoss,id(a1)
0000f116 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f11a 303c0093	move.w	#MusID_Boss,d0
0000f122 4e75	rts	
0000f124 4a38f7a7	tst.b	(Boss_defeated_flag).w
0000f128 6712	beq.s	+
0000f12a 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000f130 31f8eecaeefa	move.w	(Camera_Max_X_pos).w,(Tails_Max_X_pos).w
0000f136 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000f13c 4e75	rts	
0000f13e 4a38fe11	tst.b	(Current_Act).w
0000f142 6602	bne.s	LevEvents_MCZ2
0000f144 4e75	rts	
0000f146 7000	moveq	#0,d0
0000f148 1038eedf	move.b	(Dynamic_Resize_Routine).w,d0
0000f14c 303b0006	move.w	LevEvents_MCZ2_Index(pc,d0.w),d0
0000f150 4efb0002	jmp	LevEvents_MCZ2_Index(pc,d0.w)
0000f15c 4a78ffd8	tst.w	(Two_player_mode).w
0000f160 6626	bne.s	++
0000f162 0c782080ee00	cmpi.w	#$2080,(Camera_X_pos).w
0000f168 651c	blo.s	+
0000f16a 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000f170 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000f176 31fc05d0eec6	move.w	#$5D0,(Camera_Max_Y_pos_target).w
0000f17c 31fc05d0eefe	move.w	#$5D0,(Tails_Max_Y_pos).w
0000f182 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f186 4e75	rts	
0000f188 31fc2100eeca	move.w	#$2100,(Camera_Max_X_pos).w
0000f18e 31fc2100eefa	move.w	#$2100,(Tails_Max_X_pos).w
0000f194 4e75	rts	
0000f196 0c7820f0ee00	cmpi.w	#$20F0,(Camera_X_pos).w
0000f19c 6566	blo.s	+
0000f19e 31fc20f0eeca	move.w	#$20F0,(Camera_Max_X_pos).w
0000f1a4 31fc20f0eec8	move.w	#$20F0,(Camera_Min_X_pos).w
0000f1aa 31fc20f0eefa	move.w	#$20F0,(Tails_Max_X_pos).w
0000f1b0 31fc20f0eef8	move.w	#$20F0,(Tails_Min_X_pos).w
0000f1b6 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f1ba 303c00f9	move.w	#MusID_FadeOut,d0
0000f1c2 4238f73a	clr.b	(Boss_spawn_delay).w
0000f1c6 23fc6c00000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtUnc_FallingRocks),VRAM,WRITE),(VDP_control_port).l
0000f1d0 4df900c00000	lea	(VDP_data_port).l,a6
0000f1d6 45f9000894e4	lea	(ArtUnc_FallingRocks).l,a2
0000f1dc 7007	moveq	#7,d0
0000f1de 2c9a	move.l	(a2)+,(a6)
0000f1e0 2c9a	move.l	(a2)+,(a6)
0000f1e2 2c9a	move.l	(a2)+,(a6)
0000f1e4 2c9a	move.l	(a2)+,(a6)
0000f1e6 2c9a	move.l	(a2)+,(a6)
0000f1e8 2c9a	move.l	(a2)+,(a6)
0000f1ea 2c9a	move.l	(a2)+,(a6)
0000f1ec 2c9a	move.l	(a2)+,(a6)
0000f1ee 51c8ffee	dbf	d0,-
0000f1f2 11fc0005f7aa	move.b	#5,(Current_Boss_ID).w
0000f1f8 702c	moveq	#PLCID_MczBoss,d0
0000f1fe 7019	moveq	#PalID_MCZ_B,d0
0000f204 4e75	rts	
0000f206 0c7805c8ee04	cmpi.w	#$5C8,(Camera_Y_pos).w
0000f20c 650c	blo.s	+
0000f20e 31fc05c8eecc	move.w	#$5C8,(Camera_Min_Y_pos).w
0000f214 31fc05c8eefc	move.w	#$5C8,(Tails_Min_Y_pos).w
0000f21a 5238f73a	addq.b	#1,(Boss_spawn_delay).w
0000f21e 0c38005af73a	cmpi.b	#$5A,(Boss_spawn_delay).w
0000f224 6516	blo.s	++
0000f22a 6604	bne.s	+
0000f22c 12bc0057	move.b	#ObjID_MCZBoss,id(a1)
0000f230 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f234 303c0093	move.w	#MusID_Boss,d0
0000f23c 4e75	rts	
0000f23e 4a38eebd	tst.b	(Screen_Shaking_Flag).w
0000f242 6712	beq.s	+
0000f244 3038fe04	move.w	(Level_frame_counter).w,d0
0000f248 0240001f	andi.w	#$1F,d0
0000f24c 6608	bne.s	+
0000f24e 303c00e1	move.w	#SndID_Rumbling2,d0
0000f256 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000f25c 31f8eecaeefa	move.w	(Camera_Max_X_pos).w,(Tails_Max_X_pos).w
0000f262 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000f268 4e75	rts	
0000f26a 4eb90002bf24	jsr	(SlotMachine).l
0000f270 4a38fe11	tst.b	(Current_Act).w
0000f274 6602	bne.s	LevEvents_CNZ2
0000f276 4e75	rts	
0000f278 7000	moveq	#0,d0
0000f27a 1038eedf	move.b	(Dynamic_Resize_Routine).w,d0
0000f27e 303b0006	move.w	LevEvents_CNZ2_Index(pc,d0.w),d0
0000f282 4efb0002	jmp	LevEvents_CNZ2_Index(pc,d0.w)
0000f28e 4a78ffd8	tst.w	(Two_player_mode).w
0000f292 662c	bne.s	++
0000f294 0c7827c0ee00	cmpi.w	#$27C0,(Camera_X_pos).w
0000f29a 6522	blo.s	+
0000f29c 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000f2a2 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000f2a8 31fc062eeec6	move.w	#$62E,(Camera_Max_Y_pos_target).w
0000f2ae 31fc062eeefe	move.w	#$62E,(Tails_Max_Y_pos).w
0000f2b4 11fc00f98c54	move.b	#$F9,(Level_Layout+$C54).w
0000f2ba 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f2be 4e75	rts	
0000f2c0 31fc26a0eeca	move.w	#$26A0,(Camera_Max_X_pos).w
0000f2c6 31fc26a0eefa	move.w	#$26A0,(Tails_Max_X_pos).w
0000f2cc 4e75	rts	
0000f2ce 0c782890ee00	cmpi.w	#$2890,(Camera_X_pos).w
0000f2d4 6540	blo.s	+
0000f2d6 11fc00f98c50	move.b	#$F9,(Level_Layout+$C50).w
0000f2dc 31fc2860eec8	move.w	#$2860,(Camera_Min_X_pos).w
0000f2e2 31fc28e0eeca	move.w	#$28E0,(Camera_Max_X_pos).w
0000f2e8 31fc2860eef8	move.w	#$2860,(Tails_Min_X_pos).w
0000f2ee 31fc28e0eefa	move.w	#$28E0,(Tails_Max_X_pos).w
0000f2f4 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f2f8 303c00f9	move.w	#MusID_FadeOut,d0
0000f300 4238f73a	clr.b	(Boss_spawn_delay).w
0000f304 11fc0006f7aa	move.b	#6,(Current_Boss_ID).w
0000f30a 702d	moveq	#PLCID_CnzBoss,d0
0000f310 701a	moveq	#PalID_CNZ_B,d0
0000f316 4e75	rts	
0000f318 0c7804e0ee04	cmpi.w	#$4E0,(Camera_Y_pos).w
0000f31e 650c	blo.s	+
0000f320 31fc04e0eecc	move.w	#$4E0,(Camera_Min_Y_pos).w
0000f326 31fc04e0eefc	move.w	#$4E0,(Tails_Min_Y_pos).w
0000f32c 5238f73a	addq.b	#1,(Boss_spawn_delay).w
0000f330 0c38005af73a	cmpi.b	#$5A,(Boss_spawn_delay).w
0000f336 6516	blo.s	++
0000f33c 6604	bne.s	+
0000f33e 12bc0051	move.b	#ObjID_CNZBoss,id(a1)
0000f342 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f346 303c0093	move.w	#MusID_Boss,d0
0000f34e 4e75	rts	
0000f350 0c782a00ee00	cmpi.w	#$2A00,(Camera_X_pos).w
0000f356 651e	blo.s	+
0000f358 31fc05d0eec6	move.w	#$5D0,(Camera_Max_Y_pos_target).w
0000f35e 31fc05d0eefe	move.w	#$5D0,(Tails_Max_Y_pos).w
0000f364 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000f36a 31f8eecaeefa	move.w	(Camera_Max_X_pos).w,(Tails_Max_X_pos).w
0000f370 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000f376 4e75	rts	
0000f378 4a38fe11	tst.b	(Current_Act).w
0000f37c 6602	bne.s	LevEvents_CPZ2
0000f37e 4e75	rts	
0000f380 7000	moveq	#0,d0
0000f382 1038eedf	move.b	(Dynamic_Resize_Routine).w,d0
0000f386 303b0006	move.w	LevEvents_CPZ2_Index(pc,d0.w),d0
0000f38a 4efb0002	jmp	LevEvents_CPZ2_Index(pc,d0.w)
0000f396 0c782680ee00	cmpi.w	#$2680,(Camera_X_pos).w
0000f39c 651c	blo.s	+
0000f39e 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000f3a4 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000f3aa 31fc0450eec6	move.w	#$450,(Camera_Max_Y_pos_target).w
0000f3b0 31fc0450eefe	move.w	#$450,(Tails_Max_Y_pos).w
0000f3b6 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f3ba 4e75	rts	
0000f3bc 0c782a20ee00	cmpi.w	#$2A20,(Camera_X_pos).w
0000f3c2 6534	blo.s	+
0000f3c4 31fc2a20eec8	move.w	#$2A20,(Camera_Min_X_pos).w
0000f3ca 31fc2a20eeca	move.w	#$2A20,(Camera_Max_X_pos).w
0000f3d0 31fc2a20eef8	move.w	#$2A20,(Tails_Min_X_pos).w
0000f3d6 31fc2a20eefa	move.w	#$2A20,(Tails_Max_X_pos).w
0000f3dc 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f3e0 303c00f9	move.w	#MusID_FadeOut,d0
0000f3e8 4238f73a	clr.b	(Boss_spawn_delay).w
0000f3ec 11fc0001f7aa	move.b	#1,(Current_Boss_ID).w
0000f3f2 7028	moveq	#PLCID_CpzBoss,d0
0000f3f8 4e75	rts	
0000f3fa 0c780448ee04	cmpi.w	#$448,(Camera_Y_pos).w
0000f400 650c	blo.s	+
0000f402 31fc0448eecc	move.w	#$448,(Camera_Min_Y_pos).w
0000f408 31fc0448eefc	move.w	#$448,(Tails_Min_Y_pos).w
0000f40e 5238f73a	addq.b	#1,(Boss_spawn_delay).w
0000f412 0c38005af73a	cmpi.b	#$5A,(Boss_spawn_delay).w
0000f418 6516	blo.s	++
0000f41e 6604	bne.s	+
0000f420 12bc005d	move.b	#ObjID_CPZBoss,id(a1)
0000f424 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f428 303c0093	move.w	#MusID_Boss,d0
0000f430 4e75	rts	
0000f432 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000f438 31f8eecaeefa	move.w	(Camera_Max_X_pos).w,(Tails_Max_X_pos).w
0000f43e 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000f444 4e75	rts	
0000f446 7000	moveq	#0,d0
0000f448 1038eedf	move.b	(Dynamic_Resize_Routine).w,d0
0000f44c 303b0006	move.w	LevEvents_DEZ_Index(pc,d0.w),d0
0000f450 4efb0002	jmp	LevEvents_DEZ_Index(pc,d0.w)
0000f45e 303c0140	move.w	#320,d0
0000f462 b078ee00	cmp.w	(Camera_X_pos).w,d0
0000f466 6226	bhi.s	+
0000f468 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f470 661c	bne.s	+
0000f472 12bc00af	move.b	#ObjID_MechaSonic,id(a1)
0000f476 137c00480028	move.b	#$48,subtype(a1)
0000f47c 337c03480008	move.w	#$348,x_pos(a1)
0000f482 337c00a0000c	move.w	#$A0,y_pos(a1)
0000f488 7030	moveq	#PLCID_FieryExplosion,d0
0000f48e 4e75	rts	
0000f490 4e75	rts	
0000f492 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000f498 0c780300ee00	cmpi.w	#$300,(Camera_X_pos).w
0000f49e 650a	blo.s	+
0000f4a0 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f4a4 7031	moveq	#PLCID_DezBoss,d0
0000f4aa 4e75	rts	
0000f4ac 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000f4b2 303c0680	move.w	#$680,d0
0000f4b6 b078ee00	cmp.w	(Camera_X_pos).w,d0
0000f4ba 6210	bhi.s	+
0000f4bc 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f4c0 31c0eec8	move.w	d0,(Camera_Min_X_pos).w
0000f4c4 064000c0	addi.w	#$C0,d0
0000f4c8 31c0eeca	move.w	d0,(Camera_Max_X_pos).w
0000f4cc 4e75	rts	
0000f4ce 4e75	rts	
0000f4d0 4a38fe11	tst.b	(Current_Act).w
0000f4d4 6602	bne.s	LevEvents_ARZ2
0000f4d6 4e75	rts	
0000f4d8 7000	moveq	#0,d0
0000f4da 1038eedf	move.b	(Dynamic_Resize_Routine).w,d0
0000f4de 303b0006	move.w	LevEvents_ARZ2_Index(pc,d0.w),d0
0000f4e2 4efb0002	jmp	LevEvents_ARZ2_Index(pc,d0.w)
0000f4ee 0c782810ee00	cmpi.w	#$2810,(Camera_X_pos).w
0000f4f4 6528	blo.s	+
0000f4f6 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000f4fc 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000f502 31fc0400eec6	move.w	#$400,(Camera_Max_Y_pos_target).w
0000f508 31fc0400eefe	move.w	#$400,(Tails_Max_Y_pos).w
0000f50e 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f512 11fc0004f7aa	move.b	#4,(Current_Boss_ID).w
0000f518 702b	moveq	#PLCID_ArzBoss,d0
0000f51e 4e75	rts	
0000f520 0c782a40ee00	cmpi.w	#$2A40,(Camera_X_pos).w
0000f526 6532	blo.s	+
0000f528 31fc2a40eeca	move.w	#$2A40,(Camera_Max_X_pos).w
0000f52e 31fc2a40eec8	move.w	#$2A40,(Camera_Min_X_pos).w
0000f534 31fc2a40eefa	move.w	#$2A40,(Tails_Max_X_pos).w
0000f53a 31fc2a40eef8	move.w	#$2A40,(Tails_Min_X_pos).w
0000f540 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f544 303c00f9	move.w	#MusID_FadeOut,d0
0000f54c 4238f73a	clr.b	(Boss_spawn_delay).w
0000f554 6604	bne.s	+
0000f556 12bc0089	move.b	#ObjID_ARZBoss,id(a1)
0000f55a 4e75	rts	
0000f55c 0c7803f8ee04	cmpi.w	#$3F8,(Camera_Y_pos).w
0000f562 650c	blo.s	+
0000f564 31fc03f8eecc	move.w	#$3F8,(Camera_Min_Y_pos).w
0000f56a 31fc03f8eefc	move.w	#$3F8,(Tails_Min_Y_pos).w
0000f570 5238f73a	addq.b	#1,(Boss_spawn_delay).w
0000f574 0c38005af73a	cmpi.b	#$5A,(Boss_spawn_delay).w
0000f57a 650c	blo.s	+
0000f57c 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f580 303c0093	move.w	#MusID_Boss,d0
0000f588 4e75	rts	
0000f58a 31f8ee00eec8	move.w	(Camera_X_pos).w,(Camera_Min_X_pos).w
0000f590 31f8eecaeefa	move.w	(Camera_Max_X_pos).w,(Tails_Max_X_pos).w
0000f596 31f8ee00eef8	move.w	(Camera_X_pos).w,(Tails_Min_X_pos).w
0000f59c 4e75	rts	
0000f59e 4a38fe11	tst.b	(Current_Act).w
0000f5a2 66000080	bne.w	LevEvents_SCZ2
0000f5a6 7000	moveq	#0,d0
0000f5a8 1038eedf	move.b	(Dynamic_Resize_Routine).w,d0
0000f5ac 303b0006	move.w	LevEvents_SCZ_Index(pc,d0.w),d0
0000f5b0 4efb0002	jmp	LevEvents_SCZ_Index(pc,d0.w)
0000f5be 31fc0001f736	move.w	#1,(Tornado_Velocity_X).w
0000f5c4 31fc0000f738	move.w	#0,(Tornado_Velocity_Y).w
0000f5ca 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f5ce 4e75	rts	
0000f5d0 0c781180ee00	cmpi.w	#$1180,(Camera_X_pos).w
0000f5d6 6516	blo.s	+
0000f5d8 31fcfffff736	move.w	#-1,(Tornado_Velocity_X).w
0000f5de 31fc0001f738	move.w	#1,(Tornado_Velocity_Y).w
0000f5e4 31fc0500eec6	move.w	#$500,(Camera_Max_Y_pos_target).w
0000f5ea 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f5ee 4e75	rts	
0000f5f0 0c780500ee04	cmpi.w	#$500,(Camera_Y_pos).w
0000f5f6 6510	blo.s	+
0000f5f8 31fc0001f736	move.w	#1,(Tornado_Velocity_X).w
0000f5fe 31fc0000f738	move.w	#0,(Tornado_Velocity_Y).w
0000f604 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f608 4e75	rts	
0000f60a 0c781400ee00	cmpi.w	#$1400,(Camera_X_pos).w
0000f610 6510	blo.s	LevEvents_SCZ_RoutineNull
0000f612 31fc0000f736	move.w	#0,(Tornado_Velocity_X).w
0000f618 31fc0000f738	move.w	#0,(Tornado_Velocity_Y).w
0000f61e 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
0000f622 4e75	rts	
0000f624 4e75	rts	
0000f626 3038ff90	move.w	(Level_Music).w,d0
0000f62e 7000	moveq	#0,d0
0000f630 1038fe10	move.b	(Current_Zone).w,d0
0000f634 45f900013f62	lea	(Animal_PLCTable).l,a2
0000f63a 10320000	move.b	(a2,d0.w),d0
0000f642 7041	moveq	#PLCID_Explosion,d0
0000f648 4e75	rts	
0000f64a 4e71	nop	
0000f64c 4ef900017fda	jmp	(extractJmpToName("JmpTo_AllocateObject")).l
0000f652 4ef900001370	jmp	(extractJmpToName("JmpTo3_PlaySound")).l
0000f658 4ef90000272e	jmp	(extractJmpToName("JmpTo2_PalLoad_Now")).l
0000f65e 4ef90000161e	jmp	(extractJmpToName("JmpTo2_LoadPLC")).l
0000f664 4ef90000135e	jmp	(extractJmpToName("JmpTo3_PlayMusic")).l
0000f66c 082800060001	btst	#render_flags.multi_sprite,render_flags(a0)
0000f672 66000010	bne.w	+
0000f676 7000	moveq	#0,d0
0000f678 10280024	move.b	routine(a0),d0
0000f67c 323b000e	move.w	Obj11_Index(pc,d0.w),d1
0000f680 4efb100a	jmp	Obj11_Index(pc,d1.w)
0000f684 303c0180	move.w	#object_display_list_size*3,d0
0000f688 60006ea6	bra.w	DisplaySprite3
0000f694 54280024	addq.b	#2,routine(a0)
0000f698 217c0000fc700004	move.l	#Obj11_MapUnc_FC70,mappings(a0)
0000f6a0 317c43b60002	move.w	#make_art_tile(ArtTile_ArtNem_EHZ_Bridge,2,0),art_tile(a0)
0000f6a6 117c00030018	move.b	#3,priority(a0)
0000f6ac 0c380008fe10	cmpi.b	#hidden_palace_zone,(Current_Zone).w
0000f6b2 6612	bne.s	+
0000f6b4 58280024	addq.b	#4,routine(a0)
0000f6b8 217c0000fc280004	move.l	#Obj11_MapUnc_FC28,mappings(a0)
0000f6c0 317c63000002	move.w	#make_art_tile(ArtTile_ArtNem_HPZ_Bridge,3,0),art_tile(a0)
0000f6c6 610076a6	bsr.w	Adjust2PArtPointer
0000f6ca 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0000f6d0 117c00800019	move.b	#$80,width_pixels(a0)
0000f6d6 3428000c	move.w	y_pos(a0),d2
0000f6da 3142003c	move.w	d2,objoff_3C(a0)
0000f6de 36280008	move.w	x_pos(a0),d3
0000f6e2 45e80028	lea	subtype(a0),a2
0000f6e6 7200	moveq	#0,d1
0000f6e8 1212	move.b	(a2),d1
0000f6ea 3001	move.w	d1,d0
0000f6ec e248	lsr.w	#1,d0
0000f6ee e948	lsl.w	#4,d0
0000f6f0 9640	sub.w	d0,d3
0000f6f2 4841	swap	d1
0000f6f4 323c0008	move.w	#8,d1
0000f6f8 612e	bsr.s	Obj11_MakeBdgSegment
0000f6fa 30290028	move.w	sub6_x_pos(a1),d0
0000f6fe 5140	subq.w	#8,d0
0000f700 33400008	move.w	d0,x_pos(a1)
0000f704 21490030	move.l	a1,Obj11_child1(a0)
0000f708 4841	swap	d1
0000f70a 5141	subq.w	#8,d1
0000f70c 6318	bls.s	+
0000f70e 3801	move.w	d1,d4
0000f710 6116	bsr.s	Obj11_MakeBdgSegment
0000f712 21490034	move.l	a1,Obj11_child2(a0)
0000f716 3004	move.w	d4,d0
0000f718 d040	add.w	d0,d0
0000f71a d044	add.w	d4,d0
0000f71c 30310010	move.w	sub2_x_pos(a1,d0.w),d0
0000f720 5140	subq.w	#8,d0
0000f722 33400008	move.w	d0,x_pos(a1)
0000f726 6052	bra.s	Obj11_EHZ
0000f72c 664a	bne.s	+
0000f734 336800080008	move.w	x_pos(a0),x_pos(a1)
0000f73a 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0000f740 236800040004	move.l	mappings(a0),mappings(a1)
0000f746 336800020002	move.w	art_tile(a0),art_tile(a1)
0000f74c 136800010001	move.b	render_flags(a0),render_flags(a1)
0000f752 08e900060001	bset	#render_flags.multi_sprite,render_flags(a1)
0000f758 137c0040000e	move.b	#$40,mainspr_width(a1)
0000f75e 1341000f	move.b	d1,mainspr_childsprites(a1)
0000f762 5301	subq.b	#1,d1
0000f764 45e90010	lea	subspr_data(a1),a2
0000f76a 34c2	move.w	d2,(a2)+
0000f76c 34fc0000	move.w	#0,(a2)+
0000f770 06430010	addi.w	#$10,d3
0000f774 51c9fff2	dbf	d1,-
0000f778 4e75	rts	
0000f77a 10280022	move.b	status(a0),d0
0000f77e 02000018	andi.b	#standing_mask,d0
0000f782 660c	bne.s	+
0000f784 4a28003e	tst.b	objoff_3E(a0)
0000f788 6732	beq.s	loc_F7BC
0000f78a 5928003e	subq.b	#4,objoff_3E(a0)
0000f78e 6028	bra.s	loc_F7B8
0000f790 02000010	andi.b	#p2_standing,d0
0000f794 6716	beq.s	++
0000f796 1028003f	move.b	objoff_3F(a0),d0
0000f79a 9028003b	sub.b	objoff_3B(a0),d0
0000f79e 670c	beq.s	++
0000f7a0 6406	bcc.s	+
0000f7a2 5228003f	addq.b	#1,objoff_3F(a0)
0000f7a6 6004	bra.s	++
0000f7a8 5328003f	subq.b	#1,objoff_3F(a0)
0000f7ac 0c280040003e	cmpi.b	#$40,objoff_3E(a0)
0000f7b2 6704	beq.s	loc_F7B8
0000f7b4 5828003e	addq.b	#4,objoff_3E(a0)
0000f7b8 6100022e	bsr.w	Obj11_Depress
0000f7bc 7200	moveq	#0,d1
0000f7be 12280028	move.b	subtype(a0),d1
0000f7c2 e749	lsl.w	#3,d1
0000f7c4 3401	move.w	d1,d2
0000f7c6 5041	addq.w	#8,d1
0000f7c8 d442	add.w	d2,d2
0000f7ca 7608	moveq	#8,d3
0000f7cc 38280008	move.w	x_pos(a0),d4
0000f7d0 610000a0	bsr.w	sub_F872
0000f7d4 4a78ffd8	tst.w	(Two_player_mode).w
0000f7d8 6702	beq.s	+
0000f7da 4e75	rts	
0000f7dc 30280008	move.w	x_pos(a0),d0
0000f7e0 0240ff80	andi.w	#$FF80,d0
0000f7e4 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
0000f7e8 0c400280	cmpi.w	#$280,d0
0000f7ec 6202	bhi.s	+
0000f7ee 4e75	rts	
0000f7f0 22680030	movea.l	Obj11_child1(a0),a1
0000f7f4 61006cf2	bsr.w	DeleteObject2
0000f7f8 0c2800080028	cmpi.b	#8,subtype(a0)
0000f7fe 6308	bls.s	+
0000f800 22680034	movea.l	Obj11_child2(a0),a1
0000f804 61006ce2	bsr.w	DeleteObject2
0000f808 60006cdc	bra.w	DeleteObject
0000f80c 60006ce6	bra.w	DisplaySprite
0000f810 10280022	move.b	status(a0),d0
0000f814 02000018	andi.b	#standing_mask,d0
0000f818 660c	bne.s	+
0000f81a 4a28003e	tst.b	objoff_3E(a0)
0000f81e 6732	beq.s	loc_F852
0000f820 5928003e	subq.b	#4,objoff_3E(a0)
0000f824 6028	bra.s	loc_F84E
0000f826 02000010	andi.b	#p2_standing,d0
0000f82a 6716	beq.s	++
0000f82c 1028003f	move.b	objoff_3F(a0),d0
0000f830 9028003b	sub.b	objoff_3B(a0),d0
0000f834 670c	beq.s	++
0000f836 6406	bcc.s	+
0000f838 5228003f	addq.b	#1,objoff_3F(a0)
0000f83c 6004	bra.s	++
0000f83e 5328003f	subq.b	#1,objoff_3F(a0)
0000f842 0c280040003e	cmpi.b	#$40,objoff_3E(a0)
0000f848 6704	beq.s	loc_F84E
0000f84a 5828003e	addq.b	#4,objoff_3E(a0)
0000f84e 61000198	bsr.w	Obj11_Depress
0000f852 7200	moveq	#0,d1
0000f854 12280028	move.b	subtype(a0),d1
0000f858 e749	lsl.w	#3,d1
0000f85a 3401	move.w	d1,d2
0000f85c 5041	addq.w	#8,d1
0000f85e d442	add.w	d2,d2
0000f860 7608	moveq	#8,d3
0000f862 38280008	move.w	x_pos(a0),d4
0000f866 6100000a	bsr.w	sub_F872
0000f86a 610000a6	bsr.w	sub_F912
0000f86e 6000ff64	bra.w	Obj11_Unload
0000f872 43f8b040	lea	(Sidekick).w,a1
0000f876 7c04	moveq	#p2_standing_bit,d6
0000f878 7a3b	moveq	#objoff_3B,d5
0000f87a 48e77800	movem.l	d1-d4,-(sp)
0000f87e 610c	bsr.s	+
0000f880 4cdf001e	movem.l	(sp)+,d1-d4
0000f884 43f8b000	lea	(MainCharacter).w,a1
0000f888 5306	subq.b	#p2_standing_bit-p1_standing_bit,d6
0000f88a 7a3f	moveq	#objoff_3F,d5
0000f88c 0d280022	btst	d6,status(a0)
0000f890 675e	beq.s	loc_F8F0
0000f892 082900010022	btst	#status.player.in_air,status(a1)
0000f898 6612	bne.s	+
0000f89a 7000	moveq	#0,d0
0000f89c 30290008	move.w	x_pos(a1),d0
0000f8a0 90680008	sub.w	x_pos(a0),d0
0000f8a4 d041	add.w	d1,d0
0000f8a6 6b04	bmi.s	+
0000f8a8 b042	cmp.w	d2,d0
0000f8aa 650e	blo.s	++
0000f8ac 08a900030022	bclr	#status.player.on_object,status(a1)
0000f8b2 0da80022	bclr	d6,status(a0)
0000f8b6 7800	moveq	#0,d4
0000f8b8 4e75	rts	
0000f8ba e848	lsr.w	#4,d0
0000f8bc 11805000	move.b	d0,(a0,d5.w)
0000f8c0 24680030	movea.l	Obj11_child1(a0),a2
0000f8c4 0c400008	cmpi.w	#8,d0
0000f8c8 6508	blo.s	+
0000f8ca 24680034	movea.l	Obj11_child2(a0),a2
0000f8d2 d040	add.w	d0,d0
0000f8d4 3200	move.w	d0,d1
0000f8d6 d040	add.w	d0,d0
0000f8d8 d041	add.w	d1,d0
0000f8da 30320012	move.w	sub2_y_pos(a2,d0.w),d0
0000f8de 5140	subq.w	#8,d0
0000f8e0 7200	moveq	#0,d1
0000f8e2 12290016	move.b	y_radius(a1),d1
0000f8e6 9041	sub.w	d1,d0
0000f8e8 3340000c	move.w	d0,y_pos(a1)
0000f8ec 7800	moveq	#0,d4
0000f8ee 4e75	rts	
0000f8f0 3f01	move.w	d1,-(sp)
0000f8f6 321f	move.w	(sp)+,d1
0000f8f8 0d280022	btst	d6,status(a0)
0000f8fc 6712	beq.s	+
0000f8fe 7000	moveq	#0,d0
0000f900 30290008	move.w	x_pos(a1),d0
0000f904 90680008	sub.w	x_pos(a0),d0
0000f908 d041	add.w	d1,d0
0000f90a e848	lsr.w	#4,d0
0000f90c 11805000	move.b	d0,(a0,d5.w)
0000f910 4e75	rts	
0000f912 7000	moveq	#0,d0
0000f914 4a78b010	tst.w	(MainCharacter+x_vel).w
0000f918 660a	bne.s	+
0000f91a 1038fe0f	move.b	(Vint_runcount+3).w,d0
0000f91e 0240001c	andi.w	#$1C,d0
0000f922 e248	lsr.w	#1,d0
0000f924 7400	moveq	#0,d2
0000f926 143b0029	move.b	byte_F950+1(pc,d0.w),d2
0000f92a 4842	swap	d2
0000f92c 143b0022	move.b	byte_F950(pc,d0.w),d2
0000f930 7000	moveq	#0,d0
0000f932 4a78b050	tst.w	(Sidekick+x_vel).w
0000f936 660a	bne.s	+
0000f938 1038fe0f	move.b	(Vint_runcount+3).w,d0
0000f93c 0240001c	andi.w	#$1C,d0
0000f940 e248	lsr.w	#1,d0
0000f942 7c00	moveq	#0,d6
0000f944 1c3b000b	move.b	byte_F950+1(pc,d0.w),d6
0000f948 4846	swap	d6
0000f94a 1c3b0004	move.b	byte_F950(pc,d0.w),d6
0000f94e 6010	bra.s	+
0000f960 76fe	moveq	#-2,d3
0000f962 78fe	moveq	#-2,d4
0000f964 10280022	move.b	status(a0),d0
0000f968 02000008	andi.b	#p1_standing,d0
0000f96c 6704	beq.s	+
0000f96e 1628003f	move.b	objoff_3F(a0),d3
0000f972 10280022	move.b	status(a0),d0
0000f976 02000010	andi.b	#p2_standing,d0
0000f97a 6704	beq.s	+
0000f97c 1828003b	move.b	objoff_3B(a0),d4
0000f980 22680030	movea.l	Obj11_child1(a0),a1
0000f984 45e90045	lea	sub9_mapframe+next_subspr(a1),a2
0000f988 43e90015	lea	sub2_mapframe(a1),a1
0000f98c 7200	moveq	#0,d1
0000f98e 12280028	move.b	subtype(a0),d1
0000f992 5301	subq.b	#1,d1
0000f994 7a00	moveq	#0,d5
0000f998 5343	subq.w	#1,d3
0000f99a ba03	cmp.b	d3,d5
0000f99c 6602	bne.s	+
0000f99e 3002	move.w	d2,d0
0000f9a0 5443	addq.w	#2,d3
0000f9a2 ba03	cmp.b	d3,d5
0000f9a4 6602	bne.s	+
0000f9a6 3002	move.w	d2,d0
0000f9a8 5343	subq.w	#1,d3
0000f9aa 5344	subq.w	#1,d4
0000f9ac ba04	cmp.b	d4,d5
0000f9ae 6602	bne.s	+
0000f9b0 3006	move.w	d6,d0
0000f9b2 5444	addq.w	#2,d4
0000f9b4 ba04	cmp.b	d4,d5
0000f9b6 6602	bne.s	+
0000f9b8 3006	move.w	d6,d0
0000f9ba 5344	subq.w	#1,d4
0000f9bc ba03	cmp.b	d3,d5
0000f9be 6606	bne.s	+
0000f9c0 4842	swap	d2
0000f9c2 3002	move.w	d2,d0
0000f9c4 4842	swap	d2
0000f9c6 ba04	cmp.b	d4,d5
0000f9c8 6606	bne.s	+
0000f9ca 4846	swap	d6
0000f9cc 3006	move.w	d6,d0
0000f9ce 4846	swap	d6
0000f9d0 1280	move.b	d0,(a1)
0000f9d2 5245	addq.w	#1,d5
0000f9d4 5c49	addq.w	#6,a1
0000f9d6 b2ca	cmpa.w	a2,a1
0000f9d8 6608	bne.s	+
0000f9da 22680034	movea.l	Obj11_child2(a0),a1
0000f9de 43e90015	lea	sub2_mapframe(a1),a1
0000f9e6 4e75	rts	
0000f9e8 1028003e	move.b	objoff_3E(a0),d0
0000f9f0 3800	move.w	d0,d4
0000f9f2 49f90000fb28	lea	(byte_FB28).l,a4
0000f9f8 7000	moveq	#0,d0
0000f9fa 10280028	move.b	subtype(a0),d0
0000f9fe e948	lsl.w	#4,d0
0000fa00 7600	moveq	#0,d3
0000fa02 1628003f	move.b	objoff_3F(a0),d3
0000fa06 3403	move.w	d3,d2
0000fa08 d640	add.w	d0,d3
0000fa0a 7a00	moveq	#0,d5
0000fa0c 4bf90000fa18	lea	(Obj11_DepressionOffsets-$80).l,a5
0000fa12 1a353000	move.b	(a5,d3.w),d5
0000fa16 0243000f	andi.w	#$F,d3
0000fa1a e94b	lsl.w	#4,d3
0000fa1c 47f43000	lea	(a4,d3.w),a3
0000fa20 22680030	movea.l	Obj11_child1(a0),a1
0000fa24 45e90042	lea	sub9_y_pos+next_subspr(a1),a2
0000fa28 43e90012	lea	sub2_y_pos(a1),a1
0000fa2e 101b	move.b	(a3)+,d0
0000fa30 5240	addq.w	#1,d0
0000fa32 c0c5	mulu.w	d5,d0
0000fa34 c0c4	mulu.w	d4,d0
0000fa36 4840	swap	d0
0000fa38 d068003c	add.w	objoff_3C(a0),d0
0000fa3c 3280	move.w	d0,(a1)
0000fa3e 5c49	addq.w	#6,a1
0000fa40 b2ca	cmpa.w	a2,a1
0000fa42 6608	bne.s	+
0000fa44 22680034	movea.l	Obj11_child2(a0),a1
0000fa48 43e90012	lea	sub2_y_pos(a1),a1
0000fa50 7000	moveq	#0,d0
0000fa52 10280028	move.b	subtype(a0),d0
0000fa56 7600	moveq	#0,d3
0000fa58 1628003f	move.b	objoff_3F(a0),d3
0000fa5c 5203	addq.b	#1,d3
0000fa5e 9600	sub.b	d0,d3
0000fa60 4403	neg.b	d3
0000fa62 6b32	bmi.s	++
0000fa64 3403	move.w	d3,d2
0000fa66 e94b	lsl.w	#4,d3
0000fa68 47f43000	lea	(a4,d3.w),a3
0000fa6c d6c2	adda.w	d2,a3
0000fa6e 5342	subq.w	#1,d2
0000fa70 6524	bcs.s	++
0000fa74 1023	move.b	-(a3),d0
0000fa76 5240	addq.w	#1,d0
0000fa78 c0c5	mulu.w	d5,d0
0000fa7a c0c4	mulu.w	d4,d0
0000fa7c 4840	swap	d0
0000fa7e d068003c	add.w	objoff_3C(a0),d0
0000fa82 3280	move.w	d0,(a1)
0000fa84 5c49	addq.w	#6,a1
0000fa86 b2ca	cmpa.w	a2,a1
0000fa88 6608	bne.s	+
0000fa8a 22680034	movea.l	Obj11_child2(a0),a1
0000fa8e 43e90012	lea	sub2_y_pos(a1),a1
0000fa96 4e75	rts	
0000fc88 4ef900017ffa	jmp	(extractJmpToName("JmpTo_AllocateObjectAfterCurrent")).l
0000fc8e 4ef900019d9c	jmp	(extractJmpToName("JmpTo_PlatformObject11_cont")).l
0000fc94 4ef9000033b6	jmp	(extractJmpToName("JmpTo_CalcSine")).l
0000fc9c 082800060001	btst	#render_flags.multi_sprite,render_flags(a0)
0000fca2 66000010	bne.w	+
0000fca6 7000	moveq	#0,d0
0000fca8 10280024	move.b	routine(a0),d0
0000fcac 323b000e	move.w	Obj15_Index(pc,d0.w),d1
0000fcb0 4efb100a	jmp	Obj15_Index(pc,d1.w)
0000fcb4 303c0200	move.w	#object_display_list_size*4,d0
0000fcb8 60006876	bra.w	DisplaySprite3
0000fcca 54280024	addq.b	#2,routine(a0)
0000fcce 217c000101e80004	move.l	#Obj15_MapUnc_101E8,mappings(a0)
0000fcd6 317c43e30002	move.w	#make_art_tile(ArtTile_ArtNem_OOZSwingPlat,2,0),art_tile(a0)
0000fcdc 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0000fce2 117c00030018	move.b	#3,priority(a0)
0000fce8 117c00200019	move.b	#$20,width_pixels(a0)
0000fcee 117c00100016	move.b	#$10,y_radius(a0)
0000fcf4 3168000c0038	move.w	y_pos(a0),objoff_38(a0)
0000fcfa 31680008003a	move.w	x_pos(a0),objoff_3A(a0)
0000fd00 0c38000bfe10	cmpi.b	#mystic_cave_zone,(Current_Zone).w
0000fd06 661a	bne.s	+
0000fd08 217c000102560004	move.l	#Obj15_Obj7A_MapUnc_10256,mappings(a0)
0000fd10 317c00000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,0,0),art_tile(a0)
0000fd16 117c00180019	move.b	#$18,width_pixels(a0)
0000fd1c 117c00080016	move.b	#8,y_radius(a0)
0000fd22 0c38000ffe10	cmpi.b	#aquatic_ruin_zone,(Current_Zone).w
0000fd28 661a	bne.s	+
0000fd2a 217c0001021e0004	move.l	#Obj15_Obj83_MapUnc_1021E,mappings(a0)
0000fd32 317c00000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,0,0),art_tile(a0)
0000fd38 117c00200019	move.b	#$20,width_pixels(a0)
0000fd3e 117c00080016	move.b	#8,y_radius(a0)
0000fd44 61007028	bsr.w	Adjust2PArtPointer
0000fd48 7200	moveq	#0,d1
0000fd4a 12280028	move.b	subtype(a0),d1
0000fd4e 6a04	bpl.s	+
0000fd50 58280024	addq.b	#4,routine(a0)
0000fd54 1801	move.b	d1,d4
0000fd56 02040070	andi.b	#$70,d4
0000fd5a 0241000f	andi.w	#$F,d1
0000fd5e 34280008	move.w	x_pos(a0),d2
0000fd62 3628000c	move.w	y_pos(a0),d3
0000fd6a 660000b8	bne.w	+++
0000fd74 236800040004	move.l	mappings(a0),mappings(a1)
0000fd7a 336800020002	move.w	art_tile(a0),art_tile(a1)
0000fd80 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0000fd86 0c040020	cmpi.b	#$20,d4
0000fd8a 663a	bne.s	+
0000fd8c 137c00040024	move.b	#4,routine(a1)
0000fd92 137c00040018	move.b	#4,priority(a1)
0000fd98 137c00100019	move.b	#$10,width_pixels(a1)
0000fd9e 137c00500016	move.b	#$50,y_radius(a1)
0000fda4 08e900040001	bset	#render_flags.explicit_height,render_flags(a1)
0000fdaa 137c0003001a	move.b	#3,mapping_frame(a1)
0000fdb0 33420008	move.w	d2,x_pos(a1)
0000fdb4 06430040	addi.w	#$40,d3
0000fdb8 3343000c	move.w	d3,y_pos(a1)
0000fdbc 06430048	addi.w	#$48,d3
0000fdc0 3143000c	move.w	d3,y_pos(a0)
0000fdc4 605a	bra.s	++
0000fdc6 08e900060001	bset	#render_flags.multi_sprite,render_flags(a1)
0000fdcc 137c0048000e	move.b	#$48,mainspr_width(a1)
0000fdd2 1341000f	move.b	d1,mainspr_childsprites(a1)
0000fdd6 5301	subq.b	#1,d1
0000fdd8 45e90010	lea	subspr_data(a1),a2
0000fdde 34c3	move.w	d3,(a2)+
0000fde0 34fc0001	move.w	#1,(a2)+
0000fde4 06430010	addi.w	#$10,d3
0000fde8 51c9fff2	dbf	d1,-
0000fdec 137c00020015	move.b	#2,sub2_mapframe(a1)
0000fdf2 336900280008	move.w	sub6_x_pos(a1),x_pos(a1)
0000fdf8 3369002a000c	move.w	sub6_y_pos(a1),y_pos(a1)
0000fdfe 33420028	move.w	d2,sub6_x_pos(a1)
0000fe02 3343002a	move.w	d3,sub6_y_pos(a1)
0000fe06 137c0001000b	move.b	#1,mainspr_mapframe(a1)
0000fe10 3143000c	move.w	d3,y_pos(a0)
0000fe14 137c00500014	move.b	#$50,mainspr_height(a1)
0000fe1a 08e900040001	bset	#render_flags.explicit_height,render_flags(a1)
0000fe20 21490030	move.l	a1,objoff_30(a0)
0000fe24 317c80000026	move.w	#$8000,angle(a0)
0000fe2a 317c0000003e	move.w	#0,objoff_3E(a0)
0000fe30 12280028	move.b	subtype(a0),d1
0000fe34 02410070	andi.w	#$70,d1
0000fe38 11410028	move.b	d1,subtype(a0)
0000fe3c 0c010040	cmpi.b	#$40,d1
0000fe40 660e	bne.s	Obj15_State2
0000fe42 217c000102de0004	move.l	#Obj15_MapUnc_102DE,mappings(a0)
0000fe4a 117c00a70020	move.b	#$A7,collision_flags(a0)
0000fe50 3f280008	move.w	x_pos(a0),-(sp)
0000fe54 6100001a	bsr.w	sub_FE70
0000fe58 7200	moveq	#0,d1
0000fe5a 12280019	move.b	width_pixels(a0),d1
0000fe5e 7600	moveq	#0,d3
0000fe60 16280016	move.b	y_radius(a0),d3
0000fe64 5203	addq.b	#1,d3
0000fe66 381f	move.w	(sp)+,d4
0000fe6c 6000019e	bra.w	loc_1000C
0000fe70 7000	moveq	#0,d0
0000fe72 7200	moveq	#0,d1
0000fe74 1038fe78	move.b	(Oscillating_Data+$18).w,d0
0000fe78 12280028	move.b	subtype(a0),d1
0000fe7c 6744	beq.s	loc_FEC2
0000fe7e 0c010010	cmpi.b	#$10,d1
0000fe82 661a	bne.s	++
0000fe84 0c00003f	cmpi.b	#$3F,d0
0000fe88 6706	beq.s	+
0000fe8a 6436	bhs.s	loc_FEC2
0000fe8c 7040	moveq	#$40,d0
0000fe8e 6032	bra.s	loc_FEC2
0000fe90 303c00d7	move.w	#SndID_PlatformKnock,d0
0000fe94 4eb90000137c	jsr	(PlaySoundLocal).l
0000fe9a 7040	moveq	#$40,d0
0000fe9c 6024	bra.s	loc_FEC2
0000fe9e 0c010020	cmpi.b	#$20,d1
0000fea2 670000c8	beq.w	+++
0000fea6 0c010030	cmpi.b	#$30,d1
0000feaa 660c	bne.s	+
0000feac 0c000041	cmpi.b	#$41,d0
0000feb0 67de	beq.s	-
0000feb2 650e	blo.s	loc_FEC2
0000feb4 7040	moveq	#$40,d0
0000feb6 600a	bra.s	loc_FEC2
0000feb8 0c010040	cmpi.b	#$40,d1
0000febc 6604	bne.s	loc_FEC2
0000febe 610000ae	bsr.w	loc_FF6E
0000fec2 1228002e	move.b	objoff_2E(a0),d1
0000fec6 b200	cmp.b	d0,d1
0000fec8 670000a2	beq.w	++
0000fecc 1140002e	move.b	d0,objoff_2E(a0)
0000fed0 323c0080	move.w	#$80,d1
0000fed4 082800000022	btst	#status.npc.x_flip,status(a0)
0000feda 6704	beq.s	+
0000fedc 4440	neg.w	d0
0000fede d041	add.w	d1,d0
0000fee4 34280038	move.w	objoff_38(a0),d2
0000fee8 3628003a	move.w	objoff_3A(a0),d3
0000feec 7c00	moveq	#0,d6
0000feee 22680030	movea.l	objoff_30(a0),a1
0000fef2 1c29000f	move.b	mainspr_childsprites(a1),d6
0000fef6 5346	subq.w	#1,d6
0000fef8 6572	bcs.s	+
0000fefa 4840	swap	d0
0000fefc 4841	swap	d1
0000fefe e880	asr.l	#4,d0
0000ff00 e881	asr.l	#4,d1
0000ff02 7800	moveq	#0,d4
0000ff04 7a00	moveq	#0,d5
0000ff06 45e90010	lea	subspr_data(a1),a2
0000ff0e 4844	swap	d4
0000ff10 4845	swap	d5
0000ff12 d842	add.w	d2,d4
0000ff14 da43	add.w	d3,d5
0000ff16 34c5	move.w	d5,(a2)+
0000ff18 34c4	move.w	d4,(a2)+
0000ff1a 4cdf0030	movem.l	(sp)+,d4-d5
0000ff1e d880	add.l	d0,d4
0000ff20 da81	add.l	d1,d5
0000ff22 544a	addq.w	#next_subspr-4,a2
0000ff24 51ceffe4	dbf	d6,-
0000ff28 48e70c00	movem.l	d4-d5,-(sp)
0000ff2c 4844	swap	d4
0000ff2e 4845	swap	d5
0000ff30 d842	add.w	d2,d4
0000ff32 da43	add.w	d3,d5
0000ff34 34290028	move.w	sub6_x_pos(a1),d2
0000ff38 3629002a	move.w	sub6_y_pos(a1),d3
0000ff3c 33450028	move.w	d5,sub6_x_pos(a1)
0000ff40 3344002a	move.w	d4,sub6_y_pos(a1)
0000ff44 33420008	move.w	d2,x_pos(a1)
0000ff48 3343000c	move.w	d3,y_pos(a1)
0000ff4c 4cdf0030	movem.l	(sp)+,d4-d5
0000ff50 e280	asr.l	#1,d0
0000ff52 e281	asr.l	#1,d1
0000ff54 d880	add.l	d0,d4
0000ff56 da81	add.l	d1,d5
0000ff58 4844	swap	d4
0000ff5a 4845	swap	d5
0000ff5c d8680038	add.w	objoff_38(a0),d4
0000ff60 da68003a	add.w	objoff_3A(a0),d5
0000ff64 3144000c	move.w	d4,y_pos(a0)
0000ff68 31450008	move.w	d5,x_pos(a0)
0000ff6c 4e75	rts	
0000ff6e 4a680036	tst.w	objoff_36(a0)
0000ff72 6708	beq.s	+
0000ff74 53680036	subq.w	#1,objoff_36(a0)
0000ff78 6000008c	bra.w	loc_10006
0000ff7c 4a280034	tst.b	objoff_34(a0)
0000ff80 6620	bne.s	+
0000ff82 3038b008	move.w	(MainCharacter+x_pos).w,d0
0000ff86 9068003a	sub.w	objoff_3A(a0),d0
0000ff8a 06400020	addi.w	#$20,d0
0000ff8e 0c400040	cmpi.w	#$40,d0
0000ff92 6472	bhs.s	loc_10006
0000ff94 4a78fe08	tst.w	(Debug_placement_mode).w
0000ff98 6600006c	bne.w	loc_10006
0000ff9c 117c00010034	move.b	#1,objoff_34(a0)
0000ffa2 4a28003d	tst.b	objoff_3D(a0)
0000ffa6 6730	beq.s	+
0000ffa8 3028003e	move.w	objoff_3E(a0),d0
0000ffb0 3140003e	move.w	d0,objoff_3E(a0)
0000ffb4 d1680026	add.w	d0,angle(a0)
0000ffb8 0c400200	cmpi.w	#$200,d0
0000ffbc 6648	bne.s	loc_10006
0000ffbe 317c0000003e	move.w	#0,objoff_3E(a0)
0000ffc4 317c80000026	move.w	#$8000,angle(a0)
0000ffca 117c0000003d	move.b	#0,objoff_3D(a0)
0000ffd0 317c003c0036	move.w	#60,objoff_36(a0)
0000ffd6 602e	bra.s	loc_10006
0000ffd8 3028003e	move.w	objoff_3E(a0),d0
0000ffe0 3140003e	move.w	d0,objoff_3E(a0)
0000ffe4 d1680026	add.w	d0,angle(a0)
0000ffe8 0c40fe00	cmpi.w	#$FE00,d0
0000ffec 6618	bne.s	loc_10006
0000ffee 317c0000003e	move.w	#0,objoff_3E(a0)
0000fff4 317c40000026	move.w	#$4000,angle(a0)
0000fffa 117c0001003d	move.b	#1,objoff_3D(a0)
00010000 317c003c0036	move.w	#60,objoff_36(a0)
00010006 10280026	move.b	angle(a0),d0
0001000a 4e75	rts	
0001000c 4a78ffd8	tst.w	(Two_player_mode).w
00010010 6704	beq.s	+
00010012 600064e0	bra.w	DisplaySprite
00010016 3028003a	move.w	objoff_3A(a0),d0
0001001a 0240ff80	andi.w	#$FF80,d0
0001001e 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00010022 0c400280	cmpi.w	#$280,d0
00010026 62000006	bhi.w	+
0001002a 600064c8	bra.w	DisplaySprite
0001002e 22680030	movea.l	objoff_30(a0),a1
00010032 610064b4	bsr.w	DeleteObject2
00010036 600064ae	bra.w	DeleteObject
0001003a 600064b8	bra.w	DisplaySprite
0001003e 3f280008	move.w	x_pos(a0),-(sp)
00010042 6100fe2c	bsr.w	sub_FE70
00010046 7200	moveq	#0,d1
00010048 12280019	move.b	width_pixels(a0),d1
0001004c 7600	moveq	#0,d3
0001004e 16280016	move.b	y_radius(a0),d3
00010052 5203	addq.b	#1,d3
00010054 381f	move.w	(sp)+,d4
0001005a 10280022	move.b	status(a0),d0
0001005e 02000018	andi.b	#standing_mask,d0
00010062 67000090	beq.w	BranchTo_loc_1000C
00010066 4a38fe78	tst.b	(Oscillating_Data+$18).w
0001006a 66000088	bne.w	BranchTo_loc_1000C
0001006e 6100028e	bsr.w	JmpTo2_AllocateObjectAfterCurrent
00010072 6670	bne.s	loc_100E4
00010074 7000	moveq	#0,d0
00010076 323c000f	move.w	#bytesToLcnt(object_size),d1
00010080 5840	addq.w	#4,d0
00010082 51c9fff6	dbf	d1,-
00010086 137c000a0024	move.b	#$A,routine(a1)
0001008c 0c38000ffe10	cmpi.b	#aquatic_ruin_zone,(Current_Zone).w
00010092 6604	bne.s	+
00010094 54290024	addq.b	#2,routine(a1)
00010098 337c02000010	move.w	#$200,x_vel(a1)
0001009e 082800000022	btst	#status.npc.x_flip,status(a0)
000100a4 6704	beq.s	+
000100a6 44690010	neg.w	x_vel(a1)
000100aa 08e900010022	bset	#status.npc.y_flip,status(a1)
000100b0 3008	move.w	a0,d0
000100b2 0440b000	subi.w	#Object_RAM,d0
000100b6 ec48	lsr.w	#object_size_bits,d0
000100b8 0240007f	andi.w	#$7F,d0
000100bc 3209	move.w	a1,d1
000100be 0441b000	subi.w	#Object_RAM,d1
000100c2 ec49	lsr.w	#object_size_bits,d1
000100c4 0241007f	andi.w	#$7F,d1
000100c8 43f8b000	lea	(MainCharacter).w,a1
000100cc b029003d	cmp.b	interact(a1),d0
000100d0 6604	bne.s	+
000100d2 1341003d	move.b	d1,interact(a1)
000100d6 43f8b040	lea	(Sidekick).w,a1
000100da b029003d	cmp.b	interact(a1),d0
000100de 6604	bne.s	loc_100E4
000100e0 1341003d	move.b	d1,interact(a1)
000100e4 117c0003001a	move.b	#3,mapping_frame(a0)
000100ea 54280024	addq.b	#2,routine(a0)
000100ee 022800e70022	andi.b	#~standing_mask,status(a0)
000100f4 6000ff16	bra.w	loc_1000C
000100f8 6100fd76	bsr.w	sub_FE70
000100fc 6000ff0e	bra.w	loc_1000C
00010100 3f280008	move.w	x_pos(a0),-(sp)
00010104 082800010022	btst	#status.npc.y_flip,status(a0)
0001010a 6732	beq.s	+
0001010c 6100629e	bsr.w	ObjectMove
00010110 066800180012	addi.w	#$18,y_vel(a0)
00010116 0c680720000c	cmpi.w	#$720,y_pos(a0)
0001011c 6530	blo.s	++
0001011e 317c0720000c	move.w	#$720,y_pos(a0)
00010124 08a800010022	bclr	#status.npc.y_flip,status(a0)
0001012a 317c00000010	move.w	#0,x_vel(a0)
00010130 317c00000012	move.w	#0,y_vel(a0)
00010136 3168000c0038	move.w	y_pos(a0),objoff_38(a0)
0001013c 6010	bra.s	++
0001013e 7000	moveq	#0,d0
00010140 1038fe74	move.b	(Oscillating_Data+$14).w,d0
00010144 e248	lsr.w	#1,d0
00010146 d0680038	add.w	objoff_38(a0),d0
0001014a 3140000c	move.w	d0,y_pos(a0)
0001014e 7200	moveq	#0,d1
00010150 12280019	move.b	width_pixels(a0),d1
00010154 7600	moveq	#0,d3
00010156 16280016	move.b	y_radius(a0),d3
0001015a 5203	addq.b	#1,d3
0001015c 381f	move.w	(sp)+,d4
00010162 6000626e	bra.w	MarkObjGone
00010166 3f280008	move.w	x_pos(a0),-(sp)
0001016a 61006240	bsr.w	ObjectMove
0001016e 082800010022	btst	#status.npc.y_flip,status(a0)
00010174 672c	beq.s	+
00010176 066800180012	addi.w	#$18,y_vel(a0)
0001017c 3038f648	move.w	(Water_Level_2).w,d0
00010180 b068000c	cmp.w	y_pos(a0),d0
00010184 624a	bhi.s	++
00010186 3140000c	move.w	d0,y_pos(a0)
0001018a 31400038	move.w	d0,objoff_38(a0)
0001018e 08a800010022	bclr	#status.npc.y_flip,status(a0)
00010194 317c01000010	move.w	#$100,x_vel(a0)
0001019a 317c00000012	move.w	#0,y_vel(a0)
000101a0 602e	bra.s	++
000101a2 7000	moveq	#0,d0
000101a4 1038fe74	move.b	(Oscillating_Data+$14).w,d0
000101a8 e248	lsr.w	#1,d0
000101aa d0680038	add.w	objoff_38(a0),d0
000101ae 3140000c	move.w	d0,y_pos(a0)
000101b2 4a680010	tst.w	x_vel(a0)
000101b6 6718	beq.s	+
000101b8 7600	moveq	#0,d3
000101ba 16280019	move.b	width_pixels(a0),d3
000101c2 4a41	tst.w	d1
000101c4 6a0a	bpl.s	+
000101c6 d3680008	add.w	d1,x_pos(a0)
000101ca 317c00000010	move.w	#0,x_vel(a0)
000101d0 7200	moveq	#0,d1
000101d2 12280019	move.b	width_pixels(a0),d1
000101d6 7600	moveq	#0,d3
000101d8 16280016	move.b	y_radius(a0),d3
000101dc 5203	addq.b	#1,d3
000101de 381f	move.w	(sp)+,d4
000101e4 600061ec	bra.w	MarkObjGone
000102f6 4e71	nop	
000102f8 4ef900019ce2	jmp	(extractJmpToName("JmpTo_PlatformObject2")).l
000102fe 4ef900017ffa	jmp	(extractJmpToName("JmpTo2_AllocateObjectAfterCurrent")).l
00010304 4ef9000033b6	jmp	(extractJmpToName("JmpTo2_CalcSine")).l
0001030a 4ef90001ef00	jmp	(extractJmpToName("JmpTo_ObjCheckRightWallDist")).l
00010310 7000	moveq	#0,d0
00010312 10280024	move.b	routine(a0),d0
00010316 323b0006	move.w	Obj17_Index(pc,d0.w),d1
0001031a 4efb1002	jmp	Obj17_Index(pc,d1.w)
00010324 54280024	addq.b	#2,routine(a0)
00010328 217c000104520004	move.l	#Obj17_MapUnc_10452,mappings(a0)
00010330 317c43980002	move.w	#make_art_tile(ArtTile_ArtNem_GHZ_Spiked_Log,2,0),art_tile(a0)
00010336 61006a36	bsr.w	Adjust2PArtPointer
0001033a 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00010340 117c00030018	move.b	#3,priority(a0)
00010346 117c00080019	move.b	#8,width_pixels(a0)
0001034c 3428000c	move.w	y_pos(a0),d2
00010350 36280008	move.w	x_pos(a0),d3
00010358 45e80028	lea	subtype(a0),a2
0001035c 7200	moveq	#0,d1
0001035e 1212	move.b	(a2),d1
00010360 14fc0000	move.b	#0,(a2)+
00010364 3001	move.w	d1,d0
00010366 e248	lsr.w	#1,d0
00010368 e948	lsl.w	#4,d0
0001036a 9640	sub.w	d0,d3
0001036c 5501	subq.b	#2,d1
0001036e 6578	bcs.s	Obj17_Main
00010370 7c00	moveq	#0,d6
00010372 61007c86	bsr.w	AllocateObjectAfterCurrent
00010376 6670	bne.s	Obj17_Main
00010378 52280028	addq.b	#1,subtype(a0)
0001037c 3a09	move.w	a1,d5
0001037e 0445b000	subi.w	#Object_RAM,d5
00010382 ec4d	lsr.w	#object_size_bits,d5
00010384 0245007f	andi.w	#$7F,d5
00010388 14c5	move.b	d5,(a2)+
0001038a 137c00040024	move.b	#4,routine(a1)
00010394 3342000c	move.w	d2,y_pos(a1)
00010398 33430008	move.w	d3,x_pos(a1)
0001039c 236800040004	move.l	mappings(a0),mappings(a1)
000103a2 337c43980002	move.w	#make_art_tile(ArtTile_ArtNem_GHZ_Spiked_Log,2,0),art_tile(a1)
000103a8 610069e0	bsr.w	Adjust2PArtPointer2
000103ac 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
000103b2 137c00030018	move.b	#3,priority(a1)
000103b8 137c00080019	move.b	#8,width_pixels(a1)
000103be 1346003e	move.b	d6,objoff_3E(a1)
000103c2 5206	addq.b	#1,d6
000103c4 02060007	andi.b	#7,d6
000103c8 06430010	addi.w	#$10,d3
000103cc b6680008	cmp.w	x_pos(a0),d3
000103d0 6612	bne.s	+
000103d2 1146003e	move.b	d6,objoff_3E(a0)
000103d6 5206	addq.b	#1,d6
000103d8 02060007	andi.b	#7,d6
000103dc 06430010	addi.w	#$10,d3
000103e0 52280028	addq.b	#1,subtype(a0)
000103e8 61000040	bsr.w	Obj17_RotateSpike
000103ec 30280008	move.w	x_pos(a0),d0
000103f0 0240ff80	andi.w	#$FF80,d0
000103f4 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
000103f8 0c400280	cmpi.w	#$280,d0
000103fc 62000006	bhi.w	Obj17_DelAll
00010400 600060f2	bra.w	DisplaySprite
00010404 7400	moveq	#0,d2
00010406 45e80028	lea	subtype(a0),a2
0001040a 141a	move.b	(a2)+,d2
0001040c 5502	subq.b	#2,d2
0001040e 6516	bcs.s	BranchTo2_DeleteObject
00010410 7000	moveq	#0,d0
00010412 101a	move.b	(a2)+,d0
00010414 ed48	lsl.w	#object_size_bits,d0
00010416 0680ffffb000	addi.l	#Object_RAM,d0
0001041c 2240	movea.l	d0,a1
0001041e 610060c8	bsr.w	DeleteObject2
00010422 51caffec	dbf	d2,Obj17_DelLoop
00010426 600060be	bra.w	DeleteObject
0001042a 1038fea1	move.b	(Logspike_anim_frame).w,d0
0001042e 117c00000020	move.b	#0,collision_flags(a0)
00010434 d028003e	add.b	objoff_3E(a0),d0
00010438 02000007	andi.b	#7,d0
0001043c 1140001a	move.b	d0,mapping_frame(a0)
00010440 6606	bne.s	+
00010442 117c00840020	move.b	#%10000100,collision_flags(a0)
00010448 4e75	rts	
0001044a 6100ffde	bsr.w	Obj17_RotateSpike
0001044e 600060a4	bra.w	DisplaySprite
000104aa 4e71	nop	
000104ac 7000	moveq	#0,d0
000104ae 10280024	move.b	routine(a0),d0
000104b2 323b0006	move.w	Obj18_Index(pc,d0.w),d1
000104b6 4efb1002	jmp	Obj18_Index(pc,d1.w)
000104ce 54280024	addq.b	#2,routine(a0)
000104d2 7000	moveq	#0,d0
000104d4 10280028	move.b	subtype(a0),d0
000104d8 e648	lsr.w	#3,d0
000104da 0240000e	andi.w	#$E,d0
000104de 45fb00e4	lea	Obj18_InitData(pc,d0.w),a2
000104e2 115a0019	move.b	(a2)+,width_pixels(a0)
000104e6 115a001a	move.b	(a2)+,mapping_frame(a0)
000104ea 217c000107f60004	move.l	#Obj18_MapUnc_107F6,mappings(a0)
000104f2 317c40000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,2,0),art_tile(a0)
000104f8 0c38000ffe10	cmpi.b	#aquatic_ruin_zone,(Current_Zone).w
000104fe 660e	bne.s	+
00010500 217c0001084e0004	move.l	#Obj18_MapUnc_1084E,mappings(a0)
00010508 317c40000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,2,0),art_tile(a0)
0001050e 6100685e	bsr.w	Adjust2PArtPointer
00010512 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00010518 117c00040018	move.b	#4,priority(a0)
0001051e 3168000c002c	move.w	y_pos(a0),objoff_2C(a0)
00010524 3168000c0034	move.w	y_pos(a0),objoff_34(a0)
0001052a 316800080032	move.w	x_pos(a0),objoff_32(a0)
00010530 317c00800026	move.w	#$80,angle(a0)
00010536 4a280028	tst.b	subtype(a0)
0001053a 6a28	bpl.s	++
0001053c 5c280024	addq.b	#6,routine(a0)
00010540 0228000f0028	andi.b	#$F,subtype(a0)
00010546 117c00300016	move.b	#$30,y_radius(a0)
0001054c 0c38000ffe10	cmpi.b	#aquatic_ruin_zone,(Current_Zone).w
00010552 6606	bne.s	+
00010554 117c00280016	move.b	#$28,y_radius(a0)
0001055a 08e800040001	bset	#render_flags.explicit_height,render_flags(a0)
00010560 60000072	bra.w	loc_105D4
00010564 0228000f0028	andi.b	#$F,subtype(a0)
0001056a 10280022	move.b	status(a0),d0
0001056e 02000018	andi.b	#standing_mask,d0
00010572 660c	bne.s	+
00010574 4a280038	tst.b	objoff_38(a0)
00010578 6712	beq.s	++
0001057a 59280038	subq.b	#4,objoff_38(a0)
0001057e 600c	bra.s	++
00010580 0c2800400038	cmpi.b	#$40,objoff_38(a0)
00010586 6704	beq.s	+
00010588 58280038	addq.b	#4,objoff_38(a0)
0001058c 3f280008	move.w	x_pos(a0),-(sp)
00010590 610000a6	bsr.w	sub_10638
00010594 61000088	bsr.w	sub_1061E
00010598 7200	moveq	#0,d1
0001059a 12280019	move.b	width_pixels(a0),d1
0001059e 7608	moveq	#8,d3
000105a0 381f	move.w	(sp)+,d4
000105a6 6008	bra.s	loc_105B0
000105a8 6100008e	bsr.w	sub_10638
000105ac 61000070	bsr.w	sub_1061E
000105b0 4a78ffd8	tst.w	(Two_player_mode).w
000105b4 6704	beq.s	+
000105b6 60005f3c	bra.w	DisplaySprite
000105ba 30280032	move.w	objoff_32(a0),d0
000105be 0240ff80	andi.w	#$FF80,d0
000105c2 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
000105c6 0c400280	cmpi.w	#$280,d0
000105ca 6204	bhi.s	BranchTo3_DeleteObject
000105cc 60005f26	bra.w	DisplaySprite
000105d0 60005f14	bra.w	DeleteObject
000105d4 10280022	move.b	status(a0),d0
000105d8 02000018	andi.b	#standing_mask,d0
000105dc 660c	bne.s	+
000105de 4a280038	tst.b	objoff_38(a0)
000105e2 6712	beq.s	++
000105e4 59280038	subq.b	#4,objoff_38(a0)
000105e8 600c	bra.s	++
000105ea 0c2800400038	cmpi.b	#$40,objoff_38(a0)
000105f0 6704	beq.s	+
000105f2 58280038	addq.b	#4,objoff_38(a0)
000105f6 3f280008	move.w	x_pos(a0),-(sp)
000105fa 6100003c	bsr.w	sub_10638
000105fe 6100001e	bsr.w	sub_1061E
00010602 7200	moveq	#0,d1
00010604 12280019	move.b	width_pixels(a0),d1
00010608 0641000b	addi.w	#$B,d1
0001060c 7400	moveq	#0,d2
0001060e 14280016	move.b	y_radius(a0),d2
00010612 3602	move.w	d2,d3
00010614 5243	addq.w	#1,d3
00010616 381f	move.w	(sp)+,d4
0001061c 6092	bra.s	loc_105B0
0001061e 10280038	move.b	objoff_38(a0),d0
00010626 323c0400	move.w	#$400,d1
0001062a c1c1	muls.w	d1,d0
0001062c 4840	swap	d0
0001062e d068002c	add.w	objoff_2C(a0),d0
00010632 3140000c	move.w	d0,y_pos(a0)
00010636 4e75	rts	
00010638 7000	moveq	#0,d0
0001063a 10280028	move.b	subtype(a0),d0
0001063e 0240000f	andi.w	#$F,d0
00010642 d040	add.w	d0,d0
00010644 323b0006	move.w	Obj18_Behaviours(pc,d0.w),d1
00010648 4efb1002	jmp	Obj18_Behaviours(pc,d1.w)
00010668 4e75	rts	
0001066a 30280032	move.w	objoff_32(a0),d0
0001066e 12280026	move.b	angle(a0),d1
00010672 4401	neg.b	d1
00010674 06010040	addi.b	#$40,d1
00010678 600c	bra.s	loc_10686
0001067a 30280032	move.w	objoff_32(a0),d0
0001067e 12280026	move.b	angle(a0),d1
00010682 04010040	subi.b	#$40,d1
00010686 4881	ext.w	d1
00010688 d041	add.w	d1,d0
0001068a 31400008	move.w	d0,x_pos(a0)
0001068e 6000015e	bra.w	loc_107EE
00010692 30280034	move.w	objoff_34(a0),d0
00010696 1238fe6c	move.b	(Oscillating_Data+$C).w,d1
0001069a 4401	neg.b	d1
0001069c 06010030	addi.b	#$30,d1
000106a0 602a	bra.s	loc_106CC
000106a2 30280034	move.w	objoff_34(a0),d0
000106a6 1238fe6c	move.b	(Oscillating_Data+$C).w,d1
000106aa 04010030	subi.b	#$30,d1
000106ae 601c	bra.s	loc_106CC
000106b0 30280034	move.w	objoff_34(a0),d0
000106b4 12280026	move.b	angle(a0),d1
000106b8 4401	neg.b	d1
000106ba 06010040	addi.b	#$40,d1
000106be 600c	bra.s	loc_106CC
000106c0 30280034	move.w	objoff_34(a0),d0
000106c4 12280026	move.b	angle(a0),d1
000106c8 04010040	subi.b	#$40,d1
000106cc 4881	ext.w	d1
000106ce d041	add.w	d1,d0
000106d0 3140002c	move.w	d0,objoff_2C(a0)
000106d4 60000118	bra.w	loc_107EE
000106d8 4a68003a	tst.w	objoff_3A(a0)
000106dc 6612	bne.s	loc_106F0
000106de 10280022	move.b	status(a0),d0
000106e2 02000018	andi.b	#standing_mask,d0
000106e6 6706	beq.s	+
000106e8 317c001e003a	move.w	#$1E,objoff_3A(a0)
000106ee 4e75	rts	
000106f0 5368003a	subq.w	#1,objoff_3A(a0)
000106f4 66f8	bne.s	-
000106f6 317c0020003a	move.w	#$20,objoff_3A(a0)
000106fc 52280028	addq.b	#1,subtype(a0)
00010700 4e75	rts	
00010702 4a68003a	tst.w	objoff_3A(a0)
00010706 6728	beq.s	loc_10730
00010708 5368003a	subq.w	#1,objoff_3A(a0)
0001070c 6622	bne.s	loc_10730
0001070e 08a800030022	bclr	#p1_standing_bit,status(a0)
00010714 6706	beq.s	+
00010716 43f8b000	lea	(MainCharacter).w,a1
0001071a 6142	bsr.s	sub_1075E
0001071c 08a800040022	bclr	#p2_standing_bit,status(a0)
00010722 6706	beq.s	+
00010724 43f8b040	lea	(Sidekick).w,a1
00010728 6134	bsr.s	sub_1075E
0001072a 117c00060024	move.b	#6,routine(a0)
00010730 2628002c	move.l	objoff_2C(a0),d3
00010734 30280012	move.w	y_vel(a0),d0
00010738 48c0	ext.l	d0
0001073a e180	asl.l	#8,d0
0001073c d680	add.l	d0,d3
0001073e 2143002c	move.l	d3,objoff_2C(a0)
00010742 066800380012	addi.w	#$38,y_vel(a0)
00010748 3038eece	move.w	(Camera_Max_Y_pos).w,d0
0001074c 06400120	addi.w	#$120,d0
00010750 b068002c	cmp.w	objoff_2C(a0),d0
00010754 6406	bhs.s	+
00010756 117c00040024	move.b	#4,routine(a0)
0001075c 4e75	rts	
0001075e 08e900010022	bset	#status.player.in_air,status(a1)
00010764 08a900030022	bclr	#status.player.on_object,status(a1)
0001076a 137c00020024	move.b	#2,routine(a1)
00010770 336800120012	move.w	y_vel(a0),y_vel(a1)
00010776 4e75	rts	
00010778 4a68003a	tst.w	objoff_3A(a0)
0001077c 661a	bne.s	loc_10798
0001077e 45f8f7e0	lea	(ButtonVine_Trigger).w,a2
00010782 7000	moveq	#0,d0
00010784 10280028	move.b	subtype(a0),d0
00010788 e848	lsr.w	#4,d0
0001078a 4a320000	tst.b	(a2,d0.w)
0001078e 6706	beq.s	+
00010790 317c003c003a	move.w	#60,objoff_3A(a0)
00010796 4e75	rts	
00010798 5368003a	subq.w	#1,objoff_3A(a0)
0001079c 66f8	bne.s	-
0001079e 52280028	addq.b	#1,subtype(a0)
000107a2 4e75	rts	
000107a4 5568002c	subq.w	#2,objoff_2C(a0)
000107a8 30280034	move.w	objoff_34(a0),d0
000107ac 04400200	subi.w	#$200,d0
000107b0 b068002c	cmp.w	objoff_2C(a0),d0
000107b4 6604	bne.s	+
000107b6 42280028	clr.b	subtype(a0)
000107ba 4e75	rts	
000107bc 30280034	move.w	objoff_34(a0),d0
000107c0 12280026	move.b	angle(a0),d1
000107c4 04010040	subi.b	#$40,d1
000107c8 4881	ext.w	d1
000107ca e241	asr.w	#1,d1
000107cc d041	add.w	d1,d0
000107ce 3140002c	move.w	d0,objoff_2C(a0)
000107d2 6000001a	bra.w	loc_107EE
000107d6 30280034	move.w	objoff_34(a0),d0
000107da 12280026	move.b	angle(a0),d1
000107de 4401	neg.b	d1
000107e0 06010040	addi.b	#$40,d1
000107e4 4881	ext.w	d1
000107e6 e241	asr.w	#1,d1
000107e8 d041	add.w	d1,d0
000107ea 3140002c	move.w	d0,objoff_2C(a0)
000107ee 1178fe780026	move.b	(Oscillating_Data+$18).w,angle(a0)
000107f4 4e75	rts	
000108a6 4e71	nop	
000108a8 4ef9000033b6	jmp	(extractJmpToName("JmpTo3_CalcSine")).l
000108ae 4ef900019c32	jmp	(extractJmpToName("JmpTo_PlatformObject")).l
000108b4 4ef900019718	jmp	(extractJmpToName("JmpTo_SolidObject")).l
000108bc 7000	moveq	#0,d0
000108be 10280024	move.b	routine(a0),d0
000108c2 323b0006	move.w	Obj1A_Index(pc,d0.w),d1
000108c6 4efb1002	jmp	Obj1A_Index(pc,d1.w)
000108d0 54280024	addq.b	#2,routine(a0)
000108d4 217c00010c6c0004	move.l	#Obj1A_MapUnc_10C6C,mappings(a0)
000108dc 317c40000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,2,0),art_tile(a0)
000108e2 6100648a	bsr.w	Adjust2PArtPointer
000108e6 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000108ec 117c00040018	move.b	#4,priority(a0)
000108f2 117c00070038	move.b	#7,collapsing_platform_delay_counter(a0)
000108f8 11680028001a	move.b	subtype(a0),mapping_frame(a0)
000108fe 217c00010bf20034	move.l	#Obj1A_DelayData,collapsing_platform_delay_pointer(a0)
00010906 0c380008fe10	cmpi.b	#hidden_palace_zone,(Current_Zone).w
0001090c 662a	bne.s	+
0001090e 217c0001101c0004	move.l	#Obj1A_MapUnc_1101C,mappings(a0)
00010916 317c434a0002	move.w	#make_art_tile(ArtTile_ArtNem_HPZPlatform,2,0),art_tile(a0)
0001091c 61006450	bsr.w	Adjust2PArtPointer
00010920 117c00300019	move.b	#$30,width_pixels(a0)
00010926 217c00010fec003c	move.l	#Obj1A_HPZ_SlopeData,collapsing_platform_slope_pointer(a0)
0001092e 217c00010c0b0034	move.l	#Obj1A_HPZ_DelayData,collapsing_platform_delay_pointer(a0)
00010936 6044	bra.s	Obj1A_Main
00010938 0c38000afe10	cmpi.b	#oil_ocean_zone,(Current_Zone).w
0001093e 6622	bne.s	+
00010940 217c000110c60004	move.l	#Obj1F_MapUnc_110C6,mappings(a0)
00010948 317c639d0002	move.w	#make_art_tile(ArtTile_ArtNem_OOZPlatform,3,0),art_tile(a0)
0001094e 6100641e	bsr.w	Adjust2PArtPointer
00010952 117c00400019	move.b	#$40,width_pixels(a0)
00010958 217c00010fdc003c	move.l	#Obj1A_OOZ_SlopeData,collapsing_platform_slope_pointer(a0)
00010960 601a	bra.s	Obj1A_Main
00010962 217c00010c3c003c	move.l	#Obj1A_GHZ_SlopeData,collapsing_platform_slope_pointer(a0)
0001096a 117c00340019	move.b	#$34,width_pixels(a0)
00010970 117c00380016	move.b	#$38,y_radius(a0)
00010976 08e800040001	bset	#render_flags.explicit_height,render_flags(a0)
0001097c 4a28003a	tst.b	collapsing_platform_stood_on_flag(a0)
00010980 670c	beq.s	+
00010982 4a280038	tst.b	collapsing_platform_delay_counter(a0)
00010986 670001e0	beq.w	Obj1A_CreateFragments
0001098a 53280038	subq.b	#1,collapsing_platform_delay_counter(a0)
0001098e 10280022	move.b	status(a0),d0
00010992 02000018	andi.b	#standing_mask,d0
00010996 6706	beq.s	sub_1099E
00010998 117c0001003a	move.b	#1,collapsing_platform_stood_on_flag(a0)
0001099e 7200	moveq	#0,d1
000109a0 12280019	move.b	width_pixels(a0),d1
000109a4 2468003c	movea.l	collapsing_platform_slope_pointer(a0),a2
000109a8 38280008	move.w	x_pos(a0),d4
000109b0 60005a20	bra.w	MarkObjGone
000109b4 4a280038	tst.b	collapsing_platform_delay_counter(a0)
000109b8 673e	beq.s	Obj1A_FragmentFall
000109ba 4a28003a	tst.b	collapsing_platform_stood_on_flag(a0)
000109be 6608	bne.s	+
000109c0 53280038	subq.b	#1,collapsing_platform_delay_counter(a0)
000109c4 60005b2e	bra.w	DisplaySprite
000109c8 6100ffd4	bsr.w	sub_1099E
000109cc 53280038	subq.b	#1,collapsing_platform_delay_counter(a0)
000109d0 6624	bne.s	+
000109d2 43f8b000	lea	(MainCharacter).w,a1
000109d6 6104	bsr.s	sub_109DC
000109d8 43f8b040	lea	(Sidekick).w,a1
000109dc 082900030022	btst	#status.player.on_object,status(a1)
000109e2 6712	beq.s	+
000109e4 08a900030022	bclr	#status.player.on_object,status(a1)
000109ea 08a900050022	bclr	#status.player.pushing,status(a1)
000109f0 137c0001001d	move.b	#AniIDSonAni_Run,prev_anim(a1)
000109f6 4e75	rts	
000109f8 61005986	bsr.w	ObjectMoveAndFall
000109fc 4a280001	tst.b	render_flags(a0)
00010a00 6a005ae4	bpl.w	DeleteObject
00010a04 60005aee	bra.w	DisplaySprite
00010a08 7000	moveq	#0,d0
00010a0a 10280024	move.b	routine(a0),d0
00010a0e 323b0006	move.w	Obj1F_Index(pc,d0.w),d1
00010a12 4efb1002	jmp	Obj1F_Index(pc,d1.w)
00010a1c 54280024	addq.b	#2,routine(a0)
00010a20 217c00010f0c0004	move.l	#Obj1F_MapUnc_10F0C,mappings(a0)
00010a28 317c42b80002	move.w	#make_art_tile(ArtTile_ArtNem_MZ_Platform,2,0),art_tile(a0)
00010a2e 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00010a34 117c00040018	move.b	#4,priority(a0)
00010a3a 117c00070038	move.b	#7,collapsing_platform_delay_counter(a0)
00010a40 117c00440019	move.b	#$44,width_pixels(a0)
00010a46 49f900010c17	lea	(Obj1F_DelayData_EvenSubtype).l,a4
00010a4c 082800000028	btst	#0,subtype(a0)
00010a52 6706	beq.s	+
00010a54 49f900010c1f	lea	(Obj1F_DelayData_OddSubtype).l,a4
00010a5a 214c0034	move.l	a4,collapsing_platform_delay_pointer(a0)
00010a5e 0c38000afe10	cmpi.b	#oil_ocean_zone,(Current_Zone).w
00010a64 6620	bne.s	+
00010a66 217c000110c60004	move.l	#Obj1F_MapUnc_110C6,mappings(a0)
00010a6e 317c639d0002	move.w	#make_art_tile(ArtTile_ArtNem_OOZPlatform,3,0),art_tile(a0)
00010a74 610062f8	bsr.w	Adjust2PArtPointer
00010a78 117c00400019	move.b	#$40,width_pixels(a0)
00010a7e 217c00010c270034	move.l	#Obj1F_OOZ_DelayData,collapsing_platform_delay_pointer(a0)
00010a86 0c38000bfe10	cmpi.b	#mystic_cave_zone,(Current_Zone).w
00010a8c 6620	bne.s	+
00010a8e 217c000111060004	move.l	#Obj1F_MapUnc_11106,mappings(a0)
00010a96 317c63f40002	move.w	#make_art_tile(ArtTile_ArtNem_MCZCollapsePlat,3,0),art_tile(a0)
00010a9c 610062d0	bsr.w	Adjust2PArtPointer
00010aa0 117c00200019	move.b	#$20,width_pixels(a0)
00010aa6 217c00010c2e0034	move.l	#Obj1F_MCZ_DelayData,collapsing_platform_delay_pointer(a0)
00010aae 0c38000ffe10	cmpi.b	#aquatic_ruin_zone,(Current_Zone).w
00010ab4 6620	bne.s	Obj1F_Main
00010ab6 217c0001115e0004	move.l	#Obj1F_MapUnc_1115E,mappings(a0)
00010abe 317c40000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,2,0),art_tile(a0)
00010ac4 610062a8	bsr.w	Adjust2PArtPointer
00010ac8 117c00200019	move.b	#$20,width_pixels(a0)
00010ace 217c00010c340034	move.l	#Obj1F_ARZ_DelayData,collapsing_platform_delay_pointer(a0)
00010ad6 4a28003a	tst.b	collapsing_platform_stood_on_flag(a0)
00010ada 670c	beq.s	+
00010adc 4a280038	tst.b	collapsing_platform_delay_counter(a0)
00010ae0 67000080	beq.w	Obj1F_CreateFragments
00010ae4 53280038	subq.b	#1,collapsing_platform_delay_counter(a0)
00010ae8 10280022	move.b	status(a0),d0
00010aec 02000018	andi.b	#standing_mask,d0
00010af0 6706	beq.s	sub_10AF8
00010af2 117c0001003a	move.b	#1,collapsing_platform_stood_on_flag(a0)
00010af8 7200	moveq	#0,d1
00010afa 12280019	move.b	width_pixels(a0),d1
00010afe 363c0010	move.w	#$10,d3
00010b02 38280008	move.w	x_pos(a0),d4
00010b0a 600058c6	bra.w	MarkObjGone
00010b0e 4a280038	tst.b	collapsing_platform_delay_counter(a0)
00010b12 673e	beq.s	Obj1F_FragmentFall
00010b14 4a28003a	tst.b	collapsing_platform_stood_on_flag(a0)
00010b18 6608	bne.s	+
00010b1a 53280038	subq.b	#1,collapsing_platform_delay_counter(a0)
00010b1e 600059d4	bra.w	DisplaySprite
00010b22 6100ffd4	bsr.w	sub_10AF8
00010b26 53280038	subq.b	#1,collapsing_platform_delay_counter(a0)
00010b2a 6624	bne.s	+
00010b2c 43f8b000	lea	(MainCharacter).w,a1
00010b30 6104	bsr.s	sub_10B36
00010b32 43f8b040	lea	(Sidekick).w,a1
00010b36 082900030022	btst	#status.player.on_object,status(a1)
00010b3c 6712	beq.s	+
00010b3e 08a900030022	bclr	#status.player.on_object,status(a1)
00010b44 08a900050022	bclr	#status.player.pushing,status(a1)
00010b4a 137c0001001d	move.b	#AniIDSonAni_Run,prev_anim(a1)
00010b50 4e75	rts	
00010b52 6100582c	bsr.w	ObjectMoveAndFall
00010b56 4a280001	tst.b	render_flags(a0)
00010b5a 6a00598a	bpl.w	DeleteObject
00010b5e 60005994	bra.w	DisplaySprite
00010b62 5228001a	addq.b	#1,mapping_frame(a0)
00010b66 6004	bra.s	+
00010b68 5428001a	addq.b	#2,mapping_frame(a0)
00010b6c 28680034	movea.l	collapsing_platform_delay_pointer(a0),a4
00010b70 7000	moveq	#0,d0
00010b72 1028001a	move.b	mapping_frame(a0),d0
00010b76 d040	add.w	d0,d0
00010b78 26680004	movea.l	mappings(a0),a3
00010b7c d6f30000	adda.w	(a3,d0.w),a3
00010b80 321b	move.w	(a3)+,d1
00010b82 5341	subq.w	#1,d1
00010b84 08e800050001	bset	#render_flags.static_mappings,render_flags(a0)
00010b8e 1a280001	move.b	render_flags(a0),d5
00010b92 2248	movea.l	a0,a1
00010b94 6008	bra.s	+
00010b9a 6648	bne.s	+++
00010b9c 504b	addq.w	#8,a3
00010b9e 137c00040024	move.b	#4,routine(a1)
00010ba8 234b0004	move.l	a3,mappings(a1)
00010bac 13450001	move.b	d5,render_flags(a1)
00010bb0 336800080008	move.w	x_pos(a0),x_pos(a1)
00010bb6 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00010bbc 336800020002	move.w	art_tile(a0),art_tile(a1)
00010bc2 136800180018	move.b	priority(a0),priority(a1)
00010bc8 136800190019	move.b	width_pixels(a0),width_pixels(a1)
00010bce 136800160016	move.b	y_radius(a0),y_radius(a1)
00010bd4 135c0038	move.b	(a4)+,collapsing_platform_delay_counter(a1)
00010bd8 b3c8	cmpa.l	a0,a1
00010bda 6404	bhs.s	+
00010bdc 61005934	bsr.w	DisplaySprite2
00010be4 6100590e	bsr.w	DisplaySprite
00010be8 303c00b9	move.w	#SndID_Smash,d0
00010bec 4ef900001370	jmp	(PlaySound).l
000111c6 4e71	nop	
000111c8 4ef900019c8a	jmp	(extractJmpToName("JmpTo_SlopedPlatform")).l
000111ce 4ef900019c32	jmp	(extractJmpToName("JmpTo2_PlatformObject")).l
000111d4 7000	moveq	#0,d0
000111d6 10280024	move.b	routine(a0),d0
000111da 323b0006	move.w	Obj1C_Index(pc,d0.w),d1
000111de 4efb1002	jmp	Obj1C_Index(pc,d1.w)
000112a4 54280024	addq.b	#2,routine(a0)
000112a8 7000	moveq	#0,d0
000112aa 10280028	move.b	subtype(a0),d0
000112ae 3200	move.w	d0,d1
000112b0 e748	lsl.w	#3,d0
000112b2 43faff32	lea	Obj1C_InitData(pc),a1
000112b6 43f10000	lea	(a1,d0.w),a1
000112ba 1151001a	move.b	(a1),mapping_frame(a0)
000112be 21590004	move.l	(a1)+,mappings(a0)
000112c2 31590002	move.w	(a1)+,art_tile(a0)
000112c6 61005aa6	bsr.w	Adjust2PArtPointer
000112ca 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000112d0 11590019	move.b	(a1)+,width_pixels(a0)
000112d4 11590018	move.b	(a1)+,priority(a0)
000112d8 43faffb4	lea	Obj1C_Radii(pc),a1
000112dc 12311000	move.b	(a1,d1.w),d1
000112e0 670a	beq.s	BranchTo_MarkObjGone
000112e2 11410016	move.b	d1,y_radius(a0)
000112e6 08e800040001	bset	#render_flags.explicit_height,render_flags(a0)
000112ec 600050e4	bra.w	MarkObjGone
000112f0 7000	moveq	#0,d0
000112f2 10280024	move.b	routine(a0),d0
000112f6 323b0006	move.w	Obj71_Index(pc,d0.w),d1
000112fa 4efb1002	jmp	Obj71_Index(pc,d1.w)
0001131a 54280024	addq.b	#2,routine(a0)
0001131e 10280028	move.b	subtype(a0),d0
00011322 0240000f	andi.w	#$F,d0
00011326 e748	lsl.w	#3,d0
00011328 43faffd8	lea	Obj71_InitData(pc),a1
0001132c 43f10000	lea	(a1,d0.w),a1
00011330 1151001a	move.b	(a1),mapping_frame(a0)
00011334 21590004	move.l	(a1)+,mappings(a0)
00011338 31590002	move.w	(a1)+,art_tile(a0)
0001133c 61005a30	bsr.w	Adjust2PArtPointer
00011340 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00011346 11590019	move.b	(a1)+,width_pixels(a0)
0001134a 11590018	move.b	(a1)+,priority(a0)
0001134e 10280028	move.b	subtype(a0),d0
00011352 024000f0	andi.w	#$F0,d0
00011356 e808	lsr.b	#4,d0
00011358 1140001c	move.b	d0,anim(a0)
0001135c 43f90001136a	lea	(Ani_obj71).l,a1
00011362 610051e0	bsr.w	AnimateSprite
00011366 6000506a	bra.w	MarkObjGone
000115c2 4e71	nop	
000115c4 7000	moveq	#0,d0
000115c6 10280024	move.b	routine(a0),d0
000115ca 323b0006	move.w	Obj2A_Index(pc,d0.w),d1
000115ce 4efb1002	jmp	Obj2A_Index(pc,d1.w)
000115d6 54280024	addq.b	#2,routine(a0)
000115da 217c000116660004	move.l	#Obj2A_MapUnc_11666,mappings(a0)
000115e2 317c40000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,2,0),art_tile(a0)
000115e8 61005784	bsr.w	Adjust2PArtPointer
000115ec 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000115f2 117c00100019	move.b	#$10,width_pixels(a0)
000115f8 117c00040018	move.b	#4,priority(a0)
000115fe 3168000c0032	move.w	y_pos(a0),objoff_32(a0)
00011604 117c00500016	move.b	#$50,y_radius(a0)
0001160a 08e800040001	bset	#render_flags.explicit_height,render_flags(a0)
00011610 4a280025	tst.b	routine_secondary(a0)
00011614 6614	bne.s	+
00011616 52680030	addq.w	#1,objoff_30(a0)
0001161a 0c6800600030	cmpi.w	#$60,objoff_30(a0)
00011620 661a	bne.s	++
00011622 117c00020025	move.b	#2,routine_secondary(a0)
00011628 6012	bra.s	++
0001162a 51680030	subq.w	#8,objoff_30(a0)
0001162e 620c	bhi.s	+
00011630 317c00000030	move.w	#0,objoff_30(a0)
00011636 117c00000025	move.b	#0,routine_secondary(a0)
0001163c 30280032	move.w	objoff_32(a0),d0
00011640 90680030	sub.w	objoff_30(a0),d0
00011644 3140000c	move.w	d0,y_pos(a0)
00011648 7200	moveq	#0,d1
0001164a 12280019	move.b	width_pixels(a0),d1
0001164e 0641000b	addi.w	#$B,d1
00011652 343c0040	move.w	#$40,d2
00011656 3602	move.w	d2,d3
00011658 5243	addq.w	#1,d3
0001165a 38280008	move.w	x_pos(a0),d4
00011662 60004d6e	bra.w	MarkObjGone
0001169a 7000	moveq	#0,d0
0001169c 10280024	move.b	routine(a0),d0
000116a0 323b0006	move.w	Obj2D_Index(pc,d0.w),d1
000116a4 4efb1002	jmp	Obj2D_Index(pc,d1.w)
000116ac 54280024	addq.b	#2,routine(a0)
000116b0 217c000118220004	move.l	#Obj2D_MapUnc_11822,mappings(a0)
000116b8 317c24260002	move.w	#make_art_tile(ArtTile_ArtNem_HtzValveBarrier,1,0),art_tile(a0)
000116be 117c00080019	move.b	#8,width_pixels(a0)
000116c4 0c380004fe10	cmpi.b	#metropolis_zone,(Current_Zone).w
000116ca 6708	beq.s	+
000116cc 0c380005fe10	cmpi.b	#metropolis_zone_2,(Current_Zone).w
000116d2 660c	bne.s	++
000116d4 317c60000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,3,0),art_tile(a0)
000116da 117c000c0019	move.b	#$C,width_pixels(a0)
000116e0 0c38000dfe10	cmpi.b	#chemical_plant_zone,(Current_Zone).w
000116e6 660c	bne.s	+
000116e8 317c23940002	move.w	#make_art_tile(ArtTile_ArtNem_ConstructionStripes_2,1,0),art_tile(a0)
000116ee 117c00080019	move.b	#8,width_pixels(a0)
000116f4 0c38000efe10	cmpi.b	#death_egg_zone,(Current_Zone).w
000116fa 660c	bne.s	+
000116fc 317c23280002	move.w	#make_art_tile(ArtTile_ArtNem_ConstructionStripes_1,1,0),art_tile(a0)
00011702 117c00080019	move.b	#8,width_pixels(a0)
00011708 0c38000ffe10	cmpi.b	#aquatic_ruin_zone,(Current_Zone).w
0001170e 660c	bne.s	+
00011710 317c23f80002	move.w	#make_art_tile(ArtTile_ArtNem_ARZBarrierThing,1,0),art_tile(a0)
00011716 117c00080019	move.b	#8,width_pixels(a0)
0001171c 61005650	bsr.w	Adjust2PArtPointer
00011720 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00011726 117c00040018	move.b	#4,priority(a0)
0001172c 3168000c0032	move.w	y_pos(a0),objoff_32(a0)
00011732 11680028001a	move.b	subtype(a0),mapping_frame(a0)
00011738 34280008	move.w	x_pos(a0),d2
0001173c 3602	move.w	d2,d3
0001173e 04420200	subi.w	#$200,d2
00011742 06430018	addi.w	#$18,d3
00011746 082800000022	btst	#status.npc.x_flip,status(a0)
0001174c 6708	beq.s	+
0001174e 0442fe18	subi.w	#-$1E8,d2
00011752 064301e8	addi.w	#$1E8,d3
00011756 31420038	move.w	d2,objoff_38(a0)
0001175a 3143003a	move.w	d3,objoff_3A(a0)
0001175e 082800000022	btst	#status.npc.x_flip,status(a0)
00011764 6614	bne.s	+
00011766 34280038	move.w	objoff_38(a0),d2
0001176a 36280008	move.w	x_pos(a0),d3
0001176e 4a280025	tst.b	routine_secondary(a0)
00011772 6718	beq.s	++
00011774 3628003a	move.w	objoff_3A(a0),d3
00011778 6012	bra.s	++
0001177a 34280008	move.w	x_pos(a0),d2
0001177e 3628003a	move.w	objoff_3A(a0),d3
00011782 4a280025	tst.b	routine_secondary(a0)
00011786 6704	beq.s	+
00011788 34280038	move.w	objoff_38(a0),d2
0001178c 38280032	move.w	objoff_32(a0),d4
00011790 3a04	move.w	d4,d5
00011792 04440020	subi.w	#$20,d4
00011796 06450020	addi.w	#$20,d5
0001179a 117c00000025	move.b	#0,routine_secondary(a0)
000117a0 43f8b000	lea	(MainCharacter).w,a1
000117a4 614e	bsr.s	Obj2D_CheckCharacter
000117a6 43f8b040	lea	(Sidekick).w,a1
000117aa 6148	bsr.s	Obj2D_CheckCharacter
000117ac 4a280025	tst.b	routine_secondary(a0)
000117b0 670e	beq.s	+
000117b2 0c6800400030	cmpi.w	#$40,objoff_30(a0)
000117b8 671c	beq.s	+++
000117ba 50680030	addq.w	#8,objoff_30(a0)
000117be 600a	bra.s	++
000117c0 4a680030	tst.w	objoff_30(a0)
000117c4 6710	beq.s	++
000117c6 51680030	subq.w	#8,objoff_30(a0)
000117ca 30280032	move.w	objoff_32(a0),d0
000117ce 90680030	sub.w	objoff_30(a0),d0
000117d2 3140000c	move.w	d0,y_pos(a0)
000117d6 7200	moveq	#0,d1
000117d8 12280019	move.b	width_pixels(a0),d1
000117dc 0641000b	addi.w	#$B,d1
000117e0 343c0020	move.w	#$20,d2
000117e4 3602	move.w	d2,d3
000117e6 5243	addq.w	#1,d3
000117e8 38280008	move.w	x_pos(a0),d4
000117ec 61000096	bsr.w	JmpTo2_SolidObject
000117f0 60004be0	bra.w	MarkObjGone
000117f4 30290008	move.w	x_pos(a1),d0
000117f8 b042	cmp.w	d2,d0
000117fa 6d000024	blt.w	return_11820
000117fe b043	cmp.w	d3,d0
00011800 6400001e	bhs.w	return_11820
00011804 3029000c	move.w	y_pos(a1),d0
00011808 b044	cmp.w	d4,d0
0001180a 65000014	blo.w	return_11820
0001180e b045	cmp.w	d5,d0
00011810 6400000e	bhs.w	return_11820
00011814 4a29002a	tst.b	obj_control(a1)
00011818 6b06	bmi.s	return_11820
0001181a 117c00020025	move.b	#2,routine_secondary(a0)
00011820 4e75	rts	
00011882 4e71	nop	
00011884 4ef900019718	jmp	(extractJmpToName("JmpTo2_SolidObject")).l
0001188c 7000	moveq	#0,d0
0001188e 10280024	move.b	routine(a0),d0
00011892 323b0006	move.w	Obj28_Index(pc,d0.w),d1
00011896 4efb1002	jmp	Obj28_Index(pc,d1.w)
000119be 4a280028	tst.b	subtype(a0)
000119c2 67000068	beq.w	Obj28_InitRandom
000119c6 7000	moveq	#0,d0
000119c8 10280028	move.b	subtype(a0),d0
000119cc d040	add.w	d0,d0
000119ce 11400024	move.b	d0,routine(a0)
000119d2 04400014	subi.w	#$14,d0
000119d6 317b00d00002	move.w	Obj28_ArtLocations(pc,d0.w),art_tile(a0)
000119dc d040	add.w	d0,d0
000119de 217b009c0004	move.l	Obj28_Mappings(pc,d0.w),mappings(a0)
000119e4 43faff6a	lea	Obj28_Speeds(pc),a1
000119e8 317100000032	move.w	(a1,d0.w),animal_ground_x_vel(a0)
000119ee 317100000010	move.w	(a1,d0.w),x_vel(a0)
000119f4 317100020034	move.w	2(a1,d0.w),animal_ground_y_vel(a0)
000119fa 317100020012	move.w	2(a1,d0.w),y_vel(a0)
00011a00 6100536c	bsr.w	Adjust2PArtPointer
00011a04 117c000c0016	move.b	#$C,y_radius(a0)
00011a0a 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00011a10 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00011a16 117c00060018	move.b	#6,priority(a0)
00011a1c 117c00080019	move.b	#8,width_pixels(a0)
00011a22 117c0007001e	move.b	#7,anim_frame_duration(a0)
00011a28 60004aca	bra.w	DisplaySprite
00011a2c 54280024	addq.b	#2,routine(a0)
00011a34 317c05800002	move.w	#make_art_tile(ArtTile_ArtNem_Animal_1,0,0),art_tile(a0)
00011a3a 02400001	andi.w	#1,d0
00011a3e 6706	beq.s	+
00011a40 317c05940002	move.w	#make_art_tile(ArtTile_ArtNem_Animal_2,0,0),art_tile(a0)
00011a46 7200	moveq	#0,d1
00011a48 1238fe10	move.b	(Current_Zone).w,d1
00011a4c d241	add.w	d1,d1
00011a4e d240	add.w	d0,d1
00011a50 43fafe7c	lea	Obj28_ZoneAnimals(pc),a1
00011a54 10311000	move.b	(a1,d1.w),d0
00011a58 11400030	move.b	d0,animal_ground_routine_base(a0)
00011a5c e748	lsl.w	#3,d0
00011a5e 43fafe90	lea	Obj28_Properties(pc),a1
00011a62 d2c0	adda.w	d0,a1
00011a64 31590032	move.w	(a1)+,animal_ground_x_vel(a0)
00011a68 31590034	move.w	(a1)+,animal_ground_y_vel(a0)
00011a6c 21590004	move.l	(a1)+,mappings(a0)
00011a70 610052fc	bsr.w	Adjust2PArtPointer
00011a74 117c000c0016	move.b	#$C,y_radius(a0)
00011a7a 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00011a80 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00011a86 117c00060018	move.b	#6,priority(a0)
00011a8c 117c00080019	move.b	#8,width_pixels(a0)
00011a92 117c0007001e	move.b	#7,anim_frame_duration(a0)
00011a98 117c0002001a	move.b	#2,mapping_frame(a0)
00011a9e 317cfc000012	move.w	#-$400,y_vel(a0)
00011aa4 4a280038	tst.b	objoff_38(a0)
00011aa8 6626	bne.s	++
00011aaa 6100652e	bsr.w	AllocateObject
00011aae 661c	bne.s	+
00011ab6 336800080008	move.w	x_pos(a0),x_pos(a1)
00011abc 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00011ac2 3028003e	move.w	objoff_3E(a0),d0
00011ac6 e248	lsr.w	#1,d0
00011ac8 1340001a	move.b	d0,mapping_frame(a1)
00011ad0 117c001c0024	move.b	#$1C,routine(a0)
00011ad6 42680010	clr.w	x_vel(a0)
00011ada 60004a18	bra.w	DisplaySprite
00011ade 4a280001	tst.b	render_flags(a0)
00011ae2 6a004a02	bpl.w	DeleteObject
00011ae6 61004898	bsr.w	ObjectMoveAndFall
00011aea 4a680012	tst.w	y_vel(a0)
00011aee 6b44	bmi.s	+
00011af0 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00011af6 4a41	tst.w	d1
00011af8 6a3a	bpl.s	+
00011afa d368000c	add.w	d1,y_pos(a0)
00011afe 316800320010	move.w	animal_ground_x_vel(a0),x_vel(a0)
00011b04 316800340012	move.w	animal_ground_y_vel(a0),y_vel(a0)
00011b0a 117c0001001a	move.b	#1,mapping_frame(a0)
00011b10 10280030	move.b	animal_ground_routine_base(a0),d0
00011b14 d000	add.b	d0,d0
00011b16 5800	addq.b	#4,d0
00011b18 11400024	move.b	d0,routine(a0)
00011b1c 4a280038	tst.b	objoff_38(a0)
00011b20 6712	beq.s	+
00011b22 08380004fe0f	btst	#4,(Vint_runcount+3).w
00011b28 670a	beq.s	+
00011b2a 44680010	neg.w	x_vel(a0)
00011b2e 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
00011b38 61004846	bsr.w	ObjectMoveAndFall
00011b3c 117c0001001a	move.b	#1,mapping_frame(a0)
00011b42 4a680012	tst.w	y_vel(a0)
00011b46 6b1a	bmi.s	+
00011b48 117c0000001a	move.b	#0,mapping_frame(a0)
00011b4e 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00011b54 4a41	tst.w	d1
00011b56 6a0a	bpl.s	+
00011b58 d368000c	add.w	d1,y_pos(a0)
00011b5c 316800340012	move.w	animal_ground_y_vel(a0),y_vel(a0)
00011b62 4a280028	tst.b	subtype(a0)
00011b66 6670	bne.s	Obj28_ChkDel
00011b68 4a280001	tst.b	render_flags(a0)
00011b6c 6a004978	bpl.w	DeleteObject
00011b70 60004982	bra.w	DisplaySprite
00011b74 61004836	bsr.w	ObjectMove
00011b78 066800180012	addi.w	#$18,y_vel(a0)
00011b7e 4a680012	tst.w	y_vel(a0)
00011b82 6b2c	bmi.s	+
00011b84 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00011b8a 4a41	tst.w	d1
00011b8c 6a22	bpl.s	+
00011b8e d368000c	add.w	d1,y_pos(a0)
00011b92 316800340012	move.w	animal_ground_y_vel(a0),y_vel(a0)
00011b98 4a280028	tst.b	subtype(a0)
00011b9c 6712	beq.s	+
00011b9e 0c28000a0028	cmpi.b	#$A,subtype(a0)
00011ba4 670a	beq.s	+
00011ba6 44680010	neg.w	x_vel(a0)
00011baa 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
00011bb0 5328001e	subq.b	#1,anim_frame_duration(a0)
00011bb4 6a10	bpl.s	+
00011bb6 117c0001001e	move.b	#1,anim_frame_duration(a0)
00011bbc 5228001a	addq.b	#1,mapping_frame(a0)
00011bc0 02280001001a	andi.b	#1,mapping_frame(a0)
00011bc6 4a280028	tst.b	subtype(a0)
00011bca 660c	bne.s	Obj28_ChkDel
00011bcc 4a280001	tst.b	render_flags(a0)
00011bd0 6a004914	bpl.w	DeleteObject
00011bd4 6000491e	bra.w	DisplaySprite
00011bd8 30280008	move.w	x_pos(a0),d0
00011bdc 9078b008	sub.w	(MainCharacter+x_pos).w,d0
00011be0 650e	bcs.s	+
00011be2 04400180	subi.w	#$180,d0
00011be6 6a08	bpl.s	+
00011be8 4a280001	tst.b	render_flags(a0)
00011bec 6a0048f8	bpl.w	DeleteObject
00011bf0 60004902	bra.w	DisplaySprite
00011bf4 4a280001	tst.b	render_flags(a0)
00011bf8 6a0048ec	bpl.w	DeleteObject
00011bfc 53680036	subq.w	#1,objoff_36(a0)
00011c00 6600000e	bne.w	+
00011c04 117c00020024	move.b	#2,routine(a0)
00011c0a 117c00010018	move.b	#1,priority(a0)
00011c10 600048e2	bra.w	DisplaySprite
00011c14 610001a2	bsr.w	ChkAnimalInRange
00011c18 6416	bcc.s	+
00011c1a 316800320010	move.w	animal_ground_x_vel(a0),x_vel(a0)
00011c20 316800340012	move.w	animal_ground_y_vel(a0),y_vel(a0)
00011c26 117c000e0024	move.b	#$E,routine(a0)
00011c2c 6000ff46	bra.w	Obj28_Fly
00011c30 6000ffa6	bra.w	Obj28_ChkDel
00011c34 61000182	bsr.w	ChkAnimalInRange
00011c38 6a30	bpl.s	+
00011c3a 42680010	clr.w	x_vel(a0)
00011c3e 42680032	clr.w	animal_ground_x_vel(a0)
00011c42 61004768	bsr.w	ObjectMove
00011c46 066800180012	addi.w	#$18,y_vel(a0)
00011c4c 6100012a	bsr.w	AnimalJump
00011c50 6100014e	bsr.w	AnimalFaceSonic
00011c54 5328001e	subq.b	#1,anim_frame_duration(a0)
00011c58 6a10	bpl.s	+
00011c5a 117c0001001e	move.b	#1,anim_frame_duration(a0)
00011c60 5228001a	addq.b	#1,mapping_frame(a0)
00011c64 02280001001a	andi.b	#1,mapping_frame(a0)
00011c6a 6000ff6c	bra.w	Obj28_ChkDel
00011c6e 61000148	bsr.w	ChkAnimalInRange
00011c72 6a50	bpl.s	++
00011c74 316800320010	move.w	animal_ground_x_vel(a0),x_vel(a0)
00011c7a 316800340012	move.w	animal_ground_y_vel(a0),y_vel(a0)
00011c80 117c00040024	move.b	#4,routine(a0)
00011c86 6000feb0	bra.w	Obj28_Walk
00011c8a 610046f4	bsr.w	ObjectMoveAndFall
00011c8e 117c0001001a	move.b	#1,mapping_frame(a0)
00011c94 4a680012	tst.w	y_vel(a0)
00011c98 6b2a	bmi.s	++
00011c9a 117c0000001a	move.b	#0,mapping_frame(a0)
00011ca0 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00011ca6 4a41	tst.w	d1
00011ca8 6a1a	bpl.s	++
00011caa 46280029	not.b	objoff_29(a0)
00011cae 660a	bne.s	+
00011cb0 44680010	neg.w	x_vel(a0)
00011cb4 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
00011cba d368000c	add.w	d1,y_pos(a0)
00011cbe 316800340012	move.w	animal_ground_y_vel(a0),y_vel(a0)
00011cc4 6000ff12	bra.w	Obj28_ChkDel
00011cc8 610000ee	bsr.w	ChkAnimalInRange
00011ccc 6a14	bpl.s	+
00011cce 42680010	clr.w	x_vel(a0)
00011cd2 42680032	clr.w	animal_ground_x_vel(a0)
00011cd6 610046a8	bsr.w	ObjectMoveAndFall
00011cda 6100009c	bsr.w	AnimalJump
00011cde 610000c0	bsr.w	AnimalFaceSonic
00011ce2 6000fef4	bra.w	Obj28_ChkDel
00011ce6 610000d0	bsr.w	ChkAnimalInRange
00011cea 6a34	bpl.s	+
00011cec 61004692	bsr.w	ObjectMoveAndFall
00011cf0 117c0001001a	move.b	#1,mapping_frame(a0)
00011cf6 4a680012	tst.w	y_vel(a0)
00011cfa 6b24	bmi.s	+
00011cfc 117c0000001a	move.b	#0,mapping_frame(a0)
00011d02 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00011d08 4a41	tst.w	d1
00011d0a 6a14	bpl.s	+
00011d0c 44680010	neg.w	x_vel(a0)
00011d10 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
00011d16 d368000c	add.w	d1,y_pos(a0)
00011d1a 316800340012	move.w	animal_ground_y_vel(a0),y_vel(a0)
00011d20 6000feb6	bra.w	Obj28_ChkDel
00011d24 61000092	bsr.w	ChkAnimalInRange
00011d28 6a4a	bpl.s	+++
00011d2a 61004680	bsr.w	ObjectMove
00011d2e 066800180012	addi.w	#$18,y_vel(a0)
00011d34 4a680012	tst.w	y_vel(a0)
00011d38 6b24	bmi.s	++
00011d3a 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00011d40 4a41	tst.w	d1
00011d42 6a1a	bpl.s	++
00011d44 46280029	not.b	objoff_29(a0)
00011d48 660a	bne.s	+
00011d4a 44680010	neg.w	x_vel(a0)
00011d4e 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
00011d54 d368000c	add.w	d1,y_pos(a0)
00011d58 316800340012	move.w	animal_ground_y_vel(a0),y_vel(a0)
00011d5e 5328001e	subq.b	#1,anim_frame_duration(a0)
00011d62 6a10	bpl.s	+
00011d64 117c0001001e	move.b	#1,anim_frame_duration(a0)
00011d6a 5228001a	addq.b	#1,mapping_frame(a0)
00011d6e 02280001001a	andi.b	#1,mapping_frame(a0)
00011d74 6000fe62	bra.w	Obj28_ChkDel
00011d78 117c0001001a	move.b	#1,mapping_frame(a0)
00011d7e 4a680012	tst.w	y_vel(a0)
00011d82 6b1a	bmi.s	+
00011d84 117c0000001a	move.b	#0,mapping_frame(a0)
00011d8a 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00011d90 4a41	tst.w	d1
00011d92 6a0a	bpl.s	+
00011d94 d368000c	add.w	d1,y_pos(a0)
00011d98 316800340012	move.w	animal_ground_y_vel(a0),y_vel(a0)
00011d9e 4e75	rts	
00011da0 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00011da6 30280008	move.w	x_pos(a0),d0
00011daa 9078b008	sub.w	(MainCharacter+x_pos).w,d0
00011dae 6406	bcc.s	+
00011db0 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
00011db6 4e75	rts	
00011db8 3038b008	move.w	(MainCharacter+x_pos).w,d0
00011dbc 90680008	sub.w	x_pos(a0),d0
00011dc0 044000b8	subi.w	#$B8,d0
00011dc4 4e75	rts	
00011dc6 7000	moveq	#0,d0
00011dc8 10280024	move.b	routine(a0),d0
00011dcc 323b0006	move.w	Obj29_Index(pc,d0.w),d1
00011dd0 4efb1002	jmp	Obj29_Index(pc,d1.w)
00011dd8 54280024	addq.b	#2,routine(a0)
00011ddc 217c00011ed00004	move.l	#Obj29_MapUnc_11ED0,mappings(a0)
00011de4 317c84ac0002	move.w	#make_art_tile(ArtTile_ArtNem_Numbers,0,1),art_tile(a0)
00011dea 61004f82	bsr.w	Adjust2PArtPointer
00011dee 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00011df4 117c00010018	move.b	#1,priority(a0)
00011dfa 117c00080019	move.b	#8,width_pixels(a0)
00011e00 317cfd000012	move.w	#-$300,y_vel(a0)
00011e06 4a680012	tst.w	y_vel(a0)
00011e0a 6a0046da	bpl.w	DeleteObject
00011e0e 6100459c	bsr.w	ObjectMove
00011e12 066800180012	addi.w	#$18,y_vel(a0)
00011e18 600046da	bra.w	DisplaySprite
00011f3c 4ef900003390	jmp	(extractJmpToName("JmpTo_RandomNumber")).l
00011f44 7000	moveq	#0,d0
00011f46 10280024	move.b	routine(a0),d0
00011f4a 323b0006	move.w	Obj25_Index(pc,d0.w),d1
00011f4e 4efb1002	jmp	Obj25_Index(pc,d1.w)
00011f5c 54280024	addq.b	#2,routine(a0)
00011f60 316800080032	move.w	x_pos(a0),objoff_32(a0)
00011f66 217c000123820004	move.l	#Obj25_MapUnc_12382,mappings(a0)
00011f6e 317c26bc0002	move.w	#make_art_tile(ArtTile_ArtNem_Ring,1,0),art_tile(a0)
00011f74 61004df8	bsr.w	Adjust2PArtPointer
00011f78 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00011f7e 117c00020018	move.b	#2,priority(a0)
00011f84 117c00470020	move.b	#$47,collision_flags(a0)
00011f8a 117c00080019	move.b	#8,width_pixels(a0)
00011f90 1178fea3001a	move.b	(Rings_anim_frame).w,mapping_frame(a0)
00011f96 30280032	move.w	objoff_32(a0),d0
00011f9a 6000446e	bra.w	MarkObjGone2
00011f9e 54280024	addq.b	#2,routine(a0)
00011fa2 117c00000020	move.b	#0,collision_flags(a0)
00011fa8 117c00010018	move.b	#1,priority(a0)
00011fae 6112	bsr.s	CollectRing
00011fb0 43f90001237a	lea	(Ani_Ring).l,a1
00011fb6 6100458c	bsr.w	AnimateSprite
00011fba 60004538	bra.w	DisplaySprite
00011fbe 60004526	bra.w	DeleteObject
00011fc2 4a28003f	tst.b	parent+1(a0)
00011fc6 6656	bne.s	CollectRing_Tails
00011fc8 0c7803e7fef0	cmpi.w	#999,(Rings_Collected).w
00011fce 6404	bhs.s	CollectRing_1P
00011fd0 5278fef0	addq.w	#1,(Rings_Collected).w
00011fd4 303c00b5	move.w	#SndID_Ring,d0
00011fd8 0c7803e7fe20	cmpi.w	#999,(Ring_count).w
00011fde 6436	bhs.s	JmpTo_PlaySound2
00011fe0 5278fe20	addq.w	#1,(Ring_count).w
00011fe4 00380001fe1d	ori.b	#1,(Update_HUD_rings).w
00011fea 0c780064fe20	cmpi.w	#100,(Ring_count).w
00011ff0 6524	blo.s	JmpTo_PlaySound2
00011ff2 08f80001fe1b	bset	#1,(Extra_life_flags).w
00011ff8 6710	beq.s	+
00011ffa 0c7800c8fe20	cmpi.w	#200,(Ring_count).w
00012000 6514	blo.s	JmpTo_PlaySound2
00012002 08f80002fe1b	bset	#2,(Extra_life_flags).w
00012008 660c	bne.s	JmpTo_PlaySound2
0001200a 5238fe12	addq.b	#1,(Life_count).w
0001200e 5238fe1c	addq.b	#1,(Update_HUD_lives).w
00012012 303c0098	move.w	#MusID_ExtraLife,d0
00012016 4ef900001376	jmp	(PlaySound2).l
0001201c 4e75	rts	
0001201e 0c7803e7fef2	cmpi.w	#999,(Rings_Collected_2P).w
00012024 6404	bhs.s	+
00012026 5278fef2	addq.w	#1,(Rings_Collected_2P).w
0001202a 0c7803e7fed0	cmpi.w	#999,(Ring_count_2P).w
00012030 6404	bhs.s	+
00012032 5278fed0	addq.w	#1,(Ring_count_2P).w
00012036 4a78ffd8	tst.w	(Two_player_mode).w
0001203a 6798	beq.s	CollectRing_1P
0001203c 00380001fec9	ori.b	#1,(Update_HUD_rings_2P).w
00012042 303c00b5	move.w	#SndID_Ring,d0
00012046 0c780064fed0	cmpi.w	#100,(Ring_count_2P).w
0001204c 6524	blo.s	JmpTo2_PlaySound2
0001204e 08f80001fec7	bset	#1,(Extra_life_flags_2P).w
00012054 6710	beq.s	+
00012056 0c7800c8fed0	cmpi.w	#200,(Ring_count_2P).w
0001205c 6514	blo.s	JmpTo2_PlaySound2
0001205e 08f80002fec7	bset	#2,(Extra_life_flags_2P).w
00012064 660c	bne.s	JmpTo2_PlaySound2
00012066 5238fec6	addq.b	#1,(Life_count_2P).w
0001206a 5238fec8	addq.b	#1,(Update_HUD_lives_2P).w
0001206e 303c0098	move.w	#MusID_ExtraLife,d0
00012072 4ef900001376	jmp	(PlaySound2).l
00012078 7000	moveq	#0,d0
0001207a 10280024	move.b	routine(a0),d0
0001207e 323b0006	move.w	Obj37_Index(pc,d0.w),d1
00012082 4efb1002	jmp	Obj37_Index(pc,d1.w)
00012090 2248	movea.l	a0,a1
00012092 7a00	moveq	#0,d5
00012094 3a38fe20	move.w	(Ring_count).w,d5
00012098 4a28003f	tst.b	parent+1(a0)
0001209c 6704	beq.s	+
0001209e 3a38fed0	move.w	(Ring_count_2P).w,d5
000120a2 7020	moveq	#$20,d0
000120a4 ba40	cmp.w	d0,d5
000120a6 6502	blo.s	+
000120a8 3a00	move.w	d0,d5
000120aa 5345	subq.w	#1,d5
000120ac 383c0288	move.w	#$288,d4
000120b0 6008	bra.s	+
000120b6 6600008a	bne.w	+++
000120c0 54290024	addq.b	#2,routine(a1)
000120c4 137c00080016	move.b	#8,y_radius(a1)
000120ca 137c00080017	move.b	#8,x_radius(a1)
000120d0 336800080008	move.w	x_pos(a0),x_pos(a1)
000120d6 3368000c000c	move.w	y_pos(a0),y_pos(a1)
000120dc 237c000123820004	move.l	#Obj25_MapUnc_12382,mappings(a1)
000120e4 337c26bc0002	move.w	#make_art_tile(ArtTile_ArtNem_Ring,1,0),art_tile(a1)
000120ea 61004c9e	bsr.w	Adjust2PArtPointer2
000120ee 137c00840001	move.b	#1<<render_flags.on_screen|1<<render_flags.level_fg,render_flags(a1)
000120f4 137c00030018	move.b	#3,priority(a1)
000120fa 137c00470020	move.b	#$47,collision_flags(a1)
00012100 137c00080019	move.b	#8,width_pixels(a1)
00012106 11fc00fffea6	move.b	#-1,(Ring_spill_anim_counter).w
0001210c 4a44	tst.w	d4
0001210e 6b22	bmi.s	+
00012110 3004	move.w	d4,d0
00012116 3404	move.w	d4,d2
00012118 e04a	lsr.w	#8,d2
0001211a e560	asl.w	d2,d0
0001211c e561	asl.w	d2,d1
0001211e 3400	move.w	d0,d2
00012120 3601	move.w	d1,d3
00012122 06040010	addi.b	#$10,d4
00012126 640a	bcc.s	+
00012128 04440080	subi.w	#$80,d4
0001212c 6404	bcc.s	+
0001212e 383c0288	move.w	#$288,d4
00012132 33420010	move.w	d2,x_vel(a1)
00012136 33430012	move.w	d3,y_vel(a1)
0001213a 4442	neg.w	d2
0001213c 4444	neg.w	d4
0001213e 51cdff72	dbf	d5,-
00012142 303c00c6	move.w	#SndID_RingSpill,d0
00012146 4eb900001376	jsr	(PlaySound2).l
0001214c 4a28003f	tst.b	parent+1(a0)
00012150 6614	bne.s	+
00012152 31fc0000fe20	move.w	#0,(Ring_count).w
00012158 11fc0080fe1d	move.b	#$80,(Update_HUD_rings).w
0001215e 11fc0000fe1b	move.b	#0,(Extra_life_flags).w
00012164 6012	bra.s	Obj37_Main
00012166 31fc0000fed0	move.w	#0,(Ring_count_2P).w
0001216c 11fc0080fec9	move.b	#$80,(Update_HUD_rings_2P).w
00012172 11fc0000fec7	move.b	#0,(Extra_life_flags_2P).w
00012178 1178fea7001a	move.b	(Ring_spill_anim_frame).w,mapping_frame(a0)
0001217e 6100422c	bsr.w	ObjectMove
00012182 066800180012	addi.w	#$18,y_vel(a0)
00012188 6b2e	bmi.s	loc_121B8
0001218a 1038fe0f	move.b	(Vint_runcount+3).w,d0
0001218e d007	add.b	d7,d0
00012190 02000007	andi.b	#7,d0
00012194 6622	bne.s	loc_121B8
00012196 4a280001	tst.b	render_flags(a0)
0001219a 6a34	bpl.s	loc_121D0
0001219c 4eb90001ee56	jsr	(RingCheckFloorDist).l
000121a2 4a41	tst.w	d1
000121a4 6a12	bpl.s	loc_121B8
000121a6 d368000c	add.w	d1,y_pos(a0)
000121aa 30280012	move.w	y_vel(a0),d0
000121ae e440	asr.w	#2,d0
000121b0 91680012	sub.w	d0,y_vel(a0)
000121b4 44680012	neg.w	y_vel(a0)
000121b8 4a38fea6	tst.b	(Ring_spill_anim_counter).w
000121bc 673e	beq.s	Obj37_Delete
000121be 3038eece	move.w	(Camera_Max_Y_pos).w,d0
000121c2 064000e0	addi.w	#screen_height,d0
000121c6 b068000c	cmp.w	y_pos(a0),d0
000121ca 6530	blo.s	Obj37_Delete
000121cc 60004326	bra.w	DisplaySprite
000121d0 4a78ffd8	tst.w	(Two_player_mode).w
000121d4 66000026	bne.w	Obj37_Delete
000121d8 60de	bra.s	loc_121B8
000121da 54280024	addq.b	#2,routine(a0)
000121de 117c00000020	move.b	#0,collision_flags(a0)
000121e4 117c00010018	move.b	#1,priority(a0)
000121ea 6100fdd6	bsr.w	CollectRing
000121ee 43f90001237a	lea	(Ani_Ring).l,a1
000121f4 6100434e	bsr.w	AnimateSprite
000121f8 600042fa	bra.w	DisplaySprite
000121fc 600042e8	bra.w	DeleteObject
00012200 7000	moveq	#0,d0
00012202 10280024	move.b	routine(a0),d0
00012206 323b0006	move.w	BigRing_States(pc,d0.w),d1
0001220a 4efb1002	jmp	BigRing_States(pc,d1.w)
00012216 217c000123e60004	move.l	#Obj37_MapUnc_123E6,mappings(a0)
0001221e 317c24000002	move.w	#make_art_tile(ArtTile_ArtNem_BigRing,1,0),art_tile(a0)
00012224 61004b48	bsr.w	Adjust2PArtPointer
00012228 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0001222e 117c00400019	move.b	#$40,width_pixels(a0)
00012234 4a280001	tst.b	render_flags(a0)
00012238 6a2a	bpl.s	BigRing_Main
0001223a 0c380006ffb0	cmpi.b	#6,(Got_Emerald).w
00012240 6700007e	beq.w	BigRing_Delete
00012244 0c780032fe20	cmpi.w	#50,(Ring_count).w
0001224a 6402	bhs.s	+
0001224c 4e75	rts	
0001224e 54280024	addq.b	#2,routine(a0)
00012252 117c00020018	move.b	#2,priority(a0)
00012258 117c00520020	move.b	#$52,collision_flags(a0)
0001225e 31fc0c40f7be	move.w	#$C40,(BigRingGraphics).w
00012264 1178fea3001a	move.b	(Rings_anim_frame).w,mapping_frame(a0)
0001226a 30280008	move.w	x_pos(a0),d0
0001226e 0240ff80	andi.w	#$FF80,d0
00012272 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00012276 0c400280	cmpi.w	#$280,d0
0001227a 6200426a	bhi.w	DeleteObject
0001227e 60004274	bra.w	DisplaySprite
00012282 55280024	subq.b	#2,routine(a0)
00012286 117c00000020	move.b	#0,collision_flags(a0)
0001228c 61005d4c	bsr.w	AllocateObject
00012290 66000022	bne.w	+
00012294 336800080008	move.w	x_pos(a0),x_pos(a1)
0001229a 3368000c000c	move.w	y_pos(a0),y_pos(a1)
000122a0 2348003c	move.l	a0,objoff_3C(a1)
000122a4 3038b008	move.w	(MainCharacter+x_pos).w,d0
000122a8 b0680008	cmp.w	x_pos(a0),d0
000122ac 6506	blo.s	+
000122ae 08e900000001	bset	#render_flags.x_flip,render_flags(a1)
000122b4 303c00c3	move.w	#SndID_EnterGiantRing,d0
000122b8 4eb900001376	jsr	(PlaySound2).l
000122be 60a4	bra.s	BigRing_Main
000122c0 60004224	bra.w	DeleteObject
000122c4 7000	moveq	#0,d0
000122c6 10280024	move.b	routine(a0),d0
000122ca 323b0006	move.w	BigRingFlash_States(pc,d0.w),d1
000122ce 4efb1002	jmp	BigRingFlash_States(pc,d1.w)
000122d8 54280024	addq.b	#2,routine(a0)
000122dc 217c000124e60004	move.l	#Obj37_MapUnc_124E6,mappings(a0)
000122e4 317c24620002	move.w	#make_art_tile(ArtTile_ArtNem_BigRing_Flash,1,0),art_tile(a0)
000122ea 61004a82	bsr.w	Adjust2PArtPointer
000122ee 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000122f4 117c00000018	move.b	#0,priority(a0)
000122fa 117c00200019	move.b	#$20,width_pixels(a0)
00012300 117c00ff001a	move.b	#-1,mapping_frame(a0)
00012306 6118	bsr.s	BigRingFlash_Animate
00012308 30280008	move.w	x_pos(a0),d0
0001230c 0240ff80	andi.w	#$FF80,d0
00012310 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00012314 0c400280	cmpi.w	#$280,d0
00012318 620041cc	bhi.w	DeleteObject
0001231c 600041d6	bra.w	DisplaySprite
00012320 5328001e	subq.b	#1,anim_frame_duration(a0)
00012324 6a40	bpl.s	+
00012326 117c0001001e	move.b	#1,anim_frame_duration(a0)
0001232c 5228001a	addq.b	#1,mapping_frame(a0)
00012330 0c280008001a	cmpi.b	#8,mapping_frame(a0)
00012336 6430	bhs.s	++
00012338 0c280003001a	cmpi.b	#3,mapping_frame(a0)
0001233e 6626	bne.s	+
00012340 2268003c	movea.l	objoff_3C(a0),a1
00012344 137c00060024	move.b	#6,routine(a1)
0001234a 11fc001cb01c	move.b	#AniIDSonAni_Blank,(MainCharacter+anim).w
00012350 11fc0001f7cd	move.b	#1,(f_bigring).w
00012356 43f8b000	lea	(MainCharacter).w,a1
0001235a 08a90001002b	bclr	#status_secondary.invincible,status_secondary(a1)
00012360 08a90000002b	bclr	#status_secondary.shield,status_secondary(a1)
00012368 54280024	addq.b	#2,routine(a0)
0001236c 31fc0000b000	move.w	#0,(MainCharacter).w
00012372 588f	addq.l	#4,sp
00012374 4e75	rts	
00012376 6000416e	bra.w	DeleteObject
000125e6 7000	moveq	#0,d0
000125e8 10280024	move.b	routine(a0),d0
000125ec 323b0006	move.w	ObjDC_Index(pc,d0.w),d1
000125f0 4efb1002	jmp	ObjDC_Index(pc,d1.w)
000125fa 7200	moveq	#0,d1
000125fc 32280038	move.w	casino_prize_machine_x_pos(a0),d1
00012600 4841	swap	d1
00012602 20280030	move.l	casino_prize_x_pos(a0),d0
00012606 9081	sub.l	d1,d0
00012608 e880	asr.l	#4,d0
0001260a 91a80030	sub.l	d0,casino_prize_x_pos(a0)
0001260e 316800300008	move.w	casino_prize_x_pos(a0),x_pos(a0)
00012614 7200	moveq	#0,d1
00012616 3228003a	move.w	casino_prize_machine_y_pos(a0),d1
0001261a 4841	swap	d1
0001261c 20280034	move.l	casino_prize_y_pos(a0),d0
00012620 9081	sub.l	d1,d0
00012622 e880	asr.l	#4,d0
00012624 91a80034	sub.l	d0,casino_prize_y_pos(a0)
00012628 31680034000c	move.w	casino_prize_y_pos(a0),y_pos(a0)
0001262e 43fa002e	lea	Ani_objDC(pc),a1
00012632 61003f10	bsr.w	AnimateSprite
00012636 5368003c	subq.w	#1,casino_prize_display_delay(a0)
0001263a 66003eb8	bne.w	DisplaySprite
0001263e 2268002a	movea.l	objoff_2A(a0),a1
00012642 5351	subq.w	#1,(a1)
00012644 6100f97c	bsr.w	CollectRing
0001264e 43fafd2a	lea	Ani_Ring(pc),a1
00012652 61003ef0	bsr.w	AnimateSprite
00012656 60003e9c	bra.w	DisplaySprite
0001265a 60003e8a	bra.w	DeleteObject
00012666 4e71	nop	
00012668 4ef9000033b6	jmp	(extractJmpToName("JmpTo4_CalcSine")).l
00012670 7000	moveq	#0,d0
00012672 10280024	move.b	routine(a0),d0
00012676 323b0006	move.w	Obj26_Index(pc,d0.w),d1
0001267a 4efb1002	jmp	Obj26_Index(pc,d1.w)
00012688 54280024	addq.b	#2,routine(a0)
0001268c 117c000e0016	move.b	#$E,y_radius(a0)
00012692 117c000e0017	move.b	#$E,x_radius(a0)
00012698 217c00012d360004	move.l	#Obj26_MapUnc_12D36,mappings(a0)
000126a0 317c06800002	move.w	#make_art_tile(ArtTile_ArtNem_Powerups,0,0),art_tile(a0)
000126a6 610046c6	bsr.w	Adjust2PArtPointer
000126aa 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
000126b0 117c00030018	move.b	#3,priority(a0)
000126b6 117c000f0019	move.b	#$F,width_pixels(a0)
000126bc 45f8fc00	lea	(Object_Respawn_Table).w,a2
000126c0 7000	moveq	#0,d0
000126c2 10280023	move.b	respawn_index(a0),d0
000126c6 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
000126cc 083200000002	btst	#0,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
000126d2 670e	beq.s	+
000126d4 117c00080024	move.b	#8,routine(a0)
000126da 117c000b001a	move.b	#$B,mapping_frame(a0)
000126e0 4e75	rts	
000126e2 117c00460020	move.b	#$46,collision_flags(a0)
000126e8 11680028001c	move.b	subtype(a0),anim(a0)
000126ee 4a78ffd8	tst.w	(Two_player_mode).w
000126f2 6706	beq.s	Obj26_Main
000126f4 117c0009001c	move.b	#9,anim(a0)
000126fa 10280025	move.b	routine_secondary(a0),d0
000126fe 671c	beq.s	SolidObject_Monitor
00012700 61003c7e	bsr.w	ObjectMoveAndFall
00012704 4eb90001edfa	jsr	(ObjCheckFloorDist).l
0001270a 4a41	tst.w	d1
0001270c 6a00000e	bpl.w	SolidObject_Monitor
00012710 d368000c	add.w	d1,y_pos(a0)
00012714 42680012	clr.w	y_vel(a0)
00012718 42280025	clr.b	routine_secondary(a0)
0001271c 323c001a	move.w	#$1A,d1
00012720 343c000f	move.w	#$F,d2
00012724 3602	move.w	d2,d3
00012726 5243	addq.w	#1,d3
00012728 38280008	move.w	x_pos(a0),d4
0001272c 43f8b000	lea	(MainCharacter).w,a1
00012730 7c03	moveq	#p1_standing_bit,d6
00012732 48e77800	movem.l	d1-d4,-(sp)
00012736 6100001e	bsr.w	SolidObject_Monitor_Sonic
0001273a 4cdf001e	movem.l	(sp)+,d1-d4
0001273e 43f8b040	lea	(Sidekick).w,a1
00012742 7c04	moveq	#p2_standing_bit,d6
00012744 61000022	bsr.w	SolidObject_Monitor_Tails
00012748 43f900012cce	lea	(Ani_obj26).l,a1
0001274e 61003df4	bsr.w	AnimateSprite
00012752 60003c7e	bra.w	MarkObjGone
00012756 0d280022	btst	d6,status(a0)
0001275a 6626	bne.s	Obj26_ChkOverEdge
0001275c 0c290002001c	cmpi.b	#AniIDSonAni_Roll,anim(a1)
00012762 6600728c	bne.w	SolidObject_cont
00012766 4e75	rts	
00012768 0d280022	btst	d6,status(a0)
0001276c 6614	bne.s	Obj26_ChkOverEdge
0001276e 4a78ffd8	tst.w	(Two_player_mode).w
00012772 6700727c	beq.w	SolidObject_cont
00012776 0c290002001c	cmpi.b	#AniIDSonAni_Roll,anim(a1)
0001277c 66007272	bne.w	SolidObject_cont
00012780 4e75	rts	
00012782 3401	move.w	d1,d2
00012784 d442	add.w	d2,d2
00012786 082900010022	btst	#status.player.in_air,status(a1)
0001278c 6610	bne.s	+
0001278e 30290008	move.w	x_pos(a1),d0
00012792 90680008	sub.w	x_pos(a0),d0
00012796 d041	add.w	d1,d0
00012798 6b04	bmi.s	+
0001279a b042	cmp.w	d2,d0
0001279c 6514	blo.s	Obj26_CharStandOn
0001279e 08a900030022	bclr	#status.player.on_object,status(a1)
000127a4 08e900010022	bset	#status.player.in_air,status(a1)
000127aa 0da80022	bclr	d6,status(a0)
000127ae 7800	moveq	#0,d4
000127b0 4e75	rts	
000127b2 3404	move.w	d4,d2
000127b4 610073dc	bsr.w	MvSonicOnPtfm
000127b8 7800	moveq	#0,d4
000127ba 4e75	rts	
000127bc 10280022	move.b	status(a0),d0
000127c0 02000078	andi.b	#standing_mask|pushing_mask,d0
000127c4 6726	beq.s	Obj26_SpawnIcon
000127c6 1200	move.b	d0,d1
000127c8 02010028	andi.b	#p1_standing|p1_pushing,d1
000127cc 670c	beq.s	+
000127ce 023800d7b022	andi.b	#~(1<<status.player.on_object|1<<status.player.pushing),(MainCharacter+status).w
000127d4 00380002b022	ori.b	#1<<status.player.in_air,(MainCharacter+status).w
000127da 02000050	andi.b	#p2_standing|p2_pushing,d0
000127de 670c	beq.s	Obj26_SpawnIcon
000127e0 023800d7b062	andi.b	#~(1<<status.player.on_object|1<<status.player.pushing),(Sidekick+status).w
000127e6 00380002b062	ori.b	#1<<status.player.in_air,(Sidekick+status).w
000127ec 42280022	clr.b	status(a0)
000127f0 54280024	addq.b	#2,routine(a0)
000127f4 117c00000020	move.b	#0,collision_flags(a0)
000127fa 610057de	bsr.w	AllocateObject
000127fe 661e	bne.s	Obj26_SpawnSmoke
00012806 336800080008	move.w	x_pos(a0),x_pos(a1)
0001280c 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00012812 1368001c001c	move.b	anim(a0),anim(a1)
00012818 3368003e003e	move.w	parent(a0),parent(a1)
0001281e 610057ba	bsr.w	AllocateObject
00012822 6616	bne.s	+
0001282a 54290024	addq.b	#2,routine(a1)
0001282e 336800080008	move.w	x_pos(a0),x_pos(a1)
00012834 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0001283a 45f8fc00	lea	(Object_Respawn_Table).w,a2
0001283e 7000	moveq	#0,d0
00012840 10280023	move.b	respawn_index(a0),d0
00012844 08f200000002	bset	#0,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
0001284a 117c000a001c	move.b	#$A,anim(a0)
00012850 60003ca2	bra.w	DisplaySprite
00012854 7000	moveq	#0,d0
00012856 10280024	move.b	routine(a0),d0
0001285a 323b0006	move.w	Obj2E_Index(pc,d0.w),d1
0001285e 4efb1002	jmp	Obj2E_Index(pc,d1.w)
00012868 54280024	addq.b	#2,routine(a0)
0001286c 317c86800002	move.w	#make_art_tile(ArtTile_ArtNem_Powerups,0,1),art_tile(a0)
00012872 610044fa	bsr.w	Adjust2PArtPointer
00012876 117c00240001	move.b	#1<<render_flags.static_mappings|1<<render_flags.level_fg,render_flags(a0)
0001287c 117c00030018	move.b	#3,priority(a0)
00012882 117c00080019	move.b	#8,width_pixels(a0)
00012888 317cfd000012	move.w	#-$300,y_vel(a0)
0001288e 7000	moveq	#0,d0
00012890 1028001c	move.b	anim(a0),d0
00012894 4a78ffd8	tst.w	(Two_player_mode).w
00012898 672c	beq.s	loc_128C6
0001289a 3038fe04	move.w	(Level_frame_counter).w,d0
0001289e 02400007	andi.w	#7,d0
000128a2 5240	addq.w	#1,d0
000128a4 4a78ff74	tst.w	(Two_player_items).w
000128a8 6702	beq.s	+
000128aa 7008	moveq	#8,d0
000128ac 0c400008	cmpi.w	#8,d0
000128b0 6610	bne.s	+
000128b2 1238fe1e	move.b	(Update_HUD_timer).w,d1
000128b6 d238feca	add.b	(Update_HUD_timer_2P).w,d1
000128ba 0c010002	cmpi.b	#2,d1
000128be 6702	beq.s	+
000128c0 7007	moveq	#7,d0
000128c2 1140001c	move.b	d0,anim(a0)
000128c6 5200	addq.b	#1,d0
000128c8 1140001a	move.b	d0,mapping_frame(a0)
000128cc 227c00012d36	movea.l	#Obj26_MapUnc_12D36,a1
000128d2 d000	add.b	d0,d0
000128d4 d2f10000	adda.w	(a1,d0.w),a1
000128d8 5449	addq.w	#2,a1
000128da 21490004	move.l	a1,mappings(a0)
000128de 6104	bsr.s	+
000128e0 60003c12	bra.w	DisplaySprite
000128e4 4a680012	tst.w	y_vel(a0)
000128e8 6a00000e	bpl.w	+
000128ec 61003abe	bsr.w	ObjectMove
000128f0 066800180012	addi.w	#$18,y_vel(a0)
000128f6 4e75	rts	
000128f8 54280024	addq.b	#2,routine(a0)
000128fc 317c001d001e	move.w	#$1D,anim_frame_duration(a0)
00012902 3268003e	movea.w	parent(a0),a1
00012906 45f8fef4	lea	(Monitors_Broken).w,a2
0001290a b2fcb000	cmpa.w	#MainCharacter,a1
0001290e 6704	beq.s	+
00012910 45f8fef6	lea	(Monitors_Broken_2P).w,a2
00012914 7000	moveq	#0,d0
00012916 1028001c	move.b	anim(a0),d0
0001291a d040	add.w	d0,d0
0001291c 303b0006	move.w	Obj2E_Types(pc,d0.w),d0
00012920 4efb0002	jmp	Obj2E_Types(pc,d0.w)
00012938 5252	addq.w	#1,(a2)
0001293a 60003154	bra.w	Touch_ChkHurt2
0001293e 5278fef4	addq.w	#1,(Monitors_Broken).w
00012942 5238fe12	addq.b	#1,(Life_count).w
00012946 5238fe1c	addq.b	#1,(Update_HUD_lives).w
0001294a 303c0098	move.w	#MusID_ExtraLife,d0
0001294e 4ef90000135e	jmp	(PlayMusic).l
00012954 5278fef6	addq.w	#1,(Monitors_Broken_2P).w
00012958 5238fec6	addq.b	#1,(Life_count_2P).w
0001295c 5238fec8	addq.b	#1,(Update_HUD_lives_2P).w
00012960 303c0098	move.w	#MusID_ExtraLife,d0
00012964 4ef90000135e	jmp	(PlayMusic).l
0001296a 5252	addq.w	#1,(a2)
0001296c 45f8fe20	lea	(Ring_count).w,a2
00012970 47f8fe1d	lea	(Update_HUD_rings).w,a3
00012974 49f8fe1b	lea	(Extra_life_flags).w,a4
00012978 4bf8fef0	lea	(Rings_Collected).w,a5
0001297c b2fcb000	cmpa.w	#MainCharacter,a1
00012980 6710	beq.s	+
00012982 45f8fed0	lea	(Ring_count_2P).w,a2
00012986 47f8fec9	lea	(Update_HUD_rings_2P).w,a3
0001298a 49f8fec7	lea	(Extra_life_flags_2P).w,a4
0001298e 4bf8fef2	lea	(Rings_Collected_2P).w,a5
00012992 0655000a	addi.w	#10,(a5)
00012996 0c5503e7	cmpi.w	#999,(a5)
0001299a 6504	blo.s	+
0001299c 3abc03e7	move.w	#999,(a5)
000129a0 0652000a	addi.w	#10,(a2)
000129a4 0c5203e7	cmpi.w	#999,(a2)
000129a8 6504	blo.s	+
000129aa 34bc03e7	move.w	#999,(a2)
000129ae 00130001	ori.b	#1,(a3)
000129b2 0c520064	cmpi.w	#100,(a2)
000129b6 6512	blo.s	+
000129b8 08d40001	bset	#1,(a4)
000129bc 6716	beq.s	ChkPlayer_1up
000129be 0c5200c8	cmpi.w	#200,(a2)
000129c2 6506	blo.s	+
000129c4 08d40002	bset	#2,(a4)
000129c8 670a	beq.s	ChkPlayer_1up
000129ca 303c00b5	move.w	#SndID_Ring,d0
000129ce 4ef90000135e	jmp	(PlayMusic).l
000129d4 b2fcb000	cmpa.w	#MainCharacter,a1
000129d8 6700ff64	beq.w	sonic_1up
000129dc 6000ff76	bra.w	tails_1up
000129e0 5252	addq.w	#1,(a2)
000129e2 08e90002002b	bset	#status_secondary.speed_shoes,status_secondary(a1)
000129e8 337c04b00034	move.w	#$4B0,speedshoes_time(a1)
000129ee b2fcb000	cmpa.w	#MainCharacter,a1
000129f2 661c	bne.s	super_shoes_Tails
000129f4 0c780002ff70	cmpi.w	#2,(Player_mode).w
000129fa 6714	beq.s	super_shoes_Tails
000129fc 31fc0c00f760	move.w	#$C00,(Sonic_top_speed).w
00012a02 31fc0018f762	move.w	#$18,(Sonic_acceleration).w
00012a08 31fc0080f764	move.w	#$80,(Sonic_deceleration).w
00012a0e 6012	bra.s	+
00012a10 31fc0c00fec0	move.w	#$C00,(Tails_top_speed).w
00012a16 31fc0018fec2	move.w	#$18,(Tails_acceleration).w
00012a1c 31fc0080fec4	move.w	#$80,(Tails_deceleration).w
00012a22 303c00fb	move.w	#MusID_SpeedUp,d0
00012a26 4ef90000135e	jmp	(PlayMusic).l
00012a2c 5252	addq.w	#1,(a2)
00012a2e 08e90000002b	bset	#status_secondary.shield,status_secondary(a1)
00012a34 303c00af	move.w	#SndID_Shield,d0
00012a38 4eb90000135e	jsr	(PlayMusic).l
00012a3e 4a28003f	tst.b	parent+1(a0)
00012a42 660c	bne.s	+
00012a44 11fc0038d180	move.b	#ObjID_Shield,(Sonic_Shield+id).w
00012a4a 31c9d1be	move.w	a1,(Sonic_Shield+parent).w
00012a4e 4e75	rts	
00012a50 11fc0038d1c0	move.b	#ObjID_Shield,(Tails_Shield+id).w
00012a56 31c9d1fe	move.w	a1,(Tails_Shield+parent).w
00012a5a 4e75	rts	
00012a5c 5252	addq.w	#1,(a2)
00012a5e 4a38fe19	tst.b	(Super_Sonic_flag).w
00012a62 6640	bne.s	+++
00012a64 08e90001002b	bset	#status_secondary.invincible,status_secondary(a1)
00012a6a 337c04b00032	move.w	#20*60,invincibility_time(a1)
00012a70 4a38f7aa	tst.b	(Current_Boss_ID).w
00012a74 6612	bne.s	+
00012a76 0c29000c0028	cmpi.b	#12,air_left(a1)
00012a7c 630a	bls.s	+
00012a7e 303c0097	move.w	#MusID_Invincible,d0
00012a82 4eb90000135e	jsr	(PlayMusic).l
00012a88 4a28003f	tst.b	parent+1(a0)
00012a8c 660c	bne.s	+
00012a8e 11fc0035d200	move.b	#ObjID_InvStars,(Sonic_InvincibilityStars+id).w
00012a94 31c9d23e	move.w	a1,(Sonic_InvincibilityStars+parent).w
00012a98 4e75	rts	
00012a9a 11fc0035d300	move.b	#ObjID_InvStars,(Tails_InvincibilityStars+id).w
00012aa0 31c9d33e	move.w	a1,(Tails_InvincibilityStars+parent).w
00012aa4 4e75	rts	
00012aa6 5252	addq.w	#1,(a2)
00012aa8 0c380006b024	cmpi.b	#6,(MainCharacter+routine).w
00012aae 6408	bhs.s	+
00012ab0 0c380006b064	cmpi.b	#6,(Sidekick+routine).w
00012ab6 6502	blo.s	swap_players
00012ab8 4e75	rts	
00012aba 47f900012c52	lea	(teleport_swap_table).l,a3
00012ac0 7411	moveq	#(teleport_swap_table_end-teleport_swap_table)/6-1,d2
00012ac2 325b	movea.w	(a3)+,a1
00012ac4 345b	movea.w	(a3)+,a2
00012ac6 321b	move.w	(a3)+,d1
00012ac8 3011	move.w	(a1),d0
00012aca 32d2	move.w	(a2),(a1)+
00012acc 34c0	move.w	d0,(a2)+
00012ace 51c9fff8	dbf	d1,-
00012ad2 51caffee	dbf	d2,process_swap_table
00012ad6 11fc0001b01d	move.b	#AniIDSonAni_Run,(MainCharacter+prev_anim).w
00012adc 11fc0001b05d	move.b	#AniIDSonAni_Run,(Sidekick+prev_anim).w
00012ae2 11fc0000b01a	move.b	#0,(MainCharacter+mapping_frame).w
00012ae8 11fc0000b05a	move.b	#0,(Sidekick+mapping_frame).w
00012aee 11fc00fff766	move.b	#-1,(Sonic_LastLoadedDPLC).w
00012af4 11fc00fff7de	move.b	#-1,(Tails_LastLoadedDPLC).w
00012afa 11fc00fff7df	move.b	#-1,(TailsTails_LastLoadedDPLC).w
00012b00 43f8f786	lea	(Player_1_loaded_object_blocks).w,a1
00012b04 45f8f789	lea	(Player_2_loaded_object_blocks).w,a2
00012b08 7202	moveq	#2,d1
00012b0c 12d2	move.b	(a2),(a1)+
00012b0e 14c0	move.b	d0,(a2)+
00012b10 51c9fff8	dbf	d1,-
00012b14 04780180ee04	subi.w	#$180,(Camera_Y_pos).w
00012b1a 04780180ee24	subi.w	#$180,(Camera_Y_pos_P2).w
00012b20 3038b002	move.w	(MainCharacter+art_tile).w,d0
00012b24 02787fffb002	andi.w	#drawing_mask,(MainCharacter+art_tile).w
00012b2a 4a78b042	tst.w	(Sidekick+art_tile).w
00012b2e 6a06	bpl.s	+
00012b30 00788000b002	ori.w	#high_priority,(MainCharacter+art_tile).w
00012b36 02787fffb042	andi.w	#drawing_mask,(Sidekick+art_tile).w
00012b3c 4a40	tst.w	d0
00012b3e 6a06	bpl.s	+
00012b40 00788000b042	ori.w	#high_priority,(Sidekick+art_tile).w
00012b46 11fc0001eede	move.b	#1,(Camera_Max_Y_Pos_Changing).w
00012b4c 43f8b400	lea	(Dynamic_Object_RAM).w,a1
00012b50 726f	moveq	#(Dynamic_Object_RAM_End-Dynamic_Object_RAM)/object_size-1,d1
00012b52 0c110084	cmpi.b	#ObjID_PinballMode,id(a1)
00012b56 6706	beq.s	+
00012b58 0c110003	cmpi.b	#ObjID_PlaneSwitcher,id(a1)
00012b5c 660e	bne.s	++
00012b5e 10290034	move.b	objoff_34(a1),d0
00012b62 136900350034	move.b	objoff_35(a1),objoff_34(a1)
00012b68 13400035	move.b	d0,objoff_35(a1)
00012b6c 0c1100d6	cmpi.b	#ObjID_PointPokey,id(a1)
00012b70 660e	bne.s	+
00012b72 20290030	move.l	objoff_30(a1),d0
00012b76 236900340030	move.l	objoff_34(a1),objoff_30(a1)
00012b7c 23400034	move.l	d0,objoff_34(a1)
00012b80 0c110085	cmpi.b	#ObjID_LauncherSpring,id(a1)
00012b84 660e	bne.s	+
00012b86 10290036	move.b	objoff_36(a1),d0
00012b8a 136900370036	move.b	objoff_37(a1),objoff_36(a1)
00012b90 13400037	move.b	d0,objoff_37(a1)
00012b94 43e90040	lea	next_object(a1),a1
00012b98 51c9ffb8	dbf	d1,swap_loop_objects
00012b9c 43f8b000	lea	(MainCharacter).w,a1
00012ba0 11fc0038d180	move.b	#ObjID_Shield,(Sonic_Shield+id).w
00012ba6 31c9d1be	move.w	a1,(Sonic_Shield+parent).w
00012baa 11fc0035d200	move.b	#ObjID_InvStars,(Sonic_InvincibilityStars+id).w
00012bb0 31c9d23e	move.w	a1,(Sonic_InvincibilityStars+parent).w
00012bb4 082900020022	btst	#status.player.rolling,status(a1)
00012bba 660c	bne.s	+
00012bbc 137c00130016	move.b	#$13,y_radius(a1)
00012bc2 137c00090017	move.b	#9,x_radius(a1)
00012bc8 082900030022	btst	#status.player.on_object,status(a1)
00012bce 671c	beq.s	+
00012bd0 7000	moveq	#0,d0
00012bd2 1029003d	move.b	interact(a1),d0
00012bd6 ed48	lsl.w	#object_size_bits,d0
00012bd8 0680ffffb000	addi.l	#Object_RAM,d0
00012bde 2440	movea.l	d0,a2
00012be0 08aa00040022	bclr	#status.npc.p2_standing,status(a2)
00012be6 08ea00030022	bset	#status.npc.p1_standing,status(a2)
00012bec 43f8b040	lea	(Sidekick).w,a1
00012bf0 11fc0038d1c0	move.b	#ObjID_Shield,(Tails_Shield+id).w
00012bf6 31c9d1fe	move.w	a1,(Tails_Shield+parent).w
00012bfa 11fc0035d300	move.b	#ObjID_InvStars,(Tails_InvincibilityStars+id).w
00012c00 31c9d33e	move.w	a1,(Tails_InvincibilityStars+parent).w
00012c04 082900020022	btst	#status.player.rolling,status(a1)
00012c0a 660c	bne.s	+
00012c0c 137c000f0016	move.b	#$F,y_radius(a1)
00012c12 137c00090017	move.b	#9,x_radius(a1)
00012c18 082900030022	btst	#status.player.on_object,status(a1)
00012c1e 671c	beq.s	+
00012c20 7000	moveq	#0,d0
00012c22 1029003d	move.b	interact(a1),d0
00012c26 ed48	lsl.w	#object_size_bits,d0
00012c28 0680ffffb000	addi.l	#Object_RAM,d0
00012c2e 2440	movea.l	d0,a2
00012c30 08aa00030022	bclr	#status.npc.p1_standing,status(a2)
00012c36 08ea00040022	bset	#status.npc.p2_standing,status(a2)
00012c3c 11fc0040f622	move.b	#$40,(Teleport_timer).w
00012c42 11fc0001f623	move.b	#1,(Teleport_flag).w
00012c48 303c00ec	move.w	#SndID_Teleport,d0
00012c4c 4ef90000135e	jmp	(PlayMusic).l
00012cbe 5252	addq.w	#1,(a2)
00012cc0 4e75	rts	
00012cc2 5368001e	subq.w	#1,anim_frame_duration(a0)
00012cc6 6b00381e	bmi.w	DeleteObject
00012cca 60003828	bra.w	DisplaySprite
00012e16 4e71	nop	
00012e18 7000	moveq	#0,d0
00012e1a 10280024	move.b	routine(a0),d0
00012e1e 323b0006	move.w	Obj0E_Index(pc,d0.w),d1
00012e22 4efb1002	jmp	Obj0E_Index(pc,d1.w)
00012e38 54280024	addq.b	#2,routine(a0)
00012e3c 217c000136a80004	move.l	#Obj0E_MapUnc_136A8,mappings(a0)
00012e44 317c01500002	move.w	#make_art_tile(ArtTile_ArtNem_TitleSprites,0,0),art_tile(a0)
00012e4a 117c00040018	move.b	#4,priority(a0)
00012e50 116800280024	move.b	subtype(a0),routine(a0)
00012e56 60c0	bra.s	Obj0E
00012e58 52680034	addq.w	#1,obj0e_current_frame(a0)
00012e5c 0c6801200034	cmpi.w	#288,obj0e_current_frame(a0)
00012e62 6404	bhs.s	+
00012e64 61000656	bsr.w	TitleScreen_SetFinalState
00012e68 7000	moveq	#0,d0
00012e6a 10280025	move.b	routine_secondary(a0),d0
00012e6e 323b0006	move.w	Obj0E_Sonic_Index(pc,d0.w),d1
00012e72 4efb1002	jmp	Obj0E_Sonic_Index(pc,d1.w)
00012e8a 54280025	addq.b	#2,routine_secondary(a0)
00012e8e 117c0005001a	move.b	#5,mapping_frame(a0)
00012e94 317c01100008	move.w	#spriteScreenPositionXCentered(-16),x_pixel(a0)
00012e9a 317c00e0000a	move.w	#spriteScreenPositionYCentered(-16),y_pixel(a0)
00012ea0 43f8b0c0	lea	(IntroFlashingStar).w,a1
00012ea4 12bc000e	move.b	#ObjID_TitleIntro,id(a1)
00012ea8 137c00080028	move.b	#8,subtype(a1)
00012eae 43f8b140	lea	(IntroEmblemTop).w,a1
00012eb2 12bc000e	move.b	#ObjID_TitleIntro,id(a1)
00012eb6 137c00060028	move.b	#6,subtype(a1)
00012ebc 70a7	moveq	#signextendB(SndID_Sparkle),d0
00012ec2 0c6800380034	cmpi.w	#56,obj0e_current_frame(a0)
00012ec8 6402	bhs.s	+
00012eca 4e75	rts	
00012ecc 54280025	addq.b	#2,routine_secondary(a0)
00012ed0 43f8b100	lea	(TitleScreenPaletteChanger3).w,a1
00012ed4 12bc00c9	move.b	#ObjID_TtlScrPalChanger,id(a1)
00012ed8 137c00000028	move.b	#0,subtype(a1)
00012ede 50e80030	st.b	obj0e_music_playing(a0)
00012ee2 7099	moveq	#signextendB(MusID_Title),d0
00012ee8 0c6800800034	cmpi.w	#128,obj0e_current_frame(a0)
00012eee 6402	bhs.s	+
00012ef0 4e75	rts	
00012ef2 54280025	addq.b	#2,routine_secondary(a0)
00012ef6 43f9000133ec	lea	(Pal_133EC).l,a1
00012efc 45f8fb00	lea	(Normal_palette).w,a2
00012f00 7c0f	moveq	#bytesToWcnt(palette_line_size),d6
00012f04 51cefffc	dbf	d6,-
00012f08 43f8b180	lea	(IntroMaskingSprite).w,a1
00012f0c 12bc000e	move.b	#ObjID_TitleIntro,id(a1)
00012f10 137c000e0028	move.b	#$E,subtype(a1)
00012f16 4e75	rts	
00012f18 7424	moveq	#Obj0E_Sonic_Positions_End-Obj0E_Sonic_Positions+4,d2
00012f1a 43f900013046	lea	(Obj0E_Sonic_Positions).l,a1
00012f20 3028002a	move.w	obj0e_counter(a0),d0
00012f24 5240	addq.w	#1,d0
00012f26 3140002a	move.w	d0,obj0e_counter(a0)
00012f2a 02400003	andi.w	#3,d0
00012f2e 661e	bne.s	+
00012f30 3228002c	move.w	obj0e_array_index(a0),d1
00012f34 5841	addq.w	#4,d1
00012f36 b242	cmp.w	d2,d1
00012f38 640001d0	bhs.w	Obj0E_NextRoutineSecondary
00012f3c 3141002c	move.w	d1,obj0e_array_index(a0)
00012f40 203110fc	move.l	-4(a1,d1.w),d0
00012f44 3140000a	move.w	d0,y_pixel(a0)
00012f48 4840	swap	d0
00012f4a 31400008	move.w	d0,x_pixel(a0)
00012f4e 600035a4	bra.w	DisplaySprite
00012f52 43f900013686	lea	(Ani_obj0E).l,a1
00012f58 610035ea	bsr.w	AnimateSprite
00012f5c 60003596	bra.w	DisplaySprite
00012f60 54280025	addq.b	#2,routine_secondary(a0)
00012f64 117c0012001a	move.b	#$12,mapping_frame(a0)
00012f6a 43f8b1c0	lea	(IntroSonicHand).w,a1
00012f6e 12bc000e	move.b	#ObjID_TitleIntro,id(a1)
00012f72 137c000a0028	move.b	#$A,subtype(a1)
00012f78 6000357a	bra.w	DisplaySprite
00012f7c 0c6800c00034	cmpi.w	#192,obj0e_current_frame(a0)
00012f82 6512	blo.s	+
00012f84 54280025	addq.b	#2,routine_secondary(a0)
00012f88 43f8b080	lea	(IntroTails).w,a1
00012f8c 12bc000e	move.b	#ObjID_TitleIntro,id(a1)
00012f90 137c00040028	move.b	#4,subtype(a1)
00012f96 6000355c	bra.w	DisplaySprite
00012f9a 0c6801200034	cmpi.w	#288,obj0e_current_frame(a0)
00012fa0 6530	blo.s	+
00012fa2 54280025	addq.b	#2,routine_secondary(a0)
00012fa6 4268002c	clr.w	obj0e_array_index(a0)
00012faa 50e8002f	st.b	obj0e_intro_complete(a0)
00012fae 43f8fb40	lea	(Normal_palette_line3).w,a1
00012fb2 303c0eee	move.w	#$EEE,d0
00012fb6 7c0f	moveq	#bytesToWcnt(palette_line_size),d6
00012fba 51cefffc	dbf	d6,-
00012fbe 43f8b240	lea	(TitleScreenPaletteChanger2).w,a1
00012fc2 12bc00c9	move.b	#ObjID_TtlScrPalChanger,id(a1)
00012fc6 137c00020028	move.b	#2,subtype(a1)
00012fcc 11fc000fb400	move.b	#ObjID_TitleMenu,(TitleScreenMenu+id).w
00012fd2 60003520	bra.w	DisplaySprite
00012fd6 08380006fff8	btst	#6,(Graphics_Flags).w
00012fdc 670c	beq.s	+
00012fde 0c6801900034	cmpi.w	#400,obj0e_current_frame(a0)
00012fe4 6710	beq.s	++
00012fe6 6000350c	bra.w	DisplaySprite
00012fea 0c6801d00034	cmpi.w	#464,obj0e_current_frame(a0)
00012ff0 6704	beq.s	+
00012ff2 60003500	bra.w	DisplaySprite
00012ff6 43f8b440	lea	(IntroFallingStar).w,a1
00012ffa 12bc000e	move.b	#ObjID_TitleIntro,id(a1)
00012ffe 137c000c0028	move.b	#$C,subtype(a1)
00013004 54280025	addq.b	#2,routine_secondary(a0)
00013008 43f8b180	lea	(IntroMaskingSprite).w,a1
0001300c 610034da	bsr.w	DeleteObject2
00013010 600034e2	bra.w	DisplaySprite
00013014 1038fe0f	move.b	(Vint_runcount+3).w,d0
00013018 02000007	andi.b	#7,d0
0001301c 6618	bne.s	++
0001301e 3028002c	move.w	obj0e_array_index(a0),d0
00013022 5440	addq.w	#2,d0
00013024 0c40000c	cmpi.w	#CyclingPal_TitleStar_End-CyclingPal_TitleStar,d0
00013028 6502	blo.s	+
0001302a 7000	moveq	#0,d0
0001302c 3140002c	move.w	d0,obj0e_array_index(a0)
00013030 31fb0008fb4a	move.w	CyclingPal_TitleStar(pc,d0.w),(Normal_palette_line3+5*2).w
00013036 600034bc	bra.w	DisplaySprite
00013066 7000	moveq	#0,d0
00013068 10280025	move.b	routine_secondary(a0),d0
0001306c 323b0006	move.w	Obj0E_Tails_Index(pc,d0.w),d1
00013070 4efb1002	jmp	Obj0E_Tails_Index(pc,d1.w)
0001307e 54280025	addq.b	#2,routine_secondary(a0)
00013082 317c00d80008	move.w	#spriteScreenPositionXCentered(-72),x_pixel(a0)
00013088 317c00d8000a	move.w	#spriteScreenPositionYCentered(-24),y_pixel(a0)
0001308e 117c0001001c	move.b	#1,anim(a0)
00013094 4e75	rts	
00013096 7420	moveq	#Obj0E_Tails_Positions_End-Obj0E_Tails_Positions+4,d2
00013098 43f9000130b8	lea	(Obj0E_Tails_Positions).l,a1
0001309e 6000fe80	bra.w	Obj0E_Move
000130a2 54280025	addq.b	#2,routine_secondary(a0)
000130a6 43f8b200	lea	(IntroTailsHand).w,a1
000130aa 12bc000e	move.b	#ObjID_TitleIntro,id(a1)
000130ae 137c00100028	move.b	#$10,subtype(a1)
000130b4 6000343e	bra.w	DisplaySprite
000130d4 7000	moveq	#0,d0
000130d6 10280025	move.b	routine_secondary(a0),d0
000130da 323b0006	move.w	Obj0E_LogoTop_Index(pc,d0.w),d1
000130de 4efb1002	jmp	Obj0E_LogoTop_Index(pc,d1.w)
000130e6 117c000b001a	move.b	#$B,mapping_frame(a0)
000130ec 4a38fff8	tst.b	(Graphics_Flags).w
000130f0 6b06	bmi.s	+
000130f2 117c000a001a	move.b	#$A,mapping_frame(a0)
000130f8 117c00020018	move.b	#2,priority(a0)
000130fe 317c01200008	move.w	#spriteScreenPositionXCentered(0),x_pixel(a0)
00013104 317c00e8000a	move.w	#spriteScreenPositionYCentered(-8),y_pixel(a0)
0001310a 54280025	addq.b	#2,routine_secondary(a0)
0001310e 600033e4	bra.w	DisplaySprite
00013112 7000	moveq	#0,d0
00013114 10280025	move.b	routine_secondary(a0),d0
00013118 323b0006	move.w	Obj0E_MaskingSprite_Index(pc,d0.w),d1
0001311c 4efb1002	jmp	Obj0E_MaskingSprite_Index(pc,d1.w)
00013124 54280025	addq.b	#2,routine_secondary(a0)
00013128 317c00000002	move.w	#make_art_tile(ArtTile_ArtNem_Title,0,0),art_tile(a0)
0001312e 117c0011001a	move.b	#$11,mapping_frame(a0)
00013134 117c00020018	move.b	#2,priority(a0)
0001313a 317c01000008	move.w	#spriteScreenPositionXCentered(-32),x_pixel(a0)
00013140 317c00f0000a	move.w	#spriteScreenPositionYCentered(0),y_pixel(a0)
00013146 600033ac	bra.w	DisplaySprite
0001314a 7000	moveq	#0,d0
0001314c 10280025	move.b	routine_secondary(a0),d0
00013150 323b0006	move.w	Obj0E_FlashingStar_Index(pc,d0.w),d1
00013154 4efb1002	jmp	Obj0E_FlashingStar_Index(pc,d1.w)
00013160 54280025	addq.b	#2,routine_secondary(a0)
00013164 117c000c001a	move.b	#$C,mapping_frame(a0)
0001316a 006880000002	ori.w	#high_priority,art_tile(a0)
00013170 117c0002001c	move.b	#2,anim(a0)
00013176 117c00010018	move.b	#1,priority(a0)
0001317c 317c01000008	move.w	#spriteScreenPositionXCentered(-32),x_pixel(a0)
00013182 317c00a8000a	move.w	#spriteScreenPositionYCentered(-72),y_pixel(a0)
00013188 317c0004002a	move.w	#4,obj0e_counter(a0)
0001318e 4e75	rts	
00013190 5368002a	subq.w	#1,obj0e_counter(a0)
00013194 6b02	bmi.s	+
00013196 4e75	rts	
00013198 54280025	addq.b	#2,routine_secondary(a0)
0001319c 4e75	rts	
0001319e 117c00020025	move.b	#2,routine_secondary(a0)
000131a4 117c0000001b	move.b	#0,anim_frame(a0)
000131aa 117c0000001e	move.b	#0,anim_frame_duration(a0)
000131b0 317c0006002a	move.w	#6,obj0e_counter(a0)
000131b6 3028002c	move.w	obj0e_array_index(a0),d0
000131ba 5840	addq.w	#4,d0
000131bc 0c400028	cmpi.w	#Obj0E_FlashingStar_Positions_End-Obj0E_FlashingStar_Positions+4,d0
000131c0 64003324	bhs.w	DeleteObject
000131c4 3140002c	move.w	d0,obj0e_array_index(a0)
000131c8 203b000e	move.l	Obj0E_FlashingStar_Positions-4(pc,d0.w),d0
000131cc 3140000a	move.w	d0,y_pixel(a0)
000131d0 4840	swap	d0
000131d2 31400008	move.w	d0,x_pixel(a0)
000131d6 70a7	moveq	#signextendB(SndID_Sparkle),d0
00013200 7000	moveq	#0,d0
00013202 10280025	move.b	routine_secondary(a0),d0
00013206 323b0006	move.w	Obj0E_SonicHand_Index(pc,d0.w),d1
0001320a 4efb1002	jmp	Obj0E_SonicHand_Index(pc,d1.w)
00013214 54280025	addq.b	#2,routine_secondary(a0)
00013218 117c0009001a	move.b	#9,mapping_frame(a0)
0001321e 117c00030018	move.b	#3,priority(a0)
00013224 317c01450008	move.w	#spriteScreenPositionXCentered(37),x_pixel(a0)
0001322a 317c00bf000a	move.w	#spriteScreenPositionYCentered(-49),y_pixel(a0)
00013230 600032c2	bra.w	DisplaySprite
00013234 7410	moveq	#Obj0E_SonicHand_Positions_End-Obj0E_SonicHand_Positions+4,d2
00013236 43f900013240	lea	(Obj0E_SonicHand_Positions).l,a1
0001323c 6000fce2	bra.w	Obj0E_Move
0001324c 7000	moveq	#0,d0
0001324e 10280025	move.b	routine_secondary(a0),d0
00013252 323b0006	move.w	Obj0E_TailsHand_Index(pc,d0.w),d1
00013256 4efb1002	jmp	Obj0E_TailsHand_Index(pc,d1.w)
00013260 54280025	addq.b	#2,routine_secondary(a0)
00013264 117c0013001a	move.b	#$13,mapping_frame(a0)
0001326a 117c00030018	move.b	#3,priority(a0)
00013270 317c010f0008	move.w	#spriteScreenPositionXCentered(-17),x_pixel(a0)
00013276 317c00d5000a	move.w	#spriteScreenPositionYCentered(-27),y_pixel(a0)
0001327c 60003276	bra.w	DisplaySprite
00013280 740c	moveq	#Obj0E_TailsHand_Positions_End-Obj0E_TailsHand_Positions+4,d2
00013282 43f90001328c	lea	(Obj0E_TailsHand_Positions).l,a1
00013288 6000fc96	bra.w	Obj0E_Move
00013294 7000	moveq	#0,d0
00013296 10280025	move.b	routine_secondary(a0),d0
0001329a 323b0006	move.w	Obj0E_FallingStar_Index(pc,d0.w),d1
0001329e 4efb1002	jmp	Obj0E_FallingStar_Index(pc,d1.w)
000132a6 54280025	addq.b	#2,routine_secondary(a0)
000132aa 117c000c001a	move.b	#$C,mapping_frame(a0)
000132b0 117c00050018	move.b	#5,priority(a0)
000132b6 317c01700008	move.w	#spriteScreenPositionXCentered(80),x_pixel(a0)
000132bc 317c0080000a	move.w	#spriteScreenPositionYCentered(-112),y_pixel(a0)
000132c2 117c0003001c	move.b	#3,anim(a0)
000132c8 317c008c002a	move.w	#140,obj0e_counter(a0)
000132ce 60003224	bra.w	DisplaySprite
000132d2 5368002a	subq.w	#1,obj0e_counter(a0)
000132d6 6b00320e	bmi.w	DeleteObject
000132da 55680008	subq.w	#2,x_pixel(a0)
000132de 5268000a	addq.w	#1,y_pixel(a0)
000132e2 43f900013686	lea	(Ani_obj0E).l,a1
000132e8 6100325a	bsr.w	AnimateSprite
000132ec 60003206	bra.w	DisplaySprite
000132f0 7000	moveq	#0,d0
000132f2 10280024	move.b	routine(a0),d0
000132f6 323b0006	move.w	ObjC9_Index(pc,d0.w),d1
000132fa 4efb1002	jmp	ObjC9_Index(pc,d1.w)
00013302 54280024	addq.b	#2,routine(a0)
00013306 7000	moveq	#0,d0
00013308 10280028	move.b	subtype(a0),d0
0001330c 43f90001337c	lea	(PaletteChangerDataIndex).l,a1
00013312 d2f10000	adda.w	(a1,d0.w),a1
00013316 2159003a	move.l	(a1)+,ttlscrpalchanger_codeptr(a0)
0001331a 2459	movea.l	(a1)+,a2
0001331c 1019	move.b	(a1)+,d0
0001331e 31400034	move.w	d0,ttlscrpalchanger_start_offset(a0)
00013322 47f8fb80	lea	(Target_palette).w,a3
00013326 d6c0	adda.w	d0,a3
00013328 1019	move.b	(a1)+,d0
0001332a 31400036	move.w	d0,ttlscrpalchanger_length(a0)
00013330 51c8fffc	dbf	d0,-
00013334 1019	move.b	(a1)+,d0
00013336 11400030	move.b	d0,ttlscrpalchanger_fadein_time_left(a0)
0001333a 11400031	move.b	d0,ttlscrpalchanger_fadein_time(a0)
0001333e 11590032	move.b	(a1)+,ttlscrpalchanger_fadein_amount(a0)
00013342 4e75	rts	
00013344 53280030	subq.b	#1,ttlscrpalchanger_fadein_time_left(a0)
00013348 6a30	bpl.s	+
0001334a 116800310030	move.b	ttlscrpalchanger_fadein_time(a0),ttlscrpalchanger_fadein_time_left(a0)
00013350 53280032	subq.b	#1,ttlscrpalchanger_fadein_amount(a0)
00013354 6b003190	bmi.w	DeleteObject
00013358 2468003a	movea.l	ttlscrpalchanger_codeptr(a0),a2
0001335c 2648	movea.l	a0,a3
0001335e 30280036	move.w	ttlscrpalchanger_length(a0),d0
00013362 32280034	move.w	ttlscrpalchanger_start_offset(a0),d1
00013366 41f8fb00	lea	(Normal_palette).w,a0
0001336a d0c1	adda.w	d1,a0
0001336c 43f8fb80	lea	(Target_palette).w,a1
00013370 d2c1	adda.w	d1,a1
00013374 51c8fffc	dbf	d0,-
00013378 204b	movea.l	a3,a0
0001337a 4e75	rts	
0001344c 1419	move.b	(a1)+,d2
0001344e 0202000e	andi.b	#$E,d2
00013452 1610	move.b	(a0),d3
00013454 b602	cmp.b	d2,d3
00013456 6304	bls.s	loc_1345C
00013458 5503	subq.b	#2,d3
0001345a 1083	move.b	d3,(a0)
0001345c 5248	addq.w	#1,a0
0001345e 1419	move.b	(a1)+,d2
00013460 1602	move.b	d2,d3
00013462 020200e0	andi.b	#$E0,d2
00013466 0203000e	andi.b	#$E,d3
0001346a 1810	move.b	(a0),d4
0001346c 1a04	move.b	d4,d5
0001346e 020400e0	andi.b	#$E0,d4
00013472 0205000e	andi.b	#$E,d5
00013476 b802	cmp.b	d2,d4
00013478 6304	bls.s	loc_1347E
0001347a 04040020	subi.b	#$20,d4
0001347e ba03	cmp.b	d3,d5
00013480 6302	bls.s	loc_13484
00013482 5505	subq.b	#2,d5
00013484 8a04	or.b	d4,d5
00013486 10c5	move.b	d5,(a0)+
00013488 4e75	rts	
0001348a 740e	moveq	#$E,d2
0001348c 1610	move.b	(a0),d3
0001348e c602	and.b	d2,d3
00013490 b602	cmp.b	d2,d3
00013492 6404	bhs.s	loc_13498
00013494 5403	addq.b	#2,d3
00013496 1083	move.b	d3,(a0)
00013498 5248	addq.w	#1,a0
0001349a 1610	move.b	(a0),d3
0001349c 1803	move.b	d3,d4
0001349e 020300e0	andi.b	#$E0,d3
000134a2 0204000e	andi.b	#$E,d4
000134a6 0c0300e0	cmpi.b	#-$20,d3
000134aa 6404	bhs.s	loc_134B0
000134ac 06030020	addi.b	#$20,d3
000134b0 b802	cmp.b	d2,d4
000134b2 6402	bhs.s	loc_134B6
000134b4 5404	addq.b	#2,d4
000134b6 8803	or.b	d3,d4
000134b8 10c4	move.b	d4,(a0)+
000134ba 4e75	rts	
000134bc 4a28002f	tst.b	obj0e_intro_complete(a0)
000134c0 66000126	bne.w	+
000134c4 1038f605	move.b	(Ctrl_1_Press).w,d0
000134c8 8038f607	or.b	(Ctrl_2_Press).w,d0
000134cc 0238007ff605	andi.b	#button_up_mask|button_down_mask|button_left_mask|button_right_mask|button_B_mask|button_C_mask|button_A_mask,(Ctrl_1_Press).w
000134d2 0238007ff607	andi.b	#button_up_mask|button_down_mask|button_left_mask|button_right_mask|button_B_mask|button_C_mask|button_A_mask,(Ctrl_2_Press).w
000134d8 02000080	andi.b	#button_start_mask,d0
000134dc 6700010a	beq.w	+
000134e0 50e8002f	st.b	obj0e_intro_complete(a0)
000134e4 117c00100025	move.b	#$10,routine_secondary(a0)
000134ea 117c0012001a	move.b	#$12,mapping_frame(a0)
000134f0 317c01080008	move.w	#spriteScreenPositionXCentered(-24),x_pixel(a0)
000134f6 317c0098000a	move.w	#spriteScreenPositionYCentered(-88),y_pixel(a0)
000134fc 43f8b1c0	lea	(IntroSonicHand).w,a1
00013500 610000e8	bsr.w	TitleScreen_InitSprite
00013504 12bc000e	move.b	#ObjID_TitleIntro,id(a1)
00013508 137c000a0024	move.b	#$A,routine(a1)
0001350e 137c00020018	move.b	#2,priority(a1)
00013514 137c0009001a	move.b	#9,mapping_frame(a1)
0001351a 137c00040025	move.b	#4,routine_secondary(a1)
00013520 337c01410008	move.w	#spriteScreenPositionXCentered(33),x_pixel(a1)
00013526 337c00c1000a	move.w	#spriteScreenPositionYCentered(-47),y_pixel(a1)
0001352c 43f8b080	lea	(IntroTails).w,a1
00013530 610000b8	bsr.w	TitleScreen_InitSprite
00013534 12bc000e	move.b	#ObjID_TitleIntro,id(a1)
00013538 137c00040024	move.b	#4,routine(a1)
0001353e 137c0004001a	move.b	#4,mapping_frame(a1)
00013544 137c00060025	move.b	#6,routine_secondary(a1)
0001354a 137c00030018	move.b	#3,priority(a1)
00013550 337c00c80008	move.w	#spriteScreenPositionXCentered(-88),x_pixel(a1)
00013556 337c00a0000a	move.w	#spriteScreenPositionYCentered(-80),y_pixel(a1)
0001355c 43f8b200	lea	(IntroTailsHand).w,a1
00013560 61000088	bsr.w	TitleScreen_InitSprite
00013564 12bc000e	move.b	#ObjID_TitleIntro,id(a1)
00013568 137c00100024	move.b	#$10,routine(a1)
0001356e 137c00020018	move.b	#2,priority(a1)
00013574 137c0013001a	move.b	#$13,mapping_frame(a1)
0001357a 137c00040025	move.b	#4,routine_secondary(a1)
00013580 337c010d0008	move.w	#spriteScreenPositionXCentered(-19),x_pixel(a1)
00013586 337c00d1000a	move.w	#spriteScreenPositionYCentered(-31),y_pixel(a1)
0001358c 43f8b140	lea	(IntroEmblemTop).w,a1
00013590 12bc000e	move.b	#ObjID_TitleIntro,id(a1)
00013594 137c00060028	move.b	#6,subtype(a1)
0001359a 6100f96c	bsr.w	Obj0E_LoadMaskingSprite
0001359e 11fc000fb400	move.b	#ObjID_TitleMenu,(TitleScreenMenu+id).w
000135a4 43f8b0c0	lea	(TitleScreenPaletteChanger).w,a1
000135a8 61002f3e	bsr.w	DeleteObject2
000135b0 45f8fb60	lea	(Normal_palette_line4).w,a2
000135b4 7c07	moveq	#bytesToLcnt(palette_line_size),d6
000135b8 51cefffc	dbf	d6,-
000135c0 45f8fb40	lea	(Normal_palette_line3).w,a2
000135c4 7c07	moveq	#bytesToLcnt(palette_line_size),d6
000135c8 51cefffc	dbf	d6,-
000135d0 45f8fb00	lea	(Normal_palette).w,a2
000135d4 7c07	moveq	#bytesToLcnt(palette_line_size),d6
000135d8 51cefffc	dbf	d6,-
000135dc 4a280030	tst.b	obj0e_music_playing(a0)
000135e0 6606	bne.s	+
000135e2 7099	moveq	#signextendB(MusID_Title),d0
000135e8 4e75	rts	
000135ea 237c000136a80004	move.l	#Obj0E_MapUnc_136A8,mappings(a1)
000135f2 337c01500002	move.w	#make_art_tile(ArtTile_ArtNem_TitleSprites,0,0),art_tile(a1)
000135f8 137c00040018	move.b	#4,priority(a1)
000135fe 4e75	rts	
00013600 7000	moveq	#0,d0
00013602 10280024	move.b	routine(a0),d0
00013606 323b000a	move.w	Obj0F_Index(pc,d0.w),d1
0001360a 4ebb1006	jsr	Obj0F_Index(pc,d1.w)
0001360e 60002ee4	bra.w	DisplaySprite
00013616 54280024	addq.b	#2,routine(a0)
0001361a 317c01280008	move.w	#spriteScreenPositionXCentered(8),x_pixel(a0)
00013620 317c014c000a	move.w	#spriteScreenPositionYCentered(92),y_pixel(a0)
00013626 217c00013b700004	move.l	#Obj0F_MapUnc_13B70,mappings(a0)
0001362e 317c00000002	move.w	#make_art_tile(ArtTile_VRAM_Start,0,0),art_tile(a0)
00013634 61003738	bsr.w	Adjust2PArtPointer
00013638 02380001ff86	andi.b	#1,(Title_screen_option).w
0001363e 1178ff86001a	move.b	(Title_screen_option).w,mapping_frame(a0)
00013644 7400	moveq	#0,d2
00013646 1438ff86	move.b	(Title_screen_option).w,d2
0001364a 1038f605	move.b	(Ctrl_1_Press).w,d0
0001364e 8038f607	or.b	(Ctrl_2_Press).w,d0
00013652 08000000	btst	#button_up,d0
00013656 6708	beq.s	+
00013658 5302	subq.b	#1,d2
0001365a 6404	bcc.s	+
0001365c 143c0002	move.b	#2,d2
00013660 08000001	btst	#button_down,d0
00013664 670a	beq.s	+
00013666 5202	addq.b	#1,d2
00013668 0c020003	cmpi.b	#3,d2
0001366c 6502	blo.s	+
0001366e 7400	moveq	#0,d2
00013670 1142001a	move.b	d2,mapping_frame(a0)
00013674 11c2ff86	move.b	d2,(Title_screen_option).w
00013678 02000003	andi.b	#button_up_mask|button_down_mask,d0
0001367c 6706	beq.s	+
0001367e 70cd	moveq	#signextendB(SndID_Blip),d0
00013684 4e75	rts	
00013c3c 4ef900001370	jmp	(extractJmpToName("JmpTo4_PlaySound")).l
00013c42 4ef90000135e	jmp	(extractJmpToName("JmpTo4_PlayMusic")).l
00013c48 7000	moveq	#0,d0
00013c4a 10280024	move.b	routine(a0),d0
00013c4e 323b0006	move.w	Obj34_Index(pc,d0.w),d1
00013c52 4efb1002	jmp	Obj34_Index(pc,d1.w)
00013c6e 43d0	lea	(a0),a1
00013c70 45fa0062	lea	Obj34_TitleCardData(pc),a2
00013c74 7205	moveq	#(Obj34_TitleCardData_End-Obj34_TitleCardData)/$A-1,d1
00013c7c 135a0024	move.b	(a2)+,routine(a1)
00013c80 237c000147ba0004	move.l	#MapUnc_TitleCards,mappings(a1)
00013c88 135a001a	move.b	(a2)+,mapping_frame(a1)
00013c8c 135a0019	move.b	(a2)+,width_pixels(a1)
00013c90 135a001e	move.b	(a2)+,anim_frame_duration(a1)
00013c94 33520008	move.w	(a2),x_pixel(a1)
00013c98 335a0032	move.w	(a2)+,titlecard_x_source(a1)
00013c9c 335a0030	move.w	(a2)+,titlecard_x_target(a1)
00013ca0 335a000a	move.w	(a2)+,y_pixel(a1)
00013ca4 137c00000001	move.b	#0,render_flags(a1)
00013caa 43e90040	lea	next_object(a1),a1
00013cae 51c9ffc6	dbf	d1,-
00013cb2 31fc0026b1b4	move.w	#$26,(TitleCard_Bottom+titlecard_location).w
00013cb8 4278f616	clr.w	(Vscroll_Factor_FG).w
00013cbc 31fcff20f61e	move.w	#-screen_height,(Vscroll_Factor_P2_FG).w
00013cc2 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
00013cc6 7000	moveq	#0,d0
00013cc8 323c00ff	move.w	#bytesToLcnt((Horiz_Scroll_Buf+HorizontalScrollBuffer.len-Horiz_Scroll_Buf) - ((Horiz_Scroll_Buf)&1)),d1
00013ccc 22c0	move.l	d0,(a1)+
00013cce 51c9fffc	dbf	d1,.loop
00013cd2 4e75	rts	
00013d10 5328001e	subq.b	#1,anim_frame_duration(a0)
00013d14 6608	bne.s	+
00013d16 117c0001001e	move.b	#1,anim_frame_duration(a0)
00013d1c 4e75	rts	
00013d20 4e75	rts	
00013d22 7010	moveq	#$10,d0
00013d24 7208	moveq	#8,d1
00013d26 4a78ffd8	tst.w	(Two_player_mode).w
00013d2a 56c6	sne	d6
00013d2c 6704	beq.s	+
00013d2e 7020	moveq	#$20,d0
00013d30 7207	moveq	#7,d1
00013d32 34280034	move.w	titlecard_location(a0),d2
00013d36 b440	cmp.w	d0,d2
00013d38 671c	beq.s	++
00013d3a e36a	lsl.w	d1,d2
00013d3c 303cc000	move.w	#VRAM_Plane_A_Name_Table,d0
00013d40 d042	add.w	d2,d0
00013d42 31400036	move.w	d0,titlecard_vram_dest(a0)
00013d46 4a06	tst.b	d6
00013d48 6708	beq.s	+
00013d4a 0642a000	addi.w	#VRAM_Plane_A_Name_Table_2P,d2
00013d4e 31420038	move.w	d2,titlecard_vram_dest_2P(a0)
00013d52 52680034	addq.w	#1,titlecard_location(a0)
00013d56 4e75	rts	
00013d58 4ebaffb6	jsr	Obj34_Wait(pc)
00013d5c 30280034	move.w	titlecard_location(a0),d0
00013d60 6b0000ba	bmi.w	Obj34_MoveTowardsTargetPosition
00013d64 d040	add.w	d0,d0
00013d66 323c0500	move.w	#$80*$14/2,d1
00013d6a 4a78ffd8	tst.w	(Two_player_mode).w
00013d6e 56c6	sne	d6
00013d70 6602	bne.s	+
00013d72 d241	add.w	d1,d1
00013d74 343cc000	move.w	#VRAM_Plane_A_Name_Table,d2
00013d78 d440	add.w	d0,d2
00013d7a d441	add.w	d1,d2
00013d7c 31420036	move.w	d2,titlecard_vram_dest(a0)
00013d80 4a06	tst.b	d6
00013d82 670a	beq.s	+
00013d84 0641a000	addi.w	#VRAM_Plane_A_Name_Table_2P,d1
00013d88 d240	add.w	d0,d1
00013d8a 31410038	move.w	d1,titlecard_vram_dest_2P(a0)
00013d8e 55680034	subq.w	#2,titlecard_location(a0)
00013d92 31680034003a	move.w	titlecard_location(a0),titlecard_split_point(a0)
00013d98 0c6800060034	cmpi.w	#6,titlecard_location(a0)
00013d9e 57e80034	seq	titlecard_location(a0)
00013da2 60000078	bra.w	Obj34_MoveTowardsTargetPosition
00013da6 4ebaff68	jsr	Obj34_Wait(pc)
00013daa 4a680034	tst.w	titlecard_location(a0)
00013dae 6b00006c	bmi.w	Obj34_MoveTowardsTargetPosition
00013db2 317cc0000036	move.w	#VRAM_Plane_A_Name_Table,titlecard_vram_dest(a0)
00013db8 4a78ffd8	tst.w	(Two_player_mode).w
00013dbc 6706	beq.s	+
00013dbe 317ca0000038	move.w	#VRAM_Plane_A_Name_Table_2P,titlecard_vram_dest_2P(a0)
00013dc4 54680034	addq.w	#2,titlecard_location(a0)
00013dc8 31680034003a	move.w	titlecard_location(a0),titlecard_split_point(a0)
00013dce 0c68000e0034	cmpi.w	#$E,titlecard_location(a0)
00013dd4 57e80034	seq	titlecard_location(a0)
00013dd8 60000042	bra.w	Obj34_MoveTowardsTargetPosition
00013ddc 4ebaff32	jsr	Obj34_Wait(pc)
00013de0 1178fe10001a	move.b	(Current_Zone).w,mapping_frame(a0)
00013de6 6034	bra.s	Obj34_MoveTowardsTargetPosition
00013de8 4ebaff26	jsr	Obj34_Wait(pc)
00013dec 602e	bra.s	Obj34_MoveTowardsTargetPosition
00013dee 4ebaff20	jsr	Obj34_Wait(pc)
00013df2 1038fe10	move.b	(Current_Zone).w,d0
00013df6 0c000010	cmpi.b	#sky_chase_zone,d0
00013dfa 6742	beq.s	BranchTo9_DeleteObject
00013dfc 0c000006	cmpi.b	#wing_fortress_zone,d0
00013e00 673c	beq.s	BranchTo9_DeleteObject
00013e02 0c00000e	cmpi.b	#death_egg_zone,d0
00013e06 6736	beq.s	BranchTo9_DeleteObject
00013e08 1238fe11	move.b	(Current_Act).w,d1
00013e0c 06010012	addi.b	#$12,d1
00013e10 0c000005	cmpi.b	#metropolis_zone_2,d0
00013e14 6602	bne.s	+
00013e16 7214	moveq	#$14,d1
00013e18 1141001a	move.b	d1,mapping_frame(a0)
00013e1c 7010	moveq	#$10,d0
00013e1e 32280008	move.w	x_pixel(a0),d1
00013e22 b2680030	cmp.w	titlecard_x_target(a0),d1
00013e26 6710	beq.s	.display
00013e28 6202	bhi.s	+
00013e2a 4440	neg.w	d0
00013e2c 91680008	sub.w	d0,x_pixel(a0)
00013e30 0c6802000008	cmpi.w	#$200,x_pixel(a0)
00013e36 6204	bhi.s	.return
00013e38 600026ba	bra.w	DisplaySprite
00013e3c 4e75	rts	
00013e3e 600026a6	bra.w	DeleteObject
00013e42 30280034	move.w	titlecard_location(a0),d0
00013e46 6a0c	bpl.s	+
00013e48 117c0010ffe4	move.b	#$10,TitleCard_Bottom-TitleCard_Left+routine(a0)
00013e4e 4268fff4	clr.w	TitleCard_Bottom-TitleCard_Left+titlecard_location(a0)
00013e52 60ea	bra.s	BranchTo9_DeleteObject
00013e54 d040	add.w	d0,d0
00013e56 317cc0000036	move.w	#VRAM_Plane_A_Name_Table,titlecard_vram_dest(a0)
00013e5c d1680036	add.w	d0,titlecard_vram_dest(a0)
00013e60 4a78ffd8	tst.w	(Two_player_mode).w
00013e64 670a	beq.s	+
00013e66 317ca0000038	move.w	#VRAM_Plane_A_Name_Table_2P,titlecard_vram_dest_2P(a0)
00013e6c d1680038	add.w	d0,titlecard_vram_dest_2P(a0)
00013e70 59680034	subq.w	#4,titlecard_location(a0)
00013e74 0c68fffe0034	cmpi.w	#-2,titlecard_location(a0)
00013e7a 6604	bne.s	+
00013e7c 42680034	clr.w	titlecard_location(a0)
00013e80 60000042	bra.w	loc_13EC4
00013e84 30280034	move.w	titlecard_location(a0),d0
00013e88 0c400028	cmpi.w	#$28,d0
00013e8c 6608	bne.s	+
00013e8e 117c0012ffe4	move.b	#$12,TitleCard_Background-TitleCard_Bottom+routine(a0)
00013e94 60a8	bra.s	BranchTo9_DeleteObject
00013e96 d040	add.w	d0,d0
00013e98 323c0500	move.w	#$80*$14/2,d1
00013e9c 4a78ffd8	tst.w	(Two_player_mode).w
00013ea0 56c6	sne	d6
00013ea2 6602	bne.s	+
00013ea4 d241	add.w	d1,d1
00013ea6 343cc000	move.w	#VRAM_Plane_A_Name_Table,d2
00013eaa d440	add.w	d0,d2
00013eac d441	add.w	d1,d2
00013eae 31420036	move.w	d2,titlecard_vram_dest(a0)
00013eb2 4a06	tst.b	d6
00013eb4 670a	beq.s	+
00013eb6 0641a000	addi.w	#VRAM_Plane_A_Name_Table_2P,d1
00013eba d240	add.w	d0,d1
00013ebc 31410038	move.w	d1,titlecard_vram_dest_2P(a0)
00013ec0 58680034	addq.w	#4,titlecard_location(a0)
00013ec4 7020	moveq	#$20,d0
00013ec6 32280008	move.w	x_pixel(a0),d1
00013eca b2680032	cmp.w	titlecard_x_source(a0),d1
00013ece 6714	beq.s	++
00013ed0 6202	bhi.s	+
00013ed2 4440	neg.w	d0
00013ed4 91680008	sub.w	d0,x_pixel(a0)
00013ed8 0c6802000008	cmpi.w	#$200,x_pixel(a0)
00013ede 6204	bhi.s	+
00013ee0 60002612	bra.w	DisplaySprite
00013ee6 2f08	move.l	a0,-(sp)
00013ee8 2f07	move.l	d7,-(sp)
00013eea 610084e4	bsr.w	DeformBgLayer
00013eee 2e1f	move.l	(sp)+,d7
00013ef0 205f	movea.l	(sp)+,a0
00013ef8 317c00f00034	move.w	#$F0,titlecard_location(a0)
00013efe 30280034	move.w	titlecard_location(a0),d0
00013f02 04400020	subi.w	#$20,d0
00013f06 0c40ffd0	cmpi.w	#-$30,d0
00013f0a 6700ff32	beq.w	BranchTo9_DeleteObject
00013f0e 31400034	move.w	d0,titlecard_location(a0)
00013f12 31400036	move.w	d0,titlecard_vram_dest(a0)
00013f16 4e75	rts	
00013f18 4a68001e	tst.w	anim_frame_duration(a0)
00013f1c 6706	beq.s	+
00013f1e 5368001e	subq.w	#1,anim_frame_duration(a0)
00013f22 601c	bra.s	+++
00013f24 7020	moveq	#$20,d0
00013f26 32280008	move.w	x_pixel(a0),d1
00013f2a b2680032	cmp.w	titlecard_x_source(a0),d1
00013f2e 6714	beq.s	Obj34_LoadStandardWaterAndAnimalArt
00013f30 6202	bhi.s	+
00013f32 4440	neg.w	d0
00013f34 91680008	sub.w	d0,x_pixel(a0)
00013f38 0c6802000008	cmpi.w	#$200,x_pixel(a0)
00013f3e 6204	bhi.s	Obj34_LoadStandardWaterAndAnimalArt
00013f40 600025b2	bra.w	DisplaySprite
00013f44 b0fcb080	cmpa.w	#TitleCard_ZoneName,a0
00013f48 6614	bne.s	+
00013f4a 7002	moveq	#PLCID_StdWtr,d0
00013f50 7000	moveq	#0,d0
00013f52 1038fe10	move.b	(Current_Zone).w,d0
00013f56 103b000a	move.b	Animal_PLCTable(pc,d0.w),d0
00013f5e 60002586	bra.w	DeleteObject
00013f74 7000	moveq	#0,d0
00013f76 10280024	move.b	routine(a0),d0
00013f7a 323b0006	move.w	Obj39_Index(pc,d0.w),d1
00013f7e 4efb1002	jmp	Obj39_Index(pc,d1.w)
00013f88 4ab8f680	tst.l	(Plc_Buffer).w
00013f8c 6702	beq.s	+
00013f8e 4e75	rts	
00013f90 54280024	addq.b	#2,routine(a0)
00013f94 317c00500008	move.w	#spriteScreenPositionX(-48),x_pixel(a0)
00013f9a 08280000001a	btst	#0,mapping_frame(a0)
00013fa0 6706	beq.s	+
00013fa2 317c01f00008	move.w	#spriteScreenPositionX(screen_width+48),x_pixel(a0)
00013fa8 317c00f0000a	move.w	#spriteScreenPositionYCentered(0),y_pixel(a0)
00013fae 217c00014c6c0004	move.l	#Obj39_MapUnc_14C6C,mappings(a0)
00013fb6 317c84de0002	move.w	#make_art_tile(ArtTile_ArtNem_Game_Over,0,1),art_tile(a0)
00013fbc 61002db0	bsr.w	Adjust2PArtPointer
00013fc0 117c00000001	move.b	#0,render_flags(a0)
00013fc6 117c00000018	move.b	#0,priority(a0)
00013fcc 7210	moveq	#16,d1
00013fce 0c6801200008	cmpi.w	#spriteScreenPositionXCentered(0),x_pixel(a0)
00013fd4 670c	beq.s	Obj39_SetTimer
00013fd6 6502	blo.s	+
00013fd8 4441	neg.w	d1
00013fda d3680008	add.w	d1,x_pixel(a0)
00013fde 60002514	bra.w	DisplaySprite
00013fe2 317c02d0001e	move.w	#$2D0,anim_frame_duration(a0)
00013fe8 54280024	addq.b	#2,routine(a0)
00013fec 4e75	rts	
00013fee 08280000001a	btst	#0,mapping_frame(a0)
00013ff4 6600008c	bne.w	Obj39_Display
00013ff8 1038f605	move.b	(Ctrl_1_Press).w,d0
00013ffc 8038f607	or.b	(Ctrl_2_Press).w,d0
00014000 02000070	andi.b	#button_B_mask|button_C_mask|button_A_mask,d0
00014004 660e	bne.s	Obj39_Dismiss
00014006 4a68001e	tst.w	anim_frame_duration(a0)
0001400a 6708	beq.s	Obj39_Dismiss
0001400c 5368001e	subq.w	#1,anim_frame_duration(a0)
00014010 600024e2	bra.w	DisplaySprite
00014014 4a38fe1a	tst.b	(Time_Over_flag).w
00014018 661a	bne.s	Obj39_TimeOver
0001401a 4a38fecc	tst.b	(Time_Over_flag_2P).w
0001401e 6614	bne.s	Obj39_TimeOver
00014020 11fc0014f600	move.b	#GameModeID_ContinueScreen,(Game_Mode).w
00014026 4a38fe18	tst.b	(Continue_count).w
0001402a 6612	bne.s	Obj39_Check2PMode
0001402c 11fc0000f600	move.b	#GameModeID_SegaScreen,(Game_Mode).w
00014032 600a	bra.s	Obj39_Check2PMode
00014034 42b8fe38	clr.l	(Saved_Timer).w
00014038 31fc0001fe02	move.w	#1,(Level_Inactive_flag).w
0001403e 4a78ffd8	tst.w	(Two_player_mode).w
00014042 673e	beq.s	Obj39_Display
00014044 31fc0000fe02	move.w	#0,(Level_Inactive_flag).w
0001404a 11fc0018f600	move.b	#GameModeID_2PResults,(Game_Mode).w
00014050 31fc0000ff10	move.w	#VsRSID_Act,(Results_Screen_2P).w
00014056 4a38fe1a	tst.b	(Time_Over_flag).w
0001405a 6626	bne.s	Obj39_Display
0001405c 4a38fecc	tst.b	(Time_Over_flag_2P).w
00014060 6620	bne.s	Obj39_Display
00014062 31fc0001ff98	move.w	#1,(Game_Over_2P).w
00014068 31fc0001ff10	move.w	#VsRSID_Zone,(Results_Screen_2P).w
00014072 38bcffff	move.w	#-1,(a4)
00014076 4a28003f	tst.b	parent+1(a0)
0001407a 6702	beq.s	+
0001407c 524c	addq.w	#1,a4
0001407e 18bc00fe	move.b	#-2,(a4)
00014082 60002470	bra.w	DisplaySprite
00014086 7000	moveq	#0,d0
00014088 10280024	move.b	routine(a0),d0
0001408c 323b0006	move.w	Obj3A_Index(pc,d0.w),d1
00014090 4efb1002	jmp	Obj3A_Index(pc,d1.w)
000140ac 4ab8f680	tst.l	(Plc_Buffer).w
000140b0 6702	beq.s	+
000140b2 4e75	rts	
000140b4 2248	movea.l	a0,a1
000140b6 45fa02c8	lea	Obj3A_SubObjectMetadata(pc),a2
000140ba 7207	moveq	#bytesToXcnt(Obj3A_SubObjectMetadata_End-Obj3A_SubObjectMetadata, results_screen_object_size),d1
000140c0 670c	beq.s	loc_140CE
000140c2 0c00003a	cmpi.b	#ObjID_Results,d0
000140c6 6706	beq.s	loc_140CE
000140c8 43e90040	lea	next_object(a1),a1
000140cc 60ee	bra.s	loc_140BC
000140d4 335a0008	move.w	(a2)+,x_pixel(a1)
000140d8 335a0030	move.w	(a2)+,titlecard_x_target(a1)
000140dc 335a000a	move.w	(a2)+,y_pixel(a1)
000140e0 135a0024	move.b	(a2)+,routine(a1)
000140e4 135a001a	move.b	(a2)+,mapping_frame(a1)
000140e8 237c00014cbc0004	move.l	#MapUnc_EOLTitleCards,mappings(a1)
000140f0 61002c98	bsr.w	Adjust2PArtPointer2
000140f4 137c00000001	move.b	#0,render_flags(a1)
000140fa 43e90040	lea	next_object(a1),a1
000140fe 51c9ffbc	dbf	d1,loc_140BC
00014102 7000	moveq	#0,d0
00014104 0c780002ff70	cmpi.w	#2,(Player_mode).w
0001410a 660c	bne.s	loc_14118
0001410c 5240	addq.w	#1,d0
0001410e 08380007fff8	btst	#7,(Graphics_Flags).w
00014114 6702	beq.s	loc_14118
00014116 5240	addq.w	#1,d0
00014118 1140001a	move.b	d0,mapping_frame(a0)
0001411c 6100fcfe	bsr.w	Obj34_MoveTowardsTargetPosition
00014120 30280008	move.w	x_pixel(a0),d0
00014124 b0680030	cmp.w	titlecard_x_target(a0),d0
00014128 6600000e	bne.w	return_14138
0001412c 117c000a0024	move.b	#$A,routine(a0)
00014132 317c00b4001e	move.w	#$B4,anim_frame_duration(a0)
00014138 4e75	rts	
0001413a 4a78ff40	tst.w	(Perfect_rings_left).w
0001413e 660023a6	bne.w	DeleteObject
00014142 6000fcd8	bra.w	Obj34_MoveTowardsTargetPosition
00014146 1038fe10	move.b	(Current_Zone).w,d0
0001414a 0c000010	cmpi.b	#sky_chase_zone,d0
0001414e 670e	beq.s	loc_1415E
00014150 0c000006	cmpi.b	#wing_fortress_zone,d0
00014154 6708	beq.s	loc_1415E
00014156 0c00000e	cmpi.b	#death_egg_zone,d0
0001415a 6600fcc0	bne.w	Obj34_MoveTowardsTargetPosition
0001415e 117c0005001a	move.b	#5,mapping_frame(a0)
00014164 6000fcb6	bra.w	Obj34_MoveTowardsTargetPosition
00014168 1038fe10	move.b	(Current_Zone).w,d0
0001416c 0c000010	cmpi.b	#sky_chase_zone,d0
00014170 6700fccc	beq.w	BranchTo9_DeleteObject
00014174 0c000006	cmpi.b	#wing_fortress_zone,d0
00014178 6700fcc4	beq.w	BranchTo9_DeleteObject
0001417c 0c00000e	cmpi.b	#death_egg_zone,d0
00014180 6700fcbc	beq.w	BranchTo9_DeleteObject
00014184 0c000005	cmpi.b	#metropolis_zone_2,d0
00014188 6604	bne.s	loc_1418E
0001418a 7008	moveq	#8,d0
0001418c 6006	bra.s	loc_14194
0001418e 1038fe11	move.b	(Current_Act).w,d0
00014192 5c00	addq.b	#6,d0
00014194 1140001a	move.b	d0,mapping_frame(a0)
00014198 6000fc82	bra.w	Obj34_MoveTowardsTargetPosition
0001419c 5368001e	subq.w	#1,anim_frame_duration(a0)
000141a0 6604	bne.s	BranchTo18_DisplaySprite
000141a2 54280024	addq.b	#2,routine(a0)
000141a6 6000234c	bra.w	DisplaySprite
000141aa 61002348	bsr.w	DisplaySprite
000141ae 11fc0001f7d6	move.b	#1,(Update_Bonus_score).w
000141b4 7000	moveq	#0,d0
000141b6 4a78f7d2	tst.w	(Bonus_Countdown_1).w
000141ba 670a	beq.s	loc_141C6
000141bc 0640000a	addi.w	#10,d0
000141c0 0478000af7d2	subi.w	#10,(Bonus_Countdown_1).w
000141c6 4a78f7d4	tst.w	(Bonus_Countdown_2).w
000141ca 670a	beq.s	loc_141D6
000141cc 0640000a	addi.w	#10,d0
000141d0 0478000af7d4	subi.w	#10,(Bonus_Countdown_2).w
000141d6 4a78ff92	tst.w	(Bonus_Countdown_3).w
000141da 670a	beq.s	loc_141E6
000141dc 0640000a	addi.w	#10,d0
000141e0 0478000aff92	subi.w	#10,(Bonus_Countdown_3).w
000141e6 d178ff8e	add.w	d0,(Total_Bonus_Countdown).w
000141ea 4a40	tst.w	d0
000141ec 6668	bne.s	loc_14256
000141ee 303c00c5	move.w	#SndID_TallyEnd,d0
000141f2 4eb900001370	jsr	(PlaySound).l
000141f8 54280024	addq.b	#2,routine(a0)
000141fc 317c00b4001e	move.w	#$B4,anim_frame_duration(a0)
00014202 0c7803e8ff8e	cmpi.w	#1000,(Total_Bonus_Countdown).w
00014208 654a	blo.s	return_14254
0001420a 317c012c001e	move.w	#$12C,anim_frame_duration(a0)
00014210 43e80040	lea	next_object(a0),a1
00014218 6706	beq.s	loc_14220
0001421a 43e90040	lea	next_object(a1),a1
0001421e 60f4	bra.s	loc_14214
00014226 137c00120024	move.b	#$12,routine(a1)
0001422c 337c01880008	move.w	#spriteScreenPositionXCentered(104),x_pixel(a1)
00014232 337c0118000a	move.w	#spriteScreenPositionYCentered(40),y_pixel(a1)
00014238 237c00014cbc0004	move.l	#MapUnc_EOLTitleCards,mappings(a1)
00014240 61002b48	bsr.w	Adjust2PArtPointer2
00014244 137c00000001	move.b	#0,render_flags(a1)
0001424a 337c003c001e	move.w	#60,anim_frame_duration(a1)
00014250 5238fe18	addq.b	#1,(Continue_count).w
00014254 4e75	rts	
00014256 4eb900040d06	jsr	(AddPoints).l
0001425c 1038fe0f	move.b	(Vint_runcount+3).w,d0
00014260 02000003	andi.b	#3,d0
00014264 66ee	bne.s	return_14254
00014266 303c00cd	move.w	#SndID_Blip,d0
0001426a 4ef900001370	jmp	(PlaySound).l
00014270 7000	moveq	#0,d0
00014272 1038fe10	move.b	(Current_Zone).w,d0
00014276 d040	add.w	d0,d0
00014278 d038fe11	add.b	(Current_Act).w,d0
0001427c d040	add.w	d0,d0
0001427e 43fa0078	lea	LevelOrder(pc),a1
00014282 4a78ffd8	tst.w	(Two_player_mode).w
00014286 6704	beq.s	loc_1428C
00014288 43fa00b2	lea	LevelOrder_2P(pc),a1
0001428c 30310000	move.w	(a1,d0.w),d0
00014290 4a40	tst.w	d0
00014292 6a08	bpl.s	loc_1429C
00014294 11fc0000f600	move.b	#GameModeID_SegaScreen,(Game_Mode).w
0001429a 4e75	rts	
0001429c 31c0fe10	move.w	d0,(Current_ZoneAndAct).w
000142a0 4238fe30	clr.b	(Last_star_pole_hit).w
000142a4 4238fee0	clr.b	(Last_star_pole_hit_2P).w
000142a8 31fc0001fe02	move.w	#1,(Level_Inactive_flag).w
000142ae 4e75	rts	
000142b0 4a68001e	tst.w	anim_frame_duration(a0)
000142b4 6706	beq.s	loc_142BC
000142b6 5368001e	subq.w	#1,anim_frame_duration(a0)
000142ba 4e75	rts	
000142c2 303c00bf	move.w	#SndID_ContinueJingle,d0
000142c6 4eb900001370	jsr	(PlaySound).l
000142cc 5368001e	subq.w	#1,anim_frame_duration(a0)
000142d0 6a10	bpl.s	loc_142E2
000142d2 317c0013001e	move.w	#$13,anim_frame_duration(a0)
000142d8 5228001b	addq.b	#1,anim_frame(a0)
000142dc 02280001001b	andi.b	#1,anim_frame(a0)
000142e2 700c	moveq	#$C,d0
000142e4 d028001b	add.b	anim_frame(a0),d0
000142e8 1140001a	move.b	d0,mapping_frame(a0)
000142ec 08380004fe05	btst	#4,(Level_frame_counter+1).w
000142f2 66002200	bne.w	DisplaySprite
000142f6 4e75	rts	
000143c0 7000	moveq	#0,d0
000143c2 7c00	moveq	#0,d6
000143c4 10280024	move.b	routine(a0),d0
000143c8 323b0006	move.w	Obj6F_Index(pc,d0.w),d1
000143cc 4efb1002	jmp	Obj6F_Index(pc,d1.w)
00014406 4ab8f680	tst.l	(Plc_Buffer).w
0001440a 6702	beq.s	+
0001440c 4e75	rts	
0001440e 2248	movea.l	a0,a1
00014410 45fa0340	lea	Obj6F_SubObjectMetaData(pc),a2
00014414 720c	moveq	#bytesToXcnt(Obj6F_SubObjectMetaData_End-Obj6F_SubObjectMetaData, results_screen_object_size),d1
0001441c 33520008	move.w	(a2),x_pixel(a1)
00014420 335a0032	move.w	(a2)+,titlecard_x_source(a1)
00014424 335a0030	move.w	(a2)+,titlecard_x_target(a1)
00014428 335a000a	move.w	(a2)+,y_pixel(a1)
0001442c 135a0024	move.b	(a2)+,routine(a1)
00014430 135a001a	move.b	(a2)+,mapping_frame(a1)
00014434 237c00014ed00004	move.l	#Obj6F_MapUnc_14ED0,mappings(a1)
0001443c 137c00780019	move.b	#$78,width_pixels(a1)
00014442 137c00000001	move.b	#0,render_flags(a1)
00014448 43e90040	lea	next_object(a1),a1
0001444c 51c9ffc8	dbf	d1,-
00014450 4a38ffb0	tst.b	(Got_Emerald).w
00014454 6706	beq.s	+
00014456 117c0004001a	move.b	#4,mapping_frame(a0)
0001445c 0c380007ffb1	cmpi.b	#7,(Emerald_count).w
00014462 6606	bne.s	+
00014464 117c0019001a	move.b	#$19,mapping_frame(a0)
0001446a 30280030	move.w	titlecard_x_target(a0),d0
0001446e b0680008	cmp.w	x_pixel(a0),d0
00014472 660c	bne.s	BranchTo2_Obj34_MoveTowardsTargetPosition
00014474 117c001c0024	move.b	#$1C,routine(a0)
0001447a 317c00b4001e	move.w	#$B4,anim_frame_duration(a0)
00014480 6000f99a	bra.w	Obj34_MoveTowardsTargetPosition
00014484 0c380007ffb1	cmpi.b	#7,(Emerald_count).w
0001448a 6604	bne.s	+
0001448c 7016	moveq	#$16,d0
0001448e 600a	bra.s	++
00014490 4a38ffb0	tst.b	(Got_Emerald).w
00014494 67002050	beq.w	DeleteObject
00014498 7001	moveq	#1,d0
0001449a 0c780002ff70	cmpi.w	#2,(Player_mode).w
000144a0 660c	bne.s	+
000144a2 5240	addq.w	#1,d0
000144a4 08380007fff8	btst	#7,(Graphics_Flags).w
000144aa 6702	beq.s	+
000144ac 5240	addq.w	#1,d0
000144ae 1140001a	move.b	d0,mapping_frame(a0)
000144b2 6000f968	bra.w	Obj34_MoveTowardsTargetPosition
000144b6 5246	addq.w	#1,d6
000144b8 5246	addq.w	#1,d6
000144ba 5246	addq.w	#1,d6
000144bc 5246	addq.w	#1,d6
000144be 5246	addq.w	#1,d6
000144c0 5246	addq.w	#1,d6
000144c2 43f8ffb2	lea	(Got_Emeralds_array).w,a1
000144c6 4a316000	tst.b	(a1,d6.w)
000144ca 6700201a	beq.w	DeleteObject
000144ce 08380000fe0f	btst	#0,(Vint_runcount+3).w
000144d4 6704	beq.s	+
000144d6 6100201c	bsr.w	DisplaySprite
000144da 4e75	rts	
000144dc 4a78ff70	tst.w	(Player_mode).w
000144e0 66002004	bne.w	DeleteObject
000144e4 0c380026b824	cmpi.b	#$26,(SpecialStageResults+routine).w
000144ea 67001ffa	beq.w	DeleteObject
000144ee 700e	moveq	#$E,d0
000144f0 08380007fff8	btst	#7,(Graphics_Flags).w
000144f6 6702	beq.s	+
000144f8 5240	addq.w	#1,d0
000144fa 43f8f7d4	lea	(Bonus_Countdown_2).w,a1
000144fe 605a	bra.s	loc_1455A
00014500 0c380026b824	cmpi.b	#$26,(SpecialStageResults+routine).w
00014506 662a	bne.s	+
00014508 31fc1388f7d2	move.w	#5000,(Bonus_Countdown_1).w
0001450e 117c002a0024	move.b	#$2A,routine(a0)
00014514 317c0120000a	move.w	#spriteScreenPositionYCentered(48),y_pixel(a0)
0001451a 50f8f7d6	st.b	(Update_Bonus_score).w
0001451e 303c00cf	move.w	#SndID_Signpost,d0
00014522 4eb900001370	jsr	(PlaySound).l
00014528 31fc005ab81e	move.w	#$5A,(SpecialStageResults+anim_frame_duration).w
0001452e 60000162	bra.w	Obj6F_PerfectBonus
00014532 3038ff70	move.w	(Player_mode).w,d0
00014536 671c	beq.s	++
00014538 317c0120000a	move.w	#spriteScreenPositionYCentered(48),y_pixel(a0)
0001453e 5340	subq.w	#1,d0
00014540 6712	beq.s	++
00014542 700e	moveq	#$E,d0
00014544 08380007fff8	btst	#7,(Graphics_Flags).w
0001454a 6702	beq.s	+
0001454c 5240	addq.w	#1,d0
0001454e 43f8f7d4	lea	(Bonus_Countdown_2).w,a1
00014552 6006	bra.s	loc_1455A
00014554 700d	moveq	#$D,d0
00014556 43f8f7d2	lea	(Bonus_Countdown_1).w,a1
0001455a 4a51	tst.w	(a1)
0001455c 6602	bne.s	+
0001455e 5a40	addq.w	#5,d0
00014560 1140001a	move.b	d0,mapping_frame(a0)
00014564 6000f8b6	bra.w	Obj34_MoveTowardsTargetPosition
00014568 4a38ffb0	tst.b	(Got_Emerald).w
0001456c 67001f78	beq.w	DeleteObject
00014570 60f2	bra.s	BranchTo3_Obj34_MoveTowardsTargetPosition
00014572 5368001e	subq.w	#1,anim_frame_duration(a0)
00014576 6604	bne.s	BranchTo19_DisplaySprite
00014578 54280024	addq.b	#2,routine(a0)
0001457c 60001f76	bra.w	DisplaySprite
00014580 61001f72	bsr.w	DisplaySprite
00014584 11fc0001f7d6	move.b	#1,(Update_Bonus_score).w
0001458a 7000	moveq	#0,d0
0001458c 4a78f7d2	tst.w	(Bonus_Countdown_1).w
00014590 6708	beq.s	+
00014592 0640000a	addi.w	#10,d0
00014596 5378f7d2	subq.w	#1,(Bonus_Countdown_1).w
0001459a 4a78f7d4	tst.w	(Bonus_Countdown_2).w
0001459e 6708	beq.s	+
000145a0 0640000a	addi.w	#10,d0
000145a4 5378f7d4	subq.w	#1,(Bonus_Countdown_2).w
000145a8 4a78ff8e	tst.w	(Total_Bonus_Countdown).w
000145ac 670a	beq.s	+
000145ae 0640000a	addi.w	#10,d0
000145b2 0478000aff8e	subi.w	#10,(Total_Bonus_Countdown).w
000145b8 4a40	tst.w	d0
000145ba 6646	bne.s	+++
000145bc 303c00c5	move.w	#SndID_TallyEnd,d0
000145c0 4eb900001370	jsr	(PlaySound).l
000145c6 54280024	addq.b	#2,routine(a0)
000145ca 317c0078001e	move.w	#$78,anim_frame_duration(a0)
000145d0 4a78ff42	tst.w	(Perfect_rings_flag).w
000145d4 661e	bne.s	+
000145d6 0c780002ff70	cmpi.w	#2,(Player_mode).w
000145dc 6722	beq.s	++
000145de 4a38ffb0	tst.b	(Got_Emerald).w
000145e2 671c	beq.s	++
000145e4 0c380007ffb1	cmpi.b	#7,(Emerald_count).w
000145ea 6614	bne.s	++
000145ec 117c00300024	move.b	#$30,routine(a0)
000145f2 4e75	rts	
000145f4 117c00240024	move.b	#$24,routine(a0)
000145fa 317c005a001e	move.w	#$5A,anim_frame_duration(a0)
00014600 4e75	rts	
00014602 4eb900040d06	jsr	(AddPoints).l
00014608 1038fe0f	move.b	(Vint_runcount+3).w,d0
0001460c 02000003	andi.b	#3,d0
00014610 66ee	bne.s	-
00014612 303c00cd	move.w	#SndID_Blip,d0
00014616 4ef900001370	jmp	(PlaySound).l
0001461c 31fc0001fe02	move.w	#1,(Level_Inactive_flag).w
00014622 60001ed0	bra.w	DisplaySprite
00014626 61001ecc	bsr.w	DisplaySprite
0001462a 11fc0001f7d6	move.b	#1,(Update_Bonus_score).w
00014630 7000	moveq	#0,d0
00014632 4a78f7d2	tst.w	(Bonus_Countdown_1).w
00014636 670a	beq.s	+
00014638 06400014	addi.w	#20,d0
0001463c 04780014f7d2	subi.w	#20,(Bonus_Countdown_1).w
00014642 4a40	tst.w	d0
00014644 671a	beq.s	+
00014646 4eb900040d06	jsr	(AddPoints).l
0001464c 1038fe0f	move.b	(Vint_runcount+3).w,d0
00014650 02000003	andi.b	#3,d0
00014654 663a	bne.s	++
00014656 303c00cd	move.w	#SndID_Blip,d0
0001465a 4ef900001370	jmp	(PlaySound).l
00014660 303c00c5	move.w	#SndID_TallyEnd,d0
00014664 4eb900001370	jsr	(PlaySound).l
0001466a 58280024	addq.b	#4,routine(a0)
0001466e 317c0078001e	move.w	#$78,anim_frame_duration(a0)
00014674 0c780002ff70	cmpi.w	#2,(Player_mode).w
0001467a 6714	beq.s	+
0001467c 4a38ffb0	tst.b	(Got_Emerald).w
00014680 670e	beq.s	+
00014682 0c380007ffb1	cmpi.b	#7,(Emerald_count).w
00014688 6606	bne.s	+
0001468a 117c00300024	move.b	#$30,routine(a0)
00014690 4e75	rts	
00014692 7011	moveq	#$11,d0
00014694 08380003fe0f	btst	#3,(Vint_runcount+3).w
0001469a 6702	beq.s	+
0001469c 7015	moveq	#$15,d0
0001469e 1140001a	move.b	d0,mapping_frame(a0)
000146a2 60001e50	bra.w	DisplaySprite
000146a6 117c00320064	move.b	#$32,next_object+routine(a0)
000146ac 30280008	move.w	x_pixel(a0),d0
000146b0 b0680032	cmp.w	titlecard_x_source(a0),d0
000146b4 665e	bne.s	Obj6F_MoveTowardsSourcePosition
000146b6 117c00140064	move.b	#$14,next_object+routine(a0)
000146bc 5168004a	subq.w	#8,next_object+y_pixel(a0)
000146c0 117c001a005a	move.b	#$1A,next_object+mapping_frame(a0)
000146c6 117c00340024	move.b	#$34,routine(a0)
000146cc 5168000a	subq.w	#8,y_pixel(a0)
000146d0 117c001b001a	move.b	#$1B,mapping_frame(a0)
000146d6 43f8bb40	lea	(SpecialStageResults2).w,a1
000146e0 42690008	clr.w	x_pixel(a1)
000146e4 337c01200030	move.w	#spriteScreenPositionXCentered(0),titlecard_x_target(a1)
000146ea 337c00b4000a	move.w	#spriteScreenPositionYCentered(-60),y_pixel(a1)
000146f0 137c00140024	move.b	#$14,routine(a1)
000146f6 137c001c001a	move.b	#$1C,mapping_frame(a1)
000146fc 237c00014ed00004	move.l	#Obj6F_MapUnc_14ED0,mappings(a1)
00014704 137c00780019	move.b	#$78,width_pixels(a1)
0001470a 137c00000001	move.b	#0,render_flags(a1)
00014710 60001de2	bra.w	DisplaySprite
00014714 7020	moveq	#$20,d0
00014716 32280008	move.w	x_pixel(a0),d1
0001471a b2680032	cmp.w	titlecard_x_source(a0),d1
0001471e 6710	beq.s	.display
00014720 6202	bhi.s	+
00014722 4440	neg.w	d0
00014724 91680008	sub.w	d0,x_pixel(a0)
00014728 0c6802000008	cmpi.w	#$200,x_pixel(a0)
0001472e 6204	bhi.s	.return
00014730 60001dc2	bra.w	DisplaySprite
00014734 4e75	rts	
00014736 30280008	move.w	x_pixel(a0),d0
0001473a b0680030	cmp.w	titlecard_x_target(a0),d0
0001473e 6600f6dc	bne.w	Obj34_MoveTowardsTargetPosition
00014742 317c00b4001e	move.w	#$B4,anim_frame_duration(a0)
00014748 117c00200024	move.b	#$20,routine(a0)
0001474e 60001da4	bra.w	DisplaySprite
00015584 4df900c00000	lea	(VDP_data_port).l,a6
0001558a 4a78b0be	tst.w	(TitleCard_ZoneName+titlecard_leaveflag).w
0001558e 660000e0	bne.w	loc_15670
00015592 7a3f	moveq	#$3F,d5
00015594 2c3c85da85da	move.l	#make_block_tile_pair(ArtTile_ArtNem_TitleCard+$5A,0,0,0,1),d6
0001559a 4a78ffd8	tst.w	(Two_player_mode).w
0001559e 6708	beq.s	loc_155A8
000155a0 7a1f	moveq	#$1F,d5
000155a2 2c3c82ed82ed	move.l	#make_block_tile_pair_2p(ArtTile_ArtNem_TitleCard+$5A,0,0,0,1),d6
000155a8 41f8b176	lea	(TitleCard_Background+titlecard_vram_dest).w,a0
000155ac 7e01	moveq	#1,d7
000155ae 3018	move.w	(a0)+,d0
000155b0 6714	beq.s	loc_155C6
000155b2 4268fffe	clr.w	-2(a0)
000155b6 4eba01da	jsr	sub_15792(pc)
000155ba 2d400004	move.l	d0,VDP_control_port-VDP_data_port(a6)
000155be 3805	move.w	d5,d4
000155c0 2c86	move.l	d6,(a6)
000155c2 51ccfffc	dbf	d4,loc_155C0
000155c6 51cfffe6	dbf	d7,loc_155AE
000155ca 7226	moveq	#$26,d1
000155cc 9278b1ba	sub.w	(TitleCard_Bottom+titlecard_split_point).w,d1
000155d0 e249	lsr.w	#1,d1
000155d2 5341	subq.w	#1,d1
000155d4 7a07	moveq	#7,d5
000155d6 2c3ca5dca5dc	move.l	#make_block_tile_pair(ArtTile_ArtNem_TitleCard+$5C,0,0,1,1),d6
000155dc 4a78ffd8	tst.w	(Two_player_mode).w
000155e0 6708	beq.s	loc_155EA
000155e2 7a03	moveq	#3,d5
000155e4 2c3ca2eea2ee	move.l	#make_block_tile_pair_2p(ArtTile_ArtNem_TitleCard+$5C,0,0,1,1),d6
000155ea 41f8b1b6	lea	(TitleCard_Bottom+titlecard_vram_dest).w,a0
000155ee 7e01	moveq	#1,d7
000155f0 3018	move.w	(a0)+,d0
000155f2 6720	beq.s	loc_15614
000155f4 4268fffe	clr.w	-2(a0)
000155f8 4eba0198	jsr	sub_15792(pc)
000155fc 3805	move.w	d5,d4
000155fe 2d400004	move.l	d0,VDP_control_port-VDP_data_port(a6)
00015602 3601	move.w	d1,d3
00015604 2c86	move.l	d6,(a6)
00015606 51cbfffc	dbf	d3,loc_15604
0001560a 068000800000	addi.l	#vdpCommDelta(gameplay_plane_width/tile_width*2),d0
00015610 51ccffec	dbf	d4,loc_155FE
00015614 51cfffda	dbf	d7,loc_155F0
00015618 3238b1fa	move.w	(TitleCard_Left+titlecard_split_point).w,d1
0001561c 5341	subq.w	#1,d1
0001561e 7a0d	moveq	#$D,d5
00015620 2c3c85d885d8	move.l	#make_block_tile_pair(ArtTile_ArtNem_TitleCard+$58,0,0,0,1),d6
00015626 4a78ffd8	tst.w	(Two_player_mode).w
0001562a 6708	beq.s	loc_15634
0001562c 7a06	moveq	#6,d5
0001562e 2c3c82ec82ec	move.l	#make_block_tile_pair_2p(ArtTile_ArtNem_TitleCard+$58,0,0,0,1),d6
00015634 41f8b1f6	lea	(TitleCard_Left+titlecard_vram_dest).w,a0
00015638 7e01	moveq	#1,d7
0001563a 3d7c8f800004	move.w	#$8F80,VDP_control_port-VDP_data_port(a6)
00015640 3018	move.w	(a0)+,d0
00015642 6720	beq.s	loc_15664
00015644 4268fffe	clr.w	-2(a0)
00015648 4eba0148	jsr	sub_15792(pc)
0001564c 3801	move.w	d1,d4
0001564e 2d400004	move.l	d0,VDP_control_port-VDP_data_port(a6)
00015652 3605	move.w	d5,d3
00015654 2c86	move.l	d6,(a6)
00015656 51cbfffc	dbf	d3,loc_15654
0001565a 068000020000	addi.l	#vdpCommDelta($0002),d0
00015660 51ccffec	dbf	d4,loc_1564E
00015664 51cfffda	dbf	d7,loc_15640
00015668 3d7c8f020004	move.w	#$8F02,VDP_control_port-VDP_data_port(a6)
0001566e 4e75	rts	
00015670 7609	moveq	#9,d3
00015672 7803	moveq	#3,d4
00015674 2a3c85da85da	move.l	#make_block_tile_pair(ArtTile_ArtNem_TitleCard+$5A,0,0,0,1),d5
0001567a 2c3ca5dca5dc	move.l	#make_block_tile_pair(ArtTile_ArtNem_TitleCard+$5C,0,0,1,1),d6
00015680 4a78ffd8	tst.w	(Two_player_mode).w
00015684 6710	beq.s	+
00015686 7604	moveq	#4,d3
00015688 7801	moveq	#1,d4
0001568a 2a3c82ed82ed	move.l	#make_block_tile_pair_2p(ArtTile_ArtNem_TitleCard+$5A,0,0,0,1),d5
00015690 2c3ca2eea2ee	move.l	#make_block_tile_pair_2p(ArtTile_ArtNem_TitleCard+$5C,0,0,1,1),d6
00015696 41f8b1f6	lea	(TitleCard_Left+titlecard_vram_dest).w,a0
0001569a 7e01	moveq	#1,d7
0001569c 3d7c8f800004	move.w	#$8F80,VDP_control_port-VDP_data_port(a6)
000156a2 3018	move.w	(a0)+,d0
000156a4 6728	beq.s	loc_156CE
000156a6 4268fffe	clr.w	-2(a0)
000156aa 4eba00e6	jsr	sub_15792(pc)
000156ae 7403	moveq	#3,d2
000156b0 2d400004	move.l	d0,VDP_control_port-VDP_data_port(a6)
000156b4 3203	move.w	d3,d1
000156b8 51c9fffc	dbf	d1,-
000156bc 3204	move.w	d4,d1
000156c0 51c9fffc	dbf	d1,-
000156c4 068000020000	addi.l	#vdpCommDelta($0002),d0
000156ca 51caffe4	dbf	d2,loc_156B0
000156ce 51cfffd2	dbf	d7,loc_156A2
000156d2 3d7c8f020004	move.w	#$8F02,VDP_control_port-VDP_data_port(a6)
000156d8 7a07	moveq	#7,d5
000156da 2c3c85da85da	move.l	#make_block_tile_pair(ArtTile_ArtNem_TitleCard+$5A,0,0,0,1),d6
000156e0 4a78ffd8	tst.w	(Two_player_mode).w
000156e4 6708	beq.s	+
000156e6 7a03	moveq	#3,d5
000156e8 2c3c82ed82ed	move.l	#make_block_tile_pair_2p(ArtTile_ArtNem_TitleCard+$5A,0,0,0,1),d6
000156ee 41f8b1b6	lea	(TitleCard_Bottom+titlecard_vram_dest).w,a0
000156f2 7e01	moveq	#1,d7
000156f4 3018	move.w	(a0)+,d0
000156f6 671c	beq.s	loc_15714
000156f8 4268fffe	clr.w	-2(a0)
000156fc 4eba0094	jsr	sub_15792(pc)
00015700 3805	move.w	d5,d4
00015706 2c86	move.l	d6,(a6)
00015708 2c86	move.l	d6,(a6)
0001570a 068000800000	addi.l	#vdpCommDelta(gameplay_plane_width/tile_width*2),d0
00015710 51ccfff0	dbf	d4,-
00015714 51cfffde	dbf	d7,loc_156F4
00015718 3838b176	move.w	(TitleCard_Background+titlecard_vram_dest).w,d4
0001571c 676e	beq.s	loc_1578C
0001571e 4bee0004	lea	VDP_control_port-VDP_data_port(a6),a5
00015722 4a78ffd8	tst.w	(Two_player_mode).w
00015726 6730	beq.s	loc_15758
00015728 47f8ee20	lea	(Camera_X_pos_P2).w,a3
0001572c 49f88000	lea	(Level_Layout).w,a4
00015730 343c6000	move.w	#vdpComm(VRAM_Plane_A_Name_Table_2P,VRAM,WRITE)>>16,d2
00015734 7c01	moveq	#1,d6
0001573a 7af0	moveq	#-$10,d5
0001573c 3204	move.w	d4,d1
0001573e 61008b82	bsr.w	CalculateVRAMAddressOfBlockForPlayer2
00015742 3801	move.w	d1,d4
00015744 7af0	moveq	#-$10,d5
00015746 7c1f	moveq	#$1F,d6
00015748 61008840	bsr.w	DrawBlockRow_CustomWidth
0001574c 4cdf0070	movem.l	(sp)+,d4-d6
00015750 06440010	addi.w	#$10,d4
00015754 51ceffe0	dbf	d6,-
00015758 47f8ee00	lea	(Camera_X_pos).w,a3
0001575c 49f88000	lea	(Level_Layout).w,a4
00015760 343c4000	move.w	#vdpComm(VRAM_Plane_A_Name_Table,VRAM,WRITE)>>16,d2
00015764 3838b176	move.w	(TitleCard_Background+titlecard_vram_dest).w,d4
00015768 7c01	moveq	#2-1,d6
0001576e 7af0	moveq	#-16,d5
00015770 3204	move.w	d4,d1
00015772 61008b12	bsr.w	CalculateVRAMAddressOfBlockForPlayer1
00015776 3801	move.w	d1,d4
00015778 7af0	moveq	#-16,d5
0001577a 7c1f	moveq	#64/2-1,d6
0001577c 6100880c	bsr.w	DrawBlockRow_CustomWidth
00015780 4cdf0070	movem.l	(sp)+,d4-d6
00015784 06440010	addi.w	#16,d4
00015788 51ceffe0	dbf	d6,-
0001578c 4278b176	clr.w	(TitleCard_Background+titlecard_vram_dest).w
00015790 4e75	rts	
00015792 02800000ffff	andi.l	#$FFFF,d0
00015798 e588	lsl.l	#2,d0
0001579a e448	lsr.w	#2,d0
0001579c 00404000	ori.w	#vdpComm($0000,VRAM,WRITE)>>16,d0
000157a0 4840	swap	d0
000157a2 4e75	rts	
000157a4 48e78080	movem.l	d0/a0,-(sp)
000157a8 6106	bsr.s	LoadTitleCard0
000157aa 4cdf0101	movem.l	(sp)+,d0/a0
000157ae 603c	bra.s	loc_157EC
000157b0 23fc7000000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_TitleCard),VRAM,WRITE),(VDP_control_port).l
000157ba 41f90007d22c	lea	(ArtNem_TitleCard).l,a0
000157c4 49f88000	lea	(Level_Layout).w,a4
000157c8 41f90007d58a	lea	(ArtNem_TitleCard2).l,a0
000157d2 61dc	bsr.s	LoadTitleCard0
000157d4 7000	moveq	#0,d0
000157d6 1038fe10	move.b	(Current_Zone).w,d0
000157da 103b0044	move.b	Off_TitleCardLetters(pc,d0.w),d0
000157de 41fa0052	lea	TitleCardLetters(pc),a0
000157e2 41f00000	lea	(a0,d0.w),a0
000157e6 203c7bc00002	move.l	#vdpComm(tiles_to_bytes(ArtTile_LevelName),VRAM,WRITE),d0
000157ec 46fc2700	move	#$2700,sr
000157f0 43f88000	lea	(Level_Layout).w,a1
000157f4 4df900c00000	lea	(VDP_data_port).l,a6
000157fa 2d400004	move.l	d0,4(a6)
000157fe 7000	moveq	#0,d0
00015800 1018	move.b	(a0)+,d0
00015802 6b16	bmi.s	loc_1581A
00015804 eb48	lsl.w	#5,d0
00015806 45f10000	lea	(a1,d0.w),a2
0001580a 7200	moveq	#0,d1
0001580c 1218	move.b	(a0)+,d1
0001580e e749	lsl.w	#3,d1
00015810 5341	subq.w	#1,d1
00015812 2c9a	move.l	(a2)+,(a6)
00015814 51c9fffc	dbf	d1,loc_15812
00015818 60e4	bra.s	loc_157FE
0001581a 46fc2300	move	#$2300,sr
0001581e 4e75	rts	
000158e6 4e71	nop	
000158e8 4ef9000014de	jmp	(extractJmpToName("JmpTo2_NemDec")).l
000158ee 4ef9000014f0	jmp	(extractJmpToName("JmpTo_NemDecToRAM")).l
000158f4 4ef90000161e	jmp	(extractJmpToName("JmpTo3_LoadPLC")).l
000158fa 4ef900008476	jmp	(extractJmpToName("JmpTo_sub_8476")).l
00015900 7000	moveq	#0,d0
00015902 10280024	move.b	routine(a0),d0
00015906 323b0006	move.w	Obj36_Index(pc,d0.w),d1
0001590a 4efb1002	jmp	Obj36_Index(pc,d1.w)
00015926 54280024	addq.b	#2,routine(a0)
0001592a 217c00015b680004	move.l	#Obj36_MapUnc_15B68,mappings(a0)
00015932 317c24340002	move.w	#make_art_tile(ArtTile_ArtNem_Spikes,1,0),art_tile(a0)
00015938 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0001593e 117c00040018	move.b	#4,priority(a0)
00015944 10280028	move.b	subtype(a0),d0
00015948 0228000f0028	andi.b	#$F,subtype(a0)
0001594e 024000f0	andi.w	#$F0,d0
00015956 e648	lsr.w	#3,d0
00015958 d2c0	adda.w	d0,a1
0001595a 11590019	move.b	(a1)+,width_pixels(a0)
0001595e 11590016	move.b	(a1)+,y_radius(a0)
00015962 e248	lsr.w	#1,d0
00015964 1140001a	move.b	d0,mapping_frame(a0)
00015968 0c000004	cmpi.b	#4,d0
0001596c 650a	blo.s	+
0001596e 54280024	addq.b	#2,routine(a0)
00015972 317c242c0002	move.w	#make_art_tile(ArtTile_ArtNem_HorizSpike,1,0),art_tile(a0)
00015978 082800010022	btst	#status.npc.y_flip,status(a0)
0001597e 6706	beq.s	+
00015980 117c00060024	move.b	#6,routine(a0)
00015986 316800080030	move.w	x_pos(a0),spikes_base_x_pos(a0)
0001598c 3168000c0032	move.w	y_pos(a0),spikes_base_y_pos(a0)
00015992 600013da	bra.w	Adjust2PArtPointer
00015996 6100012e	bsr.w	MoveSpikes
0001599a 7200	moveq	#0,d1
0001599c 12280019	move.b	width_pixels(a0),d1
000159a0 0641000b	addi.w	#$B,d1
000159a4 7400	moveq	#0,d2
000159a6 14280016	move.b	y_radius(a0),d2
000159aa 3602	move.w	d2,d3
000159ac 5243	addq.w	#1,d3
000159ae 38280008	move.w	x_pos(a0),d4
000159b2 61003d64	bsr.w	SolidObject
000159b6 1c280022	move.b	status(a0),d6
000159ba 02060018	andi.b	#standing_mask,d6
000159be 671e	beq.s	Obj36_UprightEnd
000159c0 1006	move.b	d6,d0
000159c2 02000008	andi.b	#p1_standing,d0
000159c6 6708	beq.s	+
000159c8 43f8b000	lea	(MainCharacter).w,a1
000159cc 610000c2	bsr.w	Touch_ChkHurt2
000159d0 02060010	andi.b	#p2_standing,d6
000159d4 6708	beq.s	Obj36_UprightEnd
000159d6 43f8b040	lea	(Sidekick).w,a1
000159da 610000b4	bsr.w	Touch_ChkHurt2
000159de 30280030	move.w	spikes_base_x_pos(a0),d0
000159e2 60000a26	bra.w	MarkObjGone2
000159e6 3f280008	move.w	x_pos(a0),-(sp)
000159ea 610000da	bsr.w	MoveSpikes
000159ee 7200	moveq	#0,d1
000159f0 12280019	move.b	width_pixels(a0),d1
000159f4 0641000b	addi.w	#$B,d1
000159f8 7400	moveq	#0,d2
000159fa 14280016	move.b	y_radius(a0),d2
000159fe 3602	move.w	d2,d3
00015a00 5243	addq.w	#1,d3
00015a02 381f	move.w	(sp)+,d4
00015a04 61003d12	bsr.w	SolidObject
00015a08 4846	swap	d6
00015a0a 02460003	andi.w	#touch_side_mask,d6
00015a0e 672a	beq.s	Obj36_SidewaysEnd
00015a10 1006	move.b	d6,d0
00015a12 02000001	andi.b	#p1_touch_side,d0
00015a16 670e	beq.s	+
00015a18 43f8b000	lea	(MainCharacter).w,a1
00015a1c 61000072	bsr.w	Touch_ChkHurt2
00015a20 08a800050022	bclr	#p1_pushing_bit,status(a0)
00015a26 02060002	andi.b	#p2_touch_side,d6
00015a2a 670e	beq.s	Obj36_SidewaysEnd
00015a2c 43f8b040	lea	(Sidekick).w,a1
00015a30 6100005e	bsr.w	Touch_ChkHurt2
00015a34 08a800060022	bclr	#p2_pushing_bit,status(a0)
00015a3a 30280030	move.w	spikes_base_x_pos(a0),d0
00015a3e 600009ca	bra.w	MarkObjGone2
00015a42 61000082	bsr.w	MoveSpikes
00015a46 7200	moveq	#0,d1
00015a48 12280019	move.b	width_pixels(a0),d1
00015a4c 0641000b	addi.w	#$B,d1
00015a50 7400	moveq	#0,d2
00015a52 14280016	move.b	y_radius(a0),d2
00015a56 3602	move.w	d2,d3
00015a58 5243	addq.w	#1,d3
00015a5a 38280008	move.w	x_pos(a0),d4
00015a5e 61003cb8	bsr.w	SolidObject
00015a62 4846	swap	d6
00015a64 0246000c	andi.w	#touch_bottom_mask,d6
00015a68 671e	beq.s	Obj36_UpsidedownEnd
00015a6a 1006	move.b	d6,d0
00015a6c 02000004	andi.b	#p1_touch_bottom,d0
00015a70 6708	beq.s	+
00015a72 43f8b000	lea	(MainCharacter).w,a1
00015a76 61000018	bsr.w	Touch_ChkHurt2
00015a7a 02060008	andi.b	#p2_touch_bottom,d6
00015a7e 6708	beq.s	Obj36_UpsidedownEnd
00015a80 43f8b040	lea	(Sidekick).w,a1
00015a84 6100000a	bsr.w	Touch_ChkHurt2
00015a88 30280030	move.w	spikes_base_x_pos(a0),d0
00015a8c 6000097c	bra.w	MarkObjGone2
00015a90 08290001002b	btst	#status_secondary.invincible,status_secondary(a1)
00015a96 662c	bne.s	+
00015a98 4a690030	tst.w	invulnerable_time(a1)
00015a9c 6626	bne.s	+
00015a9e 0c2900040024	cmpi.b	#4,routine(a1)
00015aa4 641e	bhs.s	+
00015aa6 2629000c	move.l	y_pos(a1),d3
00015aaa 30290012	move.w	y_vel(a1),d0
00015aae 48c0	ext.l	d0
00015ab0 e180	asl.l	#8,d0
00015ab2 9680	sub.l	d0,d3
00015ab4 2343000c	move.l	d3,y_pos(a1)
00015ab8 2448	movea.l	a0,a2
00015aba 2049	movea.l	a1,a0
00015abc 4eb90003f878	jsr	(HurtCharacter).l
00015ac2 204a	movea.l	a2,a0
00015ac4 4e75	rts	
00015ac6 7000	moveq	#0,d0
00015ac8 10280028	move.b	subtype(a0),d0
00015acc d040	add.w	d0,d0
00015ace 323b0006	move.w	MoveSpikes_Behaviors(pc,d0.w),d1
00015ad2 4efb1002	jmp	MoveSpikes_Behaviors(pc,d1.w)
00015adc 4e75	rts	
00015ade 61000026	bsr.w	MoveSpikes_Delay
00015ae2 7000	moveq	#0,d0
00015ae4 10280034	move.b	spikes_retract_offset(a0),d0
00015ae8 d0680032	add.w	spikes_base_y_pos(a0),d0
00015aec 3140000c	move.w	d0,y_pos(a0)
00015af0 4e75	rts	
00015af2 61000012	bsr.w	MoveSpikes_Delay
00015af6 7000	moveq	#0,d0
00015af8 10280034	move.b	spikes_retract_offset(a0),d0
00015afc d0680030	add.w	spikes_base_x_pos(a0),d0
00015b00 31400008	move.w	d0,x_pos(a0)
00015b04 4e75	rts	
00015b06 4a680038	tst.w	spikes_retract_timer(a0)
00015b0a 6718	beq.s	MoveSpikes_ChkDir
00015b0c 53680038	subq.w	#1,spikes_retract_timer(a0)
00015b10 6654	bne.s	+
00015b12 4a280001	tst.b	render_flags(a0)
00015b16 6a4e	bpl.s	+
00015b18 303c00b6	move.w	#SndID_SpikesMove,d0
00015b1c 4eb900001370	jsr	(PlaySound).l
00015b22 6042	bra.s	+
00015b24 4a680036	tst.w	spikes_retract_state(a0)
00015b28 671c	beq.s	MoveSpikes_Retract
00015b2a 046808000034	subi.w	#$800,spikes_retract_offset(a0)
00015b30 6434	bhs.s	+
00015b32 317c00000034	move.w	#0,spikes_retract_offset(a0)
00015b38 317c00000036	move.w	#0,spikes_retract_state(a0)
00015b3e 317c003c0038	move.w	#60,spikes_retract_timer(a0)
00015b44 6020	bra.s	+
00015b46 066808000034	addi.w	#$800,spikes_retract_offset(a0)
00015b4c 0c6820000034	cmpi.w	#$2000,spikes_retract_offset(a0)
00015b52 6512	blo.s	+
00015b54 317c20000034	move.w	#$2000,spikes_retract_offset(a0)
00015b5a 317c00010036	move.w	#1,spikes_retract_state(a0)
00015b60 317c003c0038	move.w	#60,spikes_retract_timer(a0)
00015b66 4e75	rts	
00015cc8 7000	moveq	#0,d0
00015cca 10280024	move.b	routine(a0),d0
00015cce 323b0006	move.w	Obj3B_Index(pc,d0.w),d1
00015cd2 4efb1002	jmp	Obj3B_Index(pc,d1.w)
00015cda 54280024	addq.b	#2,routine(a0)
00015cde 217c00015d2e0004	move.l	#Obj3B_MapUnc_15D2E,mappings(a0)
00015ce6 317c66c00002	move.w	#make_art_tile(ArtTile_ArtNem_GHZ_Purple_Rock,3,0),art_tile(a0)
00015cec 61001080	bsr.w	Adjust2PArtPointer
00015cf0 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00015cf6 117c00130019	move.b	#$13,width_pixels(a0)
00015cfc 117c00040018	move.b	#4,priority(a0)
00015d02 323c001b	move.w	#$1B,d1
00015d06 343c0010	move.w	#$10,d2
00015d0a 363c0010	move.w	#$10,d3
00015d0e 38280008	move.w	x_pos(a0),d4
00015d12 61003a04	bsr.w	SolidObject
00015d16 30280008	move.w	x_pos(a0),d0
00015d1a 0240ff80	andi.w	#$FF80,d0
00015d1e 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00015d22 0c400280	cmpi.w	#$280,d0
00015d26 620007be	bhi.w	DeleteObject
00015d2a 600007c8	bra.w	DisplaySprite
00015d44 7000	moveq	#0,d0
00015d46 10280024	move.b	routine(a0),d0
00015d4a 323b000a	move.w	Obj3C_Index(pc,d0.w),d1
00015d4e 4ebb1006	jsr	Obj3C_Index(pc,d1.w)
00015d52 6000067e	bra.w	MarkObjGone
00015d5c 54280024	addq.b	#2,routine(a0)
00015d60 217c00015ecc0004	move.l	#Obj3C_MapUnc_15ECC,mappings(a0)
00015d68 317c45900002	move.w	#make_art_tile(ArtTile_ArtNem_BreakWall,2,0),art_tile(a0)
00015d6e 61000ffe	bsr.w	Adjust2PArtPointer
00015d72 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00015d78 117c00100019	move.b	#$10,width_pixels(a0)
00015d7e 117c00040018	move.b	#4,priority(a0)
00015d84 11680028001a	move.b	subtype(a0),mapping_frame(a0)
00015d8a 3178b0100030	move.w	(MainCharacter+x_vel).w,objoff_30(a0)
00015d90 323c001b	move.w	#$1B,d1
00015d94 343c0020	move.w	#$20,d2
00015d98 363c0020	move.w	#$20,d3
00015d9c 38280008	move.w	x_pos(a0),d4
00015da0 61003976	bsr.w	SolidObject
00015da4 082800050022	btst	#status.npc.p1_pushing,status(a0)
00015daa 6602	bne.s	+
00015dae 43f8b000	lea	(MainCharacter).w,a1
00015db2 0c290002001c	cmpi.b	#2,anim(a1)
00015db8 66f2	bne.s	-
00015dba 30280030	move.w	objoff_30(a0),d0
00015dbe 6a02	bpl.s	.skip
00015dc0 4440	neg.w	d0
00015dc2 0c400480	cmpi.w	#$480,d0
00015dc6 65e4	blo.s	-
00015dc8 336800300010	move.w	objoff_30(a0),x_vel(a1)
00015dce 58690008	addq.w	#4,x_pos(a1)
00015dd2 49f900015e8c	lea	(Obj3C_FragmentSpeeds_LeftToRight).l,a4
00015dd8 30280008	move.w	x_pos(a0),d0
00015ddc b0690008	cmp.w	x_pos(a1),d0
00015de0 650c	blo.s	+
00015de8 49f900015eac	lea	(Obj3C_FragmentSpeeds_RightToLeft).l,a4
00015dee 336900100014	move.w	x_vel(a1),inertia(a1)
00015df4 08a800050022	bclr	#status.npc.p1_pushing,status(a0)
00015dfa 08a900050022	bclr	#status.player.pushing,status(a1)
00015e00 6116	bsr.s	BreakObjectToPieces
00015e02 610005a8	bsr.w	ObjectMove
00015e06 066800700012	addi.w	#$70,y_vel(a0)
00015e0c 4a280001	tst.b	render_flags(a0)
00015e10 6a0006d4	bpl.w	DeleteObject
00015e14 600006de	bra.w	DisplaySprite
00015e18 7000	moveq	#0,d0
00015e1a 1028001a	move.b	mapping_frame(a0),d0
00015e1e d040	add.w	d0,d0
00015e20 26680004	movea.l	mappings(a0),a3
00015e24 d6f30000	adda.w	(a3,d0.w),a3
00015e28 321b	move.w	(a3)+,d1
00015e2a 5341	subq.w	#1,d1
00015e2c 08e800050001	bset	#render_flags.static_mappings,render_flags(a0)
00015e36 1a280001	move.b	render_flags(a0),d5
00015e3a 2248	movea.l	a0,a1
00015e3c 6008	bra.s	BreakObjectToPieces_InitObject
00015e3e 610021ba	bsr.w	AllocateObjectAfterCurrent
00015e42 663e	bne.s	loc_15E82
00015e44 504b	addq.w	#8,a3
00015e46 137c00040024	move.b	#4,routine(a1)
00015e50 234b0004	move.l	a3,mappings(a1)
00015e54 13450001	move.b	d5,render_flags(a1)
00015e58 336800080008	move.w	x_pos(a0),x_pos(a1)
00015e5e 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00015e64 336800020002	move.w	art_tile(a0),art_tile(a1)
00015e6a 136800180018	move.b	priority(a0),priority(a1)
00015e70 136800190019	move.b	width_pixels(a0),width_pixels(a1)
00015e76 335c0010	move.w	(a4)+,x_vel(a1)
00015e7a 335c0012	move.w	(a4)+,y_vel(a1)
00015e7e 51c9ffbe	dbf	d1,BreakObjectToPieces_Loop
00015e82 303c00cb	move.w	#SndID_SlowSmash,d0
00015e86 4ef900001370	jmp	(PlaySound).l
00015f98 600003e2	bra.w	ObjNull
00015f9c 4a38f623	tst.b	(Teleport_flag).w
00015fa0 6642	bne.s	RunObjects_End
00015fa2 41f8b000	lea	(Object_RAM).w,a0
00015fa6 7e7f	moveq	#(Object_RAM_End-Object_RAM)/object_size-1,d7
00015fa8 7000	moveq	#0,d0
00015faa 0c380008f600	cmpi.b	#GameModeID_Demo,(Game_Mode).w
00015fb0 6708	beq.s	+
00015fb2 0c38000cf600	cmpi.b	#GameModeID_Level,(Game_Mode).w
00015fb8 6612	bne.s	RunObject
00015fba 3e3c008f	move.w	#(LevelOnly_Object_RAM_End-Object_RAM)/object_size-1,d7
00015fbe 4a78ffd8	tst.w	(Two_player_mode).w
00015fc2 6608	bne.s	RunObject
00015fc4 0c380006b024	cmpi.b	#6,(MainCharacter+routine).w
00015fca 641a	bhs.s	RunObjectsWhenPlayerIsDead
00015fcc 1010	move.b	id(a0),d0
00015fce 670c	beq.s	RunNextObject
00015fd0 d040	add.w	d0,d0
00015fd2 d040	add.w	d0,d0
00015fd4 227b0032	movea.l	Obj_Index-4(pc,d0.w),a1
00015fd8 4e91	jsr	(a1)
00015fda 7000	moveq	#0,d0
00015fdc 41e80040	lea	next_object(a0),a0
00015fe0 51cfffea	dbf	d7,RunObject
00015fe4 4e75	rts	
00015fe6 7e0f	moveq	#(Reserved_Object_RAM_End-Reserved_Object_RAM)/object_size-1,d7
00015fe8 61e2	bsr.s	RunObject
00015fea 7e6f	moveq	#(Dynamic_Object_RAM_End-Dynamic_Object_RAM)/object_size-1,d7
00015fec 6104	bsr.s	RunObjectDisplayOnly
00015fee 7e0f	moveq	#(LevelOnly_Object_RAM_End-LevelOnly_Object_RAM)/object_size-1,d7
00015ff0 60da	bra.s	RunObject
00015ff2 7000	moveq	#0,d0
00015ff4 1010	move.b	id(a0),d0
00015ff6 670a	beq.s	+
00015ff8 4a280001	tst.b	render_flags(a0)
00015ffc 6a04	bpl.s	+
00015ffe 610004f4	bsr.w	DisplaySprite
00016002 41e80040	lea	next_object(a0),a0
00016006 51cfffea	dbf	d7,RunObjectDisplayOnly
0001600a 4e75	rts	
0001637c 60000168	bra.w	DeleteObject
00016380 24280008	move.l	x_pos(a0),d2
00016384 2628000c	move.l	y_pos(a0),d3
00016388 30280010	move.w	x_vel(a0),d0
0001638c 48c0	ext.l	d0
0001638e e180	asl.l	#8,d0
00016390 d480	add.l	d0,d2
00016392 30280012	move.w	y_vel(a0),d0
00016396 066800380012	addi.w	#$38,y_vel(a0)
0001639c 48c0	ext.l	d0
0001639e e180	asl.l	#8,d0
000163a0 d680	add.l	d0,d3
000163a2 21420008	move.l	d2,x_pos(a0)
000163a6 2143000c	move.l	d3,y_pos(a0)
000163aa 4e75	rts	
000163ac 24280008	move.l	x_pos(a0),d2
000163b0 2628000c	move.l	y_pos(a0),d3
000163b4 30280010	move.w	x_vel(a0),d0
000163b8 48c0	ext.l	d0
000163ba e180	asl.l	#8,d0
000163bc d480	add.l	d0,d2
000163be 30280012	move.w	y_vel(a0),d0
000163c2 48c0	ext.l	d0
000163c4 e180	asl.l	#8,d0
000163c6 d680	add.l	d0,d3
000163c8 21420008	move.l	d2,x_pos(a0)
000163cc 2143000c	move.l	d3,y_pos(a0)
000163d0 4e75	rts	
000163d2 4a78ffd8	tst.w	(Two_player_mode).w
000163d6 6704	beq.s	+
000163d8 6000011a	bra.w	DisplaySprite
000163dc 30280008	move.w	x_pos(a0),d0
000163e0 0240ff80	andi.w	#$FF80,d0
000163e4 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
000163e8 0c400280	cmpi.w	#$80+roundToNextMultiple(screen_width,$80)+$80,d0
000163ec 62000006	bhi.w	+
000163f0 60000102	bra.w	DisplaySprite
000163f8 7000	moveq	#0,d0
000163fa 10280023	move.b	respawn_index(a0),d0
000163fe 6706	beq.s	+
00016400 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
00016406 600000de	bra.w	DeleteObject
0001640a 4a78ffd8	tst.w	(Two_player_mode).w
0001640e 6704	beq.s	+
00016410 600000e2	bra.w	DisplaySprite
00016414 0240ff80	andi.w	#$FF80,d0
00016418 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
0001641c 0c400280	cmpi.w	#$80+roundToNextMultiple(screen_width,$80)+$80,d0
00016420 62000006	bhi.w	+
00016424 600000ce	bra.w	DisplaySprite
00016428 45f8fc00	lea	(Object_Respawn_Table).w,a2
0001642c 7000	moveq	#0,d0
0001642e 10280023	move.b	respawn_index(a0),d0
00016432 6706	beq.s	+
00016434 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
0001643a 600000aa	bra.w	DeleteObject
0001643e 4a78ffd8	tst.w	(Two_player_mode).w
00016442 6702	beq.s	+
00016444 4e75	rts	
00016446 30280008	move.w	x_pos(a0),d0
0001644a 0240ff80	andi.w	#$FF80,d0
0001644e 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00016452 0c400280	cmpi.w	#$80+roundToNextMultiple(screen_width,$80)+$80,d0
00016456 62000004	bhi.w	+
0001645a 4e75	rts	
0001645c 45f8fc00	lea	(Object_Respawn_Table).w,a2
00016460 7000	moveq	#0,d0
00016462 10280023	move.b	respawn_index(a0),d0
00016466 6706	beq.s	+
00016468 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
0001646e 60000076	bra.w	DeleteObject
00016472 4a78ffd8	tst.w	(Two_player_mode).w
00016476 662e	bne.s	MarkObjGone_P2
00016478 30280008	move.w	x_pos(a0),d0
0001647c 0240ff80	andi.w	#$FF80,d0
00016480 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00016484 0c400280	cmpi.w	#$80+roundToNextMultiple(screen_width,$80)+$80,d0
00016488 62000006	bhi.w	+
0001648c 60000066	bra.w	DisplaySprite
00016490 45f8fc00	lea	(Object_Respawn_Table).w,a2
00016494 7000	moveq	#0,d0
00016496 10280023	move.b	respawn_index(a0),d0
0001649a 6706	beq.s	+
0001649c 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
000164a2 60000042	bra.w	DeleteObject
000164a6 30280008	move.w	x_pos(a0),d0
000164aa 0240ff00	andi.w	#$FF00,d0
000164ae 3200	move.w	d0,d1
000164b0 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
000164b4 0c400300	cmpi.w	#$300,d0
000164b8 62000006	bhi.w	+
000164bc 60000036	bra.w	DisplaySprite
000164c0 9278f7dc	sub.w	(Camera_X_pos_coarse_P2).w,d1
000164c4 0c410300	cmpi.w	#$300,d1
000164c8 62000006	bhi.w	+
000164cc 60000026	bra.w	DisplaySprite
000164d0 45f8fc00	lea	(Object_Respawn_Table).w,a2
000164d4 7000	moveq	#0,d0
000164d6 10280023	move.b	respawn_index(a0),d0
000164da 6706	beq.s	+
000164dc 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
000164e2 60000002	bra.w	DeleteObject
000164e6 2248	movea.l	a0,a1
000164e8 7200	moveq	#0,d1
000164ea 700f	moveq	#bytesToLcnt(next_object),d0
000164ee 51c8fffc	dbf	d0,-
000164f2 4e75	rts	
000164f4 43f8ac00	lea	(Object_Display_Lists).w,a1
000164f8 30280018	move.w	priority(a0),d0
000164fc e248	lsr.w	#8-object_display_list_size_bits,d0
000164fe 02400380	andi.w	#(1<<total_object_display_lists_bits-1)<<object_display_list_size_bits,d0
00016502 d2c0	adda.w	d0,a1
00016504 0c51007e	cmpi.w	#object_display_list_size-2,(a1)
00016508 6406	bhs.s	.return
0001650a 5451	addq.w	#2,(a1)
0001650c d2d1	adda.w	(a1),a1
0001650e 3288	move.w	a0,(a1)
00016510 4e75	rts	
00016512 45f8ac00	lea	(Object_Display_Lists).w,a2
00016516 30290018	move.w	priority(a1),d0
0001651a e248	lsr.w	#8-object_display_list_size_bits,d0
0001651c 02400380	andi.w	#(1<<total_object_display_lists_bits-1)<<object_display_list_size_bits,d0
00016520 d4c0	adda.w	d0,a2
00016522 0c52007e	cmpi.w	#object_display_list_size-2,(a2)
00016526 6406	bhs.s	.return
00016528 5452	addq.w	#2,(a2)
0001652a d4d2	adda.w	(a2),a2
0001652c 3489	move.w	a1,(a2)
0001652e 4e75	rts	
00016530 43f8ac00	lea	(Object_Display_Lists).w,a1
00016534 d2c0	adda.w	d0,a1
00016536 0c51007e	cmpi.w	#object_display_list_size-2,(a1)
0001653a 6406	bhs.s	.return
0001653c 5451	addq.w	#2,(a1)
0001653e d2d1	adda.w	(a1),a1
00016540 3288	move.w	a0,(a1)
00016542 4e75	rts	
00016544 7000	moveq	#0,d0
00016546 1028001c	move.b	anim(a0),d0
0001654a b028001d	cmp.b	prev_anim(a0),d0
0001654e 6710	beq.s	Anim_Run
00016550 1140001d	move.b	d0,prev_anim(a0)
00016554 117c0000001b	move.b	#0,anim_frame(a0)
0001655a 117c0000001e	move.b	#0,anim_frame_duration(a0)
00016560 5328001e	subq.b	#1,anim_frame_duration(a0)
00016564 6a34	bpl.s	Anim_Wait
00016566 d040	add.w	d0,d0
00016568 d2f10000	adda.w	(a1,d0.w),a1
0001656c 1151001e	move.b	(a1),anim_frame_duration(a0)
00016570 7200	moveq	#0,d1
00016572 1228001b	move.b	anim_frame(a0),d1
00016576 10311001	move.b	1(a1,d1.w),d0
0001657a 6b20	bmi.s	Anim_End_FF
0001657c 0200007f	andi.b	#$7F,d0
00016580 1140001a	move.b	d0,mapping_frame(a0)
00016584 12280022	move.b	status(a0),d1
00016588 02010003	andi.b	#1<<status.npc.x_flip|1<<status.npc.y_flip,d1
0001658c 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
00016592 83280001	or.b	d1,render_flags(a0)
00016596 5228001b	addq.b	#1,anim_frame(a0)
0001659a 4e75	rts	
0001659c 5200	addq.b	#1,d0
0001659e 660c	bne.s	Anim_End_FE
000165a0 117c0000001b	move.b	#0,anim_frame(a0)
000165a6 10290001	move.b	1(a1),d0
000165aa 60d0	bra.s	Anim_Next
000165ac 5200	addq.b	#1,d0
000165ae 6610	bne.s	Anim_End_FD
000165b0 10311002	move.b	2(a1,d1.w),d0
000165b4 9128001b	sub.b	d0,anim_frame(a0)
000165b8 9200	sub.b	d0,d1
000165ba 10311001	move.b	1(a1,d1.w),d0
000165be 60bc	bra.s	Anim_Next
000165c0 5200	addq.b	#1,d0
000165c2 6608	bne.s	Anim_End_FC
000165c4 11711002001c	move.b	2(a1,d1.w),anim(a0)
000165ca 4e75	rts	
000165cc 5200	addq.b	#1,d0
000165ce 6610	bne.s	Anim_End_FB
000165d0 54280024	addq.b	#2,routine(a0)
000165d4 117c0000001e	move.b	#0,anim_frame_duration(a0)
000165da 5228001b	addq.b	#1,anim_frame(a0)
000165de 4e75	rts	
000165e0 5200	addq.b	#1,d0
000165e2 660c	bne.s	Anim_End_FA
000165e4 117c0000001b	move.b	#0,anim_frame(a0)
000165ea 42280025	clr.b	routine_secondary(a0)
000165ee 4e75	rts	
000165f0 5200	addq.b	#1,d0
000165f2 6606	bne.s	Anim_End_F9
000165f4 54280025	addq.b	#2,routine_secondary(a0)
000165f8 4e75	rts	
000165fa 5200	addq.b	#1,d0
000165fc 6604	bne.s	Anim_End
000165fe 5428002a	addq.b	#2,obj89_arrow_routine(a0)
00016602 4e75	rts	
00016604 4a78ffd8	tst.w	(Two_player_mode).w
00016608 66000344	bne.w	BuildSprites_2P
0001660c 45f8f800	lea	(Sprite_Table).w,a2
00016610 7a00	moveq	#0,d5
00016612 7800	moveq	#0,d4
00016614 4a38f711	tst.b	(Level_started_flag).w
00016618 6708	beq.s	+
0001661e 61000b58	bsr.w	BuildRings
00016622 49f8ac00	lea	(Object_Display_Lists).w,a4
00016626 7e07	moveq	#total_object_display_lists-1,d7
00016628 4a54	tst.w	(a4)
0001662a 670000ce	beq.w	BuildSprites_NextLevel
0001662e 7c02	moveq	#2,d6
00016630 30746000	movea.w	(a4,d6.w),a0
00016634 4a10	tst.b	id(a0)
00016636 670000ba	beq.w	BuildSprites_NextObj
0001663a 0228007f0001	andi.b	#~(1<<render_flags.on_screen)&$FF,render_flags(a0)
00016640 10280001	move.b	render_flags(a0),d0
00016644 1800	move.b	d0,d4
00016646 08000006	btst	#render_flags.multi_sprite,d0
0001664a 660000d0	bne.w	BuildSprites_MultiDraw
0001664e 0240000c	andi.w	#1<<render_flags.level_fg|1<<render_flags.level_bg,d0
00016652 6752	beq.s	BuildSprites_ScreenSpaceObj
00016654 43f8eef0	lea	(Camera_X_pos_copy).w,a1
00016658 7000	moveq	#0,d0
0001665a 10280019	move.b	width_pixels(a0),d0
0001665e 36280008	move.w	x_pos(a0),d3
00016662 9651	sub.w	(a1),d3
00016664 3203	move.w	d3,d1
00016666 d240	add.w	d0,d1
00016668 6b000088	bmi.w	BuildSprites_NextObj
0001666c 3203	move.w	d3,d1
0001666e 9240	sub.w	d0,d1
00016670 0c410140	cmpi.w	#screen_width,d1
00016674 6c00007c	bge.w	BuildSprites_NextObj
00016678 06430080	addi.w	#spriteScreenPositionX(0),d3
0001667c 08040004	btst	#render_flags.explicit_height,d4
00016680 672e	beq.s	BuildSprites_ApproxYCheck
00016682 7000	moveq	#0,d0
00016684 10280016	move.b	y_radius(a0),d0
00016688 3428000c	move.w	y_pos(a0),d2
0001668c 94690004	sub.w	4(a1),d2
00016690 3202	move.w	d2,d1
00016692 d240	add.w	d0,d1
00016694 6b5c	bmi.s	BuildSprites_NextObj
00016696 3202	move.w	d2,d1
00016698 9240	sub.w	d0,d1
0001669a 0c4100e0	cmpi.w	#screen_height,d1
0001669e 6c52	bge.s	BuildSprites_NextObj
000166a0 06420080	addi.w	#spriteScreenPositionY(0),d2
000166a4 6026	bra.s	BuildSprites_DrawSprite
000166a6 3428000a	move.w	y_pixel(a0),d2
000166aa 36280008	move.w	x_pixel(a0),d3
000166ae 601c	bra.s	BuildSprites_DrawSprite
000166b0 3428000c	move.w	y_pos(a0),d2
000166b4 94690004	sub.w	4(a1),d2
000166b8 06420080	addi.w	#spriteScreenPositionY(0),d2
000166bc 024207ff	andi.w	#$7FF,d2
000166c0 0c420060	cmpi.w	#spriteScreenPositionY(0-32),d2
000166c4 652c	blo.s	BuildSprites_NextObj
000166c6 0c420180	cmpi.w	#spriteScreenPositionY(screen_height+32),d2
000166ca 6426	bhs.s	BuildSprites_NextObj
000166cc 22680004	movea.l	mappings(a0),a1
000166d0 7200	moveq	#0,d1
000166d2 08040005	btst	#render_flags.static_mappings,d4
000166d6 6610	bne.s	+
000166d8 1228001a	move.b	mapping_frame(a0),d1
000166dc d241	add.w	d1,d1
000166de d2f11000	adda.w	(a1,d1.w),a1
000166e2 3219	move.w	(a1)+,d1
000166e4 5341	subq.w	#1,d1
000166e6 6b04	bmi.s	++
000166e8 61000128	bsr.w	DrawSprite
000166ec 002800800001	ori.b	#1<<render_flags.on_screen,render_flags(a0)
000166f2 5446	addq.w	#2,d6
000166f4 5554	subq.w	#2,(a4)
000166f6 6600ff38	bne.w	BuildSprites_ObjLoop
000166fa 49ec0080	lea	object_display_list_size(a4),a4
000166fe 51cfff28	dbf	d7,BuildSprites_LevelLoop
00016702 11c5f62c	move.b	d5,(Sprite_count).w
00016706 0c050050	cmpi.b	#80,d5
0001670a 6708	beq.s	+
0001670c 24bc00000000	move.l	#0,(a2)
00016712 4e75	rts	
00016714 157c0000fffb	move.b	#0,-5(a2)
0001671a 4e75	rts	
0001671c 2f0c	move.l	a4,-(sp)
0001671e 49f8ee00	lea	(Camera_X_pos).w,a4
00016722 36680002	movea.w	art_tile(a0),a3
00016726 2a680004	movea.l	mappings(a0),a5
0001672a 7000	moveq	#0,d0
0001672c 1028000e	move.b	mainspr_width(a0),d0
00016730 36280008	move.w	x_pos(a0),d3
00016734 9654	sub.w	(a4),d3
00016736 3203	move.w	d3,d1
00016738 d240	add.w	d0,d1
0001673a 6b0000c8	bmi.w	BuildSprites_MultiDraw_NextObj
0001673e 3203	move.w	d3,d1
00016740 9240	sub.w	d0,d1
00016742 0c410140	cmpi.w	#screen_width,d1
00016746 6c0000bc	bge.w	BuildSprites_MultiDraw_NextObj
0001674a 06430080	addi.w	#spriteScreenPositionX(0),d3
0001674e 08040004	btst	#4,d4
00016752 6728	beq.s	+
00016754 7000	moveq	#0,d0
00016756 10280014	move.b	mainspr_height(a0),d0
0001675a 3428000c	move.w	y_pos(a0),d2
0001675e 946c0004	sub.w	4(a4),d2
00016762 3202	move.w	d2,d1
00016764 d240	add.w	d0,d1
00016766 6b00009c	bmi.w	BuildSprites_MultiDraw_NextObj
0001676a 3202	move.w	d2,d1
0001676c 9240	sub.w	d0,d1
0001676e 0c4100e0	cmpi.w	#screen_height,d1
00016772 6c000090	bge.w	BuildSprites_MultiDraw_NextObj
00016776 06420080	addi.w	#spriteScreenPositionY(0),d2
0001677a 601c	bra.s	++
0001677c 3428000c	move.w	y_pos(a0),d2
00016780 946c0004	sub.w	4(a4),d2
00016784 06420080	addi.w	#spriteScreenPositionY(0),d2
00016788 024207ff	andi.w	#$7FF,d2
0001678c 0c420060	cmpi.w	#spriteScreenPositionY(0-32),d2
00016790 6572	blo.s	BuildSprites_MultiDraw_NextObj
00016792 0c420180	cmpi.w	#spriteScreenPositionY(screen_height+32),d2
00016796 646c	bhs.s	BuildSprites_MultiDraw_NextObj
00016798 7200	moveq	#0,d1
0001679a 1228000b	move.b	mainspr_mapframe(a0),d1
0001679e 6716	beq.s	+
000167a0 d241	add.w	d1,d1
000167a2 224d	movea.l	a5,a1
000167a4 d2f11000	adda.w	(a1,d1.w),a1
000167a8 3219	move.w	(a1)+,d1
000167aa 5341	subq.w	#1,d1
000167ac 6b08	bmi.s	+
000167ae 3f04	move.w	d4,-(sp)
000167b0 61000058	bsr.w	ChkDrawSprite
000167b4 381f	move.w	(sp)+,d4
000167b6 002800800001	ori.b	#1<<render_flags.on_screen,render_flags(a0)
000167bc 4de80010	lea	subspr_data(a0),a6
000167c0 7000	moveq	#0,d0
000167c2 1028000f	move.b	mainspr_childsprites(a0),d0
000167c6 5340	subq.w	#1,d0
000167c8 653a	bcs.s	BuildSprites_MultiDraw_NextObj
000167cc 361e	move.w	(a6)+,d3
000167ce 9654	sub.w	(a4),d3
000167d0 06430080	addi.w	#spriteScreenPositionX(0),d3
000167d4 341e	move.w	(a6)+,d2
000167d6 946c0004	sub.w	4(a4),d2
000167da 06420080	addi.w	#spriteScreenPositionY(0),d2
000167de 024207ff	andi.w	#$7FF,d2
000167e2 524e	addq.w	#1,a6
000167e4 7200	moveq	#0,d1
000167e6 121e	move.b	(a6)+,d1
000167e8 d241	add.w	d1,d1
000167ea 224d	movea.l	a5,a1
000167ec d2f11000	adda.w	(a1,d1.w),a1
000167f0 3219	move.w	(a1)+,d1
000167f2 5341	subq.w	#1,d1
000167f4 6b08	bmi.s	+
000167f6 3f04	move.w	d4,-(sp)
000167f8 61000010	bsr.w	ChkDrawSprite
000167fc 381f	move.w	(sp)+,d4
000167fe 4840	swap	d0
00016800 51c8ffc8	dbf	d0,-
00016804 285f	movea.l	(sp)+,a4
00016806 6000feea	bra.w	BuildSprites_NextObj
0001680a 0c050050	cmpi.b	#80,d5
0001680e 650c	blo.s	DrawSprite_Cont
00016810 4e75	rts	
00016812 36680002	movea.w	art_tile(a0),a3
00016816 0c050050	cmpi.b	#80,d5
0001681a 6436	bhs.s	DrawSprite_Done
0001681c 08040000	btst	#0,d4
00016820 6632	bne.s	DrawSprite_FlipX
00016822 08040001	btst	#1,d4
00016826 6600008c	bne.w	DrawSprite_FlipY
0001682a 1019	move.b	(a1)+,d0
0001682c 4880	ext.w	d0
0001682e d042	add.w	d2,d0
00016830 34c0	move.w	d0,(a2)+
00016832 14d9	move.b	(a1)+,(a2)+
00016834 5205	addq.b	#1,d5
00016836 14c5	move.b	d5,(a2)+
00016838 3019	move.w	(a1)+,d0
0001683a d04b	add.w	a3,d0
0001683c 34c0	move.w	d0,(a2)+
0001683e 5449	addq.w	#2,a1
00016840 3019	move.w	(a1)+,d0
00016842 d043	add.w	d3,d0
00016844 024001ff	andi.w	#$1FF,d0
00016848 6602	bne.s	+
0001684a 5240	addq.w	#1,d0
0001684c 34c0	move.w	d0,(a2)+
0001684e 51c9ffda	dbf	d1,DrawSprite_Loop
00016852 4e75	rts	
00016854 08040001	btst	#1,d4
00016858 660000a2	bne.w	DrawSprite_FlipXY
0001685c 1019	move.b	(a1)+,d0
0001685e 4880	ext.w	d0
00016860 d042	add.w	d2,d0
00016862 34c0	move.w	d0,(a2)+
00016864 1819	move.b	(a1)+,d4
00016866 14c4	move.b	d4,(a2)+
00016868 5205	addq.b	#1,d5
0001686a 14c5	move.b	d5,(a2)+
0001686c 3019	move.w	(a1)+,d0
0001686e d04b	add.w	a3,d0
00016870 0a400800	eori.w	#$800,d0
00016874 34c0	move.w	d0,(a2)+
00016876 5449	addq.w	#2,a1
00016878 3019	move.w	(a1)+,d0
0001687a 4440	neg.w	d0
0001687c 183b4016	move.b	CellOffsets_XFlip(pc,d4.w),d4
00016880 9044	sub.w	d4,d0
00016882 d043	add.w	d3,d0
00016884 024001ff	andi.w	#$1FF,d0
00016888 6602	bne.s	+
0001688a 5240	addq.w	#1,d0
0001688c 34c0	move.w	d0,(a2)+
0001688e 51c9ffcc	dbf	d1,-
00016892 4e75	rts	
000168b4 1019	move.b	(a1)+,d0
000168b6 1811	move.b	(a1),d4
000168b8 4880	ext.w	d0
000168ba 4440	neg.w	d0
000168bc 183b40e6	move.b	CellOffsets_YFlip(pc,d4.w),d4
000168c0 9044	sub.w	d4,d0
000168c2 d042	add.w	d2,d0
000168c4 34c0	move.w	d0,(a2)+
000168c6 14d9	move.b	(a1)+,(a2)+
000168c8 5205	addq.b	#1,d5
000168ca 14c5	move.b	d5,(a2)+
000168cc 3019	move.w	(a1)+,d0
000168ce d04b	add.w	a3,d0
000168d0 0a401000	eori.w	#$1000,d0
000168d4 34c0	move.w	d0,(a2)+
000168d6 5449	addq.w	#2,a1
000168d8 3019	move.w	(a1)+,d0
000168da d043	add.w	d3,d0
000168dc 024001ff	andi.w	#$1FF,d0
000168e0 6602	bne.s	+
000168e2 5240	addq.w	#1,d0
000168e4 34c0	move.w	d0,(a2)+
000168e6 51c9ffcc	dbf	d1,-
000168ea 4e75	rts	
000168fc 1019	move.b	(a1)+,d0
000168fe 1811	move.b	(a1),d4
00016900 4880	ext.w	d0
00016902 4440	neg.w	d0
00016904 183b40e6	move.b	CellOffsets_YFlip2(pc,d4.w),d4
00016908 9044	sub.w	d4,d0
0001690a d042	add.w	d2,d0
0001690c 34c0	move.w	d0,(a2)+
0001690e 1819	move.b	(a1)+,d4
00016910 14c4	move.b	d4,(a2)+
00016912 5205	addq.b	#1,d5
00016914 14c5	move.b	d5,(a2)+
00016916 3019	move.w	(a1)+,d0
00016918 d04b	add.w	a3,d0
0001691a 0a401800	eori.w	#$1800,d0
0001691e 34c0	move.w	d0,(a2)+
00016920 5449	addq.w	#2,a1
00016922 3019	move.w	(a1)+,d0
00016924 4440	neg.w	d0
00016926 183b4016	move.b	CellOffsets_XFlip2(pc,d4.w),d4
0001692a 9044	sub.w	d4,d0
0001692c d043	add.w	d3,d0
0001692e 024001ff	andi.w	#$1FF,d0
00016932 6602	bne.s	+
00016934 5240	addq.w	#1,d0
00016936 34c0	move.w	d0,(a2)+
00016938 51c9ffc2	dbf	d1,-
0001693c 4e75	rts	
0001694e 45f8f800	lea	(Sprite_Table).w,a2
00016952 7a02	moveq	#2,d5
00016954 7800	moveq	#0,d4
00016956 24fc01d80f01	move.l	#$1D80F01,(a2)+
0001695c 24fc00000001	move.l	#1,(a2)+
00016962 24fc01d80f02	move.l	#$1D80F02,(a2)+
00016968 24fc00000000	move.l	#0,(a2)+
0001696e 4a38f711	tst.b	(Level_started_flag).w
00016972 6708	beq.s	+
00016978 6100087e	bsr.w	BuildRings_P1
0001697c 49f8ac00	lea	(Object_Display_Lists).w,a4
00016980 7e07	moveq	#total_object_display_lists-1,d7
00016982 3014	move.w	(a4),d0
00016984 670000d4	beq.w	BuildSprites_P1_NextLevel
00016988 3f00	move.w	d0,-(sp)
0001698a 7c02	moveq	#2,d6
0001698c 30746000	movea.w	(a4,d6.w),a0
00016990 4a10	tst.b	id(a0)
00016992 670000bc	beq.w	BuildSprites_P1_NextObj
00016996 0228007f0001	andi.b	#~(1<<render_flags.on_screen)&$FF,render_flags(a0)
0001699c 10280001	move.b	render_flags(a0),d0
000169a0 1800	move.b	d0,d4
000169a2 08000006	btst	#render_flags.multi_sprite,d0
000169a6 660001f2	bne.w	BuildSprites_P1_MultiDraw
000169aa 0240000c	andi.w	#1<<render_flags.level_fg|1<<render_flags.level_bg,d0
000169ae 6750	beq.s	BuildSprites_P1_ScreenSpaceObj
000169b0 43f8ee00	lea	(Camera_X_pos).w,a1
000169b4 7000	moveq	#0,d0
000169b6 10280019	move.b	width_pixels(a0),d0
000169ba 36280008	move.w	x_pos(a0),d3
000169be 9651	sub.w	(a1),d3
000169c0 3203	move.w	d3,d1
000169c2 d240	add.w	d0,d1
000169c4 6b00008a	bmi.w	BuildSprites_P1_NextObj
000169c8 3203	move.w	d3,d1
000169ca 9240	sub.w	d0,d1
000169cc 0c410140	cmpi.w	#screen_width,d1
000169d0 6c7e	bge.s	BuildSprites_P1_NextObj
000169d2 06430080	addi.w	#spriteScreenPositionX(0),d3
000169d6 08040004	btst	#render_flags.explicit_height,d4
000169da 6732	beq.s	BuildSprites_P1_ApproxYCheck
000169dc 7000	moveq	#0,d0
000169de 10280016	move.b	y_radius(a0),d0
000169e2 3428000c	move.w	y_pos(a0),d2
000169e6 94690004	sub.w	4(a1),d2
000169ea 3202	move.w	d2,d1
000169ec d240	add.w	d0,d1
000169ee 6b60	bmi.s	BuildSprites_P1_NextObj
000169f0 3202	move.w	d2,d1
000169f2 9240	sub.w	d0,d1
000169f4 0c4100e0	cmpi.w	#screen_height,d1
000169f8 6c56	bge.s	BuildSprites_P1_NextObj
000169fa 06420100	addi.w	#spriteScreenPositionY2P(0),d2
000169fe 602a	bra.s	BuildSprites_P1_DrawSprite
00016a00 3428000a	move.w	y_pixel(a0),d2
00016a04 36280008	move.w	x_pixel(a0),d3
00016a08 06420080	addi.w	#spriteScreenPositionY2P(0)-spriteScreenPositionY(0),d2
00016a0c 601c	bra.s	BuildSprites_P1_DrawSprite
00016a0e 3428000c	move.w	y_pos(a0),d2
00016a12 94690004	sub.w	4(a1),d2
00016a16 06420080	addi.w	#spriteScreenPositionY(0),d2
00016a1a 0c420060	cmpi.w	#spriteScreenPositionY(0-32),d2
00016a1e 6530	blo.s	BuildSprites_P1_NextObj
00016a20 0c420180	cmpi.w	#spriteScreenPositionY(screen_height+32),d2
00016a24 642a	bhs.s	BuildSprites_P1_NextObj
00016a26 06420080	addi.w	#spriteScreenPositionY2P(0)-spriteScreenPositionY(0),d2
00016a2a 22680004	movea.l	mappings(a0),a1
00016a2e 7200	moveq	#0,d1
00016a30 08040005	btst	#render_flags.static_mappings,d4
00016a34 6610	bne.s	+
00016a36 1228001a	move.b	mapping_frame(a0),d1
00016a3a d241	add.w	d1,d1
00016a3c d2f11000	adda.w	(a1,d1.w),a1
00016a40 3219	move.w	(a1)+,d1
00016a42 5341	subq.w	#1,d1
00016a44 6b04	bmi.s	++
00016a46 61000366	bsr.w	DrawSprite_2P
00016a4a 002800800001	ori.b	#1<<render_flags.on_screen,render_flags(a0)
00016a50 5446	addq.w	#2,d6
00016a52 5557	subq.w	#2,(sp)
00016a54 6600ff36	bne.w	BuildSprites_P1_ObjLoop
00016a58 544f	addq.w	#2,sp
00016a5a 49ec0080	lea	object_display_list_size(a4),a4
00016a5e 51cfff22	dbf	d7,BuildSprites_P1_LevelLoop
00016a62 11c5f62c	move.b	d5,(Sprite_count).w
00016a66 0c050050	cmpi.b	#80,d5
00016a6a 6408	bhs.s	+
00016a6c 24bc00000000	move.l	#0,(a2)
00016a72 6006	bra.s	BuildSprites_P2
00016a74 157c0000fffb	move.b	#0,-5(a2)
00016a7a 4a78f644	tst.w	(Hint_flag).w
00016a7e 66fa	bne.s	BuildSprites_P2
00016a80 45f8dd00	lea	(Sprite_Table_P2).w,a2
00016a84 7a00	moveq	#0,d5
00016a86 7800	moveq	#0,d4
00016a88 4a38f711	tst.b	(Level_started_flag).w
00016a8c 6708	beq.s	+
00016a92 6100077a	bsr.w	BuildRings_P2
00016a96 49f8ac00	lea	(Object_Display_Lists).w,a4
00016a9a 7e07	moveq	#total_object_display_lists-1,d7
00016a9c 3014	move.w	(a4),d0
00016a9e 670000d8	beq.w	BuildSprites_P2_NextLevel
00016aa2 3f00	move.w	d0,-(sp)
00016aa4 7c02	moveq	#2,d6
00016aa6 30746000	movea.w	(a4,d6.w),a0
00016aaa 4a10	tst.b	id(a0)
00016aac 670000b6	beq.w	BuildSprites_P2_NextObj
00016ab0 10280001	move.b	render_flags(a0),d0
00016ab4 1800	move.b	d0,d4
00016ab6 08000006	btst	#render_flags.multi_sprite,d0
00016aba 660001c8	bne.w	BuildSprites_P2_MultiDraw
00016abe 0240000c	andi.w	#1<<render_flags.level_fg|1<<render_flags.level_bg,d0
00016ac2 6750	beq.s	BuildSprites_P2_ScreenSpaceObj
00016ac4 43f8ee20	lea	(Camera_X_pos_P2).w,a1
00016ac8 7000	moveq	#0,d0
00016aca 10280019	move.b	width_pixels(a0),d0
00016ace 36280008	move.w	x_pos(a0),d3
00016ad2 9651	sub.w	(a1),d3
00016ad4 3203	move.w	d3,d1
00016ad6 d240	add.w	d0,d1
00016ad8 6b00008a	bmi.w	BuildSprites_P2_NextObj
00016adc 3203	move.w	d3,d1
00016ade 9240	sub.w	d0,d1
00016ae0 0c410140	cmpi.w	#screen_width,d1
00016ae4 6c7e	bge.s	BuildSprites_P2_NextObj
00016ae6 06430080	addi.w	#spriteScreenPositionX(0),d3
00016aea 08040004	btst	#render_flags.explicit_height,d4
00016aee 6732	beq.s	BuildSprites_P2_ApproxYCheck
00016af0 7000	moveq	#0,d0
00016af2 10280016	move.b	y_radius(a0),d0
00016af6 3428000c	move.w	y_pos(a0),d2
00016afa 94690004	sub.w	4(a1),d2
00016afe 3202	move.w	d2,d1
00016b00 d240	add.w	d0,d1
00016b02 6b60	bmi.s	BuildSprites_P2_NextObj
00016b04 3202	move.w	d2,d1
00016b06 9240	sub.w	d0,d1
00016b08 0c4100e0	cmpi.w	#screen_height,d1
00016b0c 6c56	bge.s	BuildSprites_P2_NextObj
00016b0e 064201e0	addi.w	#spriteScreenPositionY2P(screen_height),d2
00016b12 602a	bra.s	BuildSprites_P2_DrawSprite
00016b14 3428000a	move.w	y_pixel(a0),d2
00016b18 36280008	move.w	x_pixel(a0),d3
00016b1c 06420160	addi.w	#spriteScreenPositionY2P(screen_height)-spriteScreenPositionY(0),d2
00016b20 601c	bra.s	BuildSprites_P2_DrawSprite
00016b22 3428000c	move.w	y_pos(a0),d2
00016b26 94690004	sub.w	4(a1),d2
00016b2a 06420080	addi.w	#spriteScreenPositionY(0),d2
00016b2e 0c420060	cmpi.w	#spriteScreenPositionY(0-32),d2
00016b32 6530	blo.s	BuildSprites_P2_NextObj
00016b34 0c420180	cmpi.w	#spriteScreenPositionY(screen_height+32),d2
00016b38 642a	bhs.s	BuildSprites_P2_NextObj
00016b3a 06420160	addi.w	#spriteScreenPositionY2P(screen_height)-spriteScreenPositionY(0),d2
00016b3e 22680004	movea.l	mappings(a0),a1
00016b42 7200	moveq	#0,d1
00016b44 08040005	btst	#render_flags.static_mappings,d4
00016b48 6610	bne.s	+
00016b4a 1228001a	move.b	mapping_frame(a0),d1
00016b4e d241	add.w	d1,d1
00016b50 d2f11000	adda.w	(a1,d1.w),a1
00016b54 3219	move.w	(a1)+,d1
00016b56 5341	subq.w	#1,d1
00016b58 6b04	bmi.s	++
00016b5a 61000252	bsr.w	DrawSprite_2P
00016b5e 002800800001	ori.b	#1<<render_flags.on_screen,render_flags(a0)
00016b64 5446	addq.w	#2,d6
00016b66 5557	subq.w	#2,(sp)
00016b68 6600ff3c	bne.w	BuildSprites_P2_ObjLoop
00016b6c 544f	addq.w	#2,sp
00016b6e 4a38f623	tst.b	(Teleport_flag).w
00016b72 6604	bne.s	BuildSprites_P2_NextLevel
00016b74 38bc0000	move.w	#0,(a4)
00016b78 49ec0080	lea	object_display_list_size(a4),a4
00016b7c 51cfff1e	dbf	d7,BuildSprites_P2_LevelLoop
00016b80 11c5f62c	move.b	d5,(Sprite_count).w
00016b84 0c050050	cmpi.b	#80,d5
00016b88 6708	beq.s	+
00016b8a 24bc00000000	move.l	#0,(a2)
00016b90 4e75	rts	
00016b92 157c0000fffb	move.b	#0,-5(a2)
00016b98 4e75	rts	
00016b9a 2f0c	move.l	a4,-(sp)
00016b9c 49f8ee00	lea	(Camera_X_pos).w,a4
00016ba0 36680002	movea.w	art_tile(a0),a3
00016ba4 2a680004	movea.l	mappings(a0),a5
00016ba8 7000	moveq	#0,d0
00016baa 1028000e	move.b	mainspr_width(a0),d0
00016bae 36280008	move.w	x_pos(a0),d3
00016bb2 9654	sub.w	(a4),d3
00016bb4 3203	move.w	d3,d1
00016bb6 d240	add.w	d0,d1
00016bb8 6b0000c4	bmi.w	BuildSprites_P1_MultiDraw_NextObj
00016bbc 3203	move.w	d3,d1
00016bbe 9240	sub.w	d0,d1
00016bc0 0c410140	cmpi.w	#screen_width,d1
00016bc4 6c0000b8	bge.w	BuildSprites_P1_MultiDraw_NextObj
00016bc8 06430080	addi.w	#spriteScreenPositionX(0),d3
00016bcc 08040004	btst	#4,d4
00016bd0 6728	beq.s	+
00016bd2 7000	moveq	#0,d0
00016bd4 10280014	move.b	mainspr_height(a0),d0
00016bd8 3428000c	move.w	y_pos(a0),d2
00016bdc 946c0004	sub.w	4(a4),d2
00016be0 3202	move.w	d2,d1
00016be2 d240	add.w	d0,d1
00016be4 6b000098	bmi.w	BuildSprites_P1_MultiDraw_NextObj
00016be8 3202	move.w	d2,d1
00016bea 9240	sub.w	d0,d1
00016bec 0c4100e0	cmpi.w	#screen_height,d1
00016bf0 6c00008c	bge.w	BuildSprites_P1_MultiDraw_NextObj
00016bf4 06420100	addi.w	#spriteScreenPositionY2P(0),d2
00016bf8 601c	bra.s	++
00016bfa 3428000c	move.w	y_pos(a0),d2
00016bfe 946c0004	sub.w	4(a4),d2
00016c02 06420080	addi.w	#spriteScreenPositionY(0),d2
00016c06 0c420060	cmpi.w	#spriteScreenPositionY(0-32),d2
00016c0a 6572	blo.s	BuildSprites_P1_MultiDraw_NextObj
00016c0c 0c420180	cmpi.w	#spriteScreenPositionY(screen_height+32),d2
00016c10 646c	bhs.s	BuildSprites_P1_MultiDraw_NextObj
00016c12 06420080	addi.w	#spriteScreenPositionY2P(0)-spriteScreenPositionY(0),d2
00016c16 7200	moveq	#0,d1
00016c18 1228000b	move.b	mainspr_mapframe(a0),d1
00016c1c 6716	beq.s	+
00016c1e d241	add.w	d1,d1
00016c20 224d	movea.l	a5,a1
00016c22 d2f11000	adda.w	(a1,d1.w),a1
00016c26 3219	move.w	(a1)+,d1
00016c28 5341	subq.w	#1,d1
00016c2a 6b08	bmi.s	+
00016c2c 3f04	move.w	d4,-(sp)
00016c2e 61000176	bsr.w	ChkDrawSprite_2P
00016c32 381f	move.w	(sp)+,d4
00016c34 002800800001	ori.b	#1<<render_flags.on_screen,render_flags(a0)
00016c3a 4de80010	lea	subspr_data(a0),a6
00016c3e 7000	moveq	#0,d0
00016c40 1028000f	move.b	mainspr_childsprites(a0),d0
00016c44 5340	subq.w	#1,d0
00016c46 6536	bcs.s	BuildSprites_P1_MultiDraw_NextObj
00016c4a 361e	move.w	(a6)+,d3
00016c4c 9654	sub.w	(a4),d3
00016c4e 06430080	addi.w	#spriteScreenPositionX(0),d3
00016c52 341e	move.w	(a6)+,d2
00016c54 946c0004	sub.w	4(a4),d2
00016c58 06420100	addi.w	#spriteScreenPositionY2P(0),d2
00016c5c 524e	addq.w	#1,a6
00016c5e 7200	moveq	#0,d1
00016c60 121e	move.b	(a6)+,d1
00016c62 d241	add.w	d1,d1
00016c64 224d	movea.l	a5,a1
00016c66 d2f11000	adda.w	(a1,d1.w),a1
00016c6a 3219	move.w	(a1)+,d1
00016c6c 5341	subq.w	#1,d1
00016c6e 6b08	bmi.s	+
00016c70 3f04	move.w	d4,-(sp)
00016c72 61000132	bsr.w	ChkDrawSprite_2P
00016c76 381f	move.w	(sp)+,d4
00016c78 4840	swap	d0
00016c7a 51c8ffcc	dbf	d0,-
00016c7e 285f	movea.l	(sp)+,a4
00016c80 6000fdce	bra.w	BuildSprites_P1_NextObj
00016c84 2f0c	move.l	a4,-(sp)
00016c86 49f8ee20	lea	(Camera_X_pos_P2).w,a4
00016c8a 36680002	movea.w	art_tile(a0),a3
00016c8e 2a680004	movea.l	mappings(a0),a5
00016c92 7000	moveq	#0,d0
00016c94 1028000e	move.b	mainspr_width(a0),d0
00016c98 36280008	move.w	x_pos(a0),d3
00016c9c 9654	sub.w	(a4),d3
00016c9e 3203	move.w	d3,d1
00016ca0 d240	add.w	d0,d1
00016ca2 6b0000c4	bmi.w	BuildSprites_P2_MultiDraw_NextObj
00016ca6 3203	move.w	d3,d1
00016ca8 9240	sub.w	d0,d1
00016caa 0c410140	cmpi.w	#screen_width,d1
00016cae 6c0000b8	bge.w	BuildSprites_P2_MultiDraw_NextObj
00016cb2 06430080	addi.w	#spriteScreenPositionX(0),d3
00016cb6 08040004	btst	#4,d4
00016cba 6728	beq.s	+
00016cbc 7000	moveq	#0,d0
00016cbe 10280014	move.b	mainspr_height(a0),d0
00016cc2 3428000c	move.w	y_pos(a0),d2
00016cc6 946c0004	sub.w	4(a4),d2
00016cca 3202	move.w	d2,d1
00016ccc d240	add.w	d0,d1
00016cce 6b000098	bmi.w	BuildSprites_P2_MultiDraw_NextObj
00016cd2 3202	move.w	d2,d1
00016cd4 9240	sub.w	d0,d1
00016cd6 0c4100e0	cmpi.w	#screen_height,d1
00016cda 6c00008c	bge.w	BuildSprites_P2_MultiDraw_NextObj
00016cde 064201e0	addi.w	#spriteScreenPositionY2P(screen_height),d2
00016ce2 601c	bra.s	++
00016ce4 3428000c	move.w	y_pos(a0),d2
00016ce8 946c0004	sub.w	4(a4),d2
00016cec 06420080	addi.w	#spriteScreenPositionY(0),d2
00016cf0 0c420060	cmpi.w	#spriteScreenPositionY(0-32),d2
00016cf4 6572	blo.s	BuildSprites_P2_MultiDraw_NextObj
00016cf6 0c420180	cmpi.w	#spriteScreenPositionY(screen_height+32),d2
00016cfa 646c	bhs.s	BuildSprites_P2_MultiDraw_NextObj
00016cfc 06420160	addi.w	#spriteScreenPositionY2P(screen_height)-spriteScreenPositionY(0),d2
00016d00 7200	moveq	#0,d1
00016d02 1228000b	move.b	mainspr_mapframe(a0),d1
00016d06 6716	beq.s	+
00016d08 d241	add.w	d1,d1
00016d0a 224d	movea.l	a5,a1
00016d0c d2f11000	adda.w	(a1,d1.w),a1
00016d10 3219	move.w	(a1)+,d1
00016d12 5341	subq.w	#1,d1
00016d14 6b08	bmi.s	+
00016d16 3f04	move.w	d4,-(sp)
00016d18 6100008c	bsr.w	ChkDrawSprite_2P
00016d1c 381f	move.w	(sp)+,d4
00016d1e 002800800001	ori.b	#1<<render_flags.on_screen,render_flags(a0)
00016d24 4de80010	lea	subspr_data(a0),a6
00016d28 7000	moveq	#0,d0
00016d2a 1028000f	move.b	mainspr_childsprites(a0),d0
00016d2e 5340	subq.w	#1,d0
00016d30 6536	bcs.s	BuildSprites_P2_MultiDraw_NextObj
00016d34 361e	move.w	(a6)+,d3
00016d36 9654	sub.w	(a4),d3
00016d38 06430080	addi.w	#spriteScreenPositionX(0),d3
00016d3c 341e	move.w	(a6)+,d2
00016d3e 946c0004	sub.w	4(a4),d2
00016d42 064201e0	addi.w	#spriteScreenPositionY2P(screen_height),d2
00016d46 524e	addq.w	#1,a6
00016d48 7200	moveq	#0,d1
00016d4a 121e	move.b	(a6)+,d1
00016d4c d241	add.w	d1,d1
00016d4e 224d	movea.l	a5,a1
00016d50 d2f11000	adda.w	(a1,d1.w),a1
00016d54 3219	move.w	(a1)+,d1
00016d56 5341	subq.w	#1,d1
00016d58 6b08	bmi.s	+
00016d5a 3f04	move.w	d4,-(sp)
00016d5c 61000048	bsr.w	ChkDrawSprite_2P
00016d60 381f	move.w	(sp)+,d4
00016d62 4840	swap	d0
00016d64 51c8ffcc	dbf	d0,-
00016d68 285f	movea.l	(sp)+,a4
00016d6a 6000fdf8	bra.w	BuildSprites_P2_NextObj
00016d6e 4a78ffd8	tst.w	(Two_player_mode).w
00016d72 6714	beq.s	.return
00016d74 30280002	move.w	art_tile(a0),d0
00016d78 024007ff	andi.w	#tile_mask,d0
00016d7c e248	lsr.w	#1,d0
00016d7e 0268f8000002	andi.w	#nontile_mask,art_tile(a0)
00016d84 d1680002	add.w	d0,art_tile(a0)
00016d88 4e75	rts	
00016d8a 4a78ffd8	tst.w	(Two_player_mode).w
00016d8e 6714	beq.s	.return
00016d90 30290002	move.w	art_tile(a1),d0
00016d94 024007ff	andi.w	#tile_mask,d0
00016d98 e248	lsr.w	#1,d0
00016d9a 0269f8000002	andi.w	#nontile_mask,art_tile(a1)
00016da0 d1690002	add.w	d0,art_tile(a1)
00016da4 4e75	rts	
00016da6 0c050050	cmpi.b	#80,d5
00016daa 651a	blo.s	DrawSprite_2P_Loop
00016dac 4e75	rts	
00016dae 36680002	movea.w	art_tile(a0),a3
00016db2 0c050050	cmpi.b	#80,d5
00016db6 643a	bhs.s	DrawSprite_2P_Done
00016db8 08040000	btst	#0,d4
00016dbc 6646	bne.s	DrawSprite_2P_FlipX
00016dbe 08040001	btst	#1,d4
00016dc2 660000a2	bne.w	DrawSprite_2P_FlipY
00016dc6 1019	move.b	(a1)+,d0
00016dc8 4880	ext.w	d0
00016dca d042	add.w	d2,d0
00016dcc 34c0	move.w	d0,(a2)+
00016dce 1819	move.b	(a1)+,d4
00016dd0 14fb4022	move.b	SpriteSizes_2P(pc,d4.w),(a2)+
00016dd4 5205	addq.b	#1,d5
00016dd6 14c5	move.b	d5,(a2)+
00016dd8 5449	addq.w	#2,a1
00016dda 3019	move.w	(a1)+,d0
00016ddc d04b	add.w	a3,d0
00016dde 34c0	move.w	d0,(a2)+
00016de0 3019	move.w	(a1)+,d0
00016de2 d043	add.w	d3,d0
00016de4 024001ff	andi.w	#$1FF,d0
00016de8 6602	bne.s	+
00016dea 5240	addq.w	#1,d0
00016dec 34c0	move.w	d0,(a2)+
00016dee 51c9ffd6	dbf	d1,DrawSprite_2P_Loop
00016df2 4e75	rts	
00016e04 08040001	btst	#1,d4
00016e08 660000b8	bne.w	DrawSprite_2P_FlipXY
00016e0c 1019	move.b	(a1)+,d0
00016e0e 4880	ext.w	d0
00016e10 d042	add.w	d2,d0
00016e12 34c0	move.w	d0,(a2)+
00016e14 1819	move.b	(a1)+,d4
00016e16 14fb40dc	move.b	SpriteSizes_2P(pc,d4.w),(a2)+
00016e1a 5205	addq.b	#1,d5
00016e1c 14c5	move.b	d5,(a2)+
00016e1e 5449	addq.w	#2,a1
00016e20 3019	move.w	(a1)+,d0
00016e22 d04b	add.w	a3,d0
00016e24 0a400800	eori.w	#$800,d0
00016e28 34c0	move.w	d0,(a2)+
00016e2a 3019	move.w	(a1)+,d0
00016e2c 4440	neg.w	d0
00016e2e 183b4016	move.b	byte_16E46(pc,d4.w),d4
00016e32 9044	sub.w	d4,d0
00016e34 d043	add.w	d3,d0
00016e36 024001ff	andi.w	#$1FF,d0
00016e3a 6602	bne.s	+
00016e3c 5240	addq.w	#1,d0
00016e3e 34c0	move.w	d0,(a2)+
00016e40 51c9ffca	dbf	d1,-
00016e44 4e75	rts	
00016e66 1019	move.b	(a1)+,d0
00016e68 1811	move.b	(a1),d4
00016e6a 4880	ext.w	d0
00016e6c 4440	neg.w	d0
00016e6e 183b40e6	move.b	byte_16E56(pc,d4.w),d4
00016e72 9044	sub.w	d4,d0
00016e74 d042	add.w	d2,d0
00016e76 34c0	move.w	d0,(a2)+
00016e78 1819	move.b	(a1)+,d4
00016e7a 14fb4026	move.b	SpriteSizes_2P_2(pc,d4.w),(a2)+
00016e7e 5205	addq.b	#1,d5
00016e80 14c5	move.b	d5,(a2)+
00016e82 5449	addq.w	#2,a1
00016e84 3019	move.w	(a1)+,d0
00016e86 d04b	add.w	a3,d0
00016e88 0a401000	eori.w	#$1000,d0
00016e8c 34c0	move.w	d0,(a2)+
00016e8e 3019	move.w	(a1)+,d0
00016e90 d043	add.w	d3,d0
00016e92 024001ff	andi.w	#$1FF,d0
00016e96 6602	bne.s	+
00016e98 5240	addq.w	#1,d0
00016e9a 34c0	move.w	d0,(a2)+
00016e9c 51c9ffc8	dbf	d1,-
00016ea0 4e75	rts	
00016ec2 1019	move.b	(a1)+,d0
00016ec4 1811	move.b	(a1),d4
00016ec6 4880	ext.w	d0
00016ec8 4440	neg.w	d0
00016eca 183b40e6	move.b	byte_16EB2(pc,d4.w),d4
00016ece 9044	sub.w	d4,d0
00016ed0 d042	add.w	d2,d0
00016ed2 34c0	move.w	d0,(a2)+
00016ed4 1819	move.b	(a1)+,d4
00016ed6 14fb40ca	move.b	SpriteSizes_2P_2(pc,d4.w),(a2)+
00016eda 5205	addq.b	#1,d5
00016edc 14c5	move.b	d5,(a2)+
00016ede 5449	addq.w	#2,a1
00016ee0 3019	move.w	(a1)+,d0
00016ee2 d04b	add.w	a3,d0
00016ee4 0a401800	eori.w	#$1800,d0
00016ee8 34c0	move.w	d0,(a2)+
00016eea 3019	move.w	(a1)+,d0
00016eec 4440	neg.w	d0
00016eee 183b4016	move.b	byte_16F06(pc,d4.w),d4
00016ef2 9044	sub.w	d4,d0
00016ef4 d043	add.w	d3,d0
00016ef6 024001ff	andi.w	#$1FF,d0
00016efa 6602	bne.s	+
00016efc 5240	addq.w	#1,d0
00016efe 34c0	move.w	d0,(a2)+
00016f00 51c9ffc0	dbf	d1,-
00016f04 4e75	rts	
00016f16 30280008	move.w	x_pos(a0),d0
00016f1a 9078ee00	sub.w	(Camera_X_pos).w,d0
00016f1e 6b1a	bmi.s	.offscreen
00016f20 0c400140	cmpi.w	#screen_width,d0
00016f24 6c14	bge.s	.offscreen
00016f26 3228000c	move.w	y_pos(a0),d1
00016f2a 9278ee04	sub.w	(Camera_Y_pos).w,d1
00016f2e 6b0a	bmi.s	.offscreen
00016f30 0c4100e0	cmpi.w	#screen_height,d1
00016f34 6c04	bge.s	.offscreen
00016f36 7000	moveq	#0,d0
00016f38 4e75	rts	
00016f3a 7001	moveq	#1,d0
00016f3c 4e75	rts	
00016f3e 7200	moveq	#0,d1
00016f40 12280019	move.b	width_pixels(a0),d1
00016f44 30280008	move.w	x_pos(a0),d0
00016f48 9078ee00	sub.w	(Camera_X_pos).w,d0
00016f4c d041	add.w	d1,d0
00016f4e 6b1e	bmi.s	.offscreen
00016f50 d241	add.w	d1,d1
00016f52 9041	sub.w	d1,d0
00016f54 0c400140	cmpi.w	#screen_width,d0
00016f58 6c14	bge.s	.offscreen
00016f5a 3228000c	move.w	y_pos(a0),d1
00016f5e 9278ee04	sub.w	(Camera_Y_pos).w,d1
00016f62 6b0a	bmi.s	.offscreen
00016f64 0c4100e0	cmpi.w	#screen_height,d1
00016f68 6c04	bge.s	.offscreen
00016f6a 7000	moveq	#0,d0
00016f6c 4e75	rts	
00016f6e 7001	moveq	#1,d0
00016f70 4e75	rts	
00016f72 4e71	nop	
00016f74 4ef900040804	jmp	(extractJmpToName("JmpTo_BuildHUD")).l
00016f7a 4ef90004085a	jmp	(extractJmpToName("JmpTo_BuildHUD_P1")).l
00016f80 4ef9000409c6	jmp	(extractJmpToName("JmpTo_BuildHUD_P2")).l
00016f88 7000	moveq	#0,d0
00016f8a 1038f710	move.b	(Rings_manager_routine).w,d0
00016f8e 303b0006	move.w	RingsManager_States(pc,d0.w),d0
00016f92 4efb0002	jmp	RingsManager_States(pc,d0.w)
00016f9a 5438f710	addq.b	#2,(Rings_manager_routine).w
00016f9e 61000304	bsr.w	RingsManager_Setup
00016fa2 43f8e800	lea	(Ring_Positions).w,a1
00016fa6 3838ee00	move.w	(Camera_X_pos).w,d4
00016faa 5144	subq.w	#8,d4
00016fac 6208	bhi.s	+
00016fae 7801	moveq	#1,d4
00016fb0 6004	bra.s	+
00016fb2 43e90006	lea	6(a1),a1
00016fb6 b8690002	cmp.w	2(a1),d4
00016fba 62f6	bhi.s	-
00016fbc 31c9f712	move.w	a1,(Ring_start_addr).w
00016fc0 31c9f716	move.w	a1,(Ring_start_addr_P2).w
00016fc4 06440150	addi.w	#screen_width+16,d4
00016fc8 6004	bra.s	+
00016fca 43e90006	lea	6(a1),a1
00016fce b8690002	cmp.w	2(a1),d4
00016fd2 62f6	bhi.s	-
00016fd4 31c9f714	move.w	a1,(Ring_end_addr).w
00016fd8 31c9f718	move.w	a1,(Ring_end_addr_P2).w
00016fdc 4e75	rts	
00016fde 45f8ef80	lea	(Ring_consumption_table).w,a2
00016fe2 321a	move.w	(a2)+,d1
00016fe4 5341	subq.w	#1,d1
00016fe6 652c	bcs.s	++
00016fea 67fc	beq.s	-
00016fec 3240	movea.w	d0,a1
00016fee 5311	subq.b	#1,(a1)
00016ff0 661e	bne.s	+
00016ff2 12bc0006	move.b	#6,(a1)
00016ff6 52290001	addq.b	#1,1(a1)
00016ffa 0c2900080001	cmpi.b	#8,1(a1)
00017000 660e	bne.s	+
00017002 32bcffff	move.w	#-1,(a1)
00017006 357c0000fffe	move.w	#0,-2(a2)
0001700c 5378ef80	subq.w	#1,(Ring_consumption_table).w
00017014 3278f712	movea.w	(Ring_start_addr).w,a1
00017018 3838ee00	move.w	(Camera_X_pos).w,d4
0001701c 5144	subq.w	#8,d4
0001701e 6208	bhi.s	+
00017020 7801	moveq	#1,d4
00017022 6004	bra.s	+
00017024 43e90006	lea	6(a1),a1
00017028 b8690002	cmp.w	2(a1),d4
0001702c 62f6	bhi.s	-
0001702e 6002	bra.s	+
00017030 5d49	subq.w	#6,a1
00017032 b869fffc	cmp.w	-4(a1),d4
00017036 63f8	bls.s	-
00017038 31c9f712	move.w	a1,(Ring_start_addr).w
0001703c 3478f714	movea.w	(Ring_end_addr).w,a2
00017040 06440150	addi.w	#screen_width+16,d4
00017044 6004	bra.s	+
00017046 45ea0006	lea	6(a2),a2
0001704a b86a0002	cmp.w	2(a2),d4
0001704e 62f6	bhi.s	-
00017050 6002	bra.s	+
00017052 5d4a	subq.w	#6,a2
00017054 b86afffc	cmp.w	-4(a2),d4
00017058 63f8	bls.s	-
0001705a 31caf714	move.w	a2,(Ring_end_addr).w
0001705e 4a78ffd8	tst.w	(Two_player_mode).w
00017062 660a	bne.s	+
00017064 31c9f716	move.w	a1,(Ring_start_addr_P2).w
00017068 31caf718	move.w	a2,(Ring_end_addr_P2).w
0001706c 4e75	rts	
0001706e 3278f716	movea.w	(Ring_start_addr_P2).w,a1
00017072 3838ee20	move.w	(Camera_X_pos_P2).w,d4
00017076 5144	subq.w	#8,d4
00017078 6208	bhi.s	+
0001707a 7801	moveq	#1,d4
0001707c 6004	bra.s	+
0001707e 43e90006	lea	6(a1),a1
00017082 b8690002	cmp.w	2(a1),d4
00017086 62f6	bhi.s	-
00017088 6002	bra.s	+
0001708a 5d49	subq.w	#6,a1
0001708c b869fffc	cmp.w	-4(a1),d4
00017090 63f8	bls.s	-
00017092 31c9f716	move.w	a1,(Ring_start_addr_P2).w
00017096 3478f718	movea.w	(Ring_end_addr_P2).w,a2
0001709a 06440150	addi.w	#screen_width+16,d4
0001709e 6004	bra.s	+
000170a0 45ea0006	lea	6(a2),a2
000170a4 b86a0002	cmp.w	2(a2),d4
000170a8 62f6	bhi.s	-
000170aa 6002	bra.s	+
000170ac 5d4a	subq.w	#6,a2
000170ae b86afffc	cmp.w	-4(a2),d4
000170b2 63f8	bls.s	-
000170b4 31caf718	move.w	a2,(Ring_end_addr_P2).w
000170b8 4e75	rts	
000170ba 3278f712	movea.w	(Ring_start_addr).w,a1
000170be 3478f714	movea.w	(Ring_end_addr).w,a2
000170c2 b0fcb000	cmpa.w	#MainCharacter,a0
000170c6 6708	beq.s	+
000170c8 3278f716	movea.w	(Ring_start_addr_P2).w,a1
000170cc 3478f718	movea.w	(Ring_end_addr_P2).w,a2
000170d0 b5c9	cmpa.l	a1,a2
000170d2 67000092	beq.w	Touch_Rings_Done
000170d6 0c68005a0030	cmpi.w	#$5A,invulnerable_time(a0)
000170dc 64000088	bhs.w	Touch_Rings_Done
000170e0 34280008	move.w	x_pos(a0),d2
000170e4 3628000c	move.w	y_pos(a0),d3
000170ec 7a00	moveq	#0,d5
000170ee 1a280016	move.b	y_radius(a0),d5
000170f2 5705	subq.b	#3,d5
000170f4 9645	sub.w	d5,d3
000170f6 0c28004d001a	cmpi.b	#$4D,mapping_frame(a0)
000170fc 6606	bne.s	+
000170fe 0643000c	addi.w	#$C,d3
00017102 7a0a	moveq	#$A,d5
00017104 323c0006	move.w	#6,d1
00017108 3c3c000c	move.w	#12,d6
0001710c 383c0010	move.w	#16,d4
00017110 da45	add.w	d5,d5
00017112 4a51	tst.w	(a1)
00017114 66000046	bne.w	Touch_NextRing
00017118 30290002	move.w	2(a1),d0
0001711c 9041	sub.w	d1,d0
0001711e 9042	sub.w	d2,d0
00017120 6408	bcc.s	+
00017122 d046	add.w	d6,d0
00017124 650a	bcs.s	++
00017126 60000034	bra.w	Touch_NextRing
0001712a b044	cmp.w	d4,d0
0001712c 6200002e	bhi.w	Touch_NextRing
00017130 30290004	move.w	4(a1),d0
00017134 9041	sub.w	d1,d0
00017136 9043	sub.w	d3,d0
00017138 6408	bcc.s	+
0001713a d046	add.w	d6,d0
0001713c 650a	bcs.s	++
0001713e 6000001c	bra.w	Touch_NextRing
00017142 b045	cmp.w	d5,d0
00017144 62000016	bhi.w	Touch_NextRing
00017148 32bc0604	move.w	#$604,(a1)
0001714c 611a	bsr.s	Touch_ConsumeRing
0001714e 47f8ef82	lea	(Ring_consumption_table+2).w,a3
00017154 66fc	bne.s	-
00017156 3709	move.w	a1,-(a3)
00017158 5278ef80	addq.w	#1,(Ring_consumption_table).w
0001715c 43e90006	lea	6(a1),a1
00017160 b5c9	cmpa.l	a1,a2
00017162 6600ffae	bne.w	Touch_Rings_Loop
00017166 4e75	rts	
00017168 5378ff40	subq.w	#1,(Perfect_rings_left).w
0001716c b0fcb000	cmpa.w	#MainCharacter,a0
00017170 6700ae56	beq.w	CollectRing_Sonic
00017174 6000aea8	bra.w	CollectRing_Tails
00017178 3078f712	movea.w	(Ring_start_addr).w,a0
0001717c 3878f714	movea.w	(Ring_end_addr).w,a4
00017180 b9c8	cmpa.l	a0,a4
00017182 6602	bne.s	+
00017184 4e75	rts	
00017186 47f8ee00	lea	(Camera_X_pos).w,a3
0001718a 4a50	tst.w	(a0)
0001718c 6b00005e	bmi.w	BuildRings_NextRing
00017190 36280002	move.w	2(a0),d3
00017194 9653	sub.w	(a3),d3
00017196 06430080	addi.w	#spriteScreenPositionX(0),d3
0001719a 34280004	move.w	4(a0),d2
0001719e 946b0004	sub.w	4(a3),d2
000171a2 024207ff	andi.w	#$7FF,d2
000171aa 6b40	bmi.s	BuildRings_NextRing
000171ac 0c4200f0	cmpi.w	#screen_height+8*2,d2
000171b0 6c3a	bge.s	BuildRings_NextRing
000171b2 06420078	addi.w	#spriteScreenPositionY(-8),d2
000171b6 43f90001736a	lea	(MapUnc_Rings).l,a1
000171bc 7200	moveq	#0,d1
000171be 12280001	move.b	1(a0),d1
000171c2 6604	bne.s	+
000171c4 1238fea3	move.b	(Rings_anim_frame).w,d1
000171c8 d241	add.w	d1,d1
000171ca d2f11000	adda.w	(a1,d1.w),a1
000171ce 1019	move.b	(a1)+,d0
000171d0 4880	ext.w	d0
000171d2 d042	add.w	d2,d0
000171d4 34c0	move.w	d0,(a2)+
000171d6 14d9	move.b	(a1)+,(a2)+
000171d8 5205	addq.b	#1,d5
000171da 14c5	move.b	d5,(a2)+
000171dc 3019	move.w	(a1)+,d0
000171de 064026bc	addi.w	#make_art_tile(ArtTile_ArtNem_Ring,1,0),d0
000171e2 34c0	move.w	d0,(a2)+
000171e4 5449	addq.w	#2,a1
000171e6 3019	move.w	(a1)+,d0
000171e8 d043	add.w	d3,d0
000171ea 34c0	move.w	d0,(a2)+
000171ec 41e80006	lea	6(a0),a0
000171f0 b9c8	cmpa.l	a0,a4
000171f2 6600ff96	bne.w	BuildRings_Loop
000171f6 4e75	rts	
000171f8 47f8ee00	lea	(Camera_X_pos).w,a3
000171fc 3c3c0078	move.w	#spriteScreenPositionY(-8),d6
00017200 3078f712	movea.w	(Ring_start_addr).w,a0
00017204 3878f714	movea.w	(Ring_end_addr).w,a4
00017208 b9c8	cmpa.l	a0,a4
0001720a 6618	bne.s	BuildRings_2P_Loop
0001720c 4e75	rts	
0001720e 47f8ee20	lea	(Camera_X_pos_P2).w,a3
00017212 3c3c0158	move.w	#spriteScreenPositionY(screen_height-8),d6
00017216 3078f716	movea.w	(Ring_start_addr_P2).w,a0
0001721a 3878f718	movea.w	(Ring_end_addr_P2).w,a4
0001721e b9c8	cmpa.l	a0,a4
00017220 6602	bne.s	BuildRings_2P_Loop
00017222 4e75	rts	
00017224 4a50	tst.w	(a0)
00017226 6b000060	bmi.w	BuildRings_2P_NextRing
0001722a 36280002	move.w	2(a0),d3
0001722e 9653	sub.w	(a3),d3
00017230 06430080	addi.w	#spriteScreenPositionX(0),d3
00017234 34280004	move.w	4(a0),d2
00017238 946b0004	sub.w	4(a3),d2
0001723c 024207ff	andi.w	#$7FF,d2
00017240 06420088	addi.w	#spriteScreenPositionY(8),d2
00017244 6b42	bmi.s	BuildRings_2P_NextRing
00017246 0c420170	cmpi.w	#spriteScreenPositionY(screen_height+8*2),d2
0001724a 6c3c	bge.s	BuildRings_2P_NextRing
0001724c d446	add.w	d6,d2
0001724e 43f90001736a	lea	(MapUnc_Rings).l,a1
00017254 7200	moveq	#0,d1
00017256 12280001	move.b	1(a0),d1
0001725a 6604	bne.s	+
0001725c 1238fea3	move.b	(Rings_anim_frame).w,d1
00017260 d241	add.w	d1,d1
00017262 d2f11000	adda.w	(a1,d1.w),a1
00017266 1019	move.b	(a1)+,d0
00017268 4880	ext.w	d0
0001726a d042	add.w	d2,d0
0001726c 34c0	move.w	d0,(a2)+
0001726e 1819	move.b	(a1)+,d4
00017270 14fb4022	move.b	SpriteSizes_2P_3(pc,d4.w),(a2)+
00017274 5205	addq.b	#1,d5
00017276 14c5	move.b	d5,(a2)+
00017278 5449	addq.w	#2,a1
0001727a 3019	move.w	(a1)+,d0
0001727c 0640235e	addi.w	#make_art_tile_2p(ArtTile_ArtNem_Ring,1,0),d0
00017280 34c0	move.w	d0,(a2)+
00017282 3019	move.w	(a1)+,d0
00017284 d043	add.w	d3,d0
00017286 34c0	move.w	d0,(a2)+
00017288 41e80006	lea	6(a0),a0
0001728c b9c8	cmpa.l	a0,a4
0001728e 6600ff94	bne.w	BuildRings_2P_Loop
00017292 4e75	rts	
000172a4 43f8e800	lea	(Ring_Positions).w,a1
000172a8 7000	moveq	#0,d0
000172aa 323c017f	move.w	#bytesToLcnt((Ring_Positions_End-Ring_Positions) - ((Ring_Positions)&1)),d1
000172ae 22c0	move.l	d0,(a1)+
000172b0 51c9fffc	dbf	d1,.loop
000172b4 43f8ef80	lea	(Ring_consumption_table).w,a1
000172b8 323c000f	move.w	#bytesToLcnt(Ring_consumption_table_End-Ring_consumption_table-$40),d1
000172be 51c9fffc	dbf	d1,-
000172c2 7a00	moveq	#0,d5
000172c4 7000	moveq	#0,d0
000172c6 3038fe10	move.w	(Current_ZoneAndAct).w,d0
000172ca e218	ror.b	#1,d0
000172cc ec48	lsr.w	#6,d0
000172ce 43f9000e4300	lea	(Off_Rings).l,a1
000172d4 30310000	move.w	(a1,d0.w),d0
000172d8 43f10000	lea	(a1,d0.w),a1
000172dc 45f8e806	lea	(Ring_Positions+6).w,a2
000172e0 3419	move.w	(a1)+,d2
000172e2 6b44	bmi.s	RingsMgr_SortRings
000172e4 3619	move.w	(a1)+,d3
000172e6 6b20	bmi.s	RingsMgr_RingCol
000172e8 3003	move.w	d3,d0
000172ea e958	rol.w	#4,d0
000172ec 02400007	andi.w	#7,d0
000172f0 02430fff	andi.w	#$FFF,d3
000172f4 34fc0000	move.w	#0,(a2)+
000172f8 34c2	move.w	d2,(a2)+
000172fa 34c3	move.w	d3,(a2)+
000172fc 06420018	addi.w	#$18,d2
00017300 5245	addq.w	#1,d5
00017302 51c8fff0	dbf	d0,RingsMgr_NextRingInRow
00017306 60d8	bra.s	RingsMgr_NextRowOrCol
00017308 3003	move.w	d3,d0
0001730a e958	rol.w	#4,d0
0001730c 02400007	andi.w	#7,d0
00017310 02430fff	andi.w	#$FFF,d3
00017314 34fc0000	move.w	#0,(a2)+
00017318 34c2	move.w	d2,(a2)+
0001731a 34c3	move.w	d3,(a2)+
0001731c 06430018	addi.w	#$18,d3
00017320 5245	addq.w	#1,d5
00017322 51c8fff0	dbf	d0,RingsMgr_NextRingInCol
00017326 60b8	bra.s	RingsMgr_NextRowOrCol
00017328 31c5ff40	move.w	d5,(Perfect_rings_left).w
0001732c 31fc0000ff42	move.w	#0,(Perfect_rings_flag).w
00017332 70ff	moveq	#-1,d0
00017334 24c0	move.l	d0,(a2)+
00017336 43f8e802	lea	(Ring_Positions+2).w,a1
0001733a 363c00fe	move.w	#$FE,d3
00017340 45e90006	lea	6(a1),a2
00017344 3011	move.w	(a1),d0
00017348 670e	beq.s	+
0001734a b052	cmp.w	(a2),d0
0001734c 630a	bls.s	+
0001734e 2211	move.l	(a1),d1
00017350 2012	move.l	(a2),d0
00017352 2280	move.l	d0,(a1)
00017354 2481	move.l	d1,(a2)
00017356 4840	swap	d0
00017358 45ea0006	lea	6(a2),a2
0001735c 51ccffe8	dbf	d4,-
00017360 43e90006	lea	6(a1),a1
00017364 51cbffd8	dbf	d3,--
00017368 4e75	rts	
000173bc 7000	moveq	#0,d0
000173be 1038f71a	move.b	(CNZ_Bumper_routine).w,d0
000173c2 303b0006	move.w	SpecialCNZBumpers_Index(pc,d0.w),d0
000173c6 4efb0002	jmp	SpecialCNZBumpers_Index(pc,d0.w)
000173ce 5438f71a	addq.b	#2,(CNZ_Bumper_routine).w
000173d2 43f90001781a	lea	(SpecialCNZBumpers_Act1).l,a1
000173d8 4a38fe11	tst.b	(Current_Act).w
000173dc 6706	beq.s	+
000173de 43f90001795e	lea	(SpecialCNZBumpers_Act2).l,a1
000173e4 3838ee00	move.w	(Camera_X_pos).w,d4
000173e8 5144	subq.w	#8,d4
000173ea 6208	bhi.s	+
000173ec 7801	moveq	#1,d4
000173ee 6004	bra.s	+
000173f0 43e90006	lea	next_bumper(a1),a1
000173f4 b8690002	cmp.w	bumper_x(a1),d4
000173f8 62f6	bhi.s	-
000173fa 21c9f71c	move.l	a1,(CNZ_Visible_bumpers_start).w
000173fe 21c9f724	move.l	a1,(CNZ_Visible_bumpers_start_P2).w
00017402 06440150	addi.w	#$150,d4
00017406 6004	bra.s	+
00017408 43e90006	lea	next_bumper(a1),a1
0001740c b8690002	cmp.w	bumper_x(a1),d4
00017410 62f6	bhi.s	-
00017412 21c9f720	move.l	a1,(CNZ_Visible_bumpers_end).w
00017416 21c9f728	move.l	a1,(CNZ_Visible_bumpers_end_P2).w
0001741a 11fc0001f71b	move.b	#1,(CNZ_Bumper_UnkFlag).w
00017420 4e75	rts	
00017422 2278f71c	movea.l	(CNZ_Visible_bumpers_start).w,a1
00017426 3838ee00	move.w	(Camera_X_pos).w,d4
0001742a 5144	subq.w	#8,d4
0001742c 6208	bhi.s	+
0001742e 7801	moveq	#1,d4
00017430 6004	bra.s	+
00017432 43e90006	lea	next_bumper(a1),a1
00017436 b8690002	cmp.w	bumper_x(a1),d4
0001743a 62f6	bhi.s	-
0001743c 6002	bra.s	+
0001743e 5d49	subq.w	#next_bumper,a1
00017440 b869fffc	cmp.w	prev_bumper_x(a1),d4
00017444 63f8	bls.s	-
00017446 21c9f71c	move.l	a1,(CNZ_Visible_bumpers_start).w
0001744a 2478f720	movea.l	(CNZ_Visible_bumpers_end).w,a2
0001744e 06440150	addi.w	#$150,d4
00017452 6004	bra.s	+
00017454 45ea0006	lea	next_bumper(a2),a2
00017458 b86a0002	cmp.w	bumper_x(a2),d4
0001745c 62f6	bhi.s	-
0001745e 6002	bra.s	+
00017460 5d4a	subq.w	#next_bumper,a2
00017462 b86afffc	cmp.w	prev_bumper_x(a2),d4
00017466 63f8	bls.s	-
00017468 21caf720	move.l	a2,(CNZ_Visible_bumpers_end).w
0001746c 4a78ffd8	tst.w	(Two_player_mode).w
00017470 660a	bne.s	+
00017472 21c9f724	move.l	a1,(CNZ_Visible_bumpers_start_P2).w
00017476 21caf728	move.l	a2,(CNZ_Visible_bumpers_end_P2).w
0001747a 4e75	rts	
0001747c 2278f724	movea.l	(CNZ_Visible_bumpers_start_P2).w,a1
00017480 3838ee20	move.w	(Camera_X_pos_P2).w,d4
00017484 5144	subq.w	#8,d4
00017486 6208	bhi.s	+
00017488 7801	moveq	#1,d4
0001748a 6004	bra.s	+
0001748c 43e90006	lea	next_bumper(a1),a1
00017490 b8690002	cmp.w	bumper_x(a1),d4
00017494 62f6	bhi.s	-
00017496 6002	bra.s	+
00017498 5d49	subq.w	#next_bumper,a1
0001749a b869fffc	cmp.w	prev_bumper_x(a1),d4
0001749e 63f8	bls.s	-
000174a0 21c9f724	move.l	a1,(CNZ_Visible_bumpers_start_P2).w
000174a4 2478f728	movea.l	(CNZ_Visible_bumpers_end_P2).w,a2
000174a8 06440150	addi.w	#$150,d4
000174ac 6004	bra.s	+
000174ae 45ea0006	lea	next_bumper(a2),a2
000174b2 b86a0002	cmp.w	bumper_x(a2),d4
000174b6 62f6	bhi.s	-
000174b8 6002	bra.s	+
000174ba 5d4a	subq.w	#next_bumper,a2
000174bc b86afffc	cmp.w	prev_bumper_x(a2),d4
000174c0 63f8	bls.s	-
000174c2 21caf728	move.l	a2,(CNZ_Visible_bumpers_end_P2).w
000174c6 4e75	rts	
000174c8 2278f71c	movea.l	(CNZ_Visible_bumpers_start).w,a1
000174cc 2478f720	movea.l	(CNZ_Visible_bumpers_end).w,a2
000174d0 b0fcb000	cmpa.w	#MainCharacter,a0
000174d4 6708	beq.s	+
000174d6 2278f724	movea.l	(CNZ_Visible_bumpers_start_P2).w,a1
000174da 2478f728	movea.l	(CNZ_Visible_bumpers_end_P2).w,a2
000174de b5c9	cmpa.l	a1,a2
000174e0 67000096	beq.w	return_17578
000174e4 34280008	move.w	x_pos(a0),d2
000174e8 3628000c	move.w	y_pos(a0),d3
000174ec 04420009	subi.w	#9,d2
000174f0 7a00	moveq	#0,d5
000174f2 1a280016	move.b	y_radius(a0),d5
000174f6 5705	subq.b	#3,d5
000174f8 9645	sub.w	d5,d3
000174fa 0c28004d001a	cmpi.b	#$4D,mapping_frame(a0)
00017500 6606	bne.s	+
00017502 0643000c	addi.w	#$C,d3
00017506 7a0a	moveq	#$A,d5
00017508 383c0012	move.w	#$12,d4
0001750c da45	add.w	d5,d5
0001750e 3011	move.w	bumper_id(a1),d0
00017510 0240000e	andi.w	#$E,d0
00017514 47fb0042	lea	byte_17558(pc,d0.w),a3
00017518 7200	moveq	#0,d1
0001751a 121b	move.b	(a3)+,d1
0001751c 30290002	move.w	bumper_x(a1),d0
00017520 9041	sub.w	d1,d0
00017522 9042	sub.w	d2,d0
00017524 640a	bcc.s	loc_17530
00017526 d241	add.w	d1,d1
00017528 d041	add.w	d1,d0
0001752a 650a	bcs.s	loc_17536
0001752c 60000040	bra.w	CNZ_Bumper_next
00017530 b044	cmp.w	d4,d0
00017532 6200003a	bhi.w	CNZ_Bumper_next
00017536 7200	moveq	#0,d1
00017538 121b	move.b	(a3)+,d1
0001753a 30290004	move.w	bumper_y(a1),d0
0001753e 9041	sub.w	d1,d0
00017540 9043	sub.w	d3,d0
00017542 640c	bcc.s	loc_17550
00017544 d241	add.w	d1,d1
00017546 d041	add.w	d1,d0
00017548 6500001a	bcs.w	loc_17564
0001754c 60000020	bra.w	CNZ_Bumper_next
00017550 b045	cmp.w	d5,d0
00017552 6200001a	bhi.w	CNZ_Bumper_next
00017556 600c	bra.s	loc_17564
00017564 3011	move.w	(a1),d0
00017566 303b0012	move.w	off_1757A(pc,d0.w),d0
0001756a 4efb000e	jmp	off_1757A(pc,d0.w)
0001756e 43e90006	lea	next_bumper(a1),a1
00017572 b5c9	cmpa.l	a1,a2
00017574 6600ff98	bne.w	CNZ_Bumper_loop
00017578 4e75	rts	
00017586 30290004	move.w	bumper_y(a1),d0
0001758a 9068000c	sub.w	y_pos(a0),d0
0001758e 4440	neg.w	d0
00017590 0c400020	cmpi.w	#$20,d0
00017594 6d0a	blt.s	loc_175A0
00017596 317c0a000012	move.w	#$A00,y_vel(a0)
0001759c 6000025c	bra.w	loc_177FA
000175a0 30290002	move.w	bumper_x(a1),d0
000175a4 90680008	sub.w	x_pos(a0),d0
000175a8 4440	neg.w	d0
000175aa 0c400020	cmpi.w	#$20,d0
000175ae 6d0a	blt.s	loc_175BA
000175b0 317c0a000010	move.w	#$A00,x_vel(a0)
000175b6 60000242	bra.w	loc_177FA
000175ba 30290002	move.w	bumper_x(a1),d0
000175be 90680008	sub.w	x_pos(a0),d0
000175c2 0c400020	cmpi.w	#$20,d0
000175c6 6d04	blt.s	loc_175CC
000175c8 303c0020	move.w	#$20,d0
000175cc d0690004	add.w	bumper_y(a1),d0
000175d0 5140	subq.w	#8,d0
000175d2 3228000c	move.w	y_pos(a0),d1
000175d6 0641000e	addi.w	#$E,d1
000175da 9041	sub.w	d1,d0
000175dc 640a	bcc.s	return_175E8
000175de 363c0020	move.w	#$20,d3
000175e2 6106	bsr.s	loc_175EA
000175e4 60000214	bra.w	loc_177FA
000175e8 4e75	rts	
000175ea 32280010	move.w	x_vel(a0),d1
000175ee 34280012	move.w	y_vel(a0),d2
000175f2 4eb90000364e	jsr	(CalcAngle).l
000175f8 11c0ffdc	move.b	d0,(unk_FFDC).w
000175fc 9043	sub.w	d3,d0
000175fe 3200	move.w	d0,d1
00017600 6a02	bpl.s	.skip
00017602 4441	neg.w	d1
00017604 4440	neg.w	d0
00017606 d043	add.w	d3,d0
00017608 11c0ffdd	move.b	d0,(unk_FFDD).w
0001760c 11c1ffdf	move.b	d1,(unk_FFDF).w
00017610 0c010038	cmpi.b	#$38,d1
00017614 6502	blo.s	loc_17618
00017616 3003	move.w	d3,d0
00017618 11c0ffde	move.b	d0,(unk_FFDE).w
0001761c 4eb9000033b6	jsr	(CalcSine).l
00017622 c3fcf600	muls.w	#-$A00,d1
00017626 e081	asr.l	#8,d1
00017628 31410010	move.w	d1,x_vel(a0)
0001762c c1fcf600	muls.w	#-$A00,d0
00017630 e080	asr.l	#8,d0
00017632 31400012	move.w	d0,y_vel(a0)
00017636 4e75	rts	
00017638 30290004	move.w	bumper_y(a1),d0
0001763c 9068000c	sub.w	y_pos(a0),d0
00017640 4440	neg.w	d0
00017642 0c400020	cmpi.w	#$20,d0
00017646 6d0a	blt.s	loc_17652
00017648 317c0a000012	move.w	#$A00,y_vel(a0)
0001764e 600001aa	bra.w	loc_177FA
00017652 30290002	move.w	bumper_x(a1),d0
00017656 90680008	sub.w	x_pos(a0),d0
0001765a 0c400020	cmpi.w	#$20,d0
0001765e 6d0a	blt.s	loc_1766A
00017660 317cf6000010	move.w	#-$A00,x_vel(a0)
00017666 60000192	bra.w	loc_177FA
0001766a 30290002	move.w	bumper_x(a1),d0
0001766e 90680008	sub.w	x_pos(a0),d0
00017672 4440	neg.w	d0
00017674 0c400020	cmpi.w	#$20,d0
00017678 6d04	blt.s	loc_1767E
0001767a 303c0020	move.w	#$20,d0
0001767e d0690004	add.w	bumper_y(a1),d0
00017682 5140	subq.w	#8,d0
00017684 3228000c	move.w	y_pos(a0),d1
00017688 0641000e	addi.w	#$E,d1
0001768c 9041	sub.w	d1,d0
0001768e 640c	bcc.s	return_1769C
00017690 363c0060	move.w	#$60,d3
00017694 6100ff54	bsr.w	loc_175EA
00017698 60000160	bra.w	loc_177FA
0001769c 4e75	rts	
0001769e 30290004	move.w	bumper_y(a1),d0
000176a2 9068000c	sub.w	y_pos(a0),d0
000176a6 4440	neg.w	d0
000176a8 0c400008	cmpi.w	#8,d0
000176ac 6d0a	blt.s	loc_176B8
000176ae 317c0a000012	move.w	#$A00,y_vel(a0)
000176b4 60000144	bra.w	loc_177FA
000176b8 30290002	move.w	bumper_x(a1),d0
000176bc 90680008	sub.w	x_pos(a0),d0
000176c0 0c400040	cmpi.w	#$40,d0
000176c4 6d0a	blt.s	loc_176D0
000176c6 317cf6000010	move.w	#-$A00,x_vel(a0)
000176cc 6000012c	bra.w	loc_177FA
000176d0 4440	neg.w	d0
000176d2 0c400040	cmpi.w	#$40,d0
000176d6 6d0a	blt.s	loc_176E2
000176d8 317c0a000010	move.w	#$A00,x_vel(a0)
000176de 6000011a	bra.w	loc_177FA
000176e2 363c0038	move.w	#$38,d3
000176e6 4a40	tst.w	d0
000176e8 6b04	bmi.s	loc_176EE
000176ea 363c0048	move.w	#$48,d3
000176ee 6100fefa	bsr.w	loc_175EA
000176f2 60000106	bra.w	loc_177FA
000176f6 30290004	move.w	bumper_y(a1),d0
000176fa 9068000c	sub.w	y_pos(a0),d0
000176fe 0c400008	cmpi.w	#8,d0
00017702 6d0a	blt.s	loc_1770E
00017704 317cf6000012	move.w	#-$A00,y_vel(a0)
0001770a 600000ee	bra.w	loc_177FA
0001770e 30290002	move.w	bumper_x(a1),d0
00017712 90680008	sub.w	x_pos(a0),d0
00017716 0c400040	cmpi.w	#$40,d0
0001771a 6d0a	blt.s	loc_17726
0001771c 317cf6000010	move.w	#-$A00,x_vel(a0)
00017722 600000d6	bra.w	loc_177FA
00017726 4440	neg.w	d0
00017728 0c400040	cmpi.w	#$40,d0
0001772c 6d0a	blt.s	loc_17738
0001772e 317c0a000010	move.w	#$A00,x_vel(a0)
00017734 600000c4	bra.w	loc_177FA
00017738 363c00c8	move.w	#$C8,d3
0001773c 4a40	tst.w	d0
0001773e 6b04	bmi.s	loc_17744
00017740 363c00b8	move.w	#$B8,d3
00017744 6100fea4	bsr.w	loc_175EA
00017748 600000b0	bra.w	loc_177FA
0001774c 30290002	move.w	bumper_x(a1),d0
00017750 90680008	sub.w	x_pos(a0),d0
00017754 4440	neg.w	d0
00017756 0c400008	cmpi.w	#8,d0
0001775a 6d0a	blt.s	loc_17766
0001775c 317c0a000010	move.w	#$A00,x_vel(a0)
00017762 60000096	bra.w	loc_177FA
00017766 30290004	move.w	bumper_y(a1),d0
0001776a 9068000c	sub.w	y_pos(a0),d0
0001776e 0c400040	cmpi.w	#$40,d0
00017772 6d0a	blt.s	loc_1777E
00017774 317cf6000012	move.w	#-$A00,y_vel(a0)
0001777a 6000007e	bra.w	loc_177FA
0001777e 4440	neg.w	d0
00017780 0c400040	cmpi.w	#$40,d0
00017784 6d0a	blt.s	loc_17790
00017786 317c0a000010	move.w	#$A00,x_vel(a0)
0001778c 6000006c	bra.w	loc_177FA
00017790 363c0008	move.w	#8,d3
00017794 4a40	tst.w	d0
00017796 6b04	bmi.s	loc_1779C
00017798 363c00f8	move.w	#$F8,d3
0001779c 6100fe4c	bsr.w	loc_175EA
000177a0 60000058	bra.w	loc_177FA
000177a4 30290002	move.w	bumper_x(a1),d0
000177a8 90680008	sub.w	x_pos(a0),d0
000177ac 0c400008	cmpi.w	#8,d0
000177b0 6d0a	blt.s	loc_177BC
000177b2 317c0a000010	move.w	#$A00,x_vel(a0)
000177b8 60000040	bra.w	loc_177FA
000177bc 30290004	move.w	bumper_y(a1),d0
000177c0 9068000c	sub.w	y_pos(a0),d0
000177c4 0c400040	cmpi.w	#$40,d0
000177c8 6d0a	blt.s	loc_177D4
000177ca 317cf6000012	move.w	#-$A00,y_vel(a0)
000177d0 60000028	bra.w	loc_177FA
000177d4 4440	neg.w	d0
000177d6 0c400040	cmpi.w	#$40,d0
000177da 6d0a	blt.s	loc_177E6
000177dc 317c0a000010	move.w	#$A00,x_vel(a0)
000177e2 60000016	bra.w	loc_177FA
000177e6 363c0078	move.w	#$78,d3
000177ea 4a40	tst.w	d0
000177ec 6b04	bmi.s	loc_177F2
000177ee 363c0088	move.w	#$88,d3
000177f2 6100fdf6	bsr.w	loc_175EA
000177f6 60000002	bra.w	loc_177FA
000177fa 08e800010022	bset	#status.player.in_air,status(a0)
00017800 08a800040022	bclr	#status.player.rolljumping,status(a0)
00017806 08a800050022	bclr	#status.player.pushing,status(a0)
0001780c 4228003c	clr.b	jumping(a0)
00017810 303c00d9	move.w	#SndID_LargeBumper,d0
00017814 4ef900001370	jmp	(PlaySound).l
00017aa2 4e71	nop	
00017aa4 7000	moveq	#0,d0
00017aa6 1038f76c	move.b	(Obj_placement_routine).w,d0
00017aaa 303b0006	move.w	ObjectsManager_States(pc,d0.w),d0
00017aae 4efb0002	jmp	ObjectsManager_States(pc,d0.w)
00017ab8 5438f76c	addq.b	#2,(Obj_placement_routine).w
00017abc 3038fe10	move.w	(Current_ZoneAndAct).w,d0
00017ac0 e218	ror.b	#1,d0
00017ac2 ec48	lsr.w	#6,d0
00017ac4 41f9000e6800	lea	(Off_Objects).l,a0
00017aca 2248	movea.l	a0,a1
00017acc d0f00000	adda.w	(a0,d0.w),a0
00017ad0 4a78ffd8	tst.w	(Two_player_mode).w
00017ad4 671a	beq.s	+
00017ad6 0c38000cfe10	cmpi.b	#casino_night_zone,(Current_Zone).w
00017adc 6612	bne.s	+
00017ade 41f90001802a	lea	(Objects_CNZ1_2P).l,a0
00017ae4 4a38fe11	tst.b	(Current_Act).w
00017ae8 6706	beq.s	+
00017aea 41f900018492	lea	(Objects_CNZ2_2P).l,a0
00017af0 21c8f770	move.l	a0,(Obj_load_addr_right).w
00017af4 21c8f774	move.l	a0,(Obj_load_addr_left).w
00017af8 21c8f778	move.l	a0,(Obj_load_addr_right_P2).w
00017afc 21c8f77c	move.l	a0,(Obj_load_addr_left_P2).w
00017b00 45f8fc00	lea	(Object_Respawn_Table).w,a2
00017b04 34fc0101	move.w	#$0101,(a2)+
00017b08 303c005e	move.w	#bytesToWcnt(Obj_respawn_data_End-Obj_respawn_data),d0
00017b0e 51c8fffc	dbf	d0,-
00017b12 45f8fc00	lea	(Obj_respawn_index).w,a2
00017b16 7400	moveq	#0,d2
00017b18 3c38ee00	move.w	(Camera_X_pos).w,d6
00017b1c 04460080	subi.w	#$80,d6
00017b20 6402	bcc.s	+
00017b22 7c00	moveq	#0,d6
00017b24 0246ff80	andi.w	#$FF80,d6
00017b28 2078f770	movea.l	(Obj_load_addr_right).w,a0
00017b2c bc50	cmp.w	(a0),d6
00017b2e 630e	bls.s	loc_17B3E
00017b30 4a280002	tst.b	2(a0)
00017b34 6a04	bpl.s	+
00017b36 1412	move.b	(a2),d2
00017b38 5212	addq.b	#1,(a2)
00017b3a 5c48	addq.w	#6,a0
00017b3c 60ee	bra.s	-
00017b3e 21c8f770	move.l	a0,(Obj_load_addr_right).w
00017b42 21c8f778	move.l	a0,(Obj_load_addr_right_P2).w
00017b46 2078f774	movea.l	(Obj_load_addr_left).w,a0
00017b4a 04460080	subi.w	#$80,d6
00017b4e 6512	bcs.s	loc_17B62
00017b50 bc50	cmp.w	(a0),d6
00017b52 630e	bls.s	loc_17B62
00017b54 4a280002	tst.b	2(a0)
00017b58 6a04	bpl.s	+
00017b5a 522a0001	addq.b	#1,1(a2)
00017b5e 5c48	addq.w	#6,a0
00017b60 60ee	bra.s	-
00017b62 21c8f774	move.l	a0,(Obj_load_addr_left).w
00017b66 21c8f77c	move.l	a0,(Obj_load_addr_left_P2).w
00017b6a 31fcfffff76e	move.w	#-1,(Camera_X_pos_last).w
00017b70 31fcfffff78c	move.w	#-1,(Camera_X_pos_last_P2).w
00017b76 4a78ffd8	tst.w	(Two_player_mode).w
00017b7a 6708	beq.s	ObjectsManager_Main
00017b7c 5438f76c	addq.b	#2,(Obj_placement_routine).w
00017b80 600000ce	bra.w	ObjectsManager_2P_Init
00017b84 3238ee00	move.w	(Camera_X_pos).w,d1
00017b88 04410080	subi.w	#$80,d1
00017b8c 0241ff80	andi.w	#$FF80,d1
00017b90 31c1f7da	move.w	d1,(Camera_X_pos_coarse).w
00017b94 45f8fc00	lea	(Obj_respawn_index).w,a2
00017b98 7400	moveq	#0,d2
00017b9a 3c38ee00	move.w	(Camera_X_pos).w,d6
00017b9e 0246ff80	andi.w	#$FF80,d6
00017ba2 bc78f76e	cmp.w	(Camera_X_pos_last).w,d6
00017ba6 670000a6	beq.w	ObjectsManager_SameXRange
00017baa 6c5e	bge.s	ObjectsManager_GoingForward
00017bac 31c6f76e	move.w	d6,(Camera_X_pos_last).w
00017bb0 2078f774	movea.l	(Obj_load_addr_left).w,a0
00017bb4 04460080	subi.w	#$80,d6
00017bb8 652c	bcs.s	.done1
00017bba bc68fffa	cmp.w	-6(a0),d6
00017bbe 6c26	bge.s	.done1
00017bc0 5d48	subq.w	#6,a0
00017bc2 4a280002	tst.b	2(a0)
00017bc6 6a08	bpl.s	.noRespawn1
00017bc8 532a0001	subq.b	#1,1(a2)
00017bcc 142a0001	move.b	1(a2),d2
00017bd0 61000364	bsr.w	ChkLoadObj
00017bd4 6604	bne.s	.fullSST
00017bd6 5d48	subq.w	#6,a0
00017bd8 60e0	bra.s	.nextObject1
00017bda 4a280002	tst.b	2(a0)
00017bde 6a04	bpl.s	.noRespawn3
00017be0 522a0001	addq.b	#1,1(a2)
00017be4 5c48	addq.w	#6,a0
00017be6 21c8f774	move.l	a0,(Obj_load_addr_left).w
00017bea 2078f770	movea.l	(Obj_load_addr_right).w,a0
00017bee 06460300	addi.w	#$300,d6
00017bf2 bc68fffa	cmp.w	-6(a0),d6
00017bf6 6e0c	bgt.s	.done2
00017bf8 4a28fffc	tst.b	-4(a0)
00017bfc 6a02	bpl.s	.noRespawn2
00017bfe 5312	subq.b	#1,(a2)
00017c00 5d48	subq.w	#6,a0
00017c02 60ee	bra.s	.nextObject2
00017c04 21c8f770	move.l	a0,(Obj_load_addr_right).w
00017c08 4e75	rts	
00017c0a 31c6f76e	move.w	d6,(Camera_X_pos_last).w
00017c0e 2078f770	movea.l	(Obj_load_addr_right).w,a0
00017c12 06460280	addi.w	#$280,d6
00017c16 bc50	cmp.w	(a0),d6
00017c18 6310	bls.s	.done1
00017c1a 4a280002	tst.b	2(a0)
00017c1e 6a04	bpl.s	.noRespawn1
00017c20 1412	move.b	(a2),d2
00017c22 5212	addq.b	#1,(a2)
00017c24 61000310	bsr.w	ChkLoadObj
00017c28 67ec	beq.s	.nextObject1
00017c2a 21c8f770	move.l	a0,(Obj_load_addr_right).w
00017c2e 2078f774	movea.l	(Obj_load_addr_left).w,a0
00017c32 04460300	subi.w	#$300,d6
00017c36 6512	bcs.s	.done2
00017c38 bc50	cmp.w	(a0),d6
00017c3a 630e	bls.s	.done2
00017c3c 4a280002	tst.b	2(a0)
00017c40 6a04	bpl.s	.noRespawn2
00017c42 522a0001	addq.b	#1,1(a2)
00017c46 5c48	addq.w	#6,a0
00017c48 60ee	bra.s	.nextObject2
00017c4a 21c8f774	move.l	a0,(Obj_load_addr_left).w
00017c4e 4e75	rts	
00017c50 70ff	moveq	#-1,d0
00017c52 21c0f780	move.l	d0,(Object_manager_2P_RAM+.c).w
00017c56 21c0f784	move.l	d0,(Object_manager_2P_RAM+.c).w
00017c5a 21c0f788	move.l	d0,(Object_manager_2P_RAM+.c).w
00017c5e 21c0f78c	move.l	d0,(Object_manager_2P_RAM+.c).w
00017c62 31fc0000f76e	move.w	#0,(Camera_X_pos_last).w
00017c68 31fc0000f78c	move.w	#0,(Camera_X_pos_last_P2).w
00017c6e 45f8fc00	lea	(Obj_respawn_index).w,a2
00017c72 31d2f78e	move.w	(a2),(Obj_respawn_index_P2).w
00017c76 7400	moveq	#0,d2
00017c78 4bf8fc00	lea	(Obj_respawn_index).w,a5
00017c7c 49f8f770	lea	(Object_Manager_Addresses).w,a4
00017c80 43f8f786	lea	(Player_1_loaded_object_blocks).w,a1
00017c84 4df8f789	lea	(Player_2_loaded_object_blocks).w,a6
00017c88 7cfe	moveq	#-2,d6
00017c8a 61000158	bsr.w	ObjMan2P_GoingForward
00017c8e 43f8f786	lea	(Player_1_loaded_object_blocks).w,a1
00017c92 7cff	moveq	#-1,d6
00017c94 6100014e	bsr.w	ObjMan2P_GoingForward
00017c98 43f8f786	lea	(Player_1_loaded_object_blocks).w,a1
00017c9c 7c00	moveq	#0,d6
00017c9e 61000144	bsr.w	ObjMan2P_GoingForward
00017ca2 4bf8f78e	lea	(Obj_respawn_index_P2).w,a5
00017ca6 49f8f778	lea	(Object_Manager_Addresses_P2).w,a4
00017caa 43f8f789	lea	(Player_2_loaded_object_blocks).w,a1
00017cae 4df8f786	lea	(Player_1_loaded_object_blocks).w,a6
00017cb2 7cfe	moveq	#-2,d6
00017cb4 6100012e	bsr.w	ObjMan2P_GoingForward
00017cb8 43f8f789	lea	(Player_2_loaded_object_blocks).w,a1
00017cbc 7cff	moveq	#-1,d6
00017cbe 61000124	bsr.w	ObjMan2P_GoingForward
00017cc2 43f8f789	lea	(Player_2_loaded_object_blocks).w,a1
00017cc6 7c00	moveq	#0,d6
00017cc8 6100011a	bsr.w	ObjMan2P_GoingForward
00017ccc 3238ee00	move.w	(Camera_X_pos).w,d1
00017cd0 0241ff00	andi.w	#$FF00,d1
00017cd4 31c1f7da	move.w	d1,(Camera_X_pos_coarse).w
00017cd8 3238ee20	move.w	(Camera_X_pos_P2).w,d1
00017cdc 0241ff00	andi.w	#$FF00,d1
00017ce0 31c1f7dc	move.w	d1,(Camera_X_pos_coarse_P2).w
00017ce4 1c38ee00	move.b	(Camera_X_pos).w,d6
00017ce8 024600ff	andi.w	#$FF,d6
00017cec 3038f76e	move.w	(Camera_X_pos_last).w,d0
00017cf0 bc78f76e	cmp.w	(Camera_X_pos_last).w,d6
00017cf4 6716	beq.s	+
00017cf6 31c6f76e	move.w	d6,(Camera_X_pos_last).w
00017cfa 4bf8fc00	lea	(Obj_respawn_index).w,a5
00017cfe 49f8f770	lea	(Object_Manager_Addresses).w,a4
00017d02 43f8f786	lea	(Player_1_loaded_object_blocks).w,a1
00017d06 4df8f789	lea	(Player_2_loaded_object_blocks).w,a6
00017d0a 612a	bsr.s	ObjectsManager_2P_Run
00017d0c 1c38ee20	move.b	(Camera_X_pos_P2).w,d6
00017d10 024600ff	andi.w	#$FF,d6
00017d14 3038f78c	move.w	(Camera_X_pos_last_P2).w,d0
00017d18 bc78f78c	cmp.w	(Camera_X_pos_last_P2).w,d6
00017d1c 6716	beq.s	return_17D34
00017d1e 31c6f78c	move.w	d6,(Camera_X_pos_last_P2).w
00017d22 4bf8f78e	lea	(Obj_respawn_index_P2).w,a5
00017d26 49f8f778	lea	(Object_Manager_Addresses_P2).w,a4
00017d2a 43f8f789	lea	(Player_2_loaded_object_blocks).w,a1
00017d2e 4df8f786	lea	(Player_1_loaded_object_blocks).w,a6
00017d32 6102	bsr.s	ObjectsManager_2P_Run
00017d34 4e75	rts	
00017d36 45f8fc00	lea	(Obj_respawn_index).w,a2
00017d3a 7400	moveq	#0,d2
00017d3c bc40	cmp.w	d0,d6
00017d3e 6700ff0e	beq.w	ObjectsManager_SameXRange
00017d42 6c0000a0	bge.w	ObjMan2P_GoingForward
00017d46 14290002	move.b	2(a1),d2
00017d4a 136900010002	move.b	1(a1),2(a1)
00017d50 13510001	move.b	(a1),1(a1)
00017d54 1286	move.b	d6,(a1)
00017d56 b416	cmp.b	(a6),d2
00017d58 6712	beq.s	.blockNeededByOtherPlayer
00017d5a b42e0001	cmp.b	1(a6),d2
00017d5e 670c	beq.s	.blockNeededByOtherPlayer
00017d60 b42e0002	cmp.b	2(a6),d2
00017d64 6706	beq.s	.blockNeededByOtherPlayer
00017d66 6100015e	bsr.w	ObjectsManager_2P_UnloadObjectBlock
00017d6a 6004	bra.s	.haveEmptyObjectBlock
00017d6c 6100011c	bsr.w	ObjectsManager_2P_FindEmptyObjectBlock
00017d70 610000f4	bsr.w	ObjectsManager_2P_IsObjectBlockAlreadyLoaded
00017d74 661e	bne.s	.blockNotAlreadyLoaded
00017d76 206c0004	movea.l	4(a4),a0
00017d7a bc28fffa	cmp.b	-6(a0),d6
00017d7e 660e	bne.s	.done1
00017d80 4a28fffc	tst.b	-4(a0)
00017d84 6a04	bpl.s	.noRespawn1
00017d86 532d0001	subq.b	#1,1(a5)
00017d8a 5d48	subq.w	#6,a0
00017d8c 60ec	bra.s	.nextObject1
00017d8e 29480004	move.l	a0,4(a4)
00017d92 6036	bra.s	.unloadObjects
00017d94 206c0004	movea.l	4(a4),a0
00017d98 1286	move.b	d6,(a1)
00017d9a bc28fffa	cmp.b	-6(a0),d6
00017d9e 6626	bne.s	.done2
00017da0 5d48	subq.w	#6,a0
00017da2 4a280002	tst.b	2(a0)
00017da6 6a08	bpl.s	.noRespawn2
00017da8 532d0001	subq.b	#1,1(a5)
00017dac 142d0001	move.b	1(a5),d2
00017db0 610001ce	bsr.w	ChkLoadObj_2P
00017db4 6604	bne.s	.fullSST
00017db6 5d48	subq.w	#6,a0
00017db8 60e0	bra.s	.nextObject2
00017dba 4a280002	tst.b	2(a0)
00017dbe 6a04	bpl.s	.noRespawn4
00017dc0 522d0001	addq.b	#1,1(a5)
00017dc4 5c48	addq.w	#6,a0
00017dc6 29480004	move.l	a0,4(a4)
00017dca 2054	movea.l	(a4),a0
00017dcc 5646	addq.w	#3,d6
00017dce bc28fffa	cmp.b	-6(a0),d6
00017dd2 660c	bne.s	.done3
00017dd4 4a28fffc	tst.b	-4(a0)
00017dd8 6a02	bpl.s	.noRespawn3
00017dda 5315	subq.b	#1,(a5)
00017ddc 5d48	subq.w	#6,a0
00017dde 60ee	bra.s	.nextObject3
00017de0 2888	move.l	a0,(a4)
00017de2 4e75	rts	
00017de4 5446	addq.w	#2,d6
00017de6 1411	move.b	(a1),d2
00017de8 12a90001	move.b	1(a1),(a1)
00017dec 136900020001	move.b	2(a1),1(a1)
00017df2 13460002	move.b	d6,2(a1)
00017df6 b416	cmp.b	(a6),d2
00017df8 6712	beq.s	.blockNeededByOtherPlayer
00017dfa b42e0001	cmp.b	1(a6),d2
00017dfe 670c	beq.s	.blockNeededByOtherPlayer
00017e00 b42e0002	cmp.b	2(a6),d2
00017e04 6706	beq.s	.blockNeededByOtherPlayer
00017e06 610000be	bsr.w	ObjectsManager_2P_UnloadObjectBlock
00017e0a 6004	bra.s	.haveEmptyObjectBlock
00017e0c 6100007c	bsr.w	ObjectsManager_2P_FindEmptyObjectBlock
00017e10 61000054	bsr.w	ObjectsManager_2P_IsObjectBlockAlreadyLoaded
00017e14 6616	bne.s	.blockNotAlreadyLoaded
00017e16 2054	movea.l	(a4),a0
00017e18 bc10	cmp.b	(a0),d6
00017e1a 660c	bne.s	.done1
00017e1c 4a280002	tst.b	2(a0)
00017e20 6a02	bpl.s	.noRespawn1
00017e22 5215	addq.b	#1,(a5)
00017e24 5c48	addq.w	#6,a0
00017e26 60f0	bra.s	.nextObject1
00017e28 2888	move.l	a0,(a4)
00017e2a 601a	bra.s	.unloadObjects
00017e2c 2054	movea.l	(a4),a0
00017e2e 1286	move.b	d6,(a1)
00017e30 bc10	cmp.b	(a0),d6
00017e32 6610	bne.s	.done2
00017e34 4a280002	tst.b	2(a0)
00017e38 6a04	bpl.s	.noRespawn2
00017e3a 1415	move.b	(a5),d2
00017e3c 5215	addq.b	#1,(a5)
00017e3e 61000140	bsr.w	ChkLoadObj_2P
00017e42 67ec	beq.s	.nextObject2
00017e44 2888	move.l	a0,(a4)
00017e46 206c0004	movea.l	4(a4),a0
00017e4a 5746	subq.w	#3,d6
00017e4c 6512	bcs.s	.done3
00017e4e bc10	cmp.b	(a0),d6
00017e50 660e	bne.s	.done3
00017e52 4a280002	tst.b	2(a0)
00017e56 6a04	bpl.s	.noRespawn3
00017e58 522d0001	addq.b	#1,1(a5)
00017e5c 5c48	addq.w	#6,a0
00017e5e 60ee	bra.s	.nextObject3
00017e60 29480004	move.l	a0,4(a4)
00017e64 4e75	rts	
00017e66 2f09	move.l	a1,-(sp)
00017e68 43f8f780	lea	(Object_RAM_block_indices).w,a1
00017e6c bc19	cmp.b	(a1)+,d6
00017e6e 6716	beq.s	.blockAlreadyLoaded
00017e70 bc19	cmp.b	(a1)+,d6
00017e72 6712	beq.s	.blockAlreadyLoaded
00017e74 bc19	cmp.b	(a1)+,d6
00017e76 670e	beq.s	.blockAlreadyLoaded
00017e78 bc19	cmp.b	(a1)+,d6
00017e7a 670a	beq.s	.blockAlreadyLoaded
00017e7c bc19	cmp.b	(a1)+,d6
00017e7e 6706	beq.s	.blockAlreadyLoaded
00017e80 bc19	cmp.b	(a1)+,d6
00017e82 6702	beq.s	.blockAlreadyLoaded
00017e84 7001	moveq	#1,d0
00017e86 225f	movea.l	(sp)+,a1
00017e88 4e75	rts	
00017e8a 43f8f780	lea	(Object_RAM_block_indices).w,a1
00017e8e 47f8be00	lea	(Dynamic_Object_RAM_2P_End+(12*0)*object_size).w,a3
00017e92 4a19	tst.b	(a1)+
00017e94 6b2c	bmi.s	.foundBlock
00017e96 47f8c100	lea	(Dynamic_Object_RAM_2P_End+(12*1)*object_size).w,a3
00017e9a 4a19	tst.b	(a1)+
00017e9c 6b24	bmi.s	.foundBlock
00017e9e 47f8c400	lea	(Dynamic_Object_RAM_2P_End+(12*2)*object_size).w,a3
00017ea2 4a19	tst.b	(a1)+
00017ea4 6b1c	bmi.s	.foundBlock
00017ea6 47f8c700	lea	(Dynamic_Object_RAM_2P_End+(12*3)*object_size).w,a3
00017eaa 4a19	tst.b	(a1)+
00017eac 6b14	bmi.s	.foundBlock
00017eae 47f8ca00	lea	(Dynamic_Object_RAM_2P_End+(12*4)*object_size).w,a3
00017eb2 4a19	tst.b	(a1)+
00017eb4 6b0c	bmi.s	.foundBlock
00017eb6 47f8cd00	lea	(Dynamic_Object_RAM_2P_End+(12*5)*object_size).w,a3
00017eba 4a19	tst.b	(a1)+
00017ebc 6b04	bmi.s	.foundBlock
00017ebe 4e71	nop	
00017ec0 4e71	nop	
00017ec2 5349	subq.w	#1,a1
00017ec4 4e75	rts	
00017ec6 43f8f780	lea	(Object_RAM_block_indices).w,a1
00017eca 47f8be00	lea	(Dynamic_Object_RAM_2P_End+(12*0)*object_size).w,a3
00017ece b419	cmp.b	(a1)+,d2
00017ed0 672c	beq.s	.foundBlock
00017ed2 47f8c100	lea	(Dynamic_Object_RAM_2P_End+(12*1)*object_size).w,a3
00017ed6 b419	cmp.b	(a1)+,d2
00017ed8 6724	beq.s	.foundBlock
00017eda 47f8c400	lea	(Dynamic_Object_RAM_2P_End+(12*2)*object_size).w,a3
00017ede b419	cmp.b	(a1)+,d2
00017ee0 671c	beq.s	.foundBlock
00017ee2 47f8c700	lea	(Dynamic_Object_RAM_2P_End+(12*3)*object_size).w,a3
00017ee6 b419	cmp.b	(a1)+,d2
00017ee8 6714	beq.s	.foundBlock
00017eea 47f8ca00	lea	(Dynamic_Object_RAM_2P_End+(12*4)*object_size).w,a3
00017eee b419	cmp.b	(a1)+,d2
00017ef0 670c	beq.s	.foundBlock
00017ef2 47f8cd00	lea	(Dynamic_Object_RAM_2P_End+(12*5)*object_size).w,a3
00017ef6 b419	cmp.b	(a1)+,d2
00017ef8 6704	beq.s	.foundBlock
00017efa 4e71	nop	
00017efc 4e71	nop	
00017efe 133c00ff	move.b	#-1,-(a1)
00017f02 48e70050	movem.l	a1/a3,-(sp)
00017f06 7200	moveq	#0,d1
00017f08 740b	moveq	#12-1,d2
00017f0a 4a13	tst.b	id(a3)
00017f0c 6718	beq.s	.skipObject
00017f0e 224b	movea.l	a3,a1
00017f10 7000	moveq	#0,d0
00017f12 10290023	move.b	respawn_index(a1),d0
00017f16 6706	beq.s	.doesNotRememberState
00017f18 08b200070002	bclr	#7,2(a2,d0.w)
00017f1e 700f	moveq	#bytesToLcnt(next_object),d0
00017f20 22c1	move.l	d1,(a1)+
00017f22 51c8fffc	dbf	d0,.clearObjectLoop
00017f26 47eb0040	lea	next_object(a3),a3
00017f2a 51caffde	dbf	d2,.deleteBlockLoop
00017f2e 7400	moveq	#0,d2
00017f30 4cdf0a00	movem.l	(sp)+,a1/a3
00017f34 4e75	rts	
00017f36 4a280002	tst.b	2(a0)
00017f3a 6a0e	bpl.s	+
00017f3c 08f200072002	bset	#7,2(a2,d2.w)
00017f42 6706	beq.s	+
00017f44 5c48	addq.w	#6,a0
00017f46 7000	moveq	#0,d0
00017f48 4e75	rts	
00017f4a 6100008e	bsr.w	AllocateObject
00017f4e 662e	bne.s	return_17F7E
00017f50 33580008	move.w	(a0)+,x_pos(a1)
00017f54 3018	move.w	(a0)+,d0
00017f56 6a04	bpl.s	+
00017f58 13420023	move.b	d2,respawn_index(a1)
00017f5c 3200	move.w	d0,d1
00017f5e 02400fff	andi.w	#$FFF,d0
00017f62 3340000c	move.w	d0,y_pos(a1)
00017f66 e759	rol.w	#render_flags.y_flip+2,d1
00017f68 02010003	andi.b	#1<<render_flags.x_flip|1<<render_flags.y_flip,d1
00017f6c 13410001	move.b	d1,render_flags(a1)
00017f70 13410022	move.b	d1,status(a1)
00017f78 13580028	move.b	(a0)+,subtype(a1)
00017f7c 7000	moveq	#0,d0
00017f7e 4e75	rts	
00017f80 4a280002	tst.b	2(a0)
00017f84 6a0e	bpl.s	+
00017f86 08f200072002	bset	#7,2(a2,d2.w)
00017f8c 6706	beq.s	+
00017f8e 5c48	addq.w	#6,a0
00017f90 7000	moveq	#0,d0
00017f92 4e75	rts	
00017f94 082800040002	btst	#4,2(a0)
00017f9a 6708	beq.s	+
00017f9c 6100003c	bsr.w	AllocateObject
00017fa0 6636	bne.s	return_17FD8
00017fa2 6006	bra.s	ChkLoadObj_2P_LoadData
00017fa4 61000070	bsr.w	AllocateObject_2P
00017fa8 662e	bne.s	return_17FD8
00017faa 33580008	move.w	(a0)+,x_pos(a1)
00017fae 3018	move.w	(a0)+,d0
00017fb0 6a04	bpl.s	+
00017fb2 13420023	move.b	d2,respawn_index(a1)
00017fb6 3200	move.w	d0,d1
00017fb8 02400fff	andi.w	#$FFF,d0
00017fbc 3340000c	move.w	d0,y_pos(a1)
00017fc0 e759	rol.w	#render_flags.y_flip+2,d1
00017fc2 02010003	andi.b	#1<<render_flags.x_flip|1<<render_flags.y_flip,d1
00017fc6 13410001	move.b	d1,render_flags(a1)
00017fca 13410022	move.b	d1,status(a1)
00017fd2 13580028	move.b	(a0)+,subtype(a1)
00017fd6 7000	moveq	#0,d0
00017fd8 4e75	rts	
00017fda 43f8b400	lea	(Dynamic_Object_RAM).w,a1
00017fde 303c006f	move.w	#(Dynamic_Object_RAM_End-Dynamic_Object_RAM)/object_size-1,d0
00017fe2 4a78ffd8	tst.w	(Two_player_mode).w
00017fe6 6704	beq.s	+
00017fe8 303c0027	move.w	#(Dynamic_Object_RAM_2P_End-Dynamic_Object_RAM)/object_size-1,d0
00017fec 4a11	tst.b	id(a1)
00017fee 6708	beq.s	return_17FF8
00017ff0 43e90040	lea	next_object(a1),a1
00017ff4 51c8fff6	dbf	d0,-
00017ff8 4e75	rts	
00017ffa 2248	movea.l	a0,a1
00017ffc 303cd000	move.w	#Dynamic_Object_RAM_End,d0
00018000 9048	sub.w	a0,d0
00018002 ec48	lsr.w	#object_size_bits,d0
00018004 5340	subq.w	#1,d0
00018006 650c	bcs.s	return_18014
00018008 4a11	tst.b	id(a1)
0001800a 6708	beq.s	return_18014
0001800c 43e90040	lea	next_object(a1),a1
00018010 51c8fff6	dbf	d0,-
00018014 4e75	rts	
00018016 224b	movea.l	a3,a1
00018018 303c000b	move.w	#12-1,d0
0001801c 4a11	tst.b	id(a1)
0001801e 6708	beq.s	return_18028
00018020 43e90040	lea	next_object(a1),a1
00018024 51c8fff6	dbf	d0,-
00018028 4e75	rts	
00018888 7000	moveq	#0,d0
0001888a 10280024	move.b	routine(a0),d0
0001888e 323b000c	move.w	Obj41_Index(pc,d0.w),d1
00018892 4ebb1008	jsr	Obj41_Index(pc,d1.w)
00018896 4ef9000163d2	jmp	(MarkObjGone).l
000188a8 54280024	addq.b	#2,routine(a0)
000188ac 217c0001901c0004	move.l	#Obj41_MapUnc_1901C,mappings(a0)
000188b4 317c045c0002	move.w	#make_art_tile(ArtTile_ArtNem_VrtclSprng,0,0),art_tile(a0)
000188ba 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000188c0 117c00100019	move.b	#$10,width_pixels(a0)
000188c6 117c00040018	move.b	#4,priority(a0)
000188cc 10280028	move.b	subtype(a0),d0
000188d0 e648	lsr.w	#3,d0
000188d2 0240000e	andi.w	#$E,d0
000188d6 303b0006	move.w	Obj41_Init_Subtypes(pc,d0.w),d0
000188da 4efb0002	jmp	Obj41_Init_Subtypes(pc,d0.w)
000188e8 117c00040024	move.b	#4,routine(a0)
000188ee 117c0002001c	move.b	#2,anim(a0)
000188f4 117c0003001a	move.b	#3,mapping_frame(a0)
000188fa 317c04700002	move.w	#make_art_tile(ArtTile_ArtNem_HrzntlSprng,0,0),art_tile(a0)
00018900 117c00080019	move.b	#8,width_pixels(a0)
00018906 604c	bra.s	Obj41_Init_Common
00018908 117c00060024	move.b	#6,routine(a0)
0001890e 117c0006001a	move.b	#6,mapping_frame(a0)
00018914 08e800010022	bset	#status.npc.y_flip,status(a0)
0001891a 6038	bra.s	Obj41_Init_Common
0001891c 117c00080024	move.b	#8,routine(a0)
00018922 117c0004001c	move.b	#4,anim(a0)
00018928 117c0007001a	move.b	#7,mapping_frame(a0)
0001892e 317c043c0002	move.w	#make_art_tile(ArtTile_ArtNem_DignlSprng,0,0),art_tile(a0)
00018934 601e	bra.s	Obj41_Init_Common
00018936 117c000a0024	move.b	#$A,routine(a0)
0001893c 117c0004001c	move.b	#4,anim(a0)
00018942 117c000a001a	move.b	#$A,mapping_frame(a0)
00018948 317c043c0002	move.w	#make_art_tile(ArtTile_ArtNem_DignlSprng,0,0),art_tile(a0)
0001894e 08e800010022	bset	#status.npc.y_flip,status(a0)
00018954 10280028	move.b	subtype(a0),d0
00018958 02400002	andi.w	#2,d0
0001895c 317b001e0030	move.w	Obj41_Strengths(pc,d0.w),objoff_30(a0)
00018962 08000001	btst	#1,d0
00018966 670e	beq.s	+
00018968 08e800050002	bset	#palette_bit_0,art_tile(a0)
0001896e 217c000190320004	move.l	#Obj41_MapUnc_19032,mappings(a0)
00018976 6100e3f6	bsr.w	Adjust2PArtPointer
0001897a 4e75	rts	
00018980 323c001b	move.w	#$1B,d1
00018984 343c0008	move.w	#8,d2
00018988 363c0010	move.w	#$10,d3
0001898c 38280008	move.w	x_pos(a0),d4
00018990 43f8b000	lea	(MainCharacter).w,a1
00018994 7c03	moveq	#p1_standing_bit,d6
00018996 48e77800	movem.l	d1-d4,-(sp)
0001899a 61000df2	bsr.w	SolidObject_Always_SingleCharacter
0001899e 082800030022	btst	#p1_standing_bit,status(a0)
000189a4 6702	beq.s	loc_189A8
000189a6 6122	bsr.s	loc_189CA
000189a8 4cdf001e	movem.l	(sp)+,d1-d4
000189ac 43f8b040	lea	(Sidekick).w,a1
000189b0 7c04	moveq	#p2_standing_bit,d6
000189b2 61000dda	bsr.w	SolidObject_Always_SingleCharacter
000189b6 082800040022	btst	#p2_standing_bit,status(a0)
000189bc 6702	beq.s	loc_189C0
000189be 610a	bsr.s	loc_189CA
000189c0 43f900018fe2	lea	(Ani_obj41).l,a1
000189c6 6000db7c	bra.w	AnimateSprite
000189ca 317c0100001c	move.w	#(1<<8)|(0<<0),anim(a0)
000189d0 5069000c	addq.w	#8,y_pos(a1)
000189d4 336800300012	move.w	objoff_30(a0),y_vel(a1)
000189da 08e900010022	bset	#status.player.in_air,status(a1)
000189e0 08a900030022	bclr	#status.player.on_object,status(a1)
000189e6 137c0010001c	move.b	#AniIDSonAni_Spring,anim(a1)
000189ec 137c00020024	move.b	#2,routine(a1)
000189f2 10280028	move.b	subtype(a0),d0
000189f6 6a06	bpl.s	loc_189FE
000189f8 337c00000010	move.w	#0,x_vel(a1)
000189fe 08000000	btst	#0,d0
00018a02 673a	beq.s	loc_18A3E
00018a04 337c00010014	move.w	#1,inertia(a1)
00018a0a 137c00010027	move.b	#1,flip_angle(a1)
00018a10 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
00018a16 137c0000002c	move.b	#0,flips_remaining(a1)
00018a1c 137c0004002d	move.b	#4,flip_speed(a1)
00018a22 08000001	btst	#1,d0
00018a26 6606	bne.s	loc_18A2E
00018a28 137c0001002c	move.b	#1,flips_remaining(a1)
00018a2e 082900000022	btst	#status.player.x_flip,status(a1)
00018a34 6708	beq.s	loc_18A3E
00018a36 44290027	neg.b	flip_angle(a1)
00018a3a 44690014	neg.w	inertia(a1)
00018a3e 0200000c	andi.b	#$C,d0
00018a42 0c000004	cmpi.b	#4,d0
00018a46 660c	bne.s	loc_18A54
00018a48 137c000c003e	move.b	#$C,top_solid_bit(a1)
00018a4e 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
00018a54 0c000008	cmpi.b	#8,d0
00018a58 660c	bne.s	loc_18A66
00018a5a 137c000e003e	move.b	#$E,top_solid_bit(a1)
00018a60 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
00018a66 303c00cc	move.w	#SndID_Spring,d0
00018a6a 4ef900001370	jmp	(PlaySound).l
00018a70 323c0013	move.w	#$13,d1
00018a74 343c000e	move.w	#$E,d2
00018a78 363c000f	move.w	#$F,d3
00018a7c 38280008	move.w	x_pos(a0),d4
00018a80 43f8b000	lea	(MainCharacter).w,a1
00018a84 7c03	moveq	#p1_standing_bit,d6
00018a86 48e77800	movem.l	d1-d4,-(sp)
00018a8a 61000d02	bsr.w	SolidObject_Always_SingleCharacter
00018a8e 082800050022	btst	#p1_pushing_bit,status(a0)
00018a94 671a	beq.s	loc_18AB0
00018a96 12280022	move.b	status(a0),d1
00018a9a 30280008	move.w	x_pos(a0),d0
00018a9e 90690008	sub.w	x_pos(a1),d0
00018aa2 6504	bcs.s	loc_18AA8
00018aa4 0a010001	eori.b	#1<<status.npc.x_flip,d1
00018aa8 02010001	andi.b	#1<<status.npc.x_flip,d1
00018aac 6602	bne.s	loc_18AB0
00018aae 613e	bsr.s	loc_18AEE
00018ab0 4cdf001e	movem.l	(sp)+,d1-d4
00018ab4 43f8b040	lea	(Sidekick).w,a1
00018ab8 7c04	moveq	#p2_standing_bit,d6
00018aba 61000cd2	bsr.w	SolidObject_Always_SingleCharacter
00018abe 082800060022	btst	#p2_pushing_bit,status(a0)
00018ac4 671a	beq.s	loc_18AE0
00018ac6 12280022	move.b	status(a0),d1
00018aca 30280008	move.w	x_pos(a0),d0
00018ace 90690008	sub.w	x_pos(a1),d0
00018ad2 6504	bcs.s	loc_18AD8
00018ad4 0a010001	eori.b	#1<<status.npc.x_flip,d1
00018ad8 02010001	andi.b	#1<<status.npc.x_flip,d1
00018adc 6602	bne.s	loc_18AE0
00018ade 610e	bsr.s	loc_18AEE
00018ae0 610000e4	bsr.w	loc_18BC6
00018ae4 43f900018fe2	lea	(Ani_obj41).l,a1
00018aea 6000da58	bra.w	AnimateSprite
00018aee 317c0300001c	move.w	#(3<<8)|(0<<0),anim(a0)
00018af4 336800300010	move.w	objoff_30(a0),x_vel(a1)
00018afa 50690008	addq.w	#8,x_pos(a1)
00018afe 08e900000022	bset	#status.player.x_flip,status(a1)
00018b04 082800000022	btst	#status.npc.x_flip,status(a0)
00018b0a 6610	bne.s	loc_18B1C
00018b0c 08a900000022	bclr	#status.player.x_flip,status(a1)
00018b12 046900100008	subi.w	#$10,x_pos(a1)
00018b18 44690010	neg.w	x_vel(a1)
00018b1c 337c000f002e	move.w	#$F,move_lock(a1)
00018b22 336900100014	move.w	x_vel(a1),inertia(a1)
00018b28 082900020022	btst	#status.player.rolling,status(a1)
00018b2e 6606	bne.s	loc_18B36
00018b30 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
00018b36 10280028	move.b	subtype(a0),d0
00018b3a 6a06	bpl.s	loc_18B42
00018b3c 337c00000012	move.w	#0,y_vel(a1)
00018b42 08000000	btst	#0,d0
00018b46 673a	beq.s	loc_18B82
00018b48 337c00010014	move.w	#1,inertia(a1)
00018b4e 137c00010027	move.b	#1,flip_angle(a1)
00018b54 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
00018b5a 137c0001002c	move.b	#1,flips_remaining(a1)
00018b60 137c0008002d	move.b	#8,flip_speed(a1)
00018b66 08000001	btst	#1,d0
00018b6a 6606	bne.s	loc_18B72
00018b6c 137c0003002c	move.b	#3,flips_remaining(a1)
00018b72 082900000022	btst	#status.player.x_flip,status(a1)
00018b78 6708	beq.s	loc_18B82
00018b7a 44290027	neg.b	flip_angle(a1)
00018b7e 44690014	neg.w	inertia(a1)
00018b82 0200000c	andi.b	#$C,d0
00018b86 0c000004	cmpi.b	#4,d0
00018b8a 660c	bne.s	loc_18B98
00018b8c 137c000c003e	move.b	#$C,top_solid_bit(a1)
00018b92 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
00018b98 0c000008	cmpi.b	#8,d0
00018b9c 660c	bne.s	loc_18BAA
00018b9e 137c000e003e	move.b	#$E,top_solid_bit(a1)
00018ba4 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
00018baa 08a800050022	bclr	#p1_pushing_bit,status(a0)
00018bb0 08a800060022	bclr	#p2_pushing_bit,status(a0)
00018bb6 08a900050022	bclr	#status.player.pushing,status(a1)
00018bbc 303c00cc	move.w	#SndID_Spring,d0
00018bc0 4ef900001370	jmp	(PlaySound).l
00018bc6 0c280003001c	cmpi.b	#3,anim(a0)
00018bcc 670000b0	beq.w	return_18C7E
00018bd0 30280008	move.w	x_pos(a0),d0
00018bd4 3200	move.w	d0,d1
00018bd6 06410028	addi.w	#$28,d1
00018bda 082800000022	btst	#status.npc.x_flip,status(a0)
00018be0 6706	beq.s	loc_18BE8
00018be2 3200	move.w	d0,d1
00018be4 04400028	subi.w	#$28,d0
00018be8 3428000c	move.w	y_pos(a0),d2
00018bec 3602	move.w	d2,d3
00018bee 04420018	subi.w	#$18,d2
00018bf2 06430018	addi.w	#$18,d3
00018bf6 43f8b000	lea	(MainCharacter).w,a1
00018bfa 082900010022	btst	#status.player.in_air,status(a1)
00018c00 663a	bne.s	loc_18C3C
00018c02 38290014	move.w	inertia(a1),d4
00018c06 082800000022	btst	#status.npc.x_flip,status(a0)
00018c0c 6702	beq.s	loc_18C10
00018c0e 4444	neg.w	d4
00018c10 4a44	tst.w	d4
00018c12 6b28	bmi.s	loc_18C3C
00018c14 38290008	move.w	x_pos(a1),d4
00018c18 b840	cmp.w	d0,d4
00018c1a 65000020	blo.w	loc_18C3C
00018c1e b841	cmp.w	d1,d4
00018c20 6400001a	bhs.w	loc_18C3C
00018c24 3829000c	move.w	y_pos(a1),d4
00018c28 b842	cmp.w	d2,d4
00018c2a 65000010	blo.w	loc_18C3C
00018c2e b843	cmp.w	d3,d4
00018c30 6400000a	bhs.w	loc_18C3C
00018c34 3f00	move.w	d0,-(sp)
00018c36 6100feb6	bsr.w	loc_18AEE
00018c3a 301f	move.w	(sp)+,d0
00018c3c 43f8b040	lea	(Sidekick).w,a1
00018c40 082900010022	btst	#status.player.in_air,status(a1)
00018c46 6636	bne.s	return_18C7E
00018c48 38290014	move.w	inertia(a1),d4
00018c4c 082800000022	btst	#status.npc.x_flip,status(a0)
00018c52 6702	beq.s	loc_18C56
00018c54 4444	neg.w	d4
00018c56 4a44	tst.w	d4
00018c58 6b24	bmi.s	return_18C7E
00018c5a 38290008	move.w	x_pos(a1),d4
00018c5e b840	cmp.w	d0,d4
00018c60 6500001c	blo.w	return_18C7E
00018c64 b841	cmp.w	d1,d4
00018c66 64000016	bhs.w	return_18C7E
00018c6a 3829000c	move.w	y_pos(a1),d4
00018c6e b842	cmp.w	d2,d4
00018c70 6500000c	blo.w	return_18C7E
00018c74 b843	cmp.w	d3,d4
00018c76 64000006	bhs.w	return_18C7E
00018c7a 6100fe72	bsr.w	loc_18AEE
00018c7e 4e75	rts	
00018c80 323c001b	move.w	#$1B,d1
00018c84 343c0008	move.w	#8,d2
00018c88 363c0010	move.w	#$10,d3
00018c8c 38280008	move.w	x_pos(a0),d4
00018c90 43f8b000	lea	(MainCharacter).w,a1
00018c94 7c03	moveq	#p1_standing_bit,d6
00018c96 48e77800	movem.l	d1-d4,-(sp)
00018c9a 61000af2	bsr.w	SolidObject_Always_SingleCharacter
00018c9e 0c44fffe	cmpi.w	#-2,d4
00018ca2 6602	bne.s	loc_18CA6
00018ca4 6120	bsr.s	loc_18CC6
00018ca6 4cdf001e	movem.l	(sp)+,d1-d4
00018caa 43f8b040	lea	(Sidekick).w,a1
00018cae 7c04	moveq	#p2_standing_bit,d6
00018cb0 61000adc	bsr.w	SolidObject_Always_SingleCharacter
00018cb4 0c44fffe	cmpi.w	#-2,d4
00018cb8 6602	bne.s	loc_18CBC
00018cba 610a	bsr.s	loc_18CC6
00018cbc 43f900018fe2	lea	(Ani_obj41).l,a1
00018cc2 6000d880	bra.w	AnimateSprite
00018cc6 317c0100001c	move.w	#(1<<8)|(0<<0),anim(a0)
00018ccc 5169000c	subq.w	#8,y_pos(a1)
00018cd0 336800300012	move.w	objoff_30(a0),y_vel(a1)
00018cd6 44690012	neg.w	y_vel(a1)
00018cda 10280028	move.b	subtype(a0),d0
00018cde 6a06	bpl.s	loc_18CE6
00018ce0 337c00000010	move.w	#0,x_vel(a1)
00018ce6 08000000	btst	#0,d0
00018cea 673a	beq.s	loc_18D26
00018cec 337c00010014	move.w	#1,inertia(a1)
00018cf2 137c00010027	move.b	#1,flip_angle(a1)
00018cf8 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
00018cfe 137c0000002c	move.b	#0,flips_remaining(a1)
00018d04 137c0004002d	move.b	#4,flip_speed(a1)
00018d0a 08000001	btst	#1,d0
00018d0e 6606	bne.s	loc_18D16
00018d10 137c0001002c	move.b	#1,flips_remaining(a1)
00018d16 082900000022	btst	#status.player.x_flip,status(a1)
00018d1c 6708	beq.s	loc_18D26
00018d1e 44290027	neg.b	flip_angle(a1)
00018d22 44690014	neg.w	inertia(a1)
00018d26 0200000c	andi.b	#$C,d0
00018d2a 0c000004	cmpi.b	#4,d0
00018d2e 660c	bne.s	loc_18D3C
00018d30 137c000c003e	move.b	#$C,top_solid_bit(a1)
00018d36 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
00018d3c 0c000008	cmpi.b	#8,d0
00018d40 660c	bne.s	loc_18D4E
00018d42 137c000e003e	move.b	#$E,top_solid_bit(a1)
00018d48 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
00018d4e 08e900010022	bset	#status.player.in_air,status(a1)
00018d54 08a900030022	bclr	#status.player.on_object,status(a1)
00018d5a 137c00020024	move.b	#2,routine(a1)
00018d60 303c00cc	move.w	#SndID_Spring,d0
00018d64 4ef900001370	jmp	(PlaySound).l
00018d6a 323c001b	move.w	#$1B,d1
00018d6e 343c0010	move.w	#$10,d2
00018d72 38280008	move.w	x_pos(a0),d4
00018d76 45fa0232	lea	Obj41_SlopeData_DiagUp(pc),a2
00018d7a 43f8b000	lea	(MainCharacter).w,a1
00018d7e 7c03	moveq	#p1_standing_bit,d6
00018d80 48e77800	movem.l	d1-d4,-(sp)
00018d84 61000a60	bsr.w	SlopedSolid_SingleCharacter
00018d88 082800030022	btst	#p1_standing_bit,status(a0)
00018d8e 6702	beq.s	loc_18D92
00018d90 6122	bsr.s	loc_18DB4
00018d92 4cdf001e	movem.l	(sp)+,d1-d4
00018d96 43f8b040	lea	(Sidekick).w,a1
00018d9a 7c04	moveq	#p2_standing_bit,d6
00018d9c 61000a48	bsr.w	SlopedSolid_SingleCharacter
00018da0 082800040022	btst	#p2_standing_bit,status(a0)
00018da6 6702	beq.s	loc_18DAA
00018da8 610a	bsr.s	loc_18DB4
00018daa 43f900018fe2	lea	(Ani_obj41).l,a1
00018db0 6000d792	bra.w	AnimateSprite
00018db4 082800000022	btst	#status.npc.x_flip,status(a0)
00018dba 660e	bne.s	loc_18DCA
00018dbc 30280008	move.w	x_pos(a0),d0
00018dc0 5940	subq.w	#4,d0
00018dc2 b0690008	cmp.w	x_pos(a1),d0
00018dc6 6510	blo.s	loc_18DD8
00018dc8 4e75	rts	
00018dca 30280008	move.w	x_pos(a0),d0
00018dce 5840	addq.w	#4,d0
00018dd0 b0690008	cmp.w	x_pos(a1),d0
00018dd4 6402	bhs.s	loc_18DD8
00018dd6 4e75	rts	
00018dd8 317c0500001c	move.w	#(5<<8)|(0<<0),anim(a0)
00018dde 336800300012	move.w	objoff_30(a0),y_vel(a1)
00018de4 336800300010	move.w	objoff_30(a0),x_vel(a1)
00018dea 5c69000c	addq.w	#6,y_pos(a1)
00018dee 5c690008	addq.w	#6,x_pos(a1)
00018df2 08e900000022	bset	#status.player.x_flip,status(a1)
00018df8 082800000022	btst	#status.npc.x_flip,status(a0)
00018dfe 6610	bne.s	loc_18E10
00018e00 08a900000022	bclr	#status.player.x_flip,status(a1)
00018e06 0469000c0008	subi.w	#$C,x_pos(a1)
00018e0c 44690010	neg.w	x_vel(a1)
00018e10 08e900010022	bset	#status.player.in_air,status(a1)
00018e16 08a900030022	bclr	#status.player.on_object,status(a1)
00018e1c 137c0010001c	move.b	#AniIDSonAni_Spring,anim(a1)
00018e22 137c00020024	move.b	#2,routine(a1)
00018e28 10280028	move.b	subtype(a0),d0
00018e2c 08000000	btst	#0,d0
00018e30 673a	beq.s	loc_18E6C
00018e32 337c00010014	move.w	#1,inertia(a1)
00018e38 137c00010027	move.b	#1,flip_angle(a1)
00018e3e 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
00018e44 137c0001002c	move.b	#1,flips_remaining(a1)
00018e4a 137c0008002d	move.b	#8,flip_speed(a1)
00018e50 08000001	btst	#1,d0
00018e54 6606	bne.s	loc_18E5C
00018e56 137c0003002c	move.b	#3,flips_remaining(a1)
00018e5c 082900000022	btst	#status.player.x_flip,status(a1)
00018e62 6708	beq.s	loc_18E6C
00018e64 44290027	neg.b	flip_angle(a1)
00018e68 44690014	neg.w	inertia(a1)
00018e6c 0200000c	andi.b	#$C,d0
00018e70 0c000004	cmpi.b	#4,d0
00018e74 660c	bne.s	loc_18E82
00018e76 137c000c003e	move.b	#$C,top_solid_bit(a1)
00018e7c 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
00018e82 0c000008	cmpi.b	#8,d0
00018e86 660c	bne.s	loc_18E94
00018e88 137c000e003e	move.b	#$E,top_solid_bit(a1)
00018e8e 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
00018e94 303c00cc	move.w	#SndID_Spring,d0
00018e98 4ef900001370	jmp	(PlaySound).l
00018e9e 323c001b	move.w	#$1B,d1
00018ea2 343c0010	move.w	#$10,d2
00018ea6 38280008	move.w	x_pos(a0),d4
00018eaa 45fa011a	lea	Obj41_SlopeData_DiagDown(pc),a2
00018eae 43f8b000	lea	(MainCharacter).w,a1
00018eb2 7c03	moveq	#p1_standing_bit,d6
00018eb4 48e77800	movem.l	d1-d4,-(sp)
00018eb8 6100092c	bsr.w	SlopedSolid_SingleCharacter
00018ebc 0c44fffe	cmpi.w	#-2,d4
00018ec0 6602	bne.s	loc_18EC4
00018ec2 6122	bsr.s	loc_18EE6
00018ec4 4cdf001e	movem.l	(sp)+,d1-d4
00018ec8 43f8b040	lea	(Sidekick).w,a1
00018ecc 7c04	moveq	#p2_standing_bit,d6
00018ece 61000916	bsr.w	SlopedSolid_SingleCharacter
00018ed2 0c44fffe	cmpi.w	#-2,d4
00018ed6 6602	bne.s	loc_18EDA
00018ed8 610c	bsr.s	loc_18EE6
00018eda 43f900018fe2	lea	(Ani_obj41).l,a1
00018ee0 6000d662	bra.w	AnimateSprite
00018ee4 4e75	rts	
00018ee6 317c0500001c	move.w	#(5<<8)|(0<<0),anim(a0)
00018eec 336800300012	move.w	objoff_30(a0),y_vel(a1)
00018ef2 44690012	neg.w	y_vel(a1)
00018ef6 336800300010	move.w	objoff_30(a0),x_vel(a1)
00018efc 5d69000c	subq.w	#6,y_pos(a1)
00018f00 5c690008	addq.w	#6,x_pos(a1)
00018f04 08e900000022	bset	#status.player.x_flip,status(a1)
00018f0a 082800000022	btst	#status.npc.x_flip,status(a0)
00018f10 6610	bne.s	loc_18F22
00018f12 08a900000022	bclr	#status.player.x_flip,status(a1)
00018f18 0469000c0008	subi.w	#$C,x_pos(a1)
00018f1e 44690010	neg.w	x_vel(a1)
00018f22 08e900010022	bset	#status.player.in_air,status(a1)
00018f28 08a900030022	bclr	#status.player.on_object,status(a1)
00018f2e 137c00020024	move.b	#2,routine(a1)
00018f34 10280028	move.b	subtype(a0),d0
00018f38 08000000	btst	#0,d0
00018f3c 673a	beq.s	loc_18F78
00018f3e 337c00010014	move.w	#1,inertia(a1)
00018f44 137c00010027	move.b	#1,flip_angle(a1)
00018f4a 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
00018f50 137c0001002c	move.b	#1,flips_remaining(a1)
00018f56 137c0008002d	move.b	#8,flip_speed(a1)
00018f5c 08000001	btst	#1,d0
00018f60 6606	bne.s	loc_18F68
00018f62 137c0003002c	move.b	#3,flips_remaining(a1)
00018f68 082900000022	btst	#status.player.x_flip,status(a1)
00018f6e 6708	beq.s	loc_18F78
00018f70 44290027	neg.b	flip_angle(a1)
00018f74 44690014	neg.w	inertia(a1)
00018f78 0200000c	andi.b	#$C,d0
00018f7c 0c000004	cmpi.b	#4,d0
00018f80 660c	bne.s	loc_18F8E
00018f82 137c000c003e	move.b	#$C,top_solid_bit(a1)
00018f88 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
00018f8e 0c000008	cmpi.b	#8,d0
00018f92 660c	bne.s	loc_18FA0
00018f94 137c000e003e	move.b	#$E,top_solid_bit(a1)
00018f9a 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
00018fa0 303c00cc	move.w	#SndID_Spring,d0
00018fa4 4ef900001370	jmp	(PlaySound).l
000191b6 4e71	nop	
000191b8 7000	moveq	#0,d0
000191ba 10280024	move.b	routine(a0),d0
000191be 323b0018	move.w	Obj0D_Index(pc,d0.w),d1
000191c2 4ebb1014	jsr	Obj0D_Index(pc,d1.w)
000191c6 43f90001958e	lea	(Ani_obj0D).l,a1
000191cc 6100d376	bsr.w	AnimateSprite
000191d0 61000362	bsr.w	PLCLoad_Signpost
000191d4 6000d1fc	bra.w	MarkObjGone
000191dc 4a78ffd8	tst.w	(Two_player_mode).w
000191e0 6726	beq.s	loc_19208
000191e2 217c000196560004	move.l	#Obj0D_MapUnc_19656,mappings(a0)
000191ea 317c05e80002	move.w	#make_art_tile(ArtTile_ArtNem_2p_Signpost,0,0),art_tile(a0)
000191f0 11fc00ffffca	move.b	#-1,(Signpost_prev_frame).w
000191f6 7200	moveq	#0,d1
000191f8 323c1020	move.w	#$1020,d1
000191fc 383cff80	move.w	#-$80,d4
00019200 7a00	moveq	#0,d5
00019202 61000360	bsr.w	loc_19564
00019206 6024	bra.s	loc_1922C
00019208 0c780401fe10	cmpi.w	#metropolis_zone_act_2,(Current_ZoneAndAct).w
0001920e 670e	beq.s	loc_1921E
00019210 4a38fe11	tst.b	(Current_Act).w
00019214 6708	beq.s	loc_1921E
00019216 317c00000008	move.w	#0,x_pos(a0)
0001921c 4e75	rts	
0001921e 217c000195be0004	move.l	#Obj0D_MapUnc_195BE,mappings(a0)
00019226 317c04340002	move.w	#make_art_tile(ArtTile_ArtNem_Signpost,0,0),art_tile(a0)
0001922c 54280024	addq.b	#2,routine(a0)
00019230 6100db3c	bsr.w	Adjust2PArtPointer
00019234 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0001923a 117c00180019	move.b	#$18,width_pixels(a0)
00019240 117c00040018	move.b	#4,priority(a0)
00019246 31fc3c3cfef8	move.w	#$3C3C,(Loser_Time_Left).w
0001924c 4a38fe1e	tst.b	(Update_HUD_timer).w
00019250 67000084	beq.w	loc_192D6
00019254 43f8b000	lea	(MainCharacter).w,a1
00019258 30290008	move.w	x_pos(a1),d0
0001925c 90680008	sub.w	x_pos(a0),d0
00019260 6574	bcs.s	loc_192D6
00019262 0c400020	cmpi.w	#$20,d0
00019266 646e	bhs.s	loc_192D6
00019268 303c00cf	move.w	#SndID_Signpost,d0
0001926c 4eb90000135e	jsr	(PlayMusic).l
00019272 4238fe1e	clr.b	(Update_HUD_timer).w
00019276 317c0001001c	move.w	#(0<<8)|(1<<0),anim(a0)
0001927c 317c00000030	move.w	#0,obj0D_spinframe(a0)
00019282 31f8eecaeec8	move.w	(Camera_Max_X_pos).w,(Camera_Min_X_pos).w
00019288 117c00020025	move.b	#2,routine_secondary(a0)
0001928e 0c38000cfef8	cmpi.b	#$C,(Loser_Time_Left).w
00019294 620a	bhi.s	loc_192A0
00019296 3038ff90	move.w	(Level_Music).w,d0
0001929a 4eb90000135e	jsr	(PlayMusic).l
000192a0 4a280036	tst.b	obj0D_finalanim(a0)
000192a4 660000aa	bne.w	loc_19350
000192a8 117c00030036	move.b	#3,obj0D_finalanim(a0)
000192ae 0c780002ff70	cmpi.w	#2,(Player_mode).w
000192b4 6606	bne.s	loc_192BC
000192b6 117c00040036	move.b	#4,obj0D_finalanim(a0)
000192bc 4a78ffd8	tst.w	(Two_player_mode).w
000192c0 6700008e	beq.w	loc_19350
000192c4 31fc3c3cfef8	move.w	#$3C3C,(Loser_Time_Left).w
000192ca 303c00d3	move.w	#SndID_Signpost2P,d0
000192ce 4eb900001370	jsr	(PlaySound).l
000192d4 607a	bra.s	loc_19350
000192d6 4a78ffd8	tst.w	(Two_player_mode).w
000192da 6774	beq.s	loc_19350
000192dc 4a38feca	tst.b	(Update_HUD_timer_2P).w
000192e0 676e	beq.s	loc_19350
000192e2 43f8b040	lea	(Sidekick).w,a1
000192e6 30290008	move.w	x_pos(a1),d0
000192ea 90680008	sub.w	x_pos(a0),d0
000192ee 6560	bcs.s	loc_19350
000192f0 0c400020	cmpi.w	#$20,d0
000192f4 645a	bhs.s	loc_19350
000192f6 303c00cf	move.w	#SndID_Signpost,d0
000192fa 4eb90000135e	jsr	(PlayMusic).l
00019300 4238feca	clr.b	(Update_HUD_timer_2P).w
00019304 317c0001001c	move.w	#(0<<8)|(1<<0),anim(a0)
0001930a 317c00000030	move.w	#0,obj0D_spinframe(a0)
00019310 31f8eefaeef8	move.w	(Tails_Max_X_pos).w,(Tails_Min_X_pos).w
00019316 117c00020025	move.b	#2,routine_secondary(a0)
0001931c 0c38000cfef8	cmpi.b	#$C,(Loser_Time_Left).w
00019322 620a	bhi.s	loc_1932E
00019324 3038ff90	move.w	(Level_Music).w,d0
00019328 4eb90000135e	jsr	(PlayMusic).l
0001932e 4a280036	tst.b	obj0D_finalanim(a0)
00019332 661c	bne.s	loc_19350
00019334 117c00040036	move.b	#4,obj0D_finalanim(a0)
0001933a 4a78ffd8	tst.w	(Two_player_mode).w
0001933e 6710	beq.s	loc_19350
00019340 31fc3c3cfef8	move.w	#$3C3C,(Loser_Time_Left).w
00019346 303c00d3	move.w	#SndID_Signpost2P,d0
0001934a 4eb900001370	jsr	(PlaySound).l
00019350 7000	moveq	#0,d0
00019352 10280025	move.b	routine_secondary(a0),d0
00019356 323b0006	move.w	Obj0D_Main_States(pc,d0.w),d1
0001935a 4efb1002	jmp	Obj0D_Main_States(pc,d1.w)
00019366 4e75	rts	
00019368 53680030	subq.w	#1,obj0D_spinframe(a0)
0001936c 6a2a	bpl.s	loc_19398
0001936e 317c003c0030	move.w	#60,obj0D_spinframe(a0)
00019374 5228001c	addq.b	#1,anim(a0)
00019378 0c280003001c	cmpi.b	#3,anim(a0)
0001937e 6618	bne.s	loc_19398
00019380 117c00040025	move.b	#4,routine_secondary(a0)
00019386 11680036001c	move.b	obj0D_finalanim(a0),anim(a0)
0001938c 4a78ffd8	tst.w	(Two_player_mode).w
00019390 6706	beq.s	loc_19398
00019392 117c00060025	move.b	#6,routine_secondary(a0)
00019398 53680032	subq.w	#1,objoff_32(a0)
0001939c 6a68	bpl.s	return_19406
0001939e 317c000b0032	move.w	#$B,objoff_32(a0)
000193a4 7000	moveq	#0,d0
000193a6 10280034	move.b	obj0D_sparkleframe(a0),d0
000193aa 54280034	addq.b	#2,obj0D_sparkleframe(a0)
000193ae 0228000e0034	andi.b	#$E,obj0D_sparkleframe(a0)
000193b4 45fb0052	lea	Obj0D_RingSparklePositions(pc,d0.w),a2
000193b8 6100ec20	bsr.w	AllocateObject
000193bc 6648	bne.s	return_19406
000193c4 137c00060024	move.b	#6,routine(a1)
000193ca 101a	move.b	(a2)+,d0
000193cc 4880	ext.w	d0
000193ce d0680008	add.w	x_pos(a0),d0
000193d2 33400008	move.w	d0,x_pos(a1)
000193d6 101a	move.b	(a2)+,d0
000193d8 4880	ext.w	d0
000193da d068000c	add.w	y_pos(a0),d0
000193de 3340000c	move.w	d0,y_pos(a1)
000193e2 237c000123820004	move.l	#Obj25_MapUnc_12382,mappings(a1)
000193ea 337c26bc0002	move.w	#make_art_tile(ArtTile_ArtNem_Ring,1,0),art_tile(a1)
000193f0 6100d998	bsr.w	Adjust2PArtPointer2
000193f4 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
000193fa 137c00020018	move.b	#2,priority(a1)
00019400 137c00080019	move.b	#8,width_pixels(a1)
00019406 4e75	rts	
00019418 4a78fe08	tst.w	(Debug_placement_mode).w
0001941c 660000b2	bne.w	return_194D0
00019420 08380001b022	btst	#status.player.in_air,(MainCharacter+status).w
00019426 660c	bne.s	loc_19434
00019428 11fc0001f7cc	move.b	#1,(Control_Locked).w
0001942e 31fc0800f602	move.w	#(button_right_mask<<8)|0,(Ctrl_1_Logical).w
00019434 4a38b000	tst.b	(MainCharacter+id).w
00019438 6712	beq.s	loc_1944C
0001943a 3038b008	move.w	(MainCharacter+x_pos).w,d0
0001943e 3238eeca	move.w	(Camera_Max_X_pos).w,d1
00019442 06410128	addi.w	#$128,d1
00019446 b041	cmp.w	d1,d0
00019448 65000086	blo.w	return_194D0
0001944c 117c00000025	move.b	#0,routine_secondary(a0)
00019452 43f8b000	lea	(MainCharacter).w,a1
00019456 4229002b	clr.b	status_secondary(a1)
0001945a 4238fe1e	clr.b	(Update_HUD_timer).w
0001945e 6100eb7a	bsr.w	AllocateObject
00019462 6604	bne.s	+
00019464 12bc003a	move.b	#ObjID_Results,id(a1)
00019468 7026	moveq	#PLCID_Results,d0
0001946a 0c780002ff70	cmpi.w	#2,(Player_mode).w
00019470 6602	bne.s	+
00019472 7042	moveq	#PLCID_ResultsTails,d0
00019474 4eb900001650	jsr	(LoadPLC2).l
0001947a 11fc0001f7d6	move.b	#1,(Update_Bonus_score).w
00019480 7000	moveq	#0,d0
00019482 1038fe23	move.b	(Timer_minute).w,d0
00019486 c0fc003c	mulu.w	#60,d0
0001948a 7200	moveq	#0,d1
0001948c 1238fe24	move.b	(Timer_second).w,d1
00019490 d041	add.w	d1,d0
00019492 80fc000f	divu.w	#15,d0
00019496 7214	moveq	#(TimeBonuses_End-TimeBonuses)/2-1,d1
00019498 b041	cmp.w	d1,d0
0001949a 6502	blo.s	+
0001949c 3001	move.w	d1,d0
0001949e d040	add.w	d0,d0
000194a0 31fb0030f7d2	move.w	TimeBonuses(pc,d0.w),(Bonus_Countdown_1).w
000194a6 3038fe20	move.w	(Ring_count).w,d0
000194aa c0fc000a	mulu.w	#$A,d0
000194ae 31c0f7d4	move.w	d0,(Bonus_Countdown_2).w
000194b2 4278ff8e	clr.w	(Total_Bonus_Countdown).w
000194b6 4278ff92	clr.w	(Bonus_Countdown_3).w
000194ba 4a78ff40	tst.w	(Perfect_rings_left).w
000194be 6606	bne.s	+
000194c0 31fc1388ff92	move.w	#5000,(Bonus_Countdown_3).w
000194c6 303c009a	move.w	#MusID_EndLevel,d0
000194ca 4eb90000135e	jsr	(PlayMusic).l
000194d0 4e75	rts	
000194fc 53680030	subq.w	#1,obj0D_spinframe(a0)
00019500 6a30	bpl.s	return_19532
00019502 4a38fe1a	tst.b	(Time_Over_flag).w
00019506 662a	bne.s	return_19532
00019508 4a38fecc	tst.b	(Time_Over_flag_2P).w
0001950c 6624	bne.s	return_19532
0001950e 4a38fe1e	tst.b	(Update_HUD_timer).w
00019512 661e	bne.s	return_19532
00019514 4a38feca	tst.b	(Update_HUD_timer_2P).w
00019518 6618	bne.s	return_19532
0001951a 11fc0000fe30	move.b	#0,(Last_star_pole_hit).w
00019520 11fc0000fee0	move.b	#0,(Last_star_pole_hit_2P).w
00019526 11fc0018f600	move.b	#GameModeID_2PResults,(Game_Mode).w
0001952c 31fc0000ff10	move.w	#VsRSID_Act,(Results_Screen_2P).w
00019532 4e75	rts	
00019534 4a78ffd8	tst.w	(Two_player_mode).w
00019538 6752	beq.s	return_1958C
0001953a 7000	moveq	#0,d0
0001953c 1028001a	move.b	mapping_frame(a0),d0
00019540 b038ffca	cmp.b	(Signpost_prev_frame).w,d0
00019544 6746	beq.s	return_1958C
00019546 11c0ffca	move.b	d0,(Signpost_prev_frame).w
0001954a 45f9000196ee	lea	(Obj0D_MapRUnc_196EE).l,a2
00019550 d040	add.w	d0,d0
00019552 d4f20000	adda.w	(a2,d0.w),a2
00019556 3a1a	move.w	(a2)+,d5
00019558 5345	subq.w	#1,d5
0001955a 6b30	bmi.s	return_1958C
0001955c 383cbd00	move.w	#tiles_to_bytes(ArtTile_ArtUnc_Signpost),d4
00019560 7200	moveq	#0,d1
00019562 321a	move.w	(a2)+,d1
00019564 3601	move.w	d1,d3
00019566 e04b	lsr.w	#8,d3
00019568 024300f0	andi.w	#$F0,d3
0001956c 06430010	addi.w	#$10,d3
00019570 02410fff	andi.w	#$FFF,d1
00019574 eb89	lsl.l	#5,d1
00019576 06810007a18a	addi.l	#ArtUnc_Signpost,d1
0001957c 3404	move.w	d4,d2
0001957e d843	add.w	d3,d4
00019580 d843	add.w	d3,d4
00019582 4eb90000144e	jsr	(QueueDMATransfer).l
00019588 51cdffd6	dbf	d5,loc_19560
0001958c 4e75	rts	
00019716 4e71	nop	
00019718 43f8b000	lea	(MainCharacter).w,a1
0001971c 7c03	moveq	#p1_standing_bit,d6
0001971e 48e77800	movem.l	d1-d4,-(sp)
00019722 6112	bsr.s	+
00019724 4cdf001e	movem.l	(sp)+,d1-d4
00019728 43f8b040	lea	(Sidekick).w,a1
0001972c 4a290001	tst.b	render_flags(a1)
00019730 6a000044	bpl.w	return_19776
00019734 5206	addq.b	#p2_standing_bit-p1_standing_bit,d6
00019736 0d280022	btst	d6,status(a0)
0001973a 670002ac	beq.w	SolidObject_OnScreenTest
0001973e 3401	move.w	d1,d2
00019740 d442	add.w	d2,d2
00019742 082900010022	btst	#status.player.in_air,status(a1)
00019748 6610	bne.s	loc_1975A
0001974a 30290008	move.w	x_pos(a1),d0
0001974e 90680008	sub.w	x_pos(a0),d0
00019752 d041	add.w	d1,d0
00019754 6b04	bmi.s	loc_1975A
00019756 b042	cmp.w	d2,d0
00019758 6514	blo.s	loc_1976E
0001975a 08a900030022	bclr	#status.player.on_object,status(a1)
00019760 08e900010022	bset	#status.player.in_air,status(a1)
00019766 0da80022	bclr	d6,status(a0)
0001976a 7800	moveq	#0,d4
0001976c 4e75	rts	
0001976e 3404	move.w	d4,d2
00019770 61000420	bsr.w	MvSonicOnPtfm
00019774 7800	moveq	#0,d4
00019776 4e75	rts	
00019778 43f8b000	lea	(MainCharacter).w,a1
0001977c 7c03	moveq	#p1_standing_bit,d6
0001977e 48e77800	movem.l	d1-d4,-(sp)
00019782 610a	bsr.s	SolidObject_Always_SingleCharacter
00019784 4cdf001e	movem.l	(sp)+,d1-d4
00019788 43f8b040	lea	(Sidekick).w,a1
0001978c 5206	addq.b	#1,d6
0001978e 0d280022	btst	d6,status(a0)
00019792 6700025c	beq.w	SolidObject_cont
00019796 3401	move.w	d1,d2
00019798 d442	add.w	d2,d2
0001979a 082900010022	btst	#status.player.in_air,status(a1)
000197a0 6610	bne.s	loc_197B2
000197a2 30290008	move.w	x_pos(a1),d0
000197a6 90680008	sub.w	x_pos(a0),d0
000197aa d041	add.w	d1,d0
000197ac 6b04	bmi.s	loc_197B2
000197ae b042	cmp.w	d2,d0
000197b0 6514	blo.s	loc_197C6
000197b2 08a900030022	bclr	#status.player.on_object,status(a1)
000197b8 08e900010022	bset	#status.player.in_air,status(a1)
000197be 0da80022	bclr	d6,status(a0)
000197c2 7800	moveq	#0,d4
000197c4 4e75	rts	
000197c6 3404	move.w	d4,d2
000197c8 610003c8	bsr.w	MvSonicOnPtfm
000197cc 7800	moveq	#0,d4
000197ce 4e75	rts	
000197d0 43f8b000	lea	(MainCharacter).w,a1
000197d4 7c03	moveq	#p1_standing_bit,d6
000197d6 48e77800	movem.l	d1-d4,-(sp)
000197da 610a	bsr.s	SlopedSolid_SingleCharacter
000197dc 4cdf001e	movem.l	(sp)+,d1-d4
000197e0 43f8b040	lea	(Sidekick).w,a1
000197e4 5206	addq.b	#1,d6
000197e6 0d280022	btst	d6,status(a0)
000197ea 67000142	beq.w	SlopedSolid_cont
000197ee 3401	move.w	d1,d2
000197f0 d442	add.w	d2,d2
000197f2 082900010022	btst	#status.player.in_air,status(a1)
000197f8 6610	bne.s	loc_1980A
000197fa 30290008	move.w	x_pos(a1),d0
000197fe 90680008	sub.w	x_pos(a0),d0
00019802 d041	add.w	d1,d0
00019804 6b04	bmi.s	loc_1980A
00019806 b042	cmp.w	d2,d0
00019808 6514	blo.s	loc_1981E
0001980a 08a900030022	bclr	#status.player.on_object,status(a1)
00019810 08e900010022	bset	#status.player.in_air,status(a1)
00019816 0da80022	bclr	d6,status(a0)
0001981a 7800	moveq	#0,d4
0001981c 4e75	rts	
0001981e 3404	move.w	d4,d2
00019820 610003aa	bsr.w	MvSonicOnSlope
00019824 7800	moveq	#0,d4
00019826 4e75	rts	
00019828 43f8b000	lea	(MainCharacter).w,a1
0001982c 7c03	moveq	#p1_standing_bit,d6
0001982e 48e77800	movem.l	d1-d4,-(sp)
00019832 610a	bsr.s	+
00019834 4cdf001e	movem.l	(sp)+,d1-d4
00019838 43f8b040	lea	(Sidekick).w,a1
0001983c 5206	addq.b	#1,d6
0001983e 0d280022	btst	d6,status(a0)
00019842 67000144	beq.w	DoubleSlopedSolid_cont
00019846 3401	move.w	d1,d2
00019848 d442	add.w	d2,d2
0001984a 082900010022	btst	#status.player.in_air,status(a1)
00019850 6610	bne.s	loc_19862
00019852 30290008	move.w	x_pos(a1),d0
00019856 90680008	sub.w	x_pos(a0),d0
0001985a d041	add.w	d1,d0
0001985c 6b04	bmi.s	loc_19862
0001985e b042	cmp.w	d2,d0
00019860 6514	blo.s	loc_19876
00019862 08a900030022	bclr	#status.player.on_object,status(a1)
00019868 08e900010022	bset	#status.player.in_air,status(a1)
0001986e 0da80022	bclr	d6,status(a0)
00019872 7800	moveq	#0,d4
00019874 4e75	rts	
00019876 3404	move.w	d4,d2
00019878 61000394	bsr.w	MvSonicOnDoubleSlope
0001987c 7800	moveq	#0,d4
0001987e 4e75	rts	
00019880 43f8b000	lea	(MainCharacter).w,a1
00019884 7c03	moveq	#p1_standing_bit,d6
00019886 48e77800	movem.l	d1-d4,-(sp)
0001988a 610a	bsr.s	loc_19896
0001988c 4cdf001e	movem.l	(sp)+,d1-d4
00019890 43f8b040	lea	(Sidekick).w,a1
00019894 5206	addq.b	#1,d6
00019896 0d280022	btst	d6,status(a0)
0001989a 67000050	beq.w	SolidObject45_cont
0001989e 082900010022	btst	#status.player.in_air,status(a1)
000198a4 6612	bne.s	loc_198B8
000198a6 30290008	move.w	x_pos(a1),d0
000198aa 90680008	sub.w	x_pos(a0),d0
000198ae d041	add.w	d1,d0
000198b0 6b06	bmi.s	loc_198B8
000198b2 d241	add.w	d1,d1
000198b4 b041	cmp.w	d1,d0
000198b6 6514	blo.s	loc_198CC
000198b8 08a900030022	bclr	#status.player.on_object,status(a1)
000198be 08e900010022	bset	#status.player.in_air,status(a1)
000198c4 0da80022	bclr	d6,status(a0)
000198c8 7800	moveq	#0,d4
000198ca 4e75	rts	
000198cc 3028000c	move.w	y_pos(a0),d0
000198d0 9042	sub.w	d2,d0
000198d2 d043	add.w	d3,d0
000198d4 7200	moveq	#0,d1
000198d6 12290016	move.b	y_radius(a1),d1
000198da 9041	sub.w	d1,d0
000198dc 3340000c	move.w	d0,y_pos(a1)
000198e0 98680008	sub.w	x_pos(a0),d4
000198e4 99690008	sub.w	d4,x_pos(a1)
000198e8 7800	moveq	#0,d4
000198ea 4e75	rts	
000198ec 30290008	move.w	x_pos(a1),d0
000198f0 90680008	sub.w	x_pos(a0),d0
000198f4 d041	add.w	d1,d0
000198f6 6b0001cc	bmi.w	SolidObject_TestClearPush
000198fa 3801	move.w	d1,d4
000198fc d844	add.w	d4,d4
000198fe b044	cmp.w	d4,d0
00019900 620001c2	bhi.w	SolidObject_TestClearPush
00019904 3a28000c	move.w	y_pos(a0),d5
00019908 da43	add.w	d3,d5
0001990a 16290016	move.b	y_radius(a1),d3
0001990e 4883	ext.w	d3
00019910 d443	add.w	d3,d2
00019912 3629000c	move.w	y_pos(a1),d3
00019916 9645	sub.w	d5,d3
00019918 5843	addq.w	#4,d3
0001991a d642	add.w	d2,d3
0001991c 6b0001a6	bmi.w	SolidObject_TestClearPush
00019920 3802	move.w	d2,d4
00019922 d844	add.w	d4,d4
00019924 b644	cmp.w	d4,d3
00019926 6400019c	bhs.w	SolidObject_TestClearPush
0001992a 60000102	bra.w	SolidObject_ChkBounds
0001992e 30290008	move.w	x_pos(a1),d0
00019932 90680008	sub.w	x_pos(a0),d0
00019936 d041	add.w	d1,d0
00019938 6b00018a	bmi.w	SolidObject_TestClearPush
0001993c 3601	move.w	d1,d3
0001993e d643	add.w	d3,d3
00019940 b043	cmp.w	d3,d0
00019942 62000180	bhi.w	SolidObject_TestClearPush
00019946 3a00	move.w	d0,d5
00019948 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0001994e 6704	beq.s	+
00019950 4645	not.w	d5
00019952 da43	add.w	d3,d5
00019954 e24d	lsr.w	#1,d5
00019956 16325000	move.b	(a2,d5.w),d3
0001995a 9612	sub.b	(a2),d3
0001995c 4883	ext.w	d3
0001995e 3a28000c	move.w	y_pos(a0),d5
00019962 9a43	sub.w	d3,d5
00019964 16290016	move.b	y_radius(a1),d3
00019968 4883	ext.w	d3
0001996a d443	add.w	d3,d2
0001996c 3629000c	move.w	y_pos(a1),d3
00019970 9645	sub.w	d5,d3
00019972 5843	addq.w	#4,d3
00019974 d642	add.w	d2,d3
00019976 6b00014c	bmi.w	SolidObject_TestClearPush
0001997a 3802	move.w	d2,d4
0001997c d844	add.w	d4,d4
0001997e b644	cmp.w	d4,d3
00019980 64000142	bhs.w	SolidObject_TestClearPush
00019984 600000a8	bra.w	SolidObject_ChkBounds
00019988 30290008	move.w	x_pos(a1),d0
0001998c 90680008	sub.w	x_pos(a0),d0
00019990 d041	add.w	d1,d0
00019992 6b000130	bmi.w	SolidObject_TestClearPush
00019996 3601	move.w	d1,d3
00019998 d643	add.w	d3,d3
0001999a b043	cmp.w	d3,d0
0001999c 62000126	bhi.w	SolidObject_TestClearPush
000199a0 3a00	move.w	d0,d5
000199a2 082800000001	btst	#render_flags.x_flip,render_flags(a0)
000199a8 6704	beq.s	+
000199aa 4645	not.w	d5
000199ac da43	add.w	d3,d5
000199ae 0245fffe	andi.w	#$FFFE,d5
000199b2 16325000	move.b	(a2,d5.w),d3
000199b6 14325001	move.b	1(a2,d5.w),d2
000199ba 4882	ext.w	d2
000199bc 4883	ext.w	d3
000199be 3a28000c	move.w	y_pos(a0),d5
000199c2 9a43	sub.w	d3,d5
000199c4 3629000c	move.w	y_pos(a1),d3
000199c8 9645	sub.w	d5,d3
000199ca 1a290016	move.b	y_radius(a1),d5
000199ce 4885	ext.w	d5
000199d0 d645	add.w	d5,d3
000199d2 5843	addq.w	#4,d3
000199d4 6b0000ee	bmi.w	SolidObject_TestClearPush
000199d8 d445	add.w	d5,d2
000199da 3802	move.w	d2,d4
000199dc d845	add.w	d5,d4
000199de b644	cmp.w	d4,d3
000199e0 640000e2	bhs.w	SolidObject_TestClearPush
000199e4 60000048	bra.w	SolidObject_ChkBounds
000199e8 4a280001	tst.b	render_flags(a0)
000199ec 6a0000d6	bpl.w	SolidObject_TestClearPush
000199f0 30290008	move.w	x_pos(a1),d0
000199f4 90680008	sub.w	x_pos(a0),d0
000199f8 d041	add.w	d1,d0
000199fa 6b0000c8	bmi.w	SolidObject_TestClearPush
000199fe 3601	move.w	d1,d3
00019a00 d643	add.w	d3,d3
00019a02 b043	cmp.w	d3,d0
00019a04 620000be	bhi.w	SolidObject_TestClearPush
00019a08 16290016	move.b	y_radius(a1),d3
00019a0c 4883	ext.w	d3
00019a0e d443	add.w	d3,d2
00019a10 3629000c	move.w	y_pos(a1),d3
00019a14 9668000c	sub.w	y_pos(a0),d3
00019a18 5843	addq.w	#4,d3
00019a1a d642	add.w	d2,d3
00019a1c 6b0000a6	bmi.w	SolidObject_TestClearPush
00019a20 024307ff	andi.w	#$7FF,d3
00019a24 3802	move.w	d2,d4
00019a26 d844	add.w	d4,d4
00019a28 b644	cmp.w	d4,d3
00019a2a 64000098	bhs.w	SolidObject_TestClearPush
00019a2e 4a29002a	tst.b	obj_control(a1)
00019a32 6b000090	bmi.w	SolidObject_TestClearPush
00019a36 0c2900060024	cmpi.b	#6,routine(a1)
00019a3c 640000ac	bhs.w	SolidObject_NoCollision
00019a40 4a78fe08	tst.w	(Debug_placement_mode).w
00019a44 660000a4	bne.w	SolidObject_NoCollision
00019a48 3a00	move.w	d0,d5
00019a4a b240	cmp.w	d0,d1
00019a4c 6408	bhs.s	.isToTheLeft
00019a4e d241	add.w	d1,d1
00019a50 9041	sub.w	d1,d0
00019a52 3a00	move.w	d0,d5
00019a54 4445	neg.w	d5
00019a56 3203	move.w	d3,d1
00019a58 b443	cmp.w	d3,d2
00019a5a 6408	bhs.s	.isAbove
00019a5c 5943	subq.w	#4,d3
00019a5e 9644	sub.w	d4,d3
00019a60 3203	move.w	d3,d1
00019a62 4441	neg.w	d1
00019a64 ba41	cmp.w	d1,d5
00019a66 62000086	bhi.w	SolidObject_TopBottom
00019a6a 0c410004	cmpi.w	#4,d1
00019a6e 6346	bls.s	SolidObject_SideAir
00019a70 4a40	tst.w	d0
00019a72 671c	beq.s	SolidObject_AtEdge
00019a74 6b08	bmi.s	SolidObject_InsideRight
00019a76 4a690010	tst.w	x_vel(a1)
00019a7a 6b14	bmi.s	SolidObject_AtEdge
00019a7c 6006	bra.s	SolidObject_StopCharacter
00019a7e 4a690010	tst.w	x_vel(a1)
00019a82 6a0c	bpl.s	SolidObject_AtEdge
00019a84 337c00000014	move.w	#0,inertia(a1)
00019a8a 337c00000010	move.w	#0,x_vel(a1)
00019a90 91690008	sub.w	d0,x_pos(a1)
00019a94 082900010022	btst	#status.player.in_air,status(a1)
00019a9a 661a	bne.s	SolidObject_SideAir
00019a9c 2806	move.l	d6,d4
00019a9e 5404	addq.b	#pushing_bit_delta,d4
00019aa0 09e80022	bset	d4,status(a0)
00019aa4 08e900050022	bset	#status.player.pushing,status(a1)
00019aaa 3806	move.w	d6,d4
00019aac 0604000d	addi.b	#($10-p1_standing_bit+p1_touch_side_bit),d4
00019ab0 09c6	bset	d4,d6
00019ab2 7801	moveq	#1,d4
00019ab4 4e75	rts	
00019ab6 6124	bsr.s	Solid_NotPushing
00019ab8 3806	move.w	d6,d4
00019aba 0604000d	addi.b	#($10-p1_standing_bit+p1_touch_side_bit),d4
00019abe 09c6	bset	d4,d6
00019ac0 7801	moveq	#1,d4
00019ac2 4e75	rts	
00019ac4 2806	move.l	d6,d4
00019ac6 5404	addq.b	#pushing_bit_delta,d4
00019ac8 09280022	btst	d4,status(a0)
00019acc 671c	beq.s	SolidObject_NoCollision
00019ace 0c290002001c	cmpi.b	#AniIDSonAni_Roll,anim(a1)
00019ad4 6706	beq.s	Solid_NotPushing
00019ad6 337c0001001c	move.w	#(AniIDSonAni_Walk<<8)|(AniIDSonAni_Run<<0),anim(a1)
00019adc 2806	move.l	d6,d4
00019ade 5404	addq.b	#pushing_bit_delta,d4
00019ae0 09a80022	bclr	d4,status(a0)
00019ae4 08a900050022	bclr	#status.player.pushing,status(a1)
00019aea 7800	moveq	#0,d4
00019aec 4e75	rts	
00019aee 4a43	tst.w	d3
00019af0 6b14	bmi.s	SolidObject_InsideBottom
00019af2 0c430010	cmpi.w	#$10,d3
00019af6 655e	blo.s	SolidObject_Landed
00019af8 0c100085	cmpi.b	#ObjID_LauncherSpring,id(a0)
00019afc 66c6	bne.s	SolidObject_TestClearPush
00019afe 0c430014	cmpi.w	#$14,d3
00019b02 6552	blo.s	SolidObject_Landed
00019b04 60be	bra.s	SolidObject_TestClearPush
00019b06 4a690012	tst.w	y_vel(a1)
00019b0a 671c	beq.s	SolidObject_Squash
00019b0c 6a0e	bpl.s	loc_19B1C
00019b0e 4a43	tst.w	d3
00019b10 6a0a	bpl.s	loc_19B1C
00019b12 9769000c	sub.w	d3,y_pos(a1)
00019b16 337c00000012	move.w	#0,y_vel(a1)
00019b1c 3806	move.w	d6,d4
00019b1e 0604000f	addi.b	#($10-p1_standing_bit+p1_touch_bottom_bit),d4
00019b22 09c6	bset	d4,d6
00019b24 78fe	moveq	#-2,d4
00019b26 4e75	rts	
00019b28 082900010022	btst	#status.player.in_air,status(a1)
00019b2e 66ec	bne.s	loc_19B1C
00019b30 3800	move.w	d0,d4
00019b32 6a02	bpl.s	.skip
00019b34 4444	neg.w	d4
00019b36 0c440010	cmpi.w	#$10,d4
00019b3a 6500ff2e	blo.w	SolidObject_LeftRight
00019b3e 2f08	move.l	a0,-(sp)
00019b40 2049	movea.l	a1,a0
00019b42 4eb90003f926	jsr	(KillCharacter).l
00019b48 205f	movea.l	(sp)+,a0
00019b4a 3806	move.w	d6,d4
00019b4c 0604000f	addi.b	#($10-p1_standing_bit+p1_touch_bottom_bit),d4
00019b50 09c6	bset	d4,d6
00019b52 78fe	moveq	#-2,d4
00019b54 4e75	rts	
00019b56 5943	subq.w	#4,d3
00019b58 7200	moveq	#0,d1
00019b5a 12280019	move.b	width_pixels(a0),d1
00019b5e 3401	move.w	d1,d2
00019b60 d442	add.w	d2,d2
00019b62 d2690008	add.w	x_pos(a1),d1
00019b66 92680008	sub.w	x_pos(a0),d1
00019b6a 6b22	bmi.s	SolidObject_Miss
00019b6c b242	cmp.w	d2,d1
00019b6e 641e	bhs.s	SolidObject_Miss
00019b70 4a690012	tst.w	y_vel(a1)
00019b74 6b18	bmi.s	SolidObject_Miss
00019b76 9769000c	sub.w	d3,y_pos(a1)
00019b7a 5369000c	subq.w	#1,y_pos(a1)
00019b7e 61000294	bsr.w	RideObject_SetRide
00019b82 3806	move.w	d6,d4
00019b84 06040011	addi.b	#($10-p1_standing_bit+p1_touch_top_bit),d4
00019b88 09c6	bset	d4,d6
00019b8a 78ff	moveq	#-1,d4
00019b8c 4e75	rts	
00019b8e 7800	moveq	#0,d4
00019b90 4e75	rts	
00019b92 3028000c	move.w	y_pos(a0),d0
00019b96 9043	sub.w	d3,d0
00019b98 6008	bra.s	loc_19BA2
00019b9a 3028000c	move.w	y_pos(a0),d0
00019b9e 04400009	subi.w	#9,d0
00019ba2 4a29002a	tst.b	obj_control(a1)
00019ba6 6b22	bmi.s	return_19BCA
00019ba8 0c2900060024	cmpi.b	#6,routine(a1)
00019bae 641a	bhs.s	return_19BCA
00019bb0 4a78fe08	tst.w	(Debug_placement_mode).w
00019bb4 6614	bne.s	return_19BCA
00019bb6 7200	moveq	#0,d1
00019bb8 12290016	move.b	y_radius(a1),d1
00019bbc 9041	sub.w	d1,d0
00019bbe 3340000c	move.w	d0,y_pos(a1)
00019bc2 94680008	sub.w	x_pos(a0),d2
00019bc6 95690008	sub.w	d2,x_pos(a1)
00019bca 4e75	rts	
00019bcc 082900030022	btst	#status.player.on_object,status(a1)
00019bd2 6738	beq.s	return_19C0C
00019bd4 30290008	move.w	x_pos(a1),d0
00019bd8 90680008	sub.w	x_pos(a0),d0
00019bdc d041	add.w	d1,d0
00019bde e248	lsr.w	#1,d0
00019be0 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00019be6 6704	beq.s	loc_19BEC
00019be8 4640	not.w	d0
00019bea d041	add.w	d1,d0
00019bec 12320000	move.b	(a2,d0.w),d1
00019bf0 4881	ext.w	d1
00019bf2 3028000c	move.w	y_pos(a0),d0
00019bf6 9041	sub.w	d1,d0
00019bf8 7200	moveq	#0,d1
00019bfa 12290016	move.b	y_radius(a1),d1
00019bfe 9041	sub.w	d1,d0
00019c00 3340000c	move.w	d0,y_pos(a1)
00019c04 94680008	sub.w	x_pos(a0),d2
00019c08 95690008	sub.w	d2,x_pos(a1)
00019c0c 4e75	rts	
00019c0e 082900030022	btst	#status.player.on_object,status(a1)
00019c14 67f6	beq.s	return_19C0C
00019c16 30290008	move.w	x_pos(a1),d0
00019c1a 90680008	sub.w	x_pos(a0),d0
00019c1e d041	add.w	d1,d0
00019c20 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00019c26 6704	beq.s	loc_19C2C
00019c28 4640	not.w	d0
00019c2a d041	add.w	d1,d0
00019c2c 0240fffe	andi.w	#$FFFE,d0
00019c30 60ba	bra.s	loc_19BEC
00019c32 43f8b000	lea	(MainCharacter).w,a1
00019c36 7c03	moveq	#p1_standing_bit,d6
00019c38 48e77800	movem.l	d1-d4,-(sp)
00019c3c 610a	bsr.s	PlatformObject_SingleCharacter
00019c3e 4cdf001e	movem.l	(sp)+,d1-d4
00019c42 43f8b040	lea	(Sidekick).w,a1
00019c46 5206	addq.b	#1,d6
00019c48 0d280022	btst	d6,status(a0)
00019c4c 6700016c	beq.w	PlatformObject_cont
00019c50 3401	move.w	d1,d2
00019c52 d442	add.w	d2,d2
00019c54 082900010022	btst	#status.player.in_air,status(a1)
00019c5a 6610	bne.s	+
00019c5c 30290008	move.w	x_pos(a1),d0
00019c60 90680008	sub.w	x_pos(a0),d0
00019c64 d041	add.w	d1,d0
00019c66 6b04	bmi.s	+
00019c68 b042	cmp.w	d2,d0
00019c6a 6514	blo.s	loc_19C80
00019c6c 08a900030022	bclr	#status.player.on_object,status(a1)
00019c72 08e900010022	bset	#status.player.in_air,status(a1)
00019c78 0da80022	bclr	d6,status(a0)
00019c7c 7800	moveq	#0,d4
00019c7e 4e75	rts	
00019c80 3404	move.w	d4,d2
00019c82 6100ff0e	bsr.w	MvSonicOnPtfm
00019c86 7800	moveq	#0,d4
00019c88 4e75	rts	
00019c8a 43f8b000	lea	(MainCharacter).w,a1
00019c8e 7c03	moveq	#p1_standing_bit,d6
00019c90 48e77800	movem.l	d1-d4,-(sp)
00019c94 610a	bsr.s	SlopedPlatform_SingleCharacter
00019c96 4cdf001e	movem.l	(sp)+,d1-d4
00019c9a 43f8b040	lea	(Sidekick).w,a1
00019c9e 5206	addq.b	#1,d6
00019ca0 0d280022	btst	d6,status(a0)
00019ca4 670001ea	beq.w	SlopedPlatform_cont
00019ca8 3401	move.w	d1,d2
00019caa d442	add.w	d2,d2
00019cac 082900010022	btst	#status.player.in_air,status(a1)
00019cb2 6610	bne.s	loc_19CC4
00019cb4 30290008	move.w	x_pos(a1),d0
00019cb8 90680008	sub.w	x_pos(a0),d0
00019cbc d041	add.w	d1,d0
00019cbe 6b04	bmi.s	loc_19CC4
00019cc0 b042	cmp.w	d2,d0
00019cc2 6514	blo.s	loc_19CD8
00019cc4 08a900030022	bclr	#status.player.on_object,status(a1)
00019cca 08e900010022	bset	#status.player.in_air,status(a1)
00019cd0 0da80022	bclr	d6,status(a0)
00019cd4 7800	moveq	#0,d4
00019cd6 4e75	rts	
00019cd8 3404	move.w	d4,d2
00019cda 6100fef0	bsr.w	MvSonicOnSlope
00019cde 7800	moveq	#0,d4
00019ce0 4e75	rts	
00019ce2 43f8b000	lea	(MainCharacter).w,a1
00019ce6 7c03	moveq	#p1_standing_bit,d6
00019ce8 48e77800	movem.l	d1-d4,-(sp)
00019cec 610a	bsr.s	loc_19CF8
00019cee 4cdf001e	movem.l	(sp)+,d1-d4
00019cf2 43f8b040	lea	(Sidekick).w,a1
00019cf6 5206	addq.b	#1,d6
00019cf8 0d280022	btst	d6,status(a0)
00019cfc 670001ca	beq.w	PlatformObject2_cont
00019d00 3401	move.w	d1,d2
00019d02 d442	add.w	d2,d2
00019d04 082900010022	btst	#status.player.in_air,status(a1)
00019d0a 6610	bne.s	loc_19D1C
00019d0c 30290008	move.w	x_pos(a1),d0
00019d10 90680008	sub.w	x_pos(a0),d0
00019d14 d041	add.w	d1,d0
00019d16 6b04	bmi.s	loc_19D1C
00019d18 b042	cmp.w	d2,d0
00019d1a 6514	blo.s	loc_19D30
00019d1c 08a900030022	bclr	#status.player.on_object,status(a1)
00019d22 08e900010022	bset	#status.player.in_air,status(a1)
00019d28 0da80022	bclr	d6,status(a0)
00019d2c 7800	moveq	#0,d4
00019d2e 4e75	rts	
00019d30 3404	move.w	d4,d2
00019d32 6100fe5e	bsr.w	MvSonicOnPtfm
00019d36 7800	moveq	#0,d4
00019d38 4e75	rts	
00019d3a 43f8b000	lea	(MainCharacter).w,a1
00019d3e 7c03	moveq	#p1_standing_bit,d6
00019d40 48e77800	movem.l	d1-d4,-(sp)
00019d44 610a	bsr.s	loc_19D50
00019d46 4cdf001e	movem.l	(sp)+,d1-d4
00019d4a 43f8b040	lea	(Sidekick).w,a1
00019d4e 5206	addq.b	#1,d6
00019d50 0d280022	btst	d6,status(a0)
00019d54 660c	bne.s	loc_19D62
00019d56 082900030022	btst	#status.player.on_object,status(a1)
00019d5c 6630	bne.s	loc_19D8E
00019d5e 6000005a	bra.w	PlatformObject_cont
00019d62 3401	move.w	d1,d2
00019d64 d442	add.w	d2,d2
00019d66 082900010022	btst	#status.player.in_air,status(a1)
00019d6c 6610	bne.s	loc_19D7E
00019d6e 30290008	move.w	x_pos(a1),d0
00019d72 90680008	sub.w	x_pos(a0),d0
00019d76 d041	add.w	d1,d0
00019d78 6b04	bmi.s	loc_19D7E
00019d7a b042	cmp.w	d2,d0
00019d7c 6514	blo.s	loc_19D92
00019d7e 08a900030022	bclr	#status.player.on_object,status(a1)
00019d84 08e900010022	bset	#status.player.in_air,status(a1)
00019d8a 0da80022	bclr	d6,status(a0)
00019d8e 7800	moveq	#0,d4
00019d90 4e75	rts	
00019d92 3404	move.w	d4,d2
00019d94 6100fdfc	bsr.w	MvSonicOnPtfm
00019d98 7800	moveq	#0,d4
00019d9a 4e75	rts	
00019d9c 4a690012	tst.w	y_vel(a1)
00019da0 6b0000ec	bmi.w	return_19E8E
00019da4 30290008	move.w	x_pos(a1),d0
00019da8 90680008	sub.w	x_pos(a0),d0
00019dac d041	add.w	d1,d0
00019dae 6b0000de	bmi.w	return_19E8E
00019db2 b042	cmp.w	d2,d0
00019db4 640000d8	bhs.w	return_19E8E
00019db8 601e	bra.s	loc_19DD8
00019dba 4a690012	tst.w	y_vel(a1)
00019dbe 6b0000ce	bmi.w	return_19E8E
00019dc2 30290008	move.w	x_pos(a1),d0
00019dc6 90680008	sub.w	x_pos(a0),d0
00019dca d041	add.w	d1,d0
00019dcc 6b0000c0	bmi.w	return_19E8E
00019dd0 d241	add.w	d1,d1
00019dd2 b041	cmp.w	d1,d0
00019dd4 640000b8	bhs.w	return_19E8E
00019dd8 3028000c	move.w	y_pos(a0),d0
00019ddc 9043	sub.w	d3,d0
00019dde 3429000c	move.w	y_pos(a1),d2
00019de2 12290016	move.b	y_radius(a1),d1
00019de6 4881	ext.w	d1
00019de8 d242	add.w	d2,d1
00019dea 5841	addq.w	#4,d1
00019dec 9041	sub.w	d1,d0
00019dee 6200009e	bhi.w	return_19E8E
00019df2 0c40fff0	cmpi.w	#-$10,d0
00019df6 65000096	blo.w	return_19E8E
00019dfa 4a29002a	tst.b	obj_control(a1)
00019dfe 6b00008e	bmi.w	return_19E8E
00019e02 0c2900060024	cmpi.b	#6,routine(a1)
00019e08 64000084	bhs.w	return_19E8E
00019e0c d440	add.w	d0,d2
00019e0e 5642	addq.w	#3,d2
00019e10 3342000c	move.w	d2,y_pos(a1)
00019e14 082900030022	btst	#status.player.on_object,status(a1)
00019e1a 6714	beq.s	loc_19E30
00019e1c 7000	moveq	#0,d0
00019e1e 1029003d	move.b	interact(a1),d0
00019e22 ed48	lsl.w	#object_size_bits,d0
00019e24 0680ffffb000	addi.l	#Object_RAM,d0
00019e2a 2640	movea.l	d0,a3
00019e2c 0dab0022	bclr	d6,status(a3)
00019e30 3008	move.w	a0,d0
00019e32 0440b000	subi.w	#Object_RAM,d0
00019e36 ec48	lsr.w	#object_size_bits,d0
00019e38 0240007f	andi.w	#$7F,d0
00019e3c 1340003d	move.b	d0,interact(a1)
00019e40 137c00000026	move.b	#0,angle(a1)
00019e46 337c00000012	move.w	#0,y_vel(a1)
00019e4c 336900100014	move.w	x_vel(a1),inertia(a1)
00019e52 082900010022	btst	#status.player.in_air,status(a1)
00019e58 6724	beq.s	loc_19E7E
00019e5a 2f08	move.l	a0,-(sp)
00019e5c 2049	movea.l	a1,a0
00019e5e 3208	move.w	a0,d1
00019e60 0441b000	subi.w	#Object_RAM,d1
00019e64 6610	bne.s	loc_19E76
00019e66 0c780002ff70	cmpi.w	#2,(Player_mode).w
00019e6c 6708	beq.s	loc_19E76
00019e6e 4eb90001b0ac	jsr	(Sonic_ResetOnFloor_Part2).l
00019e74 6006	bra.s	loc_19E7C
00019e76 4eb90001cb5c	jsr	(Tails_ResetOnFloor_Part2).l
00019e7c 205f	movea.l	(sp)+,a0
00019e7e 08e900030022	bset	#status.player.on_object,status(a1)
00019e84 08a900010022	bclr	#status.player.in_air,status(a1)
00019e8a 0de80022	bset	d6,status(a0)
00019e8e 4e75	rts	
00019e90 4a690012	tst.w	y_vel(a1)
00019e94 6b00fff8	bmi.w	return_19E8E
00019e98 30290008	move.w	x_pos(a1),d0
00019e9c 90680008	sub.w	x_pos(a0),d0
00019ea0 d041	add.w	d1,d0
00019ea2 6bea	bmi.s	return_19E8E
00019ea4 d241	add.w	d1,d1
00019ea6 b041	cmp.w	d1,d0
00019ea8 64e4	bhs.s	return_19E8E
00019eaa 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00019eb0 6704	beq.s	loc_19EB6
00019eb2 4640	not.w	d0
00019eb4 d041	add.w	d1,d0
00019eb6 e248	lsr.w	#1,d0
00019eb8 16320000	move.b	(a2,d0.w),d3
00019ebc 4883	ext.w	d3
00019ebe 3028000c	move.w	y_pos(a0),d0
00019ec2 9043	sub.w	d3,d0
00019ec4 6000ff18	bra.w	PlatformObject_ChkYRange
00019ec8 4a690012	tst.w	y_vel(a1)
00019ecc 6b00ffc0	bmi.w	return_19E8E
00019ed0 30290008	move.w	x_pos(a1),d0
00019ed4 90680008	sub.w	x_pos(a0),d0
00019ed8 d041	add.w	d1,d0
00019eda 6b00ffb2	bmi.w	return_19E8E
00019ede d241	add.w	d1,d1
00019ee0 b041	cmp.w	d1,d0
00019ee2 6400ffaa	bhs.w	return_19E8E
00019ee6 3028000c	move.w	y_pos(a0),d0
00019eea 9043	sub.w	d3,d0
00019eec 6000fef0	bra.w	PlatformObject_ChkYRange
00019ef0 43f8b000	lea	(MainCharacter).w,a1
00019ef4 082800030022	btst	#p1_standing_bit,status(a0)
00019efa 6722	beq.s	loc_19F1E
00019efc 4eb90001eda8	jsr	(ChkFloorEdge2).l
00019f02 4a41	tst.w	d1
00019f04 6702	beq.s	loc_19F08
00019f06 6a16	bpl.s	loc_19F1E
00019f08 43f8b000	lea	(MainCharacter).w,a1
00019f0c 08a900030022	bclr	#status.player.on_object,status(a1)
00019f12 08e900010022	bset	#status.player.in_air,status(a1)
00019f18 08a800030022	bclr	#p1_standing_bit,status(a0)
00019f1e 43f8b040	lea	(Sidekick).w,a1
00019f22 082800040022	btst	#p2_standing_bit,status(a0)
00019f28 6722	beq.s	loc_19F4C
00019f2a 4eb90001eda8	jsr	(ChkFloorEdge2).l
00019f30 4a41	tst.w	d1
00019f32 6702	beq.s	loc_19F36
00019f34 6a16	bpl.s	loc_19F4C
00019f36 43f8b040	lea	(Sidekick).w,a1
00019f3a 08a900030022	bclr	#status.player.on_object,status(a1)
00019f40 08e900010022	bset	#status.player.in_air,status(a1)
00019f46 08a800040022	bclr	#p2_standing_bit,status(a0)
00019f4c 7800	moveq	#0,d4
00019f4e 4e75	rts	
00019f50 4a78fe08	tst.w	(Debug_placement_mode).w
00019f54 6706	beq.s	Obj01_Normal
00019f56 4ef900041a78	jmp	(DebugMode).l
00019f5c 7000	moveq	#0,d0
00019f5e 10280024	move.b	routine(a0),d0
00019f62 323b0006	move.w	Obj01_Index(pc,d0.w),d1
00019f66 4efb1002	jmp	Obj01_Index(pc,d1.w)
00019f76 54280024	addq.b	#2,routine(a0)
00019f7a 117c00130016	move.b	#$13,y_radius(a0)
00019f80 117c00090017	move.b	#9,x_radius(a0)
00019f86 217c0006fbe00004	move.l	#MapUnc_Sonic,mappings(a0)
00019f8e 117c00020018	move.b	#2,priority(a0)
00019f94 117c00180019	move.b	#$18,width_pixels(a0)
00019f9a 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00019fa0 31fc0600f760	move.w	#$600,(Sonic_top_speed).w
00019fa6 31fc000cf762	move.w	#$C,(Sonic_acceleration).w
00019fac 31fc0080f764	move.w	#$80,(Sonic_deceleration).w
00019fb2 4a38fe30	tst.b	(Last_star_pole_hit).w
00019fb6 662e	bne.s	Obj01_Init_Continued
00019fb8 317c07800002	move.w	#make_art_tile(ArtTile_ArtUnc_Sonic,0,0),art_tile(a0)
00019fbe 6100cdae	bsr.w	Adjust2PArtPointer
00019fc2 117c000c003e	move.b	#$C,top_solid_bit(a0)
00019fc8 117c000d003f	move.b	#$D,lrb_solid_bit(a0)
00019fce 31e80008fe32	move.w	x_pos(a0),(Saved_x_pos).w
00019fd4 31e8000cfe34	move.w	y_pos(a0),(Saved_y_pos).w
00019fda 31e80002fe3c	move.w	art_tile(a0),(Saved_art_tile).w
00019fe0 31e8003efe3e	move.w	top_solid_bit(a0),(Saved_Solid_bits).w
00019fe6 117c0000002c	move.b	#0,flips_remaining(a0)
00019fec 117c0004002d	move.b	#4,flip_speed(a0)
00019ff2 11fc0000fe19	move.b	#0,(Super_Sonic_flag).w
00019ff8 117c001e0028	move.b	#30,air_left(a0)
00019ffe 046800200008	subi.w	#$20,x_pos(a0)
0001a00a 31fc0000eed2	move.w	#0,(Sonic_Pos_Record_Index).w
0001a010 343c003f	move.w	#$3F,d2
0001a018 5949	subq.w	#4,a1
0001a01a 22bc00000000	move.l	#0,(a1)
0001a020 51cafff2	dbf	d2,-
0001a024 066800200008	addi.w	#$20,x_pos(a0)
0001a030 4a78fffa	tst.w	(Debug_mode_flag).w
0001a034 6714	beq.s	+
0001a036 08380004f605	btst	#button_B,(Ctrl_1_Press).w
0001a03c 670c	beq.s	+
0001a03e 31fc0001fe08	move.w	#1,(Debug_placement_mode).w
0001a044 4238f7cc	clr.b	(Control_Locked).w
0001a048 4e75	rts	
0001a04e 6606	bne.s	+
0001a050 31f8f604f602	move.w	(Ctrl_1).w,(Ctrl_1_Logical).w
0001a056 08280000002a	btst	#0,obj_control(a0)
0001a05c 6612	bne.s	+
0001a05e 7000	moveq	#0,d0
0001a060 10280022	move.b	status(a0),d0
0001a064 02400006	andi.w	#1<<status.player.in_air|1<<status.player.rolling,d0
0001a068 323b0054	move.w	Obj01_Modes(pc,d0.w),d1
0001a06c 4ebb1050	jsr	Obj01_Modes(pc,d1.w)
0001a070 0c78ff00eecc	cmpi.w	#-$100,(Camera_Min_Y_pos).w
0001a076 6606	bne.s	+
0001a078 026807ff000c	andi.w	#$7FF,y_pos(a0)
0001a07e 6146	bsr.s	Sonic_Display
0001a080 61000b24	bsr.w	Sonic_Super
0001a084 610000d6	bsr.w	Sonic_RecordPos
0001a088 610000fc	bsr.w	Sonic_Water
0001a08c 1178f7680036	move.b	(Primary_Angle).w,next_tilt(a0)
0001a092 1178f76a0037	move.b	(Secondary_Angle).w,tilt(a0)
0001a098 4a38f7c7	tst.b	(WindTunnel_flag).w
0001a09c 670c	beq.s	+
0001a09e 4a28001c	tst.b	anim(a0)
0001a0a2 6606	bne.s	+
0001a0a4 1168001d001c	move.b	prev_anim(a0),anim(a0)
0001a0aa 610012a4	bsr.w	Sonic_Animate
0001a0ae 4a28002a	tst.b	obj_control(a0)
0001a0b2 6b06	bmi.s	+
0001a0b4 4eb90003f554	jsr	(TouchResponse).l
0001a0ba 6000178c	bra.w	LoadSonicDynPLC
0001a0c6 30280030	move.w	invulnerable_time(a0),d0
0001a0ca 6708	beq.s	Obj01_Display
0001a0cc 53680030	subq.w	#1,invulnerable_time(a0)
0001a0d0 e648	lsr.w	#3,d0
0001a0d2 6406	bcc.s	Obj01_ChkInvin
0001a0d4 4eb9000164f4	jsr	(DisplaySprite).l
0001a0da 08280001002b	btst	#status_secondary.invincible,status_secondary(a0)
0001a0e0 672a	beq.s	Obj01_ChkShoes
0001a0e2 4a680032	tst.w	invincibility_time(a0)
0001a0e6 6724	beq.s	Obj01_ChkShoes
0001a0e8 53680032	subq.w	#1,invincibility_time(a0)
0001a0ec 661e	bne.s	Obj01_ChkShoes
0001a0ee 4a38f7aa	tst.b	(Current_Boss_ID).w
0001a0f2 6612	bne.s	Obj01_RmvInvin
0001a0f4 0c28000c0028	cmpi.b	#12,air_left(a0)
0001a0fa 650a	blo.s	Obj01_RmvInvin
0001a0fc 3038ff90	move.w	(Level_Music).w,d0
0001a100 4eb90000135e	jsr	(PlayMusic).l
0001a106 08a80001002b	bclr	#status_secondary.invincible,status_secondary(a0)
0001a10c 08280002002b	btst	#status_secondary.speed_shoes,status_secondary(a0)
0001a112 6746	beq.s	Obj01_ExitChk
0001a114 4a680034	tst.w	speedshoes_time(a0)
0001a118 6740	beq.s	Obj01_ExitChk
0001a11a 53680034	subq.w	#1,speedshoes_time(a0)
0001a11e 663a	bne.s	Obj01_ExitChk
0001a120 31fc0600f760	move.w	#$600,(Sonic_top_speed).w
0001a126 31fc000cf762	move.w	#$C,(Sonic_acceleration).w
0001a12c 31fc0080f764	move.w	#$80,(Sonic_deceleration).w
0001a132 4a38fe19	tst.b	(Super_Sonic_flag).w
0001a136 6712	beq.s	Obj01_RmvSpeed
0001a138 31fc0a00f760	move.w	#$A00,(Sonic_top_speed).w
0001a13e 31fc0030f762	move.w	#$30,(Sonic_acceleration).w
0001a144 31fc0100f764	move.w	#$100,(Sonic_deceleration).w
0001a14a 08a80002002b	bclr	#status_secondary.speed_shoes,status_secondary(a0)
0001a150 303c00fc	move.w	#MusID_SlowDown,d0
0001a154 4ef90000135e	jmp	(PlayMusic).l
0001a15a 4e75	rts	
0001a15c 3038eed2	move.w	(Sonic_Pos_Record_Index).w,d0
0001a160 43f8e500	lea	(Sonic_Pos_Record_Buf).w,a1
0001a164 43f10000	lea	(a1,d0.w),a1
0001a168 32e80008	move.w	x_pos(a0),(a1)+
0001a16c 32e8000c	move.w	y_pos(a0),(a1)+
0001a170 5838eed3	addq.b	#4,(Sonic_Pos_Record_Index+1).w
0001a174 43f8e400	lea	(Sonic_Stat_Record_Buf).w,a1
0001a178 43f10000	lea	(a1,d0.w),a1
0001a17c 32f8f602	move.w	(Ctrl_1_Logical).w,(a1)+
0001a180 32e80022	move.w	status(a0),(a1)+
0001a184 4e75	rts	
0001a186 4a38f730	tst.b	(Water_flag).w
0001a18a 6602	bne.s	Obj01_InWater
0001a18c 4e75	rts	
0001a18e 3038f646	move.w	(Water_Level_1).w,d0
0001a192 b068000c	cmp.w	y_pos(a0),d0
0001a196 6c66	bge.s	Obj01_OutWater
0001a198 08e800060022	bset	#status.player.underwater,status(a0)
0001a19e 66ec	bne.s	return_1A18C
0001a1a0 2248	movea.l	a0,a1
0001a1a2 6100367a	bsr.w	ResumeMusic
0001a1a6 11fc000ad080	move.b	#ObjID_SmallBubbles,(Sonic_BreathingBubbles+id).w
0001a1ac 11fc0081d0a8	move.b	#$81,(Sonic_BreathingBubbles+subtype).w
0001a1b2 21c8d0bc	move.l	a0,(Sonic_BreathingBubbles+obj0a_character).w
0001a1b6 31fc0300f760	move.w	#$300,(Sonic_top_speed).w
0001a1bc 31fc0006f762	move.w	#6,(Sonic_acceleration).w
0001a1c2 31fc0040f764	move.w	#$40,(Sonic_deceleration).w
0001a1c8 4a38fe19	tst.b	(Super_Sonic_flag).w
0001a1cc 6712	beq.s	+
0001a1ce 31fc0500f760	move.w	#$500,(Sonic_top_speed).w
0001a1d4 31fc0018f762	move.w	#$18,(Sonic_acceleration).w
0001a1da 31fc0080f764	move.w	#$80,(Sonic_deceleration).w
0001a1e0 e0e80010	asr.w	x_vel(a0)
0001a1e4 e0e80012	asr.w	y_vel(a0)
0001a1e8 e0e80012	asr.w	y_vel(a0)
0001a1ec 679e	beq.s	return_1A18C
0001a1ee 31fc0100d11c	move.w	#(1<<8)|(0<<0),(Sonic_Dust+anim).w
0001a1f4 303c00aa	move.w	#SndID_Splash,d0
0001a1f8 4ef900001370	jmp	(PlaySound).l
0001a1fe 08a800060022	bclr	#status.player.underwater,status(a0)
0001a204 6786	beq.s	return_1A18C
0001a206 2248	movea.l	a0,a1
0001a208 61003614	bsr.w	ResumeMusic
0001a20c 31fc0600f760	move.w	#$600,(Sonic_top_speed).w
0001a212 31fc000cf762	move.w	#$C,(Sonic_acceleration).w
0001a218 31fc0080f764	move.w	#$80,(Sonic_deceleration).w
0001a21e 4a38fe19	tst.b	(Super_Sonic_flag).w
0001a222 6712	beq.s	+
0001a224 31fc0a00f760	move.w	#$A00,(Sonic_top_speed).w
0001a22a 31fc0030f762	move.w	#$30,(Sonic_acceleration).w
0001a230 31fc0100f764	move.w	#$100,(Sonic_deceleration).w
0001a236 0c2800040024	cmpi.b	#4,routine(a0)
0001a23c 6704	beq.s	+
0001a23e e1e80012	asl	y_vel(a0)
0001a242 4a680012	tst.w	y_vel(a0)
0001a246 6700ff44	beq.w	return_1A18C
0001a24a 31fc0100d11c	move.w	#(1<<8)|(0<<0),(Sonic_Dust+anim).w
0001a250 2248	movea.l	a0,a1
0001a252 610035ca	bsr.w	ResumeMusic
0001a256 0c68f0000012	cmpi.w	#-$1000,y_vel(a0)
0001a25c 6e06	bgt.s	+
0001a25e 317cf0000012	move.w	#-$1000,y_vel(a0)
0001a264 303c00aa	move.w	#SndID_Splash,d0
0001a268 4ef900001370	jmp	(PlaySound).l
0001a26e 1038f603	move.b	(Ctrl_1_Press_Logical).w,d0
0001a272 02000070	andi.b	#button_B_mask|button_C_mask|button_A_mask,d0
0001a276 6640	bne.s	Obj01_MdNormal
0001a278 0c28000a001c	cmpi.b	#AniIDSonAni_Blink,anim(a0)
0001a27e 675e	beq.s	Obj01_MdNormal_Skip
0001a280 0c28000b001c	cmpi.b	#AniIDSonAni_GetUp,anim(a0)
0001a286 6756	beq.s	Obj01_MdNormal_Skip
0001a288 0c280005001c	cmpi.b	#AniIDSonAni_Wait,anim(a0)
0001a28e 6628	bne.s	Obj01_MdNormal
0001a290 0c28001e001b	cmpi.b	#$1E,anim_frame(a0)
0001a296 6520	blo.s	Obj01_MdNormal
0001a298 1038f602	move.b	(Ctrl_1_Held_Logical).w,d0
0001a29c 0200007f	andi.b	#button_up_mask|button_down_mask|button_left_mask|button_right_mask|button_B_mask|button_C_mask|button_A_mask,d0
0001a2a0 673c	beq.s	Obj01_MdNormal_Skip
0001a2a2 117c000a001c	move.b	#AniIDSonAni_Blink,anim(a0)
0001a2a8 0c2800ac001b	cmpi.b	#$AC,anim_frame(a0)
0001a2ae 652e	blo.s	Obj01_MdNormal_Skip
0001a2b0 117c000b001c	move.b	#AniIDSonAni_GetUp,anim(a0)
0001a2b6 6026	bra.s	Obj01_MdNormal_Skip
0001a2b8 61000984	bsr.w	Sonic_CheckSpindash
0001a2bc 6100077a	bsr.w	Sonic_Jump
0001a2c0 61000ad4	bsr.w	Sonic_SlopeResist
0001a2c4 61000094	bsr.w	Sonic_Move
0001a2c8 61000708	bsr.w	Sonic_Roll
0001a2cc 610006a6	bsr.w	Sonic_LevelBound
0001a2d0 4eb9000163ac	jsr	(ObjectMove).l
0001a2d6 61003f5c	bsr.w	AnglePos
0001a2da 61000b2c	bsr.w	Sonic_SlopeRepel
0001a2de 4e75	rts	
0001a2e0 6100080e	bsr.w	Sonic_JumpHeight
0001a2e4 61000602	bsr.w	Sonic_ChgJumpDir
0001a2e8 6100068a	bsr.w	Sonic_LevelBound
0001a2ec 4eb900016380	jsr	(ObjectMoveAndFall).l
0001a2f2 082800060022	btst	#status.player.underwater,status(a0)
0001a2f8 6706	beq.s	+
0001a2fa 046800280012	subi.w	#$28,y_vel(a0)
0001a300 61000b48	bsr.w	Sonic_JumpAngle
0001a304 61000ba4	bsr.w	Sonic_DoLevelCollision
0001a308 4e75	rts	
0001a30a 4a280039	tst.b	pinball_mode(a0)
0001a30e 6604	bne.s	+
0001a310 61000726	bsr.w	Sonic_Jump
0001a314 61000ab6	bsr.w	Sonic_RollRepel
0001a318 610004ac	bsr.w	Sonic_RollSpeed
0001a31c 61000656	bsr.w	Sonic_LevelBound
0001a320 4eb9000163ac	jsr	(ObjectMove).l
0001a326 61003f0c	bsr.w	AnglePos
0001a32a 61000adc	bsr.w	Sonic_SlopeRepel
0001a32e 4e75	rts	
0001a330 610007be	bsr.w	Sonic_JumpHeight
0001a334 610005b2	bsr.w	Sonic_ChgJumpDir
0001a338 6100063a	bsr.w	Sonic_LevelBound
0001a33c 4eb900016380	jsr	(ObjectMoveAndFall).l
0001a342 082800060022	btst	#status.player.underwater,status(a0)
0001a348 6706	beq.s	+
0001a34a 046800280012	subi.w	#$28,y_vel(a0)
0001a350 61000af8	bsr.w	Sonic_JumpAngle
0001a354 61000b54	bsr.w	Sonic_DoLevelCollision
0001a358 4e75	rts	
0001a35a 3c38f760	move.w	(Sonic_top_speed).w,d6
0001a35e 3a38f762	move.w	(Sonic_acceleration).w,d5
0001a362 3838f764	move.w	(Sonic_deceleration).w,d4
0001a366 4a28002b	tst.b	status_secondary(a0)
0001a36a 6b0002c4	bmi.w	Obj01_Traction
0001a36e 4a68002e	tst.w	move_lock(a0)
0001a372 6600026c	bne.w	Obj01_ResetScr
0001a376 08380002f602	btst	#button_left,(Ctrl_1_Held_Logical).w
0001a37c 6704	beq.s	Obj01_NotLeft
0001a37e 61000340	bsr.w	Sonic_MoveLeft
0001a382 08380003f602	btst	#button_right,(Ctrl_1_Held_Logical).w
0001a388 6704	beq.s	Obj01_NotRight
0001a38a 610003ba	bsr.w	Sonic_MoveRight
0001a38e 10280026	move.b	angle(a0),d0
0001a392 06000020	addi.b	#$20,d0
0001a396 020000c0	andi.b	#$C0,d0
0001a39a 66000244	bne.w	Obj01_ResetScr
0001a39e 4a680014	tst.w	inertia(a0)
0001a3a2 6600023c	bne.w	Obj01_ResetScr
0001a3a6 08a800050022	bclr	#status.player.pushing,status(a0)
0001a3ac 117c0005001c	move.b	#AniIDSonAni_Wait,anim(a0)
0001a3b2 082800030022	btst	#status.player.on_object,status(a0)
0001a3b8 670000d2	beq.w	Sonic_Balance
0001a3bc 7000	moveq	#0,d0
0001a3be 1028003d	move.b	interact(a0),d0
0001a3c2 ed48	lsl.w	#object_size_bits,d0
0001a3c4 43f8b000	lea	(Object_RAM).w,a1
0001a3c8 43f10000	lea	(a1,d0.w),a1
0001a3cc 4a290022	tst.b	status(a1)
0001a3d0 6b0001b2	bmi.w	Sonic_Lookup
0001a3d4 7200	moveq	#0,d1
0001a3d6 12290019	move.b	width_pixels(a1),d1
0001a3da 3401	move.w	d1,d2
0001a3dc d442	add.w	d2,d2
0001a3de 5542	subq.w	#2,d2
0001a3e0 d2680008	add.w	x_pos(a0),d1
0001a3e4 92690008	sub.w	x_pos(a1),d1
0001a3e8 4a38fe19	tst.b	(Super_Sonic_flag).w
0001a3ec 66000010	bne.w	SuperSonic_Balance
0001a3f0 0c410002	cmpi.w	#2,d1
0001a3f4 6d58	blt.s	Sonic_BalanceOnObjLeft
0001a3f6 b242	cmp.w	d2,d1
0001a3f8 6c16	bge.s	Sonic_BalanceOnObjRight
0001a3fa 60000188	bra.w	Sonic_Lookup
0001a3fe 0c410002	cmpi.w	#2,d1
0001a402 6d000172	blt.w	SuperSonic_BalanceOnObjLeft
0001a406 b242	cmp.w	d2,d1
0001a408 6c00015c	bge.w	SuperSonic_BalanceOnObjRight
0001a40c 60000176	bra.w	Sonic_Lookup
0001a410 082800000022	btst	#status.player.x_flip,status(a0)
0001a416 6618	bne.s	+
0001a418 117c0006001c	move.b	#AniIDSonAni_Balance,anim(a0)
0001a41e 5c42	addq.w	#6,d2
0001a420 b242	cmp.w	d2,d1
0001a422 6d0001bc	blt.w	Obj01_ResetScr
0001a426 117c000c001c	move.b	#AniIDSonAni_Balance2,anim(a0)
0001a42c 600001b2	bra.w	Obj01_ResetScr
0001a436 5c42	addq.w	#6,d2
0001a438 b242	cmp.w	d2,d1
0001a43a 6d0001a4	blt.w	Obj01_ResetScr
0001a43e 117c001e001c	move.b	#AniIDSonAni_Balance4,anim(a0)
0001a444 08a800000022	bclr	#status.player.x_flip,status(a0)
0001a44a 60000194	bra.w	Obj01_ResetScr
0001a44e 082800000022	btst	#status.player.x_flip,status(a0)
0001a454 6718	beq.s	+
0001a456 117c0006001c	move.b	#AniIDSonAni_Balance,anim(a0)
0001a45c 0c41fffc	cmpi.w	#-4,d1
0001a460 6c00017e	bge.w	Obj01_ResetScr
0001a464 117c000c001c	move.b	#AniIDSonAni_Balance2,anim(a0)
0001a46a 60000174	bra.w	Obj01_ResetScr
0001a474 0c41fffc	cmpi.w	#-4,d1
0001a478 6c000166	bge.w	Obj01_ResetScr
0001a47c 117c001e001c	move.b	#AniIDSonAni_Balance4,anim(a0)
0001a482 08e800000022	bset	#status.player.x_flip,status(a0)
0001a488 60000156	bra.w	Obj01_ResetScr
0001a48c 4eb90001ed56	jsr	(ChkFloorEdge).l
0001a492 0c41000c	cmpi.w	#$C,d1
0001a496 6d0000ec	blt.w	Sonic_Lookup
0001a49a 4a38fe19	tst.b	(Super_Sonic_flag).w
0001a49e 660000be	bne.w	SuperSonic_Balance2
0001a4a2 0c2800030036	cmpi.b	#3,next_tilt(a0)
0001a4a8 6656	bne.s	Sonic_BalanceLeft
0001a4aa 082800000022	btst	#status.player.x_flip,status(a0)
0001a4b0 6624	bne.s	+
0001a4b2 117c0006001c	move.b	#AniIDSonAni_Balance,anim(a0)
0001a4b8 36280008	move.w	x_pos(a0),d3
0001a4bc 5d43	subq.w	#6,d3
0001a4be 4eb90001ed5a	jsr	(ChkFloorEdge_Part2).l
0001a4c4 0c41000c	cmpi.w	#$C,d1
0001a4c8 6d000116	blt.w	Obj01_ResetScr
0001a4cc 117c000c001c	move.b	#AniIDSonAni_Balance2,anim(a0)
0001a4d2 6000010c	bra.w	Obj01_ResetScr
0001a4dc 36280008	move.w	x_pos(a0),d3
0001a4e0 5d43	subq.w	#6,d3
0001a4e2 4eb90001ed5a	jsr	(ChkFloorEdge_Part2).l
0001a4e8 0c41000c	cmpi.w	#$C,d1
0001a4ec 6d0000f2	blt.w	Obj01_ResetScr
0001a4f0 117c001e001c	move.b	#AniIDSonAni_Balance4,anim(a0)
0001a4f6 08a800000022	bclr	#status.player.x_flip,status(a0)
0001a4fc 600000e2	bra.w	Obj01_ResetScr
0001a500 0c2800030037	cmpi.b	#3,tilt(a0)
0001a506 667c	bne.s	Sonic_Lookup
0001a508 082800000022	btst	#status.player.x_flip,status(a0)
0001a50e 6724	beq.s	+
0001a510 117c0006001c	move.b	#AniIDSonAni_Balance,anim(a0)
0001a516 36280008	move.w	x_pos(a0),d3
0001a51a 5c43	addq.w	#6,d3
0001a51c 4eb90001ed5a	jsr	(ChkFloorEdge_Part2).l
0001a522 0c41000c	cmpi.w	#$C,d1
0001a526 6d0000b8	blt.w	Obj01_ResetScr
0001a52a 117c000c001c	move.b	#AniIDSonAni_Balance2,anim(a0)
0001a530 600000ae	bra.w	Obj01_ResetScr
0001a53a 36280008	move.w	x_pos(a0),d3
0001a53e 5c43	addq.w	#6,d3
0001a540 4eb90001ed5a	jsr	(ChkFloorEdge_Part2).l
0001a546 0c41000c	cmpi.w	#$C,d1
0001a54a 6d000094	blt.w	Obj01_ResetScr
0001a54e 117c001e001c	move.b	#AniIDSonAni_Balance4,anim(a0)
0001a554 08e800000022	bset	#status.player.x_flip,status(a0)
0001a55a 60000084	bra.w	Obj01_ResetScr
0001a55e 0c2800030036	cmpi.b	#3,next_tilt(a0)
0001a564 6608	bne.s	loc_1A56E
0001a566 08a800000022	bclr	#status.player.x_flip,status(a0)
0001a56c 600e	bra.s	loc_1A57C
0001a56e 0c2800030037	cmpi.b	#3,tilt(a0)
0001a574 660e	bne.s	Sonic_Lookup
0001a576 08e800000022	bset	#status.player.x_flip,status(a0)
0001a57c 117c0006001c	move.b	#AniIDSonAni_Balance,anim(a0)
0001a582 605c	bra.s	Obj01_ResetScr
0001a584 08380000f602	btst	#button_up,(Ctrl_1_Held_Logical).w
0001a58a 6726	beq.s	Sonic_Duck
0001a58c 117c0007001c	move.b	#AniIDSonAni_LookUp,anim(a0)
0001a592 5278f66c	addq.w	#1,(Sonic_Look_delay_counter).w
0001a596 0c780078f66c	cmpi.w	#$78,(Sonic_Look_delay_counter).w
0001a59c 6548	blo.s	Obj01_ResetScr_Part2
0001a59e 31fc0078f66c	move.w	#$78,(Sonic_Look_delay_counter).w
0001a5a4 0c7800c8eed8	cmpi.w	#$C8,(Camera_Y_pos_bias).w
0001a5aa 674c	beq.s	Obj01_UpdateSpeedOnGround
0001a5ac 5478eed8	addq.w	#2,(Camera_Y_pos_bias).w
0001a5b0 6046	bra.s	Obj01_UpdateSpeedOnGround
0001a5b2 08380001f602	btst	#button_down,(Ctrl_1_Held_Logical).w
0001a5b8 6726	beq.s	Obj01_ResetScr
0001a5ba 117c0008001c	move.b	#AniIDSonAni_Duck,anim(a0)
0001a5c0 5278f66c	addq.w	#1,(Sonic_Look_delay_counter).w
0001a5c4 0c780078f66c	cmpi.w	#$78,(Sonic_Look_delay_counter).w
0001a5ca 651a	blo.s	Obj01_ResetScr_Part2
0001a5cc 31fc0078f66c	move.w	#$78,(Sonic_Look_delay_counter).w
0001a5d2 0c780008eed8	cmpi.w	#8,(Camera_Y_pos_bias).w
0001a5d8 671e	beq.s	Obj01_UpdateSpeedOnGround
0001a5da 5578eed8	subq.w	#2,(Camera_Y_pos_bias).w
0001a5de 6018	bra.s	Obj01_UpdateSpeedOnGround
0001a5e0 31fc0000f66c	move.w	#0,(Sonic_Look_delay_counter).w
0001a5e6 0c780060eed8	cmpi.w	#(screen_height/2)-16,(Camera_Y_pos_bias).w
0001a5ec 670a	beq.s	Obj01_UpdateSpeedOnGround
0001a5ee 6404	bhs.s	+
0001a5f0 5878eed8	addq.w	#4,(Camera_Y_pos_bias).w
0001a5f8 4a38fe19	tst.b	(Super_Sonic_flag).w
0001a5fc 67000006	beq.w	+
0001a600 3a3c000c	move.w	#$C,d5
0001a604 1038f602	move.b	(Ctrl_1_Held_Logical).w,d0
0001a608 0200000c	andi.b	#button_left_mask|button_right_mask,d0
0001a60c 6622	bne.s	Obj01_Traction
0001a60e 30280014	move.w	inertia(a0),d0
0001a612 671c	beq.s	Obj01_Traction
0001a614 6b0e	bmi.s	Obj01_SettleLeft
0001a616 9045	sub.w	d5,d0
0001a618 6404	bcc.s	+
0001a61a 303c0000	move.w	#0,d0
0001a61e 31400014	move.w	d0,inertia(a0)
0001a622 600c	bra.s	Obj01_Traction
0001a624 d045	add.w	d5,d0
0001a626 6404	bcc.s	+
0001a628 303c0000	move.w	#0,d0
0001a62c 31400014	move.w	d0,inertia(a0)
0001a630 10280026	move.b	angle(a0),d0
0001a634 4eb9000033b6	jsr	(CalcSine).l
0001a63a c3e80014	muls.w	inertia(a0),d1
0001a63e e081	asr.l	#8,d1
0001a640 31410010	move.w	d1,x_vel(a0)
0001a644 c1e80014	muls.w	inertia(a0),d0
0001a648 e080	asr.l	#8,d0
0001a64a 31400012	move.w	d0,y_vel(a0)
0001a64e 10280026	move.b	angle(a0),d0
0001a652 06000040	addi.b	#$40,d0
0001a656 6b66	bmi.s	return_1A6BE
0001a658 123c0040	move.b	#$40,d1
0001a65c 4a680014	tst.w	inertia(a0)
0001a660 675c	beq.s	return_1A6BE
0001a662 6b02	bmi.s	+
0001a664 4441	neg.w	d1
0001a666 10280026	move.b	angle(a0),d0
0001a66a d001	add.b	d1,d0
0001a66c 3f00	move.w	d0,-(sp)
0001a66e 61004514	bsr.w	CalcRoomInFront
0001a672 301f	move.w	(sp)+,d0
0001a674 4a41	tst.w	d1
0001a676 6a46	bpl.s	return_1A6BE
0001a678 e141	asl.w	#8,d1
0001a67a 06000020	addi.b	#$20,d0
0001a67e 020000c0	andi.b	#$C0,d0
0001a682 6736	beq.s	loc_1A6BA
0001a684 0c000040	cmpi.b	#$40,d0
0001a688 671e	beq.s	loc_1A6A8
0001a68a 0c000080	cmpi.b	#$80,d0
0001a68e 6712	beq.s	loc_1A6A2
0001a690 d3680010	add.w	d1,x_vel(a0)
0001a694 08e800050022	bset	#status.player.pushing,status(a0)
0001a69a 317c00000014	move.w	#0,inertia(a0)
0001a6a0 4e75	rts	
0001a6a2 93680012	sub.w	d1,y_vel(a0)
0001a6a6 4e75	rts	
0001a6a8 93680010	sub.w	d1,x_vel(a0)
0001a6ac 08e800050022	bset	#status.player.pushing,status(a0)
0001a6b2 317c00000014	move.w	#0,inertia(a0)
0001a6b8 4e75	rts	
0001a6ba d3680012	add.w	d1,y_vel(a0)
0001a6be 4e75	rts	
0001a6c0 30280014	move.w	inertia(a0),d0
0001a6c4 6702	beq.s	+
0001a6c6 6a32	bpl.s	Sonic_TurnLeft
0001a6c8 08e800000022	bset	#status.player.x_flip,status(a0)
0001a6ce 660c	bne.s	+
0001a6d0 08a800050022	bclr	#status.player.pushing,status(a0)
0001a6d6 117c0001001d	move.b	#AniIDSonAni_Run,prev_anim(a0)
0001a6dc 9045	sub.w	d5,d0
0001a6de 3206	move.w	d6,d1
0001a6e0 4441	neg.w	d1
0001a6e2 b041	cmp.w	d1,d0
0001a6e4 6e08	bgt.s	+
0001a6e6 d045	add.w	d5,d0
0001a6e8 b041	cmp.w	d1,d0
0001a6ea 6f02	ble.s	+
0001a6ec 3001	move.w	d1,d0
0001a6ee 31400014	move.w	d0,inertia(a0)
0001a6f2 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
0001a6f8 4e75	rts	
0001a6fa 9044	sub.w	d4,d0
0001a6fc 6404	bcc.s	+
0001a6fe 303cff80	move.w	#-$80,d0
0001a702 31400014	move.w	d0,inertia(a0)
0001a706 10280026	move.b	angle(a0),d0
0001a70a 06000020	addi.b	#$20,d0
0001a70e 020000c0	andi.b	#$C0,d0
0001a712 6630	bne.s	return_1A744
0001a714 0c400400	cmpi.w	#$400,d0
0001a718 6d2a	blt.s	return_1A744
0001a71a 117c000d001c	move.b	#AniIDSonAni_Stop,anim(a0)
0001a720 08a800000022	bclr	#status.player.x_flip,status(a0)
0001a726 303c00a4	move.w	#SndID_Skidding,d0
0001a72a 4eb900001370	jsr	(PlaySound).l
0001a730 0c28000c0028	cmpi.b	#12,air_left(a0)
0001a736 650c	blo.s	return_1A744
0001a738 11fc0006d124	move.b	#6,(Sonic_Dust+routine).w
0001a73e 11fc0015d11a	move.b	#$15,(Sonic_Dust+mapping_frame).w
0001a744 4e75	rts	
0001a746 30280014	move.w	inertia(a0),d0
0001a74a 6b2e	bmi.s	Sonic_TurnRight
0001a74c 08a800000022	bclr	#status.player.x_flip,status(a0)
0001a752 670c	beq.s	+
0001a754 08a800050022	bclr	#status.player.pushing,status(a0)
0001a75a 117c0001001d	move.b	#AniIDSonAni_Run,prev_anim(a0)
0001a760 d045	add.w	d5,d0
0001a762 b046	cmp.w	d6,d0
0001a764 6d08	blt.s	+
0001a766 9045	sub.w	d5,d0
0001a768 b046	cmp.w	d6,d0
0001a76a 6c02	bge.s	+
0001a76c 3006	move.w	d6,d0
0001a76e 31400014	move.w	d0,inertia(a0)
0001a772 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
0001a778 4e75	rts	
0001a77a d044	add.w	d4,d0
0001a77c 6404	bcc.s	+
0001a77e 303c0080	move.w	#$80,d0
0001a782 31400014	move.w	d0,inertia(a0)
0001a786 10280026	move.b	angle(a0),d0
0001a78a 06000020	addi.b	#$20,d0
0001a78e 020000c0	andi.b	#$C0,d0
0001a792 6630	bne.s	return_1A7C4
0001a794 0c40fc00	cmpi.w	#-$400,d0
0001a798 6e2a	bgt.s	return_1A7C4
0001a79a 117c000d001c	move.b	#AniIDSonAni_Stop,anim(a0)
0001a7a0 08e800000022	bset	#status.player.x_flip,status(a0)
0001a7a6 303c00a4	move.w	#SndID_Skidding,d0
0001a7aa 4eb900001370	jsr	(PlaySound).l
0001a7b0 0c28000c0028	cmpi.b	#12,air_left(a0)
0001a7b6 650c	blo.s	return_1A7C4
0001a7b8 11fc0006d124	move.b	#6,(Sonic_Dust+routine).w
0001a7be 11fc0015d11a	move.b	#$15,(Sonic_Dust+mapping_frame).w
0001a7c4 4e75	rts	
0001a7c6 3c38f760	move.w	(Sonic_top_speed).w,d6
0001a7ca e346	asl.w	#1,d6
0001a7cc 3a38f762	move.w	(Sonic_acceleration).w,d5
0001a7d0 e245	asr.w	#1,d5
0001a7d2 383c0020	move.w	#$20,d4
0001a7d6 4a28002b	tst.b	status_secondary(a0)
0001a7da 6b00007e	bmi.w	Obj01_Roll_ResetScr
0001a7de 4a68002e	tst.w	move_lock(a0)
0001a7e2 6618	bne.s	Sonic_ApplyRollSpeed
0001a7e4 08380002f602	btst	#button_left,(Ctrl_1_Held_Logical).w
0001a7ea 6704	beq.s	+
0001a7ec 610000b4	bsr.w	Sonic_RollLeft
0001a7f0 08380003f602	btst	#button_right,(Ctrl_1_Held_Logical).w
0001a7f6 6704	beq.s	Sonic_ApplyRollSpeed
0001a7f8 610000cc	bsr.w	Sonic_RollRight
0001a7fc 30280014	move.w	inertia(a0),d0
0001a800 671c	beq.s	Sonic_CheckRollStop
0001a802 6b0e	bmi.s	Sonic_ApplyRollSpeedLeft
0001a804 9045	sub.w	d5,d0
0001a806 6404	bcc.s	+
0001a808 303c0000	move.w	#0,d0
0001a80c 31400014	move.w	d0,inertia(a0)
0001a810 600c	bra.s	Sonic_CheckRollStop
0001a812 d045	add.w	d5,d0
0001a814 6404	bcc.s	+
0001a816 303c0000	move.w	#0,d0
0001a81a 31400014	move.w	d0,inertia(a0)
0001a81e 4a680014	tst.w	inertia(a0)
0001a822 6636	bne.s	Obj01_Roll_ResetScr
0001a824 4a280039	tst.b	pinball_mode(a0)
0001a828 661e	bne.s	Sonic_KeepRolling
0001a82a 08a800020022	bclr	#status.player.rolling,status(a0)
0001a830 117c00130016	move.b	#$13,y_radius(a0)
0001a836 117c00090017	move.b	#9,x_radius(a0)
0001a83c 117c0005001c	move.b	#AniIDSonAni_Wait,anim(a0)
0001a842 5b68000c	subq.w	#5,y_pos(a0)
0001a846 6012	bra.s	Obj01_Roll_ResetScr
0001a848 317c04000014	move.w	#$400,inertia(a0)
0001a84e 082800000022	btst	#status.player.x_flip,status(a0)
0001a854 6704	beq.s	Obj01_Roll_ResetScr
0001a856 44680014	neg.w	inertia(a0)
0001a85a 0c780060eed8	cmpi.w	#(screen_height/2)-16,(Camera_Y_pos_bias).w
0001a860 670a	beq.s	Sonic_SetRollSpeeds
0001a862 6404	bhs.s	+
0001a864 5878eed8	addq.w	#4,(Camera_Y_pos_bias).w
0001a86c 10280026	move.b	angle(a0),d0
0001a870 4eb9000033b6	jsr	(CalcSine).l
0001a876 c1e80014	muls.w	inertia(a0),d0
0001a87a e080	asr.l	#8,d0
0001a87c 31400012	move.w	d0,y_vel(a0)
0001a880 c3e80014	muls.w	inertia(a0),d1
0001a884 e081	asr.l	#8,d1
0001a886 0c411000	cmpi.w	#$1000,d1
0001a88a 6f04	ble.s	+
0001a88c 323c1000	move.w	#$1000,d1
0001a890 0c41f000	cmpi.w	#-$1000,d1
0001a894 6c04	bge.s	+
0001a896 323cf000	move.w	#-$1000,d1
0001a89a 31410010	move.w	d1,x_vel(a0)
0001a89e 6000fdae	bra.w	Obj01_CheckWallsOnGround
0001a8a2 30280014	move.w	inertia(a0),d0
0001a8a6 6702	beq.s	+
0001a8a8 6a0e	bpl.s	Sonic_BrakeRollingRight
0001a8aa 08e800000022	bset	#status.player.x_flip,status(a0)
0001a8b0 117c0002001c	move.b	#AniIDSonAni_Roll,anim(a0)
0001a8b6 4e75	rts	
0001a8b8 9044	sub.w	d4,d0
0001a8ba 6404	bcc.s	+
0001a8bc 303cff80	move.w	#-$80,d0
0001a8c0 31400014	move.w	d0,inertia(a0)
0001a8c4 4e75	rts	
0001a8c6 30280014	move.w	inertia(a0),d0
0001a8ca 6b0e	bmi.s	Sonic_BrakeRollingLeft
0001a8cc 08a800000022	bclr	#status.player.x_flip,status(a0)
0001a8d2 117c0002001c	move.b	#AniIDSonAni_Roll,anim(a0)
0001a8d8 4e75	rts	
0001a8da d044	add.w	d4,d0
0001a8dc 6404	bcc.s	+
0001a8de 303c0080	move.w	#$80,d0
0001a8e2 31400014	move.w	d0,inertia(a0)
0001a8e6 4e75	rts	
0001a8e8 3c38f760	move.w	(Sonic_top_speed).w,d6
0001a8ec 3a38f762	move.w	(Sonic_acceleration).w,d5
0001a8f0 e345	asl.w	#1,d5
0001a8f2 082800040022	btst	#status.player.rolljumping,status(a0)
0001a8f8 6638	bne.s	Obj01_Jump_ResetScr
0001a8fa 30280010	move.w	x_vel(a0),d0
0001a8fe 08380002f602	btst	#button_left,(Ctrl_1_Held_Logical).w
0001a904 6712	beq.s	+
0001a906 08e800000022	bset	#status.player.x_flip,status(a0)
0001a90c 9045	sub.w	d5,d0
0001a90e 3206	move.w	d6,d1
0001a910 4441	neg.w	d1
0001a912 b041	cmp.w	d1,d0
0001a914 6e02	bgt.s	+
0001a916 3001	move.w	d1,d0
0001a918 08380003f602	btst	#button_right,(Ctrl_1_Held_Logical).w
0001a91e 670e	beq.s	+
0001a920 08a800000022	bclr	#status.player.x_flip,status(a0)
0001a926 d045	add.w	d5,d0
0001a928 b046	cmp.w	d6,d0
0001a92a 6d02	blt.s	+
0001a92c 3006	move.w	d6,d0
0001a932 0c780060eed8	cmpi.w	#(screen_height/2)-16,(Camera_Y_pos_bias).w
0001a938 670a	beq.s	Sonic_JumpPeakDecelerate
0001a93a 6404	bhs.s	+
0001a93c 5878eed8	addq.w	#4,(Camera_Y_pos_bias).w
0001a944 0c68fc000012	cmpi.w	#-$400,y_vel(a0)
0001a94a 6526	blo.s	return_1A972
0001a94c 30280010	move.w	x_vel(a0),d0
0001a950 3200	move.w	d0,d1
0001a952 ea41	asr.w	#5,d1
0001a954 671c	beq.s	return_1A972
0001a956 6b0e	bmi.s	Sonic_JumpPeakDecelerateLeft
0001a958 9041	sub.w	d1,d0
0001a95a 6404	bcc.s	+
0001a95c 303c0000	move.w	#0,d0
0001a960 31400010	move.w	d0,x_vel(a0)
0001a964 4e75	rts	
0001a966 9041	sub.w	d1,d0
0001a968 6504	bcs.s	+
0001a96a 303c0000	move.w	#0,d0
0001a96e 31400010	move.w	d0,x_vel(a0)
0001a972 4e75	rts	
0001a974 22280008	move.l	x_pos(a0),d1
0001a978 30280010	move.w	x_vel(a0),d0
0001a97c 48c0	ext.l	d0
0001a97e e180	asl.l	#8,d0
0001a980 d280	add.l	d0,d1
0001a982 4841	swap	d1
0001a984 3038eec8	move.w	(Camera_Min_X_pos).w,d0
0001a988 06400010	addi.w	#$10,d0
0001a98c b041	cmp.w	d1,d0
0001a98e 622a	bhi.s	Sonic_Boundary_Sides
0001a990 3038eeca	move.w	(Camera_Max_X_pos).w,d0
0001a994 06400128	addi.w	#screen_width-24,d0
0001a998 4a38f7aa	tst.b	(Current_Boss_ID).w
0001a99c 6604	bne.s	+
0001a99e 06400040	addi.w	#$40,d0
0001a9a2 b041	cmp.w	d1,d0
0001a9a4 6314	bls.s	Sonic_Boundary_Sides
0001a9a6 3038eece	move.w	(Camera_Max_Y_pos).w,d0
0001a9aa 064000e0	addi.w	#screen_height,d0
0001a9ae b068000c	cmp.w	y_pos(a0),d0
0001a9b2 6d02	blt.s	Sonic_Boundary_Bottom
0001a9b4 4e75	rts	
0001a9ba 31400008	move.w	d0,x_pos(a0)
0001a9be 317c0000000a	move.w	#0,2+x_pos(a0)
0001a9c4 317c00000010	move.w	#0,x_vel(a0)
0001a9ca 317c00000014	move.w	#0,inertia(a0)
0001a9d0 60d4	bra.s	Sonic_Boundary_CheckBottom
0001a9d2 4a28002b	tst.b	status_secondary(a0)
0001a9d6 6b20	bmi.s	Obj01_NoRoll
0001a9d8 30280014	move.w	inertia(a0),d0
0001a9dc 6a02	bpl.s	.skip
0001a9de 4440	neg.w	d0
0001a9e0 0c400080	cmpi.w	#$80,d0
0001a9e4 6512	blo.s	Obj01_NoRoll
0001a9e6 1038f602	move.b	(Ctrl_1_Held_Logical).w,d0
0001a9ea 0200000c	andi.b	#button_left_mask|button_right_mask,d0
0001a9ee 6608	bne.s	Obj01_NoRoll
0001a9f0 08380001f602	btst	#button_down,(Ctrl_1_Held_Logical).w
0001a9f6 6602	bne.s	Obj01_ChkRoll
0001a9f8 4e75	rts	
0001a9fa 082800020022	btst	#status.player.rolling,status(a0)
0001aa00 6702	beq.s	Obj01_DoRoll
0001aa02 4e75	rts	
0001aa04 08e800020022	bset	#status.player.rolling,status(a0)
0001aa0a 117c000e0016	move.b	#$E,y_radius(a0)
0001aa10 117c00070017	move.b	#7,x_radius(a0)
0001aa16 117c0002001c	move.b	#AniIDSonAni_Roll,anim(a0)
0001aa1c 5a68000c	addq.w	#5,y_pos(a0)
0001aa20 303c00be	move.w	#SndID_Roll,d0
0001aa24 4eb900001370	jsr	(PlaySound).l
0001aa2a 4a680014	tst.w	inertia(a0)
0001aa2e 6606	bne.s	return_1AA36
0001aa30 317c02000014	move.w	#$200,inertia(a0)
0001aa36 4e75	rts	
0001aa38 1038f603	move.b	(Ctrl_1_Press_Logical).w,d0
0001aa3c 02000070	andi.b	#button_B_mask|button_C_mask|button_A_mask,d0
0001aa40 670000a4	beq.w	return_1AAE6
0001aa44 7000	moveq	#0,d0
0001aa46 10280026	move.b	angle(a0),d0
0001aa4a 06000080	addi.b	#$80,d0
0001aa4e 610041ba	bsr.w	CalcRoomOverHead
0001aa52 0c410006	cmpi.w	#6,d1
0001aa56 6d00008e	blt.w	return_1AAE6
0001aa5a 343c0680	move.w	#$680,d2
0001aa5e 4a38fe19	tst.b	(Super_Sonic_flag).w
0001aa62 6704	beq.s	+
0001aa64 343c0800	move.w	#$800,d2
0001aa68 082800060022	btst	#status.player.underwater,status(a0)
0001aa6e 6704	beq.s	+
0001aa70 343c0380	move.w	#$380,d2
0001aa74 7000	moveq	#0,d0
0001aa76 10280026	move.b	angle(a0),d0
0001aa7a 04000040	subi.b	#$40,d0
0001aa7e 4eb9000033b6	jsr	(CalcSine).l
0001aa84 c3c2	muls.w	d2,d1
0001aa86 e081	asr.l	#8,d1
0001aa88 d3680010	add.w	d1,x_vel(a0)
0001aa8c c1c2	muls.w	d2,d0
0001aa8e e080	asr.l	#8,d0
0001aa90 d1680012	add.w	d0,y_vel(a0)
0001aa94 08e800010022	bset	#status.player.in_air,status(a0)
0001aa9a 08a800050022	bclr	#status.player.pushing,status(a0)
0001aaa0 588f	addq.l	#4,sp
0001aaa2 117c0001003c	move.b	#1,jumping(a0)
0001aaa8 42280038	clr.b	stick_to_convex(a0)
0001aaac 303c00a0	move.w	#SndID_Jump,d0
0001aab0 4eb900001370	jsr	(PlaySound).l
0001aab6 117c00130016	move.b	#$13,y_radius(a0)
0001aabc 117c00090017	move.b	#9,x_radius(a0)
0001aac2 082800020022	btst	#status.player.rolling,status(a0)
0001aac8 661e	bne.s	Sonic_RollJump
0001aaca 117c000e0016	move.b	#$E,y_radius(a0)
0001aad0 117c00070017	move.b	#7,x_radius(a0)
0001aad6 117c0002001c	move.b	#AniIDSonAni_Roll,anim(a0)
0001aadc 08e800020022	bset	#status.player.rolling,status(a0)
0001aae2 5a68000c	addq.w	#5,y_pos(a0)
0001aae6 4e75	rts	
0001aae8 08e800040022	bset	#status.player.rolljumping,status(a0)
0001aaee 4e75	rts	
0001aaf0 4a28003c	tst.b	jumping(a0)
0001aaf4 672c	beq.s	Sonic_UpVelCap
0001aaf6 323cfc00	move.w	#-$400,d1
0001aafa 082800060022	btst	#status.player.underwater,status(a0)
0001ab00 6704	beq.s	+
0001ab02 323cfe00	move.w	#-$200,d1
0001ab06 b2680012	cmp.w	y_vel(a0),d1
0001ab0a 6f0e	ble.s	+
0001ab0c 1038f602	move.b	(Ctrl_1_Held_Logical).w,d0
0001ab10 02000070	andi.b	#button_B_mask|button_C_mask|button_A_mask,d0
0001ab14 6604	bne.s	+
0001ab16 31410012	move.w	d1,y_vel(a0)
0001ab1a 4a280012	tst.b	y_vel(a0)
0001ab1e 6718	beq.s	Sonic_CheckGoSuper
0001ab20 4e75	rts	
0001ab22 4a280039	tst.b	pinball_mode(a0)
0001ab26 660e	bne.s	return_1AB36
0001ab28 0c68f0400012	cmpi.w	#-$FC0,y_vel(a0)
0001ab2e 6c06	bge.s	return_1AB36
0001ab30 317cf0400012	move.w	#-$FC0,y_vel(a0)
0001ab36 4e75	rts	
0001ab38 4a38fe19	tst.b	(Super_Sonic_flag).w
0001ab3c 6666	bne.s	return_1ABA4
0001ab3e 0c380007ffb1	cmpi.b	#7,(Emerald_count).w
0001ab44 665e	bne.s	return_1ABA4
0001ab46 0c780032fe20	cmpi.w	#50,(Ring_count).w
0001ab4c 6556	blo.s	return_1ABA4
0001ab4e 11fc0001f65f	move.b	#1,(Super_Sonic_palette).w
0001ab54 11fc000ff65e	move.b	#$F,(Palette_timer).w
0001ab5a 11fc0001fe19	move.b	#1,(Super_Sonic_flag).w
0001ab60 117c0081002a	move.b	#$81,obj_control(a0)
0001ab66 117c001f001c	move.b	#AniIDSupSonAni_Transform,anim(a0)
0001ab6c 11fc007ed040	move.b	#ObjID_SuperSonicStars,(SuperSonicStars+id).w
0001ab72 31fc0a00f760	move.w	#$A00,(Sonic_top_speed).w
0001ab78 31fc0030f762	move.w	#$30,(Sonic_acceleration).w
0001ab7e 31fc0100f764	move.w	#$100,(Sonic_deceleration).w
0001ab84 317c00000032	move.w	#0,invincibility_time(a0)
0001ab8a 08e80001002b	bset	#status_secondary.invincible,status_secondary(a0)
0001ab90 303c00df	move.w	#SndID_SuperTransform,d0
0001ab94 4eb900001370	jsr	(PlaySound).l
0001ab9a 303c0096	move.w	#MusID_SuperSonic,d0
0001ab9e 4ef90000135e	jmp	(PlayMusic).l
0001aba4 4e75	rts	
0001aba6 4a38fe19	tst.b	(Super_Sonic_flag).w
0001abaa 67000090	beq.w	return_1AC3C
0001abae 4a38fe1e	tst.b	(Update_HUD_timer).w
0001abb2 673e	beq.s	Sonic_RevertToNormal
0001abb4 5378f670	subq.w	#1,(Super_Sonic_frame_count).w
0001abb8 6a000082	bpl.w	return_1AC3C
0001abbc 31fc003cf670	move.w	#60,(Super_Sonic_frame_count).w
0001abc2 4a78fe20	tst.w	(Ring_count).w
0001abc6 672a	beq.s	Sonic_RevertToNormal
0001abc8 00380001fe1d	ori.b	#1,(Update_HUD_rings).w
0001abce 0c780001fe20	cmpi.w	#1,(Ring_count).w
0001abd4 6710	beq.s	+
0001abd6 0c78000afe20	cmpi.w	#10,(Ring_count).w
0001abdc 6708	beq.s	+
0001abde 0c780064fe20	cmpi.w	#100,(Ring_count).w
0001abe4 6606	bne.s	++
0001abe6 00380080fe1d	ori.b	#$80,(Update_HUD_rings).w
0001abec 5378fe20	subq.w	#1,(Ring_count).w
0001abf0 664a	bne.s	return_1AC3C
0001abf2 11fc0002f65f	move.b	#2,(Super_Sonic_palette).w
0001abf8 31fc0028f65c	move.w	#$28,(Palette_frame).w
0001abfe 11fc0000fe19	move.b	#0,(Super_Sonic_flag).w
0001ac04 117c0001001d	move.b	#AniIDSonAni_Run,prev_anim(a0)
0001ac0a 317c00010032	move.w	#1,invincibility_time(a0)
0001ac10 31fc0600f760	move.w	#$600,(Sonic_top_speed).w
0001ac16 31fc000cf762	move.w	#$C,(Sonic_acceleration).w
0001ac1c 31fc0080f764	move.w	#$80,(Sonic_deceleration).w
0001ac22 082800060022	btst	#status.player.underwater,status(a0)
0001ac28 6712	beq.s	return_1AC3C
0001ac2a 31fc0300f760	move.w	#$300,(Sonic_top_speed).w
0001ac30 31fc0006f762	move.w	#6,(Sonic_acceleration).w
0001ac36 31fc0040f764	move.w	#$40,(Sonic_deceleration).w
0001ac3c 4e75	rts	
0001ac3e 4a280039	tst.b	spindash_flag(a0)
0001ac42 664a	bne.s	Sonic_UpdateSpindash
0001ac44 0c280008001c	cmpi.b	#AniIDSonAni_Duck,anim(a0)
0001ac4a 6640	bne.s	return_1AC8C
0001ac4c 1038f603	move.b	(Ctrl_1_Press_Logical).w,d0
0001ac50 02000070	andi.b	#button_B_mask|button_C_mask|button_A_mask,d0
0001ac54 67000036	beq.w	return_1AC8C
0001ac58 117c0009001c	move.b	#AniIDSonAni_Spindash,anim(a0)
0001ac5e 303c00e0	move.w	#SndID_SpindashRev,d0
0001ac62 4eb900001370	jsr	(PlaySound).l
0001ac68 588f	addq.l	#4,sp
0001ac6a 117c00010039	move.b	#1,spindash_flag(a0)
0001ac70 317c0000003a	move.w	#0,spindash_counter(a0)
0001ac76 0c28000c0028	cmpi.b	#12,air_left(a0)
0001ac7c 6506	blo.s	+
0001ac7e 11fc0002d11c	move.b	#2,(Sonic_Dust+anim).w
0001ac84 6100fcee	bsr.w	Sonic_LevelBound
0001ac88 610035aa	bsr.w	AnglePos
0001ac8c 4e75	rts	
0001ac8e 1038f602	move.b	(Ctrl_1_Held_Logical).w,d0
0001ac92 08000001	btst	#button_down,d0
0001ac96 66000098	bne.w	Sonic_ChargingSpindash
0001ac9a 117c000e0016	move.b	#$E,y_radius(a0)
0001aca0 117c00070017	move.b	#7,x_radius(a0)
0001aca6 117c0002001c	move.b	#AniIDSonAni_Roll,anim(a0)
0001acac 5a68000c	addq.w	#5,y_pos(a0)
0001acb0 117c00000039	move.b	#0,spindash_flag(a0)
0001acb6 7000	moveq	#0,d0
0001acb8 1028003a	move.b	spindash_counter(a0),d0
0001acbc d040	add.w	d0,d0
0001acbe 317b004c0014	move.w	SpindashSpeeds(pc,d0.w),inertia(a0)
0001acc4 4a38fe19	tst.b	(Super_Sonic_flag).w
0001acc8 6706	beq.s	+
0001acca 317b00520014	move.w	SpindashSpeedsSuper(pc,d0.w),inertia(a0)
0001acd0 30280014	move.w	inertia(a0),d0
0001acd4 04400800	subi.w	#$800,d0
0001acd8 d040	add.w	d0,d0
0001acda 02401f00	andi.w	#$1F00,d0
0001acde 4440	neg.w	d0
0001ace0 06402000	addi.w	#$2000,d0
0001ace4 31c0eed0	move.w	d0,(Horiz_scroll_delay_val).w
0001ace8 082800000022	btst	#status.player.x_flip,status(a0)
0001acee 6704	beq.s	+
0001acf0 44680014	neg.w	inertia(a0)
0001acf4 08e800020022	bset	#status.player.rolling,status(a0)
0001acfa 11fc0000d11c	move.b	#0,(Sonic_Dust+anim).w
0001ad00 303c00bc	move.w	#SndID_SpindashRelease,d0
0001ad04 4eb900001370	jsr	(PlaySound).l
0001ad0a 606c	bra.s	Obj01_Spindash_ResetScr
0001ad30 4a68003a	tst.w	spindash_counter(a0)
0001ad34 6712	beq.s	+
0001ad36 3028003a	move.w	spindash_counter(a0),d0
0001ad3a ea48	lsr.w	#5,d0
0001ad3c 9168003a	sub.w	d0,spindash_counter(a0)
0001ad40 6406	bcc.s	+
0001ad42 317c0000003a	move.w	#0,spindash_counter(a0)
0001ad48 1038f603	move.b	(Ctrl_1_Press_Logical).w,d0
0001ad4c 02000070	andi.b	#button_B_mask|button_C_mask|button_A_mask,d0
0001ad50 67000026	beq.w	Obj01_Spindash_ResetScr
0001ad54 317c0900001c	move.w	#(AniIDSonAni_Spindash<<8)|(AniIDSonAni_Walk<<0),anim(a0)
0001ad5a 303c00e0	move.w	#SndID_SpindashRev,d0
0001ad5e 4eb900001370	jsr	(PlaySound).l
0001ad64 06680200003a	addi.w	#$200,spindash_counter(a0)
0001ad6a 0c680800003a	cmpi.w	#$800,spindash_counter(a0)
0001ad70 6506	blo.s	Obj01_Spindash_ResetScr
0001ad72 317c0800003a	move.w	#$800,spindash_counter(a0)
0001ad78 588f	addq.l	#4,sp
0001ad7a 0c780060eed8	cmpi.w	#(screen_height/2)-16,(Camera_Y_pos_bias).w
0001ad80 670a	beq.s	loc_1AD8C
0001ad82 6404	bhs.s	+
0001ad84 5878eed8	addq.w	#4,(Camera_Y_pos_bias).w
0001ad8c 6100fbe6	bsr.w	Sonic_LevelBound
0001ad90 610034a2	bsr.w	AnglePos
0001ad94 4e75	rts	
0001ad96 10280026	move.b	angle(a0),d0
0001ad9a 06000060	addi.b	#$60,d0
0001ad9e 0c0000c0	cmpi.b	#$C0,d0
0001ada2 6426	bhs.s	return_1ADCA
0001ada4 10280026	move.b	angle(a0),d0
0001ada8 4eb9000033b6	jsr	(CalcSine).l
0001adae c1fc0020	muls.w	#$20,d0
0001adb2 e080	asr.l	#8,d0
0001adb4 4a680014	tst.w	inertia(a0)
0001adb8 6710	beq.s	return_1ADCA
0001adba 6b0a	bmi.s	loc_1ADC6
0001adbc 4a40	tst.w	d0
0001adbe 6704	beq.s	+
0001adc0 d1680014	add.w	d0,inertia(a0)
0001adc4 4e75	rts	
0001adc6 d1680014	add.w	d0,inertia(a0)
0001adca 4e75	rts	
0001adcc 10280026	move.b	angle(a0),d0
0001add0 06000060	addi.b	#$60,d0
0001add4 0c0000c0	cmpi.b	#$C0,d0
0001add8 642c	bhs.s	return_1AE06
0001adda 10280026	move.b	angle(a0),d0
0001adde 4eb9000033b6	jsr	(CalcSine).l
0001ade4 c1fc0050	muls.w	#$50,d0
0001ade8 e080	asr.l	#8,d0
0001adea 4a680014	tst.w	inertia(a0)
0001adee 6b0c	bmi.s	loc_1ADFC
0001adf0 4a40	tst.w	d0
0001adf2 6a02	bpl.s	loc_1ADF6
0001adf4 e480	asr.l	#2,d0
0001adf6 d1680014	add.w	d0,inertia(a0)
0001adfa 4e75	rts	
0001adfc 4a40	tst.w	d0
0001adfe 6b02	bmi.s	loc_1AE02
0001ae00 e480	asr.l	#2,d0
0001ae02 d1680014	add.w	d0,inertia(a0)
0001ae06 4e75	rts	
0001ae08 4e71	nop	
0001ae0a 4a280038	tst.b	stick_to_convex(a0)
0001ae0e 6632	bne.s	return_1AE42
0001ae10 4a68002e	tst.w	move_lock(a0)
0001ae14 662e	bne.s	loc_1AE44
0001ae16 10280026	move.b	angle(a0),d0
0001ae1a 06000020	addi.b	#$20,d0
0001ae1e 020000c0	andi.b	#$C0,d0
0001ae22 671e	beq.s	return_1AE42
0001ae24 30280014	move.w	inertia(a0),d0
0001ae28 6a02	bpl.s	.skip
0001ae2a 4440	neg.w	d0
0001ae2c 0c400280	cmpi.w	#$280,d0
0001ae30 6410	bhs.s	return_1AE42
0001ae32 42680014	clr.w	inertia(a0)
0001ae36 08e800010022	bset	#status.player.in_air,status(a0)
0001ae3c 317c001e002e	move.w	#$1E,move_lock(a0)
0001ae42 4e75	rts	
0001ae44 5368002e	subq.w	#1,move_lock(a0)
0001ae48 4e75	rts	
0001ae4a 10280026	move.b	angle(a0),d0
0001ae4e 6714	beq.s	Sonic_JumpFlip
0001ae50 6a08	bpl.s	loc_1AE5A
0001ae52 5400	addq.b	#2,d0
0001ae54 6402	bcc.s	BranchTo_Sonic_JumpAngleSet
0001ae56 7000	moveq	#0,d0
0001ae58 6006	bra.s	Sonic_JumpAngleSet
0001ae5a 5500	subq.b	#2,d0
0001ae5c 6402	bcc.s	Sonic_JumpAngleSet
0001ae5e 7000	moveq	#0,d0
0001ae60 11400026	move.b	d0,angle(a0)
0001ae64 10280027	move.b	flip_angle(a0),d0
0001ae68 673e	beq.s	return_1AEA8
0001ae6a 4a680014	tst.w	inertia(a0)
0001ae6e 6b18	bmi.s	Sonic_JumpLeftFlip
0001ae70 1228002d	move.b	flip_speed(a0),d1
0001ae74 d001	add.b	d1,d0
0001ae76 640e	bcc.s	BranchTo_Sonic_JumpFlipSet
0001ae78 5328002c	subq.b	#1,flips_remaining(a0)
0001ae7c 6408	bcc.s	BranchTo_Sonic_JumpFlipSet
0001ae7e 117c0000002c	move.b	#0,flips_remaining(a0)
0001ae84 7000	moveq	#0,d0
0001ae86 601c	bra.s	Sonic_JumpFlipSet
0001ae88 4a280029	tst.b	flip_turned(a0)
0001ae8c 66e2	bne.s	Sonic_JumpRightFlip
0001ae8e 1228002d	move.b	flip_speed(a0),d1
0001ae92 9001	sub.b	d1,d0
0001ae94 640e	bcc.s	Sonic_JumpFlipSet
0001ae96 5328002c	subq.b	#1,flips_remaining(a0)
0001ae9a 6408	bcc.s	Sonic_JumpFlipSet
0001ae9c 117c0000002c	move.b	#0,flips_remaining(a0)
0001aea2 7000	moveq	#0,d0
0001aea4 11400027	move.b	d0,flip_angle(a0)
0001aea8 4e75	rts	
0001aeaa 21fcffffd600f796	move.l	#Primary_Collision,(Collision_addr).w
0001aeb2 0c28000c003e	cmpi.b	#$C,top_solid_bit(a0)
0001aeb8 6708	beq.s	+
0001aeba 21fcffffd900f796	move.l	#Secondary_Collision,(Collision_addr).w
0001aec2 1a28003f	move.b	lrb_solid_bit(a0),d5
0001aec6 32280010	move.w	x_vel(a0),d1
0001aeca 34280012	move.w	y_vel(a0),d2
0001aece 4eb90000364e	jsr	(CalcAngle).l
0001aed4 04000020	subi.b	#$20,d0
0001aed8 020000c0	andi.b	#$C0,d0
0001aedc 0c000040	cmpi.b	#$40,d0
0001aee0 670000aa	beq.w	Sonic_HitLeftWall
0001aee4 0c000080	cmpi.b	#$80,d0
0001aee8 670000fe	beq.w	Sonic_HitCeilingAndWalls
0001aeec 0c0000c0	cmpi.b	#$C0,d0
0001aef0 67000152	beq.w	Sonic_HitRightWall
0001aef4 61004168	bsr.w	CheckLeftWallDist
0001aef8 4a41	tst.w	d1
0001aefa 6a0a	bpl.s	+
0001aefc 93680008	sub.w	d1,x_pos(a0)
0001af00 317c00000010	move.w	#0,x_vel(a0)
0001af06 61003fd4	bsr.w	CheckRightWallDist
0001af0a 4a41	tst.w	d1
0001af0c 6a0a	bpl.s	+
0001af0e d3680008	add.w	d1,x_pos(a0)
0001af12 317c00000010	move.w	#0,x_vel(a0)
0001af18 61003d34	bsr.w	Sonic_CheckFloor
0001af1c 4a41	tst.w	d1
0001af1e 6a6a	bpl.s	return_1AF8A
0001af20 14280012	move.b	y_vel(a0),d2
0001af24 5002	addq.b	#8,d2
0001af26 4402	neg.b	d2
0001af28 b202	cmp.b	d2,d1
0001af2a 6c04	bge.s	+
0001af2c b002	cmp.b	d2,d0
0001af2e 6d5a	blt.s	return_1AF8A
0001af30 d368000c	add.w	d1,y_pos(a0)
0001af34 11430026	move.b	d3,angle(a0)
0001af38 61000166	bsr.w	Sonic_ResetOnFloor
0001af3c 1003	move.b	d3,d0
0001af3e 06000020	addi.b	#$20,d0
0001af42 02000040	andi.b	#$40,d0
0001af46 6620	bne.s	loc_1AF68
0001af48 1003	move.b	d3,d0
0001af4a 06000010	addi.b	#$10,d0
0001af4e 02000020	andi.b	#$20,d0
0001af52 6706	beq.s	loc_1AF5A
0001af54 e0e80012	asr	y_vel(a0)
0001af58 6022	bra.s	loc_1AF7C
0001af5a 317c00000012	move.w	#0,y_vel(a0)
0001af60 316800100014	move.w	x_vel(a0),inertia(a0)
0001af66 4e75	rts	
0001af68 317c00000010	move.w	#0,x_vel(a0)
0001af6e 0c680fc00012	cmpi.w	#$FC0,y_vel(a0)
0001af74 6f06	ble.s	loc_1AF7C
0001af76 317c0fc00012	move.w	#$FC0,y_vel(a0)
0001af7c 316800120014	move.w	y_vel(a0),inertia(a0)
0001af82 4a03	tst.b	d3
0001af84 6a04	bpl.s	return_1AF8A
0001af86 44680014	neg.w	inertia(a0)
0001af8a 4e75	rts	
0001af8c 610040d0	bsr.w	CheckLeftWallDist
0001af90 4a41	tst.w	d1
0001af92 6a12	bpl.s	Sonic_HitCeiling
0001af94 93680008	sub.w	d1,x_pos(a0)
0001af98 317c00000010	move.w	#0,x_vel(a0)
0001af9e 316800120014	move.w	y_vel(a0),inertia(a0)
0001afa4 4e75	rts	
0001afa6 61003f86	bsr.w	Sonic_CheckCeiling
0001afaa 4a41	tst.w	d1
0001afac 6a12	bpl.s	Sonic_HitFloor
0001afae 9368000c	sub.w	d1,y_pos(a0)
0001afb2 4a680012	tst.w	y_vel(a0)
0001afb6 6a06	bpl.s	return_1AFBE
0001afb8 317c00000012	move.w	#0,y_vel(a0)
0001afbe 4e75	rts	
0001afc0 4a680012	tst.w	y_vel(a0)
0001afc4 6b20	bmi.s	return_1AFE6
0001afc6 61003c86	bsr.w	Sonic_CheckFloor
0001afca 4a41	tst.w	d1
0001afcc 6a18	bpl.s	return_1AFE6
0001afce d368000c	add.w	d1,y_pos(a0)
0001afd2 11430026	move.b	d3,angle(a0)
0001afd6 610000c8	bsr.w	Sonic_ResetOnFloor
0001afda 317c00000012	move.w	#0,y_vel(a0)
0001afe0 316800100014	move.w	x_vel(a0),inertia(a0)
0001afe6 4e75	rts	
0001afe8 61004074	bsr.w	CheckLeftWallDist
0001afec 4a41	tst.w	d1
0001afee 6a0a	bpl.s	+
0001aff0 93680008	sub.w	d1,x_pos(a0)
0001aff4 317c00000010	move.w	#0,x_vel(a0)
0001affa 61003ee0	bsr.w	CheckRightWallDist
0001affe 4a41	tst.w	d1
0001b000 6a0a	bpl.s	+
0001b002 d3680008	add.w	d1,x_pos(a0)
0001b006 317c00000010	move.w	#0,x_vel(a0)
0001b00c 61003f20	bsr.w	Sonic_CheckCeiling
0001b010 4a41	tst.w	d1
0001b012 6a2e	bpl.s	return_1B042
0001b014 9368000c	sub.w	d1,y_pos(a0)
0001b018 1003	move.b	d3,d0
0001b01a 06000020	addi.b	#$20,d0
0001b01e 02000040	andi.b	#$40,d0
0001b022 6608	bne.s	loc_1B02C
0001b024 317c00000012	move.w	#0,y_vel(a0)
0001b02a 4e75	rts	
0001b02c 11430026	move.b	d3,angle(a0)
0001b030 6100006e	bsr.w	Sonic_ResetOnFloor
0001b034 316800120014	move.w	y_vel(a0),inertia(a0)
0001b03a 4a03	tst.b	d3
0001b03c 6a04	bpl.s	return_1B042
0001b03e 44680014	neg.w	inertia(a0)
0001b042 4e75	rts	
0001b044 61003e96	bsr.w	CheckRightWallDist
0001b048 4a41	tst.w	d1
0001b04a 6a12	bpl.s	Sonic_HitCeiling2
0001b04c d3680008	add.w	d1,x_pos(a0)
0001b050 317c00000010	move.w	#0,x_vel(a0)
0001b056 316800120014	move.w	y_vel(a0),inertia(a0)
0001b05c 4e75	rts	
0001b05e 61003ece	bsr.w	Sonic_CheckCeiling
0001b062 4a41	tst.w	d1
0001b064 6a12	bpl.s	Sonic_HitFloor2
0001b066 9368000c	sub.w	d1,y_pos(a0)
0001b06a 4a680012	tst.w	y_vel(a0)
0001b06e 6a06	bpl.s	return_1B076
0001b070 317c00000012	move.w	#0,y_vel(a0)
0001b076 4e75	rts	
0001b078 4a680012	tst.w	y_vel(a0)
0001b07c 6b20	bmi.s	return_1B09E
0001b07e 61003bce	bsr.w	Sonic_CheckFloor
0001b082 4a41	tst.w	d1
0001b084 6a18	bpl.s	return_1B09E
0001b086 d368000c	add.w	d1,y_pos(a0)
0001b08a 11430026	move.b	d3,angle(a0)
0001b08e 61000010	bsr.w	Sonic_ResetOnFloor
0001b092 317c00000012	move.w	#0,y_vel(a0)
0001b098 316800100014	move.w	x_vel(a0),inertia(a0)
0001b09e 4e75	rts	
0001b0a0 4a280039	tst.b	pinball_mode(a0)
0001b0a4 6634	bne.s	Sonic_ResetOnFloor_Part3
0001b0a6 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
0001b0b2 66001aa8	bne.w	Tails_ResetOnFloor_Part2
0001b0b6 082800020022	btst	#status.player.rolling,status(a0)
0001b0bc 671c	beq.s	Sonic_ResetOnFloor_Part3
0001b0be 08a800020022	bclr	#status.player.rolling,status(a0)
0001b0c4 117c00130016	move.b	#$13,y_radius(a0)
0001b0ca 117c00090017	move.b	#9,x_radius(a0)
0001b0d0 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
0001b0d6 5b68000c	subq.w	#5,y_pos(a0)
0001b0da 08a800010022	bclr	#status.player.in_air,status(a0)
0001b0e0 08a800050022	bclr	#status.player.pushing,status(a0)
0001b0e6 08a800040022	bclr	#status.player.rolljumping,status(a0)
0001b0ec 117c0000003c	move.b	#0,jumping(a0)
0001b0f2 31fc0000f7d0	move.w	#0,(Chain_Bonus_counter).w
0001b0f8 117c00000027	move.b	#0,flip_angle(a0)
0001b0fe 117c00000029	move.b	#0,flip_turned(a0)
0001b104 117c0000002c	move.b	#0,flips_remaining(a0)
0001b10a 31fc0000f66c	move.w	#0,(Sonic_Look_delay_counter).w
0001b110 0c280014001c	cmpi.b	#AniIDSonAni_Hang2,anim(a0)
0001b116 6606	bne.s	return_1B11E
0001b118 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
0001b11e 4e75	rts	
0001b120 4a78fffa	tst.w	(Debug_mode_flag).w
0001b124 6714	beq.s	Obj01_Hurt_Normal
0001b126 08380004f605	btst	#button_B,(Ctrl_1_Press).w
0001b12c 670c	beq.s	Obj01_Hurt_Normal
0001b12e 31fc0001fe08	move.w	#1,(Debug_placement_mode).w
0001b134 4238f7cc	clr.b	(Control_Locked).w
0001b138 4e75	rts	
0001b13a 4a280025	tst.b	routine_secondary(a0)
0001b13e 6b00008a	bmi.w	Sonic_HurtInstantRecover
0001b142 4eb9000163ac	jsr	(ObjectMove).l
0001b148 066800300012	addi.w	#$30,y_vel(a0)
0001b14e 082800060022	btst	#status.player.underwater,status(a0)
0001b154 6706	beq.s	+
0001b156 046800200012	subi.w	#$20,y_vel(a0)
0001b15c 0c78ff00eecc	cmpi.w	#-$100,(Camera_Min_Y_pos).w
0001b162 6606	bne.s	+
0001b164 026807ff000c	andi.w	#$7FF,y_pos(a0)
0001b16a 61000018	bsr.w	Sonic_HurtStop
0001b16e 6100f804	bsr.w	Sonic_LevelBound
0001b172 6100efe8	bsr.w	Sonic_RecordPos
0001b176 610001d8	bsr.w	Sonic_Animate
0001b17a 610006cc	bsr.w	LoadSonicDynPLC
0001b17e 4ef9000164f4	jmp	(DisplaySprite).l
0001b184 3038eece	move.w	(Camera_Max_Y_pos).w,d0
0001b188 064000e0	addi.w	#screen_height,d0
0001b18c b068000c	cmp.w	y_pos(a0),d0
0001b190 6d00070a	blt.w	JmpTo_KillCharacter
0001b194 6100fd14	bsr.w	Sonic_DoLevelCollision
0001b198 082800010022	btst	#status.player.in_air,status(a0)
0001b19e 6628	bne.s	return_1B1C8
0001b1a0 7000	moveq	#0,d0
0001b1a2 31400012	move.w	d0,y_vel(a0)
0001b1a6 31400010	move.w	d0,x_vel(a0)
0001b1aa 31400014	move.w	d0,inertia(a0)
0001b1ae 1140002a	move.b	d0,obj_control(a0)
0001b1b2 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
0001b1b8 55280024	subq.b	#2,routine(a0)
0001b1bc 317c00780030	move.w	#$78,invulnerable_time(a0)
0001b1c2 117c00000039	move.b	#0,spindash_flag(a0)
0001b1c8 4e75	rts	
0001b1ca 55280024	subq.b	#2,routine(a0)
0001b1ce 117c00000025	move.b	#0,routine_secondary(a0)
0001b1d4 6100ef86	bsr.w	Sonic_RecordPos
0001b1d8 61000176	bsr.w	Sonic_Animate
0001b1dc 6100066a	bsr.w	LoadSonicDynPLC
0001b1e0 4ef9000164f4	jmp	(DisplaySprite).l
0001b1e6 4a78fffa	tst.w	(Debug_mode_flag).w
0001b1ea 6714	beq.s	+
0001b1ec 08380004f605	btst	#button_B,(Ctrl_1_Press).w
0001b1f2 670c	beq.s	+
0001b1f4 31fc0001fe08	move.w	#1,(Debug_placement_mode).w
0001b1fa 4238f7cc	clr.b	(Control_Locked).w
0001b1fe 4e75	rts	
0001b200 6100001a	bsr.w	CheckGameOver
0001b204 4eb900016380	jsr	(ObjectMoveAndFall).l
0001b20a 6100ef50	bsr.w	Sonic_RecordPos
0001b20e 61000140	bsr.w	Sonic_Animate
0001b212 61000634	bsr.w	LoadSonicDynPLC
0001b216 4ef9000164f4	jmp	(DisplaySprite).l
0001b21c 11fc0001eebe	move.b	#1,(Scroll_lock).w
0001b222 117c00000039	move.b	#0,spindash_flag(a0)
0001b228 3038eece	move.w	(Camera_Max_Y_pos).w,d0
0001b22c 06400100	addi.w	#$100,d0
0001b230 b068000c	cmp.w	y_pos(a0),d0
0001b234 6c0000e4	bge.w	return_1B31A
0001b238 117c00080024	move.b	#8,routine(a0)
0001b23e 317c003c003a	move.w	#60,restart_countdown(a0)
0001b244 5238fe1c	addq.b	#1,(Update_HUD_lives).w
0001b248 5338fe12	subq.b	#1,(Life_count).w
0001b24c 6640	bne.s	Obj01_ResetLevel
0001b24e 317c0000003a	move.w	#0,restart_countdown(a0)
0001b254 11fc0039b080	move.b	#ObjID_GameOver,(GameOver_GameText+id).w
0001b25a 11fc0039b0c0	move.b	#ObjID_GameOver,(GameOver_OverText+id).w
0001b260 11fc0001b0da	move.b	#1,(GameOver_OverText+mapping_frame).w
0001b266 31c8b0be	move.w	a0,(GameOver_GameText+parent).w
0001b26a 4238fe1a	clr.b	(Time_Over_flag).w
0001b26e 4238fe1e	clr.b	(Update_HUD_timer).w
0001b272 4238feca	clr.b	(Update_HUD_timer_2P).w
0001b276 117c00080024	move.b	#8,routine(a0)
0001b27c 303c009b	move.w	#MusID_GameOver,d0
0001b280 4eb90000135e	jsr	(PlayMusic).l
0001b286 7003	moveq	#PLCID_GameOver,d0
0001b288 4ef90000161e	jmp	(LoadPLC).l
0001b28e 4a38fe1a	tst.b	(Time_Over_flag).w
0001b292 6724	beq.s	Obj01_ResetLevel_Part2
0001b294 317c0000003a	move.w	#0,restart_countdown(a0)
0001b29a 11fc0039b080	move.b	#ObjID_TimeOver,(TimeOver_TimeText+id).w
0001b2a0 11fc0039b0c0	move.b	#ObjID_TimeOver,(TimeOver_OverText+id).w
0001b2a6 11fc0002b09a	move.b	#2,(TimeOver_TimeText+mapping_frame).w
0001b2ac 11fc0003b0da	move.b	#3,(TimeOver_OverText+mapping_frame).w
0001b2b2 31c8b0be	move.w	a0,(TimeOver_TimeText+parent).w
0001b2b6 60b6	bra.s	Obj01_Finished
0001b2b8 4a78ffd8	tst.w	(Two_player_mode).w
0001b2bc 675c	beq.s	return_1B31A
0001b2be 11fc0000eebe	move.b	#0,(Scroll_lock).w
0001b2c4 117c000a0024	move.b	#$A,routine(a0)
0001b2ca 3178fe320008	move.w	(Saved_x_pos).w,x_pos(a0)
0001b2d0 3178fe34000c	move.w	(Saved_y_pos).w,y_pos(a0)
0001b2d6 3178fe3c0002	move.w	(Saved_art_tile).w,art_tile(a0)
0001b2dc 3178fe3e003e	move.w	(Saved_Solid_bits).w,top_solid_bit(a0)
0001b2e2 4278fe20	clr.w	(Ring_count).w
0001b2e6 4238fe1b	clr.b	(Extra_life_flags).w
0001b2ea 117c0000002a	move.b	#0,obj_control(a0)
0001b2f0 117c0005001c	move.b	#5,anim(a0)
0001b2f6 317c00000010	move.w	#0,x_vel(a0)
0001b2fc 317c00000012	move.w	#0,y_vel(a0)
0001b302 317c00000014	move.w	#0,inertia(a0)
0001b308 117c00020022	move.b	#1<<status.player.in_air,status(a0)
0001b30e 317c0000002e	move.w	#0,move_lock(a0)
0001b314 317c0000003a	move.w	#0,restart_countdown(a0)
0001b31a 4e75	rts	
0001b31c 4a68003a	tst.w	restart_countdown(a0)
0001b320 670c	beq.s	+
0001b322 5368003a	subq.w	#1,restart_countdown(a0)
0001b326 6606	bne.s	+
0001b328 31fc0001fe02	move.w	#1,(Level_Inactive_flag).w
0001b32e 4e75	rts	
0001b330 4a78eeb0	tst.w	(Camera_X_pos_diff).w
0001b334 660c	bne.s	+
0001b336 4a78eeb2	tst.w	(Camera_Y_pos_diff).w
0001b33a 6606	bne.s	+
0001b33c 117c00020024	move.b	#2,routine(a0)
0001b342 6100000c	bsr.w	Sonic_Animate
0001b346 61000500	bsr.w	LoadSonicDynPLC
0001b34a 4ef9000164f4	jmp	(DisplaySprite).l
0001b350 43f90001b618	lea	(SonicAniData).l,a1
0001b356 4a38fe19	tst.b	(Super_Sonic_flag).w
0001b35a 6706	beq.s	+
0001b35c 43f90001b7c6	lea	(SuperSonicAniData).l,a1
0001b362 7000	moveq	#0,d0
0001b364 1028001c	move.b	anim(a0),d0
0001b368 b028001d	cmp.b	prev_anim(a0),d0
0001b36c 6716	beq.s	SAnim_Do
0001b36e 1140001d	move.b	d0,prev_anim(a0)
0001b372 117c0000001b	move.b	#0,anim_frame(a0)
0001b378 117c0000001e	move.b	#0,anim_frame_duration(a0)
0001b37e 08a800050022	bclr	#status.player.pushing,status(a0)
0001b384 d040	add.w	d0,d0
0001b386 d2f10000	adda.w	(a1,d0.w),a1
0001b38a 1011	move.b	(a1),d0
0001b38c 6b66	bmi.s	SAnim_WalkRun
0001b38e 12280022	move.b	status(a0),d1
0001b392 02010001	andi.b	#1<<status.player.x_flip,d1
0001b396 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
0001b39c 83280001	or.b	d1,render_flags(a0)
0001b3a0 5328001e	subq.b	#1,anim_frame_duration(a0)
0001b3a4 6a1c	bpl.s	SAnim_Delay
0001b3a6 1140001e	move.b	d0,anim_frame_duration(a0)
0001b3aa 7200	moveq	#0,d1
0001b3ac 1228001b	move.b	anim_frame(a0),d1
0001b3b0 10311001	move.b	1(a1,d1.w),d0
0001b3b4 0c0000f0	cmpi.b	#$F0,d0
0001b3b8 640a	bhs.s	SAnim_End_FF
0001b3ba 1140001a	move.b	d0,mapping_frame(a0)
0001b3be 5228001b	addq.b	#1,anim_frame(a0)
0001b3c2 4e75	rts	
0001b3c4 5200	addq.b	#1,d0
0001b3c6 660c	bne.s	SAnim_End_FE
0001b3c8 117c0000001b	move.b	#0,anim_frame(a0)
0001b3ce 10290001	move.b	1(a1),d0
0001b3d2 60e6	bra.s	SAnim_Next
0001b3d4 5200	addq.b	#1,d0
0001b3d6 6610	bne.s	SAnim_End_FD
0001b3d8 10311002	move.b	2(a1,d1.w),d0
0001b3dc 9128001b	sub.b	d0,anim_frame(a0)
0001b3e0 9200	sub.b	d0,d1
0001b3e2 10311001	move.b	1(a1,d1.w),d0
0001b3e6 60d2	bra.s	SAnim_Next
0001b3e8 5200	addq.b	#1,d0
0001b3ea 6606	bne.s	SAnim_End
0001b3ec 11711002001c	move.b	2(a1,d1.w),anim(a0)
0001b3f2 4e75	rts	
0001b3f4 5200	addq.b	#1,d0
0001b3f6 6600018e	bne.w	SAnim_Roll
0001b3fa 7000	moveq	#0,d0
0001b3fc 10280027	move.b	flip_angle(a0),d0
0001b400 6600011e	bne.w	SAnim_Tumble
0001b404 7200	moveq	#0,d1
0001b406 10280026	move.b	angle(a0),d0
0001b40a 6b04	bmi.s	+
0001b40c 6702	beq.s	+
0001b40e 5300	subq.b	#1,d0
0001b410 14280022	move.b	status(a0),d2
0001b414 02020001	andi.b	#1<<status.player.x_flip,d2
0001b418 6602	bne.s	+
0001b41a 4600	not.b	d0
0001b41c 06000010	addi.b	#$10,d0
0001b420 6a02	bpl.s	+
0001b422 7203	moveq	#1<<render_flags.x_flip|1<<render_flags.y_flip,d1
0001b424 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
0001b42a b302	eor.b	d1,d2
0001b42c 85280001	or.b	d2,render_flags(a0)
0001b430 082800050022	btst	#status.player.pushing,status(a0)
0001b436 6600019a	bne.w	SAnim_Push
0001b43a e808	lsr.b	#4,d0
0001b43c 02000006	andi.b	#6,d0
0001b440 34280014	move.w	inertia(a0),d2
0001b444 6a02	bpl.s	.skip
0001b446 4442	neg.w	d2
0001b448 4a28002b	tst.b	status_secondary(a0)
0001b44c 6a000004	bpl.w	+
0001b450 d442	add.w	d2,d2
0001b452 4a38fe19	tst.b	(Super_Sonic_flag).w
0001b456 6656	bne.s	SAnim_Super
0001b458 43f90001b666	lea	(SonAni_Run).l,a1
0001b45e 0c420600	cmpi.w	#$600,d2
0001b462 6408	bhs.s	+
0001b464 43f90001b65c	lea	(SonAni_Walk).l,a1
0001b46a d000	add.b	d0,d0
0001b46c d000	add.b	d0,d0
0001b46e 1600	move.b	d0,d3
0001b470 7200	moveq	#0,d1
0001b472 1228001b	move.b	anim_frame(a0),d1
0001b476 10311001	move.b	1(a1,d1.w),d0
0001b47a 0c0000ff	cmpi.b	#-1,d0
0001b47e 660a	bne.s	+
0001b480 117c0000001b	move.b	#0,anim_frame(a0)
0001b486 10290001	move.b	1(a1),d0
0001b48a 1140001a	move.b	d0,mapping_frame(a0)
0001b48e d728001a	add.b	d3,mapping_frame(a0)
0001b492 5328001e	subq.b	#1,anim_frame_duration(a0)
0001b496 6a14	bpl.s	return_1B4AC
0001b498 4442	neg.w	d2
0001b49a 06420800	addi.w	#$800,d2
0001b49e 6a02	bpl.s	+
0001b4a0 7400	moveq	#0,d2
0001b4a2 e04a	lsr.w	#8,d2
0001b4a4 1142001e	move.b	d2,anim_frame_duration(a0)
0001b4a8 5228001b	addq.b	#1,anim_frame(a0)
0001b4ac 4e75	rts	
0001b4ae 43f90001b810	lea	(SupSonAni_Run).l,a1
0001b4b4 0c420800	cmpi.w	#$800,d2
0001b4b8 640c	bhs.s	SAnim_SuperRun
0001b4ba 43f90001b806	lea	(SupSonAni_Walk).l,a1
0001b4c0 d000	add.b	d0,d0
0001b4c2 d000	add.b	d0,d0
0001b4c4 6002	bra.s	SAnim_SuperWalk
0001b4c6 e208	lsr.b	#1,d0
0001b4c8 1600	move.b	d0,d3
0001b4ca 7200	moveq	#0,d1
0001b4cc 1228001b	move.b	anim_frame(a0),d1
0001b4d0 10311001	move.b	1(a1,d1.w),d0
0001b4d4 0c0000ff	cmpi.b	#-1,d0
0001b4d8 660a	bne.s	+
0001b4da 117c0000001b	move.b	#0,anim_frame(a0)
0001b4e0 10290001	move.b	1(a1),d0
0001b4e4 1140001a	move.b	d0,mapping_frame(a0)
0001b4e8 d728001a	add.b	d3,mapping_frame(a0)
0001b4ec 1238fe05	move.b	(Level_frame_counter+1).w,d1
0001b4f0 02010003	andi.b	#3,d1
0001b4f4 660e	bne.s	+
0001b4f6 0c2800b5001a	cmpi.b	#$B5,mapping_frame(a0)
0001b4fc 6406	bhs.s	+
0001b4fe 06280020001a	addi.b	#$20,mapping_frame(a0)
0001b504 5328001e	subq.b	#1,anim_frame_duration(a0)
0001b508 6a14	bpl.s	return_1B51E
0001b50a 4442	neg.w	d2
0001b50c 06420800	addi.w	#$800,d2
0001b510 6a02	bpl.s	+
0001b512 7400	moveq	#0,d2
0001b514 e04a	lsr.w	#8,d2
0001b516 1142001e	move.b	d2,anim_frame_duration(a0)
0001b51a 5228001b	addq.b	#1,anim_frame(a0)
0001b51e 4e75	rts	
0001b520 10280027	move.b	flip_angle(a0),d0
0001b524 7200	moveq	#0,d1
0001b526 14280022	move.b	status(a0),d2
0001b52a 02020001	andi.b	#1<<status.player.x_flip,d2
0001b52e 661e	bne.s	SAnim_Tumble_Left
0001b530 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
0001b536 0600000b	addi.b	#$B,d0
0001b53a 80fc0016	divu.w	#$16,d0
0001b53e 0600005f	addi.b	#$5F,d0
0001b542 1140001a	move.b	d0,mapping_frame(a0)
0001b546 117c0000001e	move.b	#0,anim_frame_duration(a0)
0001b54c 4e75	rts	
0001b54e 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
0001b554 4a280029	tst.b	flip_turned(a0)
0001b558 670c	beq.s	loc_1B566
0001b55a 002800010001	ori.b	#1<<render_flags.x_flip,render_flags(a0)
0001b560 0600000b	addi.b	#$B,d0
0001b564 600c	bra.s	loc_1B572
0001b566 002800030001	ori.b	#1<<render_flags.x_flip|1<<render_flags.y_flip,render_flags(a0)
0001b56c 4400	neg.b	d0
0001b56e 0600008f	addi.b	#$8F,d0
0001b572 80fc0016	divu.w	#$16,d0
0001b576 0600005f	addi.b	#$5F,d0
0001b57a 1140001a	move.b	d0,mapping_frame(a0)
0001b57e 117c0000001e	move.b	#0,anim_frame_duration(a0)
0001b584 4e75	rts	
0001b586 5328001e	subq.b	#1,anim_frame_duration(a0)
0001b58a 6a00fe36	bpl.w	SAnim_Delay
0001b58e 5200	addq.b	#1,d0
0001b590 6640	bne.s	SAnim_Push
0001b592 34280014	move.w	inertia(a0),d2
0001b596 6a02	bpl.s	.skip
0001b598 4442	neg.w	d2
0001b59a 43f90001b67a	lea	(SonAni_Roll2).l,a1
0001b5a0 0c420600	cmpi.w	#$600,d2
0001b5a4 6406	bhs.s	+
0001b5a6 43f90001b670	lea	(SonAni_Roll).l,a1
0001b5ac 4442	neg.w	d2
0001b5ae 06420400	addi.w	#$400,d2
0001b5b2 6a02	bpl.s	+
0001b5b4 7400	moveq	#0,d2
0001b5b6 e04a	lsr.w	#8,d2
0001b5b8 1142001e	move.b	d2,anim_frame_duration(a0)
0001b5bc 12280022	move.b	status(a0),d1
0001b5c0 02010001	andi.b	#1<<status.player.x_flip,d1
0001b5c4 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
0001b5ca 83280001	or.b	d1,render_flags(a0)
0001b5ce 6000fdda	bra.w	SAnim_Do2
0001b5d2 5328001e	subq.b	#1,anim_frame_duration(a0)
0001b5d6 6a00fdea	bpl.w	SAnim_Delay
0001b5da 34280014	move.w	inertia(a0),d2
0001b5de 6b02	bmi.s	+
0001b5e0 4442	neg.w	d2
0001b5e2 06420800	addi.w	#$800,d2
0001b5e6 6a02	bpl.s	+
0001b5e8 7400	moveq	#0,d2
0001b5ea ec4a	lsr.w	#6,d2
0001b5ec 1142001e	move.b	d2,anim_frame_duration(a0)
0001b5f0 43f90001b684	lea	(SonAni_Push).l,a1
0001b5f6 4a38fe19	tst.b	(Super_Sonic_flag).w
0001b5fa 6706	beq.s	+
0001b5fc 43f90001b81a	lea	(SupSonAni_Push).l,a1
0001b602 12280022	move.b	status(a0),d1
0001b606 02010001	andi.b	#1<<status.player.x_flip,d1
0001b60a 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
0001b610 83280001	or.b	d1,render_flags(a0)
0001b614 6000fd94	bra.w	SAnim_Do2
0001b848 7000	moveq	#0,d0
0001b84a 1028001a	move.b	mapping_frame(a0),d0
0001b84e b038f766	cmp.b	(Sonic_LastLoadedDPLC).w,d0
0001b852 6746	beq.s	return_1B89A
0001b854 11c0f766	move.b	d0,(Sonic_LastLoadedDPLC).w
0001b858 45f9000714e0	lea	(MapRUnc_Sonic).l,a2
0001b85e d040	add.w	d0,d0
0001b860 d4f20000	adda.w	(a2,d0.w),a2
0001b864 3a1a	move.w	(a2)+,d5
0001b866 5345	subq.w	#1,d5
0001b868 6b30	bmi.s	return_1B89A
0001b86a 383cf000	move.w	#tiles_to_bytes(ArtTile_ArtUnc_Sonic),d4
0001b86e 7200	moveq	#0,d1
0001b870 321a	move.w	(a2)+,d1
0001b872 3601	move.w	d1,d3
0001b874 e04b	lsr.w	#8,d3
0001b876 024300f0	andi.w	#$F0,d3
0001b87a 06430010	addi.w	#$10,d3
0001b87e 02410fff	andi.w	#$FFF,d1
0001b882 eb89	lsl.l	#5,d1
0001b884 068100050000	addi.l	#ArtUnc_Sonic,d1
0001b88a 3404	move.w	d4,d2
0001b88c d843	add.w	d3,d4
0001b88e d843	add.w	d3,d4
0001b890 4eb90000144e	jsr	(QueueDMATransfer).l
0001b896 51cdffd6	dbf	d5,SPLC_ReadEntry
0001b89a 4e75	rts	
0001b89c 4ef90003f926	jmp	(extractJmpToName("JmpTo_KillCharacter")).l
0001b8a4 0c780002ff70	cmpi.w	#2,(Player_mode).w
0001b8aa 6612	bne.s	+
0001b8ac 31f8eec8eef8	move.w	(Camera_Min_X_pos).w,(Tails_Min_X_pos).w
0001b8b2 31f8eecaeefa	move.w	(Camera_Max_X_pos).w,(Tails_Max_X_pos).w
0001b8b8 31f8eeceeefe	move.w	(Camera_Max_Y_pos).w,(Tails_Max_Y_pos).w
0001b8be 7000	moveq	#0,d0
0001b8c0 10280024	move.b	routine(a0),d0
0001b8c4 323b0006	move.w	Obj02_Index(pc,d0.w),d1
0001b8c8 4efb1002	jmp	Obj02_Index(pc,d1.w)
0001b8d8 54280024	addq.b	#2,routine(a0)
0001b8dc 117c000f0016	move.b	#$F,y_radius(a0)
0001b8e2 117c00090017	move.b	#9,x_radius(a0)
0001b8e8 217c000739e20004	move.l	#MapUnc_Tails,mappings(a0)
0001b8f0 117c00020018	move.b	#2,priority(a0)
0001b8f6 117c00180019	move.b	#$18,width_pixels(a0)
0001b8fc 117c00840001	move.b	#1<<render_flags.on_screen|1<<render_flags.level_fg,render_flags(a0)
0001b902 31fc0600fec0	move.w	#$600,(Tails_top_speed).w
0001b908 31fc000cfec2	move.w	#$C,(Tails_acceleration).w
0001b90e 31fc0080fec4	move.w	#$80,(Tails_deceleration).w
0001b914 0c780002ff70	cmpi.w	#2,(Player_mode).w
0001b91a 6636	bne.s	Obj02_Init_2Pmode
0001b91c 4a38fe30	tst.b	(Last_star_pole_hit).w
0001b920 664c	bne.s	Obj02_Init_Continued
0001b922 317c07a00002	move.w	#make_art_tile(ArtTile_ArtUnc_Tails,0,0),art_tile(a0)
0001b928 6100b444	bsr.w	Adjust2PArtPointer
0001b92c 117c000c003e	move.b	#$C,top_solid_bit(a0)
0001b932 117c000d003f	move.b	#$D,lrb_solid_bit(a0)
0001b938 31e80008fe32	move.w	x_pos(a0),(Saved_x_pos).w
0001b93e 31e8000cfe34	move.w	y_pos(a0),(Saved_y_pos).w
0001b944 31e80002fe3c	move.w	art_tile(a0),(Saved_art_tile).w
0001b94a 31e8003efe3e	move.w	top_solid_bit(a0),(Saved_Solid_bits).w
0001b950 601c	bra.s	Obj02_Init_Continued
0001b952 317c07a00002	move.w	#make_art_tile(ArtTile_ArtUnc_Tails,0,0),art_tile(a0)
0001b958 6100b414	bsr.w	Adjust2PArtPointer
0001b95c 3178b03e003e	move.w	(MainCharacter+top_solid_bit).w,top_solid_bit(a0)
0001b962 4a78b002	tst.w	(MainCharacter+art_tile).w
0001b966 6a06	bpl.s	Obj02_Init_Continued
0001b968 006880000002	ori.w	#high_priority,art_tile(a0)
0001b96e 31e80008fee2	move.w	x_pos(a0),(Saved_x_pos_2P).w
0001b974 31e8000cfee4	move.w	y_pos(a0),(Saved_y_pos_2P).w
0001b97a 31e80002feec	move.w	art_tile(a0),(Saved_art_tile_2P).w
0001b980 31e8003efeee	move.w	top_solid_bit(a0),(Saved_Solid_bits_2P).w
0001b986 117c0000002c	move.b	#0,flips_remaining(a0)
0001b98c 117c0004002d	move.b	#4,flip_speed(a0)
0001b992 117c001e0028	move.b	#30,air_left(a0)
0001b998 31fc0000f708	move.w	#0,(Tails_CPU_routine).w
0001b99e 31fc0000f702	move.w	#0,(Tails_control_counter).w
0001b9a4 31fc0000f704	move.w	#0,(Tails_respawn_counter).w
0001b9aa 11fc0005d000	move.b	#ObjID_TailsTails,(Tails_Tails+id).w
0001b9b0 31c8d03e	move.w	a0,(Tails_Tails+parent).w
0001b9b4 b0fcb000	cmpa.w	#MainCharacter,a0
0001b9b8 661a	bne.s	Obj02_Control_Joypad2
0001b9ba 31f8f602f66a	move.w	(Ctrl_1_Logical).w,(Ctrl_2_Logical).w
0001b9c0 4a38f7cc	tst.b	(Control_Locked).w
0001b9c4 6624	bne.s	Obj02_Control_Part2
0001b9c6 31f8f604f66a	move.w	(Ctrl_1).w,(Ctrl_2_Logical).w
0001b9cc 31f8f604f602	move.w	(Ctrl_1).w,(Ctrl_1_Logical).w
0001b9d2 6016	bra.s	Obj02_Control_Part2
0001b9d4 4a38f7cf	tst.b	(Control_Locked_P2).w
0001b9d8 6606	bne.s	+
0001b9da 31f8f606f66a	move.w	(Ctrl_2).w,(Ctrl_2_Logical).w
0001b9e0 4a78ffd8	tst.w	(Two_player_mode).w
0001b9e4 6604	bne.s	Obj02_Control_Part2
0001b9e6 610000ec	bsr.w	TailsCPU_Control
0001b9ea 08280000002a	btst	#0,obj_control(a0)
0001b9f0 6612	bne.s	+
0001b9f2 7000	moveq	#0,d0
0001b9f4 10280022	move.b	status(a0),d0
0001b9f8 02400006	andi.w	#1<<status.player.in_air|1<<status.player.rolling,d0
0001b9fc 323b0050	move.w	Obj02_Modes(pc,d0.w),d1
0001ba00 4ebb104c	jsr	Obj02_Modes(pc,d1.w)
0001ba04 0c78ff00eecc	cmpi.w	#-$100,(Camera_Min_Y_pos).w
0001ba0a 6606	bne.s	+
0001ba0c 026807ff000c	andi.w	#$7FF,y_pos(a0)
0001ba12 6142	bsr.s	Tails_Display
0001ba14 61000522	bsr.w	Tails_RecordPos
0001ba18 61000538	bsr.w	Tails_Water
0001ba1c 1178f7680036	move.b	(Primary_Angle).w,next_tilt(a0)
0001ba22 1178f76a0037	move.b	(Secondary_Angle).w,tilt(a0)
0001ba28 4a38f7c7	tst.b	(WindTunnel_flag).w
0001ba2c 670c	beq.s	+
0001ba2e 4a28001c	tst.b	anim(a0)
0001ba32 6606	bne.s	+
0001ba34 1168001d001c	move.b	prev_anim(a0),anim(a0)
0001ba3a 61001388	bsr.w	Tails_Animate
0001ba3e 4a28002a	tst.b	obj_control(a0)
0001ba42 6b06	bmi.s	+
0001ba44 4eb90003f554	jsr	(TouchResponse).l
0001ba4a 60001760	bra.w	LoadTailsDynPLC
0001ba56 30280030	move.w	invulnerable_time(a0),d0
0001ba5a 6708	beq.s	Obj02_Display
0001ba5c 53680030	subq.w	#1,invulnerable_time(a0)
0001ba60 e648	lsr.w	#3,d0
0001ba62 6406	bcc.s	Obj02_ChkInvinc
0001ba64 4eb9000164f4	jsr	(DisplaySprite).l
0001ba6a 08280001002b	btst	#status_secondary.invincible,status_secondary(a0)
0001ba70 672a	beq.s	Obj02_ChkShoes
0001ba72 4a680032	tst.w	invincibility_time(a0)
0001ba76 6724	beq.s	Obj02_ChkShoes
0001ba78 53680032	subq.w	#1,invincibility_time(a0)
0001ba7c 661e	bne.s	Obj02_ChkShoes
0001ba7e 4a38f7aa	tst.b	(Current_Boss_ID).w
0001ba82 6612	bne.s	Obj02_RmvInvin
0001ba84 0c28000c0028	cmpi.b	#12,air_left(a0)
0001ba8a 650a	blo.s	Obj02_RmvInvin
0001ba8c 3038ff90	move.w	(Level_Music).w,d0
0001ba90 4eb90000135e	jsr	(PlayMusic).l
0001ba96 08a80001002b	bclr	#status_secondary.invincible,status_secondary(a0)
0001ba9c 08280002002b	btst	#status_secondary.speed_shoes,status_secondary(a0)
0001baa2 672e	beq.s	Obj02_ExitChk
0001baa4 4a680034	tst.w	speedshoes_time(a0)
0001baa8 6728	beq.s	Obj02_ExitChk
0001baaa 53680034	subq.w	#1,speedshoes_time(a0)
0001baae 6622	bne.s	Obj02_ExitChk
0001bab0 31fc0600fec0	move.w	#$600,(Tails_top_speed).w
0001bab6 31fc000cfec2	move.w	#$C,(Tails_acceleration).w
0001babc 31fc0080fec4	move.w	#$80,(Tails_deceleration).w
0001bac2 08a80002002b	bclr	#status_secondary.speed_shoes,status_secondary(a0)
0001bac8 303c00fc	move.w	#MusID_SlowDown,d0
0001bacc 4ef90000135e	jmp	(PlayMusic).l
0001bad2 4e75	rts	
0001bad4 1038f606	move.b	(Ctrl_2_Held).w,d0
0001bad8 0200007f	andi.b	#button_up_mask|button_down_mask|button_left_mask|button_right_mask|button_B_mask|button_C_mask|button_A_mask,d0
0001badc 6706	beq.s	+
0001bade 31fc0258f702	move.w	#600,(Tails_control_counter).w
0001bae4 43f8b000	lea	(MainCharacter).w,a1
0001bae8 3038f708	move.w	(Tails_CPU_routine).w,d0
0001baec 303b0006	move.w	TailsCPU_States(pc,d0.w),d0
0001baf0 4efb0002	jmp	TailsCPU_States(pc,d0.w)
0001bafe 31fc0006f708	move.w	#6,(Tails_CPU_routine).w
0001bb04 117c0000002a	move.b	#0,obj_control(a0)
0001bb0a 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
0001bb10 317c00000010	move.w	#0,x_vel(a0)
0001bb16 317c00000012	move.w	#0,y_vel(a0)
0001bb1c 317c00000014	move.w	#0,inertia(a0)
0001bb22 117c00000022	move.b	#0,status(a0)
0001bb28 31fc0000f704	move.w	#0,(Tails_respawn_counter).w
0001bb2e 4e75	rts	
0001bb30 1038f66a	move.b	(Ctrl_2_Held_Logical).w,d0
0001bb34 020000f0	andi.b	#button_B_mask|button_C_mask|button_A_mask|button_start_mask,d0
0001bb38 661a	bne.s	TailsCPU_Respawn
0001bb3a 3038fe04	move.w	(Level_frame_counter).w,d0
0001bb3e 0240003f	andi.w	#$3F,d0
0001bb42 6644	bne.s	return_1BB88
0001bb44 4a29002a	tst.b	obj_control(a1)
0001bb48 663e	bne.s	return_1BB88
0001bb4a 10290022	move.b	status(a1),d0
0001bb4e 020000d2	andi.b	#1<<status.player.in_air|1<<status.player.rolljumping|1<<status.player.underwater|1<<status.player.prevent_tails_respawn,d0
0001bb52 6634	bne.s	return_1BB88
0001bb54 31fc0004f708	move.w	#4,(Tails_CPU_routine).w
0001bb5a 30290008	move.w	x_pos(a1),d0
0001bb5e 31400008	move.w	d0,x_pos(a0)
0001bb62 31c0f70a	move.w	d0,(Tails_CPU_target_x).w
0001bb66 3029000c	move.w	y_pos(a1),d0
0001bb6a 31c0f70c	move.w	d0,(Tails_CPU_target_y).w
0001bb6e 044000c0	subi.w	#$C0,d0
0001bb72 3140000c	move.w	d0,y_pos(a0)
0001bb76 006880000002	ori.w	#high_priority,art_tile(a0)
0001bb7c 117c00000039	move.b	#0,spindash_flag(a0)
0001bb82 317c0000003a	move.w	#0,spindash_counter(a0)
0001bb88 4e75	rts	
0001bb8a 4a280001	tst.b	render_flags(a0)
0001bb8e 6b38	bmi.s	TailsCPU_FlyingOnscreen
0001bb90 5278f704	addq.w	#1,(Tails_respawn_counter).w
0001bb94 0c78012cf704	cmpi.w	#$12C,(Tails_respawn_counter).w
0001bb9a 6532	blo.s	TailsCPU_Flying_Part2
0001bb9c 31fc0000f704	move.w	#0,(Tails_respawn_counter).w
0001bba2 31fc0002f708	move.w	#2,(Tails_CPU_routine).w
0001bba8 117c0081002a	move.b	#$81,obj_control(a0)
0001bbae 117c00020022	move.b	#1<<status.player.in_air,status(a0)
0001bbb4 317c00000008	move.w	#0,x_pos(a0)
0001bbba 317c0000000c	move.w	#0,y_pos(a0)
0001bbc0 117c0020001c	move.b	#AniIDTailsAni_Fly,anim(a0)
0001bbc6 4e75	rts	
0001bbc8 31fc0000f704	move.w	#0,(Tails_respawn_counter).w
0001bbce 45f8e500	lea	(Sonic_Pos_Record_Buf).w,a2
0001bbd2 343c0010	move.w	#$10,d2
0001bbd6 e50a	lsl.b	#2,d2
0001bbd8 5802	addq.b	#4,d2
0001bbda 3638eed2	move.w	(Sonic_Pos_Record_Index).w,d3
0001bbde 9602	sub.b	d2,d3
0001bbe0 31f23000f70a	move.w	(a2,d3.w),(Tails_CPU_target_x).w
0001bbe6 31f23002f70c	move.w	2(a2,d3.w),(Tails_CPU_target_y).w
0001bbec 4a38f730	tst.b	(Water_flag).w
0001bbf0 6712	beq.s	+
0001bbf2 3038f646	move.w	(Water_Level_1).w,d0
0001bbf6 04400010	subi.w	#$10,d0
0001bbfa b078f70c	cmp.w	(Tails_CPU_target_y).w,d0
0001bbfe 6c04	bge.s	+
0001bc00 31c0f70c	move.w	d0,(Tails_CPU_target_y).w
0001bc04 30280008	move.w	x_pos(a0),d0
0001bc08 9078f70a	sub.w	(Tails_CPU_target_x).w,d0
0001bc0c 6746	beq.s	loc_1BC54
0001bc0e 3400	move.w	d0,d2
0001bc10 6a02	bpl.s	.skip
0001bc12 4442	neg.w	d2
0001bc14 e84a	lsr.w	#4,d2
0001bc16 0c42000c	cmpi.w	#$C,d2
0001bc1a 6502	blo.s	+
0001bc1c 740c	moveq	#$C,d2
0001bc1e 12290010	move.b	x_vel(a1),d1
0001bc22 6a02	bpl.s	.skip
0001bc24 4401	neg.b	d1
0001bc26 d401	add.b	d1,d2
0001bc28 5242	addq.w	#1,d2
0001bc2a 4a40	tst.w	d0
0001bc2c 6b12	bmi.s	loc_1BC40
0001bc2e 08e800000022	bset	#status.player.x_flip,status(a0)
0001bc34 b440	cmp.w	d0,d2
0001bc36 6504	blo.s	+
0001bc38 3400	move.w	d0,d2
0001bc3a 7000	moveq	#0,d0
0001bc3c 4442	neg.w	d2
0001bc3e 6010	bra.s	loc_1BC50
0001bc40 08a800000022	bclr	#status.player.x_flip,status(a0)
0001bc46 4440	neg.w	d0
0001bc48 b440	cmp.w	d0,d2
0001bc4a 6504	blo.s	loc_1BC50
0001bc4c 1400	move.b	d0,d2
0001bc4e 7000	moveq	#0,d0
0001bc50 d5680008	add.w	d2,x_pos(a0)
0001bc54 7401	moveq	#1,d2
0001bc56 3228000c	move.w	y_pos(a0),d1
0001bc5a 9278f70c	sub.w	(Tails_CPU_target_y).w,d1
0001bc5e 6708	beq.s	loc_1BC68
0001bc60 6b02	bmi.s	loc_1BC64
0001bc62 4442	neg.w	d2
0001bc64 d568000c	add.w	d2,y_pos(a0)
0001bc68 45f8e400	lea	(Sonic_Stat_Record_Buf).w,a2
0001bc6c 14323002	move.b	2(a2,d3.w),d2
0001bc70 020200d2	andi.b	#$D2,d2
0001bc74 6668	bne.s	return_1BCDE
0001bc76 8240	or.w	d0,d1
0001bc78 6664	bne.s	return_1BCDE
0001bc7a 31fc0006f708	move.w	#6,(Tails_CPU_routine).w
0001bc80 117c0000002a	move.b	#0,obj_control(a0)
0001bc86 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
0001bc8c 317c00000010	move.w	#0,x_vel(a0)
0001bc92 317c00000012	move.w	#0,y_vel(a0)
0001bc98 317c00000014	move.w	#0,inertia(a0)
0001bc9e 117c00020022	move.b	#1<<status.player.in_air,status(a0)
0001bca4 317c0000002e	move.w	#0,move_lock(a0)
0001bcaa 02687fff0002	andi.w	#drawing_mask,art_tile(a0)
0001bcb0 4a290002	tst.b	art_tile(a1)
0001bcb4 6a06	bpl.s	+
0001bcb6 006880000002	ori.w	#high_priority,art_tile(a0)
0001bcbc 1169003e003e	move.b	top_solid_bit(a1),top_solid_bit(a0)
0001bcc2 1169003f003f	move.b	lrb_solid_bit(a1),lrb_solid_bit(a0)
0001bcc8 0c290009001c	cmpi.b	#AniIDSonAni_Spindash,anim(a1)
0001bcce 670e	beq.s	return_1BCDE
0001bcd0 10280039	move.b	spindash_flag(a0),d0
0001bcd4 6708	beq.s	return_1BCDE
0001bcd6 13400039	move.b	d0,spindash_flag(a1)
0001bcda 610055e8	bsr.w	loc_212C4
0001bcde 4e75	rts	
0001bce0 0c380006b024	cmpi.b	#6,(MainCharacter+routine).w
0001bce6 6526	blo.s	TailsCPU_Normal_SonicOK
0001bce8 31fc0004f708	move.w	#4,(Tails_CPU_routine).w
0001bcee 117c00000039	move.b	#0,spindash_flag(a0)
0001bcf4 317c0000003a	move.w	#0,spindash_counter(a0)
0001bcfa 117c0081002a	move.b	#$81,obj_control(a0)
0001bd00 117c00020022	move.b	#1<<status.player.in_air,status(a0)
0001bd06 117c0020001c	move.b	#AniIDTailsAni_Fly,anim(a0)
0001bd0c 4e75	rts	
0001bd0e 61000156	bsr.w	TailsCPU_CheckDespawn
0001bd12 4a78f702	tst.w	(Tails_control_counter).w
0001bd16 66000110	bne.w	TailsCPU_Normal_HumanControl
0001bd1a 4a28002a	tst.b	obj_control(a0)
0001bd1e 6b000108	bmi.w	TailsCPU_Normal_HumanControl
0001bd22 4a68002e	tst.w	move_lock(a0)
0001bd26 670c	beq.s	+
0001bd28 4a680014	tst.w	inertia(a0)
0001bd2c 6606	bne.s	+
0001bd2e 31fc0008f708	move.w	#8,(Tails_CPU_routine).w
0001bd34 43f8e500	lea	(Sonic_Pos_Record_Buf).w,a1
0001bd38 323c0010	move.w	#$10,d1
0001bd3c e509	lsl.b	#2,d1
0001bd3e 5801	addq.b	#4,d1
0001bd40 3038eed2	move.w	(Sonic_Pos_Record_Index).w,d0
0001bd44 9001	sub.b	d1,d0
0001bd46 34310000	move.w	(a1,d0.w),d2
0001bd4a 36310002	move.w	2(a1,d0.w),d3
0001bd4e 43f8e400	lea	(Sonic_Stat_Record_Buf).w,a1
0001bd52 32310000	move.w	(a1,d0.w),d1
0001bd56 18310002	move.b	2(a1,d0.w),d4
0001bd5a 3001	move.w	d1,d0
0001bd5c 082800050022	btst	#status.player.pushing,status(a0)
0001bd62 6708	beq.s	+
0001bd64 08040005	btst	#status.player.pushing,d4
0001bd68 6700009c	beq.w	TailsCPU_Normal_FilterAction_Part2
0001bd70 6748	beq.s	TailsCPU_Normal_Stand
0001bd72 6a24	bpl.s	TailsCPU_Normal_FollowRight
0001bd74 4442	neg.w	d2
0001bd76 0c420010	cmpi.w	#$10,d2
0001bd7a 6508	blo.s	+
0001bd7c 0241f3f3	andi.w	#~(((button_left_mask|button_right_mask)<<8)|(button_left_mask|button_right_mask)),d1
0001bd80 00410404	ori.w	#(button_left_mask<<8)|button_left_mask,d1
0001bd84 4a680014	tst.w	inertia(a0)
0001bd88 6744	beq.s	TailsCPU_Normal_FilterAction
0001bd8a 082800000022	btst	#status.player.x_flip,status(a0)
0001bd90 673c	beq.s	TailsCPU_Normal_FilterAction
0001bd92 53680008	subq.w	#1,x_pos(a0)
0001bd96 6036	bra.s	TailsCPU_Normal_FilterAction
0001bd98 0c420010	cmpi.w	#$10,d2
0001bd9c 6508	blo.s	+
0001bd9e 0241f3f3	andi.w	#~(((button_left_mask|button_right_mask)<<8)|(button_left_mask|button_right_mask)),d1
0001bda2 00410808	ori.w	#(button_right_mask<<8)|button_right_mask,d1
0001bda6 4a680014	tst.w	inertia(a0)
0001bdaa 6722	beq.s	TailsCPU_Normal_FilterAction
0001bdac 082800000022	btst	#status.player.x_flip,status(a0)
0001bdb2 661a	bne.s	TailsCPU_Normal_FilterAction
0001bdb4 52680008	addq.w	#1,x_pos(a0)
0001bdb8 6014	bra.s	TailsCPU_Normal_FilterAction
0001bdba 08a800000022	bclr	#status.player.x_flip,status(a0)
0001bdc0 1004	move.b	d4,d0
0001bdc2 02000001	andi.b	#1,d0
0001bdc6 6706	beq.s	TailsCPU_Normal_FilterAction
0001bdc8 08e800000022	bset	#status.player.x_flip,status(a0)
0001bdce 4a38f70f	tst.b	(Tails_CPU_jumping).w
0001bdd2 6712	beq.s	+
0001bdd4 00417000	ori.w	#((button_B_mask|button_C_mask|button_A_mask)<<8),d1
0001bdd8 082800010022	btst	#status.player.in_air,status(a0)
0001bdde 6642	bne.s	TailsCPU_Normal_SendAction
0001bde0 11fc0000f70f	move.b	#0,(Tails_CPU_jumping).w
0001bde6 3038fe04	move.w	(Level_frame_counter).w,d0
0001bdea 024000ff	andi.w	#$FF,d0
0001bdee 6706	beq.s	+
0001bdf0 0c420040	cmpi.w	#$40,d2
0001bdf4 642c	bhs.s	TailsCPU_Normal_SendAction
0001bdf6 9668000c	sub.w	y_pos(a0),d3
0001bdfa 6726	beq.s	TailsCPU_Normal_SendAction
0001bdfc 6a24	bpl.s	TailsCPU_Normal_SendAction
0001bdfe 4443	neg.w	d3
0001be00 0c430020	cmpi.w	#$20,d3
0001be04 651c	blo.s	TailsCPU_Normal_SendAction
0001be06 1038fe05	move.b	(Level_frame_counter+1).w,d0
0001be0a 0200003f	andi.b	#$3F,d0
0001be0e 6612	bne.s	TailsCPU_Normal_SendAction
0001be10 0c280008001c	cmpi.b	#AniIDSonAni_Duck,anim(a0)
0001be16 670a	beq.s	TailsCPU_Normal_SendAction
0001be18 00417070	ori.w	#((button_B_mask|button_C_mask|button_A_mask)<<8)|(button_B_mask|button_C_mask|button_A_mask),d1
0001be1c 11fc0001f70f	move.b	#1,(Tails_CPU_jumping).w
0001be22 31c1f66a	move.w	d1,(Ctrl_2_Logical).w
0001be26 4e75	rts	
0001be28 4a78f702	tst.w	(Tails_control_counter).w
0001be2c 6704	beq.s	+
0001be2e 5378f702	subq.w	#1,(Tails_control_counter).w
0001be32 4e75	rts	
0001be34 31fc0000f702	move.w	#0,(Tails_control_counter).w
0001be3a 31fc0000f704	move.w	#0,(Tails_respawn_counter).w
0001be40 31fc0002f708	move.w	#2,(Tails_CPU_routine).w
0001be46 117c0081002a	move.b	#$81,obj_control(a0)
0001be4c 117c00020022	move.b	#1<<status.player.in_air,status(a0)
0001be52 317c40000008	move.w	#$4000,x_pos(a0)
0001be58 317c0000000c	move.w	#0,y_pos(a0)
0001be5e 117c0020001c	move.b	#AniIDTailsAni_Fly,anim(a0)
0001be64 4e75	rts	
0001be66 4a280001	tst.b	render_flags(a0)
0001be6a 6b30	bmi.s	TailsCPU_ResetRespawnTimer
0001be6c 082800030022	btst	#status.player.on_object,status(a0)
0001be72 6718	beq.s	TailsCPU_TickRespawnTimer
0001be74 7000	moveq	#0,d0
0001be76 1028003d	move.b	interact(a0),d0
0001be7a ed48	lsl.w	#object_size_bits,d0
0001be7c 0680ffffb000	addi.l	#Object_RAM,d0
0001be82 2640	movea.l	d0,a3
0001be84 1038f70e	move.b	(Tails_interact_ID).w,d0
0001be88 b013	cmp.b	id(a3),d0
0001be8a 660c	bne.s	BranchTo_TailsCPU_Despawn
0001be8c 5278f704	addq.w	#1,(Tails_respawn_counter).w
0001be90 0c78012cf704	cmpi.w	#$12C,(Tails_respawn_counter).w
0001be96 650a	blo.s	TailsCPU_UpdateObjInteract
0001be98 6000ff9a	bra.w	TailsCPU_Despawn
0001be9c 31fc0000f704	move.w	#0,(Tails_respawn_counter).w
0001bea2 7000	moveq	#0,d0
0001bea4 1028003d	move.b	interact(a0),d0
0001bea8 ed48	lsl.w	#object_size_bits,d0
0001beaa 0680ffffb000	addi.l	#Object_RAM,d0
0001beb0 2640	movea.l	d0,a3
0001beb2 11d3f70e	move.b	id(a3),(Tails_interact_ID).w
0001beb6 4e75	rts	
0001beb8 6100ffac	bsr.w	TailsCPU_CheckDespawn
0001bebc 4a78f702	tst.w	(Tails_control_counter).w
0001bec0 66000074	bne.w	return_1BF36
0001bec4 4a68002e	tst.w	move_lock(a0)
0001bec8 666c	bne.s	return_1BF36
0001beca 4a280039	tst.b	spindash_flag(a0)
0001bece 663c	bne.s	TailsCPU_Panic_ChargingDash
0001bed0 4a680014	tst.w	inertia(a0)
0001bed4 6660	bne.s	return_1BF36
0001bed6 08a800000022	bclr	#status.player.x_flip,status(a0)
0001bedc 30280008	move.w	x_pos(a0),d0
0001bee0 90690008	sub.w	x_pos(a1),d0
0001bee4 6506	bcs.s	+
0001bee6 08e800000022	bset	#status.player.x_flip,status(a0)
0001beec 31fc0202f66a	move.w	#(button_down_mask<<8)|button_down_mask,(Ctrl_2_Logical).w
0001bef2 1038fe05	move.b	(Level_frame_counter+1).w,d0
0001bef6 0200007f	andi.b	#$7F,d0
0001befa 6720	beq.s	TailsCPU_Panic_ReleaseDash
0001befc 0c280008001c	cmpi.b	#AniIDSonAni_Duck,anim(a0)
0001bf02 6632	bne.s	return_1BF36
0001bf04 31fc7272f66a	move.w	#((button_down_mask|button_B_mask|button_C_mask|button_A_mask)<<8)|(button_down_mask|button_B_mask|button_C_mask|button_A_mask),(Ctrl_2_Logical).w
0001bf0a 4e75	rts	
0001bf0c 31fc0202f66a	move.w	#(button_down_mask<<8)|button_down_mask,(Ctrl_2_Logical).w
0001bf12 1038fe05	move.b	(Level_frame_counter+1).w,d0
0001bf16 0200007f	andi.b	#$7F,d0
0001bf1a 660e	bne.s	TailsCPU_Panic_RevDash
0001bf1c 31fc0000f66a	move.w	#0,(Ctrl_2_Logical).w
0001bf22 31fc0006f708	move.w	#6,(Tails_CPU_routine).w
0001bf28 4e75	rts	
0001bf2a 0200001f	andi.b	#$1F,d0
0001bf2e 6606	bne.s	return_1BF36
0001bf30 00787070f66a	ori.w	#((button_B_mask|button_C_mask|button_A_mask)<<8)|(button_B_mask|button_C_mask|button_A_mask),(Ctrl_2_Logical).w
0001bf36 4e75	rts	
0001bf38 3038eed6	move.w	(Tails_Pos_Record_Index).w,d0
0001bf3c 43f8e600	lea	(Tails_Pos_Record_Buf).w,a1
0001bf40 43f10000	lea	(a1,d0.w),a1
0001bf44 32e80008	move.w	x_pos(a0),(a1)+
0001bf48 32e8000c	move.w	y_pos(a0),(a1)+
0001bf4c 5838eed7	addq.b	#4,(Tails_Pos_Record_Index+1).w
0001bf50 4e75	rts	
0001bf52 4a38f730	tst.b	(Water_flag).w
0001bf56 6602	bne.s	Obj02_InWater
0001bf58 4e75	rts	
0001bf5a 3038f646	move.w	(Water_Level_1).w,d0
0001bf5e b068000c	cmp.w	y_pos(a0),d0
0001bf62 6c4e	bge.s	Obj02_OutWater
0001bf64 08e800060022	bset	#status.player.underwater,status(a0)
0001bf6a 66ec	bne.s	return_1BF58
0001bf6c 2248	movea.l	a0,a1
0001bf6e 610018ae	bsr.w	ResumeMusic
0001bf72 11fc000ad0c0	move.b	#ObjID_SmallBubbles,(Tails_BreathingBubbles+id).w
0001bf78 11fc0081d0e8	move.b	#$81,(Tails_BreathingBubbles+subtype).w
0001bf7e 21c8d0fc	move.l	a0,(Tails_BreathingBubbles+obj0a_character).w
0001bf82 31fc0300fec0	move.w	#$300,(Tails_top_speed).w
0001bf88 31fc0006fec2	move.w	#6,(Tails_acceleration).w
0001bf8e 31fc0040fec4	move.w	#$40,(Tails_deceleration).w
0001bf94 e0e80010	asr	x_vel(a0)
0001bf98 e0e80012	asr	y_vel(a0)
0001bf9c e0e80012	asr	y_vel(a0)
0001bfa0 67b6	beq.s	return_1BF58
0001bfa2 31fc0100d15c	move.w	#(1<<8)|(0<<0),(Tails_Dust+anim).w
0001bfa8 303c00aa	move.w	#SndID_Splash,d0
0001bfac 4ef900001370	jmp	(PlaySound).l
0001bfb2 08a800060022	bclr	#status.player.underwater,status(a0)
0001bfb8 679e	beq.s	return_1BF58
0001bfba 2248	movea.l	a0,a1
0001bfbc 61001860	bsr.w	ResumeMusic
0001bfc0 31fc0600fec0	move.w	#$600,(Tails_top_speed).w
0001bfc6 31fc000cfec2	move.w	#$C,(Tails_acceleration).w
0001bfcc 31fc0080fec4	move.w	#$80,(Tails_deceleration).w
0001bfd2 0c2800040024	cmpi.b	#4,routine(a0)
0001bfd8 6704	beq.s	+
0001bfda e1e80012	asl	y_vel(a0)
0001bfde 4a680012	tst.w	y_vel(a0)
0001bfe2 6700ff74	beq.w	return_1BF58
0001bfe6 31fc0100d15c	move.w	#(1<<8)|(0<<0),(Tails_Dust+anim).w
0001bfec 2248	movea.l	a0,a1
0001bfee 6100182e	bsr.w	ResumeMusic
0001bff2 0c68f0000012	cmpi.w	#-$1000,y_vel(a0)
0001bff8 6e06	bgt.s	+
0001bffa 317cf0000012	move.w	#-$1000,y_vel(a0)
0001c000 303c00aa	move.w	#SndID_Splash,d0
0001c004 4ef900001370	jmp	(PlaySound).l
0001c00a 61000702	bsr.w	Tails_CheckSpindash
0001c00e 6100060e	bsr.w	Tails_Jump
0001c012 61000832	bsr.w	Tails_SlopeResist
0001c016 61000094	bsr.w	Tails_Move
0001c01a 6100059c	bsr.w	Tails_Roll
0001c01e 6100053a	bsr.w	Tails_LevelBound
0001c022 4eb9000163ac	jsr	(ObjectMove).l
0001c028 6100220a	bsr.w	AnglePos
0001c02c 6100088a	bsr.w	Tails_SlopeRepel
0001c030 4e75	rts	
0001c032 61000698	bsr.w	Tails_JumpHeight
0001c036 61000496	bsr.w	Tails_ChgJumpDir
0001c03a 6100051e	bsr.w	Tails_LevelBound
0001c03e 4eb900016380	jsr	(ObjectMoveAndFall).l
0001c044 082800060022	btst	#status.player.underwater,status(a0)
0001c04a 6706	beq.s	+
0001c04c 046800280012	subi.w	#$28,y_vel(a0)
0001c052 610008a6	bsr.w	Tails_JumpAngle
0001c056 61000902	bsr.w	Tails_DoLevelCollision
0001c05a 4e75	rts	
0001c05c 4a280039	tst.b	pinball_mode(a0)
0001c060 6604	bne.s	+
0001c062 610005ba	bsr.w	Tails_Jump
0001c066 61000814	bsr.w	Tails_RollRepel
0001c06a 6100033e	bsr.w	Tails_RollSpeed
0001c06e 610004ea	bsr.w	Tails_LevelBound
0001c072 4eb9000163ac	jsr	(ObjectMove).l
0001c078 610021ba	bsr.w	AnglePos
0001c07c 6100083a	bsr.w	Tails_SlopeRepel
0001c080 4e75	rts	
0001c082 61000648	bsr.w	Tails_JumpHeight
0001c086 61000446	bsr.w	Tails_ChgJumpDir
0001c08a 610004ce	bsr.w	Tails_LevelBound
0001c08e 4eb900016380	jsr	(ObjectMoveAndFall).l
0001c094 082800060022	btst	#status.player.underwater,status(a0)
0001c09a 6706	beq.s	+
0001c09c 046800280012	subi.w	#$28,y_vel(a0)
0001c0a2 61000856	bsr.w	Tails_JumpAngle
0001c0a6 610008b2	bsr.w	Tails_DoLevelCollision
0001c0aa 4e75	rts	
0001c0ac 3c38fec0	move.w	(Tails_top_speed).w,d6
0001c0b0 3a38fec2	move.w	(Tails_acceleration).w,d5
0001c0b4 3838fec4	move.w	(Tails_deceleration).w,d4
0001c0b8 4a28002b	tst.b	status_secondary(a0)
0001c0bc 6b000156	bmi.w	Obj02_Traction
0001c0c0 4a68002e	tst.w	move_lock(a0)
0001c0c4 6600010a	bne.w	Obj02_ResetScr
0001c0c8 08380002f66a	btst	#button_left,(Ctrl_2_Held_Logical).w
0001c0ce 6704	beq.s	Obj02_NotLeft
0001c0d0 610001d2	bsr.w	Tails_MoveLeft
0001c0d4 08380003f66a	btst	#button_right,(Ctrl_2_Held_Logical).w
0001c0da 6704	beq.s	Obj02_NotRight
0001c0dc 6100024c	bsr.w	Tails_MoveRight
0001c0e0 10280026	move.b	angle(a0),d0
0001c0e4 06000020	addi.b	#$20,d0
0001c0e8 020000c0	andi.b	#$C0,d0
0001c0ec 660000e2	bne.w	Obj02_ResetScr
0001c0f0 4a680014	tst.w	inertia(a0)
0001c0f4 660000da	bne.w	Obj02_ResetScr
0001c0f8 08a800050022	bclr	#status.player.pushing,status(a0)
0001c0fe 117c0005001c	move.b	#AniIDSonAni_Wait,anim(a0)
0001c104 082800030022	btst	#status.player.on_object,status(a0)
0001c10a 6736	beq.s	Tails_Balance
0001c10c 7000	moveq	#0,d0
0001c10e 1028003d	move.b	interact(a0),d0
0001c112 ed48	lsl.w	#object_size_bits,d0
0001c114 43f8b000	lea	(Object_RAM).w,a1
0001c118 43f10000	lea	(a1,d0.w),a1
0001c11c 4a290022	tst.b	status(a1)
0001c120 6b52	bmi.s	Tails_Lookup
0001c122 7200	moveq	#0,d1
0001c124 12290019	move.b	width_pixels(a1),d1
0001c128 3401	move.w	d1,d2
0001c12a d442	add.w	d2,d2
0001c12c 5942	subq.w	#4,d2
0001c12e d2680008	add.w	x_pos(a0),d1
0001c132 92690008	sub.w	x_pos(a1),d1
0001c136 0c410004	cmpi.w	#4,d1
0001c13a 6d2a	blt.s	Tails_BalanceOnObjLeft
0001c13c b242	cmp.w	d2,d1
0001c13e 6c16	bge.s	Tails_BalanceOnObjRight
0001c140 6032	bra.s	Tails_Lookup
0001c142 4eb90001ed56	jsr	(ChkFloorEdge).l
0001c148 0c41000c	cmpi.w	#$C,d1
0001c14c 6d26	blt.s	Tails_Lookup
0001c14e 0c2800030036	cmpi.b	#3,next_tilt(a0)
0001c154 6608	bne.s	Tails_BalanceLeft
0001c156 08a800000022	bclr	#status.player.x_flip,status(a0)
0001c15c 600e	bra.s	Tails_BalanceDone
0001c15e 0c2800030037	cmpi.b	#3,tilt(a0)
0001c164 660e	bne.s	Tails_Lookup
0001c166 08e800000022	bset	#status.player.x_flip,status(a0)
0001c16c 117c0006001c	move.b	#AniIDSonAni_Balance,anim(a0)
0001c172 605c	bra.s	Obj02_ResetScr
0001c174 08380000f66a	btst	#button_up,(Ctrl_2_Held_Logical).w
0001c17a 6726	beq.s	Tails_Duck
0001c17c 117c0007001c	move.b	#AniIDSonAni_LookUp,anim(a0)
0001c182 5278f66e	addq.w	#1,(Tails_Look_delay_counter).w
0001c186 0c780078f66e	cmpi.w	#$78,(Tails_Look_delay_counter).w
0001c18c 6548	blo.s	Obj02_ResetScr_Part2
0001c18e 31fc0078f66e	move.w	#$78,(Tails_Look_delay_counter).w
0001c194 0c7800c8eeda	cmpi.w	#$C8,(Camera_Y_pos_bias_P2).w
0001c19a 674c	beq.s	Obj02_UpdateSpeedOnGround
0001c19c 5478eeda	addq.w	#2,(Camera_Y_pos_bias_P2).w
0001c1a0 6046	bra.s	Obj02_UpdateSpeedOnGround
0001c1a2 08380001f66a	btst	#button_down,(Ctrl_2_Held_Logical).w
0001c1a8 6726	beq.s	Obj02_ResetScr
0001c1aa 117c0008001c	move.b	#AniIDSonAni_Duck,anim(a0)
0001c1b0 5278f66e	addq.w	#1,(Tails_Look_delay_counter).w
0001c1b4 0c780078f66e	cmpi.w	#$78,(Tails_Look_delay_counter).w
0001c1ba 651a	blo.s	Obj02_ResetScr_Part2
0001c1bc 31fc0078f66e	move.w	#$78,(Tails_Look_delay_counter).w
0001c1c2 0c780008eeda	cmpi.w	#8,(Camera_Y_pos_bias_P2).w
0001c1c8 671e	beq.s	Obj02_UpdateSpeedOnGround
0001c1ca 5578eeda	subq.w	#2,(Camera_Y_pos_bias_P2).w
0001c1ce 6018	bra.s	Obj02_UpdateSpeedOnGround
0001c1d0 31fc0000f66e	move.w	#0,(Tails_Look_delay_counter).w
0001c1d6 0c780060eeda	cmpi.w	#(screen_height/2)-16,(Camera_Y_pos_bias_P2).w
0001c1dc 670a	beq.s	Obj02_UpdateSpeedOnGround
0001c1de 6404	bhs.s	+
0001c1e0 5878eeda	addq.w	#4,(Camera_Y_pos_bias_P2).w
0001c1e8 1038f66a	move.b	(Ctrl_2_Held_Logical).w,d0
0001c1ec 0200000c	andi.b	#button_left_mask|button_right_mask,d0
0001c1f0 6622	bne.s	Obj02_Traction
0001c1f2 30280014	move.w	inertia(a0),d0
0001c1f6 671c	beq.s	Obj02_Traction
0001c1f8 6b0e	bmi.s	Obj02_SettleLeft
0001c1fa 9045	sub.w	d5,d0
0001c1fc 6404	bcc.s	+
0001c1fe 303c0000	move.w	#0,d0
0001c202 31400014	move.w	d0,inertia(a0)
0001c206 600c	bra.s	Obj02_Traction
0001c208 d045	add.w	d5,d0
0001c20a 6404	bcc.s	+
0001c20c 303c0000	move.w	#0,d0
0001c210 31400014	move.w	d0,inertia(a0)
0001c214 10280026	move.b	angle(a0),d0
0001c218 4eb9000033b6	jsr	(CalcSine).l
0001c21e c3e80014	muls.w	inertia(a0),d1
0001c222 e081	asr.l	#8,d1
0001c224 31410010	move.w	d1,x_vel(a0)
0001c228 c1e80014	muls.w	inertia(a0),d0
0001c22c e080	asr.l	#8,d0
0001c22e 31400012	move.w	d0,y_vel(a0)
0001c232 10280026	move.b	angle(a0),d0
0001c236 06000040	addi.b	#$40,d0
0001c23a 6b66	bmi.s	return_1C2A2
0001c23c 123c0040	move.b	#$40,d1
0001c240 4a680014	tst.w	inertia(a0)
0001c244 675c	beq.s	return_1C2A2
0001c246 6b02	bmi.s	+
0001c248 4441	neg.w	d1
0001c24a 10280026	move.b	angle(a0),d0
0001c24e d001	add.b	d1,d0
0001c250 3f00	move.w	d0,-(sp)
0001c252 61002930	bsr.w	CalcRoomInFront
0001c256 301f	move.w	(sp)+,d0
0001c258 4a41	tst.w	d1
0001c25a 6a46	bpl.s	return_1C2A2
0001c25c e141	asl.w	#8,d1
0001c25e 06000020	addi.b	#$20,d0
0001c262 020000c0	andi.b	#$C0,d0
0001c266 6736	beq.s	loc_1C29E
0001c268 0c000040	cmpi.b	#$40,d0
0001c26c 671e	beq.s	loc_1C28C
0001c26e 0c000080	cmpi.b	#$80,d0
0001c272 6712	beq.s	loc_1C286
0001c274 d3680010	add.w	d1,x_vel(a0)
0001c278 08e800050022	bset	#status.player.pushing,status(a0)
0001c27e 317c00000014	move.w	#0,inertia(a0)
0001c284 4e75	rts	
0001c286 93680012	sub.w	d1,y_vel(a0)
0001c28a 4e75	rts	
0001c28c 93680010	sub.w	d1,x_vel(a0)
0001c290 08e800050022	bset	#status.player.pushing,status(a0)
0001c296 317c00000014	move.w	#0,inertia(a0)
0001c29c 4e75	rts	
0001c29e d3680012	add.w	d1,y_vel(a0)
0001c2a2 4e75	rts	
0001c2a4 30280014	move.w	inertia(a0),d0
0001c2a8 6702	beq.s	+
0001c2aa 6a32	bpl.s	Tails_TurnLeft
0001c2ac 08e800000022	bset	#status.player.x_flip,status(a0)
0001c2b2 660c	bne.s	+
0001c2b4 08a800050022	bclr	#status.player.pushing,status(a0)
0001c2ba 117c0001001d	move.b	#AniIDSonAni_Run,prev_anim(a0)
0001c2c0 9045	sub.w	d5,d0
0001c2c2 3206	move.w	d6,d1
0001c2c4 4441	neg.w	d1
0001c2c6 b041	cmp.w	d1,d0
0001c2c8 6e08	bgt.s	+
0001c2ca d045	add.w	d5,d0
0001c2cc b041	cmp.w	d1,d0
0001c2ce 6f02	ble.s	+
0001c2d0 3001	move.w	d1,d0
0001c2d2 31400014	move.w	d0,inertia(a0)
0001c2d6 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
0001c2dc 4e75	rts	
0001c2de 9044	sub.w	d4,d0
0001c2e0 6404	bcc.s	+
0001c2e2 303cff80	move.w	#-$80,d0
0001c2e6 31400014	move.w	d0,inertia(a0)
0001c2ea 10280026	move.b	angle(a0),d0
0001c2ee 06000020	addi.b	#$20,d0
0001c2f2 020000c0	andi.b	#$C0,d0
0001c2f6 6630	bne.s	return_1C328
0001c2f8 0c400400	cmpi.w	#$400,d0
0001c2fc 6d2a	blt.s	return_1C328
0001c2fe 117c000d001c	move.b	#AniIDSonAni_Stop,anim(a0)
0001c304 08a800000022	bclr	#status.player.x_flip,status(a0)
0001c30a 303c00a4	move.w	#SndID_Skidding,d0
0001c30e 4eb900001370	jsr	(PlaySound).l
0001c314 0c28000c0028	cmpi.b	#12,air_left(a0)
0001c31a 650c	blo.s	return_1C328
0001c31c 11fc0006d164	move.b	#6,(Tails_Dust+routine).w
0001c322 11fc0015d15a	move.b	#$15,(Tails_Dust+mapping_frame).w
0001c328 4e75	rts	
0001c32a 30280014	move.w	inertia(a0),d0
0001c32e 6b2e	bmi.s	Tails_TurnRight
0001c330 08a800000022	bclr	#status.player.x_flip,status(a0)
0001c336 670c	beq.s	+
0001c338 08a800050022	bclr	#status.player.pushing,status(a0)
0001c33e 117c0001001d	move.b	#AniIDSonAni_Run,prev_anim(a0)
0001c344 d045	add.w	d5,d0
0001c346 b046	cmp.w	d6,d0
0001c348 6d08	blt.s	+
0001c34a 9045	sub.w	d5,d0
0001c34c b046	cmp.w	d6,d0
0001c34e 6c02	bge.s	+
0001c350 3006	move.w	d6,d0
0001c352 31400014	move.w	d0,inertia(a0)
0001c356 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
0001c35c 4e75	rts	
0001c35e d044	add.w	d4,d0
0001c360 6404	bcc.s	+
0001c362 303c0080	move.w	#$80,d0
0001c366 31400014	move.w	d0,inertia(a0)
0001c36a 10280026	move.b	angle(a0),d0
0001c36e 06000020	addi.b	#$20,d0
0001c372 020000c0	andi.b	#$C0,d0
0001c376 6630	bne.s	return_1C3A8
0001c378 0c40fc00	cmpi.w	#-$400,d0
0001c37c 6e2a	bgt.s	return_1C3A8
0001c37e 117c000d001c	move.b	#AniIDSonAni_Stop,anim(a0)
0001c384 08e800000022	bset	#status.player.x_flip,status(a0)
0001c38a 303c00a4	move.w	#SndID_Skidding,d0
0001c38e 4eb900001370	jsr	(PlaySound).l
0001c394 0c28000c0028	cmpi.b	#12,air_left(a0)
0001c39a 650c	blo.s	return_1C3A8
0001c39c 11fc0006d164	move.b	#6,(Tails_Dust+routine).w
0001c3a2 11fc0015d15a	move.b	#$15,(Tails_Dust+mapping_frame).w
0001c3a8 4e75	rts	
0001c3aa 3c38fec0	move.w	(Tails_top_speed).w,d6
0001c3ae e346	asl.w	#1,d6
0001c3b0 3a38fec2	move.w	(Tails_acceleration).w,d5
0001c3b4 e245	asr.w	#1,d5
0001c3b6 3838fec4	move.w	(Tails_deceleration).w,d4
0001c3ba e444	asr.w	#2,d4
0001c3bc 4a28002b	tst.b	status_secondary(a0)
0001c3c0 6b00007e	bmi.w	Obj02_Roll_ResetScr
0001c3c4 4a68002e	tst.w	move_lock(a0)
0001c3c8 6618	bne.s	Tails_ApplyRollSpeed
0001c3ca 08380002f66a	btst	#button_left,(Ctrl_2_Held_Logical).w
0001c3d0 6704	beq.s	+
0001c3d2 610000b4	bsr.w	Tails_RollLeft
0001c3d6 08380003f66a	btst	#button_right,(Ctrl_2_Held_Logical).w
0001c3dc 6704	beq.s	Tails_ApplyRollSpeed
0001c3de 610000cc	bsr.w	Tails_RollRight
0001c3e2 30280014	move.w	inertia(a0),d0
0001c3e6 671c	beq.s	Tails_CheckRollStop
0001c3e8 6b0e	bmi.s	Tails_ApplyRollSpeedLeft
0001c3ea 9045	sub.w	d5,d0
0001c3ec 6404	bcc.s	+
0001c3ee 303c0000	move.w	#0,d0
0001c3f2 31400014	move.w	d0,inertia(a0)
0001c3f6 600c	bra.s	Tails_CheckRollStop
0001c3f8 d045	add.w	d5,d0
0001c3fa 6404	bcc.s	+
0001c3fc 303c0000	move.w	#0,d0
0001c400 31400014	move.w	d0,inertia(a0)
0001c404 4a680014	tst.w	inertia(a0)
0001c408 6636	bne.s	Obj02_Roll_ResetScr
0001c40a 4a280039	tst.b	pinball_mode(a0)
0001c40e 661e	bne.s	Tails_KeepRolling
0001c410 08a800020022	bclr	#status.player.rolling,status(a0)
0001c416 117c000f0016	move.b	#$F,y_radius(a0)
0001c41c 117c00090017	move.b	#9,x_radius(a0)
0001c422 117c0005001c	move.b	#AniIDSonAni_Wait,anim(a0)
0001c428 5368000c	subq.w	#1,y_pos(a0)
0001c42c 6012	bra.s	Obj02_Roll_ResetScr
0001c42e 317c04000014	move.w	#$400,inertia(a0)
0001c434 082800000022	btst	#status.player.x_flip,status(a0)
0001c43a 6704	beq.s	Obj02_Roll_ResetScr
0001c43c 44680014	neg.w	inertia(a0)
0001c440 0c780060eeda	cmpi.w	#(screen_height/2)-16,(Camera_Y_pos_bias_P2).w
0001c446 670a	beq.s	Tails_SetRollSpeed
0001c448 6404	bhs.s	+
0001c44a 5878eeda	addq.w	#4,(Camera_Y_pos_bias_P2).w
0001c452 10280026	move.b	angle(a0),d0
0001c456 4eb9000033b6	jsr	(CalcSine).l
0001c45c c1e80014	muls.w	inertia(a0),d0
0001c460 e080	asr.l	#8,d0
0001c462 31400012	move.w	d0,y_vel(a0)
0001c466 c3e80014	muls.w	inertia(a0),d1
0001c46a e081	asr.l	#8,d1
0001c46c 0c411000	cmpi.w	#$1000,d1
0001c470 6f04	ble.s	+
0001c472 323c1000	move.w	#$1000,d1
0001c476 0c41f000	cmpi.w	#-$1000,d1
0001c47a 6c04	bge.s	+
0001c47c 323cf000	move.w	#-$1000,d1
0001c480 31410010	move.w	d1,x_vel(a0)
0001c484 6000fdac	bra.w	Obj02_CheckWallsOnGround
0001c488 30280014	move.w	inertia(a0),d0
0001c48c 6702	beq.s	+
0001c48e 6a0e	bpl.s	Tails_BrakeRollingRight
0001c490 08e800000022	bset	#status.player.x_flip,status(a0)
0001c496 117c0002001c	move.b	#AniIDSonAni_Roll,anim(a0)
0001c49c 4e75	rts	
0001c49e 9044	sub.w	d4,d0
0001c4a0 6404	bcc.s	+
0001c4a2 303cff80	move.w	#-$80,d0
0001c4a6 31400014	move.w	d0,inertia(a0)
0001c4aa 4e75	rts	
0001c4ac 30280014	move.w	inertia(a0),d0
0001c4b0 6b0e	bmi.s	Tails_BrakeRollingLeft
0001c4b2 08a800000022	bclr	#status.player.x_flip,status(a0)
0001c4b8 117c0002001c	move.b	#AniIDSonAni_Roll,anim(a0)
0001c4be 4e75	rts	
0001c4c0 d044	add.w	d4,d0
0001c4c2 6404	bcc.s	+
0001c4c4 303c0080	move.w	#$80,d0
0001c4c8 31400014	move.w	d0,inertia(a0)
0001c4cc 4e75	rts	
0001c4ce 3c38fec0	move.w	(Tails_top_speed).w,d6
0001c4d2 3a38fec2	move.w	(Tails_acceleration).w,d5
0001c4d6 e345	asl.w	#1,d5
0001c4d8 082800040022	btst	#status.player.rolljumping,status(a0)
0001c4de 6638	bne.s	Obj02_Jump_ResetScr
0001c4e0 30280010	move.w	x_vel(a0),d0
0001c4e4 08380002f66a	btst	#button_left,(Ctrl_2_Held_Logical).w
0001c4ea 6712	beq.s	+
0001c4ec 08e800000022	bset	#status.player.x_flip,status(a0)
0001c4f2 9045	sub.w	d5,d0
0001c4f4 3206	move.w	d6,d1
0001c4f6 4441	neg.w	d1
0001c4f8 b041	cmp.w	d1,d0
0001c4fa 6e02	bgt.s	+
0001c4fc 3001	move.w	d1,d0
0001c4fe 08380003f66a	btst	#button_right,(Ctrl_2_Held_Logical).w
0001c504 670e	beq.s	+
0001c506 08a800000022	bclr	#status.player.x_flip,status(a0)
0001c50c d045	add.w	d5,d0
0001c50e b046	cmp.w	d6,d0
0001c510 6d02	blt.s	+
0001c512 3006	move.w	d6,d0
0001c518 0c780060eeda	cmpi.w	#(screen_height/2)-16,(Camera_Y_pos_bias_P2).w
0001c51e 670a	beq.s	Tails_JumpPeakDecelerate
0001c520 6404	bhs.s	+
0001c522 5878eeda	addq.w	#4,(Camera_Y_pos_bias_P2).w
0001c52a 0c68fc000012	cmpi.w	#-$400,y_vel(a0)
0001c530 6526	blo.s	return_1C558
0001c532 30280010	move.w	x_vel(a0),d0
0001c536 3200	move.w	d0,d1
0001c538 ea41	asr.w	#5,d1
0001c53a 671c	beq.s	return_1C558
0001c53c 6b0e	bmi.s	Tails_JumpPeakDecelerateLeft
0001c53e 9041	sub.w	d1,d0
0001c540 6404	bcc.s	+
0001c542 303c0000	move.w	#0,d0
0001c546 31400010	move.w	d0,x_vel(a0)
0001c54a 4e75	rts	
0001c54c 9041	sub.w	d1,d0
0001c54e 6504	bcs.s	+
0001c550 303c0000	move.w	#0,d0
0001c554 31400010	move.w	d0,x_vel(a0)
0001c558 4e75	rts	
0001c55a 22280008	move.l	x_pos(a0),d1
0001c55e 30280010	move.w	x_vel(a0),d0
0001c562 48c0	ext.l	d0
0001c564 e180	asl.l	#8,d0
0001c566 d280	add.l	d0,d1
0001c568 4841	swap	d1
0001c56a 3038eef8	move.w	(Tails_Min_X_pos).w,d0
0001c56e 06400010	addi.w	#$10,d0
0001c572 b041	cmp.w	d1,d0
0001c574 622a	bhi.s	Tails_Boundary_Sides
0001c576 3038eefa	move.w	(Tails_Max_X_pos).w,d0
0001c57a 06400128	addi.w	#screen_width-24,d0
0001c57e 4a38f7aa	tst.b	(Current_Boss_ID).w
0001c582 6604	bne.s	+
0001c584 06400040	addi.w	#$40,d0
0001c588 b041	cmp.w	d1,d0
0001c58a 6314	bls.s	Tails_Boundary_Sides
0001c58c 3038eefe	move.w	(Tails_Max_Y_pos).w,d0
0001c590 064000e0	addi.w	#screen_height,d0
0001c594 b068000c	cmp.w	y_pos(a0),d0
0001c598 6d02	blt.s	Tails_Boundary_Bottom
0001c59a 4e75	rts	
0001c5a0 31400008	move.w	d0,x_pos(a0)
0001c5a4 317c0000000a	move.w	#0,2+x_pos(a0)
0001c5aa 317c00000010	move.w	#0,x_vel(a0)
0001c5b0 317c00000014	move.w	#0,inertia(a0)
0001c5b6 60d4	bra.s	Tails_Boundary_CheckBottom
0001c5b8 4a28002b	tst.b	status_secondary(a0)
0001c5bc 6b20	bmi.s	Obj02_NoRoll
0001c5be 30280014	move.w	inertia(a0),d0
0001c5c2 6a02	bpl.s	.skip
0001c5c4 4440	neg.w	d0
0001c5c6 0c400080	cmpi.w	#$80,d0
0001c5ca 6512	blo.s	Obj02_NoRoll
0001c5cc 1038f66a	move.b	(Ctrl_2_Held_Logical).w,d0
0001c5d0 0200000c	andi.b	#button_left_mask|button_right_mask,d0
0001c5d4 6608	bne.s	Obj02_NoRoll
0001c5d6 08380001f66a	btst	#button_down,(Ctrl_2_Held_Logical).w
0001c5dc 6602	bne.s	Obj02_ChkRoll
0001c5de 4e75	rts	
0001c5e0 082800020022	btst	#status.player.rolling,status(a0)
0001c5e6 6702	beq.s	Obj02_DoRoll
0001c5e8 4e75	rts	
0001c5ea 08e800020022	bset	#status.player.rolling,status(a0)
0001c5f0 117c000e0016	move.b	#$E,y_radius(a0)
0001c5f6 117c00070017	move.b	#7,x_radius(a0)
0001c5fc 117c0002001c	move.b	#AniIDSonAni_Roll,anim(a0)
0001c602 5268000c	addq.w	#1,y_pos(a0)
0001c606 303c00be	move.w	#SndID_Roll,d0
0001c60a 4eb900001370	jsr	(PlaySound).l
0001c610 4a680014	tst.w	inertia(a0)
0001c614 6606	bne.s	return_1C61C
0001c616 317c02000014	move.w	#$200,inertia(a0)
0001c61c 4e75	rts	
0001c61e 1038f66b	move.b	(Ctrl_2_Press_Logical).w,d0
0001c622 02000070	andi.b	#button_B_mask|button_C_mask|button_A_mask,d0
0001c626 6700009a	beq.w	return_1C6C2
0001c62a 7000	moveq	#0,d0
0001c62c 10280026	move.b	angle(a0),d0
0001c630 06000080	addi.b	#$80,d0
0001c634 610025d4	bsr.w	CalcRoomOverHead
0001c638 0c410006	cmpi.w	#6,d1
0001c63c 6d000084	blt.w	return_1C6C2
0001c640 343c0680	move.w	#$680,d2
0001c644 082800060022	btst	#status.player.underwater,status(a0)
0001c64a 6704	beq.s	+
0001c64c 343c0380	move.w	#$380,d2
0001c650 7000	moveq	#0,d0
0001c652 10280026	move.b	angle(a0),d0
0001c656 04000040	subi.b	#$40,d0
0001c65a 4eb9000033b6	jsr	(CalcSine).l
0001c660 c3c2	muls.w	d2,d1
0001c662 e081	asr.l	#8,d1
0001c664 d3680010	add.w	d1,x_vel(a0)
0001c668 c1c2	muls.w	d2,d0
0001c66a e080	asr.l	#8,d0
0001c66c d1680012	add.w	d0,y_vel(a0)
0001c670 08e800010022	bset	#status.player.in_air,status(a0)
0001c676 08a800050022	bclr	#status.player.pushing,status(a0)
0001c67c 588f	addq.l	#4,sp
0001c67e 117c0001003c	move.b	#1,jumping(a0)
0001c684 42280038	clr.b	stick_to_convex(a0)
0001c688 303c00a0	move.w	#SndID_Jump,d0
0001c68c 4eb900001370	jsr	(PlaySound).l
0001c692 117c000f0016	move.b	#$F,y_radius(a0)
0001c698 117c00090017	move.b	#9,x_radius(a0)
0001c69e 082800020022	btst	#status.player.rolling,status(a0)
0001c6a4 661e	bne.s	Tails_RollJump
0001c6a6 117c000e0016	move.b	#$E,y_radius(a0)
0001c6ac 117c00070017	move.b	#7,x_radius(a0)
0001c6b2 117c0002001c	move.b	#AniIDSonAni_Roll,anim(a0)
0001c6b8 08e800020022	bset	#status.player.rolling,status(a0)
0001c6be 5268000c	addq.w	#1,y_pos(a0)
0001c6c2 4e75	rts	
0001c6c4 08e800040022	bset	#status.player.rolljumping,status(a0)
0001c6ca 4e75	rts	
0001c6cc 4a28003c	tst.b	jumping(a0)
0001c6d0 6726	beq.s	Tails_UpVelCap
0001c6d2 323cfc00	move.w	#-$400,d1
0001c6d6 082800060022	btst	#status.player.underwater,status(a0)
0001c6dc 6704	beq.s	+
0001c6de 323cfe00	move.w	#-$200,d1
0001c6e2 b2680012	cmp.w	y_vel(a0),d1
0001c6e6 6f0e	ble.s	+
0001c6e8 1038f66a	move.b	(Ctrl_2_Held_Logical).w,d0
0001c6ec 02000070	andi.b	#button_B_mask|button_C_mask|button_A_mask,d0
0001c6f0 6604	bne.s	+
0001c6f2 31410012	move.w	d1,y_vel(a0)
0001c6f6 4e75	rts	
0001c6f8 4a280039	tst.b	pinball_mode(a0)
0001c6fc 660e	bne.s	return_1C70C
0001c6fe 0c68f0400012	cmpi.w	#-$FC0,y_vel(a0)
0001c704 6c06	bge.s	return_1C70C
0001c706 317cf0400012	move.w	#-$FC0,y_vel(a0)
0001c70c 4e75	rts	
0001c70e 4a280039	tst.b	spindash_flag(a0)
0001c712 664a	bne.s	Tails_UpdateSpindash
0001c714 0c280008001c	cmpi.b	#AniIDSonAni_Duck,anim(a0)
0001c71a 6640	bne.s	return_1C75C
0001c71c 1038f66b	move.b	(Ctrl_2_Press_Logical).w,d0
0001c720 02000070	andi.b	#button_B_mask|button_C_mask|button_A_mask,d0
0001c724 67000036	beq.w	return_1C75C
0001c728 117c0009001c	move.b	#AniIDSonAni_Spindash,anim(a0)
0001c72e 303c00e0	move.w	#SndID_SpindashRev,d0
0001c732 4eb900001370	jsr	(PlaySound).l
0001c738 588f	addq.l	#4,sp
0001c73a 117c00010039	move.b	#1,spindash_flag(a0)
0001c740 317c0000003a	move.w	#0,spindash_counter(a0)
0001c746 0c28000c0028	cmpi.b	#12,air_left(a0)
0001c74c 6506	blo.s	loc_1C754
0001c74e 11fc0002d15c	move.b	#2,(Tails_Dust+anim).w
0001c754 6100fe04	bsr.w	Tails_LevelBound
0001c758 61001ada	bsr.w	AnglePos
0001c75c 4e75	rts	
0001c75e 1038f66a	move.b	(Ctrl_2_Held_Logical).w,d0
0001c762 08000001	btst	#button_down,d0
0001c766 6678	bne.s	Tails_ChargingSpindash
0001c768 117c000e0016	move.b	#$E,y_radius(a0)
0001c76e 117c00070017	move.b	#7,x_radius(a0)
0001c774 117c0002001c	move.b	#AniIDSonAni_Roll,anim(a0)
0001c77a 5268000c	addq.w	#1,y_pos(a0)
0001c77e 117c00000039	move.b	#0,spindash_flag(a0)
0001c784 7000	moveq	#0,d0
0001c786 1028003a	move.b	spindash_counter(a0),d0
0001c78a d040	add.w	d0,d0
0001c78c 317b00400014	move.w	Tails_SpindashSpeeds(pc,d0.w),inertia(a0)
0001c792 30280014	move.w	inertia(a0),d0
0001c796 04400800	subi.w	#$800,d0
0001c79a d040	add.w	d0,d0
0001c79c 02401f00	andi.w	#$1F00,d0
0001c7a0 4440	neg.w	d0
0001c7a2 06402000	addi.w	#$2000,d0
0001c7a6 31c0eed4	move.w	d0,(Horiz_scroll_delay_val_P2).w
0001c7aa 082800000022	btst	#status.player.x_flip,status(a0)
0001c7b0 6704	beq.s	+
0001c7b2 44680014	neg.w	inertia(a0)
0001c7b6 08e800020022	bset	#status.player.rolling,status(a0)
0001c7bc 11fc0000d15c	move.b	#0,(Tails_Dust+anim).w
0001c7c2 303c00bc	move.w	#SndID_SpindashRelease,d0
0001c7c6 4eb900001370	jsr	(PlaySound).l
0001c7cc 605a	bra.s	loc_1C828
0001c7e0 4a68003a	tst.w	spindash_counter(a0)
0001c7e4 6712	beq.s	loc_1C7F8
0001c7e6 3028003a	move.w	spindash_counter(a0),d0
0001c7ea ea48	lsr.w	#5,d0
0001c7ec 9168003a	sub.w	d0,spindash_counter(a0)
0001c7f0 6406	bcc.s	loc_1C7F8
0001c7f2 317c0000003a	move.w	#0,spindash_counter(a0)
0001c7f8 1038f66b	move.b	(Ctrl_2_Press_Logical).w,d0
0001c7fc 02000070	andi.b	#button_B_mask|button_C_mask|button_A_mask,d0
0001c800 67000026	beq.w	loc_1C828
0001c804 317c0900001c	move.w	#(AniIDSonAni_Spindash<<8)|(AniIDSonAni_Walk<<0),anim(a0)
0001c80a 303c00e0	move.w	#SndID_SpindashRev,d0
0001c80e 4eb900001370	jsr	(PlaySound).l
0001c814 06680200003a	addi.w	#$200,spindash_counter(a0)
0001c81a 0c680800003a	cmpi.w	#$800,spindash_counter(a0)
0001c820 6506	blo.s	loc_1C828
0001c822 317c0800003a	move.w	#$800,spindash_counter(a0)
0001c828 588f	addq.l	#4,sp
0001c82a 0c780060eeda	cmpi.w	#(screen_height/2)-16,(Camera_Y_pos_bias_P2).w
0001c830 670a	beq.s	loc_1C83C
0001c832 6404	bhs.s	+
0001c834 5878eeda	addq.w	#4,(Camera_Y_pos_bias_P2).w
0001c83c 6100fd1c	bsr.w	Tails_LevelBound
0001c840 610019f2	bsr.w	AnglePos
0001c844 4e75	rts	
0001c846 10280026	move.b	angle(a0),d0
0001c84a 06000060	addi.b	#$60,d0
0001c84e 0c0000c0	cmpi.b	#$C0,d0
0001c852 6426	bhs.s	return_1C87A
0001c854 10280026	move.b	angle(a0),d0
0001c858 4eb9000033b6	jsr	(CalcSine).l
0001c85e c1fc0020	muls.w	#$20,d0
0001c862 e080	asr.l	#8,d0
0001c864 4a680014	tst.w	inertia(a0)
0001c868 6710	beq.s	return_1C87A
0001c86a 6b0a	bmi.s	loc_1C876
0001c86c 4a40	tst.w	d0
0001c86e 6704	beq.s	+
0001c870 d1680014	add.w	d0,inertia(a0)
0001c874 4e75	rts	
0001c876 d1680014	add.w	d0,inertia(a0)
0001c87a 4e75	rts	
0001c87c 10280026	move.b	angle(a0),d0
0001c880 06000060	addi.b	#$60,d0
0001c884 0c0000c0	cmpi.b	#-$40,d0
0001c888 642c	bhs.s	return_1C8B6
0001c88a 10280026	move.b	angle(a0),d0
0001c88e 4eb9000033b6	jsr	(CalcSine).l
0001c894 c1fc0050	muls.w	#$50,d0
0001c898 e080	asr.l	#8,d0
0001c89a 4a680014	tst.w	inertia(a0)
0001c89e 6b0c	bmi.s	loc_1C8AC
0001c8a0 4a40	tst.w	d0
0001c8a2 6a02	bpl.s	loc_1C8A6
0001c8a4 e480	asr.l	#2,d0
0001c8a6 d1680014	add.w	d0,inertia(a0)
0001c8aa 4e75	rts	
0001c8ac 4a40	tst.w	d0
0001c8ae 6b02	bmi.s	loc_1C8B2
0001c8b0 e480	asr.l	#2,d0
0001c8b2 d1680014	add.w	d0,inertia(a0)
0001c8b6 4e75	rts	
0001c8b8 4e71	nop	
0001c8ba 4a280038	tst.b	stick_to_convex(a0)
0001c8be 6632	bne.s	return_1C8F2
0001c8c0 4a68002e	tst.w	move_lock(a0)
0001c8c4 662e	bne.s	loc_1C8F4
0001c8c6 10280026	move.b	angle(a0),d0
0001c8ca 06000020	addi.b	#$20,d0
0001c8ce 020000c0	andi.b	#$C0,d0
0001c8d2 671e	beq.s	return_1C8F2
0001c8d4 30280014	move.w	inertia(a0),d0
0001c8d8 6a02	bpl.s	.skip
0001c8da 4440	neg.w	d0
0001c8dc 0c400280	cmpi.w	#$280,d0
0001c8e0 6410	bhs.s	return_1C8F2
0001c8e2 42680014	clr.w	inertia(a0)
0001c8e6 08e800010022	bset	#status.player.in_air,status(a0)
0001c8ec 317c001e002e	move.w	#$1E,move_lock(a0)
0001c8f2 4e75	rts	
0001c8f4 5368002e	subq.w	#1,move_lock(a0)
0001c8f8 4e75	rts	
0001c8fa 10280026	move.b	angle(a0),d0
0001c8fe 6714	beq.s	Tails_JumpFlip
0001c900 6a08	bpl.s	loc_1C90A
0001c902 5400	addq.b	#2,d0
0001c904 6402	bcc.s	BranchTo_Tails_JumpAngleSet
0001c906 7000	moveq	#0,d0
0001c908 6006	bra.s	Tails_JumpAngleSet
0001c90a 5500	subq.b	#2,d0
0001c90c 6402	bcc.s	Tails_JumpAngleSet
0001c90e 7000	moveq	#0,d0
0001c910 11400026	move.b	d0,angle(a0)
0001c914 10280027	move.b	flip_angle(a0),d0
0001c918 673e	beq.s	return_1C958
0001c91a 4a680014	tst.w	inertia(a0)
0001c91e 6b18	bmi.s	Tails_JumpLeftFlip
0001c920 1228002d	move.b	flip_speed(a0),d1
0001c924 d001	add.b	d1,d0
0001c926 640e	bcc.s	BranchTo_Tails_JumpFlipSet
0001c928 5328002c	subq.b	#1,flips_remaining(a0)
0001c92c 6408	bcc.s	BranchTo_Tails_JumpFlipSet
0001c92e 117c0000002c	move.b	#0,flips_remaining(a0)
0001c934 7000	moveq	#0,d0
0001c936 601c	bra.s	Tails_JumpFlipSet
0001c938 4a280029	tst.b	flip_turned(a0)
0001c93c 66e2	bne.s	Tails_JumpRightFlip
0001c93e 1228002d	move.b	flip_speed(a0),d1
0001c942 9001	sub.b	d1,d0
0001c944 640e	bcc.s	Tails_JumpFlipSet
0001c946 5328002c	subq.b	#1,flips_remaining(a0)
0001c94a 6408	bcc.s	Tails_JumpFlipSet
0001c94c 117c0000002c	move.b	#0,flips_remaining(a0)
0001c952 7000	moveq	#0,d0
0001c954 11400027	move.b	d0,flip_angle(a0)
0001c958 4e75	rts	
0001c95a 21fcffffd600f796	move.l	#Primary_Collision,(Collision_addr).w
0001c962 0c28000c003e	cmpi.b	#$C,top_solid_bit(a0)
0001c968 6708	beq.s	+
0001c96a 21fcffffd900f796	move.l	#Secondary_Collision,(Collision_addr).w
0001c972 1a28003f	move.b	lrb_solid_bit(a0),d5
0001c976 32280010	move.w	x_vel(a0),d1
0001c97a 34280012	move.w	y_vel(a0),d2
0001c97e 4eb90000364e	jsr	(CalcAngle).l
0001c984 04000020	subi.b	#$20,d0
0001c988 020000c0	andi.b	#$C0,d0
0001c98c 0c000040	cmpi.b	#$40,d0
0001c990 670000aa	beq.w	Tails_HitLeftWall
0001c994 0c000080	cmpi.b	#$80,d0
0001c998 670000fe	beq.w	Tails_HitCeilingAndWalls
0001c99c 0c0000c0	cmpi.b	#$C0,d0
0001c9a0 67000152	beq.w	Tails_HitRightWall
0001c9a4 610026b8	bsr.w	CheckLeftWallDist
0001c9a8 4a41	tst.w	d1
0001c9aa 6a0a	bpl.s	+
0001c9ac 93680008	sub.w	d1,x_pos(a0)
0001c9b0 317c00000010	move.w	#0,x_vel(a0)
0001c9b6 61002524	bsr.w	CheckRightWallDist
0001c9ba 4a41	tst.w	d1
0001c9bc 6a0a	bpl.s	+
0001c9be d3680008	add.w	d1,x_pos(a0)
0001c9c2 317c00000010	move.w	#0,x_vel(a0)
0001c9c8 61002284	bsr.w	Sonic_CheckFloor
0001c9cc 4a41	tst.w	d1
0001c9ce 6a6a	bpl.s	return_1CA3A
0001c9d0 14280012	move.b	y_vel(a0),d2
0001c9d4 5002	addq.b	#8,d2
0001c9d6 4402	neg.b	d2
0001c9d8 b202	cmp.b	d2,d1
0001c9da 6c04	bge.s	+
0001c9dc b002	cmp.b	d2,d0
0001c9de 6d5a	blt.s	return_1CA3A
0001c9e0 d368000c	add.w	d1,y_pos(a0)
0001c9e4 11430026	move.b	d3,angle(a0)
0001c9e8 61000166	bsr.w	Tails_ResetOnFloor
0001c9ec 1003	move.b	d3,d0
0001c9ee 06000020	addi.b	#$20,d0
0001c9f2 02000040	andi.b	#$40,d0
0001c9f6 6620	bne.s	loc_1CA18
0001c9f8 1003	move.b	d3,d0
0001c9fa 06000010	addi.b	#$10,d0
0001c9fe 02000020	andi.b	#$20,d0
0001ca02 6706	beq.s	loc_1CA0A
0001ca04 e0e80012	asr	y_vel(a0)
0001ca08 6022	bra.s	loc_1CA2C
0001ca0a 317c00000012	move.w	#0,y_vel(a0)
0001ca10 316800100014	move.w	x_vel(a0),inertia(a0)
0001ca16 4e75	rts	
0001ca18 317c00000010	move.w	#0,x_vel(a0)
0001ca1e 0c680fc00012	cmpi.w	#$FC0,y_vel(a0)
0001ca24 6f06	ble.s	loc_1CA2C
0001ca26 317c0fc00012	move.w	#$FC0,y_vel(a0)
0001ca2c 316800120014	move.w	y_vel(a0),inertia(a0)
0001ca32 4a03	tst.b	d3
0001ca34 6a04	bpl.s	return_1CA3A
0001ca36 44680014	neg.w	inertia(a0)
0001ca3a 4e75	rts	
0001ca3c 61002620	bsr.w	CheckLeftWallDist
0001ca40 4a41	tst.w	d1
0001ca42 6a12	bpl.s	Tails_HitCeiling
0001ca44 93680008	sub.w	d1,x_pos(a0)
0001ca48 317c00000010	move.w	#0,x_vel(a0)
0001ca4e 316800120014	move.w	y_vel(a0),inertia(a0)
0001ca54 4e75	rts	
0001ca56 610024d6	bsr.w	Sonic_CheckCeiling
0001ca5a 4a41	tst.w	d1
0001ca5c 6a12	bpl.s	Tails_HitFloor
0001ca5e 9368000c	sub.w	d1,y_pos(a0)
0001ca62 4a680012	tst.w	y_vel(a0)
0001ca66 6a06	bpl.s	return_1CA6E
0001ca68 317c00000012	move.w	#0,y_vel(a0)
0001ca6e 4e75	rts	
0001ca70 4a680012	tst.w	y_vel(a0)
0001ca74 6b20	bmi.s	return_1CA96
0001ca76 610021d6	bsr.w	Sonic_CheckFloor
0001ca7a 4a41	tst.w	d1
0001ca7c 6a18	bpl.s	return_1CA96
0001ca7e d368000c	add.w	d1,y_pos(a0)
0001ca82 11430026	move.b	d3,angle(a0)
0001ca86 610000c8	bsr.w	Tails_ResetOnFloor
0001ca8a 317c00000012	move.w	#0,y_vel(a0)
0001ca90 316800100014	move.w	x_vel(a0),inertia(a0)
0001ca96 4e75	rts	
0001ca98 610025c4	bsr.w	CheckLeftWallDist
0001ca9c 4a41	tst.w	d1
0001ca9e 6a0a	bpl.s	+
0001caa0 93680008	sub.w	d1,x_pos(a0)
0001caa4 317c00000010	move.w	#0,x_vel(a0)
0001caaa 61002430	bsr.w	CheckRightWallDist
0001caae 4a41	tst.w	d1
0001cab0 6a0a	bpl.s	+
0001cab2 d3680008	add.w	d1,x_pos(a0)
0001cab6 317c00000010	move.w	#0,x_vel(a0)
0001cabc 61002470	bsr.w	Sonic_CheckCeiling
0001cac0 4a41	tst.w	d1
0001cac2 6a2e	bpl.s	return_1CAF2
0001cac4 9368000c	sub.w	d1,y_pos(a0)
0001cac8 1003	move.b	d3,d0
0001caca 06000020	addi.b	#$20,d0
0001cace 02000040	andi.b	#$40,d0
0001cad2 6608	bne.s	loc_1CADC
0001cad4 317c00000012	move.w	#0,y_vel(a0)
0001cada 4e75	rts	
0001cadc 11430026	move.b	d3,angle(a0)
0001cae0 6100006e	bsr.w	Tails_ResetOnFloor
0001cae4 316800120014	move.w	y_vel(a0),inertia(a0)
0001caea 4a03	tst.b	d3
0001caec 6a04	bpl.s	return_1CAF2
0001caee 44680014	neg.w	inertia(a0)
0001caf2 4e75	rts	
0001caf4 610023e6	bsr.w	CheckRightWallDist
0001caf8 4a41	tst.w	d1
0001cafa 6a12	bpl.s	Tails_HitCeiling2
0001cafc d3680008	add.w	d1,x_pos(a0)
0001cb00 317c00000010	move.w	#0,x_vel(a0)
0001cb06 316800120014	move.w	y_vel(a0),inertia(a0)
0001cb0c 4e75	rts	
0001cb0e 6100241e	bsr.w	Sonic_CheckCeiling
0001cb12 4a41	tst.w	d1
0001cb14 6a12	bpl.s	Tails_HitFloor2
0001cb16 9368000c	sub.w	d1,y_pos(a0)
0001cb1a 4a680012	tst.w	y_vel(a0)
0001cb1e 6a06	bpl.s	return_1CB26
0001cb20 317c00000012	move.w	#0,y_vel(a0)
0001cb26 4e75	rts	
0001cb28 4a680012	tst.w	y_vel(a0)
0001cb2c 6b20	bmi.s	return_1CB4E
0001cb2e 6100211e	bsr.w	Sonic_CheckFloor
0001cb32 4a41	tst.w	d1
0001cb34 6a18	bpl.s	return_1CB4E
0001cb36 d368000c	add.w	d1,y_pos(a0)
0001cb3a 11430026	move.b	d3,angle(a0)
0001cb3e 61000010	bsr.w	Tails_ResetOnFloor
0001cb42 317c00000012	move.w	#0,y_vel(a0)
0001cb48 316800100014	move.w	x_vel(a0),inertia(a0)
0001cb4e 4e75	rts	
0001cb50 4a280039	tst.b	pinball_mode(a0)
0001cb54 662a	bne.s	Tails_ResetOnFloor_Part3
0001cb56 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
0001cb5c 082800020022	btst	#status.player.rolling,status(a0)
0001cb62 671c	beq.s	Tails_ResetOnFloor_Part3
0001cb64 08a800020022	bclr	#status.player.rolling,status(a0)
0001cb6a 117c000f0016	move.b	#$F,y_radius(a0)
0001cb70 117c00090017	move.b	#9,x_radius(a0)
0001cb76 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
0001cb7c 5368000c	subq.w	#1,y_pos(a0)
0001cb80 08a800010022	bclr	#status.player.in_air,status(a0)
0001cb86 08a800050022	bclr	#status.player.pushing,status(a0)
0001cb8c 08a800040022	bclr	#status.player.rolljumping,status(a0)
0001cb92 117c0000003c	move.b	#0,jumping(a0)
0001cb98 31fc0000f7d0	move.w	#0,(Chain_Bonus_counter).w
0001cb9e 117c00000027	move.b	#0,flip_angle(a0)
0001cba4 117c00000029	move.b	#0,flip_turned(a0)
0001cbaa 117c0000002c	move.b	#0,flips_remaining(a0)
0001cbb0 31fc0000f66e	move.w	#0,(Tails_Look_delay_counter).w
0001cbb6 0c280014001c	cmpi.b	#AniIDSonAni_Hang2,anim(a0)
0001cbbc 6606	bne.s	return_1CBC4
0001cbbe 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
0001cbc4 4e75	rts	
0001cbc6 4eb9000163ac	jsr	(ObjectMove).l
0001cbcc 066800300012	addi.w	#$30,y_vel(a0)
0001cbd2 082800060022	btst	#status.player.underwater,status(a0)
0001cbd8 6706	beq.s	+
0001cbda 046800200012	subi.w	#$20,y_vel(a0)
0001cbe0 0c78ff00eecc	cmpi.w	#-$100,(Camera_Min_Y_pos).w
0001cbe6 6606	bne.s	+
0001cbe8 026807ff000c	andi.w	#$7FF,y_pos(a0)
0001cbee 61000018	bsr.w	Tails_HurtStop
0001cbf2 6100f966	bsr.w	Tails_LevelBound
0001cbf6 6100f340	bsr.w	Tails_RecordPos
0001cbfa 610001c8	bsr.w	Tails_Animate
0001cbfe 610005ac	bsr.w	LoadTailsDynPLC
0001cc02 4ef9000164f4	jmp	(DisplaySprite).l
0001cc08 3038eefe	move.w	(Tails_Max_Y_pos).w,d0
0001cc0c 064000e0	addi.w	#screen_height,d0
0001cc10 b068000c	cmp.w	y_pos(a0),d0
0001cc14 6d000702	blt.w	JmpTo2_KillCharacter
0001cc18 6100fd40	bsr.w	Tails_DoLevelCollision
0001cc1c 082800010022	btst	#status.player.in_air,status(a0)
0001cc22 662a	bne.s	return_1CC4E
0001cc24 7000	moveq	#0,d0
0001cc26 31400012	move.w	d0,y_vel(a0)
0001cc2a 31400010	move.w	d0,x_vel(a0)
0001cc2e 31400014	move.w	d0,inertia(a0)
0001cc32 1140002a	move.b	d0,obj_control(a0)
0001cc36 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
0001cc3c 117c00020024	move.b	#2,routine(a0)
0001cc42 317c00780030	move.w	#$78,invulnerable_time(a0)
0001cc48 117c00000039	move.b	#0,spindash_flag(a0)
0001cc4e 4e75	rts	
0001cc50 6100001a	bsr.w	Obj02_CheckGameOver
0001cc54 4eb900016380	jsr	(ObjectMoveAndFall).l
0001cc5a 6100f2dc	bsr.w	Tails_RecordPos
0001cc5e 61000164	bsr.w	Tails_Animate
0001cc62 61000548	bsr.w	LoadTailsDynPLC
0001cc66 4ef9000164f4	jmp	(DisplaySprite).l
0001cc6c 0c780002ff70	cmpi.w	#2,(Player_mode).w
0001cc72 6700e5a8	beq.w	CheckGameOver
0001cc76 11fc0001eebf	move.b	#1,(Scroll_lock_P2).w
0001cc7c 117c00000039	move.b	#0,spindash_flag(a0)
0001cc82 3038eefe	move.w	(Tails_Max_Y_pos).w,d0
0001cc86 06400100	addi.w	#$100,d0
0001cc8a b068000c	cmp.w	y_pos(a0),d0
0001cc8e 6c0000fe	bge.w	return_1CD8E
0001cc92 117c00020024	move.b	#2,routine(a0)
0001cc98 4a78ffd8	tst.w	(Two_player_mode).w
0001cc9c 6604	bne.s	Obj02_CheckGameOver_2Pmode
0001cc9e 6000f194	bra.w	TailsCPU_Despawn
0001cca2 5238fec8	addq.b	#1,(Update_HUD_lives_2P).w
0001cca6 5338fec6	subq.b	#1,(Life_count_2P).w
0001ccaa 6640	bne.s	Obj02_ResetLevel
0001ccac 317c0000003a	move.w	#0,restart_countdown(a0)
0001ccb2 11fc0039b080	move.b	#ObjID_GameOver,(GameOver_GameText+id).w
0001ccb8 11fc0039b0c0	move.b	#ObjID_GameOver,(GameOver_OverText+id).w
0001ccbe 11fc0001b0da	move.b	#1,(GameOver_OverText+mapping_frame).w
0001ccc4 31c8b0be	move.w	a0,(GameOver_GameText+parent).w
0001ccc8 4238fecc	clr.b	(Time_Over_flag_2P).w
0001cccc 4238fe1e	clr.b	(Update_HUD_timer).w
0001ccd0 4238feca	clr.b	(Update_HUD_timer_2P).w
0001ccd4 117c00080024	move.b	#8,routine(a0)
0001ccda 303c009b	move.w	#MusID_GameOver,d0
0001ccde 4eb90000135e	jsr	(PlayMusic).l
0001cce4 7003	moveq	#PLCID_GameOver,d0
0001cce6 4ef90000161e	jmp	(LoadPLC).l
0001ccec 4a38fe1a	tst.b	(Time_Over_flag).w
0001ccf0 671c	beq.s	Obj02_ResetLevel_Part2
0001ccf2 4a38fecc	tst.b	(Time_Over_flag_2P).w
0001ccf6 6740	beq.s	Obj02_ResetLevel_Part3
0001ccf8 317c0000003a	move.w	#0,restart_countdown(a0)
0001ccfe 4238fe1e	clr.b	(Update_HUD_timer).w
0001cd02 4238feca	clr.b	(Update_HUD_timer_2P).w
0001cd06 117c00080024	move.b	#8,routine(a0)
0001cd0c 4e75	rts	
0001cd0e 4a38fecc	tst.b	(Time_Over_flag_2P).w
0001cd12 6724	beq.s	Obj02_ResetLevel_Part3
0001cd14 317c0000003a	move.w	#0,restart_countdown(a0)
0001cd1a 11fc0039b080	move.b	#ObjID_TimeOver,(TimeOver_TimeText+id).w
0001cd20 11fc0039b0c0	move.b	#ObjID_TimeOver,(TimeOver_OverText+id).w
0001cd26 11fc0002b09a	move.b	#2,(TimeOver_TimeText+mapping_frame).w
0001cd2c 11fc0003b0da	move.b	#3,(TimeOver_OverText+mapping_frame).w
0001cd32 31c8b0be	move.w	a0,(TimeOver_TimeText+parent).w
0001cd36 6094	bra.s	Obj02_Finished
0001cd38 11fc0000eebf	move.b	#0,(Scroll_lock_P2).w
0001cd3e 117c000a0024	move.b	#$A,routine(a0)
0001cd44 3178fee20008	move.w	(Saved_x_pos_2P).w,x_pos(a0)
0001cd4a 3178fee4000c	move.w	(Saved_y_pos_2P).w,y_pos(a0)
0001cd50 3178feec0002	move.w	(Saved_art_tile_2P).w,art_tile(a0)
0001cd56 3178feee003e	move.w	(Saved_Solid_bits_2P).w,top_solid_bit(a0)
0001cd5c 4278fed0	clr.w	(Ring_count_2P).w
0001cd60 4238fec7	clr.b	(Extra_life_flags_2P).w
0001cd64 117c0000002a	move.b	#0,obj_control(a0)
0001cd6a 117c0005001c	move.b	#5,anim(a0)
0001cd70 317c00000010	move.w	#0,x_vel(a0)
0001cd76 317c00000012	move.w	#0,y_vel(a0)
0001cd7c 317c00000014	move.w	#0,inertia(a0)
0001cd82 117c00020022	move.b	#1<<status.player.in_air,status(a0)
0001cd88 317c0000002e	move.w	#0,move_lock(a0)
0001cd8e 4e75	rts	
0001cd90 4a68003a	tst.w	restart_countdown(a0)
0001cd94 670c	beq.s	+
0001cd96 5368003a	subq.w	#1,restart_countdown(a0)
0001cd9a 6606	bne.s	+
0001cd9c 31fc0001fe02	move.w	#1,(Level_Inactive_flag).w
0001cda2 4e75	rts	
0001cda4 4a78eeb8	tst.w	(Camera_X_pos_diff_P2).w
0001cda8 660c	bne.s	+
0001cdaa 4a78eeba	tst.w	(Camera_Y_pos_diff_P2).w
0001cdae 6606	bne.s	+
0001cdb0 117c00020024	move.b	#2,routine(a0)
0001cdb6 6100000c	bsr.w	Tails_Animate
0001cdba 610003f0	bsr.w	LoadTailsDynPLC
0001cdbe 4ef9000164f4	jmp	(DisplaySprite).l
0001cdc4 43f90001d038	lea	(TailsAniData).l,a1
0001cdca 7000	moveq	#0,d0
0001cdcc 1028001c	move.b	anim(a0),d0
0001cdd0 b028001d	cmp.b	prev_anim(a0),d0
0001cdd4 6716	beq.s	TAnim_Do
0001cdd6 1140001d	move.b	d0,prev_anim(a0)
0001cdda 117c0000001b	move.b	#0,anim_frame(a0)
0001cde0 117c0000001e	move.b	#0,anim_frame_duration(a0)
0001cde6 08a800050022	bclr	#status.player.pushing,status(a0)
0001cdec d040	add.w	d0,d0
0001cdee d2f10000	adda.w	(a1,d0.w),a1
0001cdf2 1011	move.b	(a1),d0
0001cdf4 6b66	bmi.s	TAnim_WalkRunZoom
0001cdf6 12280022	move.b	status(a0),d1
0001cdfa 02010001	andi.b	#1<<status.player.x_flip,d1
0001cdfe 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
0001ce04 83280001	or.b	d1,render_flags(a0)
0001ce08 5328001e	subq.b	#1,anim_frame_duration(a0)
0001ce0c 6a1c	bpl.s	TAnim_Delay
0001ce0e 1140001e	move.b	d0,anim_frame_duration(a0)
0001ce12 7200	moveq	#0,d1
0001ce14 1228001b	move.b	anim_frame(a0),d1
0001ce18 10311001	move.b	1(a1,d1.w),d0
0001ce1c 0c0000f0	cmpi.b	#$F0,d0
0001ce20 640a	bhs.s	TAnim_End_FF
0001ce22 1140001a	move.b	d0,mapping_frame(a0)
0001ce26 5228001b	addq.b	#1,anim_frame(a0)
0001ce2a 4e75	rts	
0001ce2c 5200	addq.b	#1,d0
0001ce2e 660c	bne.s	TAnim_End_FE
0001ce30 117c0000001b	move.b	#0,anim_frame(a0)
0001ce36 10290001	move.b	1(a1),d0
0001ce3a 60e6	bra.s	TAnim_Next
0001ce3c 5200	addq.b	#1,d0
0001ce3e 6610	bne.s	TAnim_End_FD
0001ce40 10311002	move.b	2(a1,d1.w),d0
0001ce44 9128001b	sub.b	d0,anim_frame(a0)
0001ce48 9200	sub.b	d0,d1
0001ce4a 10311001	move.b	1(a1,d1.w),d0
0001ce4e 60d2	bra.s	TAnim_Next
0001ce50 5200	addq.b	#1,d0
0001ce52 6606	bne.s	TAnim_End
0001ce54 11711002001c	move.b	2(a1,d1.w),anim(a0)
0001ce5a 4e75	rts	
0001ce5c 5328001e	subq.b	#1,anim_frame_duration(a0)
0001ce60 6ac8	bpl.s	TAnim_Delay
0001ce62 5200	addq.b	#1,d0
0001ce64 66000108	bne.w	TAnim_Roll
0001ce68 7000	moveq	#0,d0
0001ce6a 10280027	move.b	flip_angle(a0),d0
0001ce6e 66000098	bne.w	TAnim_Tumble
0001ce72 7200	moveq	#0,d1
0001ce74 10280026	move.b	angle(a0),d0
0001ce78 6b04	bmi.s	+
0001ce7a 6702	beq.s	+
0001ce7c 5300	subq.b	#1,d0
0001ce7e 14280022	move.b	status(a0),d2
0001ce82 02020001	andi.b	#1<<status.player.x_flip,d2
0001ce86 6602	bne.s	+
0001ce88 4600	not.b	d0
0001ce8a 06000010	addi.b	#$10,d0
0001ce8e 6a02	bpl.s	+
0001ce90 7203	moveq	#1<<render_flags.x_flip|1<<render_flags.y_flip,d1
0001ce92 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
0001ce98 b302	eor.b	d1,d2
0001ce9a 85280001	or.b	d2,render_flags(a0)
0001ce9e 082800050022	btst	#status.player.pushing,status(a0)
0001cea4 6600010c	bne.w	TAnim_Push
0001cea8 e808	lsr.b	#4,d0
0001ceaa 02000006	andi.b	#6,d0
0001ceae 34280014	move.w	inertia(a0),d2
0001ceb2 6a02	bpl.s	.skip
0001ceb4 4442	neg.w	d2
0001ceb6 4a28002b	tst.b	status_secondary(a0)
0001ceba 6a000004	bpl.w	+
0001cebe d442	add.w	d2,d2
0001cec0 1600	move.b	d0,d3
0001cec2 d603	add.b	d3,d3
0001cec4 d603	add.b	d3,d3
0001cec6 43f90001d07a	lea	(TailsAni_Walk).l,a1
0001cecc 0c420600	cmpi.w	#$600,d2
0001ced0 651c	blo.s	TAnim_SpeedSelected
0001ced2 43f90001d084	lea	(TailsAni_Run).l,a1
0001ced8 1200	move.b	d0,d1
0001ceda e209	lsr.b	#1,d1
0001cedc d001	add.b	d1,d0
0001cede d000	add.b	d0,d0
0001cee0 1600	move.b	d0,d3
0001cee2 0c420700	cmpi.w	#$700,d2
0001cee6 6506	blo.s	TAnim_SpeedSelected
0001cee8 43f90001d176	lea	(TailsAni_HaulAss).l,a1
0001ceee 4442	neg.w	d2
0001cef0 06420800	addi.w	#$800,d2
0001cef4 6a02	bpl.s	+
0001cef6 7400	moveq	#0,d2
0001cef8 e04a	lsr.w	#8,d2
0001cefa 1142001e	move.b	d2,anim_frame_duration(a0)
0001cefe 6100ff12	bsr.w	TAnim_Do2
0001cf02 d728001a	add.b	d3,mapping_frame(a0)
0001cf06 4e75	rts	
0001cf08 10280027	move.b	flip_angle(a0),d0
0001cf0c 7200	moveq	#0,d1
0001cf0e 14280022	move.b	status(a0),d2
0001cf12 02020001	andi.b	#1<<status.player.x_flip,d2
0001cf16 661e	bne.s	TAnim_Tumble_Left
0001cf18 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
0001cf1e 0600000b	addi.b	#$B,d0
0001cf22 80fc0016	divu.w	#$16,d0
0001cf26 06000075	addi.b	#$75,d0
0001cf2a 1140001a	move.b	d0,mapping_frame(a0)
0001cf2e 117c0000001e	move.b	#0,anim_frame_duration(a0)
0001cf34 4e75	rts	
0001cf36 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
0001cf3c 4a280029	tst.b	flip_turned(a0)
0001cf40 670c	beq.s	+
0001cf42 002800010001	ori.b	#1<<render_flags.x_flip,render_flags(a0)
0001cf48 0600000b	addi.b	#$B,d0
0001cf4c 600c	bra.s	++
0001cf4e 002800030001	ori.b	#1<<render_flags.x_flip|1<<render_flags.y_flip,render_flags(a0)
0001cf54 4400	neg.b	d0
0001cf56 0600008f	addi.b	#$8F,d0
0001cf5a 80fc0016	divu.w	#$16,d0
0001cf5e 06000075	addi.b	#$75,d0
0001cf62 1140001a	move.b	d0,mapping_frame(a0)
0001cf66 117c0000001e	move.b	#0,anim_frame_duration(a0)
0001cf6c 4e75	rts	
0001cf6e 5200	addq.b	#1,d0
0001cf70 6672	bne.s	TAnim_GetTailFrame
0001cf72 34280014	move.w	inertia(a0),d2
0001cf76 6a02	bpl.s	.skip
0001cf78 4442	neg.w	d2
0001cf7a 43f90001d093	lea	(TailsAni_Roll2).l,a1
0001cf80 0c420600	cmpi.w	#$600,d2
0001cf84 6406	bhs.s	+
0001cf86 43f90001d08e	lea	(TailsAni_Roll).l,a1
0001cf8c 4442	neg.w	d2
0001cf8e 06420400	addi.w	#$400,d2
0001cf92 6a02	bpl.s	+
0001cf94 7400	moveq	#0,d2
0001cf96 e04a	lsr.w	#8,d2
0001cf98 1142001e	move.b	d2,anim_frame_duration(a0)
0001cf9c 12280022	move.b	status(a0),d1
0001cfa0 02010001	andi.b	#1<<status.player.x_flip,d1
0001cfa4 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
0001cfaa 83280001	or.b	d1,render_flags(a0)
0001cfae 6000fe62	bra.w	TAnim_Do2
0001cfb2 34280014	move.w	inertia(a0),d2
0001cfb6 6b02	bmi.s	+
0001cfb8 4442	neg.w	d2
0001cfba 06420800	addi.w	#$800,d2
0001cfbe 6a02	bpl.s	+
0001cfc0 7400	moveq	#0,d2
0001cfc2 ec4a	lsr.w	#6,d2
0001cfc4 1142001e	move.b	d2,anim_frame_duration(a0)
0001cfc8 43f90001d098	lea	(TailsAni_Push).l,a1
0001cfce 12280022	move.b	status(a0),d1
0001cfd2 02010001	andi.b	#1<<status.player.x_flip,d1
0001cfd6 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
0001cfdc 83280001	or.b	d1,render_flags(a0)
0001cfe0 6000fe30	bra.w	TAnim_Do2
0001cfe4 322a0010	move.w	x_vel(a2),d1
0001cfe8 342a0012	move.w	y_vel(a2),d2
0001cfec 4eb90000364e	jsr	(CalcAngle).l
0001cff2 7200	moveq	#0,d1
0001cff4 14280022	move.b	status(a0),d2
0001cff8 02020001	andi.b	#1<<status.player.x_flip,d2
0001cffc 6604	bne.s	loc_1D002
0001cffe 4600	not.b	d0
0001d000 6004	bra.s	loc_1D006
0001d002 06000080	addi.b	#$80,d0
0001d006 06000010	addi.b	#$10,d0
0001d00a 6a02	bpl.s	+
0001d00c 7203	moveq	#1<<render_flags.x_flip|1<<render_flags.y_flip,d1
0001d00e 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
0001d014 b302	eor.b	d1,d2
0001d016 85280001	or.b	d2,render_flags(a0)
0001d01a e608	lsr.b	#3,d0
0001d01c 0200000c	andi.b	#$C,d0
0001d020 1600	move.b	d0,d3
0001d022 43f90001d2e8	lea	(Obj05Ani_Directional).l,a1
0001d028 117c0003001e	move.b	#3,anim_frame_duration(a0)
0001d02e 6100fde2	bsr.w	TAnim_Do2
0001d032 d728001a	add.b	d3,mapping_frame(a0)
0001d036 4e75	rts	
0001d184 7000	moveq	#0,d0
0001d186 1028001a	move.b	mapping_frame(a0),d0
0001d18a b038f7df	cmp.b	(TailsTails_LastLoadedDPLC).w,d0
0001d18e 676e	beq.s	return_1D1FE
0001d190 11c0f7df	move.b	d0,(TailsTails_LastLoadedDPLC).w
0001d194 45f90007446c	lea	(MapRUnc_Tails).l,a2
0001d19a d040	add.w	d0,d0
0001d19c d4f20000	adda.w	(a2,d0.w),a2
0001d1a0 3a1a	move.w	(a2)+,d5
0001d1a2 5345	subq.w	#1,d5
0001d1a4 6b58	bmi.s	return_1D1FE
0001d1a6 383cf600	move.w	#tiles_to_bytes(ArtTile_ArtUnc_Tails_Tails),d4
0001d1aa 6026	bra.s	TPLC_ReadEntry
0001d1ac 7000	moveq	#0,d0
0001d1ae 1028001a	move.b	mapping_frame(a0),d0
0001d1b2 b038f7de	cmp.b	(Tails_LastLoadedDPLC).w,d0
0001d1b6 6746	beq.s	return_1D1FE
0001d1b8 11c0f7de	move.b	d0,(Tails_LastLoadedDPLC).w
0001d1bc 45f90007446c	lea	(MapRUnc_Tails).l,a2
0001d1c2 d040	add.w	d0,d0
0001d1c4 d4f20000	adda.w	(a2,d0.w),a2
0001d1c8 3a1a	move.w	(a2)+,d5
0001d1ca 5345	subq.w	#1,d5
0001d1cc 6b30	bmi.s	return_1D1FE
0001d1ce 383cf400	move.w	#tiles_to_bytes(ArtTile_ArtUnc_Tails),d4
0001d1d2 7200	moveq	#0,d1
0001d1d4 321a	move.w	(a2)+,d1
0001d1d6 3601	move.w	d1,d3
0001d1d8 e04b	lsr.w	#8,d3
0001d1da 024300f0	andi.w	#$F0,d3
0001d1de 06430010	addi.w	#$10,d3
0001d1e2 02410fff	andi.w	#$FFF,d1
0001d1e6 eb89	lsl.l	#5,d1
0001d1e8 068100064320	addi.l	#ArtUnc_Tails,d1
0001d1ee 3404	move.w	d4,d2
0001d1f0 d843	add.w	d3,d4
0001d1f2 d843	add.w	d3,d4
0001d1f4 4eb90000144e	jsr	(QueueDMATransfer).l
0001d1fa 51cdffd6	dbf	d5,TPLC_ReadEntry
0001d1fe 4e75	rts	
0001d200 7000	moveq	#0,d0
0001d202 10280024	move.b	routine(a0),d0
0001d206 323b0006	move.w	Obj05_Index(pc,d0.w),d1
0001d20a 4efb1002	jmp	Obj05_Index(pc,d1.w)
0001d212 54280024	addq.b	#2,routine(a0)
0001d216 217c000739e20004	move.l	#MapUnc_Tails,mappings(a0)
0001d21e 317c07b00002	move.w	#make_art_tile(ArtTile_ArtUnc_Tails_Tails,0,0),art_tile(a0)
0001d224 61009b48	bsr.w	Adjust2PArtPointer
0001d228 117c00020018	move.b	#2,priority(a0)
0001d22e 117c00180019	move.b	#$18,width_pixels(a0)
0001d234 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0001d23a 3468003e	movea.w	parent(a0),a2
0001d23e 116a00260026	move.b	angle(a2),angle(a0)
0001d244 116a00220022	move.b	status(a2),status(a0)
0001d24a 316a00080008	move.w	x_pos(a2),x_pos(a0)
0001d250 316a000c000c	move.w	y_pos(a2),y_pos(a0)
0001d256 02687fff0002	andi.w	#drawing_mask,art_tile(a0)
0001d25c 4a6a0002	tst.w	art_tile(a2)
0001d260 6a06	bpl.s	+
0001d262 006880000002	ori.w	#high_priority,art_tile(a0)
0001d268 7000	moveq	#0,d0
0001d26a 102a001c	move.b	anim(a2),d0
0001d26e 082a00050022	btst	#status.player.pushing,status(a2)
0001d274 6702	beq.s	+
0001d276 7004	moveq	#4,d0
0001d278 b0280030	cmp.b	Obj05_parent_prev_anim(a0),d0
0001d27c 670a	beq.s	.display
0001d27e 11400030	move.b	d0,Obj05_parent_prev_anim(a0)
0001d282 117b001a001c	move.b	Obj05AniSelection(pc,d0.w),anim(a0)
0001d288 43f90001d2c0	lea	(Obj05AniData).l,a1
0001d28e 6100fb3a	bsr.w	Tails_Animate_Part2
0001d292 6100fef0	bsr.w	LoadTailsTailsDynPLC
0001d296 4eb9000164f4	jsr	(DisplaySprite).l
0001d29c 4e75	rts	
0001d318 4ef90003f926	jmp	(extractJmpToName("JmpTo2_KillCharacter")).l
0001d320 7000	moveq	#0,d0
0001d322 10280024	move.b	routine(a0),d0
0001d326 323b0006	move.w	Obj0A_Index(pc,d0.w),d1
0001d32a 4efb1002	jmp	Obj0A_Index(pc,d1.w)
0001d340 54280024	addq.b	#2,routine(a0)
0001d344 217c0001fbf60004	move.l	#Obj24_MapUnc_1FBF6,mappings(a0)
0001d34c 4a28003f	tst.b	obj0a_character+3(a0)
0001d350 6708	beq.s	+
0001d352 217c0001fc180004	move.l	#Obj24_MapUnc_1FC18,mappings(a0)
0001d35a 317c855b0002	move.w	#make_art_tile(ArtTile_ArtNem_BigBubbles,0,1),art_tile(a0)
0001d360 117c00840001	move.b	#1<<render_flags.on_screen|1<<render_flags.level_fg,render_flags(a0)
0001d366 117c00100019	move.b	#16,width_pixels(a0)
0001d36c 117c00010018	move.b	#1,priority(a0)
0001d372 10280028	move.b	subtype(a0),d0
0001d376 6a10	bpl.s	loc_1D388
0001d378 50280024	addq.b	#8,routine(a0)
0001d37c 0240007f	andi.w	#$7F,d0
0001d380 11400033	move.b	d0,obj0a_seconds_between_numbers(a0)
0001d384 60000280	bra.w	Obj0A_Countdown
0001d388 1140001c	move.b	d0,anim(a0)
0001d38c 316800080030	move.w	x_pos(a0),obj0a_original_x_pos(a0)
0001d392 317cff780012	move.w	#-$88,y_vel(a0)
0001d398 43f90001d860	lea	(Ani_obj0A).l,a1
0001d39e 4eb900016544	jsr	(AnimateSprite).l
0001d3a4 3038f646	move.w	(Water_Level_1).w,d0
0001d3a8 b068000c	cmp.w	y_pos(a0),d0
0001d3ac 651c	blo.s	Obj0A_Wobble
0001d3ae 117c00060024	move.b	#6,routine(a0)
0001d3b4 5e28001c	addq.b	#7,anim(a0)
0001d3b8 0c28000d001c	cmpi.b	#$D,anim(a0)
0001d3be 675a	beq.s	Obj0A_Display
0001d3c0 6558	blo.s	Obj0A_Display
0001d3c2 117c000d001c	move.b	#$D,anim(a0)
0001d3c8 6050	bra.s	Obj0A_Display
0001d3ca 4a38f7c7	tst.b	(WindTunnel_flag).w
0001d3ce 6704	beq.s	+
0001d3d0 58680030	addq.w	#4,obj0a_original_x_pos(a0)
0001d3d4 10280026	move.b	angle(a0),d0
0001d3d8 52280026	addq.b	#1,angle(a0)
0001d3dc 0240007f	andi.w	#$7F,d0
0001d3e0 43f90001d4c0	lea	(Obj0A_WobbleData).l,a1
0001d3e6 10310000	move.b	(a1,d0.w),d0
0001d3ea 4880	ext.w	d0
0001d3ec d0680030	add.w	obj0a_original_x_pos(a0),d0
0001d3f0 31400008	move.w	d0,x_pos(a0)
0001d3f4 617e	bsr.s	Obj0A_BecomeNumberMaybe
0001d3f6 4eb9000163ac	jsr	(ObjectMove).l
0001d3fc 4a280001	tst.b	render_flags(a0)
0001d400 6a06	bpl.s	JmpTo4_DeleteObject
0001d402 4ef9000164f4	jmp	(DisplaySprite).l
0001d408 4ef9000164e6	jmp	(DeleteObject).l
0001d40e 2468003c	movea.l	obj0a_character(a0),a2
0001d412 0c2a000c0028	cmpi.b	#12,air_left(a2)
0001d418 6214	bhi.s	JmpTo5_DeleteObject
0001d41a 6158	bsr.s	Obj0A_BecomeNumberMaybe
0001d41c 43f90001d860	lea	(Ani_obj0A).l,a1
0001d422 4eb900016544	jsr	(AnimateSprite).l
0001d428 4ef9000164f4	jmp	(DisplaySprite).l
0001d42e 4ef9000164e6	jmp	(DeleteObject).l
0001d434 2468003c	movea.l	obj0a_character(a0),a2
0001d438 0c2a000c0028	cmpi.b	#12,air_left(a2)
0001d43e 622e	bhi.s	JmpTo6_DeleteObject
0001d440 53680038	subq.w	#1,obj0a_timer(a0)
0001d444 660c	bne.s	Obj0A_Display2
0001d446 117c000e0024	move.b	#$E,routine(a0)
0001d44c 5e28001c	addq.b	#7,anim(a0)
0001d450 60c8	bra.s	Obj0A_Display
0001d452 43f90001d860	lea	(Ani_obj0A).l,a1
0001d458 4eb900016544	jsr	(AnimateSprite).l
0001d45e 61000160	bsr.w	Obj0A_LoadCountdownArt
0001d462 4a280001	tst.b	render_flags(a0)
0001d466 6a06	bpl.s	JmpTo6_DeleteObject
0001d468 4ef9000164f4	jmp	(DisplaySprite).l
0001d46e 4ef9000164e6	jmp	(DeleteObject).l
0001d474 4a680038	tst.w	obj0a_timer(a0)
0001d478 6744	beq.s	return_1D4BE
0001d47a 53680038	subq.w	#1,obj0a_timer(a0)
0001d47e 663e	bne.s	return_1D4BE
0001d480 0c280007001c	cmpi.b	#7,anim(a0)
0001d486 6436	bhs.s	return_1D4BE
0001d488 317c000f0038	move.w	#15,obj0a_timer(a0)
0001d48e 42680012	clr.w	y_vel(a0)
0001d492 117c00800001	move.b	#1<<render_flags.on_screen,render_flags(a0)
0001d498 30280008	move.w	x_pos(a0),d0
0001d49c 9078ee00	sub.w	(Camera_X_pos).w,d0
0001d4a0 06400080	addi.w	#spriteScreenPositionX(0),d0
0001d4a4 31400008	move.w	d0,x_pixel(a0)
0001d4a8 3028000c	move.w	y_pos(a0),d0
0001d4ac 9078ee04	sub.w	(Camera_Y_pos).w,d0
0001d4b0 06400080	addi.w	#spriteScreenPositionY(0),d0
0001d4b4 3140000a	move.w	d0,y_pixel(a0)
0001d4b8 117c000c0024	move.b	#$C,routine(a0)
0001d4be 4e75	rts	
0001d5c0 7200	moveq	#0,d1
0001d5c2 1228001a	move.b	mapping_frame(a0),d1
0001d5c6 0c010008	cmpi.b	#8,d1
0001d5ca 6538	blo.s	return_1D604
0001d5cc 0c01000e	cmpi.b	#$E,d1
0001d5d0 6432	bhs.s	return_1D604
0001d5d2 b228002e	cmp.b	obj0a_current_dplc(a0),d1
0001d5d6 672c	beq.s	return_1D604
0001d5d8 1141002e	move.b	d1,obj0a_current_dplc(a0)
0001d5dc 5141	subq.w	#8,d1
0001d5de 3001	move.w	d1,d0
0001d5e0 d241	add.w	d1,d1
0001d5e2 d240	add.w	d0,d1
0001d5e4 ed49	lsl.w	#6,d1
0001d5e6 06810007af80	addi.l	#ArtUnc_Countdown,d1
0001d5ec 343c9380	move.w	#tiles_to_bytes(ArtTile_ArtNem_SonicDust),d2
0001d5f0 4a28003f	tst.b	obj0a_character+3(a0)
0001d5f4 6704	beq.s	+
0001d5f6 343c9180	move.w	#tiles_to_bytes(ArtTile_ArtNem_TailsDust),d2
0001d5fa 363c0060	move.w	#tiles_to_words(6),d3
0001d5fe 4eb90000144e	jsr	(QueueDMATransfer).l
0001d604 4e75	rts	
0001d606 2468003c	movea.l	obj0a_character(a0),a2
0001d60a 4a68002c	tst.w	obj0a_time_until_freeze(a0)
0001d60e 660000f8	bne.w	Obj0A_PlayerHasDrowned
0001d612 0c2a00060024	cmpi.b	#6,routine(a2)
0001d618 64000202	bhs.w	return_1D81C
0001d61c 082a00060022	btst	#status.player.underwater,status(a2)
0001d622 670001f8	beq.w	return_1D81C
0001d626 53680038	subq.w	#1,obj0a_timer(a0)
0001d62a 6a000100	bpl.w	Obj0A_MakeBubbleMaybe
0001d62e 317c003b0038	move.w	#60-1,obj0a_timer(a0)
0001d634 317c00010036	move.w	#1,obj0a_flags(a0)
0001d63a 4eb900003390	jsr	(RandomNumber).l
0001d640 02400001	andi.w	#1,d0
0001d644 11400034	move.b	d0,obj0a_total_bubbles_to_spawn(a0)
0001d648 7000	moveq	#0,d0
0001d64a 102a0028	move.b	air_left(a2),d0
0001d64e 0c400019	cmpi.w	#25,d0
0001d652 6738	beq.s	Obj0A_WarnSound
0001d654 0c400014	cmpi.w	#20,d0
0001d658 6732	beq.s	Obj0A_WarnSound
0001d65a 0c40000f	cmpi.w	#15,d0
0001d65e 672c	beq.s	Obj0A_WarnSound
0001d660 0c40000c	cmpi.w	#12,d0
0001d664 6236	bhi.s	Obj0A_ReduceAir
0001d666 6610	bne.s	+
0001d668 4a28003f	tst.b	obj0a_character+3(a0)
0001d66c 660a	bne.s	+
0001d66e 303c009f	move.w	#MusID_Countdown,d0
0001d672 4eb90000135e	jsr	(PlayMusic).l
0001d678 53280032	subq.b	#1,obj0a_seconds_between_numbers_timer(a0)
0001d67c 6a1e	bpl.s	Obj0A_ReduceAir
0001d67e 116800330032	move.b	obj0a_seconds_between_numbers(a0),obj0a_seconds_between_numbers_timer(a0)
0001d684 08e800070036	bset	#7,obj0a_flags(a0)
0001d68a 6010	bra.s	Obj0A_ReduceAir
0001d68c 4a28003f	tst.b	obj0a_character+3(a0)
0001d690 660a	bne.s	Obj0A_ReduceAir
0001d692 303c00c2	move.w	#SndID_WaterWarning,d0
0001d696 4eb900001370	jsr	(PlaySound).l
0001d69c 532a0028	subq.b	#1,air_left(a2)
0001d6a0 64000088	bcc.w	BranchTo_Obj0A_MakeBubbleNow
0001d6a4 157c0081002a	move.b	#$81,obj_control(a2)
0001d6aa 303c00b2	move.w	#SndID_Drown,d0
0001d6ae 4eb900001370	jsr	(PlaySound).l
0001d6b4 117c000a0034	move.b	#10,obj0a_total_bubbles_to_spawn(a0)
0001d6ba 317c00010036	move.w	#1,obj0a_flags(a0)
0001d6c0 317c0078002c	move.w	#60*2,obj0a_time_until_freeze(a0)
0001d6c6 224a	movea.l	a2,a1
0001d6c8 61000154	bsr.w	ResumeMusic
0001d6cc 2f08	move.l	a0,-(sp)
0001d6ce 204a	movea.l	a2,a0
0001d6d0 6100d9da	bsr.w	Sonic_ResetOnFloor_Part2
0001d6d4 117c0017001c	move.b	#AniIDSonAni_Drown,anim(a0)
0001d6da 08e800010022	bset	#status.player.in_air,status(a0)
0001d6e0 08e800070002	bset	#high_priority_bit,art_tile(a0)
0001d6e6 317c00000012	move.w	#0,y_vel(a0)
0001d6ec 317c00000010	move.w	#0,x_vel(a0)
0001d6f2 317c00000014	move.w	#0,inertia(a0)
0001d6f8 205f	movea.l	(sp)+,a0
0001d6fa b4fcb000	cmpa.w	#MainCharacter,a2
0001d6fe 6606	bne.s	+
0001d700 11fc0001eedc	move.b	#1,(Deform_lock).w
0001d706 4e75	rts	
0001d708 5368002c	subq.w	#1,obj0a_time_until_freeze(a0)
0001d70c 6608	bne.s	+
0001d70e 157c00060024	move.b	#6,routine(a2)
0001d714 4e75	rts	
0001d716 2f08	move.l	a0,-(sp)
0001d718 204a	movea.l	a2,a0
0001d71a 4eb9000163ac	jsr	(ObjectMove).l
0001d720 066800100012	addi.w	#$10,y_vel(a0)
0001d726 205f	movea.l	(sp)+,a0
0001d728 6002	bra.s	Obj0A_MakeBubbleMaybe
0001d72a 6010	bra.s	Obj0A_MakeBubbleNow
0001d72c 4a680036	tst.w	obj0a_flags(a0)
0001d730 670000ea	beq.w	return_1D81C
0001d734 5368003a	subq.w	#1,obj0a_next_bubble_timer(a0)
0001d738 6a0000e2	bpl.w	return_1D81C
0001d73c 4eb900003390	jsr	(RandomNumber).l
0001d742 0240000f	andi.w	#$F,d0
0001d746 5040	addq.w	#8,d0
0001d748 3140003a	move.w	d0,obj0a_next_bubble_timer(a0)
0001d74c 4eb900017fda	jsr	(AllocateObject).l
0001d752 660000c8	bne.w	return_1D81C
0001d75c 336a00080008	move.w	x_pos(a2),x_pos(a1)
0001d762 7006	moveq	#6,d0
0001d764 082a00000022	btst	#status.player.x_flip,status(a2)
0001d76a 6708	beq.s	+
0001d76c 4440	neg.w	d0
0001d76e 137c00400026	move.b	#$40,angle(a1)
0001d774 d1690008	add.w	d0,x_pos(a1)
0001d778 336a000c000c	move.w	y_pos(a2),y_pos(a1)
0001d77e 2368003c003c	move.l	obj0a_character(a0),obj0a_character(a1)
0001d784 137c00060028	move.b	#6,subtype(a1)
0001d78a 4a68002c	tst.w	obj0a_time_until_freeze(a0)
0001d78e 67000036	beq.w	Obj0A_MakeNumberBubbleMaybe
0001d792 02680007003a	andi.w	#7,obj0a_next_bubble_timer(a0)
0001d798 06680000003a	addi.w	#0,obj0a_next_bubble_timer(a0)
0001d79e 302a000c	move.w	y_pos(a2),d0
0001d7a2 0440000c	subi.w	#12,d0
0001d7a6 3340000c	move.w	d0,y_pos(a1)
0001d7aa 4eb900003390	jsr	(RandomNumber).l
0001d7b0 13400026	move.b	d0,angle(a1)
0001d7b4 3038fe04	move.w	(Level_frame_counter).w,d0
0001d7b8 02000003	andi.b	#3,d0
0001d7bc 6654	bne.s	Obj0A_DoneCreatingBubble
0001d7be 137c000e0028	move.b	#$E,subtype(a1)
0001d7c4 604c	bra.s	Obj0A_DoneCreatingBubble
0001d7c6 082800070036	btst	#7,obj0a_flags(a0)
0001d7cc 6744	beq.s	Obj0A_DoneCreatingBubble
0001d7ce 7400	moveq	#0,d2
0001d7d0 142a0028	move.b	air_left(a2),d2
0001d7d4 0c02000c	cmpi.b	#12,d2
0001d7d8 6438	bhs.s	Obj0A_DoneCreatingBubble
0001d7da e24a	lsr.w	#1,d2
0001d7dc 4eb900003390	jsr	(RandomNumber).l
0001d7e2 02400003	andi.w	#3,d0
0001d7e6 6612	bne.s	+
0001d7e8 08e800060036	bset	#6,obj0a_flags(a0)
0001d7ee 6622	bne.s	Obj0A_DoneCreatingBubble
0001d7f0 13420028	move.b	d2,subtype(a1)
0001d7f4 337c001c0038	move.w	#28,obj0a_timer(a1)
0001d7fa 4a280034	tst.b	obj0a_total_bubbles_to_spawn(a0)
0001d7fe 6612	bne.s	Obj0A_DoneCreatingBubble
0001d800 08e800060036	bset	#6,obj0a_flags(a0)
0001d806 660a	bne.s	Obj0A_DoneCreatingBubble
0001d808 13420028	move.b	d2,subtype(a1)
0001d80c 337c001c0038	move.w	#28,obj0a_timer(a1)
0001d812 53280034	subq.b	#1,obj0a_total_bubbles_to_spawn(a0)
0001d816 6a04	bpl.s	return_1D81C
0001d818 42680036	clr.w	obj0a_flags(a0)
0001d81c 4e75	rts	
0001d81e 0c29000c0028	cmpi.b	#12,air_left(a1)
0001d824 6232	bhi.s	ResumeMusic_Done
0001d826 b2fcb000	cmpa.w	#MainCharacter,a1
0001d82a 662c	bne.s	ResumeMusic_Done
0001d82c 3038ff90	move.w	(Level_Music).w,d0
0001d830 08290001002b	btst	#status_secondary.invincible,status_secondary(a1)
0001d836 6704	beq.s	+
0001d838 303c0097	move.w	#MusID_Invincible,d0
0001d83c 4a38fe19	tst.b	(Super_Sonic_flag).w
0001d840 67000006	beq.w	+
0001d844 303c0096	move.w	#MusID_SuperSonic,d0
0001d848 4a38f7aa	tst.b	(Current_Boss_ID).w
0001d84c 6704	beq.s	+
0001d84e 303c0093	move.w	#MusID_Boss,d0
0001d852 4eb90000135e	jsr	(PlayMusic).l
0001d858 137c001e0028	move.b	#30,air_left(a1)
0001d85e 4e75	rts	
0001d8f2 7000	moveq	#0,d0
0001d8f4 10280024	move.b	routine(a0),d0
0001d8f8 323b0006	move.w	Obj38_Index(pc,d0.w),d1
0001d8fc 4efb1002	jmp	Obj38_Index(pc,d1.w)
0001d904 54280024	addq.b	#2,routine(a0)
0001d908 217c0001dbe40004	move.l	#Obj38_MapUnc_1DBE4,mappings(a0)
0001d910 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0001d916 117c00010018	move.b	#1,priority(a0)
0001d91c 117c00180019	move.b	#$18,width_pixels(a0)
0001d922 317c04be0002	move.w	#make_art_tile(ArtTile_ArtNem_Shield,0,0),art_tile(a0)
0001d928 61009444	bsr.w	Adjust2PArtPointer
0001d92c 3468003e	movea.w	parent(a0),a2
0001d930 082a0001002b	btst	#status_secondary.invincible,status_secondary(a2)
0001d936 663e	bne.s	return_1D976
0001d938 082a0000002b	btst	#status_secondary.shield,status_secondary(a2)
0001d93e 6738	beq.s	JmpTo7_DeleteObject
0001d940 316a00080008	move.w	x_pos(a2),x_pos(a0)
0001d946 316a000c000c	move.w	y_pos(a2),y_pos(a0)
0001d94c 116a00220022	move.b	status(a2),status(a0)
0001d952 02687fff0002	andi.w	#drawing_mask,art_tile(a0)
0001d958 4a6a0002	tst.w	art_tile(a2)
0001d95c 6a06	bpl.s	Obj38_Display
0001d95e 006880000002	ori.w	#high_priority,art_tile(a0)
0001d964 43f90001dbd6	lea	(Ani_obj38).l,a1
0001d96a 4eb900016544	jsr	(AnimateSprite).l
0001d970 4ef9000164f4	jmp	(DisplaySprite).l
0001d976 4e75	rts	
0001d978 4ef9000164e6	jmp	(DeleteObject).l
0001d97e 7000	moveq	#0,d0
0001d980 1028000a	move.b	objoff_A(a0),d0
0001d984 323b0006	move.w	Obj35_Index(pc,d0.w),d1
0001d988 4efb1002	jmp	Obj35_Index(pc,d1.w)
0001d9a4 7400	moveq	#0,d2
0001d9a6 45faffe4	lea	off_1D992-6(pc),a2
0001d9aa 43d0	lea	(a0),a1
0001d9ac 7203	moveq	#3,d1
0001d9b4 137c0004000a	move.b	#4,objoff_A(a1)
0001d9ba 237c0001dcbc0004	move.l	#Obj35_MapUnc_1DCBC,mappings(a1)
0001d9c2 337c04de0002	move.w	#make_art_tile(ArtTile_ArtNem_Invincible_stars,0,0),art_tile(a1)
0001d9c8 610093c0	bsr.w	Adjust2PArtPointer2
0001d9cc 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0001d9d2 08e900060001	bset	#render_flags.multi_sprite,render_flags(a1)
0001d9d8 137c0010000e	move.b	#$10,mainspr_width(a1)
0001d9de 137c0002000f	move.b	#2,mainspr_childsprites(a1)
0001d9e4 3368003e003e	move.w	parent(a0),parent(a1)
0001d9ea 13420036	move.b	d2,objoff_36(a1)
0001d9ee 5242	addq.w	#1,d2
0001d9f0 235a0030	move.l	(a2)+,objoff_30(a1)
0001d9f4 335a0034	move.w	(a2)+,objoff_34(a1)
0001d9f8 43e90040	lea	next_object(a1),a1
0001d9fc 51c9ffb0	dbf	d1,-
0001da00 117c0002000a	move.b	#2,objoff_A(a0)
0001da06 117c00040034	move.b	#4,objoff_34(a0)
0001da0c 3268003e	movea.w	parent(a0),a1
0001da10 08290001002b	btst	#status_secondary.invincible,status_secondary(a1)
0001da16 67008ace	beq.w	DeleteObject
0001da1a 30290008	move.w	x_pos(a1),d0
0001da1e 31400008	move.w	d0,x_pos(a0)
0001da22 3229000c	move.w	y_pos(a1),d1
0001da26 3141000c	move.w	d1,y_pos(a0)
0001da2a 45e80010	lea	subspr_data(a0),a2
0001da2e 47fa0152	lea	byte_1DB82(pc),a3
0001da32 7a00	moveq	#0,d5
0001da34 34280038	move.w	objoff_38(a0),d2
0001da38 1a332000	move.b	(a3,d2.w),d5
0001da3c 6a06	bpl.s	loc_1DA44
0001da3e 42680038	clr.w	objoff_38(a0)
0001da42 60f0	bra.s	loc_1DA34
0001da44 52680038	addq.w	#1,objoff_38(a0)
0001da48 4dfa00f8	lea	byte_1DB42(pc),a6
0001da4c 1c280034	move.b	objoff_34(a0),d6
0001da50 4eba00da	jsr	loc_1DB2C(pc)
0001da54 34c2	move.w	d2,(a2)+
0001da56 34c3	move.w	d3,(a2)+
0001da58 34c5	move.w	d5,(a2)+
0001da5a 06460020	addi.w	#$20,d6
0001da5e 4eba00cc	jsr	loc_1DB2C(pc)
0001da62 34c2	move.w	d2,(a2)+
0001da64 34c3	move.w	d3,(a2)+
0001da66 34c5	move.w	d5,(a2)+
0001da68 7012	moveq	#$12,d0
0001da6a 082900000022	btst	#status.player.x_flip,status(a1)
0001da70 6702	beq.s	loc_1DA74
0001da72 4440	neg.w	d0
0001da74 d1280034	add.b	d0,objoff_34(a0)
0001da78 303c0080	move.w	#object_display_list_size*1,d0
0001da7c 60008ab2	bra.w	DisplaySprite3
0001da80 3268003e	movea.w	parent(a0),a1
0001da84 08290001002b	btst	#status_secondary.invincible,status_secondary(a1)
0001da8a 67008a5a	beq.w	DeleteObject
0001da8e 0c780002ff70	cmpi.w	#2,(Player_mode).w
0001da94 670e	beq.s	loc_1DAA4
0001da96 4bf8eed2	lea	(Sonic_Pos_Record_Index).w,a5
0001da9a 4df8e500	lea	(Sonic_Pos_Record_Buf).w,a6
0001da9e 4a28003f	tst.b	parent+1(a0)
0001daa2 6708	beq.s	loc_1DAAC
0001daa4 4bf8eed6	lea	(Tails_Pos_Record_Index).w,a5
0001daa8 4df8e600	lea	(Tails_Pos_Record_Buf).w,a6
0001daac 12280036	move.b	objoff_36(a0),d1
0001dab0 e509	lsl.b	#2,d1
0001dab2 3401	move.w	d1,d2
0001dab4 d241	add.w	d1,d1
0001dab6 d242	add.w	d2,d1
0001dab8 3015	move.w	(a5),d0
0001daba 9001	sub.b	d1,d0
0001dabc 45f60000	lea	(a6,d0.w),a2
0001dac0 301a	move.w	(a2)+,d0
0001dac2 321a	move.w	(a2)+,d1
0001dac4 31400008	move.w	d0,x_pos(a0)
0001dac8 3141000c	move.w	d1,y_pos(a0)
0001dacc 45e80010	lea	subspr_data(a0),a2
0001dad0 26680030	movea.l	objoff_30(a0),a3
0001dad4 34280038	move.w	objoff_38(a0),d2
0001dad8 1a332000	move.b	(a3,d2.w),d5
0001dadc 6a06	bpl.s	loc_1DAE4
0001dade 42680038	clr.w	objoff_38(a0)
0001dae2 60f0	bra.s	loc_1DAD4
0001dae4 4845	swap	d5
0001dae6 d4280035	add.b	objoff_35(a0),d2
0001daea 1a332000	move.b	(a3,d2.w),d5
0001daee 52680038	addq.w	#1,objoff_38(a0)
0001daf2 4dfa004e	lea	byte_1DB42(pc),a6
0001daf6 1c280034	move.b	objoff_34(a0),d6
0001dafa 4eba0030	jsr	loc_1DB2C(pc)
0001dafe 34c2	move.w	d2,(a2)+
0001db00 34c3	move.w	d3,(a2)+
0001db02 34c5	move.w	d5,(a2)+
0001db04 06460020	addi.w	#$20,d6
0001db08 4845	swap	d5
0001db0a 4eba0020	jsr	loc_1DB2C(pc)
0001db0e 34c2	move.w	d2,(a2)+
0001db10 34c3	move.w	d3,(a2)+
0001db12 34c5	move.w	d5,(a2)+
0001db14 7002	moveq	#2,d0
0001db16 082900000022	btst	#status.player.x_flip,status(a1)
0001db1c 6702	beq.s	loc_1DB20
0001db1e 4440	neg.w	d0
0001db20 d1280034	add.b	d0,objoff_34(a0)
0001db24 303c0080	move.w	#object_display_list_size*1,d0
0001db28 60008a06	bra.w	DisplaySprite3
0001db2c 0246003e	andi.w	#$3E,d6
0001db30 14366000	move.b	(a6,d6.w),d2
0001db34 16366001	move.b	1(a6,d6.w),d3
0001db38 4882	ext.w	d2
0001db3a 4883	ext.w	d3
0001db3c d440	add.w	d0,d2
0001db3e d641	add.w	d1,d3
0001db40 4e75	rts	
0001dd20 7000	moveq	#0,d0
0001dd22 10280024	move.b	routine(a0),d0
0001dd26 323b0006	move.w	Obj08_Index(pc,d0.w),d1
0001dd2a 4efb1002	jmp	Obj08_Index(pc,d1.w)
0001dd36 54280024	addq.b	#2,routine(a0)
0001dd3a 217c0001df5e0004	move.l	#Obj08_MapUnc_1DF5E,mappings(a0)
0001dd42 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0001dd48 117c00010018	move.b	#1,priority(a0)
0001dd4e 117c00100019	move.b	#$10,width_pixels(a0)
0001dd54 317c049c0002	move.w	#make_art_tile(ArtTile_ArtNem_SonicDust,0,0),art_tile(a0)
0001dd5a 317cb000003e	move.w	#MainCharacter,parent(a0)
0001dd60 317c9380003c	move.w	#tiles_to_bytes(ArtTile_ArtNem_SonicDust),obj08_vram_address(a0)
0001dd66 b0fcd100	cmpa.w	#Sonic_Dust,a0
0001dd6a 6720	beq.s	+
0001dd6c 117c00010034	move.b	#1,obj08_belongs_to_tails(a0)
0001dd72 0c780002ff70	cmpi.w	#2,(Player_mode).w
0001dd78 6712	beq.s	+
0001dd7a 317c048c0002	move.w	#make_art_tile(ArtTile_ArtNem_TailsDust,0,0),art_tile(a0)
0001dd80 317cb040003e	move.w	#Sidekick,parent(a0)
0001dd86 317c9180003c	move.w	#tiles_to_bytes(ArtTile_ArtNem_TailsDust),obj08_vram_address(a0)
0001dd8c 61008fe0	bsr.w	Adjust2PArtPointer
0001dd90 3468003e	movea.w	parent(a0),a2
0001dd94 7000	moveq	#0,d0
0001dd96 1028001c	move.b	anim(a0),d0
0001dd9a d040	add.w	d0,d0
0001dd9c 323b0006	move.w	Obj08_DisplayModes(pc,d0.w),d1
0001dda0 4efb1002	jmp	Obj08_DisplayModes(pc,d1.w)
0001ddac 3178f646000c	move.w	(Water_Level_1).w,y_pos(a0)
0001ddb2 4a28001d	tst.b	prev_anim(a0)
0001ddb6 6670	bne.s	Obj08_Display
0001ddb8 316a00080008	move.w	x_pos(a2),x_pos(a0)
0001ddbe 117c00000022	move.b	#0,status(a0)
0001ddc4 02687fff0002	andi.w	#drawing_mask,art_tile(a0)
0001ddca 605c	bra.s	Obj08_Display
0001ddcc 0c2a000c0028	cmpi.b	#12,air_left(a2)
0001ddd2 656a	blo.s	Obj08_ResetDisplayMode
0001ddd4 0c2a00040024	cmpi.b	#4,routine(a2)
0001ddda 6462	bhs.s	Obj08_ResetDisplayMode
0001dddc 4a2a0039	tst.b	spindash_flag(a2)
0001dde0 675c	beq.s	Obj08_ResetDisplayMode
0001dde2 316a00080008	move.w	x_pos(a2),x_pos(a0)
0001dde8 316a000c000c	move.w	y_pos(a2),y_pos(a0)
0001ddee 116a00220022	move.b	status(a2),status(a0)
0001ddf4 022800010022	andi.b	#1<<status.npc.x_flip,status(a0)
0001ddfa 4a280034	tst.b	obj08_belongs_to_tails(a0)
0001ddfe 6706	beq.s	+
0001de06 4a28001d	tst.b	prev_anim(a0)
0001de0a 661c	bne.s	Obj08_Display
0001de0c 02687fff0002	andi.w	#drawing_mask,art_tile(a0)
0001de12 4a6a0002	tst.w	art_tile(a2)
0001de16 6a10	bpl.s	Obj08_Display
0001de18 006880000002	ori.w	#high_priority,art_tile(a0)
0001de1e 6008	bra.s	Obj08_Display
0001de20 0c2a000c0028	cmpi.b	#12,air_left(a2)
0001de26 6516	blo.s	Obj08_ResetDisplayMode
0001de28 43f90001df38	lea	(Ani_obj08).l,a1
0001de2e 4eb900016544	jsr	(AnimateSprite).l
0001de34 610000ae	bsr.w	Obj08_LoadDustOrSplashArt
0001de38 4ef9000164f4	jmp	(DisplaySprite).l
0001de3e 117c0000001c	move.b	#0,anim(a0)
0001de44 4e75	rts	
0001de46 6000869e	bra.w	DeleteObject
0001de4a 3468003e	movea.w	parent(a0),a2
0001de4e 0c2a000d001c	cmpi.b	#AniIDSonAni_Stop,anim(a2)
0001de54 670e	beq.s	Obj08_SkidDust
0001de56 117c00020024	move.b	#2,routine(a0)
0001de5c 117c00000032	move.b	#0,obj08_dust_timer(a0)
0001de62 4e75	rts	
0001de64 53280032	subq.b	#1,obj08_dust_timer(a0)
0001de68 6a76	bpl.s	loc_1DEE0
0001de6a 117c00030032	move.b	#3,obj08_dust_timer(a0)
0001de70 6100a168	bsr.w	AllocateObject
0001de74 666a	bne.s	loc_1DEE0
0001de7c 336a00080008	move.w	x_pos(a2),x_pos(a1)
0001de82 336a000c000c	move.w	y_pos(a2),y_pos(a1)
0001de88 06690010000c	addi.w	#$10,y_pos(a1)
0001de8e 4a280034	tst.b	obj08_belongs_to_tails(a0)
0001de92 6706	beq.s	+
0001de9a 137c00000022	move.b	#0,status(a1)
0001dea0 137c0003001c	move.b	#3,anim(a1)
0001dea6 54290024	addq.b	#2,routine(a1)
0001deaa 236800040004	move.l	mappings(a0),mappings(a1)
0001deb0 136800010001	move.b	render_flags(a0),render_flags(a1)
0001deb6 137c00010018	move.b	#1,priority(a1)
0001debc 137c00040019	move.b	#4,width_pixels(a1)
0001dec2 336800020002	move.w	art_tile(a0),art_tile(a1)
0001dec8 3368003e003e	move.w	parent(a0),parent(a1)
0001dece 02697fff0002	andi.w	#drawing_mask,art_tile(a1)
0001ded4 4a6a0002	tst.w	art_tile(a2)
0001ded8 6a06	bpl.s	loc_1DEE0
0001deda 006980000002	ori.w	#high_priority,art_tile(a1)
0001dee0 6102	bsr.s	Obj08_LoadDustOrSplashArt
0001dee2 4e75	rts	
0001dee4 7000	moveq	#0,d0
0001dee6 1028001a	move.b	mapping_frame(a0),d0
0001deea b0280030	cmp.b	obj08_previous_frame(a0),d0
0001deee 6746	beq.s	return_1DF36
0001def0 11400030	move.b	d0,obj08_previous_frame(a0)
0001def4 45f90001e074	lea	(Obj08_MapRUnc_1E074).l,a2
0001defa d040	add.w	d0,d0
0001defc d4f20000	adda.w	(a2,d0.w),a2
0001df00 3a1a	move.w	(a2)+,d5
0001df02 5345	subq.w	#1,d5
0001df04 6b30	bmi.s	return_1DF36
0001df06 3828003c	move.w	obj08_vram_address(a0),d4
0001df0c 321a	move.w	(a2)+,d1
0001df0e 3601	move.w	d1,d3
0001df10 e04b	lsr.w	#8,d3
0001df12 024300f0	andi.w	#$F0,d3
0001df16 06430010	addi.w	#$10,d3
0001df1a 02410fff	andi.w	#$FFF,d1
0001df1e eb89	lsl.l	#5,d1
0001df20 068100071ffc	addi.l	#ArtUnc_SplashAndDust,d1
0001df26 3404	move.w	d4,d2
0001df28 d843	add.w	d3,d4
0001df2a d843	add.w	d3,d4
0001df2c 4eb90000144e	jsr	(QueueDMATransfer).l
0001df32 51cdffd6	dbf	d5,-
0001df36 4e75	rts	
0001e0f0 7000	moveq	#0,d0
0001e0f2 10280024	move.b	routine(a0),d0
0001e0f6 323b0006	move.w	Obj7E_Index(pc,d0.w),d1
0001e0fa 4efb1002	jmp	Obj7E_Index(pc,d1.w)
0001e102 54280024	addq.b	#2,routine(a0)
0001e106 217c0001e1be0004	move.l	#Obj7E_MapUnc_1E1BE,mappings(a0)
0001e10e 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0001e114 117c00010018	move.b	#1,priority(a0)
0001e11a 117c00180019	move.b	#$18,width_pixels(a0)
0001e120 317c05f20002	move.w	#make_art_tile(ArtTile_ArtNem_SuperSonic_stars,0,0),art_tile(a0)
0001e126 61008c46	bsr.w	Adjust2PArtPointer
0001e12a 08380007b002	btst	#high_priority_bit,(MainCharacter+art_tile).w
0001e130 6706	beq.s	Obj7E_Main
0001e132 08e800070002	bset	#high_priority_bit,art_tile(a0)
0001e138 4a38fe19	tst.b	(Super_Sonic_flag).w
0001e13c 677a	beq.s	JmpTo8_DeleteObject
0001e13e 4a280030	tst.b	objoff_30(a0)
0001e142 6744	beq.s	loc_1E188
0001e144 5328001e	subq.b	#1,anim_frame_duration(a0)
0001e148 6a26	bpl.s	loc_1E170
0001e14a 117c0001001e	move.b	#1,anim_frame_duration(a0)
0001e150 5228001a	addq.b	#1,mapping_frame(a0)
0001e154 0c280006001a	cmpi.b	#6,mapping_frame(a0)
0001e15a 6514	blo.s	loc_1E170
0001e15c 117c0000001a	move.b	#0,mapping_frame(a0)
0001e162 117c00000030	move.b	#0,objoff_30(a0)
0001e168 117c00010031	move.b	#1,objoff_31(a0)
0001e16e 4e75	rts	
0001e170 4a280031	tst.b	objoff_31(a0)
0001e174 660c	bne.s	JmpTo6_DisplaySprite
0001e176 3178b0080008	move.w	(MainCharacter+x_pos).w,x_pos(a0)
0001e17c 3178b00c000c	move.w	(MainCharacter+y_pos).w,y_pos(a0)
0001e182 4ef9000164f4	jmp	(DisplaySprite).l
0001e188 4a38b02a	tst.b	(MainCharacter+obj_control).w
0001e18c 661c	bne.s	loc_1E1AA
0001e18e 3038b014	move.w	(MainCharacter+inertia).w,d0
0001e192 6a02	bpl.s	.skip
0001e194 4440	neg.w	d0
0001e196 0c400800	cmpi.w	#$800,d0
0001e19a 650e	blo.s	loc_1E1AA
0001e19c 117c0000001a	move.b	#0,mapping_frame(a0)
0001e1a2 117c00010030	move.b	#1,objoff_30(a0)
0001e1a8 60cc	bra.s	loc_1E176
0001e1aa 117c00000030	move.b	#0,objoff_30(a0)
0001e1b0 117c00000031	move.b	#0,objoff_31(a0)
0001e1b6 4e75	rts	
0001e1b8 4ef9000164e6	jmp	(DeleteObject).l
0001e232 4e71	nop	
0001e234 21fcffffd600f796	move.l	#Primary_Collision,(Collision_addr).w
0001e23c 0c28000c003e	cmpi.b	#$C,top_solid_bit(a0)
0001e242 6708	beq.s	+
0001e244 21fcffffd900f796	move.l	#Secondary_Collision,(Collision_addr).w
0001e24c 1a28003e	move.b	top_solid_bit(a0),d5
0001e250 082800030022	btst	#status.player.on_object,status(a0)
0001e256 670c	beq.s	+
0001e258 7000	moveq	#0,d0
0001e25a 11c0f768	move.b	d0,(Primary_Angle).w
0001e25e 11c0f76a	move.b	d0,(Secondary_Angle).w
0001e262 4e75	rts	
0001e266 11c0f768	move.b	d0,(Primary_Angle).w
0001e26a 11c0f76a	move.b	d0,(Secondary_Angle).w
0001e26e 10280026	move.b	angle(a0),d0
0001e272 06000020	addi.b	#$20,d0
0001e276 6a0e	bpl.s	loc_1E286
0001e278 10280026	move.b	angle(a0),d0
0001e27c 6a02	bpl.s	+
0001e27e 5300	subq.b	#1,d0
0001e280 06000020	addi.b	#$20,d0
0001e284 600c	bra.s	loc_1E292
0001e286 10280026	move.b	angle(a0),d0
0001e28a 6a02	bpl.s	loc_1E28E
0001e28c 5200	addq.b	#1,d0
0001e28e 0600001f	addi.b	#$1F,d0
0001e292 020000c0	andi.b	#$C0,d0
0001e296 0c000040	cmpi.b	#$40,d0
0001e29a 6700024c	beq.w	Sonic_WalkVertL
0001e29e 0c000080	cmpi.b	#$80,d0
0001e2a2 67000196	beq.w	Sonic_WalkCeiling
0001e2a6 0c0000c0	cmpi.b	#$C0,d0
0001e2aa 670000e6	beq.w	Sonic_WalkVertR
0001e2ae 3428000c	move.w	y_pos(a0),d2
0001e2b2 36280008	move.w	x_pos(a0),d3
0001e2b6 7000	moveq	#0,d0
0001e2b8 10280016	move.b	y_radius(a0),d0
0001e2bc 4880	ext.w	d0
0001e2be d440	add.w	d0,d2
0001e2c0 10280017	move.b	x_radius(a0),d0
0001e2c4 4880	ext.w	d0
0001e2c6 d640	add.w	d0,d3
0001e2c8 49f8f768	lea	(Primary_Angle).w,a4
0001e2cc 367c0010	movea.w	#$10,a3
0001e2d0 3c3c0000	move.w	#0,d6
0001e2d4 610004fa	bsr.w	FindFloor
0001e2d8 3f01	move.w	d1,-(sp)
0001e2da 3428000c	move.w	y_pos(a0),d2
0001e2de 36280008	move.w	x_pos(a0),d3
0001e2e2 7000	moveq	#0,d0
0001e2e4 10280016	move.b	y_radius(a0),d0
0001e2e8 4880	ext.w	d0
0001e2ea d440	add.w	d0,d2
0001e2ec 10280017	move.b	x_radius(a0),d0
0001e2f0 4880	ext.w	d0
0001e2f2 4440	neg.w	d0
0001e2f4 d640	add.w	d0,d3
0001e2f6 49f8f76a	lea	(Secondary_Angle).w,a4
0001e2fa 367c0010	movea.w	#$10,a3
0001e2fe 3c3c0000	move.w	#0,d6
0001e302 610004cc	bsr.w	FindFloor
0001e306 301f	move.w	(sp)+,d0
0001e308 6100004c	bsr.w	Sonic_Angle
0001e30c 4a41	tst.w	d1
0001e30e 670c	beq.s	return_1E31C
0001e310 6a0c	bpl.s	loc_1E31E
0001e312 0c41fff2	cmpi.w	#-$E,d1
0001e316 6d04	blt.s	return_1E31C
0001e318 d368000c	add.w	d1,y_pos(a0)
0001e31c 4e75	rts	
0001e31e 10280010	move.b	x_vel(a0),d0
0001e322 6a02	bpl.s	.skip
0001e324 4400	neg.b	d0
0001e326 5800	addq.b	#4,d0
0001e328 0c00000e	cmpi.b	#$E,d0
0001e32c 6504	blo.s	+
0001e32e 103c000e	move.b	#$E,d0
0001e332 b200	cmp.b	d0,d1
0001e334 6e06	bgt.s	loc_1E33C
0001e336 d368000c	add.w	d1,y_pos(a0)
0001e33a 4e75	rts	
0001e33c 4a280038	tst.b	stick_to_convex(a0)
0001e340 66f4	bne.s	loc_1E336
0001e342 08e800010022	bset	#status.player.in_air,status(a0)
0001e348 08a800050022	bclr	#status.player.pushing,status(a0)
0001e34e 117c0001001d	move.b	#AniIDSonAni_Run,prev_anim(a0)
0001e354 4e75	rts	
0001e356 1438f76a	move.b	(Secondary_Angle).w,d2
0001e35a b240	cmp.w	d0,d1
0001e35c 6f06	ble.s	+
0001e35e 1438f768	move.b	(Primary_Angle).w,d2
0001e362 3200	move.w	d0,d1
0001e364 08020000	btst	#0,d2
0001e368 6616	bne.s	loc_1E380
0001e36a 1002	move.b	d2,d0
0001e36c 90280026	sub.b	angle(a0),d0
0001e370 6a02	bpl.s	+
0001e372 4400	neg.b	d0
0001e374 0c000020	cmpi.b	#$20,d0
0001e378 6406	bhs.s	loc_1E380
0001e37a 11420026	move.b	d2,angle(a0)
0001e37e 4e75	rts	
0001e380 14280026	move.b	angle(a0),d2
0001e384 06020020	addi.b	#$20,d2
0001e388 020200c0	andi.b	#$C0,d2
0001e38c 11420026	move.b	d2,angle(a0)
0001e390 4e75	rts	
0001e392 3428000c	move.w	y_pos(a0),d2
0001e396 36280008	move.w	x_pos(a0),d3
0001e39a 7000	moveq	#0,d0
0001e39c 10280017	move.b	x_radius(a0),d0
0001e3a0 4880	ext.w	d0
0001e3a2 4440	neg.w	d0
0001e3a4 d440	add.w	d0,d2
0001e3a6 10280016	move.b	y_radius(a0),d0
0001e3aa 4880	ext.w	d0
0001e3ac d640	add.w	d0,d3
0001e3ae 49f8f768	lea	(Primary_Angle).w,a4
0001e3b2 367c0010	movea.w	#$10,a3
0001e3b6 3c3c0000	move.w	#0,d6
0001e3ba 610005f4	bsr.w	FindWall
0001e3be 3f01	move.w	d1,-(sp)
0001e3c0 3428000c	move.w	y_pos(a0),d2
0001e3c4 36280008	move.w	x_pos(a0),d3
0001e3c8 7000	moveq	#0,d0
0001e3ca 10280017	move.b	x_radius(a0),d0
0001e3ce 4880	ext.w	d0
0001e3d0 d440	add.w	d0,d2
0001e3d2 10280016	move.b	y_radius(a0),d0
0001e3d6 4880	ext.w	d0
0001e3d8 d640	add.w	d0,d3
0001e3da 49f8f76a	lea	(Secondary_Angle).w,a4
0001e3de 367c0010	movea.w	#$10,a3
0001e3e2 3c3c0000	move.w	#0,d6
0001e3e6 610005c8	bsr.w	FindWall
0001e3ea 301f	move.w	(sp)+,d0
0001e3ec 6100ff68	bsr.w	Sonic_Angle
0001e3f0 4a41	tst.w	d1
0001e3f2 670c	beq.s	return_1E400
0001e3f4 6a0c	bpl.s	loc_1E402
0001e3f6 0c41fff2	cmpi.w	#-$E,d1
0001e3fa 6d04	blt.s	return_1E400
0001e3fc d3680008	add.w	d1,x_pos(a0)
0001e400 4e75	rts	
0001e402 10280012	move.b	y_vel(a0),d0
0001e406 6a02	bpl.s	.skip
0001e408 4400	neg.b	d0
0001e40a 5800	addq.b	#4,d0
0001e40c 0c00000e	cmpi.b	#$E,d0
0001e410 6504	blo.s	+
0001e412 103c000e	move.b	#$E,d0
0001e416 b200	cmp.b	d0,d1
0001e418 6e06	bgt.s	loc_1E420
0001e41a d3680008	add.w	d1,x_pos(a0)
0001e41e 4e75	rts	
0001e420 4a280038	tst.b	stick_to_convex(a0)
0001e424 66f4	bne.s	loc_1E41A
0001e426 08e800010022	bset	#status.player.in_air,status(a0)
0001e42c 08a800050022	bclr	#status.player.pushing,status(a0)
0001e432 117c0001001d	move.b	#AniIDSonAni_Run,prev_anim(a0)
0001e438 4e75	rts	
0001e43a 3428000c	move.w	y_pos(a0),d2
0001e43e 36280008	move.w	x_pos(a0),d3
0001e442 7000	moveq	#0,d0
0001e444 10280016	move.b	y_radius(a0),d0
0001e448 4880	ext.w	d0
0001e44a 9440	sub.w	d0,d2
0001e44c 0a42000f	eori.w	#$F,d2
0001e450 10280017	move.b	x_radius(a0),d0
0001e454 4880	ext.w	d0
0001e456 d640	add.w	d0,d3
0001e458 49f8f768	lea	(Primary_Angle).w,a4
0001e45c 367cfff0	movea.w	#-$10,a3
0001e460 3c3c0800	move.w	#$800,d6
0001e464 6100036a	bsr.w	FindFloor
0001e468 3f01	move.w	d1,-(sp)
0001e46a 3428000c	move.w	y_pos(a0),d2
0001e46e 36280008	move.w	x_pos(a0),d3
0001e472 7000	moveq	#0,d0
0001e474 10280016	move.b	y_radius(a0),d0
0001e478 4880	ext.w	d0
0001e47a 9440	sub.w	d0,d2
0001e47c 0a42000f	eori.w	#$F,d2
0001e480 10280017	move.b	x_radius(a0),d0
0001e484 4880	ext.w	d0
0001e486 9640	sub.w	d0,d3
0001e488 49f8f76a	lea	(Secondary_Angle).w,a4
0001e48c 367cfff0	movea.w	#-$10,a3
0001e490 3c3c0800	move.w	#$800,d6
0001e494 6100033a	bsr.w	FindFloor
0001e498 301f	move.w	(sp)+,d0
0001e49a 6100feba	bsr.w	Sonic_Angle
0001e49e 4a41	tst.w	d1
0001e4a0 670c	beq.s	return_1E4AE
0001e4a2 6a0c	bpl.s	loc_1E4B0
0001e4a4 0c41fff2	cmpi.w	#-$E,d1
0001e4a8 6d04	blt.s	return_1E4AE
0001e4aa 9368000c	sub.w	d1,y_pos(a0)
0001e4ae 4e75	rts	
0001e4b0 10280010	move.b	x_vel(a0),d0
0001e4b4 6a02	bpl.s	.skip
0001e4b6 4400	neg.b	d0
0001e4b8 5800	addq.b	#4,d0
0001e4ba 0c00000e	cmpi.b	#$E,d0
0001e4be 6504	blo.s	+
0001e4c0 103c000e	move.b	#$E,d0
0001e4c4 b200	cmp.b	d0,d1
0001e4c6 6e06	bgt.s	loc_1E4CE
0001e4c8 9368000c	sub.w	d1,y_pos(a0)
0001e4cc 4e75	rts	
0001e4ce 4a280038	tst.b	stick_to_convex(a0)
0001e4d2 66f4	bne.s	loc_1E4C8
0001e4d4 08e800010022	bset	#status.player.in_air,status(a0)
0001e4da 08a800050022	bclr	#status.player.pushing,status(a0)
0001e4e0 117c0001001d	move.b	#AniIDSonAni_Run,prev_anim(a0)
0001e4e6 4e75	rts	
0001e4e8 3428000c	move.w	y_pos(a0),d2
0001e4ec 36280008	move.w	x_pos(a0),d3
0001e4f0 7000	moveq	#0,d0
0001e4f2 10280017	move.b	x_radius(a0),d0
0001e4f6 4880	ext.w	d0
0001e4f8 9440	sub.w	d0,d2
0001e4fa 10280016	move.b	y_radius(a0),d0
0001e4fe 4880	ext.w	d0
0001e500 9640	sub.w	d0,d3
0001e502 0a43000f	eori.w	#$F,d3
0001e506 49f8f768	lea	(Primary_Angle).w,a4
0001e50a 367cfff0	movea.w	#-$10,a3
0001e50e 3c3c0400	move.w	#$400,d6
0001e512 6100049c	bsr.w	FindWall
0001e516 3f01	move.w	d1,-(sp)
0001e518 3428000c	move.w	y_pos(a0),d2
0001e51c 36280008	move.w	x_pos(a0),d3
0001e520 7000	moveq	#0,d0
0001e522 10280017	move.b	x_radius(a0),d0
0001e526 4880	ext.w	d0
0001e528 d440	add.w	d0,d2
0001e52a 10280016	move.b	y_radius(a0),d0
0001e52e 4880	ext.w	d0
0001e530 9640	sub.w	d0,d3
0001e532 0a43000f	eori.w	#$F,d3
0001e536 49f8f76a	lea	(Secondary_Angle).w,a4
0001e53a 367cfff0	movea.w	#-$10,a3
0001e53e 3c3c0400	move.w	#$400,d6
0001e542 6100046c	bsr.w	FindWall
0001e546 301f	move.w	(sp)+,d0
0001e548 6100fe0c	bsr.w	Sonic_Angle
0001e54c 4a41	tst.w	d1
0001e54e 670c	beq.s	return_1E55C
0001e550 6a0c	bpl.s	loc_1E55E
0001e552 0c41fff2	cmpi.w	#-$E,d1
0001e556 6d04	blt.s	return_1E55C
0001e558 93680008	sub.w	d1,x_pos(a0)
0001e55c 4e75	rts	
0001e55e 10280012	move.b	y_vel(a0),d0
0001e562 6a02	bpl.s	.skip
0001e564 4400	neg.b	d0
0001e566 5800	addq.b	#4,d0
0001e568 0c00000e	cmpi.b	#$E,d0
0001e56c 6504	blo.s	+
0001e56e 103c000e	move.b	#$E,d0
0001e572 b200	cmp.b	d0,d1
0001e574 6e06	bgt.s	loc_1E57C
0001e576 93680008	sub.w	d1,x_pos(a0)
0001e57a 4e75	rts	
0001e57c 4a280038	tst.b	stick_to_convex(a0)
0001e580 66f4	bne.s	loc_1E576
0001e582 08e800010022	bset	#status.player.in_air,status(a0)
0001e588 08a800050022	bclr	#status.player.pushing,status(a0)
0001e58e 117c0001001d	move.b	#AniIDSonAni_Run,prev_anim(a0)
0001e594 4e75	rts	
0001e596 3002	move.w	d2,d0
0001e598 d040	add.w	d0,d0
0001e59a 02400f00	andi.w	#$F00,d0
0001e59e 3203	move.w	d3,d1
0001e5a0 e649	lsr.w	#3,d1
0001e5a2 3801	move.w	d1,d4
0001e5a4 e849	lsr.w	#4,d1
0001e5a6 0241007f	andi.w	#$7F,d1
0001e5aa d041	add.w	d1,d0
0001e5ac 72ff	moveq	#-1,d1
0001e5ae 4241	clr.w	d1
0001e5b0 43f88000	lea	(Level_Layout).w,a1
0001e5b4 12310000	move.b	(a1,d0.w),d1
0001e5b8 d241	add.w	d1,d1
0001e5ba 323b1014	move.w	word_1E5D0(pc,d1.w),d1
0001e5be 3002	move.w	d2,d0
0001e5c0 02400070	andi.w	#$70,d0
0001e5c4 d240	add.w	d0,d1
0001e5c6 0244000e	andi.w	#$E,d4
0001e5ca d244	add.w	d4,d1
0001e5cc 2241	movea.l	d1,a1
0001e5ce 4e75	rts	
0001e7d0 6100fdc4	bsr.w	Find_Tile
0001e7d4 3011	move.w	(a1),d0
0001e7d6 3800	move.w	d0,d4
0001e7d8 024003ff	andi.w	#$3FF,d0
0001e7dc 6704	beq.s	loc_1E7E2
0001e7de 0b04	btst	d5,d4
0001e7e0 660e	bne.s	loc_1E7F0
0001e7e2 d44b	add.w	a3,d2
0001e7e4 61000092	bsr.w	FindFloor2
0001e7e8 944b	sub.w	a3,d2
0001e7ea 06410010	addi.w	#$10,d1
0001e7ee 4e75	rts	
0001e7f0 2478f796	movea.l	(Collision_addr).w,a2
0001e7f4 10320000	move.b	(a2,d0.w),d0
0001e7f8 024000ff	andi.w	#$FF,d0
0001e7fc 67e4	beq.s	loc_1E7E2
0001e7fe 45f900042d50	lea	(ColCurveMap).l,a2
0001e804 18b20000	move.b	(a2,d0.w),(a4)
0001e808 e948	lsl.w	#4,d0
0001e80a 3203	move.w	d3,d1
0001e80c 0804000a	btst	#$A,d4
0001e810 6704	beq.s	+
0001e812 4641	not.w	d1
0001e814 4414	neg.b	(a4)
0001e816 0804000b	btst	#$B,d4
0001e81a 670a	beq.s	+
0001e81c 06140040	addi.b	#$40,(a4)
0001e820 4414	neg.b	(a4)
0001e822 04140040	subi.b	#$40,(a4)
0001e826 0241000f	andi.w	#$F,d1
0001e82a d240	add.w	d0,d1
0001e82c 45f900042e50	lea	(ColArrayVertical).l,a2
0001e832 10321000	move.b	(a2,d1.w),d0
0001e836 4880	ext.w	d0
0001e838 bd44	eor.w	d6,d4
0001e83a 0804000b	btst	#$B,d4
0001e83e 6702	beq.s	+
0001e840 4440	neg.w	d0
0001e842 4a40	tst.w	d0
0001e844 679c	beq.s	loc_1E7E2
0001e846 6b16	bmi.s	loc_1E85E
0001e848 0c000010	cmpi.b	#$10,d0
0001e84c 671c	beq.s	loc_1E86A
0001e84e 3202	move.w	d2,d1
0001e850 0241000f	andi.w	#$F,d1
0001e854 d041	add.w	d1,d0
0001e856 323c000f	move.w	#$F,d1
0001e85a 9240	sub.w	d0,d1
0001e85c 4e75	rts	
0001e85e 3202	move.w	d2,d1
0001e860 0241000f	andi.w	#$F,d1
0001e864 d041	add.w	d1,d0
0001e866 6a00ff7a	bpl.w	loc_1E7E2
0001e86a 944b	sub.w	a3,d2
0001e86c 6100000a	bsr.w	FindFloor2
0001e870 d44b	add.w	a3,d2
0001e872 04410010	subi.w	#$10,d1
0001e876 4e75	rts	
0001e878 6100fd1c	bsr.w	Find_Tile
0001e87c 3011	move.w	(a1),d0
0001e87e 3800	move.w	d0,d4
0001e880 024003ff	andi.w	#$3FF,d0
0001e884 6704	beq.s	loc_1E88A
0001e886 0b04	btst	d5,d4
0001e888 660e	bne.s	loc_1E898
0001e88a 323c000f	move.w	#$F,d1
0001e88e 3002	move.w	d2,d0
0001e890 0240000f	andi.w	#$F,d0
0001e894 9240	sub.w	d0,d1
0001e896 4e75	rts	
0001e898 2478f796	movea.l	(Collision_addr).w,a2
0001e89c 10320000	move.b	(a2,d0.w),d0
0001e8a0 024000ff	andi.w	#$FF,d0
0001e8a4 67e4	beq.s	loc_1E88A
0001e8a6 45f900042d50	lea	(ColCurveMap).l,a2
0001e8ac 18b20000	move.b	(a2,d0.w),(a4)
0001e8b0 e948	lsl.w	#4,d0
0001e8b2 3203	move.w	d3,d1
0001e8b4 0804000a	btst	#$A,d4
0001e8b8 6704	beq.s	+
0001e8ba 4641	not.w	d1
0001e8bc 4414	neg.b	(a4)
0001e8be 0804000b	btst	#$B,d4
0001e8c2 670a	beq.s	+
0001e8c4 06140040	addi.b	#$40,(a4)
0001e8c8 4414	neg.b	(a4)
0001e8ca 04140040	subi.b	#$40,(a4)
0001e8ce 0241000f	andi.w	#$F,d1
0001e8d2 d240	add.w	d0,d1
0001e8d4 45f900042e50	lea	(ColArrayVertical).l,a2
0001e8da 10321000	move.b	(a2,d1.w),d0
0001e8de 4880	ext.w	d0
0001e8e0 bd44	eor.w	d6,d4
0001e8e2 0804000b	btst	#$B,d4
0001e8e6 6702	beq.s	+
0001e8e8 4440	neg.w	d0
0001e8ea 4a40	tst.w	d0
0001e8ec 679c	beq.s	loc_1E88A
0001e8ee 6b10	bmi.s	loc_1E900
0001e8f0 3202	move.w	d2,d1
0001e8f2 0241000f	andi.w	#$F,d1
0001e8f6 d041	add.w	d1,d0
0001e8f8 323c000f	move.w	#$F,d1
0001e8fc 9240	sub.w	d0,d1
0001e8fe 4e75	rts	
0001e900 3202	move.w	d2,d1
0001e902 0241000f	andi.w	#$F,d1
0001e906 d041	add.w	d1,d0
0001e908 6a00ff80	bpl.w	loc_1E88A
0001e90c 4641	not.w	d1
0001e90e 4e75	rts	
0001e910 6100fc84	bsr.w	Find_Tile
0001e914 3011	move.w	(a1),d0
0001e916 3800	move.w	d0,d4
0001e918 024003ff	andi.w	#$3FF,d0
0001e91c 6704	beq.s	loc_1E922
0001e91e 0b04	btst	d5,d4
0001e920 6606	bne.s	loc_1E928
0001e922 323c0010	move.w	#$10,d1
0001e926 4e75	rts	
0001e928 2478f796	movea.l	(Collision_addr).w,a2
0001e92c 10320000	move.b	(a2,d0.w),d0
0001e930 024000ff	andi.w	#$FF,d0
0001e934 67ec	beq.s	loc_1E922
0001e936 45f900042d50	lea	(ColCurveMap).l,a2
0001e93c 18b20000	move.b	(a2,d0.w),(a4)
0001e940 e948	lsl.w	#4,d0
0001e942 3203	move.w	d3,d1
0001e944 0804000a	btst	#$A,d4
0001e948 6704	beq.s	+
0001e94a 4641	not.w	d1
0001e94c 4414	neg.b	(a4)
0001e94e 0804000b	btst	#$B,d4
0001e952 670a	beq.s	+
0001e954 06140040	addi.b	#$40,(a4)
0001e958 4414	neg.b	(a4)
0001e95a 04140040	subi.b	#$40,(a4)
0001e95e 0241000f	andi.w	#$F,d1
0001e962 d240	add.w	d0,d1
0001e964 45f900042e50	lea	(ColArrayVertical).l,a2
0001e96a 10321000	move.b	(a2,d1.w),d0
0001e96e 4880	ext.w	d0
0001e970 bd44	eor.w	d6,d4
0001e972 0804000b	btst	#$B,d4
0001e976 6702	beq.s	+
0001e978 4440	neg.w	d0
0001e97a 4a40	tst.w	d0
0001e97c 67a4	beq.s	loc_1E922
0001e97e 6b16	bmi.s	loc_1E996
0001e980 0c000010	cmpi.b	#$10,d0
0001e984 671c	beq.s	loc_1E9A2
0001e986 3202	move.w	d2,d1
0001e988 0241000f	andi.w	#$F,d1
0001e98c d041	add.w	d1,d0
0001e98e 323c000f	move.w	#$F,d1
0001e992 9240	sub.w	d0,d1
0001e994 4e75	rts	
0001e996 3202	move.w	d2,d1
0001e998 0241000f	andi.w	#$F,d1
0001e99c d041	add.w	d1,d0
0001e99e 6a00ff82	bpl.w	loc_1E922
0001e9a2 944b	sub.w	a3,d2
0001e9a4 6100fed2	bsr.w	FindFloor2
0001e9a8 d44b	add.w	a3,d2
0001e9aa 04410010	subi.w	#$10,d1
0001e9ae 4e75	rts	
0001e9b0 6100fbe4	bsr.w	Find_Tile
0001e9b4 3011	move.w	(a1),d0
0001e9b6 3800	move.w	d0,d4
0001e9b8 024003ff	andi.w	#$3FF,d0
0001e9bc 6704	beq.s	loc_1E9C2
0001e9be 0b04	btst	d5,d4
0001e9c0 660e	bne.s	loc_1E9D0
0001e9c2 d64b	add.w	a3,d3
0001e9c4 61000092	bsr.w	FindWall2
0001e9c8 964b	sub.w	a3,d3
0001e9ca 06410010	addi.w	#$10,d1
0001e9ce 4e75	rts	
0001e9d0 2478f796	movea.l	(Collision_addr).w,a2
0001e9d4 10320000	move.b	(a2,d0.w),d0
0001e9d8 024000ff	andi.w	#$FF,d0
0001e9dc 67e4	beq.s	loc_1E9C2
0001e9de 45f900042d50	lea	(ColCurveMap).l,a2
0001e9e4 18b20000	move.b	(a2,d0.w),(a4)
0001e9e8 e948	lsl.w	#4,d0
0001e9ea 3202	move.w	d2,d1
0001e9ec 0804000b	btst	#$B,d4
0001e9f0 670c	beq.s	+
0001e9f2 4641	not.w	d1
0001e9f4 06140040	addi.b	#$40,(a4)
0001e9f8 4414	neg.b	(a4)
0001e9fa 04140040	subi.b	#$40,(a4)
0001e9fe 0804000a	btst	#$A,d4
0001ea02 6702	beq.s	+
0001ea04 4414	neg.b	(a4)
0001ea06 0241000f	andi.w	#$F,d1
0001ea0a d240	add.w	d0,d1
0001ea0c 45f900043e50	lea	(ColArrayHorizontal).l,a2
0001ea12 10321000	move.b	(a2,d1.w),d0
0001ea16 4880	ext.w	d0
0001ea18 bd44	eor.w	d6,d4
0001ea1a 0804000a	btst	#$A,d4
0001ea1e 6702	beq.s	+
0001ea20 4440	neg.w	d0
0001ea22 4a40	tst.w	d0
0001ea24 679c	beq.s	loc_1E9C2
0001ea26 6b16	bmi.s	loc_1EA3E
0001ea28 0c000010	cmpi.b	#$10,d0
0001ea2c 671c	beq.s	loc_1EA4A
0001ea2e 3203	move.w	d3,d1
0001ea30 0241000f	andi.w	#$F,d1
0001ea34 d041	add.w	d1,d0
0001ea36 323c000f	move.w	#$F,d1
0001ea3a 9240	sub.w	d0,d1
0001ea3c 4e75	rts	
0001ea3e 3203	move.w	d3,d1
0001ea40 0241000f	andi.w	#$F,d1
0001ea44 d041	add.w	d1,d0
0001ea46 6a00ff7a	bpl.w	loc_1E9C2
0001ea4a 964b	sub.w	a3,d3
0001ea4c 6100000a	bsr.w	FindWall2
0001ea50 d64b	add.w	a3,d3
0001ea52 04410010	subi.w	#$10,d1
0001ea56 4e75	rts	
0001ea58 6100fb3c	bsr.w	Find_Tile
0001ea5c 3011	move.w	(a1),d0
0001ea5e 3800	move.w	d0,d4
0001ea60 024003ff	andi.w	#$3FF,d0
0001ea64 6704	beq.s	loc_1EA6A
0001ea66 0b04	btst	d5,d4
0001ea68 660e	bne.s	loc_1EA78
0001ea6a 323c000f	move.w	#$F,d1
0001ea6e 3003	move.w	d3,d0
0001ea70 0240000f	andi.w	#$F,d0
0001ea74 9240	sub.w	d0,d1
0001ea76 4e75	rts	
0001ea78 2478f796	movea.l	(Collision_addr).w,a2
0001ea7c 10320000	move.b	(a2,d0.w),d0
0001ea80 024000ff	andi.w	#$FF,d0
0001ea84 67e4	beq.s	loc_1EA6A
0001ea86 45f900042d50	lea	(ColCurveMap).l,a2
0001ea8c 18b20000	move.b	(a2,d0.w),(a4)
0001ea90 e948	lsl.w	#4,d0
0001ea92 3202	move.w	d2,d1
0001ea94 0804000b	btst	#$B,d4
0001ea98 670c	beq.s	+
0001ea9a 4641	not.w	d1
0001ea9c 06140040	addi.b	#$40,(a4)
0001eaa0 4414	neg.b	(a4)
0001eaa2 04140040	subi.b	#$40,(a4)
0001eaa6 0804000a	btst	#$A,d4
0001eaaa 6702	beq.s	+
0001eaac 4414	neg.b	(a4)
0001eaae 0241000f	andi.w	#$F,d1
0001eab2 d240	add.w	d0,d1
0001eab4 45f900043e50	lea	(ColArrayHorizontal).l,a2
0001eaba 10321000	move.b	(a2,d1.w),d0
0001eabe 4880	ext.w	d0
0001eac0 bd44	eor.w	d6,d4
0001eac2 0804000a	btst	#$A,d4
0001eac6 6702	beq.s	+
0001eac8 4440	neg.w	d0
0001eaca 4a40	tst.w	d0
0001eacc 679c	beq.s	loc_1EA6A
0001eace 6b10	bmi.s	loc_1EAE0
0001ead0 3203	move.w	d3,d1
0001ead2 0241000f	andi.w	#$F,d1
0001ead6 d041	add.w	d1,d0
0001ead8 323c000f	move.w	#$F,d1
0001eadc 9240	sub.w	d0,d1
0001eade 4e75	rts	
0001eae0 3203	move.w	d3,d1
0001eae2 0241000f	andi.w	#$F,d1
0001eae6 d041	add.w	d1,d0
0001eae8 6a00ff80	bpl.w	loc_1EA6A
0001eaec 4641	not.w	d1
0001eaee 4e75	rts	
0001eaf0 4e75	rts	
0001eaf2 43f900042e50	lea	(RawColBlocks).l,a1
0001eaf8 45f900042e50	lea	(ConvRowColBlocks).l,a2
0001eafe 363c00ff	move.w	#$100-1,d3
0001eb02 7a10	moveq	#16,d5
0001eb04 343c000f	move.w	#16-1,d2
0001eb08 7800	moveq	#0,d4
0001eb0a 323c000f	move.w	#16-1,d1
0001eb0e 3019	move.w	(a1)+,d0
0001eb10 eaa8	lsr.l	d5,d0
0001eb12 d944	addx.w	d4,d4
0001eb14 51c9fff8	dbf	d1,.rowLoop
0001eb18 34c4	move.w	d4,(a2)+
0001eb1a 92fc0020	suba.w	#2*16,a1
0001eb1e 5345	subq.w	#1,d5
0001eb20 51caffe6	dbf	d2,.columnLoop
0001eb24 d2fc0020	adda.w	#2*16,a1
0001eb28 51cbffd8	dbf	d3,.blockLoop
0001eb2c 43f900042e50	lea	(ConvRowColBlocks).l,a1
0001eb32 45f900043e50	lea	(ColArrayHorizontal).l,a2
0001eb38 610c	bsr.s	.convertArrayToStandardFormat
0001eb3a 43f900042e50	lea	(RawColBlocks).l,a1
0001eb40 45f900042e50	lea	(ColArrayVertical).l,a2
0001eb46 363c0fff	move.w	#$1000-1,d3
0001eb4a 7400	moveq	#0,d2
0001eb4c 323c000f	move.w	#$F,d1
0001eb50 3019	move.w	(a1)+,d0
0001eb52 6724	beq.s	.noCollision
0001eb54 6b0c	bmi.s	.topPixelSolid
0001eb56 e248	lsr.w	#1,d0
0001eb58 6402	bcc.s	.pixelNotSolid1
0001eb5a 5202	addq.b	#1,d2
0001eb5c 51c9fff8	dbf	d1,.processColumnLoop1
0001eb60 6018	bra.s	.columnProcessed
0001eb62 0c40ffff	cmpi.w	#$FFFF,d0
0001eb66 670c	beq.s	.entireColumnSolid
0001eb68 e348	lsl.w	#1,d0
0001eb6a 6402	bcc.s	.pixelNotSolid2
0001eb6c 5302	subq.b	#1,d2
0001eb6e 51c9fff8	dbf	d1,.processColumnLoop2
0001eb72 6006	bra.s	.columnProcessed
0001eb74 303c0010	move.w	#16,d0
0001eb78 3400	move.w	d0,d2
0001eb7a 14c2	move.b	d2,(a2)+
0001eb7c 51cbffcc	dbf	d3,.processCollisionArrayLoop
0001eb80 4e75	rts	
0001eb82 4e71	nop	
0001eb84 21fcffffd600f796	move.l	#Primary_Collision,(Collision_addr).w
0001eb8c 0c28000c003e	cmpi.b	#$C,top_solid_bit(a0)
0001eb92 6708	beq.s	+
0001eb94 21fcffffd900f796	move.l	#Secondary_Collision,(Collision_addr).w
0001eb9c 1a28003f	move.b	lrb_solid_bit(a0),d5
0001eba0 26280008	move.l	x_pos(a0),d3
0001eba4 2428000c	move.l	y_pos(a0),d2
0001eba8 32280010	move.w	x_vel(a0),d1
0001ebac 48c1	ext.l	d1
0001ebae e181	asl.l	#8,d1
0001ebb0 d681	add.l	d1,d3
0001ebb2 32280012	move.w	y_vel(a0),d1
0001ebb6 48c1	ext.l	d1
0001ebb8 e181	asl.l	#8,d1
0001ebba d481	add.l	d1,d2
0001ebbc 4842	swap	d2
0001ebbe 4843	swap	d3
0001ebc0 11c0f768	move.b	d0,(Primary_Angle).w
0001ebc4 11c0f76a	move.b	d0,(Secondary_Angle).w
0001ebc8 1200	move.b	d0,d1
0001ebca 06000020	addi.b	#$20,d0
0001ebce 6a0c	bpl.s	loc_1EBDC
0001ebd0 1001	move.b	d1,d0
0001ebd2 6a02	bpl.s	+
0001ebd4 5300	subq.b	#1,d0
0001ebd6 06000020	addi.b	#$20,d0
0001ebda 600a	bra.s	loc_1EBE6
0001ebdc 1001	move.b	d1,d0
0001ebde 6a02	bpl.s	+
0001ebe0 5200	addq.b	#1,d0
0001ebe2 0600001f	addi.b	#$1F,d0
0001ebe6 020000c0	andi.b	#$C0,d0
0001ebea 670000fa	beq.w	CheckFloorDist_Part2
0001ebee 0c000080	cmpi.b	#$80,d0
0001ebf2 670003aa	beq.w	CheckCeilingDist_Part2
0001ebf6 02010038	andi.b	#$38,d1
0001ebfa 6602	bne.s	+
0001ebfc 5042	addq.w	#8,d2
0001ebfe 0c000040	cmpi.b	#$40,d0
0001ec02 67000462	beq.w	CheckLeftWallDist_Part2
0001ec06 600002dc	bra.w	CheckRightWallDist_Part2
0001ec0a 21fcffffd600f796	move.l	#Primary_Collision,(Collision_addr).w
0001ec12 0c28000c003e	cmpi.b	#$C,top_solid_bit(a0)
0001ec18 6708	beq.s	+
0001ec1a 21fcffffd900f796	move.l	#Secondary_Collision,(Collision_addr).w
0001ec22 1a28003f	move.b	lrb_solid_bit(a0),d5
0001ec26 11c0f768	move.b	d0,(Primary_Angle).w
0001ec2a 11c0f76a	move.b	d0,(Secondary_Angle).w
0001ec2e 06000020	addi.b	#$20,d0
0001ec32 020000c0	andi.b	#$C0,d0
0001ec36 0c000040	cmpi.b	#$40,d0
0001ec3a 670003ba	beq.w	CheckLeftCeilingDist
0001ec3e 0c000080	cmpi.b	#$80,d0
0001ec42 670002ea	beq.w	Sonic_CheckCeiling
0001ec46 0c0000c0	cmpi.b	#$C0,d0
0001ec4a 67000230	beq.w	CheckRightCeilingDist
0001ec4e 21fcffffd600f796	move.l	#Primary_Collision,(Collision_addr).w
0001ec56 0c28000c003e	cmpi.b	#$C,top_solid_bit(a0)
0001ec5c 6708	beq.s	+
0001ec5e 21fcffffd900f796	move.l	#Secondary_Collision,(Collision_addr).w
0001ec66 1a28003e	move.b	top_solid_bit(a0),d5
0001ec6a 3428000c	move.w	y_pos(a0),d2
0001ec6e 36280008	move.w	x_pos(a0),d3
0001ec72 7000	moveq	#0,d0
0001ec74 10280016	move.b	y_radius(a0),d0
0001ec78 4880	ext.w	d0
0001ec7a d440	add.w	d0,d2
0001ec7c 10280017	move.b	x_radius(a0),d0
0001ec80 4880	ext.w	d0
0001ec82 d640	add.w	d0,d3
0001ec84 49f8f768	lea	(Primary_Angle).w,a4
0001ec88 367c0010	movea.w	#$10,a3
0001ec8c 3c3c0000	move.w	#0,d6
0001ec90 6100fb3e	bsr.w	FindFloor
0001ec94 3f01	move.w	d1,-(sp)
0001ec96 3428000c	move.w	y_pos(a0),d2
0001ec9a 36280008	move.w	x_pos(a0),d3
0001ec9e 7000	moveq	#0,d0
0001eca0 10280016	move.b	y_radius(a0),d0
0001eca4 4880	ext.w	d0
0001eca6 d440	add.w	d0,d2
0001eca8 10280017	move.b	x_radius(a0),d0
0001ecac 4880	ext.w	d0
0001ecae 9640	sub.w	d0,d3
0001ecb0 49f8f76a	lea	(Secondary_Angle).w,a4
0001ecb4 367c0010	movea.w	#$10,a3
0001ecb8 3c3c0000	move.w	#0,d6
0001ecbc 6100fb12	bsr.w	FindFloor
0001ecc0 301f	move.w	(sp)+,d0
0001ecc2 143c0000	move.b	#0,d2
0001ecc6 1638f76a	move.b	(Secondary_Angle).w,d3
0001ecca b240	cmp.w	d0,d1
0001eccc 6f06	ble.s	loc_1ECD4
0001ecce 1638f768	move.b	(Primary_Angle).w,d3
0001ecd2 c141	exg	d0,d1
0001ecd4 08030000	btst	#0,d3
0001ecd8 6702	beq.s	+
0001ecda 1602	move.b	d2,d3
0001ecdc 4e75	rts	
0001ecde 3428000c	move.w	y_pos(a0),d2
0001ece2 36280008	move.w	x_pos(a0),d3
0001ece6 0642000a	addi.w	#$A,d2
0001ecea 49f8f768	lea	(Primary_Angle).w,a4
0001ecee 367c0010	movea.w	#$10,a3
0001ecf2 3c3c0000	move.w	#0,d6
0001ecf6 6100fad8	bsr.w	FindFloor
0001ecfa 143c0000	move.b	#0,d2
0001ecfe 1638f768	move.b	(Primary_Angle).w,d3
0001ed02 08030000	btst	#0,d3
0001ed06 6702	beq.s	+
0001ed08 1602	move.b	d2,d3
0001ed0a 4e75	rts	
0001ed0c 36280008	move.w	x_pos(a0),d3
0001ed10 3428000c	move.w	y_pos(a0),d2
0001ed14 5942	subq.w	#4,d2
0001ed16 21fcffffd600f796	move.l	#Primary_Collision,(Collision_addr).w
0001ed1e 0c28000d003f	cmpi.b	#$D,lrb_solid_bit(a0)
0001ed24 6708	beq.s	+
0001ed26 21fcffffd900f796	move.l	#Secondary_Collision,(Collision_addr).w
0001ed2e 49f8f768	lea	(Primary_Angle).w,a4
0001ed32 18bc0000	move.b	#0,(a4)
0001ed36 367c0010	movea.w	#$10,a3
0001ed3a 3c3c0000	move.w	#0,d6
0001ed3e 1a28003f	move.b	lrb_solid_bit(a0),d5
0001ed42 6100fa8c	bsr.w	FindFloor
0001ed46 1638f768	move.b	(Primary_Angle).w,d3
0001ed4a 08030000	btst	#0,d3
0001ed4e 6704	beq.s	+
0001ed50 163c0000	move.b	#0,d3
0001ed54 4e75	rts	
0001ed56 36280008	move.w	x_pos(a0),d3
0001ed5a 3428000c	move.w	y_pos(a0),d2
0001ed5e 7000	moveq	#0,d0
0001ed60 10280016	move.b	y_radius(a0),d0
0001ed64 4880	ext.w	d0
0001ed66 d440	add.w	d0,d2
0001ed68 21fcffffd600f796	move.l	#Primary_Collision,(Collision_addr).w
0001ed70 0c28000c003e	cmpi.b	#$C,top_solid_bit(a0)
0001ed76 6708	beq.s	+
0001ed78 21fcffffd900f796	move.l	#Secondary_Collision,(Collision_addr).w
0001ed80 49f8f768	lea	(Primary_Angle).w,a4
0001ed84 18bc0000	move.b	#0,(a4)
0001ed88 367c0010	movea.w	#$10,a3
0001ed8c 3c3c0000	move.w	#0,d6
0001ed90 1a28003e	move.b	top_solid_bit(a0),d5
0001ed94 6100fa3a	bsr.w	FindFloor
0001ed98 1638f768	move.b	(Primary_Angle).w,d3
0001ed9c 08030000	btst	#0,d3
0001eda0 6704	beq.s	+
0001eda2 163c0000	move.b	#0,d3
0001eda6 4e75	rts	
0001eda8 36290008	move.w	x_pos(a1),d3
0001edac 3429000c	move.w	y_pos(a1),d2
0001edb0 7000	moveq	#0,d0
0001edb2 10290016	move.b	y_radius(a1),d0
0001edb6 4880	ext.w	d0
0001edb8 d440	add.w	d0,d2
0001edba 21fcffffd600f796	move.l	#Primary_Collision,(Collision_addr).w
0001edc2 0c29000c003e	cmpi.b	#$C,top_solid_bit(a1)
0001edc8 6708	beq.s	+
0001edca 21fcffffd900f796	move.l	#Secondary_Collision,(Collision_addr).w
0001edd2 49f8f768	lea	(Primary_Angle).w,a4
0001edd6 18bc0000	move.b	#0,(a4)
0001edda 367c0010	movea.w	#$10,a3
0001edde 3c3c0000	move.w	#0,d6
0001ede2 1a29003e	move.b	top_solid_bit(a1),d5
0001ede6 6100f9e8	bsr.w	FindFloor
0001edea 1638f768	move.b	(Primary_Angle).w,d3
0001edee 08030000	btst	#0,d3
0001edf2 6704	beq.s	return_1EDF8
0001edf4 163c0000	move.b	#0,d3
0001edf8 4e75	rts	
0001edfa 36280008	move.w	x_pos(a0),d3
0001edfe 3428000c	move.w	y_pos(a0),d2
0001ee02 10280016	move.b	y_radius(a0),d0
0001ee06 4880	ext.w	d0
0001ee08 d440	add.w	d0,d2
0001ee0a 49f8f768	lea	(Primary_Angle).w,a4
0001ee0e 18bc0000	move.b	#0,(a4)
0001ee12 367c0010	movea.w	#$10,a3
0001ee16 3c3c0000	move.w	#0,d6
0001ee1a 7a0c	moveq	#$C,d5
0001ee1c 6100f9b2	bsr.w	FindFloor
0001ee20 1638f768	move.b	(Primary_Angle).w,d3
0001ee24 08030000	btst	#0,d3
0001ee28 6704	beq.s	+
0001ee2a 163c0000	move.b	#0,d3
0001ee2e 4e75	rts	
0001ee30 36290008	move.w	x_pos(a1),d3
0001ee34 3429000c	move.w	y_pos(a1),d2
0001ee38 10290016	move.b	y_radius(a1),d0
0001ee3c 4880	ext.w	d0
0001ee3e d440	add.w	d0,d2
0001ee40 49f8f768	lea	(Primary_Angle).w,a4
0001ee44 18bc0000	move.b	#0,(a4)
0001ee48 367c0010	movea.w	#$10,a3
0001ee4c 3c3c0000	move.w	#0,d6
0001ee50 7a0c	moveq	#$C,d5
0001ee52 6000f97c	bra.w	FindFloor
0001ee56 36280008	move.w	x_pos(a0),d3
0001ee5a 3428000c	move.w	y_pos(a0),d2
0001ee5e 10280016	move.b	y_radius(a0),d0
0001ee62 4880	ext.w	d0
0001ee64 d440	add.w	d0,d2
0001ee66 49f8f768	lea	(Primary_Angle).w,a4
0001ee6a 18bc0000	move.b	#0,(a4)
0001ee6e 367c0010	movea.w	#$10,a3
0001ee72 3c3c0000	move.w	#0,d6
0001ee76 7a0c	moveq	#$C,d5
0001ee78 6000fa96	bra.w	Ring_FindFloor
0001ee7c 3428000c	move.w	y_pos(a0),d2
0001ee80 36280008	move.w	x_pos(a0),d3
0001ee84 7000	moveq	#0,d0
0001ee86 10280017	move.b	x_radius(a0),d0
0001ee8a 4880	ext.w	d0
0001ee8c 9440	sub.w	d0,d2
0001ee8e 10280016	move.b	y_radius(a0),d0
0001ee92 4880	ext.w	d0
0001ee94 d640	add.w	d0,d3
0001ee96 49f8f768	lea	(Primary_Angle).w,a4
0001ee9a 367c0010	movea.w	#$10,a3
0001ee9e 3c3c0000	move.w	#0,d6
0001eea2 6100fb0c	bsr.w	FindWall
0001eea6 3f01	move.w	d1,-(sp)
0001eea8 3428000c	move.w	y_pos(a0),d2
0001eeac 36280008	move.w	x_pos(a0),d3
0001eeb0 7000	moveq	#0,d0
0001eeb2 10280017	move.b	x_radius(a0),d0
0001eeb6 4880	ext.w	d0
0001eeb8 d440	add.w	d0,d2
0001eeba 10280016	move.b	y_radius(a0),d0
0001eebe 4880	ext.w	d0
0001eec0 d640	add.w	d0,d3
0001eec2 49f8f76a	lea	(Secondary_Angle).w,a4
0001eec6 367c0010	movea.w	#$10,a3
0001eeca 3c3c0000	move.w	#0,d6
0001eece 6100fae0	bsr.w	FindWall
0001eed2 301f	move.w	(sp)+,d0
0001eed4 143c00c0	move.b	#-$40,d2
0001eed8 6000fdec	bra.w	loc_1ECC6
0001eedc 3428000c	move.w	y_pos(a0),d2
0001eee0 36280008	move.w	x_pos(a0),d3
0001eee4 0643000a	addi.w	#$A,d3
0001eee8 49f8f768	lea	(Primary_Angle).w,a4
0001eeec 367c0010	movea.w	#$10,a3
0001eef0 3c3c0000	move.w	#0,d6
0001eef4 6100faba	bsr.w	FindWall
0001eef8 143c00c0	move.b	#$C0,d2
0001eefc 6000fe00	bra.w	loc_1ECFE
0001ef00 d6680008	add.w	x_pos(a0),d3
0001ef04 3428000c	move.w	y_pos(a0),d2
0001ef08 49f8f768	lea	(Primary_Angle).w,a4
0001ef0c 18bc0000	move.b	#0,(a4)
0001ef10 367c0010	movea.w	#$10,a3
0001ef14 3c3c0000	move.w	#0,d6
0001ef18 7a0d	moveq	#$D,d5
0001ef1a 6100fa94	bsr.w	FindWall
0001ef1e 1638f768	move.b	(Primary_Angle).w,d3
0001ef22 08030000	btst	#0,d3
0001ef26 6704	beq.s	+
0001ef28 163c00c0	move.b	#-$40,d3
0001ef2c 4e75	rts	
0001ef2e 3428000c	move.w	y_pos(a0),d2
0001ef32 36280008	move.w	x_pos(a0),d3
0001ef36 7000	moveq	#0,d0
0001ef38 10280016	move.b	y_radius(a0),d0
0001ef3c 4880	ext.w	d0
0001ef3e 9440	sub.w	d0,d2
0001ef40 0a42000f	eori.w	#$F,d2
0001ef44 10280017	move.b	x_radius(a0),d0
0001ef48 4880	ext.w	d0
0001ef4a d640	add.w	d0,d3
0001ef4c 49f8f768	lea	(Primary_Angle).w,a4
0001ef50 367cfff0	movea.w	#-$10,a3
0001ef54 3c3c0800	move.w	#$800,d6
0001ef58 6100f876	bsr.w	FindFloor
0001ef5c 3f01	move.w	d1,-(sp)
0001ef5e 3428000c	move.w	y_pos(a0),d2
0001ef62 36280008	move.w	x_pos(a0),d3
0001ef66 7000	moveq	#0,d0
0001ef68 10280016	move.b	y_radius(a0),d0
0001ef6c 4880	ext.w	d0
0001ef6e 9440	sub.w	d0,d2
0001ef70 0a42000f	eori.w	#$F,d2
0001ef74 10280017	move.b	x_radius(a0),d0
0001ef78 4880	ext.w	d0
0001ef7a 9640	sub.w	d0,d3
0001ef7c 49f8f76a	lea	(Secondary_Angle).w,a4
0001ef80 367cfff0	movea.w	#-$10,a3
0001ef84 3c3c0800	move.w	#$800,d6
0001ef88 6100f846	bsr.w	FindFloor
0001ef8c 301f	move.w	(sp)+,d0
0001ef8e 143c0080	move.b	#$80,d2
0001ef92 6000fd32	bra.w	loc_1ECC6
0001ef96 3428000c	move.w	y_pos(a0),d2
0001ef9a 36280008	move.w	x_pos(a0),d3
0001ef9e 0442000a	subi.w	#$A,d2
0001efa2 0a42000f	eori.w	#$F,d2
0001efa6 49f8f768	lea	(Primary_Angle).w,a4
0001efaa 367cfff0	movea.w	#-$10,a3
0001efae 3c3c0800	move.w	#$800,d6
0001efb2 6100f81c	bsr.w	FindFloor
0001efb6 143c0080	move.b	#$80,d2
0001efba 6000fd42	bra.w	loc_1ECFE
0001efbe 3428000c	move.w	y_pos(a0),d2
0001efc2 36280008	move.w	x_pos(a0),d3
0001efc6 7000	moveq	#0,d0
0001efc8 10280016	move.b	y_radius(a0),d0
0001efcc 4880	ext.w	d0
0001efce 9440	sub.w	d0,d2
0001efd0 0a42000f	eori.w	#$F,d2
0001efd4 49f8f768	lea	(Primary_Angle).w,a4
0001efd8 367cfff0	movea.w	#-$10,a3
0001efdc 3c3c0800	move.w	#$800,d6
0001efe0 7a0d	moveq	#$D,d5
0001efe2 6100f7ec	bsr.w	FindFloor
0001efe6 1638f768	move.b	(Primary_Angle).w,d3
0001efea 08030000	btst	#0,d3
0001efee 6704	beq.s	+
0001eff0 163c0080	move.b	#$80,d3
0001eff4 4e75	rts	
0001eff6 3428000c	move.w	y_pos(a0),d2
0001effa 36280008	move.w	x_pos(a0),d3
0001effe 7000	moveq	#0,d0
0001f000 10280017	move.b	x_radius(a0),d0
0001f004 4880	ext.w	d0
0001f006 9440	sub.w	d0,d2
0001f008 10280016	move.b	y_radius(a0),d0
0001f00c 4880	ext.w	d0
0001f00e 9640	sub.w	d0,d3
0001f010 0a43000f	eori.w	#$F,d3
0001f014 49f8f768	lea	(Primary_Angle).w,a4
0001f018 367cfff0	movea.w	#-$10,a3
0001f01c 3c3c0400	move.w	#$400,d6
0001f020 6100f98e	bsr.w	FindWall
0001f024 3f01	move.w	d1,-(sp)
0001f026 3428000c	move.w	y_pos(a0),d2
0001f02a 36280008	move.w	x_pos(a0),d3
0001f02e 7000	moveq	#0,d0
0001f030 10280017	move.b	x_radius(a0),d0
0001f034 4880	ext.w	d0
0001f036 d440	add.w	d0,d2
0001f038 10280016	move.b	y_radius(a0),d0
0001f03c 4880	ext.w	d0
0001f03e 9640	sub.w	d0,d3
0001f040 0a43000f	eori.w	#$F,d3
0001f044 49f8f76a	lea	(Secondary_Angle).w,a4
0001f048 367cfff0	movea.w	#-$10,a3
0001f04c 3c3c0400	move.w	#$400,d6
0001f050 6100f95e	bsr.w	FindWall
0001f054 301f	move.w	(sp)+,d0
0001f056 143c0040	move.b	#$40,d2
0001f05a 6000fc6a	bra.w	loc_1ECC6
0001f05e 3428000c	move.w	y_pos(a0),d2
0001f062 36280008	move.w	x_pos(a0),d3
0001f066 0443000a	subi.w	#$A,d3
0001f06a 0a43000f	eori.w	#$F,d3
0001f06e 49f8f768	lea	(Primary_Angle).w,a4
0001f072 367cfff0	movea.w	#-$10,a3
0001f076 3c3c0400	move.w	#$400,d6
0001f07a 6100f934	bsr.w	FindWall
0001f07e 143c0040	move.b	#$40,d2
0001f082 6000fc7a	bra.w	loc_1ECFE
0001f086 d6680008	add.w	x_pos(a0),d3
0001f08a 3428000c	move.w	y_pos(a0),d2
0001f08e 49f8f768	lea	(Primary_Angle).w,a4
0001f092 18bc0000	move.b	#0,(a4)
0001f096 367cfff0	movea.w	#-$10,a3
0001f09a 3c3c0400	move.w	#$400,d6
0001f09e 7a0d	moveq	#$D,d5
0001f0a0 6100f90e	bsr.w	FindWall
0001f0a4 1638f768	move.b	(Primary_Angle).w,d3
0001f0a8 08030000	btst	#0,d3
0001f0ac 6704	beq.s	+
0001f0ae 163c0040	move.b	#$40,d3
0001f0b2 4e75	rts	
0001f0b4 7000	moveq	#0,d0
0001f0b6 10280024	move.b	routine(a0),d0
0001f0ba 323b0006	move.w	Obj79_Index(pc,d0.w),d1
0001f0be 4efb1002	jmp	Obj79_Index(pc,d1.w)
0001f0cc 54280024	addq.b	#2,routine(a0)
0001f0d0 217c0001f4240004	move.l	#Obj79_MapUnc_1F424,mappings(a0)
0001f0d8 317c047c0002	move.w	#make_art_tile(ArtTile_ArtNem_Checkpoint,0,0),art_tile(a0)
0001f0e2 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0001f0e8 117c00080019	move.b	#8,width_pixels(a0)
0001f0ee 117c00050018	move.b	#5,priority(a0)
0001f0f4 45f8fc00	lea	(Object_Respawn_Table).w,a2
0001f0f8 7000	moveq	#0,d0
0001f0fa 10280023	move.b	respawn_index(a0),d0
0001f0fe 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
0001f104 083200000002	btst	#0,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
0001f10a 6614	bne.s	loc_1F120
0001f10c 1238fe30	move.b	(Last_star_pole_hit).w,d1
0001f110 0201007f	andi.b	#$7F,d1
0001f114 14280028	move.b	subtype(a0),d2
0001f118 0202007f	andi.b	#$7F,d2
0001f11c b202	cmp.b	d2,d1
0001f11e 650c	blo.s	Obj79_Main
0001f120 08f200000002	bset	#0,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
0001f126 117c0002001c	move.b	#2,anim(a0)
0001f12c 4a78fe08	tst.w	(Debug_placement_mode).w
0001f130 660000fe	bne.w	Obj79_Animate
0001f134 47f8b000	lea	(MainCharacter).w,a3
0001f138 1238fe30	move.b	(Last_star_pole_hit).w,d1
0001f13c 6116	bsr.s	Obj79_CheckActivation
0001f13e 4a78ffd8	tst.w	(Two_player_mode).w
0001f142 670000ec	beq.w	Obj79_Animate
0001f146 47f8b040	lea	(Sidekick).w,a3
0001f14a 1238fee0	move.b	(Last_star_pole_hit_2P).w,d1
0001f14e 6104	bsr.s	Obj79_CheckActivation
0001f150 600000de	bra.w	Obj79_Animate
0001f154 0201007f	andi.b	#$7F,d1
0001f158 14280028	move.b	subtype(a0),d2
0001f15c 0202007f	andi.b	#$7F,d2
0001f160 b202	cmp.b	d2,d1
0001f162 640000be	bhs.w	loc_1F222
0001f166 302b0008	move.w	x_pos(a3),d0
0001f16a 90680008	sub.w	x_pos(a0),d0
0001f172 0c400010	cmpi.w	#$10,d0
0001f176 640000a8	bhs.w	return_1F220
0001f17a 302b000c	move.w	y_pos(a3),d0
0001f17e 9068000c	sub.w	y_pos(a0),d0
0001f182 06400040	addi.w	#$40,d0
0001f186 0c400068	cmpi.w	#$68,d0
0001f18a 64000094	bhs.w	return_1F220
0001f18e 303c00a1	move.w	#SndID_Checkpoint,d0
0001f192 4eb900001370	jsr	(PlaySound).l
0001f198 4eb900017fda	jsr	(AllocateObject).l
0001f19e 6666	bne.s	loc_1F206
0001f1a6 137c00060024	move.b	#6,routine(a1)
0001f1ac 336800080030	move.w	x_pos(a0),objoff_30(a1)
0001f1b2 3368000c0032	move.w	y_pos(a0),objoff_32(a1)
0001f1b8 046900140032	subi.w	#$14,objoff_32(a1)
0001f1be 236800040004	move.l	mappings(a0),mappings(a1)
0001f1c4 336800020002	move.w	art_tile(a0),art_tile(a1)
0001f1ca 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0001f1d0 137c00080019	move.b	#8,width_pixels(a1)
0001f1d6 137c00040018	move.b	#4,priority(a1)
0001f1dc 137c0002001a	move.b	#2,mapping_frame(a1)
0001f1e2 337c00200036	move.w	#$20,objoff_36(a1)
0001f1e8 3348003e	move.w	a0,parent(a1)
0001f1ec 4a78ffd8	tst.w	(Two_player_mode).w
0001f1f0 6614	bne.s	loc_1F206
0001f1f2 0c380007ffb1	cmpi.b	#7,(Emerald_count).w
0001f1f8 670c	beq.s	loc_1F206
0001f1fa 0c780032fe20	cmpi.w	#50,(Ring_count).w
0001f200 6504	blo.s	loc_1F206
0001f202 610002c0	bsr.w	Obj79_MakeSpecialStars
0001f206 117c0001001c	move.b	#1,anim(a0)
0001f20c 6100008a	bsr.w	Obj79_SaveData
0001f210 45f8fc00	lea	(Object_Respawn_Table).w,a2
0001f214 7000	moveq	#0,d0
0001f216 10280023	move.b	respawn_index(a0),d0
0001f21a 08f200000002	bset	#0,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
0001f220 4e75	rts	
0001f222 4a28001c	tst.b	anim(a0)
0001f226 6606	bne.s	return_1F22E
0001f228 117c0002001c	move.b	#2,anim(a0)
0001f22e 4e75	rts	
0001f230 43f90001f414	lea	(Ani_obj79).l,a1
0001f23a 4ef9000163d2	jmp	(MarkObjGone).l
0001f240 53680036	subq.w	#1,objoff_36(a0)
0001f244 6a1c	bpl.s	Obj79_MoveDonglyThing
0001f246 3268003e	movea.w	parent(a0),a1
0001f24a 0c110079	cmpi.b	#ObjID_Starpost,id(a1)
0001f24e 660c	bne.s	+
0001f250 137c0002001c	move.b	#2,anim(a1)
0001f256 137c0000001a	move.b	#0,mapping_frame(a1)
0001f25c 4ef9000164e6	jmp	(DeleteObject).l
0001f262 10280026	move.b	angle(a0),d0
0001f266 042800100026	subi.b	#$10,angle(a0)
0001f26c 04000040	subi.b	#$40,d0
0001f270 4eb9000033b6	jsr	(CalcSine).l
0001f276 c3fc0c00	muls.w	#$C00,d1
0001f27a 4841	swap	d1
0001f27c d2680030	add.w	objoff_30(a0),d1
0001f280 31410008	move.w	d1,x_pos(a0)
0001f284 c1fc0c00	muls.w	#$C00,d0
0001f288 4840	swap	d0
0001f28a d0680032	add.w	objoff_32(a0),d0
0001f28e 3140000c	move.w	d0,y_pos(a0)
0001f292 4ef9000163d2	jmp	(MarkObjGone).l
0001f298 b6fcb000	cmpa.w	#MainCharacter,a3
0001f29c 66000088	bne.w	Obj79_SaveDataPlayer2
0001f2a0 11e80028fe30	move.b	subtype(a0),(Last_star_pole_hit).w
0001f2a6 11f8fe30fe31	move.b	(Last_star_pole_hit).w,(Saved_Last_star_pole_hit).w
0001f2ac 31e80008fe32	move.w	x_pos(a0),(Saved_x_pos).w
0001f2b2 31e8000cfe34	move.w	y_pos(a0),(Saved_y_pos).w
0001f2b8 31f8b002fe3c	move.w	(MainCharacter+art_tile).w,(Saved_art_tile).w
0001f2be 31f8b03efe3e	move.w	(MainCharacter+top_solid_bit).w,(Saved_Solid_bits).w
0001f2c4 31f8fe20fe36	move.w	(Ring_count).w,(Saved_Ring_count).w
0001f2ca 11f8fe1bfe54	move.b	(Extra_life_flags).w,(Saved_Extra_life_flags).w
0001f2d0 21f8fe22fe38	move.l	(Timer).w,(Saved_Timer).w
0001f2d6 11f8eedffe58	move.b	(Dynamic_Resize_Routine).w,(Saved_Dynamic_Resize_Routine).w
0001f2dc 31f8eecefe56	move.w	(Camera_Max_Y_pos).w,(Saved_Camera_Max_Y_pos).w
0001f2e2 31f8ee00fe40	move.w	(Camera_X_pos).w,(Saved_Camera_X_pos).w
0001f2e8 31f8ee04fe42	move.w	(Camera_Y_pos).w,(Saved_Camera_Y_pos).w
0001f2ee 31f8ee08fe44	move.w	(Camera_BG_X_pos).w,(Saved_Camera_BG_X_pos).w
0001f2f4 31f8ee0cfe46	move.w	(Camera_BG_Y_pos).w,(Saved_Camera_BG_Y_pos).w
0001f2fa 31f8ee10fe48	move.w	(Camera_BG2_X_pos).w,(Saved_Camera_BG2_X_pos).w
0001f300 31f8ee14fe4a	move.w	(Camera_BG2_Y_pos).w,(Saved_Camera_BG2_Y_pos).w
0001f306 31f8ee18fe4c	move.w	(Camera_BG3_X_pos).w,(Saved_Camera_BG3_X_pos).w
0001f30c 31f8ee1cfe4e	move.w	(Camera_BG3_Y_pos).w,(Saved_Camera_BG3_Y_pos).w
0001f312 31f8f648fe50	move.w	(Water_Level_2).w,(Saved_Water_Level).w
0001f318 11f8f64dfe52	move.b	(Water_routine).w,(Saved_Water_routine).w
0001f31e 11f8f64efe53	move.b	(Water_fullscreen_flag).w,(Saved_Water_move).w
0001f324 4e75	rts	
0001f326 11e80028fee0	move.b	subtype(a0),(Last_star_pole_hit_2P).w
0001f32c 11f8fee0fee1	move.b	(Last_star_pole_hit_2P).w,(Saved_Last_star_pole_hit_2P).w
0001f332 31e80008fee2	move.w	x_pos(a0),(Saved_x_pos_2P).w
0001f338 31e8000cfee4	move.w	y_pos(a0),(Saved_y_pos_2P).w
0001f33e 31f8b042feec	move.w	(Sidekick+art_tile).w,(Saved_art_tile_2P).w
0001f344 31f8b07efeee	move.w	(Sidekick+top_solid_bit).w,(Saved_Solid_bits_2P).w
0001f34a 31f8fed0fee6	move.w	(Ring_count_2P).w,(Saved_Ring_count_2P).w
0001f350 11f8fec7fe55	move.b	(Extra_life_flags_2P).w,(Saved_Extra_life_flags_2P).w
0001f356 21f8fed2fee8	move.l	(Timer_2P).w,(Saved_Timer_2P).w
0001f35c 4e75	rts	
0001f35e 11f8fe31fe30	move.b	(Saved_Last_star_pole_hit).w,(Last_star_pole_hit).w
0001f364 31f8fe32b008	move.w	(Saved_x_pos).w,(MainCharacter+x_pos).w
0001f36a 31f8fe34b00c	move.w	(Saved_y_pos).w,(MainCharacter+y_pos).w
0001f370 31f8fe36fe20	move.w	(Saved_Ring_count).w,(Ring_count).w
0001f376 11f8fe54fe1b	move.b	(Saved_Extra_life_flags).w,(Extra_life_flags).w
0001f37c 4278fe20	clr.w	(Ring_count).w
0001f380 4238fe1b	clr.b	(Extra_life_flags).w
0001f384 21f8fe38fe22	move.l	(Saved_Timer).w,(Timer).w
0001f38a 11fc003bfe25	move.b	#59,(Timer_frame).w
0001f390 5338fe24	subq.b	#1,(Timer_second).w
0001f394 31f8fe3cb002	move.w	(Saved_art_tile).w,(MainCharacter+art_tile).w
0001f39a 31f8fe3eb03e	move.w	(Saved_Solid_bits).w,(MainCharacter+top_solid_bit).w
0001f3a0 11f8fe58eedf	move.b	(Saved_Dynamic_Resize_Routine).w,(Dynamic_Resize_Routine).w
0001f3a6 11f8fe52f64d	move.b	(Saved_Water_routine).w,(Water_routine).w
0001f3ac 31f8fe56eece	move.w	(Saved_Camera_Max_Y_pos).w,(Camera_Max_Y_pos).w
0001f3b2 31f8fe56eec6	move.w	(Saved_Camera_Max_Y_pos).w,(Camera_Max_Y_pos_target).w
0001f3b8 31f8fe40ee00	move.w	(Saved_Camera_X_pos).w,(Camera_X_pos).w
0001f3be 31f8fe42ee04	move.w	(Saved_Camera_Y_pos).w,(Camera_Y_pos).w
0001f3c4 31f8fe44ee08	move.w	(Saved_Camera_BG_X_pos).w,(Camera_BG_X_pos).w
0001f3ca 31f8fe46ee0c	move.w	(Saved_Camera_BG_Y_pos).w,(Camera_BG_Y_pos).w
0001f3d0 31f8fe48ee10	move.w	(Saved_Camera_BG2_X_pos).w,(Camera_BG2_X_pos).w
0001f3d6 31f8fe4aee14	move.w	(Saved_Camera_BG2_Y_pos).w,(Camera_BG2_Y_pos).w
0001f3dc 31f8fe4cee18	move.w	(Saved_Camera_BG3_X_pos).w,(Camera_BG3_X_pos).w
0001f3e2 31f8fe4eee1c	move.w	(Saved_Camera_BG3_Y_pos).w,(Camera_BG3_Y_pos).w
0001f3e8 4a38f730	tst.b	(Water_flag).w
0001f3ec 6712	beq.s	+
0001f3ee 31f8fe50f648	move.w	(Saved_Water_Level).w,(Water_Level_2).w
0001f3f4 11f8fe52f64d	move.b	(Saved_Water_routine).w,(Water_routine).w
0001f3fa 11f8fe53f64e	move.b	(Saved_Water_move).w,(Water_fullscreen_flag).w
0001f400 4a38fe30	tst.b	(Last_star_pole_hit).w
0001f404 6a0c	bpl.s	return_1F412
0001f406 3038fe32	move.w	(Saved_x_pos).w,d0
0001f40a 044000a0	subi.w	#$A0,d0
0001f40e 31c0eec8	move.w	d0,(Camera_Min_X_pos).w
0001f412 4e75	rts	
0001f4c4 7203	moveq	#4-1,d1
0001f4c6 7400	moveq	#0,d2
0001f4cc 6666	bne.s	+
0001f4d4 237c0001f4a00004	move.l	#Obj79_MapUnc_1F4A0,mappings(a1)
0001f4dc 337c047c0002	move.w	#make_art_tile(ArtTile_ArtNem_Checkpoint,0,0),art_tile(a1)
0001f4e2 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0001f4e8 137c00080024	move.b	#8,routine(a1)
0001f4ee 30280008	move.w	x_pos(a0),d0
0001f4f2 33400008	move.w	d0,x_pos(a1)
0001f4f6 33400030	move.w	d0,objoff_30(a1)
0001f4fa 3028000c	move.w	y_pos(a0),d0
0001f4fe 04400030	subi.w	#$30,d0
0001f502 3340000c	move.w	d0,y_pos(a1)
0001f506 33400032	move.w	d0,objoff_32(a1)
0001f50a 136800180018	move.b	priority(a0),priority(a1)
0001f510 137c00080019	move.b	#8,width_pixels(a1)
0001f516 137c0001001a	move.b	#1,mapping_frame(a1)
0001f51c 337cfc000010	move.w	#-$400,x_vel(a1)
0001f522 337c00000012	move.w	#0,y_vel(a1)
0001f528 33420034	move.w	d2,objoff_34(a1)
0001f52c 06420040	addi.w	#$40,d2
0001f530 51c9ff96	dbf	d1,-
0001f534 4e75	rts	
0001f536 10280021	move.b	collision_property(a0),d0
0001f53a 67000018	beq.w	loc_1F554
0001f53e 02000001	andi.b	#1,d0
0001f542 670c	beq.s	+
0001f544 11fc0001f7cd	move.b	#1,(f_bigring).w
0001f54a 11fc0010f600	move.b	#GameModeID_SpecialStage,(Game_Mode).w
0001f550 42280021	clr.b	collision_property(a0)
0001f554 0668000a0034	addi.w	#$A,objoff_34(a0)
0001f55a 30280034	move.w	objoff_34(a0),d0
0001f55e 024000ff	andi.w	#$FF,d0
0001f562 4eb9000033b6	jsr	(CalcSine).l
0001f568 ea40	asr.w	#5,d0
0001f56a e641	asr.w	#3,d1
0001f56c 3601	move.w	d1,d3
0001f56e 34280034	move.w	objoff_34(a0),d2
0001f572 024203e0	andi.w	#$3E0,d2
0001f576 ea4a	lsr.w	#5,d2
0001f578 7a02	moveq	#2,d5
0001f57a 7800	moveq	#0,d4
0001f57c 0c420010	cmpi.w	#$10,d2
0001f580 6f02	ble.s	+
0001f582 4441	neg.w	d1
0001f584 0242000f	andi.w	#$F,d2
0001f588 0c420008	cmpi.w	#8,d2
0001f58c 6f06	ble.s	loc_1F594
0001f58e 4442	neg.w	d2
0001f590 02420007	andi.w	#7,d2
0001f594 e24a	lsr.w	#1,d2
0001f596 6702	beq.s	+
0001f598 d841	add.w	d1,d4
0001f59a e341	asl.w	#1,d1
0001f59c 51cdfff6	dbf	d5,loc_1F594
0001f5a0 e844	asr.w	#4,d4
0001f5a2 d044	add.w	d4,d0
0001f5a4 52680036	addq.w	#1,objoff_36(a0)
0001f5a8 32280036	move.w	objoff_36(a0),d1
0001f5ac 0c410080	cmpi.w	#$80,d1
0001f5b0 670c	beq.s	loc_1F5BE
0001f5b2 6e10	bgt.s	loc_1F5C4
0001f5b4 c1c1	muls.w	d1,d0
0001f5b6 c7c1	muls.w	d1,d3
0001f5b8 ee40	asr.w	#7,d0
0001f5ba ee43	asr.w	#7,d3
0001f5bc 6018	bra.s	loc_1F5D6
0001f5be 117c00d80020	move.b	#$D8,collision_flags(a0)
0001f5c4 0c410180	cmpi.w	#$180,d1
0001f5c8 6f0c	ble.s	loc_1F5D6
0001f5ca 4441	neg.w	d1
0001f5cc 06410200	addi.w	#$200,d1
0001f5d0 6b000036	bmi.w	JmpTo10_DeleteObject
0001f5d4 60de	bra.s	loc_1F5B4
0001f5d6 34280030	move.w	objoff_30(a0),d2
0001f5da d443	add.w	d3,d2
0001f5dc 31420008	move.w	d2,x_pos(a0)
0001f5e0 34280032	move.w	objoff_32(a0),d2
0001f5e4 d440	add.w	d0,d2
0001f5e6 3142000c	move.w	d2,y_pos(a0)
0001f5ea 5228001b	addq.b	#1,anim_frame(a0)
0001f5ee 1028001b	move.b	anim_frame(a0),d0
0001f5f2 02400006	andi.w	#6,d0
0001f5f6 e248	lsr.w	#1,d0
0001f5f8 0c000003	cmpi.b	#3,d0
0001f5fc 6602	bne.s	+
0001f5fe 7001	moveq	#1,d0
0001f600 1140001a	move.b	d0,mapping_frame(a0)
0001f608 4ef9000164e6	jmp	(DeleteObject).l
0001f60e 4e71	nop	
0001f610 4ef9000163d2	jmp	(extractJmpToName("JmpTo_MarkObjGone")).l
0001f616 4ef900016544	jmp	(extractJmpToName("JmpTo2_AnimateSprite")).l
0001f61c 4ef900016d6e	jmp	(extractJmpToName("JmpTo3_Adjust2PArtPointer")).l
0001f624 7000	moveq	#0,d0
0001f626 10280024	move.b	routine(a0),d0
0001f62a 323b0006	move.w	Obj7D_Index(pc,d0.w),d1
0001f62e 4efb1002	jmp	Obj7D_Index(pc,d1.w)
0001f636 7410	moveq	#$10,d2
0001f638 3602	move.w	d2,d3
0001f63a d643	add.w	d3,d3
0001f63c 43f8b000	lea	(MainCharacter).w,a1
0001f640 30290008	move.w	x_pos(a1),d0
0001f644 90680008	sub.w	x_pos(a0),d0
0001f648 d042	add.w	d2,d0
0001f64a b043	cmp.w	d3,d0
0001f64c 646a	bhs.s	Obj7D_NoAdd
0001f64e 3229000c	move.w	y_pos(a1),d1
0001f652 9268000c	sub.w	y_pos(a0),d1
0001f656 d242	add.w	d2,d1
0001f658 b243	cmp.w	d3,d1
0001f65a 645c	bhs.s	Obj7D_NoAdd
0001f65c 4a78fe08	tst.w	(Debug_placement_mode).w
0001f660 6656	bne.s	Obj7D_NoAdd
0001f662 4a38f7cd	tst.b	(f_bigring).w
0001f666 6650	bne.s	Obj7D_NoAdd
0001f668 54280024	addq.b	#2,routine(a0)
0001f66c 217c0001f6fe0004	move.l	#Obj7D_MapUnc_1F6FE,mappings(a0)
0001f674 317c84b60002	move.w	#make_art_tile(ArtTile_ArtNem_EndPoints,0,1),art_tile(a0)
0001f67e 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0001f684 117c00000018	move.b	#0,priority(a0)
0001f68a 117c00100019	move.b	#$10,width_pixels(a0)
0001f690 11680028001a	move.b	subtype(a0),mapping_frame(a0)
0001f696 317c00770030	move.w	#$77,objoff_30(a0)
0001f69c 303c00c9	move.w	#SndID_Bonus,d0
0001f6a0 4eb900001370	jsr	(PlaySound).l
0001f6a6 7000	moveq	#0,d0
0001f6a8 10280028	move.b	subtype(a0),d0
0001f6ac d040	add.w	d0,d0
0001f6ae 303b0022	move.w	word_1F6D2(pc,d0.w),d0
0001f6b2 4eb900040d06	jsr	(AddPoints).l
0001f6b8 30280008	move.w	x_pos(a0),d0
0001f6bc 0240ff80	andi.w	#$FF80,d0
0001f6c0 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
0001f6c4 0c400280	cmpi.w	#$280,d0
0001f6c8 6202	bhi.s	JmpTo11_DeleteObject
0001f6ca 4e75	rts	
0001f6cc 4ef9000164e6	jmp	(DeleteObject).l
0001f6da 53680030	subq.w	#1,objoff_30(a0)
0001f6de 6b18	bmi.s	JmpTo12_DeleteObject
0001f6e0 30280008	move.w	x_pos(a0),d0
0001f6e4 0240ff80	andi.w	#$FF80,d0
0001f6e8 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
0001f6ec 0c400280	cmpi.w	#$280,d0
0001f6f0 6206	bhi.s	JmpTo12_DeleteObject
0001f6f2 4ef9000164f4	jmp	(DisplaySprite).l
0001f6f8 4ef9000164e6	jmp	(DeleteObject).l
0001f726 4e71	nop	
0001f728 4ef900016d6e	jmp	(extractJmpToName("JmpTo4_Adjust2PArtPointer")).l
0001f730 7000	moveq	#0,d0
0001f732 10280024	move.b	routine(a0),d0
0001f736 323b0006	move.w	Obj44_Index(pc,d0.w),d1
0001f73a 4efb1002	jmp	Obj44_Index(pc,d1.w)
0001f742 54280024	addq.b	#2,routine(a0)
0001f746 217c0001f85a0004	move.l	#Obj44_MapUnc_1F85A,mappings(a0)
0001f74e 317c439a0002	move.w	#make_art_tile(ArtTile_ArtNem_CNZRoundBumper,2,0),art_tile(a0)
0001f758 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0001f75e 117c00100019	move.b	#$10,width_pixels(a0)
0001f764 117c00010018	move.b	#1,priority(a0)
0001f76a 117c00d70020	move.b	#$D7,collision_flags(a0)
0001f770 10280021	move.b	collision_property(a0),d0
0001f774 670000c8	beq.w	loc_1F83E
0001f778 43f8b000	lea	(MainCharacter).w,a1
0001f77c 08a800000021	bclr	#0,collision_property(a0)
0001f782 6702	beq.s	+
0001f784 6116	bsr.s	Obj44_BumpCharacter
0001f786 43f8b040	lea	(Sidekick).w,a1
0001f78a 08a800010021	bclr	#1,collision_property(a0)
0001f790 6702	beq.s	+
0001f792 6108	bsr.s	Obj44_BumpCharacter
0001f794 42280021	clr.b	collision_property(a0)
0001f798 600000a4	bra.w	loc_1F83E
0001f79c 32280008	move.w	x_pos(a0),d1
0001f7a0 3428000c	move.w	y_pos(a0),d2
0001f7a4 92690008	sub.w	x_pos(a1),d1
0001f7a8 9469000c	sub.w	y_pos(a1),d2
0001f7ac 4eb90000364e	jsr	(CalcAngle).l
0001f7b2 1238fe04	move.b	(Level_frame_counter).w,d1
0001f7b6 02410003	andi.w	#3,d1
0001f7ba d041	add.w	d1,d0
0001f7bc 4eb9000033b6	jsr	(CalcSine).l
0001f7c2 c3fcf900	muls.w	#-$700,d1
0001f7c6 e081	asr.l	#8,d1
0001f7c8 33410010	move.w	d1,x_vel(a1)
0001f7cc c1fcf900	muls.w	#-$700,d0
0001f7d0 e080	asr.l	#8,d0
0001f7d2 33400012	move.w	d0,y_vel(a1)
0001f7d6 08e900010022	bset	#status.player.in_air,status(a1)
0001f7dc 08a900040022	bclr	#status.player.rolljumping,status(a1)
0001f7e2 08a900050022	bclr	#status.player.pushing,status(a1)
0001f7e8 4229003c	clr.b	jumping(a1)
0001f7ec 117c0001001c	move.b	#1,anim(a0)
0001f7f2 303c00b4	move.w	#SndID_Bumper,d0
0001f7f6 4eb900001370	jsr	(PlaySound).l
0001f7fc 45f8fc00	lea	(Object_Respawn_Table).w,a2
0001f800 7000	moveq	#0,d0
0001f802 10280023	move.b	respawn_index(a0),d0
0001f806 670c	beq.s	+
0001f808 0c32008a0002	cmpi.b	#$8A,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
0001f80e 642c	bhs.s	return_1F83C
0001f810 52320002	addq.b	#1,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
0001f814 7001	moveq	#1,d0
0001f816 3649	movea.w	a1,a3
0001f818 4eb900040d42	jsr	(AddPoints2).l
0001f81e 610087ba	bsr.w	AllocateObject
0001f822 6618	bne.s	return_1F83C
0001f82a 336800080008	move.w	x_pos(a0),x_pos(a1)
0001f830 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0001f836 137c0004001a	move.b	#4,mapping_frame(a1)
0001f83c 4e75	rts	
0001f83e 43f90001f84c	lea	(Ani_obj44).l,a1
0001f892 4e71	nop	
0001f894 4ef9000163d2	jmp	(extractJmpToName("JmpTo2_MarkObjGone")).l
0001f89a 4ef900016544	jmp	(extractJmpToName("JmpTo3_AnimateSprite")).l
0001f8a0 4ef900016d6e	jmp	(extractJmpToName("JmpTo5_Adjust2PArtPointer")).l
0001f8a8 7000	moveq	#0,d0
0001f8aa 10280024	move.b	routine(a0),d0
0001f8ae 323b0006	move.w	Obj24_Index(pc,d0.w),d1
0001f8b2 4efb1002	jmp	Obj24_Index(pc,d1.w)
0001f8c2 54280024	addq.b	#2,routine(a0)
0001f8c6 217c0001fbf60004	move.l	#Obj24_MapUnc_1FBF6,mappings(a0)
0001f8ce 317c855b0002	move.w	#make_art_tile(ArtTile_ArtNem_BigBubbles,0,1),art_tile(a0)
0001f8d8 117c00840001	move.b	#1<<render_flags.on_screen|1<<render_flags.level_fg,render_flags(a0)
0001f8de 117c00100019	move.b	#$10,width_pixels(a0)
0001f8e4 117c00010018	move.b	#1,priority(a0)
0001f8ea 10280028	move.b	subtype(a0),d0
0001f8ee 6a1a	bpl.s	loc_1F90A
0001f8f0 50280024	addq.b	#8,routine(a0)
0001f8f4 0240007f	andi.w	#$7F,d0
0001f8f8 11400032	move.b	d0,objoff_32(a0)
0001f8fc 11400033	move.b	d0,objoff_33(a0)
0001f900 117c0006001c	move.b	#6,anim(a0)
0001f906 600000b8	bra.w	loc_1F9C0
0001f90a 1140001c	move.b	d0,anim(a0)
0001f90e 316800080030	move.w	x_pos(a0),objoff_30(a0)
0001f914 317cff780012	move.w	#-$88,y_vel(a0)
0001f91a 4eb900003390	jsr	(RandomNumber).l
0001f920 11400026	move.b	d0,angle(a0)
0001f924 43f90001fbcc	lea	(Ani_obj24).l,a1
0001f92a 4eb900016544	jsr	(AnimateSprite).l
0001f930 0c280006001a	cmpi.b	#6,mapping_frame(a0)
0001f936 6606	bne.s	loc_1F93E
0001f938 117c0001002e	move.b	#1,objoff_2E(a0)
0001f93e 3038f646	move.w	(Water_Level_1).w,d0
0001f942 b068000c	cmp.w	y_pos(a0),d0
0001f946 650e	blo.s	loc_1F956
0001f948 117c00060024	move.b	#6,routine(a0)
0001f94e 5628001c	addq.b	#3,anim(a0)
0001f952 6000004a	bra.w	loc_1F99E
0001f956 10280026	move.b	angle(a0),d0
0001f95a 52280026	addq.b	#1,angle(a0)
0001f95e 0240007f	andi.w	#$7F,d0
0001f962 43f90001d4c0	lea	(Obj0A_WobbleData).l,a1
0001f968 10310000	move.b	(a1,d0.w),d0
0001f96c 4880	ext.w	d0
0001f96e d0680030	add.w	objoff_30(a0),d0
0001f972 31400008	move.w	d0,x_pos(a0)
0001f976 4a28002e	tst.b	objoff_2E(a0)
0001f97a 670c	beq.s	loc_1F988
0001f97c 61000184	bsr.w	loc_1FB02
0001f980 0c2800060024	cmpi.b	#6,routine(a0)
0001f986 6716	beq.s	loc_1F99E
0001f98c 4a280001	tst.b	render_flags(a0)
0001f990 6a06	bpl.s	JmpTo13_DeleteObject
0001f992 4ef9000164f4	jmp	(DisplaySprite).l
0001f998 4ef9000164e6	jmp	(DeleteObject).l
0001f99e 43f90001fbcc	lea	(Ani_obj24).l,a1
0001f9a4 4eb900016544	jsr	(AnimateSprite).l
0001f9aa 4a280001	tst.b	render_flags(a0)
0001f9ae 6a06	bpl.s	JmpTo14_DeleteObject
0001f9b0 4ef9000164f4	jmp	(DisplaySprite).l
0001f9b6 4ef9000164e6	jmp	(DeleteObject).l
0001f9c0 4a680036	tst.w	objoff_36(a0)
0001f9c4 665c	bne.s	loc_1FA22
0001f9c6 3038f646	move.w	(Water_Level_1).w,d0
0001f9ca b068000c	cmp.w	y_pos(a0),d0
0001f9ce 640000fe	bhs.w	loc_1FACE
0001f9d2 4a280001	tst.b	render_flags(a0)
0001f9d6 6a0000f6	bpl.w	loc_1FACE
0001f9da 53680038	subq.w	#1,objoff_38(a0)
0001f9de 6a0000e2	bpl.w	loc_1FAC2
0001f9e2 317c00010036	move.w	#1,objoff_36(a0)
0001f9e8 4eb900003390	jsr	(RandomNumber).l
0001f9ee 3200	move.w	d0,d1
0001f9f0 02400007	andi.w	#7,d0
0001f9f4 0c400006	cmpi.w	#6,d0
0001f9f8 64ee	bhs.s	loc_1F9E8
0001f9fa 11400034	move.b	d0,objoff_34(a0)
0001f9fe 0241000c	andi.w	#$C,d1
0001fa02 43f90001faf0	lea	(byte_1FAF0).l,a1
0001fa08 d2c1	adda.w	d1,a1
0001fa0a 2149003c	move.l	a1,objoff_3C(a0)
0001fa0e 53280032	subq.b	#1,objoff_32(a0)
0001fa12 6a0c	bpl.s	BranchTo_loc_1FA2A
0001fa14 116800330032	move.b	objoff_33(a0),objoff_32(a0)
0001fa1a 08e800070036	bset	#7,objoff_36(a0)
0001fa20 6008	bra.s	loc_1FA2A
0001fa22 53680038	subq.w	#1,objoff_38(a0)
0001fa26 6a00009a	bpl.w	loc_1FAC2
0001fa2a 4eb900003390	jsr	(RandomNumber).l
0001fa30 0240001f	andi.w	#$1F,d0
0001fa34 31400038	move.w	d0,objoff_38(a0)
0001fa38 610085a0	bsr.w	AllocateObject
0001fa3c 6668	bne.s	loc_1FAA6
0001fa44 336800080008	move.w	x_pos(a0),x_pos(a1)
0001fa4a 4eb900003390	jsr	(RandomNumber).l
0001fa50 0240000f	andi.w	#$F,d0
0001fa54 5140	subq.w	#8,d0
0001fa56 d1690008	add.w	d0,x_pos(a1)
0001fa5a 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0001fa60 7000	moveq	#0,d0
0001fa62 10280034	move.b	objoff_34(a0),d0
0001fa66 2468003c	movea.l	objoff_3C(a0),a2
0001fa6a 137200000028	move.b	(a2,d0.w),subtype(a1)
0001fa70 082800070036	btst	#7,objoff_36(a0)
0001fa76 672e	beq.s	loc_1FAA6
0001fa78 4eb900003390	jsr	(RandomNumber).l
0001fa7e 02400003	andi.w	#3,d0
0001fa82 660e	bne.s	loc_1FA92
0001fa84 08e800060036	bset	#6,objoff_36(a0)
0001fa8a 661a	bne.s	loc_1FAA6
0001fa8c 137c00020028	move.b	#2,subtype(a1)
0001fa92 4a280034	tst.b	objoff_34(a0)
0001fa96 660e	bne.s	loc_1FAA6
0001fa98 08e800060036	bset	#6,objoff_36(a0)
0001fa9e 6606	bne.s	loc_1FAA6
0001faa0 137c00020028	move.b	#2,subtype(a1)
0001faa6 53280034	subq.b	#1,objoff_34(a0)
0001faaa 6a16	bpl.s	loc_1FAC2
0001faac 4eb900003390	jsr	(RandomNumber).l
0001fab2 0240007f	andi.w	#$7F,d0
0001fab6 06400080	addi.w	#$80,d0
0001faba d1680038	add.w	d0,objoff_38(a0)
0001fabe 42680036	clr.w	objoff_36(a0)
0001fac2 43f90001fbcc	lea	(Ani_obj24).l,a1
0001fac8 4eb900016544	jsr	(AnimateSprite).l
0001face 30280008	move.w	x_pos(a0),d0
0001fad2 0240ff80	andi.w	#$FF80,d0
0001fad6 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
0001fada 0c400280	cmpi.w	#$280,d0
0001fade 620001ea	bhi.w	JmpTo15_DeleteObject
0001fae2 3038f646	move.w	(Water_Level_1).w,d0
0001fae6 b068000c	cmp.w	y_pos(a0),d0
0001faea 650001d8	blo.w	JmpTo7_DisplaySprite
0001faee 4e75	rts	
0001fb02 43f8b000	lea	(MainCharacter).w,a1
0001fb06 6104	bsr.s	loc_1FB0C
0001fb08 43f8b040	lea	(Sidekick).w,a1
0001fb0c 4a29002a	tst.b	obj_control(a1)
0001fb10 6b0000b8	bmi.w	return_1FBCA
0001fb14 30290008	move.w	x_pos(a1),d0
0001fb18 32280008	move.w	x_pos(a0),d1
0001fb1c 04410010	subi.w	#$10,d1
0001fb20 b240	cmp.w	d0,d1
0001fb22 640000a6	bhs.w	return_1FBCA
0001fb26 06410020	addi.w	#$20,d1
0001fb2a b240	cmp.w	d0,d1
0001fb2c 6500009c	blo.w	return_1FBCA
0001fb30 3029000c	move.w	y_pos(a1),d0
0001fb34 3228000c	move.w	y_pos(a0),d1
0001fb38 b240	cmp.w	d0,d1
0001fb3a 6400008e	bhs.w	return_1FBCA
0001fb3e 06410010	addi.w	#$10,d1
0001fb42 b240	cmp.w	d0,d1
0001fb44 65000084	blo.w	return_1FBCA
0001fb48 6100dcd4	bsr.w	ResumeMusic
0001fb4c 303c00ad	move.w	#SndID_InhalingBubble,d0
0001fb50 4eb900001370	jsr	(PlaySound).l
0001fb56 42690010	clr.w	x_vel(a1)
0001fb5a 42690012	clr.w	y_vel(a1)
0001fb5e 42690014	clr.w	inertia(a1)
0001fb62 137c0015001c	move.b	#AniIDSonAni_Bubble,anim(a1)
0001fb68 337c0023002e	move.w	#$23,move_lock(a1)
0001fb6e 137c0000003c	move.b	#0,jumping(a1)
0001fb74 08a900050022	bclr	#status.player.pushing,status(a1)
0001fb7a 08a900040022	bclr	#status.player.rolljumping,status(a1)
0001fb80 082900020022	btst	#status.player.rolling,status(a1)
0001fb86 67000030	beq.w	loc_1FBB8
0001fb8a 0c110001	cmpi.b	#1,(a1)
0001fb8e 6618	bne.s	loc_1FBA8
0001fb90 08a900020022	bclr	#status.player.rolling,status(a1)
0001fb96 137c00130016	move.b	#$13,y_radius(a1)
0001fb9c 137c00090017	move.b	#9,x_radius(a1)
0001fba2 5b69000c	subq.w	#5,y_pos(a1)
0001fba6 6010	bra.s	loc_1FBB8
0001fba8 137c000f0016	move.b	#$F,y_radius(a1)
0001fbae 137c00090017	move.b	#9,x_radius(a1)
0001fbb4 5369000c	subq.w	#1,y_pos(a1)
0001fbb8 0c2800060024	cmpi.b	#6,routine(a0)
0001fbbe 670a	beq.s	return_1FBCA
0001fbc0 117c00060024	move.b	#6,routine(a0)
0001fbc6 5628001c	addq.b	#3,anim(a0)
0001fbca 4e75	rts	
0001fcc2 4e71	nop	
0001fcc4 4ef9000164f4	jmp	(extractJmpToName("JmpTo7_DisplaySprite")).l
0001fcca 4ef9000164e6	jmp	(extractJmpToName("JmpTo15_DeleteObject")).l
0001fcd0 4ef900016d6e	jmp	(extractJmpToName("JmpTo6_Adjust2PArtPointer")).l
0001fcd6 4ef9000163ac	jmp	(extractJmpToName("JmpTo3_ObjectMove")).l
0001fcdc 7000	moveq	#0,d0
0001fcde 10280024	move.b	routine(a0),d0
0001fce2 323b000c	move.w	Obj03_Index(pc,d0.w),d1
0001fce6 4ebb1008	jsr	Obj03_Index(pc,d1.w)
0001fcea 4ef90001643e	jmp	(MarkObjGone3).l
0001fcf6 54280024	addq.b	#2,routine(a0)
0001fcfa 217c0001ffb80004	move.l	#Obj03_MapUnc_1FFB8,mappings(a0)
0001fd02 317c26bc0002	move.w	#make_art_tile(ArtTile_ArtNem_Ring,1,0),art_tile(a0)
0001fd0c 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0001fd12 117c00100019	move.b	#$10,width_pixels(a0)
0001fd18 117c00050018	move.b	#5,priority(a0)
0001fd1e 10280028	move.b	subtype(a0),d0
0001fd22 08000002	btst	#2,d0
0001fd26 6748	beq.s	Obj03_Init_CheckX
0001fd28 54280024	addq.b	#2,routine(a0)
0001fd2c 02400007	andi.w	#7,d0
0001fd30 1140001a	move.b	d0,mapping_frame(a0)
0001fd34 02400003	andi.w	#3,d0
0001fd38 d040	add.w	d0,d0
0001fd3a 317b002c0032	move.w	word_1FD68(pc,d0.w),objoff_32(a0)
0001fd40 3228000c	move.w	y_pos(a0),d1
0001fd44 43f8b000	lea	(MainCharacter).w,a1
0001fd48 b269000c	cmp.w	y_pos(a1),d1
0001fd4c 6406	bhs.s	+
0001fd4e 117c00010034	move.b	#1,objoff_34(a0)
0001fd54 43f8b040	lea	(Sidekick).w,a1
0001fd58 b269000c	cmp.w	y_pos(a1),d1
0001fd5c 6406	bhs.s	+
0001fd5e 117c00010035	move.b	#1,objoff_35(a0)
0001fd64 60000148	bra.w	Obj03_MainY
0001fd70 02400003	andi.w	#3,d0
0001fd74 1140001a	move.b	d0,mapping_frame(a0)
0001fd78 d040	add.w	d0,d0
0001fd7a 317b00ec0032	move.w	word_1FD68(pc,d0.w),objoff_32(a0)
0001fd80 32280008	move.w	x_pos(a0),d1
0001fd84 43f8b000	lea	(MainCharacter).w,a1
0001fd88 b2690008	cmp.w	x_pos(a1),d1
0001fd8c 6406	bhs.s	+
0001fd8e 117c00010034	move.b	#1,objoff_34(a0)
0001fd94 43f8b040	lea	(Sidekick).w,a1
0001fd98 b2690008	cmp.w	x_pos(a1),d1
0001fd9c 6406	bhs.s	+
0001fd9e 117c00010035	move.b	#1,objoff_35(a0)
0001fda4 4a78fe08	tst.w	(Debug_placement_mode).w
0001fda8 66000102	bne.w	return_1FEAC
0001fdac 32280008	move.w	x_pos(a0),d1
0001fdb0 45e80034	lea	objoff_34(a0),a2
0001fdb4 43f8b000	lea	(MainCharacter).w,a1
0001fdb8 6104	bsr.s	+
0001fdba 43f8b040	lea	(Sidekick).w,a1
0001fdc0 6676	bne.s	Obj03_MainX_Alt
0001fdc2 b2690008	cmp.w	x_pos(a1),d1
0001fdc6 620000e4	bhi.w	return_1FEAC
0001fdca 157c0001ffff	move.b	#1,-1(a2)
0001fdd0 3428000c	move.w	y_pos(a0),d2
0001fdd4 3602	move.w	d2,d3
0001fdd6 38280032	move.w	objoff_32(a0),d4
0001fdda 9444	sub.w	d4,d2
0001fddc d644	add.w	d4,d3
0001fdde 3829000c	move.w	y_pos(a1),d4
0001fde2 b842	cmp.w	d2,d4
0001fde4 6d0000c6	blt.w	return_1FEAC
0001fde8 b843	cmp.w	d3,d4
0001fdea 6c0000c0	bge.w	return_1FEAC
0001fdee 10280028	move.b	subtype(a0),d0
0001fdf2 6a0a	bpl.s	+
0001fdf4 082900010022	btst	#status.player.in_air,status(a1)
0001fdfa 660000b0	bne.w	return_1FEAC
0001fdfe 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0001fe04 661e	bne.s	+
0001fe06 137c000c003e	move.b	#$C,top_solid_bit(a1)
0001fe0c 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
0001fe12 08000003	btst	#3,d0
0001fe16 670c	beq.s	+
0001fe18 137c000e003e	move.b	#$E,top_solid_bit(a1)
0001fe1e 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
0001fe24 02697fff0002	andi.w	#drawing_mask,art_tile(a1)
0001fe2a 08000005	btst	#5,d0
0001fe2e 677c	beq.s	return_1FEAC
0001fe30 006980000002	ori.w	#high_priority,art_tile(a1)
0001fe36 6074	bra.s	return_1FEAC
0001fe38 b2690008	cmp.w	x_pos(a1),d1
0001fe3c 6300006e	bls.w	return_1FEAC
0001fe40 157c0000ffff	move.b	#0,-1(a2)
0001fe46 3428000c	move.w	y_pos(a0),d2
0001fe4a 3602	move.w	d2,d3
0001fe4c 38280032	move.w	objoff_32(a0),d4
0001fe50 9444	sub.w	d4,d2
0001fe52 d644	add.w	d4,d3
0001fe54 3829000c	move.w	y_pos(a1),d4
0001fe58 b842	cmp.w	d2,d4
0001fe5a 6d000050	blt.w	return_1FEAC
0001fe5e b843	cmp.w	d3,d4
0001fe60 6c00004a	bge.w	return_1FEAC
0001fe64 10280028	move.b	subtype(a0),d0
0001fe68 6a0a	bpl.s	+
0001fe6a 082900010022	btst	#status.player.in_air,status(a1)
0001fe70 6600003a	bne.w	return_1FEAC
0001fe74 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0001fe7a 661e	bne.s	+
0001fe7c 137c000c003e	move.b	#$C,top_solid_bit(a1)
0001fe82 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
0001fe88 08000004	btst	#4,d0
0001fe8c 670c	beq.s	+
0001fe8e 137c000e003e	move.b	#$E,top_solid_bit(a1)
0001fe94 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
0001fe9a 02697fff0002	andi.w	#drawing_mask,art_tile(a1)
0001fea0 08000006	btst	#6,d0
0001fea4 6706	beq.s	return_1FEAC
0001fea6 006980000002	ori.w	#high_priority,art_tile(a1)
0001feac 4e75	rts	
0001feae 4a78fe08	tst.w	(Debug_placement_mode).w
0001feb2 66000102	bne.w	return_1FFB6
0001feb6 3228000c	move.w	y_pos(a0),d1
0001feba 45e80034	lea	objoff_34(a0),a2
0001febe 43f8b000	lea	(MainCharacter).w,a1
0001fec2 6104	bsr.s	+
0001fec4 43f8b040	lea	(Sidekick).w,a1
0001feca 6676	bne.s	Obj03_MainY_Alt
0001fecc b269000c	cmp.w	y_pos(a1),d1
0001fed0 620000e4	bhi.w	return_1FFB6
0001fed4 157c0001ffff	move.b	#1,-1(a2)
0001feda 34280008	move.w	x_pos(a0),d2
0001fede 3602	move.w	d2,d3
0001fee0 38280032	move.w	objoff_32(a0),d4
0001fee4 9444	sub.w	d4,d2
0001fee6 d644	add.w	d4,d3
0001fee8 38290008	move.w	x_pos(a1),d4
0001feec b842	cmp.w	d2,d4
0001feee 6d0000c6	blt.w	return_1FFB6
0001fef2 b843	cmp.w	d3,d4
0001fef4 6c0000c0	bge.w	return_1FFB6
0001fef8 10280028	move.b	subtype(a0),d0
0001fefc 6a0a	bpl.s	+
0001fefe 082900010022	btst	#status.player.in_air,status(a1)
0001ff04 660000b0	bne.w	return_1FFB6
0001ff08 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0001ff0e 661e	bne.s	+
0001ff10 137c000c003e	move.b	#$C,top_solid_bit(a1)
0001ff16 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
0001ff1c 08000003	btst	#3,d0
0001ff20 670c	beq.s	+
0001ff22 137c000e003e	move.b	#$E,top_solid_bit(a1)
0001ff28 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
0001ff2e 02697fff0002	andi.w	#drawing_mask,art_tile(a1)
0001ff34 08000005	btst	#5,d0
0001ff38 677c	beq.s	return_1FFB6
0001ff3a 006980000002	ori.w	#high_priority,art_tile(a1)
0001ff40 6074	bra.s	return_1FFB6
0001ff42 b269000c	cmp.w	y_pos(a1),d1
0001ff46 6300006e	bls.w	return_1FFB6
0001ff4a 157c0000ffff	move.b	#0,-1(a2)
0001ff50 34280008	move.w	x_pos(a0),d2
0001ff54 3602	move.w	d2,d3
0001ff56 38280032	move.w	objoff_32(a0),d4
0001ff5a 9444	sub.w	d4,d2
0001ff5c d644	add.w	d4,d3
0001ff5e 38290008	move.w	x_pos(a1),d4
0001ff62 b842	cmp.w	d2,d4
0001ff64 6d000050	blt.w	return_1FFB6
0001ff68 b843	cmp.w	d3,d4
0001ff6a 6c00004a	bge.w	return_1FFB6
0001ff6e 10280028	move.b	subtype(a0),d0
0001ff72 6a0a	bpl.s	+
0001ff74 082900010022	btst	#status.player.in_air,status(a1)
0001ff7a 6600003a	bne.w	return_1FFB6
0001ff7e 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0001ff84 661e	bne.s	+
0001ff86 137c000c003e	move.b	#$C,top_solid_bit(a1)
0001ff8c 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
0001ff92 08000004	btst	#4,d0
0001ff96 670c	beq.s	+
0001ff98 137c000e003e	move.b	#$E,top_solid_bit(a1)
0001ff9e 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
0001ffa4 02697fff0002	andi.w	#drawing_mask,art_tile(a1)
0001ffaa 08000006	btst	#6,d0
0001ffae 6706	beq.s	return_1FFB6
0001ffb0 006980000002	ori.w	#high_priority,art_tile(a1)
0001ffb6 4e75	rts	
00020094 4ef900016d6e	jmp	(extractJmpToName("JmpTo7_Adjust2PArtPointer")).l
0002009c 7000	moveq	#0,d0
0002009e 10280024	move.b	routine(a0),d0
000200a2 323b0006	move.w	Obj0B_Index(pc,d0.w),d1
000200a6 4efb1002	jmp	Obj0B_Index(pc,d1.w)
000200b0 54280024	addq.b	#2,routine(a0)
000200b4 217c000201a00004	move.l	#Obj0B_MapUnc_201A0,mappings(a0)
000200bc 317ce3b00002	move.w	#make_art_tile(ArtTile_ArtNem_CPZAnimatedBits,3,1),art_tile(a0)
000200c6 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000200cc 117c00100019	move.b	#$10,width_pixels(a0)
000200d2 117c00040018	move.b	#4,priority(a0)
000200d8 7000	moveq	#0,d0
000200da 10280028	move.b	subtype(a0),d0
000200de 024000f0	andi.w	#$F0,d0
000200e2 06400010	addi.w	#$10,d0
000200e6 3200	move.w	d0,d1
000200e8 5340	subq.w	#1,d0
000200ea 31400030	move.w	d0,obj0B_duration_current(a0)
000200ee 31400032	move.w	d0,obj0B_duration_initial(a0)
000200f2 7000	moveq	#0,d0
000200f4 10280028	move.b	subtype(a0),d0
000200f8 0240000f	andi.w	#$F,d0
000200fc 5240	addq.w	#1,d0
000200fe e948	lsl.w	#4,d0
00020100 11400036	move.b	d0,obj0B_delay(a0)
00020104 1038fe0f	move.b	(Vint_runcount+3).w,d0
00020108 d0280036	add.b	obj0B_delay(a0),d0
0002010c 662e	bne.s	loc_2013C
0002010e 54280024	addq.b	#2,routine(a0)
00020112 53680030	subq.w	#1,obj0B_duration_current(a0)
00020116 6a18	bpl.s	loc_20130
00020118 317c007f0030	move.w	#$7F,obj0B_duration_current(a0)
0002011e 4a28001c	tst.b	anim(a0)
00020122 6706	beq.s	+
00020124 316800320030	move.w	obj0B_duration_initial(a0),obj0B_duration_current(a0)
0002012a 08680000001c	bchg	#0,anim(a0)
00020130 43f90002018c	lea	(Ani_obj0B).l,a1
00020136 4eb900016544	jsr	(AnimateSprite).l
0002013c 4a28001a	tst.b	mapping_frame(a0)
00020140 6614	bne.s	+
00020142 7200	moveq	#0,d1
00020144 12280019	move.b	width_pixels(a0),d1
00020148 7611	moveq	#$11,d3
0002014a 38280008	move.w	x_pos(a0),d4
0002014e 61009ae2	bsr.w	PlatformObject
00020156 10280022	move.b	status(a0),d0
0002015a 02000018	andi.b	#standing_mask,d0
0002015e 6728	beq.s	BranchTo_JmpTo3_MarkObjGone
00020160 08a800030022	bclr	#p1_standing_bit,status(a0)
00020166 670c	beq.s	+
00020168 08b80003b022	bclr	#status.player.on_object,(MainCharacter+status).w
0002016e 08f80001b022	bset	#status.player.in_air,(MainCharacter+status).w
00020174 08a800040022	bclr	#p2_standing_bit,status(a0)
0002017a 670c	beq.s	BranchTo_JmpTo3_MarkObjGone
0002017c 08b80003b062	bclr	#status.player.on_object,(Sidekick+status).w
00020182 08f80001b062	bset	#status.player.in_air,(Sidekick+status).w
00020204 4ef9000163d2	jmp	(extractJmpToName("JmpTo3_MarkObjGone")).l
0002020a 4ef900016d6e	jmp	(extractJmpToName("JmpTo8_Adjust2PArtPointer")).l
00020210 7000	moveq	#0,d0
00020212 10280024	move.b	routine(a0),d0
00020216 323b0006	move.w	Obj0C_Index(pc,d0.w),d1
0002021a 4efb1002	jmp	Obj0C_Index(pc,d1.w)
00020222 54280024	addq.b	#2,routine(a0)
00020226 217c000202fa0004	move.l	#Obj0C_MapUnc_202FA,mappings(a0)
0002022e 317ce4180002	move.w	#make_art_tile(ArtTile_ArtNem_FloatPlatform,3,1),art_tile(a0)
00020238 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0002023e 117c00100019	move.b	#$10,width_pixels(a0)
00020244 117c00040018	move.b	#4,priority(a0)
0002024a 3028000c	move.w	y_pos(a0),d0
0002024e 04400010	subi.w	#$10,d0
00020252 3140003a	move.w	d0,objoff_3A(a0)
00020256 7000	moveq	#0,d0
00020258 10280028	move.b	subtype(a0),d0
0002025c 024000f0	andi.w	#$F0,d0
00020260 06400010	addi.w	#$10,d0
00020264 3200	move.w	d0,d1
00020266 5340	subq.w	#1,d0
00020268 31400030	move.w	d0,objoff_30(a0)
0002026c 31400032	move.w	d0,objoff_32(a0)
00020270 7000	moveq	#0,d0
00020272 10280028	move.b	subtype(a0),d0
00020276 0240000f	andi.w	#$F,d0
0002027a 1140003e	move.b	d0,objoff_3E(a0)
0002027e 1140003f	move.b	d0,objoff_3F(a0)
00020282 1028003c	move.b	objoff_3C(a0),d0
00020286 6738	beq.s	loc_202C0
00020288 0c000080	cmpi.b	#$80,d0
0002028c 6642	bne.s	loc_202D0
0002028e 1228003d	move.b	objoff_3D(a0),d1
00020292 660e	bne.s	loc_202A2
00020294 5328003e	subq.b	#1,objoff_3E(a0)
00020298 6a08	bpl.s	loc_202A2
0002029a 1168003f003e	move.b	objoff_3F(a0),objoff_3E(a0)
000202a0 602e	bra.s	loc_202D0
000202a2 5228003d	addq.b	#1,objoff_3D(a0)
000202a6 1001	move.b	d1,d0
000202b0 ec40	asr.w	#6,d0
000202b2 04400010	subi.w	#$10,d0
000202b6 d068003a	add.w	objoff_3A(a0),d0
000202ba 3140000c	move.w	d0,y_pos(a0)
000202be 6026	bra.s	loc_202E6
000202c0 3238fe0e	move.w	(Vint_runcount+2).w,d1
000202c4 024103ff	andi.w	#$3FF,d1
000202c8 660a	bne.s	loc_202D4
000202ca 117c0001003d	move.b	#1,objoff_3D(a0)
000202d0 5228003c	addq.b	#1,objoff_3C(a0)
000202dc e841	asr.w	#4,d1
000202de d268003a	add.w	objoff_3A(a0),d1
000202e2 3141000c	move.w	d1,y_pos(a0)
000202e6 7200	moveq	#0,d1
000202e8 12280019	move.b	width_pixels(a0),d1
000202ec 7609	moveq	#9,d3
000202ee 38280008	move.w	x_pos(a0),d4
000202f2 6100993e	bsr.w	PlatformObject
00020306 4e71	nop	
00020308 4ef9000163d2	jmp	(extractJmpToName("JmpTo4_MarkObjGone")).l
0002030e 4ef900016d6e	jmp	(extractJmpToName("JmpTo9_Adjust2PArtPointer")).l
00020314 4ef9000033b6	jmp	(extractJmpToName("JmpTo5_CalcSine")).l
0002031c 7000	moveq	#0,d0
0002031e 10280024	move.b	routine(a0),d0
00020322 323b0006	move.w	Obj12_Index(pc,d0.w),d1
00020326 4efb1002	jmp	Obj12_Index(pc,d1.w)
0002032e 54280024	addq.b	#2,routine(a0)
00020332 217c000203820004	move.l	#Obj12_MapUnc_20382,mappings(a0)
0002033a 317c63920002	move.w	#make_art_tile(ArtTile_ArtNem_HPZ_Emerald,3,0),art_tile(a0)
00020344 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002034a 117c00200019	move.b	#$20,width_pixels(a0)
00020350 117c00040018	move.b	#4,priority(a0)
00020356 323c0020	move.w	#$20,d1
0002035a 343c0010	move.w	#$10,d2
0002035e 363c0010	move.w	#$10,d3
00020362 38280008	move.w	x_pos(a0),d4
00020366 610093b0	bsr.w	SolidObject
0002036a 30280008	move.w	x_pos(a0),d0
0002036e 0240ff80	andi.w	#$FF80,d0
00020372 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00020376 0c400280	cmpi.w	#$280,d0
0002037a 62000022	bhi.w	JmpTo16_DeleteObject
00020396 4e71	nop	
00020398 4ef9000164f4	jmp	(extractJmpToName("JmpTo8_DisplaySprite")).l
0002039e 4ef9000164e6	jmp	(extractJmpToName("JmpTo16_DeleteObject")).l
000203a4 4ef900016d6e	jmp	(extractJmpToName("JmpTo10_Adjust2PArtPointer")).l
000203ac 7000	moveq	#0,d0
000203ae 10280024	move.b	routine(a0),d0
000203b2 323b0006	move.w	Obj13_Index(pc,d0.w),d1
000203b6 4efb1002	jmp	Obj13_Index(pc,d1.w)
000203c0 54280024	addq.b	#2,routine(a0)
000203c4 217c000205280004	move.l	#Obj13_MapUnc_20528,mappings(a0)
000203cc 317ce3150002	move.w	#make_art_tile(ArtTile_ArtNem_HPZ_Waterfall,3,1),art_tile(a0)
000203d6 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
000203dc 117c00100019	move.b	#$10,width_pixels(a0)
000203e2 117c00010018	move.b	#1,priority(a0)
000203e8 117c0012001a	move.b	#$12,mapping_frame(a0)
000203ee 6138	bsr.s	Obj13_LoadSubObject
000203f0 137c00a00016	move.b	#$A0,y_radius(a1)
000203f6 08e900040001	bset	#render_flags.explicit_height,render_flags(a1)
000203fc 21490038	move.l	a1,objoff_38(a0)
00020400 3168000c0034	move.w	y_pos(a0),objoff_34(a0)
00020406 3168000c0036	move.w	y_pos(a0),objoff_36(a0)
0002040c 0c2800100028	cmpi.b	#$10,subtype(a0)
00020412 6558	blo.s	loc_2046C
00020414 6112	bsr.s	Obj13_LoadSubObject
00020416 2149003c	move.l	a1,objoff_3C(a0)
0002041a 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00020420 06690098000c	addi.w	#$98,y_pos(a1)
00020426 6044	bra.s	loc_2046C
00020428 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002042e 663a	bne.s	+
00020436 58290024	addq.b	#4,routine(a1)
0002043a 336800080008	move.w	x_pos(a0),x_pos(a1)
00020440 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00020446 237c000205280004	move.l	#Obj13_MapUnc_20528,mappings(a1)
0002044e 337ce3150002	move.w	#make_art_tile(ArtTile_ArtNem_HPZ_Waterfall,3,1),art_tile(a1)
00020458 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002045e 137c00100019	move.b	#$10,width_pixels(a1)
00020464 137c00010018	move.b	#1,priority(a1)
0002046c 7200	moveq	#0,d1
0002046e 12280028	move.b	subtype(a0),d1
00020472 30280034	move.w	objoff_34(a0),d0
00020476 04400078	subi.w	#$78,d0
0002047a e949	lsl.w	#4,d1
0002047c d041	add.w	d1,d0
0002047e 3140000c	move.w	d0,y_pos(a0)
00020482 31400034	move.w	d0,objoff_34(a0)
00020486 22680038	movea.l	objoff_38(a0),a1
0002048a 117c0012001a	move.b	#$12,mapping_frame(a0)
00020490 30280034	move.w	objoff_34(a0),d0
00020494 3238f646	move.w	(Water_Level_1).w,d1
00020498 b240	cmp.w	d0,d1
0002049a 6402	bhs.s	+
0002049c 3001	move.w	d1,d0
0002049e 3140000c	move.w	d0,y_pos(a0)
000204a2 90680036	sub.w	objoff_36(a0),d0
000204a6 06400080	addi.w	#$80,d0
000204aa 6b44	bmi.s	loc_204F0
000204ac e848	lsr.w	#4,d0
000204ae 3200	move.w	d0,d1
000204b0 0c40000f	cmpi.w	#$F,d0
000204b4 6502	blo.s	+
000204b6 700f	moveq	#$F,d0
000204b8 1340001a	move.b	d0,mapping_frame(a1)
000204bc 0c2800100028	cmpi.b	#$10,subtype(a0)
000204c2 6514	blo.s	loc_204D8
000204c4 2268003c	movea.l	objoff_3C(a0),a1
000204c8 0441000f	subi.w	#$F,d1
000204cc 6402	bcc.s	+
000204ce 7200	moveq	#0,d1
000204d0 06410013	addi.w	#$13,d1
000204d4 1341001a	move.b	d1,mapping_frame(a1)
000204d8 30280008	move.w	x_pos(a0),d0
000204dc 0240ff80	andi.w	#$FF80,d0
000204e0 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
000204e4 0c400280	cmpi.w	#$280,d0
000204e8 620003e0	bhi.w	JmpTo17_DeleteObject
000204f0 7013	moveq	#$13,d0
000204f2 1140001a	move.b	d0,mapping_frame(a0)
000204f6 1340001a	move.b	d0,mapping_frame(a1)
000204fa 30280008	move.w	x_pos(a0),d0
000204fe 0240ff80	andi.w	#$FF80,d0
00020502 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00020506 0c400280	cmpi.w	#$280,d0
0002050a 620003be	bhi.w	JmpTo17_DeleteObject
0002050e 4e75	rts	
00020510 30280008	move.w	x_pos(a0),d0
00020514 0240ff80	andi.w	#$FF80,d0
00020518 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
0002051c 0c400280	cmpi.w	#$280,d0
00020520 620003a8	bhi.w	JmpTo17_DeleteObject
000208c4 4ef9000164f4	jmp	(extractJmpToName("JmpTo9_DisplaySprite")).l
000208ca 4ef9000164e6	jmp	(extractJmpToName("JmpTo17_DeleteObject")).l
000208d0 4ef900016d8a	jmp	(extractJmpToName("JmpTo2_Adjust2PArtPointer2")).l
000208d6 4ef900016d6e	jmp	(extractJmpToName("JmpTo11_Adjust2PArtPointer")).l
000208dc 7000	moveq	#0,d0
000208de 10280024	move.b	routine(a0),d0
000208e2 323b0006	move.w	Obj04_Index(pc,d0.w),d1
000208e6 4efb1002	jmp	Obj04_Index(pc,d1.w)
000208f0 54280024	addq.b	#2,routine(a0)
000208f4 217c00020a0e0004	move.l	#Obj04_MapUnc_20A0E,mappings(a0)
000208fc 317c84000002	move.w	#make_art_tile(ArtTile_ArtNem_WaterSurface,0,1),art_tile(a0)
00020906 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002090c 117c00800019	move.b	#$80,width_pixels(a0)
00020912 316800080030	move.w	x_pos(a0),objoff_30(a0)
00020918 0c38000ffe10	cmpi.b	#aquatic_ruin_zone,(Current_Zone).w
0002091e 6610	bne.s	Obj04_Action
00020920 54280024	addq.b	#2,routine(a0)
00020924 217c00020afe0004	move.l	#Obj04_MapUnc_20AFE,mappings(a0)
0002092c 60000094	bra.w	Obj04_Action2
00020930 3238f646	move.w	(Water_Level_1).w,d1
00020934 3141000c	move.w	d1,y_pos(a0)
00020938 4a280032	tst.b	objoff_32(a0)
0002093c 6614	bne.s	Obj04_Animate
0002093e 08380007f605	btst	#button_start,(Ctrl_1_Press).w
00020944 671c	beq.s	loc_20962
00020946 5628001a	addq.b	#3,mapping_frame(a0)
0002094a 117c00010032	move.b	#1,objoff_32(a0)
00020950 6010	bra.s	Obj04_Display
00020952 4a78f63a	tst.w	(Game_paused).w
00020956 660a	bne.s	Obj04_Display
00020958 117c00000032	move.b	#0,objoff_32(a0)
0002095e 5728001a	subq.b	#3,mapping_frame(a0)
00020962 43f900020982	lea	(Anim_obj04).l,a1
00020968 7200	moveq	#0,d1
0002096a 1228001b	move.b	anim_frame(a0),d1
0002096e 11711000001a	move.b	(a1,d1.w),mapping_frame(a0)
00020974 5228001b	addq.b	#1,anim_frame(a0)
00020978 0228003f001b	andi.b	#$3F,anim_frame(a0)
000209c2 3238f646	move.w	(Water_Level_1).w,d1
000209c6 3141000c	move.w	d1,y_pos(a0)
000209ca 4a280032	tst.b	objoff_32(a0)
000209ce 6614	bne.s	Obj04_Animate2
000209d0 08380007f605	btst	#button_start,(Ctrl_1_Press).w
000209d6 671c	beq.s	loc_209F4
000209d8 5428001a	addq.b	#2,mapping_frame(a0)
000209dc 117c00010032	move.b	#1,objoff_32(a0)
000209e2 6026	bra.s	BranchTo_JmpTo10_DisplaySprite
000209e4 4a78f63a	tst.w	(Game_paused).w
000209e8 6620	bne.s	BranchTo_JmpTo10_DisplaySprite
000209ea 117c00000032	move.b	#0,objoff_32(a0)
000209f0 5528001a	subq.b	#2,mapping_frame(a0)
000209f4 5328001e	subq.b	#1,anim_frame_duration(a0)
000209f8 6a10	bpl.s	BranchTo_JmpTo10_DisplaySprite
000209fa 117c0005001e	move.b	#5,anim_frame_duration(a0)
00020a00 5228001a	addq.b	#1,mapping_frame(a0)
00020a04 02280001001a	andi.b	#1,mapping_frame(a0)
00020b9e 7000	moveq	#0,d0
00020ba0 10280024	move.b	routine(a0),d0
00020ba4 323b0006	move.w	Obj49_Index(pc,d0.w),d1
00020ba8 4efb1002	jmp	Obj49_Index(pc,d1.w)
00020bb0 54280024	addq.b	#2,routine(a0)
00020bb4 217c00020c500004	move.l	#Obj49_MapUnc_20C50,mappings(a0)
00020bbc 317c239e0002	move.w	#make_art_tile(ArtTile_ArtNem_Waterfall,1,0),art_tile(a0)
00020bc6 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00020bcc 117c00200019	move.b	#$20,width_pixels(a0)
00020bd2 316800080030	move.w	x_pos(a0),objoff_30(a0)
00020bd8 117c00000018	move.b	#0,priority(a0)
00020bde 117c00800016	move.b	#$80,y_radius(a0)
00020be4 08e800040001	bset	#render_flags.explicit_height,render_flags(a0)
00020bea 4a78ffd8	tst.w	(Two_player_mode).w
00020bee 6614	bne.s	+
00020bf0 30280008	move.w	x_pos(a0),d0
00020bf4 0240ff80	andi.w	#$FF80,d0
00020bf8 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00020bfc 0c400280	cmpi.w	#$280,d0
00020c00 620008b0	bhi.w	JmpTo18_DeleteObject
00020c04 32280008	move.w	x_pos(a0),d1
00020c08 3401	move.w	d1,d2
00020c0a 04410040	subi.w	#$40,d1
00020c0e 06420040	addi.w	#$40,d2
00020c12 16280028	move.b	subtype(a0),d3
00020c16 117c0000001a	move.b	#0,mapping_frame(a0)
00020c1c 3038b008	move.w	(MainCharacter+x_pos).w,d0
00020c20 b041	cmp.w	d1,d0
00020c22 6512	blo.s	loc_20C36
00020c24 b042	cmp.w	d2,d0
00020c26 640e	bhs.s	loc_20C36
00020c28 117c0001001a	move.b	#1,mapping_frame(a0)
00020c2e d728001a	add.b	d3,mapping_frame(a0)
00020c36 3038b048	move.w	(Sidekick+x_pos).w,d0
00020c3a b041	cmp.w	d1,d0
00020c3c 650a	blo.s	Obj49_Display
00020c3e b042	cmp.w	d2,d0
00020c40 6406	bhs.s	Obj49_Display
00020c42 117c0001001a	move.b	#1,mapping_frame(a0)
00020c48 d728001a	add.b	d3,mapping_frame(a0)
00020dec 7000	moveq	#0,d0
00020dee 10280024	move.b	routine(a0),d0
00020df2 323b0006	move.w	Obj31_Index(pc,d0.w),d1
00020df6 4efb1002	jmp	Obj31_Index(pc,d1.w)
00020e02 54280024	addq.b	#2,routine(a0)
00020e06 7000	moveq	#0,d0
00020e08 10280028	move.b	subtype(a0),d0
00020e0c 117b00f00020	move.b	Obj31_CollisionFlagsBySubtype(pc,d0.w),collision_flags(a0)
00020e12 217c00020e6c0004	move.l	#Obj31_MapUnc_20E6C,mappings(a0)
00020e1a 4a78fe08	tst.w	(Debug_placement_mode).w
00020e1e 6708	beq.s	+
00020e20 217c00020e740004	move.l	#Obj31_MapUnc_20E74,mappings(a0)
00020e28 317c86800002	move.w	#make_art_tile(ArtTile_ArtNem_Powerups,0,1),art_tile(a0)
00020e2e 117c00840001	move.b	#1<<render_flags.on_screen|1<<render_flags.level_fg,render_flags(a0)
00020e34 117c00800019	move.b	#$80,width_pixels(a0)
00020e3a 117c00040018	move.b	#4,priority(a0)
00020e40 11680028001a	move.b	subtype(a0),mapping_frame(a0)
00020e46 4a78ffd8	tst.w	(Two_player_mode).w
00020e4a 6614	bne.s	+
00020e4c 30280008	move.w	x_pos(a0),d0
00020e50 0240ff80	andi.w	#$FF80,d0
00020e54 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00020e58 0c400280	cmpi.w	#$280,d0
00020e5c 62000654	bhi.w	JmpTo18_DeleteObject
00020e60 4a78fe08	tst.w	(Debug_placement_mode).w
00020e64 6704	beq.s	+
00020e6a 4e75	rts	
00020ee0 7000	moveq	#0,d0
00020ee2 10280024	move.b	routine(a0),d0
00020ee6 323b0006	move.w	Obj74_Index(pc,d0.w),d1
00020eea 4efb1002	jmp	Obj74_Index(pc,d1.w)
00020ef2 54280024	addq.b	#2,routine(a0)
00020ef6 217c00020f660004	move.l	#Obj74_MapUnc_20F66,mappings(a0)
00020efe 317c86800002	move.w	#make_art_tile(ArtTile_ArtNem_Powerups,0,1),art_tile(a0)
00020f08 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00020f0e 10280028	move.b	subtype(a0),d0
00020f12 1200	move.b	d0,d1
00020f14 024000f0	andi.w	#$F0,d0
00020f18 06400010	addi.w	#$10,d0
00020f1c e248	lsr.w	#1,d0
00020f1e 11400019	move.b	d0,width_pixels(a0)
00020f22 0241000f	andi.w	#$F,d1
00020f26 5241	addq.w	#1,d1
00020f28 e749	lsl.w	#3,d1
00020f2a 11410016	move.b	d1,y_radius(a0)
00020f2e 7200	moveq	#0,d1
00020f30 12280019	move.b	width_pixels(a0),d1
00020f34 0641000b	addi.w	#$B,d1
00020f38 7400	moveq	#0,d2
00020f3a 14280016	move.b	y_radius(a0),d2
00020f3e 3602	move.w	d2,d3
00020f40 5243	addq.w	#1,d3
00020f42 38280008	move.w	x_pos(a0),d4
00020f46 61008830	bsr.w	SolidObject_Always
00020f4a 4a78ffd8	tst.w	(Two_player_mode).w
00020f4e 6614	bne.s	+
00020f50 30280008	move.w	x_pos(a0),d0
00020f54 0240ff80	andi.w	#$FF80,d0
00020f58 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00020f5c 0c400280	cmpi.w	#$280,d0
00020f60 62000550	bhi.w	JmpTo18_DeleteObject
00020f64 4e75	rts	
00020fd2 7000	moveq	#0,d0
00020fd4 10280024	move.b	routine(a0),d0
00020fd8 323b0006	move.w	Obj7C_Index(pc,d0.w),d1
00020fdc 4efb1002	jmp	Obj7C_Index(pc,d1.w)
00020fe4 54280024	addq.b	#2,routine(a0)
00020fe8 217c0002103c0004	move.l	#Obj7C_MapUnc_2103C,mappings(a0)
00020ff0 317cc3730002	move.w	#make_art_tile(ArtTile_ArtNem_CPZMetalThings,2,1),art_tile(a0)
00020ffa 117c00100019	move.b	#$10,width_pixels(a0)
00021000 117c00070018	move.b	#7,priority(a0)
00021006 3238ee00	move.w	(Camera_X_pos).w,d1
0002100a 024103ff	andi.w	#$3FF,d1
0002100e 0c4102e0	cmpi.w	#$2E0,d1
00021012 6426	bhs.s	+
00021014 e241	asr.w	#1,d1
00021016 3001	move.w	d1,d0
00021018 e241	asr.w	#1,d1
0002101a d041	add.w	d1,d0
0002101c 4440	neg.w	d0
0002101e 31400008	move.w	d0,x_pixel(a0)
00021022 3238ee04	move.w	(Camera_Y_pos).w,d1
00021026 e241	asr.w	#1,d1
00021028 0241003f	andi.w	#$3F,d1
0002102c 4441	neg.w	d1
0002102e 06410100	addi.w	#$100,d1
00021032 3141000a	move.w	d1,y_pixel(a0)
00021088 7000	moveq	#0,d0
0002108a 10280024	move.b	routine(a0),d0
0002108e 323b0006	move.w	Obj27_Index(pc,d0.w),d1
00021092 4efb1002	jmp	Obj27_Index(pc,d1.w)
0002109c 54280024	addq.b	#2,routine(a0)
000210a4 6618	bne.s	Obj27_Init
000210ac 336800080008	move.w	x_pos(a0),x_pos(a1)
000210b2 3368000c000c	move.w	y_pos(a0),y_pos(a1)
000210b8 3368003e003e	move.w	objoff_3E(a0),objoff_3E(a1)
000210be 54280024	addq.b	#2,routine(a0)
000210c2 217c000211200004	move.l	#Obj27_MapUnc_21120,mappings(a0)
000210ca 317c05a40002	move.w	#make_art_tile(ArtTile_ArtNem_Explosion,0,0),art_tile(a0)
000210d4 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
000210da 117c00010018	move.b	#1,priority(a0)
000210e0 117c00000020	move.b	#0,collision_flags(a0)
000210e6 117c000c0019	move.b	#$C,width_pixels(a0)
000210ec 117c0003001e	move.b	#3,anim_frame_duration(a0)
000210f2 117c0000001a	move.b	#0,mapping_frame(a0)
000210f8 303c00c1	move.w	#SndID_Explosion,d0
000210fc 4eb900001370	jsr	(PlaySound).l
00021102 5328001e	subq.b	#1,anim_frame_duration(a0)
00021106 6a14	bpl.s	+
00021108 117c0007001e	move.b	#7,anim_frame_duration(a0)
0002110e 5228001a	addq.b	#1,mapping_frame(a0)
00021112 0c280005001a	cmpi.b	#5,mapping_frame(a0)
00021118 67000398	beq.w	JmpTo18_DeleteObject
0002115c 7000	moveq	#0,d0
0002115e 10280024	move.b	routine(a0),d0
00021162 323b000c	move.w	Obj84_Index(pc,d0.w),d1
00021166 4ebb1008	jsr	Obj84_Index(pc,d1.w)
0002116a 4ef90001643e	jmp	(MarkObjGone3).l
00021176 54280024	addq.b	#2,routine(a0)
0002117a 217c0001ffb80004	move.l	#Obj03_MapUnc_1FFB8,mappings(a0)
00021182 317c06bc0002	move.w	#make_art_tile(ArtTile_ArtNem_Ring,0,0),art_tile(a0)
0002118c 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00021192 117c00100019	move.b	#$10,width_pixels(a0)
00021198 117c00050018	move.b	#5,priority(a0)
0002119e 10280028	move.b	subtype(a0),d0
000211a2 08000002	btst	#2,d0
000211a6 6748	beq.s	Obj84_Init_CheckX
000211a8 54280024	addq.b	#2,routine(a0)
000211ac 02400007	andi.w	#7,d0
000211b0 1140001a	move.b	d0,mapping_frame(a0)
000211b4 02400003	andi.w	#3,d0
000211b8 d040	add.w	d0,d0
000211ba 317b002c0032	move.w	word_211E8(pc,d0.w),objoff_32(a0)
000211c0 3228000c	move.w	y_pos(a0),d1
000211c4 43f8b000	lea	(MainCharacter).w,a1
000211c8 b269000c	cmp.w	y_pos(a1),d1
000211cc 6406	bhs.s	+
000211ce 117c00010034	move.b	#1,objoff_34(a0)
000211d4 43f8b040	lea	(Sidekick).w,a1
000211d8 b269000c	cmp.w	y_pos(a1),d1
000211dc 6406	bhs.s	+
000211de 117c00010035	move.b	#1,objoff_35(a0)
000211e4 60000110	bra.w	Obj84_MainY
000211f0 02400003	andi.w	#3,d0
000211f4 1140001a	move.b	d0,mapping_frame(a0)
000211f8 d040	add.w	d0,d0
000211fa 317b00ec0032	move.w	word_211E8(pc,d0.w),objoff_32(a0)
00021200 32280008	move.w	x_pos(a0),d1
00021204 43f8b000	lea	(MainCharacter).w,a1
00021208 b2690008	cmp.w	x_pos(a1),d1
0002120c 6406	bhs.s	+
0002120e 117c00010034	move.b	#1,objoff_34(a0)
00021214 43f8b040	lea	(Sidekick).w,a1
00021218 b2690008	cmp.w	x_pos(a1),d1
0002121c 6406	bhs.s	Obj84_MainX
0002121e 117c00010035	move.b	#1,objoff_35(a0)
00021224 4a78fe08	tst.w	(Debug_placement_mode).w
00021228 665a	bne.s	return_21284
0002122a 32280008	move.w	x_pos(a0),d1
0002122e 45e80034	lea	objoff_34(a0),a2
00021232 43f8b000	lea	(MainCharacter).w,a1
00021236 610c	bsr.s	+
00021238 43f8b040	lea	(Sidekick).w,a1
0002123c 0c780004f708	cmpi.w	#4,(Tails_CPU_routine).w
00021242 6740	beq.s	return_21284
00021246 663e	bne.s	Obj84_MainX_Alt
00021248 b2690008	cmp.w	x_pos(a1),d1
0002124c 6236	bhi.s	return_21284
0002124e 157c0001ffff	move.b	#1,-1(a2)
00021254 3428000c	move.w	y_pos(a0),d2
00021258 3602	move.w	d2,d3
0002125a 38280032	move.w	objoff_32(a0),d4
0002125e 9444	sub.w	d4,d2
00021260 d644	add.w	d4,d3
00021262 3829000c	move.w	y_pos(a1),d4
00021266 b842	cmp.w	d2,d4
00021268 651a	blo.s	return_21284
0002126a b843	cmp.w	d3,d4
0002126c 6416	bhs.s	return_21284
0002126e 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00021274 6608	bne.s	+
00021276 137c00010039	move.b	#1,pinball_mode(a1)
0002127c 6046	bra.s	loc_212C4
00021284 4e75	rts	
00021286 b2690008	cmp.w	x_pos(a1),d1
0002128a 63f8	bls.s	return_21284
0002128c 157c0000ffff	move.b	#0,-1(a2)
00021292 3428000c	move.w	y_pos(a0),d2
00021296 3602	move.w	d2,d3
00021298 38280032	move.w	objoff_32(a0),d4
0002129c 9444	sub.w	d4,d2
0002129e d644	add.w	d4,d3
000212a0 3829000c	move.w	y_pos(a1),d4
000212a4 b842	cmp.w	d2,d4
000212a6 65dc	blo.s	return_21284
000212a8 b843	cmp.w	d3,d4
000212aa 64d8	bhs.s	return_21284
000212ac 082800000001	btst	#render_flags.x_flip,render_flags(a0)
000212b2 6708	beq.s	+
000212b4 137c00010039	move.b	#1,pinball_mode(a1)
000212ba 6008	bra.s	loc_212C4
000212c2 4e75	rts	
000212c4 082900020022	btst	#status.player.rolling,status(a1)
000212ca 6702	beq.s	+
000212cc 4e75	rts	
000212d4 137c000e0016	move.b	#$E,y_radius(a1)
000212da 137c00070017	move.b	#7,x_radius(a1)
000212e0 137c0002001c	move.b	#AniIDSonAni_Roll,anim(a1)
000212e6 5a69000c	addq.w	#5,y_pos(a1)
000212ea 303c00be	move.w	#SndID_Roll,d0
000212ee 4eb900001370	jsr	(PlaySound).l
000212f4 4e75	rts	
000212f6 4a78fe08	tst.w	(Debug_placement_mode).w
000212fa 6654	bne.s	return_21350
000212fc 3228000c	move.w	y_pos(a0),d1
00021300 45e80034	lea	objoff_34(a0),a2
00021304 43f8b000	lea	(MainCharacter).w,a1
00021308 6104	bsr.s	+
0002130a 43f8b040	lea	(Sidekick).w,a1
0002130e 4a1a	tst.b	(a2)+
00021310 6640	bne.s	Obj84_MainY_Alt
00021312 b269000c	cmp.w	y_pos(a1),d1
00021316 6238	bhi.s	return_21350
00021318 157c0001ffff	move.b	#1,-1(a2)
0002131e 34280008	move.w	x_pos(a0),d2
00021322 3602	move.w	d2,d3
00021324 38280032	move.w	objoff_32(a0),d4
00021328 9444	sub.w	d4,d2
0002132a d644	add.w	d4,d3
0002132c 38290008	move.w	x_pos(a1),d4
00021330 b842	cmp.w	d2,d4
00021332 651c	blo.s	return_21350
00021334 b843	cmp.w	d3,d4
00021336 6418	bhs.s	return_21350
00021338 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0002133e 660a	bne.s	+
00021340 137c00010039	move.b	#1,pinball_mode(a1)
00021346 6000ff7c	bra.w	loc_212C4
00021350 4e75	rts	
00021352 b269000c	cmp.w	y_pos(a1),d1
00021356 63f8	bls.s	return_21350
00021358 157c0000ffff	move.b	#0,-1(a2)
0002135e 34280008	move.w	x_pos(a0),d2
00021362 3602	move.w	d2,d3
00021364 38280032	move.w	objoff_32(a0),d4
00021368 9444	sub.w	d4,d2
0002136a d644	add.w	d4,d3
0002136c 38290008	move.w	x_pos(a1),d4
00021370 b842	cmp.w	d2,d4
00021372 65dc	blo.s	return_21350
00021374 b843	cmp.w	d3,d4
00021376 64d8	bhs.s	return_21350
00021378 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0002137e 670a	beq.s	+
00021380 137c00010039	move.b	#1,pinball_mode(a1)
00021386 6000ff3c	bra.w	loc_212C4
00021390 4e75	rts	
00021392 7000	moveq	#0,d0
00021394 10280024	move.b	routine(a0),d0
00021398 323b000c	move.w	Obj8B_Index(pc,d0.w),d1
0002139c 4ebb1008	jsr	Obj8B_Index(pc,d1.w)
000213a0 4ef90001643e	jmp	(MarkObjGone3).l
000213b2 54280024	addq.b	#2,routine(a0)
000213b6 217c0001ffb80004	move.l	#Obj03_MapUnc_1FFB8,mappings(a0)
000213be 317c06bc0002	move.w	#make_art_tile(ArtTile_ArtNem_Ring,0,0),art_tile(a0)
000213c8 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000213ce 117c00100019	move.b	#$10,width_pixels(a0)
000213d4 117c00050018	move.b	#5,priority(a0)
000213da 10280028	move.b	subtype(a0),d0
000213de 02400003	andi.w	#3,d0
000213e2 1140001a	move.b	d0,mapping_frame(a0)
000213e6 d040	add.w	d0,d0
000213e8 317b00c00032	move.w	word_213AA(pc,d0.w),objoff_32(a0)
000213ee 32280008	move.w	x_pos(a0),d1
000213f2 43f8b000	lea	(MainCharacter).w,a1
000213f6 b2690008	cmp.w	x_pos(a1),d1
000213fa 6406	bhs.s	loc_21402
000213fc 117c00010034	move.b	#1,objoff_34(a0)
00021402 43f8b040	lea	(Sidekick).w,a1
00021406 b2690008	cmp.w	x_pos(a1),d1
0002140a 6406	bhs.s	Obj8B_Main
0002140c 117c00010035	move.b	#1,objoff_35(a0)
00021412 4a78fe08	tst.w	(Debug_placement_mode).w
00021416 6652	bne.s	return_2146A
00021418 32280008	move.w	x_pos(a0),d1
0002141c 45e80034	lea	objoff_34(a0),a2
00021420 43f8b000	lea	(MainCharacter).w,a1
00021424 6104	bsr.s	loc_2142A
00021426 43f8b040	lea	(Sidekick).w,a1
0002142a 4a1a	tst.b	(a2)+
0002142c 663e	bne.s	loc_2146C
0002142e b2690008	cmp.w	x_pos(a1),d1
00021432 6236	bhi.s	return_2146A
00021434 157c0001ffff	move.b	#1,-1(a2)
0002143a 3428000c	move.w	y_pos(a0),d2
0002143e 3602	move.w	d2,d3
00021440 38280032	move.w	objoff_32(a0),d4
00021444 9444	sub.w	d4,d2
00021446 d644	add.w	d4,d3
00021448 3829000c	move.w	y_pos(a1),d4
0002144c b842	cmp.w	d2,d4
0002144e 651a	blo.s	return_2146A
00021450 b843	cmp.w	d3,d4
00021452 6416	bhs.s	return_2146A
00021454 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0002145a 6608	bne.s	+
0002145c 11fc0001f72e	move.b	#1,(WFZ_SCZ_Fire_Toggle).w
00021462 4e75	rts	
0002146a 4e75	rts	
0002146c b2690008	cmp.w	x_pos(a1),d1
00021470 63f8	bls.s	return_2146A
00021472 157c0000ffff	move.b	#0,-1(a2)
00021478 3428000c	move.w	y_pos(a0),d2
0002147c 3602	move.w	d2,d3
0002147e 38280032	move.w	objoff_32(a0),d4
00021482 9444	sub.w	d4,d2
00021484 d644	add.w	d4,d3
00021486 3829000c	move.w	y_pos(a1),d4
0002148a b842	cmp.w	d2,d4
0002148c 65dc	blo.s	return_2146A
0002148e b843	cmp.w	d3,d4
00021490 64d8	bhs.s	return_2146A
00021492 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00021498 6708	beq.s	+
0002149a 11fc0001f72e	move.b	#1,(WFZ_SCZ_Fire_Toggle).w
000214a0 4e75	rts	
000214a8 4e75	rts	
000214aa 4e71	nop	
000214ac 4ef9000164f4	jmp	(extractJmpToName("JmpTo10_DisplaySprite")).l
000214b2 4ef9000164e6	jmp	(extractJmpToName("JmpTo18_DeleteObject")).l
000214b8 4ef900017fda	jmp	(extractJmpToName("JmpTo2_AllocateObject")).l
000214be 4ef900016d6e	jmp	(extractJmpToName("JmpTo12_Adjust2PArtPointer")).l
000214c4 7000	moveq	#0,d0
000214c6 10280024	move.b	routine(a0),d0
000214ca 323b0028	move.w	Obj06_Index(pc,d0.w),d1
000214ce 4ebb1024	jsr	Obj06_Index(pc,d1.w)
000214d2 4a78ffd8	tst.w	(Two_player_mode).w
000214d6 6702	beq.s	Obj06_ChkDel
000214d8 4e75	rts	
000214da 30280008	move.w	x_pos(a0),d0
000214de 0240ff80	andi.w	#$FF80,d0
000214e2 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
000214e6 0c400280	cmpi.w	#$280,d0
000214ea 6202	bhi.s	JmpTo19_DeleteObject
000214ec 4e75	rts	
000214ee 4ef9000164e6	jmp	(DeleteObject).l
000214fa 54280024	addq.b	#2,routine(a0)
000214fe 117c00d00019	move.b	#$D0,width_pixels(a0)
00021504 4a280028	tst.b	subtype(a0)
00021508 6a08	bpl.s	Obj06_Spiral
0002150a 54280024	addq.b	#2,routine(a0)
0002150e 600002f8	bra.w	Obj06_Cylinder
00021512 43f8b000	lea	(MainCharacter).w,a1
00021516 7c03	moveq	#p1_standing_bit,d6
00021518 6106	bsr.s	+
0002151a 43f8b040	lea	(Sidekick).w,a1
0002151e 5206	addq.b	#1,d6
00021520 0d280022	btst	d6,status(a0)
00021524 6600009a	bne.w	loc_215C0
00021528 082900010022	btst	#status.player.in_air,status(a1)
0002152e 6600008e	bne.w	return_215BE
00021532 082900030022	btst	#status.player.on_object,status(a1)
00021538 6646	bne.s	loc_21580
0002153a 30290008	move.w	x_pos(a1),d0
0002153e 90680008	sub.w	x_pos(a0),d0
00021542 4a690010	tst.w	x_vel(a1)
00021546 6b0e	bmi.s	loc_21556
00021548 0c40ff40	cmpi.w	#-$C0,d0
0002154c 6e70	bgt.s	return_215BE
0002154e 0c40ff30	cmpi.w	#-$D0,d0
00021552 6d6a	blt.s	return_215BE
00021554 600c	bra.s	loc_21562
00021556 0c4000c0	cmpi.w	#$C0,d0
0002155a 6d62	blt.s	return_215BE
0002155c 0c4000d0	cmpi.w	#$D0,d0
00021560 6e5c	bgt.s	return_215BE
00021562 3229000c	move.w	y_pos(a1),d1
00021566 9268000c	sub.w	y_pos(a0),d1
0002156a 04410010	subi.w	#$10,d1
0002156e 0c410030	cmpi.w	#$30,d1
00021572 644a	bhs.s	return_215BE
00021574 4a29002a	tst.b	obj_control(a1)
00021578 6644	bne.s	return_215BE
0002157a 61008898	bsr.w	RideObject_SetRide
0002157e 4e75	rts	
00021580 30290008	move.w	x_pos(a1),d0
00021584 90680008	sub.w	x_pos(a0),d0
00021588 4a690010	tst.w	x_vel(a1)
0002158c 6b0e	bmi.s	loc_2159C
0002158e 0c40ff50	cmpi.w	#-$B0,d0
00021592 6e2a	bgt.s	return_215BE
00021594 0c40ff40	cmpi.w	#-$C0,d0
00021598 6d24	blt.s	return_215BE
0002159a 600c	bra.s	loc_215A8
0002159c 0c4000b0	cmpi.w	#$B0,d0
000215a0 6d1c	blt.s	return_215BE
000215a2 0c4000c0	cmpi.w	#$C0,d0
000215a6 6e16	bgt.s	return_215BE
000215a8 3229000c	move.w	y_pos(a1),d1
000215ac 9268000c	sub.w	y_pos(a0),d1
000215b0 04410010	subi.w	#$10,d1
000215b4 0c410030	cmpi.w	#$30,d1
000215b8 6404	bhs.s	return_215BE
000215ba 61008858	bsr.w	RideObject_SetRide
000215be 4e75	rts	
000215c0 30290014	move.w	inertia(a1),d0
000215c4 6a02	bpl.s	.skip
000215c6 4440	neg.w	d0
000215c8 0c400600	cmpi.w	#$600,d0
000215cc 651c	blo.s	Obj06_Spiral_CharacterFallsOff
000215ce 082900010022	btst	#status.player.in_air,status(a1)
000215d4 6614	bne.s	Obj06_Spiral_CharacterFallsOff
000215d6 30290008	move.w	x_pos(a1),d0
000215da 90680008	sub.w	x_pos(a0),d0
000215de 064000d0	addi.w	#$D0,d0
000215e2 6b06	bmi.s	Obj06_Spiral_CharacterFallsOff
000215e4 0c4001a0	cmpi.w	#$1A0,d0
000215e8 6518	blo.s	Obj06_Spiral_MoveCharacter
000215ea 08a900030022	bclr	#status.player.on_object,status(a1)
000215f0 0da80022	bclr	d6,status(a0)
000215f4 137c0000002c	move.b	#0,flips_remaining(a1)
000215fa 137c0004002d	move.b	#4,flip_speed(a1)
00021600 4e75	rts	
00021602 082900030022	btst	#status.player.on_object,status(a1)
00021608 67b4	beq.s	return_215BE
0002160a 123b005c	move.b	Obj06_CosineTable(pc,d0.w),d1
0002160e 4881	ext.w	d1
00021610 3428000c	move.w	y_pos(a0),d2
00021614 d441	add.w	d1,d2
00021616 7200	moveq	#0,d1
00021618 12290016	move.b	y_radius(a1),d1
0002161c 04410013	subi.w	#$13,d1
00021620 9441	sub.w	d1,d2
00021622 3342000c	move.w	d2,y_pos(a1)
00021626 e648	lsr.w	#3,d0
00021628 0240003f	andi.w	#$3F,d0
0002162c 137b00060027	move.b	Obj06_FlipAngleTable(pc,d0.w),flip_angle(a1)
00021632 4e75	rts	
00021808 43f8b000	lea	(MainCharacter).w,a1
0002180c 45f8f7b2	lea	(MTZCylinder_Angle_Sonic).w,a2
00021810 7c03	moveq	#p1_standing_bit,d6
00021812 610a	bsr.s	+
00021814 43f8b040	lea	(Sidekick).w,a1
00021818 45f8f7b3	lea	(MTZCylinder_Angle_Tails).w,a2
0002181c 5206	addq.b	#p2_standing_bit-p1_standing_bit,d6
0002181e 0d280022	btst	d6,status(a0)
00021822 66000068	bne.w	loc_2188C
00021826 30290008	move.w	x_pos(a1),d0
0002182a 90680008	sub.w	x_pos(a0),d0
0002182e 0c40ff40	cmpi.w	#-$C0,d0
00021832 6d56	blt.s	return_2188A
00021834 0c4000c0	cmpi.w	#$C0,d0
00021838 6c50	bge.s	return_2188A
0002183a 3028000c	move.w	y_pos(a0),d0
0002183e 0640003c	addi.w	#60,d0
00021842 3429000c	move.w	y_pos(a1),d2
00021846 12290016	move.b	y_radius(a1),d1
0002184a 4881	ext.w	d1
0002184c d242	add.w	d2,d1
0002184e 5841	addq.w	#4,d1
00021850 9041	sub.w	d1,d0
00021852 6236	bhi.s	return_2188A
00021854 0c40fff0	cmpi.w	#-$10,d0
00021858 6530	blo.s	return_2188A
0002185a 0c2900060024	cmpi.b	#6,routine(a1)
00021860 6428	bhs.s	return_2188A
00021862 d440	add.w	d0,d2
00021864 5642	addq.w	#3,d2
00021866 3342000c	move.w	d2,y_pos(a1)
0002186a 137c00010029	move.b	#1,flip_turned(a1)
00021870 610085a2	bsr.w	RideObject_SetRide
00021874 337c0001001c	move.w	#(AniIDSonAni_Walk<<8)|(AniIDSonAni_Run<<0),anim(a1)
0002187a 14bc0000	move.b	#0,(a2)
0002187e 4a690014	tst.w	inertia(a1)
00021882 6606	bne.s	return_2188A
00021884 337c00010014	move.w	#1,inertia(a1)
0002188a 4e75	rts	
0002188c 082900010022	btst	#status.player.in_air,status(a1)
00021892 6632	bne.s	loc_218C6
00021894 30290008	move.w	x_pos(a1),d0
00021898 90680008	sub.w	x_pos(a0),d0
0002189c 064000c0	addi.w	#$C0,d0
000218a0 6b06	bmi.s	loc_218A8
000218a2 0c400180	cmpi.w	#$180,d0
000218a6 6538	blo.s	loc_218E0
000218a8 08a900030022	bclr	#status.player.on_object,status(a1)
000218ae 0da80022	bclr	d6,status(a0)
000218b2 137c0000002c	move.b	#0,flips_remaining(a1)
000218b8 137c0004002d	move.b	#4,flip_speed(a1)
000218be 08e900010022	bset	#status.player.in_air,status(a1)
000218c4 4e75	rts	
000218c6 1012	move.b	(a2),d0
000218c8 06000020	addi.b	#$20,d0
000218cc 0c000040	cmpi.b	#$40,d0
000218d0 6406	bhs.s	+
000218d2 e0e90012	asr	y_vel(a1)
000218d6 60d0	bra.s	loc_218A8
000218de 60c8	bra.s	loc_218A8
000218e0 082900030022	btst	#status.player.on_object,status(a1)
000218e6 67a2	beq.s	return_2188A
000218e8 1012	move.b	(a2),d0
000218ee c3fc2800	muls.w	#$2800,d1
000218f2 4841	swap	d1
000218f4 3428000c	move.w	y_pos(a0),d2
000218f8 d441	add.w	d1,d2
000218fa 7200	moveq	#0,d1
000218fc 12290016	move.b	y_radius(a1),d1
00021900 04410013	subi.w	#$13,d1
00021904 9441	sub.w	d1,d2
00021906 3342000c	move.w	d2,y_pos(a1)
0002190a 1012	move.b	(a2),d0
0002190c 13400027	move.b	d0,flip_angle(a1)
00021910 5812	addq.b	#4,(a2)
00021912 4a690014	tst.w	inertia(a1)
00021916 6606	bne.s	return_2191E
00021918 337c00010014	move.w	#1,inertia(a1)
0002191e 4e75	rts	
00021920 4ef9000033b6	jmp	(extractJmpToName("JmpTo6_CalcSine")).l
00021928 7000	moveq	#0,d0
0002192a 10280024	move.b	routine(a0),d0
0002192e 323b000e	move.w	Obj14_Index(pc,d0.w),d1
00021932 4ebb100a	jsr	Obj14_Index(pc,d1.w)
00021936 30280030	move.w	objoff_30(a0),d0
0002194a 54280024	addq.b	#2,routine(a0)
0002194e 217c00021cf00004	move.l	#Obj14_MapUnc_21CF0,mappings(a0)
00021956 317c03c60002	move.w	#make_art_tile(ArtTile_ArtNem_HtzSeeSaw,0,0),art_tile(a0)
00021960 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00021966 117c00040018	move.b	#4,priority(a0)
0002196c 117c00300019	move.b	#$30,width_pixels(a0)
00021972 316800080030	move.w	x_pos(a0),objoff_30(a0)
00021978 4a280028	tst.b	subtype(a0)
0002197c 6626	bne.s	loc_219A4
00021982 6620	bne.s	loc_219A4
0002198a 5c290024	addq.b	#6,routine(a1)
0002198e 336800080008	move.w	x_pos(a0),x_pos(a1)
00021994 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002199a 136800220022	move.b	status(a0),status(a1)
000219a0 2348003c	move.l	a0,objoff_3C(a1)
000219a4 082800000022	btst	#status.npc.x_flip,status(a0)
000219aa 6706	beq.s	loc_219B2
000219ac 117c0002001a	move.b	#2,mapping_frame(a0)
000219b2 1168001a003a	move.b	mapping_frame(a0),objoff_3A(a0)
000219b8 1228003a	move.b	objoff_3A(a0),d1
000219bc 082800030022	btst	#p1_standing_bit,status(a0)
000219c2 674e	beq.s	loc_21A12
000219c4 7202	moveq	#2,d1
000219c6 43f8b000	lea	(MainCharacter).w,a1
000219ca 30280008	move.w	x_pos(a0),d0
000219ce 90690008	sub.w	x_pos(a1),d0
000219d2 6404	bcc.s	+
000219d4 4440	neg.w	d0
000219d6 7200	moveq	#0,d1
000219d8 0c400008	cmpi.w	#8,d0
000219dc 6402	bhs.s	+
000219de 7201	moveq	#1,d1
000219e0 082800040022	btst	#p2_standing_bit,status(a0)
000219e6 6762	beq.s	Obj14_UpdateMappingAndCollision
000219e8 7402	moveq	#2,d2
000219ea 43f8b040	lea	(Sidekick).w,a1
000219ee 30280008	move.w	x_pos(a0),d0
000219f2 90690008	sub.w	x_pos(a1),d0
000219f6 6404	bcc.s	+
000219f8 4440	neg.w	d0
000219fa 7400	moveq	#0,d2
000219fc 0c400008	cmpi.w	#8,d0
00021a00 6402	bhs.s	+
00021a02 7401	moveq	#1,d2
00021a04 d242	add.w	d2,d1
00021a06 0c410003	cmpi.w	#3,d1
00021a0a 6602	bne.s	+
00021a0c 5241	addq.w	#1,d1
00021a0e e249	lsr.w	#1,d1
00021a10 6038	bra.s	Obj14_UpdateMappingAndCollision
00021a12 082800040022	btst	#p2_standing_bit,status(a0)
00021a18 671e	beq.s	loc_21A38
00021a1a 7202	moveq	#2,d1
00021a1c 43f8b040	lea	(Sidekick).w,a1
00021a20 30280008	move.w	x_pos(a0),d0
00021a24 90690008	sub.w	x_pos(a1),d0
00021a28 6404	bcc.s	+
00021a2a 4440	neg.w	d0
00021a2c 7200	moveq	#0,d1
00021a2e 0c400008	cmpi.w	#8,d0
00021a32 6416	bhs.s	Obj14_UpdateMappingAndCollision
00021a34 7201	moveq	#1,d1
00021a36 6012	bra.s	Obj14_UpdateMappingAndCollision
00021a38 3038b012	move.w	(MainCharacter+y_vel).w,d0
00021a3c 3438b052	move.w	(Sidekick+y_vel).w,d2
00021a40 b440	cmp.w	d0,d2
00021a42 6d02	blt.s	+
00021a44 3002	move.w	d2,d0
00021a46 31400038	move.w	d0,objoff_38(a0)
00021a4a 6100002a	bsr.w	Obj14_SetMapping
00021a4e 45f900021c8e	lea	(byte_21C8E).l,a2
00021a54 08280000001a	btst	#0,mapping_frame(a0)
00021a5a 6706	beq.s	+
00021a5c 45f900021cbf	lea	(byte_21CBF).l,a2
00021a62 3f280008	move.w	x_pos(a0),-(sp)
00021a66 7200	moveq	#0,d1
00021a68 12280019	move.b	width_pixels(a0),d1
00021a6c 7608	moveq	#8,d3
00021a6e 381f	move.w	(sp)+,d4
00021a70 60008218	bra.w	SlopedPlatform
00021a74 4e75	rts	
00021a76 1028001a	move.b	mapping_frame(a0),d0
00021a7a b001	cmp.b	d1,d0
00021a7c 6722	beq.s	return_21AA0
00021a7e 6402	bhs.s	+
00021a80 5400	addq.b	#2,d0
00021a82 5300	subq.b	#1,d0
00021a84 1140001a	move.b	d0,mapping_frame(a0)
00021a88 1141003a	move.b	d1,objoff_3A(a0)
00021a8c 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
00021a92 08280001001a	btst	#1,mapping_frame(a0)
00021a98 6706	beq.s	return_21AA0
00021a9a 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00021aa0 4e75	rts	
00021aa2 54280024	addq.b	#2,routine(a0)
00021aa6 217c00021d7c0004	move.l	#Obj14_MapUnc_21D7C,mappings(a0)
00021aae 317c03de0002	move.w	#make_art_tile(ArtTile_ArtNem_Sol,0,0),art_tile(a0)
00021ab8 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00021abe 117c00040018	move.b	#4,priority(a0)
00021ac4 117c008b0020	move.b	#$8B,collision_flags(a0)
00021aca 117c000c0019	move.b	#$C,width_pixels(a0)
00021ad0 316800080030	move.w	x_pos(a0),objoff_30(a0)
00021ad6 066800280008	addi.w	#$28,x_pos(a0)
00021adc 06680010000c	addi.w	#$10,y_pos(a0)
00021ae2 3168000c0034	move.w	y_pos(a0),objoff_34(a0)
00021ae8 082800000022	btst	#status.npc.x_flip,status(a0)
00021aee 670c	beq.s	Obj14_Ball_Main
00021af0 046800500008	subi.w	#$50,x_pos(a0)
00021af6 117c0002003a	move.b	#2,objoff_3A(a0)
00021afc 61000168	bsr.w	Obj14_Animate
00021b00 2268003c	movea.l	objoff_3C(a0),a1
00021b04 7000	moveq	#0,d0
00021b06 1028003a	move.b	objoff_3A(a0),d0
00021b0a 9029003a	sub.b	objoff_3A(a1),d0
00021b0e 6746	beq.s	Obj14_SetBallToRestOnSeeSaw
00021b10 6402	bcc.s	+
00021b12 4400	neg.b	d0
00021b14 323cf7e8	move.w	#-$818,d1
00021b18 343cfeec	move.w	#-$114,d2
00021b1c 0c000001	cmpi.b	#1,d0
00021b20 6718	beq.s	+
00021b22 323cf510	move.w	#-$AF0,d1
00021b26 343cff34	move.w	#-$CC,d2
00021b2a 0c690a000038	cmpi.w	#$A00,objoff_38(a1)
00021b30 6d08	blt.s	+
00021b32 323cf200	move.w	#-$E00,d1
00021b36 343cff60	move.w	#-$A0,d2
00021b3a 31410012	move.w	d1,y_vel(a0)
00021b3e 31420010	move.w	d2,x_vel(a0)
00021b42 30280008	move.w	x_pos(a0),d0
00021b46 90680030	sub.w	objoff_30(a0),d0
00021b4a 6404	bcc.s	+
00021b4c 44680010	neg.w	x_vel(a0)
00021b50 54280024	addq.b	#2,routine(a0)
00021b54 603e	bra.s	Obj14_Ball_Fly
00021b56 45f900021c5c	lea	(Obj14_YOffsets).l,a2
00021b5c 7000	moveq	#0,d0
00021b5e 1029001a	move.b	mapping_frame(a1),d0
00021b62 343c0028	move.w	#$28,d2
00021b66 32280008	move.w	x_pos(a0),d1
00021b6a 92680030	sub.w	objoff_30(a0),d1
00021b6e 6404	bcc.s	+
00021b70 4442	neg.w	d2
00021b72 5440	addq.w	#2,d0
00021b74 d040	add.w	d0,d0
00021b76 32280034	move.w	objoff_34(a0),d1
00021b7a d2720000	add.w	(a2,d0.w),d1
00021b7e 3141000c	move.w	d1,y_pos(a0)
00021b82 d4680030	add.w	objoff_30(a0),d2
00021b86 31420008	move.w	d2,x_pos(a0)
00021b8a 4268000e	clr.w	y_sub(a0)
00021b8e 4268000a	clr.w	x_sub(a0)
00021b92 4e75	rts	
00021b94 610000d0	bsr.w	Obj14_Animate
00021b98 4a680012	tst.w	y_vel(a0)
00021b9c 6a18	bpl.s	loc_21BB6
00021ba2 30280034	move.w	objoff_34(a0),d0
00021ba6 0440002f	subi.w	#$2F,d0
00021baa b068000c	cmp.w	y_pos(a0),d0
00021bae 6e04	bgt.s	return_21BB4
00021bb4 4e75	rts	
00021bba 2268003c	movea.l	objoff_3C(a0),a1
00021bbe 45f900021c5c	lea	(Obj14_YOffsets).l,a2
00021bc4 7000	moveq	#0,d0
00021bc6 1029001a	move.b	mapping_frame(a1),d0
00021bca 32280008	move.w	x_pos(a0),d1
00021bce 92680030	sub.w	objoff_30(a0),d1
00021bd2 6402	bcc.s	+
00021bd4 5440	addq.w	#2,d0
00021bd6 d040	add.w	d0,d0
00021bd8 32280034	move.w	objoff_34(a0),d1
00021bdc d2720000	add.w	(a2,d0.w),d1
00021be0 b268000c	cmp.w	y_pos(a0),d1
00021be4 6e44	bgt.s	return_21C2A
00021be6 2268003c	movea.l	objoff_3C(a0),a1
00021bea 7202	moveq	#2,d1
00021bec 4a680010	tst.w	x_vel(a0)
00021bf0 6b02	bmi.s	+
00021bf2 7200	moveq	#0,d1
00021bf4 1341003a	move.b	d1,objoff_3A(a1)
00021bf8 1141003a	move.b	d1,objoff_3A(a0)
00021bfc b229001a	cmp.b	mapping_frame(a1),d1
00021c00 671c	beq.s	loc_21C1E
00021c02 45f8b000	lea	(MainCharacter).w,a2
00021c06 08a900030022	bclr	#p1_standing_bit,status(a1)
00021c0c 6702	beq.s	+
00021c0e 611c	bsr.s	Obj14_LaunchCharacter
00021c10 45f8b040	lea	(Sidekick).w,a2
00021c14 08a900040022	bclr	#p2_standing_bit,status(a1)
00021c1a 6702	beq.s	loc_21C1E
00021c1c 610e	bsr.s	Obj14_LaunchCharacter
00021c1e 42680010	clr.w	x_vel(a0)
00021c22 42680012	clr.w	y_vel(a0)
00021c26 55280024	subq.b	#2,routine(a0)
00021c2a 4e75	rts	
00021c2c 356800120012	move.w	y_vel(a0),y_vel(a2)
00021c32 446a0012	neg.w	y_vel(a2)
00021c36 08ea00010022	bset	#status.player.in_air,status(a2)
00021c3c 08aa00030022	bclr	#status.player.on_object,status(a2)
00021c42 422a003c	clr.b	jumping(a2)
00021c46 157c0010001c	move.b	#AniIDSonAni_Spring,anim(a2)
00021c4c 157c00020024	move.b	#2,routine(a2)
00021c52 303c00cc	move.w	#SndID_Spring,d0
00021c56 4ef900001370	jmp	(PlaySound).l
00021c66 1038fe05	move.b	(Level_frame_counter+1).w,d0
00021c6a 02000003	andi.b	#3,d0
00021c6e 6606	bne.s	Obj14_SetSolToFaceMainCharacter
00021c70 086800050002	bchg	#palette_bit_0,art_tile(a0)
00021c76 022800fe0001	andi.b	#~(1<<render_flags.x_flip),render_flags(a0)
00021c7c 3038b008	move.w	(MainCharacter+x_pos).w,d0
00021c80 90680008	sub.w	x_pos(a0),d0
00021c84 6506	bcs.s	return_21C8C
00021c86 002800010001	ori.b	#1<<render_flags.x_flip,render_flags(a0)
00021c8c 4e75	rts	
00021d94 4ef900017ffa	jmp	(extractJmpToName("JmpTo3_AllocateObjectAfterCurrent")).l
00021d9a 4ef900016d6e	jmp	(extractJmpToName("JmpTo13_Adjust2PArtPointer")).l
00021da0 4ef900016380	jmp	(extractJmpToName("JmpTo_ObjectMoveAndFall")).l
00021da6 4ef90001640a	jmp	(extractJmpToName("JmpTo_MarkObjGone2")).l
00021dac 7000	moveq	#0,d0
00021dae 10280024	move.b	routine(a0),d0
00021db2 323b0006	move.w	Obj16_Index(pc,d0.w),d1
00021db6 4efb1002	jmp	Obj16_Index(pc,d1.w)
00021dbe 54280024	addq.b	#2,routine(a0)
00021dc2 217c00021f140004	move.l	#Obj16_MapUnc_21F14,mappings(a0)
00021dca 317c43e60002	move.w	#make_art_tile(ArtTile_ArtNem_HtzZipline,2,0),art_tile(a0)
00021dd4 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00021dda 117c00200019	move.b	#$20,width_pixels(a0)
00021de0 117c0000001a	move.b	#0,mapping_frame(a0)
00021de6 117c00010018	move.b	#1,priority(a0)
00021dec 316800080030	move.w	x_pos(a0),objoff_30(a0)
00021df2 3168000c0032	move.w	y_pos(a0),objoff_32(a0)
00021df8 117c00400016	move.b	#$40,y_radius(a0)
00021dfe 08e800040001	bset	#render_flags.explicit_height,render_flags(a0)
00021e04 7000	moveq	#0,d0
00021e06 10280028	move.b	subtype(a0),d0
00021e0a e748	lsl.w	#3,d0
00021e0c 31400034	move.w	d0,objoff_34(a0)
00021e10 3f280008	move.w	x_pos(a0),-(sp)
00021e14 61000016	bsr.w	Obj16_RunSecondaryRoutine
00021e18 7200	moveq	#0,d1
00021e1a 12280019	move.b	width_pixels(a0),d1
00021e1e 363cffd8	move.w	#-$28,d3
00021e22 381f	move.w	(sp)+,d4
00021e2c 7000	moveq	#0,d0
00021e2e 10280025	move.b	routine_secondary(a0),d0
00021e32 323b0006	move.w	Obj16_Main_States(pc,d0.w),d1
00021e36 4efb1002	jmp	Obj16_Main_States(pc,d1.w)
00021e40 10280022	move.b	status(a0),d0
00021e44 02000018	andi.b	#standing_mask,d0
00021e48 671c	beq.s	++
00021e4a 54280025	addq.b	#2,routine_secondary(a0)
00021e4e 317c02000010	move.w	#$200,x_vel(a0)
00021e54 082800000022	btst	#status.npc.x_flip,status(a0)
00021e5a 6704	beq.s	+
00021e5c 44680010	neg.w	x_vel(a0)
00021e60 317c01000012	move.w	#$100,y_vel(a0)
00021e66 4e75	rts	
00021e68 3038fe04	move.w	(Level_frame_counter).w,d0
00021e6c 0240000f	andi.w	#$F,d0
00021e70 660a	bne.s	+
00021e72 303c00e4	move.w	#SndID_HTZLiftClick,d0
00021e76 4eb900001370	jsr	(PlaySound).l
00021e80 53680034	subq.w	#1,objoff_34(a0)
00021e84 663a	bne.s	+
00021e86 54280025	addq.b	#2,routine_secondary(a0)
00021e8a 117c0002001a	move.b	#2,mapping_frame(a0)
00021e90 317c00000010	move.w	#0,x_vel(a0)
00021e96 317c00000012	move.w	#0,y_vel(a0)
00021ea0 661e	bne.s	+
00021ea8 336800080008	move.w	x_pos(a0),x_pos(a1)
00021eae 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00021eb4 136800010001	move.b	render_flags(a0),render_flags(a1)
00021eba 137c00060028	move.b	#6,subtype(a1)
00021ec6 066800380012	addi.w	#$38,y_vel(a0)
00021ecc 3038eece	move.w	(Camera_Max_Y_pos).w,d0
00021ed0 064000e0	addi.w	#screen_height,d0
00021ed4 b068000c	cmp.w	y_pos(a0),d0
00021ed8 6438	bhs.s	+++
00021eda 10280022	move.b	status(a0),d0
00021ede 02000018	andi.b	#standing_mask,d0
00021ee2 6728	beq.s	++
00021ee4 08a800030022	bclr	#p1_standing_bit,status(a0)
00021eea 670c	beq.s	+
00021eec 08b80003b022	bclr	#status.player.on_object,(MainCharacter+status).w
00021ef2 08f80001b022	bset	#status.player.in_air,(MainCharacter+status).w
00021ef8 08a800040022	bclr	#p2_standing_bit,status(a0)
00021efe 670c	beq.s	+
00021f00 08b80003b062	bclr	#status.player.on_object,(Sidekick+status).w
00021f06 08f80001b062	bset	#status.player.in_air,(Sidekick+status).w
00021f0c 317c40000008	move.w	#$4000,x_pos(a0)
00021f12 4e75	rts	
00021ff8 4ef9000163d2	jmp	(extractJmpToName("JmpTo5_MarkObjGone")).l
00021ffe 4ef900017ffa	jmp	(extractJmpToName("JmpTo4_AllocateObjectAfterCurrent")).l
00022004 4ef900016d6e	jmp	(extractJmpToName("JmpTo14_Adjust2PArtPointer")).l
0002200a 4ef900019c32	jmp	(extractJmpToName("JmpTo3_PlatformObject")).l
00022010 4ef9000163ac	jmp	(extractJmpToName("JmpTo4_ObjectMove")).l
00022018 7000	moveq	#0,d0
0002201a 10280024	move.b	routine(a0),d0
0002201e 323b0006	move.w	Obj19_Index(pc,d0.w),d1
00022022 4efb1002	jmp	Obj19_Index(pc,d1.w)
00022032 54280024	addq.b	#2,routine(a0)
00022036 217c0002222a0004	move.l	#Obj19_MapUnc_2222A,mappings(a0)
0002203e 317c63a00002	move.w	#make_art_tile(ArtTile_ArtNem_CPZElevator,3,0),art_tile(a0)
00022044 0c38000afe10	cmpi.b	#oil_ocean_zone,(Current_Zone).w
0002204a 6606	bne.s	+
0002204c 317c62f40002	move.w	#make_art_tile(ArtTile_ArtNem_OOZElevator,3,0),art_tile(a0)
00022052 0c380006fe10	cmpi.b	#wing_fortress_zone,(Current_Zone).w
00022058 6606	bne.s	+
0002205a 317ca46d0002	move.w	#make_art_tile(ArtTile_ArtNem_WfzFloatingPlatform,1,1),art_tile(a0)
00022064 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002206a 7000	moveq	#0,d0
0002206c 10280028	move.b	subtype(a0),d0
00022070 e648	lsr.w	#3,d0
00022072 0240001e	andi.w	#$1E,d0
00022076 45fb00b2	lea	Obj19_SubtypeProperties(pc,d0.w),a2
0002207a 115a0019	move.b	(a2)+,width_pixels(a0)
0002207e 115a001a	move.b	(a2)+,mapping_frame(a0)
00022082 117c00040018	move.b	#4,priority(a0)
00022088 316800080030	move.w	x_pos(a0),objoff_30(a0)
0002208e 3168000c0032	move.w	y_pos(a0),objoff_32(a0)
00022094 0228000f0028	andi.b	#$F,subtype(a0)
0002209a 0c2800030028	cmpi.b	#3,subtype(a0)
000220a0 6608	bne.s	loc_220AA
000220a2 082800000022	btst	#status.npc.x_flip,status(a0)
000220a8 6608	bne.s	loc_220B2
000220aa 0c2800070028	cmpi.b	#7,subtype(a0)
000220b0 6606	bne.s	Obj19_Main
000220b2 046800c0000c	subi.w	#$C0,y_pos(a0)
000220b8 3f280008	move.w	x_pos(a0),-(sp)
000220bc 6100002a	bsr.w	Obj19_Move
000220c0 7200	moveq	#0,d1
000220c2 12280019	move.b	width_pixels(a0),d1
000220c6 363c0011	move.w	#$11,d3
000220ca 381f	move.w	(sp)+,d4
000220d0 30280030	move.w	objoff_30(a0),d0
000220d4 0240ff80	andi.w	#$FF80,d0
000220d8 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
000220dc 0c400280	cmpi.w	#$280,d0
000220e0 620001b0	bhi.w	JmpTo20_DeleteObject
000220e8 7000	moveq	#0,d0
000220ea 10280028	move.b	subtype(a0),d0
000220ee 0240000f	andi.w	#$F,d0
000220f2 d040	add.w	d0,d0
000220f4 323b0006	move.w	Obj19_MoveTypes(pc,d0.w),d1
000220f8 4efb1002	jmp	Obj19_MoveTypes(pc,d1.w)
0002211c 1038fe68	move.b	(Oscillating_Data+8).w,d0
00022120 323c0040	move.w	#$40,d1
00022124 6008	bra.s	Obj19_MoveRoutine2_Part2
00022126 1038fe6c	move.b	(Oscillating_Data+$C).w,d0
0002212a 323c0060	move.w	#$60,d1
0002212e 082800000022	btst	#status.npc.x_flip,status(a0)
00022134 6704	beq.s	+
00022136 4440	neg.w	d0
00022138 d041	add.w	d1,d0
0002213a 32280030	move.w	objoff_30(a0),d1
0002213e 9240	sub.w	d0,d1
00022140 31410008	move.w	d1,x_pos(a0)
00022144 4e75	rts	
00022146 1038fe7c	move.b	(Oscillating_Data+$1C).w,d0
0002214a 323c0080	move.w	#$80,d1
0002214e 082800000022	btst	#status.npc.x_flip,status(a0)
00022154 6704	beq.s	+
00022156 4440	neg.w	d0
00022158 d041	add.w	d1,d0
0002215a 32280032	move.w	objoff_32(a0),d1
0002215e 9240	sub.w	d0,d1
00022160 3141000c	move.w	d1,y_pos(a0)
00022164 4e75	rts	
00022166 10280022	move.b	status(a0),d0
0002216a 02000018	andi.b	#standing_mask,d0
0002216e 6704	beq.s	+
00022170 52280028	addq.b	#1,subtype(a0)
0002217a 7208	moveq	#8,d1
0002217c 30280032	move.w	objoff_32(a0),d0
00022180 04400060	subi.w	#$60,d0
00022184 b068000c	cmp.w	y_pos(a0),d0
00022188 6402	bhs.s	+
0002218a 4441	neg.w	d1
0002218c d3680012	add.w	d1,y_vel(a0)
00022190 6604	bne.s	Obj19_MoveRoutineNull
00022192 52280028	addq.b	#1,subtype(a0)
00022196 4e75	rts	
0002219c 7208	moveq	#8,d1
0002219e 30280032	move.w	objoff_32(a0),d0
000221a2 04400060	subi.w	#$60,d0
000221a6 b068000c	cmp.w	y_pos(a0),d0
000221aa 6402	bhs.s	+
000221ac 4441	neg.w	d1
000221ae d3680012	add.w	d1,y_vel(a0)
000221b2 4e75	rts	
000221b4 1238fe98	move.b	(Oscillating_Data+$38).w,d1
000221b8 04010040	subi.b	#$40,d1
000221bc 4881	ext.w	d1
000221be 1438fe9c	move.b	(Oscillating_Data+$3C).w,d2
000221c2 04020040	subi.b	#$40,d2
000221c6 4882	ext.w	d2
000221c8 08000002	btst	#2,d0
000221cc 6704	beq.s	+
000221ce 4441	neg.w	d1
000221d0 4442	neg.w	d2
000221d2 08000001	btst	#1,d0
000221d6 6704	beq.s	+
000221d8 4441	neg.w	d1
000221da c342	exg	d1,d2
000221dc d2680030	add.w	objoff_30(a0),d1
000221e0 31410008	move.w	d1,x_pos(a0)
000221e4 d4680032	add.w	objoff_32(a0),d2
000221e8 3142000c	move.w	d2,y_pos(a0)
000221ec 4e75	rts	
000221ee 1238fe98	move.b	(Oscillating_Data+$38).w,d1
000221f2 04010040	subi.b	#$40,d1
000221f6 4881	ext.w	d1
000221f8 1438fe9c	move.b	(Oscillating_Data+$3C).w,d2
000221fc 04020040	subi.b	#$40,d2
00022200 4882	ext.w	d2
00022202 08000002	btst	#2,d0
00022206 6704	beq.s	+
00022208 4441	neg.w	d1
0002220a 4442	neg.w	d2
0002220c 08000001	btst	#1,d0
00022210 6704	beq.s	+
00022212 4441	neg.w	d1
00022214 c342	exg	d1,d2
00022216 4441	neg.w	d1
00022218 d2680030	add.w	objoff_30(a0),d1
0002221c 31410008	move.w	d1,x_pos(a0)
00022220 d4680032	add.w	objoff_32(a0),d2
00022224 3142000c	move.w	d2,y_pos(a0)
00022228 4e75	rts	
0002228a 4e71	nop	
0002228c 4ef9000164f4	jmp	(extractJmpToName("JmpTo11_DisplaySprite")).l
00022292 4ef9000164e6	jmp	(extractJmpToName("JmpTo20_DeleteObject")).l
00022298 4ef900016d6e	jmp	(extractJmpToName("JmpTo15_Adjust2PArtPointer")).l
0002229e 4ef900019c32	jmp	(extractJmpToName("JmpTo4_PlatformObject")).l
000222a4 4ef9000163ac	jmp	(extractJmpToName("JmpTo5_ObjectMove")).l
000222ac 7000	moveq	#0,d0
000222ae 10280024	move.b	routine(a0),d0
000222b2 323b0006	move.w	Obj1B_Index(pc,d0.w),d1
000222b6 4efb1002	jmp	Obj1B_Index(pc,d1.w)
000222c2 54280024	addq.b	#2,routine(a0)
000222c6 217c000223e20004	move.l	#Obj1B_MapUnc_223E2,mappings(a0)
000222ce 317ce39c0002	move.w	#make_art_tile(ArtTile_ArtNem_CPZBooster,3,1),art_tile(a0)
000222d8 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000222de 117c00200019	move.b	#$20,width_pixels(a0)
000222e4 117c00010018	move.b	#1,priority(a0)
000222ea 10280028	move.b	subtype(a0),d0
000222ee 02400002	andi.w	#2,d0
000222f2 317b00ca0030	move.w	Obj1B_BoosterSpeeds(pc,d0.w),speedbooster_boostspeed(a0)
000222f8 1038fe05	move.b	(Level_frame_counter+1).w,d0
000222fc 02000002	andi.b	#2,d0
00022300 1140001a	move.b	d0,mapping_frame(a0)
00022304 30280008	move.w	x_pos(a0),d0
00022308 3200	move.w	d0,d1
0002230a 04400010	subi.w	#$10,d0
0002230e 06410010	addi.w	#$10,d1
00022312 3428000c	move.w	y_pos(a0),d2
00022316 3602	move.w	d2,d3
00022318 04420010	subi.w	#$10,d2
0002231c 06430010	addi.w	#$10,d3
00022320 43f8b000	lea	(MainCharacter).w,a1
00022324 082900010022	btst	#status.player.in_air,status(a1)
0002232a 6628	bne.s	+
0002232c 38290008	move.w	x_pos(a1),d4
00022330 b840	cmp.w	d0,d4
00022332 65000020	blo.w	+
00022336 b841	cmp.w	d1,d4
00022338 6400001a	bhs.w	+
0002233c 3829000c	move.w	y_pos(a1),d4
00022340 b842	cmp.w	d2,d4
00022342 65000010	blo.w	+
00022346 b843	cmp.w	d3,d4
00022348 6400000a	bhs.w	+
0002234c 3f00	move.w	d0,-(sp)
0002234e 61000038	bsr.w	Obj1B_GiveBoost
00022352 301f	move.w	(sp)+,d0
00022354 43f8b040	lea	(Sidekick).w,a1
00022358 082900010022	btst	#status.player.in_air,status(a1)
0002235e 6624	bne.s	+
00022360 38290008	move.w	x_pos(a1),d4
00022364 b840	cmp.w	d0,d4
00022366 6500001c	blo.w	+
0002236a b841	cmp.w	d1,d4
0002236c 64000016	bhs.w	+
00022370 3829000c	move.w	y_pos(a1),d4
00022374 b842	cmp.w	d2,d4
00022376 6500000c	blo.w	+
0002237a b843	cmp.w	d3,d4
0002237c 64000006	bhs.w	+
00022380 61000006	bsr.w	Obj1B_GiveBoost
00022388 30290010	move.w	x_vel(a1),d0
0002238c 082800000022	btst	#status.npc.x_flip,status(a0)
00022392 6702	beq.s	+
00022394 4440	neg.w	d0
00022396 0c401000	cmpi.w	#$1000,d0
0002239a 6c3c	bge.s	Obj1B_GiveBoost_Done
0002239c 336800300010	move.w	speedbooster_boostspeed(a0),x_vel(a1)
000223a2 08a900000022	bclr	#status.player.x_flip,status(a1)
000223a8 082800000022	btst	#status.npc.x_flip,status(a0)
000223ae 670a	beq.s	+
000223b0 08e900000022	bset	#status.player.x_flip,status(a1)
000223b6 44690010	neg.w	x_vel(a1)
000223ba 337c000f002e	move.w	#$F,move_lock(a1)
000223c0 336900100014	move.w	x_vel(a1),inertia(a1)
000223c6 08a800050022	bclr	#status.npc.p1_pushing,status(a0)
000223cc 08a800060022	bclr	#status.npc.p2_pushing,status(a0)
000223d2 08a900050022	bclr	#status.player.pushing,status(a1)
000223d8 303c00cc	move.w	#SndID_Spring,d0
000223dc 4ef900001370	jmp	(PlaySound).l
000223fc 4ef9000163d2	jmp	(extractJmpToName("JmpTo6_MarkObjGone")).l
00022402 4ef900016d6e	jmp	(extractJmpToName("JmpTo16_Adjust2PArtPointer")).l
00022408 7000	moveq	#0,d0
0002240a 10280024	move.b	routine(a0),d0
0002240e 323b0006	move.w	Obj1D_Index(pc,d0.w),d1
00022412 4efb1002	jmp	Obj1D_Index(pc,d1.w)
00022428 54280024	addq.b	#2,routine(a0)
0002242c 317cfb800012	move.w	#-$480,y_vel(a0)
00022432 7200	moveq	#0,d1
00022434 12280028	move.b	subtype(a0),d1
00022438 1001	move.b	d1,d0
0002243a 0201000f	andi.b	#$F,d1
0002243e 7a02	moveq	#2,d5
00022440 020000f0	andi.b	#$F0,d0
00022444 6702	beq.s	+
00022446 7a06	moveq	#6,d5
00022448 18280022	move.b	status(a0),d4
0002244c 7400	moveq	#0,d2
0002244e 2248	movea.l	a0,a1
00022450 6006	bra.s	Obj1D_InitBall
00022456 6678	bne.s	++
0002245e 13450024	move.b	d5,routine(a1)
00022462 336800080008	move.w	x_pos(a0),x_pos(a1)
00022468 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002246e 237c000225760004	move.l	#Obj1D_MapUnc_22576,mappings(a1)
00022476 337c643c0002	move.w	#make_art_tile(ArtTile_ArtNem_CPZDroplet,3,0),art_tile(a1)
00022480 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
00022486 137c00030018	move.b	#3,priority(a1)
0002248c 137c008b0020	move.b	#%10001011,collision_flags(a1)
00022492 336900080038	move.w	x_pos(a1),objoff_38(a1)
00022498 3369000c0030	move.w	y_pos(a1),objoff_30(a1)
0002249e 336800120012	move.w	y_vel(a0),y_vel(a1)
000224a4 336900120034	move.w	y_vel(a1),objoff_34(a1)
000224aa 137c00080019	move.b	#8,width_pixels(a1)
000224b0 337c0060003a	move.w	#$60,objoff_3A(a1)
000224b6 337c000b0036	move.w	#$B,objoff_36(a1)
000224bc 02040001	andi.b	#1<<status.player.x_flip,d4
000224c0 6708	beq.s	+
000224c2 44690036	neg.w	objoff_36(a1)
000224c6 4469003a	neg.w	objoff_3A(a1)
000224ca 33420032	move.w	d2,objoff_32(a1)
000224ce 5642	addq.w	#3,d2
000224d0 51c9ff80	dbf	d1,Obj1D_LoadBall
000224d4 4e75	rts	
000224d6 53680032	subq.w	#1,objoff_32(a0)
000224da 6a14	bpl.s	BranchTo_JmpTo7_MarkObjGone
000224dc 54280024	addq.b	#2,routine(a0)
000224e0 317c003b0032	move.w	#$3B,objoff_32(a0)
000224e6 303c00da	move.w	#SndID_Gloop,d0
000224ea 4eb90000137c	jsr	(PlaySoundLocal).l
000224f8 30280036	move.w	objoff_36(a0),d0
000224fc d1680010	add.w	d0,x_vel(a0)
00022500 066800180012	addi.w	#$18,y_vel(a0)
00022506 6604	bne.s	+
00022508 44680036	neg.w	objoff_36(a0)
0002250c 30280030	move.w	objoff_30(a0),d0
00022510 b068000c	cmp.w	y_pos(a0),d0
00022514 620e	bhi.s	BranchTo2_JmpTo7_MarkObjGone
00022516 316800340012	move.w	objoff_34(a0),y_vel(a0)
0002251c 42680010	clr.w	x_vel(a0)
00022520 55280024	subq.b	#2,routine(a0)
0002252c 066800180012	addi.w	#$18,y_vel(a0)
00022532 660c	bne.s	+
00022534 3028003a	move.w	objoff_3A(a0),d0
00022538 d0680038	add.w	objoff_38(a0),d0
0002253c 31400008	move.w	d0,x_pos(a0)
00022540 0c6801800012	cmpi.w	#$180,y_vel(a0)
00022546 660a	bne.s	+
00022548 303c00da	move.w	#SndID_Gloop,d0
0002254c 4eb90000137c	jsr	(PlaySoundLocal).l
00022552 30280030	move.w	objoff_30(a0),d0
00022556 b068000c	cmp.w	y_pos(a0),d0
0002255a 6216	bhi.s	BranchTo3_JmpTo7_MarkObjGone
0002255c 316800340012	move.w	objoff_34(a0),y_vel(a0)
00022562 316800380008	move.w	objoff_38(a0),x_pos(a0)
00022568 303c00da	move.w	#SndID_Gloop,d0
0002256c 4eb90000137c	jsr	(PlaySoundLocal).l
00022582 4e71	nop	
00022584 4ef9000163d2	jmp	(extractJmpToName("JmpTo7_MarkObjGone")).l
0002258a 4ef900017ffa	jmp	(extractJmpToName("JmpTo5_AllocateObjectAfterCurrent")).l
00022590 4ef900016d8a	jmp	(extractJmpToName("JmpTo3_Adjust2PArtPointer2")).l
00022596 4ef9000163ac	jmp	(extractJmpToName("JmpTo6_ObjectMove")).l
0002259c 7000	moveq	#0,d0
0002259e 10280024	move.b	routine(a0),d0
000225a2 323b0014	move.w	Obj1E_Index(pc,d0.w),d1
000225a6 4ebb1010	jsr	Obj1E_Index(pc,d1.w)
000225aa 1028002c	move.b	objoff_2C(a0),d0
000225ae d0280036	add.b	objoff_36(a0),d0
000225b2 67000a3c	beq.w	JmpTo_MarkObjGone3
000225b6 4e75	rts	
000225c2 54280024	addq.b	#2,routine(a0)
000225c6 10280028	move.b	subtype(a0),d0
000225ca d040	add.w	d0,d0
000225cc 02400006	andi.w	#6,d0
000225d0 317b00ea002a	move.w	word_225BC(pc,d0.w),objoff_2A(a0)
000225d6 43f8b000	lea	(MainCharacter).w,a1
000225da 49e8002c	lea	objoff_2C(a0),a4
000225de 6108	bsr.s	+
000225e0 43f8b040	lea	(Sidekick).w,a1
000225e4 49e80036	lea	objoff_36(a0),a4
000225e8 7000	moveq	#0,d0
000225ea 1014	move.b	(a4),d0
000225ec 303b0006	move.w	Obj1E_Modes(pc,d0.w),d0
000225f0 4efb0002	jmp	Obj1E_Modes(pc,d0.w)
000225fc 4a78fe08	tst.w	(Debug_placement_mode).w
00022600 66000116	bne.w	return_22718
00022604 3428002a	move.w	objoff_2A(a0),d2
00022608 30290008	move.w	x_pos(a1),d0
0002260c 90680008	sub.w	x_pos(a0),d0
00022610 b042	cmp.w	d2,d0
00022612 64000104	bhs.w	return_22718
00022616 3229000c	move.w	y_pos(a1),d1
0002261a 9268000c	sub.w	y_pos(a0),d1
0002261e 0c410080	cmpi.w	#$80,d1
00022622 640000f4	bhs.w	return_22718
00022626 0c290020001c	cmpi.b	#$20,anim(a1)
0002262c 670000ea	beq.w	return_22718
00022630 7600	moveq	#0,d3
00022632 0c4200a0	cmpi.w	#$A0,d2
00022636 6710	beq.s	+
00022638 7608	moveq	#8,d3
0002263a 0c420120	cmpi.w	#$120,d2
0002263e 6708	beq.s	+
00022640 7604	moveq	#4,d3
00022642 4440	neg.w	d0
00022644 06400100	addi.w	#$100,d0
00022648 0c400080	cmpi.w	#$80,d0
0002264c 6530	blo.s	loc_2267E
0002264e 7400	moveq	#0,d2
00022650 10280028	move.b	subtype(a0),d0
00022654 e448	lsr.w	#2,d0
00022656 0240000f	andi.w	#$F,d0
0002265a 143b0012	move.b	byte_2266E(pc,d0.w),d2
0002265e 0c020002	cmpi.b	#2,d2
00022662 6624	bne.s	loc_22688
00022664 1438fe24	move.b	(Timer_second).w,d2
00022668 02020001	andi.b	#1,d2
0002266c 601a	bra.s	loc_22688
0002267e 7402	moveq	#2,d2
00022680 0c410040	cmpi.w	#$40,d1
00022684 6402	bhs.s	loc_22688
00022686 7403	moveq	#3,d2
00022688 19420001	move.b	d2,1(a4)
0002268c d443	add.w	d3,d2
0002268e d442	add.w	d2,d2
00022690 0242001e	andi.w	#$1E,d2
00022694 45fa02ea	lea	off_22980(pc),a2
00022698 d4f22000	adda.w	(a2,d2.w),a2
0002269c 395a0004	move.w	(a2)+,4(a4)
000226a0 596c0004	subq.w	#4,4(a4)
000226a4 381a	move.w	(a2)+,d4
000226a6 d8680008	add.w	x_pos(a0),d4
000226aa 33440008	move.w	d4,x_pos(a1)
000226ae 3a1a	move.w	(a2)+,d5
000226b0 da68000c	add.w	y_pos(a0),d5
000226b4 3345000c	move.w	d5,y_pos(a1)
000226b8 294a0006	move.l	a2,6(a4)
000226bc 381a	move.w	(a2)+,d4
000226be d8680008	add.w	x_pos(a0),d4
000226c2 3a1a	move.w	(a2)+,d5
000226c4 da68000c	add.w	y_pos(a0),d5
000226c8 5414	addq.b	#2,(a4)
000226ca 137c0081002a	move.b	#$81,obj_control(a1)
000226d0 137c0002001c	move.b	#AniIDSonAni_Roll,anim(a1)
000226d6 337c08000014	move.w	#$800,inertia(a1)
000226dc 337c00000010	move.w	#0,x_vel(a1)
000226e2 337c00000012	move.w	#0,y_vel(a1)
000226e8 08a800050022	bclr	#status.npc.p1_pushing,status(a0)
000226ee 08a900050022	bclr	#status.player.pushing,status(a1)
000226f4 08e900010022	bset	#status.player.in_air,status(a1)
000226fa 137c0000003c	move.b	#0,jumping(a1)
00022700 08a900070002	bclr	#high_priority_bit,art_tile(a1)
00022706 343c0800	move.w	#$800,d2
0002270a 610001f6	bsr.w	loc_22902
0002270e 303c00be	move.w	#SndID_Roll,d0
00022712 4eb900001370	jsr	(PlaySound).l
00022718 4e75	rts	
0002271a 532c0002	subq.b	#1,2(a4)
0002271e 6a3e	bpl.s	Obj1E_MoveCharacter
00022720 246c0006	movea.l	6(a4),a2
00022724 381a	move.w	(a2)+,d4
00022726 d8680008	add.w	x_pos(a0),d4
0002272a 33440008	move.w	d4,x_pos(a1)
0002272e 3a1a	move.w	(a2)+,d5
00022730 da68000c	add.w	y_pos(a0),d5
00022734 3345000c	move.w	d5,y_pos(a1)
00022738 4a2c0001	tst.b	1(a4)
0002273c 6a02	bpl.s	+
0002273e 514a	subq.w	#8,a2
00022740 294a0006	move.l	a2,6(a4)
00022744 596c0004	subq.w	#4,4(a4)
00022748 673a	beq.s	loc_22784
0002274a 381a	move.w	(a2)+,d4
0002274c d8680008	add.w	x_pos(a0),d4
00022750 3a1a	move.w	(a2)+,d5
00022752 da68000c	add.w	y_pos(a0),d5
00022756 343c0800	move.w	#$800,d2
0002275a 600001a6	bra.w	loc_22902
0002275e 24290008	move.l	x_pos(a1),d2
00022762 2629000c	move.l	y_pos(a1),d3
00022766 30290010	move.w	x_vel(a1),d0
0002276a 48c0	ext.l	d0
0002276c e180	asl.l	#8,d0
0002276e d480	add.l	d0,d2
00022770 30290012	move.w	y_vel(a1),d0
00022774 48c0	ext.l	d0
00022776 e180	asl.l	#8,d0
00022778 d680	add.l	d0,d3
0002277a 23420008	move.l	d2,x_pos(a1)
0002277e 2343000c	move.l	d3,y_pos(a1)
00022782 4e75	rts	
00022784 0c2c00040001	cmpi.b	#4,1(a4)
0002278a 641a	bhs.s	loc_227A6
0002278c 10280028	move.b	subtype(a0),d0
00022790 024000fc	andi.w	#$FC,d0
00022794 d02c0001	add.b	1(a4),d0
00022798 197c00040001	move.b	#4,1(a4)
0002279e 103b001e	move.b	byte_227BE(pc,d0.w),d0
000227a2 660000ee	bne.w	loc_22892
000227a6 026907ff000c	andi.w	#$7FF,y_pos(a1)
000227ac 18bc0006	move.b	#6,(a4)
000227b0 4229002a	clr.b	obj_control(a1)
000227b4 303c00bc	move.w	#SndID_SpindashRelease,d0
000227b8 4ef900001370	jmp	(PlaySound).l
000227fe 532c0002	subq.b	#1,2(a4)
00022802 6a2e	bpl.s	Obj1E_MoveCharacter_2
00022804 246c0006	movea.l	6(a4),a2
00022808 381a	move.w	(a2)+,d4
0002280a 33440008	move.w	d4,x_pos(a1)
0002280e 3a1a	move.w	(a2)+,d5
00022810 3345000c	move.w	d5,y_pos(a1)
00022814 4a2c0001	tst.b	1(a4)
00022818 6a02	bpl.s	loc_2281C
0002281a 514a	subq.w	#8,a2
0002281c 294a0006	move.l	a2,6(a4)
00022820 596c0004	subq.w	#4,4(a4)
00022824 6732	beq.s	loc_22858
00022826 381a	move.w	(a2)+,d4
00022828 3a1a	move.w	(a2)+,d5
0002282a 343c0800	move.w	#$800,d2
0002282e 600000d2	bra.w	loc_22902
00022832 24290008	move.l	x_pos(a1),d2
00022836 2629000c	move.l	y_pos(a1),d3
0002283a 30290010	move.w	x_vel(a1),d0
0002283e 48c0	ext.l	d0
00022840 e180	asl.l	#8,d0
00022842 d480	add.l	d0,d2
00022844 30290012	move.w	y_vel(a1),d0
00022848 48c0	ext.l	d0
0002284a e180	asl.l	#8,d0
0002284c d680	add.l	d0,d3
0002284e 23420008	move.l	d2,x_pos(a1)
00022852 2343000c	move.l	d3,y_pos(a1)
00022856 4e75	rts	
00022858 026907ff000c	andi.w	#$7FF,y_pos(a1)
0002285e 4214	clr.b	(a4)
00022860 303c00bc	move.w	#SndID_SpindashRelease,d0
00022864 4ef900001370	jmp	(PlaySound).l
0002286a 3428002a	move.w	objoff_2A(a0),d2
0002286e 30290008	move.w	x_pos(a1),d0
00022872 90680008	sub.w	x_pos(a0),d0
00022876 b042	cmp.w	d2,d0
00022878 64000014	bhs.w	loc_2288E
0002287c 3229000c	move.w	y_pos(a1),d1
00022880 9268000c	sub.w	y_pos(a0),d1
00022884 0c410080	cmpi.w	#$80,d1
00022888 64000004	bhs.w	loc_2288E
0002288c 4e75	rts	
0002288e 4214	clr.b	(a4)
00022890 4e75	rts	
00022892 6a30	bpl.s	loc_228C4
00022894 4400	neg.b	d0
00022896 197c00fc0001	move.b	#-4,1(a4)
0002289c d040	add.w	d0,d0
0002289e 45f900022e88	lea	(off_22E88).l,a2
000228a4 d4f20000	adda.w	(a2,d0.w),a2
000228a8 301a	move.w	(a2)+,d0
000228aa 5940	subq.w	#4,d0
000228ac 39400004	move.w	d0,4(a4)
000228b0 45f20000	lea	(a2,d0.w),a2
000228b4 381a	move.w	(a2)+,d4
000228b6 33440008	move.w	d4,x_pos(a1)
000228ba 3a1a	move.w	(a2)+,d5
000228bc 3345000c	move.w	d5,y_pos(a1)
000228c0 514a	subq.w	#8,a2
000228c2 6020	bra.s	loc_228E4
000228c4 d040	add.w	d0,d0
000228c6 45f900022e88	lea	(off_22E88).l,a2
000228cc d4f20000	adda.w	(a2,d0.w),a2
000228d0 395a0004	move.w	(a2)+,4(a4)
000228d4 596c0004	subq.w	#4,4(a4)
000228d8 381a	move.w	(a2)+,d4
000228da 33440008	move.w	d4,x_pos(a1)
000228de 3a1a	move.w	(a2)+,d5
000228e0 3345000c	move.w	d5,y_pos(a1)
000228e4 294a0006	move.l	a2,6(a4)
000228e8 381a	move.w	(a2)+,d4
000228ea 3a1a	move.w	(a2)+,d5
000228ec 343c0800	move.w	#$800,d2
000228f0 61000010	bsr.w	loc_22902
000228f4 303c00be	move.w	#SndID_Roll,d0
000228f8 4eb900001370	jsr	(PlaySound).l
000228fe 5414	addq.b	#2,(a4)
00022900 4e75	rts	
00022902 7000	moveq	#0,d0
00022904 3602	move.w	d2,d3
00022906 3004	move.w	d4,d0
00022908 90690008	sub.w	x_pos(a1),d0
0002290c 6c04	bge.s	+
0002290e 4440	neg.w	d0
00022910 4442	neg.w	d2
00022912 7200	moveq	#0,d1
00022914 3205	move.w	d5,d1
00022916 9269000c	sub.w	y_pos(a1),d1
0002291a 6c04	bge.s	+
0002291c 4441	neg.w	d1
0002291e 4443	neg.w	d3
00022920 b240	cmp.w	d0,d1
00022922 652e	blo.s	loc_22952
00022924 7200	moveq	#0,d1
00022926 3205	move.w	d5,d1
00022928 9269000c	sub.w	y_pos(a1),d1
0002292c 4841	swap	d1
0002292e 83c3	divs.w	d3,d1
00022930 7000	moveq	#0,d0
00022932 3004	move.w	d4,d0
00022934 90690008	sub.w	x_pos(a1),d0
00022938 6704	beq.s	+
0002293a 4840	swap	d0
0002293c 81c1	divs.w	d1,d0
0002293e 33400010	move.w	d0,x_vel(a1)
00022942 33430012	move.w	d3,y_vel(a1)
00022946 4a41	tst.w	d1
00022948 6a02	bpl.s	.skip
0002294a 4441	neg.w	d1
0002294c 39410002	move.w	d1,2(a4)
00022950 4e75	rts	
00022952 7000	moveq	#0,d0
00022954 3004	move.w	d4,d0
00022956 90690008	sub.w	x_pos(a1),d0
0002295a 4840	swap	d0
0002295c 81c2	divs.w	d2,d0
0002295e 7200	moveq	#0,d1
00022960 3205	move.w	d5,d1
00022962 9269000c	sub.w	y_pos(a1),d1
00022966 6704	beq.s	+
00022968 4841	swap	d1
0002296a 83c0	divs.w	d0,d1
0002296c 33410012	move.w	d1,y_vel(a1)
00022970 33420010	move.w	d2,x_vel(a1)
00022974 4a40	tst.w	d0
00022976 6a02	bpl.s	.skip
00022978 4440	neg.w	d0
0002297a 39400002	move.w	d0,2(a4)
0002297e 4e75	rts	
00022fee 4e71	nop	
00022ff0 4ef90001643e	jmp	(extractJmpToName("JmpTo_MarkObjGone3")).l
00022ff8 7000	moveq	#0,d0
00022ffa 10280024	move.b	routine(a0),d0
00022ffe 323b0006	move.w	Obj20_Index(pc,d0.w),d1
00023002 4efb1002	jmp	Obj20_Index(pc,d1.w)
00023014 54280024	addq.b	#2,routine(a0)
00023018 117c00080016	move.b	#8,y_radius(a0)
0002301e 117c00080017	move.b	#8,x_radius(a0)
00023024 217c000232540004	move.l	#Obj20_MapUnc_23254,mappings(a0)
0002302c 317c84160002	move.w	#make_art_tile(ArtTile_ArtNem_HtzFireball2,0,1),art_tile(a0)
00023036 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0002303c 117c00030018	move.b	#3,priority(a0)
00023042 117c00080019	move.b	#8,width_pixels(a0)
00023048 3168000c0030	move.w	y_pos(a0),objoff_30(a0)
0002304e 7000	moveq	#0,d0
00023050 10280028	move.b	subtype(a0),d0
00023054 e748	lsl.w	#3,d0
00023056 02400780	andi.w	#$780,d0
0002305a 4440	neg.w	d0
0002305c 31400010	move.w	d0,x_vel(a0)
00023060 31400012	move.w	d0,y_vel(a0)
00023064 10280028	move.b	subtype(a0),d0
00023068 0240000f	andi.w	#$F,d0
0002306c e948	lsl.w	#4,d0
0002306e 31400032	move.w	d0,objoff_32(a0)
00023072 31400034	move.w	d0,objoff_34(a0)
00023076 43f900023236	lea	(Ani_obj20).l,a1
00023084 0c280005001e	cmpi.b	#5,anim_frame_duration(a0)
0002308a 6628	bne.s	loc_230B4
00023090 6614	bne.s	loc_230A6
00023092 612e	bsr.s	loc_230C2
00023098 660c	bne.s	loc_230A6
0002309a 6126	bsr.s	loc_230C2
0002309c 44690010	neg.w	x_vel(a1)
000230a0 08e900000001	bset	#render_flags.x_flip,render_flags(a1)
000230a6 303c00ae	move.w	#SndID_ArrowFiring,d0
000230aa 4eb900001370	jsr	(PlaySound).l
000230b0 54280024	addq.b	#2,routine(a0)
000230b4 43f900023236	lea	(Ani_obj20).l,a1
000230c8 137c00080024	move.b	#8,routine(a1)
000230ce 336800080008	move.w	x_pos(a0),x_pos(a1)
000230d4 3368000c000c	move.w	y_pos(a0),y_pos(a1)
000230da 336800100010	move.w	x_vel(a0),x_vel(a1)
000230e0 336800120012	move.w	y_vel(a0),y_vel(a1)
000230e6 137c00080016	move.b	#8,y_radius(a1)
000230ec 137c00080017	move.b	#8,x_radius(a1)
000230f2 236800040004	move.l	mappings(a0),mappings(a1)
000230f8 336800020002	move.w	art_tile(a0),art_tile(a1)
000230fe 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
00023104 137c00030018	move.b	#3,priority(a1)
0002310a 137c00080019	move.b	#8,width_pixels(a1)
00023110 137c008b0020	move.b	#$8B,collision_flags(a1)
00023116 3369000c0030	move.w	y_pos(a1),objoff_30(a1)
0002311c 4e75	rts	
0002311e 53680032	subq.w	#1,objoff_32(a0)
00023122 6a12	bpl.s	loc_23136
00023124 316800340032	move.w	objoff_34(a0),objoff_32(a0)
0002312a 117c00020024	move.b	#2,routine(a0)
00023130 317c0001001c	move.w	#(0<<8)|(1<<0),anim(a0)
00023136 43f900023236	lea	(Ani_obj20).l,a1
00023144 5328001e	subq.b	#1,anim_frame_duration(a0)
00023148 6a10	bpl.s	loc_2315A
0002314a 117c0007001e	move.b	#7,anim_frame_duration(a0)
00023150 5228001a	addq.b	#1,mapping_frame(a0)
00023154 02280001001a	andi.b	#1,mapping_frame(a0)
0002315e 066800180012	addi.w	#$18,y_vel(a0)
00023164 3038eece	move.w	(Camera_Max_Y_pos).w,d0
00023168 064000e0	addi.w	#screen_height,d0
0002316c b068000c	cmp.w	y_pos(a0),d0
00023170 6404	bhs.s	loc_23176
00023176 08a800010001	bclr	#render_flags.y_flip,render_flags(a0)
0002317c 4a680012	tst.w	y_vel(a0)
00023180 6b4c	bmi.s	BranchTo_JmpTo8_MarkObjGone
00023182 08e800010001	bset	#render_flags.y_flip,render_flags(a0)
00023188 6100bc70	bsr.w	ObjCheckFloorDist
0002318c 4a41	tst.w	d1
0002318e 6a3e	bpl.s	BranchTo_JmpTo8_MarkObjGone
00023190 d368000c	add.w	d1,y_pos(a0)
00023194 54280024	addq.b	#2,routine(a0)
00023198 117c0002001c	move.b	#2,anim(a0)
0002319e 117c0004001a	move.b	#4,mapping_frame(a0)
000231a4 317c00000012	move.w	#0,y_vel(a0)
000231aa 217c000232940004	move.l	#Obj20_MapUnc_23294,mappings(a0)
000231b2 317c839e0002	move.w	#make_art_tile(ArtTile_ArtNem_HtzFireball1,0,1),art_tile(a0)
000231bc 117c0000001a	move.b	#0,mapping_frame(a0)
000231c2 317c00090032	move.w	#9,objoff_32(a0)
000231c8 117c00030036	move.b	#3,objoff_36(a0)
000231d2 53680032	subq.w	#1,objoff_32(a0)
000231d6 6a4c	bpl.s	loc_23224
000231d8 317c007f0032	move.w	#$7F,objoff_32(a0)
000231de 53280036	subq.b	#1,objoff_36(a0)
000231e2 6b40	bmi.s	loc_23224
000231e8 663a	bne.s	loc_23224
000231ea 7000	moveq	#0,d0
000231ec 323c000f	move.w	#bytesToLcnt(object_size),d1
000231f0 23b000000000	move.l	(a0,d0.w),(a1,d0.w)
000231f6 5840	addq.w	#4,d0
000231f8 51c9fff6	dbf	d1,loc_231F0
000231fc 337c00090032	move.w	#9,objoff_32(a1)
00023202 337c0200001c	move.w	#(2<<8)|(0<<0),anim(a1)
00023208 303c000e	move.w	#$E,d0
0002320c 4a690010	tst.w	x_vel(a1)
00023210 6a02	bpl.s	loc_23214
00023212 4440	neg.w	d0
00023214 d1690008	add.w	d0,x_pos(a1)
00023218 2f09	move.l	a1,-(sp)
0002321a 6100bc14	bsr.w	FireCheckFloorDist
0002321e 225f	movea.l	(sp)+,a1
00023220 d369000c	add.w	d1,y_pos(a1)
00023224 43f900023236	lea	(Ani_obj20).l,a1
000232dc 4ef9000164e6	jmp	(extractJmpToName("JmpTo21_DeleteObject")).l
000232e2 4ef9000163d2	jmp	(extractJmpToName("JmpTo8_MarkObjGone")).l
000232e8 4ef900017ffa	jmp	(extractJmpToName("JmpTo6_AllocateObjectAfterCurrent")).l
000232ee 4ef900016544	jmp	(extractJmpToName("JmpTo4_AnimateSprite")).l
000232f4 4ef900016d6e	jmp	(extractJmpToName("JmpTo17_Adjust2PArtPointer")).l
000232fa 4ef9000163ac	jmp	(extractJmpToName("JmpTo7_ObjectMove")).l
00023300 7000	moveq	#0,d0
00023302 10280024	move.b	routine(a0),d0
00023306 323b0006	move.w	Obj2F_Index(pc,d0.w),d1
0002330a 4efb1002	jmp	Obj2F_Index(pc,d1.w)
0002331e 54280024	addq.b	#2,routine(a0)
00023322 217c000236fa0004	move.l	#Obj2F_MapUnc_236FA,mappings(a0)
0002332a 317cc0000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,2,1),art_tile(a0)
00023334 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002333a 117c00100019	move.b	#$10,width_pixels(a0)
00023340 117c00040018	move.b	#4,priority(a0)
00023346 7000	moveq	#0,d0
00023348 10280028	move.b	subtype(a0),d0
0002334c 0240001e	andi.w	#$1E,d0
00023350 45fb00c2	lea	Obj2F_Properties(pc,d0.w),a2
00023354 115a0016	move.b	(a2)+,y_radius(a0)
00023358 115a001a	move.b	(a2)+,mapping_frame(a0)
0002335c 117c00200016	move.b	#$20,y_radius(a0)
00023362 08e800040001	bset	#render_flags.explicit_height,render_flags(a0)
00023368 3178f7d00038	move.w	(Chain_Bonus_counter).w,objoff_38(a0)
0002336e 1178b01c0032	move.b	(MainCharacter+anim).w,objoff_32(a0)
00023374 1178b05c0033	move.b	(Sidekick+anim).w,objoff_33(a0)
0002337a 7200	moveq	#0,d1
0002337c 12280019	move.b	width_pixels(a0),d1
00023380 0641000b	addi.w	#$B,d1
00023384 7400	moveq	#0,d2
00023386 14280016	move.b	y_radius(a0),d2
0002338a 3602	move.w	d2,d3
0002338c 5243	addq.w	#1,d3
0002338e 38280008	move.w	x_pos(a0),d4
00023396 10280022	move.b	status(a0),d0
0002339a 02000018	andi.b	#standing_mask,d0
0002339e 6604	bne.s	+
000233a4 0c000018	cmpi.b	#standing_mask,d0
000233a8 665e	bne.s	loc_23408
000233aa 0c2800020032	cmpi.b	#AniIDSonAni_Roll,objoff_32(a0)
000233b0 660e	bne.s	loc_233C0
000233b2 4a280028	tst.b	subtype(a0)
000233b6 6b38	bmi.s	loc_233F0
000233b8 0c38000eb03e	cmpi.b	#$E,(MainCharacter+top_solid_bit).w
000233be 6730	beq.s	loc_233F0
000233c0 11fc000cb03e	move.b	#$C,(MainCharacter+top_solid_bit).w
000233c6 11fc000db03f	move.b	#$D,(MainCharacter+lrb_solid_bit).w
000233cc 0c2800020033	cmpi.b	#AniIDSonAni_Roll,objoff_33(a0)
000233d2 660e	bne.s	loc_233E2
000233d4 4a280028	tst.b	subtype(a0)
000233d8 6b16	bmi.s	loc_233F0
000233da 0c38000eb07e	cmpi.b	#$E,(Sidekick+top_solid_bit).w
000233e0 670e	beq.s	loc_233F0
000233e2 11fc000cb07e	move.b	#$C,(Sidekick+top_solid_bit).w
000233e8 11fc000db07f	move.b	#$D,(Sidekick+lrb_solid_bit).w
000233ee 60b0	bra.s	BranchTo_JmpTo9_MarkObjGone
000233f0 43f8b000	lea	(MainCharacter).w,a1
000233f4 10280032	move.b	objoff_32(a0),d0
000233f8 6144	bsr.s	loc_2343E
000233fa 43f8b040	lea	(Sidekick).w,a1
000233fe 10280033	move.b	objoff_33(a0),d0
00023402 613a	bsr.s	loc_2343E
00023404 6000009e	bra.w	loc_234A4
00023408 1200	move.b	d0,d1
0002340a 02010008	andi.b	#p1_standing,d1
0002340e 6760	beq.s	loc_23470
00023410 0c2800020032	cmpi.b	#AniIDSonAni_Roll,objoff_32(a0)
00023416 660e	bne.s	loc_23426
00023418 4a280028	tst.b	subtype(a0)
0002341c 6b18	bmi.s	loc_23436
0002341e 0c38000eb03e	cmpi.b	#$E,(MainCharacter+top_solid_bit).w
00023424 6710	beq.s	loc_23436
00023426 11fc000cb03e	move.b	#$C,(MainCharacter+top_solid_bit).w
0002342c 11fc000db03f	move.b	#$D,(MainCharacter+lrb_solid_bit).w
00023432 6000ff6c	bra.w	BranchTo_JmpTo9_MarkObjGone
00023436 43f8b000	lea	(MainCharacter).w,a1
0002343a 6108	bsr.s	loc_23444
0002343c 6066	bra.s	loc_234A4
0002343e 0c000002	cmpi.b	#AniIDSonAni_Roll,d0
00023442 6618	bne.s	loc_2345C
00023444 08e900020022	bset	#status.player.rolling,status(a1)
0002344a 137c000e0016	move.b	#$E,y_radius(a1)
00023450 137c00070017	move.b	#7,x_radius(a1)
00023456 137c0002001c	move.b	#AniIDSonAni_Roll,anim(a1)
0002345c 08e900010022	bset	#status.player.in_air,status(a1)
00023462 08a900030022	bclr	#status.player.on_object,status(a1)
00023468 137c00020024	move.b	#2,routine(a1)
0002346e 4e75	rts	
00023470 02000010	andi.b	#p2_standing,d0
00023474 6700ff2a	beq.w	BranchTo_JmpTo9_MarkObjGone
00023478 0c2800020033	cmpi.b	#AniIDSonAni_Roll,objoff_33(a0)
0002347e 660e	bne.s	loc_2348E
00023480 4a280028	tst.b	subtype(a0)
00023484 6b18	bmi.s	loc_2349E
00023486 0c38000eb07e	cmpi.b	#$E,(Sidekick+top_solid_bit).w
0002348c 6710	beq.s	loc_2349E
0002348e 11fc000cb07e	move.b	#$C,(Sidekick+top_solid_bit).w
00023494 11fc000db07f	move.b	#$D,(Sidekick+lrb_solid_bit).w
0002349a 6000ff04	bra.w	BranchTo_JmpTo9_MarkObjGone
0002349e 43f8b040	lea	(Sidekick).w,a1
000234a2 61a0	bsr.s	loc_23444
000234a4 31e80038f7d0	move.w	objoff_38(a0),(Chain_Bonus_counter).w
000234aa 022800e70022	andi.b	#~standing_mask,status(a0)
000234b0 49f9000234f2	lea	(Obj2F_FragmentVelocities).l,a4
000234b6 7000	moveq	#0,d0
000234b8 1028001a	move.b	mapping_frame(a0),d0
000234bc 5228001a	addq.b	#1,mapping_frame(a0)
000234c0 2200	move.l	d0,d1
000234c2 d040	add.w	d0,d0
000234c4 d040	add.w	d0,d0
000234c6 49f40000	lea	(a4,d0.w),a4
000234ca 4441	neg.w	d1
000234cc 06410009	addi.w	#9,d1
000234d0 343c0018	move.w	#$18,d2
000234d8 610001ce	bsr.w	SmashableObject_LoadPoints
000234e0 066800180012	addi.w	#$18,y_vel(a0)
000234e6 4a280001	tst.b	render_flags(a0)
000234ea 6a0003c6	bpl.w	JmpTo22_DeleteObject
0002351a 7000	moveq	#0,d0
0002351c 10280024	move.b	routine(a0),d0
00023520 323b0006	move.w	Obj32_Index(pc,d0.w),d1
00023524 4efb1002	jmp	Obj32_Index(pc,d1.w)
0002352e 54280024	addq.b	#2,routine(a0)
00023532 217c000238520004	move.l	#Obj32_MapUnc_23852,mappings(a0)
0002353a 317c43b20002	move.w	#make_art_tile(ArtTile_ArtNem_HtzRock,2,0),art_tile(a0)
00023540 117c00180019	move.b	#$18,width_pixels(a0)
00023546 217c00023680003c	move.l	#Obj32_VelArray1,objoff_3C(a0)
0002354e 0c38000dfe10	cmpi.b	#chemical_plant_zone,(Current_Zone).w
00023554 661c	bne.s	+
00023556 217c000238860004	move.l	#Obj32_MapUnc_23886,mappings(a0)
0002355e 317c64300002	move.w	#make_art_tile(ArtTile_ArtNem_CPZMetalBlock,3,0),art_tile(a0)
00023564 117c00100019	move.b	#$10,width_pixels(a0)
0002356a 217c00023698003c	move.l	#Obj32_VelArray2,objoff_3C(a0)
00023576 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002357c 117c00040018	move.b	#4,priority(a0)
00023582 3178f7d00038	move.w	(Chain_Bonus_counter).w,objoff_38(a0)
00023588 1178b01c0032	move.b	(MainCharacter+anim).w,breakableblock_mainchar_anim(a0)
0002358e 1178b05c0033	move.b	(Sidekick+anim).w,breakableblock_sidekick_anim(a0)
00023594 7200	moveq	#0,d1
00023596 12280019	move.b	width_pixels(a0),d1
0002359a 0641000b	addi.w	#$B,d1
0002359e 343c0010	move.w	#$10,d2
000235a2 363c0011	move.w	#$11,d3
000235a6 38280008	move.w	x_pos(a0),d4
000235ae 10280022	move.b	status(a0),d0
000235b2 02000018	andi.b	#standing_mask,d0
000235b6 6604	bne.s	Obj32_SupportingSomeone
000235bc 0c000018	cmpi.b	#standing_mask,d0
000235c0 6628	bne.s	Obj32_SupportingOnePlayerOnly
000235c2 0c2800020032	cmpi.b	#AniIDSonAni_Roll,breakableblock_mainchar_anim(a0)
000235c8 6708	beq.s	+
000235ca 0c2800020033	cmpi.b	#AniIDSonAni_Roll,breakableblock_sidekick_anim(a0)
000235d0 66e6	bne.s	BranchTo2_JmpTo9_MarkObjGone
000235d2 43f8b000	lea	(MainCharacter).w,a1
000235d6 10280032	move.b	breakableblock_mainchar_anim(a0),d0
000235da 6126	bsr.s	Obj32_SetCharacterOffBlock
000235dc 43f8b040	lea	(Sidekick).w,a1
000235e0 10280033	move.b	breakableblock_sidekick_anim(a0),d0
000235e4 611c	bsr.s	Obj32_SetCharacterOffBlock
000235e6 6000006a	bra.w	Obj32_Destroy
000235ea 1200	move.b	d0,d1
000235ec 02010008	andi.b	#p1_standing,d1
000235f0 6748	beq.s	Obj32_SupportingSidekick
000235f2 0c2800020032	cmpi.b	#AniIDSonAni_Roll,breakableblock_mainchar_anim(a0)
000235f8 66be	bne.s	BranchTo2_JmpTo9_MarkObjGone
000235fa 43f8b000	lea	(MainCharacter).w,a1
000235fe 6108	bsr.s	Obj32_BouncePlayer
00023600 6050	bra.s	Obj32_Destroy
00023602 0c000002	cmpi.b	#AniIDSonAni_Roll,d0
00023606 661e	bne.s	+
00023608 08e900020022	bset	#status.player.rolling,status(a1)
0002360e 137c000e0016	move.b	#$E,y_radius(a1)
00023614 137c00070017	move.b	#7,x_radius(a1)
0002361a 137c0002001c	move.b	#AniIDSonAni_Roll,anim(a1)
00023620 337cfd000012	move.w	#-$300,y_vel(a1)
00023626 08e900010022	bset	#status.player.in_air,status(a1)
0002362c 08a900030022	bclr	#status.player.on_object,status(a1)
00023632 137c00020024	move.b	#2,routine(a1)
00023638 4e75	rts	
0002363a 02000010	andi.b	#p2_standing,d0
0002363e 6700ff78	beq.w	BranchTo2_JmpTo9_MarkObjGone
00023642 0c2800020033	cmpi.b	#2,breakableblock_sidekick_anim(a0)
00023648 6600ff6e	bne.w	BranchTo2_JmpTo9_MarkObjGone
0002364c 43f8b040	lea	(Sidekick).w,a1
00023650 61b6	bsr.s	Obj32_BouncePlayer
00023652 31e80038f7d0	move.w	objoff_38(a0),(Chain_Bonus_counter).w
00023658 022800e70022	andi.b	#~standing_mask,status(a0)
0002365e 2868003c	movea.l	objoff_3C(a0),a4
00023666 61000040	bsr.w	SmashableObject_LoadPoints
0002366e 066800180012	addi.w	#$18,y_vel(a0)
00023674 4a280001	tst.b	render_flags(a0)
00023678 6a000238	bpl.w	JmpTo22_DeleteObject
000236ac 6642	bne.s	+++
000236b4 336800080008	move.w	x_pos(a0),x_pos(a1)
000236ba 3368000c000c	move.w	y_pos(a0),y_pos(a1)
000236c0 3438f7d0	move.w	(Chain_Bonus_counter).w,d2
000236c4 5478f7d0	addq.w	#2,(Chain_Bonus_counter).w
000236c8 0c420006	cmpi.w	#6,d2
000236cc 6502	blo.s	+
000236ce 7406	moveq	#6,d2
000236d0 7000	moveq	#0,d0
000236d2 303b201e	move.w	SmashableObject_ScoreBonus(pc,d2.w),d0
000236d6 0c780020f7d0	cmpi.w	#$20,(Chain_Bonus_counter).w
000236dc 6506	blo.s	+
000236de 303c03e8	move.w	#1000,d0
000236e2 740a	moveq	#$A,d2
000236e4 4eb900040d06	jsr	(AddPoints).l
000236ea e24a	lsr.w	#1,d2
000236ec 1342001a	move.b	d2,mapping_frame(a1)
000236f0 4e75	rts	
000238aa 4e71	nop	
000238ac 4ef9000164f4	jmp	(extractJmpToName("JmpTo12_DisplaySprite")).l
000238b2 4ef9000164e6	jmp	(extractJmpToName("JmpTo22_DeleteObject")).l
000238b8 4ef900017fda	jmp	(extractJmpToName("JmpTo3_AllocateObject")).l
000238be 4ef9000163d2	jmp	(extractJmpToName("JmpTo9_MarkObjGone")).l
000238c4 4ef900016d6e	jmp	(extractJmpToName("JmpTo18_Adjust2PArtPointer")).l
000238ca 4ef900015e18	jmp	(extractJmpToName("JmpTo_BreakObjectToPieces")).l
000238d0 4ef900019718	jmp	(extractJmpToName("JmpTo3_SolidObject")).l
000238d6 4ef9000163ac	jmp	(extractJmpToName("JmpTo8_ObjectMove")).l
000238dc 7000	moveq	#0,d0
000238de 10280024	move.b	routine(a0),d0
000238e2 323b0006	move.w	Obj30_Index(pc,d0.w),d1
000238e6 4efb1002	jmp	Obj30_Index(pc,d1.w)
000238f8 54280024	addq.b	#2,routine(a0)
000238fc 3168000c0032	move.w	y_pos(a0),objoff_32(a0)
00023902 316800080030	move.w	x_pos(a0),objoff_30(a0)
00023908 7000	moveq	#0,d0
0002390a 10280028	move.b	subtype(a0),d0
0002390e 117b00de0019	move.b	Obj30_Widths(pc,d0.w),width_pixels(a0)
00023914 0c000006	cmpi.b	#6,d0
00023918 652a	blo.s	Obj30_Main
0002391a 660a	bne.s	+
0002391c 0c780380ee04	cmpi.w	#$380,(Camera_Y_pos).w
00023922 6420	bhs.s	Obj30_Main
00023924 6008	bra.s	++
00023926 0c780380ee04	cmpi.w	#$380,(Camera_Y_pos).w
0002392c 6516	blo.s	Obj30_Main
0002392e 45f8fc00	lea	(Object_Respawn_Table).w,a2
00023932 7000	moveq	#0,d0
00023934 10280023	move.b	respawn_index(a0),d0
00023938 6706	beq.s	+
0002393a 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
00023944 30280032	move.w	objoff_32(a0),d0
00023948 d078eee4	add.w	(Camera_BG_Y_offset).w,d0
0002394c 3140000c	move.w	d0,y_pos(a0)
00023950 7000	moveq	#0,d0
00023952 10280028	move.b	subtype(a0),d0
00023956 323b0010	move.w	Obj30_Modes(pc,d0.w),d1
0002395a 4ebb100c	jsr	Obj30_Modes(pc,d1.w)
0002395e 4a38eebc	tst.b	(Screen_Shaking_Flag_HTZ).w
00023962 67000178	beq.w	JmpTo2_MarkObjGone3
00023966 4e75	rts	
00023972 323c00cb	move.w	#$CB,d1
00023976 343c0080	move.w	#$80,d2
0002397a 363c0081	move.w	#$81,d3
0002397e 38280008	move.w	x_pos(a0),d4
0002398a 323c00cb	move.w	#$CB,d1
0002398e 343c0078	move.w	#$78,d2
00023992 363c0079	move.w	#$79,d3
00023996 38280008	move.w	x_pos(a0),d4
000239a2 082800030022	btst	#p1_standing_bit,status(a0)
000239a8 670e	beq.s	+
000239aa 2f08	move.l	a0,-(sp)
000239ac 2248	movea.l	a0,a1
000239ae 41f8b000	lea	(MainCharacter).w,a0
000239b6 205f	movea.l	(sp)+,a0
000239b8 082800040022	btst	#p2_standing_bit,status(a0)
000239be 670e	beq.s	+
000239c0 2f08	move.l	a0,-(sp)
000239c2 2248	movea.l	a0,a1
000239c4 41f8b040	lea	(Sidekick).w,a0
000239cc 205f	movea.l	(sp)+,a0
000239ce 4e75	rts	
000239d0 323c00eb	move.w	#$EB,d1
000239d4 343c0078	move.w	#$78,d2
000239d8 363c0079	move.w	#$79,d3
000239dc 38280008	move.w	x_pos(a0),d4
000239e8 60b8	bra.s	Obj30_HurtSupportedPlayers
000239ea 323c00cb	move.w	#Obj30_SlopeData.end-Obj30_SlopeData-1,d1
000239ee 343c002e	move.w	#$2E,d2
000239f2 38280008	move.w	x_pos(a0),d4
000239f6 45f900023a04	lea	(Obj30_SlopeData).l,a2
00023ad0 4ef9000164e6	jmp	(extractJmpToName("JmpTo23_DeleteObject")).l
00023ad6 4ef90003f862	jmp	(extractJmpToName("JmpTo_Touch_ChkHurt")).l
00023adc 4ef90001643e	jmp	(extractJmpToName("JmpTo2_MarkObjGone3")).l
00023ae2 4ef900019ef0	jmp	(extractJmpToName("JmpTo_DropOnFloor")).l
00023ae8 4ef900019778	jmp	(extractJmpToName("JmpTo_SolidObject_Always")).l
00023aee 4ef9000197d0	jmp	(extractJmpToName("JmpTo_SlopedSolid")).l
00023af4 7000	moveq	#0,d0
00023af6 10280024	move.b	routine(a0),d0
00023afa 323b0006	move.w	Obj33_Index(pc,d0.w),d1
00023afe 4efb1002	jmp	Obj33_Index(pc,d1.w)
00023b08 54280024	addq.b	#2,routine(a0)
00023b0c 217c00023ddc0004	move.l	#Obj33_MapUnc_23DDC,mappings(a0)
00023b14 317c632c0002	move.w	#make_art_tile(ArtTile_ArtNem_BurnerLid,3,0),art_tile(a0)
00023b1a 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00023b20 117c00030018	move.b	#3,priority(a0)
00023b26 117c00180019	move.b	#$18,width_pixels(a0)
00023b2c 3168000c0030	move.w	y_pos(a0),objoff_30(a0)
00023b32 54280025	addq.b	#2,routine_secondary(a0)
00023b36 317c00780036	move.w	#$78,objoff_36(a0)
00023b3c 4a280028	tst.b	subtype(a0)
00023b40 6706	beq.s	+
00023b42 117c00040025	move.b	#4,routine_secondary(a0)
00023b4c 6642	bne.s	Obj33_Main
00023b54 137c00040024	move.b	#4,routine(a1)
00023b5a 336800080008	move.w	x_pos(a0),x_pos(a1)
00023b60 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00023b66 04690010000c	subi.w	#$10,y_pos(a1)
00023b6c 237c00023df00004	move.l	#Obj33_MapUnc_23DF0,mappings(a1)
00023b74 337c62e20002	move.w	#make_art_tile(ArtTile_ArtNem_OOZBurn,3,0),art_tile(a1)
00023b7a 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
00023b80 137c00040018	move.b	#4,priority(a1)
00023b86 137c00100019	move.b	#$10,width_pixels(a1)
00023b8c 2348003c	move.l	a0,objoff_3C(a1)
00023b90 3f280008	move.w	x_pos(a0),-(sp)
00023b94 7000	moveq	#0,d0
00023b96 10280025	move.b	routine_secondary(a0),d0
00023b9a 323b0020	move.w	Obj33_Modes(pc,d0.w),d1
00023b9e 4ebb101c	jsr	Obj33_Modes(pc,d1.w)
00023ba2 381f	move.w	(sp)+,d4
00023ba4 7200	moveq	#0,d1
00023ba6 12280019	move.b	width_pixels(a0),d1
00023baa 0641000b	addi.w	#$B,d1
00023bae 7408	moveq	#8,d2
00023bb0 3602	move.w	d2,d3
00023bb2 5243	addq.w	#1,d3
00023bc6 53680036	subq.w	#1,objoff_36(a0)
00023bca 6a1c	bpl.s	+
00023bcc 317c00780036	move.w	#$78,objoff_36(a0)
00023bd2 217cfff698000032	move.l	#-$96800,objoff_32(a0)
00023bda 54280025	addq.b	#2,routine_secondary(a0)
00023bde 303c00d4	move.w	#SndID_OOZLidPop,d0
00023be2 4eb90000137c	jsr	(PlaySoundLocal).l
00023be8 4e75	rts	
00023bea 2228000c	move.l	y_pos(a0),d1
00023bee d2a80032	add.l	objoff_32(a0),d1
00023bf2 2141000c	move.l	d1,y_pos(a0)
00023bf6 06a8000038000032	addi.l	#$3800,objoff_32(a0)
00023bfe 4841	swap	d1
00023c00 b2680030	cmp.w	objoff_30(a0),d1
00023c04 651e	blo.s	++
00023c06 20280032	move.l	objoff_32(a0),d0
00023c0a 0c8000010000	cmpi.l	#$10000,d0
00023c10 6404	bhs.s	+
00023c12 55280025	subq.b	#2,routine_secondary(a0)
00023c16 e488	lsr.l	#2,d0
00023c18 4480	neg.l	d0
00023c1a 21400032	move.l	d0,objoff_32(a0)
00023c1e 31680030000c	move.w	objoff_30(a0),y_pos(a0)
00023c24 4e75	rts	
00023c26 34280008	move.w	x_pos(a0),d2
00023c2a 3602	move.w	d2,d3
00023c2c 04420010	subi.w	#$10,d2
00023c30 06430010	addi.w	#$10,d3
00023c34 10280022	move.b	status(a0),d0
00023c38 02000018	andi.b	#standing_mask,d0
00023c3c 6760	beq.s	++
00023c3e 0c000018	cmpi.b	#standing_mask,d0
00023c42 675c	beq.s	loc_23CA0
00023c44 43f8b000	lea	(MainCharacter).w,a1
00023c48 7c03	moveq	#p1_standing_bit,d6
00023c4a 6106	bsr.s	+
00023c4c 43f8b040	lea	(Sidekick).w,a1
00023c50 5206	addq.b	#p2_standing_bit-p1_standing_bit,d6
00023c52 0d280022	btst	d6,status(a0)
00023c56 6746	beq.s	+
00023c58 30290008	move.w	x_pos(a1),d0
00023c5c b042	cmp.w	d2,d0
00023c5e 653e	blo.s	+
00023c60 b043	cmp.w	d3,d0
00023c62 643a	bhs.s	+
00023c64 137c0001002a	move.b	#1,obj_control(a1)
00023c6a 337c00000014	move.w	#0,inertia(a1)
00023c70 337c00000010	move.w	#0,x_vel(a1)
00023c76 337c00000012	move.w	#0,y_vel(a1)
00023c7c 08a900050022	bclr	#status.player.pushing,status(a1)
00023c82 08a900070002	bclr	#high_priority_bit,art_tile(a1)
00023c88 217cfff698000032	move.l	#-$96800,objoff_32(a0)
00023c90 54280025	addq.b	#2,routine_secondary(a0)
00023c94 303c00d4	move.w	#SndID_OOZLidPop,d0
00023c98 4eb90000137c	jsr	(PlaySoundLocal).l
00023c9e 4e75	rts	
00023ca0 43f8b000	lea	(MainCharacter).w,a1
00023ca4 30290008	move.w	x_pos(a1),d0
00023ca8 b042	cmp.w	d2,d0
00023caa 6572	blo.s	+
00023cac b043	cmp.w	d3,d0
00023cae 646e	bhs.s	+
00023cb0 45f8b040	lea	(Sidekick).w,a2
00023cb4 302a0008	move.w	x_pos(a2),d0
00023cb8 b042	cmp.w	d2,d0
00023cba 6562	blo.s	+
00023cbc b043	cmp.w	d3,d0
00023cbe 645e	bhs.s	+
00023cc0 137c0001002a	move.b	#1,obj_control(a1)
00023cc6 337c00000014	move.w	#0,inertia(a1)
00023ccc 337c00000010	move.w	#0,x_vel(a1)
00023cd2 337c00000012	move.w	#0,y_vel(a1)
00023cd8 08a900050022	bclr	#status.player.pushing,status(a1)
00023cde 08a900070002	bclr	#high_priority_bit,art_tile(a1)
00023ce4 157c0001002a	move.b	#1,obj_control(a2)
00023cea 357c00000014	move.w	#0,inertia(a2)
00023cf0 357c00000010	move.w	#0,x_vel(a2)
00023cf6 357c00000012	move.w	#0,y_vel(a2)
00023cfc 08aa00050022	bclr	#status.player.pushing,status(a2)
00023d02 08aa00070002	bclr	#high_priority_bit,art_tile(a2)
00023d08 217cfff698000032	move.l	#-$96800,objoff_32(a0)
00023d10 54280025	addq.b	#2,routine_secondary(a0)
00023d14 303c00d4	move.w	#SndID_OOZLidPop,d0
00023d18 4eb90000137c	jsr	(PlaySoundLocal).l
00023d1e 4e75	rts	
00023d20 2228000c	move.l	y_pos(a0),d1
00023d24 d2a80032	add.l	objoff_32(a0),d1
00023d28 2141000c	move.l	d1,y_pos(a0)
00023d2c 06a8000038000032	addi.l	#$3800,objoff_32(a0)
00023d34 4841	swap	d1
00023d36 30280030	move.w	objoff_30(a0),d0
00023d3a 0440007d	subi.w	#$7D,d0
00023d3e b240	cmp.w	d0,d1
00023d40 6654	bne.s	+
00023d42 54280025	addq.b	#2,routine_secondary(a0)
00023d46 43f8b000	lea	(MainCharacter).w,a1
00023d4a 10280022	move.b	status(a0),d0
00023d4e 02000008	andi.b	#p1_standing,d0
00023d52 610c	bsr.s	loc_23D60
00023d54 43f8b040	lea	(Sidekick).w,a1
00023d58 10280022	move.b	status(a0),d0
00023d5c 02000010	andi.b	#p2_standing,d0
00023d60 6734	beq.s	+
00023d62 336800080008	move.w	x_pos(a0),x_pos(a1)
00023d68 137c0002001c	move.b	#AniIDSonAni_Roll,anim(a1)
00023d6e 337c08000014	move.w	#$800,inertia(a1)
00023d74 08e900010022	bset	#status.player.in_air,status(a1)
00023d7a 337cf0000012	move.w	#-$1000,y_vel(a1)
00023d80 08a900030022	bclr	#status.player.on_object,status(a1)
00023d86 137c0000002a	move.b	#0,obj_control(a1)
00023d8c 303c00cc	move.w	#SndID_Spring,d0
00023d90 4eb90000137c	jsr	(PlaySoundLocal).l
00023d96 4e75	rts	
00023d98 4e75	rts	
00023d9a 2268003c	movea.l	objoff_3C(a0),a1
00023d9e 3028000c	move.w	y_pos(a0),d0
00023da2 9069000c	sub.w	y_pos(a1),d0
00023da6 0c400014	cmpi.w	#$14,d0
00023daa 6d16	blt.s	Obj33_FlameOff
00023dac 117c009b0020	move.b	#$9B,collision_flags(a0)
00023db2 43f900023dd0	lea	(Ani_obj33).l,a1
00023db8 4eb900016544	jsr	(AnimateSprite).l
00023dc2 117c00000020	move.b	#0,collision_flags(a0)
00023dc8 117c0000001b	move.b	#0,anim_frame(a0)
00023dce 4e75	rts	
00023e2c 4ef9000163d2	jmp	(extractJmpToName("JmpTo10_MarkObjGone")).l
00023e32 4ef900017ffa	jmp	(extractJmpToName("JmpTo7_AllocateObjectAfterCurrent")).l
00023e38 4ef900019718	jmp	(extractJmpToName("JmpTo4_SolidObject")).l
00023e40 7000	moveq	#0,d0
00023e42 10280024	move.b	routine(a0),d0
00023e46 323b0006	move.w	Obj43_Index(pc,d0.w),d1
00023e4a 4efb1002	jmp	Obj43_Index(pc,d1.w)
00023e66 54280024	addq.b	#2,routine(a0)
00023e6a 317cc30c0002	move.w	#make_art_tile(ArtTile_ArtNem_SpikyThing,2,1),art_tile(a0)
00023e74 7200	moveq	#0,d1
00023e76 12280028	move.b	subtype(a0),d1
00023e7a 45fb10d8	lea	Obj43_Properties(pc,d1.w),a2
00023e7e 121a	move.b	(a2)+,d1
00023e80 2248	movea.l	a0,a1
00023e82 6024	bra.s	loc_23EA8
00023e88 664a	bne.s	loc_23ED4
00023e90 137c00040024	move.b	#4,routine(a1)
00023e96 336800080008	move.w	x_pos(a0),x_pos(a1)
00023e9c 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00023ea2 137c00010036	move.b	#1,objoff_36(a1)
00023ea8 237c00023fe00004	move.l	#Obj43_MapUnc_23FE0,mappings(a1)
00023eb0 336800020002	move.w	art_tile(a0),art_tile(a1)
00023eb6 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
00023ebc 137c00040018	move.b	#4,priority(a1)
00023ec2 137c00180019	move.b	#$18,width_pixels(a1)
00023ec8 137c00a50020	move.b	#$A5,collision_flags(a1)
00023ece 336900080030	move.w	x_pos(a1),objoff_30(a1)
00023ed4 51c9ffae	dbf	d1,loc_23E84
00023ed8 2348003c	move.l	a0,objoff_3C(a1)
00023edc 2149003c	move.l	a1,objoff_3C(a0)
00023ee0 7200	moveq	#0,d1
00023ee2 121a	move.b	(a2)+,d1
00023ee4 30280030	move.w	objoff_30(a0),d0
00023ee8 9041	sub.w	d1,d0
00023eea 31400032	move.w	d0,objoff_32(a0)
00023eee 33400032	move.w	d0,objoff_32(a1)
00023ef2 d041	add.w	d1,d0
00023ef4 d041	add.w	d1,d0
00023ef6 31400034	move.w	d0,objoff_34(a0)
00023efa 33400034	move.w	d0,objoff_34(a1)
00023efe 301a	move.w	(a2)+,d0
00023f00 d1680008	add.w	d0,x_pos(a0)
00023f04 301a	move.w	(a2)+,d0
00023f06 d1690008	add.w	d0,x_pos(a1)
00023f0a 615a	bsr.s	loc_23F66
00023f0c 30280032	move.w	objoff_32(a0),d0
00023f10 0240ff80	andi.w	#$FF80,d0
00023f14 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00023f18 0c400280	cmpi.w	#$280,d0
00023f1c 6312	bls.s	JmpTo13_DisplaySprite
00023f1e 30280034	move.w	objoff_34(a0),d0
00023f22 0240ff80	andi.w	#$FF80,d0
00023f26 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00023f2a 0c400280	cmpi.w	#$280,d0
00023f2e 6206	bhi.s	loc_23F36
00023f30 4ef9000164f4	jmp	(DisplaySprite).l
00023f36 2268003c	movea.l	objoff_3C(a0),a1
00023f3a b3c8	cmpa.l	a0,a1
00023f3c 6706	beq.s	loc_23F44
00023f3e 4eb9000164e8	jsr	(DeleteObject2).l
00023f44 45f8fc00	lea	(Object_Respawn_Table).w,a2
00023f48 7000	moveq	#0,d0
00023f4a 10280023	move.b	respawn_index(a0),d0
00023f4e 6706	beq.s	JmpTo24_DeleteObject
00023f50 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
00023f56 4ef9000164e6	jmp	(DeleteObject).l
00023f5c 6108	bsr.s	loc_23F66
00023f5e 6150	bsr.s	loc_23FB0
00023f60 4ef9000164f4	jmp	(DisplaySprite).l
00023f66 4a280036	tst.b	objoff_36(a0)
00023f6a 6622	bne.s	loc_23F8E
00023f6c 32280008	move.w	x_pos(a0),d1
00023f70 5341	subq.w	#1,d1
00023f72 b2680032	cmp.w	objoff_32(a0),d1
00023f76 6610	bne.s	loc_23F88
00023f78 117c00010036	move.b	#1,objoff_36(a0)
00023f7e 303c00d5	move.w	#SndID_SlidingSpike,d0
00023f82 4eb90000137c	jsr	(PlaySoundLocal).l
00023f88 31410008	move.w	d1,x_pos(a0)
00023f8c 4e75	rts	
00023f8e 32280008	move.w	x_pos(a0),d1
00023f92 5241	addq.w	#1,d1
00023f94 b2680034	cmp.w	objoff_34(a0),d1
00023f98 6610	bne.s	loc_23FAA
00023f9a 117c00000036	move.b	#0,objoff_36(a0)
00023fa0 303c00d5	move.w	#SndID_SlidingSpike,d0
00023fa4 4eb90000137c	jsr	(PlaySoundLocal).l
00023faa 31410008	move.w	d1,x_pos(a0)
00023fae 4e75	rts	
00023fb0 2268003c	movea.l	objoff_3C(a0),a1
00023fb4 30280008	move.w	x_pos(a0),d0
00023fb8 04400018	subi.w	#$18,d0
00023fbc 34290008	move.w	x_pos(a1),d2
00023fc0 06420018	addi.w	#$18,d2
00023fc4 b440	cmp.w	d0,d2
00023fc6 6616	bne.s	return_23FDE
00023fc8 0a2800010036	eori.b	#1,objoff_36(a0)
00023fce 0a2900010036	eori.b	#1,objoff_36(a1)
00023fd4 303c00d5	move.w	#SndID_SlidingSpike,d0
00023fd8 4eb90000137c	jsr	(PlaySoundLocal).l
00023fde 4e75	rts	
00024014 4ef900017ffa	jmp	(extractJmpToName("JmpTo8_AllocateObjectAfterCurrent")).l
0002401a 4ef900016d6e	jmp	(extractJmpToName("JmpTo19_Adjust2PArtPointer")).l
00024020 7000	moveq	#0,d0
00024022 10280024	move.b	routine(a0),d0
00024026 323b0006	move.w	Obj07_Index(pc,d0.w),d1
0002402a 4efb1002	jmp	Obj07_Index(pc,d1.w)
00024032 54280024	addq.b	#2,routine(a0)
00024036 317c0758000c	move.w	#$758,y_pos(a0)
0002403c 117c00200019	move.b	#$20,width_pixels(a0)
00024042 3168000c0030	move.w	y_pos(a0),objoff_30(a0)
00024048 117c00300038	move.b	#$30,oil_char1submersion(a0)
0002404e 08e800070022	bset	#status.npc.no_balancing,status(a0)
00024054 4a78fe08	tst.w	(Debug_placement_mode).w
00024058 6600008e	bne.w	Obj07_End
0002405c 43f8b000	lea	(MainCharacter).w,a1
00024060 7208	moveq	#p1_standing,d1
00024062 10280022	move.b	status(a0),d0
00024066 c001	and.b	d1,d0
00024068 660e	bne.s	Obj07_CheckKillChar1
0002406a 0c2800300038	cmpi.b	#$30,oil_char1submersion(a0)
00024070 6710	beq.s	Obj07_CheckSupportChar1
00024072 52280038	addq.b	#1,oil_char1submersion(a0)
00024076 600a	bra.s	Obj07_CheckSupportChar1
00024078 4a280038	tst.b	oil_char1submersion(a0)
0002407c 6758	beq.s	Obj07_SuffocateCharacter
0002407e 53280038	subq.b	#1,oil_char1submersion(a0)
00024082 7220	moveq	#$20,d1
00024084 7600	moveq	#0,d3
00024086 16280038	move.b	oil_char1submersion(a0),d3
0002408a 7c03	moveq	#p1_standing_bit,d6
0002408c 38290008	move.w	x_pos(a1),d4
00024090 31440008	move.w	d4,x_pos(a0)
00024098 43f8b040	lea	(Sidekick).w,a1
0002409c 7210	moveq	#p2_standing,d1
0002409e 10280022	move.b	status(a0),d0
000240a2 c001	and.b	d1,d0
000240a4 660e	bne.s	Obj07_CheckKillChar2
000240a6 0c280030003a	cmpi.b	#$30,oil_char2submersion(a0)
000240ac 6710	beq.s	Obj07_CheckSupportChar2
000240ae 5228003a	addq.b	#1,oil_char2submersion(a0)
000240b2 600a	bra.s	Obj07_CheckSupportChar2
000240b4 4a28003a	tst.b	oil_char2submersion(a0)
000240b8 671c	beq.s	Obj07_SuffocateCharacter
000240ba 5328003a	subq.b	#1,oil_char2submersion(a0)
000240be 7220	moveq	#$20,d1
000240c0 7600	moveq	#0,d3
000240c2 1628003a	move.b	oil_char2submersion(a0),d3
000240c6 7c04	moveq	#p2_standing_bit,d6
000240c8 38290008	move.w	x_pos(a1),d4
000240cc 31440008	move.w	d4,x_pos(a0)
000240d4 4e75	rts	
000240d6 4601	not.b	d1
000240d8 c3280022	and.b	d1,status(a0)
000240dc 2f08	move.l	a0,-(sp)
000240de 2448	movea.l	a0,a2
000240e0 2049	movea.l	a1,a0
000240e6 205f	movea.l	(sp)+,a0
000240e8 4e75	rts	
000240ea 4e71	nop	
000240ec 4ef90003f926	jmp	(extractJmpToName("JmpTo3_KillCharacter")).l
000240f2 4ef900019c48	jmp	(extractJmpToName("JmpTo_PlatformObject_SingleCharacter")).l
000240f8 7000	moveq	#0,d0
000240fa 10280024	move.b	routine(a0),d0
000240fe 323b000a	move.w	Obj45_Index(pc,d0.w),d1
00024102 4ebb1006	jsr	Obj45_Index(pc,d1.w)
00024110 54280024	addq.b	#2,routine(a0)
00024114 217c0002451a0004	move.l	#Obj45_MapUnc_2451A,mappings(a0)
0002411c 317c43c50002	move.w	#make_art_tile(ArtTile_ArtNem_PushSpring,2,0),art_tile(a0)
00024122 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00024128 117c00100019	move.b	#16,width_pixels(a0)
0002412e 117c00040018	move.b	#4,priority(a0)
00024134 10280028	move.b	subtype(a0),d0
00024138 e648	lsr.w	#3,d0
0002413a 0240000e	andi.w	#$E,d0
0002413e 303b0006	move.w	Obj45_InitRoutines(pc,d0.w),d0
00024142 4efb0002	jmp	Obj45_InitRoutines(pc,d0.w)
0002414a 117c00040024	move.b	#4,routine(a0)
00024150 117c0001001c	move.b	#1,anim(a0)
00024156 117c000a001a	move.b	#$A,mapping_frame(a0)
0002415c 317c43c50002	move.w	#make_art_tile(ArtTile_ArtNem_PushSpring,2,0),art_tile(a0)
00024162 117c00140019	move.b	#20,width_pixels(a0)
00024168 316800080034	move.w	x_pos(a0),obj45_original_x_pos(a0)
0002416e 10280028	move.b	subtype(a0),d0
00024172 02400002	andi.w	#2,d0
00024176 317b000a0030	move.w	Obj45_Strengths(pc,d0.w),obj45_strength(a0)
00024180 4e75	rts	
00024186 10280022	move.b	status(a0),d0
0002418a 02000018	andi.b	#standing_mask,d0
0002418e 660c	bne.s	loc_2419C
00024190 4a280032	tst.b	obj45_frame(a0)
00024194 6712	beq.s	loc_241A8
00024196 53280032	subq.b	#1,obj45_frame(a0)
0002419a 600c	bra.s	loc_241A8
0002419c 0c2800090032	cmpi.b	#9,obj45_frame(a0)
000241a2 6722	beq.s	Obj45_LaunchCharacterVertical
000241a4 52280032	addq.b	#1,obj45_frame(a0)
000241a8 7600	moveq	#0,d3
000241aa 16280032	move.b	obj45_frame(a0),d3
000241ae 1143001a	move.b	d3,mapping_frame(a0)
000241b2 d643	add.w	d3,d3
000241b4 323c001b	move.w	#27,d1
000241b8 343c0014	move.w	#20,d2
000241bc 38280008	move.w	x_pos(a0),d4
000241c4 4e75	rts	
000241c6 43f8b000	lea	(MainCharacter).w,a1
000241ca 7c03	moveq	#p1_standing_bit,d6
000241cc 6106	bsr.s	loc_241D4
000241ce 43f8b040	lea	(Sidekick).w,a1
000241d2 7c04	moveq	#p2_standing_bit,d6
000241d4 0da80022	bclr	d6,status(a0)
000241d8 6700009e	beq.w	return_24278
000241dc 336800300012	move.w	obj45_strength(a0),y_vel(a1)
000241e2 08e900010022	bset	#status.player.in_air,status(a1)
000241e8 08a900030022	bclr	#status.player.on_object,status(a1)
000241ee 137c0010001c	move.b	#AniIDSonAni_Spring,anim(a1)
000241f4 137c00020024	move.b	#2,routine(a1)
000241fa 10280028	move.b	subtype(a0),d0
000241fe 6a06	bpl.s	loc_24206
00024200 337c00000010	move.w	#0,x_vel(a1)
00024206 08000000	btst	#0,d0
0002420a 673a	beq.s	loc_24246
0002420c 337c00010014	move.w	#1,inertia(a1)
00024212 137c00010027	move.b	#1,flip_angle(a1)
00024218 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
0002421e 137c0000002c	move.b	#0,flips_remaining(a1)
00024224 137c0004002d	move.b	#4,flip_speed(a1)
0002422a 08000001	btst	#1,d0
0002422e 6606	bne.s	loc_24236
00024230 137c0001002c	move.b	#1,flips_remaining(a1)
00024236 082900000022	btst	#status.player.x_flip,status(a1)
0002423c 6708	beq.s	loc_24246
0002423e 44290027	neg.b	flip_angle(a1)
00024242 44690014	neg.w	inertia(a1)
00024246 0200000c	andi.b	#$C,d0
0002424a 0c000004	cmpi.b	#4,d0
0002424e 660c	bne.s	loc_2425C
00024250 137c000c003e	move.b	#$C,top_solid_bit(a1)
00024256 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
0002425c 0c000008	cmpi.b	#8,d0
00024260 660c	bne.s	loc_2426E
00024262 137c000e003e	move.b	#$E,top_solid_bit(a1)
00024268 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
0002426e 303c00cc	move.w	#SndID_Spring,d0
00024272 4ef900001370	jmp	(PlaySound).l
00024278 4e75	rts	
0002427a 117c00000036	move.b	#0,objoff_36(a0)
00024280 323c001f	move.w	#31,d1
00024284 343c000c	move.w	#12,d2
00024288 363c000d	move.w	#13,d3
0002428c 38280008	move.w	x_pos(a0),d4
00024290 43f8b000	lea	(MainCharacter).w,a1
00024294 7c03	moveq	#p1_standing_bit,d6
00024296 48e77800	movem.l	d1-d4,-(sp)
0002429e 0c440001	cmpi.w	#1,d4
000242a2 661c	bne.s	loc_242C0
000242a4 12280022	move.b	status(a0),d1
000242a8 34280008	move.w	x_pos(a0),d2
000242ac 94690008	sub.w	x_pos(a1),d2
000242b0 6504	bcs.s	loc_242B6
000242b2 0a010001	eori.b	#1<<status.player.x_flip,d1
000242b6 02010001	andi.b	#1<<status.player.x_flip,d1
000242ba 6604	bne.s	loc_242C0
000242bc 6100007e	bsr.w	loc_2433C
000242c0 4cdf001e	movem.l	(sp)+,d1-d4
000242c4 43f8b040	lea	(Sidekick).w,a1
000242c8 7c04	moveq	#p2_standing_bit,d6
000242ce 0c440001	cmpi.w	#1,d4
000242d2 661a	bne.s	loc_242EE
000242d4 12280022	move.b	status(a0),d1
000242d8 34280008	move.w	x_pos(a0),d2
000242dc 94690008	sub.w	x_pos(a1),d2
000242e0 6504	bcs.s	loc_242E6
000242e2 0a010001	eori.b	#1<<status.player.x_flip,d1
000242e6 02010001	andi.b	#1<<status.player.x_flip,d1
000242ea 6602	bne.s	loc_242EE
000242ec 614e	bsr.s	loc_2433C
000242ee 4a280036	tst.b	objoff_36(a0)
000242f2 6646	bne.s	return_2433A
000242f4 30280034	move.w	obj45_original_x_pos(a0),d0
000242f8 b0680008	cmp.w	x_pos(a0),d0
000242fc 673c	beq.s	return_2433A
000242fe 641c	bhs.s	loc_2431C
00024300 5928001a	subq.b	#4,mapping_frame(a0)
00024304 59680008	subq.w	#4,x_pos(a0)
00024308 b0680008	cmp.w	x_pos(a0),d0
0002430c 6528	blo.s	loc_24336
0002430e 117c000a001a	move.b	#$A,mapping_frame(a0)
00024314 316800340008	move.w	obj45_original_x_pos(a0),x_pos(a0)
0002431a 601a	bra.s	loc_24336
0002431c 5928001a	subq.b	#4,mapping_frame(a0)
00024320 58680008	addq.w	#4,x_pos(a0)
00024324 b0680008	cmp.w	x_pos(a0),d0
00024328 640c	bhs.s	loc_24336
0002432a 117c000a001a	move.b	#$A,mapping_frame(a0)
00024330 316800340008	move.w	obj45_original_x_pos(a0),x_pos(a0)
00024336 61000098	bsr.w	Obj45_LaunchCharacterHorizontal
0002433a 4e75	rts	
0002433c 082800000022	btst	#status.npc.x_flip,status(a0)
00024342 6734	beq.s	loc_24378
00024344 082900000022	btst	#status.player.x_flip,status(a1)
0002434a 66000082	bne.w	return_243CE
0002434e 4a40	tst.w	d0
00024350 6600000c	bne.w	loc_2435E
00024354 4a690014	tst.w	inertia(a1)
00024358 6774	beq.s	return_243CE
0002435a 6a6c	bpl.s	loc_243C8
0002435c 6070	bra.s	return_243CE
0002435e 30280034	move.w	obj45_original_x_pos(a0),d0
00024362 06400012	addi.w	#$12,d0
00024366 b0680008	cmp.w	x_pos(a0),d0
0002436a 675c	beq.s	loc_243C8
0002436c 52680008	addq.w	#1,x_pos(a0)
00024370 7001	moveq	#1,d0
00024372 323c0040	move.w	#$40,d1
00024376 602e	bra.s	loc_243A6
00024378 082900000022	btst	#status.player.x_flip,status(a1)
0002437e 674e	beq.s	return_243CE
00024380 4a40	tst.w	d0
00024382 6600000a	bne.w	loc_2438E
00024386 4a690014	tst.w	inertia(a1)
0002438a 6b3c	bmi.s	loc_243C8
0002438c 6040	bra.s	return_243CE
0002438e 30280034	move.w	obj45_original_x_pos(a0),d0
00024392 04400012	subi.w	#$12,d0
00024396 b0680008	cmp.w	x_pos(a0),d0
0002439a 672c	beq.s	loc_243C8
0002439c 53680008	subq.w	#1,x_pos(a0)
000243a0 70ff	moveq	#-1,d0
000243a2 323cffc0	move.w	#-$40,d1
000243a6 d1690008	add.w	d0,x_pos(a1)
000243aa 33410014	move.w	d1,inertia(a1)
000243ae 337c00000010	move.w	#0,x_vel(a1)
000243b4 30280034	move.w	obj45_original_x_pos(a0),d0
000243b8 90680008	sub.w	x_pos(a0),d0
000243bc 6402	bcc.s	loc_243C0
000243be 4440	neg.w	d0
000243c0 0640000a	addi.w	#$A,d0
000243c4 1140001a	move.b	d0,mapping_frame(a0)
000243c8 117c00010036	move.b	#1,objoff_36(a0)
000243ce 4e75	rts	
000243d0 10280022	move.b	status(a0),d0
000243d4 02000060	andi.b	#pushing_mask,d0
000243d8 670000f6	beq.w	return_244D0
000243dc 43f8b000	lea	(MainCharacter).w,a1
000243e0 7c05	moveq	#p1_pushing_bit,d6
000243e2 6106	bsr.s	loc_243EA
000243e4 43f8b040	lea	(Sidekick).w,a1
000243e8 7c06	moveq	#p2_pushing_bit,d6
000243ea 0da80022	bclr	d6,status(a0)
000243ee 670000e0	beq.w	return_244D0
000243f2 30280034	move.w	obj45_original_x_pos(a0),d0
000243f6 90680008	sub.w	x_pos(a0),d0
000243fa 6402	bcc.s	loc_243FE
000243fc 4440	neg.w	d0
000243fe 0640000a	addi.w	#$A,d0
00024402 ef48	lsl.w	#7,d0
00024404 4440	neg.w	d0
00024406 33400010	move.w	d0,x_vel(a1)
0002440a 59690008	subq.w	#4,x_pos(a1)
0002440e 08e900000022	bset	#status.player.x_flip,status(a1)
00024414 082800000022	btst	#status.npc.x_flip,status(a0)
0002441a 6610	bne.s	loc_2442C
0002441c 08a900000022	bclr	#status.player.x_flip,status(a1)
00024428 44690010	neg.w	x_vel(a1)
0002442c 337c000f002e	move.w	#$F,move_lock(a1)
00024432 336900100014	move.w	x_vel(a1),inertia(a1)
00024438 082900020022	btst	#status.player.rolling,status(a1)
0002443e 6606	bne.s	loc_24446
00024440 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
00024446 10280028	move.b	subtype(a0),d0
0002444a 6a06	bpl.s	loc_24452
0002444c 337c00000012	move.w	#0,y_vel(a1)
00024452 08000000	btst	#0,d0
00024456 673a	beq.s	loc_24492
00024458 337c00010014	move.w	#1,inertia(a1)
0002445e 137c00010027	move.b	#1,flip_angle(a1)
00024464 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
0002446a 137c0001002c	move.b	#1,flips_remaining(a1)
00024470 137c0008002d	move.b	#8,flip_speed(a1)
00024476 08000001	btst	#1,d0
0002447a 6606	bne.s	loc_24482
0002447c 137c0003002c	move.b	#3,flips_remaining(a1)
00024482 082900000022	btst	#status.player.x_flip,status(a1)
00024488 6708	beq.s	loc_24492
0002448a 44290027	neg.b	flip_angle(a1)
0002448e 44690014	neg.w	inertia(a1)
00024492 0200000c	andi.b	#$C,d0
00024496 0c000004	cmpi.b	#4,d0
0002449a 660c	bne.s	loc_244A8
0002449c 137c000c003e	move.b	#$C,top_solid_bit(a1)
000244a2 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
000244a8 0c000008	cmpi.b	#8,d0
000244ac 660c	bne.s	loc_244BA
000244ae 137c000e003e	move.b	#$E,top_solid_bit(a1)
000244b4 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
000244ba 08a900050022	bclr	#status.player.pushing,status(a1)
000244c0 137c0001001d	move.b	#AniIDSonAni_Run,prev_anim(a1)
000244c6 303c00cc	move.w	#SndID_Spring,d0
000244ca 4ef900001370	jmp	(PlaySound).l
000244d0 4e75	rts	
00024a16 7000	moveq	#0,d0
00024a18 10280024	move.b	routine(a0),d0
00024a1c 323b0006	move.w	Obj46_Index(pc,d0.w),d1
00024a20 4efb1002	jmp	Obj46_Index(pc,d1.w)
00024a2c 45f8fc00	lea	(Object_Respawn_Table).w,a2
00024a30 7000	moveq	#0,d0
00024a32 10280023	move.b	respawn_index(a0),d0
00024a36 6710	beq.s	+
00024a38 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
00024a3e 08f200000002	bset	#0,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
00024a44 6600027e	bne.w	JmpTo25_DeleteObject
00024a48 54280024	addq.b	#2,routine(a0)
00024a4c 117c000f0016	move.b	#$F,y_radius(a0)
00024a52 117c000f0017	move.b	#$F,x_radius(a0)
00024a58 217c00024c520004	move.l	#Obj46_MapUnc_24C52,mappings(a0)
00024a60 317c63540002	move.w	#make_art_tile(ArtTile_ArtNem_BallThing,3,0),art_tile(a0)
00024a6a 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00024a70 117c00030018	move.b	#3,priority(a0)
00024a76 316800080034	move.w	x_pos(a0),objoff_34(a0)
00024a7c 3168000c0036	move.w	y_pos(a0),objoff_36(a0)
00024a82 117c00100019	move.b	#$10,width_pixels(a0)
00024a88 117c0000001a	move.b	#0,mapping_frame(a0)
00024a8e 317c00000014	move.w	#0,objoff_14(a0)
00024a94 117c0001001f	move.b	#1,objoff_1F(a0)
00024a9e 6646	bne.s	+
00024aa6 5c290024	addq.b	#6,routine(a1)
00024aaa 336800080008	move.w	x_pos(a0),x_pos(a1)
00024ab0 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00024ab6 06690012000c	addi.w	#$12,y_pos(a1)
00024abc 237c0002451a0004	move.l	#Obj45_MapUnc_2451A,mappings(a1)
00024ac4 337c43c50002	move.w	#make_art_tile(ArtTile_ArtNem_PushSpring,2,0),art_tile(a1)
00024aca 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
00024ad0 137c00100019	move.b	#$10,width_pixels(a1)
00024ad6 137c00040018	move.b	#4,priority(a1)
00024adc 137c0009001a	move.b	#9,mapping_frame(a1)
00024ae2 2348003c	move.l	a0,objoff_3C(a1)
00024ae6 2149003c	move.l	a1,objoff_3C(a0)
00024aea 08380006f607	btst	#button_A,(Ctrl_2_Press).w
00024af0 6612	bne.s	+
00024af2 45f8f7e0	lea	(ButtonVine_Trigger).w,a2
00024af6 7000	moveq	#0,d0
00024af8 10280028	move.b	subtype(a0),d0
00024afc e848	lsr.w	#4,d0
00024afe 4a320000	tst.b	(a2,d0.w)
00024b02 672c	beq.s	++
00024b04 54280024	addq.b	#2,routine(a0)
00024b08 08e800010022	bset	#status.npc.y_flip,status(a0)
00024b0e 317cfd000012	move.w	#-$300,y_vel(a0)
00024b14 317c01000014	move.w	#$100,objoff_14(a0)
00024b1a 2268003c	movea.l	objoff_3C(a0),a1
00024b1e 137c00010030	move.b	#1,objoff_30(a1)
00024b24 082800000022	btst	#status.npc.x_flip,status(a0)
00024b2a 6704	beq.s	+
00024b2c 44680014	neg.w	objoff_14(a0)
00024b30 610000be	bsr.w	loc_24BF0
00024b38 3f280008	move.w	x_pos(a0),-(sp)
00024b40 082800010022	btst	#status.npc.y_flip,status(a0)
00024b46 6744	beq.s	loc_24B8C
00024b48 066800180012	addi.w	#$18,y_vel(a0)
00024b4e 6b3a	bmi.s	+
00024b50 3038eece	move.w	(Camera_Max_Y_pos).w,d0
00024b54 064000e0	addi.w	#screen_height,d0
00024b58 b068000c	cmp.w	y_pos(a0),d0
00024b5c 6566	blo.s	loc_24BC4
00024b5e 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00024b64 4a41	tst.w	d1
00024b66 6a000022	bpl.w	+
00024b6a d368000c	add.w	d1,y_pos(a0)
00024b6e 42680012	clr.w	y_vel(a0)
00024b72 08a800010022	bclr	#status.npc.y_flip,status(a0)
00024b78 317c01000010	move.w	#$100,x_vel(a0)
00024b7e 082800000022	btst	#status.npc.x_flip,status(a0)
00024b84 6704	beq.s	+
00024b86 44680010	neg.w	x_vel(a0)
00024b8a 6018	bra.s	loc_24BA4
00024b8c 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00024b92 0c410008	cmpi.w	#8,d1
00024b96 6d08	blt.s	loc_24BA0
00024b98 08e800010022	bset	#status.npc.y_flip,status(a0)
00024b9e 6004	bra.s	loc_24BA4
00024ba0 d368000c	add.w	d1,y_pos(a0)
00024ba4 7200	moveq	#0,d1
00024ba6 12280019	move.b	width_pixels(a0),d1
00024baa 0641000b	addi.w	#$B,d1
00024bae 343c0010	move.w	#$10,d2
00024bb2 363c0011	move.w	#$11,d3
00024bb6 381f	move.w	(sp)+,d4
00024bbc 61000032	bsr.w	loc_24BF0
00024bc4 381f	move.w	(sp)+,d4
00024bc6 45f8fc00	lea	(Object_Respawn_Table).w,a2
00024bca 7000	moveq	#0,d0
00024bcc 10280023	move.b	respawn_index(a0),d0
00024bd0 6706	beq.s	BranchTo_JmpTo25_DeleteObject
00024bd2 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
00024bdc 4a280030	tst.b	objoff_30(a0)
00024be0 670a	beq.s	+
00024be2 5328001a	subq.b	#1,mapping_frame(a0)
00024be6 6604	bne.s	+
00024be8 42280030	clr.b	objoff_30(a0)
00024bf0 4a28001a	tst.b	mapping_frame(a0)
00024bf4 6708	beq.s	+
00024bf6 117c0000001a	move.b	#0,mapping_frame(a0)
00024bfc 4e75	rts	
00024bfe 10280014	move.b	objoff_14(a0),d0
00024c02 6726	beq.s	loc_24C2A
00024c04 6b2c	bmi.s	loc_24C32
00024c06 5328001e	subq.b	#1,anim_frame_duration(a0)
00024c0a 6a1e	bpl.s	loc_24C2A
00024c0c 4400	neg.b	d0
00024c0e 5000	addq.b	#8,d0
00024c10 6502	bcs.s	+
00024c12 7000	moveq	#0,d0
00024c14 1140001e	move.b	d0,anim_frame_duration(a0)
00024c18 1028001f	move.b	objoff_1F(a0),d0
00024c1c 5200	addq.b	#1,d0
00024c1e 0c000004	cmpi.b	#4,d0
00024c22 6602	bne.s	+
00024c24 7001	moveq	#1,d0
00024c26 1140001f	move.b	d0,objoff_1F(a0)
00024c2a 1168001f001a	move.b	objoff_1F(a0),mapping_frame(a0)
00024c30 4e75	rts	
00024c32 5328001e	subq.b	#1,anim_frame_duration(a0)
00024c36 6af2	bpl.s	loc_24C2A
00024c38 5000	addq.b	#8,d0
00024c3a 6502	bcs.s	+
00024c3c 7000	moveq	#0,d0
00024c3e 1140001e	move.b	d0,anim_frame_duration(a0)
00024c42 1028001f	move.b	objoff_1F(a0),d0
00024c46 5300	subq.b	#1,d0
00024c48 6602	bne.s	+
00024c4a 7003	moveq	#3,d0
00024c4c 1140001f	move.b	d0,objoff_1F(a0)
00024c50 60d8	bra.s	loc_24C2A
00024cc2 4e71	nop	
00024cc4 4ef9000164e6	jmp	(extractJmpToName("JmpTo25_DeleteObject")).l
00024cca 4ef900017fda	jmp	(extractJmpToName("JmpTo4_AllocateObject")).l
00024cd0 4ef9000163d2	jmp	(extractJmpToName("JmpTo11_MarkObjGone")).l
00024cd6 4ef900016d6e	jmp	(extractJmpToName("JmpTo20_Adjust2PArtPointer")).l
00024cdc 4ef900019718	jmp	(extractJmpToName("JmpTo5_SolidObject")).l
00024ce2 4ef90001978e	jmp	(extractJmpToName("JmpTo_SolidObject_Always_SingleCharacter")).l
00024ce8 4ef900019880	jmp	(extractJmpToName("JmpTo_SolidObject45")).l
00024cee 4ef9000163ac	jmp	(extractJmpToName("JmpTo9_ObjectMove")).l
00024cf4 7000	moveq	#0,d0
00024cf6 10280024	move.b	routine(a0),d0
00024cfa 323b0006	move.w	Obj47_Index(pc,d0.w),d1
00024cfe 4efb1002	jmp	Obj47_Index(pc,d1.w)
00024d06 54280024	addq.b	#2,routine(a0)
00024d0a 217c00024d960004	move.l	#Obj47_MapUnc_24D96,mappings(a0)
00024d12 317c04240002	move.w	#make_art_tile(ArtTile_ArtNem_Button,0,0),art_tile(a0)
00024d1c 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00024d22 117c00100019	move.b	#$10,width_pixels(a0)
00024d28 117c00040018	move.b	#4,priority(a0)
00024d2e 5868000c	addq.w	#4,y_pos(a0)
00024d32 4a280001	tst.b	render_flags(a0)
00024d36 6a5a	bpl.s	BranchTo_JmpTo12_MarkObjGone
00024d38 323c001b	move.w	#$1B,d1
00024d3c 343c0004	move.w	#4,d2
00024d40 363c0005	move.w	#5,d3
00024d44 38280008	move.w	x_pos(a0),d4
00024d4c 117c0000001a	move.b	#0,mapping_frame(a0)
00024d52 10280028	move.b	subtype(a0),d0
00024d56 0240000f	andi.w	#$F,d0
00024d5a 47f8f7e0	lea	(ButtonVine_Trigger).w,a3
00024d5e 47f30000	lea	(a3,d0.w),a3
00024d62 7600	moveq	#0,d3
00024d64 082800060028	btst	#6,subtype(a0)
00024d6a 6702	beq.s	+
00024d6c 7607	moveq	#7,d3
00024d6e 10280022	move.b	status(a0),d0
00024d72 02000018	andi.b	#standing_mask,d0
00024d76 6604	bne.s	+
00024d78 0793	bclr	d3,(a3)
00024d7a 6016	bra.s	BranchTo_JmpTo12_MarkObjGone
00024d7c 4a13	tst.b	(a3)
00024d7e 660a	bne.s	+
00024d80 303c00cd	move.w	#SndID_Blip,d0
00024d84 4eb900001370	jsr	(PlaySound).l
00024d8a 07d3	bset	d3,(a3)
00024d8c 117c0001001a	move.b	#1,mapping_frame(a0)
00024dba 4e71	nop	
00024dbc 4ef9000163d2	jmp	(extractJmpToName("JmpTo12_MarkObjGone")).l
00024dc2 4ef900016d6e	jmp	(extractJmpToName("JmpTo21_Adjust2PArtPointer")).l
00024dc8 4ef900019718	jmp	(extractJmpToName("JmpTo6_SolidObject")).l
00024dd0 7000	moveq	#0,d0
00024dd2 10280024	move.b	routine(a0),d0
00024dd6 323b0006	move.w	Obj3D_Index(pc,d0.w),d1
00024dda 4efb1002	jmp	Obj3D_Index(pc,d1.w)
00024de6 54280024	addq.b	#2,routine(a0)
00024dea 217c000250ba0004	move.l	#Obj3D_MapUnc_250BA,mappings(a0)
00024df2 317c63320002	move.w	#make_art_tile(ArtTile_ArtNem_StripedBlocksVert,3,0),art_tile(a0)
00024df8 4a280028	tst.b	subtype(a0)
00024dfc 670c	beq.s	+
00024dfe 317c63ff0002	move.w	#make_art_tile(ArtTile_ArtNem_StripedBlocksHoriz,3,0),art_tile(a0)
00024e04 117c0002001a	move.b	#2,mapping_frame(a0)
00024e0e 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00024e14 117c00100019	move.b	#$10,width_pixels(a0)
00024e1a 08e800070022	bset	#status.npc.no_balancing,status(a0)
00024e20 117c00040018	move.b	#4,priority(a0)
00024e26 1178b01c0032	move.b	(MainCharacter+anim).w,objoff_32(a0)
00024e2c 1178b05c0033	move.b	(Sidekick+anim).w,objoff_33(a0)
00024e32 3178b0120034	move.w	(MainCharacter+y_vel).w,objoff_34(a0)
00024e38 3178b0520036	move.w	(Sidekick+y_vel).w,objoff_36(a0)
00024e3e 323c001b	move.w	#$1B,d1
00024e42 343c0010	move.w	#$10,d2
00024e46 363c0011	move.w	#$11,d3
00024e4a 38280008	move.w	x_pos(a0),d4
00024e52 10280022	move.b	status(a0),d0
00024e56 02000018	andi.b	#standing_mask,d0
00024e5a 6604	bne.s	loc_24E60
00024e60 0c000018	cmpi.b	#standing_mask,d0
00024e64 6630	bne.s	loc_24E96
00024e66 0c2800020032	cmpi.b	#AniIDSonAni_Roll,objoff_32(a0)
00024e6c 6708	beq.s	loc_24E76
00024e6e 0c2800020033	cmpi.b	#AniIDSonAni_Roll,objoff_33(a0)
00024e74 66e6	bne.s	BranchTo_JmpTo13_MarkObjGone
00024e76 43f8b000	lea	(MainCharacter).w,a1
00024e7a 10280032	move.b	objoff_32(a0),d0
00024e7e 32280034	move.w	objoff_34(a0),d1
00024e82 612e	bsr.s	loc_24EB2
00024e84 43f8b040	lea	(Sidekick).w,a1
00024e88 10280033	move.b	objoff_33(a0),d0
00024e8c 32280036	move.w	objoff_36(a0),d1
00024e90 6120	bsr.s	loc_24EB2
00024e92 60000070	bra.w	loc_24F04
00024e96 1200	move.b	d0,d1
00024e98 02010008	andi.b	#p1_standing,d1
00024e9c 674a	beq.s	loc_24EE8
00024e9e 0c2800020032	cmpi.b	#AniIDSonAni_Roll,objoff_32(a0)
00024ea4 66b6	bne.s	BranchTo_JmpTo13_MarkObjGone
00024ea6 43f8b000	lea	(MainCharacter).w,a1
00024eaa 32280034	move.w	objoff_34(a0),d1
00024eae 6108	bsr.s	loc_24EB8
00024eb0 6052	bra.s	loc_24F04
00024eb2 0c000002	cmpi.b	#AniIDSonAni_Roll,d0
00024eb6 661c	bne.s	loc_24ED4
00024eb8 08e900020022	bset	#status.player.rolling,status(a1)
00024ebe 137c000e0016	move.b	#$E,y_radius(a1)
00024ec4 137c00070017	move.b	#7,x_radius(a1)
00024eca 137c0002001c	move.b	#AniIDSonAni_Roll,anim(a1)
00024ed0 33410012	move.w	d1,y_vel(a1)
00024ed4 08e900010022	bset	#status.player.in_air,status(a1)
00024eda 08a900030022	bclr	#status.player.on_object,status(a1)
00024ee0 137c00020024	move.b	#2,routine(a1)
00024ee6 4e75	rts	
00024ee8 02000010	andi.b	#p2_standing,d0
00024eec 6700ff6e	beq.w	BranchTo_JmpTo13_MarkObjGone
00024ef0 0c2800020033	cmpi.b	#AniIDSonAni_Roll,objoff_33(a0)
00024ef6 6600ff64	bne.w	BranchTo_JmpTo13_MarkObjGone
00024efa 43f8b040	lea	(Sidekick).w,a1
00024efe 32280036	move.w	objoff_36(a0),d1
00024f02 61b4	bsr.s	loc_24EB8
00024f04 022800e70022	andi.b	#~standing_mask,status(a0)
00024f0e 6618	bne.s	loc_24F28
00024f10 7000	moveq	#0,d0
00024f12 323c000a	move.w	#bytesToLcnt(objoff_2C),d1
00024f16 23b000000000	move.l	(a0,d0.w),(a1,d0.w)
00024f1c 5840	addq.w	#4,d0
00024f1e 51c9fff6	dbf	d1,loc_24F16
00024f22 137c00060024	move.b	#6,routine(a1)
00024f28 49f90002507a	lea	(word_2507A).l,a4
00024f2e 5228001a	addq.b	#1,mapping_frame(a0)
00024f32 720f	moveq	#$F,d1
00024f34 343c0018	move.w	#$18,d2
00024f40 066800180012	addi.w	#$18,y_vel(a0)
00024f46 4a280001	tst.b	render_flags(a0)
00024f4a 6a0002c6	bpl.w	JmpTo26_DeleteObject
00024f52 43f8b000	lea	(MainCharacter).w,a1
00024f56 49e8002c	lea	objoff_2C(a0),a4
00024f5a 6118	bsr.s	loc_24F74
00024f5c 43f8b040	lea	(Sidekick).w,a1
00024f60 49e80036	lea	objoff_36(a0),a4
00024f64 610e	bsr.s	loc_24F74
00024f66 1028002c	move.b	objoff_2C(a0),d0
00024f6a d0280036	add.b	objoff_36(a0),d0
00024f6e 670002b4	beq.w	JmpTo3_MarkObjGone3
00024f72 4e75	rts	
00024f74 7000	moveq	#0,d0
00024f76 1014	move.b	(a4),d0
00024f78 303b0006	move.w	off_24F80(pc,d0.w),d0
00024f7c 4efb0002	jmp	off_24F80(pc,d0.w)
00024f84 30290008	move.w	x_pos(a1),d0
00024f88 90680008	sub.w	x_pos(a0),d0
00024f8c 06400010	addi.w	#$10,d0
00024f90 0c400020	cmpi.w	#$20,d0
00024f94 6400009e	bhs.w	return_25034
00024f98 3229000c	move.w	y_pos(a1),d1
00024f9c 9268000c	sub.w	y_pos(a0),d1
00024fa0 4a280028	tst.b	subtype(a0)
00024fa4 6704	beq.s	loc_24FAA
00024fa6 06410010	addi.w	#$10,d1
00024faa 0c410010	cmpi.w	#$10,d1
00024fae 64000084	bhs.w	return_25034
00024fb2 b2fcb040	cmpa.w	#Sidekick,a1
00024fb6 660a	bne.s	loc_24FC2
00024fb8 0c780004f708	cmpi.w	#4,(Tails_CPU_routine).w
00024fbe 67000074	beq.w	return_25034
00024fc2 5414	addq.b	#2,(a4)
00024fc4 137c0081002a	move.b	#$81,obj_control(a1)
00024fca 137c0002001c	move.b	#AniIDSonAni_Roll,anim(a1)
00024fd0 337c08000014	move.w	#$800,inertia(a1)
00024fd6 4a280028	tst.b	subtype(a0)
00024fda 6714	beq.s	loc_24FF0
00024fdc 336800080008	move.w	x_pos(a0),x_pos(a1)
00024fe2 337c00000010	move.w	#0,x_vel(a1)
00024fe8 337cf8000012	move.w	#-$800,y_vel(a1)
00024fee 6012	bra.s	loc_25002
00024ff0 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00024ff6 337c08000010	move.w	#$800,x_vel(a1)
00024ffc 337c00000012	move.w	#0,y_vel(a1)
00025002 08a800050022	bclr	#status.npc.p1_pushing,status(a0)
00025008 08a900050022	bclr	#status.player.pushing,status(a1)
0002500e 08e900010022	bset	#status.player.in_air,status(a1)
00025014 08e900030022	bset	#status.player.on_object,status(a1)
0002501a 3008	move.w	a0,d0
0002501c 0440b000	subi.w	#Object_RAM,d0
00025020 ec48	lsr.w	#object_size_bits,d0
00025022 0240007f	andi.w	#$7F,d0
00025026 1340003d	move.b	d0,interact(a1)
0002502a 303c00be	move.w	#SndID_Roll,d0
0002502e 4eb900001370	jsr	(PlaySound).l
00025034 4e75	rts	
00025036 4a290001	tst.b	render_flags(a1)
0002503a 6b18	bmi.s	Obj3D_MoveCharacter
0002503c 137c0000002a	move.b	#0,obj_control(a1)
00025042 08e900010022	bset	#status.player.in_air,status(a1)
00025048 08a900030022	bclr	#status.player.on_object,status(a1)
0002504e 18bc0000	move.b	#0,(a4)
00025052 4e75	rts	
00025054 24290008	move.l	x_pos(a1),d2
00025058 2629000c	move.l	y_pos(a1),d3
0002505c 30290010	move.w	x_vel(a1),d0
00025060 48c0	ext.l	d0
00025062 e180	asl.l	#8,d0
00025064 d480	add.l	d0,d2
00025066 30290012	move.w	y_vel(a1),d0
0002506a 48c0	ext.l	d0
0002506c e180	asl.l	#8,d0
0002506e d680	add.l	d0,d3
00025070 23420008	move.l	d2,x_pos(a1)
00025074 2343000c	move.l	d3,y_pos(a1)
00025078 4e75	rts	
0002520a 4e71	nop	
0002520c 4ef9000164f4	jmp	(extractJmpToName("JmpTo14_DisplaySprite")).l
00025212 4ef9000164e6	jmp	(extractJmpToName("JmpTo26_DeleteObject")).l
00025218 4ef9000163d2	jmp	(extractJmpToName("JmpTo13_MarkObjGone")).l
0002521e 4ef900017ffa	jmp	(extractJmpToName("JmpTo9_AllocateObjectAfterCurrent")).l
00025224 4ef90001643e	jmp	(extractJmpToName("JmpTo3_MarkObjGone3")).l
0002522a 4ef900016d6e	jmp	(extractJmpToName("JmpTo22_Adjust2PArtPointer")).l
00025230 4ef900015e18	jmp	(extractJmpToName("JmpTo2_BreakObjectToPieces")).l
00025236 4ef900019718	jmp	(extractJmpToName("JmpTo7_SolidObject")).l
0002523c 4ef9000163ac	jmp	(extractJmpToName("JmpTo10_ObjectMove")).l
00025244 7000	moveq	#0,d0
00025246 10280024	move.b	routine(a0),d0
0002524a 323b0016	move.w	Obj48_Index(pc,d0.w),d1
0002524e 4ebb1012	jsr	Obj48_Index(pc,d1.w)
00025252 1028002c	move.b	objoff_2C(a0),d0
00025256 d0280036	add.b	objoff_36(a0),d0
0002525a 6700042a	beq.w	JmpTo14_MarkObjGone
00025276 54280024	addq.b	#2,routine(a0)
0002527a 217c000254fe0004	move.l	#Obj48_MapUnc_254FE,mappings(a0)
00025282 317c63680002	move.w	#make_art_tile(ArtTile_ArtNem_LaunchBall,3,0),art_tile(a0)
0002528c 10280028	move.b	subtype(a0),d0
00025290 0240000f	andi.w	#$F,d0
00025294 082800000022	btst	#status.npc.x_flip,status(a0)
0002529a 6702	beq.s	+
0002529c 5840	addq.w	#4,d0
0002529e d040	add.w	d0,d0
000252a0 117b00c40001	move.b	Obj48_Properties(pc,d0.w),render_flags(a0)
000252a6 117b00bf003f	move.b	Obj48_Properties+1(pc,d0.w),objoff_3F(a0)
000252ac 6706	beq.s	+
000252ae 117c0001003e	move.b	#1,objoff_3E(a0)
000252b4 1168003f001a	move.b	objoff_3F(a0),mapping_frame(a0)
000252ba 117c00280019	move.b	#$28,width_pixels(a0)
000252c0 117c00010018	move.b	#1,priority(a0)
000252c6 43f8b000	lea	(MainCharacter).w,a1
000252ca 49e8002c	lea	objoff_2C(a0),a4
000252ce 742c	moveq	#objoff_2C,d2
000252d0 610a	bsr.s	loc_252DC
000252d2 43f8b040	lea	(Sidekick).w,a1
000252d6 49e80036	lea	objoff_36(a0),a4
000252da 7436	moveq	#objoff_36,d2
000252dc 7000	moveq	#0,d0
000252de 1014	move.b	(a4),d0
000252e0 303b0006	move.w	Obj48_Modes(pc,d0.w),d0
000252e4 4efb0002	jmp	Obj48_Modes(pc,d0.w)
000252f0 4a78fe08	tst.w	(Debug_placement_mode).w
000252f4 660000ce	bne.w	return_253C4
000252f8 30290008	move.w	x_pos(a1),d0
000252fc 90680008	sub.w	x_pos(a0),d0
00025300 06400010	addi.w	#$10,d0
00025304 0c400020	cmpi.w	#$20,d0
00025308 640000ba	bhs.w	return_253C4
0002530c 3229000c	move.w	y_pos(a1),d1
00025310 9268000c	sub.w	y_pos(a0),d1
00025314 06410010	addi.w	#$10,d1
00025318 0c410020	cmpi.w	#$20,d1
0002531c 640000a6	bhs.w	return_253C4
00025320 b2fcb040	cmpa.w	#Sidekick,a1
00025324 660a	bne.s	+
00025326 0c780004f708	cmpi.w	#4,(Tails_CPU_routine).w
0002532c 67000096	beq.w	return_253C4
00025330 0c2900060024	cmpi.b	#6,routine(a1)
00025336 6400008c	bhs.w	return_253C4
0002533a 4a78fe08	tst.w	(Debug_placement_mode).w
0002533e 66000084	bne.w	return_253C4
00025342 082900030022	btst	#status.player.on_object,status(a1)
00025348 6716	beq.s	+
0002534a 7000	moveq	#0,d0
0002534c 1029003d	move.b	interact(a1),d0
00025350 ed48	lsl.w	#object_size_bits,d0
00025352 0680ffffb000	addi.l	#Object_RAM,d0
00025358 2640	movea.l	d0,a3
0002535a 17bc00002000	move.b	#0,(a3,d2.w)
00025360 3008	move.w	a0,d0
00025362 0440b000	subi.w	#Object_RAM,d0
00025366 ec48	lsr.w	#object_size_bits,d0
00025368 0240007f	andi.w	#$7F,d0
0002536c 1340003d	move.b	d0,interact(a1)
00025370 5414	addq.b	#2,(a4)
00025372 336800080008	move.w	x_pos(a0),x_pos(a1)
00025378 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002537e 137c0081002a	move.b	#$81,obj_control(a1)
00025384 137c0002001c	move.b	#2,anim(a1)
0002538a 337c10000014	move.w	#$1000,inertia(a1)
00025390 337c00000010	move.w	#0,x_vel(a1)
00025396 337c00000012	move.w	#0,y_vel(a1)
0002539c 08a800050022	bclr	#status.npc.p1_pushing,status(a0)
000253a2 08a900050022	bclr	#status.player.pushing,status(a1)
000253a8 08e900010022	bset	#status.player.in_air,status(a1)
000253ae 08e900030022	bset	#status.player.on_object,status(a1)
000253b4 1168003f001a	move.b	objoff_3F(a0),mapping_frame(a0)
000253ba 303c00be	move.w	#SndID_Roll,d0
000253be 4eb900001370	jsr	(PlaySound).l
000253c4 4e75	rts	
000253c6 4a28003e	tst.b	objoff_3E(a0)
000253ca 6622	bne.s	loc_253EE
000253cc 0c280007001a	cmpi.b	#7,mapping_frame(a0)
000253d2 6734	beq.s	loc_25408
000253d4 5368001e	subq.w	#1,anim_frame_duration(a0)
000253d8 6a12	bpl.s	return_253EC
000253da 317c0007001e	move.w	#7,anim_frame_duration(a0)
000253e0 5228001a	addq.b	#1,mapping_frame(a0)
000253e4 0c280007001a	cmpi.b	#7,mapping_frame(a0)
000253ea 671c	beq.s	loc_25408
000253ec 4e75	rts	
000253ee 4a28001a	tst.b	mapping_frame(a0)
000253f2 6714	beq.s	loc_25408
000253f4 5368001e	subq.w	#1,anim_frame_duration(a0)
000253f8 6af2	bpl.s	return_253EC
000253fa 317c0007001e	move.w	#7,anim_frame_duration(a0)
00025400 5328001a	subq.b	#1,mapping_frame(a0)
00025404 6702	beq.s	loc_25408
00025406 4e75	rts	
00025408 5414	addq.b	#2,(a4)
0002540a 10280028	move.b	subtype(a0),d0
0002540e 5200	addq.b	#1,d0
00025410 082800000022	btst	#status.npc.x_flip,status(a0)
00025416 6702	beq.s	+
00025418 5500	subq.b	#2,d0
0002541a 02400003	andi.w	#3,d0
0002541e d040	add.w	d0,d0
00025420 d040	add.w	d0,d0
00025422 337b00400010	move.w	word_25464(pc,d0.w),x_vel(a1)
00025428 337b003c0012	move.w	word_25464+2(pc,d0.w),y_vel(a1)
0002542e 317c0003001e	move.w	#3,anim_frame_duration(a0)
00025434 4a280028	tst.b	subtype(a0)
00025438 6a28	bpl.s	return_25462
0002543a 137c0000002a	move.b	#0,obj_control(a1)
00025440 08e900010022	bset	#status.player.in_air,status(a1)
00025446 08a900030022	bclr	#status.player.on_object,status(a1)
0002544c 137c0000003c	move.b	#0,jumping(a1)
00025452 137c00020024	move.b	#2,routine(a1)
00025458 18bc0006	move.b	#6,(a4)
0002545c 317c0007003c	move.w	#7,objoff_3C(a0)
00025462 4e75	rts	
00025474 4a290001	tst.b	render_flags(a1)
00025478 6b18	bmi.s	loc_25492
0002547a 137c0000002a	move.b	#0,obj_control(a1)
00025480 08e900010022	bset	#status.player.in_air,status(a1)
00025486 08a900030022	bclr	#status.player.on_object,status(a1)
0002548c 18bc0000	move.b	#0,(a4)
00025490 4e75	rts	
00025492 0c280002002c	cmpi.b	#2,objoff_2C(a0)
00025498 6732	beq.s	Obj48_MoveCharacter
0002549a 0c2800020036	cmpi.b	#2,objoff_36(a0)
000254a0 672a	beq.s	Obj48_MoveCharacter
000254a2 5368001e	subq.w	#1,anim_frame_duration(a0)
000254a6 6a24	bpl.s	Obj48_MoveCharacter
000254a8 317c0001001e	move.w	#1,anim_frame_duration(a0)
000254ae 4a28003e	tst.b	objoff_3E(a0)
000254b2 670e	beq.s	loc_254C2
000254b4 0c280007001a	cmpi.b	#7,mapping_frame(a0)
000254ba 6710	beq.s	Obj48_MoveCharacter
000254bc 5228001a	addq.b	#1,mapping_frame(a0)
000254c0 600a	bra.s	Obj48_MoveCharacter
000254c2 4a28001a	tst.b	mapping_frame(a0)
000254c6 6704	beq.s	Obj48_MoveCharacter
000254c8 5328001a	subq.b	#1,mapping_frame(a0)
000254cc 24290008	move.l	x_pos(a1),d2
000254d0 2629000c	move.l	y_pos(a1),d3
000254d4 30290010	move.w	x_vel(a1),d0
000254d8 48c0	ext.l	d0
000254da e180	asl.l	#8,d0
000254dc d480	add.l	d0,d2
000254de 30290012	move.w	y_vel(a1),d0
000254e2 48c0	ext.l	d0
000254e4 e180	asl.l	#8,d0
000254e6 d680	add.l	d0,d3
000254e8 23420008	move.l	d2,x_pos(a1)
000254ec 2343000c	move.l	d3,y_pos(a1)
000254f0 4e75	rts	
000254f2 5368003c	subq.w	#1,objoff_3C(a0)
000254f6 6a04	bpl.s	+
000254f8 18bc0000	move.b	#0,(a4)
000254fc 4e75	rts	
0002567e 4e71	nop	
00025680 4ef9000164f4	jmp	(extractJmpToName("JmpTo15_DisplaySprite")).l
00025686 4ef9000163d2	jmp	(extractJmpToName("JmpTo14_MarkObjGone")).l
0002568c 4ef900016d6e	jmp	(extractJmpToName("JmpTo23_Adjust2PArtPointer")).l
00025694 7000	moveq	#0,d0
00025696 10280024	move.b	routine(a0),d0
0002569a 323b0006	move.w	Obj22_Index(pc,d0.w),d1
0002569e 4efb1002	jmp	Obj22_Index(pc,d1.w)
000256ac 54280024	addq.b	#2,routine(a0)
000256b0 217c000258040004	move.l	#Obj22_MapUnc_25804,mappings(a0)
000256b8 317c04170002	move.w	#make_art_tile(ArtTile_ArtNem_ArrowAndShooter,0,0),art_tile(a0)
000256c2 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000256c8 117c00030018	move.b	#3,priority(a0)
000256ce 117c00100019	move.b	#$10,width_pixels(a0)
000256d4 117c0001001a	move.b	#1,mapping_frame(a0)
000256da 0228000f0028	andi.b	#$F,subtype(a0)
000256e0 0c280002001c	cmpi.b	#2,anim(a0)
000256e6 671e	beq.s	Obj22_Animate
000256e8 7400	moveq	#0,d2
000256ea 43f8b000	lea	(MainCharacter).w,a1
000256ee 6124	bsr.s	Obj22_DetectPlayer
000256f0 43f8b040	lea	(Sidekick).w,a1
000256f4 611e	bsr.s	Obj22_DetectPlayer
000256f6 4a02	tst.b	d2
000256f8 6608	bne.s	+
000256fa 4a28001c	tst.b	anim(a0)
000256fe 6702	beq.s	+
00025700 7402	moveq	#2,d2
00025702 1142001c	move.b	d2,anim(a0)
00025706 43f9000257ee	lea	(Ani_obj22).l,a1
00025714 30280008	move.w	x_pos(a0),d0
00025718 90690008	sub.w	x_pos(a1),d0
0002571c 6402	bcc.s	+
0002571e 4440	neg.w	d0
00025720 0c400040	cmpi.w	#$40,d0
00025724 6402	bhs.s	+
00025726 7401	moveq	#1,d2
00025728 4e75	rts	
0002572e 6638	bne.s	+
00025736 5c290024	addq.b	#6,routine(a1)
0002573a 236800040004	move.l	mappings(a0),mappings(a1)
00025740 336800020002	move.w	art_tile(a0),art_tile(a1)
00025746 336800080008	move.w	x_pos(a0),x_pos(a1)
0002574c 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00025752 136800010001	move.b	render_flags(a0),render_flags(a1)
00025758 136800220022	move.b	status(a0),status(a1)
0002575e 303c00db	move.w	#SndID_PreArrowFiring,d0
00025762 4eb900001370	jsr	(PlaySound).l
00025768 55280024	subq.b	#2,routine(a0)
0002576c 43f9000257ee	lea	(Ani_obj22).l,a1
0002577a 54280024	addq.b	#2,routine(a0)
0002577e 117c00080016	move.b	#8,y_radius(a0)
00025784 117c00100017	move.b	#$10,x_radius(a0)
0002578a 117c00040018	move.b	#4,priority(a0)
00025790 117c009b0020	move.b	#$9B,collision_flags(a0)
00025796 117c00080019	move.b	#8,width_pixels(a0)
0002579c 117c0000001a	move.b	#0,mapping_frame(a0)
000257a2 317c04000010	move.w	#$400,x_vel(a0)
000257a8 082800000022	btst	#status.npc.x_flip,status(a0)
000257ae 6704	beq.s	+
000257b0 44680010	neg.w	x_vel(a0)
000257b4 303c00ae	move.w	#SndID_ArrowFiring,d0
000257b8 4eb900001370	jsr	(PlaySound).l
000257c2 082800000022	btst	#status.npc.x_flip,status(a0)
000257c8 6614	bne.s	loc_257DE
000257ca 76f8	moveq	#-8,d3
000257cc 610098b8	bsr.w	ObjCheckLeftWallDist
000257d0 4a41	tst.w	d1
000257d2 6b000006	bmi.w	BranchTo_JmpTo27_DeleteObject
000257de 7608	moveq	#8,d3
000257e0 6100971e	bsr.w	ObjCheckRightWallDist
000257e4 4a41	tst.w	d1
000257e6 6b00fff2	bmi.w	BranchTo_JmpTo27_DeleteObject
00025868 4ef9000164e6	jmp	(extractJmpToName("JmpTo27_DeleteObject")).l
0002586e 4ef900017fda	jmp	(extractJmpToName("JmpTo5_AllocateObject")).l
00025874 4ef9000163d2	jmp	(extractJmpToName("JmpTo15_MarkObjGone")).l
0002587a 4ef900016544	jmp	(extractJmpToName("JmpTo5_AnimateSprite")).l
00025880 4ef900016d6e	jmp	(extractJmpToName("JmpTo24_Adjust2PArtPointer")).l
00025886 4ef9000163ac	jmp	(extractJmpToName("JmpTo11_ObjectMove")).l
0002588c 7000	moveq	#0,d0
0002588e 10280024	move.b	routine(a0),d0
00025892 323b0006	move.w	Obj23_Index(pc,d0.w),d1
00025896 4efb1002	jmp	Obj23_Index(pc,d1.w)
0002589e 54280024	addq.b	#2,routine(a0)
000258a2 217c000259e60004	move.l	#Obj23_MapUnc_259E6,mappings(a0)
000258aa 317c20000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,1,0),art_tile(a0)
000258b4 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000258ba 117c00100019	move.b	#$10,width_pixels(a0)
000258c0 117c00200016	move.b	#$20,y_radius(a0)
000258c6 117c00040018	move.b	#4,priority(a0)
000258d0 6650	bne.s	Obj23_Main
000258d8 54290024	addq.b	#2,routine(a1)
000258dc 54290025	addq.b	#2,routine_secondary(a1)
000258e0 236800040004	move.l	mappings(a0),mappings(a1)
000258e6 336800020002	move.w	art_tile(a0),art_tile(a1)
000258ec 336800080008	move.w	x_pos(a0),x_pos(a1)
000258f2 336800080030	move.w	x_pos(a0),objoff_30(a1)
000258f8 3368000c000c	move.w	y_pos(a0),y_pos(a1)
000258fe 06690030000c	addi.w	#$30,y_pos(a1)
00025904 136800010001	move.b	render_flags(a0),render_flags(a1)
0002590a 137c00100019	move.b	#$10,width_pixels(a1)
00025910 137c00100016	move.b	#$10,y_radius(a1)
00025916 137c00040018	move.b	#4,priority(a1)
0002591c 137c0001001a	move.b	#1,mapping_frame(a1)
00025922 3f280008	move.w	x_pos(a0),-(sp)
00025926 61000020	bsr.w	loc_25948
0002592a 7200	moveq	#0,d1
0002592c 12280019	move.b	width_pixels(a0),d1
00025930 0641000b	addi.w	#$B,d1
00025934 7400	moveq	#0,d2
00025936 14280016	move.b	y_radius(a0),d2
0002593a 3602	move.w	d2,d3
0002593c 5243	addq.w	#1,d3
0002593e 381f	move.w	(sp)+,d4
00025948 7000	moveq	#0,d0
0002594a 10280025	move.b	routine_secondary(a0),d0
0002594e 323b0006	move.w	Obj23_Modes(pc,d0.w),d1
00025952 4efb1002	jmp	Obj23_Modes(pc,d1.w)
0002595e 4a78fe08	tst.w	(Debug_placement_mode).w
00025962 6628	bne.s	return_2598C
00025964 43f8b000	lea	(MainCharacter).w,a1
00025968 6104	bsr.s	loc_2596E
0002596a 43f8b040	lea	(Sidekick).w,a1
0002596e 30280008	move.w	x_pos(a0),d0
00025972 90690008	sub.w	x_pos(a1),d0
00025976 6402	bcc.s	+
00025978 4440	neg.w	d0
0002597a 0c400080	cmpi.w	#$80,d0
0002597e 640c	bhs.s	return_2598C
00025980 117c00040025	move.b	#4,routine_secondary(a0)
00025986 317c00080034	move.w	#8,objoff_34(a0)
0002598c 4e75	rts	
0002598e 30280034	move.w	objoff_34(a0),d0
00025992 5340	subq.w	#1,d0
00025994 6406	bcc.s	loc_2599C
00025996 54280025	addq.b	#2,routine_secondary(a0)
0002599a 4e75	rts	
0002599c 31400034	move.w	d0,objoff_34(a0)
000259a0 103b000e	move.b	byte_259B0(pc,d0.w),d0
000259a4 4880	ext.w	d0
000259a6 d0680030	add.w	objoff_30(a0),d0
000259aa 31400008	move.w	d0,x_pos(a0)
000259ae 4e75	rts	
000259bc 066800380012	addi.w	#$38,y_vel(a0)
000259c2 61009436	bsr.w	ObjCheckFloorDist
000259c6 4a41	tst.w	d1
000259c8 6a00001a	bpl.w	+
000259cc d368000c	add.w	d1,y_pos(a0)
000259d0 42680012	clr.w	y_vel(a0)
000259d4 3168000c0032	move.w	y_pos(a0),objoff_32(a0)
000259da 117c0002001a	move.b	#2,mapping_frame(a0)
000259e0 42280025	clr.b	routine_secondary(a0)
000259e4 4e75	rts	
00025a5a 7000	moveq	#0,d0
00025a5c 10280024	move.b	routine(a0),d0
00025a60 323b0006	move.w	Obj2B_Index(pc,d0.w),d1
00025a64 4efb1002	jmp	Obj2B_Index(pc,d1.w)
00025a6e 54280024	addq.b	#2,routine(a0)
00025a72 217c00025c6e0004	move.l	#Obj2B_MapUnc_25C6E,mappings(a0)
00025a7a 317c20000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,1,0),art_tile(a0)
00025a84 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00025a8a 117c00100019	move.b	#$10,width_pixels(a0)
00025a90 117c00180016	move.b	#$18,y_radius(a0)
00025a96 117c00040018	move.b	#4,priority(a0)
00025a9c 3f280008	move.w	x_pos(a0),-(sp)
00025aa0 61000086	bsr.w	loc_25B28
00025aa4 7200	moveq	#0,d1
00025aa6 12280019	move.b	width_pixels(a0),d1
00025aaa 0641000b	addi.w	#$B,d1
00025aae 7400	moveq	#0,d2
00025ab0 14280016	move.b	y_radius(a0),d2
00025ab4 3602	move.w	d2,d3
00025ab6 5243	addq.w	#1,d3
00025ab8 381f	move.w	(sp)+,d4
00025abe 10280022	move.b	status(a0),d0
00025ac2 02000018	andi.b	#standing_mask,d0
00025ac6 66000006	bne.w	loc_25ACE
00025ace 49f900025bbe	lea	(word_25BBE).l,a4
00025ad4 45f900025bb0	lea	(byte_25BB0).l,a2
00025ada 5e28001a	addq.b	#7,mapping_frame(a0)
00025ade 61000116	bsr.w	loc_25BF6
00025ae2 43f8b000	lea	(MainCharacter).w,a1
00025ae6 7c03	moveq	#p1_standing_bit,d6
00025ae8 610c	bsr.s	loc_25AF6
00025aea 43f8b040	lea	(Sidekick).w,a1
00025aee 5206	addq.b	#1,d6
00025af0 6104	bsr.s	loc_25AF6
00025af2 6000009a	bra.w	loc_25B8E
00025af6 0da80022	bclr	d6,status(a0)
00025afa 672a	beq.s	return_25B26
00025afc 08e900020022	bset	#status.player.rolling,status(a1)
00025b02 137c000e0016	move.b	#$E,y_radius(a1)
00025b08 137c00070017	move.b	#7,x_radius(a1)
00025b0e 137c0002001c	move.b	#AniIDSonAni_Roll,anim(a1)
00025b14 08e900010022	bset	#status.player.in_air,status(a1)
00025b1a 08a900030022	bclr	#status.player.on_object,status(a1)
00025b20 137c00020024	move.b	#2,routine(a1)
00025b26 4e75	rts	
00025b28 7000	moveq	#0,d0
00025b2a 10280025	move.b	routine_secondary(a0),d0
00025b2e 323b0006	move.w	off_25B36(pc,d0.w),d1
00025b32 4efb1002	jmp	off_25B36(pc,d1.w)
00025b3c 4a78fe08	tst.w	(Debug_placement_mode).w
00025b40 6622	bne.s	return_25B64
00025b42 43f8b000	lea	(MainCharacter).w,a1
00025b46 6104	bsr.s	loc_25B4C
00025b48 43f8b040	lea	(Sidekick).w,a1
00025b4c 30280008	move.w	x_pos(a0),d0
00025b50 90690008	sub.w	x_pos(a1),d0
00025b54 6402	bcc.s	loc_25B58
00025b56 4440	neg.w	d0
00025b58 0c400040	cmpi.w	#$40,d0
00025b5c 6406	bhs.s	return_25B64
00025b5e 117c00020025	move.b	#2,routine_secondary(a0)
00025b64 4e75	rts	
00025b66 53680034	subq.w	#1,objoff_34(a0)
00025b6a 6420	bcc.s	return_25B8C
00025b6c 317c00030034	move.w	#3,objoff_34(a0)
00025b72 5968000c	subq.w	#4,y_pos(a0)
00025b76 58280016	addq.b	#4,y_radius(a0)
00025b7a 5228001a	addq.b	#1,mapping_frame(a0)
00025b7e 0c280006001a	cmpi.b	#6,mapping_frame(a0)
00025b84 6606	bne.s	return_25B8C
00025b86 117c00040025	move.b	#4,routine_secondary(a0)
00025b8c 4e75	rts	
00025b8e 4a28003f	tst.b	objoff_3F(a0)
00025b92 6706	beq.s	loc_25B9A
00025b94 5328003f	subq.b	#1,objoff_3F(a0)
00025b98 600a	bra.s	loc_25BA4
00025b9e 066800180012	addi.w	#$18,y_vel(a0)
00025ba4 4a280001	tst.b	render_flags(a0)
00025ba8 6a000534	bpl.w	JmpTo28_DeleteObject
00025bf6 7000	moveq	#0,d0
00025bf8 1028001a	move.b	mapping_frame(a0),d0
00025bfc d040	add.w	d0,d0
00025bfe 26680004	movea.l	mappings(a0),a3
00025c02 d6f30000	adda.w	(a3,d0.w),a3
00025c06 321b	move.w	(a3)+,d1
00025c08 5341	subq.w	#1,d1
00025c0a 08e800050001	bset	#render_flags.static_mappings,render_flags(a0)
00025c14 1a280001	move.b	render_flags(a0),d5
00025c18 2248	movea.l	a0,a1
00025c1a 6008	bra.s	loc_25C24
00025c20 6642	bne.s	loc_25C64
00025c22 504b	addq.w	#8,a3
00025c24 137c00040024	move.b	#4,routine(a1)
00025c2e 234b0004	move.l	a3,mappings(a1)
00025c32 13450001	move.b	d5,render_flags(a1)
00025c36 336800080008	move.w	x_pos(a0),x_pos(a1)
00025c3c 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00025c42 336800020002	move.w	art_tile(a0),art_tile(a1)
00025c48 136800180018	move.b	priority(a0),priority(a1)
00025c4e 136800190019	move.b	width_pixels(a0),width_pixels(a1)
00025c54 335c0010	move.w	(a4)+,x_vel(a1)
00025c58 335c0012	move.w	(a4)+,y_vel(a1)
00025c5c 135a003f	move.b	(a2)+,objoff_3F(a1)
00025c60 51c9ffba	dbf	d1,loc_25C1C
00025c64 303c00cb	move.w	#SndID_SlowSmash,d0
00025c68 4ef900001370	jmp	(PlaySound).l
000260d6 4e71	nop	
000260d8 4ef9000164f4	jmp	(extractJmpToName("JmpTo16_DisplaySprite")).l
000260de 4ef9000164e6	jmp	(extractJmpToName("JmpTo28_DeleteObject")).l
000260e4 4ef9000163d2	jmp	(extractJmpToName("JmpTo16_MarkObjGone")).l
000260ea 4ef900017ffa	jmp	(extractJmpToName("JmpTo10_AllocateObjectAfterCurrent")).l
000260f0 4ef900016d6e	jmp	(extractJmpToName("JmpTo25_Adjust2PArtPointer")).l
000260f6 4ef900019718	jmp	(extractJmpToName("JmpTo8_SolidObject")).l
000260fc 4ef9000163ac	jmp	(extractJmpToName("JmpTo12_ObjectMove")).l
00026104 7000	moveq	#0,d0
00026106 10280024	move.b	routine(a0),d0
0002610a 323b0006	move.w	Obj2C_Index(pc,d0.w),d1
0002610e 4efb1002	jmp	Obj2C_Index(pc,d1.w)
0002611c 54280024	addq.b	#2,routine(a0)
00026120 7000	moveq	#0,d0
00026122 10280028	move.b	subtype(a0),d0
00026126 117b00f00020	move.b	Obj2C_CollisionFlags(pc,d0.w),collision_flags(a0)
0002612c 217c00020e740004	move.l	#Obj31_MapUnc_20E74,mappings(a0)
00026134 317c86800002	move.w	#make_art_tile(ArtTile_ArtNem_Powerups,0,1),art_tile(a0)
0002613a 117c00840001	move.b	#1<<render_flags.on_screen|1<<render_flags.level_fg,render_flags(a0)
00026140 117c00800019	move.b	#$80,width_pixels(a0)
00026146 117c00040018	move.b	#4,priority(a0)
0002614c 11680028001a	move.b	subtype(a0),mapping_frame(a0)
00026152 30280008	move.w	x_pos(a0),d0
00026156 0240ff80	andi.w	#$FF80,d0
0002615a 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
0002615e 0c400280	cmpi.w	#$280,d0
00026162 620001f2	bhi.w	JmpTo29_DeleteObject
00026166 10280021	move.b	collision_property(a0),d0
0002616a 6756	beq.s	loc_261C2
0002616c 3028002e	move.w	objoff_2E(a0),d0
00026170 670a	beq.s	+
00026172 d038fe05	add.b	(Level_frame_counter+1).w,d0
00026176 0240000f	andi.w	#$F,d0
0002617a 661c	bne.s	loc_26198
0002617c 45f8b000	lea	(MainCharacter).w,a2
00026180 08a800000021	bclr	#0,collision_property(a0)
00026186 6734	beq.s	Obj2C_RemoveCollision
00026188 613e	bsr.s	Obj2C_CreateLeaves
0002618a 4a68002e	tst.w	objoff_2E(a0)
0002618e 662c	bne.s	Obj2C_RemoveCollision
00026190 3178fe04002e	move.w	(Level_frame_counter).w,objoff_2E(a0)
00026196 6024	bra.s	Obj2C_RemoveCollision
0002619c 0240000f	andi.w	#$F,d0
000261a0 661a	bne.s	Obj2C_RemoveCollision
000261a2 45f8b040	lea	(Sidekick).w,a2
000261a6 08a800010021	bclr	#1,collision_property(a0)
000261ac 670e	beq.s	Obj2C_RemoveCollision
000261ae 6118	bsr.s	Obj2C_CreateLeaves
000261b0 4a68002e	tst.w	objoff_2E(a0)
000261b4 6606	bne.s	Obj2C_RemoveCollision
000261b6 3178fe04002e	move.w	(Level_frame_counter).w,objoff_2E(a0)
000261bc 42280021	clr.b	collision_property(a0)
000261c0 4e75	rts	
000261c2 4268002e	clr.w	objoff_2E(a0)
000261c6 4e75	rts	
000261c8 302a0010	move.w	x_vel(a2),d0
000261cc 6a02	bpl.s	.skip
000261ce 4440	neg.w	d0
000261d0 0c400200	cmpi.w	#$200,d0
000261d4 640e	bhs.s	loc_261E4
000261d6 302a0012	move.w	y_vel(a2),d0
000261da 6a02	bpl.s	.skip
000261dc 4440	neg.w	d0
000261de 0c400200	cmpi.w	#$200,d0
000261e2 65de	blo.s	loc_261C2
000261e4 47f900026286	lea	(Obj2C_Speeds).l,a3
000261ea 7c03	moveq	#4-1,d6
000261f0 66000086	bne.w	loc_26278
000261fa 137c00040024	move.b	#4,routine(a1)
00026200 336a00080008	move.w	x_pos(a2),x_pos(a1)
00026206 336a000c000c	move.w	y_pos(a2),y_pos(a1)
00026210 0240000f	andi.w	#$F,d0
00026214 5140	subq.w	#8,d0
00026216 d1690008	add.w	d0,x_pos(a1)
0002621a 4840	swap	d0
0002621c 0240000f	andi.w	#$F,d0
00026220 5140	subq.w	#8,d0
00026222 d169000c	add.w	d0,y_pos(a1)
00026226 335b0010	move.w	(a3)+,x_vel(a1)
0002622a 335b0012	move.w	(a3)+,y_vel(a1)
0002622e 082a00000022	btst	#status.player.x_flip,status(a2)
00026234 6704	beq.s	+
00026236 44690010	neg.w	x_vel(a1)
0002623a 336900080030	move.w	x_pos(a1),objoff_30(a1)
00026240 3369000c0034	move.w	y_pos(a1),objoff_34(a1)
00026246 02000001	andi.b	#1,d0
0002624a 1340001a	move.b	d0,mapping_frame(a1)
0002624e 237c0002631e0004	move.l	#Obj2C_MapUnc_2631E,mappings(a1)
00026256 337ce4100002	move.w	#make_art_tile(ArtTile_ArtNem_Leaves,3,1),art_tile(a1)
0002625c 137c00840001	move.b	#1<<render_flags.on_screen|1<<render_flags.level_fg,render_flags(a1)
00026262 137c00080019	move.b	#8,width_pixels(a1)
00026268 137c00010018	move.b	#1,priority(a1)
0002626e 137c00040038	move.b	#4,objoff_38(a1)
00026274 11410026	move.b	d1,angle(a0)
00026278 51ceff72	dbf	d6,loc_261EC
0002627c 303c00e5	move.w	#SndID_Leaves,d0
00026280 4ef900001370	jmp	(PlaySound).l
00026296 10280038	move.b	objoff_38(a0),d0
0002629a d1280026	add.b	d0,angle(a0)
0002629e d038fe0f	add.b	(Vint_runcount+3).w,d0
000262a2 0240001f	andi.w	#$1F,d0
000262a6 660c	bne.s	+
000262a8 d007	add.b	d7,d0
000262aa 02000001	andi.b	#1,d0
000262ae 6704	beq.s	+
000262b0 44280038	neg.b	objoff_38(a0)
000262b4 24280030	move.l	objoff_30(a0),d2
000262b8 26280034	move.l	objoff_34(a0),d3
000262bc 30280010	move.w	x_vel(a0),d0
000262c0 48c0	ext.l	d0
000262c2 e180	asl.l	#8,d0
000262c4 d480	add.l	d0,d2
000262c6 30280012	move.w	y_vel(a0),d0
000262ca 48c0	ext.l	d0
000262cc e180	asl.l	#8,d0
000262ce d680	add.l	d0,d3
000262d0 21420030	move.l	d2,objoff_30(a0)
000262d4 21430034	move.l	d3,objoff_34(a0)
000262d8 4842	swap	d2
000262da 02430003	andi.w	#3,d3
000262de 5843	addq.w	#4,d3
000262e0 d7680012	add.w	d3,y_vel(a0)
000262e4 10280026	move.b	angle(a0),d0
000262ec ec40	asr.w	#6,d0
000262ee d0680030	add.w	objoff_30(a0),d0
000262f2 31400008	move.w	d0,x_pos(a0)
000262f6 ec41	asr.w	#6,d1
000262f8 d2680034	add.w	objoff_34(a0),d1
000262fc 3141000c	move.w	d1,y_pos(a0)
00026300 5328001e	subq.b	#1,anim_frame_duration(a0)
00026304 6a0c	bpl.s	+
00026306 117c000b001e	move.b	#$B,anim_frame_duration(a0)
0002630c 08680001001a	bchg	#1,mapping_frame(a0)
00026312 4a280001	tst.b	render_flags(a0)
00026316 6a00003e	bpl.w	JmpTo29_DeleteObject
0002634e 4e71	nop	
00026350 4ef9000164f4	jmp	(extractJmpToName("JmpTo17_DisplaySprite")).l
00026356 4ef9000164e6	jmp	(extractJmpToName("JmpTo29_DeleteObject")).l
0002635c 4ef900017fda	jmp	(extractJmpToName("JmpTo6_AllocateObject")).l
00026362 4ef900003390	jmp	(extractJmpToName("JmpTo2_RandomNumber")).l
00026368 4ef9000033b6	jmp	(extractJmpToName("JmpTo7_CalcSine")).l
00026370 7000	moveq	#0,d0
00026372 10280024	move.b	routine(a0),d0
00026376 323b000a	move.w	Obj40_Index(pc,d0.w),d1
0002637a 4ebb1006	jsr	Obj40_Index(pc,d1.w)
0002638c 54280024	addq.b	#2,routine(a0)
00026390 217c000265f40004	move.l	#Obj40_MapUnc_265F4,mappings(a0)
00026398 317c04400002	move.w	#make_art_tile(ArtTile_ArtNem_LeverSpring,0,0),art_tile(a0)
000263a2 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000263a8 117c001c0019	move.b	#$1C,width_pixels(a0)
000263ae 117c00040018	move.b	#4,priority(a0)
000263b4 08e800070022	bset	#status.npc.no_balancing,status(a0)
000263ba 10280028	move.b	subtype(a0),d0
000263be 02400002	andi.w	#2,d0
000263c2 317b00c20030	move.w	Obj40_Strengths(pc,d0.w),objoff_30(a0)
000263c8 43f9000265e8	lea	(Ani_obj40).l,a1
000263d2 323c0027	move.w	#$27,d1
000263d6 343c0008	move.w	#8,d2
000263da 38280008	move.w	x_pos(a0),d4
000263de 45fa01b8	lea	Obj40_SlopeData_DiagUp(pc),a2
000263e2 4a28001a	tst.b	mapping_frame(a0)
000263e6 6704	beq.s	+
000263e8 45fa01d6	lea	Obj40_SlopeData_Straight(pc),a2
000263ec 43f8b000	lea	(MainCharacter).w,a1
000263f0 7c03	moveq	#p1_standing_bit,d6
000263f2 48e77800	movem.l	d1-d4,-(sp)
000263fa 082800030022	btst	#p1_standing_bit,status(a0)
00026400 6702	beq.s	+
00026402 611a	bsr.s	loc_2641E
00026404 4cdf001e	movem.l	(sp)+,d1-d4
00026408 43f8b040	lea	(Sidekick).w,a1
0002640c 7c04	moveq	#p2_standing_bit,d6
00026412 082800040022	btst	#p2_standing_bit,status(a0)
00026418 6702	beq.s	+
0002641a 6102	bsr.s	loc_2641E
0002641c 4e75	rts	
0002641e 082800000022	btst	#status.npc.x_flip,status(a0)
00026424 6610	bne.s	loc_26436
00026426 30280008	move.w	x_pos(a0),d0
0002642a 04400010	subi.w	#$10,d0
0002642e b0690008	cmp.w	x_pos(a1),d0
00026432 6512	blo.s	loc_26446
00026434 4e75	rts	
00026436 30280008	move.w	x_pos(a0),d0
0002643a 06400010	addi.w	#$10,d0
0002643e b0690008	cmp.w	x_pos(a1),d0
00026442 6402	bhs.s	loc_26446
00026444 4e75	rts	
00026446 0c280001001c	cmpi.b	#1,anim(a0)
0002644c 6708	beq.s	loc_26456
0002644e 317c0100001c	move.w	#(1<<8)|(0<<0),anim(a0)
00026454 4e75	rts	
00026456 4a28001a	tst.b	mapping_frame(a0)
0002645a 6702	beq.s	loc_2645E
0002645c 4e75	rts	
0002645e 30280008	move.w	x_pos(a0),d0
00026462 0440001c	subi.w	#$1C,d0
00026466 90690008	sub.w	x_pos(a1),d0
0002646a 4440	neg.w	d0
0002646c 082800000022	btst	#status.npc.x_flip,status(a0)
00026472 6706	beq.s	loc_2647A
00026474 4640	not.w	d0
00026476 06400027	addi.w	#$27,d0
0002647a 4a40	tst.w	d0
0002647c 6a02	bpl.s	loc_26480
0002647e 7000	moveq	#0,d0
00026480 47f900026550	lea	(byte_26550).l,a3
00026486 10330000	move.b	(a3,d0.w),d0
0002648a 337cfc000012	move.w	#-$400,y_vel(a1)
00026490 91290012	sub.b	d0,y_vel(a1)
00026494 08e900000022	bset	#status.player.x_flip,status(a1)
0002649a 082800000022	btst	#status.npc.x_flip,status(a0)
000264a0 6608	bne.s	loc_264AA
000264a2 08a900000022	bclr	#status.player.x_flip,status(a1)
000264a8 4400	neg.b	d0
000264aa 32290010	move.w	x_vel(a1),d1
000264ae 6a02	bpl.s	.skip
000264b0 4441	neg.w	d1
000264b2 0c410400	cmpi.w	#$400,d1
000264b6 6504	blo.s	loc_264BC
000264b8 91290010	sub.b	d0,x_vel(a1)
000264bc 08e900010022	bset	#status.player.in_air,status(a1)
000264c2 08a900030022	bclr	#status.player.on_object,status(a1)
000264c8 137c0010001c	move.b	#AniIDSonAni_Spring,anim(a1)
000264ce 137c00020024	move.b	#2,routine(a1)
000264d4 137c00000039	move.b	#0,spindash_flag(a1)
000264da 10280028	move.b	subtype(a0),d0
000264de 08000000	btst	#0,d0
000264e2 673a	beq.s	loc_2651E
000264e4 337c00010014	move.w	#1,inertia(a1)
000264ea 137c00010027	move.b	#1,flip_angle(a1)
000264f0 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
000264f6 137c0001002c	move.b	#1,flips_remaining(a1)
000264fc 137c0008002d	move.b	#8,flip_speed(a1)
00026502 08000001	btst	#1,d0
00026506 6606	bne.s	loc_2650E
00026508 137c0003002c	move.b	#3,flips_remaining(a1)
0002650e 082900000022	btst	#status.player.x_flip,status(a1)
00026514 6708	beq.s	loc_2651E
00026516 44290027	neg.b	flip_angle(a1)
0002651a 44690014	neg.w	inertia(a1)
0002651e 0200000c	andi.b	#$C,d0
00026522 0c000004	cmpi.b	#4,d0
00026526 660c	bne.s	loc_26534
00026528 137c000c003e	move.b	#$C,top_solid_bit(a1)
0002652e 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
00026534 0c000008	cmpi.b	#8,d0
00026538 660c	bne.s	loc_26546
0002653a 137c000e003e	move.b	#$E,top_solid_bit(a1)
00026540 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
00026546 303c00cc	move.w	#SndID_Spring,d0
0002654a 4ef900001370	jmp	(PlaySound).l
0002661c 4ef9000163d2	jmp	(extractJmpToName("JmpTo17_MarkObjGone")).l
00026622 4ef900016544	jmp	(extractJmpToName("JmpTo6_AnimateSprite")).l
00026628 4ef900016d6e	jmp	(extractJmpToName("JmpTo26_Adjust2PArtPointer")).l
0002662e 4ef9000197e6	jmp	(extractJmpToName("JmpTo_SlopedSolid_SingleCharacter")).l
00026634 7000	moveq	#0,d0
00026636 10280024	move.b	routine(a0),d0
0002663a 323b0006	move.w	Obj42_Index(pc,d0.w),d1
0002663e 4efb1002	jmp	Obj42_Index(pc,d1.w)
00026648 54280024	addq.b	#2,routine(a0)
0002664c 217c0002686c0004	move.l	#Obj42_MapUnc_2686C,mappings(a0)
00026654 317c60000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,3,0),art_tile(a0)
0002665a 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00026660 117c00100019	move.b	#$10,width_pixels(a0)
00026666 117c00040018	move.b	#4,priority(a0)
00026670 117c0007001a	move.b	#7,mapping_frame(a0)
00026676 3168000c0034	move.w	y_pos(a0),objoff_34(a0)
0002667c 317c00100036	move.w	#$10,objoff_36(a0)
00026682 06680010000c	addi.w	#$10,y_pos(a0)
00026688 323c001b	move.w	#$1B,d1
0002668c 343c0010	move.w	#$10,d2
00026690 363c0010	move.w	#$10,d3
00026694 38280008	move.w	x_pos(a0),d4
00026698 43f8b000	lea	(MainCharacter).w,a1
0002669c 7c03	moveq	#p1_standing_bit,d6
0002669e 48e77800	movem.l	d1-d4,-(sp)
000266a6 082800030022	btst	#p1_standing_bit,status(a0)
000266ac 6704	beq.s	+
000266ae 610000de	bsr.w	loc_2678E
000266b2 4cdf001e	movem.l	(sp)+,d1-d4
000266b6 43f8b040	lea	(Sidekick).w,a1
000266ba 7c04	moveq	#p2_standing_bit,d6
000266c0 082800040022	btst	#p2_standing_bit,status(a0)
000266c6 6704	beq.s	+
000266c8 610000c4	bsr.w	loc_2678E
000266cc 10280025	move.b	routine_secondary(a0),d0
000266d0 6612	bne.s	loc_266E4
000266d2 53680032	subq.w	#1,objoff_32(a0)
000266d6 6a70	bpl.s	BranchTo_JmpTo18_MarkObjGone
000266d8 317c003b0032	move.w	#$3B,objoff_32(a0)
000266de 54280025	addq.b	#2,routine_secondary(a0)
000266e2 6064	bra.s	BranchTo_JmpTo18_MarkObjGone
000266e4 5500	subq.b	#2,d0
000266e6 662e	bne.s	loc_26716
000266e8 51680036	subq.w	#8,objoff_36(a0)
000266ec 661a	bne.s	loc_26708
000266ee 54280025	addq.b	#2,routine_secondary(a0)
000266f2 6158	bsr.s	loc_2674C
000266f4 066900280008	addi.w	#$28,x_pos(a1)
000266fa 6150	bsr.s	loc_2674C
000266fc 046900280008	subi.w	#$28,x_pos(a1)
00026702 08e900000001	bset	#render_flags.x_flip,render_flags(a1)
00026708 30280036	move.w	objoff_36(a0),d0
0002670c d0680034	add.w	objoff_34(a0),d0
00026710 3140000c	move.w	d0,y_pos(a0)
00026714 6032	bra.s	BranchTo_JmpTo18_MarkObjGone
00026716 5500	subq.b	#2,d0
00026718 6612	bne.s	loc_2672C
0002671a 53680032	subq.w	#1,objoff_32(a0)
0002671e 6a28	bpl.s	BranchTo_JmpTo18_MarkObjGone
00026720 317c003b0032	move.w	#$3B,objoff_32(a0)
00026726 54280025	addq.b	#2,routine_secondary(a0)
0002672a 601c	bra.s	BranchTo_JmpTo18_MarkObjGone
0002672c 50680036	addq.w	#8,objoff_36(a0)
00026730 0c6800100036	cmpi.w	#$10,objoff_36(a0)
00026736 6604	bne.s	loc_2673C
00026738 42280025	clr.b	routine_secondary(a0)
0002673c 30280036	move.w	objoff_36(a0),d0
00026740 d0680034	add.w	objoff_34(a0),d0
00026744 3140000c	move.w	d0,y_pos(a0)
00026750 663a	bne.s	+
00026758 58290024	addq.b	#4,routine(a1)
0002675c 336800080008	move.w	x_pos(a0),x_pos(a1)
00026762 33680034000c	move.w	objoff_34(a0),y_pos(a1)
00026768 137c0007001e	move.b	#7,anim_frame_duration(a1)
0002676e 236800040004	move.l	mappings(a0),mappings(a1)
00026774 337c24050002	move.w	#make_art_tile(ArtTile_ArtNem_MtzSteam,1,0),art_tile(a1)
0002677a 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
00026780 137c00180019	move.b	#$18,width_pixels(a1)
00026786 137c00040018	move.b	#4,priority(a1)
0002678c 4e75	rts	
0002678e 0c2800020025	cmpi.b	#2,routine_secondary(a0)
00026794 6702	beq.s	loc_26798
00026796 4e75	rts	
00026798 337cf6000012	move.w	#-$A00,y_vel(a1)
0002679e 08e900010022	bset	#status.player.in_air,status(a1)
000267a4 08a900030022	bclr	#status.player.on_object,status(a1)
000267aa 137c0010001c	move.b	#AniIDSonAni_Spring,anim(a1)
000267b0 137c00020024	move.b	#2,routine(a1)
000267b6 137c00000039	move.b	#0,spindash_flag(a1)
000267bc 10280028	move.b	subtype(a0),d0
000267c0 6a06	bpl.s	+
000267c2 337c00000010	move.w	#0,x_vel(a1)
000267c8 08000000	btst	#0,d0
000267cc 673a	beq.s	loc_26808
000267ce 337c00010014	move.w	#1,inertia(a1)
000267d4 137c00010027	move.b	#1,flip_angle(a1)
000267da 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
000267e0 137c0000002c	move.b	#0,flips_remaining(a1)
000267e6 137c0004002d	move.b	#4,flip_speed(a1)
000267ec 08000001	btst	#1,d0
000267f0 6606	bne.s	+
000267f2 137c0001002c	move.b	#1,flips_remaining(a1)
000267f8 082900000022	btst	#status.player.x_flip,status(a1)
000267fe 6708	beq.s	loc_26808
00026800 44290027	neg.b	flip_angle(a1)
00026804 44690014	neg.w	inertia(a1)
00026808 0200000c	andi.b	#$C,d0
0002680c 0c000004	cmpi.b	#4,d0
00026810 660c	bne.s	+
00026812 137c000c003e	move.b	#$C,top_solid_bit(a1)
00026818 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
0002681e 0c000008	cmpi.b	#8,d0
00026822 660c	bne.s	+
00026824 137c000e003e	move.b	#$E,top_solid_bit(a1)
0002682a 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
00026830 303c00cc	move.w	#SndID_Spring,d0
00026834 4ef900001370	jmp	(PlaySound).l
0002683a 5328001e	subq.b	#1,anim_frame_duration(a0)
0002683e 6a28	bpl.s	++
00026840 117c0007001e	move.b	#7,anim_frame_duration(a0)
00026846 117c00000020	move.b	#0,collision_flags(a0)
0002684c 5228001a	addq.b	#1,mapping_frame(a0)
00026850 0c280003001a	cmpi.b	#3,mapping_frame(a0)
00026856 6606	bne.s	+
00026858 117c00a60020	move.b	#$A6,collision_flags(a0)
0002685e 0c280007001a	cmpi.b	#7,mapping_frame(a0)
00026864 6700009c	beq.w	JmpTo30_DeleteObject
000268fc 4ef9000164f4	jmp	(extractJmpToName("JmpTo18_DisplaySprite")).l
00026902 4ef9000164e6	jmp	(extractJmpToName("JmpTo30_DeleteObject")).l
00026908 4ef900017fda	jmp	(extractJmpToName("JmpTo7_AllocateObject")).l
0002690e 4ef9000163d2	jmp	(extractJmpToName("JmpTo18_MarkObjGone")).l
00026914 4ef900016d6e	jmp	(extractJmpToName("JmpTo27_Adjust2PArtPointer")).l
0002691a 4ef90001978e	jmp	(extractJmpToName("JmpTo2_SolidObject_Always_SingleCharacter")).l
00026920 7000	moveq	#0,d0
00026922 10280024	move.b	routine(a0),d0
00026926 323b0006	move.w	Obj64_Index(pc,d0.w),d1
0002692a 4efb1002	jmp	Obj64_Index(pc,d1.w)
0002693a 54280024	addq.b	#2,routine(a0)
0002693e 7000	moveq	#0,d0
00026940 10280028	move.b	subtype(a0),d0
00026944 e448	lsr.w	#2,d0
00026946 0240001c	andi.w	#$1C,d0
0002694a 47fb00e6	lea	Obj64_Properties(pc,d0.w),a3
0002694e 115b0019	move.b	(a3)+,width_pixels(a0)
00026952 115b002e	move.b	(a3)+,objoff_2E(a0)
00026956 e448	lsr.w	#2,d0
00026958 1140001a	move.b	d0,mapping_frame(a0)
0002695c 660c	bne.s	+
0002695e 117c006c0016	move.b	#$6C,y_radius(a0)
00026964 08e800040001	bset	#render_flags.explicit_height,render_flags(a0)
0002696a 217c00026a5c0004	move.l	#Obj64_MapUnc_26A5C,mappings(a0)
00026972 317c20000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,1,0),art_tile(a0)
0002697c 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00026982 117c00040018	move.b	#4,priority(a0)
00026988 316800080034	move.w	x_pos(a0),objoff_34(a0)
0002698e 3168000c0030	move.w	y_pos(a0),objoff_30(a0)
00026994 7000	moveq	#0,d0
00026996 101b	move.b	(a3)+,d0
00026998 3140003c	move.w	d0,objoff_3C(a0)
0002699c 0228000f0028	andi.b	#$F,subtype(a0)
000269a2 3f280008	move.w	x_pos(a0),-(sp)
000269a6 7000	moveq	#0,d0
000269a8 10280028	move.b	subtype(a0),d0
000269ac d040	add.w	d0,d0
000269ae 323b0044	move.w	Obj64_Modes(pc,d0.w),d1
000269b2 4ebb1040	jsr	Obj64_Modes(pc,d1.w)
000269b6 381f	move.w	(sp)+,d4
000269b8 4a280001	tst.b	render_flags(a0)
000269bc 6a18	bpl.s	+
000269be 7200	moveq	#0,d1
000269c0 12280019	move.b	width_pixels(a0),d1
000269c4 0641000b	addi.w	#$B,d1
000269c8 7400	moveq	#0,d2
000269ca 1428002e	move.b	objoff_2E(a0),d2
000269ce 3602	move.w	d2,d3
000269d0 5243	addq.w	#1,d3
000269d6 30280034	move.w	objoff_34(a0),d0
000269da 0240ff80	andi.w	#$FF80,d0
000269de 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
000269e2 0c400280	cmpi.w	#$280,d0
000269e6 6206	bhi.s	JmpTo31_DeleteObject
000269e8 4ef9000164f4	jmp	(DisplaySprite).l
000269ee 4ef9000164e6	jmp	(DeleteObject).l
000269f8 4e75	rts	
000269fa 4a280038	tst.b	objoff_38(a0)
000269fe 661e	bne.s	loc_26A1E
00026a00 4a68003a	tst.w	objoff_3A(a0)
00026a04 6706	beq.s	loc_26A0C
00026a06 5168003a	subq.w	#8,objoff_3A(a0)
00026a0a 6032	bra.s	loc_26A3E
00026a0c 53680036	subq.w	#1,objoff_36(a0)
00026a10 6a2c	bpl.s	loc_26A3E
00026a12 317c005a0036	move.w	#$5A,objoff_36(a0)
00026a18 117c00010038	move.b	#1,objoff_38(a0)
00026a1e 3028003a	move.w	objoff_3A(a0),d0
00026a22 b068003c	cmp.w	objoff_3C(a0),d0
00026a26 6706	beq.s	loc_26A2E
00026a28 5068003a	addq.w	#8,objoff_3A(a0)
00026a2c 6010	bra.s	loc_26A3E
00026a2e 53680036	subq.w	#1,objoff_36(a0)
00026a32 6a0a	bpl.s	loc_26A3E
00026a34 317c005a0036	move.w	#$5A,objoff_36(a0)
00026a3a 42280038	clr.b	objoff_38(a0)
00026a3e 3028003a	move.w	objoff_3A(a0),d0
00026a42 082800000022	btst	#status.npc.x_flip,status(a0)
00026a48 6706	beq.s	loc_26A50
00026a4a 4440	neg.w	d0
00026a4c 06400040	addi.w	#$40,d0
00026a50 32280030	move.w	objoff_30(a0),d1
00026a54 d240	add.w	d0,d1
00026a56 3141000c	move.w	d1,y_pos(a0)
00026a5a 4e75	rts	
00026ad4 4ef900016d6e	jmp	(extractJmpToName("JmpTo28_Adjust2PArtPointer")).l
00026ada 4ef900019718	jmp	(extractJmpToName("JmpTo9_SolidObject")).l
00026ae0 7000	moveq	#0,d0
00026ae2 10280024	move.b	routine(a0),d0
00026ae6 323b0006	move.w	Obj65_Index(pc,d0.w),d1
00026aea 4efb1002	jmp	Obj65_Index(pc,d1.w)
00026b06 54280024	addq.b	#2,routine(a0)
00026b0a 217c00026ec80004	move.l	#Obj65_Obj6A_Obj6B_MapUnc_26EC8,mappings(a0)
00026b12 317c60000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,3,0),art_tile(a0)
00026b1c 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00026b22 117c00040018	move.b	#4,priority(a0)
00026b28 7000	moveq	#0,d0
00026b2a 10280028	move.b	subtype(a0),d0
00026b2e e448	lsr.w	#2,d0
00026b30 0240001c	andi.w	#$1C,d0
00026b34 47fb00c0	lea	Obj65_Properties(pc,d0.w),a3
00026b38 115b0019	move.b	(a3)+,width_pixels(a0)
00026b3c 115b0016	move.b	(a3)+,y_radius(a0)
00026b40 e448	lsr.w	#2,d0
00026b42 1140001a	move.b	d0,mapping_frame(a0)
00026b46 0c000001	cmpi.b	#1,d0
00026b4a 6606	bne.s	+
00026b4c 08e800070022	bset	#status.npc.no_balancing,status(a0)
00026b52 0c000002	cmpi.b	#2,d0
00026b56 6616	bne.s	loc_26B6E
00026b58 58280024	addq.b	#4,routine(a0)
00026b5c 217c00026f040004	move.l	#Obj65_MapUnc_26F04,mappings(a0)
00026b64 317c655f0002	move.w	#make_art_tile(ArtTile_ArtNem_MtzCog,3,0),art_tile(a0)
00026b6a 60000356	bra.w	loc_26EC2
00026b6e 316800080034	move.w	x_pos(a0),objoff_34(a0)
00026b74 3168000c0030	move.w	y_pos(a0),objoff_30(a0)
00026b7a 7000	moveq	#0,d0
00026b7c 101b	move.b	(a3)+,d0
00026b7e 3140003c	move.w	d0,objoff_3C(a0)
00026b82 7000	moveq	#0,d0
00026b84 10280028	move.b	subtype(a0),d0
00026b88 6a00008c	bpl.w	loc_26C16
00026b8c 0200000f	andi.b	#$F,d0
00026b90 1140003e	move.b	d0,objoff_3E(a0)
00026b94 11530028	move.b	(a3),subtype(a0)
00026b98 0c130007	cmpi.b	#7,(a3)
00026b9c 6606	bne.s	+
00026b9e 3168003c003a	move.w	objoff_3C(a0),objoff_3A(a0)
00026ba8 665a	bne.s	loc_26C04
00026bb0 58290024	addq.b	#4,routine(a1)
00026bb4 336800080008	move.w	x_pos(a0),x_pos(a1)
00026bba 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00026bc0 0669ffb40008	addi.w	#-$4C,x_pos(a1)
00026bc6 06690014000c	addi.w	#$14,y_pos(a1)
00026bcc 082800000022	btst	#status.npc.x_flip,status(a0)
00026bd2 660c	bne.s	+
00026bd4 0469ffe80008	subi.w	#-$18,x_pos(a1)
00026bda 08e900000001	bset	#render_flags.x_flip,render_flags(a1)
00026be0 237c00026f040004	move.l	#Obj65_MapUnc_26F04,mappings(a1)
00026be8 337c655f0002	move.w	#make_art_tile(ArtTile_ArtNem_MtzCog,3,0),art_tile(a1)
00026bee 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
00026bf4 137c00100019	move.b	#$10,width_pixels(a1)
00026bfa 137c00040018	move.b	#4,priority(a1)
00026c00 2348003c	move.l	a0,objoff_3C(a1)
00026c04 45f8fc00	lea	(Object_Respawn_Table).w,a2
00026c08 7000	moveq	#0,d0
00026c0a 10280023	move.b	respawn_index(a0),d0
00026c0e 6706	beq.s	loc_26C16
00026c10 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
00026c16 0228000f0028	andi.b	#$F,subtype(a0)
00026c1c 31680008002e	move.w	x_pos(a0),objoff_2E(a0)
00026c22 7000	moveq	#0,d0
00026c24 10280028	move.b	subtype(a0),d0
00026c28 d040	add.w	d0,d0
00026c2a 323b0052	move.w	off_26C7E(pc,d0.w),d1
00026c2e 4ebb104e	jsr	off_26C7E(pc,d1.w)
00026c32 3828002e	move.w	objoff_2E(a0),d4
00026c36 7200	moveq	#0,d1
00026c38 12280019	move.b	width_pixels(a0),d1
00026c40 7400	moveq	#0,d2
00026c42 14280016	move.b	y_radius(a0),d2
00026c46 3602	move.w	d2,d3
00026c48 5243	addq.w	#1,d3
00026c4e 30280034	move.w	objoff_34(a0),d0
00026c52 0240ff80	andi.w	#$FF80,d0
00026c56 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00026c5a 0c400280	cmpi.w	#$280,d0
00026c5e 6206	bhi.s	loc_26C66
00026c60 4ef9000164f4	jmp	(DisplaySprite).l
00026c66 45f8fc00	lea	(Object_Respawn_Table).w,a2
00026c6a 7000	moveq	#0,d0
00026c6c 10280023	move.b	respawn_index(a0),d0
00026c70 6706	beq.s	+
00026c72 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
00026c78 4ef9000164e6	jmp	(DeleteObject).l
00026c8e 4e75	rts	
00026c90 4a280038	tst.b	objoff_38(a0)
00026c94 660c	bne.s	BranchTo_loc_26CC2
00026c96 53680036	subq.w	#1,objoff_36(a0)
00026c9a 6634	bne.s	loc_26CD0
00026c9c 117c00010038	move.b	#1,objoff_38(a0)
00026ca2 601e	bra.s	loc_26CC2
00026ca4 4a280038	tst.b	objoff_38(a0)
00026ca8 6618	bne.s	loc_26CC2
00026caa 45f8f7e0	lea	(ButtonVine_Trigger).w,a2
00026cae 7000	moveq	#0,d0
00026cb0 1028003e	move.b	objoff_3E(a0),d0
00026cb4 083200000000	btst	#0,(a2,d0.w)
00026cba 6714	beq.s	loc_26CD0
00026cbc 117c00010038	move.b	#1,objoff_38(a0)
00026cc2 3028003c	move.w	objoff_3C(a0),d0
00026cc6 b068003a	cmp.w	objoff_3A(a0),d0
00026cca 6726	beq.s	loc_26CF2
00026ccc 5468003a	addq.w	#2,objoff_3A(a0)
00026cd0 3028003a	move.w	objoff_3A(a0),d0
00026cd4 082800000022	btst	#status.npc.x_flip,status(a0)
00026cda 6706	beq.s	+
00026cdc 4440	neg.w	d0
00026cde 06400080	addi.w	#$80,d0
00026ce2 32280034	move.w	objoff_34(a0),d1
00026ce6 9240	sub.w	d0,d1
00026ce8 31410008	move.w	d1,x_pos(a0)
00026cec 3141002e	move.w	d1,objoff_2E(a0)
00026cf0 4e75	rts	
00026cf2 52280028	addq.b	#1,subtype(a0)
00026cf6 317c00b40036	move.w	#$B4,objoff_36(a0)
00026cfc 42280038	clr.b	objoff_38(a0)
00026d00 45f8fc00	lea	(Object_Respawn_Table).w,a2
00026d04 7000	moveq	#0,d0
00026d06 10280023	move.b	respawn_index(a0),d0
00026d0a 67c4	beq.s	loc_26CD0
00026d0c 08f200000002	bset	#0,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
00026d12 60bc	bra.s	loc_26CD0
00026d14 4a280038	tst.b	objoff_38(a0)
00026d18 6618	bne.s	+
00026d1a 45f8f7e0	lea	(ButtonVine_Trigger).w,a2
00026d1e 7000	moveq	#0,d0
00026d20 1028003e	move.b	objoff_3E(a0),d0
00026d24 083200000000	btst	#0,(a2,d0.w)
00026d2a 6724	beq.s	loc_26D50
00026d2c 117c00010038	move.b	#1,objoff_38(a0)
00026d32 6012	bra.s	loc_26D46
00026d34 4a280038	tst.b	objoff_38(a0)
00026d38 660c	bne.s	loc_26D46
00026d3a 53680036	subq.w	#1,objoff_36(a0)
00026d3e 6610	bne.s	loc_26D50
00026d40 117c00010038	move.b	#1,objoff_38(a0)
00026d46 4a68003a	tst.w	objoff_3A(a0)
00026d4a 6726	beq.s	loc_26D72
00026d4c 5568003a	subq.w	#2,objoff_3A(a0)
00026d50 3028003a	move.w	objoff_3A(a0),d0
00026d54 082800000022	btst	#status.npc.x_flip,status(a0)
00026d5a 6706	beq.s	+
00026d5c 4440	neg.w	d0
00026d5e 06400080	addi.w	#$80,d0
00026d62 32280034	move.w	objoff_34(a0),d1
00026d66 9240	sub.w	d0,d1
00026d68 31410008	move.w	d1,x_pos(a0)
00026d6c 3141002e	move.w	d1,objoff_2E(a0)
00026d70 4e75	rts	
00026d72 53280028	subq.b	#1,subtype(a0)
00026d76 317c00b40036	move.w	#$B4,objoff_36(a0)
00026d7c 42280038	clr.b	objoff_38(a0)
00026d80 45f8fc00	lea	(Object_Respawn_Table).w,a2
00026d84 7000	moveq	#0,d0
00026d86 10280023	move.b	respawn_index(a0),d0
00026d8a 67c4	beq.s	loc_26D50
00026d8c 08b200000002	bclr	#0,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
00026d92 60bc	bra.s	loc_26D50
00026d94 38280034	move.w	objoff_34(a0),d4
00026d98 3a04	move.w	d4,d5
00026d9a 082800000022	btst	#status.npc.x_flip,status(a0)
00026da0 660a	bne.s	loc_26DAC
00026da2 04440020	subi.w	#$20,d4
00026da6 06450060	addi.w	#$60,d5
00026daa 6008	bra.s	loc_26DB4
00026dac 044400a0	subi.w	#$A0,d4
00026db0 04450020	subi.w	#$20,d5
00026db4 3428000c	move.w	y_pos(a0),d2
00026db8 3602	move.w	d2,d3
00026dba 04420010	subi.w	#$10,d2
00026dbe 06430040	addi.w	#$40,d3
00026dc2 7200	moveq	#0,d1
00026dc4 3038b008	move.w	(MainCharacter+x_pos).w,d0
00026dc8 b044	cmp.w	d4,d0
00026dca 6512	blo.s	+
00026dcc b045	cmp.w	d5,d0
00026dce 640e	bhs.s	+
00026dd0 3038b00c	move.w	(MainCharacter+y_pos).w,d0
00026dd4 b042	cmp.w	d2,d0
00026dd6 6506	blo.s	+
00026dd8 b043	cmp.w	d3,d0
00026dda 6402	bhs.s	+
00026ddc 7201	moveq	#1,d1
00026dde 3038b048	move.w	(Sidekick+x_pos).w,d0
00026de2 b044	cmp.w	d4,d0
00026de4 6512	blo.s	+
00026de6 b045	cmp.w	d5,d0
00026de8 640e	bhs.s	+
00026dea 3038b04c	move.w	(Sidekick+y_pos).w,d0
00026dee b042	cmp.w	d2,d0
00026df0 6506	blo.s	+
00026df2 b043	cmp.w	d3,d0
00026df4 6402	bhs.s	+
00026df6 7201	moveq	#1,d1
00026df8 4a01	tst.b	d1
00026dfa 6712	beq.s	loc_26E0E
00026dfc 3028003c	move.w	objoff_3C(a0),d0
00026e00 b068003a	cmp.w	objoff_3A(a0),d0
00026e04 6734	beq.s	return_26E3A
00026e06 06680010003a	addi.w	#$10,objoff_3A(a0)
00026e0c 600c	bra.s	loc_26E1A
00026e0e 4a68003a	tst.w	objoff_3A(a0)
00026e12 6706	beq.s	loc_26E1A
00026e14 04680010003a	subi.w	#$10,objoff_3A(a0)
00026e1a 3028003a	move.w	objoff_3A(a0),d0
00026e1e 082800000022	btst	#status.npc.x_flip,status(a0)
00026e24 6706	beq.s	+
00026e26 4440	neg.w	d0
00026e28 06400040	addi.w	#$40,d0
00026e2c 32280034	move.w	objoff_34(a0),d1
00026e30 9240	sub.w	d0,d1
00026e32 31410008	move.w	d1,x_pos(a0)
00026e36 3141002e	move.w	d1,objoff_2E(a0)
00026e3a 4e75	rts	
00026e3c 082800030022	btst	#p1_standing_bit,status(a0)
00026e42 6704	beq.s	+
00026e44 52280028	addq.b	#1,subtype(a0)
00026e48 4e75	rts	
00026e4a 4a280038	tst.b	objoff_38(a0)
00026e4e 6634	bne.s	loc_26E84
00026e50 54680008	addq.w	#2,x_pos(a0)
00026e54 0c380005fe10	cmpi.b	#metropolis_zone_2,(Current_Zone).w
00026e5a 6618	bne.s	loc_26E74
00026e5c 0c681cc00008	cmpi.w	#$1CC0,x_pos(a0)
00026e62 6708	beq.s	loc_26E6C
00026e64 0c6829400008	cmpi.w	#$2940,x_pos(a0)
00026e6a 662a	bne.s	loc_26E96
00026e6c 117c00000028	move.b	#0,subtype(a0)
00026e72 6022	bra.s	loc_26E96
00026e74 0c681bc00008	cmpi.w	#$1BC0,x_pos(a0)
00026e7a 661a	bne.s	loc_26E96
00026e7c 117c00010038	move.b	#1,objoff_38(a0)
00026e82 6012	bra.s	loc_26E96
00026e84 55680008	subq.w	#2,x_pos(a0)
00026e88 0c6818800008	cmpi.w	#$1880,x_pos(a0)
00026e8e 6606	bne.s	loc_26E96
00026e90 117c00000038	move.b	#0,objoff_38(a0)
00026e96 316800080034	move.w	x_pos(a0),objoff_34(a0)
00026e9c 31e80008f7b0	move.w	x_pos(a0),(MTZ_Platform_Cog_X).w
00026ea2 4e75	rts	
00026ea4 2268003c	movea.l	objoff_3C(a0),a1
00026ea8 3029003a	move.w	objoff_3A(a1),d0
00026eac 02400007	andi.w	#7,d0
00026eb0 117b0008001a	move.b	byte_26EBA(pc,d0.w),mapping_frame(a0)
00026ec2 3038f7b0	move.w	(MTZ_Platform_Cog_X).w,d0
00026ec6 60e4	bra.s	loc_26EAC
00026f40 4ef9000163d2	jmp	(extractJmpToName("JmpTo19_MarkObjGone")).l
00026f46 4ef900017ffa	jmp	(extractJmpToName("JmpTo11_AllocateObjectAfterCurrent")).l
00026f4c 4ef900016d6e	jmp	(extractJmpToName("JmpTo29_Adjust2PArtPointer")).l
00026f52 4ef900019718	jmp	(extractJmpToName("JmpTo10_SolidObject")).l
00026f58 7000	moveq	#0,d0
00026f5a 10280024	move.b	routine(a0),d0
00026f5e 323b0006	move.w	Obj66_Index(pc,d0.w),d1
00026f62 4efb1002	jmp	Obj66_Index(pc,d1.w)
00026f6a 54280024	addq.b	#2,routine(a0)
00026f6e 217c000271200004	move.l	#Obj66_MapUnc_27120,mappings(a0)
00026f76 317c86800002	move.w	#make_art_tile(ArtTile_ArtNem_Powerups,0,1),art_tile(a0)
00026f80 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00026f86 117c00080019	move.b	#8,width_pixels(a0)
00026f8c 117c00040018	move.b	#4,priority(a0)
00026f92 117c00400016	move.b	#$40,y_radius(a0)
00026f98 10280028	move.b	subtype(a0),d0
00026f9c e808	lsr.b	#4,d0
00026f9e 02000007	andi.b	#7,d0
00026fa2 1140001a	move.b	d0,mapping_frame(a0)
00026fa6 6706	beq.s	Obj66_Main
00026fa8 117c00800016	move.b	#$80,y_radius(a0)
00026fae 323c0013	move.w	#$13,d1
00026fb2 7400	moveq	#0,d2
00026fb4 14280016	move.b	y_radius(a0),d2
00026fb8 3602	move.w	d2,d3
00026fba 5243	addq.w	#1,d3
00026fbc 38280008	move.w	x_pos(a0),d4
00026fc0 43f8b000	lea	(MainCharacter).w,a1
00026fc4 7c03	moveq	#p1_standing_bit,d6
00026fc6 48e77800	movem.l	d1-d4,-(sp)
00026fce 0c040001	cmpi.b	#1,d4
00026fd2 6622	bne.s	loc_26FF6
00026fd4 082900010022	btst	#status.player.in_air,status(a1)
00026fda 671a	beq.s	loc_26FF6
00026fdc 12280022	move.b	status(a0),d1
00026fe0 30280008	move.w	x_pos(a0),d0
00026fe4 90690008	sub.w	x_pos(a1),d0
00026fe8 6504	bcs.s	+
00026fea 0a010001	eori.b	#1<<status.player.x_flip,d1
00026fee 02010001	andi.b	#1<<status.player.x_flip,d1
00026ff2 6602	bne.s	loc_26FF6
00026ff4 614c	bsr.s	loc_27042
00026ff6 4cdf001e	movem.l	(sp)+,d1-d4
00026ffa 43f8b040	lea	(Sidekick).w,a1
00026ffe 7c04	moveq	#p2_standing_bit,d6
00027004 0c040001	cmpi.b	#1,d4
00027008 6622	bne.s	loc_2702C
0002700a 082900010022	btst	#status.player.in_air,status(a1)
00027010 671a	beq.s	loc_2702C
00027012 12280022	move.b	status(a0),d1
00027016 30280008	move.w	x_pos(a0),d0
0002701a 90690008	sub.w	x_pos(a1),d0
0002701e 6504	bcs.s	+
00027020 0a010001	eori.b	#1<<status.player.x_flip,d1
00027024 02010001	andi.b	#1<<status.player.x_flip,d1
00027028 6602	bne.s	loc_2702C
0002702a 6116	bsr.s	loc_27042
0002702c 30280008	move.w	x_pos(a0),d0
00027030 0240ff80	andi.w	#$FF80,d0
00027034 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00027038 0c400280	cmpi.w	#$280,d0
0002703c 6200010a	bhi.w	JmpTo33_DeleteObject
00027040 4e75	rts	
00027042 0c2900040024	cmpi.b	#4,routine(a1)
00027048 6502	blo.s	loc_2704C
0002704a 4e75	rts	
0002704c 336800300010	move.w	objoff_30(a0),x_vel(a1)
00027052 337cf8000010	move.w	#-$800,x_vel(a1)
00027058 337cf8000012	move.w	#-$800,y_vel(a1)
0002705e 08e900000022	bset	#status.player.x_flip,status(a1)
00027064 082800000022	btst	#status.npc.x_flip,status(a0)
0002706a 660a	bne.s	+
0002706c 08a900000022	bclr	#status.player.x_flip,status(a1)
00027072 44690010	neg.w	x_vel(a1)
00027076 337c000f002e	move.w	#$F,move_lock(a1)
0002707c 336900100014	move.w	x_vel(a1),inertia(a1)
00027082 082900020022	btst	#status.player.rolling,status(a1)
00027088 6606	bne.s	+
0002708a 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
00027090 10280028	move.b	subtype(a0),d0
00027094 6a06	bpl.s	+
00027096 337c00000012	move.w	#0,y_vel(a1)
0002709c 08000000	btst	#0,d0
000270a0 673a	beq.s	loc_270DC
000270a2 337c00010014	move.w	#1,inertia(a1)
000270a8 137c00010027	move.b	#1,flip_angle(a1)
000270ae 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
000270b4 137c0001002c	move.b	#1,flips_remaining(a1)
000270ba 137c0008002d	move.b	#8,flip_speed(a1)
000270c0 08000001	btst	#1,d0
000270c4 6606	bne.s	+
000270c6 137c0003002c	move.b	#3,flips_remaining(a1)
000270cc 082900000022	btst	#status.player.x_flip,status(a1)
000270d2 6708	beq.s	loc_270DC
000270d4 44290027	neg.b	flip_angle(a1)
000270d8 44690014	neg.w	inertia(a1)
000270dc 0200000c	andi.b	#$C,d0
000270e0 0c000004	cmpi.b	#4,d0
000270e4 660c	bne.s	+
000270e6 137c000c003e	move.b	#$C,top_solid_bit(a1)
000270ec 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
000270f2 0c000008	cmpi.b	#8,d0
000270f6 660c	bne.s	+
000270f8 137c000e003e	move.b	#$E,top_solid_bit(a1)
000270fe 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
00027104 08a800050022	bclr	#p1_pushing_bit,status(a0)
0002710a 08a800060022	bclr	#p2_pushing_bit,status(a0)
00027110 08a900050022	bclr	#status.player.pushing,status(a1)
00027116 303c00cc	move.w	#SndID_Spring,d0
0002711a 4ef900001370	jmp	(PlaySound).l
00027148 4ef9000164e6	jmp	(extractJmpToName("JmpTo33_DeleteObject")).l
0002714e 4ef900016d6e	jmp	(extractJmpToName("JmpTo30_Adjust2PArtPointer")).l
00027154 4ef90001978e	jmp	(extractJmpToName("JmpTo3_SolidObject_Always_SingleCharacter")).l
0002715c 7000	moveq	#0,d0
0002715e 10280024	move.b	routine(a0),d0
00027162 323b0020	move.w	Obj67_Index(pc,d0.w),d1
00027166 4ebb101c	jsr	Obj67_Index(pc,d1.w)
0002716a 1028002c	move.b	objoff_2C(a0),d0
0002716e d0280036	add.b	objoff_36(a0),d0
00027172 67000418	beq.w	JmpTo4_MarkObjGone3
00027176 43f90002752e	lea	(Ani_obj67).l,a1
00027188 54280024	addq.b	#2,routine(a0)
0002718c 217c000275480004	move.l	#Obj67_MapUnc_27548,mappings(a0)
00027194 317c656b0002	move.w	#make_art_tile(ArtTile_ArtNem_MtzSpinTubeFlash,3,0),art_tile(a0)
0002719a 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000271a0 117c00100019	move.b	#$10,width_pixels(a0)
000271a6 117c00050018	move.b	#5,priority(a0)
000271ac 43f8b000	lea	(MainCharacter).w,a1
000271b0 49e8002c	lea	objoff_2C(a0),a4
000271b4 6108	bsr.s	loc_271BE
000271b6 43f8b040	lea	(Sidekick).w,a1
000271ba 49e80036	lea	objoff_36(a0),a4
000271be 7000	moveq	#0,d0
000271c0 1014	move.b	(a4),d0
000271c2 303b0006	move.w	off_271CA(pc,d0.w),d0
000271c6 4efb0002	jmp	off_271CA(pc,d0.w)
000271d0 4a78fe08	tst.w	(Debug_placement_mode).w
000271d4 66000088	bne.w	return_2725E
000271d8 30290008	move.w	x_pos(a1),d0
000271dc 90680008	sub.w	x_pos(a0),d0
000271e0 5640	addq.w	#3,d0
000271e2 082800000022	btst	#status.npc.x_flip,status(a0)
000271e8 6704	beq.s	+
000271ea 0640000a	addi.w	#$A,d0
000271ee 0c400010	cmpi.w	#$10,d0
000271f2 646a	bhs.s	return_2725E
000271f4 3229000c	move.w	y_pos(a1),d1
000271f8 9268000c	sub.w	y_pos(a0),d1
000271fc 06410020	addi.w	#$20,d1
00027200 0c410040	cmpi.w	#$40,d1
00027204 6458	bhs.s	return_2725E
00027206 4a29002a	tst.b	obj_control(a1)
0002720a 6652	bne.s	return_2725E
0002720c 5414	addq.b	#2,(a4)
0002720e 137c0081002a	move.b	#$81,obj_control(a1)
00027214 137c0002001c	move.b	#AniIDSonAni_Roll,anim(a1)
0002721a 337c08000014	move.w	#$800,inertia(a1)
00027220 337c00000010	move.w	#0,x_vel(a1)
00027226 337c00000012	move.w	#0,y_vel(a1)
0002722c 08a800050022	bclr	#status.npc.p1_pushing,status(a0)
00027232 08a900050022	bclr	#status.player.pushing,status(a1)
00027238 08e900010022	bset	#status.player.in_air,status(a1)
0002723e 336800080008	move.w	x_pos(a0),x_pos(a1)
00027244 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002724a 422c0001	clr.b	1(a4)
0002724e 303c00be	move.w	#SndID_Roll,d0
00027252 4eb900001370	jsr	(PlaySound).l
00027258 317c0100001c	move.w	#(1<<8)|(0<<0),anim(a0)
0002725e 4e75	rts	
00027260 102c0001	move.b	1(a4),d0
00027264 542c0001	addq.b	#2,1(a4)
00027268 4eb9000033b6	jsr	(CalcSine).l
0002726e ea40	asr.w	#5,d0
00027270 3428000c	move.w	y_pos(a0),d2
00027274 9440	sub.w	d0,d2
00027276 3342000c	move.w	d2,y_pos(a1)
0002727a 0c2c00800001	cmpi.b	#$80,1(a4)
00027280 6610	bne.s	+
00027282 6100008c	bsr.w	loc_27310
00027286 5414	addq.b	#2,(a4)
00027288 303c00bc	move.w	#SndID_SpindashRelease,d0
0002728c 4eb900001370	jsr	(PlaySound).l
00027292 4e75	rts	
00027294 532c0002	subq.b	#1,2(a4)
00027298 6a2e	bpl.s	Obj67_MoveCharacter
0002729a 246c0006	movea.l	6(a4),a2
0002729e 381a	move.w	(a2)+,d4
000272a0 33440008	move.w	d4,x_pos(a1)
000272a4 3a1a	move.w	(a2)+,d5
000272a6 3345000c	move.w	d5,y_pos(a1)
000272aa 4a280028	tst.b	subtype(a0)
000272ae 6a02	bpl.s	+
000272b0 514a	subq.w	#8,a2
000272b2 294a0006	move.l	a2,6(a4)
000272b6 596c0004	subq.w	#4,4(a4)
000272ba 6732	beq.s	loc_272EE
000272bc 381a	move.w	(a2)+,d4
000272be 3a1a	move.w	(a2)+,d5
000272c0 343c1000	move.w	#$1000,d2
000272c4 600000ae	bra.w	loc_27374
000272c8 24290008	move.l	x_pos(a1),d2
000272cc 2629000c	move.l	y_pos(a1),d3
000272d0 30290010	move.w	x_vel(a1),d0
000272d4 48c0	ext.l	d0
000272d6 e180	asl.l	#8,d0
000272d8 d480	add.l	d0,d2
000272da 30290012	move.w	y_vel(a1),d0
000272de 48c0	ext.l	d0
000272e0 e180	asl.l	#8,d0
000272e2 d680	add.l	d0,d3
000272e4 23420008	move.l	d2,x_pos(a1)
000272e8 2343000c	move.l	d3,y_pos(a1)
000272ec 4e75	rts	
000272ee 026907ff000c	andi.w	#$7FF,y_pos(a1)
000272f4 4214	clr.b	(a4)
000272f6 4229002a	clr.b	obj_control(a1)
000272fa 082800040028	btst	#4,subtype(a0)
00027300 660c	bne.s	+
00027302 337c00000010	move.w	#0,x_vel(a1)
00027308 337c00000012	move.w	#0,y_vel(a1)
0002730e 4e75	rts	
00027310 10280028	move.b	subtype(a0),d0
00027314 6a2e	bpl.s	loc_27344
00027316 4400	neg.b	d0
00027318 0240000f	andi.w	#$F,d0
0002731c d040	add.w	d0,d0
0002731e 45f9000273f2	lea	(off_273F2).l,a2
00027324 d4f20000	adda.w	(a2,d0.w),a2
00027328 301a	move.w	(a2)+,d0
0002732a 5940	subq.w	#4,d0
0002732c 39400004	move.w	d0,4(a4)
00027330 45f20000	lea	(a2,d0.w),a2
00027334 381a	move.w	(a2)+,d4
00027336 33440008	move.w	d4,x_pos(a1)
0002733a 3a1a	move.w	(a2)+,d5
0002733c 3345000c	move.w	d5,y_pos(a1)
00027340 514a	subq.w	#8,a2
00027342 6024	bra.s	loc_27368
00027344 0240000f	andi.w	#$F,d0
00027348 d040	add.w	d0,d0
0002734a 45f9000273f2	lea	(off_273F2).l,a2
00027350 d4f20000	adda.w	(a2,d0.w),a2
00027354 395a0004	move.w	(a2)+,4(a4)
00027358 596c0004	subq.w	#4,4(a4)
0002735c 381a	move.w	(a2)+,d4
0002735e 33440008	move.w	d4,x_pos(a1)
00027362 3a1a	move.w	(a2)+,d5
00027364 3345000c	move.w	d5,y_pos(a1)
00027368 294a0006	move.l	a2,6(a4)
0002736c 381a	move.w	(a2)+,d4
0002736e 3a1a	move.w	(a2)+,d5
00027370 343c1000	move.w	#$1000,d2
00027374 7000	moveq	#0,d0
00027376 3602	move.w	d2,d3
00027378 3004	move.w	d4,d0
0002737a 90690008	sub.w	x_pos(a1),d0
0002737e 6c04	bge.s	loc_27384
00027380 4440	neg.w	d0
00027382 4442	neg.w	d2
00027384 7200	moveq	#0,d1
00027386 3205	move.w	d5,d1
00027388 9269000c	sub.w	y_pos(a1),d1
0002738c 6c04	bge.s	loc_27392
0002738e 4441	neg.w	d1
00027390 4443	neg.w	d3
00027392 b240	cmp.w	d0,d1
00027394 652e	blo.s	loc_273C4
00027396 7200	moveq	#0,d1
00027398 3205	move.w	d5,d1
0002739a 9269000c	sub.w	y_pos(a1),d1
0002739e 4841	swap	d1
000273a0 83c3	divs.w	d3,d1
000273a2 7000	moveq	#0,d0
000273a4 3004	move.w	d4,d0
000273a6 90690008	sub.w	x_pos(a1),d0
000273aa 6704	beq.s	loc_273B0
000273ac 4840	swap	d0
000273ae 81c1	divs.w	d1,d0
000273b0 33400010	move.w	d0,x_vel(a1)
000273b4 33430012	move.w	d3,y_vel(a1)
000273b8 4a41	tst.w	d1
000273ba 6a02	bpl.s	.skip
000273bc 4441	neg.w	d1
000273be 39410002	move.w	d1,2(a4)
000273c2 4e75	rts	
000273c4 7000	moveq	#0,d0
000273c6 3004	move.w	d4,d0
000273c8 90690008	sub.w	x_pos(a1),d0
000273cc 4840	swap	d0
000273ce 81c2	divs.w	d2,d0
000273d0 7200	moveq	#0,d1
000273d2 3205	move.w	d5,d1
000273d4 9269000c	sub.w	y_pos(a1),d1
000273d8 6704	beq.s	loc_273DE
000273da 4841	swap	d1
000273dc 83c0	divs.w	d0,d1
000273de 33410012	move.w	d1,y_vel(a1)
000273e2 33420010	move.w	d2,x_vel(a1)
000273e6 4a40	tst.w	d0
000273e8 6a02	bpl.s	.skip
000273ea 4440	neg.w	d0
000273ec 39400002	move.w	d0,2(a4)
000273f0 4e75	rts	
00027580 4ef9000164f4	jmp	(extractJmpToName("JmpTo19_DisplaySprite")).l
00027586 4ef900016544	jmp	(extractJmpToName("JmpTo7_AnimateSprite")).l
0002758c 4ef90001643e	jmp	(extractJmpToName("JmpTo4_MarkObjGone3")).l
00027594 7000	moveq	#0,d0
00027596 10280024	move.b	routine(a0),d0
0002759a 323b0006	move.w	Obj68_Index(pc,d0.w),d1
0002759e 4efb1002	jmp	Obj68_Index(pc,d1.w)
000275a8 54280024	addq.b	#2,routine(a0)
000275ac 217c000277500004	move.l	#Obj68_Obj6D_MapUnc_27750,mappings(a0)
000275b4 317c64140002	move.w	#make_art_tile(ArtTile_ArtNem_MtzSpikeBlock,3,0),art_tile(a0)
000275be 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
000275c4 117c00100019	move.b	#$10,width_pixels(a0)
000275ca 117c00040018	move.b	#4,priority(a0)
000275d4 666e	bne.s	+
000275dc 58290024	addq.b	#4,routine(a1)
000275e0 336800080008	move.w	x_pos(a0),x_pos(a1)
000275e6 3368000c000c	move.w	y_pos(a0),y_pos(a1)
000275ec 336900080030	move.w	x_pos(a1),spikearoundblock_initial_x_pos(a1)
000275f2 3369000c0032	move.w	y_pos(a1),spikearoundblock_initial_y_pos(a1)
000275f8 236800040004	move.l	mappings(a0),mappings(a1)
000275fe 337c241c0002	move.w	#make_art_tile(ArtTile_ArtNem_MtzSpike,1,0),art_tile(a1)
00027604 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
0002760a 137c00100019	move.b	#$10,width_pixels(a1)
00027610 137c00040018	move.b	#4,priority(a1)
00027616 3038fe04	move.w	(Level_frame_counter).w,d0
0002761a ec48	lsr.w	#6,d0
0002761c 3200	move.w	d0,d1
0002761e 02400001	andi.w	#1,d0
00027622 33400036	move.w	d0,spikearoundblock_position(a1)
00027626 e249	lsr.w	#1,d1
00027628 d2280028	add.b	subtype(a0),d1
0002762c 02410003	andi.w	#3,d1
00027630 13410025	move.b	d1,routine_secondary(a1)
00027634 1341001a	move.b	d1,mapping_frame(a1)
00027638 45f90002774c	lea	(Obj68_CollisionFlags).l,a2
0002763e 137210000020	move.b	(a2,d1.w),collision_flags(a1)
00027644 117c0004001a	move.b	#4,mapping_frame(a0)
0002764a 323c001b	move.w	#$1B,d1
0002764e 343c0010	move.w	#$10,d2
00027652 363c0011	move.w	#$11,d3
00027656 38280008	move.w	x_pos(a0),d4
00027662 61000066	bsr.w	Obj68_Spike_Action
00027666 7000	moveq	#0,d0
00027668 10280025	move.b	routine_secondary(a0),d0
0002766c d040	add.w	d0,d0
0002766e 323b000e	move.w	Obj68_Spike_Directions(pc,d0.w),d1
00027672 4ebb100a	jsr	Obj68_Spike_Directions(pc,d1.w)
00027676 30280030	move.w	spikearoundblock_initial_x_pos(a0),d0
00027686 7000	moveq	#0,d0
00027688 10280034	move.b	spikearoundblock_offset(a0),d0
0002768c 4440	neg.w	d0
0002768e d0680032	add.w	spikearoundblock_initial_y_pos(a0),d0
00027692 3140000c	move.w	d0,y_pos(a0)
00027696 4e75	rts	
00027698 7000	moveq	#0,d0
0002769a 10280034	move.b	spikearoundblock_offset(a0),d0
0002769e d0680030	add.w	spikearoundblock_initial_x_pos(a0),d0
000276a2 31400008	move.w	d0,x_pos(a0)
000276a6 4e75	rts	
000276a8 7000	moveq	#0,d0
000276aa 10280034	move.b	spikearoundblock_offset(a0),d0
000276ae d0680032	add.w	spikearoundblock_initial_y_pos(a0),d0
000276b2 3140000c	move.w	d0,y_pos(a0)
000276b6 4e75	rts	
000276b8 7000	moveq	#0,d0
000276ba 10280034	move.b	spikearoundblock_offset(a0),d0
000276be 4440	neg.w	d0
000276c0 d0680030	add.w	spikearoundblock_initial_x_pos(a0),d0
000276c4 31400008	move.w	d0,x_pos(a0)
000276c8 4e75	rts	
000276ca 4a680038	tst.w	spikearoundblock_waiting(a0)
000276ce 671e	beq.s	+
000276d0 1038fe05	move.b	(Level_frame_counter+1).w,d0
000276d4 0200003f	andi.b	#$3F,d0
000276d8 6670	bne.s	Obj68_Spike_Action_End
000276da 42680038	clr.w	spikearoundblock_waiting(a0)
000276de 4a280001	tst.b	render_flags(a0)
000276e2 6a0a	bpl.s	+
000276e4 303c00b6	move.w	#SndID_SpikesMove,d0
000276e8 4eb900001370	jsr	(PlaySound).l
000276ee 4a680036	tst.w	spikearoundblock_position(a0)
000276f2 6736	beq.s	Obj68_Spike_Expanding
000276f4 046808000034	subi.w	#$800,spikearoundblock_offset(a0)
000276fa 644e	bcc.s	Obj68_Spike_Action_End
000276fc 317c00000034	move.w	#0,spikearoundblock_offset(a0)
00027702 317c00000036	move.w	#0,spikearoundblock_position(a0)
00027708 317c00010038	move.w	#1,spikearoundblock_waiting(a0)
0002770e 52280025	addq.b	#1,routine_secondary(a0)
00027712 022800030025	andi.b	#3,routine_secondary(a0)
00027718 7000	moveq	#0,d0
0002771a 10280025	move.b	routine_secondary(a0),d0
0002771e 1140001a	move.b	d0,mapping_frame(a0)
00027722 117b00280020	move.b	Obj68_CollisionFlags(pc,d0.w),collision_flags(a0)
00027728 4e75	rts	
0002772a 066808000034	addi.w	#$800,spikearoundblock_offset(a0)
00027730 0c6820000034	cmpi.w	#$2000,spikearoundblock_offset(a0)
00027736 6512	blo.s	Obj68_Spike_Action_End
00027738 317c20000034	move.w	#$2000,spikearoundblock_offset(a0)
0002773e 317c00010036	move.w	#1,spikearoundblock_position(a0)
00027744 317c00010038	move.w	#1,spikearoundblock_waiting(a0)
0002774a 4e75	rts	
00027794 7000	moveq	#0,d0
00027796 10280024	move.b	routine(a0),d0
0002779a 323b0006	move.w	Obj6D_Index(pc,d0.w),d1
0002779e 4efb1002	jmp	Obj6D_Index(pc,d1.w)
000277a6 54280024	addq.b	#2,routine(a0)
000277aa 217c000277500004	move.l	#Obj68_Obj6D_MapUnc_27750,mappings(a0)
000277b2 317c241c0002	move.w	#make_art_tile(ArtTile_ArtNem_MtzSpike,1,0),art_tile(a0)
000277bc 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000277c2 117c00040019	move.b	#4,width_pixels(a0)
000277c8 117c00040018	move.b	#4,priority(a0)
000277ce 316800080030	move.w	x_pos(a0),floorspike_initial_x_pos(a0)
000277d4 3168000c0032	move.w	y_pos(a0),floorspike_initial_y_pos(a0)
000277da 117c00840020	move.b	#$84,collision_flags(a0)
000277e0 6100001a	bsr.w	Obj6D_Action
000277e4 7000	moveq	#0,d0
000277e6 10280034	move.b	floorspike_offset(a0),d0
000277ea 4440	neg.w	d0
000277ec d0680032	add.w	floorspike_initial_y_pos(a0),d0
000277f0 3140000c	move.w	d0,y_pos(a0)
000277f4 30280030	move.w	floorspike_initial_x_pos(a0),d0
000277fc 4a68003a	tst.w	floorspike_delay(a0)
00027800 6706	beq.s	+
00027802 5368003a	subq.w	#1,floorspike_delay(a0)
00027806 4e75	rts	
00027808 4a680038	tst.w	floorspike_waiting(a0)
0002780c 6712	beq.s	+
0002780e 1038fe05	move.b	(Level_frame_counter+1).w,d0
00027812 90280028	sub.b	subtype(a0),d0
00027816 0200007f	andi.b	#$7F,d0
0002781a 6646	bne.s	Obj6D_Action_End
0002781c 42680038	clr.w	floorspike_waiting(a0)
00027820 4a680036	tst.w	floorspike_position(a0)
00027824 671c	beq.s	Obj6D_Expanding
00027826 046804000034	subi.w	#$400,floorspike_offset(a0)
0002782c 6434	bcc.s	Obj6D_Action_End
0002782e 317c00000034	move.w	#0,floorspike_offset(a0)
00027834 317c00000036	move.w	#0,floorspike_position(a0)
0002783a 317c00010038	move.w	#1,floorspike_waiting(a0)
00027840 4e75	rts	
00027842 066804000034	addi.w	#$400,floorspike_offset(a0)
00027848 0c6820000034	cmpi.w	#$2000,floorspike_offset(a0)
0002784e 6512	blo.s	Obj6D_Action_End
00027850 317c20000034	move.w	#$2000,floorspike_offset(a0)
00027856 317c00010036	move.w	#1,floorspike_position(a0)
0002785c 317c0003003a	move.w	#3,floorspike_delay(a0)
00027862 4e75	rts	
00027864 4ef9000163d2	jmp	(extractJmpToName("JmpTo20_MarkObjGone")).l
0002786a 4ef900017ffa	jmp	(extractJmpToName("JmpTo12_AllocateObjectAfterCurrent")).l
00027870 4ef900016d6e	jmp	(extractJmpToName("JmpTo31_Adjust2PArtPointer")).l
00027876 4ef900019718	jmp	(extractJmpToName("JmpTo11_SolidObject")).l
0002787c 4ef90001640a	jmp	(extractJmpToName("JmpTo2_MarkObjGone2")).l
00027884 7000	moveq	#0,d0
00027886 10280024	move.b	routine(a0),d0
0002788a 323b0006	move.w	Obj69_Index(pc,d0.w),d1
0002788e 4efb1002	jmp	Obj69_Index(pc,d1.w)
0002789a 54280024	addq.b	#2,routine(a0)
0002789e 217c00027a260004	move.l	#Obj69_MapUnc_27A26,mappings(a0)
000278a6 317c25000002	move.w	#make_art_tile(ArtTile_ArtNem_MtzAsstBlocks,1,0),art_tile(a0)
000278b0 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
000278b6 117c00200019	move.b	#$20,width_pixels(a0)
000278bc 117c000b0016	move.b	#$B,y_radius(a0)
000278c2 117c00040018	move.b	#4,priority(a0)
000278c8 3168000c0032	move.w	y_pos(a0),objoff_32(a0)
000278ce 10280028	move.b	subtype(a0),d0
000278d2 0240007f	andi.w	#$7F,d0
000278d6 e748	lsl.w	#3,d0
000278d8 31400036	move.w	d0,objoff_36(a0)
000278dc 43f8b000	lea	(MainCharacter).w,a1
000278e0 49e80038	lea	objoff_38(a0),a4
000278e4 7c03	moveq	#p1_standing_bit,d6
000278e6 612a	bsr.s	Obj69_Action
000278e8 43f8b040	lea	(Sidekick).w,a1
000278ec 49e8003c	lea	objoff_3C(a0),a4
000278f0 7c04	moveq	#p2_standing_bit,d6
000278f2 611e	bsr.s	Obj69_Action
000278f4 026807ff000c	andi.w	#$7FF,y_pos(a0)
000278fa 323c002b	move.w	#$2B,d1
000278fe 343c000c	move.w	#$C,d2
00027902 363c000d	move.w	#$D,d3
00027906 38280008	move.w	x_pos(a0),d4
00027912 0d280022	btst	d6,status(a0)
00027916 6602	bne.s	+
00027918 4214	clr.b	(a4)
0002791a 7000	moveq	#0,d0
0002791c 1014	move.b	(a4),d0
0002791e 303b0006	move.w	Obj69_Modes(pc,d0.w),d0
00027922 4efb0002	jmp	Obj69_Modes(pc,d0.w)
0002792c 0d280022	btst	d6,status(a0)
00027930 6602	bne.s	+
00027932 4e75	rts	
00027934 5414	addq.b	#2,(a4)
00027936 197c00000001	move.b	#0,1(a4)
0002793c 30280008	move.w	x_pos(a0),d0
00027940 90690008	sub.w	x_pos(a1),d0
00027944 6406	bcc.s	loc_2794C
00027946 197c00010001	move.b	#1,1(a4)
0002794c 30290008	move.w	x_pos(a1),d0
00027950 90680008	sub.w	x_pos(a0),d0
00027954 4a2c0001	tst.b	1(a4)
00027958 6704	beq.s	+
0002795a 0640000f	addi.w	#$F,d0
0002795e 0c400010	cmpi.w	#$10,d0
00027962 6408	bhs.s	+
00027964 336800080008	move.w	x_pos(a0),x_pos(a1)
0002796a 5414	addq.b	#2,(a4)
0002796c 4e75	rts	
0002796e 30290008	move.w	x_pos(a1),d0
00027972 90680008	sub.w	x_pos(a0),d0
00027976 645c	bcc.s	loc_279D4
00027978 d1680034	add.w	d0,objoff_34(a0)
0002797c 336800080008	move.w	x_pos(a0),x_pos(a1)
00027982 30280034	move.w	objoff_34(a0),d0
00027986 e640	asr.w	#3,d0
00027988 3200	move.w	d0,d1
0002798a e240	asr.w	#1,d0
0002798c 02400003	andi.w	#3,d0
00027990 1140001a	move.b	d0,mapping_frame(a0)
00027994 4441	neg.w	d1
00027996 d2680032	add.w	objoff_32(a0),d1
0002799a 3141000c	move.w	d1,y_pos(a0)
0002799e 92680032	sub.w	objoff_32(a0),d1
000279a2 30280036	move.w	objoff_36(a0),d0
000279a6 b240	cmp.w	d0,d1
000279a8 6d28	blt.s	return_279D2
000279aa 3200	move.w	d0,d1
000279ac d2680032	add.w	objoff_32(a0),d1
000279b0 3141000c	move.w	d1,y_pos(a0)
000279b4 e748	lsl.w	#3,d0
000279b6 4440	neg.w	d0
000279b8 31400034	move.w	d0,objoff_34(a0)
000279bc 117c0000001a	move.b	#0,mapping_frame(a0)
000279c2 4a280028	tst.b	subtype(a0)
000279c6 6b04	bmi.s	loc_279CC
000279c8 4214	clr.b	(a4)
000279ca 4e75	rts	
000279cc 117c00040024	move.b	#4,routine(a0)
000279d2 4e75	rts	
000279d4 d1680034	add.w	d0,objoff_34(a0)
000279d8 336800080008	move.w	x_pos(a0),x_pos(a1)
000279de 30280034	move.w	objoff_34(a0),d0
000279e2 e640	asr.w	#3,d0
000279e4 3200	move.w	d0,d1
000279e6 e240	asr.w	#1,d0
000279e8 02400003	andi.w	#3,d0
000279ec 1140001a	move.b	d0,mapping_frame(a0)
000279f0 4441	neg.w	d1
000279f2 d2680032	add.w	objoff_32(a0),d1
000279f6 3141000c	move.w	d1,y_pos(a0)
000279fa 4e75	rts	
00027a00 066800380012	addi.w	#$38,y_vel(a0)
00027a0a 4a41	tst.w	d1
00027a0c 6a000014	bpl.w	+
00027a10 d368000c	add.w	d1,y_pos(a0)
00027a14 026807ff000c	andi.w	#$7FF,y_pos(a0)
00027a1a 42680012	clr.w	y_vel(a0)
00027a1e 54280024	addq.b	#2,routine(a0)
00027a22 6000fed0	bra.w	loc_278F4
00027a8e 4e71	nop	
00027a90 4ef9000163d2	jmp	(extractJmpToName("JmpTo21_MarkObjGone")).l
00027a96 4ef90001edfa	jmp	(extractJmpToName("JmpTo_ObjCheckFloorDist")).l
00027a9c 4ef900016d6e	jmp	(extractJmpToName("JmpTo32_Adjust2PArtPointer")).l
00027aa2 4ef900019718	jmp	(extractJmpToName("JmpTo12_SolidObject")).l
00027aa8 4ef9000163ac	jmp	(extractJmpToName("JmpTo13_ObjectMove")).l
00027ab0 7000	moveq	#0,d0
00027ab2 10280024	move.b	routine(a0),d0
00027ab6 323b0006	move.w	Obj6A_Index(pc,d0.w),d1
00027aba 4efb1002	jmp	Obj6A_Index(pc,d1.w)
00027ac4 54280024	addq.b	#2,routine(a0)
00027ac8 217c00026ec80004	move.l	#Obj65_Obj6A_Obj6B_MapUnc_26EC8,mappings(a0)
00027ad0 317c60000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,3,0),art_tile(a0)
00027ad6 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00027adc 117c00040018	move.b	#4,priority(a0)
00027ae2 117c00200019	move.b	#$20,width_pixels(a0)
00027ae8 117c000c0016	move.b	#$C,y_radius(a0)
00027aee 217c00027cdc002c	move.l	#byte_27CDC,objoff_2C(a0)
00027af6 117c0001001a	move.b	#1,mapping_frame(a0)
00027afc 0c38000bfe10	cmpi.b	#mystic_cave_zone,(Current_Zone).w
00027b02 660000c0	bne.w	loc_27BC4
00027b06 54280024	addq.b	#2,routine(a0)
00027b0a 217c00027d300004	move.l	#Obj6A_MapUnc_27D30,mappings(a0)
00027b12 317c63d40002	move.w	#make_art_tile(ArtTile_ArtNem_Crate,3,0),art_tile(a0)
00027b18 117c00200019	move.b	#$20,width_pixels(a0)
00027b1e 117c00200016	move.b	#$20,y_radius(a0)
00027b24 217c00027cf4002c	move.l	#byte_27CF4,objoff_2C(a0)
00027b2c 082800000022	btst	#status.npc.x_flip,status(a0)
00027b32 6708	beq.s	+
00027b34 217c00027d12002c	move.l	#byte_27D12,objoff_2C(a0)
00027b3c 117c0000001a	move.b	#0,mapping_frame(a0)
00027b42 0c2800180028	cmpi.b	#$18,subtype(a0)
00027b48 66000086	bne.w	loc_27BD0
00027b50 664a	bne.s	++
00027b52 614a	bsr.s	Obj6A_InitSubObject
00027b54 066900400008	addi.w	#$40,x_pos(a1)
00027b5a 06690040000c	addi.w	#$40,y_pos(a1)
00027b60 137c00060028	move.b	#6,subtype(a1)
00027b66 082800000022	btst	#status.npc.x_flip,status(a0)
00027b6c 6706	beq.s	+
00027b6e 137c000c0028	move.b	#$C,subtype(a1)
00027b78 6622	bne.s	+
00027b7a 6122	bsr.s	Obj6A_InitSubObject
00027b7c 046900400008	subi.w	#$40,x_pos(a1)
00027b82 06690040000c	addi.w	#$40,y_pos(a1)
00027b88 137c000c0028	move.b	#$C,subtype(a1)
00027b8e 082800000022	btst	#status.npc.x_flip,status(a0)
00027b94 6706	beq.s	+
00027b96 137c00060028	move.b	#6,subtype(a1)
00027b9c 6026	bra.s	loc_27BC4
00027ba4 336800080008	move.w	x_pos(a0),x_pos(a1)
00027baa 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00027bb0 336800080032	move.w	x_pos(a0),objoff_32(a1)
00027bb6 3368000c0030	move.w	y_pos(a0),objoff_30(a1)
00027bbc 136800220022	move.b	status(a0),status(a1)
00027bc2 4e75	rts	
00027bc4 316800080032	move.w	x_pos(a0),objoff_32(a0)
00027bca 3168000c0030	move.w	y_pos(a0),objoff_30(a0)
00027bd4 116800280038	move.b	subtype(a0),objoff_38(a0)
00027bda 600000c6	bra.w	loc_27CA2
00027bde 3f280008	move.w	x_pos(a0),-(sp)
00027be2 4a680036	tst.w	objoff_36(a0)
00027be6 6646	bne.s	loc_27C2E
00027be8 1228003c	move.b	objoff_3C(a0),d1
00027bec 10280022	move.b	status(a0),d0
00027bf0 08000003	btst	#p1_standing_bit,d0
00027bf4 6614	bne.s	loc_27C0A
00027bf6 08010003	btst	#p1_standing_bit,d1
00027bfa 6712	beq.s	loc_27C0E
00027bfc 117c00010036	move.b	#1,objoff_36(a0)
00027c02 117c0000003c	move.b	#0,objoff_3C(a0)
00027c08 6034	bra.s	loc_27C3E
00027c0a 1140003c	move.b	d0,objoff_3C(a0)
00027c0e 08000004	btst	#p2_standing_bit,d0
00027c12 6614	bne.s	loc_27C28
00027c14 08010004	btst	#p2_standing_bit,d1
00027c18 6724	beq.s	loc_27C3E
00027c1a 117c00010036	move.b	#1,objoff_36(a0)
00027c20 117c0000003c	move.b	#0,objoff_3C(a0)
00027c26 6016	bra.s	loc_27C3E
00027c28 1140003c	move.b	d0,objoff_3C(a0)
00027c2c 6010	bra.s	loc_27C3E
00027c2e 4eb9000163ac	jsr	(ObjectMove).l
00027c34 53680034	subq.w	#1,objoff_34(a0)
00027c38 6604	bne.s	loc_27C3E
00027c3a 61000066	bsr.w	loc_27CA2
00027c3e 381f	move.w	(sp)+,d4
00027c40 4a280001	tst.b	render_flags(a0)
00027c44 6a18	bpl.s	loc_27C5E
00027c46 7200	moveq	#0,d1
00027c48 12280019	move.b	width_pixels(a0),d1
00027c4c 0641000b	addi.w	#$B,d1
00027c50 7400	moveq	#0,d2
00027c52 14280016	move.b	y_radius(a0),d2
00027c56 3602	move.w	d2,d3
00027c58 5243	addq.w	#1,d3
00027c5e 30280032	move.w	objoff_32(a0),d0
00027c66 3f280008	move.w	x_pos(a0),-(sp)
00027c6a 4eb9000163ac	jsr	(ObjectMove).l
00027c70 53680034	subq.w	#1,objoff_34(a0)
00027c74 6604	bne.s	loc_27C7A
00027c76 6100002a	bsr.w	loc_27CA2
00027c7a 381f	move.w	(sp)+,d4
00027c7c 4a280001	tst.b	render_flags(a0)
00027c80 6a18	bpl.s	loc_27C9A
00027c82 7200	moveq	#0,d1
00027c84 12280019	move.b	width_pixels(a0),d1
00027c88 0641000b	addi.w	#$B,d1
00027c8c 7400	moveq	#0,d2
00027c8e 14280016	move.b	y_radius(a0),d2
00027c92 3602	move.w	d2,d3
00027c94 5243	addq.w	#1,d3
00027c9a 30280032	move.w	objoff_32(a0),d0
00027ca2 7000	moveq	#0,d0
00027ca4 10280038	move.b	objoff_38(a0),d0
00027ca8 2268002c	movea.l	objoff_2C(a0),a1
00027cac 43f10000	lea	(a1,d0.w),a1
00027cb0 31590010	move.w	(a1)+,x_vel(a0)
00027cb4 31590012	move.w	(a1)+,y_vel(a0)
00027cb8 31590034	move.w	(a1)+,objoff_34(a0)
00027cbc 317c0007003a	move.w	#7,objoff_3A(a0)
00027cc2 117c00000036	move.b	#0,objoff_36(a0)
00027cc8 5c280038	addq.b	#6,objoff_38(a0)
00027ccc 0c2800180038	cmpi.b	#6*4,objoff_38(a0)
00027cd2 6506	blo.s	return_27CDA
00027cd4 117c00000038	move.b	#0,objoff_38(a0)
00027cda 4e75	rts	
00027d54 4ef900017ffa	jmp	(extractJmpToName("JmpTo13_AllocateObjectAfterCurrent")).l
00027d5a 4ef900016d6e	jmp	(extractJmpToName("JmpTo33_Adjust2PArtPointer")).l
00027d60 4ef900019718	jmp	(extractJmpToName("JmpTo13_SolidObject")).l
00027d66 4ef90001640a	jmp	(extractJmpToName("JmpTo3_MarkObjGone2")).l
00027d6c 7000	moveq	#0,d0
00027d6e 10280024	move.b	routine(a0),d0
00027d72 323b0006	move.w	Obj6B_Index(pc,d0.w),d1
00027d76 4efb1002	jmp	Obj6B_Index(pc,d1.w)
00027d86 54280024	addq.b	#2,routine(a0)
00027d8a 217c00026ec80004	move.l	#Obj65_Obj6A_Obj6B_MapUnc_26EC8,mappings(a0)
00027d92 317c60000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,3,0),art_tile(a0)
00027d98 0c38000dfe10	cmpi.b	#chemical_plant_zone,(Current_Zone).w
00027d9e 660e	bne.s	+
00027da0 217c0002800e0004	move.l	#Obj6B_MapUnc_2800E,mappings(a0)
00027da8 317c64180002	move.w	#make_art_tile(ArtTile_ArtNem_CPZStairBlock,3,0),art_tile(a0)
00027db2 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00027db8 117c00030018	move.b	#3,priority(a0)
00027dbe 7000	moveq	#0,d0
00027dc0 10280028	move.b	subtype(a0),d0
00027dc4 e448	lsr.w	#2,d0
00027dc6 0240001c	andi.w	#$1C,d0
00027dca 45fb00b2	lea	Obj6B_Properties(pc,d0.w),a2
00027dce 115a0019	move.b	(a2)+,width_pixels(a0)
00027dd2 115a0016	move.b	(a2)+,y_radius(a0)
00027dd6 115a001a	move.b	(a2)+,mapping_frame(a0)
00027dda 316800080034	move.w	x_pos(a0),objoff_34(a0)
00027de0 3168000c0030	move.w	y_pos(a0),objoff_30(a0)
00027de6 11680022002e	move.b	status(a0),objoff_2E(a0)
00027dec 7000	moveq	#0,d0
00027dee 10280028	move.b	subtype(a0),d0
00027df2 0240000f	andi.w	#$F,d0
00027df6 5140	subq.w	#8,d0
00027df8 6514	bcs.s	Obj6B_Main
00027dfa e548	lsl.w	#2,d0
00027dfc 45f8fe8a	lea	(Oscillating_Data+$2A).w,a2
00027e00 45f20000	lea	(a2,d0.w),a2
00027e04 4a52	tst.w	(a2)
00027e06 6a06	bpl.s	Obj6B_Main
00027e08 08680000002e	bchg	#status.npc.x_flip,objoff_2E(a0)
00027e0e 3f280008	move.w	x_pos(a0),-(sp)
00027e12 7000	moveq	#0,d0
00027e14 10280028	move.b	subtype(a0),d0
00027e18 0240000f	andi.w	#$F,d0
00027e1c d040	add.w	d0,d0
00027e1e 323b002e	move.w	Obj6B_Types(pc,d0.w),d1
00027e22 4ebb102a	jsr	Obj6B_Types(pc,d1.w)
00027e26 381f	move.w	(sp)+,d4
00027e28 4a280001	tst.b	render_flags(a0)
00027e2c 6a18	bpl.s	+
00027e2e 7200	moveq	#0,d1
00027e30 12280019	move.b	width_pixels(a0),d1
00027e34 0641000b	addi.w	#$B,d1
00027e38 7400	moveq	#0,d2
00027e3a 14280016	move.b	y_radius(a0),d2
00027e3e 3602	move.w	d2,d3
00027e40 5243	addq.w	#1,d3
00027e46 30280034	move.w	objoff_34(a0),d0
00027e66 4e75	rts	
00027e68 323c0040	move.w	#$40,d1
00027e6c 7000	moveq	#0,d0
00027e6e 1038fe68	move.b	(Oscillating_Data+8).w,d0
00027e72 600a	bra.s	+
00027e74 323c0080	move.w	#$80,d1
00027e78 7000	moveq	#0,d0
00027e7a 1038fe7c	move.b	(Oscillating_Data+$1C).w,d0
00027e7e 082800000022	btst	#status.npc.x_flip,status(a0)
00027e84 6704	beq.s	+
00027e86 4440	neg.w	d0
00027e88 d041	add.w	d1,d0
00027e8a 32280034	move.w	objoff_34(a0),d1
00027e8e 9240	sub.w	d0,d1
00027e90 31410008	move.w	d1,x_pos(a0)
00027e94 4e75	rts	
00027e96 323c0040	move.w	#$40,d1
00027e9a 7000	moveq	#0,d0
00027e9c 1038fe68	move.b	(Oscillating_Data+8).w,d0
00027ea0 600a	bra.s	loc_27EAC
00027ea2 323c0080	move.w	#$80,d1
00027ea6 7000	moveq	#0,d0
00027ea8 1038fe7c	move.b	(Oscillating_Data+$1C).w,d0
00027eac 082800000022	btst	#status.npc.x_flip,status(a0)
00027eb2 6704	beq.s	loc_27EB8
00027eb4 4440	neg.w	d0
00027eb6 d041	add.w	d1,d0
00027eb8 32280030	move.w	objoff_30(a0),d1
00027ebc 9240	sub.w	d0,d1
00027ebe 3141000c	move.w	d1,y_pos(a0)
00027ec2 4e75	rts	
00027ec4 1038fe60	move.b	(Oscillating_Data).w,d0
00027ec8 e248	lsr.w	#1,d0
00027eca d0680030	add.w	objoff_30(a0),d0
00027ece 3140000c	move.w	d0,y_pos(a0)
00027ed2 12280022	move.b	status(a0),d1
00027ed6 02010018	andi.b	#standing_mask,d1
00027eda 6704	beq.s	return_27EE0
00027edc 52280028	addq.b	#1,subtype(a0)
00027ee0 4e75	rts	
00027ee2 2628000c	move.l	y_pos(a0),d3
00027ee6 30280012	move.w	y_vel(a0),d0
00027eea 48c0	ext.l	d0
00027eec e180	asl.l	#8,d0
00027eee d680	add.l	d0,d3
00027ef0 2143000c	move.l	d3,y_pos(a0)
00027efa 3038eece	move.w	(Camera_Max_Y_pos).w,d0
00027efe 064000e0	addi.w	#screen_height,d0
00027f02 b068000c	cmp.w	y_pos(a0),d0
00027f06 6406	bhs.s	return_27F0E
00027f08 117c00000028	move.b	#0,subtype(a0)
00027f0e 4e75	rts	
00027f10 4a280038	tst.b	objoff_38(a0)
00027f14 6610	bne.s	loc_27F26
00027f16 10280022	move.b	status(a0),d0
00027f1a 02000018	andi.b	#standing_mask,d0
00027f1e 672c	beq.s	return_27F4C
00027f20 117c00080038	move.b	#8,objoff_38(a0)
00027f2a 026807ff000c	andi.w	#$7FF,y_pos(a0)
00027f30 0c6802a80012	cmpi.w	#$2A8,y_vel(a0)
00027f36 6604	bne.s	loc_27F3C
00027f38 44280038	neg.b	objoff_38(a0)
00027f3c 12280038	move.b	objoff_38(a0),d1
00027f40 4881	ext.w	d1
00027f42 d3680012	add.w	d1,y_vel(a0)
00027f46 6604	bne.s	return_27F4C
00027f48 42280028	clr.b	subtype(a0)
00027f4c 4e75	rts	
00027f4e 323c0010	move.w	#$10,d1
00027f52 7000	moveq	#0,d0
00027f54 1038fe88	move.b	(Oscillating_Data+$28).w,d0
00027f58 e248	lsr.w	#1,d0
00027f5a 3638fe8a	move.w	(Oscillating_Data+$2A).w,d3
00027f5e 602e	bra.s	loc_27F8E
00027f60 323c0030	move.w	#$30,d1
00027f64 7000	moveq	#0,d0
00027f66 1038fe8c	move.b	(Oscillating_Data+$2C).w,d0
00027f6a 3638fe8e	move.w	(Oscillating_Data+$2E).w,d3
00027f6e 601e	bra.s	loc_27F8E
00027f70 323c0050	move.w	#$50,d1
00027f74 7000	moveq	#0,d0
00027f76 1038fe90	move.b	(Oscillating_Data+$30).w,d0
00027f7a 3638fe92	move.w	(Oscillating_Data+$32).w,d3
00027f7e 600e	bra.s	loc_27F8E
00027f80 323c0070	move.w	#$70,d1
00027f84 7000	moveq	#0,d0
00027f86 1038fe94	move.b	(Oscillating_Data+$34).w,d0
00027f8a 3638fe96	move.w	(Oscillating_Data+$36).w,d3
00027f8e 4a43	tst.w	d3
00027f90 660a	bne.s	loc_27F9C
00027f92 5228002e	addq.b	#1<<status.npc.x_flip,objoff_2E(a0)
00027f96 02280003002e	andi.b	#1<<status.npc.x_flip|1<<status.npc.y_flip,objoff_2E(a0)
00027f9c 1428002e	move.b	objoff_2E(a0),d2
00027fa0 02020003	andi.b	#1<<status.npc.x_flip|1<<status.npc.y_flip,d2
00027fa4 6616	bne.s	loc_27FBC
00027fa6 9041	sub.w	d1,d0
00027fa8 d0680034	add.w	objoff_34(a0),d0
00027fac 31400008	move.w	d0,x_pos(a0)
00027fb0 4441	neg.w	d1
00027fb2 d2680030	add.w	objoff_30(a0),d1
00027fb6 3141000c	move.w	d1,y_pos(a0)
00027fba 4e75	rts	
00027fbc 5302	subq.b	#1,d2
00027fbe 661a	bne.s	loc_27FDA
00027fc0 5341	subq.w	#1,d1
00027fc2 9041	sub.w	d1,d0
00027fc4 4440	neg.w	d0
00027fc6 d0680030	add.w	objoff_30(a0),d0
00027fca 3140000c	move.w	d0,y_pos(a0)
00027fce 5241	addq.w	#1,d1
00027fd0 d2680034	add.w	objoff_34(a0),d1
00027fd4 31410008	move.w	d1,x_pos(a0)
00027fd8 4e75	rts	
00027fda 5302	subq.b	#1,d2
00027fdc 661a	bne.s	loc_27FF8
00027fde 5341	subq.w	#1,d1
00027fe0 9041	sub.w	d1,d0
00027fe2 4440	neg.w	d0
00027fe4 d0680034	add.w	objoff_34(a0),d0
00027fe8 31400008	move.w	d0,x_pos(a0)
00027fec 5241	addq.w	#1,d1
00027fee d2680030	add.w	objoff_30(a0),d1
00027ff2 3141000c	move.w	d1,y_pos(a0)
00027ff6 4e75	rts	
00027ff8 9041	sub.w	d1,d0
00027ffa d0680030	add.w	objoff_30(a0),d0
00027ffe 3140000c	move.w	d0,y_pos(a0)
00028002 4441	neg.w	d1
00028004 d2680034	add.w	objoff_34(a0),d1
00028008 31410008	move.w	d1,x_pos(a0)
0002800c 4e75	rts	
0002801a 4e71	nop	
0002801c 4ef900016d6e	jmp	(extractJmpToName("JmpTo34_Adjust2PArtPointer")).l
00028022 4ef900019718	jmp	(extractJmpToName("JmpTo14_SolidObject")).l
00028028 4ef90001640a	jmp	(extractJmpToName("JmpTo4_MarkObjGone2")).l
0002802e 4ef9000163ac	jmp	(extractJmpToName("JmpTo14_ObjectMove")).l
00028034 7000	moveq	#0,d0
00028036 10280024	move.b	routine(a0),d0
0002803a 323b0020	move.w	Obj6C_Index(pc,d0.w),d1
0002803e 4ebb101c	jsr	Obj6C_Index(pc,d1.w)
00028042 30280030	move.w	objoff_30(a0),d0
00028046 0240ff80	andi.w	#$FF80,d0
0002804a 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
0002804e 0c400280	cmpi.w	#$280,d0
00028052 6204	bhi.s	+
00028060 10280028	move.b	subtype(a0),d0
00028064 6b0000ac	bmi.w	loc_28112
00028068 54280024	addq.b	#2,routine(a0)
0002806c 217c000283720004	move.l	#Obj6C_MapUnc_28372,mappings(a0)
00028074 317c63f90002	move.w	#make_art_tile(ArtTile_ArtNem_LavaCup,3,0),art_tile(a0)
0002807a 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00028080 117c00100019	move.b	#$10,width_pixels(a0)
00028086 117c00040018	move.b	#4,priority(a0)
00028090 117c0000001a	move.b	#0,mapping_frame(a0)
00028096 7000	moveq	#0,d0
00028098 10280028	move.b	subtype(a0),d0
0002809c 3200	move.w	d0,d1
0002809e e648	lsr.w	#3,d0
000280a0 0240001e	andi.w	#$1E,d0
000280a4 45fa01ac	lea	off_28252(pc),a2
000280a8 d4f20000	adda.w	(a2,d0.w),a2
000280ac 315a0038	move.w	(a2)+,objoff_38(a0)
000280b0 214a003c	move.l	a2,objoff_3C(a0)
000280b4 0241000f	andi.w	#$F,d1
000280b8 e549	lsl.w	#2,d1
000280ba 11410038	move.b	d1,objoff_38(a0)
000280be 117c0004003a	move.b	#4,objoff_3A(a0)
000280c4 082800000022	btst	#status.npc.x_flip,status(a0)
000280ca 6726	beq.s	loc_280F2
000280cc 4428003a	neg.b	objoff_3A(a0)
000280d0 7200	moveq	#0,d1
000280d2 12280038	move.b	objoff_38(a0),d1
000280d6 d228003a	add.b	objoff_3A(a0),d1
000280da b2280039	cmp.b	objoff_39(a0),d1
000280de 650e	blo.s	loc_280EE
000280e0 1001	move.b	d1,d0
000280e2 7200	moveq	#0,d1
000280e4 4a00	tst.b	d0
000280e6 6a06	bpl.s	loc_280EE
000280e8 12280039	move.b	objoff_39(a0),d1
000280ec 5901	subq.b	#4,d1
000280ee 11410038	move.b	d1,objoff_38(a0)
000280f2 30321000	move.w	(a2,d1.w),d0
000280f6 d0680030	add.w	objoff_30(a0),d0
000280fa 31400034	move.w	d0,objoff_34(a0)
000280fe 30321002	move.w	2(a2,d1.w),d0
00028102 d0680032	add.w	objoff_32(a0),d0
00028106 31400036	move.w	d0,objoff_36(a0)
0002810a 610000ce	bsr.w	loc_281DA
0002810e 60000058	bra.w	Obj6C_Main
00028112 0240007f	andi.w	#$7F,d0
00028116 d040	add.w	d0,d0
00028118 45f9000282d6	lea	(off_282D6).l,a2
0002811e d4f20000	adda.w	(a2,d0.w),a2
00028122 321a	move.w	(a2)+,d1
00028124 2248	movea.l	a0,a1
00028126 34280008	move.w	x_pos(a0),d2
0002812a 3628000c	move.w	y_pos(a0),d3
0002812e 6006	bra.s	Obj6C_LoadSubObject
00028134 662a	bne.s	+
0002813c 301a	move.w	(a2)+,d0
0002813e d042	add.w	d2,d0
00028140 33400008	move.w	d0,x_pos(a1)
00028144 301a	move.w	(a2)+,d0
00028146 d043	add.w	d3,d0
00028148 3340000c	move.w	d0,y_pos(a1)
0002814c 33420030	move.w	d2,objoff_30(a1)
00028150 33430032	move.w	d3,objoff_32(a1)
00028154 301a	move.w	(a2)+,d0
00028156 13400028	move.b	d0,subtype(a1)
0002815a 136800220022	move.b	status(a0),status(a1)
00028160 51c9ffce	dbf	d1,Obj6C_SubObjectsLoop
00028164 588f	addq.l	#4,sp
00028166 4e75	rts	
00028168 3f280008	move.w	x_pos(a0),-(sp)
0002816c 61000010	bsr.w	loc_2817E
00028170 7200	moveq	#0,d1
00028172 12280019	move.b	width_pixels(a0),d1
00028176 7608	moveq	#8,d3
00028178 381f	move.w	(sp)+,d4
0002817e 30280008	move.w	x_pos(a0),d0
00028182 b0680034	cmp.w	objoff_34(a0),d0
00028186 664c	bne.s	loc_281D4
00028188 3028000c	move.w	y_pos(a0),d0
0002818c b0680036	cmp.w	objoff_36(a0),d0
00028190 6642	bne.s	loc_281D4
00028192 7200	moveq	#0,d1
00028194 12280038	move.b	objoff_38(a0),d1
00028198 d228003a	add.b	objoff_3A(a0),d1
0002819c b2280039	cmp.b	objoff_39(a0),d1
000281a0 650e	blo.s	loc_281B0
000281a2 1001	move.b	d1,d0
000281a4 7200	moveq	#0,d1
000281a6 4a00	tst.b	d0
000281a8 6a06	bpl.s	loc_281B0
000281aa 12280039	move.b	objoff_39(a0),d1
000281ae 5901	subq.b	#4,d1
000281b0 11410038	move.b	d1,objoff_38(a0)
000281b4 2268003c	movea.l	objoff_3C(a0),a1
000281b8 30311000	move.w	(a1,d1.w),d0
000281bc d0680030	add.w	objoff_30(a0),d0
000281c0 31400034	move.w	d0,objoff_34(a0)
000281c4 30311002	move.w	2(a1,d1.w),d0
000281c8 d0680032	add.w	objoff_32(a0),d0
000281cc 31400036	move.w	d0,objoff_36(a0)
000281d0 61000008	bsr.w	loc_281DA
000281d8 4e75	rts	
000281da 7000	moveq	#0,d0
000281dc 343cff00	move.w	#-$100,d2
000281e0 30280008	move.w	x_pos(a0),d0
000281e4 90680034	sub.w	objoff_34(a0),d0
000281e8 6404	bcc.s	loc_281EE
000281ea 4440	neg.w	d0
000281ec 4442	neg.w	d2
000281ee 7200	moveq	#0,d1
000281f0 363cff00	move.w	#-$100,d3
000281f4 3228000c	move.w	y_pos(a0),d1
000281f8 92680036	sub.w	objoff_36(a0),d1
000281fc 6404	bcc.s	loc_28202
000281fe 4441	neg.w	d1
00028200 4443	neg.w	d3
00028202 b240	cmp.w	d0,d1
00028204 6526	blo.s	loc_2822C
00028206 30280008	move.w	x_pos(a0),d0
0002820a 90680034	sub.w	objoff_34(a0),d0
0002820e 6708	beq.s	loc_28218
00028210 48c0	ext.l	d0
00028212 e180	asl.l	#8,d0
00028214 81c1	divs.w	d1,d0
00028216 4440	neg.w	d0
00028218 31400010	move.w	d0,x_vel(a0)
0002821c 31430012	move.w	d3,y_vel(a0)
00028220 4840	swap	d0
00028222 3140000a	move.w	d0,x_sub(a0)
00028226 4268000e	clr.w	y_sub(a0)
0002822a 4e75	rts	
0002822c 3228000c	move.w	y_pos(a0),d1
00028230 92680036	sub.w	objoff_36(a0),d1
00028234 6708	beq.s	loc_2823E
00028236 48c1	ext.l	d1
00028238 e181	asl.l	#8,d1
0002823a 83c0	divs.w	d0,d1
0002823c 4441	neg.w	d1
0002823e 31410012	move.w	d1,y_vel(a0)
00028242 31420010	move.w	d2,x_vel(a0)
00028246 4841	swap	d1
00028248 3141000e	move.w	d1,y_sub(a0)
0002824c 4268000a	clr.w	x_sub(a0)
00028250 4e75	rts	
00028386 4e71	nop	
00028388 4ef9000164f4	jmp	(extractJmpToName("JmpTo20_DisplaySprite")).l
0002838e 4ef9000164e6	jmp	(extractJmpToName("JmpTo34_DeleteObject")).l
00028394 4ef900017fda	jmp	(extractJmpToName("JmpTo8_AllocateObject")).l
0002839a 4ef900016d6e	jmp	(extractJmpToName("JmpTo35_Adjust2PArtPointer")).l
000283a0 4ef900019c32	jmp	(extractJmpToName("JmpTo5_PlatformObject")).l
000283a6 4ef9000163ac	jmp	(extractJmpToName("JmpTo15_ObjectMove")).l
000283ac 7000	moveq	#0,d0
000283ae 10280024	move.b	routine(a0),d0
000283b2 323b0006	move.w	Obj6E_Index(pc,d0.w),d1
000283b6 4efb1002	jmp	Obj6E_Index(pc,d1.w)
000283c8 54280024	addq.b	#2,routine(a0)
000283cc 217c0002852c0004	move.l	#Obj6E_MapUnc_2852C,mappings(a0)
000283d4 317c60000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,3,0),art_tile(a0)
000283de 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000283e4 117c00040018	move.b	#4,priority(a0)
000283ea 7000	moveq	#0,d0
000283ec 10280028	move.b	subtype(a0),d0
000283f0 e648	lsr.w	#3,d0
000283f2 0240000e	andi.w	#$E,d0
000283f6 47fb00c8	lea	byte_283C0(pc,d0.w),a3
000283fa 115b0019	move.b	(a3)+,width_pixels(a0)
000283fe 115b0016	move.b	(a3)+,y_radius(a0)
00028402 e248	lsr.w	#1,d0
00028404 1140001a	move.b	d0,mapping_frame(a0)
00028408 316800080034	move.w	x_pos(a0),objoff_34(a0)
0002840e 3168000c0030	move.w	y_pos(a0),objoff_30(a0)
00028414 0c000003	cmpi.b	#3,d0
00028418 6618	bne.s	loc_28432
0002841a 54280024	addq.b	#2,routine(a0)
0002841e 317c63f00002	move.w	#make_art_tile(ArtTile_ArtNem_MtzWheelIndent,3,0),art_tile(a0)
00028428 117c00050018	move.b	#5,priority(a0)
0002842e 6000008c	bra.w	loc_284BC
00028432 3f280008	move.w	x_pos(a0),-(sp)
00028436 1238fe80	move.b	(Oscillating_Data+$20).w,d1
0002843a 04010038	subi.b	#$38,d1
0002843e 4881	ext.w	d1
00028440 1438fe84	move.b	(Oscillating_Data+$24).w,d2
00028444 04020038	subi.b	#$38,d2
00028448 4882	ext.w	d2
0002844a 082800000028	btst	#0,subtype(a0)
00028450 6704	beq.s	+
00028452 4441	neg.w	d1
00028454 4442	neg.w	d2
00028456 082800010028	btst	#1,subtype(a0)
0002845c 6704	beq.s	+
0002845e 4441	neg.w	d1
00028460 c342	exg	d1,d2
00028462 d2680034	add.w	objoff_34(a0),d1
00028466 31410008	move.w	d1,x_pos(a0)
0002846a d4680030	add.w	objoff_30(a0),d2
0002846e 3142000c	move.w	d2,y_pos(a0)
00028472 381f	move.w	(sp)+,d4
00028474 7200	moveq	#0,d1
00028476 12280019	move.b	width_pixels(a0),d1
0002847a 0641000b	addi.w	#$B,d1
0002847e 7400	moveq	#0,d2
00028480 14280016	move.b	y_radius(a0),d2
00028484 3602	move.w	d2,d3
00028486 5243	addq.w	#1,d3
0002848c 30280034	move.w	objoff_34(a0),d0
00028490 0240ff80	andi.w	#$FF80,d0
00028494 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00028498 0c400280	cmpi.w	#$280,d0
0002849c 6206	bhi.s	+
0002849e 4ef9000164f4	jmp	(DisplaySprite).l
000284a4 45f8fc00	lea	(Object_Respawn_Table).w,a2
000284a8 7000	moveq	#0,d0
000284aa 10280023	move.b	respawn_index(a0),d0
000284ae 6706	beq.s	+
000284b0 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
000284b6 4ef9000164e6	jmp	(DeleteObject).l
000284bc 1238fe80	move.b	(Oscillating_Data+$20).w,d1
000284c0 e209	lsr.b	#1,d1
000284c2 0401001c	subi.b	#$1C,d1
000284c6 4881	ext.w	d1
000284c8 1438fe84	move.b	(Oscillating_Data+$24).w,d2
000284cc e20a	lsr.b	#1,d2
000284ce 0402001c	subi.b	#$1C,d2
000284d2 4882	ext.w	d2
000284d4 082800000028	btst	#0,subtype(a0)
000284da 6704	beq.s	+
000284dc 4441	neg.w	d1
000284de 4442	neg.w	d2
000284e0 082800010028	btst	#1,subtype(a0)
000284e6 6704	beq.s	+
000284e8 4441	neg.w	d1
000284ea c342	exg	d1,d2
000284ec d2680034	add.w	objoff_34(a0),d1
000284f0 31410008	move.w	d1,x_pos(a0)
000284f4 d4680030	add.w	objoff_30(a0),d2
000284f8 3142000c	move.w	d2,y_pos(a0)
000284fc 30280034	move.w	objoff_34(a0),d0
00028500 0240ff80	andi.w	#$FF80,d0
00028504 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00028508 0c400280	cmpi.w	#$280,d0
0002850c 6206	bhi.s	+
0002850e 4ef9000164f4	jmp	(DisplaySprite).l
00028514 45f8fc00	lea	(Object_Respawn_Table).w,a2
00028518 7000	moveq	#0,d0
0002851a 10280023	move.b	respawn_index(a0),d0
0002851e 6706	beq.s	+
00028520 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
00028526 4ef9000164e6	jmp	(DeleteObject).l
000285b4 4ef900016d6e	jmp	(extractJmpToName("JmpTo36_Adjust2PArtPointer")).l
000285ba 4ef900019718	jmp	(extractJmpToName("JmpTo15_SolidObject")).l
000285c0 7000	moveq	#0,d0
000285c2 10280024	move.b	routine(a0),d0
000285c6 323b0006	move.w	Obj70_Index(pc,d0.w),d1
000285ca 4efb1002	jmp	Obj70_Index(pc,d1.w)
000285d2 7207	moveq	#7,d1
000285d4 7800	moveq	#0,d4
000285d6 45f900028726	lea	(Obj70_Positions).l,a2
000285dc 2248	movea.l	a0,a1
000285de 34280008	move.w	x_pos(a0),d2
000285e2 3628000c	move.w	y_pos(a0),d3
000285e6 08e800070022	bset	#status.npc.no_balancing,status(a0)
000285ec 6006	bra.s	Obj70_LoadSubObject
000285f2 665a	bne.s	+
000285fa 54290024	addq.b	#2,routine(a1)
000285fe 237c000287860004	move.l	#Obj70_MapUnc_28786,mappings(a1)
00028606 337c63780002	move.w	#make_art_tile(ArtTile_ArtNem_MtzWheel,3,0),art_tile(a1)
00028610 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
00028616 137c00040018	move.b	#4,priority(a1)
0002861c 137c00100019	move.b	#$10,width_pixels(a1)
00028622 33420032	move.w	d2,objoff_32(a1)
00028626 33430030	move.w	d3,objoff_30(a1)
0002862a 101a	move.b	(a2)+,d0
0002862c 4880	ext.w	d0
0002862e d042	add.w	d2,d0
00028630 33400008	move.w	d0,x_pos(a1)
00028634 101a	move.b	(a2)+,d0
00028636 4880	ext.w	d0
00028638 d043	add.w	d3,d0
0002863a 3340000c	move.w	d0,y_pos(a1)
0002863e 135a001a	move.b	(a2)+,mapping_frame(a1)
00028642 33440034	move.w	d4,objoff_34(a1)
00028646 5644	addq.w	#3,d4
00028648 136800220022	move.b	status(a0),status(a1)
0002864e 51c9ff9e	dbf	d1,Obj70_SubObjectLoop
00028652 3f280008	move.w	x_pos(a0),-(sp)
00028656 1038fe05	move.b	(Level_frame_counter+1).w,d0
0002865a 1200	move.b	d0,d1
0002865c 0240000f	andi.w	#$F,d0
00028660 6668	bne.s	loc_286CA
00028662 32280036	move.w	objoff_36(a0),d1
00028666 082800000022	btst	#status.npc.x_flip,status(a0)
0002866c 6716	beq.s	loc_28684
0002866e 04410018	subi.w	#$18,d1
00028672 642e	bcc.s	loc_286A2
00028674 7248	moveq	#$48,d1
00028676 57680034	subq.w	#3,objoff_34(a0)
0002867a 6426	bcc.s	loc_286A2
0002867c 317c00150034	move.w	#$15,objoff_34(a0)
00028682 601e	bra.s	loc_286A2
00028684 06410018	addi.w	#$18,d1
00028688 0c410060	cmpi.w	#$60,d1
0002868c 6514	blo.s	loc_286A2
0002868e 7200	moveq	#0,d1
00028690 56680034	addq.w	#3,objoff_34(a0)
00028694 0c6800180034	cmpi.w	#$18,objoff_34(a0)
0002869a 6506	blo.s	loc_286A2
0002869c 317c00000034	move.w	#0,objoff_34(a0)
000286a2 31410036	move.w	d1,objoff_36(a0)
000286a6 d2680034	add.w	objoff_34(a0),d1
000286aa 43fb107a	lea	Obj70_Positions(pc,d1.w),a1
000286ae 1019	move.b	(a1)+,d0
000286b0 4880	ext.w	d0
000286b2 d0680032	add.w	objoff_32(a0),d0
000286b6 31400008	move.w	d0,x_pos(a0)
000286ba 1019	move.b	(a1)+,d0
000286bc 4880	ext.w	d0
000286be d0680030	add.w	objoff_30(a0),d0
000286c2 3140000c	move.w	d0,y_pos(a0)
000286c6 1159001a	move.b	(a1)+,mapping_frame(a0)
000286ca 1028001a	move.b	mapping_frame(a0),d0
000286ce d040	add.w	d0,d0
000286d0 0240001e	andi.w	#$1E,d0
000286d4 7200	moveq	#0,d1
000286d6 7400	moveq	#0,d2
000286d8 123b002c	move.b	byte_28706(pc,d0.w),d1
000286dc 143b0029	move.b	byte_28706+1(pc,d0.w),d2
000286e0 3602	move.w	d2,d3
000286e2 381f	move.w	(sp)+,d4
000286e8 30280032	move.w	objoff_32(a0),d0
000286ec 0240ff80	andi.w	#$FF80,d0
000286f0 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
000286f4 0c400280	cmpi.w	#$280,d0
000286f8 6206	bhi.s	+
000286fa 4ef9000164f4	jmp	(DisplaySprite).l
00028700 4ef9000164e6	jmp	(DeleteObject).l
00028926 4e71	nop	
00028928 4ef900017ffa	jmp	(extractJmpToName("JmpTo14_AllocateObjectAfterCurrent")).l
0002892e 4ef900016d8a	jmp	(extractJmpToName("JmpTo4_Adjust2PArtPointer2")).l
00028934 4ef900019718	jmp	(extractJmpToName("JmpTo16_SolidObject")).l
0002893c 7000	moveq	#0,d0
0002893e 10280024	move.b	routine(a0),d0
00028942 323b0006	move.w	Obj72_Index(pc,d0.w),d1
00028946 4efb1002	jmp	Obj72_Index(pc,d1.w)
0002894e 54280024	addq.b	#2,routine(a0)
00028952 317c0030003c	move.w	#$30,objoff_3C(a0)
00028958 10280028	move.b	subtype(a0),d0
0002895c 6a06	bpl.s	+
0002895e 317c0070003c	move.w	#$70,objoff_3C(a0)
00028964 0200007f	andi.b	#$7F,d0
00028968 e908	lsl.b	#4,d0
0002896a 11400038	move.b	d0,objoff_38(a0)
0002896e 317c00020036	move.w	#2,objoff_36(a0)
00028974 082800000022	btst	#status.npc.x_flip,status(a0)
0002897a 6704	beq.s	Obj72_Main
0002897c 44680036	neg.w	objoff_36(a0)
00028980 43f8b000	lea	(MainCharacter).w,a1
00028984 610a	bsr.s	Obj72_Action
00028986 43f8b040	lea	(Sidekick).w,a1
0002898a 6104	bsr.s	Obj72_Action
00028990 7400	moveq	#0,d2
00028992 14280038	move.b	objoff_38(a0),d2
00028996 3602	move.w	d2,d3
00028998 d643	add.w	d3,d3
0002899a 30290008	move.w	x_pos(a1),d0
0002899e 90680008	sub.w	x_pos(a0),d0
000289a2 d042	add.w	d2,d0
000289a4 b043	cmp.w	d3,d0
000289a6 6422	bhs.s	+
000289a8 3229000c	move.w	y_pos(a1),d1
000289ac 9268000c	sub.w	y_pos(a0),d1
000289b0 3028003c	move.w	objoff_3C(a0),d0
000289b4 d240	add.w	d0,d1
000289b6 b240	cmp.w	d0,d1
000289b8 6410	bhs.s	+
000289ba 082900010022	btst	#status.player.in_air,status(a1)
000289c0 6608	bne.s	+
000289c2 30280036	move.w	objoff_36(a0),d0
000289c6 d1690008	add.w	d0,x_pos(a1)
000289ca 4e75	rts	
000289cc 4ef90001643e	jmp	(extractJmpToName("JmpTo5_MarkObjGone3")).l
000289d4 7000	moveq	#0,d0
000289d6 10280024	move.b	routine(a0),d0
000289da 323b0006	move.w	Obj73_Index(pc,d0.w),d1
000289de 4efb1002	jmp	Obj73_Index(pc,d1.w)
000289e8 54280024	addq.b	#2,routine(a0)
000289ec 217c00028b9c0004	move.l	#Obj73_MapUnc_28B9C,mappings(a0)
000289f4 317c26bc0002	move.w	#make_art_tile(ArtTile_ArtNem_Ring,1,0),art_tile(a0)
000289fe 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00028a04 117c00040018	move.b	#4,priority(a0)
00028a0a 117c00080019	move.b	#8,width_pixels(a0)
00028a10 31680008003a	move.w	x_pos(a0),objoff_3A(a0)
00028a16 3168000c0038	move.w	y_pos(a0),objoff_38(a0)
00028a1c 117c00000020	move.b	#0,collision_flags(a0)
00028a22 08e800070022	bset	#status.npc.no_balancing,status(a0)
00028a28 12280028	move.b	subtype(a0),d1
00028a2c 020100f0	andi.b	#$F0,d1
00028a30 4881	ext.w	d1
00028a32 e741	asl.w	#3,d1
00028a34 3141003e	move.w	d1,objoff_3E(a0)
00028a38 10280022	move.b	status(a0),d0
00028a3c e418	ror.b	#status.npc.y_flip+1,d0
00028a3e 020000c0	andi.b	#$C0,d0
00028a42 11400026	move.b	d0,angle(a0)
00028a46 45e80029	lea	objoff_29(a0),a2
00028a4a 12280028	move.b	subtype(a0),d1
00028a4e 02410007	andi.w	#7,d1
00028a52 14fc0000	move.b	#0,(a2)+
00028a56 3601	move.w	d1,d3
00028a58 e94b	lsl.w	#4,d3
00028a5a 1143003c	move.b	d3,objoff_3C(a0)
00028a5e 5341	subq.w	#1,d1
00028a60 6566	bcs.s	Obj73_LoadSubObject_End
00028a62 082800030028	btst	#3,subtype(a0)
00028a68 6704	beq.s	Obj73_LoadSubObject
00028a6a 5341	subq.w	#1,d1
00028a6c 655a	bcs.s	Obj73_LoadSubObject_End
00028a72 6654	bne.s	Obj73_LoadSubObject_End
00028a74 52280029	addq.b	#1,objoff_29(a0)
00028a78 3a09	move.w	a1,d5
00028a7a 0445b000	subi.w	#Object_RAM,d5
00028a7e ec4d	lsr.w	#object_size_bits,d5
00028a80 0245007f	andi.w	#$7F,d5
00028a84 14c5	move.b	d5,(a2)+
00028a86 137c00040024	move.b	#4,routine(a1)
00028a92 236800040004	move.l	mappings(a0),mappings(a1)
00028a98 336800020002	move.w	art_tile(a0),art_tile(a1)
00028a9e 136800010001	move.b	render_flags(a0),render_flags(a1)
00028aa4 136800180018	move.b	priority(a0),priority(a1)
00028aaa 136800190019	move.b	width_pixels(a0),width_pixels(a1)
00028ab0 136800200020	move.b	collision_flags(a0),collision_flags(a1)
00028ab6 136800220022	move.b	status(a0),status(a1)
00028abc 04030010	subi.b	#$10,d3
00028ac0 1343003c	move.b	d3,objoff_3C(a1)
00028ac4 51c9ffa8	dbf	d1,Obj73_LoadSubObject
00028ac8 3a08	move.w	a0,d5
00028aca 0445b000	subi.w	#Object_RAM,d5
00028ace ec4d	lsr.w	#object_size_bits,d5
00028ad0 0245007f	andi.w	#$7F,d5
00028ad4 14c5	move.b	d5,(a2)+
00028ad6 3f280008	move.w	x_pos(a0),-(sp)
00028ada 61000018	bsr.w	loc_28AF4
00028ade 323c0008	move.w	#8,d1
00028ae2 343c0008	move.w	#8,d2
00028ae6 3602	move.w	d2,d3
00028ae8 5243	addq.w	#1,d3
00028aea 381f	move.w	(sp)+,d4
00028af0 60000054	bra.w	loc_28B46
00028af4 3028003e	move.w	objoff_3E(a0),d0
00028af8 d1680026	add.w	d0,angle(a0)
00028afc 10280026	move.b	angle(a0),d0
00028b00 4eb9000033b6	jsr	(CalcSine).l
00028b06 34280038	move.w	objoff_38(a0),d2
00028b0a 3628003a	move.w	objoff_3A(a0),d3
00028b0e 45e80029	lea	objoff_29(a0),a2
00028b12 7c00	moveq	#0,d6
00028b14 1c1a	move.b	(a2)+,d6
00028b16 7800	moveq	#0,d4
00028b18 181a	move.b	(a2)+,d4
00028b1a ed4c	lsl.w	#object_size_bits,d4
00028b1c 0684ffffb000	addi.l	#Object_RAM,d4
00028b22 2244	movea.l	d4,a1
00028b24 7800	moveq	#0,d4
00028b26 1829003c	move.b	objoff_3C(a1),d4
00028b2a 2a04	move.l	d4,d5
00028b2c c9c0	muls.w	d0,d4
00028b2e e084	asr.l	#8,d4
00028b30 cbc1	muls.w	d1,d5
00028b32 e085	asr.l	#8,d5
00028b34 d842	add.w	d2,d4
00028b36 da43	add.w	d3,d5
00028b38 3344000c	move.w	d4,y_pos(a1)
00028b3c 33450008	move.w	d5,x_pos(a1)
00028b40 51ceffd4	dbf	d6,loc_28B16
00028b44 4e75	rts	
00028b46 3028003a	move.w	objoff_3A(a0),d0
00028b4a 0240ff80	andi.w	#$FF80,d0
00028b4e 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00028b52 0c400280	cmpi.w	#$280,d0
00028b56 62000006	bhi.w	+
00028b5e 7400	moveq	#0,d2
00028b60 45e80029	lea	objoff_29(a0),a2
00028b64 141a	move.b	(a2)+,d2
00028b68 101a	move.b	(a2)+,d0
00028b6a ed48	lsl.w	#object_size_bits,d0
00028b6c 0680ffffb000	addi.l	#Object_RAM,d0
00028b72 2240	movea.l	d0,a1
00028b78 51caffec	dbf	d2,-
00028b7c 4e75	rts	
00028b7e 323c0008	move.w	#8,d1
00028b82 343c0008	move.w	#8,d2
00028b86 3602	move.w	d2,d3
00028b88 5243	addq.w	#1,d3
00028b8a 38280036	move.w	objoff_36(a0),d4
00028b92 316800080036	move.w	x_pos(a0),objoff_36(a0)
00028ba8 4ef9000164f4	jmp	(extractJmpToName("JmpTo21_DisplaySprite")).l
00028bae 4ef900017fda	jmp	(extractJmpToName("JmpTo9_AllocateObject")).l
00028bb4 4ef9000164e8	jmp	(extractJmpToName("JmpTo_DeleteObject2")).l
00028bba 4ef900016d6e	jmp	(extractJmpToName("JmpTo37_Adjust2PArtPointer")).l
00028bc0 4ef900019718	jmp	(extractJmpToName("JmpTo17_SolidObject")).l
00028bc8 082800060001	btst	#render_flags.multi_sprite,render_flags(a0)
00028bce 66000010	bne.w	+
00028bd2 7000	moveq	#0,d0
00028bd4 10280024	move.b	routine(a0),d0
00028bd8 323b000e	move.w	Obj75_Index(pc,d0.w),d1
00028bdc 4efb100a	jmp	Obj75_Index(pc,d1.w)
00028be0 303c0280	move.w	#object_display_list_size*5,d0
00028bee 54280024	addq.b	#2,routine(a0)
00028bf2 217c00028d8a0004	move.l	#Obj75_MapUnc_28D8A,mappings(a0)
00028bfa 317c20000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,1,0),art_tile(a0)
00028c04 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00028c0a 117c00050018	move.b	#5,priority(a0)
00028c10 117c00100019	move.b	#$10,width_pixels(a0)
00028c16 316800080030	move.w	x_pos(a0),objoff_30(a0)
00028c1c 3168000c0032	move.w	y_pos(a0),objoff_32(a0)
00028c22 12280028	move.b	subtype(a0),d1
00028c26 1001	move.b	d1,d0
00028c28 0241000f	andi.w	#$F,d1
00028c2c 020000f0	andi.b	#$F0,d0
00028c30 4880	ext.w	d0
00028c32 e740	asl.w	#3,d0
00028c34 31400034	move.w	d0,objoff_34(a0)
00028c38 10280022	move.b	status(a0),d0
00028c3c e418	ror.b	#status.npc.y_flip+1,d0
00028c3e 020000c0	andi.b	#$C0,d0
00028c42 11400026	move.b	d0,angle(a0)
00028c46 0c01000f	cmpi.b	#$F,d1
00028c4a 6612	bne.s	+
00028c4c 54280024	addq.b	#2,routine(a0)
00028c50 117c00040018	move.b	#4,priority(a0)
00028c56 117c0002001a	move.b	#2,mapping_frame(a0)
00028c5c 4e75	rts	
00028c5e 117c009a0020	move.b	#$9A,collision_flags(a0)
00028c68 6660	bne.s	Obj75_Main
00028c70 236800040004	move.l	mappings(a0),mappings(a1)
00028c76 336800020002	move.w	art_tile(a0),art_tile(a1)
00028c7c 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
00028c82 08e900060001	bset	#render_flags.multi_sprite,render_flags(a1)
00028c88 137c0040000e	move.b	#$40,mainspr_width(a1)
00028c8e 34280008	move.w	x_pos(a0),d2
00028c92 3628000c	move.w	y_pos(a0),d3
00028c96 1341000f	move.b	d1,mainspr_childsprites(a1)
00028c9a 5341	subq.w	#1,d1
00028c9c 45e90010	lea	subspr_data(a1),a2
00028ca2 34c3	move.w	d3,(a2)+
00028ca4 34fc0001	move.w	#1,(a2)+
00028ca8 51c9fff6	dbf	d1,-
00028cac 33420008	move.w	d2,x_pos(a1)
00028cb0 3343000c	move.w	d3,y_pos(a1)
00028cb4 137c0000000b	move.b	#0,mainspr_mapframe(a1)
00028cba 2149003c	move.l	a1,objoff_3C(a0)
00028cbe 137c00400014	move.b	#$40,mainspr_height(a1)
00028cc4 08e900040001	bset	#render_flags.explicit_height,render_flags(a1)
00028cca 7000	moveq	#0,d0
00028ccc 7200	moveq	#0,d1
00028cce 30280034	move.w	objoff_34(a0),d0
00028cd2 d1680026	add.w	d0,angle(a0)
00028cd6 10280026	move.b	angle(a0),d0
00028cde 34280032	move.w	objoff_32(a0),d2
00028ce2 36280030	move.w	objoff_30(a0),d3
00028ce6 7c00	moveq	#0,d6
00028ce8 2268003c	movea.l	objoff_3C(a0),a1
00028cec 1c29000f	move.b	mainspr_childsprites(a1),d6
00028cf0 5346	subq.w	#1,d6
00028cf2 654a	bcs.s	loc_28D3E
00028cf4 4840	swap	d0
00028cf6 4841	swap	d1
00028cf8 e880	asr.l	#4,d0
00028cfa e881	asr.l	#4,d1
00028cfc 7800	moveq	#0,d4
00028cfe 7a00	moveq	#0,d5
00028d00 45e90010	lea	subspr_data(a1),a2
00028d08 4844	swap	d4
00028d0a 4845	swap	d5
00028d0c d842	add.w	d2,d4
00028d0e da43	add.w	d3,d5
00028d10 34c5	move.w	d5,(a2)+
00028d12 34c4	move.w	d4,(a2)+
00028d14 4cdf0030	movem.l	(sp)+,d4-d5
00028d18 d880	add.l	d0,d4
00028d1a da81	add.l	d1,d5
00028d1c 544a	addq.w	#next_subspr-4,a2
00028d1e 51ceffe4	dbf	d6,-
00028d22 4844	swap	d4
00028d24 4845	swap	d5
00028d26 d842	add.w	d2,d4
00028d28 da43	add.w	d3,d5
00028d2a 31450008	move.w	d5,x_pos(a0)
00028d2e 3144000c	move.w	d4,y_pos(a0)
00028d32 336900280008	move.w	sub6_x_pos(a1),x_pos(a1)
00028d38 3369002a000c	move.w	sub6_y_pos(a1),y_pos(a1)
00028d3e 4a78ffd8	tst.w	(Two_player_mode).w
00028d42 6704	beq.s	+
00028d48 30280030	move.w	objoff_30(a0),d0
00028d4c 0240ff80	andi.w	#$FF80,d0
00028d50 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00028d54 0c400280	cmpi.w	#$280,d0
00028d58 62000006	bhi.w	+
00028d60 2268003c	movea.l	objoff_3C(a0),a1
00028d6c 7200	moveq	#0,d1
00028d6e 12280019	move.b	width_pixels(a0),d1
00028d72 0641000b	addi.w	#$B,d1
00028d76 343c0010	move.w	#$10,d2
00028d7a 363c0011	move.w	#$11,d3
00028d7e 38280008	move.w	x_pos(a0),d4
00028dbe 4e71	nop	
00028dc0 4ef900016530	jmp	(extractJmpToName("JmpTo_DisplaySprite3")).l
00028dc6 4ef9000164f4	jmp	(extractJmpToName("JmpTo22_DisplaySprite")).l
00028dcc 4ef9000164e6	jmp	(extractJmpToName("JmpTo38_DeleteObject")).l
00028dd2 4ef9000163d2	jmp	(extractJmpToName("JmpTo22_MarkObjGone")).l
00028dd8 4ef9000164e8	jmp	(extractJmpToName("JmpTo2_DeleteObject2")).l
00028dde 4ef900017ffa	jmp	(extractJmpToName("JmpTo15_AllocateObjectAfterCurrent")).l
00028de4 4ef900016d6e	jmp	(extractJmpToName("JmpTo38_Adjust2PArtPointer")).l
00028dea 4ef9000033b6	jmp	(extractJmpToName("JmpTo8_CalcSine")).l
00028df0 4ef900019718	jmp	(extractJmpToName("JmpTo18_SolidObject")).l
00028df8 7000	moveq	#0,d0
00028dfa 10280024	move.b	routine(a0),d0
00028dfe 323b0006	move.w	Obj76_Index(pc,d0.w),d1
00028e02 4efb1002	jmp	Obj76_Index(pc,d1.w)
00028e0e 54280024	addq.b	#2,routine(a0)
00028e12 217c00028f3a0004	move.l	#Obj76_MapUnc_28F3A,mappings(a0)
00028e1a 317c00000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,0,0),art_tile(a0)
00028e24 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00028e2a 117c00040018	move.b	#4,priority(a0)
00028e30 7000	moveq	#0,d0
00028e32 10280028	move.b	subtype(a0),d0
00028e36 e448	lsr.w	#2,d0
00028e38 0240001c	andi.w	#$1C,d0
00028e3c 45fb00cc	lea	Obj76_InitData(pc,d0.w),a2
00028e40 115a0019	move.b	(a2)+,width_pixels(a0)
00028e44 115a0016	move.b	(a2)+,y_radius(a0)
00028e48 115a001a	move.b	(a2)+,mapping_frame(a0)
00028e4c 316800080034	move.w	x_pos(a0),objoff_34(a0)
00028e52 3168000c0030	move.w	y_pos(a0),objoff_30(a0)
00028e58 0268000f0028	andi.w	#$F,subtype(a0)
00028e5e 3f280008	move.w	x_pos(a0),-(sp)
00028e62 7000	moveq	#0,d0
00028e64 10280028	move.b	subtype(a0),d0
00028e68 323b0060	move.w	Obj76_Modes(pc,d0.w),d1
00028e6c 4ebb105c	jsr	Obj76_Modes(pc,d1.w)
00028e70 381f	move.w	(sp)+,d4
00028e72 4a280001	tst.b	render_flags(a0)
00028e76 6a4a	bpl.s	loc_28EC2
00028e78 7200	moveq	#0,d1
00028e7a 12280019	move.b	width_pixels(a0),d1
00028e7e 0641000b	addi.w	#$B,d1
00028e82 7400	moveq	#0,d2
00028e84 14280016	move.b	y_radius(a0),d2
00028e88 3602	move.w	d2,d3
00028e8a 5243	addq.w	#1,d3
00028e90 4846	swap	d6
00028e92 02460003	andi.w	#touch_side_mask,d6
00028e96 672a	beq.s	loc_28EC2
00028e98 1006	move.b	d6,d0
00028e9a 02000001	andi.b	#p1_touch_side,d0
00028e9e 670e	beq.s	+
00028ea0 43f8b000	lea	(MainCharacter).w,a1
00028ea8 08a800050022	bclr	#p1_pushing_bit,status(a0)
00028eae 02060002	andi.b	#p2_touch_side,d6
00028eb2 670e	beq.s	loc_28EC2
00028eb4 43f8b040	lea	(Sidekick).w,a1
00028ebc 08a800060022	bclr	#p2_pushing_bit,status(a0)
00028ec2 30280034	move.w	objoff_34(a0),d0
00028ece 43f8b000	lea	(MainCharacter).w,a1
00028ed2 6104	bsr.s	Obj76_CheckPlayer
00028ed4 43f8b040	lea	(Sidekick).w,a1
00028ed8 082900010022	btst	#status.player.in_air,status(a1)
00028ede 663c	bne.s	++
00028ee0 30290008	move.w	x_pos(a1),d0
00028ee4 90680008	sub.w	x_pos(a0),d0
00028ee8 064000c0	addi.w	#$C0,d0
00028eec 082800000022	btst	#status.npc.x_flip,status(a0)
00028ef2 6704	beq.s	+
00028ef4 04400100	subi.w	#$100,d0
00028ef8 0c400080	cmpi.w	#$80,d0
00028efc 641e	bhs.s	+
00028efe 3029000c	move.w	y_pos(a1),d0
00028f02 9068000c	sub.w	y_pos(a0),d0
00028f06 06400010	addi.w	#$10,d0
00028f0a 0c400020	cmpi.w	#$20,d0
00028f0e 640c	bhs.s	+
00028f10 117c00020028	move.b	#2,subtype(a0)
00028f16 317c00800036	move.w	#$80,sliding_spikes_remaining_movement(a0)
00028f1e 4a680036	tst.w	sliding_spikes_remaining_movement(a0)
00028f22 6714	beq.s	++
00028f24 53680036	subq.w	#1,sliding_spikes_remaining_movement(a0)
00028f28 70ff	moveq	#-1,d0
00028f2a 082800000022	btst	#status.npc.x_flip,status(a0)
00028f30 6702	beq.s	+
00028f32 4440	neg.w	d0
00028f6e 4e71	nop	
00028f70 4ef900015a90	jmp	(extractJmpToName("JmpTo_Touch_ChkHurt2")).l
00028f76 4ef900016d6e	jmp	(extractJmpToName("JmpTo39_Adjust2PArtPointer")).l
00028f7c 4ef900019718	jmp	(extractJmpToName("JmpTo19_SolidObject")).l
00028f82 4ef90001640a	jmp	(extractJmpToName("JmpTo5_MarkObjGone2")).l
00028f88 7000	moveq	#0,d0
00028f8a 10280024	move.b	routine(a0),d0
00028f8e 323b0006	move.w	Obj77_Index(pc,d0.w),d1
00028f92 4efb1002	jmp	Obj77_Index(pc,d1.w)
00028f9a 54280024	addq.b	#2,routine(a0)
00028f9e 217c000290640004	move.l	#Obj77_MapUnc_29064,mappings(a0)
00028fa6 317c643c0002	move.w	#make_art_tile(ArtTile_ArtNem_MCZGateLog,3,0),art_tile(a0)
00028fb0 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00028fb6 117c00800019	move.b	#$80,width_pixels(a0)
00028fbc 4a280034	tst.b	objoff_34(a0)
00028fc0 662e	bne.s	+
00028fc2 45f8f7e0	lea	(ButtonVine_Trigger).w,a2
00028fc6 7000	moveq	#0,d0
00028fc8 10280028	move.b	subtype(a0),d0
00028fcc 083200000000	btst	#0,(a2,d0.w)
00028fd2 671c	beq.s	+
00028fd4 117c00010034	move.b	#1,objoff_34(a0)
00028fda 08680000001c	bchg	#0,anim(a0)
00028fe0 4a280001	tst.b	render_flags(a0)
00028fe4 6a0a	bpl.s	+
00028fe6 303c00bb	move.w	#SndID_DoorSlam,d0
00028fea 4eb900001370	jsr	(PlaySound).l
00028ff0 43f900029050	lea	(Ani_obj77).l,a1
00028ff6 4eb900016544	jsr	(AnimateSprite).l
00028ffc 4a28001a	tst.b	mapping_frame(a0)
00029000 6618	bne.s	Obj77_DropCharacters
00029002 323c004b	move.w	#$4B,d1
00029006 343c0008	move.w	#8,d2
0002900a 3602	move.w	d2,d3
0002900c 5243	addq.w	#1,d3
0002900e 38280008	move.w	x_pos(a0),d4
0002901a 10280022	move.b	status(a0),d0
0002901e 02000018	andi.b	#standing_mask,d0
00029022 6728	beq.s	+++
00029024 1200	move.b	d0,d1
00029026 02000008	andi.b	#p1_standing,d0
0002902a 670a	beq.s	+
0002902c 43f8b000	lea	(MainCharacter).w,a1
00029030 08a900030022	bclr	#status.player.on_object,status(a1)
00029036 02010010	andi.b	#p2_standing,d1
0002903a 670a	beq.s	+
0002903c 43f8b040	lea	(Sidekick).w,a1
00029040 08a900030022	bclr	#status.player.on_object,status(a1)
00029046 022800e70022	andi.b	#~standing_mask,status(a0)
000291b8 4ef9000163d2	jmp	(extractJmpToName("JmpTo23_MarkObjGone")).l
000291be 4ef900016d6e	jmp	(extractJmpToName("JmpTo40_Adjust2PArtPointer")).l
000291c4 4ef900019718	jmp	(extractJmpToName("JmpTo20_SolidObject")).l
000291cc 7000	moveq	#0,d0
000291ce 10280024	move.b	routine(a0),d0
000291d2 323b000e	move.w	Obj78_Index(pc,d0.w),d1
000291d6 4ebb100a	jsr	Obj78_Index(pc,d1.w)
000291da 30280030	move.w	objoff_30(a0),d0
000291e8 54280024	addq.b	#2,routine(a0)
000291ec 7634	moveq	#objoff_34,d3
000291ee 7802	moveq	#2,d4
000291f0 082800000022	btst	#status.npc.x_flip,status(a0)
000291f6 6704	beq.s	+
000291f8 763a	moveq	#objoff_3A,d3
000291fa 78fe	moveq	#-2,d4
000291fc 34280008	move.w	x_pos(a0),d2
00029200 2248	movea.l	a0,a1
00029202 7203	moveq	#3,d1
00029204 600e	bra.s	Obj78_LoadSubObject
0002920a 66000060	bne.w	Obj78_Main
0002920e 137c00040024	move.b	#4,routine(a1)
0002921a 237c0002800e0004	move.l	#Obj6B_MapUnc_2800E,mappings(a1)
00029222 337c64180002	move.w	#make_art_tile(ArtTile_ArtNem_CPZStairBlock,3,0),art_tile(a1)
0002922c 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
00029232 137c00030018	move.b	#3,priority(a1)
00029238 137c00100019	move.b	#$10,width_pixels(a1)
0002923e 136800280028	move.b	subtype(a0),subtype(a1)
00029244 33420008	move.w	d2,x_pos(a1)
00029248 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002924e 336800080030	move.w	x_pos(a0),objoff_30(a1)
00029254 3369000c0032	move.w	y_pos(a1),objoff_32(a1)
0002925a 06420020	addi.w	#$20,d2
0002925e 1343002f	move.b	d3,objoff_2F(a1)
00029262 2348003c	move.l	a0,objoff_3C(a1)
00029266 d604	add.b	d4,d3
00029268 51c9ff9c	dbf	d1,Obj78_SubObjectLoop
0002926c 7000	moveq	#0,d0
0002926e 10280028	move.b	subtype(a0),d0
00029272 02400007	andi.w	#7,d0
00029276 d040	add.w	d0,d0
00029278 323b003e	move.w	Obj78_Types(pc,d0.w),d1
0002927c 4ebb103a	jsr	Obj78_Types(pc,d1.w)
00029280 2468003c	movea.l	objoff_3C(a0),a2
00029284 7000	moveq	#0,d0
00029286 1028002f	move.b	objoff_2F(a0),d0
0002928a 30320000	move.w	(a2,d0.w),d0
0002928e d0680032	add.w	objoff_32(a0),d0
00029292 3140000c	move.w	d0,y_pos(a0)
00029296 7200	moveq	#0,d1
00029298 12280019	move.b	width_pixels(a0),d1
0002929c 0641000b	addi.w	#$B,d1
000292a0 343c0010	move.w	#$10,d2
000292a4 363c0011	move.w	#$11,d3
000292a8 38280008	move.w	x_pos(a0),d4
000292b0 4846	swap	d6
000292b2 8d2a002e	or.b	d6,objoff_2E(a2)
000292b6 4e75	rts	
000292c8 4a68002c	tst.w	objoff_2C(a0)
000292cc 6612	bne.s	loc_292E0
000292ce 1028002e	move.b	objoff_2E(a0),d0
000292d2 02000030	andi.b	#touch_top_mask,d0
000292d6 6706	beq.s	return_292DE
000292d8 317c001e002c	move.w	#$1E,objoff_2C(a0)
000292de 4e75	rts	
000292e0 5368002c	subq.w	#1,objoff_2C(a0)
000292e4 66f8	bne.s	return_292DE
000292e6 52280028	addq.b	#1,subtype(a0)
000292ea 4e75	rts	
000292ec 4a68002c	tst.w	objoff_2C(a0)
000292f0 6612	bne.s	loc_29304
000292f2 1028002e	move.b	objoff_2E(a0),d0
000292f6 0200000c	andi.b	#touch_bottom_mask,d0
000292fa 6706	beq.s	return_29302
000292fc 317c003c002c	move.w	#60,objoff_2C(a0)
00029302 4e75	rts	
00029304 5368002c	subq.w	#1,objoff_2C(a0)
00029308 6606	bne.s	loc_29310
0002930a 52280028	addq.b	#1,subtype(a0)
0002930e 4e75	rts	
00029310 43e80034	lea	objoff_34(a0),a1
00029314 3028002c	move.w	objoff_2C(a0),d0
00029318 e408	lsr.b	#2,d0
0002931a 02000001	andi.b	#1,d0
0002931e 32c0	move.w	d0,(a1)+
00029320 0a000001	eori.b	#1,d0
00029324 32c0	move.w	d0,(a1)+
00029326 0a000001	eori.b	#1,d0
0002932a 32c0	move.w	d0,(a1)+
0002932c 0a000001	eori.b	#1,d0
00029330 32c0	move.w	d0,(a1)+
00029332 4e75	rts	
00029334 43e80034	lea	objoff_34(a0),a1
00029338 0c510080	cmpi.w	#$80,(a1)
0002933c 671e	beq.s	return_2935C
0002933e 5251	addq.w	#1,(a1)
00029340 7200	moveq	#0,d1
00029342 3219	move.w	(a1)+,d1
00029344 4841	swap	d1
00029346 e289	lsr.l	#1,d1
00029348 2401	move.l	d1,d2
0002934a e289	lsr.l	#1,d1
0002934c 2601	move.l	d1,d3
0002934e d682	add.l	d2,d3
00029350 4841	swap	d1
00029352 4842	swap	d2
00029354 4843	swap	d3
00029356 32c3	move.w	d3,(a1)+
00029358 32c2	move.w	d2,(a1)+
0002935a 32c1	move.w	d1,(a1)+
0002935c 4e75	rts	
0002935e 43e80034	lea	objoff_34(a0),a1
00029362 0c51ff80	cmpi.w	#-$80,(a1)
00029366 671e	beq.s	return_29386
00029368 5351	subq.w	#1,(a1)
0002936a 7200	moveq	#0,d1
0002936c 3219	move.w	(a1)+,d1
0002936e 4841	swap	d1
00029370 e281	asr.l	#1,d1
00029372 2401	move.l	d1,d2
00029374 e281	asr.l	#1,d1
00029376 2601	move.l	d1,d3
00029378 d682	add.l	d2,d3
0002937a 4841	swap	d1
0002937c 4842	swap	d2
0002937e 4843	swap	d3
00029380 32c3	move.w	d3,(a1)+
00029382 32c2	move.w	d2,(a1)+
00029384 32c1	move.w	d1,(a1)+
00029386 4e75	rts	
00029388 4ef900017ffa	jmp	(extractJmpToName("JmpTo16_AllocateObjectAfterCurrent")).l
0002938e 4ef900016d8a	jmp	(extractJmpToName("JmpTo5_Adjust2PArtPointer2")).l
00029394 4ef900019718	jmp	(extractJmpToName("JmpTo21_SolidObject")).l
0002939a 4ef90001640a	jmp	(extractJmpToName("JmpTo6_MarkObjGone2")).l
000293a0 7000	moveq	#0,d0
000293a2 10280024	move.b	routine(a0),d0
000293a6 323b0006	move.w	Obj7A_Index(pc,d0.w),d1
000293aa 4efb1002	jmp	Obj7A_Index(pc,d1.w)
000293cc 54280024	addq.b	#2,routine(a0)
000293d0 217c000295640004	move.l	#Obj7A_MapUnc_29564,mappings(a0)
000293d8 317ce4180002	move.w	#make_art_tile(ArtTile_ArtNem_CPZStairBlock,3,1),art_tile(a0)
000293de 0c38000bfe10	cmpi.b	#mystic_cave_zone,(Current_Zone).w
000293e4 660e	bne.s	+
000293e6 217c000102560004	move.l	#Obj15_Obj7A_MapUnc_10256,mappings(a0)
000293ee 317c00000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,0,0),art_tile(a0)
000293f8 7200	moveq	#0,d1
000293fa 12280028	move.b	subtype(a0),d1
000293fe 45fb10b4	lea	Obj7A_Properties(pc,d1.w),a2
00029402 121a	move.b	(a2)+,d1
00029404 2248	movea.l	a0,a1
00029406 601e	bra.s	Obj7A_LoadSubObject
0002940c 663c	bne.s	Obj7A_SubObjectLoop_End
00029414 137c00040024	move.b	#4,routine(a1)
0002941a 336800080008	move.w	x_pos(a0),x_pos(a1)
00029420 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00029426 236800040004	move.l	mappings(a0),mappings(a1)
0002942c 336800020002	move.w	art_tile(a0),art_tile(a1)
00029432 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
00029438 137c00040018	move.b	#4,priority(a1)
0002943e 137c00180019	move.b	#$18,width_pixels(a1)
00029444 336900080030	move.w	x_pos(a1),objoff_30(a1)
0002944a 51c9ffbc	dbf	d1,Obj7A_SubObjectLoop
0002944e 2348003c	move.l	a0,objoff_3C(a1)
00029452 2149003c	move.l	a1,objoff_3C(a0)
00029456 0c28000c0028	cmpi.b	#$C,subtype(a0)
0002945c 6606	bne.s	+
0002945e 117c00010036	move.b	#1,objoff_36(a0)
00029464 7200	moveq	#0,d1
00029466 121a	move.b	(a2)+,d1
00029468 30280030	move.w	objoff_30(a0),d0
0002946c 9041	sub.w	d1,d0
0002946e 31400032	move.w	d0,objoff_32(a0)
00029472 33400032	move.w	d0,objoff_32(a1)
00029476 d041	add.w	d1,d0
00029478 d041	add.w	d1,d0
0002947a 31400034	move.w	d0,objoff_34(a0)
0002947e 33400034	move.w	d0,objoff_34(a1)
00029482 301a	move.w	(a2)+,d0
00029484 d1680008	add.w	d0,x_pos(a0)
00029488 301a	move.w	(a2)+,d0
0002948a d1690008	add.w	d0,x_pos(a1)
0002948e 6164	bsr.s	loc_294F4
00029490 4a78ffd8	tst.w	(Two_player_mode).w
00029494 6704	beq.s	+
0002949a 30280032	move.w	objoff_32(a0),d0
0002949e 0240ff80	andi.w	#$FF80,d0
000294a2 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
000294a6 0c400280	cmpi.w	#$280,d0
000294aa 6312	bls.s	+
000294ac 30280034	move.w	objoff_34(a0),d0
000294b0 0240ff80	andi.w	#$FF80,d0
000294b4 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
000294b8 0c400280	cmpi.w	#$280,d0
000294bc 6206	bhi.s	loc_294C4
000294be 4ef9000164f4	jmp	(DisplaySprite).l
000294c4 2268003c	movea.l	objoff_3C(a0),a1
000294c8 b3c8	cmpa.l	a0,a1
000294ca 6706	beq.s	+
000294cc 4eb9000164e8	jsr	(DeleteObject2).l
000294d2 45f8fc00	lea	(Object_Respawn_Table).w,a2
000294d6 7000	moveq	#0,d0
000294d8 10280023	move.b	respawn_index(a0),d0
000294dc 6706	beq.s	JmpTo39_DeleteObject
000294de 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
000294e4 4ef9000164e6	jmp	(DeleteObject).l
000294ea 6108	bsr.s	loc_294F4
000294ec 6150	bsr.s	loc_2953E
000294ee 4ef9000164f4	jmp	(DisplaySprite).l
000294f4 3f280008	move.w	x_pos(a0),-(sp)
000294f8 4a280036	tst.b	objoff_36(a0)
000294fc 6718	beq.s	loc_29516
000294fe 30280008	move.w	x_pos(a0),d0
00029502 5340	subq.w	#1,d0
00029504 b0680032	cmp.w	objoff_32(a0),d0
00029508 6606	bne.s	+
0002950a 117c00000036	move.b	#0,objoff_36(a0)
00029510 31400008	move.w	d0,x_pos(a0)
00029514 6016	bra.s	loc_2952C
00029516 30280008	move.w	x_pos(a0),d0
0002951a 5240	addq.w	#1,d0
0002951c b0680034	cmp.w	objoff_34(a0),d0
00029520 6606	bne.s	+
00029522 117c00010036	move.b	#1,objoff_36(a0)
00029528 31400008	move.w	d0,x_pos(a0)
0002952c 7200	moveq	#0,d1
0002952e 12280019	move.b	width_pixels(a0),d1
00029532 363c0008	move.w	#8,d3
00029536 381f	move.w	(sp)+,d4
0002953c 4e75	rts	
0002953e 2268003c	movea.l	objoff_3C(a0),a1
00029542 30280008	move.w	x_pos(a0),d0
00029546 04400018	subi.w	#$18,d0
0002954a 34290008	move.w	x_pos(a1),d2
0002954e 06420018	addi.w	#$18,d2
00029552 b440	cmp.w	d0,d2
00029554 660c	bne.s	+
00029556 0a2800010036	eori.b	#1,objoff_36(a0)
0002955c 0a2900010036	eori.b	#1,objoff_36(a1)
00029562 4e75	rts	
00029578 4ef9000164f4	jmp	(extractJmpToName("JmpTo24_DisplaySprite")).l
0002957e 4ef900017ffa	jmp	(extractJmpToName("JmpTo17_AllocateObjectAfterCurrent")).l
00029584 4ef900016d6e	jmp	(extractJmpToName("JmpTo41_Adjust2PArtPointer")).l
0002958a 4ef900019c32	jmp	(extractJmpToName("JmpTo6_PlatformObject")).l
00029590 7000	moveq	#0,d0
00029592 10280024	move.b	routine(a0),d0
00029596 323b0028	move.w	Obj7B_Index(pc,d0.w),d1
0002959a 4ebb1024	jsr	Obj7B_Index(pc,d1.w)
0002959e 4a78ffd8	tst.w	(Two_player_mode).w
000295a2 6704	beq.s	+
000295a8 30280008	move.w	x_pos(a0),d0
000295ac 0240ff80	andi.w	#$FF80,d0
000295b0 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
000295b4 0c400280	cmpi.w	#$280,d0
000295b8 62000210	bhi.w	JmpTo40_DeleteObject
000295c8 54280024	addq.b	#2,routine(a0)
000295cc 217c000297800004	move.l	#Obj7B_MapUnc_29780,mappings(a0)
000295d4 317c03e00002	move.w	#make_art_tile(ArtTile_ArtNem_CPZTubeSpring,0,0),art_tile(a0)
000295da 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000295e0 117c00100019	move.b	#$10,width_pixels(a0)
000295e6 117c00010018	move.b	#1,priority(a0)
000295ec 10280028	move.b	subtype(a0),d0
000295f0 02400002	andi.w	#2,d0
000295f4 317b00ce0030	move.w	Obj7B_Strengths(pc,d0.w),objoff_30(a0)
000295fe 0c280001001a	cmpi.b	#1,mapping_frame(a0)
00029604 6742	beq.s	loc_29648
00029606 323c001b	move.w	#$1B,d1
0002960a 343c0008	move.w	#8,d2
0002960e 363c0010	move.w	#$10,d3
00029612 38280008	move.w	x_pos(a0),d4
00029616 43f8b000	lea	(MainCharacter).w,a1
0002961a 7c03	moveq	#p1_standing_bit,d6
0002961c 48e77800	movem.l	d1-d4,-(sp)
00029624 082800030022	btst	#p1_standing_bit,status(a0)
0002962a 6704	beq.s	+
0002962c 61000094	bsr.w	loc_296C2
00029630 4cdf001e	movem.l	(sp)+,d1-d4
00029634 43f8b040	lea	(Sidekick).w,a1
00029638 7c04	moveq	#p2_standing_bit,d6
0002963e 082800040022	btst	#p2_standing_bit,status(a0)
00029644 6702	beq.s	loc_29648
00029646 617a	bsr.s	loc_296C2
00029648 38280008	move.w	x_pos(a0),d4
0002964c 3a04	move.w	d4,d5
0002964e 04440010	subi.w	#$10,d4
00029652 06450010	addi.w	#$10,d5
00029656 3428000c	move.w	y_pos(a0),d2
0002965a 3602	move.w	d2,d3
0002965c 06430030	addi.w	#$30,d3
00029660 3038b008	move.w	(MainCharacter+x_pos).w,d0
00029664 b044	cmp.w	d4,d0
00029666 651e	blo.s	loc_29686
00029668 b045	cmp.w	d5,d0
0002966a 641a	bhs.s	loc_29686
0002966c 3038b00c	move.w	(MainCharacter+y_pos).w,d0
00029670 b042	cmp.w	d2,d0
00029672 6512	blo.s	loc_29686
00029674 b043	cmp.w	d3,d0
00029676 640e	bhs.s	loc_29686
00029678 0c280002001d	cmpi.b	#2,prev_anim(a0)
0002967e 6706	beq.s	loc_29686
00029680 117c0002001c	move.b	#2,anim(a0)
00029686 3038b048	move.w	(Sidekick+x_pos).w,d0
0002968a b044	cmp.w	d4,d0
0002968c 6528	blo.s	loc_296B6
0002968e b045	cmp.w	d5,d0
00029690 6424	bhs.s	loc_296B6
00029692 3038b04c	move.w	(Sidekick+y_pos).w,d0
00029696 b042	cmp.w	d2,d0
00029698 651c	blo.s	loc_296B6
0002969a b043	cmp.w	d3,d0
0002969c 6418	bhs.s	loc_296B6
0002969e 0c780004f708	cmpi.w	#4,(Tails_CPU_routine).w
000296a4 67000010	beq.w	loc_296B6
000296a8 0c280003001d	cmpi.b	#3,prev_anim(a0)
000296ae 6706	beq.s	loc_296B6
000296b0 117c0003001c	move.b	#3,anim(a0)
000296b6 43f900029768	lea	(Ani_obj7B).l,a1
000296c0 4e75	rts	
000296c2 317c0100001c	move.w	#(1<<8)|(0<<0),anim(a0)
000296c8 5869000c	addq.w	#4,y_pos(a1)
000296cc 336800300012	move.w	objoff_30(a0),y_vel(a1)
000296d2 08e900010022	bset	#status.player.in_air,status(a1)
000296d8 08a900030022	bclr	#status.player.on_object,status(a1)
000296de 137c0010001c	move.b	#AniIDSonAni_Spring,anim(a1)
000296e4 137c00020024	move.b	#2,routine(a1)
000296ea 10280028	move.b	subtype(a0),d0
000296ee 6a06	bpl.s	+
000296f0 337c00000010	move.w	#0,x_vel(a1)
000296f6 08000000	btst	#0,d0
000296fa 673a	beq.s	loc_29736
000296fc 337c00010014	move.w	#1,inertia(a1)
00029702 137c00010027	move.b	#1,flip_angle(a1)
00029708 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
0002970e 137c0000002c	move.b	#0,flips_remaining(a1)
00029714 137c0004002d	move.b	#4,flip_speed(a1)
0002971a 08000001	btst	#1,d0
0002971e 6606	bne.s	+
00029720 137c0001002c	move.b	#1,flips_remaining(a1)
00029726 082900000022	btst	#status.player.x_flip,status(a1)
0002972c 6708	beq.s	loc_29736
0002972e 44290027	neg.b	flip_angle(a1)
00029732 44690014	neg.w	inertia(a1)
00029736 0200000c	andi.b	#$C,d0
0002973a 0c000004	cmpi.b	#4,d0
0002973e 660c	bne.s	+
00029740 137c000c003e	move.b	#$C,top_solid_bit(a1)
00029746 137c000d003f	move.b	#$D,lrb_solid_bit(a1)
0002974c 0c000008	cmpi.b	#8,d0
00029750 660c	bne.s	+
00029752 137c000e003e	move.b	#$E,top_solid_bit(a1)
00029758 137c000f003f	move.b	#$F,lrb_solid_bit(a1)
0002975e 303c00cc	move.w	#SndID_Spring,d0
00029762 4ef900001370	jmp	(PlaySound).l
000297c2 4e71	nop	
000297c4 4ef9000164f4	jmp	(extractJmpToName("JmpTo25_DisplaySprite")).l
000297ca 4ef9000164e6	jmp	(extractJmpToName("JmpTo40_DeleteObject")).l
000297d0 4ef900016544	jmp	(extractJmpToName("JmpTo8_AnimateSprite")).l
000297d6 4ef900016d6e	jmp	(extractJmpToName("JmpTo42_Adjust2PArtPointer")).l
000297dc 4ef90001978e	jmp	(extractJmpToName("JmpTo4_SolidObject_Always_SingleCharacter")).l
000297e4 7000	moveq	#0,d0
000297e6 10280024	move.b	routine(a0),d0
000297ea 323b0006	move.w	Obj7F_Index(pc,d0.w),d1
000297ee 4efb1002	jmp	Obj7F_Index(pc,d1.w)
000297f6 54280024	addq.b	#2,routine(a0)
000297fa 217c000299380004	move.l	#Obj7F_MapUnc_29938,mappings(a0)
00029802 317c640e0002	move.w	#make_art_tile(ArtTile_ArtNem_VineSwitch,3,0),art_tile(a0)
0002980c 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00029812 117c00080019	move.b	#8,width_pixels(a0)
00029818 117c00040018	move.b	#4,priority(a0)
0002981e 45e80030	lea	objoff_30(a0),a2
00029822 43f8b000	lea	(MainCharacter).w,a1
00029826 3038f604	move.w	(Ctrl_1).w,d0
0002982a 6110	bsr.s	Obj7F_Action
0002982c 43f8b040	lea	(Sidekick).w,a1
00029830 524a	addq.w	#1,a2
00029832 3038f606	move.w	(Ctrl_2).w,d0
00029836 6104	bsr.s	Obj7F_Action
0002983c 4a12	tst.b	(a2)
0002983e 6750	beq.s	loc_29890
00029840 02000070	andi.b	#button_B_mask|button_C_mask|button_A_mask,d0
00029844 670000f0	beq.w	return_29936
00029848 4229002a	clr.b	obj_control(a1)
0002984c 4212	clr.b	(a2)
0002984e 157c00120002	move.b	#18,2(a2)
00029854 02400f00	andi.w	#(button_up_mask|button_down_mask|button_left_mask|button_right_mask)<<8,d0
00029858 6706	beq.s	+
0002985a 157c003c0002	move.b	#60,2(a2)
00029860 337cfd000012	move.w	#-$300,y_vel(a1)
00029866 10280028	move.b	subtype(a0),d0
0002986a 0240000f	andi.w	#$F,d0
0002986e 47f8f7e0	lea	(ButtonVine_Trigger).w,a3
00029872 47f30000	lea	(a3,d0.w),a3
00029876 08930000	bclr	#0,(a3)
0002987a 117c0000001a	move.b	#0,mapping_frame(a0)
00029880 4a680030	tst.w	objoff_30(a0)
00029884 6706	beq.s	+
00029886 117c0001001a	move.b	#1,mapping_frame(a0)
0002988c 600000a8	bra.w	return_29936
00029890 4a2a0002	tst.b	2(a2)
00029894 6708	beq.s	+
00029896 532a0002	subq.b	#1,2(a2)
0002989a 6600009a	bne.w	return_29936
0002989e 30290008	move.w	x_pos(a1),d0
000298a2 90680008	sub.w	x_pos(a0),d0
000298a6 0640000c	addi.w	#$C,d0
000298aa 0c400018	cmpi.w	#$18,d0
000298ae 64000086	bhs.w	return_29936
000298b2 3229000c	move.w	y_pos(a1),d1
000298b6 9268000c	sub.w	y_pos(a0),d1
000298ba 04410028	subi.w	#$28,d1
000298be 0c410010	cmpi.w	#$10,d1
000298c2 64000072	bhs.w	return_29936
000298c6 4a29002a	tst.b	obj_control(a1)
000298ca 6b6a	bmi.s	return_29936
000298cc 0c2900040024	cmpi.b	#4,routine(a1)
000298d2 6462	bhs.s	return_29936
000298d4 4a78fe08	tst.w	(Debug_placement_mode).w
000298d8 665c	bne.s	return_29936
000298da 42690010	clr.w	x_vel(a1)
000298de 42690012	clr.w	y_vel(a1)
000298e2 42690014	clr.w	inertia(a1)
000298e6 336800080008	move.w	x_pos(a0),x_pos(a1)
000298ec 3368000c000c	move.w	y_pos(a0),y_pos(a1)
000298f2 06690030000c	addi.w	#$30,y_pos(a1)
000298f8 137c0014001c	move.b	#AniIDSonAni_Hang2,anim(a1)
000298fe 137c0001002a	move.b	#1,obj_control(a1)
00029904 14bc0001	move.b	#1,(a2)
00029908 10280028	move.b	subtype(a0),d0
0002990c 0240000f	andi.w	#$F,d0
00029910 47f8f7e0	lea	(ButtonVine_Trigger).w,a3
00029914 08f300000000	bset	#0,(a3,d0.w)
0002991a 303c00cd	move.w	#SndID_Blip,d0
0002991e 4eb900001370	jsr	(PlaySound).l
00029924 117c0000001a	move.b	#0,mapping_frame(a0)
0002992a 4a680030	tst.w	objoff_30(a0)
0002992e 6706	beq.s	return_29936
00029930 117c0001001a	move.b	#1,mapping_frame(a0)
00029936 4e75	rts	
00029970 4ef9000163d2	jmp	(extractJmpToName("JmpTo24_MarkObjGone")).l
00029976 4ef900016d6e	jmp	(extractJmpToName("JmpTo43_Adjust2PArtPointer")).l
0002997c 7000	moveq	#0,d0
0002997e 10280024	move.b	routine(a0),d0
00029982 323b0006	move.w	Obj80_Index(pc,d0.w),d1
00029986 4efb1002	jmp	Obj80_Index(pc,d1.w)
00029990 54280024	addq.b	#2,routine(a0)
00029994 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002999a 117c00100019	move.b	#$10,width_pixels(a0)
000299a0 117c00040018	move.b	#4,priority(a0)
000299a6 117c00800016	move.b	#$80,y_radius(a0)
000299ac 08e800040001	bset	#render_flags.explicit_height,render_flags(a0)
000299b2 3168000c003c	move.w	y_pos(a0),objoff_3C(a0)
000299b8 0c380006fe10	cmpi.b	#wing_fortress_zone,(Current_Zone).w
000299be 665c	bne.s	Obj80_MCZ_Init
000299c0 54280024	addq.b	#2,routine(a0)
000299c4 217c00029dd00004	move.l	#Obj80_MapUnc_29DD0,mappings(a0)
000299cc 317c23fe0002	move.w	#make_art_tile(ArtTile_ArtNem_WfzHook_Fudge,1,0),art_tile(a0)
000299d6 317c00a0002e	move.w	#$A0,objoff_2E(a0)
000299dc 10280028	move.b	subtype(a0),d0
000299e0 1200	move.b	d0,d1
000299e2 0200000f	andi.b	#$F,d0
000299e6 6706	beq.s	+
000299e8 317c0060002e	move.w	#$60,objoff_2E(a0)
000299ee 10280028	move.b	subtype(a0),d0
000299f2 317c0002003a	move.w	#2,objoff_3A(a0)
000299f8 02010070	andi.b	#$70,d1
000299fc 671a	beq.s	+
000299fe 3028002e	move.w	objoff_2E(a0),d0
00029a02 31400038	move.w	d0,objoff_38(a0)
00029a06 117c00010036	move.b	#1,objoff_36(a0)
00029a0c d168000c	add.w	d0,y_pos(a0)
00029a10 e848	lsr.w	#4,d0
00029a12 5240	addq.w	#1,d0
00029a14 1140001a	move.b	d0,mapping_frame(a0)
00029a18 600001e0	bra.w	Obj80_WFZ_Main
00029a1c 217c00029c640004	move.l	#Obj80_MapUnc_29C64,mappings(a0)
00029a24 317c641e0002	move.w	#make_art_tile(ArtTile_ArtNem_VinePulley,3,0),art_tile(a0)
00029a2e 317c00b0002e	move.w	#$B0,objoff_2E(a0)
00029a34 10280028	move.b	subtype(a0),d0
00029a38 6a06	bpl.s	+
00029a3a 117c00010034	move.b	#1,objoff_34(a0)
00029a40 317c0002003a	move.w	#2,objoff_3A(a0)
00029a46 02000070	andi.b	#$70,d0
00029a4a 671a	beq.s	Obj80_MCZ_Main
00029a4c 3028002e	move.w	objoff_2E(a0),d0
00029a50 31400038	move.w	d0,objoff_38(a0)
00029a54 117c00010036	move.b	#1,objoff_36(a0)
00029a5a d168000c	add.w	d0,y_pos(a0)
00029a5e ea48	lsr.w	#5,d0
00029a60 5240	addq.w	#1,d0
00029a62 1140001a	move.b	d0,mapping_frame(a0)
00029a66 4a280036	tst.b	objoff_36(a0)
00029a6a 6708	beq.s	loc_29A74
00029a6c 4a680030	tst.w	objoff_30(a0)
00029a70 6618	bne.s	loc_29A8A
00029a72 6006	bra.s	loc_29A7A
00029a74 4a680030	tst.w	objoff_30(a0)
00029a78 6710	beq.s	loc_29A8A
00029a7a 34280038	move.w	objoff_38(a0),d2
00029a7e b468002e	cmp.w	objoff_2E(a0),d2
00029a82 672a	beq.s	loc_29AAE
00029a84 d468003a	add.w	objoff_3A(a0),d2
00029a88 600a	bra.s	loc_29A94
00029a8a 34280038	move.w	objoff_38(a0),d2
00029a8e 671e	beq.s	loc_29AAE
00029a90 9468003a	sub.w	objoff_3A(a0),d2
00029a94 31420038	move.w	d2,objoff_38(a0)
00029a98 3028003c	move.w	objoff_3C(a0),d0
00029a9c d042	add.w	d2,d0
00029a9e 3140000c	move.w	d0,y_pos(a0)
00029aa2 3002	move.w	d2,d0
00029aa4 6704	beq.s	+
00029aa6 ea48	lsr.w	#5,d0
00029aa8 5240	addq.w	#1,d0
00029aaa 1140001a	move.b	d0,mapping_frame(a0)
00029aae 45e80030	lea	objoff_30(a0),a2
00029ab2 43f8b000	lea	(MainCharacter).w,a1
00029ab6 3038f604	move.w	(Ctrl_1).w,d0
00029aba 6110	bsr.s	Obj80_Action
00029abc 43f8b040	lea	(Sidekick).w,a1
00029ac0 524a	addq.w	#1,a2
00029ac2 3038f606	move.w	(Ctrl_2).w,d0
00029ac6 6104	bsr.s	Obj80_Action
00029acc 4a12	tst.b	(a2)
00029ace 6700008e	beq.w	loc_29B5E
00029ad2 4a290001	tst.b	render_flags(a1)
00029ad6 6a6a	bpl.s	loc_29B42
00029ad8 0c2900040024	cmpi.b	#4,routine(a1)
00029ade 6462	bhs.s	loc_29B42
00029ae0 02000070	andi.b	#button_B_mask|button_C_mask|button_A_mask,d0
00029ae4 6700006a	beq.w	loc_29B50
00029ae8 4229002a	clr.b	obj_control(a1)
00029aec 4212	clr.b	(a2)
00029aee 157c00120002	move.b	#18,2(a2)
00029af4 02400f00	andi.w	#(button_up_mask|button_down_mask|button_left_mask|button_right_mask)<<8,d0
00029af8 67000008	beq.w	+
00029afc 157c003c0002	move.b	#60,2(a2)
00029b02 0800000a	btst	#(button_left+8),d0
00029b06 6706	beq.s	+
00029b08 337cfe000010	move.w	#-$200,x_vel(a1)
00029b0e 0800000b	btst	#(button_right+8),d0
00029b12 6706	beq.s	+
00029b14 337c02000010	move.w	#$200,x_vel(a1)
00029b1a 337cfc800012	move.w	#-$380,y_vel(a1)
00029b20 08e900010022	bset	#status.player.in_air,status(a1)
00029b26 4a280034	tst.b	objoff_34(a0)
00029b2a 6714	beq.s	+
00029b2c 10280028	move.b	subtype(a0),d0
00029b30 0240000f	andi.w	#$F,d0
00029b34 47f8f7e0	lea	(ButtonVine_Trigger).w,a3
00029b38 47f30000	lea	(a3,d0.w),a3
00029b3c 08930000	bclr	#0,(a3)
00029b40 4e75	rts	
00029b42 4229002a	clr.b	obj_control(a1)
00029b46 4212	clr.b	(a2)
00029b48 157c003c0002	move.b	#60,2(a2)
00029b4e 4e75	rts	
00029b50 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00029b56 06690094000c	addi.w	#$94,y_pos(a1)
00029b5c 4e75	rts	
00029b5e 4a2a0002	tst.b	2(a2)
00029b62 6708	beq.s	+
00029b64 532a0002	subq.b	#1,2(a2)
00029b68 6600008e	bne.w	return_29BF8
00029b6c 30290008	move.w	x_pos(a1),d0
00029b70 90680008	sub.w	x_pos(a0),d0
00029b74 06400010	addi.w	#$10,d0
00029b78 0c400020	cmpi.w	#$20,d0
00029b7c 6400007a	bhs.w	return_29BF8
00029b80 3229000c	move.w	y_pos(a1),d1
00029b84 9268000c	sub.w	y_pos(a0),d1
00029b88 04410088	subi.w	#$88,d1
00029b8c 0c410018	cmpi.w	#$18,d1
00029b90 64000066	bhs.w	return_29BF8
00029b94 4a29002a	tst.b	obj_control(a1)
00029b98 6b5e	bmi.s	return_29BF8
00029b9a 0c2900040024	cmpi.b	#4,routine(a1)
00029ba0 6456	bhs.s	return_29BF8
00029ba2 4a78fe08	tst.w	(Debug_placement_mode).w
00029ba6 6650	bne.s	return_29BF8
00029ba8 42690010	clr.w	x_vel(a1)
00029bac 42690012	clr.w	y_vel(a1)
00029bb0 42690014	clr.w	inertia(a1)
00029bb4 336800080008	move.w	x_pos(a0),x_pos(a1)
00029bba 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00029bc0 06690094000c	addi.w	#$94,y_pos(a1)
00029bc6 137c0014001c	move.b	#AniIDSonAni_Hang2,anim(a1)
00029bcc 137c0001002a	move.b	#1,obj_control(a1)
00029bd2 14bc0001	move.b	#1,(a2)
00029bd6 4a280034	tst.b	objoff_34(a0)
00029bda 671c	beq.s	return_29BF8
00029bdc 10280028	move.b	subtype(a0),d0
00029be0 0240000f	andi.w	#$F,d0
00029be4 47f8f7e0	lea	(ButtonVine_Trigger).w,a3
00029be8 08f300000000	bset	#0,(a3,d0.w)
00029bee 303c00cd	move.w	#SndID_Blip,d0
00029bf2 4eb900001370	jsr	(PlaySound).l
00029bf8 4e75	rts	
00029bfa 4a280036	tst.b	objoff_36(a0)
00029bfe 6708	beq.s	loc_29C08
00029c00 4a680030	tst.w	objoff_30(a0)
00029c04 6618	bne.s	loc_29C1E
00029c06 6006	bra.s	loc_29C0E
00029c08 4a680030	tst.w	objoff_30(a0)
00029c0c 6710	beq.s	loc_29C1E
00029c0e 34280038	move.w	objoff_38(a0),d2
00029c12 b468002e	cmp.w	objoff_2E(a0),d2
00029c16 672a	beq.s	loc_29C42
00029c18 d468003a	add.w	objoff_3A(a0),d2
00029c1c 600a	bra.s	loc_29C28
00029c1e 34280038	move.w	objoff_38(a0),d2
00029c22 671e	beq.s	loc_29C42
00029c24 9468003a	sub.w	objoff_3A(a0),d2
00029c28 31420038	move.w	d2,objoff_38(a0)
00029c2c 3028003c	move.w	objoff_3C(a0),d0
00029c30 d042	add.w	d2,d0
00029c32 3140000c	move.w	d0,y_pos(a0)
00029c36 3002	move.w	d2,d0
00029c38 6704	beq.s	+
00029c3a e848	lsr.w	#4,d0
00029c3c 5240	addq.w	#1,d0
00029c3e 1140001a	move.b	d0,mapping_frame(a0)
00029c42 45e80030	lea	objoff_30(a0),a2
00029c46 43f8b000	lea	(MainCharacter).w,a1
00029c4a 3038f604	move.w	(Ctrl_1).w,d0
00029c4e 6100fe7c	bsr.w	Obj80_Action
00029c52 43f8b040	lea	(Sidekick).w,a1
00029c56 524a	addq.w	#1,a2
00029c58 3038f606	move.w	(Ctrl_2).w,d0
00029c5c 6100fe6e	bsr.w	Obj80_Action
00029ff4 4ef9000163d2	jmp	(extractJmpToName("JmpTo25_MarkObjGone")).l
00029ffa 4ef900016d6e	jmp	(extractJmpToName("JmpTo44_Adjust2PArtPointer")).l
0002a000 082800060001	btst	#render_flags.multi_sprite,render_flags(a0)
0002a006 66000010	bne.w	+
0002a00a 7000	moveq	#0,d0
0002a00c 10280024	move.b	routine(a0),d0
0002a010 323b000e	move.w	Obj81_Index(pc,d0.w),d1
0002a014 4efb100a	jmp	Obj81_Index(pc,d1.w)
0002a018 303c0280	move.w	#object_display_list_size*5,d0
0002a026 54280024	addq.b	#2,routine(a0)
0002a02a 217c0002a24e0004	move.l	#Obj81_MapUnc_2A24E,mappings(a0)
0002a032 317c643c0002	move.w	#make_art_tile(ArtTile_ArtNem_MCZGateLog,3,0),art_tile(a0)
0002a03c 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002a042 117c00050018	move.b	#5,priority(a0)
0002a048 117c00080019	move.b	#8,width_pixels(a0)
0002a04e 002800800022	ori.b	#1<<status.npc.no_balancing,status(a0)
0002a054 316800080030	move.w	x_pos(a0),objoff_30(a0)
0002a05a 3168000c0032	move.w	y_pos(a0),objoff_32(a0)
0002a060 04680048000c	subi.w	#$48,y_pos(a0)
0002a066 117c00c00026	move.b	#-$40,angle(a0)
0002a06c 78f0	moveq	#-$10,d4
0002a06e 082800010022	btst	#status.npc.y_flip,status(a0)
0002a074 670e	beq.s	+
0002a076 06680090000c	addi.w	#$90,y_pos(a0)
0002a07c 117c00400026	move.b	#$40,angle(a0)
0002a082 4444	neg.w	d4
0002a084 323c0100	move.w	#$100,d1
0002a088 082800000022	btst	#status.npc.x_flip,status(a0)
0002a08e 6702	beq.s	+
0002a090 4441	neg.w	d1
0002a092 31410034	move.w	d1,objoff_34(a0)
0002a09a 6662	bne.s	Obj81_BridgeUp
0002a0a2 236800040004	move.l	mappings(a0),mappings(a1)
0002a0a8 336800020002	move.w	art_tile(a0),art_tile(a1)
0002a0ae 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002a0b4 08e900060001	bset	#render_flags.multi_sprite,render_flags(a1)
0002a0ba 137c0040000e	move.b	#$40,mainspr_width(a1)
0002a0c0 34280030	move.w	objoff_30(a0),d2
0002a0c4 36280032	move.w	objoff_32(a0),d3
0002a0c8 7208	moveq	#8,d1
0002a0ca 1341000f	move.b	d1,mainspr_childsprites(a1)
0002a0ce 5341	subq.w	#1,d1
0002a0d0 45e90010	lea	subspr_data(a1),a2
0002a0d6 34c2	move.w	d2,(a2)+
0002a0d8 34c3	move.w	d3,(a2)+
0002a0da 34fc0001	move.w	#1,(a2)+
0002a0de 51c9fff4	dbf	d1,-
0002a0e2 336900280008	move.w	sub6_x_pos(a1),x_pos(a1)
0002a0e8 3369002a000c	move.w	sub6_y_pos(a1),y_pos(a1)
0002a0ee 2149003c	move.l	a1,objoff_3C(a0)
0002a0f2 137c00400014	move.b	#$40,mainspr_height(a1)
0002a0f8 08e900040001	bset	#render_flags.explicit_height,render_flags(a1)
0002a0fe 45f8f7e0	lea	(ButtonVine_Trigger).w,a2
0002a102 7000	moveq	#0,d0
0002a104 10280028	move.b	subtype(a0),d0
0002a108 083200000000	btst	#0,(a2,d0.w)
0002a10e 672a	beq.s	+
0002a110 4a280036	tst.b	objoff_36(a0)
0002a114 6624	bne.s	+
0002a116 117c00010036	move.b	#1,objoff_36(a0)
0002a11c 303c00e7	move.w	#SndID_DrawbridgeMove,d0
0002a120 4eb900001376	jsr	(PlaySound2).l
0002a126 0c2800810022	cmpi.b	#1<<status.npc.no_balancing|1<<status.npc.x_flip,status(a0)
0002a12c 660c	bne.s	+
0002a12e 316800300008	move.w	objoff_30(a0),x_pos(a0)
0002a134 046800480008	subi.w	#$48,x_pos(a0)
0002a13a 4a280036	tst.b	objoff_36(a0)
0002a13e 6748	beq.s	loc_2A188
0002a140 323c0048	move.w	#$48,d1
0002a144 4a280026	tst.b	angle(a0)
0002a148 670a	beq.s	loc_2A154
0002a14a 0c2800800026	cmpi.b	#$80,angle(a0)
0002a150 662e	bne.s	loc_2A180
0002a152 4441	neg.w	d1
0002a154 31680032000c	move.w	objoff_32(a0),y_pos(a0)
0002a15a 316800300008	move.w	objoff_30(a0),x_pos(a0)
0002a160 d3680008	add.w	d1,x_pos(a0)
0002a164 117c00400019	move.b	#$40,width_pixels(a0)
0002a16a 117c00000036	move.b	#0,objoff_36(a0)
0002a170 303c00e9	move.w	#SndID_DrawbridgeDown,d0
0002a174 4eb900001370	jsr	(PlaySound).l
0002a17a 54280024	addq.b	#2,routine(a0)
0002a17e 6008	bra.s	loc_2A188
0002a180 30280034	move.w	objoff_34(a0),d0
0002a184 d1680026	add.w	d0,angle(a0)
0002a188 6160	bsr.s	loc_2A1EA
0002a18a 323c0013	move.w	#$13,d1
0002a18e 343c0040	move.w	#$40,d2
0002a192 363c0041	move.w	#$41,d3
0002a196 10280026	move.b	angle(a0),d0
0002a19a 670c	beq.s	loc_2A1A8
0002a19c 0c000040	cmpi.b	#$40,d0
0002a1a0 6712	beq.s	loc_2A1B4
0002a1a2 0c0000c0	cmpi.b	#-$40,d0
0002a1a6 640c	bhs.s	loc_2A1B4
0002a1a8 323c004b	move.w	#$4B,d1
0002a1ac 343c0008	move.w	#8,d2
0002a1b0 363c0009	move.w	#9,d3
0002a1b4 38280008	move.w	x_pos(a0),d4
0002a1bc 4a78ffd8	tst.w	(Two_player_mode).w
0002a1c0 6704	beq.s	+
0002a1c6 30280030	move.w	objoff_30(a0),d0
0002a1ca 0240ff80	andi.w	#$FF80,d0
0002a1ce 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
0002a1d2 0c400280	cmpi.w	#$280,d0
0002a1d6 62000006	bhi.w	+
0002a1de 2268003c	movea.l	objoff_3C(a0),a1
0002a1ea 4a280036	tst.b	objoff_36(a0)
0002a1ee 675c	beq.s	return_2A24C
0002a1f0 7000	moveq	#0,d0
0002a1f2 7200	moveq	#0,d1
0002a1f4 10280026	move.b	angle(a0),d0
0002a1fc 34280032	move.w	objoff_32(a0),d2
0002a200 36280030	move.w	objoff_30(a0),d3
0002a204 7c00	moveq	#0,d6
0002a206 2268003c	movea.l	objoff_3C(a0),a1
0002a20a 1c29000f	move.b	mainspr_childsprites(a1),d6
0002a20e 5346	subq.w	#1,d6
0002a210 653a	bcs.s	return_2A24C
0002a212 4840	swap	d0
0002a214 4841	swap	d1
0002a216 e880	asr.l	#4,d0
0002a218 e881	asr.l	#4,d1
0002a21a 2800	move.l	d0,d4
0002a21c 2a01	move.l	d1,d5
0002a21e 45e90010	lea	subspr_data(a1),a2
0002a226 4844	swap	d4
0002a228 4845	swap	d5
0002a22a d842	add.w	d2,d4
0002a22c da43	add.w	d3,d5
0002a22e 34c5	move.w	d5,(a2)+
0002a230 34c4	move.w	d4,(a2)+
0002a232 4cdf0030	movem.l	(sp)+,d4-d5
0002a236 d880	add.l	d0,d4
0002a238 da81	add.l	d1,d5
0002a23a 544a	addq.w	#next_subspr-4,a2
0002a23c 51ceffe4	dbf	d6,-
0002a240 336900280008	move.w	sub6_x_pos(a1),x_pos(a1)
0002a246 3369002a000c	move.w	sub6_y_pos(a1),y_pos(a1)
0002a24c 4e75	rts	
0002a25e 4e71	nop	
0002a260 4ef900016530	jmp	(extractJmpToName("JmpTo2_DisplaySprite3")).l
0002a266 4ef9000164f4	jmp	(extractJmpToName("JmpTo26_DisplaySprite")).l
0002a26c 4ef9000164e6	jmp	(extractJmpToName("JmpTo41_DeleteObject")).l
0002a272 4ef9000164e8	jmp	(extractJmpToName("JmpTo3_DeleteObject2")).l
0002a278 4ef900017ffa	jmp	(extractJmpToName("JmpTo18_AllocateObjectAfterCurrent")).l
0002a27e 4ef900016d6e	jmp	(extractJmpToName("JmpTo45_Adjust2PArtPointer")).l
0002a284 4ef9000033b6	jmp	(extractJmpToName("JmpTo9_CalcSine")).l
0002a28a 4ef900019718	jmp	(extractJmpToName("JmpTo22_SolidObject")).l
0002a290 7000	moveq	#0,d0
0002a292 10280024	move.b	routine(a0),d0
0002a296 323b0006	move.w	Obj82_Index(pc,d0.w),d1
0002a29a 4efb1002	jmp	Obj82_Index(pc,d1.w)
0002a2aa 54280024	addq.b	#2,routine(a0)
0002a2ae 217c0002a4760004	move.l	#Obj82_MapUnc_2A476,mappings(a0)
0002a2b6 317c00000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,0,0),art_tile(a0)
0002a2c0 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002a2c6 117c00030018	move.b	#3,priority(a0)
0002a2cc 7000	moveq	#0,d0
0002a2ce 10280028	move.b	subtype(a0),d0
0002a2d2 e648	lsr.w	#3,d0
0002a2d4 0240000e	andi.w	#$E,d0
0002a2d8 45fb00c8	lea	Obj82_Properties(pc,d0.w),a2
0002a2dc 115a0019	move.b	(a2)+,width_pixels(a0)
0002a2e0 11520016	move.b	(a2),y_radius(a0)
0002a2e4 e248	lsr.w	#1,d0
0002a2e6 1140001a	move.b	d0,mapping_frame(a0)
0002a2ea 316800080034	move.w	x_pos(a0),objoff_34(a0)
0002a2f0 3168000c0030	move.w	y_pos(a0),objoff_30(a0)
0002a2f6 10280028	move.b	subtype(a0),d0
0002a2fa 0200000f	andi.b	#$F,d0
0002a2fe 670c	beq.s	+
0002a300 0c000007	cmpi.b	#7,d0
0002a304 6706	beq.s	+
0002a306 117c00010038	move.b	#1,objoff_38(a0)
0002a30c 0228000f0028	andi.b	#$F,subtype(a0)
0002a312 3f280008	move.w	x_pos(a0),-(sp)
0002a316 7000	moveq	#0,d0
0002a318 10280028	move.b	subtype(a0),d0
0002a31c d040	add.w	d0,d0
0002a31e 323b0038	move.w	Obj82_Types(pc,d0.w),d1
0002a322 4ebb1034	jsr	Obj82_Types(pc,d1.w)
0002a326 381f	move.w	(sp)+,d4
0002a328 4a280001	tst.b	render_flags(a0)
0002a32c 6a22	bpl.s	+
0002a32e 7200	moveq	#0,d1
0002a330 12280019	move.b	width_pixels(a0),d1
0002a334 0641000b	addi.w	#$B,d1
0002a338 7400	moveq	#0,d2
0002a33a 14280016	move.b	y_radius(a0),d2
0002a33e 3602	move.w	d2,d3
0002a340 5243	addq.w	#1,d3
0002a346 4846	swap	d6
0002a348 1146003f	move.b	d6,objoff_3F(a0)
0002a34c 610000e4	bsr.w	loc_2A432
0002a350 30280034	move.w	objoff_34(a0),d0
0002a368 4e75	rts	
0002a36a 4a680036	tst.w	objoff_36(a0)
0002a36e 6612	bne.s	loc_2A382
0002a370 10280022	move.b	status(a0),d0
0002a374 02000018	andi.b	#standing_mask,d0
0002a378 6706	beq.s	return_2A380
0002a37a 317c001e0036	move.w	#$1E,objoff_36(a0)
0002a380 4e75	rts	
0002a382 53680036	subq.w	#1,objoff_36(a0)
0002a386 66f8	bne.s	return_2A380
0002a388 52280028	addq.b	#1,subtype(a0)
0002a38c 42280038	clr.b	objoff_38(a0)
0002a390 4e75	rts	
0002a3a0 4a41	tst.w	d1
0002a3a2 6a000010	bpl.w	return_2A3B4
0002a3a6 5241	addq.w	#1,d1
0002a3a8 d368000c	add.w	d1,y_pos(a0)
0002a3ac 42680012	clr.w	y_vel(a0)
0002a3b0 42280028	clr.b	subtype(a0)
0002a3b4 4e75	rts	
0002a3c4 4a41	tst.w	d1
0002a3c6 6a00000e	bpl.w	return_2A3D6
0002a3ca 9368000c	sub.w	d1,y_pos(a0)
0002a3ce 42680012	clr.w	y_vel(a0)
0002a3d2 42280028	clr.b	subtype(a0)
0002a3d6 4e75	rts	
0002a3d8 1028003f	move.b	objoff_3F(a0),d0
0002a3dc 02000003	andi.b	#3,d0
0002a3e0 6708	beq.s	return_2A3EA
0002a3e2 52280028	addq.b	#1,subtype(a0)
0002a3e6 42280038	clr.b	objoff_38(a0)
0002a3ea 4e75	rts	
0002a3ec 3038f646	move.w	(Water_Level_1).w,d0
0002a3f0 9068000c	sub.w	y_pos(a0),d0
0002a3f4 673a	beq.s	return_2A430
0002a3f6 641c	bcc.s	loc_2A414
0002a3f8 0c40fffe	cmpi.w	#-2,d0
0002a3fc 6c02	bge.s	loc_2A400
0002a3fe 70fe	moveq	#-2,d0
0002a400 d168000c	add.w	d0,y_pos(a0)
0002a408 4a41	tst.w	d1
0002a40a 6a000006	bpl.w	return_2A412
0002a40e 9368000c	sub.w	d1,y_pos(a0)
0002a412 4e75	rts	
0002a414 0c400002	cmpi.w	#2,d0
0002a418 6f02	ble.s	loc_2A41C
0002a41a 7002	moveq	#2,d0
0002a41c d168000c	add.w	d0,y_pos(a0)
0002a424 4a41	tst.w	d1
0002a426 6a000008	bpl.w	return_2A430
0002a42a 5241	addq.w	#1,d1
0002a42c d368000c	add.w	d1,y_pos(a0)
0002a430 4e75	rts	
0002a432 4a280038	tst.b	objoff_38(a0)
0002a436 673c	beq.s	return_2A474
0002a438 10280022	move.b	status(a0),d0
0002a43c 02000018	andi.b	#standing_mask,d0
0002a440 660c	bne.s	loc_2A44E
0002a442 4a28003e	tst.b	objoff_3E(a0)
0002a446 672c	beq.s	return_2A474
0002a448 5928003e	subq.b	#4,objoff_3E(a0)
0002a44c 600c	bra.s	loc_2A45A
0002a44e 0c280040003e	cmpi.b	#$40,objoff_3E(a0)
0002a454 671e	beq.s	return_2A474
0002a456 5828003e	addq.b	#4,objoff_3E(a0)
0002a45a 1028003e	move.b	objoff_3E(a0),d0
0002a45e 4eb9000033b6	jsr	(CalcSine).l
0002a464 323c0400	move.w	#$400,d1
0002a468 c1c1	muls.w	d1,d0
0002a46a 4840	swap	d0
0002a46c d0680030	add.w	objoff_30(a0),d0
0002a470 3140000c	move.w	d0,y_pos(a0)
0002a474 4e75	rts	
0002a4d6 4e71	nop	
0002a4d8 4ef90001edfa	jmp	(extractJmpToName("JmpTo2_ObjCheckFloorDist")).l
0002a4de 4ef900016d6e	jmp	(extractJmpToName("JmpTo46_Adjust2PArtPointer")).l
0002a4e4 4ef90001efbe	jmp	(extractJmpToName("JmpTo_ObjCheckCeilingDist")).l
0002a4ea 4ef900019718	jmp	(extractJmpToName("JmpTo23_SolidObject")).l
0002a4f0 4ef90001640a	jmp	(extractJmpToName("JmpTo7_MarkObjGone2")).l
0002a4f6 4ef9000163ac	jmp	(extractJmpToName("JmpTo16_ObjectMove")).l
0002a4fc 082800060001	btst	#render_flags.multi_sprite,render_flags(a0)
0002a502 66000010	bne.w	.isMultispriteObject
0002a506 7000	moveq	#0,d0
0002a508 10280024	move.b	routine(a0),d0
0002a50c 323b000e	move.w	Obj83_Index(pc,d0.w),d1
0002a510 4efb100a	jmp	Obj83_Index(pc,d1.w)
0002a514 303c0280	move.w	#object_display_list_size*5,d0
0002a522 54280024	addq.b	#2,routine(a0)
0002a526 217c0001021e0004	move.l	#Obj15_Obj83_MapUnc_1021E,mappings(a0)
0002a52e 317c00000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,0,0),art_tile(a0)
0002a538 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002a53e 117c00040018	move.b	#4,priority(a0)
0002a544 117c00200019	move.b	#$20,width_pixels(a0)
0002a54a 316800080030	move.w	x_pos(a0),Obj83_initial_x_pos(a0)
0002a550 3168000c0032	move.w	y_pos(a0),Obj83_initial_y_pos(a0)
0002a556 12280028	move.b	subtype(a0),d1
0002a55a 1001	move.b	d1,d0
0002a55c 0241000f	andi.w	#$F,d1
0002a560 020000f0	andi.b	#$F0,d0
0002a564 4880	ext.w	d0
0002a566 e740	asl.w	#3,d0
0002a568 3140002e	move.w	d0,Obj83_speed(a0)
0002a56c 10280022	move.b	status(a0),d0
0002a570 e418	ror.b	#status.npc.y_flip+1,d0
0002a572 020000c0	andi.b	#$C0,d0
0002a576 11400026	move.b	d0,angle(a0)
0002a57e 665c	bne.s	.noRAMforChildObjects
0002a586 236800040004	move.l	mappings(a0),mappings(a1)
0002a58c 336800020002	move.w	art_tile(a0),art_tile(a1)
0002a592 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002a598 08e900060001	bset	#render_flags.multi_sprite,render_flags(a1)
0002a59e 137c0040000e	move.b	#$40,mainspr_width(a1)
0002a5a4 7208	moveq	#8,d1
0002a5a6 1341000f	move.b	d1,mainspr_childsprites(a1)
0002a5aa 5341	subq.w	#1,d1
0002a5ac 45e90010	lea	subspr_data(a1),a2
0002a5b0 584a	addq.w	#next_subspr-2,a2
0002a5b2 34fc0001	move.w	#1,(a2)+
0002a5b6 51c9fff8	dbf	d1,.nextChildSprite
0002a5ba 137c0001000b	move.b	#1,mainspr_mapframe(a1)
0002a5c0 137c00400014	move.b	#$40,mainspr_height(a1)
0002a5c6 08e900040001	bset	#render_flags.explicit_height,render_flags(a1)
0002a5cc 21490034	move.l	a1,Obj83_childobjptr_chains(a0)
0002a5d0 610c	bsr.s	Obj83_LoadSubObject
0002a5d2 21490038	move.l	a1,Obj83_childobjptr_platform2(a0)
0002a5d6 6106	bsr.s	Obj83_LoadSubObject
0002a5d8 2149003c	move.l	a1,Obj83_childobjptr_platform3(a0)
0002a5dc 6042	bra.s	Obj83_Main
0002a5e2 663a	bne.s	.noRAMforChildObject
0002a5e4 58290024	addq.b	#4,routine(a1)
0002a5ee 236800040004	move.l	mappings(a0),mappings(a1)
0002a5f4 336800020002	move.w	art_tile(a0),art_tile(a1)
0002a5fa 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002a600 137c00040018	move.b	#4,priority(a1)
0002a606 137c00200019	move.b	#$20,width_pixels(a1)
0002a60c 336800080030	move.w	x_pos(a0),Obj83_initial_x_pos(a1)
0002a612 3368000c0032	move.w	y_pos(a0),Obj83_initial_y_pos(a1)
0002a618 33680008002c	move.w	x_pos(a0),Obj83_last_x_pos(a1)
0002a61e 4e75	rts	
0002a620 3f280008	move.w	x_pos(a0),-(sp)
0002a624 7000	moveq	#0,d0
0002a626 7200	moveq	#0,d1
0002a628 3028002e	move.w	Obj83_speed(a0),d0
0002a62c d1680026	add.w	d0,angle(a0)
0002a630 34280032	move.w	Obj83_initial_y_pos(a0),d2
0002a634 36280030	move.w	Obj83_initial_x_pos(a0),d3
0002a638 7c00	moveq	#0,d6
0002a63a 22680034	movea.l	Obj83_childobjptr_chains(a0),a1
0002a63e 45e90010	lea	subspr_data(a1),a2
0002a642 10280026	move.b	angle(a0),d0
0002a64a 4840	swap	d0
0002a64c 4841	swap	d1
0002a64e e880	asr.l	#4,d0
0002a650 e881	asr.l	#4,d1
0002a652 2800	move.l	d0,d4
0002a654 2a01	move.l	d1,d5
0002a656 4844	swap	d4
0002a658 4845	swap	d5
0002a65a d842	add.w	d2,d4
0002a65c da43	add.w	d3,d5
0002a65e 33450008	move.w	d5,x_pos(a1)
0002a662 3344000c	move.w	d4,y_pos(a1)
0002a666 2800	move.l	d0,d4
0002a668 2a01	move.l	d1,d5
0002a66a d880	add.l	d0,d4
0002a66c da81	add.l	d1,d5
0002a66e 7c01	moveq	#1,d6
0002a670 610000bc	bsr.w	Obj83_UpdateChainSpritePosition
0002a674 4844	swap	d4
0002a676 4845	swap	d5
0002a678 d842	add.w	d2,d4
0002a67a da43	add.w	d3,d5
0002a67c 31450008	move.w	d5,x_pos(a0)
0002a680 3144000c	move.w	d4,y_pos(a0)
0002a684 10280026	move.b	angle(a0),d0
0002a688 06000055	addi.b	#256/3,d0
0002a690 4840	swap	d0
0002a692 4841	swap	d1
0002a694 e880	asr.l	#4,d0
0002a696 e881	asr.l	#4,d1
0002a698 2800	move.l	d0,d4
0002a69a 2a01	move.l	d1,d5
0002a69c 7c02	moveq	#2,d6
0002a69e 6100008e	bsr.w	Obj83_UpdateChainSpritePosition
0002a6a2 4844	swap	d4
0002a6a4 4845	swap	d5
0002a6a6 d842	add.w	d2,d4
0002a6a8 da43	add.w	d3,d5
0002a6aa 22680038	movea.l	Obj83_childobjptr_platform2(a0),a1
0002a6ae 33450008	move.w	d5,x_pos(a1)
0002a6b2 3344000c	move.w	d4,y_pos(a1)
0002a6b6 10280026	move.b	angle(a0),d0
0002a6ba 04000055	subi.b	#256/3,d0
0002a6c2 4840	swap	d0
0002a6c4 4841	swap	d1
0002a6c6 e880	asr.l	#4,d0
0002a6c8 e881	asr.l	#4,d1
0002a6ca 2800	move.l	d0,d4
0002a6cc 2a01	move.l	d1,d5
0002a6ce 7c02	moveq	#2,d6
0002a6d0 6100005c	bsr.w	Obj83_UpdateChainSpritePosition
0002a6d4 4844	swap	d4
0002a6d6 4845	swap	d5
0002a6d8 d842	add.w	d2,d4
0002a6da da43	add.w	d3,d5
0002a6dc 2268003c	movea.l	Obj83_childobjptr_platform3(a0),a1
0002a6e0 33450008	move.w	d5,x_pos(a1)
0002a6e4 3344000c	move.w	d4,y_pos(a1)
0002a6e8 7200	moveq	#0,d1
0002a6ea 12280019	move.b	width_pixels(a0),d1
0002a6ee 0641000b	addi.w	#$B,d1
0002a6f2 343c0008	move.w	#8,d2
0002a6f6 363c0009	move.w	#9,d3
0002a6fa 381f	move.w	(sp)+,d4
0002a700 4a78ffd8	tst.w	(Two_player_mode).w
0002a704 6704	beq.s	.notTwoPlayerMode
0002a70a 30280030	move.w	Obj83_initial_x_pos(a0),d0
0002a70e 0240ff80	andi.w	#$FF80,d0
0002a712 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
0002a716 0c400280	cmpi.w	#$280,d0
0002a71a 62000006	bhi.w	.objectOffscreen
0002a722 22680034	movea.l	Obj83_childobjptr_chains(a0),a1
0002a72e 48e70c00	movem.l	d4-d5,-(sp)
0002a732 4844	swap	d4
0002a734 4845	swap	d5
0002a736 d842	add.w	d2,d4
0002a738 da43	add.w	d3,d5
0002a73a 34c5	move.w	d5,(a2)+
0002a73c 34c4	move.w	d4,(a2)+
0002a73e 4cdf0030	movem.l	(sp)+,d4-d5
0002a742 d880	add.l	d0,d4
0002a744 da81	add.l	d1,d5
0002a746 544a	addq.w	#next_subspr-4,a2
0002a748 51ceffe4	dbf	d6,.nextChainSprite
0002a74c 4e75	rts	
0002a74e 7200	moveq	#0,d1
0002a750 12280019	move.b	width_pixels(a0),d1
0002a754 0641000b	addi.w	#$B,d1
0002a758 343c0008	move.w	#8,d2
0002a75c 363c0009	move.w	#9,d3
0002a760 3828002c	move.w	Obj83_last_x_pos(a0),d4
0002a768 31680008002c	move.w	x_pos(a0),Obj83_last_x_pos(a0)
0002a76e 30280030	move.w	Obj83_initial_x_pos(a0),d0
0002a776 4e71	nop	
0002a778 4ef900016530	jmp	(extractJmpToName("JmpTo3_DisplaySprite3")).l
0002a77e 4ef9000164f4	jmp	(extractJmpToName("JmpTo27_DisplaySprite")).l
0002a784 4ef9000164e6	jmp	(extractJmpToName("JmpTo42_DeleteObject")).l
0002a78a 4ef9000164e8	jmp	(extractJmpToName("JmpTo4_DeleteObject2")).l
0002a790 4ef900017ffa	jmp	(extractJmpToName("JmpTo19_AllocateObjectAfterCurrent")).l
0002a796 4ef900016d6e	jmp	(extractJmpToName("JmpTo47_Adjust2PArtPointer")).l
0002a79c 4ef9000033b6	jmp	(extractJmpToName("JmpTo10_CalcSine")).l
0002a7a2 4ef900019c32	jmp	(extractJmpToName("JmpTo7_PlatformObject")).l
0002a7a8 4ef90001640a	jmp	(extractJmpToName("JmpTo8_MarkObjGone2")).l
0002a7b0 7000	moveq	#0,d0
0002a7b2 10280024	move.b	routine(a0),d0
0002a7b6 323b0006	move.w	Obj3F_Index(pc,d0.w),d1
0002a7ba 4efb1002	jmp	Obj3F_Index(pc,d1.w)
0002a7c4 54280024	addq.b	#2,routine(a0)
0002a7c8 217c0002aa120004	move.l	#Obj3F_MapUnc_2AA12,mappings(a0)
0002a7d0 317c64030002	move.w	#make_art_tile(ArtTile_ArtNem_OOZFanHoriz,3,0),art_tile(a0)
0002a7da 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0002a7e0 117c00100019	move.b	#$10,width_pixels(a0)
0002a7e6 117c00040018	move.b	#4,priority(a0)
0002a7ec 4a280028	tst.b	subtype(a0)
0002a7f0 6a10	bpl.s	Obj3F_Horizontal
0002a7f2 54280024	addq.b	#2,routine(a0)
0002a7f6 217c0002aac40004	move.l	#Obj3F_MapUnc_2AAC4,mappings(a0)
0002a7fe 600000fe	bra.w	Obj3F_Vertical
0002a802 082800010028	btst	#1,subtype(a0)
0002a808 6620	bne.s	loc_2A82A
0002a80a 53680030	subq.w	#1,objoff_30(a0)
0002a80e 6a1a	bpl.s	loc_2A82A
0002a810 317c00000034	move.w	#0,objoff_34(a0)
0002a816 317c00780030	move.w	#$78,objoff_30(a0)
0002a81c 086800000032	bchg	#0,objoff_32(a0)
0002a822 6706	beq.s	loc_2A82A
0002a824 317c00b40030	move.w	#$B4,objoff_30(a0)
0002a82a 4a280032	tst.b	objoff_32(a0)
0002a82e 6700001e	beq.w	loc_2A84E
0002a832 5328001e	subq.b	#1,anim_frame_duration(a0)
0002a836 6a58	bpl.s	BranchTo_JmpTo26_MarkObjGone
0002a838 0c6804000034	cmpi.w	#$400,objoff_34(a0)
0002a83e 6450	bhs.s	BranchTo_JmpTo26_MarkObjGone
0002a840 0668002a0034	addi.w	#$2A,objoff_34(a0)
0002a846 11680034001e	move.b	objoff_34(a0),anim_frame_duration(a0)
0002a84c 601c	bra.s	loc_2A86A
0002a84e 43f8b000	lea	(MainCharacter).w,a1
0002a852 61000040	bsr.w	loc_2A894
0002a856 43f8b040	lea	(Sidekick).w,a1
0002a85a 61000038	bsr.w	loc_2A894
0002a85e 5328001e	subq.b	#1,anim_frame_duration(a0)
0002a862 6a2c	bpl.s	BranchTo_JmpTo26_MarkObjGone
0002a864 117c0000001e	move.b	#0,anim_frame_duration(a0)
0002a86a 5228001b	addq.b	#1,anim_frame(a0)
0002a86e 0c280006001b	cmpi.b	#6,anim_frame(a0)
0002a874 6506	blo.s	loc_2A87C
0002a876 117c0000001b	move.b	#0,anim_frame(a0)
0002a87c 7000	moveq	#0,d0
0002a87e 082800000028	btst	#0,subtype(a0)
0002a884 6702	beq.s	loc_2A888
0002a886 7005	moveq	#5,d0
0002a888 d028001b	add.b	anim_frame(a0),d0
0002a88c 1140001a	move.b	d0,mapping_frame(a0)
0002a894 0c2900040024	cmpi.b	#4,routine(a1)
0002a89a 6460	bhs.s	return_2A8FC
0002a89c 4a29002a	tst.b	obj_control(a1)
0002a8a0 665a	bne.s	return_2A8FC
0002a8a2 30290008	move.w	x_pos(a1),d0
0002a8a6 90680008	sub.w	x_pos(a0),d0
0002a8aa 082800000022	btst	#status.npc.x_flip,status(a0)
0002a8b0 6602	bne.s	loc_2A8B4
0002a8b2 4440	neg.w	d0
0002a8b4 06400050	addi.w	#$50,d0
0002a8b8 0c4000f0	cmpi.w	#$F0,d0
0002a8bc 643e	bhs.s	return_2A8FC
0002a8be 3229000c	move.w	y_pos(a1),d1
0002a8c2 06410060	addi.w	#$60,d1
0002a8c6 9268000c	sub.w	y_pos(a0),d1
0002a8ca 6530	bcs.s	return_2A8FC
0002a8cc 0c410070	cmpi.w	#$70,d1
0002a8d0 642a	bhs.s	return_2A8FC
0002a8d2 04400050	subi.w	#$50,d0
0002a8d6 6404	bcc.s	loc_2A8DC
0002a8d8 4640	not.w	d0
0002a8da d040	add.w	d0,d0
0002a8dc 06400060	addi.w	#$60,d0
0002a8e0 082800000022	btst	#status.npc.x_flip,status(a0)
0002a8e6 6602	bne.s	loc_2A8EA
0002a8e8 4440	neg.w	d0
0002a8ea 4400	neg.b	d0
0002a8ec e840	asr.w	#4,d0
0002a8ee 082800000028	btst	#0,subtype(a0)
0002a8f4 6702	beq.s	loc_2A8F8
0002a8f6 4440	neg.w	d0
0002a8f8 d1690008	add.w	d0,x_pos(a1)
0002a8fc 4e75	rts	
0002a8fe 082800010028	btst	#1,subtype(a0)
0002a904 6620	bne.s	loc_2A926
0002a906 53680030	subq.w	#1,objoff_30(a0)
0002a90a 6a1a	bpl.s	loc_2A926
0002a90c 317c00000034	move.w	#0,objoff_34(a0)
0002a912 317c00780030	move.w	#$78,objoff_30(a0)
0002a918 086800000032	bchg	#0,objoff_32(a0)
0002a91e 6706	beq.s	loc_2A926
0002a920 317c00b40030	move.w	#$B4,objoff_30(a0)
0002a926 4a280032	tst.b	objoff_32(a0)
0002a92a 6700001e	beq.w	loc_2A94A
0002a92e 5328001e	subq.b	#1,anim_frame_duration(a0)
0002a932 6a58	bpl.s	BranchTo2_JmpTo26_MarkObjGone
0002a934 0c6804000034	cmpi.w	#$400,objoff_34(a0)
0002a93a 6450	bhs.s	BranchTo2_JmpTo26_MarkObjGone
0002a93c 0668002a0034	addi.w	#$2A,objoff_34(a0)
0002a942 11680034001e	move.b	objoff_34(a0),anim_frame_duration(a0)
0002a948 601c	bra.s	loc_2A966
0002a94a 43f8b000	lea	(MainCharacter).w,a1
0002a94e 61000040	bsr.w	loc_2A990
0002a952 43f8b040	lea	(Sidekick).w,a1
0002a956 61000038	bsr.w	loc_2A990
0002a95a 5328001e	subq.b	#1,anim_frame_duration(a0)
0002a95e 6a2c	bpl.s	BranchTo2_JmpTo26_MarkObjGone
0002a960 117c0000001e	move.b	#0,anim_frame_duration(a0)
0002a966 5228001b	addq.b	#1,anim_frame(a0)
0002a96a 0c280006001b	cmpi.b	#6,anim_frame(a0)
0002a970 6506	blo.s	+
0002a972 117c0000001b	move.b	#0,anim_frame(a0)
0002a978 7000	moveq	#0,d0
0002a97a 082800000028	btst	#0,subtype(a0)
0002a980 6702	beq.s	+
0002a982 7005	moveq	#5,d0
0002a984 d028001b	add.b	anim_frame(a0),d0
0002a988 1140001a	move.b	d0,mapping_frame(a0)
0002a990 0c2900040024	cmpi.b	#4,routine(a1)
0002a996 6478	bhs.s	return_2AA10
0002a998 4a29002a	tst.b	obj_control(a1)
0002a99c 6672	bne.s	return_2AA10
0002a99e 30290008	move.w	x_pos(a1),d0
0002a9a2 90680008	sub.w	x_pos(a0),d0
0002a9a6 06400040	addi.w	#$40,d0
0002a9aa 0c400080	cmpi.w	#$80,d0
0002a9ae 6460	bhs.s	return_2AA10
0002a9b0 7200	moveq	#0,d1
0002a9b2 1238fe74	move.b	(Oscillating_Data+$14).w,d1
0002a9b6 d269000c	add.w	y_pos(a1),d1
0002a9ba 06410060	addi.w	#$60,d1
0002a9be 9268000c	sub.w	y_pos(a0),d1
0002a9c2 654c	bcs.s	return_2AA10
0002a9c4 0c410090	cmpi.w	#$90,d1
0002a9c8 6446	bhs.s	return_2AA10
0002a9ca 04410060	subi.w	#$60,d1
0002a9ce 6504	bcs.s	+
0002a9d0 4641	not.w	d1
0002a9d2 d241	add.w	d1,d1
0002a9d4 06410060	addi.w	#$60,d1
0002a9d8 4441	neg.w	d1
0002a9da e841	asr.w	#4,d1
0002a9dc d369000c	add.w	d1,y_pos(a1)
0002a9e0 08e900010022	bset	#status.player.in_air,status(a1)
0002a9e6 337c00000012	move.w	#0,y_vel(a1)
0002a9ec 337c00010014	move.w	#1,inertia(a1)
0002a9f2 4a290027	tst.b	flip_angle(a1)
0002a9f6 6618	bne.s	return_2AA10
0002a9f8 137c00010027	move.b	#1,flip_angle(a1)
0002a9fe 137c0000001c	move.b	#AniIDSonAni_Walk,anim(a1)
0002aa04 137c007f002c	move.b	#$7F,flips_remaining(a1)
0002aa0a 137c0008002d	move.b	#8,flip_speed(a1)
0002aa10 4e75	rts	
0002ab76 4e71	nop	
0002ab78 4ef9000163d2	jmp	(extractJmpToName("JmpTo26_MarkObjGone")).l
0002ab7e 4ef900016d6e	jmp	(extractJmpToName("JmpTo48_Adjust2PArtPointer")).l
0002ab84 7000	moveq	#0,d0
0002ab86 10280024	move.b	routine(a0),d0
0002ab8a 323b0042	move.w	Obj85_Index(pc,d0.w),d1
0002ab8e 4ebb103e	jsr	Obj85_Index(pc,d1.w)
0002ab92 303c0200	move.w	#object_display_list_size*4,d0
0002ab96 4a78ffd8	tst.w	(Two_player_mode).w
0002ab9a 6704	beq.s	+
0002aba0 32280008	move.w	x_pos(a0),d1
0002aba4 0241ff80	andi.w	#$FF80,d1
0002aba8 9278f7da	sub.w	(Camera_X_pos_coarse).w,d1
0002abac 0c410280	cmpi.w	#$280,d1
0002abb0 62000006	bhi.w	+
0002abb8 45f8fc00	lea	(Object_Respawn_Table).w,a2
0002abbc 7000	moveq	#0,d0
0002abbe 10280023	move.b	respawn_index(a0),d0
0002abc2 6706	beq.s	BranchTo_JmpTo43_DeleteObject
0002abc4 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
0002abd4 54280024	addq.b	#2,routine(a0)
0002abd8 217c0002b07e0004	move.l	#Obj85_MapUnc_2B07E,mappings(a0)
0002abe0 317c04220002	move.w	#make_art_tile(ArtTile_ArtNem_CNZVertPlunger,0,0),art_tile(a0)
0002abe6 4a280028	tst.b	subtype(a0)
0002abea 670e	beq.s	+
0002abec 217c0002b0ec0004	move.l	#Obj85_MapUnc_2B0EC,mappings(a0)
0002abf4 317c04020002	move.w	#make_art_tile(ArtTile_ArtNem_CNZDiagPlunger,0,0),art_tile(a0)
0002abfe 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002ac04 08e800060001	bset	#render_flags.multi_sprite,render_flags(a0)
0002ac0a 117c0001000b	move.b	#1,mainspr_mapframe(a0)
0002ac10 4a280028	tst.b	subtype(a0)
0002ac14 673e	beq.s	Obj85_Init_Up
0002ac16 54280024	addq.b	#2,routine(a0)
0002ac1a 117c0020000e	move.b	#$20,mainspr_width(a0)
0002ac20 117c00180019	move.b	#$18,width_pixels(a0)
0002ac26 31680008002e	move.w	x_pos(a0),objoff_2E(a0)
0002ac2c 3168000c0034	move.w	y_pos(a0),objoff_34(a0)
0002ac32 34280008	move.w	x_pos(a0),d2
0002ac36 3628000c	move.w	y_pos(a0),d3
0002ac3a 06430000	addi.w	#0,d3
0002ac3e 117c0001000f	move.b	#1,mainspr_childsprites(a0)
0002ac44 45e80010	lea	subspr_data(a0),a2
0002ac48 34c2	move.w	d2,(a2)+
0002ac4a 34c3	move.w	d3,(a2)+
0002ac4c 34fc0002	move.w	#2,(a2)+
0002ac50 60000204	bra.w	Obj85_Diagonal
0002ac54 117c0018000e	move.b	#$18,mainspr_width(a0)
0002ac5a 117c00180019	move.b	#$18,width_pixels(a0)
0002ac60 3168000c0034	move.w	y_pos(a0),objoff_34(a0)
0002ac66 34280008	move.w	x_pos(a0),d2
0002ac6a 3628000c	move.w	y_pos(a0),d3
0002ac6e 06430020	addi.w	#$20,d3
0002ac72 117c0001000f	move.b	#1,mainspr_childsprites(a0)
0002ac78 45e80010	lea	subspr_data(a0),a2
0002ac7c 34c2	move.w	d2,(a2)+
0002ac7e 34c3	move.w	d3,(a2)+
0002ac80 34fc0002	move.w	#2,(a2)+
0002ac84 117c0000003a	move.b	#0,objoff_3A(a0)
0002ac8a 30280034	move.w	objoff_34(a0),d0
0002ac8e d0680038	add.w	objoff_38(a0),d0
0002ac92 3140000c	move.w	d0,y_pos(a0)
0002ac96 117c00020015	move.b	#2,sub2_mapframe(a0)
0002ac9c 0c6800100038	cmpi.w	#$10,objoff_38(a0)
0002aca2 6506	blo.s	+
0002aca4 117c00030015	move.b	#3,sub2_mapframe(a0)
0002acaa 323c0023	move.w	#$23,d1
0002acae 343c0020	move.w	#$20,d2
0002acb2 363c001d	move.w	#$1D,d3
0002acb6 38280008	move.w	x_pos(a0),d4
0002acba 45e80036	lea	objoff_36(a0),a2
0002acbe 43f8b000	lea	(MainCharacter).w,a1
0002acc2 3a38f602	move.w	(Ctrl_1_Logical).w,d5
0002acc6 7c03	moveq	#p1_standing_bit,d6
0002acc8 48e77800	movem.l	d1-d4,-(sp)
0002accc 6158	bsr.s	loc_2AD26
0002acce 4cdf001e	movem.l	(sp)+,d1-d4
0002acd2 43f8b040	lea	(Sidekick).w,a1
0002acd6 524a	addq.w	#1,a2
0002acd8 3a38f606	move.w	(Ctrl_2).w,d5
0002acdc 7c04	moveq	#p2_standing_bit,d6
0002acde 6146	bsr.s	loc_2AD26
0002ace0 4a680036	tst.w	objoff_36(a0)
0002ace4 672e	beq.s	loc_2AD14
0002ace6 4a680038	tst.w	objoff_38(a0)
0002acea 6738	beq.s	return_2AD24
0002acec 7000	moveq	#0,d0
0002acee 0c2800010036	cmpi.b	#1,objoff_36(a0)
0002acf4 6604	bne.s	+
0002acf6 8078f602	or.w	(Ctrl_1_Logical).w,d0
0002acfa 0c2800010037	cmpi.b	#1,objoff_37(a0)
0002ad00 6604	bne.s	+
0002ad02 8078f606	or.w	(Ctrl_2).w,d0
0002ad06 02407000	andi.w	#(button_B_mask|button_C_mask|button_A_mask)<<8,d0
0002ad0a 6618	bne.s	return_2AD24
0002ad0c 317c02020036	move.w	#$202,objoff_36(a0)
0002ad12 4e75	rts	
0002ad14 117c0001000b	move.b	#1,mainspr_mapframe(a0)
0002ad1a 59680038	subq.w	#4,objoff_38(a0)
0002ad1e 6404	bcc.s	return_2AD24
0002ad20 42680038	clr.w	objoff_38(a0)
0002ad24 4e75	rts	
0002ad26 1012	move.b	(a2),d0
0002ad28 6650	bne.s	loc_2AD7A
0002ad2a 4a78fe08	tst.w	(Debug_placement_mode).w
0002ad2e 6648	bne.s	return_2AD78
0002ad30 4a690012	tst.w	y_vel(a1)
0002ad34 6b42	bmi.s	return_2AD78
0002ad3a 0d280022	btst	d6,status(a0)
0002ad3e 6738	beq.s	return_2AD78
0002ad40 137c0081002a	move.b	#$81,obj_control(a1)
0002ad46 336800080008	move.w	x_pos(a0),x_pos(a1)
0002ad4c 337c00000010	move.w	#0,x_vel(a1)
0002ad52 337c00000012	move.w	#0,y_vel(a1)
0002ad58 337c00000014	move.w	#0,inertia(a1)
0002ad5e 08e900020022	bset	#status.player.rolling,status(a1)
0002ad64 137c000e0016	move.b	#$E,y_radius(a1)
0002ad6a 137c00070017	move.b	#7,x_radius(a1)
0002ad70 137c0002001c	move.b	#AniIDSonAni_Roll,anim(a1)
0002ad76 5212	addq.b	#1,(a2)
0002ad78 4e75	rts	
0002ad7a 0c2900040024	cmpi.b	#4,routine(a1)
0002ad80 64f6	bhs.s	return_2AD78
0002ad82 5300	subq.b	#1,d0
0002ad84 66000086	bne.w	loc_2AE0C
0002ad88 4a290001	tst.b	render_flags(a1)
0002ad8c 6b22	bmi.s	loc_2ADB0
0002ad8e 0da80022	bclr	d6,status(a0)
0002ad92 08e900010022	bset	#status.player.in_air,status(a1)
0002ad98 08a900030022	bclr	#status.player.on_object,status(a1)
0002ad9e 137c00020024	move.b	#2,routine(a1)
0002ada4 137c0000002a	move.b	#0,obj_control(a1)
0002adaa 14bc0000	move.b	#0,(a2)
0002adae 4e75	rts	
0002adb0 02457000	andi.w	#(button_B_mask|button_C_mask|button_A_mask)<<8,d5
0002adb4 6748	beq.s	loc_2ADFE
0002adb6 4a28003a	tst.b	objoff_3A(a0)
0002adba 6642	bne.s	loc_2ADFE
0002adbc 117c0001003a	move.b	#1,objoff_3A(a0)
0002adc2 53280032	subq.b	#1,objoff_32(a0)
0002adc6 6a12	bpl.s	loc_2ADDA
0002adc8 117c00030032	move.b	#3,objoff_32(a0)
0002adce 0c6800200038	cmpi.w	#$20,objoff_38(a0)
0002add4 6704	beq.s	loc_2ADDA
0002add6 52680038	addq.w	#1,objoff_38(a0)
0002adda 53280033	subq.b	#1,objoff_33(a0)
0002adde 6a18	bpl.s	loc_2ADF8
0002ade0 30280038	move.w	objoff_38(a0),d0
0002ade4 04400020	subi.w	#$20,d0
0002ade8 4440	neg.w	d0
0002adea e248	lsr.w	#1,d0
0002adec 11400033	move.b	d0,objoff_33(a0)
0002adf0 08680002000b	bchg	#2,mainspr_mapframe(a0)
0002adf6 6006	bra.s	loc_2ADFE
0002adf8 117c0001000b	move.b	#1,mainspr_mapframe(a0)
0002adfe 3028000c	move.w	y_pos(a0),d0
0002ae02 0440002e	subi.w	#$2E,d0
0002ae06 3340000c	move.w	d0,y_pos(a1)
0002ae0a 4e75	rts	
0002ae0c 14bc0000	move.b	#0,(a2)
0002ae10 0da80022	bclr	d6,status(a0)
0002ae14 6700ff14	beq.w	loc_2AD2A
0002ae18 30280038	move.w	objoff_38(a0),d0
0002ae1c 06400010	addi.w	#$10,d0
0002ae20 ef48	lsl.w	#7,d0
0002ae22 4440	neg.w	d0
0002ae24 33400012	move.w	d0,y_vel(a1)
0002ae28 337c00000010	move.w	#0,x_vel(a1)
0002ae2e 337c08000014	move.w	#$800,inertia(a1)
0002ae34 08e900010022	bset	#status.player.in_air,status(a1)
0002ae3a 08a900030022	bclr	#status.player.on_object,status(a1)
0002ae40 137c00020024	move.b	#2,routine(a1)
0002ae46 137c0000002a	move.b	#0,obj_control(a1)
0002ae4c 303c00e2	move.w	#SndID_CNZLaunch,d0
0002ae50 4ef900001370	jmp	(PlaySound).l
0002ae56 117c0000003a	move.b	#0,objoff_3A(a0)
0002ae5c 32280038	move.w	objoff_38(a0),d1
0002ae60 e249	lsr.w	#1,d1
0002ae62 3028002e	move.w	objoff_2E(a0),d0
0002ae66 9041	sub.w	d1,d0
0002ae68 31400008	move.w	d0,x_pos(a0)
0002ae6c 30280034	move.w	objoff_34(a0),d0
0002ae70 d041	add.w	d1,d0
0002ae72 3140000c	move.w	d0,y_pos(a0)
0002ae76 117c00020015	move.b	#2,sub2_mapframe(a0)
0002ae7c 0c6800100038	cmpi.w	#$10,objoff_38(a0)
0002ae82 6506	blo.s	+
0002ae84 117c00030015	move.b	#3,sub2_mapframe(a0)
0002ae8a 323c0023	move.w	#$23,d1
0002ae8e 343c0008	move.w	#8,d2
0002ae92 363c0005	move.w	#5,d3
0002ae96 38280008	move.w	x_pos(a0),d4
0002ae9a 45e80036	lea	objoff_36(a0),a2
0002ae9e 43f8b000	lea	(MainCharacter).w,a1
0002aea2 3a38f602	move.w	(Ctrl_1_Logical).w,d5
0002aea6 7c03	moveq	#p1_standing_bit,d6
0002aea8 48e77800	movem.l	d1-d4,-(sp)
0002aeac 6158	bsr.s	loc_2AF06
0002aeae 4cdf001e	movem.l	(sp)+,d1-d4
0002aeb2 43f8b040	lea	(Sidekick).w,a1
0002aeb6 524a	addq.w	#1,a2
0002aeb8 3a38f606	move.w	(Ctrl_2).w,d5
0002aebc 7c04	moveq	#p2_standing_bit,d6
0002aebe 6146	bsr.s	loc_2AF06
0002aec0 4a680036	tst.w	objoff_36(a0)
0002aec4 672e	beq.s	loc_2AEF4
0002aec6 4a680038	tst.w	objoff_38(a0)
0002aeca 6738	beq.s	return_2AF04
0002aecc 7000	moveq	#0,d0
0002aece 0c2800010036	cmpi.b	#1,objoff_36(a0)
0002aed4 6604	bne.s	+
0002aed6 8078f602	or.w	(Ctrl_1_Logical).w,d0
0002aeda 0c2800010037	cmpi.b	#1,objoff_37(a0)
0002aee0 6604	bne.s	+
0002aee2 8078f606	or.w	(Ctrl_2).w,d0
0002aee6 02407000	andi.w	#(button_B_mask|button_C_mask|button_A_mask)<<8,d0
0002aeea 6618	bne.s	return_2AF04
0002aeec 317c02020036	move.w	#$202,objoff_36(a0)
0002aef2 4e75	rts	
0002aef4 117c0001000b	move.b	#1,mainspr_mapframe(a0)
0002aefa 59680038	subq.w	#4,objoff_38(a0)
0002aefe 6404	bcc.s	return_2AF04
0002af00 42680038	clr.w	objoff_38(a0)
0002af04 4e75	rts	
0002af06 1012	move.b	(a2),d0
0002af08 6670	bne.s	loc_2AF7A
0002af0a 4a78fe08	tst.w	(Debug_placement_mode).w
0002af0e 6668	bne.s	return_2AF78
0002af10 4a690012	tst.w	y_vel(a1)
0002af14 6b62	bmi.s	return_2AF78
0002af1a 0d280022	btst	d6,status(a0)
0002af1e 660e	bne.s	loc_2AF2E
0002af20 1006	move.b	d6,d0
0002af22 5400	addq.b	#pushing_bit_delta,d0
0002af24 01280022	btst	d0,status(a0)
0002af28 674e	beq.s	return_2AF78
0002af2a 0de80022	bset	d6,status(a0)
0002af2e 137c0081002a	move.b	#$81,obj_control(a1)
0002af34 336800080008	move.w	x_pos(a0),x_pos(a1)
0002af3a 066900130008	addi.w	#$13,x_pos(a1)
0002af40 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002af46 04690013000c	subi.w	#$13,y_pos(a1)
0002af4c 337c00000010	move.w	#0,x_vel(a1)
0002af52 337c00000012	move.w	#0,y_vel(a1)
0002af58 337c00000014	move.w	#0,inertia(a1)
0002af5e 08e900020022	bset	#status.player.rolling,status(a1)
0002af64 137c000e0016	move.b	#$E,y_radius(a1)
0002af6a 137c00070017	move.b	#7,x_radius(a1)
0002af70 137c0002001c	move.b	#AniIDSonAni_Roll,anim(a1)
0002af76 5212	addq.b	#1,(a2)
0002af78 4e75	rts	
0002af7a 0c2900040024	cmpi.b	#4,routine(a1)
0002af80 64f6	bhs.s	return_2AF78
0002af82 5300	subq.b	#1,d0
0002af84 66000092	bne.w	loc_2B018
0002af88 4a290001	tst.b	render_flags(a1)
0002af8c 6b22	bmi.s	loc_2AFB0
0002af8e 0da80022	bclr	d6,status(a0)
0002af92 08e900010022	bset	#status.player.in_air,status(a1)
0002af98 08a900030022	bclr	#status.player.on_object,status(a1)
0002af9e 137c00020024	move.b	#2,routine(a1)
0002afa4 137c0000002a	move.b	#0,obj_control(a1)
0002afaa 14bc0000	move.b	#0,(a2)
0002afae 4e75	rts	
0002afb0 02457000	andi.w	#(button_B_mask|button_C_mask|button_A_mask)<<8,d5
0002afb4 6748	beq.s	loc_2AFFE
0002afb6 4a28003a	tst.b	objoff_3A(a0)
0002afba 6642	bne.s	loc_2AFFE
0002afbc 117c0001003a	move.b	#1,objoff_3A(a0)
0002afc2 53280032	subq.b	#1,objoff_32(a0)
0002afc6 6a12	bpl.s	loc_2AFDA
0002afc8 117c00030032	move.b	#3,objoff_32(a0)
0002afce 0c68001c0038	cmpi.w	#$1C,objoff_38(a0)
0002afd4 6704	beq.s	loc_2AFDA
0002afd6 52680038	addq.w	#1,objoff_38(a0)
0002afda 53280033	subq.b	#1,objoff_33(a0)
0002afde 6a18	bpl.s	loc_2AFF8
0002afe0 30280038	move.w	objoff_38(a0),d0
0002afe4 0440001c	subi.w	#$1C,d0
0002afe8 4440	neg.w	d0
0002afea e248	lsr.w	#1,d0
0002afec 11400033	move.b	d0,objoff_33(a0)
0002aff0 08680002000b	bchg	#2,mainspr_mapframe(a0)
0002aff6 6006	bra.s	loc_2AFFE
0002aff8 117c0001000b	move.b	#1,mainspr_mapframe(a0)
0002affe 30280008	move.w	x_pos(a0),d0
0002b002 06400013	addi.w	#$13,d0
0002b006 33400008	move.w	d0,x_pos(a1)
0002b00a 3028000c	move.w	y_pos(a0),d0
0002b00e 04400013	subi.w	#$13,d0
0002b012 3340000c	move.w	d0,y_pos(a1)
0002b016 4e75	rts	
0002b018 14bc0000	move.b	#0,(a2)
0002b01c 0da80022	bclr	d6,status(a0)
0002b020 6700ff56	beq.w	return_2AF78
0002b024 30280038	move.w	objoff_38(a0),d0
0002b02c ef48	lsl.w	#7,d0
0002b02e 33400010	move.w	d0,x_vel(a1)
0002b032 4440	neg.w	d0
0002b034 33400012	move.w	d0,y_vel(a1)
0002b038 337c08000014	move.w	#$800,inertia(a1)
0002b03e 08e900010022	bset	#status.player.in_air,status(a1)
0002b044 08a900030022	bclr	#status.player.on_object,status(a1)
0002b04a 4a280028	tst.b	subtype(a0)
0002b04e 6a18	bpl.s	loc_2B068
0002b050 4440	neg.w	d0
0002b052 33400014	move.w	d0,inertia(a1)
0002b056 08a900000022	bclr	#status.player.x_flip,status(a1)
0002b05c 08a900010022	bclr	#status.player.in_air,status(a1)
0002b062 137c00e00026	move.b	#-$20,angle(a1)
0002b068 137c00020024	move.b	#2,routine(a1)
0002b06e 137c0000002a	move.b	#0,obj_control(a1)
0002b074 303c00e2	move.w	#SndID_CNZLaunch,d0
0002b078 4ef900001370	jmp	(PlaySound).l
0002b128 4ef900016530	jmp	(extractJmpToName("JmpTo4_DisplaySprite3")).l
0002b12e 4ef9000164e6	jmp	(extractJmpToName("JmpTo43_DeleteObject")).l
0002b134 4ef900016d6e	jmp	(extractJmpToName("JmpTo49_Adjust2PArtPointer")).l
0002b13a 4ef90001978e	jmp	(extractJmpToName("JmpTo5_SolidObject_Always_SingleCharacter")).l
0002b140 7000	moveq	#0,d0
0002b142 10280024	move.b	routine(a0),d0
0002b146 323b000a	move.w	Obj86_Index(pc,d0.w),d1
0002b14a 4ebb1006	jsr	Obj86_Index(pc,d1.w)
0002b158 54280024	addq.b	#2,routine(a0)
0002b15c 217c0002b45a0004	move.l	#Obj86_MapUnc_2B45A,mappings(a0)
0002b164 317c43b20002	move.w	#make_art_tile(ArtTile_ArtNem_CNZFlipper,2,0),art_tile(a0)
0002b16e 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0002b174 117c00180019	move.b	#$18,width_pixels(a0)
0002b17a 117c00040018	move.b	#4,priority(a0)
0002b180 4a280028	tst.b	subtype(a0)
0002b184 670e	beq.s	Obj86_UpwardsType
0002b186 54280024	addq.b	#2,routine(a0)
0002b18a 117c0002001c	move.b	#2,anim(a0)
0002b190 60000180	bra.w	Obj86_HorizontalType
0002b194 4a78fe08	tst.w	(Debug_placement_mode).w
0002b198 666e	bne.s	return_2B208
0002b19a 45f90002b3c6	lea	(byte_2B3C6).l,a2
0002b1a0 1028001a	move.b	mapping_frame(a0),d0
0002b1a4 6710	beq.s	loc_2B1B6
0002b1a6 45f90002b3ea	lea	(byte_2B3EA).l,a2
0002b1ac 5300	subq.b	#1,d0
0002b1ae 6706	beq.s	loc_2B1B6
0002b1b0 45f90002b40e	lea	(byte_2B40E).l,a2
0002b1b6 323c0023	move.w	#$23,d1
0002b1ba 343c0006	move.w	#6,d2
0002b1be 38280008	move.w	x_pos(a0),d4
0002b1c6 47e80036	lea	objoff_36(a0),a3
0002b1ca 43f8b000	lea	(MainCharacter).w,a1
0002b1ce 3a38f602	move.w	(Ctrl_1_Logical).w,d5
0002b1d2 7c03	moveq	#p1_standing_bit,d6
0002b1d4 6134	bsr.s	loc_2B20A
0002b1d6 524b	addq.w	#1,a3
0002b1d8 43f8b040	lea	(Sidekick).w,a1
0002b1dc 3a38f606	move.w	(Ctrl_2).w,d5
0002b1e0 7c04	moveq	#p2_standing_bit,d6
0002b1e2 6126	bsr.s	loc_2B20A
0002b1e4 4a280038	tst.b	objoff_38(a0)
0002b1e8 6714	beq.s	loc_2B1FE
0002b1ea 42280038	clr.b	objoff_38(a0)
0002b1ee 610000a0	bsr.w	loc_2B290
0002b1f2 534b	subq.w	#1,a3
0002b1f4 43f8b000	lea	(MainCharacter).w,a1
0002b1f8 7c03	moveq	#p1_standing_bit,d6
0002b1fa 61000094	bsr.w	loc_2B290
0002b1fe 43f90002b432	lea	(Ani_obj86).l,a1
0002b208 4e75	rts	
0002b20a 1013	move.b	(a3),d0
0002b20c 662e	bne.s	loc_2B23C
0002b20e 0d280022	btst	d6,status(a0)
0002b212 67f4	beq.s	return_2B208
0002b214 137c0001002a	move.b	#1,obj_control(a1)
0002b21a 137c000e0016	move.b	#$E,y_radius(a1)
0002b220 137c00070017	move.b	#7,x_radius(a1)
0002b226 137c0002001c	move.b	#AniIDSonAni_Roll,anim(a1)
0002b22c 08e900020022	bset	#status.player.rolling,status(a1)
0002b232 6604	bne.s	loc_2B238
0002b234 5a69000c	addq.w	#5,y_pos(a1)
0002b238 5213	addq.b	#1,(a3)
0002b23a 4e75	rts	
0002b23c 02450070	andi.w	#button_B_mask|button_C_mask|button_A_mask,d5
0002b240 6646	bne.s	loc_2B288
0002b242 0d280022	btst	d6,status(a0)
0002b246 660c	bne.s	loc_2B254
0002b248 137c0000002a	move.b	#0,obj_control(a1)
0002b24e 16bc0000	move.b	#0,(a3)
0002b252 4e75	rts	
0002b254 7200	moveq	#0,d1
0002b256 1228001a	move.b	mapping_frame(a0),d1
0002b25a 5341	subq.w	#1,d1
0002b25c 08e900000022	bset	#status.player.x_flip,status(a1)
0002b262 082800000022	btst	#status.npc.x_flip,status(a0)
0002b268 6608	bne.s	loc_2B272
0002b26a 4441	neg.w	d1
0002b26c 08a900000022	bclr	#status.player.x_flip,status(a1)
0002b272 d3690008	add.w	d1,x_pos(a1)
0002b276 e149	lsl.w	#8,d1
0002b278 33410010	move.w	d1,x_vel(a1)
0002b27c 33410014	move.w	d1,inertia(a1)
0002b280 337c00000012	move.w	#0,y_vel(a1)
0002b286 4e75	rts	
0002b288 117c00010038	move.b	#1,objoff_38(a0)
0002b28e 4e75	rts	
0002b290 0da80022	bclr	d6,status(a0)
0002b294 6700ff72	beq.w	return_2B208
0002b298 30290008	move.w	x_pos(a1),d0
0002b29c 90680008	sub.w	x_pos(a0),d0
0002b2a0 082800000022	btst	#status.npc.x_flip,status(a0)
0002b2a6 6702	beq.s	loc_2B2AA
0002b2a8 4440	neg.w	d0
0002b2aa 06400023	addi.w	#$23,d0
0002b2ae 3400	move.w	d0,d2
0002b2b0 0c420040	cmpi.w	#$40,d2
0002b2b4 6504	blo.s	loc_2B2BA
0002b2b6 343c0040	move.w	#$40,d2
0002b2ba eb4a	lsl.w	#5,d2
0002b2bc 06420800	addi.w	#$800,d2
0002b2c0 4442	neg.w	d2
0002b2c2 e440	asr.w	#2,d0
0002b2c4 06400040	addi.w	#$40,d0
0002b2cc c1c2	muls.w	d2,d0
0002b2ce c3c2	muls.w	d2,d1
0002b2d0 e080	asr.l	#8,d0
0002b2d2 e081	asr.l	#8,d1
0002b2d4 33400012	move.w	d0,y_vel(a1)
0002b2d8 082800000022	btst	#status.npc.x_flip,status(a0)
0002b2de 6702	beq.s	loc_2B2E2
0002b2e0 4441	neg.w	d1
0002b2e2 33410010	move.w	d1,x_vel(a1)
0002b2e6 08e900010022	bset	#status.player.in_air,status(a1)
0002b2ec 08a900030022	bclr	#status.player.on_object,status(a1)
0002b2f2 137c00020024	move.b	#2,routine(a1)
0002b2f8 137c0000002a	move.b	#0,obj_control(a1)
0002b2fe 117c0001001c	move.b	#1,anim(a0)
0002b304 16bc0000	move.b	#0,(a3)
0002b308 303c00e3	move.w	#SndID_Flipper,d0
0002b30c 4ef900001370	jmp	(PlaySound).l
0002b312 323c0013	move.w	#$13,d1
0002b316 343c0018	move.w	#$18,d2
0002b31a 363c0019	move.w	#$19,d3
0002b31e 38280008	move.w	x_pos(a0),d4
0002b322 43f8b000	lea	(MainCharacter).w,a1
0002b326 7c03	moveq	#p1_standing_bit,d6
0002b328 48e77800	movem.l	d1-d4,-(sp)
0002b330 082800050022	btst	#p1_pushing_bit,status(a0)
0002b336 6702	beq.s	loc_2B33A
0002b338 6122	bsr.s	loc_2B35C
0002b33a 4cdf001e	movem.l	(sp)+,d1-d4
0002b33e 43f8b040	lea	(Sidekick).w,a1
0002b342 7c04	moveq	#p2_standing_bit,d6
0002b348 082800060022	btst	#p2_pushing_bit,status(a0)
0002b34e 6702	beq.s	loc_2B352
0002b350 610a	bsr.s	loc_2B35C
0002b352 43f90002b432	lea	(Ani_obj86).l,a1
0002b35c 317c0300001c	move.w	#(3<<8)|(0<<0),anim(a0)
0002b362 337cf0000010	move.w	#-$1000,x_vel(a1)
0002b368 50690008	addq.w	#8,x_pos(a1)
0002b36c 08e900000022	bset	#status.player.x_flip,status(a1)
0002b372 30280008	move.w	x_pos(a0),d0
0002b376 90690008	sub.w	x_pos(a1),d0
0002b37a 6416	bcc.s	loc_2B392
0002b37c 08a900000022	bclr	#status.player.x_flip,status(a1)
0002b382 046900100008	subi.w	#$10,x_pos(a1)
0002b388 44690010	neg.w	x_vel(a1)
0002b38c 317c0400001c	move.w	#(4<<8)|(0<<0),anim(a0)
0002b392 337c000f002e	move.w	#$F,move_lock(a1)
0002b398 336900100014	move.w	x_vel(a1),inertia(a1)
0002b39e 137c000e0016	move.b	#$E,y_radius(a1)
0002b3a4 137c00070017	move.b	#7,x_radius(a1)
0002b3aa 137c0002001c	move.b	#AniIDSonAni_Roll,anim(a1)
0002b3b0 08e900020022	bset	#status.player.rolling,status(a1)
0002b3b6 6604	bne.s	loc_2B3BC
0002b3b8 5a69000c	addq.w	#5,y_pos(a1)
0002b3bc 303c00e3	move.w	#SndID_Flipper,d0
0002b3c0 4ef900001370	jmp	(PlaySound).l
0002b502 4e71	nop	
0002b504 4ef9000163d2	jmp	(extractJmpToName("JmpTo27_MarkObjGone")).l
0002b50a 4ef900016544	jmp	(extractJmpToName("JmpTo9_AnimateSprite")).l
0002b510 4ef900016d6e	jmp	(extractJmpToName("JmpTo50_Adjust2PArtPointer")).l
0002b516 4ef9000033b6	jmp	(extractJmpToName("JmpTo11_CalcSine")).l
0002b51c 4ef90001978e	jmp	(extractJmpToName("JmpTo6_SolidObject_Always_SingleCharacter")).l
0002b522 4ef9000197d0	jmp	(extractJmpToName("JmpTo2_SlopedSolid")).l
0002b528 7000	moveq	#0,d0
0002b52a 10280024	move.b	routine(a0),d0
0002b52e 323b0006	move.w	ObjD2_Index(pc,d0.w),d1
0002b532 4efb1002	jmp	ObjD2_Index(pc,d1.w)
0002b53a 54280024	addq.b	#2,routine(a0)
0002b53e 217c0002b6940004	move.l	#ObjD2_MapUnc_2B694,mappings(a0)
0002b546 317c437c0002	move.w	#make_art_tile(ArtTile_ArtNem_CNZSnake,2,0),art_tile(a0)
0002b550 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0002b556 117c00080019	move.b	#8,width_pixels(a0)
0002b55c 117c00040018	move.b	#4,priority(a0)
0002b562 316800080030	move.w	x_pos(a0),objoff_30(a0)
0002b568 3168000c0032	move.w	y_pos(a0),objoff_32(a0)
0002b56e 7000	moveq	#0,d0
0002b570 10280028	move.b	subtype(a0),d0
0002b574 e948	lsl.w	#4,d0
0002b576 31400038	move.w	d0,objoff_38(a0)
0002b57a 61000090	bsr.w	loc_2B60C
0002b57e 4a680038	tst.w	objoff_38(a0)
0002b582 6708	beq.s	+
0002b584 53680038	subq.w	#1,objoff_38(a0)
0002b58c 5368003a	subq.w	#1,objoff_3A(a0)
0002b590 6a5a	bpl.s	loc_2B5EC
0002b592 317c000f003a	move.w	#$F,objoff_3A(a0)
0002b598 5228001a	addq.b	#1,mapping_frame(a0)
0002b59c 0228000f001a	andi.b	#$F,mapping_frame(a0)
0002b5a2 6646	bne.s	loc_2B5EA
0002b5a4 7000	moveq	#0,d0
0002b5a6 10280028	move.b	subtype(a0),d0
0002b5aa e948	lsl.w	#4,d0
0002b5ac 31400038	move.w	d0,objoff_38(a0)
0002b5b0 10280022	move.b	status(a0),d0
0002b5b4 02000018	andi.b	#standing_mask,d0
0002b5b8 6728	beq.s	loc_2B5E2
0002b5ba 08a800030022	bclr	#p1_standing_bit,status(a0)
0002b5c0 670c	beq.s	+
0002b5c2 08b80003b022	bclr	#status.player.on_object,(MainCharacter+status).w
0002b5c8 08f80001b022	bset	#status.player.in_air,(MainCharacter+status).w
0002b5ce 08a800040022	bclr	#p2_standing_bit,status(a0)
0002b5d4 670c	beq.s	loc_2B5E2
0002b5d6 08b80003b062	bclr	#status.player.on_object,(Sidekick+status).w
0002b5dc 08f80001b062	bset	#status.player.in_air,(Sidekick+status).w
0002b5e2 316800300008	move.w	objoff_30(a0),x_pos(a0)
0002b5e8 6022	bra.s	loc_2B60C
0002b5ea 6120	bsr.s	loc_2B60C
0002b5ec 32280034	move.w	objoff_34(a0),d1
0002b5f0 0641000b	addi.w	#$B,d1
0002b5f4 34280036	move.w	objoff_36(a0),d2
0002b5f8 3602	move.w	d2,d3
0002b5fa 5243	addq.w	#1,d3
0002b5fc 38280008	move.w	x_pos(a0),d4
0002b604 30280030	move.w	objoff_30(a0),d0
0002b60c 7000	moveq	#0,d0
0002b60e 1028001a	move.b	mapping_frame(a0),d0
0002b612 d040	add.w	d0,d0
0002b614 d040	add.w	d0,d0
0002b616 43fb003c	lea	byte_2B654(pc,d0.w),a1
0002b61a 1019	move.b	(a1)+,d0
0002b61c 4880	ext.w	d0
0002b61e 082800000022	btst	#status.npc.x_flip,status(a0)
0002b624 6702	beq.s	+
0002b626 4440	neg.w	d0
0002b628 d0680030	add.w	objoff_30(a0),d0
0002b62c 31400008	move.w	d0,x_pos(a0)
0002b630 1019	move.b	(a1)+,d0
0002b632 4880	ext.w	d0
0002b634 d0680032	add.w	objoff_32(a0),d0
0002b638 3140000c	move.w	d0,y_pos(a0)
0002b63c 7200	moveq	#0,d1
0002b63e 7400	moveq	#0,d2
0002b640 7600	moveq	#0,d3
0002b642 1219	move.b	(a1)+,d1
0002b644 1419	move.b	(a1)+,d2
0002b646 31410034	move.w	d1,objoff_34(a0)
0002b64a 11410019	move.b	d1,width_pixels(a0)
0002b64e 31420036	move.w	d2,objoff_36(a0)
0002b652 4e75	rts	
0002b832 4e71	nop	
0002b834 4ef90001643e	jmp	(extractJmpToName("JmpTo6_MarkObjGone3")).l
0002b83a 4ef900016d6e	jmp	(extractJmpToName("JmpTo51_Adjust2PArtPointer")).l
0002b840 4ef900019718	jmp	(extractJmpToName("JmpTo24_SolidObject")).l
0002b846 4ef90001640a	jmp	(extractJmpToName("JmpTo9_MarkObjGone2")).l
0002b84c 7200	moveq	#0,d1
0002b84e 32280038	move.w	casino_prize_machine_x_pos(a0),d1
0002b852 4841	swap	d1
0002b854 20280030	move.l	casino_prize_x_pos(a0),d0
0002b858 9081	sub.l	d1,d0
0002b85a e880	asr.l	#4,d0
0002b85c 91a80030	sub.l	d0,casino_prize_x_pos(a0)
0002b860 316800300008	move.w	casino_prize_x_pos(a0),x_pos(a0)
0002b866 7200	moveq	#0,d1
0002b868 3228003a	move.w	casino_prize_machine_y_pos(a0),d1
0002b86c 4841	swap	d1
0002b86e 20280034	move.l	casino_prize_y_pos(a0),d0
0002b872 9081	sub.l	d1,d0
0002b874 e880	asr.l	#4,d0
0002b876 91a80034	sub.l	d0,casino_prize_y_pos(a0)
0002b87a 31680034000c	move.w	casino_prize_y_pos(a0),y_pos(a0)
0002b880 5368003c	subq.w	#1,casino_prize_display_delay(a0)
0002b884 6600005a	bne.w	JmpTo28_DisplaySprite
0002b888 2268002a	movea.l	objoff_2A(a0),a1
0002b88c 5351	subq.w	#1,(a1)
0002b88e 0c780005ff92	cmpi.w	#5,(Bonus_Countdown_3).w
0002b894 650e	blo.s	+
0002b896 4278ff92	clr.w	(Bonus_Countdown_3).w
0002b89a 303c00a6	move.w	#SndID_HurtBySpikes,d0
0002b89e 4eb900001376	jsr	(PlaySound2).l
0002b8a4 4a28003f	tst.b	parent+1(a0)
0002b8a8 6716	beq.s	++
0002b8aa 4a78fed0	tst.w	(Ring_count_2P).w
0002b8ae 670a	beq.s	+
0002b8b0 5378fed0	subq.w	#1,(Ring_count_2P).w
0002b8b4 00380081fec9	ori.b	#$81,(Update_HUD_rings_2P).w
0002b8ba 4a78ffd8	tst.w	(Two_player_mode).w
0002b8be 6610	bne.s	BranchTo_JmpTo44_DeleteObject
0002b8c0 4a78fe20	tst.w	(Ring_count).w
0002b8c4 670a	beq.s	BranchTo_JmpTo44_DeleteObject
0002b8c6 5378fe20	subq.w	#1,(Ring_count).w
0002b8ca 00380081fe1d	ori.b	#$81,(Update_HUD_rings).w
0002b8e0 4ef9000164f4	jmp	(extractJmpToName("JmpTo28_DisplaySprite")).l
0002b8e6 4ef9000164e6	jmp	(extractJmpToName("JmpTo44_DeleteObject")).l
0002b8ec 7000	moveq	#0,d0
0002b8ee 10280024	move.b	routine(a0),d0
0002b8f2 323b0006	move.w	ObjD4_Index(pc,d0.w),d1
0002b8f6 4efb1002	jmp	ObjD4_Index(pc,d1.w)
0002b8fe 54280024	addq.b	#2,routine(a0)
0002b902 217c0002b9ca0004	move.l	#ObjD4_MapUnc_2B9CA,mappings(a0)
0002b90a 317c436c0002	move.w	#make_art_tile(ArtTile_ArtNem_BigMovingBlock,2,0),art_tile(a0)
0002b914 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002b91a 117c00200019	move.b	#$20,width_pixels(a0)
0002b920 117c00040018	move.b	#4,priority(a0)
0002b926 316800080030	move.w	x_pos(a0),objoff_30(a0)
0002b92c 3168000c0032	move.w	y_pos(a0),objoff_32(a0)
0002b932 317c8000000a	move.w	#$8000,x_sub(a0)
0002b938 317c8000000e	move.w	#$8000,y_sub(a0)
0002b93e 4a280028	tst.b	subtype(a0)
0002b942 6616	bne.s	loc_2B95A
0002b944 046800600008	subi.w	#$60,x_pos(a0)
0002b94a 082800000022	btst	#status.npc.x_flip,status(a0)
0002b950 671c	beq.s	ObjD4_Main
0002b952 066800c00008	addi.w	#$C0,x_pos(a0)
0002b958 6014	bra.s	ObjD4_Main
0002b95a 04680060000c	subi.w	#$60,y_pos(a0)
0002b960 082800010022	btst	#status.npc.y_flip,status(a0)
0002b966 6706	beq.s	ObjD4_Main
0002b968 066800c0000c	addi.w	#$C0,y_pos(a0)
0002b96e 3f280008	move.w	x_pos(a0),-(sp)
0002b972 7000	moveq	#0,d0
0002b974 10280028	move.b	subtype(a0),d0
0002b978 323b0024	move.w	ObjD4_Types(pc,d0.w),d1
0002b97c 4ebb1020	jsr	ObjD4_Types(pc,d1.w)
0002b984 323c002b	move.w	#$2B,d1
0002b988 343c0020	move.w	#$20,d2
0002b98c 363c0021	move.w	#$21,d3
0002b990 381f	move.w	(sp)+,d4
0002b996 30280030	move.w	objoff_30(a0),d0
0002b9a2 7204	moveq	#4,d1
0002b9a4 30280030	move.w	objoff_30(a0),d0
0002b9a8 b0680008	cmp.w	x_pos(a0),d0
0002b9ac 6202	bhi.s	+
0002b9ae 4441	neg.w	d1
0002b9b0 d3680010	add.w	d1,x_vel(a0)
0002b9b4 4e75	rts	
0002b9b6 7204	moveq	#4,d1
0002b9b8 30280032	move.w	objoff_32(a0),d0
0002b9bc b068000c	cmp.w	y_pos(a0),d0
0002b9c0 6202	bhi.s	+
0002b9c2 4441	neg.w	d1
0002b9c4 d3680012	add.w	d1,y_vel(a0)
0002b9c8 4e75	rts	
0002b9ee 4e71	nop	
0002b9f0 4ef900016d6e	jmp	(extractJmpToName("JmpTo52_Adjust2PArtPointer")).l
0002b9f6 4ef900019718	jmp	(extractJmpToName("JmpTo25_SolidObject")).l
0002b9fc 4ef90001640a	jmp	(extractJmpToName("JmpTo10_MarkObjGone2")).l
0002ba02 4ef9000163ac	jmp	(extractJmpToName("JmpTo17_ObjectMove")).l
0002ba08 7000	moveq	#0,d0
0002ba0a 10280024	move.b	routine(a0),d0
0002ba0e 323b0006	move.w	ObjD5_Index(pc,d0.w),d1
0002ba12 4efb1002	jmp	ObjD5_Index(pc,d1.w)
0002ba1a 54280024	addq.b	#2,routine(a0)
0002ba1e 217c0002bb400004	move.l	#ObjD5_MapUnc_2BB40,mappings(a0)
0002ba26 317c43840002	move.w	#make_art_tile(ArtTile_ArtNem_CNZElevator,2,0),art_tile(a0)
0002ba30 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002ba36 117c00100019	move.b	#$10,width_pixels(a0)
0002ba3c 117c00040018	move.b	#4,priority(a0)
0002ba42 3168000c0032	move.w	y_pos(a0),objoff_32(a0)
0002ba48 317c8000000e	move.w	#$8000,y_sub(a0)
0002ba4e 7000	moveq	#0,d0
0002ba50 10280028	move.b	subtype(a0),d0
0002ba54 e548	lsl.w	#2,d0
0002ba56 9168000c	sub.w	d0,y_pos(a0)
0002ba5a 082800000022	btst	#status.npc.x_flip,status(a0)
0002ba60 6706	beq.s	ObjD5_Main
0002ba62 d040	add.w	d0,d0
0002ba64 d168000c	add.w	d0,y_pos(a0)
0002ba6c 30280034	move.w	objoff_34(a0),d0
0002ba70 323b0022	move.w	off_2BA94(pc,d0.w),d1
0002ba74 4ebb101e	jsr	off_2BA94(pc,d1.w)
0002ba78 0c6800060034	cmpi.w	#6,objoff_34(a0)
0002ba7e 6410	bhs.s	+
0002ba80 323c0010	move.w	#$10,d1
0002ba84 363c0009	move.w	#9,d3
0002ba88 38280008	move.w	x_pos(a0),d4
0002ba9c 10280022	move.b	status(a0),d0
0002baa0 02400018	andi.w	#standing_mask,d0
0002baa4 670e	beq.s	+
0002baa6 303c00d6	move.w	#SndID_CNZElevator,d0
0002baaa 4eb900001370	jsr	(PlaySound).l
0002bab0 54680034	addq.w	#2,objoff_34(a0)
0002bab4 4e75	rts	
0002bab6 7208	moveq	#8,d1
0002bab8 30280032	move.w	objoff_32(a0),d0
0002babc b068000c	cmp.w	y_pos(a0),d0
0002bac0 6402	bhs.s	+
0002bac2 4441	neg.w	d1
0002bac4 d3680012	add.w	d1,y_vel(a0)
0002bac8 6622	bne.s	+
0002baca 54680034	addq.w	#2,objoff_34(a0)
0002bace 3140000c	move.w	d0,y_pos(a0)
0002bad2 7000	moveq	#0,d0
0002bad4 10280028	move.b	subtype(a0),d0
0002bad8 e548	lsl.w	#2,d0
0002bada 9168000c	sub.w	d0,y_pos(a0)
0002bade 082800000022	btst	#status.npc.x_flip,status(a0)
0002bae4 6606	bne.s	+
0002bae6 d040	add.w	d0,d0
0002bae8 d168000c	add.w	d0,y_pos(a0)
0002baec 4e75	rts	
0002baee 10280022	move.b	status(a0),d0
0002baf2 02400018	andi.w	#standing_mask,d0
0002baf6 660e	bne.s	+
0002baf8 303c00d6	move.w	#SndID_CNZElevator,d0
0002bafc 4eb900001370	jsr	(PlaySound).l
0002bb02 54680034	addq.w	#2,objoff_34(a0)
0002bb06 4e75	rts	
0002bb08 7208	moveq	#8,d1
0002bb0a 30280032	move.w	objoff_32(a0),d0
0002bb0e b068000c	cmp.w	y_pos(a0),d0
0002bb12 6402	bhs.s	+
0002bb14 4441	neg.w	d1
0002bb16 d3680012	add.w	d1,y_vel(a0)
0002bb1a 6622	bne.s	+
0002bb1c 42680034	clr.w	objoff_34(a0)
0002bb20 3140000c	move.w	d0,y_pos(a0)
0002bb24 7000	moveq	#0,d0
0002bb26 10280028	move.b	subtype(a0),d0
0002bb2a e548	lsl.w	#2,d0
0002bb2c 9168000c	sub.w	d0,y_pos(a0)
0002bb30 082800000022	btst	#status.npc.x_flip,status(a0)
0002bb36 6706	beq.s	+
0002bb38 d040	add.w	d0,d0
0002bb3a d168000c	add.w	d0,y_pos(a0)
0002bb3e 4e75	rts	
0002bb54 4ef9000163d2	jmp	(extractJmpToName("JmpTo28_MarkObjGone")).l
0002bb5a 4ef900016d6e	jmp	(extractJmpToName("JmpTo53_Adjust2PArtPointer")).l
0002bb60 4ef900019d3a	jmp	(extractJmpToName("JmpTo_PlatformObjectD5")).l
0002bb66 4ef9000163ac	jmp	(extractJmpToName("JmpTo18_ObjectMove")).l
0002bb6c 7000	moveq	#0,d0
0002bb6e 10280024	move.b	routine(a0),d0
0002bb72 323b0006	move.w	ObjD6_Index(pc,d0.w),d1
0002bb76 4efb1002	jmp	ObjD6_Index(pc,d1.w)
0002bb7e 54280024	addq.b	#2,routine(a0)
0002bb82 217c0002bebc0004	move.l	#ObjD6_MapUnc_2BEBC,mappings(a0)
0002bb8a 317c03880002	move.w	#make_art_tile(ArtTile_ArtNem_CNZCage,0,0),art_tile(a0)
0002bb94 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002bb9a 117c00180019	move.b	#$18,width_pixels(a0)
0002bba0 117c00010018	move.b	#1,priority(a0)
0002bba6 323c0023	move.w	#$23,d1
0002bbaa 343c0010	move.w	#$10,d2
0002bbae 363c0011	move.w	#$11,d3
0002bbb2 38280008	move.w	x_pos(a0),d4
0002bbb6 45e80030	lea	objoff_30(a0),a2
0002bbba 43f8b000	lea	(MainCharacter).w,a1
0002bbbe 7c03	moveq	#p1_standing_bit,d6
0002bbc0 48e77800	movem.l	d1-d4,-(sp)
0002bbc4 61000022	bsr.w	loc_2BBE8
0002bbc8 4cdf001e	movem.l	(sp)+,d1-d4
0002bbcc 45e80034	lea	objoff_34(a0),a2
0002bbd0 43f8b040	lea	(Sidekick).w,a1
0002bbd4 7c04	moveq	#p2_standing_bit,d6
0002bbd6 61000010	bsr.w	loc_2BBE8
0002bbda 43f90002beb0	lea	(Ani_objD6).l,a1
0002bbe8 3012	move.w	(a2),d0
0002bbea 303b0006	move.w	off_2BBF2(pc,d0.w),d0
0002bbee 4efb0002	jmp	off_2BBF2(pc,d0.w)
0002bbf8 4a29002a	tst.b	obj_control(a1)
0002bbfc 66000086	bne.w	return_2BC84
0002bc00 4a280028	tst.b	subtype(a0)
0002bc04 6706	beq.s	loc_2BC0C
0002bc06 4a78ff4c	tst.w	(SlotMachineInUse).w
0002bc0a 6678	bne.s	return_2BC84
0002bc10 4a44	tst.w	d4
0002bc12 6a70	bpl.s	return_2BC84
0002bc14 336800080008	move.w	x_pos(a0),x_pos(a1)
0002bc1a 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002bc20 337c00000010	move.w	#0,x_vel(a1)
0002bc26 337c00000012	move.w	#0,y_vel(a1)
0002bc2c 337c00000014	move.w	#0,inertia(a1)
0002bc32 137c0081002a	move.b	#$81,obj_control(a1)
0002bc38 08e900020022	bset	#status.player.rolling,status(a1)
0002bc3e 137c000e0016	move.b	#$E,y_radius(a1)
0002bc44 137c00070017	move.b	#7,x_radius(a1)
0002bc4a 137c0002001c	move.b	#AniIDSonAni_Roll,anim(a1)
0002bc50 117c0001001c	move.b	#1,anim(a0)
0002bc56 545a	addq.w	#2,(a2)+
0002bc58 34bc0078	move.w	#$78,(a2)
0002bc5c 3149003e	move.w	a1,parent(a0)
0002bc60 4a280028	tst.b	subtype(a0)
0002bc64 671e	beq.s	return_2BC84
0002bc66 0c380018ff4e	cmpi.b	#$18,(SlotMachine_Routine).w
0002bc6c 6616	bne.s	return_2BC84
0002bc6e 11fc0008ff4e	move.b	#8,(SlotMachine_Routine).w
0002bc74 4268002e	clr.w	objoff_2E(a0)
0002bc78 31fcffffff4c	move.w	#-1,(SlotMachineInUse).w
0002bc7e 317cffff002a	move.w	#-1,objoff_2A(a0)
0002bc84 4e75	rts	
0002bc86 3038ff52	move.w	(SlotMachine_Reward).w,d0
0002bc8a 6a0000c2	bpl.w	loc_2BD4E
0002bc8e 4a68002a	tst.w	objoff_2A(a0)
0002bc92 6a06	bpl.s	+
0002bc94 317c0064002a	move.w	#$64,objoff_2A(a0)
0002bc9a 4a68002a	tst.w	objoff_2A(a0)
0002bc9e 670000a0	beq.w	+
0002bca2 08380000fe05	btst	#0,(Level_frame_counter+1).w
0002bca8 6700009e	beq.w	loc_2BD48
0002bcac 0c680010002c	cmpi.w	#$10,objoff_2C(a0)
0002bcb2 64000094	bhs.w	loc_2BD48
0002bcba 6600008c	bne.w	loc_2BD48
0002bcc4 237c0002b8d40004	move.l	#ObjD3_MapUnc_2B8D4,mappings(a1)
0002bccc 337c03800002	move.w	#make_art_tile(ArtTile_ArtNem_CNZBonusSpike,0,0),art_tile(a1)
0002bcd6 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002bcdc 137c00100019	move.b	#$10,width_pixels(a1)
0002bce2 137c00040018	move.b	#4,priority(a1)
0002bce8 337c001e003c	move.w	#$1E,casino_prize_display_delay(a1)
0002bcee 3368002e002e	move.w	objoff_2E(a0),objoff_2E(a1)
0002bcf4 06680090002e	addi.w	#$90,objoff_2E(a0)
0002bcfa 336800080038	move.w	x_pos(a0),casino_prize_machine_x_pos(a1)
0002bd00 3368000c003a	move.w	y_pos(a0),casino_prize_machine_y_pos(a1)
0002bd06 3029002e	move.w	objoff_2E(a1),d0
0002bd0e e241	asr.w	#1,d1
0002bd10 d2690038	add.w	casino_prize_machine_x_pos(a1),d1
0002bd14 33410030	move.w	d1,casino_prize_x_pos(a1)
0002bd18 33410008	move.w	d1,x_pos(a1)
0002bd1c e240	asr.w	#1,d0
0002bd1e d069003a	add.w	casino_prize_machine_y_pos(a1),d0
0002bd22 33400034	move.w	d0,casino_prize_y_pos(a1)
0002bd26 3340000c	move.w	d0,y_pos(a1)
0002bd2a 45e8002c	lea	objoff_2C(a0),a2
0002bd2e 234a002a	move.l	a2,objoff_2A(a1)
0002bd32 3368003e003e	move.w	parent(a0),parent(a1)
0002bd38 5268002c	addq.w	#1,objoff_2C(a0)
0002bd3c 5368002a	subq.w	#1,objoff_2A(a0)
0002bd40 4a68002c	tst.w	objoff_2C(a0)
0002bd44 670000e8	beq.w	loc_2BE2E
0002bd48 5278ff92	addq.w	#1,(Bonus_Countdown_3).w
0002bd4c 4e75	rts	
0002bd4e 670000a0	beq.w	+
0002bd52 08380000fe05	btst	#0,(Level_frame_counter+1).w
0002bd58 6700009c	beq.w	return_2BDF6
0002bd5c 0c680010002c	cmpi.w	#$10,objoff_2C(a0)
0002bd62 64000092	bhs.w	return_2BDF6
0002bd6a 6600008a	bne.w	return_2BDF6
0002bd74 237c000123820004	move.l	#Obj25_MapUnc_12382,mappings(a1)
0002bd7c 337c26bc0002	move.w	#make_art_tile(ArtTile_ArtNem_Ring,1,0),art_tile(a1)
0002bd86 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002bd8c 137c00030018	move.b	#3,priority(a1)
0002bd92 137c00080019	move.b	#8,width_pixels(a1)
0002bd98 337c001a003c	move.w	#$1A,casino_prize_display_delay(a1)
0002bd9e 3368002e002e	move.w	objoff_2E(a0),objoff_2E(a1)
0002bda4 06680089002e	addi.w	#$89,objoff_2E(a0)
0002bdaa 336800080038	move.w	x_pos(a0),casino_prize_machine_x_pos(a1)
0002bdb0 3368000c003a	move.w	y_pos(a0),casino_prize_machine_y_pos(a1)
0002bdb6 3029002e	move.w	objoff_2E(a1),d0
0002bdbe e241	asr.w	#1,d1
0002bdc0 d2690038	add.w	casino_prize_machine_x_pos(a1),d1
0002bdc4 33410030	move.w	d1,casino_prize_x_pos(a1)
0002bdc8 33410008	move.w	d1,x_pos(a1)
0002bdcc e240	asr.w	#1,d0
0002bdce d069003a	add.w	casino_prize_machine_y_pos(a1),d0
0002bdd2 33400034	move.w	d0,casino_prize_y_pos(a1)
0002bdd6 3340000c	move.w	d0,y_pos(a1)
0002bdda 45e8002c	lea	objoff_2C(a0),a2
0002bdde 234a002a	move.l	a2,objoff_2A(a1)
0002bde2 3368003e003e	move.w	parent(a0),parent(a1)
0002bde8 5268002c	addq.w	#1,objoff_2C(a0)
0002bdec 5378ff52	subq.w	#1,(SlotMachine_Reward).w
0002bdf0 4a68002c	tst.w	objoff_2C(a0)
0002bdf4 6738	beq.s	loc_2BE2E
0002bdf6 4e75	rts	
0002bdf8 4a280001	tst.b	render_flags(a0)
0002bdfc 6a30	bpl.s	loc_2BE2E
0002bdfe 4a280028	tst.b	subtype(a0)
0002be02 6724	beq.s	loc_2BE28
0002be04 3149003e	move.w	a1,objoff_3E(a0)
0002be08 0c380018ff4e	cmpi.b	#$18,(SlotMachine_Routine).w
0002be0e 6700fe76	beq.w	loc_2BC86
0002be12 1038fe0f	move.b	(Vint_runcount+3).w,d0
0002be16 0240000f	andi.w	#$F,d0
0002be1a 660a	bne.s	+
0002be1c 303c00c0	move.w	#SndID_CasinoBonus,d0
0002be20 4eb900001370	jsr	(PlaySound).l
0002be26 4e75	rts	
0002be28 536a0002	subq.w	#1,2(a2)
0002be2c 6a30	bpl.s	loc_2BE5E
0002be2e 317c0000002c	move.w	#0,objoff_2C(a0)
0002be34 117c0000001c	move.b	#0,anim(a0)
0002be3a 137c0000002a	move.b	#0,objoff_2A(a1)
0002be40 0da80022	bclr	d6,status(a0)
0002be44 08a900030022	bclr	#status.player.on_object,status(a1)
0002be4a 08e900010022	bset	#status.player.in_air,status(a1)
0002be50 337c04000012	move.w	#$400,y_vel(a1)
0002be56 545a	addq.w	#2,(a2)+
0002be58 34bc001e	move.w	#$1E,(a2)
0002be5c 4e75	rts	
0002be5e 302a0002	move.w	2(a2),d0
0002be62 0240000f	andi.w	#$F,d0
0002be66 6632	bne.s	+
0002be68 303c00c0	move.w	#SndID_CasinoBonus,d0
0002be6c 4eb900001370	jsr	(PlaySound).l
0002be72 700a	moveq	#10,d0
0002be74 3649	movea.w	a1,a3
0002be76 4eb900040d42	jsr	(AddPoints2).l
0002be80 6618	bne.s	+
0002be88 336800080008	move.w	x_pos(a0),x_pos(a1)
0002be8e 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002be94 137c0000001a	move.b	#0,mapping_frame(a1)
0002be9a 4e75	rts	
0002be9c 536a0002	subq.w	#1,2(a2)
0002bea0 6a0c	bpl.s	+
0002bea2 4252	clr.w	(a2)
0002bea4 4a280028	tst.b	subtype(a0)
0002bea8 6704	beq.s	+
0002beaa 4278ff4c	clr.w	(SlotMachineInUse).w
0002beae 4e75	rts	
0002bf24 49f8ff4e	lea	(SlotMachineVariables).w,a4
0002bf28 7000	moveq	#0,d0
0002bf2e 4efb0002	jmp	SlotMachine_JmpTable(pc,d0.w)
0002bf32 60000018	bra.w	SlotMachine_Routine1
0002bf36 60000062	bra.w	SlotMachine_Routine2
0002bf3a 6000007e	bra.w	SlotMachine_Routine3
0002bf3e 60000130	bra.w	SlotMachine_Routine4
0002bf42 60000164	bra.w	SlotMachine_Routine5
0002bf46 600002a6	bra.w	SlotMachine_Routine6
0002bf4a 4e75	rts	
0002bf4c 224c	movea.l	a4,a1
0002bf4e 7008	moveq	#8,d0
0002bf52 51c8fffc	dbf	d0,-
0002bf56 1038fe0f	move.b	(Vint_runcount+3).w,d0
0002bf5a 19400006	move.b	d0,slot1_index(a4)
0002bf5e e618	ror.b	#3,d0
0002bf60 1940000a	move.b	d0,slot2_index(a4)
0002bf64 e618	ror.b	#3,d0
0002bf66 1940000e	move.b	d0,slot3_index(a4)
0002bf6a 197c00080007	move.b	#8,slot1_offset(a4)
0002bf70 197c0008000b	move.b	#8,slot2_offset(a4)
0002bf76 197c0008000f	move.b	#8,slot3_offset(a4)
0002bf7c 197c00080008	move.b	#8,slot1_speed(a4)
0002bf82 197c0008000c	move.b	#8,slot2_speed(a4)
0002bf88 197c00080010	move.b	#8,slot3_speed(a4)
0002bf8e 197c00010001	move.b	#1,slot_timer(a4)
0002bf98 4e75	rts	
0002bf9a 6100026e	bsr.w	SlotMachine_DrawSlot
0002bf9e 4a2c0001	tst.b	slot_timer(a4)
0002bfa2 6702	beq.s	+
0002bfa4 4e75	rts	
0002bfac 426c0008	clr.w	slot1_speed(a4)
0002bfb0 426c000c	clr.w	slot2_speed(a4)
0002bfb4 426c0010	clr.w	slot3_speed(a4)
0002bfb8 4e75	rts	
0002bfba 1038fe0f	move.b	(Vint_runcount+3).w,d0
0002bfbe 02000007	andi.b	#7,d0
0002bfc2 5900	subq.b	#4,d0
0002bfc4 06000030	addi.b	#$30,d0
0002bfc8 19400008	move.b	d0,slot1_speed(a4)
0002bfcc 1038fe0f	move.b	(Vint_runcount+3).w,d0
0002bfd0 e918	rol.b	#4,d0
0002bfd2 02000007	andi.b	#7,d0
0002bfd6 5900	subq.b	#4,d0
0002bfd8 06000030	addi.b	#$30,d0
0002bfdc 1940000c	move.b	d0,slot2_speed(a4)
0002bfe0 1038fe0e	move.b	(Vint_runcount+2).w,d0
0002bfe4 02000007	andi.b	#7,d0
0002bfe8 5900	subq.b	#4,d0
0002bfea 06000030	addi.b	#$30,d0
0002bfee 19400010	move.b	d0,slot3_speed(a4)
0002bff2 197c00020001	move.b	#2,slot_timer(a4)
0002bff8 422c0003	clr.b	slot_index(a4)
0002bffc 422c0009	clr.b	slot1_rout(a4)
0002c000 422c000d	clr.b	slot2_rout(a4)
0002c004 422c0011	clr.b	slot3_rout(a4)
0002c00c 1038fe0f	move.b	(Vint_runcount+3).w,d0
0002c010 e618	ror.b	#3,d0
0002c012 45f90002c3ec	lea	(SlotTargetValues).l,a2
0002c01a 6504	bcs.s	+
0002c01c 564a	addq.w	#3,a2
0002c01e 60f8	bra.s	-
0002c020 0c1200ff	cmpi.b	#-1,(a2)
0002c024 670e	beq.s	+
0002c026 196a00010004	move.b	1(a2),slot1_targ(a4)
0002c02c 196a00020005	move.b	2(a2),slot23_targ(a4)
0002c032 4e75	rts	
0002c034 1200	move.b	d0,d1
0002c036 02410007	andi.w	#7,d1
0002c03a 43f90002c401	lea	(SlotSequence1).l,a1
0002c040 197100000004	move.b	(a1,d0.w),slot1_targ(a4)
0002c046 e618	ror.b	#3,d0
0002c048 1200	move.b	d0,d1
0002c04a 02410007	andi.w	#7,d1
0002c04e 43f90002c409	lea	(SlotSequence2).l,a1
0002c054 14311000	move.b	(a1,d1.w),d2
0002c058 e90a	lsl.b	#4,d2
0002c05a e618	ror.b	#3,d0
0002c05c 02400007	andi.w	#7,d0
0002c060 43f90002c411	lea	(SlotSequence3).l,a1
0002c066 84310000	or.b	(a1,d0.w),d2
0002c06a 19420005	move.b	d2,slot23_targ(a4)
0002c06e 4e75	rts	
0002c070 61000198	bsr.w	SlotMachine_DrawSlot
0002c074 4a2c0001	tst.b	slot_timer(a4)
0002c078 6702	beq.s	+
0002c07a 4e75	rts	
0002c07c 062c00300008	addi.b	#$30,slot1_speed(a4)
0002c082 062c0030000c	addi.b	#$30,slot2_speed(a4)
0002c088 062c00300010	addi.b	#$30,slot3_speed(a4)
0002c08e 1038fe0f	move.b	(Vint_runcount+3).w,d0
0002c092 0200000f	andi.b	#$F,d0
0002c096 0600000c	addi.b	#$C,d0
0002c09a 19400001	move.b	d0,slot_timer(a4)
0002c09e 422c0002	clr.b	2(a4)
0002c0a6 4e75	rts	
0002c0a8 61000160	bsr.w	SlotMachine_DrawSlot
0002c0ac 0c2c000c0009	cmpi.b	#$C,slot1_rout(a4)
0002c0b2 6612	bne.s	+
0002c0b4 0c2c000c000d	cmpi.b	#$C,slot2_rout(a4)
0002c0ba 660a	bne.s	+
0002c0bc 0c2c000c0011	cmpi.b	#$C,slot3_rout(a4)
0002c0c2 6700012a	beq.w	SlotMachine_Routine6
0002c0c6 7000	moveq	#0,d0
0002c0c8 102c0003	move.b	slot_index(a4),d0
0002c0cc 43ec0006	lea	slots_data(a4),a1
0002c0d0 d2c0	adda.w	d0,a1
0002c0d2 47f90002c401	lea	(SlotSequence1).l,a3
0002c0d8 d040	add.w	d0,d0
0002c0da d6c0	adda.w	d0,a3
0002c0dc 7000	moveq	#0,d0
0002c0de 10290003	move.b	slot1_rout-slot1_index(a1),d0
0002c0e2 4efb0002	jmp	SlotMachine_Routine5_JmpTable(pc,d0.w)
0002c0e6 6000004c	bra.w	SlotMachine_Routine5_1
0002c0ea 60000084	bra.w	SlotMachine_Routine5_2
0002c0ee 600000ea	bra.w	SlotMachine_Routine5_3
0002c0f2 600000f8	bra.w	SlotMachine_Routine5_4
0002c0f6 322c0004	move.w	slots_targ(a4),d1
0002c0fa 102c0003	move.b	slot_index(a4),d0
0002c0fe 6702	beq.s	+
0002c100 e069	lsr.w	d0,d1
0002c102 02410007	andi.w	#7,d1
0002c106 0c010005	cmpi.b	#5,d1
0002c10a 6e02	bgt.s	+
0002c10c 4e75	rts	
0002c10e 5501	subq.b	#2,d1
0002c110 4e75	rts	
0002c112 343cfff0	move.w	#$FFF0,d2
0002c116 0241000f	andi.w	#$F,d1
0002c11a 102c0003	move.b	slot_index(a4),d0
0002c11e 6704	beq.s	+
0002c120 e169	lsl.w	d0,d1
0002c122 e17a	rol.w	d0,d2
0002c124 c56c0004	and.w	d2,slots_targ(a4)
0002c128 836c0004	or.w	d1,slots_targ(a4)
0002c12c 026c07770004	andi.w	#$777,slots_targ(a4)
0002c132 4e75	rts	
0002c134 4a2c0003	tst.b	slot_index(a4)
0002c138 6608	bne.s	+
0002c13a 4a2c0001	tst.b	slot_timer(a4)
0002c13e 6b0c	bmi.s	++
0002c140 4e75	rts	
0002c142 0c290008ffff	cmpi.b	#8,slot1_rout-slot2_index(a1)
0002c148 6c02	bge.s	+
0002c14a 4e75	rts	
0002c14c 61a8	bsr.s	SlotMachine_GetTargetForSlot
0002c14e 3011	move.w	(a1),d0
0002c150 044000a0	subi.w	#$A0,d0
0002c154 e048	lsr.w	#8,d0
0002c156 02400007	andi.w	#7,d0
0002c15a 10330000	move.b	(a3,d0.w),d0
0002c15e b001	cmp.b	d1,d0
0002c160 6702	beq.s	+
0002c162 4e75	rts	
0002c164 58290003	addq.b	#4,slot1_rout-slot1_index(a1)
0002c168 137c00600002	move.b	#$60,slot1_speed-slot1_index(a1)
0002c16e 4e75	rts	
0002c170 6184	bsr.s	SlotMachine_GetTargetForSlot
0002c172 3011	move.w	(a1),d0
0002c174 064000f0	addi.w	#$F0,d0
0002c178 02400700	andi.w	#$700,d0
0002c17c e048	lsr.w	#8,d0
0002c17e 10330000	move.b	(a3,d0.w),d0
0002c182 b200	cmp.b	d0,d1
0002c184 6728	beq.s	loc_2C1AE
0002c186 0c2900200002	cmpi.b	#$20,slot1_speed-slot1_index(a1)
0002c18c 6306	bls.s	+
0002c18e 0429000c0002	subi.b	#$C,slot1_speed-slot1_index(a1)
0002c194 0c2900180002	cmpi.b	#$18,slot1_speed-slot1_index(a1)
0002c19a 6e02	bgt.s	+
0002c19c 4e75	rts	
0002c19e 0c2900800001	cmpi.b	#$80,slot1_offset-slot1_index(a1)
0002c1a4 6302	bls.s	+
0002c1a6 4e75	rts	
0002c1a8 55290002	subq.b	#2,slot1_speed-slot1_index(a1)
0002c1ac 4e75	rts	
0002c1ae 3011	move.w	(a1),d0
0002c1b0 06400080	addi.w	#$80,d0
0002c1b4 3200	move.w	d0,d1
0002c1b6 02410700	andi.w	#$700,d1
0002c1ba 04410010	subi.w	#$10,d1
0002c1be 3281	move.w	d1,(a1)
0002c1c0 e048	lsr.w	#8,d0
0002c1c2 02400007	andi.w	#7,d0
0002c1c6 12330000	move.b	(a3,d0.w),d1
0002c1ca 6100ff46	bsr.w	SlotMachine_ChangeTarget
0002c1ce 137c00f80002	move.b	#-8,slot1_speed-slot1_index(a1)
0002c1d4 58290003	addq.b	#4,slot1_rout-slot1_index(a1)
0002c1d8 4e75	rts	
0002c1da 4a290001	tst.b	slot1_offset-slot1_index(a1)
0002c1de 6702	beq.s	+
0002c1e0 4e75	rts	
0002c1e2 42290002	clr.b	slot1_speed-slot1_index(a1)
0002c1e6 58290003	addq.b	#4,slot1_rout-slot1_index(a1)
0002c1ea 4e75	rts	
0002c1ec 4e75	rts	
0002c1ee 426c0008	clr.w	slot1_speed(a4)
0002c1f2 426c000c	clr.w	slot2_speed(a4)
0002c1f6 426c0010	clr.w	slot3_speed(a4)
0002c1fa 422c0001	clr.b	slot_timer(a4)
0002c1fe 610000de	bsr.w	SlotMachine_ChooseReward
0002c208 4e75	rts	
0002c20a 7000	moveq	#0,d0
0002c20c 102c0003	move.b	slot_index(a4),d0
0002c210 43ec0006	lea	slots_data(a4),a1
0002c214 d2c0	adda.w	d0,a1
0002c216 47f90002c401	lea	(SlotSequence1).l,a3
0002c21c d6c0	adda.w	d0,a3
0002c21e d6c0	adda.w	d0,a3
0002c220 4efb0002	jmp	BranchTo_SlotMachine_Subroutine(pc,d0.w)
0002c224 60000014	bra.w	SlotMachine_Subroutine1
0002c228 6000001c	bra.w	SlotMachine_Subroutine2
0002c22c 422c0003	clr.b	slot_index(a4)
0002c230 532c0001	subq.b	#1,slot_timer(a4)
0002c234 343cae00	move.w	#tiles_to_bytes(ArtTile_ArtUnc_CNZSlotPics_3),d2
0002c238 6014	bra.s	+
0002c23a 582c0003	addq.b	#4,slot_index(a4)
0002c23e 343caa00	move.w	#tiles_to_bytes(ArtTile_ArtUnc_CNZSlotPics_1),d2
0002c242 6000000a	bra.w	+
0002c246 582c0003	addq.b	#4,slot_index(a4)
0002c24a 343cac00	move.w	#tiles_to_bytes(ArtTile_ArtUnc_CNZSlotPics_2),d2
0002c24e 3011	move.w	(a1),d0
0002c250 12290002	move.b	2(a1),d1
0002c254 4881	ext.w	d1
0002c256 9351	sub.w	d1,(a1)
0002c258 3611	move.w	(a1),d3
0002c25a 024007f8	andi.w	#$7F8,d0
0002c25e 024307f8	andi.w	#$7F8,d3
0002c262 b640	cmp.w	d0,d3
0002c264 6602	bne.s	+
0002c266 4e75	rts	
0002c268 6100004e	bsr.w	SlotMachine_GetPixelRow
0002c26c 43f8a000	lea	(Block_Table+$1000).w,a1
0002c270 323c001f	move.w	#4*8-1,d1
0002c27a 236a01000100	move.l	$100(a2),$100(a1)
0002c280 236a01800180	move.l	$180(a2),$180(a1)
0002c286 22da	move.l	(a2)+,(a1)+
0002c288 5003	addq.b	#8,d3
0002c28a 660c	bne.s	+
0002c28c 06430100	addi.w	#$100,d3
0002c290 02430700	andi.w	#$700,d3
0002c294 61000022	bsr.w	SlotMachine_GetPixelRow
0002c298 51c9ffda	dbf	d1,-
0002c29c 223c00ffa000	move.l	#(Block_Table+$1000)&$FFFFFF,d1
0002c2a2 4a78ffd8	tst.w	(Two_player_mode).w
0002c2a6 6704	beq.s	+
0002c2a8 06424000	addi.w	#tiles_to_bytes(ArtTile_ArtUnc_CNZSlotPics_1_2p-ArtTile_ArtUnc_CNZSlotPics_1),d2
0002c2ac 363c0100	move.w	#tiles_to_words(16),d3
0002c2b0 4eb90000144e	jsr	(QueueDMATransfer).l
0002c2b6 4e75	rts	
0002c2b8 3003	move.w	d3,d0
0002c2ba e048	lsr.w	#8,d0
0002c2bc 02400007	andi.w	#7,d0
0002c2c0 10330000	move.b	(a3,d0.w),d0
0002c2c4 02400007	andi.w	#7,d0
0002c2c8 ee58	ror.w	#7,d0
0002c2ca 45f90004eefe	lea	(ArtUnc_CNZSlotPics).l,a2
0002c2d0 d4c0	adda.w	d0,a2
0002c2d2 3003	move.w	d3,d0
0002c2d4 024000f8	andi.w	#$F8,d0
0002c2d8 e248	lsr.w	#1,d0
0002c2da d4c0	adda.w	d0,a2
0002c2dc 4e75	rts	
0002c2de 142c0005	move.b	slot23_targ(a4),d2
0002c2e2 1602	move.b	d2,d3
0002c2e4 024200f0	andi.w	#$F0,d2
0002c2e8 e84a	lsr.w	#4,d2
0002c2ea 0243000f	andi.w	#$F,d3
0002c2ee 7000	moveq	#0,d0
0002c2f0 b42c0004	cmp.b	slot1_targ(a4),d2
0002c2f4 6602	bne.s	+
0002c2f6 5840	addq.w	#4,d0
0002c2f8 b62c0004	cmp.b	slot1_targ(a4),d3
0002c2fc 6602	bne.s	+
0002c2fe 5040	addq.w	#8,d0
0002c300 4efb0002	jmp	SlotMachine_ChooseReward_JmpTable(pc,d0.w)
0002c304 6000006e	bra.w	SlotMachine_Unmatched1
0002c308 60000040	bra.w	SlotMachine_Match12
0002c30c 6000000e	bra.w	SlotMachine_Match13
0002c310 3002	move.w	d2,d0
0002c312 610000b6	bsr.w	SlotMachine_GetReward
0002c316 39400004	move.w	d0,slots_targ(a4)
0002c31a 4e75	rts	
0002c31c 0c030003	cmpi.b	#3,d3
0002c320 6610	bne.s	+
0002c322 3002	move.w	d2,d0
0002c324 610000a4	bsr.w	SlotMachine_GetReward
0002c328 610000ae	bsr.w	SlotMachine_QuadrupleUp
0002c32c 39400004	move.w	d0,slots_targ(a4)
0002c330 4e75	rts	
0002c332 0c020003	cmpi.b	#3,d2
0002c336 6600003c	bne.w	SlotMachine_Unmatched1
0002c33a 3003	move.w	d3,d0
0002c33c 6100008c	bsr.w	SlotMachine_GetReward
0002c340 6100009a	bsr.w	SlotMachine_DoubleUp
0002c344 39400004	move.w	d0,slots_targ(a4)
0002c348 4e75	rts	
0002c34a 0c020003	cmpi.b	#3,d2
0002c34e 660e	bne.s	+
0002c350 3003	move.w	d3,d0
0002c352 6176	bsr.s	SlotMachine_GetReward
0002c354 61000082	bsr.w	SlotMachine_QuadrupleUp
0002c358 39400004	move.w	d0,slots_targ(a4)
0002c35c 4e75	rts	
0002c35e 0c030003	cmpi.b	#3,d3
0002c362 66000010	bne.w	SlotMachine_Unmatched1
0002c366 3002	move.w	d2,d0
0002c368 6160	bsr.s	SlotMachine_GetReward
0002c36a 61000070	bsr.w	SlotMachine_DoubleUp
0002c36e 39400004	move.w	d0,slots_targ(a4)
0002c372 4e75	rts	
0002c374 b602	cmp.b	d2,d3
0002c376 6630	bne.s	SlotMachine_CheckBars
0002c378 0c2c00030004	cmpi.b	#3,slot1_targ(a4)
0002c37e 660e	bne.s	+
0002c380 3002	move.w	d2,d0
0002c382 6146	bsr.s	SlotMachine_GetReward
0002c384 61000056	bsr.w	SlotMachine_DoubleUp
0002c388 39400004	move.w	d0,slots_targ(a4)
0002c38c 4e75	rts	
0002c38e 0c020003	cmpi.b	#3,d2
0002c392 6614	bne.s	SlotMachine_CheckBars
0002c394 102c0004	move.b	slot1_targ(a4),d0
0002c398 0240000f	andi.w	#$F,d0
0002c39c 612c	bsr.s	SlotMachine_GetReward
0002c39e 61000038	bsr.w	SlotMachine_QuadrupleUp
0002c3a2 39400004	move.w	d0,slots_targ(a4)
0002c3a6 4e75	rts	
0002c3a8 7202	moveq	#2,d1
0002c3aa 7000	moveq	#0,d0
0002c3ac 0c2c00050004	cmpi.b	#5,slot1_targ(a4)
0002c3b2 6602	bne.s	+
0002c3b4 d041	add.w	d1,d0
0002c3b6 0c020005	cmpi.b	#5,d2
0002c3ba 6602	bne.s	+
0002c3bc d041	add.w	d1,d0
0002c3be 0c030005	cmpi.b	#5,d3
0002c3c2 6602	bne.s	+
0002c3c4 d041	add.w	d1,d0
0002c3c6 39400004	move.w	d0,slots_targ(a4)
0002c3ca d040	add.w	d0,d0
0002c3cc 45f90002c3e0	lea	(SlotRingRewards).l,a2
0002c3d2 30320000	move.w	(a2,d0.w),d0
0002c3d6 4e75	rts	
0002c3d8 e540	asl.w	#2,d0
0002c3da 4e75	rts	
0002c3dc d040	add.w	d0,d0
0002c3de 4e75	rts	
0002c41a 4e71	nop	
0002c41c 4ef900017fda	jmp	(extractJmpToName("JmpTo10_AllocateObject")).l
0002c422 4ef9000163d2	jmp	(extractJmpToName("JmpTo29_MarkObjGone")).l
0002c428 4ef900016544	jmp	(extractJmpToName("JmpTo10_AnimateSprite")).l
0002c42e 4ef900016d8a	jmp	(extractJmpToName("JmpTo6_Adjust2PArtPointer2")).l
0002c434 4ef900016d6e	jmp	(extractJmpToName("JmpTo54_Adjust2PArtPointer")).l
0002c43a 4ef9000033b6	jmp	(extractJmpToName("JmpTo12_CalcSine")).l
0002c440 4ef90001978e	jmp	(extractJmpToName("JmpTo7_SolidObject_Always_SingleCharacter")).l
0002c448 7000	moveq	#0,d0
0002c44a 10280024	move.b	routine(a0),d0
0002c44e 323b0006	move.w	ObjD7_Index(pc,d0.w),d1
0002c452 4efb1002	jmp	ObjD7_Index(pc,d1.w)
0002c45a 54280024	addq.b	#2,routine(a0)
0002c45e 217c0002c6260004	move.l	#ObjD7_MapUnc_2C626,mappings(a0)
0002c466 317c43940002	move.w	#make_art_tile(ArtTile_ArtNem_CNZHexBumper,2,0),art_tile(a0)
0002c470 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002c476 117c00100019	move.b	#$10,width_pixels(a0)
0002c47c 117c00010018	move.b	#1,priority(a0)
0002c482 117c00ca0020	move.b	#$CA,collision_flags(a0)
0002c488 082800000022	btst	#status.npc.x_flip,status(a0)
0002c48e 6706	beq.s	+
0002c490 117c00010034	move.b	#1,objoff_34(a0)
0002c496 30280008	move.w	x_pos(a0),d0
0002c49a 3200	move.w	d0,d1
0002c49c 04400060	subi.w	#$60,d0
0002c4a0 31400030	move.w	d0,objoff_30(a0)
0002c4a4 06410060	addi.w	#$60,d1
0002c4a8 31410032	move.w	d1,objoff_32(a0)
0002c4ac 10280021	move.b	collision_property(a0),d0
0002c4b0 670000cc	beq.w	ObjD7_MainContinued
0002c4b4 43f8b000	lea	(MainCharacter).w,a1
0002c4b8 08a800000021	bclr	#0,collision_property(a0)
0002c4be 6702	beq.s	+
0002c4c0 6116	bsr.s	ObjD7_BouncePlayerOff
0002c4c2 43f8b040	lea	(Sidekick).w,a1
0002c4c6 08a800010021	bclr	#1,collision_property(a0)
0002c4cc 6702	beq.s	+
0002c4ce 6108	bsr.s	ObjD7_BouncePlayerOff
0002c4d0 42280021	clr.b	collision_property(a0)
0002c4d4 600000a8	bra.w	ObjD7_MainContinued
0002c4d8 32280008	move.w	x_pos(a0),d1
0002c4dc 3428000c	move.w	y_pos(a0),d2
0002c4e0 92690008	sub.w	x_pos(a1),d1
0002c4e4 9469000c	sub.w	y_pos(a1),d2
0002c4e8 4eb90000364e	jsr	(CalcAngle).l
0002c4ee 06000020	addi.b	#$20,d0
0002c4f2 024000c0	andi.w	#$C0,d0
0002c4f6 0c400040	cmpi.w	#$40,d0
0002c4fa 671a	beq.s	ObjD7_BounceDown
0002c4fc 0c400080	cmpi.w	#$80,d0
0002c500 6732	beq.s	ObjD7_BounceRight
0002c502 0c4000c0	cmpi.w	#$C0,d0
0002c506 673a	beq.s	ObjD7_BounceUp
0002c508 337cf8000010	move.w	#-$800,x_vel(a1)
0002c50e 117c0002001c	move.b	#2,anim(a0)
0002c514 6048	bra.s	ObjD7_BounceEnd
0002c516 046902000010	subi.w	#$200,x_vel(a1)
0002c51c 4a41	tst.w	d1
0002c51e 6a06	bpl.s	+
0002c520 066904000010	addi.w	#$400,x_vel(a1)
0002c526 337cf8000012	move.w	#-$800,y_vel(a1)
0002c52c 117c0001001c	move.b	#1,anim(a0)
0002c532 602a	bra.s	ObjD7_BounceEnd
0002c534 337c08000010	move.w	#$800,x_vel(a1)
0002c53a 117c0002001c	move.b	#2,anim(a0)
0002c540 601c	bra.s	ObjD7_BounceEnd
0002c542 046902000010	subi.w	#$200,x_vel(a1)
0002c548 4a41	tst.w	d1
0002c54a 6a06	bpl.s	+
0002c54c 066904000010	addi.w	#$400,x_vel(a1)
0002c552 337c08000012	move.w	#$800,y_vel(a1)
0002c558 117c0001001c	move.b	#1,anim(a0)
0002c55e 08e900010022	bset	#status.player.in_air,status(a1)
0002c564 08a900040022	bclr	#status.player.rolljumping,status(a1)
0002c56a 08a900050022	bclr	#status.player.pushing,status(a1)
0002c570 4229003c	clr.b	jumping(a1)
0002c574 303c00b4	move.w	#SndID_Bumper,d0
0002c578 4ef900001370	jmp	(PlaySound).l
0002c57e 43f90002c610	lea	(Ani_objD7).l,a1
0002c588 4a280028	tst.b	subtype(a0)
0002c58c 6700010c	beq.w	JmpTo30_MarkObjGone
0002c590 4a280034	tst.b	objoff_34(a0)
0002c594 6718	beq.s	loc_2C5AE
0002c596 30280008	move.w	x_pos(a0),d0
0002c59a 5340	subq.w	#1,d0
0002c59c b0680030	cmp.w	objoff_30(a0),d0
0002c5a0 6606	bne.s	+
0002c5a2 117c00000034	move.b	#0,objoff_34(a0)
0002c5a8 31400008	move.w	d0,x_pos(a0)
0002c5ac 6016	bra.s	loc_2C5C4
0002c5ae 30280008	move.w	x_pos(a0),d0
0002c5b2 5240	addq.w	#1,d0
0002c5b4 b0680032	cmp.w	objoff_32(a0),d0
0002c5b8 6606	bne.s	+
0002c5ba 117c00010034	move.b	#1,objoff_34(a0)
0002c5c0 31400008	move.w	d0,x_pos(a0)
0002c5c4 4a78ffd8	tst.w	(Two_player_mode).w
0002c5c8 6704	beq.s	+
0002c5ce 30280030	move.w	objoff_30(a0),d0
0002c5d2 0240ff80	andi.w	#$FF80,d0
0002c5d6 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
0002c5da 0c400280	cmpi.w	#$280,d0
0002c5de 6312	bls.s	+
0002c5e0 30280032	move.w	objoff_32(a0),d0
0002c5e4 0240ff80	andi.w	#$FF80,d0
0002c5e8 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
0002c5ec 0c400280	cmpi.w	#$280,d0
0002c5f0 6206	bhi.s	loc_2C5F8
0002c5f2 4ef9000164f4	jmp	(DisplaySprite).l
0002c5f8 45f8fc00	lea	(Object_Respawn_Table).w,a2
0002c5fc 7000	moveq	#0,d0
0002c5fe 10280023	move.b	respawn_index(a0),d0
0002c602 6706	beq.s	+
0002c604 08b200070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a2,d0.w)
0002c60a 4ef9000164e6	jmp	(DeleteObject).l
0002c692 4e71	nop	
0002c694 4ef9000164f4	jmp	(extractJmpToName("JmpTo30_DisplaySprite")).l
0002c69a 4ef9000163d2	jmp	(extractJmpToName("JmpTo30_MarkObjGone")).l
0002c6a0 4ef900016544	jmp	(extractJmpToName("JmpTo11_AnimateSprite")).l
0002c6a6 4ef900016d6e	jmp	(extractJmpToName("JmpTo55_Adjust2PArtPointer")).l
0002c6ac 7000	moveq	#0,d0
0002c6ae 10280024	move.b	routine(a0),d0
0002c6b2 323b0006	move.w	ObjD8_Index(pc,d0.w),d1
0002c6b6 4efb1002	jmp	ObjD8_Index(pc,d1.w)
0002c6c0 54280024	addq.b	#2,routine(a0)
0002c6c4 217c0002c8c40004	move.l	#ObjD8_MapUnc_2C8C4,mappings(a0)
0002c6cc 317c43e60002	move.w	#make_art_tile(ArtTile_ArtNem_CNZMiniBumper,2,0),art_tile(a0)
0002c6d6 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002c6dc 117c00100019	move.b	#$10,width_pixels(a0)
0002c6e2 117c00010018	move.b	#1,priority(a0)
0002c6e8 117c00d70020	move.b	#$D7,collision_flags(a0)
0002c6ee 10280028	move.b	subtype(a0),d0
0002c6f2 e518	rol.b	#2,d0
0002c6f4 02000003	andi.b	#3,d0
0002c6f8 1140001c	move.b	d0,anim(a0)
0002c6fc 10280021	move.b	collision_property(a0),d0
0002c700 66000008	bne.w	loc_2C70A
0002c704 4a680030	tst.w	objoff_30(a0)
0002c708 6736	beq.s	loc_2C740
0002c70a 49e80030	lea	objoff_30(a0),a4
0002c70e 4a14	tst.b	(a4)
0002c710 6704	beq.s	loc_2C716
0002c712 5314	subq.b	#1,(a4)
0002c714 600e	bra.s	loc_2C724
0002c716 43f8b000	lea	(MainCharacter).w,a1
0002c71a 08a800000021	bclr	#0,collision_property(a0)
0002c720 6702	beq.s	loc_2C724
0002c722 612a	bsr.s	loc_2C74E
0002c724 524c	addq.w	#1,a4
0002c726 4a14	tst.b	(a4)
0002c728 6704	beq.s	loc_2C72E
0002c72a 5314	subq.b	#1,(a4)
0002c72c 600e	bra.s	loc_2C73C
0002c72e 43f8b040	lea	(Sidekick).w,a1
0002c732 08a800010021	bclr	#1,collision_property(a0)
0002c738 6702	beq.s	loc_2C73C
0002c73a 6112	bsr.s	loc_2C74E
0002c73c 42280021	clr.b	collision_property(a0)
0002c740 43f90002c89c	lea	(Ani_objD8).l,a1
0002c74e 1028001a	move.b	mapping_frame(a0),d0
0002c752 5700	subq.b	#3,d0
0002c754 6706	beq.s	loc_2C75C
0002c756 6422	bcc.s	loc_2C77A
0002c758 5600	addq.b	#3,d0
0002c75a 661e	bne.s	loc_2C77A
0002c75c 117c0003001c	move.b	#3,anim(a0)
0002c762 337cf9000012	move.w	#-$700,y_vel(a1)
0002c768 3428000c	move.w	y_pos(a0),d2
0002c76c 9469000c	sub.w	y_pos(a1),d2
0002c770 6a04	bpl.s	BranchTo_loc_2C806
0002c772 44690012	neg.w	y_vel(a1)
0002c776 6000008e	bra.w	loc_2C806
0002c77a 5300	subq.b	#1,d0
0002c77c 666e	bne.s	loc_2C7EC
0002c77e 117c0004001c	move.b	#4,anim(a0)
0002c784 363c0020	move.w	#$20,d3
0002c788 082800000022	btst	#status.npc.x_flip,status(a0)
0002c78e 6604	bne.s	loc_2C794
0002c790 363c0060	move.w	#$60,d3
0002c794 32290010	move.w	x_vel(a1),d1
0002c798 34290012	move.w	y_vel(a1),d2
0002c79c 4eb90000364e	jsr	(CalcAngle).l
0002c7a2 9043	sub.w	d3,d0
0002c7a4 3200	move.w	d0,d1
0002c7a6 6a02	bpl.s	.skip
0002c7a8 4441	neg.w	d1
0002c7aa 4440	neg.w	d0
0002c7ac d043	add.w	d3,d0
0002c7ae 0c010040	cmpi.b	#$40,d1
0002c7b2 640a	bhs.s	loc_2C7BE
0002c7b4 0c010038	cmpi.b	#$38,d1
0002c7b8 6516	blo.s	loc_2C7D0
0002c7ba 3003	move.w	d3,d0
0002c7bc 6012	bra.s	loc_2C7D0
0002c7be 04410080	subi.w	#$80,d1
0002c7c2 4441	neg.w	d1
0002c7c4 0c010038	cmpi.b	#$38,d1
0002c7c8 6506	blo.s	loc_2C7D0
0002c7ca 3003	move.w	d3,d0
0002c7cc 06400080	addi.w	#$80,d0
0002c7d0 4eb9000033b6	jsr	(CalcSine).l
0002c7d6 c3fcf900	muls.w	#-$700,d1
0002c7da e081	asr.l	#8,d1
0002c7dc 33410010	move.w	d1,x_vel(a1)
0002c7e0 c1fcf900	muls.w	#-$700,d0
0002c7e4 e080	asr.l	#8,d0
0002c7e6 33400012	move.w	d0,y_vel(a1)
0002c7ea 601a	bra.s	loc_2C806
0002c7ec 117c0005001c	move.b	#5,anim(a0)
0002c7f2 337cf9000010	move.w	#-$700,x_vel(a1)
0002c7f8 34280008	move.w	x_pos(a0),d2
0002c7fc 94690008	sub.w	x_pos(a1),d2
0002c800 6a04	bpl.s	loc_2C806
0002c802 44690010	neg.w	x_vel(a1)
0002c806 08e900010022	bset	#status.player.in_air,status(a1)
0002c80c 08a900040022	bclr	#status.player.rolljumping,status(a1)
0002c812 08a900050022	bclr	#status.player.pushing,status(a1)
0002c818 4229003c	clr.b	jumping(a1)
0002c81c 303c00d8	move.w	#SndID_BonusBumper,d0
0002c820 4eb900001370	jsr	(PlaySound).l
0002c826 3649	movea.w	a1,a3
0002c828 7604	moveq	#4,d3
0002c82a 7001	moveq	#1,d0
0002c82c 046820000002	subi.w	#palette_line_1,art_tile(a0)
0002c832 6428	bcc.s	loc_2C85C
0002c834 066820000002	addi.w	#palette_line_1,art_tile(a0)
0002c83a 117c00040024	move.b	#4,routine(a0)
0002c840 43f8e700	lea	(CNZ_saucer_data).w,a1
0002c844 12280028	move.b	subtype(a0),d1
0002c848 0241003f	andi.w	#$3F,d1
0002c84c 43f11000	lea	(a1,d1.w),a1
0002c850 5211	addq.b	#1,(a1)
0002c852 0c110003	cmpi.b	#3,(a1)
0002c856 6504	blo.s	loc_2C85C
0002c858 7602	moveq	#2,d3
0002c85a 7032	moveq	#50,d0
0002c85c 4eb900040d42	jsr	(AddPoints2).l
0002c866 6616	bne.s	loc_2C87E
0002c86e 336800080008	move.w	x_pos(a0),x_pos(a1)
0002c874 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002c87a 1343001a	move.b	d3,mapping_frame(a1)
0002c87e 18bc0004	move.b	#4,(a4)
0002c882 4e75	rts	
0002c884 43f90002c89c	lea	(Ani_objD8).l,a1
0002c88e 0c280003001c	cmpi.b	#3,anim(a0)
0002c894 65000076	blo.w	JmpTo46_DeleteObject
0002c90c 4ef9000164e6	jmp	(extractJmpToName("JmpTo46_DeleteObject")).l
0002c912 4ef900017fda	jmp	(extractJmpToName("JmpTo11_AllocateObject")).l
0002c918 4ef9000163d2	jmp	(extractJmpToName("JmpTo31_MarkObjGone")).l
0002c91e 4ef900016544	jmp	(extractJmpToName("JmpTo12_AnimateSprite")).l
0002c924 4ef900016d6e	jmp	(extractJmpToName("JmpTo56_Adjust2PArtPointer")).l
0002c92c 7000	moveq	#0,d0
0002c92e 10280024	move.b	routine(a0),d0
0002c932 323b0006	move.w	ObjD9_Index(pc,d0.w),d1
0002c936 4efb1002	jmp	ObjD9_Index(pc,d1.w)
0002c93e 54280024	addq.b	#2,routine(a0)
0002c942 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002c948 117c00180019	move.b	#$18,width_pixels(a0)
0002c94e 117c00040018	move.b	#4,priority(a0)
0002c954 45e80030	lea	objoff_30(a0),a2
0002c958 43f8b000	lea	(MainCharacter).w,a1
0002c95c 3038f604	move.w	(Ctrl_1).w,d0
0002c960 6110	bsr.s	ObjD9_CheckCharacter
0002c962 43f8b040	lea	(Sidekick).w,a1
0002c966 524a	addq.w	#1,a2
0002c968 3038f606	move.w	(Ctrl_2).w,d0
0002c96c 6104	bsr.s	ObjD9_CheckCharacter
0002c972 4a12	tst.b	(a2)
0002c974 672a	beq.s	loc_2C9A0
0002c976 02000070	andi.b	#button_B_mask|button_C_mask|button_A_mask,d0
0002c97a 6700008c	beq.w	ObjD9_CheckCharacter_End
0002c97e 4229002a	clr.b	obj_control(a1)
0002c982 4212	clr.b	(a2)
0002c984 157c00120002	move.b	#18,2(a2)
0002c98a 02400f00	andi.w	#(button_up_mask|button_down_mask|button_left_mask|button_right_mask)<<8,d0
0002c98e 6706	beq.s	+
0002c990 157c003c0002	move.b	#60,2(a2)
0002c996 337cfd000012	move.w	#-$300,y_vel(a1)
0002c99c 6000006a	bra.w	ObjD9_CheckCharacter_End
0002c9a0 4a2a0002	tst.b	2(a2)
0002c9a4 6708	beq.s	+
0002c9a6 532a0002	subq.b	#1,2(a2)
0002c9aa 6600005c	bne.w	ObjD9_CheckCharacter_End
0002c9ae 30290008	move.w	x_pos(a1),d0
0002c9b2 90680008	sub.w	x_pos(a0),d0
0002c9b6 06400018	addi.w	#$18,d0
0002c9ba 0c400030	cmpi.w	#$30,d0
0002c9be 64000048	bhs.w	ObjD9_CheckCharacter_End
0002c9c2 3229000c	move.w	y_pos(a1),d1
0002c9c6 9268000c	sub.w	y_pos(a0),d1
0002c9ca 0c410010	cmpi.w	#$10,d1
0002c9ce 64000038	bhs.w	ObjD9_CheckCharacter_End
0002c9d2 4a29002a	tst.b	obj_control(a1)
0002c9d6 6b30	bmi.s	ObjD9_CheckCharacter_End
0002c9d8 0c2900060024	cmpi.b	#6,routine(a1)
0002c9de 6428	bhs.s	ObjD9_CheckCharacter_End
0002c9e0 4a78fe08	tst.w	(Debug_placement_mode).w
0002c9e4 6622	bne.s	ObjD9_CheckCharacter_End
0002c9e6 42690010	clr.w	x_vel(a1)
0002c9ea 42690012	clr.w	y_vel(a1)
0002c9ee 42690014	clr.w	inertia(a1)
0002c9f2 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002c9f8 137c0014001c	move.b	#AniIDSonAni_Hang2,anim(a1)
0002c9fe 137c0001002a	move.b	#1,obj_control(a1)
0002ca04 14bc0001	move.b	#1,(a2)
0002ca08 4e75	rts	
0002ca0a 4e71	nop	
0002ca0c 4ef90001643e	jmp	(extractJmpToName("JmpTo7_MarkObjGone3")).l
0002ca14 7000	moveq	#0,d0
0002ca16 10280024	move.b	routine(a0),d0
0002ca1a 323b0006	move.w	Obj4A_Index(pc,d0.w),d1
0002ca1e 4efb1002	jmp	Obj4A_Index(pc,d1.w)
0002ca30 6b02	bmi.s	+
0002ca32 4e75	rts	
0002ca38 43f90002cbdc	lea	(Ani_obj4A).l,a1
0002ca46 5368002c	subq.w	#1,objoff_2C(a0)
0002ca4a 6700025e	beq.w	JmpTo47_DeleteObject
0002ca52 217c0002cbfe0004	move.l	#Obj4A_MapUnc_2CBFE,mappings(a0)
0002ca5a 317c25380002	move.w	#make_art_tile(ArtTile_ArtNem_Octus,1,0),art_tile(a0)
0002ca60 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0002ca66 117c000a0020	move.b	#$A,collision_flags(a0)
0002ca6c 117c00040018	move.b	#4,priority(a0)
0002ca72 117c00100019	move.b	#$10,width_pixels(a0)
0002ca78 117c000b0016	move.b	#$B,y_radius(a0)
0002ca7e 117c00080017	move.b	#8,x_radius(a0)
0002ca88 4eb90001edfa	jsr	(ObjCheckFloorDist).l
0002ca8e 4a41	tst.w	d1
0002ca90 6a1e	bpl.s	+
0002ca92 d368000c	add.w	d1,y_pos(a0)
0002ca96 317c00000012	move.w	#0,y_vel(a0)
0002ca9c 54280024	addq.b	#2,routine(a0)
0002caa0 30280008	move.w	x_pos(a0),d0
0002caa4 9078b008	sub.w	(MainCharacter+x_pos).w,d0
0002caa8 6a06	bpl.s	+
0002caaa 086800000022	bchg	#status.npc.x_flip,status(a0)
0002cab0 3168000c002a	move.w	y_pos(a0),octus_start_position(a0)
0002cab6 4e75	rts	
0002cab8 7000	moveq	#0,d0
0002caba 10280025	move.b	routine_secondary(a0),d0
0002cabe 323b0014	move.w	Obj4A_Main_Index(pc,d0.w),d1
0002cac2 4ebb1010	jsr	Obj4A_Main_Index(pc,d1.w)
0002cac6 43f90002cbdc	lea	(Ani_obj4A).l,a1
0002cade 30280008	move.w	x_pos(a0),d0
0002cae2 9078b008	sub.w	(MainCharacter+x_pos).w,d0
0002cae6 0c400080	cmpi.w	#$80,d0
0002caea 6e16	bgt.s	+
0002caec 0c40ff80	cmpi.w	#-$80,d0
0002caf0 6d10	blt.s	+
0002caf2 54280025	addq.b	#2,routine_secondary(a0)
0002caf6 117c0003001c	move.b	#3,anim(a0)
0002cafc 317c0020002c	move.w	#$20,objoff_2C(a0)
0002cb02 4e75	rts	
0002cb04 5368002c	subq.w	#1,objoff_2C(a0)
0002cb08 6b02	bmi.s	+
0002cb0a 4e75	rts	
0002cb0c 54280025	addq.b	#2,routine_secondary(a0)
0002cb10 117c0004001c	move.b	#4,anim(a0)
0002cb16 317cfe000012	move.w	#-$200,y_vel(a0)
0002cb20 066800100012	addi.w	#$10,y_vel(a0)
0002cb26 6a04	bpl.s	+
0002cb2c 54280025	addq.b	#2,routine_secondary(a0)
0002cb30 317c003c002c	move.w	#60,objoff_2C(a0)
0002cb36 60000038	bra.w	Obj4A_FireBullet
0002cb3a 5368002c	subq.w	#1,objoff_2C(a0)
0002cb3e 6b02	bmi.s	+
0002cb40 4e75	rts	
0002cb42 54280025	addq.b	#2,routine_secondary(a0)
0002cb46 4e75	rts	
0002cb48 066800100012	addi.w	#$10,y_vel(a0)
0002cb4e 3028000c	move.w	y_pos(a0),d0
0002cb52 b068002a	cmp.w	octus_start_position(a0),d0
0002cb56 6404	bhs.s	+
0002cb5c 42280025	clr.b	routine_secondary(a0)
0002cb60 4228001c	clr.b	anim(a0)
0002cb64 42680012	clr.w	y_vel(a0)
0002cb68 117c0001001a	move.b	#1,mapping_frame(a0)
0002cb6e 4e75	rts	
0002cb70 4eb900017fda	jsr	(AllocateObject).l
0002cb76 6662	bne.s	+
0002cb7e 137c00060024	move.b	#6,routine(a1)
0002cb84 237c0002cbfe0004	move.l	#Obj4A_MapUnc_2CBFE,mappings(a1)
0002cb8c 337c25380002	move.w	#make_art_tile(ArtTile_ArtNem_Octus,1,0),art_tile(a1)
0002cb92 137c00040018	move.b	#4,priority(a1)
0002cb98 137c00100019	move.b	#$10,width_pixels(a1)
0002cb9e 336800080008	move.w	x_pos(a0),x_pos(a1)
0002cba4 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002cbaa 337c000f002c	move.w	#$F,objoff_2C(a1)
0002cbb0 136800010001	move.b	render_flags(a0),render_flags(a1)
0002cbb6 136800220022	move.b	status(a0),status(a1)
0002cbbc 137c0002001c	move.b	#2,anim(a1)
0002cbc2 137c00980020	move.b	#$98,collision_flags(a1)
0002cbc8 337cfe000010	move.w	#-$200,x_vel(a1)
0002cbce 082900000001	btst	#render_flags.x_flip,render_flags(a1)
0002cbd4 6704	beq.s	+
0002cbd6 44690010	neg.w	x_vel(a1)
0002cbda 4e75	rts	
0002cca4 4ef9000164f4	jmp	(extractJmpToName("JmpTo31_DisplaySprite")).l
0002ccaa 4ef9000164e6	jmp	(extractJmpToName("JmpTo47_DeleteObject")).l
0002ccb0 4ef9000163d2	jmp	(extractJmpToName("JmpTo32_MarkObjGone")).l
0002ccb6 4ef900016544	jmp	(extractJmpToName("JmpTo13_AnimateSprite")).l
0002ccbc 4ef900016380	jmp	(extractJmpToName("JmpTo2_ObjectMoveAndFall")).l
0002ccc2 4ef9000163ac	jmp	(extractJmpToName("JmpTo19_ObjectMove")).l
0002ccc8 7000	moveq	#0,d0
0002ccca 10280024	move.b	routine(a0),d0
0002ccce 323b0006	move.w	Obj50_Index(pc,d0.w),d1
0002ccd2 4efb1002	jmp	Obj50_Index(pc,d1.w)
0002ccde 54280024	addq.b	#2,routine(a0)
0002cce2 217c0002cf940004	move.l	#Obj50_MapUnc_2CF94,mappings(a0)
0002ccea 317c25000002	move.w	#make_art_tile(ArtTile_ArtNem_Aquis,1,0),art_tile(a0)
0002ccf0 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0002ccf6 117c000a0020	move.b	#$A,collision_flags(a0)
0002ccfc 117c00040018	move.b	#4,priority(a0)
0002cd02 117c00100019	move.b	#$10,width_pixels(a0)
0002cd08 317cff000010	move.w	#-$100,x_vel(a0)
0002cd0e 10280028	move.b	subtype(a0),d0
0002cd12 1200	move.b	d0,d1
0002cd14 024100f0	andi.w	#$F0,d1
0002cd18 e949	lsl.w	#4,d1
0002cd1a 3141002e	move.w	d1,Obj50_shots_remaining(a0)
0002cd1e 31410030	move.w	d1,Obj50_unkown2(a0)
0002cd22 0240000f	andi.w	#$F,d0
0002cd26 e948	lsl.w	#4,d0
0002cd28 5340	subq.w	#1,d0
0002cd2a 31400032	move.w	d0,Obj50_unkown3(a0)
0002cd2e 31400034	move.w	d0,Obj50_unkown4(a0)
0002cd32 3168000c002a	move.w	y_pos(a0),Obj50_unkown1(a0)
0002cd38 3178f646003a	move.w	(Water_Level_1).w,Obj50_unkown5(a0)
0002cd3e 117c0003002e	move.b	#3,Obj50_shots_remaining(a0)
0002cd48 6658	bne.s	Obj50_Main
0002cd50 137c00040024	move.b	#4,routine(a1)
0002cd56 336800080008	move.w	x_pos(a0),x_pos(a1)
0002cd5c 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002cd62 0669000a0008	addi.w	#$A,x_pos(a1)
0002cd68 0669fffa000c	addi.w	#-6,y_pos(a1)
0002cd6e 237c0002cf940004	move.l	#Obj50_MapUnc_2CF94,mappings(a1)
0002cd76 337c25000002	move.w	#make_art_tile(ArtTile_ArtNem_Aquis,1,0),art_tile(a1)
0002cd7c 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
0002cd82 137c00030018	move.b	#3,priority(a1)
0002cd88 136800220022	move.b	status(a0),status(a1)
0002cd8e 137c0003001c	move.b	#3,anim(a1)
0002cd94 21490036	move.l	a1,Obj50_child(a0)
0002cd98 23480036	move.l	a0,Obj50_parent(a1)
0002cd9c 08e800060022	bset	#status.npc.p2_pushing,status(a0)
0002cda2 43f90002cf6c	lea	(Ani_obj50).l,a1
0002cdac 7000	moveq	#0,d0
0002cdae 10280025	move.b	routine_secondary(a0),d0
0002cdb2 323b000e	move.w	Obj50_Main_Index(pc,d0.w),d1
0002cdb6 4ebb100a	jsr	Obj50_Main_Index(pc,d1.w)
0002cdba 61000176	bsr.w	Obj50_ControlWing
0002cdca 22680036	movea.l	Obj50_parent(a0),a1
0002cdce 4a11	tst.b	id(a1)
0002cdd0 67000264	beq.w	JmpTo48_DeleteObject
0002cdd4 0c110050	cmpi.b	#ObjID_Aquis,id(a1)
0002cdd8 6600025c	bne.w	JmpTo48_DeleteObject
0002cddc 082900070022	btst	#status.npc.no_balancing,status(a1)
0002cde2 66000252	bne.w	JmpTo48_DeleteObject
0002cde6 43f90002cf6c	lea	(Ani_obj50).l,a1
0002cdf8 43f90002cf6c	lea	(Ani_obj50).l,a1
0002ce06 4a280001	tst.b	render_flags(a0)
0002ce0a 6b02	bmi.s	+
0002ce0c 4e75	rts	
0002ce0e 54280025	addq.b	#2,routine_secondary(a0)
0002ce12 4e75	rts	
0002ce14 61000098	bsr.w	Obj50_FollowPlayer
0002ce18 4e75	rts	
0002ce1a 610000dc	bsr.w	Obj50_WaitForNextShot
0002ce1e 61000004	bsr.w	Obj50_ChkIfShoot
0002ce22 4e75	rts	
0002ce24 4a28002d	tst.b	Obj50_shooting_flag(a0)
0002ce28 66000082	bne.w	return_2CEAC
0002ce2c 50e8002d	st.b	Obj50_shooting_flag(a0)
0002ce34 4a41	tst.w	d1
0002ce36 6774	beq.s	return_2CEAC
0002ce38 0c41fff0	cmpi.w	#$FFF0,d1
0002ce3c 646e	bhs.s	return_2CEAC
0002ce42 6668	bne.s	return_2CEAC
0002ce4a 137c00060024	move.b	#6,routine(a1)
0002ce50 336800080008	move.w	x_pos(a0),x_pos(a1)
0002ce56 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002ce5c 237c0002cf940004	move.l	#Obj50_MapUnc_2CF94,mappings(a1)
0002ce64 337c25000002	move.w	#make_art_tile(ArtTile_ArtNem_Aquis,1,0),art_tile(a1)
0002ce6a 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
0002ce70 137c00030018	move.b	#3,priority(a1)
0002ce76 137c00980020	move.b	#$98,collision_flags(a1)
0002ce7c 137c0002001c	move.b	#2,anim(a1)
0002ce82 303c000a	move.w	#$A,d0
0002ce86 323c0010	move.w	#$10,d1
0002ce8a 343cfd00	move.w	#-$300,d2
0002ce8e 082800000022	btst	#status.npc.x_flip,status(a0)
0002ce94 6704	beq.s	+
0002ce96 4441	neg.w	d1
0002ce98 4442	neg.w	d2
0002ce9a 9169000c	sub.w	d0,y_pos(a1)
0002ce9e 93690008	sub.w	d1,x_pos(a1)
0002cea2 33420010	move.w	d2,x_vel(a1)
0002cea6 337c02000012	move.w	#$200,y_vel(a1)
0002ceac 4e75	rts	
0002ceae 5328003c	subq.b	#1,Obj50_timer(a0)
0002ceb2 6b36	bmi.s	Obj50_DoneFollowing
0002ceb8 08a800000022	bclr	#status.npc.x_flip,status(a0)
0002cebe 4a40	tst.w	d0
0002cec0 6706	beq.s	+
0002cec2 08e800000022	bset	#status.npc.x_flip,status(a0)
0002cec8 343b001c	move.w	Obj50_Speeds(pc,d0.w),d2
0002cecc d5680010	add.w	d2,x_vel(a0)
0002ced0 343b1014	move.w	Obj50_Speeds(pc,d1.w),d2
0002ced4 d5680012	add.w	d2,y_vel(a0)
0002ced8 303c0100	move.w	#$100,d0
0002cedc 3200	move.w	d0,d1
0002ceea 54280025	addq.b	#2,routine_secondary(a0)
0002ceee 117c0020003c	move.b	#$20,Obj50_timer(a0)
0002cef8 5328003c	subq.b	#1,Obj50_timer(a0)
0002cefc 6b02	bmi.s	+
0002cefe 4e75	rts	
0002cf00 5328002e	subq.b	#1,Obj50_shots_remaining(a0)
0002cf04 6b16	bmi.s	Obj50_GoAway
0002cf06 55280025	subq.b	#2,routine_secondary(a0)
0002cf0a 317cff000012	move.w	#-$100,y_vel(a0)
0002cf10 117c0080003c	move.b	#$80,Obj50_timer(a0)
0002cf16 4228002d	clr.b	Obj50_shooting_flag(a0)
0002cf1a 4e75	rts	
0002cf1c 117c00060025	move.b	#6,routine_secondary(a0)
0002cf22 317cfe000010	move.w	#-$200,x_vel(a0)
0002cf28 42680012	clr.w	y_vel(a0)
0002cf2c 4e75	rts	
0002cf32 700a	moveq	#$A,d0
0002cf34 72fa	moveq	#-6,d1
0002cf36 22680036	movea.l	Obj50_child(a0),a1
0002cf3a 336800080008	move.w	x_pos(a0),x_pos(a1)
0002cf40 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002cf46 136800220022	move.b	status(a0),status(a1)
0002cf4c 136800230023	move.b	respawn_index(a0),respawn_index(a1)
0002cf52 136800010001	move.b	render_flags(a0),render_flags(a1)
0002cf58 082900000022	btst	#status.npc.x_flip,status(a1)
0002cf5e 6702	beq.s	+
0002cf60 4440	neg.w	d0
0002cf62 d1690008	add.w	d0,x_pos(a1)
0002cf66 d369000c	add.w	d1,y_pos(a1)
0002cf6a 4e75	rts	
0002d030 4ef9000164f4	jmp	(extractJmpToName("JmpTo32_DisplaySprite")).l
0002d036 4ef9000164e6	jmp	(extractJmpToName("JmpTo48_DeleteObject")).l
0002d03c 4ef900017fda	jmp	(extractJmpToName("JmpTo12_AllocateObject")).l
0002d042 4ef9000163d2	jmp	(extractJmpToName("JmpTo33_MarkObjGone")).l
0002d048 4ef900016544	jmp	(extractJmpToName("JmpTo14_AnimateSprite")).l
0002d04e 4ef9000366d6	jmp	(extractJmpToName("JmpTo_Obj_GetOrientationToPlayer")).l
0002d054 4ef90003671a	jmp	(extractJmpToName("JmpTo_Obj_CapSpeed")).l
0002d05a 4ef900036754	jmp	(extractJmpToName("JmpTo_Obj_MoveStop")).l
0002d060 4ef9000163ac	jmp	(extractJmpToName("JmpTo20_ObjectMove")).l
0002d068 7000	moveq	#0,d0
0002d06a 10280024	move.b	routine(a0),d0
0002d06e 323b0006	move.w	Obj4B_Index(pc,d0.w),d1
0002d072 4efb1002	jmp	Obj4B_Index(pc,d1.w)
0002d082 43f90002d2ce	lea	(Ani_obj4B).l,a1
0002d090 2268002a	movea.l	Obj4B_parent(a0),a1
0002d094 4a11	tst.b	id(a1)
0002d096 670002d0	beq.w	JmpTo49_DeleteObject
0002d09a 4a690030	tst.w	Obj4B_turn_delay(a1)
0002d09e 6b02	bmi.s	+
0002d0a0 4e75	rts	
0002d0a2 316900080008	move.w	x_pos(a1),x_pos(a0)
0002d0a8 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002d0ae 116900220022	move.b	status(a1),status(a0)
0002d0b4 116900010001	move.b	render_flags(a1),render_flags(a0)
0002d0ba 43f90002d2ce	lea	(Ani_obj4B).l,a1
0002d0c8 217c0002d2ea0004	move.l	#Obj4B_MapUnc_2D2EA,mappings(a0)
0002d0d0 317c03d20002	move.w	#make_art_tile(ArtTile_ArtNem_Buzzer,0,0),art_tile(a0)
0002d0da 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0002d0e0 117c000a0020	move.b	#$A,collision_flags(a0)
0002d0e6 117c00040018	move.b	#4,priority(a0)
0002d0ec 117c00100019	move.b	#$10,width_pixels(a0)
0002d0f2 117c00100016	move.b	#$10,y_radius(a0)
0002d0f8 117c00180017	move.b	#$18,x_radius(a0)
0002d0fe 117c00030018	move.b	#3,priority(a0)
0002d104 54280024	addq.b	#2,routine(a0)
0002d10c 6664	bne.s	+
0002d114 137c00040024	move.b	#4,routine(a1)
0002d11a 237c0002d2ea0004	move.l	#Obj4B_MapUnc_2D2EA,mappings(a1)
0002d122 337c03d20002	move.w	#make_art_tile(ArtTile_ArtNem_Buzzer,0,0),art_tile(a1)
0002d12c 137c00040018	move.b	#4,priority(a1)
0002d132 137c00100019	move.b	#$10,width_pixels(a1)
0002d138 136800220022	move.b	status(a0),status(a1)
0002d13e 136800010001	move.b	render_flags(a0),render_flags(a1)
0002d144 137c0001001c	move.b	#1,anim(a1)
0002d14a 2348002a	move.l	a0,Obj4B_parent(a1)
0002d14e 336800080008	move.w	x_pos(a0),x_pos(a1)
0002d154 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002d15a 317c0100002e	move.w	#$100,Obj4B_move_timer(a0)
0002d160 317cff000010	move.w	#-$100,x_vel(a0)
0002d166 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0002d16c 6704	beq.s	+
0002d16e 44680010	neg.w	x_vel(a0)
0002d172 4e75	rts	
0002d174 7000	moveq	#0,d0
0002d176 10280025	move.b	routine_secondary(a0),d0
0002d17a 323b0014	move.w	Obj4B_Buzzer_States(pc,d0.w),d1
0002d17e 4ebb1010	jsr	Obj4B_Buzzer_States(pc,d1.w)
0002d182 43f90002d2ce	lea	(Ani_obj4B).l,a1
0002d194 61000040	bsr.w	Obj4B_ChkPlayers
0002d198 53680030	subq.w	#1,Obj4B_turn_delay(a0)
0002d19c 30280030	move.w	Obj4B_turn_delay(a0),d0
0002d1a0 0c40000f	cmpi.w	#$F,d0
0002d1a4 6714	beq.s	Obj4B_TurnAround
0002d1a6 4a40	tst.w	d0
0002d1a8 6a0e	bpl.s	return_2D1B8
0002d1aa 5368002e	subq.w	#1,Obj4B_move_timer(a0)
0002d1ae 6e0001dc	bgt.w	JmpTo21_ObjectMove
0002d1b2 317c001e0030	move.w	#$1E,Obj4B_turn_delay(a0)
0002d1b8 4e75	rts	
0002d1ba 51e80032	sf	Obj4B_shooting_flag(a0)
0002d1be 44680010	neg.w	x_vel(a0)
0002d1c2 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
0002d1c8 086800000022	bchg	#status.npc.x_flip,status(a0)
0002d1ce 317c0100002e	move.w	#$100,Obj4B_move_timer(a0)
0002d1d4 4e75	rts	
0002d1d6 4a280032	tst.b	Obj4B_shooting_flag(a0)
0002d1da 66000056	bne.w	return_2D232
0002d1de 30280008	move.w	x_pos(a0),d0
0002d1e2 43f8b000	lea	(MainCharacter).w,a1
0002d1e6 08380000fe0f	btst	#0,(Vint_runcount+3).w
0002d1ec 6704	beq.s	+
0002d1ee 43f8b040	lea	(Sidekick).w,a1
0002d1f2 90690008	sub.w	x_pos(a1),d0
0002d1f6 3200	move.w	d0,d1
0002d1f8 6a02	bpl.s	+
0002d1fa 4440	neg.w	d0
0002d1fc 0c400028	cmpi.w	#$28,d0
0002d200 6d30	blt.s	return_2D232
0002d202 0c400030	cmpi.w	#$30,d0
0002d206 6e2a	bgt.s	return_2D232
0002d208 4a41	tst.w	d1
0002d20a 6a0a	bpl.s	Obj4B_PlayerIsLeft
0002d20c 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0002d212 671e	beq.s	return_2D232
0002d214 6008	bra.s	Obj4B_ReadyToShoot
0002d216 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0002d21c 6614	bne.s	return_2D232
0002d21e 50e80032	st.b	Obj4B_shooting_flag(a0)
0002d222 54280025	addq.b	#2,routine_secondary(a0)
0002d226 117c0003001c	move.b	#3,anim(a0)
0002d22c 317c00320034	move.w	#$32,Obj4B_shot_timer(a0)
0002d232 4e75	rts	
0002d234 30280034	move.w	Obj4B_shot_timer(a0),d0
0002d238 5340	subq.w	#1,d0
0002d23a 6d0c	blt.s	Obj4B_DoneShooting
0002d23c 31400034	move.w	d0,Obj4B_shot_timer(a0)
0002d240 0c400014	cmpi.w	#$14,d0
0002d244 6708	beq.s	Obj4B_ShootProjectile
0002d246 4e75	rts	
0002d248 55280025	subq.b	#2,routine_secondary(a0)
0002d24c 4e75	rts	
0002d24e 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002d254 6672	bne.s	+
0002d25c 137c00060024	move.b	#6,routine(a1)
0002d262 237c0002d2ea0004	move.l	#Obj4B_MapUnc_2D2EA,mappings(a1)
0002d26a 337c03d20002	move.w	#make_art_tile(ArtTile_ArtNem_Buzzer,0,0),art_tile(a1)
0002d274 137c00040018	move.b	#4,priority(a1)
0002d27a 137c00980020	move.b	#$98,collision_flags(a1)
0002d280 137c00100019	move.b	#$10,width_pixels(a1)
0002d286 136800220022	move.b	status(a0),status(a1)
0002d28c 136800010001	move.b	render_flags(a0),render_flags(a1)
0002d292 137c0002001c	move.b	#2,anim(a1)
0002d298 336800080008	move.w	x_pos(a0),x_pos(a1)
0002d29e 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002d2a4 06690018000c	addi.w	#$18,y_pos(a1)
0002d2aa 303c000d	move.w	#$D,d0
0002d2ae 337c01800012	move.w	#$180,y_vel(a1)
0002d2b4 337cfe800010	move.w	#-$180,x_vel(a1)
0002d2ba 082900000001	btst	#render_flags.x_flip,render_flags(a1)
0002d2c0 6706	beq.s	+
0002d2c2 44690010	neg.w	x_vel(a1)
0002d2c6 4440	neg.w	d0
0002d2c8 d1690008	add.w	d0,x_pos(a1)
0002d2cc 4e75	rts	
0002d368 4ef9000164e6	jmp	(extractJmpToName("JmpTo49_DeleteObject")).l
0002d36e 4ef900017ffa	jmp	(extractJmpToName("JmpTo20_AllocateObjectAfterCurrent")).l
0002d374 4ef900016544	jmp	(extractJmpToName("JmpTo15_AnimateSprite")).l
0002d37a 4ef900016d8a	jmp	(extractJmpToName("JmpTo7_Adjust2PArtPointer2")).l
0002d380 4ef900016472	jmp	(extractJmpToName("JmpTo_MarkObjGone_P1")).l
0002d386 4ef900016d6e	jmp	(extractJmpToName("JmpTo57_Adjust2PArtPointer")).l
0002d38c 4ef9000163ac	jmp	(extractJmpToName("JmpTo21_ObjectMove")).l
0002d394 7000	moveq	#0,d0
0002d396 10280024	move.b	routine(a0),d0
0002d39a 323b000a	move.w	Obj5C_Index(pc,d0.w),d1
0002d39e 4ebb1006	jsr	Obj5C_Index(pc,d1.w)
0002d3aa 54280024	addq.b	#2,routine(a0)
0002d3ae 217c0002d4420004	move.l	#Obj5C_MapUnc_2D442,mappings(a0)
0002d3b6 317c04140002	move.w	#make_art_tile(ArtTile_ArtNem_Masher,0,0),art_tile(a0)
0002d3c0 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002d3c6 117c00040018	move.b	#4,priority(a0)
0002d3cc 117c00090020	move.b	#9,collision_flags(a0)
0002d3d2 117c00100019	move.b	#$10,width_pixels(a0)
0002d3d8 317cfc000012	move.w	#-$400,y_vel(a0)
0002d3de 3168000c0030	move.w	y_pos(a0),Obj5C_initial_y_pos(a0)
0002d3e4 43f90002d430	lea	(Ani_obj5C).l,a1
0002d3f2 066800180012	addi.w	#$18,y_vel(a0)
0002d3f8 30280030	move.w	Obj5C_initial_y_pos(a0),d0
0002d3fc b068000c	cmp.w	y_pos(a0),d0
0002d400 640a	bhs.s	+
0002d402 3140000c	move.w	d0,y_pos(a0)
0002d406 317cfb000012	move.w	#-$500,y_vel(a0)
0002d40c 117c0001001c	move.b	#1,anim(a0)
0002d412 044000c0	subi.w	#$C0,d0
0002d416 b068000c	cmp.w	y_pos(a0),d0
0002d41a 6412	bhs.s	+
0002d41c 117c0000001c	move.b	#0,anim(a0)
0002d422 4a680012	tst.w	y_vel(a0)
0002d426 6b06	bmi.s	+
0002d428 117c0002001c	move.b	#2,anim(a0)
0002d42e 4e75	rts	
0002d47c 4ef9000163d2	jmp	(extractJmpToName("JmpTo34_MarkObjGone")).l
0002d482 4ef900016544	jmp	(extractJmpToName("JmpTo16_AnimateSprite")).l
0002d488 4ef900016d6e	jmp	(extractJmpToName("JmpTo58_Adjust2PArtPointer")).l
0002d48e 4ef9000163ac	jmp	(extractJmpToName("JmpTo22_ObjectMove")).l
0002d494 7000	moveq	#0,d0
0002d496 10280024	move.b	routine(a0),d0
0002d49a 323b0006	move.w	Obj58_Index(pc,d0.w),d1
0002d49e 4efb1002	jmp	Obj58_Index(pc,d1.w)
0002d4a6 54280024	addq.b	#2,routine(a0)
0002d4aa 217c0002d50a0004	move.l	#Obj58_MapUnc_2D50A,mappings(a0)
0002d4b2 317c85800002	move.w	#make_art_tile(ArtTile_ArtNem_FieryExplosion,0,1),art_tile(a0)
0002d4bc 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002d4c2 117c00000018	move.b	#0,priority(a0)
0002d4c8 117c00000020	move.b	#0,collision_flags(a0)
0002d4ce 117c000c0019	move.b	#$C,width_pixels(a0)
0002d4d4 117c0007001e	move.b	#7,anim_frame_duration(a0)
0002d4da 117c0000001a	move.b	#0,mapping_frame(a0)
0002d4e0 303c00c4	move.w	#SndID_BossExplosion,d0
0002d4e4 4ef900001370	jmp	(PlaySound).l
0002d4ea 4e75	rts	
0002d4ec 5328001e	subq.b	#1,anim_frame_duration(a0)
0002d4f0 6a14	bpl.s	+
0002d4f2 117c0007001e	move.b	#7,anim_frame_duration(a0)
0002d4f8 5228001a	addq.b	#1,mapping_frame(a0)
0002d4fc 0c280007001a	cmpi.b	#7,mapping_frame(a0)
0002d502 67000216	beq.w	JmpTo50_DeleteObject
0002d55e 1028001a	move.b	boss_sine_count(a0),d0
0002d562 4eb9000033b6	jsr	(CalcSine).l
0002d568 ec40	asr.w	#6,d0
0002d56a d078f754	add.w	(Boss_Y_pos).w,d0
0002d56e 3140000c	move.w	d0,y_pos(a0)
0002d572 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
0002d578 5428001a	addq.b	#2,boss_sine_count(a0)
0002d57c 0c2800080026	cmpi.b	#8,boss_routine(a0)
0002d582 643e	bhs.s	return_2D5C2
0002d584 4a280032	tst.b	boss_hitcount2(a0)
0002d588 673a	beq.s	Boss_Defeat
0002d58a 4a280020	tst.b	collision_flags(a0)
0002d58e 6632	bne.s	return_2D5C2
0002d590 4a280014	tst.b	boss_invulnerable_time(a0)
0002d594 6610	bne.s	+
0002d596 117c00200014	move.b	#$20,boss_invulnerable_time(a0)
0002d59c 303c00ac	move.w	#SndID_BossHit,d0
0002d5a0 4eb900001370	jsr	(PlaySound).l
0002d5a6 43f8fb22	lea	(Normal_palette_line2+2).w,a1
0002d5aa 7000	moveq	#0,d0
0002d5ac 4a51	tst.w	(a1)
0002d5ae 6604	bne.s	+
0002d5b0 303c0eee	move.w	#$EEE,d0
0002d5b4 3280	move.w	d0,(a1)
0002d5b6 53280014	subq.b	#1,boss_invulnerable_time(a0)
0002d5ba 6606	bne.s	return_2D5C2
0002d5bc 117c000f0020	move.b	#$F,collision_flags(a0)
0002d5c2 4e75	rts	
0002d5c4 7064	moveq	#100,d0
0002d5ca 31fc00b3f75c	move.w	#$B3,(Boss_Countdown).w
0002d5d0 117c00080026	move.b	#8,boss_routine(a0)
0002d5d6 7040	moveq	#PLCID_Capsule,d0
0002d5dc 4e75	rts	
0002d5de 2438f750	move.l	(Boss_X_pos).w,d2
0002d5e2 2638f754	move.l	(Boss_Y_pos).w,d3
0002d5e6 3038f758	move.w	(Boss_X_vel).w,d0
0002d5ea 48c0	ext.l	d0
0002d5ec e180	asl.l	#8,d0
0002d5ee d480	add.l	d0,d2
0002d5f0 3038f75a	move.w	(Boss_Y_vel).w,d0
0002d5f4 48c0	ext.l	d0
0002d5f6 e180	asl.l	#8,d0
0002d5f8 d680	add.l	d0,d3
0002d5fa 21c2f750	move.l	d2,(Boss_X_pos).w
0002d5fe 21c3f754	move.l	d3,(Boss_Y_pos).w
0002d602 4e75	rts	
0002d604 7c00	moveq	#0,d6
0002d606 2849	movea.l	a1,a4
0002d608 45f8f740	lea	(Boss_AnimationArray).w,a2
0002d60c 47e8000b	lea	mainspr_mapframe(a0),a3
0002d610 4a13	tst.b	(a3)
0002d612 6604	bne.s	+
0002d614 544a	addq.w	#2,a2
0002d616 6004	bra.s	++
0002d618 61000010	bsr.w	AnimateBoss_Loop
0002d61c 7c00	moveq	#0,d6
0002d61e 1c28000f	move.b	mainspr_childsprites(a0),d6
0002d622 5346	subq.w	#1,d6
0002d624 6b6a	bmi.s	return_2D690
0002d626 47e80015	lea	sub2_mapframe(a0),a3
0002d62a 224c	movea.l	a4,a1
0002d62c 7000	moveq	#0,d0
0002d62e 7200	moveq	#0,d1
0002d630 7400	moveq	#0,d2
0002d632 7800	moveq	#0,d4
0002d634 101a	move.b	(a2)+,d0
0002d636 1200	move.b	d0,d1
0002d638 e809	lsr.b	#4,d1
0002d63a 0200000f	andi.b	#$F,d0
0002d63e 1400	move.b	d0,d2
0002d640 b200	cmp.b	d0,d1
0002d642 6702	beq.s	+
0002d644 50c4	st.b	d4
0002d646 1a00	move.b	d0,d5
0002d648 e90d	lsl.b	#4,d5
0002d64a 8a00	or.b	d0,d5
0002d64c 101a	move.b	(a2)+,d0
0002d64e 1200	move.b	d0,d1
0002d650 e809	lsr.b	#4,d1
0002d652 4a04	tst.b	d4
0002d654 6704	beq.s	+
0002d656 7000	moveq	#0,d0
0002d658 7200	moveq	#0,d1
0002d65a 0200000f	andi.b	#$F,d0
0002d662 6a18	bpl.s	loc_2D67C
0002d664 d442	add.w	d2,d2
0002d666 d2f12000	adda.w	(a1,d2.w),a1
0002d66a 1011	move.b	(a1),d0
0002d66c 14311001	move.b	1(a1,d1.w),d2
0002d670 6b20	bmi.s	AnimateBoss_CmdParam
0002d672 0202007f	andi.b	#$7F,d2
0002d676 1682	move.b	d2,(a3)
0002d67c e909	lsl.b	#4,d1
0002d67e 8001	or.b	d1,d0
0002d680 1540ffff	move.b	d0,-1(a2)
0002d684 1545fffe	move.b	d5,-2(a2)
0002d68c 51ceff9c	dbf	d6,AnimateBoss_Loop
0002d690 4e75	rts	
0002d692 5202	addq.b	#1,d2
0002d694 660a	bne.s	+
0002d696 123c0000	move.b	#0,d1
0002d69a 14290001	move.b	1(a1),d2
0002d69e 60d2	bra.s	loc_2D672
0002d6a0 5202	addq.b	#1,d2
0002d6a2 6608	bne.s	+
0002d6aa 4e75	rts	
0002d6ac 5202	addq.b	#1,d2
0002d6ae 660a	bne.s	+
0002d6b0 020500f0	andi.b	#$F0,d5
0002d6b4 8a311002	or.b	2(a1,d1.w),d5
0002d6b8 60c2	bra.s	loc_2D67C
0002d6ba 5202	addq.b	#1,d2
0002d6bc 660c	bne.s	+
0002d6be 7600	moveq	#0,d3
0002d6c0 12311002	move.b	2(a1,d1.w),d1
0002d6c4 14311001	move.b	1(a1,d1.w),d2
0002d6c8 60a8	bra.s	loc_2D672
0002d6ca 4e75	rts	
0002d6cc 1038fe0f	move.b	(Vint_runcount+3).w,d0
0002d6d0 02000007	andi.b	#7,d0
0002d6d4 663c	bne.s	+
0002d6d6 4eb900017fda	jsr	(AllocateObject).l
0002d6dc 6634	bne.s	+
0002d6e4 336800080008	move.w	x_pos(a0),x_pos(a1)
0002d6ea 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002d6f0 4eb900003390	jsr	(RandomNumber).l
0002d6f6 3200	move.w	d0,d1
0002d6f8 7200	moveq	#0,d1
0002d6fa 1200	move.b	d0,d1
0002d6fc e409	lsr.b	#2,d1
0002d6fe 04410020	subi.w	#$20,d1
0002d702 d3690008	add.w	d1,x_pos(a1)
0002d706 e048	lsr.w	#8,d0
0002d708 e408	lsr.b	#2,d0
0002d70a 04400020	subi.w	#$20,d0
0002d70e d169000c	add.w	d0,y_pos(a1)
0002d712 4e75	rts	
0002d714 4ef9000164f4	jmp	(extractJmpToName("JmpTo33_DisplaySprite")).l
0002d71a 4ef9000164e6	jmp	(extractJmpToName("JmpTo50_DeleteObject")).l
0002d720 4ef90000161e	jmp	(extractJmpToName("JmpTo4_LoadPLC")).l
0002d726 4ef900040d06	jmp	(extractJmpToName("JmpTo_AddPoints")).l
0002d72c 4ef900016d6e	jmp	(extractJmpToName("JmpTo59_Adjust2PArtPointer")).l
0002d734 7000	moveq	#0,d0
0002d736 10280024	move.b	routine(a0),d0
0002d73a 323b0006	move.w	Obj5D_Index(pc,d0.w),d1
0002d73e 4efb1002	jmp	Obj5D_Index(pc,d1.w)
0002d75e 217c0002ed8c0004	move.l	#Obj5D_MapUnc_2ED8C,mappings(a0)
0002d766 317c24200002	move.w	#make_art_tile(ArtTile_ArtNem_Eggpod_3,1,0),art_tile(a0)
0002d76c 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0002d772 117c00200019	move.b	#$20,width_pixels(a0)
0002d778 317c2b800008	move.w	#$2B80,x_pos(a0)
0002d77e 317c04b0000c	move.w	#$4B0,y_pos(a0)
0002d784 117c00030018	move.b	#3,priority(a0)
0002d78a 117c000f0020	move.b	#$F,collision_flags(a0)
0002d790 117c00080021	move.b	#8,collision_property(a0)
0002d796 54280024	addq.b	#2,routine(a0)
0002d79a 316800080030	move.w	x_pos(a0),Obj5D_x_pos_next(a0)
0002d7a0 3168000c0038	move.w	y_pos(a0),Obj5D_y_pos_next(a0)
0002d7a6 08a80003002d	bclr	#3,Obj5D_status(a0)
0002d7b0 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002d7b6 660000f4	bne.w	loc_2D8AC
0002d7c0 23480034	move.l	a0,Obj5D_parent(a1)
0002d7c4 21490034	move.l	a1,Obj5D_parent(a0)
0002d7c8 237c0002ed8c0004	move.l	#Obj5D_MapUnc_2ED8C,mappings(a1)
0002d7d0 337c04200002	move.w	#make_art_tile(ArtTile_ArtNem_Eggpod_3,0,0),art_tile(a1)
0002d7d6 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002d7dc 137c00200019	move.b	#$20,width_pixels(a1)
0002d7e2 137c00030018	move.b	#3,priority(a1)
0002d7e8 236800080008	move.l	x_pos(a0),x_pos(a1)
0002d7ee 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002d7f4 137c00160024	move.b	#$16,routine(a1)
0002d7fa 137c0001001c	move.b	#1,anim(a1)
0002d800 136800010001	move.b	render_flags(a0),render_flags(a1)
0002d80a 4a280028	tst.b	subtype(a0)
0002d80e 6b00009c	bmi.w	loc_2D8AC
0002d812 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002d818 66000092	bne.w	loc_2D8AC
0002d822 23480034	move.l	a0,Obj5D_parent(a1)
0002d826 237c0002ee880004	move.l	#Obj5D_MapUnc_2EE88,mappings(a1)
0002d82e 337c04180002	move.w	#make_art_tile(ArtTile_ArtNem_EggpodJets_1,0,0),art_tile(a1)
0002d838 117c0001001e	move.b	#1,anim_frame_duration(a0)
0002d83e 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002d844 137c00200019	move.b	#$20,width_pixels(a1)
0002d84a 137c00030018	move.b	#3,priority(a1)
0002d850 236800080008	move.l	x_pos(a0),x_pos(a1)
0002d856 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002d85c 137c00180024	move.b	#$18,routine(a1)
0002d862 136800010001	move.b	render_flags(a0),render_flags(a1)
0002d868 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002d86e 663c	bne.s	loc_2D8AC
0002d876 23480034	move.l	a0,Obj5D_parent(a1)
0002d87a 237c0002eadc0004	move.l	#Obj5D_MapUnc_2EADC,mappings(a1)
0002d882 337c25000002	move.w	#make_art_tile(ArtTile_ArtNem_CPZBoss,1,0),art_tile(a1)
0002d888 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002d88e 137c00200019	move.b	#$20,width_pixels(a1)
0002d894 137c00020018	move.b	#2,priority(a1)
0002d89a 236800080008	move.l	x_pos(a0),x_pos(a1)
0002d8a0 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002d8a6 137c00120024	move.b	#$12,routine(a1)
0002d8ac 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002d8b2 6654	bne.s	loc_2D908
0002d8ba 23480034	move.l	a0,Obj5D_parent(a1)
0002d8be 237c0002eadc0004	move.l	#Obj5D_MapUnc_2EADC,mappings(a1)
0002d8c6 337c25000002	move.w	#make_art_tile(ArtTile_ArtNem_CPZBoss,1,0),art_tile(a1)
0002d8cc 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002d8d2 137c00200019	move.b	#$20,width_pixels(a1)
0002d8d8 137c00040018	move.b	#4,priority(a1)
0002d8de 236800080008	move.l	x_pos(a0),x_pos(a1)
0002d8e4 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002d8ea 04690038000c	subi.w	#$38,y_pos(a1)
0002d8f0 046900100008	subi.w	#$10,x_pos(a1)
0002d8f6 337cfff0002e	move.w	#-$10,Obj5D_x_vel(a1)
0002d8fc 062900100024	addi.b	#$10,routine(a1)
0002d902 137c0006001c	move.b	#6,anim(a1)
0002d908 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002d90e 663c	bne.s	return_2D94C
0002d916 23480034	move.l	a0,Obj5D_parent(a1)
0002d91a 237c0002eadc0004	move.l	#Obj5D_MapUnc_2EADC,mappings(a1)
0002d922 337c25000002	move.w	#make_art_tile(ArtTile_ArtNem_CPZBoss,1,0),art_tile(a1)
0002d928 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002d92e 137c00200019	move.b	#$20,width_pixels(a1)
0002d934 137c00040018	move.b	#4,priority(a1)
0002d93a 236800080008	move.l	x_pos(a0),x_pos(a1)
0002d940 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002d946 137c00040024	move.b	#4,routine(a1)
0002d94c 4e75	rts	
0002d94e 61000042	bsr.w	Obj5D_LookAtChar
0002d952 7000	moveq	#0,d0
0002d954 10280025	move.b	routine_secondary(a0),d0
0002d958 323b002a	move.w	Obj5D_Main_Index(pc,d0.w),d1
0002d95c 4ebb1026	jsr	Obj5D_Main_Index(pc,d1.w)
0002d960 43f90002ed5c	lea	(Ani_obj5D_b).l,a1
0002d966 4eb900016544	jsr	(AnimateSprite).l
0002d96c 10280022	move.b	status(a0),d0
0002d970 02000003	andi.b	#1<<status.npc.x_flip|1<<status.npc.y_flip,d0
0002d974 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
0002d97a 81280001	or.b	d0,render_flags(a0)
0002d97e 4ef9000164f4	jmp	(DisplaySprite).l
0002d992 0c2800080025	cmpi.b	#8,routine_secondary(a0)
0002d998 6c10	bge.s	+
0002d99a 3038b008	move.w	(MainCharacter+x_pos).w,d0
0002d99e 90680008	sub.w	x_pos(a0),d0
0002d9a2 6e08	bgt.s	++
0002d9a4 08a800000022	bclr	#status.npc.x_flip,status(a0)
0002d9aa 4e75	rts	
0002d9ac 08e800000022	bset	#status.npc.x_flip,status(a0)
0002d9b2 4e75	rts	
0002d9b4 5368003c	subq.w	#1,Obj5D_defeat_timer(a0)
0002d9b8 6a00017a	bpl.w	Obj5D_Main_CreateExplosion
0002d9bc 08e800000022	bset	#status.npc.x_flip,status(a0)
0002d9c2 08a800070022	bclr	#status.npc.no_balancing,status(a0)
0002d9c8 42680010	clr.w	x_vel(a0)
0002d9cc 54280025	addq.b	#2,routine_secondary(a0)
0002d9d0 317cffda003c	move.w	#-$26,Obj5D_defeat_timer(a0)
0002d9d6 4e75	rts	
0002d9d8 5268003c	addq.w	#1,Obj5D_defeat_timer(a0)
0002d9dc 670a	beq.s	+
0002d9de 6a0e	bpl.s	++
0002d9e0 066800180012	addi.w	#$18,y_vel(a0)
0002d9e6 6032	bra.s	Obj5D_Main_A_End
0002d9e8 42680012	clr.w	y_vel(a0)
0002d9ec 602c	bra.s	Obj5D_Main_A_End
0002d9ee 0c680030003c	cmpi.w	#$30,Obj5D_defeat_timer(a0)
0002d9f4 6510	blo.s	+
0002d9f6 6716	beq.s	++
0002d9f8 0c680038003c	cmpi.w	#$38,Obj5D_defeat_timer(a0)
0002d9fe 651a	blo.s	Obj5D_Main_A_End
0002da00 54280025	addq.b	#2,routine_secondary(a0)
0002da04 6014	bra.s	Obj5D_Main_A_End
0002da0c 600c	bra.s	Obj5D_Main_A_End
0002da0e 42680012	clr.w	y_vel(a0)
0002da1a 610000f2	bsr.w	Obj5D_Main_Move
0002da1e 6000005e	bra.w	Obj5D_Main_Pos_and_Collision
0002da22 08e80006002e	bset	#6,Obj5D_status2(a0)
0002da28 317c04000010	move.w	#$400,x_vel(a0)
0002da2e 317cffc00012	move.w	#-$40,y_vel(a0)
0002da34 0c782c30eeca	cmpi.w	#$2C30,(Camera_Max_X_pos).w
0002da3a 6406	bhs.s	+
0002da3c 5478eeca	addq.w	#2,(Camera_Max_X_pos).w
0002da40 6006	bra.s	Obj5D_Main_C_End
0002da42 4a280001	tst.b	render_flags(a0)
0002da46 6a08	bpl.s	Obj5D_Main_Delete
0002da48 610000c4	bsr.w	Obj5D_Main_Move
0002da4c 60000030	bra.w	Obj5D_Main_Pos_and_Collision
0002da50 588f	addq.l	#4,sp
0002da52 22680034	movea.l	Obj5D_parent(a0),a1
0002da56 4eb9000164e8	jsr	(DeleteObject2).l
0002da5c 4ef9000164e6	jmp	(DeleteObject).l
0002da62 317c01000012	move.w	#$100,y_vel(a0)
0002da68 610000a4	bsr.w	Obj5D_Main_Move
0002da6c 0c6804c00038	cmpi.w	#$4C0,Obj5D_y_pos_next(a0)
0002da72 660a	bne.s	Obj5D_Main_Pos_and_Collision
0002da74 317c00000012	move.w	#0,y_vel(a0)
0002da7a 54280025	addq.b	#2,routine_secondary(a0)
0002da7e 1028003f	move.b	Obj5D_hover_counter(a0),d0
0002da82 4eb9000033b6	jsr	(CalcSine).l
0002da88 ec40	asr.w	#6,d0
0002da8a d0680038	add.w	Obj5D_y_pos_next(a0),d0
0002da8e 3140000c	move.w	d0,y_pos(a0)
0002da92 316800300008	move.w	Obj5D_x_pos_next(a0),x_pos(a0)
0002da98 5428003f	addq.b	#2,Obj5D_hover_counter(a0)
0002da9c 0c2800080025	cmpi.b	#8,routine_secondary(a0)
0002daa2 6444	bhs.s	return_2DAE8
0002daa4 4a280022	tst.b	status(a0)
0002daa8 6b40	bmi.s	Obj5D_Defeated
0002daaa 4a280020	tst.b	collision_flags(a0)
0002daae 6638	bne.s	return_2DAE8
0002dab0 4a28003e	tst.b	Obj5D_invulnerable_time(a0)
0002dab4 6610	bne.s	+
0002dab6 117c0020003e	move.b	#32,Obj5D_invulnerable_time(a0)
0002dabc 303c00ac	move.w	#SndID_BossHit,d0
0002dac0 4eb900001370	jsr	(PlaySound).l
0002dac6 43f8fb22	lea	(Normal_palette_line2+2).w,a1
0002daca 7000	moveq	#0,d0
0002dacc 4a51	tst.w	(a1)
0002dace 6604	bne.s	+
0002dad0 303c0eee	move.w	#$EEE,d0
0002dad4 3280	move.w	d0,(a1)
0002dad6 5328003e	subq.b	#1,Obj5D_invulnerable_time(a0)
0002dada 660c	bne.s	return_2DAE8
0002dadc 117c000f0020	move.b	#$F,collision_flags(a0)
0002dae2 08a80001002d	bclr	#1,Obj5D_status(a0)
0002dae8 4e75	rts	
0002daea 7064	moveq	#100,d0
0002daf0 117c00080025	move.b	#8,routine_secondary(a0)
0002daf6 317c00b3003c	move.w	#60*3-1,Obj5D_defeat_timer(a0)
0002dafc 22680034	movea.l	Obj5D_parent(a0),a1
0002db00 137c0004001c	move.b	#4,anim(a1)
0002db06 7040	moveq	#PLCID_Capsule,d0
0002db0c 4e75	rts	
0002db0e 24280030	move.l	Obj5D_x_pos_next(a0),d2
0002db12 26280038	move.l	Obj5D_y_pos_next(a0),d3
0002db16 30280010	move.w	x_vel(a0),d0
0002db1a 48c0	ext.l	d0
0002db1c e180	asl.l	#8,d0
0002db1e d480	add.l	d0,d2
0002db20 30280012	move.w	y_vel(a0),d0
0002db24 48c0	ext.l	d0
0002db26 e180	asl.l	#8,d0
0002db28 d680	add.l	d0,d3
0002db2a 21420030	move.l	d2,Obj5D_x_pos_next(a0)
0002db2e 21430038	move.l	d3,Obj5D_y_pos_next(a0)
0002db32 4e75	rts	
0002db34 1038fe0f	move.b	(Vint_runcount+3).w,d0
0002db38 02000007	andi.b	#7,d0
0002db3c 663c	bne.s	+
0002db3e 4eb900017fda	jsr	(AllocateObject).l
0002db44 6634	bne.s	+
0002db4c 336800080008	move.w	x_pos(a0),x_pos(a1)
0002db52 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002db58 4eb900003390	jsr	(RandomNumber).l
0002db5e 3200	move.w	d0,d1
0002db60 7200	moveq	#0,d1
0002db62 1200	move.b	d0,d1
0002db64 e409	lsr.b	#2,d1
0002db66 04410020	subi.w	#$20,d1
0002db6a d3690008	add.w	d1,x_pos(a1)
0002db6e e048	lsr.w	#8,d0
0002db70 e408	lsr.b	#2,d0
0002db72 04400020	subi.w	#$20,d0
0002db76 d169000c	add.w	d0,y_pos(a1)
0002db7a 4e75	rts	
0002db7c 4eb900017fda	jsr	(AllocateObject).l
0002db82 6612	bne.s	+
0002db8a 336800080008	move.w	x_pos(a0),x_pos(a1)
0002db90 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002db96 4e75	rts	
0002db98 08280003002d	btst	#3,Obj5D_status(a0)
0002db9e 6606	bne.s	+
0002dba0 303c2b30	move.w	#$2B30,d0
0002dba4 6004	bra.s	++
0002dba6 303c2a50	move.w	#$2A50,d0
0002dbaa 3200	move.w	d0,d1
0002dbac 90680030	sub.w	Obj5D_x_pos_next(a0),d0
0002dbb0 6a02	bpl.s	+
0002dbb2 4440	neg.w	d0
0002dbb4 0c400003	cmpi.w	#3,d0
0002dbb8 6f1c	ble.s	Obj5D_Main_2_Stop
0002dbba b2680030	cmp.w	Obj5D_x_pos_next(a0),d1
0002dbbe 6e08	bgt.s	Obj5D_Main_2_MoveRight
0002dbc0 317cfd000010	move.w	#-$300,x_vel(a0)
0002dbc6 6006	bra.s	Obj5D_Main_2_End
0002dbc8 317c03000010	move.w	#$300,x_vel(a0)
0002dbce 6100ff3e	bsr.w	Obj5D_Main_Move
0002dbd2 6000feaa	bra.w	Obj5D_Main_Pos_and_Collision
0002dbd6 0c6804c00038	cmpi.w	#$4C0,Obj5D_y_pos_next(a0)
0002dbdc 6600fea0	bne.w	Obj5D_Main_Pos_and_Collision
0002dbe0 317c00000010	move.w	#0,x_vel(a0)
0002dbe6 317c00000012	move.w	#0,y_vel(a0)
0002dbec 54280025	addq.b	#2,routine_secondary(a0)
0002dbf0 08680003002d	bchg	#3,Obj5D_status(a0)
0002dbf6 08e80000002e	bset	#0,Obj5D_status2(a0)
0002dbfc 6000fe80	bra.w	Obj5D_Main_Pos_and_Collision
0002dc00 08280000002e	btst	#0,Obj5D_status2(a0)
0002dc06 6704	beq.s	+
0002dc08 6000fe74	bra.w	Obj5D_Main_Pos_and_Collision
0002dc0c 54280025	addq.b	#2,routine_secondary(a0)
0002dc10 6000fe6c	bra.w	Obj5D_Main_Pos_and_Collision
0002dc14 3038b008	move.w	(MainCharacter+x_pos).w,d0
0002dc18 0640004c	addi.w	#76,d0
0002dc1c b0680030	cmp.w	Obj5D_x_pos_next(a0),d0
0002dc20 6e20	bgt.s	Obj5D_Main_6_MoveRight
0002dc22 6700fe5a	beq.w	Obj5D_Main_Pos_and_Collision
0002dc26 04a8000100000030	subi.l	#$10000,Obj5D_x_pos_next(a0)
0002dc2e 0c682a280030	cmpi.w	#$2A28,Obj5D_x_pos_next(a0)
0002dc34 6e00fe48	bgt.w	Obj5D_Main_Pos_and_Collision
0002dc38 317c2a280030	move.w	#$2A28,Obj5D_x_pos_next(a0)
0002dc3e 6000fe3e	bra.w	Obj5D_Main_Pos_and_Collision
0002dc42 06a8000100000030	addi.l	#$10000,Obj5D_x_pos_next(a0)
0002dc4a 0c682b700030	cmpi.w	#$2B70,Obj5D_x_pos_next(a0)
0002dc50 6d00fe2c	blt.w	Obj5D_Main_Pos_and_Collision
0002dc54 317c2b700030	move.w	#$2B70,Obj5D_x_pos_next(a0)
0002dc5a 6000fe22	bra.w	Obj5D_Main_Pos_and_Collision
0002dc5e 0c2800f90030	cmpi.b	#-7,Obj5D_timer(a0)
0002dc64 671a	beq.s	+
0002dc6c 6e001262	bgt.w	JmpTo34_DisplaySprite
0002dc70 6100ff0a	bsr.w	Obj5D_Main_Explode2
0002dc74 117c00f90030	move.b	#-7,Obj5D_timer(a0)
0002dc7a 317c001e002a	move.w	#$1E,Obj5D_timer2(a0)
0002dc80 5368002a	subq.w	#1,Obj5D_timer2(a0)
0002dc84 6a00124a	bpl.w	JmpTo34_DisplaySprite
0002dc88 30280010	move.w	x_vel(a0),d0
0002dc8c d1680008	add.w	d0,x_pos(a0)
0002dc90 2628000c	move.l	y_pos(a0),d3
0002dc94 30280012	move.w	y_vel(a0),d0
0002dc98 066800380012	addi.w	#$38,y_vel(a0)
0002dc9e 48c0	ext.l	d0
0002dca0 e180	asl.l	#8,d0
0002dca2 d680	add.l	d0,d3
0002dca4 2143000c	move.l	d3,y_pos(a0)
0002dca8 0c8305800000	cmpi.l	#$5800000,d3
0002dcae 64001226	bhs.w	JmpTo51_DeleteObject
0002dcb6 082800070022	btst	#status.npc.no_balancing,status(a0)
0002dcbc 662e	bne.s	.bossDefeated
0002dcbe 22680034	movea.l	Obj5D_parent(a0),a1
0002dcc2 216900080008	move.l	x_pos(a1),x_pos(a0)
0002dcc8 2169000c000c	move.l	y_pos(a1),y_pos(a0)
0002dcce 116900010001	move.b	render_flags(a1),render_flags(a0)
0002dcd4 116900220022	move.b	status(a1),status(a0)
0002dcda 227c0002ea3c	movea.l	#Ani_Obj5D_Dripper,a1
0002dce0 4eb900016544	jsr	(AnimateSprite).l
0002dce6 4ef9000164f4	jmp	(DisplaySprite).l
0002dcec 7622	moveq	#$22,d3
0002dcee 117c00780030	move.b	#$78,Obj5D_timer(a0)
0002dcf4 22680034	movea.l	Obj5D_parent(a0),a1
0002dcf8 316900080008	move.w	x_pos(a1),x_pos(a0)
0002dcfe 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002dd04 1143001a	move.b	d3,mapping_frame(a0)
0002dd08 117c00140024	move.b	#$14,routine(a0)
0002dd0e 4eb900003390	jsr	(RandomNumber).l
0002dd14 e040	asr.w	#8,d0
0002dd16 ec40	asr.w	#6,d0
0002dd18 31400010	move.w	d0,x_vel(a0)
0002dd1c 317cfc800012	move.w	#-$380,y_vel(a0)
0002dd22 7401	moveq	#2-1,d2
0002dd24 5243	addq.w	#1,d3
0002dd26 4eb900017fda	jsr	(AllocateObject).l
0002dd2c 660011a8	bne.w	JmpTo51_DeleteObject
0002dd36 237c0002eadc0004	move.l	#Obj5D_MapUnc_2EADC,mappings(a1)
0002dd3e 1343001a	move.b	d3,mapping_frame(a1)
0002dd42 137c00140024	move.b	#$14,routine(a1)
0002dd48 337c25000002	move.w	#make_art_tile(ArtTile_ArtNem_CPZBoss,1,0),art_tile(a1)
0002dd4e 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002dd54 137c00200019	move.b	#$20,width_pixels(a1)
0002dd5a 137c00020018	move.b	#2,priority(a1)
0002dd60 336800080008	move.w	x_pos(a0),x_pos(a1)
0002dd66 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002dd6c 136800220022	move.b	status(a0),status(a1)
0002dd72 136800010001	move.b	render_flags(a0),render_flags(a1)
0002dd78 4eb900003390	jsr	(RandomNumber).l
0002dd7e e040	asr.w	#8,d0
0002dd80 ec40	asr.w	#6,d0
0002dd82 33400010	move.w	d0,x_vel(a1)
0002dd86 337cfc800012	move.w	#-$380,y_vel(a1)
0002dd8c 4840	swap	d0
0002dd8e 0600001e	addi.b	#$1E,d0
0002dd92 0240007f	andi.w	#$7F,d0
0002dd96 13400030	move.b	d0,Obj5D_timer(a1)
0002dd9a 5243	addq.w	#1,d3
0002dd9c 51caff88	dbf	d2,-
0002dda0 4e75	rts	
0002dda2 7000	moveq	#0,d0
0002dda4 10280025	move.b	routine_secondary(a0),d0
0002dda8 323b0006	move.w	Obj5D_Pipe_Index(pc,d0.w),d1
0002ddac 4efb1002	jmp	Obj5D_Pipe_Index(pc,d1.w)
0002ddb4 22680034	movea.l	Obj5D_parent(a0),a1
0002ddb8 08290000002e	btst	#0,Obj5D_status2(a1)
0002ddbe 6602	bne.s	+
0002ddc0 4e75	rts	
0002ddc2 316900080008	move.w	x_pos(a1),x_pos(a0)
0002ddc8 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002ddce 06680018000c	addi.w	#$18,y_pos(a0)
0002ddd4 317c000c002c	move.w	#$C,Obj5D_pipe_segments(a0)
0002ddda 54280025	addq.b	#2,routine_secondary(a0)
0002ddde 2248	movea.l	a0,a1
0002dde0 600e	bra.s	Obj5D_Pipe_Extend_Part2
0002dde2 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002dde8 6702	beq.s	+
0002ddea 4e75	rts	
0002ddec 23480034	move.l	a0,Obj5D_parent(a1)
0002ddf0 5368002c	subq.w	#1,Obj5D_pipe_segments(a0)
0002ddf4 6d60	blt.s	Obj5D_Pipe_Extend_End
0002ddfc 237c0002eadc0004	move.l	#Obj5D_MapUnc_2EADC,mappings(a1)
0002de04 337c25000002	move.w	#make_art_tile(ArtTile_ArtNem_CPZBoss,1,0),art_tile(a1)
0002de0a 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002de10 137c00200019	move.b	#$20,width_pixels(a1)
0002de16 137c00050018	move.b	#5,priority(a1)
0002de1c 336800080008	move.w	x_pos(a0),x_pos(a1)
0002de22 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002de28 3028002c	move.w	Obj5D_pipe_segments(a0),d0
0002de2c 0440000b	subi.w	#$C-1,d0
0002de30 4440	neg.w	d0
0002de32 e748	lsl.w	#3,d0
0002de34 33400038	move.w	d0,Obj5D_y_pos_next(a1)
0002de38 d169000c	add.w	d0,y_pos(a1)
0002de3c 137c0001001c	move.b	#1,anim(a1)
0002de42 0c2900020025	cmpi.b	#2,routine_secondary(a1)
0002de48 670001b4	beq.w	Obj5D_PipeSegment
0002de4c 137c000e0024	move.b	#$E,routine(a1)
0002de52 600001aa	bra.w	Obj5D_PipeSegment
0002de56 117c00000025	move.b	#0,routine_secondary(a0)
0002de5c 117c00060024	move.b	#6,routine(a0)
0002de62 6000019a	bra.w	Obj5D_PipeSegment
0002de66 7000	moveq	#0,d0
0002de68 10280025	move.b	routine_secondary(a0),d0
0002de6c 323b0006	move.w	Obj5D_Pipe_Pump_Index(pc,d0.w),d1
0002de70 4efb1002	jmp	Obj5D_Pipe_Pump_Index(pc,d1.w)
0002de7a 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002de80 6600017c	bne.w	Obj5D_PipeSegment
0002de84 117c000e0024	move.b	#$E,routine(a0)
0002de8a 137c00060024	move.b	#6,routine(a1)
0002de90 137c00020025	move.b	#2,routine_secondary(a1)
0002de9c 237c0002eadc0004	move.l	#Obj5D_MapUnc_2EADC,mappings(a1)
0002dea4 337c25000002	move.w	#make_art_tile(ArtTile_ArtNem_CPZBoss,1,0),art_tile(a1)
0002deaa 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002deb0 137c00200019	move.b	#$20,width_pixels(a1)
0002deb6 137c00040018	move.b	#4,priority(a1)
0002debc 137c00020032	move.b	#2,Obj5D_timer3(a1)
0002dec2 336800080008	move.w	x_pos(a0),x_pos(a1)
0002dec8 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002dece 303c0058	move.w	#$B*8,d0
0002ded2 13400031	move.b	d0,Obj5D_y_offset(a1)
0002ded6 d169000c	add.w	d0,y_pos(a1)
0002deda 137c0002001c	move.b	#2,anim(a1)
0002dee0 23480034	move.l	a0,Obj5D_parent(a1)
0002dee4 137c00120030	move.b	#$12,Obj5D_timer(a1)
0002deea 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002def0 6612	bne.s	BranchTo_Obj5D_PipeSegment
0002def8 137c000a0024	move.b	#$A,routine(a1)
0002defe 236800340034	move.l	Obj5D_parent(a0),Obj5D_parent(a1)
0002df04 600000f8	bra.w	Obj5D_PipeSegment
0002df08 22680034	movea.l	Obj5D_parent(a0),a1
0002df0c 24690034	movea.l	Obj5D_parent(a1),a2
0002df10 082a00070022	btst	#status.npc.no_balancing,status(a2)
0002df16 66000fbe	bne.w	JmpTo51_DeleteObject
0002df1a 316900080008	move.w	x_pos(a1),x_pos(a0)
0002df20 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002df2c 662c	bne.s	Obj5D_Pipe_Pump_2_End
0002df2e 117c00120030	move.b	#$12,Obj5D_timer(a0)
0002df3a 6e1e	bgt.s	Obj5D_Pipe_Pump_2_End
0002df3c 6b0e	bmi.s	+
0002df3e 117c0003001c	move.b	#3,anim(a0)
0002df44 117c000c0030	move.b	#$C,Obj5D_timer(a0)
0002df4a 600e	bra.s	Obj5D_Pipe_Pump_2_End
0002df4c 117c00060030	move.b	#6,Obj5D_timer(a0)
0002df52 117c00040025	move.b	#4,routine_secondary(a0)
0002df58 4e75	rts	
0002df5a 7000	moveq	#0,d0
0002df5c 10280031	move.b	Obj5D_y_offset(a0),d0
0002df60 d168000c	add.w	d0,y_pos(a0)
0002df64 43f90002ea3c	lea	(Ani_Obj5D_Dripper).l,a1
0002df6a 4eb900016544	jsr	(AnimateSprite).l
0002df70 4ef9000164f4	jmp	(DisplaySprite).l
0002df7c 6702	beq.s	+
0002df7e 4e75	rts	
0002df80 53280032	subq.b	#1,Obj5D_timer3(a0)
0002df84 6718	beq.s	+
0002df86 117c0002001c	move.b	#2,anim(a0)
0002df8c 117c00120030	move.b	#$12,Obj5D_timer(a0)
0002df92 117c00020025	move.b	#2,routine_secondary(a0)
0002df98 117c00580031	move.b	#$B*8,Obj5D_y_offset(a0)
0002df9e 22680034	movea.l	Obj5D_parent(a0),a1
0002dfa2 137c00080024	move.b	#8,routine(a1)
0002dfa8 137c00580031	move.b	#$B*8,Obj5D_y_offset(a1)
0002dfb2 4a28003c	tst.b	Obj5D_flag(a0)
0002dfb6 6636	bne.s	loc_2DFEE
0002dfb8 7000	moveq	#0,d0
0002dfba 10280031	move.b	Obj5D_y_offset(a0),d0
0002dfbe d068000c	add.w	y_pos(a0),d0
0002dfc2 43f8b000	lea	(Object_RAM).w,a1
0002dfc6 727f	moveq	#(Object_RAM_End-Object_RAM)/object_size-1,d1
0002dfc8 b069000c	cmp.w	y_pos(a1),d0
0002dfcc 6710	beq.s	Obj5D_Pipe_Retract_ChkID
0002dfce 43e90040	lea	next_object(a1),a1
0002dfd2 51c9fff4	dbf	d1,Obj5D_Pipe_Retract_Loop
0002dfd6 6026	bra.s	Obj5D_PipeSegment
0002dfd8 50e8003c	st.b	Obj5D_flag(a0)
0002dfdc 6020	bra.s	Obj5D_PipeSegment
0002dfde 7e00	moveq	#0,d7
0002dfe0 1e3c005d	move.b	#ObjID_CPZBoss,d7
0002dfe4 be11	cmp.b	id(a1),d7
0002dfe6 6708	beq.s	loc_2DFF0
0002dfe8 51c9ffde	dbf	d1,Obj5D_Pipe_Retract_Loop
0002dfec 6010	bra.s	Obj5D_PipeSegment
0002dfee 2248	movea.l	a0,a1
0002dff0 08e900070022	bset	#status.npc.no_balancing,status(a1)
0002dffc 67da	beq.s	loc_2DFD8
0002dffe 22680034	movea.l	Obj5D_parent(a0),a1
0002e002 24690034	movea.l	Obj5D_parent(a1),a2
0002e006 082a00070022	btst	#status.npc.no_balancing,status(a2)
0002e00c 6640	bne.s	Obj5D_PipeSegment_End
0002e00e 316900080008	move.w	x_pos(a1),x_pos(a0)
0002e014 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002e01a 0c2800040025	cmpi.b	#4,routine_secondary(a0)
0002e020 6606	bne.s	+
0002e022 06680018000c	addi.w	#$18,y_pos(a0)
0002e028 082800070022	btst	#status.npc.no_balancing,status(a0)
0002e02e 661a	bne.s	BranchTo_JmpTo51_DeleteObject
0002e030 30280038	move.w	Obj5D_y_pos_next(a0),d0
0002e034 d168000c	add.w	d0,y_pos(a0)
0002e038 43f90002ea3c	lea	(Ani_Obj5D_Dripper).l,a1
0002e03e 4eb900016544	jsr	(AnimateSprite).l
0002e044 4ef9000164f4	jmp	(DisplaySprite).l
0002e04e 117c00140024	move.b	#$14,routine(a0)
0002e054 4eb900003390	jsr	(RandomNumber).l
0002e05a e040	asr.w	#8,d0
0002e05c ec40	asr.w	#6,d0
0002e05e 31400010	move.w	d0,x_vel(a0)
0002e062 317cfc800012	move.w	#-$380,y_vel(a0)
0002e068 4840	swap	d0
0002e06a 0600001e	addi.b	#$1E,d0
0002e06e 0240007f	andi.w	#$7F,d0
0002e072 11400030	move.b	d0,Obj5D_timer(a0)
0002e07a 082800070022	btst	#status.npc.no_balancing,status(a0)
0002e080 66000e54	bne.w	JmpTo51_DeleteObject
0002e084 7000	moveq	#0,d0
0002e086 10280025	move.b	routine_secondary(a0),d0
0002e08a 323b0006	move.w	Obj5D_Dripper_States(pc,d0.w),d1
0002e08e 4efb1002	jmp	Obj5D_Dripper_States(pc,d1.w)
0002e098 54280025	addq.b	#2,routine_secondary(a0)
0002e0a2 217c0002eadc0004	move.l	#Obj5D_MapUnc_2EADC,mappings(a0)
0002e0aa 317c65000002	move.w	#make_art_tile(ArtTile_ArtNem_CPZBoss,3,0),art_tile(a0)
0002e0b0 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0002e0b6 117c00200019	move.b	#$20,width_pixels(a0)
0002e0bc 117c00040018	move.b	#4,priority(a0)
0002e0c2 22680034	movea.l	Obj5D_parent(a0),a1
0002e0c6 316900080008	move.w	x_pos(a1),x_pos(a0)
0002e0cc 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002e0d2 117c000f0030	move.b	#$F,Obj5D_timer(a0)
0002e0d8 117c0004001c	move.b	#4,anim(a0)
0002e0de 53280030	subq.b	#1,Obj5D_timer(a0)
0002e0e2 661e	bne.s	+
0002e0e4 117c0005001c	move.b	#5,anim(a0)
0002e0ea 117c00040030	move.b	#4,Obj5D_timer(a0)
0002e0f0 54280025	addq.b	#2,routine_secondary(a0)
0002e0f4 04680024000c	subi.w	#$24,y_pos(a0)
0002e100 4e75	rts	
0002e102 22680034	movea.l	Obj5D_parent(a0),a1
0002e106 316900080008	move.w	x_pos(a1),x_pos(a0)
0002e10c 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002e112 116900220022	move.b	status(a1),status(a0)
0002e118 116900010001	move.b	render_flags(a1),render_flags(a0)
0002e11e 43f90002ea3c	lea	(Ani_Obj5D_Dripper).l,a1
0002e124 4eb900016544	jsr	(AnimateSprite).l
0002e12a 4ef9000164f4	jmp	(DisplaySprite).l
0002e130 53280030	subq.b	#1,Obj5D_timer(a0)
0002e134 6620	bne.s	+
0002e136 117c00000025	move.b	#0,routine_secondary(a0)
0002e13c 22680034	movea.l	Obj5D_parent(a0),a1
0002e140 08e90001002e	bset	#1,Obj5D_status2(a1)
0002e146 5228003c	addq.b	#1,Obj5D_timer4(a0)
0002e14a 0c28000c003c	cmpi.b	#$C,Obj5D_timer4(a0)
0002e150 6c000d84	bge.w	JmpTo51_DeleteObject
0002e154 4e75	rts	
0002e156 22680034	movea.l	Obj5D_parent(a0),a1
0002e15a 316900080008	move.w	x_pos(a1),x_pos(a0)
0002e160 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002e166 04680024000c	subi.w	#$24,y_pos(a0)
0002e172 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0002e178 6706	beq.s	+
0002e180 43f90002ea3c	lea	(Ani_Obj5D_Dripper).l,a1
0002e186 4eb900016544	jsr	(AnimateSprite).l
0002e18c 4ef9000164f4	jmp	(DisplaySprite).l
0002e192 7000	moveq	#0,d0
0002e194 10280025	move.b	routine_secondary(a0),d0
0002e198 323b0006	move.w	Obj5D_Container_States(pc,d0.w),d1
0002e19c 4efb1002	jmp	Obj5D_Container_States(pc,d1.w)
0002e1ac 22680034	movea.l	Obj5D_parent(a0),a1
0002e1b0 08290007002e	btst	#7,Obj5D_status2(a1)
0002e1b6 6656	bne.s	+
0002e1b8 08e90007002e	bset	#7,Obj5D_status2(a1)
0002e1be 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002e1c4 6648	bne.s	+
0002e1cc 23480034	move.l	a0,Obj5D_parent(a1)
0002e1d0 237c0002eadc0004	move.l	#Obj5D_MapUnc_2EADC,mappings(a1)
0002e1d8 337c25000002	move.w	#make_art_tile(ArtTile_ArtNem_CPZBoss,1,0),art_tile(a1)
0002e1de 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002e1e4 137c00200019	move.b	#$20,width_pixels(a1)
0002e1ea 137c00040018	move.b	#4,priority(a1)
0002e1f0 236800080008	move.l	x_pos(a0),x_pos(a1)
0002e1f6 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002e1fc 137c00100024	move.b	#$10,routine(a1)
0002e202 137c00040025	move.b	#4,routine_secondary(a1)
0002e208 137c0009001c	move.b	#9,anim(a1)
0002e20e 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002e214 6642	bne.s	+
0002e21c 23480034	move.l	a0,Obj5D_parent(a1)
0002e220 237c0002eadc0004	move.l	#Obj5D_MapUnc_2EADC,mappings(a1)
0002e228 337c65000002	move.w	#make_art_tile(ArtTile_ArtNem_CPZBoss,3,0),art_tile(a1)
0002e22e 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002e234 137c00200019	move.b	#$20,width_pixels(a1)
0002e23a 137c00040018	move.b	#4,priority(a1)
0002e240 236800080008	move.l	x_pos(a0),x_pos(a1)
0002e246 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002e24c 062900100024	addi.b	#$10,routine(a1)
0002e252 137c00060025	move.b	#6,routine_secondary(a1)
0002e258 54280025	addq.b	#2,routine_secondary(a0)
0002e25c 22680034	movea.l	Obj5D_parent(a0),a1
0002e260 316900080008	move.w	x_pos(a1),x_pos(a0)
0002e266 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002e26c 04680038000c	subi.w	#$38,y_pos(a0)
0002e272 082800070022	btst	#status.npc.no_balancing,status(a0)
0002e278 6666	bne.s	loc_2E2E0
0002e27a 08290002002e	btst	#2,Obj5D_status2(a1)
0002e280 670a	beq.s	+
0002e282 6100024a	bsr.w	loc_2E4CE
0002e286 6100016a	bsr.w	loc_2E3F2
0002e28a 6020	bra.s	loc_2E2AC
0002e28c 08290005002e	btst	#5,Obj5D_status2(a1)
0002e292 6718	beq.s	loc_2E2AC
0002e294 5368002a	subq.w	#1,Obj5D_timer2(a0)
0002e298 6612	bne.s	loc_2E2AC
0002e29a 08a90005002e	bclr	#5,Obj5D_status2(a1)
0002e2a0 08e90003002e	bset	#3,Obj5D_status2(a1)
0002e2a6 08e90004002e	bset	#4,Obj5D_status2(a1)
0002e2ac 22680034	movea.l	Obj5D_parent(a0),a1
0002e2b0 116900220022	move.b	status(a1),status(a0)
0002e2b6 116900010001	move.b	render_flags(a1),render_flags(a0)
0002e2bc 3028002e	move.w	Obj5D_x_vel(a0),d0
0002e2c0 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0002e2c6 6702	beq.s	+
0002e2c8 4440	neg.w	d0
0002e2ca d1680008	add.w	d0,x_pos(a0)
0002e2ce 43f90002ea3c	lea	(Ani_Obj5D_Dripper).l,a1
0002e2d4 4eb900016544	jsr	(AnimateSprite).l
0002e2da 4ef9000164f4	jmp	(DisplaySprite).l
0002e2e0 117c000a0025	move.b	#$A,routine_secondary(a0)
0002e2e6 60c4	bra.s	loc_2E2AC
0002e2e8 2f07	move.l	d7,-(sp)
0002e2ea 117c001e0030	move.b	#$1E,Obj5D_timer(a0)
0002e2f0 22680034	movea.l	Obj5D_parent(a0),a1
0002e2f4 316900080008	move.w	x_pos(a1),x_pos(a0)
0002e2fa 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002e300 04680038000c	subi.w	#$38,y_pos(a0)
0002e306 3028002e	move.w	Obj5D_x_vel(a0),d0
0002e30a 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0002e310 6702	beq.s	+
0002e312 4440	neg.w	d0
0002e314 d1680008	add.w	d0,x_pos(a0)
0002e318 117c0020001a	move.b	#$20,mapping_frame(a0)
0002e31e 117c00140024	move.b	#$14,routine(a0)
0002e324 4eb900003390	jsr	(RandomNumber).l
0002e32a e040	asr.w	#8,d0
0002e32c ec40	asr.w	#6,d0
0002e32e 31400010	move.w	d0,x_vel(a0)
0002e332 317cfc800012	move.w	#-$380,y_vel(a0)
0002e338 7e00	moveq	#0,d7
0002e33a 3028002e	move.w	Obj5D_x_vel(a0),d0
0002e33e 06400018	addi.w	#$18,d0
0002e342 6c12	bge.s	loc_2E356
0002e344 06400018	addi.w	#$18,d0
0002e348 6c0a	bge.s	loc_2E354
0002e34a 06400018	addi.w	#$18,d0
0002e34e 6c02	bge.s	loc_2E352
0002e350 5247	addq.w	#1,d7
0002e352 5247	addq.w	#1,d7
0002e354 5247	addq.w	#1,d7
0002e356 5347	subq.w	#1,d7
0002e358 6b00008c	bmi.w	loc_2E3E6
0002e35c 4eb900017fda	jsr	(AllocateObject).l
0002e362 66000b72	bne.w	JmpTo51_DeleteObject
0002e36c 237c0002eadc0004	move.l	#Obj5D_MapUnc_2EADC,mappings(a1)
0002e374 137c0021001a	move.b	#$21,mapping_frame(a1)
0002e37a 137c00140024	move.b	#$14,routine(a1)
0002e380 337c25000002	move.w	#make_art_tile(ArtTile_ArtNem_CPZBoss,1,0),art_tile(a1)
0002e386 136800010001	move.b	render_flags(a0),render_flags(a1)
0002e38c 137c00200019	move.b	#$20,width_pixels(a1)
0002e392 137c00020018	move.b	#2,priority(a1)
0002e398 336800080008	move.w	x_pos(a0),x_pos(a1)
0002e39e 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002e3aa 3407	move.w	d7,d2
0002e3ac d442	add.w	d2,d2
0002e3ae 363b203c	move.w	word_2E3EC(pc,d2.w),d3
0002e3b2 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0002e3b8 6702	beq.s	+
0002e3ba 4443	neg.w	d3
0002e3bc d7690008	add.w	d3,x_pos(a1)
0002e3c0 4eb900003390	jsr	(RandomNumber).l
0002e3c6 e040	asr.w	#8,d0
0002e3c8 ec40	asr.w	#6,d0
0002e3ca 33400010	move.w	d0,x_vel(a1)
0002e3ce 337cfc800012	move.w	#-$380,y_vel(a1)
0002e3d4 4840	swap	d0
0002e3d6 0600001e	addi.b	#$1E,d0
0002e3da 0240007f	andi.w	#$7F,d0
0002e3de 13400030	move.b	d0,Obj5D_timer(a1)
0002e3e2 51cfff78	dbf	d7,loc_2E35C
0002e3e6 2e1f	move.l	(sp)+,d7
0002e3f2 08290003002e	btst	#3,Obj5D_status2(a1)
0002e3f8 660000d2	bne.w	return_2E4CC
0002e3fc 08290004002e	btst	#4,Obj5D_status2(a1)
0002e402 660000c8	bne.w	return_2E4CC
0002e406 0c68ffec002e	cmpi.w	#-$14,Obj5D_x_vel(a0)
0002e40c 6d18	blt.s	+
0002e40e 08290001002d	btst	#1,Obj5D_status(a1)
0002e414 670000b6	beq.w	return_2E4CC
0002e418 08a90001002d	bclr	#1,Obj5D_status(a1)
0002e41e 08e90002002d	bset	#2,Obj5D_status(a1)
0002e424 603e	bra.s	loc_2E464
0002e426 0c68ffc0002e	cmpi.w	#-$40,Obj5D_x_vel(a0)
0002e42c 6c00009e	bge.w	return_2E4CC
0002e430 3238b008	move.w	(MainCharacter+x_pos).w,d1
0002e438 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0002e43e 6714	beq.s	+
0002e440 d268002e	add.w	Obj5D_x_vel(a0),d1
0002e444 92680008	sub.w	x_pos(a0),d1
0002e448 6e000082	bgt.w	return_2E4CC
0002e44c 0c41ffe8	cmpi.w	#-$18,d1
0002e450 6c12	bge.s	loc_2E464
0002e452 4e75	rts	
0002e454 9268002e	sub.w	Obj5D_x_vel(a0),d1
0002e458 92680008	sub.w	x_pos(a0),d1
0002e45c 6d6e	blt.s	return_2E4CC
0002e45e 0c410018	cmpi.w	#$18,d1
0002e462 6e68	bgt.s	return_2E4CC
0002e464 08e90005002e	bset	#5,Obj5D_status2(a1)
0002e46a 08a90002002e	bclr	#2,Obj5D_status2(a1)
0002e470 317c0012002a	move.w	#$12,Obj5D_timer2(a0)
0002e476 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002e47c 664e	bne.s	return_2E4CC
0002e484 23480034	move.l	a0,Obj5D_parent(a1)
0002e488 137c00100024	move.b	#$10,routine(a1)
0002e48e 137c00080025	move.b	#8,routine_secondary(a1)
0002e494 237c0002eadc0004	move.l	#Obj5D_MapUnc_2EADC,mappings(a1)
0002e49c 337c25000002	move.w	#make_art_tile(ArtTile_ArtNem_CPZBoss,1,0),art_tile(a1)
0002e4a2 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002e4a8 137c00200019	move.b	#$20,width_pixels(a1)
0002e4ae 137c00050018	move.b	#5,priority(a1)
0002e4b4 236800080008	move.l	x_pos(a0),x_pos(a1)
0002e4ba 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002e4c0 137c000b001c	move.b	#$B,anim(a1)
0002e4c6 337c0024002a	move.w	#$24,Obj5D_timer2(a1)
0002e4cc 4e75	rts	
0002e4ce 7001	moveq	#1,d0
0002e4d0 08290004002e	btst	#4,Obj5D_status2(a1)
0002e4d6 6602	bne.s	+
0002e4d8 70ff	moveq	#-1,d0
0002e4da 0c68fff0002e	cmpi.w	#-$10,Obj5D_x_vel(a0)
0002e4e0 6670	bne.s	loc_2E552
0002e4e2 08a90004002e	bclr	#4,Obj5D_status2(a1)
0002e4e8 6768	beq.s	loc_2E552
0002e4ea 08a90002002e	bclr	#2,Obj5D_status2(a1)
0002e4f0 42280025	clr.b	routine_secondary(a0)
0002e4f4 2449	movea.l	a1,a2
0002e4f6 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002e4fc 6652	bne.s	return_2E550
0002e504 236800340034	move.l	Obj5D_parent(a0),Obj5D_parent(a1)
0002e50a 237c0002eadc0004	move.l	#Obj5D_MapUnc_2EADC,mappings(a1)
0002e512 337c25000002	move.w	#make_art_tile(ArtTile_ArtNem_CPZBoss,1,0),art_tile(a1)
0002e518 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002e51e 137c00200019	move.b	#$20,width_pixels(a1)
0002e524 137c00040018	move.b	#4,priority(a1)
0002e52a 236800080008	move.l	x_pos(a0),x_pos(a1)
0002e530 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002e536 137c00040024	move.b	#4,routine(a1)
0002e53c 117c00000025	move.b	#0,routine_secondary(a0)
0002e542 600c	bra.s	return_2E550
0002e544 137c000a0024	move.b	#$A,routine(a1)
0002e54a 236800340034	move.l	Obj5D_parent(a0),Obj5D_parent(a1)
0002e550 4e75	rts	
0002e552 3228002e	move.w	Obj5D_x_vel(a0),d1
0002e556 0c41ffd8	cmpi.w	#-$28,d1
0002e55a 6c40	bge.s	loc_2E59C
0002e55c 0c41ffc0	cmpi.w	#-$40,d1
0002e560 6c32	bge.s	loc_2E594
0002e562 117c0008001c	move.b	#8,anim(a0)
0002e568 0c41ffa8	cmpi.w	#-$58,d1
0002e56c 6d10	blt.s	loc_2E57E
0002e56e 6e08	bgt.s	loc_2E578
0002e570 08290004002e	btst	#4,Obj5D_status2(a1)
0002e576 6704	beq.s	return_2E57C
0002e578 d168002e	add.w	d0,Obj5D_x_vel(a0)
0002e57c 4e75	rts	
0002e57e 317cffa8002e	move.w	#-$58,Obj5D_x_vel(a0)
0002e584 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0002e58a 67ec	beq.s	loc_2E578
0002e58c 317c0058002e	move.w	#$58,Obj5D_x_vel(a0)
0002e592 60e4	bra.s	loc_2E578
0002e594 117c0007001c	move.b	#7,anim(a0)
0002e59a 60dc	bra.s	loc_2E578
0002e59c 117c0006001c	move.b	#6,anim(a0)
0002e5a2 60d4	bra.s	loc_2E578
0002e5a4 082800070022	btst	#status.npc.no_balancing,status(a0)
0002e5aa 6600092a	bne.w	JmpTo51_DeleteObject
0002e5ae 22680034	movea.l	Obj5D_parent(a0),a1
0002e5b2 20290034	move.l	Obj5D_parent(a1),d0
0002e5b6 6700091e	beq.w	JmpTo51_DeleteObject
0002e5ba 2240	movea.l	d0,a1
0002e5bc 08a90003002e	bclr	#3,Obj5D_status2(a1)
0002e5c2 6714	beq.s	+
0002e5c4 117c000c0024	move.b	#$C,routine(a0)
0002e5ca 117c00000025	move.b	#0,routine_secondary(a0)
0002e5d0 117c00870020	move.b	#$87,collision_flags(a0)
0002e5d6 6060	bra.s	Obj5D_Container_Floor_End
0002e5d8 08a90001002e	bclr	#1,Obj5D_status2(a1)
0002e5de 6608	bne.s	+
0002e5e0 4a28001c	tst.b	anim(a0)
0002e5e4 6652	bne.s	Obj5D_Container_Floor_End
0002e5e6 4e75	rts	
0002e5e8 4a28001c	tst.b	anim(a0)
0002e5ec 6606	bne.s	+
0002e5ee 117c000b001c	move.b	#$B,anim(a0)
0002e5fa 0c280017001c	cmpi.b	#$17,anim(a0)
0002e600 6d36	blt.s	Obj5D_Container_Floor_End
0002e602 08a90000002e	bclr	#0,Obj5D_status2(a1)
0002e608 08e90002002e	bset	#2,Obj5D_status2(a1)
0002e60e 6028	bra.s	Obj5D_Container_Floor_End
0002e610 082800070022	btst	#status.npc.no_balancing,status(a0)
0002e616 660008be	bne.w	JmpTo51_DeleteObject
0002e61a 22680034	movea.l	Obj5D_parent(a0),a1
0002e61e 22690034	movea.l	Obj5D_parent(a1),a1
0002e622 08290005002e	btst	#5,Obj5D_status2(a1)
0002e628 670e	beq.s	Obj5D_Container_Floor_End
0002e62a 0c280009001c	cmpi.b	#9,anim(a0)
0002e630 6606	bne.s	Obj5D_Container_Floor_End
0002e632 117c000a001c	move.b	#$A,anim(a0)
0002e638 22680034	movea.l	Obj5D_parent(a0),a1
0002e63c 316900080008	move.w	x_pos(a1),x_pos(a0)
0002e642 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002e648 116900010001	move.b	render_flags(a1),render_flags(a0)
0002e64e 116900220022	move.b	status(a1),status(a0)
0002e654 43f90002ea3c	lea	(Ani_Obj5D_Dripper).l,a1
0002e65a 4eb900016544	jsr	(AnimateSprite).l
0002e660 4ef9000164f4	jmp	(DisplaySprite).l
0002e666 082800070022	btst	#status.npc.no_balancing,status(a0)
0002e66c 66000868	bne.w	JmpTo51_DeleteObject
0002e670 5368002a	subq.w	#1,Obj5D_timer2(a0)
0002e674 67000860	beq.w	JmpTo51_DeleteObject
0002e678 60be	bra.s	Obj5D_Container_Floor_End
0002e67a 7000	moveq	#0,d0
0002e67c 10280025	move.b	routine_secondary(a0),d0
0002e680 323b0006	move.w	Obj5D_Gunk_States(pc,d0.w),d1
0002e684 4efb1002	jmp	Obj5D_Gunk_States(pc,d1.w)
0002e692 54280025	addq.b	#2,routine_secondary(a0)
0002e696 117c00200016	move.b	#$20,y_radius(a0)
0002e69c 117c0019001c	move.b	#$19,anim(a0)
0002e6a2 317c00000012	move.w	#0,y_vel(a0)
0002e6a8 22680034	movea.l	Obj5D_parent(a0),a1
0002e6ac 22690034	movea.l	Obj5D_parent(a1),a1
0002e6b0 08290002002d	btst	#2,Obj5D_status(a1)
0002e6b6 6712	beq.s	Obj5D_Gunk_Main
0002e6b8 08a90002002d	bclr	#2,Obj5D_status(a1)
0002e6be 117c00060025	move.b	#6,routine_secondary(a0)
0002e6c4 317c0009002a	move.w	#9,Obj5D_timer2(a0)
0002e6ce 4eb90001edfa	jsr	(ObjCheckFloorDist).l
0002e6d4 4a41	tst.w	d1
0002e6d6 6b1a	bmi.s	+
0002e6d8 0c680518000c	cmpi.w	#$518,y_pos(a0)
0002e6de 6c48	bge.s	Obj5D_Gunk_OffScreen
0002e6e0 43f90002ea3c	lea	(Ani_Obj5D_Dripper).l,a1
0002e6e6 4eb900016544	jsr	(AnimateSprite).l
0002e6ec 4ef9000164f4	jmp	(DisplaySprite).l
0002e6f2 d368000c	add.w	d1,y_pos(a0)
0002e6f6 22680034	movea.l	Obj5D_parent(a0),a1
0002e6fa 22690034	movea.l	Obj5D_parent(a1),a1
0002e6fe 08e90002002e	bset	#2,Obj5D_status2(a1)
0002e704 08e90004002e	bset	#4,Obj5D_status2(a1)
0002e70a 137c00020025	move.b	#2,routine_secondary(a1)
0002e710 54280025	addq.b	#2,routine_secondary(a0)
0002e714 117c00000028	move.b	#0,subtype(a0)
0002e71a 303c00e6	move.w	#SndID_MegaMackDrop,d0
0002e722 4ef9000164f4	jmp	(DisplaySprite).l
0002e728 22680034	movea.l	Obj5D_parent(a0),a1
0002e72c 22690034	movea.l	Obj5D_parent(a1),a1
0002e730 08e90002002e	bset	#2,Obj5D_status2(a1)
0002e736 08e90004002e	bset	#4,Obj5D_status2(a1)
0002e73c 137c00020025	move.b	#2,routine_secondary(a1)
0002e74c 6a2c	bpl.s	+
0002e74e 117c00020018	move.b	#2,priority(a0)
0002e754 117c0025001a	move.b	#$25,mapping_frame(a0)
0002e75a 22680034	movea.l	Obj5D_parent(a0),a1
0002e75e 22690034	movea.l	Obj5D_parent(a1),a1
0002e762 316900080008	move.w	x_pos(a1),x_pos(a0)
0002e768 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002e76e 54280025	addq.b	#2,routine_secondary(a0)
0002e772 117c0008001e	move.b	#8,anim_frame_duration(a0)
0002e778 6016	bra.s	Obj5D_Gunk_8
0002e77e 43f90002ea3c	lea	(Ani_Obj5D_Dripper).l,a1
0002e784 4eb900016544	jsr	(AnimateSprite).l
0002e78a 4ef9000164f4	jmp	(DisplaySprite).l
0002e796 6a1e	bpl.s	+
0002e79e 117c0008001e	move.b	#8,anim_frame_duration(a0)
0002e7a4 0c280027001a	cmpi.b	#$27,mapping_frame(a0)
0002e7aa 6e00ff7c	bgt.w	Obj5D_Gunk_OffScreen
0002e7ae 6d06	blt.s	+
0002e7b0 0628000c001e	addi.b	#$C,anim_frame_duration(a0)
0002e7b6 22680034	movea.l	Obj5D_parent(a0),a1
0002e7ba 22690034	movea.l	Obj5D_parent(a1),a1
0002e7be 316900080008	move.w	x_pos(a1),x_pos(a0)
0002e7c4 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002e7ca 4ef9000164f4	jmp	(DisplaySprite).l
0002e7d0 7000	moveq	#0,d0
0002e7d2 10280028	move.b	subtype(a0),d0
0002e7d6 660000f4	bne.w	Obj5D_Gunk_Droplets_Move
0002e7da 06680018000c	addi.w	#$18,y_pos(a0)
0002e7e0 0668000c0008	addi.w	#$C,x_pos(a0)
0002e7e6 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0002e7ec 6706	beq.s	+
0002e7ee 046800180008	subi.w	#$18,x_pos(a0)
0002e7f4 117c00040016	move.b	#4,y_radius(a0)
0002e7fa 117c00040017	move.b	#4,x_radius(a0)
0002e800 52280028	addq.b	#1,subtype(a0)
0002e804 117c0009001a	move.b	#9,mapping_frame(a0)
0002e80a 30280012	move.w	y_vel(a0),d0
0002e80e e248	lsr.w	#1,d0
0002e810 4440	neg.w	d0
0002e812 31400012	move.w	d0,y_vel(a0)
0002e816 4eb900003390	jsr	(RandomNumber).l
0002e81c ec40	asr.w	#6,d0
0002e81e 6b04	bmi.s	+
0002e820 06400200	addi.w	#$200,d0
0002e824 0640ff00	addi.w	#-$100,d0
0002e828 31400010	move.w	d0,x_vel(a0)
0002e82c 117c00000020	move.b	#0,collision_flags(a0)
0002e832 7603	moveq	#3,d3
0002e834 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002e83a 6600008c	bne.w	BranchTo_JmpTo34_DisplaySprite
0002e844 23480034	move.l	a0,Obj5D_parent(a1)
0002e848 237c0002eadc0004	move.l	#Obj5D_MapUnc_2EADC,mappings(a1)
0002e850 337c65000002	move.w	#make_art_tile(ArtTile_ArtNem_CPZBoss,3,0),art_tile(a1)
0002e856 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002e85c 137c00200019	move.b	#$20,width_pixels(a1)
0002e862 137c00020018	move.b	#2,priority(a1)
0002e868 236800080008	move.l	x_pos(a0),x_pos(a1)
0002e86e 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002e874 137c00040016	move.b	#4,y_radius(a1)
0002e87a 137c00040017	move.b	#4,x_radius(a1)
0002e880 137c0009001a	move.b	#9,mapping_frame(a1)
0002e886 137c000c0024	move.b	#$C,routine(a1)
0002e88c 137c00040025	move.b	#4,routine_secondary(a1)
0002e892 137c00010028	move.b	#1,subtype(a1)
0002e898 336800120012	move.w	y_vel(a0),y_vel(a1)
0002e89e 136800200020	move.b	collision_flags(a0),collision_flags(a1)
0002e8a4 4eb900003390	jsr	(RandomNumber).l
0002e8aa ec40	asr.w	#6,d0
0002e8ac 6b04	bmi.s	+
0002e8ae 06400080	addi.w	#$80,d0
0002e8b2 0640ff80	addi.w	#-$80,d0
0002e8b6 33400010	move.w	d0,x_vel(a1)
0002e8ba 4840	swap	d0
0002e8bc 024003ff	andi.w	#$3FF,d0
0002e8c0 91690012	sub.w	d0,y_vel(a1)
0002e8c4 51cbff6e	dbf	d3,Obj5D_Gunk_Droplets_Loop
0002e8d0 4eb90001edfa	jsr	(ObjCheckFloorDist).l
0002e8d6 4a41	tst.w	d1
0002e8d8 6b04	bmi.s	+
0002e8e2 d368000c	add.w	d1,y_pos(a0)
0002e8e6 30280012	move.w	y_vel(a0),d0
0002e8ea e248	lsr.w	#1,d0
0002e8ec 4440	neg.w	d0
0002e8ee 31400012	move.w	d0,y_vel(a0)
0002e8f6 22680034	movea.l	Obj5D_parent(a0),a1
0002e8fa 216900080008	move.l	x_pos(a1),x_pos(a0)
0002e900 2169000c000c	move.l	y_pos(a1),y_pos(a0)
0002e906 116900220022	move.b	status(a1),status(a0)
0002e90c 116900010001	move.b	render_flags(a1),render_flags(a0)
0002e912 1029003e	move.b	Obj5D_invulnerable_time(a1),d0
0002e916 0c00001f	cmpi.b	#$1F,d0
0002e91a 6606	bne.s	+
0002e91c 117c0002001c	move.b	#2,anim(a0)
0002e922 0c380004b024	cmpi.b	#4,(MainCharacter+routine).w
0002e928 6708	beq.s	+
0002e92a 0c380004b064	cmpi.b	#4,(Sidekick+routine).w
0002e930 6606	bne.s	Obj5D_Robotnik_End
0002e932 117c0003001c	move.b	#3,anim(a0)
0002e938 43f90002ed5c	lea	(Ani_obj5D_b).l,a1
0002e93e 4eb900016544	jsr	(AnimateSprite).l
0002e944 4ef9000164f4	jmp	(DisplaySprite).l
0002e94e 082800070022	btst	#status.npc.no_balancing,status(a0)
0002e954 6652	bne.s	loc_2E9A8
0002e956 22680034	movea.l	Obj5D_parent(a0),a1
0002e95a 216900080008	move.l	x_pos(a1),x_pos(a0)
0002e960 2169000c000c	move.l	y_pos(a1),y_pos(a0)
0002e966 116900220022	move.b	status(a1),status(a0)
0002e96c 116900010001	move.b	render_flags(a1),render_flags(a0)
0002e972 5328001e	subq.b	#1,anim_frame_duration(a0)
0002e976 6a1e	bpl.s	loc_2E996
0002e978 117c0001001e	move.b	#1,anim_frame_duration(a0)
0002e97e 1028002a	move.b	Obj5D_timer2(a0),d0
0002e982 5200	addq.b	#1,d0
0002e984 0c000002	cmpi.b	#2,d0
0002e988 6f02	ble.s	+
0002e98a 7000	moveq	#0,d0
0002e98c 117b00bc001a	move.b	Obj5D_Flame_Frames(pc,d0.w),mapping_frame(a0)
0002e992 1140002a	move.b	d0,Obj5D_timer2(a0)
0002e996 0c2800ff001a	cmpi.b	#-1,mapping_frame(a0)
0002e99c 66000532	bne.w	JmpTo34_DisplaySprite
0002e9a0 117c0000001a	move.b	#0,mapping_frame(a0)
0002e9a6 4e75	rts	
0002e9a8 22680034	movea.l	Obj5D_parent(a0),a1
0002e9ac 08290006002e	btst	#6,Obj5D_status2(a1)
0002e9b2 6602	bne.s	+
0002e9b4 4e75	rts	
0002e9b6 54280025	addq.b	#2,routine_secondary(a0)
0002e9ba 217c0002eea00004	move.l	#Obj5D_MapUnc_2EEA0,mappings(a0)
0002e9c2 317c04180002	move.w	#make_art_tile(ArtTile_ArtNem_EggpodJets_1,0,0),art_tile(a0)
0002e9cc 117c0000001a	move.b	#0,mapping_frame(a0)
0002e9d2 117c0005001e	move.b	#5,anim_frame_duration(a0)
0002e9d8 22680034	movea.l	Obj5D_parent(a0),a1
0002e9dc 316900080008	move.w	x_pos(a1),x_pos(a0)
0002e9e2 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002e9ee 046800280008	subi.w	#$28,x_pos(a0)
0002e9f4 4e75	rts	
0002e9f6 5328001e	subq.b	#1,anim_frame_duration(a0)
0002e9fa 6a3c	bpl.s	BranchTo2_JmpTo34_DisplaySprite
0002e9fc 117c0005001e	move.b	#5,anim_frame_duration(a0)
0002ea02 5228001a	addq.b	#1,mapping_frame(a0)
0002ea06 0c280004001a	cmpi.b	#4,mapping_frame(a0)
0002ea0c 6600002a	bne.w	BranchTo2_JmpTo34_DisplaySprite
0002ea10 117c0000001a	move.b	#0,mapping_frame(a0)
0002ea16 22680034	movea.l	Obj5D_parent(a0),a1
0002ea1a 1011	move.b	id(a1),d0
0002ea1c 670004b8	beq.w	JmpTo51_DeleteObject
0002ea20 316900080008	move.w	x_pos(a1),x_pos(a0)
0002ea26 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002ea32 046800280008	subi.w	#$28,x_pos(a0)
0002eed0 4ef9000164f4	jmp	(extractJmpToName("JmpTo34_DisplaySprite")).l
0002eed6 4ef9000164e6	jmp	(extractJmpToName("JmpTo51_DeleteObject")).l
0002eedc 4ef9000163d2	jmp	(extractJmpToName("JmpTo35_MarkObjGone")).l
0002eee2 4ef900001370	jmp	(extractJmpToName("JmpTo5_PlaySound")).l
0002eee8 4ef900016d8a	jmp	(extractJmpToName("JmpTo8_Adjust2PArtPointer2")).l
0002eeee 4ef90000161e	jmp	(extractJmpToName("JmpTo5_LoadPLC")).l
0002eef4 4ef900040d06	jmp	(extractJmpToName("JmpTo2_AddPoints")).l
0002eefa 4ef900016d6e	jmp	(extractJmpToName("JmpTo60_Adjust2PArtPointer")).l
0002ef00 4ef90000f626	jmp	(extractJmpToName("JmpTo_PlayLevelMusic")).l
0002ef06 4ef90000f62e	jmp	(extractJmpToName("JmpTo_LoadPLC_AnimalExplosion")).l
0002ef0c 4ef900016380	jmp	(extractJmpToName("JmpTo3_ObjectMoveAndFall")).l
0002ef12 4ef9000163ac	jmp	(extractJmpToName("JmpTo23_ObjectMove")).l
0002ef18 7000	moveq	#0,d0
0002ef1a 10280024	move.b	routine(a0),d0
0002ef1e 323b0006	move.w	Obj56_Index(pc,d0.w),d1
0002ef22 4efb1002	jmp	Obj56_Index(pc,d1.w)
0002ef36 217c0002faf80004	move.l	#Obj56_MapUnc_2FAF8,mappings(a0)
0002ef3e 317c23a00002	move.w	#make_art_tile(ArtTile_ArtNem_Eggpod_1,1,0),art_tile(a0)
0002ef44 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0002ef4a 117c00810028	move.b	#$81,subtype(a0)
0002ef50 317c29d00008	move.w	#$29D0,x_pos(a0)
0002ef56 317c0426000c	move.w	#$426,y_pos(a0)
0002ef5c 117c00200019	move.b	#$20,width_pixels(a0)
0002ef62 117c00140016	move.b	#$14,y_radius(a0)
0002ef68 117c00040018	move.b	#4,priority(a0)
0002ef6e 117c000f0020	move.b	#$F,collision_flags(a0)
0002ef74 117c00080021	move.b	#8,collision_property(a0)
0002ef7a 54280024	addq.b	#2,routine(a0)
0002ef7e 316800080030	move.w	x_pos(a0),objoff_30(a0)
0002ef84 3168000c0038	move.w	y_pos(a0),objoff_38(a0)
0002ef8e 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002ef94 6600004e	bne.w	+
0002ef9e 23480034	move.l	a0,objoff_34(a1)
0002efa2 21490034	move.l	a1,objoff_34(a0)
0002efa6 237c0002faf80004	move.l	#Obj56_MapUnc_2FAF8,mappings(a1)
0002efae 337c03a00002	move.w	#make_art_tile(ArtTile_ArtNem_Eggpod_1,0,0),art_tile(a1)
0002efb4 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002efba 137c00200019	move.b	#$20,width_pixels(a1)
0002efc0 137c00040018	move.b	#4,priority(a1)
0002efc6 236800080008	move.l	x_pos(a0),x_pos(a1)
0002efcc 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002efd2 137c000e0024	move.b	#$E,routine(a1)
0002efd8 137c0001001c	move.b	#1,anim(a1)
0002efde 136800010001	move.b	render_flags(a0),render_flags(a1)
0002efe4 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002efea 6646	bne.s	+
0002eff2 23480034	move.l	a0,objoff_34(a1)
0002eff6 237c0002fa580004	move.l	#Obj56_MapUnc_2FA58,mappings(a1)
0002effe 337c04000002	move.w	#make_art_tile(ArtTile_ArtNem_EHZBoss,0,0),art_tile(a1)
0002f008 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002f00e 137c00300019	move.b	#$30,width_pixels(a1)
0002f014 137c00100016	move.b	#$10,y_radius(a1)
0002f01a 137c00030018	move.b	#3,priority(a1)
0002f020 337c2af00008	move.w	#$2AF0,x_pos(a1)
0002f026 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002f02c 137c00060024	move.b	#6,routine(a1)
0002f032 61000064	bsr.w	loc_2F098
0002f03c 317c2af00008	move.w	#$2AF0,x_pos(a0)
0002f042 317c02f8000c	move.w	#$2F8,y_pos(a0)
0002f048 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002f04e 6646	bne.s	+
0002f056 23480034	move.l	a0,objoff_34(a1)
0002f05a 237c0002f9700004	move.l	#Obj56_MapUnc_2F970,mappings(a1)
0002f062 337c256c0002	move.w	#make_art_tile(ArtTile_ArtNem_EggChoppers,1,0),art_tile(a1)
0002f06c 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002f072 137c00400019	move.b	#$40,width_pixels(a1)
0002f078 137c00030018	move.b	#3,priority(a1)
0002f07e 236800080008	move.l	x_pos(a0),x_pos(a1)
0002f084 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002f08a 337c001e002a	move.w	#$1E,objoff_2A(a1)
0002f090 137c00040024	move.b	#4,routine(a1)
0002f096 4e75	rts	
0002f098 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002f09e 6670	bne.s	+
0002f0a6 23480034	move.l	a0,objoff_34(a1)
0002f0aa 237c0002fa580004	move.l	#Obj56_MapUnc_2FA58,mappings(a1)
0002f0b2 337c24000002	move.w	#make_art_tile(ArtTile_ArtNem_EHZBoss,1,0),art_tile(a1)
0002f0bc 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002f0c2 137c00100019	move.b	#$10,width_pixels(a1)
0002f0c8 137c00020018	move.b	#2,priority(a1)
0002f0ce 137c00100016	move.b	#$10,y_radius(a1)
0002f0d4 137c00100017	move.b	#$10,x_radius(a1)
0002f0da 337c2af00008	move.w	#$2AF0,x_pos(a1)
0002f0e0 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002f0e6 0669001c0008	addi.w	#$1C,x_pos(a1)
0002f0ec 0669000c000c	addi.w	#$C,y_pos(a1)
0002f0f2 137c00080024	move.b	#8,routine(a1)
0002f0f8 137c0004001a	move.b	#4,mapping_frame(a1)
0002f0fe 137c0001001c	move.b	#1,anim(a1)
0002f104 337c000a002a	move.w	#$A,objoff_2A(a1)
0002f10a 137c00000028	move.b	#0,subtype(a1)
0002f110 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002f116 6670	bne.s	+
0002f11e 23480034	move.l	a0,objoff_34(a1)
0002f122 237c0002fa580004	move.l	#Obj56_MapUnc_2FA58,mappings(a1)
0002f12a 337c24000002	move.w	#make_art_tile(ArtTile_ArtNem_EHZBoss,1,0),art_tile(a1)
0002f134 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002f13a 137c00100019	move.b	#$10,width_pixels(a1)
0002f140 137c00020018	move.b	#2,priority(a1)
0002f146 137c00100016	move.b	#$10,y_radius(a1)
0002f14c 137c00100017	move.b	#$10,x_radius(a1)
0002f152 337c2af00008	move.w	#$2AF0,x_pos(a1)
0002f158 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002f15e 0669fff40008	addi.w	#-$C,x_pos(a1)
0002f164 0669000c000c	addi.w	#$C,y_pos(a1)
0002f16a 137c00080024	move.b	#8,routine(a1)
0002f170 137c0004001a	move.b	#4,mapping_frame(a1)
0002f176 137c0001001c	move.b	#1,anim(a1)
0002f17c 337c000a002a	move.w	#$A,objoff_2A(a1)
0002f182 137c00010028	move.b	#1,subtype(a1)
0002f188 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002f18e 6670	bne.s	+
0002f196 23480034	move.l	a0,objoff_34(a1)
0002f19a 237c0002fa580004	move.l	#Obj56_MapUnc_2FA58,mappings(a1)
0002f1a2 337c24000002	move.w	#make_art_tile(ArtTile_ArtNem_EHZBoss,1,0),art_tile(a1)
0002f1ac 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002f1b2 137c00100019	move.b	#$10,width_pixels(a1)
0002f1b8 137c00030018	move.b	#3,priority(a1)
0002f1be 137c00100016	move.b	#$10,y_radius(a1)
0002f1c4 137c00100017	move.b	#$10,x_radius(a1)
0002f1ca 337c2af00008	move.w	#$2AF0,x_pos(a1)
0002f1d0 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002f1d6 0669ffd40008	addi.w	#-$2C,x_pos(a1)
0002f1dc 0669000c000c	addi.w	#$C,y_pos(a1)
0002f1e2 137c00080024	move.b	#8,routine(a1)
0002f1e8 137c0006001a	move.b	#6,mapping_frame(a1)
0002f1ee 137c0002001c	move.b	#2,anim(a1)
0002f1f4 337c000a002a	move.w	#$A,objoff_2A(a1)
0002f1fa 137c00020028	move.b	#2,subtype(a1)
0002f200 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
0002f206 6658	bne.s	+
0002f20e 23480034	move.l	a0,objoff_34(a1)
0002f212 237c0002fa580004	move.l	#Obj56_MapUnc_2FA58,mappings(a1)
0002f21a 337c24000002	move.w	#make_art_tile(ArtTile_ArtNem_EHZBoss,1,0),art_tile(a1)
0002f224 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002f22a 137c00200019	move.b	#$20,width_pixels(a1)
0002f230 137c00020018	move.b	#2,priority(a1)
0002f236 337c2af00008	move.w	#$2AF0,x_pos(a1)
0002f23c 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002f242 0669ffca0008	addi.w	#-$36,x_pos(a1)
0002f24e 137c000a0024	move.b	#$A,routine(a1)
0002f254 137c0001001a	move.b	#1,mapping_frame(a1)
0002f25a 137c0000001c	move.b	#0,anim(a1)
0002f260 4e75	rts	
0002f262 7000	moveq	#0,d0
0002f264 10280025	move.b	routine_secondary(a0),d0
0002f268 323b0006	move.w	off_2F270(pc,d0.w),d1
0002f26c 4efb1002	jmp	off_2F270(pc,d1.w)
0002f27c 117c00000020	move.b	#0,collision_flags(a0)
0002f282 0c6829d00008	cmpi.w	#$29D0,x_pos(a0)
0002f288 6f10	ble.s	loc_2F29A
0002f29a 317c29d00008	move.w	#$29D0,x_pos(a0)
0002f2a0 54280025	addq.b	#2,routine_secondary(a0)
0002f2a8 7000	moveq	#0,d0
0002f2aa 1028002c	move.b	objoff_2C(a0),d0
0002f2ae 323b0006	move.w	off_2F2B6(pc,d0.w),d1
0002f2b2 4efb1002	jmp	off_2F2B6(pc,d1.w)
0002f2ba 0c68041e000c	cmpi.w	#$41E,y_pos(a0)
0002f2c0 6c0a	bge.s	loc_2F2CC
0002f2cc 5428002c	addq.b	#2,objoff_2C(a0)
0002f2d0 08e80000002d	bset	#0,objoff_2D(a0)
0002f2d6 317c003c002a	move.w	#60,objoff_2A(a0)
0002f2e6 6a00090c	bpl.w	JmpTo35_DisplaySprite
0002f2ea 317cfe000010	move.w	#-$200,x_vel(a0)
0002f2f0 54280025	addq.b	#2,routine_secondary(a0)
0002f2f4 117c000f0020	move.b	#$F,collision_flags(a0)
0002f2fa 08e80001002d	bset	#1,objoff_2D(a0)
0002f304 610001a0	bsr.w	loc_2F4A6
0002f308 6100017a	bsr.w	loc_2F484
0002f30c 3028002e	move.w	objoff_2E(a0),d0
0002f310 e248	lsr.w	#1,d0
0002f312 04400014	subi.w	#$14,d0
0002f316 3140000c	move.w	d0,y_pos(a0)
0002f31a 317c0000002e	move.w	#0,objoff_2E(a0)
0002f320 24280008	move.l	x_pos(a0),d2
0002f324 30280010	move.w	x_vel(a0),d0
0002f328 48c0	ext.l	d0
0002f32a e180	asl.l	#8,d0
0002f32c d480	add.l	d0,d2
0002f32e 21420008	move.l	d2,x_pos(a0)
0002f336 5368003c	subq.w	#1,objoff_3C(a0)
0002f33a 6b20	bmi.s	loc_2F35C
0002f33c 6100e38e	bsr.w	Boss_LoadExplosion
0002f348 4a41	tst.w	d1
0002f34a 6a0008a8	bpl.w	JmpTo35_DisplaySprite
0002f34e d368000c	add.w	d1,y_pos(a0)
0002f352 317c00000012	move.w	#0,y_vel(a0)
0002f35c 42680010	clr.w	x_vel(a0)
0002f360 54280025	addq.b	#2,routine_secondary(a0)
0002f364 317cffda003c	move.w	#-$26,objoff_3C(a0)
0002f36a 317c000c002a	move.w	#$C,objoff_2A(a0)
0002f374 5368002a	subq.w	#1,objoff_2A(a0)
0002f378 6a00087a	bpl.w	JmpTo35_DisplaySprite
0002f37c 54280025	addq.b	#2,routine_secondary(a0)
0002f380 117c0000002c	move.b	#0,objoff_2C(a0)
0002f38a 7000	moveq	#0,d0
0002f38c 1028002c	move.b	objoff_2C(a0),d0
0002f390 323b000a	move.w	off_2F39C(pc,d0.w),d1
0002f394 4ebb1006	jsr	off_2F39C(pc,d1.w)
0002f3a2 08a80000002d	bclr	#0,objoff_2D(a0)
0002f3ac 66000074	bne.w	+
0002f3b6 23480034	move.l	a0,objoff_34(a1)
0002f3ba 237c0002f9700004	move.l	#Obj56_MapUnc_2F970,mappings(a1)
0002f3c2 337c256c0002	move.w	#make_art_tile(ArtTile_ArtNem_EggChoppers,1,0),art_tile(a1)
0002f3cc 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0002f3d2 137c00200019	move.b	#$20,width_pixels(a1)
0002f3d8 137c00030018	move.b	#3,priority(a1)
0002f3de 236800080008	move.l	x_pos(a0),x_pos(a1)
0002f3e4 2368000c000c	move.l	y_pos(a0),y_pos(a1)
0002f3ea 0669000c000c	addi.w	#$C,y_pos(a1)
0002f3f0 136800220022	move.b	status(a0),status(a1)
0002f3f6 136800010001	move.b	render_flags(a0),render_flags(a1)
0002f3fc 137c000c0024	move.b	#$C,routine(a1)
0002f402 137c0002001c	move.b	#2,anim(a1)
0002f408 337c0010002a	move.w	#$10,objoff_2A(a1)
0002f40e 317c0032002a	move.w	#$32,objoff_2A(a0)
0002f414 5428002c	addq.b	#2,objoff_2C(a0)
0002f41c 11fc0001f7a7	move.b	#1,(Boss_defeated_flag).w
0002f422 4e75	rts	
0002f42a 6a14	bpl.s	+
0002f42c 08e80002002d	bset	#2,objoff_2D(a0)
0002f432 317c0060002a	move.w	#$60,objoff_2A(a0)
0002f438 5428002c	addq.b	#2,objoff_2C(a0)
0002f440 4e75	rts	
0002f448 6a12	bpl.s	loc_2F45C
0002f44a 08e800000022	bset	#status.npc.x_flip,status(a0)
0002f450 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
0002f456 5c680008	addq.w	#6,x_pos(a0)
0002f45a 6004	bra.s	loc_2F460
0002f45c 5368000c	subq.w	#1,y_pos(a0)
0002f460 0c782ab0eeca	cmpi.w	#$2AB0,(Camera_Max_X_pos).w
0002f466 6406	bhs.s	loc_2F46E
0002f468 5478eeca	addq.w	#2,(Camera_Max_X_pos).w
0002f46c 6014	bra.s	return_2F482
0002f46e 4a280001	tst.b	render_flags(a0)
0002f472 6b0e	bmi.s	return_2F482
0002f474 584f	addq.w	#4,sp
0002f476 22680034	movea.l	objoff_34(a0),a1
0002f482 4e75	rts	
0002f484 30280008	move.w	x_pos(a0),d0
0002f488 0c4028a0	cmpi.w	#$28A0,d0
0002f48c 6f06	ble.s	loc_2F494
0002f48e 0c402b08	cmpi.w	#$2B08,d0
0002f492 6d10	blt.s	return_2F4A4
0002f494 086800000022	bchg	#status.npc.x_flip,status(a0)
0002f49a 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
0002f4a0 44680010	neg.w	x_vel(a0)
0002f4a4 4e75	rts	
0002f4a6 0c2800060025	cmpi.b	#6,routine_secondary(a0)
0002f4ac 643e	bhs.s	return_2F4EC
0002f4ae 4a280022	tst.b	status(a0)
0002f4b2 6b3a	bmi.s	loc_2F4EE
0002f4b4 4a280020	tst.b	collision_flags(a0)
0002f4b8 6632	bne.s	return_2F4EC
0002f4ba 4a28003e	tst.b	objoff_3E(a0)
0002f4be 6610	bne.s	loc_2F4D0
0002f4c0 117c0020003e	move.b	#$20,objoff_3E(a0)
0002f4c6 303c00ac	move.w	#SndID_BossHit,d0
0002f4ca 4eb900001370	jsr	(PlaySound).l
0002f4d0 43f8fb22	lea	(Normal_palette_line2+2).w,a1
0002f4d4 7000	moveq	#0,d0
0002f4d6 4a51	tst.w	(a1)
0002f4d8 6604	bne.s	loc_2F4DE
0002f4da 303c0eee	move.w	#$EEE,d0
0002f4de 3280	move.w	d0,(a1)
0002f4e0 5328003e	subq.b	#1,objoff_3E(a0)
0002f4e4 6606	bne.s	return_2F4EC
0002f4e6 117c000f0020	move.b	#$F,collision_flags(a0)
0002f4ec 4e75	rts	
0002f4ee 7064	moveq	#100,d0
0002f4f4 117c00060025	move.b	#6,routine_secondary(a0)
0002f4fa 317c00000010	move.w	#0,x_vel(a0)
0002f500 317cfe800012	move.w	#-$180,y_vel(a0)
0002f506 317c00b3003c	move.w	#$B3,objoff_3C(a0)
0002f50c 08e80003002d	bset	#3,objoff_2D(a0)
0002f512 22680034	movea.l	objoff_34(a0),a1
0002f516 137c0004001c	move.b	#4,anim(a1)
0002f51c 137c0006001a	move.b	#6,mapping_frame(a1)
0002f522 7040	moveq	#PLCID_Capsule,d0
0002f528 4e75	rts	
0002f536 6a0006bc	bpl.w	JmpTo35_DisplaySprite
0002f53a 117c00040024	move.b	#4,routine(a0)
0002f540 43f90002f936	lea	(Ani_obj56_a).l,a1
0002f54e 7000	moveq	#0,d0
0002f550 10280025	move.b	routine_secondary(a0),d0
0002f554 323b0006	move.w	off_2F55C(pc,d0.w),d1
0002f558 4efb1002	jmp	off_2F55C(pc,d1.w)
0002f560 22680034	movea.l	objoff_34(a0),a1
0002f564 0c110056	cmpi.b	#ObjID_EHZBoss,id(a1)
0002f568 66000690	bne.w	JmpTo52_DeleteObject
0002f56c 08290000002d	btst	#0,objoff_2D(a1)
0002f572 671a	beq.s	loc_2F58E
0002f574 117c0001001c	move.b	#1,anim(a0)
0002f57a 317c0018002a	move.w	#$18,objoff_2A(a0)
0002f580 54280025	addq.b	#2,routine_secondary(a0)
0002f584 103c00f8	move.b	#MusID_StopSFX,d0
0002f58c 6012	bra.s	loc_2F5A0
0002f58e 1038fe0f	move.b	(Vint_runcount+3).w,d0
0002f592 0200001f	andi.b	#$1F,d0
0002f596 6608	bne.s	loc_2F5A0
0002f598 103c00de	move.b	#SndID_Helicopter,d0
0002f5a0 316900080008	move.w	x_pos(a1),x_pos(a0)
0002f5a6 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002f5ac 116900220022	move.b	status(a1),status(a0)
0002f5b2 116900010001	move.b	render_flags(a1),render_flags(a0)
0002f5b8 43f90002f936	lea	(Ani_obj56_a).l,a1
0002f5cc 6a1a	bpl.s	loc_2F5E8
0002f5ce 0c68fff0002a	cmpi.w	#-$10,objoff_2A(a0)
0002f5d4 6f000624	ble.w	JmpTo52_DeleteObject
0002f5d8 117c00040018	move.b	#4,priority(a0)
0002f5e8 43f90002f936	lea	(Ani_obj56_a).l,a1
0002f5f6 4a280025	tst.b	routine_secondary(a0)
0002f5fa 662a	bne.s	loc_2F626
0002f5fc 0c7828f0eec8	cmpi.w	#$28F0,(Camera_Min_X_pos).w
0002f602 650005f0	blo.w	JmpTo35_DisplaySprite
0002f606 0c6829d00008	cmpi.w	#$29D0,x_pos(a0)
0002f60c 6f0a	ble.s	loc_2F618
0002f618 317c29d00008	move.w	#$29D0,x_pos(a0)
0002f61e 54280025	addq.b	#2,routine_secondary(a0)
0002f626 22680034	movea.l	objoff_34(a0),a1
0002f62a 08290001002d	btst	#1,objoff_2D(a1)
0002f630 670005c2	beq.w	JmpTo35_DisplaySprite
0002f634 08290002002d	btst	#2,objoff_2D(a1)
0002f63a 660005b8	bne.w	JmpTo35_DisplaySprite
0002f63e 316900080008	move.w	x_pos(a1),x_pos(a0)
0002f644 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002f650 116900220022	move.b	status(a1),status(a0)
0002f656 6b00059c	bmi.w	JmpTo35_DisplaySprite
0002f65a 116900010001	move.b	render_flags(a1),render_flags(a0)
0002f664 7000	moveq	#0,d0
0002f666 10280025	move.b	routine_secondary(a0),d0
0002f66a 323b0006	move.w	off_2F672(pc,d0.w),d1
0002f66e 4efb1002	jmp	off_2F672(pc,d1.w)
0002f67c 0c7828f0eec8	cmpi.w	#$28F0,(Camera_Min_X_pos).w
0002f682 65000570	blo.w	JmpTo35_DisplaySprite
0002f686 317c01000012	move.w	#$100,y_vel(a0)
0002f68c 0c2800010028	cmpi.b	#1,subtype(a0)
0002f692 6e22	bgt.s	loc_2F6B6
0002f694 6710	beq.s	loc_2F6A6
0002f696 0c6829ec0008	cmpi.w	#$29EC,x_pos(a0)
0002f69c 6f28	ble.s	loc_2F6C6
0002f6a4 6042	bra.s	loc_2F6E8
0002f6a6 0c6829c40008	cmpi.w	#$29C4,x_pos(a0)
0002f6ac 6f24	ble.s	loc_2F6D2
0002f6b4 6032	bra.s	loc_2F6E8
0002f6b6 0c6829a40008	cmpi.w	#$29A4,x_pos(a0)
0002f6bc 6f20	ble.s	loc_2F6DE
0002f6c4 6022	bra.s	loc_2F6E8
0002f6c6 317c29ec0008	move.w	#$29EC,x_pos(a0)
0002f6cc 54280025	addq.b	#2,routine_secondary(a0)
0002f6d0 6016	bra.s	loc_2F6E8
0002f6d2 317c29c40008	move.w	#$29C4,x_pos(a0)
0002f6d8 54280025	addq.b	#2,routine_secondary(a0)
0002f6dc 600a	bra.s	loc_2F6E8
0002f6de 317c29a40008	move.w	#$29A4,x_pos(a0)
0002f6e4 54280025	addq.b	#2,routine_secondary(a0)
0002f6ec 4eb90001edfa	jsr	(ObjCheckFloorDist).l
0002f6f2 4a41	tst.w	d1
0002f6f4 6a04	bpl.s	loc_2F6FA
0002f6f6 d368000c	add.w	d1,y_pos(a0)
0002f6fa 4a280025	tst.b	routine_secondary(a0)
0002f6fe 6706	beq.s	loc_2F706
0002f700 317cfe000010	move.w	#-$200,x_vel(a0)
0002f706 43f90002fa44	lea	(Ani_obj56_b).l,a1
0002f714 22680034	movea.l	objoff_34(a0),a1
0002f718 0c110056	cmpi.b	#ObjID_EHZBoss,id(a1)
0002f71c 660004dc	bne.w	JmpTo52_DeleteObject
0002f720 08290001002d	btst	#1,objoff_2D(a1)
0002f726 670004cc	beq.w	JmpTo35_DisplaySprite
0002f72a 54280025	addq.b	#2,routine_secondary(a0)
0002f72e 0c2800020018	cmpi.b	#2,priority(a0)
0002f734 660c	bne.s	BranchTo_JmpTo35_DisplaySprite
0002f736 3028000c	move.w	y_pos(a0),d0
0002f73a 22680034	movea.l	objoff_34(a0),a1
0002f73e d169002e	add.w	d0,objoff_2E(a1)
0002f746 22680034	movea.l	objoff_34(a0),a1
0002f74a 0c110056	cmpi.b	#ObjID_EHZBoss,id(a1)
0002f74e 660004aa	bne.w	JmpTo52_DeleteObject
0002f752 116900220022	move.b	status(a1),status(a0)
0002f758 116900010001	move.b	render_flags(a1),render_flags(a0)
0002f75e 4a280022	tst.b	status(a0)
0002f762 6a04	bpl.s	loc_2F768
0002f764 54280025	addq.b	#2,routine_secondary(a0)
0002f768 6100fd1a	bsr.w	loc_2F484
0002f770 4eb90001edfa	jsr	(ObjCheckFloorDist).l
0002f776 4a41	tst.w	d1
0002f778 6a04	bpl.s	loc_2F77E
0002f77a d368000c	add.w	d1,y_pos(a0)
0002f77e 317c01000012	move.w	#$100,y_vel(a0)
0002f784 0c2800020018	cmpi.b	#2,priority(a0)
0002f78a 660c	bne.s	loc_2F798
0002f78c 3028000c	move.w	y_pos(a0),d0
0002f790 22680034	movea.l	objoff_34(a0),a1
0002f794 d169002e	add.w	d0,objoff_2E(a1)
0002f798 43f90002fa44	lea	(Ani_obj56_b).l,a1
0002f7ac 6a000446	bpl.w	JmpTo35_DisplaySprite
0002f7b0 54280025	addq.b	#2,routine_secondary(a0)
0002f7b4 317c000a002a	move.w	#$A,objoff_2A(a0)
0002f7ba 317cfd000012	move.w	#-$300,y_vel(a0)
0002f7c0 0c2800020018	cmpi.b	#2,priority(a0)
0002f7c6 6700042c	beq.w	JmpTo35_DisplaySprite
0002f7ca 44680010	neg.w	x_vel(a0)
0002f7d2 5368002a	subq.w	#1,objoff_2A(a0)
0002f7d6 6a00041c	bpl.w	JmpTo35_DisplaySprite
0002f7e2 4a41	tst.w	d1
0002f7e4 6a0a	bpl.s	BranchTo_JmpTo36_MarkObjGone
0002f7e6 317cfe000012	move.w	#-$200,y_vel(a0)
0002f7ec d368000c	add.w	d1,y_pos(a0)
0002f7f4 4a280025	tst.b	routine_secondary(a0)
0002f7f8 662a	bne.s	loc_2F824
0002f7fa 0c7828f0eec8	cmpi.w	#$28F0,(Camera_Min_X_pos).w
0002f800 650003f2	blo.w	JmpTo35_DisplaySprite
0002f804 0c68299a0008	cmpi.w	#$299A,x_pos(a0)
0002f80a 6f0a	ble.s	loc_2F816
0002f816 317c299a0008	move.w	#$299A,x_pos(a0)
0002f81c 54280025	addq.b	#2,routine_secondary(a0)
0002f824 22680034	movea.l	objoff_34(a0),a1
0002f828 0c110056	cmpi.b	#ObjID_EHZBoss,id(a1)
0002f82c 660003cc	bne.w	JmpTo52_DeleteObject
0002f830 08290003002d	btst	#3,objoff_2D(a1)
0002f836 6652	bne.s	loc_2F88A
0002f838 61000070	bsr.w	loc_2F8AA
0002f83c 08290001002d	btst	#1,objoff_2D(a1)
0002f842 670003b0	beq.w	JmpTo35_DisplaySprite
0002f846 117c008b0020	move.b	#$8B,collision_flags(a0)
0002f84c 316900080008	move.w	x_pos(a1),x_pos(a0)
0002f852 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0002f858 116900220022	move.b	status(a1),status(a0)
0002f85e 116900010001	move.b	render_flags(a1),render_flags(a0)
0002f864 06680010000c	addi.w	#$10,y_pos(a0)
0002f86a 303cffca	move.w	#-$36,d0
0002f86e 082800000022	btst	#status.npc.x_flip,status(a0)
0002f874 6702	beq.s	loc_2F878
0002f876 4440	neg.w	d0
0002f878 d1680008	add.w	d0,x_pos(a0)
0002f87c 43f90002fa44	lea	(Ani_obj56_b).l,a1
0002f88a 303cfffd	move.w	#-3,d0
0002f88e 082800000022	btst	#status.npc.x_flip,status(a0)
0002f894 6702	beq.s	loc_2F898
0002f896 4440	neg.w	d0
0002f898 d1680008	add.w	d0,x_pos(a0)
0002f89c 43f90002fa44	lea	(Ani_obj56_b).l,a1
0002f8aa 0c2900010021	cmpi.b	#1,collision_property(a1)
0002f8b0 6702	beq.s	loc_2F8B4
0002f8b2 4e75	rts	
0002f8b4 30280008	move.w	x_pos(a0),d0
0002f8b8 9078b008	sub.w	(MainCharacter+x_pos).w,d0
0002f8bc 6a0a	bpl.s	loc_2F8C8
0002f8be 082900000022	btst	#status.npc.x_flip,status(a1)
0002f8c4 660c	bne.s	loc_2F8D2
0002f8c6 4e75	rts	
0002f8c8 082900000022	btst	#status.npc.x_flip,status(a1)
0002f8ce 6702	beq.s	loc_2F8D2
0002f8d0 4e75	rts	
0002f8d2 08e90003002d	bset	#3,objoff_2D(a1)
0002f8d8 4e75	rts	
0002f8da 22680034	movea.l	objoff_34(a0),a1
0002f8de 216900080008	move.l	x_pos(a1),x_pos(a0)
0002f8e4 2169000c000c	move.l	y_pos(a1),y_pos(a0)
0002f8ea 116900220022	move.b	status(a1),status(a0)
0002f8f0 116900010001	move.b	render_flags(a1),render_flags(a0)
0002f8f6 1029003e	move.b	objoff_3E(a1),d0
0002f8fa 0c00001f	cmpi.b	#$1F,d0
0002f8fe 6606	bne.s	loc_2F906
0002f900 117c0002001c	move.b	#2,anim(a0)
0002f906 0c380004b024	cmpi.b	#4,(MainCharacter+routine).w
0002f90c 6708	beq.s	loc_2F916
0002f90e 0c380004b064	cmpi.b	#4,(Sidekick+routine).w
0002f914 660e	bne.s	loc_2F924
0002f916 0c280002001c	cmpi.b	#2,anim(a0)
0002f91c 6706	beq.s	loc_2F924
0002f91e 117c0003001c	move.b	#3,anim(a0)
0002f924 43f90002fac8	lea	(Ani_obj56_c).l,a1
0002f92a 4eb900016544	jsr	(AnimateSprite).l
0002f930 4ef9000164f4	jmp	(DisplaySprite).l
0002fbf4 4ef9000164f4	jmp	(extractJmpToName("JmpTo35_DisplaySprite")).l
0002fbfa 4ef9000164e6	jmp	(extractJmpToName("JmpTo52_DeleteObject")).l
0002fc00 4ef9000163d2	jmp	(extractJmpToName("JmpTo36_MarkObjGone")).l
0002fc06 4ef9000164e8	jmp	(extractJmpToName("JmpTo5_DeleteObject2")).l
0002fc0c 4ef900001370	jmp	(extractJmpToName("JmpTo6_PlaySound")).l
0002fc12 4ef900017ffa	jmp	(extractJmpToName("JmpTo21_AllocateObjectAfterCurrent")).l
0002fc18 4ef900016544	jmp	(extractJmpToName("JmpTo17_AnimateSprite")).l
0002fc1e 4ef900016d8a	jmp	(extractJmpToName("JmpTo9_Adjust2PArtPointer2")).l
0002fc24 4ef90001edfa	jmp	(extractJmpToName("JmpTo3_ObjCheckFloorDist")).l
0002fc2a 4ef90000161e	jmp	(extractJmpToName("JmpTo6_LoadPLC")).l
0002fc30 4ef900040d06	jmp	(extractJmpToName("JmpTo3_AddPoints")).l
0002fc36 4ef900016d6e	jmp	(extractJmpToName("JmpTo61_Adjust2PArtPointer")).l
0002fc3c 4ef90000f626	jmp	(extractJmpToName("JmpTo2_PlayLevelMusic")).l
0002fc42 4ef90000f62e	jmp	(extractJmpToName("JmpTo2_LoadPLC_AnimalExplosion")).l
0002fc48 4ef900016380	jmp	(extractJmpToName("JmpTo4_ObjectMoveAndFall")).l
0002fc50 7000	moveq	#0,d0
0002fc52 1028000a	move.b	boss_subtype(a0),d0
0002fc56 323b0006	move.w	Obj52_Index(pc,d0.w),d1
0002fc5a 4efb1002	jmp	Obj52_Index(pc,d1.w)
0002fc68 217c000302bc0004	move.l	#Obj52_MapUnc_302BC,mappings(a0)
0002fc70 317c03c10002	move.w	#make_art_tile(ArtTile_ArtNem_Eggpod_2,0,0),art_tile(a0)
0002fc76 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0002fc7c 117c0090000e	move.b	#$90,mainspr_width(a0)
0002fc82 117c00900014	move.b	#$90,mainspr_height(a0)
0002fc88 117c00040018	move.b	#4,priority(a0)
0002fc8e 317c30400008	move.w	#$3040,x_pos(a0)
0002fc94 317c0580000c	move.w	#$580,y_pos(a0)
0002fc9a 117c0001002c	move.b	#1,boss_defeated(a0)
0002fca0 117c0001000b	move.b	#1,mainspr_mapframe(a0)
0002fca6 5428000a	addq.b	#2,boss_subtype(a0)
0002fcaa 08e800060001	bset	#render_flags.multi_sprite,render_flags(a0)
0002fcb0 117c00320020	move.b	#$32,collision_flags(a0)
0002fcb6 117c00080032	move.b	#8,boss_hitcount2(a0)
0002fcbc 31fcff20f75a	move.w	#-$E0,(Boss_Y_vel).w
0002fcc2 31e80008f750	move.w	x_pos(a0),(Boss_X_pos).w
0002fcc8 31e8000cf754	move.w	y_pos(a0),(Boss_Y_pos).w
0002fcce 42280014	clr.b	boss_invulnerable_time(a0)
0002fcd2 316800080010	move.w	x_pos(a0),sub2_x_pos(a0)
0002fcd8 3168000c0012	move.w	y_pos(a0),sub2_y_pos(a0)
0002fcde 117c00020015	move.b	#2,sub2_mapframe(a0)
0002fce4 61000004	bsr.w	loc_2FCEA
0002fce8 4e75	rts	
0002fcea 45f8f740	lea	(Boss_AnimationArray).w,a2
0002fcee 14fc0006	move.b	#6,(a2)+
0002fcf2 14fc0000	move.b	#0,(a2)+
0002fcf6 14fc0010	move.b	#$10,(a2)+
0002fcfa 14fc0000	move.b	#0,(a2)+
0002fcfe 4e75	rts	
0002fd00 7000	moveq	#0,d0
0002fd02 10280026	move.b	boss_routine(a0),d0
0002fd06 323b0006	move.w	off_2FD0E(pc,d0.w),d1
0002fd0a 4efb1002	jmp	off_2FD0E(pc,d1.w)
0002fd18 11fc0000f73f	move.b	#0,(Boss_CollisionRoutine).w
0002fd1e 6100d8be	bsr.w	Boss_MoveObject
0002fd22 4a28002c	tst.b	boss_defeated(a0)
0002fd26 660a	bne.s	loc_2FD32
0002fd28 0c780518f754	cmpi.w	#$518,(Boss_Y_pos).w
0002fd2e 6e20	bgt.s	loc_2FD50
0002fd30 6008	bra.s	loc_2FD3A
0002fd32 0c7804fcf754	cmpi.w	#$4FC,(Boss_Y_pos).w
0002fd38 6e16	bgt.s	loc_2FD50
0002fd3a 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
0002fd40 117c0004001a	move.b	#4,boss_sine_count(a0)
0002fd46 54280026	addq.b	#2,boss_routine(a0)
0002fd4a 117c003c003e	move.b	#60,objoff_3E(a0)
0002fd50 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
0002fd56 6100034c	bsr.w	loc_300A4
0002fd64 6a5a	bpl.s	Obj52_Mobile_Hover
0002fd66 11fc0001f73f	move.b	#1,(Boss_CollisionRoutine).w
0002fd6c 117c0001000f	move.b	#1,mainspr_childsprites(a0)
0002fd72 0c2800e8003e	cmpi.b	#-$18,objoff_3E(a0)
0002fd78 6646	bne.s	Obj52_Mobile_Hover
0002fd7e 662a	bne.s	loc_2FDAA
0002fd86 137c0004000a	move.b	#4,boss_subtype(a1)
0002fd8c 136800010001	move.b	render_flags(a0),render_flags(a1)
0002fd92 022900010001	andi.b	#1<<render_flags.x_flip,render_flags(a1)
0002fd98 336800080008	move.w	x_pos(a0),x_pos(a1)
0002fd9e 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002fda4 117c002f003e	move.b	#$2F,objoff_3E(a0)
0002fdaa 610002f8	bsr.w	loc_300A4
0002fdae 6100012e	bsr.w	loc_2FEDE
0002fdb2 43f900030288	lea	(Ani_obj52).l,a1
0002fdb8 6100d84a	bsr.w	AnimateBoss
0002fdc0 1028001a	move.b	boss_sine_count(a0),d0
0002fdc4 4eb9000033b6	jsr	(CalcSine).l
0002fdca ee41	asr.w	#7,d1
0002fdcc d278f754	add.w	(Boss_Y_pos).w,d1
0002fdd0 3141000c	move.w	d1,y_pos(a0)
0002fdd4 5828001a	addq.b	#4,boss_sine_count(a0)
0002fdd8 60d0	bra.s	loc_2FDAA
0002fdda 11fc0000f73f	move.b	#0,(Boss_CollisionRoutine).w
0002fde0 117c0000000f	move.b	#0,mainspr_childsprites(a0)
0002fde6 11fc0010f742	move.b	#$10,(Boss_AnimationArray+2).w
0002fdec 11fc0000f743	move.b	#0,(Boss_AnimationArray+3).w
0002fdf8 6600ffc6	bne.w	Obj52_Mobile_Hover
0002fdfc 31fc00e0f75a	move.w	#$E0,(Boss_Y_vel).w
0002fe02 54280026	addq.b	#2,boss_routine(a0)
0002fe06 610000d6	bsr.w	loc_2FEDE
0002fe0e 6100d7ce	bsr.w	Boss_MoveObject
0002fe12 4a28002c	tst.b	boss_defeated(a0)
0002fe16 660a	bne.s	loc_2FE22
0002fe18 0c780538f754	cmpi.w	#$538,(Boss_Y_pos).w
0002fe1e 6d38	blt.s	loc_2FE58
0002fe20 6008	bra.s	Obj52_CreateLavaBall
0002fe22 0c780548f754	cmpi.w	#$548,(Boss_Y_pos).w
0002fe28 6d2e	blt.s	loc_2FE58
0002fe2a 4a280038	tst.b	objoff_38(a0)
0002fe2e 6628	bne.s	loc_2FE58
0002fe30 50e80038	st.b	objoff_38(a0)
0002fe38 661e	bne.s	loc_2FE58
0002fe3a 12bc0052	move.b	#ObjID_HTZBoss,id(a1)
0002fe3e 137c0006000a	move.b	#6,boss_subtype(a1)
0002fe44 336800080008	move.w	x_pos(a0),x_pos(a1)
0002fe4a 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002fe50 103c00ae	move.b	#SndID_LavaBall,d0
0002fe58 4a28002c	tst.b	boss_defeated(a0)
0002fe5c 6610	bne.s	loc_2FE6E
0002fe5e 0c7805a0f754	cmpi.w	#$5A0,(Boss_Y_pos).w
0002fe64 6d6a	blt.s	loc_2FED0
0002fe66 31fc05a0f754	move.w	#$5A0,(Boss_Y_pos).w
0002fe6c 600e	bra.s	loc_2FE7C
0002fe6e 0c780580f754	cmpi.w	#$580,(Boss_Y_pos).w
0002fe74 6d5a	blt.s	loc_2FED0
0002fe76 31fc0580f754	move.w	#$580,(Boss_Y_pos).w
0002fe7c 31fcff20f75a	move.w	#-$E0,(Boss_Y_vel).w
0002fe82 117c00000026	move.b	#0,boss_routine(a0)
0002fe88 51e80038	sf	objoff_38(a0)
0002fe8c 3038b008	move.w	(MainCharacter+x_pos).w,d0
0002fe90 04402fc0	subi.w	#$2FC0,d0
0002fe94 6b12	bmi.s	loc_2FEA8
0002fe96 31fc0580f754	move.w	#$580,(Boss_Y_pos).w
0002fe9c 317c30400008	move.w	#$3040,x_pos(a0)
0002fea2 50e8002c	st.b	boss_defeated(a0)
0002fea6 6010	bra.s	loc_2FEB8
0002fea8 317c2f400008	move.w	#$2F40,x_pos(a0)
0002feae 31fc05a0f754	move.w	#$5A0,(Boss_Y_pos).w
0002feb4 51e8002c	sf	boss_defeated(a0)
0002feb8 30280008	move.w	x_pos(a0),d0
0002febc b078b008	cmp.w	(MainCharacter+x_pos).w,d0
0002fec0 6e08	bgt.s	loc_2FECA
0002fec2 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
0002fec8 6006	bra.s	loc_2FED0
0002feca 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
0002fed0 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
0002fed6 610001cc	bsr.w	loc_300A4
0002fede 30280008	move.w	x_pos(a0),d0
0002fee2 3228000c	move.w	y_pos(a0),d1
0002fee6 31400010	move.w	d0,sub2_x_pos(a0)
0002feea 31410012	move.w	d1,sub2_y_pos(a0)
0002feee 4e75	rts	
0002fef0 7000	moveq	#0,d0
0002fef2 10280025	move.b	routine_secondary(a0),d0
0002fef6 323b0006	move.w	off_2FEFE(pc,d0.w),d1
0002fefa 4efb1002	jmp	off_2FEFE(pc,d1.w)
0002ff02 217c000302bc0004	move.l	#Obj52_MapUnc_302BC,mappings(a0)
0002ff0a 317c04210002	move.w	#make_art_tile(ArtTile_ArtNem_HTZBoss,0,0),art_tile(a0)
0002ff10 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0002ff16 117c00040018	move.b	#4,priority(a0)
0002ff1c 54280025	addq.b	#2,routine_secondary(a0)
0002ff20 117c0005001c	move.b	#5,anim(a0)
0002ff26 117c00980020	move.b	#$98,collision_flags(a0)
0002ff2c 0468001c000c	subi.w	#$1C,y_pos(a0)
0002ff32 303cff90	move.w	#-$70,d0
0002ff36 323cfffc	move.w	#-4,d1
0002ff3a 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0002ff40 6704	beq.s	loc_2FF46
0002ff42 4440	neg.w	d0
0002ff44 4441	neg.w	d1
0002ff46 d1680008	add.w	d0,x_pos(a0)
0002ff4a 31410010	move.w	d1,x_vel(a0)
0002ff4e 4e75	rts	
0002ff50 32280010	move.w	x_vel(a0),d1
0002ff54 d3680008	add.w	d1,x_pos(a0)
0002ff58 43f900030288	lea	(Ani_obj52).l,a1
0002ff66 7000	moveq	#0,d0
0002ff68 10280025	move.b	routine_secondary(a0),d0
0002ff6c 323b0006	move.w	off_2FF74(pc,d0.w),d1
0002ff70 4efb1002	jmp	off_2FF74(pc,d1.w)
0002ff78 2248	movea.l	a0,a1
0002ff7a 7400	moveq	#0,d2
0002ff7c 7201	moveq	#1,d1
0002ff7e 6014	bra.s	loc_2FF94
0002ff84 66000080	bne.w	return_30006
0002ff88 336800080008	move.w	x_pos(a0),x_pos(a1)
0002ff8e 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0002ff94 12bc0052	move.b	#ObjID_HTZBoss,id(a1)
0002ff98 137c0006000a	move.b	#6,boss_subtype(a1)
0002ff9e 237c000302bc0004	move.l	#Obj52_MapUnc_302BC,mappings(a1)
0002ffa6 337c04210002	move.w	#make_art_tile(ArtTile_ArtNem_HTZBoss,0,0),art_tile(a1)
0002ffac 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
0002ffb2 137c00030018	move.b	#3,priority(a1)
0002ffb8 54290025	addq.b	#2,routine_secondary(a1)
0002ffbc 137c0007001c	move.b	#7,anim(a1)
0002ffc2 137c008b0020	move.b	#$8B,collision_flags(a1)
0002ffc8 1342002e	move.b	d2,objoff_2E(a1)
0002ffcc 137c00080016	move.b	#8,y_radius(a1)
0002ffd2 137c00080017	move.b	#8,x_radius(a1)
0002ffd8 33690008002a	move.w	x_pos(a1),objoff_2A(a1)
0002ffde 303c1c00	move.w	#$1C00,d0
0002ffe2 4a42	tst.w	d2
0002ffe4 6602	bne.s	loc_2FFE8
0002ffe6 4440	neg.w	d0
0002ffe8 33400010	move.w	d0,x_vel(a1)
0002ffec 337cac000012	move.w	#-$5400,y_vel(a1)
0002fff2 0c692f400008	cmpi.w	#$2F40,x_pos(a1)
0002fff8 6706	beq.s	loc_30000
0002fffa 337c9c000012	move.w	#-$6400,y_vel(a1)
00030000 5242	addq.w	#1,d2
00030002 51c9ff7c	dbf	d1,loc_2FF80
00030006 4e75	rts	
00030008 61000068	bsr.w	Obj52_LavaBall_Move
00030010 4a41	tst.w	d1
00030012 6a50	bpl.s	loc_30064
00030014 d368000c	add.w	d1,y_pos(a0)
00030018 10bc0020	move.b	#ObjID_LavaBubble,id(a0)
0003001c 117c000a0024	move.b	#$A,routine(a0)
00030022 117c0002001c	move.b	#2,anim(a0)
00030028 117c0004001a	move.b	#4,mapping_frame(a0)
0003002e 317c00000012	move.w	#0,y_vel(a0)
00030034 217c000232940004	move.l	#Obj20_MapUnc_23294,mappings(a0)
0003003c 317c839e0002	move.w	#make_art_tile(ArtTile_ArtNem_HtzFireball1,0,1),art_tile(a0)
00030046 117c0000001a	move.b	#0,mapping_frame(a0)
0003004c 317c00090032	move.w	#9,objoff_32(a0)
00030052 117c00030036	move.b	#3,objoff_36(a0)
00030058 103c00b3	move.b	#SndID_FireBurn,d0
00030064 43f900030288	lea	(Ani_obj52).l,a1
00030072 2428002a	move.l	objoff_2A(a0),d2
00030076 2628000c	move.l	y_pos(a0),d3
0003007a 30280010	move.w	x_vel(a0),d0
0003007e 48c0	ext.l	d0
00030080 e980	asl.l	#4,d0
00030082 d480	add.l	d0,d2
00030084 30280012	move.w	y_vel(a0),d0
00030088 066803800012	addi.w	#$380,y_vel(a0)
0003008e 48c0	ext.l	d0
00030090 e980	asl.l	#4,d0
00030092 d680	add.l	d0,d3
00030094 2142002a	move.l	d2,objoff_2A(a0)
00030098 2143000c	move.l	d3,y_pos(a0)
0003009c 3168002a0008	move.w	objoff_2A(a0),x_pos(a0)
000300a2 4e75	rts	
000300a4 0c2800080026	cmpi.b	#8,boss_routine(a0)
000300aa 643e	bhs.s	return_300EA
000300ac 4a280032	tst.b	boss_hitcount2(a0)
000300b0 673a	beq.s	Obj52_Defeat
000300b2 4a280020	tst.b	collision_flags(a0)
000300b6 6632	bne.s	return_300EA
000300b8 4a280014	tst.b	boss_invulnerable_time(a0)
000300bc 6610	bne.s	loc_300CE
000300be 117c00200014	move.b	#32,boss_invulnerable_time(a0)
000300c4 303c00ac	move.w	#SndID_BossHit,d0
000300c8 4eb900001370	jsr	(PlaySound).l
000300ce 43f8fb22	lea	(Normal_palette_line2+2).w,a1
000300d2 7000	moveq	#0,d0
000300d4 4a51	tst.w	(a1)
000300d6 6604	bne.s	loc_300DC
000300d8 303c0eee	move.w	#$EEE,d0
000300dc 3280	move.w	d0,(a1)
000300de 53280014	subq.b	#1,boss_invulnerable_time(a0)
000300e2 6606	bne.s	return_300EA
000300e4 117c00320020	move.b	#$32,collision_flags(a0)
000300ea 4e75	rts	
000300ec 7064	moveq	#100,d0
000300f2 31fc00b3f75c	move.w	#$B3,(Boss_Countdown).w
000300f8 117c00080026	move.b	#8,boss_routine(a0)
000300fe 7040	moveq	#PLCID_Capsule,d0
00030104 4e75	rts	
00030106 117c0000000f	move.b	#0,mainspr_childsprites(a0)
00030112 6b2e	bmi.s	loc_30142
00030114 0c78001ef75c	cmpi.w	#$1E,(Boss_Countdown).w
0003011a 6e1e	bgt.s	Obj52_Mobile_UpdateExplosion
0003011c 117c0010000b	move.b	#$10,mainspr_mapframe(a0)
00030122 6100d5a8	bsr.w	Boss_LoadExplosion
00030126 1038fe0f	move.b	(Vint_runcount+3).w,d0
0003012a 0200001f	andi.b	#$1F,d0
0003012e 66000300	bne.w	JmpTo36_DisplaySprite
00030132 61000080	bsr.w	Obj52_CreateSmoke
0003013a 6100d590	bsr.w	Boss_LoadExplosion
00030142 1038fe0f	move.b	(Vint_runcount+3).w,d0
00030146 0200001f	andi.b	#$1F,d0
0003014a 66000006	bne.w	Obj52_Mobile_Flee
0003014e 61000064	bsr.w	Obj52_CreateSmoke
00030152 0c78ffc4f75c	cmpi.w	#-$3C,(Boss_Countdown).w
00030158 6e0002d6	bgt.w	JmpTo36_DisplaySprite
0003015c 4a38f7a7	tst.b	(Boss_defeated_flag).w
00030160 660e	bne.s	loc_30170
0003016a 11fc0001f7a7	move.b	#1,(Boss_defeated_flag).w
00030170 5468000c	addq.w	#2,y_pos(a0)
00030174 0c783160eeca	cmpi.w	#$3160,(Camera_Max_X_pos).w
0003017a 6406	bhs.s	loc_30182
0003017c 5478eeca	addq.w	#2,(Camera_Max_X_pos).w
00030180 6024	bra.s	BranchTo_JmpTo36_DisplaySprite
00030182 4a280001	tst.b	render_flags(a0)
00030186 6a22	bpl.s	loc_301AA
00030188 4a28002c	tst.b	boss_defeated(a0)
0003018c 660e	bne.s	loc_3019C
0003018e 0c680578000c	cmpi.w	#$578,y_pos(a0)
00030194 6e000014	bgt.w	loc_301AA
0003019c 0c680588000c	cmpi.w	#$588,y_pos(a0)
000301a2 6e000006	bgt.w	loc_301AA
000301aa 31fc3160eeca	move.w	#$3160,(Camera_Max_X_pos).w
000301b8 6654	bne.s	return_3020E
000301ba 12bc0052	move.b	#ObjID_HTZBoss,id(a1)
000301be 137c0008000a	move.b	#8,boss_subtype(a1)
000301c4 237c000302580004	move.l	#Obj52_MapUnc_30258,mappings(a1)
000301cc 337c05e40002	move.w	#make_art_tile(ArtTile_ArtNem_BossSmoke_2,0,0),art_tile(a1)
000301d2 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
000301d8 137c00010018	move.b	#1,priority(a1)
000301de 336800080008	move.w	x_pos(a0),x_pos(a1)
000301e4 3368000c000c	move.w	y_pos(a0),y_pos(a1)
000301ea 33680008002a	move.w	x_pos(a0),objoff_2A(a1)
000301f0 04690028000c	subi.w	#$28,y_pos(a1)
000301f6 337cffa00010	move.w	#-$60,x_vel(a1)
000301fc 337cff400012	move.w	#-$C0,y_vel(a1)
00030202 137c0000001a	move.b	#0,mapping_frame(a1)
00030208 137c0011001e	move.b	#$11,anim_frame_duration(a1)
0003020e 4e75	rts	
00030210 5328001e	subq.b	#1,anim_frame_duration(a0)
00030214 6a14	bpl.s	loc_3022A
00030216 117c0011001e	move.b	#$11,anim_frame_duration(a0)
0003021c 5228001a	addq.b	#1,mapping_frame(a0)
00030220 0c280004001a	cmpi.b	#4,mapping_frame(a0)
00030226 6700020e	beq.w	JmpTo53_DeleteObject
0003022a 2428002a	move.l	objoff_2A(a0),d2
0003022e 2628000c	move.l	y_pos(a0),d3
00030232 30280010	move.w	x_vel(a0),d0
00030236 48c0	ext.l	d0
00030238 e180	asl.l	#8,d0
0003023a d480	add.l	d0,d2
0003023c 30280012	move.w	y_vel(a0),d0
00030240 48c0	ext.l	d0
00030242 e180	asl.l	#8,d0
00030244 d680	add.l	d0,d3
00030246 2142002a	move.l	d2,objoff_2A(a0)
0003024a 3168002a0008	move.w	objoff_2A(a0),x_pos(a0)
00030250 2143000c	move.l	d3,y_pos(a0)
00030430 4ef9000164f4	jmp	(extractJmpToName("JmpTo36_DisplaySprite")).l
00030436 4ef9000164e6	jmp	(extractJmpToName("JmpTo53_DeleteObject")).l
0003043c 4ef900017fda	jmp	(extractJmpToName("JmpTo13_AllocateObject")).l
00030442 4ef9000163d2	jmp	(extractJmpToName("JmpTo37_MarkObjGone")).l
00030448 4ef900001370	jmp	(extractJmpToName("JmpTo7_PlaySound")).l
0003044e 4ef900016544	jmp	(extractJmpToName("JmpTo18_AnimateSprite")).l
00030454 4ef90001edfa	jmp	(extractJmpToName("JmpTo4_ObjCheckFloorDist")).l
0003045a 4ef90000161e	jmp	(extractJmpToName("JmpTo7_LoadPLC")).l
00030460 4ef900022ff8	jmp	(extractJmpToName("JmpTo_Obj20")).l
00030466 4ef900040d06	jmp	(extractJmpToName("JmpTo4_AddPoints")).l
0003046c 4ef900016d6e	jmp	(extractJmpToName("JmpTo62_Adjust2PArtPointer")).l
00030472 4ef90000f626	jmp	(extractJmpToName("JmpTo3_PlayLevelMusic")).l
00030478 4ef90000f62e	jmp	(extractJmpToName("JmpTo3_LoadPLC_AnimalExplosion")).l
00030480 7000	moveq	#0,d0
00030482 1028000a	move.b	boss_subtype(a0),d0
00030486 323b0006	move.w	Obj89_Index(pc,d0.w),d1
0003048a 4efb1002	jmp	Obj89_Index(pc,d1.w)
00030494 4ab8f680	tst.l	(Plc_Buffer).w
00030498 6702	beq.s	+
0003049a 4e75	rts	
0003049c 4a78ff70	tst.w	(Player_mode).w
000304a0 6632	bne.s	Obj89_Init_RaisePillars
000304a2 3038b008	move.w	(MainCharacter+x_pos).w,d0
000304a6 0c402a60	cmpi.w	#$2A60,d0
000304aa 6d000148	blt.w	Obj89_Init_Standard
000304ae 0c402b60	cmpi.w	#$2B60,d0
000304b2 6e000140	bgt.w	Obj89_Init_Standard
000304b6 0c380081b06a	cmpi.b	#$81,(Sidekick+obj_control).w
000304bc 67000016	beq.w	Obj89_Init_RaisePillars
000304c0 3038b048	move.w	(Sidekick+x_pos).w,d0
000304c4 0c402a60	cmpi.w	#$2A60,d0
000304c8 6d00012a	blt.w	Obj89_Init_Standard
000304cc 0c402b60	cmpi.w	#$2B60,d0
000304d0 6e000122	bgt.w	Obj89_Init_Standard
000304d4 11fc0001eebd	move.b	#1,(Screen_Shaking_Flag).w
000304da 317c03e00002	move.w	#make_art_tile(ArtTile_ArtNem_ARZBoss,0,0),art_tile(a0)
000304e0 217c00030e040004	move.l	#Obj89_MapUnc_30E04,mappings(a0)
000304e8 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000304ee 117c0020000e	move.b	#$20,mainspr_width(a0)
000304f4 117c00020018	move.b	#2,priority(a0)
000304fa 117c0002000a	move.b	#2,boss_subtype(a0)
00030500 317c2ae00008	move.w	#$2AE0,x_pos(a0)
00030506 317c0388000c	move.w	#$388,y_pos(a0)
0003050c 31fc2ae0f750	move.w	#$2AE0,(Boss_X_pos).w
00030512 31fc0388f754	move.w	#$388,(Boss_Y_pos).w
00030518 08e800060001	bset	#render_flags.multi_sprite,render_flags(a0)
0003051e 117c0003000f	move.b	#3,mainspr_childsprites(a0)
00030524 117c000f0020	move.b	#$F,collision_flags(a0)
0003052a 117c00080032	move.b	#8,boss_hitcount2(a0)
00030530 117c0008000b	move.b	#8,mainspr_mapframe(a0)
00030536 317cfc80002e	move.w	#-$380,obj89_hammer_y_vel(a0)
0003053c 4238f73f	clr.b	(Boss_CollisionRoutine).w
00030540 317c2ae00010	move.w	#$2AE0,sub2_x_pos(a0)
00030546 317c04880012	move.w	#$488,sub2_y_pos(a0)
0003054c 117c00000015	move.b	#0,sub2_mapframe(a0)
00030552 317c2ae00016	move.w	#$2AE0,sub3_x_pos(a0)
00030558 317c04880018	move.w	#$488,sub3_y_pos(a0)
0003055e 117c0009001b	move.b	#9,sub3_mapframe(a0)
00030564 317c2ae0001c	move.w	#$2AE0,sub4_x_pos(a0)
0003056a 317c0488001e	move.w	#$488,sub4_y_pos(a0)
00030570 117c00060021	move.b	#6,sub4_mapframe(a0)
00030576 31fc0100f75a	move.w	#$100,(Boss_Y_vel).w
00030580 66000072	bne.w	Obj89_Init_Standard
00030584 12bc0089	move.b	#ObjID_ARZBoss,id(a1)
00030588 237c00030d680004	move.l	#Obj89_MapUnc_30D68,mappings(a1)
00030590 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
00030596 337c03e00002	move.w	#make_art_tile(ArtTile_ArtNem_ARZBoss,0,0),art_tile(a1)
0003059c 137c00100019	move.b	#$10,width_pixels(a1)
000305a2 137c00040018	move.b	#4,priority(a1)
000305a8 337c2a500008	move.w	#$2A50,x_pos(a1)
000305ae 337c0510000c	move.w	#$510,y_pos(a1)
000305b4 5829000a	addq.b	#4,boss_subtype(a1)
000305b8 2348002a	move.l	a0,obj89_pillar_parent(a1)
000305bc 137c0000001a	move.b	#0,mapping_frame(a1)
000305c2 137c00020018	move.b	#2,priority(a1)
000305c8 137c00200016	move.b	#$20,y_radius(a1)
000305ce 2449	movea.l	a1,a2
000305d4 661e	bne.s	Obj89_Init_Standard
000305d6 7000	moveq	#0,d0
000305d8 323c000f	move.w	#bytesToLcnt(object_size),d1
000305dc 23b200000000	move.l	(a2,d0.w),(a1,d0.w)
000305e2 5840	addq.w	#4,d0
000305e4 51c9fff6	dbf	d1,Obj89_Init_DuplicatePillar
000305e8 08e900000001	bset	#render_flags.x_flip,render_flags(a1)
000305ee 337c2b700008	move.w	#$2B70,x_pos(a1)
000305f4 61000004	bsr.w	Obj89_Init_AnimationArray
000305f8 4e75	rts	
000305fa 45f8f740	lea	(Boss_AnimationArray).w,a2
000305fe 14fc0004	move.b	#4,(a2)+
00030602 14fc0000	move.b	#0,(a2)+
00030606 14fc0000	move.b	#0,(a2)+
0003060a 14fc0000	move.b	#0,(a2)+
0003060e 14fc0002	move.b	#2,(a2)+
00030612 14fc0000	move.b	#0,(a2)+
00030616 14fc0001	move.b	#1,(a2)+
0003061a 14fc0000	move.b	#0,(a2)+
0003061e 4e75	rts	
00030620 7000	moveq	#0,d0
00030622 10280026	move.b	boss_routine(a0),d0
00030626 323b0006	move.w	Obj89_Main_Index(pc,d0.w),d1
0003062a 4efb1002	jmp	Obj89_Main_Index(pc,d1.w)
0003063c 6100cfa0	bsr.w	Boss_MoveObject
00030640 6100011a	bsr.w	Obj89_Main_HandleFace
00030644 610001de	bsr.w	Obj89_Main_AlignParts
00030648 0c780430f754	cmpi.w	#$430,(Boss_Y_pos).w
0003064e 6d1c	blt.s	Obj89_Main_Sub0_Standard
00030650 31fc0430f754	move.w	#$430,(Boss_Y_pos).w
0003065c 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
00030662 31fcff38f758	move.w	#-$C8,(Boss_X_vel).w
00030668 50e80038	st.b	obj89_target(a0)
0003066c 43f900030dc8	lea	(Ani_obj89_b).l,a1
00030672 6100cf90	bsr.w	AnimateBoss
0003067a 6100cf62	bsr.w	Boss_MoveObject
0003067e 610000dc	bsr.w	Obj89_Main_HandleFace
00030682 610001a0	bsr.w	Obj89_Main_AlignParts
00030686 4a280038	tst.b	obj89_target(a0)
0003068a 660a	bne.s	Obj89_Main_Sub2_GoingLeft
0003068c 0c782b10f750	cmpi.w	#$2B10,(Boss_X_pos).w
00030692 6d16	blt.s	Obj89_Main_Sub2_Standard
00030694 6008	bra.s	Obj89_Main_Sub2_AtTarget
00030696 0c782ab0f750	cmpi.w	#$2AB0,(Boss_X_pos).w
0003069c 6e0c	bgt.s	Obj89_Main_Sub2_Standard
000306a4 31fc0000f758	move.w	#0,(Boss_X_vel).w
000306aa 43f900030dc8	lea	(Ani_obj89_b).l,a1
000306b0 6100cf52	bsr.w	AnimateBoss
000306b8 6100cf24	bsr.w	Boss_MoveObject
000306bc 6100009e	bsr.w	Obj89_Main_HandleFace
000306c0 61000162	bsr.w	Obj89_Main_AlignParts
000306c4 0c2800c0001a	cmpi.b	#-$40,boss_sine_count(a0)
000306ca 662c	bne.s	Obj89_Main_Sub4_Standard
000306cc 43f8f740	lea	(Boss_AnimationArray).w,a1
000306d0 022900f00004	andi.b	#$F0,2*2(a1)
000306d6 002900030004	ori.b	#3,2*2(a1)
000306dc 54280026	addq.b	#2,boss_routine(a0)
000306e0 082800000001	btst	#render_flags.x_flip,render_flags(a0)
000306e6 56e80038	sne	obj89_target(a0)
000306ea 31fc001ef75c	move.w	#$1E,(Boss_Countdown).w
000306f0 103c00bd	move.b	#SndID_Hammer,d0
000306f8 43f900030dc8	lea	(Ani_obj89_b).l,a1
000306fe 6100cf04	bsr.w	AnimateBoss
00030706 0c780014f75c	cmpi.w	#$14,(Boss_Countdown).w
0003070c 660c	bne.s	+
0003070e 08e80000003e	bset	#0,obj89_hammer_flags(a0)
00030714 11fc0001f73f	move.b	#1,(Boss_CollisionRoutine).w
00030720 6a20	bpl.s	Obj89_Main_Sub6_Standard
00030722 4238f73f	clr.b	(Boss_CollisionRoutine).w
00030726 117c00020026	move.b	#2,boss_routine(a0)
0003072c 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
00030732 6708	beq.s	Obj89_Main_Sub6_MoveRight
00030734 31fcff38f758	move.w	#-$C8,(Boss_X_vel).w
0003073a 6006	bra.s	Obj89_Main_Sub6_Standard
0003073c 31fc00c8f758	move.w	#$C8,(Boss_X_vel).w
00030742 6100ce9a	bsr.w	Boss_MoveObject
00030746 61000014	bsr.w	Obj89_Main_HandleFace
0003074a 610000d8	bsr.w	Obj89_Main_AlignParts
0003074e 43f900030dc8	lea	(Ani_obj89_b).l,a1
00030754 6100ceae	bsr.w	AnimateBoss
0003075c 61000030	bsr.w	Obj89_Main_HandleHoveringAndHits
00030760 0c380004b024	cmpi.b	#4,(MainCharacter+routine).w
00030766 6708	beq.s	Obj89_Main_Laugh
00030768 0c380004b064	cmpi.b	#4,(Sidekick+routine).w
0003076e 660a	bne.s	Obj89_Main_ChkHurt
00030770 43f8f740	lea	(Boss_AnimationArray).w,a1
00030774 137c00310003	move.b	#$31,1*2+1(a1)
0003077a 0c28003f0014	cmpi.b	#64-1,boss_invulnerable_time(a0)
00030780 660a	bne.s	return_3078C
00030782 43f8f740	lea	(Boss_AnimationArray).w,a1
00030786 137c00c00003	move.b	#-$40,1*2+1(a1)
0003078c 4e75	rts	
0003078e 1028001a	move.b	boss_sine_count(a0),d0
00030792 4eb9000033b6	jsr	(CalcSine).l
00030798 ec40	asr.w	#6,d0
0003079a d078f754	add.w	(Boss_Y_pos).w,d0
0003079e 3140000c	move.w	d0,y_pos(a0)
000307a2 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
000307a8 5428001a	addq.b	#2,boss_sine_count(a0)
000307ac 0c2800080026	cmpi.b	#8,boss_routine(a0)
000307b2 643e	bhs.s	return_307F2
000307b4 4a280032	tst.b	boss_hitcount2(a0)
000307b8 673a	beq.s	Obj89_Main_KillBoss
000307ba 4a280020	tst.b	collision_flags(a0)
000307be 6632	bne.s	return_307F2
000307c0 4a280014	tst.b	boss_invulnerable_time(a0)
000307c4 6610	bne.s	Obj89_Main_Flash
000307c6 117c00400014	move.b	#64,boss_invulnerable_time(a0)
000307cc 303c00ac	move.w	#SndID_BossHit,d0
000307d0 4eb900001370	jsr	(PlaySound).l
000307d6 43f8fb22	lea	(Normal_palette_line2+2).w,a1
000307da 7000	moveq	#0,d0
000307dc 4a51	tst.w	(a1)
000307de 6604	bne.s	+
000307e0 303c0eee	move.w	#$EEE,d0
000307e4 3280	move.w	d0,(a1)
000307e6 53280014	subq.b	#1,boss_invulnerable_time(a0)
000307ea 6606	bne.s	return_307F2
000307ec 117c000f0020	move.b	#$F,collision_flags(a0)
000307f2 4e75	rts	
000307f4 7064	moveq	#100,d0
000307fa 31fc00b3f75c	move.w	#$B3,(Boss_Countdown).w
00030800 117c00080026	move.b	#8,boss_routine(a0)
00030806 43f8f740	lea	(Boss_AnimationArray).w,a1
0003080a 137c00050002	move.b	#5,1*2(a1)
00030810 137c00000003	move.b	#0,1*2+1(a1)
00030816 7040	moveq	#PLCID_Capsule,d0
0003081c 117c00050015	move.b	#5,sub2_mapframe(a0)
00030822 4e75	rts	
00030824 30280008	move.w	x_pos(a0),d0
00030828 3228000c	move.w	y_pos(a0),d1
0003082c 31400010	move.w	d0,sub2_x_pos(a0)
00030830 31410012	move.w	d1,sub2_y_pos(a0)
00030834 3140001c	move.w	d0,sub4_x_pos(a0)
00030838 3141001e	move.w	d1,sub4_y_pos(a0)
0003083c 4a28002c	tst.b	boss_defeated(a0)
00030840 660e	bne.s	Obj89_Main_DropHammer
00030842 31400016	move.w	d0,sub3_x_pos(a0)
00030846 31410018	move.w	d1,sub3_y_pos(a0)
0003084a 3141003a	move.w	d1,obj89_hammer_y_pos(a0)
0003084e 4e75	rts	
00030850 0c780078f75c	cmpi.w	#$78,(Boss_Countdown).w
00030856 6e32	bgt.s	return_3088A
0003085e 2028003a	move.l	obj89_hammer_y_pos(a0),d0
00030862 3228002e	move.w	obj89_hammer_y_vel(a0),d1
00030866 06680038002e	addi.w	#$38,obj89_hammer_y_vel(a0)
0003086c 48c1	ext.l	d1
0003086e e181	asl.l	#8,d1
00030870 d081	add.l	d1,d0
00030872 2140003a	move.l	d0,obj89_hammer_y_pos(a0)
00030876 3168003a0018	move.w	obj89_hammer_y_pos(a0),sub3_y_pos(a0)
0003087c 0c6805400018	cmpi.w	#$540,sub3_y_pos(a0)
00030882 6d06	blt.s	return_3088A
00030884 317c0000002e	move.w	#0,obj89_hammer_y_vel(a0)
0003088a 4e75	rts	
0003088c 50e8002c	st.b	boss_defeated(a0)
00030890 5378f75c	subq.w	#1,(Boss_Countdown).w
00030894 6b06	bmi.s	Obj89_Main_SetupEscapeAnim
00030896 6100ce34	bsr.w	Boss_LoadExplosion
0003089a 603a	bra.s	Obj89_Main_Sub8_Standard
0003089c 117c0003000f	move.b	#3,mainspr_childsprites(a0)
000308a2 45f8f740	lea	(Boss_AnimationArray).w,a2
000308a6 157c00010004	move.b	#1,2*2(a2)
000308ac 157c00000005	move.b	#0,2*2+1(a2)
000308b2 157c00000002	move.b	#0,1*2(a2)
000308b8 157c00000003	move.b	#0,1*2+1(a2)
000308be 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
000308c4 4278f758	clr.w	(Boss_X_vel).w
000308c8 4278f75a	clr.w	(Boss_Y_vel).w
000308cc 54280026	addq.b	#2,boss_routine(a0)
000308d0 31fcffeef75c	move.w	#-$12,(Boss_Countdown).w
000308d6 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
000308dc 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
000308e2 43f900030dc8	lea	(Ani_obj89_b).l,a1
000308e8 6100cd1a	bsr.w	AnimateBoss
000308ec 6100ff36	bsr.w	Obj89_Main_AlignParts
000308f4 5278f75c	addq.w	#1,(Boss_Countdown).w
000308f8 670a	beq.s	Obj89_Main_SubA_StopFall
000308fa 6a0e	bpl.s	Obj89_Main_SubA_Phase2
000308fc 06780018f75a	addi.w	#$18,(Boss_Y_vel).w
00030902 6032	bra.s	Obj89_Main_SubA_Standard
00030904 4278f75a	clr.w	(Boss_Y_vel).w
00030908 602c	bra.s	Obj89_Main_SubA_Standard
0003090a 0c780018f75c	cmpi.w	#$18,(Boss_Countdown).w
00030910 6510	blo.s	Obj89_Main_SubA_Ascend
00030912 6716	beq.s	Obj89_Main_SubA_StopAscent
00030914 0c780020f75c	cmpi.w	#$20,(Boss_Countdown).w
0003091a 651a	blo.s	Obj89_Main_SubA_Standard
0003091c 54280026	addq.b	#2,boss_routine(a0)
00030920 6014	bra.s	Obj89_Main_SubA_Standard
00030928 600c	bra.s	Obj89_Main_SubA_Standard
0003092a 4278f75a	clr.w	(Boss_Y_vel).w
00030936 6100cca6	bsr.w	Boss_MoveObject
0003093a 6100fe52	bsr.w	Obj89_Main_HandleHoveringAndHits
0003093e 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
00030944 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
0003094a 43f900030dc8	lea	(Ani_obj89_b).l,a1
00030950 6100ccb2	bsr.w	AnimateBoss
00030954 6100fece	bsr.w	Obj89_Main_AlignParts
0003095c 31fc0400f758	move.w	#$400,(Boss_X_vel).w
00030962 31fcffc0f75a	move.w	#-$40,(Boss_Y_vel).w
00030968 0c782c00eeca	cmpi.w	#$2C00,(Camera_Max_X_pos).w
0003096e 6406	bhs.s	Obj89_Main_SubC_ChkDelete
00030970 5478eeca	addq.w	#2,(Camera_Max_X_pos).w
00030974 6006	bra.s	Obj89_Main_SubC_Standard
00030976 4a280001	tst.b	render_flags(a0)
0003097a 6a26	bpl.s	JmpTo54_DeleteObject
0003097c 6100cc60	bsr.w	Boss_MoveObject
00030980 6100fe0c	bsr.w	Obj89_Main_HandleHoveringAndHits
00030984 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
0003098a 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
00030990 43f900030dc8	lea	(Ani_obj89_b).l,a1
00030996 6100cc6c	bsr.w	AnimateBoss
0003099a 6100fe88	bsr.w	Obj89_Main_AlignParts
000309a2 4ef9000164e6	jmp	(DeleteObject).l
000309a8 7000	moveq	#0,d0
000309aa 2268002a	movea.l	obj89_pillar_parent(a0),a1
000309ae 0c2900080026	cmpi.b	#8,boss_routine(a1)
000309b4 6d06	blt.s	Obj89_Pillar_Normal
000309b6 117c00040025	move.b	#4,routine_secondary(a0)
000309bc 10280025	move.b	routine_secondary(a0),d0
000309c0 323b0006	move.w	Obj89_Pillar_Index(pc,d0.w),d1
000309c4 4efb1002	jmp	Obj89_Pillar_Index(pc,d1.w)
000309d2 610001a6	bsr.w	Obj89_Pillar_SolidObject
000309d6 1038fe0f	move.b	(Vint_runcount+3).w,d0
000309da 0200001f	andi.b	#$1F,d0
000309de 6608	bne.s	+
000309e0 303c00e1	move.w	#SndID_Rumbling2,d0
000309ee 0c680488000c	cmpi.w	#$488,y_pos(a0)
000309f4 6e0a	bgt.s	BranchTo_JmpTo37_DisplaySprite
000309f6 54280025	addq.b	#2,routine_secondary(a0)
000309fa 11fc0000eebd	move.b	#0,(Screen_Shaking_Flag).w
00030a04 61000174	bsr.w	Obj89_Pillar_SolidObject
00030a08 2668002a	movea.l	obj89_pillar_parent(a0),a3
00030a0c 082b0000003e	btst	#0,obj89_hammer_flags(a3)
00030a12 6726	beq.s	Obj89_Pillar_Sub2_Standard
00030a14 4a2b0038	tst.b	obj89_target(a3)
00030a18 670a	beq.s	Obj89_Pillar_Sub2_RightPillar
00030a1a 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00030a20 6718	beq.s	Obj89_Pillar_Sub2_Standard
00030a22 6008	bra.s	loc_30A2C
00030a24 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00030a2a 660e	bne.s	Obj89_Pillar_Sub2_Standard
00030a2c 08ab0000003e	bclr	#0,obj89_hammer_flags(a3)
00030a32 61000080	bsr.w	Obj89_Pillar_Shoot
00030a36 50e80038	st.b	obj89_pillar_shaking(a0)
00030a3a 61000006	bsr.w	Obj89_Pillar_ChkShake
00030a42 4a280038	tst.b	obj89_pillar_shaking(a0)
00030a46 6766	beq.s	return_30AAE
00030a48 4a680030	tst.w	obj89_pillar_shake_time(a0)
00030a4c 6e06	bgt.s	+
00030a4e 317c001f0030	move.w	#$1F,obj89_pillar_shake_time(a0)
00030a5a 6e26	bgt.s	Obj89_Pillar_Shake
00030a5c 51e80038	sf	obj89_pillar_shaking(a0)
00030a60 317c00000030	move.w	#0,obj89_pillar_shake_time(a0)
00030a66 4a2b0038	tst.b	obj89_target(a3)
00030a6a 6608	bne.s	+
00030a6c 317c2a500008	move.w	#$2A50,x_pos(a0)
00030a72 6006	bra.s	Obj89_Pillar_Sub2_End
00030a74 317c2b700008	move.w	#$2B70,x_pos(a0)
00030a7a 317c0488000c	move.w	#$488,y_pos(a0)
00030a80 602c	bra.s	return_30AAE
00030a82 323c2a50	move.w	#$2A50,d1
00030a86 4a2b0038	tst.b	obj89_target(a3)
00030a8a 6704	beq.s	+
00030a8c 323c2b70	move.w	#$2B70,d1
00030a90 1038fe0f	move.b	(Vint_runcount+3).w,d0
00030a94 02400001	andi.w	#1,d0
00030a98 d040	add.w	d0,d0
00030a9a d27b0014	add.w	Obj89_Pillar_ShakeOffsets(pc,d0.w),d1
00030a9e 31410008	move.w	d1,x_pos(a0)
00030aa2 323c0488	move.w	#$488,d1
00030aa6 d27b0008	add.w	Obj89_Pillar_ShakeOffsets(pc,d0.w),d1
00030aaa 3141000c	move.w	d1,y_pos(a0)
00030aae 4e75	rts	
00030ab8 66000086	bne.w	return_30B40
00030ac2 137c0004000a	move.b	#4,boss_subtype(a1)
00030ac8 137c00080025	move.b	#8,routine_secondary(a1)
00030ace 237c00030d680004	move.l	#Obj89_MapUnc_30D68,mappings(a1)
00030ad6 337c03e00002	move.w	#make_art_tile(ArtTile_ArtNem_ARZBoss,0,0),art_tile(a1)
00030adc 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
00030ae2 7c00	moveq	#0,d6
00030ae4 137c0002001a	move.b	#2,mapping_frame(a1)
00030aea 337c2a6a0008	move.w	#$2A6A,x_pos(a1)
00030af0 4a2b0038	tst.b	obj89_target(a3)
00030af4 670e	beq.s	+
00030af6 50c6	st.b	d6
00030af8 337c2b560008	move.w	#$2B56,x_pos(a1)
00030afe 08e900000001	bset	#render_flags.x_flip,render_flags(a1)
00030b04 337c00280030	move.w	#$28,obj89_eyes_timer(a1)
00030b0e 02400003	andi.w	#3,d0
00030b12 d040	add.w	d0,d0
00030b14 337b002c000c	move.w	Obj89_Arrow_Offsets(pc,d0.w),y_pos(a1)
00030b1a 2449	movea.l	a1,a2
00030b20 661e	bne.s	return_30B40
00030b28 137c0004000a	move.b	#4,boss_subtype(a1)
00030b2e 137c00060025	move.b	#6,routine_secondary(a1)
00030b34 234a0034	move.l	a2,obj89_arrow_parent2(a1)
00030b38 13460028	move.b	d6,subtype(a1)
00030b3c 234b0038	move.l	a3,obj89_arrow_parent(a1)
00030b40 4e75	rts	
00030b4a 11fc0001eebd	move.b	#1,(Screen_Shaking_Flag).w
00030b56 0c680510000c	cmpi.w	#$510,y_pos(a0)
00030b5c 6d0a	blt.s	BranchTo2_JmpTo37_DisplaySprite
00030b5e 11fc0000eebd	move.b	#0,(Screen_Shaking_Flag).w
00030b72 670003e6	beq.w	JmpTo55_DeleteObject
00030b7a 323c0023	move.w	#$23,d1
00030b7e 343c0044	move.w	#$44,d2
00030b82 363c0045	move.w	#$45,d3
00030b86 38280008	move.w	x_pos(a0),d4
00030b8a 3f28000c	move.w	y_pos(a0),-(sp)
00030b98 315f000c	move.w	(sp)+,y_pos(a0)
00030b9c 4e75	rts	
00030b9e 7000	moveq	#0,d0
00030ba0 22680038	movea.l	obj89_arrow_parent(a0),a1
00030ba4 0c2900080026	cmpi.b	#8,boss_routine(a1)
00030baa 6d06	blt.s	Obj89_Arrow_Normal
00030bac 117c0006002a	move.b	#6,obj89_arrow_routine(a0)
00030bb2 1028002a	move.b	obj89_arrow_routine(a0),d0
00030bb6 323b0006	move.w	Obj89_Arrow_Index(pc,d0.w),d1
00030bba 4efb1002	jmp	Obj89_Arrow_Index(pc,d1.w)
00030bc8 217c00030d680004	move.l	#Obj89_MapUnc_30D68,mappings(a0)
00030bd0 317c03e00002	move.w	#make_art_tile(ArtTile_ArtNem_ARZBoss,0,0),art_tile(a0)
00030bd6 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00030bdc 117c0090000e	move.b	#-$70,mainspr_width(a0)
00030be2 117c00040018	move.b	#4,priority(a0)
00030be8 5428002a	addq.b	#2,obj89_arrow_routine(a0)
00030bec 22680034	movea.l	obj89_arrow_parent2(a0),a1
00030bf0 316900080008	move.w	x_pos(a1),x_pos(a0)
00030bf6 3169000c000c	move.w	y_pos(a1),y_pos(a0)
00030bfc 317c00040012	move.w	#4,y_vel(a0)
00030c02 117c0004001a	move.b	#4,mapping_frame(a0)
00030c08 06680009000c	addi.w	#9,y_pos(a0)
00030c0e 4a280028	tst.b	subtype(a0)
00030c12 6714	beq.s	+
00030c14 08e800000022	bset	#status.npc.x_flip,status(a0)
00030c1a 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00030c20 317cfffd0010	move.w	#-3,x_vel(a0)
00030c26 6006	bra.s	Obj89_Arrow_Init_End
00030c28 317c00030010	move.w	#3,x_vel(a0)
00030c2e 117c00b00020	move.b	#$B0,collision_flags(a0)
00030c34 4e75	rts	
00030c36 082800070022	btst	#status.npc.no_balancing,status(a0)
00030c3c 6706	beq.s	+
00030c3e 117c0008002a	move.b	#8,obj89_arrow_routine(a0)
00030c44 30280008	move.w	x_pos(a0),d0
00030c48 d0680010	add.w	x_vel(a0),d0
00030c4c 4a680010	tst.w	x_vel(a0)
00030c50 6a0c	bpl.s	Obj89_Arrow_Sub2_GoingRight
00030c52 0c402a77	cmpi.w	#$2A77,d0
00030c56 6e26	bgt.s	Obj89_Arrow_Sub2_Move
00030c58 303c2a77	move.w	#$2A77,d0
00030c5c 600a	bra.s	Obj89_Arrow_Sub2_Stop
00030c5e 0c402b49	cmpi.w	#$2B49,d0
00030c62 6d1a	blt.s	Obj89_Arrow_Sub2_Move
00030c64 303c2b49	move.w	#$2B49,d0
00030c6e 31400008	move.w	d0,x_pos(a0)
00030c72 103c00dd	move.b	#SndID_ArrowStick,d0
00030c7e 31400008	move.w	d0,x_pos(a0)
00030c86 117c00000020	move.b	#0,collision_flags(a0)
00030c8c 082800070022	btst	#status.npc.no_balancing,status(a0)
00030c92 6706	beq.s	+
00030c9a 61000030	bsr.w	Obj89_Arrow_Platform
00030c9e 43f900030d2c	lea	(Ani_obj89_a).l,a1
00030cac 61000056	bsr.w	Obj89_Arrow_ChkDropPlayers
00030cb0 3028000c	move.w	y_pos(a0),d0
00030cb4 d0680012	add.w	y_vel(a0),d0
00030cb8 0c4004f0	cmpi.w	#$4F0,d0
00030cbc 6e00029c	bgt.w	JmpTo55_DeleteObject
00030cc0 3140000c	move.w	d0,y_pos(a0)
00030ccc 4a680030	tst.w	obj89_arrow_timer(a0)
00030cd0 6622	bne.s	Obj89_Arrow_Platform_Decay
00030cd2 323c001b	move.w	#$1B,d1
00030cd6 343c0001	move.w	#1,d2
00030cda 363c0002	move.w	#2,d3
00030cde 38280008	move.w	x_pos(a0),d4
00030ce6 082800030022	btst	#status.npc.p1_standing,status(a0)
00030cec 6714	beq.s	return_30D02
00030cee 317c001f0030	move.w	#$1F,obj89_arrow_timer(a0)
00030cfa 6606	bne.s	return_30D02
00030cfc 117c0006002a	move.b	#6,obj89_arrow_routine(a0)
00030d02 4e75	rts	
00030d04 08a800030022	bclr	#p1_standing_bit,status(a0)
00030d0a 6706	beq.s	+
00030d0c 43f8b000	lea	(MainCharacter).w,a1
00030d10 610c	bsr.s	Obj89_Arrow_DropPlayer
00030d12 08a800040022	bclr	#p2_standing_bit,status(a0)
00030d18 6710	beq.s	return_30D2A
00030d1a 43f8b040	lea	(Sidekick).w,a1
00030d1e 08e900010022	bset	#status.player.in_air,status(a1)
00030d24 08a900030022	bclr	#status.player.on_object,status(a1)
00030d2a 4e75	rts	
00030f54 4ef9000164f4	jmp	(extractJmpToName("JmpTo37_DisplaySprite")).l
00030f5a 4ef9000164e6	jmp	(extractJmpToName("JmpTo55_DeleteObject")).l
00030f60 4ef900017fda	jmp	(extractJmpToName("JmpTo14_AllocateObject")).l
00030f66 4ef900001370	jmp	(extractJmpToName("JmpTo8_PlaySound")).l
00030f6c 4ef900017ffa	jmp	(extractJmpToName("JmpTo22_AllocateObjectAfterCurrent")).l
00030f72 4ef900016544	jmp	(extractJmpToName("JmpTo19_AnimateSprite")).l
00030f78 4ef900003390	jmp	(extractJmpToName("JmpTo3_RandomNumber")).l
00030f7e 4ef90000161e	jmp	(extractJmpToName("JmpTo8_LoadPLC")).l
00030f84 4ef900040d06	jmp	(extractJmpToName("JmpTo5_AddPoints")).l
00030f8a 4ef90000f626	jmp	(extractJmpToName("JmpTo4_PlayLevelMusic")).l
00030f90 4ef90000f62e	jmp	(extractJmpToName("JmpTo4_LoadPLC_AnimalExplosion")).l
00030f96 4ef900019c32	jmp	(extractJmpToName("JmpTo8_PlatformObject")).l
00030f9c 4ef900019718	jmp	(extractJmpToName("JmpTo26_SolidObject")).l
00030fa4 7000	moveq	#0,d0
00030fa6 1028000a	move.b	boss_subtype(a0),d0
00030faa 323b0006	move.w	Obj57_Index(pc,d0.w),d1
00030fae 4efb1002	jmp	Obj57_Index(pc,d1.w)
00030fb8 217c000316ec0004	move.l	#Obj57_MapUnc_316EC,mappings(a0)
00030fc0 317c03c00002	move.w	#make_art_tile(ArtTile_ArtNem_MCZBoss,0,0),art_tile(a0)
00030fc6 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00030fcc 117c00030018	move.b	#3,priority(a0)
00030fd2 317c21a00008	move.w	#$21A0,x_pos(a0)
00030fd8 317c0560000c	move.w	#$560,y_pos(a0)
00030fde 117c0005000b	move.b	#5,mainspr_mapframe(a0)
00030fe4 5428000a	addq.b	#2,boss_subtype(a0)
00030fe8 117c00020026	move.b	#2,boss_routine(a0)
00030fee 08e800060001	bset	#render_flags.multi_sprite,render_flags(a0)
00030ff4 117c0004000f	move.b	#4,mainspr_childsprites(a0)
00030ffa 117c000f0020	move.b	#$F,collision_flags(a0)
00031000 117c00080032	move.b	#8,boss_hitcount2(a0)
00031006 31e80008f750	move.w	x_pos(a0),(Boss_X_pos).w
0003100c 31e8000cf754	move.w	y_pos(a0),(Boss_Y_pos).w
00031012 31fc00c0f75a	move.w	#$C0,(Boss_Y_vel).w
00031018 11fc0000f73f	move.b	#0,(Boss_CollisionRoutine).w
0003101e 11fc0001eebd	move.b	#1,(Screen_Shaking_Flag).w
00031024 117c0040000e	move.b	#$40,mainspr_width(a0)
0003102a 316800080010	move.w	x_pos(a0),sub2_x_pos(a0)
00031030 3168000c0012	move.w	y_pos(a0),sub2_y_pos(a0)
00031036 117c00020015	move.b	#2,sub2_mapframe(a0)
0003103c 316800080016	move.w	x_pos(a0),sub3_x_pos(a0)
00031042 3168000c0018	move.w	y_pos(a0),sub3_y_pos(a0)
00031048 117c0001001b	move.b	#1,sub3_mapframe(a0)
0003104e 31680008001c	move.w	x_pos(a0),sub4_x_pos(a0)
00031054 3168000c001e	move.w	y_pos(a0),sub4_y_pos(a0)
0003105a 117c000e0021	move.b	#$E,sub4_mapframe(a0)
00031060 316800080022	move.w	x_pos(a0),sub5_x_pos(a0)
00031066 3168000c0024	move.w	y_pos(a0),sub5_y_pos(a0)
0003106c 117c00020027	move.b	#2,sub5_mapframe(a0)
00031072 046800280022	subi.w	#$28,sub5_x_pos(a0)
00031078 31fc0028f75c	move.w	#$28,(Boss_Countdown).w
0003107e 317cfc80002e	move.w	#-$380,obj57_sub5_y_vel(a0)
00031084 317cfc800030	move.w	#-$380,obj57_sub2_y_vel(a0)
0003108a 61000004	bsr.w	Obj57_InitAnimationData
0003108e 4e75	rts	
00031090 45f8f740	lea	(Boss_AnimationArray).w,a2
00031094 14fc0002	move.b	#2,(a2)+
00031098 14fc0000	move.b	#0,(a2)+
0003109c 14fc0003	move.b	#3,(a2)+
000310a0 14fc0000	move.b	#0,(a2)+
000310a4 14fc0010	move.b	#$10,(a2)+
000310a8 14fc0000	move.b	#0,(a2)+
000310ac 14fc000d	move.b	#$D,(a2)+
000310b0 14fc0000	move.b	#0,(a2)+
000310b4 14fc0003	move.b	#3,(a2)+
000310b8 14fc0000	move.b	#0,(a2)+
000310bc 4e75	rts	
000310be 7000	moveq	#0,d0
000310c0 10280026	move.b	boss_routine(a0),d0
000310c4 323b0006	move.w	Obj57_Main_Index(pc,d0.w),d1
000310c8 4efb1002	jmp	Obj57_Main_Index(pc,d1.w)
000310e0 6a4a	bpl.s	Obj57_Main_Sub0_Continue
000310e2 11fc0000f745	move.b	#0,(Boss_AnimationArray+5).w
000310e8 6100c4f4	bsr.w	Boss_MoveObject
000310ec 0c780560f754	cmpi.w	#$560,(Boss_Y_pos).w
000310f2 6e38	bgt.s	Obj57_Main_Sub0_Continue
000310f4 31fc0100f75a	move.w	#$100,(Boss_Y_vel).w
000310fa 3638b008	move.w	(MainCharacter+x_pos).w,d3
000310fe 0c432190	cmpi.w	#$2190,d3
00031102 6406	bhs.s	+
00031104 363c2200	move.w	#$2200,d3
00031108 6004	bra.s	++
0003110a 363c2120	move.w	#$2120,d3
0003110e 31c3f750	move.w	d3,(Boss_X_pos).w
00031112 54280026	addq.b	#2,boss_routine(a0)
00031116 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
0003111c 3038b008	move.w	(MainCharacter+x_pos).w,d0
00031120 9078f750	sub.w	(Boss_X_pos).w,d0
00031124 6b06	bmi.s	Obj57_Main_Sub0_Continue
00031126 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
0003112c 0c780028f75c	cmpi.w	#$28,(Boss_Countdown).w
00031132 6606	bne.s	+
00031134 11fc0000f73f	move.b	#0,(Boss_CollisionRoutine).w
0003113a 0c780620f754	cmpi.w	#$620,(Boss_Y_pos).w
00031140 6c0a	bge.s	Obj57_Main_Sub0_Standard
00031142 11fc0001eebd	move.b	#1,(Screen_Shaking_Flag).w
00031148 6100027c	bsr.w	Obj57_SpawnStoneSpike
0003114c 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
00031152 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
00031158 610002e0	bsr.w	Obj57_HandleHits
0003115c 43f90003160a	lea	(Ani_obj57).l,a1
00031162 6100c4a0	bsr.w	AnimateBoss
00031166 610001a2	bsr.w	Obj57_TransferPositions
0003116e 6100c46e	bsr.w	Boss_MoveObject
00031172 61000252	bsr.w	Obj57_SpawnStoneSpike
00031176 0c780620f754	cmpi.w	#$620,(Boss_Y_pos).w
0003117c 6d0a	blt.s	Obj57_Main_Sub2_Standard
0003117e 54280026	addq.b	#2,boss_routine(a0)
00031182 11fc0000eebd	move.b	#0,(Screen_Shaking_Flag).w
00031188 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
0003118e 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
00031194 610002a4	bsr.w	Obj57_HandleHits
00031198 43f90003160a	lea	(Ani_obj57).l,a1
0003119e 6100c464	bsr.w	AnimateBoss
000311a2 61000166	bsr.w	Obj57_TransferPositions
000311aa 6100c432	bsr.w	Boss_MoveObject
000311ae 0c780660f754	cmpi.w	#$660,(Boss_Y_pos).w
000311b4 6d72	blt.s	Obj57_Main_Sub4_Standard
000311b6 31fc0660f754	move.w	#$660,(Boss_Y_pos).w
000311bc 54280026	addq.b	#2,boss_routine(a0)
000311c0 43f8f740	lea	(Boss_AnimationArray).w,a1
000311c4 022900f00002	andi.b	#$F0,2(a1)
000311ca 002900060002	ori.b	#6,2(a1)
000311d0 022900f00008	andi.b	#$F0,8(a1)
000311d6 002900060008	ori.b	#6,8(a1)
000311dc 022900f00006	andi.b	#$F0,6(a1)
000311e2 0029000d0006	ori.b	#$D,6(a1)
000311e8 137c00200005	move.b	#$20,5(a1)
000311ee 31fc0064f75c	move.w	#$64,(Boss_Countdown).w
000311f4 137c00300001	move.b	#$30,1(a1)
000311fa 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
00031200 3038b008	move.w	(MainCharacter+x_pos).w,d0
00031204 9078f750	sub.w	(Boss_X_pos).w,d0
00031208 6b06	bmi.s	+
0003120a 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00031210 31fcfe00f758	move.w	#-$200,(Boss_X_vel).w
00031216 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
0003121c 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00031222 6704	beq.s	Obj57_Main_Sub4_Standard
00031224 4478f758	neg.w	(Boss_X_vel).w
00031228 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
0003122e 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
00031234 61000204	bsr.w	Obj57_HandleHits
00031238 43f90003160a	lea	(Ani_obj57).l,a1
0003123e 6100c3c4	bsr.w	AnimateBoss
00031242 610000c6	bsr.w	Obj57_TransferPositions
00031250 0c780028f75c	cmpi.w	#$28,(Boss_Countdown).w
00031256 6e000090	bgt.w	Obj57_Main_Sub6_Standard
0003125a 11fc0001f73f	move.b	#1,(Boss_CollisionRoutine).w
00031260 4a78f75c	tst.w	(Boss_Countdown).w
00031264 6a000082	bpl.w	Obj57_Main_Sub6_Standard
00031268 4a280038	tst.b	boss_hurt_sonic(a0)
0003126c 6706	beq.s	+
0003126e 51e80038	sf	boss_hurt_sonic(a0)
00031272 6024	bra.s	Obj57_Main_Sub6_ReAscend1
00031274 6100c368	bsr.w	Boss_MoveObject
00031278 0c782120f750	cmpi.w	#$2120,(Boss_X_pos).w
0003127e 6e08	bgt.s	+
00031280 31fc2120f750	move.w	#$2120,(Boss_X_pos).w
00031286 601a	bra.s	Obj57_Main_Sub6_ReAscend2
00031288 0c782200f750	cmpi.w	#$2200,(Boss_X_pos).w
0003128e 6d58	blt.s	Obj57_Main_Sub6_Standard
00031290 31fc2200f750	move.w	#$2200,(Boss_X_pos).w
00031296 600a	bra.s	Obj57_Main_Sub6_ReAscend2
00031298 43f8f740	lea	(Boss_AnimationArray).w,a1
0003129c 137c00300007	move.b	#$30,7(a1)
000312a2 31fc0000f758	move.w	#0,(Boss_X_vel).w
000312a8 117c00000026	move.b	#0,boss_routine(a0)
000312ae 43f8f740	lea	(Boss_AnimationArray).w,a1
000312b2 022900f00002	andi.b	#$F0,2(a1)
000312b8 0029000b0002	ori.b	#$B,2(a1)
000312be 022900f00008	andi.b	#$F0,8(a1)
000312c4 0029000b0008	ori.b	#$B,8(a1)
000312ca 137c00000001	move.b	#0,1(a1)
000312d0 022900f00006	andi.b	#$F0,6(a1)
000312d6 0029000d0006	ori.b	#$D,6(a1)
000312dc 31fc0064f75c	move.w	#$64,(Boss_Countdown).w
000312e2 31fcff40f75a	move.w	#-$C0,(Boss_Y_vel).w
000312e8 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
000312ee 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
000312f4 61000144	bsr.w	Obj57_HandleHits
000312f8 43f90003160a	lea	(Ani_obj57).l,a1
000312fe 6100c304	bsr.w	AnimateBoss
00031302 61000006	bsr.w	Obj57_TransferPositions
0003130a 30280008	move.w	x_pos(a0),d0
0003130e 3228000c	move.w	y_pos(a0),d1
00031312 31400016	move.w	d0,sub3_x_pos(a0)
00031316 31410018	move.w	d1,sub3_y_pos(a0)
0003131a 3140001c	move.w	d0,sub4_x_pos(a0)
0003131e 3141001e	move.w	d1,sub4_y_pos(a0)
00031322 4a28002c	tst.b	boss_defeated(a0)
00031326 6630	bne.s	Obj57_FallApart
00031328 31400022	move.w	d0,sub5_x_pos(a0)
0003132c 31410024	move.w	d1,sub5_y_pos(a0)
00031330 31400010	move.w	d0,sub2_x_pos(a0)
00031334 31410012	move.w	d1,sub2_y_pos(a0)
00031338 3141003a	move.w	d1,obj57_sub5_y_pos2(a0)
0003133c 31410034	move.w	d1,obj57_sub2_y_pos2(a0)
00031340 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00031346 6708	beq.s	+
00031348 066800280022	addi.w	#$28,sub5_x_pos(a0)
0003134e 4e75	rts	
00031350 046800280022	subi.w	#$28,sub5_x_pos(a0)
00031356 4e75	rts	
00031358 0c780078f75c	cmpi.w	#$78,(Boss_Countdown).w
0003135e 6e64	bgt.s	return_313C4
00031366 2028003a	move.l	obj57_sub5_y_pos2(a0),d0
0003136a 3228002e	move.w	obj57_sub5_y_vel(a0),d1
0003136e 06680038002e	addi.w	#$38,obj57_sub5_y_vel(a0)
00031374 48c1	ext.l	d1
00031376 e181	asl.l	#8,d1
00031378 d081	add.l	d1,d0
0003137a 2140003a	move.l	d0,obj57_sub5_y_pos2(a0)
0003137e 3168003a0024	move.w	obj57_sub5_y_pos2(a0),sub5_y_pos(a0)
00031384 0c6806f00024	cmpi.w	#$6F0,sub5_y_pos(a0)
0003138a 6d06	blt.s	+
0003138c 317c0000002e	move.w	#0,obj57_sub5_y_vel(a0)
00031398 20280034	move.l	obj57_sub2_y_pos2(a0),d0
0003139c 32280030	move.w	obj57_sub2_y_vel(a0),d1
000313a0 066800380030	addi.w	#$38,obj57_sub2_y_vel(a0)
000313a6 48c1	ext.l	d1
000313a8 e181	asl.l	#8,d1
000313aa d081	add.l	d1,d0
000313ac 21400034	move.l	d0,obj57_sub2_y_pos2(a0)
000313b0 316800340012	move.w	obj57_sub2_y_pos2(a0),sub2_y_pos(a0)
000313b6 0c6806f00012	cmpi.w	#$6F0,sub2_y_pos(a0)
000313bc 6d06	blt.s	return_313C4
000313be 317c00000030	move.w	#0,obj57_sub2_y_vel(a0)
000313c4 4e75	rts	
000313c6 1238fe0f	move.b	(Vint_runcount+3).w,d1
000313ca 51c2	sf	d2
000313cc 0201001f	andi.b	#$1F,d1
000313d0 6708	beq.s	Obj57_LoadStoneSpike
000313d2 02010007	andi.b	#7,d1
000313d6 6660	bne.s	return_31438
000313d8 50c2	st.b	d2
000313de 4841	swap	d1
000313e0 024101ff	andi.w	#$1FF,d1
000313e4 064120f0	addi.w	#$20F0,d1
000313e8 0c412230	cmpi.w	#$2230,d1
000313ec 6eec	bgt.s	Obj57_LoadStoneSpike
000313f2 6644	bne.s	return_31438
000313f4 12bc0057	move.b	#ObjID_MCZBoss,id(a1)
000313f8 137c0004000a	move.b	#4,boss_subtype(a1)
000313fe 33410008	move.w	d1,x_pos(a1)
00031402 337c05f0000c	move.w	#$5F0,y_pos(a1)
00031408 237c000316ec0004	move.l	#Obj57_MapUnc_316EC,mappings(a1)
00031410 337c05600002	move.w	#make_art_tile(ArtTile_ArtUnc_FallingRocks,0,0),art_tile(a1)
00031416 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
0003141c 137c00030018	move.b	#3,priority(a1)
00031422 137c000d001a	move.b	#$D,mapping_frame(a1)
00031428 4a02	tst.b	d2
0003142a 660c	bne.s	return_31438
0003142c 137c0014001a	move.b	#$14,mapping_frame(a1)
00031432 137c00b10020	move.b	#$B1,collision_flags(a1)
00031438 4e75	rts	
0003143a 61000034	bsr.w	Obj57_HandleHits_Main
0003143e 0c28001f0014	cmpi.b	#$1F,boss_invulnerable_time(a0)
00031444 660a	bne.s	+
00031446 43f8f740	lea	(Boss_AnimationArray).w,a1
0003144a 137c00c00007	move.b	#$C0,7(a1)
00031450 4e75	rts	
00031452 1028001a	move.b	boss_sine_count(a0),d0
00031456 4eb9000033b6	jsr	(CalcSine).l
0003145c ec40	asr.w	#6,d0
0003145e d078f754	add.w	(Boss_Y_pos).w,d0
00031462 3140000c	move.w	d0,y_pos(a0)
00031466 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
0003146c 5428001a	addq.b	#2,boss_sine_count(a0)
00031470 0c2800080026	cmpi.b	#8,boss_routine(a0)
00031476 643e	bhs.s	return_314B6
00031478 4a280032	tst.b	boss_hitcount2(a0)
0003147c 673a	beq.s	Obj57_FinalDefeat
0003147e 4a280020	tst.b	collision_flags(a0)
00031482 6632	bne.s	return_314B6
00031484 4a280014	tst.b	boss_invulnerable_time(a0)
00031488 6610	bne.s	+
0003148a 117c00200014	move.b	#$20,boss_invulnerable_time(a0)
00031490 303c00ac	move.w	#SndID_BossHit,d0
00031494 4eb900001370	jsr	(PlaySound).l
0003149a 43f8fb22	lea	(Normal_palette_line2+2).w,a1
0003149e 7000	moveq	#0,d0
000314a0 4a51	tst.w	(a1)
000314a2 6604	bne.s	+
000314a4 303c0eee	move.w	#$EEE,d0
000314a8 3280	move.w	d0,(a1)
000314aa 53280014	subq.b	#1,boss_invulnerable_time(a0)
000314ae 6606	bne.s	return_314B6
000314b0 117c000f0020	move.b	#$F,collision_flags(a0)
000314b6 4e75	rts	
000314b8 7064	moveq	#100,d0
000314be 31fc00b3f75c	move.w	#$B3,(Boss_Countdown).w
000314c4 117c00080026	move.b	#8,boss_routine(a0)
000314ca 7040	moveq	#PLCID_Capsule,d0
000314d0 4e75	rts	
000314d2 50e8002c	st.b	boss_defeated(a0)
000314d6 11fc0000eebd	move.b	#0,(Screen_Shaking_Flag).w
000314dc 5378f75c	subq.w	#1,(Boss_Countdown).w
000314e0 6b12	bmi.s	+
000314e2 117c00130021	move.b	#$13,sub4_mapframe(a0)
000314e8 117c0007000b	move.b	#7,mainspr_mapframe(a0)
000314ee 6100c1dc	bsr.w	Boss_LoadExplosion
000314f2 601e	bra.s	Obj57_Main_Sub8_Standard
000314f4 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
000314fa 4278f758	clr.w	(Boss_X_vel).w
000314fe 4278f75a	clr.w	(Boss_Y_vel).w
00031502 54280026	addq.b	#2,boss_routine(a0)
00031506 117c00120021	move.b	#$12,sub4_mapframe(a0)
0003150c 31fcffeef75c	move.w	#-$12,(Boss_Countdown).w
00031512 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
00031518 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
0003151e 6100fdea	bsr.w	Obj57_TransferPositions
00031526 5278f75c	addq.w	#1,(Boss_Countdown).w
0003152a 6716	beq.s	++
0003152c 6a1a	bpl.s	+++
0003152e 0c780620f754	cmpi.w	#$620,(Boss_Y_pos).w
00031534 6404	bhs.s	+
00031536 5378f75c	subq.w	#1,(Boss_Countdown).w
0003153a 06780010f75a	addi.w	#$10,(Boss_Y_vel).w
00031540 6048	bra.s	Obj57_Main_SubA_Standard
00031542 4278f75a	clr.w	(Boss_Y_vel).w
00031546 6042	bra.s	Obj57_Main_SubA_Standard
00031548 0c780018f75c	cmpi.w	#$18,(Boss_Countdown).w
0003154e 6526	blo.s	+
00031550 672c	beq.s	++
00031552 0c780020f75c	cmpi.w	#$20,(Boss_Countdown).w
00031558 6530	blo.s	Obj57_Main_SubA_Standard
0003155a 43f8f740	lea	(Boss_AnimationArray).w,a1
0003155e 137c000d0007	move.b	#$D,7(a1)
0003156a 137c00000001	move.b	#0,1(a1)
00031570 54280026	addq.b	#2,boss_routine(a0)
00031574 6014	bra.s	Obj57_Main_SubA_Standard
0003157c 600c	bra.s	Obj57_Main_SubA_Standard
0003157e 4278f75a	clr.w	(Boss_Y_vel).w
0003158a 6100c052	bsr.w	Boss_MoveObject
0003158e 6100fec2	bsr.w	Obj57_AddSinusOffset
00031592 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
00031598 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
0003159e 6100fd6a	bsr.w	Obj57_TransferPositions
000315a6 31fc0400f758	move.w	#$400,(Boss_X_vel).w
000315ac 31fcffc0f75a	move.w	#-$40,(Boss_Y_vel).w
000315b2 0c782240eeca	cmpi.w	#$2240,(Camera_Max_X_pos).w
000315b8 6706	beq.s	+
000315ba 5478eeca	addq.w	#2,(Camera_Max_X_pos).w
000315be 6006	bra.s	Obj57_Main_SubC_Standard
000315c0 4a280001	tst.b	render_flags(a0)
000315c4 6a26	bpl.s	JmpTo56_DeleteObject
000315c6 6100c016	bsr.w	Boss_MoveObject
000315ca 6100fe86	bsr.w	Obj57_AddSinusOffset
000315ce 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
000315d4 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
000315da 43f90003160a	lea	(Ani_obj57).l,a1
000315e0 6100c022	bsr.w	AnimateBoss
000315e4 6100fd24	bsr.w	Obj57_TransferPositions
000315ec 4ef9000164e6	jmp	(DeleteObject).l
000315f6 046800280012	subi.w	#$28,sub2_y_pos(a0)
000315fc 0c6806f0000c	cmpi.w	#$6F0,y_pos(a0)
00031602 6e0002ba	bgt.w	JmpTo57_DeleteObject
000318b8 4ef9000164f4	jmp	(extractJmpToName("JmpTo38_DisplaySprite")).l
000318be 4ef9000164e6	jmp	(extractJmpToName("JmpTo57_DeleteObject")).l
000318c4 4ef900017fda	jmp	(extractJmpToName("JmpTo15_AllocateObject")).l
000318ca 4ef900003390	jmp	(extractJmpToName("JmpTo4_RandomNumber")).l
000318d0 4ef90000161e	jmp	(extractJmpToName("JmpTo9_LoadPLC")).l
000318d6 4ef900040d06	jmp	(extractJmpToName("JmpTo6_AddPoints")).l
000318dc 4ef90000f626	jmp	(extractJmpToName("JmpTo5_PlayLevelMusic")).l
000318e2 4ef90000f62e	jmp	(extractJmpToName("JmpTo5_LoadPLC_AnimalExplosion")).l
000318e8 4ef900016380	jmp	(extractJmpToName("JmpTo5_ObjectMoveAndFall")).l
000318f0 7000	moveq	#0,d0
000318f2 1028000a	move.b	boss_subtype(a0),d0
000318f6 323b0006	move.w	Obj51_Index(pc,d0.w),d1
000318fa 4efb1002	jmp	Obj51_Index(pc,d1.w)
00031904 217c000320ea0004	move.l	#Obj51_MapUnc_320EA,mappings(a0)
0003190c 317c03a70002	move.w	#make_art_tile(ArtTile_ArtNem_CNZBoss_Fudge,0,0),art_tile(a0)
00031912 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00031918 117c00030018	move.b	#3,priority(a0)
0003191e 317c2a460008	move.w	#$2A46,x_pos(a0)
00031924 317c0654000c	move.w	#$654,y_pos(a0)
0003192a 117c0000000b	move.b	#0,mainspr_mapframe(a0)
00031930 117c0020000e	move.b	#$20,mainspr_width(a0)
00031936 117c00800014	move.b	#$80,mainspr_height(a0)
0003193c 5428000a	addq.b	#2,boss_subtype(a0)
00031940 117c00000026	move.b	#0,boss_routine(a0)
00031946 08e800060001	bset	#render_flags.multi_sprite,render_flags(a0)
0003194c 117c0004000f	move.b	#4,mainspr_childsprites(a0)
00031952 117c000f0020	move.b	#$F,collision_flags(a0)
00031958 117c00080032	move.b	#8,boss_hitcount2(a0)
0003195e 31e80008f750	move.w	x_pos(a0),(Boss_X_pos).w
00031964 31e8000cf754	move.w	y_pos(a0),(Boss_Y_pos).w
0003196a 316800080010	move.w	x_pos(a0),sub2_x_pos(a0)
00031970 3168000c0012	move.w	y_pos(a0),sub2_y_pos(a0)
00031976 117c00050015	move.b	#5,sub2_mapframe(a0)
0003197c 316800080016	move.w	x_pos(a0),sub3_x_pos(a0)
00031982 3168000c0018	move.w	y_pos(a0),sub3_y_pos(a0)
00031988 117c0001001b	move.b	#1,sub3_mapframe(a0)
0003198e 31680008001c	move.w	x_pos(a0),sub4_x_pos(a0)
00031994 3168000c001e	move.w	y_pos(a0),sub4_y_pos(a0)
0003199a 117c00060021	move.b	#6,sub4_mapframe(a0)
000319a0 316800080022	move.w	x_pos(a0),sub5_x_pos(a0)
000319a6 3168000c0024	move.w	y_pos(a0),sub5_y_pos(a0)
000319ac 117c00020027	move.b	#2,sub5_mapframe(a0)
000319b2 117c00000038	move.b	#0,objoff_38(a0)
000319b8 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
000319be 31fcfe80f758	move.w	#-$180,(Boss_X_vel).w
000319c4 117c0000002d	move.b	#0,objoff_2D(a0)
000319ca 31fc0001f75c	move.w	#1,(Boss_Countdown).w
000319d0 61000004	bsr.w	loc_319D6
000319d4 4e75	rts	
000319d6 45f8f740	lea	(Boss_AnimationArray).w,a2
000319da 14fc0008	move.b	#8,(a2)+
000319de 14fc0000	move.b	#0,(a2)+
000319e2 14fc0001	move.b	#1,(a2)+
000319e6 14fc0000	move.b	#0,(a2)+
000319ea 14fc0010	move.b	#$10,(a2)+
000319ee 14fc0000	move.b	#0,(a2)+
000319f2 14fc0003	move.b	#3,(a2)+
000319f6 14fc0000	move.b	#0,(a2)+
000319fa 14fc0002	move.b	#2,(a2)+
000319fe 14fc0000	move.b	#0,(a2)+
00031a02 4e75	rts	
00031a04 4a38f73f	tst.b	(Boss_CollisionRoutine).w
00031a08 6712	beq.s	loc_31A1C
00031a0a 1038fe0f	move.b	(Vint_runcount+3).w,d0
00031a0e 0200001f	andi.b	#$1F,d0
00031a12 6608	bne.s	loc_31A1C
00031a14 103c00d0	move.b	#SndID_CNZBossZap,d0
00031a1c 7000	moveq	#0,d0
00031a1e 10280026	move.b	boss_routine(a0),d0
00031a22 323b0006	move.w	off_31A2A(pc,d0.w),d1
00031a26 4efb1002	jmp	off_31A2A(pc,d1.w)
00031a36 7000	moveq	#0,d0
00031a38 10280038	move.b	objoff_38(a0),d0
00031a3c 303b0006	move.w	off_31A44(pc,d0.w),d0
00031a40 4efb0002	jmp	off_31A44(pc,d0.w)
00031a48 0c7828c0f750	cmpi.w	#$28C0,(Boss_X_pos).w
00031a4e 6e24	bgt.s	BranchTo_loc_31AA4
00031a50 31fc28c0f750	move.w	#$28C0,(Boss_X_pos).w
00031a56 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
00031a5c 31fc0180f758	move.w	#$180,(Boss_X_vel).w
00031a62 117c00020038	move.b	#2,objoff_38(a0)
00031a68 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00031a6e 117c0000002d	move.b	#0,objoff_2D(a0)
00031a74 6000002e	bra.w	loc_31AA4
00031a78 0c7829c0f750	cmpi.w	#$29C0,(Boss_X_pos).w
00031a7e 6d24	blt.s	loc_31AA4
00031a80 31fc29c0f750	move.w	#$29C0,(Boss_X_pos).w
00031a86 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
00031a8c 31fcfe80f758	move.w	#-$180,(Boss_X_vel).w
00031a92 117c00000038	move.b	#0,objoff_38(a0)
00031a98 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
00031a9e 117c0000002d	move.b	#0,objoff_2D(a0)
00031aa4 6100bb38	bsr.w	Boss_MoveObject
00031aa8 4a28003f	tst.b	objoff_3F(a0)
00031aac 6708	beq.s	loc_31AB6
00031aae 5328003f	subq.b	#1,objoff_3F(a0)
00031ab2 60000092	bra.w	loc_31B46
00031ab6 3038b008	move.w	(MainCharacter+x_pos).w,d0
00031aba 90680008	sub.w	x_pos(a0),d0
00031abe 06400010	addi.w	#$10,d0
00031ac2 0c400020	cmpi.w	#$20,d0
00031ac6 647e	bhs.s	loc_31B46
00031ac8 0c7806b0b00c	cmpi.w	#$6B0,(MainCharacter+y_pos).w
00031ace 6536	blo.s	loc_31B06
00031ad0 0c280003002d	cmpi.b	#3,objoff_2D(a0)
00031ad6 646e	bhs.s	loc_31B46
00031ad8 5228002d	addq.b	#1,objoff_2D(a0)
00031adc 54280026	addq.b	#2,boss_routine(a0)
00031ae0 11fc0008f740	move.b	#8,(Boss_AnimationArray).w
00031ae6 11fc0000f743	move.b	#0,(Boss_AnimationArray+3).w
00031aec 11fc0000f749	move.b	#0,(Boss_AnimationArray+9).w
00031af2 11fc0000f73f	move.b	#0,(Boss_CollisionRoutine).w
00031af8 610000f8	bsr.w	loc_31BF2
00031afc 31fc0050f75c	move.w	#$50,(Boss_Countdown).w
00031b02 60000104	bra.w	loc_31C08
00031b06 0c78067cb00c	cmpi.w	#$67C,(MainCharacter+y_pos).w
00031b0c 6538	blo.s	loc_31B46
00031b0e 117c000f000b	move.b	#$F,mainspr_mapframe(a0)
00031b14 11fc0002f73f	move.b	#2,(Boss_CollisionRoutine).w
00031b1a 11fc0020f743	move.b	#$20,(Boss_AnimationArray+3).w
00031b20 11fc0020f749	move.b	#$20,(Boss_AnimationArray+9).w
00031b26 11fc0009f740	move.b	#9,(Boss_AnimationArray).w
00031b2c 58280026	addq.b	#4,boss_routine(a0)
00031b30 31fc0000f758	move.w	#0,(Boss_X_vel).w
00031b36 31fc0180f75a	move.w	#$180,(Boss_Y_vel).w
00031b3c 117c0000003e	move.b	#0,objoff_3E(a0)
00031b42 600000c4	bra.w	loc_31C08
00031b46 60000002	bra.w	+
00031b50 3038f75c	move.w	(Boss_Countdown).w,d0
00031b54 0240003f	andi.w	#$3F,d0
00031b58 660000ae	bne.w	loc_31C08
00031b5c 08380006f75d	btst	#6,(Boss_Countdown+1).w
00031b62 6722	beq.s	loc_31B86
00031b64 117c000f000b	move.b	#$F,mainspr_mapframe(a0)
00031b6a 11fc0002f73f	move.b	#2,(Boss_CollisionRoutine).w
00031b70 11fc0020f743	move.b	#$20,(Boss_AnimationArray+3).w
00031b76 11fc0020f749	move.b	#$20,(Boss_AnimationArray+9).w
00031b7c 11fc0009f740	move.b	#9,(Boss_AnimationArray).w
00031b82 60000084	bra.w	loc_31C08
00031b86 117c000c000b	move.b	#$C,mainspr_mapframe(a0)
00031b8c 11fc0001f73f	move.b	#1,(Boss_CollisionRoutine).w
00031b92 11fc0000f743	move.b	#0,(Boss_AnimationArray+3).w
00031b98 11fc0000f749	move.b	#0,(Boss_AnimationArray+9).w
00031b9e 11fc0004f740	move.b	#4,(Boss_AnimationArray).w
00031ba4 60000062	bra.w	loc_31C08
00031ba8 11fc0000f73f	move.b	#0,(Boss_CollisionRoutine).w
00031bb4 6610	bne.s	loc_31BC6
00031bb6 11fc0020f743	move.b	#$20,(Boss_AnimationArray+3).w
00031bbc 11fc0020f749	move.b	#$20,(Boss_AnimationArray+9).w
00031bc2 60000044	bra.w	loc_31C08
00031bc6 0c78ffecf75c	cmpi.w	#-$14,(Boss_Countdown).w
00031bcc 6e00003a	bgt.w	loc_31C08
00031bd0 11fc0000f743	move.b	#0,(Boss_AnimationArray+3).w
00031bd6 11fc0000f749	move.b	#0,(Boss_AnimationArray+9).w
00031bdc 117c00000026	move.b	#0,boss_routine(a0)
00031be2 31fcfffff75c	move.w	#-1,(Boss_Countdown).w
00031be8 117c0040003f	move.b	#$40,objoff_3F(a0)
00031bee 60000018	bra.w	loc_31C08
00031bf6 660e	bne.s	return_31C06
00031bf8 12bc0051	move.b	#ObjID_CNZBoss,id(a1)
00031bfc 137c0004000a	move.b	#4,boss_subtype(a1)
00031c02 23480034	move.l	a0,objoff_34(a1)
00031c06 4e75	rts	
00031c08 610000d2	bsr.w	loc_31CDC
00031c0c 61000268	bsr.w	loc_31E76
00031c10 61000080	bsr.w	loc_31C92
00031c14 43f90003209c	lea	(Ani_obj51).l,a1
00031c1a 6100b9e8	bsr.w	AnimateBoss
00031c22 6100b9ba	bsr.w	Boss_MoveObject
00031c26 4a28003e	tst.b	objoff_3E(a0)
00031c2a 6634	bne.s	loc_31C60
00031c2c 0c680680000c	cmpi.w	#$680,y_pos(a0)
00031c32 65d4	blo.s	loc_31C08
00031c34 31fc0000f758	move.w	#0,(Boss_X_vel).w
00031c3a 31fcfe80f75a	move.w	#-$180,(Boss_Y_vel).w
00031c40 117c00ff003e	move.b	#-1,objoff_3E(a0)
00031c46 11fc0001f73f	move.b	#1,(Boss_CollisionRoutine).w
00031c4c 11fc0000f743	move.b	#0,(Boss_AnimationArray+3).w
00031c52 11fc0000f749	move.b	#0,(Boss_AnimationArray+9).w
00031c58 11fc0004f740	move.b	#4,(Boss_AnimationArray).w
00031c5e 60a8	bra.s	loc_31C08
00031c60 0c680654000c	cmpi.w	#$654,y_pos(a0)
00031c66 64a0	bhs.s	loc_31C08
00031c68 117c00000026	move.b	#0,boss_routine(a0)
00031c6e 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
00031c74 31fcfe80f758	move.w	#-$180,(Boss_X_vel).w
00031c7a 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00031c80 670c	beq.s	BranchTo_loc_31C08
00031c82 31fc0180f758	move.w	#$180,(Boss_X_vel).w
00031c88 117c000c000b	move.b	#$C,mainspr_mapframe(a0)
00031c8e 6000ff78	bra.w	loc_31C08
00031c92 0c28002f0014	cmpi.b	#48-1,boss_invulnerable_time(a0)
00031c98 6612	bne.s	loc_31CAC
00031c9a 43f8f740	lea	(Boss_AnimationArray).w,a1
00031c9e 022900f00006	andi.b	#$F0,6(a1)
00031ca4 002900060006	ori.b	#6,6(a1)
00031caa 4e75	rts	
00031cac 0c380004b024	cmpi.b	#4,(MainCharacter+routine).w
00031cb2 6708	beq.s	loc_31CBC
00031cb4 0c380004b064	cmpi.b	#4,(Sidekick+routine).w
00031cba 661e	bne.s	return_31CDA
00031cbc 43f8f740	lea	(Boss_AnimationArray).w,a1
00031cc0 10290006	move.b	6(a1),d0
00031cc4 0200000f	andi.b	#$F,d0
00031cc8 0c000006	cmpi.b	#6,d0
00031ccc 670c	beq.s	return_31CDA
00031cce 022900f00006	andi.b	#$F0,6(a1)
00031cd4 002900050006	ori.b	#5,6(a1)
00031cda 4e75	rts	
00031cdc 1028001a	move.b	boss_sine_count(a0),d0
00031ce0 4eb9000033b6	jsr	(CalcSine).l
00031ce6 ec40	asr.w	#6,d0
00031ce8 d078f754	add.w	(Boss_Y_pos).w,d0
00031cec 3140000c	move.w	d0,y_pos(a0)
00031cf0 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
00031cf6 5428001a	addq.b	#2,boss_sine_count(a0)
00031cfa 0c2800060026	cmpi.b	#6,boss_routine(a0)
00031d00 643e	bhs.s	return_31D40
00031d02 4a280032	tst.b	boss_hitcount2(a0)
00031d06 673a	beq.s	loc_31D42
00031d08 4a280020	tst.b	collision_flags(a0)
00031d0c 6632	bne.s	return_31D40
00031d0e 4a280014	tst.b	boss_invulnerable_time(a0)
00031d12 6610	bne.s	loc_31D24
00031d14 117c00300014	move.b	#48,boss_invulnerable_time(a0)
00031d1a 303c00ac	move.w	#SndID_BossHit,d0
00031d1e 4eb900001370	jsr	(PlaySound).l
00031d24 43f8fb22	lea	(Normal_palette_line2+2).w,a1
00031d28 7000	moveq	#0,d0
00031d2a 4a51	tst.w	(a1)
00031d2c 6604	bne.s	loc_31D32
00031d2e 303c0eee	move.w	#$EEE,d0
00031d32 3280	move.w	d0,(a1)
00031d34 53280014	subq.b	#1,boss_invulnerable_time(a0)
00031d38 6606	bne.s	return_31D40
00031d3a 117c000f0020	move.b	#$F,collision_flags(a0)
00031d40 4e75	rts	
00031d42 7064	moveq	#100,d0
00031d48 31fc00b3f75c	move.w	#$B3,(Boss_Countdown).w
00031d4e 117c00060026	move.b	#6,boss_routine(a0)
00031d54 7040	moveq	#PLCID_Capsule,d0
00031d5a 4e75	rts	
00031d5c 50e8002c	st.b	boss_defeated(a0)
00031d60 5378f75c	subq.w	#1,(Boss_Countdown).w
00031d64 6b18	bmi.s	loc_31D7E
00031d66 11fc0000f73f	move.b	#0,(Boss_CollisionRoutine).w
00031d6c 117c0000000b	move.b	#0,mainspr_mapframe(a0)
00031d72 117c000b0021	move.b	#$B,collision_property(a0)
00031d78 6100b952	bsr.w	Boss_LoadExplosion
00031d7c 603a	bra.s	loc_31DB8
00031d7e 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00031d84 4278f758	clr.w	(Boss_X_vel).w
00031d88 4278f75a	clr.w	(Boss_Y_vel).w
00031d8c 54280026	addq.b	#2,boss_routine(a0)
00031d90 43f8f740	lea	(Boss_AnimationArray).w,a1
00031d94 022900f00006	andi.b	#$F0,6(a1)
00031d9a 002900030006	ori.b	#3,6(a1)
00031da6 11fc00dd8c54	move.b	#$DD,(Level_Layout+$C54).w
00031dac 11fc0001f72c	move.b	#1,(Screen_redraw_flag).w
00031db2 31fcffeef75c	move.w	#-$12,(Boss_Countdown).w
00031db8 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
00031dbe 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
00031dc4 610000b0	bsr.w	loc_31E76
00031dcc 5278f75c	addq.w	#1,(Boss_Countdown).w
00031dd0 670a	beq.s	loc_31DDC
00031dd2 6a0e	bpl.s	loc_31DE2
00031dd4 06780018f75a	addi.w	#$18,(Boss_Y_vel).w
00031dda 6032	bra.s	loc_31E0E
00031ddc 4278f75a	clr.w	(Boss_Y_vel).w
00031de0 602c	bra.s	loc_31E0E
00031de2 0c780018f75c	cmpi.w	#$18,(Boss_Countdown).w
00031de8 6510	blo.s	loc_31DFA
00031dea 6716	beq.s	loc_31E02
00031dec 0c780020f75c	cmpi.w	#$20,(Boss_Countdown).w
00031df2 651a	blo.s	loc_31E0E
00031df4 54280026	addq.b	#2,boss_routine(a0)
00031df8 6014	bra.s	loc_31E0E
00031e00 600c	bra.s	loc_31E0E
00031e02 4278f75a	clr.w	(Boss_Y_vel).w
00031e0e 6100b7ce	bsr.w	Boss_MoveObject
00031e12 6100fec8	bsr.w	loc_31CDC
00031e16 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
00031e1c 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
00031e22 61000052	bsr.w	loc_31E76
00031e2a 31fc0400f758	move.w	#$400,(Boss_X_vel).w
00031e30 31fcffc0f75a	move.w	#-$40,(Boss_Y_vel).w
00031e36 0c782b20eeca	cmpi.w	#$2B20,(Camera_Max_X_pos).w
00031e3c 6706	beq.s	loc_31E44
00031e3e 5478eeca	addq.w	#2,(Camera_Max_X_pos).w
00031e42 6006	bra.s	loc_31E4A
00031e44 4a280001	tst.b	render_flags(a0)
00031e48 6a26	bpl.s	JmpTo58_DeleteObject
00031e4a 6100b792	bsr.w	Boss_MoveObject
00031e4e 6100fe8c	bsr.w	loc_31CDC
00031e52 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
00031e58 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
00031e5e 61000016	bsr.w	loc_31E76
00031e62 43f90003209c	lea	(Ani_obj51).l,a1
00031e68 6100b79a	bsr.w	AnimateBoss
00031e70 4ef9000164e6	jmp	(DeleteObject).l
00031e76 30280008	move.w	x_pos(a0),d0
00031e7a 3228000c	move.w	y_pos(a0),d1
00031e7e 31400016	move.w	d0,sub3_x_pos(a0)
00031e82 31410018	move.w	d1,sub3_y_pos(a0)
00031e86 3140001c	move.w	d0,sub4_x_pos(a0)
00031e8a 3141001e	move.w	d1,sub4_y_pos(a0)
00031e8e 4a28002c	tst.b	boss_defeated(a0)
00031e92 661a	bne.s	loc_31EAE
00031e94 31400022	move.w	d0,sub5_x_pos(a0)
00031e98 31410024	move.w	d1,sub5_y_pos(a0)
00031e9c 31400010	move.w	d0,sub2_x_pos(a0)
00031ea0 31410012	move.w	d1,sub2_y_pos(a0)
00031ea4 3141003a	move.w	d1,objoff_3A(a0)
00031ea8 31410034	move.w	d1,objoff_34(a0)
00031eac 4e75	rts	
00031eae 0c780078f75c	cmpi.w	#$78,(Boss_Countdown).w
00031eb4 6e6c	bgt.s	return_31F22
00031ebc 2028003a	move.l	objoff_3A(a0),d0
00031ec0 3228002e	move.w	objoff_2E(a0),d1
00031ec4 06680038002e	addi.w	#$38,objoff_2E(a0)
00031eca 48c1	ext.l	d1
00031ecc e181	asl.l	#8,d1
00031ece d081	add.l	d1,d0
00031ed0 2140003a	move.l	d0,objoff_3A(a0)
00031ed4 3168003a0024	move.w	objoff_3A(a0),sub5_y_pos(a0)
00031eda 0c6806f00024	cmpi.w	#$6F0,sub5_y_pos(a0)
00031ee0 6d06	blt.s	loc_31EE8
00031ee2 317c0000002e	move.w	#0,objoff_2E(a0)
00031ee8 0c78003cf75c	cmpi.w	#60,(Boss_Countdown).w
00031eee 6e32	bgt.s	return_31F22
00031ef6 20280034	move.l	objoff_34(a0),d0
00031efa 32280030	move.w	objoff_30(a0),d1
00031efe 066800380030	addi.w	#$38,objoff_30(a0)
00031f04 48c1	ext.l	d1
00031f06 e181	asl.l	#8,d1
00031f08 d081	add.l	d1,d0
00031f0a 21400034	move.l	d0,objoff_34(a0)
00031f0e 316800340012	move.w	objoff_34(a0),sub2_y_pos(a0)
00031f14 0c6806f00012	cmpi.w	#$6F0,sub2_y_pos(a0)
00031f1a 6d06	blt.s	return_31F22
00031f1c 317c00000030	move.w	#0,objoff_30(a0)
00031f22 4e75	rts	
00031f24 22680034	movea.l	objoff_34(a0),a1
00031f28 0c2900060026	cmpi.b	#6,boss_routine(a1)
00031f2e 64000322	bhs.w	JmpTo59_DeleteObject
00031f32 7000	moveq	#0,d0
00031f34 10280025	move.b	routine_secondary(a0),d0
00031f38 323b0006	move.w	off_31F40(pc,d0.w),d1
00031f3c 4efb1002	jmp	off_31F40(pc,d1.w)
00031f48 217c000320ea0004	move.l	#Obj51_MapUnc_320EA,mappings(a0)
00031f50 317c03a70002	move.w	#make_art_tile(ArtTile_ArtNem_CNZBoss_Fudge,0,0),art_tile(a0)
00031f56 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00031f5c 117c00070018	move.b	#7,priority(a0)
00031f62 54280025	addq.b	#2,routine_secondary(a0)
00031f66 22680034	movea.l	objoff_34(a0),a1
00031f6a 316900080008	move.w	x_pos(a1),x_pos(a0)
00031f70 3169000c000c	move.w	y_pos(a1),y_pos(a0)
00031f76 06680030000c	addi.w	#$30,y_pos(a0)
00031f7c 117c00080016	move.b	#8,y_radius(a0)
00031f82 117c00080017	move.b	#8,x_radius(a0)
00031f88 117c0012001a	move.b	#$12,boss_sine_count(a0)
00031f8e 117c00980020	move.b	#$98,collision_flags(a0)
00031f94 4e75	rts	
00031f96 22680034	movea.l	objoff_34(a0),a1
00031f9a 316900080008	move.w	x_pos(a1),x_pos(a0)
00031fa0 3169000c000c	move.w	y_pos(a1),y_pos(a0)
00031fa6 30280028	move.w	objoff_28(a0),d0
00031faa d168000c	add.w	d0,y_pos(a0)
00031fb2 0c40002e	cmpi.w	#$2E,d0
00031fb6 6d04	blt.s	+
00031fb8 303c002e	move.w	#$2E,d0
00031fbc 31400028	move.w	d0,objoff_28(a0)
00031fc0 4a78f75c	tst.w	(Boss_Countdown).w
00031fc4 66000286	bne.w	JmpTo39_DisplaySprite
00031fc8 54280025	addq.b	#2,routine_secondary(a0)
00031fcc 317c00000010	move.w	#0,x_vel(a0)
00031fd2 317c00000012	move.w	#0,y_vel(a0)
00031fdc 6100001a	bsr.w	loc_31FF8
00031fe0 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00031fe6 4a41	tst.w	d1
00031fe8 6a000262	bpl.w	JmpTo39_DisplaySprite
00031fec d368000c	add.w	d1,y_pos(a0)
00031ff0 6100003e	bsr.w	loc_32030
00031ff8 7400	moveq	#0,d2
00031ffa 34280008	move.w	x_pos(a0),d2
00031ffe 4842	swap	d2
00032000 7600	moveq	#0,d3
00032002 3628000c	move.w	y_pos(a0),d3
00032006 4843	swap	d3
00032008 30280010	move.w	x_vel(a0),d0
0003200c 48c0	ext.l	d0
0003200e e180	asl.l	#8,d0
00032010 d480	add.l	d0,d2
00032012 30280012	move.w	y_vel(a0),d0
00032016 48c0	ext.l	d0
00032018 e180	asl.l	#8,d0
0003201a d680	add.l	d0,d3
0003201c 066800380012	addi.w	#$38,y_vel(a0)
00032022 4842	swap	d2
00032024 31420008	move.w	d2,x_pos(a0)
00032028 4843	swap	d3
0003202a 3143000c	move.w	d3,y_pos(a0)
0003202e 4e75	rts	
00032030 103c00c4	move.b	#SndID_BossExplosion,d0
00032038 317c03a70002	move.w	#make_art_tile(ArtTile_ArtNem_CNZBoss_Fudge,0,0),art_tile(a0)
0003203e 117c0007001c	move.b	#7,anim(a0)
00032044 317cfd000012	move.w	#-$300,y_vel(a0)
0003204a 317cff000010	move.w	#-$100,x_vel(a0)
00032050 117c0004000a	move.b	#4,boss_subtype(a0)
00032056 117c00060025	move.b	#6,routine_secondary(a0)
0003205c 117c00980020	move.b	#$98,collision_flags(a0)
00032066 6616	bne.s	return_3207E
00032068 7000	moveq	#0,d0
0003206a 323c000f	move.w	#bytesToLcnt(object_size),d1
0003206e 23b000000000	move.l	(a0,d0.w),(a1,d0.w)
00032074 5840	addq.w	#4,d0
00032076 51c9fff6	dbf	d1,loc_3206E
0003207a 44690010	neg.w	x_vel(a1)
0003207e 4e75	rts	
00032080 6100ff76	bsr.w	loc_31FF8
00032084 43f90003209c	lea	(Ani_obj51).l,a1
0003208e 0c680705000c	cmpi.w	#$705,y_pos(a0)
00032094 650001b6	blo.w	JmpTo39_DisplaySprite
0003224c 4ef9000164f4	jmp	(extractJmpToName("JmpTo39_DisplaySprite")).l
00032252 4ef9000164e6	jmp	(extractJmpToName("JmpTo59_DeleteObject")).l
00032258 4ef900017fda	jmp	(extractJmpToName("JmpTo16_AllocateObject")).l
0003225e 4ef900001370	jmp	(extractJmpToName("JmpTo9_PlaySound")).l
00032264 4ef900017ffa	jmp	(extractJmpToName("JmpTo23_AllocateObjectAfterCurrent")).l
0003226a 4ef900016544	jmp	(extractJmpToName("JmpTo20_AnimateSprite")).l
00032270 4ef90000161e	jmp	(extractJmpToName("JmpTo10_LoadPLC")).l
00032276 4ef900040d06	jmp	(extractJmpToName("JmpTo7_AddPoints")).l
0003227c 4ef90000f626	jmp	(extractJmpToName("JmpTo6_PlayLevelMusic")).l
00032282 4ef90000f62e	jmp	(extractJmpToName("JmpTo6_LoadPLC_AnimalExplosion")).l
00032288 7000	moveq	#0,d0
0003228a 1028000a	move.b	boss_subtype(a0),d0
0003228e 323b0006	move.w	Obj54_Index(pc,d0.w),d1
00032292 4efb1002	jmp	Obj54_Index(pc,d1.w)
0003229e 217c00032dc60004	move.l	#Obj54_MapUnc_32DC6,mappings(a0)
000322a6 317c037c0002	move.w	#make_art_tile(ArtTile_ArtNem_MTZBoss,0,0),art_tile(a0)
000322ac 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
000322b2 117c00030018	move.b	#3,priority(a0)
000322b8 317c2b500008	move.w	#$2B50,x_pos(a0)
000322be 317c0380000c	move.w	#$380,y_pos(a0)
000322c4 117c0002000b	move.b	#2,mainspr_mapframe(a0)
000322ca 5428000a	addq.b	#2,boss_subtype(a0)
000322ce 08e800060001	bset	#render_flags.multi_sprite,render_flags(a0)
000322d4 117c0002000f	move.b	#2,mainspr_childsprites(a0)
000322da 117c000f0020	move.b	#$F,collision_flags(a0)
000322e0 117c00080032	move.b	#8,boss_hitcount2(a0)
000322e6 117c0007003e	move.b	#7,objoff_3E(a0)
000322ec 31e80008f750	move.w	x_pos(a0),(Boss_X_pos).w
000322f2 31e8000cf754	move.w	y_pos(a0),(Boss_Y_pos).w
000322f8 31fc0000f758	move.w	#0,(Boss_X_vel).w
000322fe 31fc0100f75a	move.w	#$100,(Boss_Y_vel).w
00032304 117c0020000e	move.b	#$20,mainspr_width(a0)
0003230a 4228002b	clr.b	objoff_2B(a0)
0003230e 4228002c	clr.b	objoff_2C(a0)
00032312 117c0040001a	move.b	#$40,boss_sine_count(a0)
00032318 117c00270033	move.b	#$27,objoff_33(a0)
0003231e 117c00270039	move.b	#$27,objoff_39(a0)
00032324 316800080010	move.w	x_pos(a0),sub2_x_pos(a0)
0003232a 3168000c0012	move.w	y_pos(a0),sub2_y_pos(a0)
00032330 117c000c0015	move.b	#$C,sub2_mapframe(a0)
00032336 316800080016	move.w	x_pos(a0),sub3_x_pos(a0)
0003233c 3168000c0018	move.w	y_pos(a0),sub3_y_pos(a0)
00032342 117c0000001b	move.b	#0,sub3_mapframe(a0)
0003234c 664e	bne.s	+
0003234e 12bc0054	move.b	#ObjID_MTZBoss,id(a1)
00032352 137c0006000a	move.b	#6,boss_subtype(a1)
00032358 137c0013001a	move.b	#$13,mapping_frame(a1)
0003235e 237c00032dc60004	move.l	#Obj54_MapUnc_32DC6,mappings(a1)
00032366 337c037c0002	move.w	#make_art_tile(ArtTile_ArtNem_MTZBoss,0,0),art_tile(a1)
0003236c 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
00032372 137c00060018	move.b	#6,priority(a1)
00032378 336800080008	move.w	x_pos(a0),x_pos(a1)
0003237e 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00032384 23480034	move.l	a0,objoff_34(a1)
00032388 137c00200019	move.b	#$20,width_pixels(a1)
00032392 6608	bne.s	+
00032394 12bc0053	move.b	#ObjID_MTZBossOrb,id(a1)
00032398 23480034	move.l	a0,objoff_34(a1)
0003239c 45f8f740	lea	(Boss_AnimationArray).w,a2
000323a0 14fc0010	move.b	#$10,(a2)+
000323a4 14fc0000	move.b	#0,(a2)+
000323a8 14fc0003	move.b	#3,(a2)+
000323ac 14fc0000	move.b	#0,(a2)+
000323b0 14fc0001	move.b	#1,(a2)+
000323b4 14fc0000	move.b	#0,(a2)+
000323b8 4e75	rts	
000323ba 7000	moveq	#0,d0
000323bc 10280026	move.b	boss_routine(a0),d0
000323c0 323b0006	move.w	Obj54_MainSubStates(pc,d0.w),d1
000323c4 4efb1002	jmp	Obj54_MainSubStates(pc,d1.w)
000323dc 6100b200	bsr.w	Boss_MoveObject
000323e0 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
000323e6 0c7804a0f754	cmpi.w	#$4A0,(Boss_Y_pos).w
000323ec 6538	blo.s	+
000323ee 54280026	addq.b	#2,boss_routine(a0)
000323f2 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
000323f8 31fcff00f758	move.w	#-$100,(Boss_X_vel).w
000323fe 08a80007002b	bclr	#7,objoff_2B(a0)
00032404 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
0003240a 3038b008	move.w	(MainCharacter+x_pos).w,d0
0003240e b078f750	cmp.w	(Boss_X_pos).w,d0
00032412 6512	blo.s	+
00032414 31fc0100f758	move.w	#$100,(Boss_X_vel).w
0003241a 08e80007002b	bset	#7,objoff_2B(a0)
00032420 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00032426 61000366	bsr.w	Obj54_AnimateFace
0003242a 43f900032d7a	lea	(Ani_obj53).l,a1
00032430 6100b1d2	bsr.w	AnimateBoss
00032434 6100033e	bsr.w	Obj54_AlignSprites
0003243c 1028001a	move.b	boss_sine_count(a0),d0
00032440 4eb9000033b6	jsr	(CalcSine).l
00032446 ec40	asr.w	#6,d0
00032448 d078f754	add.w	(Boss_Y_pos).w,d0
0003244c 3140000c	move.w	d0,y_pos(a0)
00032450 5828001a	addq.b	#4,boss_sine_count(a0)
00032454 4e75	rts	
00032456 6100b186	bsr.w	Boss_MoveObject
0003245a 08280007002b	btst	#7,objoff_2B(a0)
00032460 662e	bne.s	+
00032462 0c782ad0f750	cmpi.w	#$2AD0,(Boss_X_pos).w
00032468 6452	bhs.s	Obj54_MoveAndShow
0003246a 08680007002b	bchg	#7,objoff_2B(a0)
00032470 31fc0100f758	move.w	#$100,(Boss_X_vel).w
00032476 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
0003247c 08e80006002b	bset	#6,objoff_2B(a0)
00032482 6738	beq.s	Obj54_MoveAndShow
00032484 54280026	addq.b	#2,boss_routine(a0)
00032488 31fcff00f75a	move.w	#-$100,(Boss_Y_vel).w
0003248e 602c	bra.s	Obj54_MoveAndShow
00032490 0c782bd0f750	cmpi.w	#$2BD0,(Boss_X_pos).w
00032496 6524	blo.s	Obj54_MoveAndShow
00032498 08680007002b	bchg	#7,objoff_2B(a0)
0003249e 31fcff00f758	move.w	#-$100,(Boss_X_vel).w
000324a4 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
000324aa 08e80006002b	bset	#6,objoff_2B(a0)
000324b0 670a	beq.s	Obj54_MoveAndShow
000324b2 54280026	addq.b	#2,boss_routine(a0)
000324b6 31fcff00f75a	move.w	#-$100,(Boss_Y_vel).w
000324bc 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
000324c2 6100ff78	bsr.w	Obj54_Float
000324c6 610002c6	bsr.w	Obj54_AnimateFace
000324ca 43f900032d7a	lea	(Ani_obj53).l,a1
000324d0 6100b132	bsr.w	AnimateBoss
000324d4 6100029e	bsr.w	Obj54_AlignSprites
000324dc 6100b100	bsr.w	Boss_MoveObject
000324e0 0c780470f754	cmpi.w	#$470,(Boss_Y_pos).w
000324e6 6406	bhs.s	+
000324e8 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
000324ee 08280007002b	btst	#7,objoff_2B(a0)
000324f4 6610	bne.s	+
000324f6 0c782b50f750	cmpi.w	#$2B50,(Boss_X_pos).w
000324fc 6416	bhs.s	++
000324fe 31fc0000f758	move.w	#0,(Boss_X_vel).w
00032504 600e	bra.s	++
00032506 0c782b50f750	cmpi.w	#$2B50,(Boss_X_pos).w
0003250c 6506	blo.s	+
0003250e 31fc0000f758	move.w	#0,(Boss_X_vel).w
00032514 3038f758	move.w	(Boss_X_vel).w,d0
00032518 8078f75a	or.w	(Boss_Y_vel).w,d0
0003251c 6604	bne.s	BranchTo_Obj54_MoveAndShow
0003251e 54280026	addq.b	#2,boss_routine(a0)
00032522 6098	bra.s	Obj54_MoveAndShow
00032524 0c2800680033	cmpi.b	#$68,objoff_33(a0)
0003252a 640a	bhs.s	+
0003252c 52280033	addq.b	#1,objoff_33(a0)
00032530 52280039	addq.b	#1,objoff_39(a0)
00032534 600a	bra.s	BranchTo2_Obj54_MoveAndShow
00032536 53280039	subq.b	#1,objoff_39(a0)
0003253a 6604	bne.s	BranchTo2_Obj54_MoveAndShow
0003253c 54280026	addq.b	#2,boss_routine(a0)
00032540 6000ff7a	bra.w	Obj54_MoveAndShow
00032544 0c2800270033	cmpi.b	#$27,objoff_33(a0)
0003254a 6506	blo.s	+
0003254c 53280033	subq.b	#1,objoff_33(a0)
00032550 601e	bra.s	BranchTo3_Obj54_MoveAndShow
00032552 52280039	addq.b	#1,objoff_39(a0)
00032556 0c2800270039	cmpi.b	#$27,objoff_39(a0)
0003255c 6512	blo.s	BranchTo3_Obj54_MoveAndShow
0003255e 31fc0100f75a	move.w	#$100,(Boss_Y_vel).w
00032564 117c00000026	move.b	#0,boss_routine(a0)
0003256a 08a80006002b	bclr	#6,objoff_2B(a0)
00032570 6000ff4a	bra.w	Obj54_MoveAndShow
00032574 4a280039	tst.b	objoff_39(a0)
00032578 6706	beq.s	+
0003257a 53280039	subq.b	#1,objoff_39(a0)
0003257e 6006	bra.s	++
00032580 117c00ff003a	move.b	#-1,objoff_3A(a0)
00032586 0c2800270033	cmpi.b	#$27,objoff_33(a0)
0003258c 6504	blo.s	+
0003258e 53280033	subq.b	#1,objoff_33(a0)
00032592 6100b04a	bsr.w	Boss_MoveObject
00032596 0c780420f754	cmpi.w	#$420,(Boss_Y_pos).w
0003259c 6406	bhs.s	+
0003259e 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
000325a4 4a28002c	tst.b	objoff_2C(a0)
000325a8 6610	bne.s	BranchTo4_Obj54_MoveAndShow
000325aa 4a28003a	tst.b	objoff_3A(a0)
000325ae 6706	beq.s	+
000325b0 117c0080003a	move.b	#$80,objoff_3A(a0)
000325b6 54280026	addq.b	#2,boss_routine(a0)
000325ba 6000ff00	bra.w	Obj54_MoveAndShow
000325be 4a28003e	tst.b	objoff_3E(a0)
000325c2 6728	beq.s	++
000325c4 4a28003a	tst.b	objoff_3A(a0)
000325c8 6660	bne.s	BranchTo5_Obj54_MoveAndShow
000325ca 0c2800270039	cmpi.b	#$27,objoff_39(a0)
000325d0 6406	bhs.s	+
000325d2 52280039	addq.b	#1,objoff_39(a0)
000325d6 6052	bra.s	BranchTo5_Obj54_MoveAndShow
000325d8 31fc0100f75a	move.w	#$100,(Boss_Y_vel).w
000325de 117c00000026	move.b	#0,boss_routine(a0)
000325e4 08a80006002b	bclr	#6,objoff_2B(a0)
000325ea 603e	bra.s	BranchTo5_Obj54_MoveAndShow
000325ec 31fcfe80f75a	move.w	#-$180,(Boss_Y_vel).w
000325f2 31fcff00f758	move.w	#-$100,(Boss_X_vel).w
000325f8 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
000325fe 08280007002b	btst	#7,objoff_2B(a0)
00032604 670c	beq.s	+
00032606 31fc0100f758	move.w	#$100,(Boss_X_vel).w
0003260c 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00032612 117c000e0026	move.b	#$E,boss_routine(a0)
00032618 117c0000002e	move.b	#0,objoff_2E(a0)
0003261e 08a80006002b	bclr	#6,objoff_2B(a0)
00032624 117c0000002f	move.b	#0,objoff_2F(a0)
0003262a 6000fe90	bra.w	Obj54_MoveAndShow
0003262e 4a28002f	tst.b	objoff_2F(a0)
00032632 6708	beq.s	+
00032634 5328002f	subq.b	#1,objoff_2F(a0)
00032638 6000fe8c	bra.w	Obj54_Display
0003263c 7000	moveq	#0,d0
0003263e 1028002e	move.b	objoff_2E(a0),d0
00032642 323b0006	move.w	off_3264A(pc,d0.w),d1
00032646 4efb1002	jmp	off_3264A(pc,d1.w)
00032650 6100af8c	bsr.w	Boss_MoveObject
00032654 0c780420f754	cmpi.w	#$420,(Boss_Y_pos).w
0003265a 6406	bhs.s	+
0003265c 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
00032662 08280007002b	btst	#7,objoff_2B(a0)
00032668 6626	bne.s	+
0003266a 0c782af0f750	cmpi.w	#$2AF0,(Boss_X_pos).w
00032670 6442	bhs.s	BranchTo6_Obj54_MoveAndShow
00032672 5428002e	addq.b	#2,objoff_2E(a0)
00032676 31fc0180f75a	move.w	#$180,(Boss_Y_vel).w
0003267c 117c0003002d	move.b	#3,objoff_2D(a0)
00032682 31fc001ef75c	move.w	#$1E,(Boss_Countdown).w
00032688 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
0003268e 6024	bra.s	BranchTo6_Obj54_MoveAndShow
00032690 0c782bb0f750	cmpi.w	#$2BB0,(Boss_X_pos).w
00032696 651c	blo.s	BranchTo6_Obj54_MoveAndShow
00032698 5428002e	addq.b	#2,objoff_2E(a0)
0003269c 31fc0180f75a	move.w	#$180,(Boss_Y_vel).w
000326a2 117c0003002d	move.b	#3,objoff_2D(a0)
000326a8 31fc001ef75c	move.w	#$1E,(Boss_Countdown).w
000326ae 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
000326b4 6000fe06	bra.w	Obj54_MoveAndShow
000326b8 6100af24	bsr.w	Boss_MoveObject
000326bc 0c7804a0f754	cmpi.w	#$4A0,(Boss_Y_pos).w
000326c2 6512	blo.s	+
000326c4 31fcfe80f75a	move.w	#-$180,(Boss_Y_vel).w
000326ca 5428002e	addq.b	#2,objoff_2E(a0)
000326ce 08680007002b	bchg	#7,objoff_2B(a0)
000326d4 6026	bra.s	+++
000326d6 08280007002b	btst	#7,objoff_2B(a0)
000326dc 6610	bne.s	+
000326de 0c782ad0f750	cmpi.w	#$2AD0,(Boss_X_pos).w
000326e4 6416	bhs.s	++
000326e6 31fc0000f758	move.w	#0,(Boss_X_vel).w
000326ec 600e	bra.s	++
000326ee 0c782bd0f750	cmpi.w	#$2BD0,(Boss_X_pos).w
000326f4 6506	blo.s	+
000326f6 31fc0000f758	move.w	#0,(Boss_X_vel).w
000326fc 61000042	bsr.w	Obj54_FireLaser
00032700 6000fdba	bra.w	Obj54_MoveAndShow
00032704 6100aed8	bsr.w	Boss_MoveObject
00032708 0c780470f754	cmpi.w	#$470,(Boss_Y_pos).w
0003270e 6414	bhs.s	+
00032710 31fc0100f758	move.w	#$100,(Boss_X_vel).w
00032716 08280007002b	btst	#7,objoff_2B(a0)
0003271c 6606	bne.s	+
0003271e 31fcff00f758	move.w	#-$100,(Boss_X_vel).w
00032724 0c780420f754	cmpi.w	#$420,(Boss_Y_pos).w
0003272a 640c	bhs.s	+
0003272c 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
00032732 117c0000002e	move.b	#0,objoff_2E(a0)
00032738 61000006	bsr.w	Obj54_FireLaser
0003273c 6000fd7e	bra.w	Obj54_MoveAndShow
00032746 662a	bne.s	+
00032748 4a28002d	tst.b	objoff_2D(a0)
0003274c 6724	beq.s	+
0003274e 5328002d	subq.b	#1,objoff_2D(a0)
00032756 661a	bne.s	+
00032758 12bc0054	move.b	#ObjID_MTZBoss,id(a1)
0003275c 137c0004000a	move.b	#4,boss_subtype(a1)
00032762 23480034	move.l	a0,objoff_34(a1)
00032766 31fc001ef75c	move.w	#$1E,(Boss_Countdown).w
0003276c 117c0010002f	move.b	#$10,objoff_2F(a0)
00032772 4e75	rts	
00032774 30280008	move.w	x_pos(a0),d0
00032778 3228000c	move.w	y_pos(a0),d1
0003277c 31400010	move.w	d0,sub2_x_pos(a0)
00032780 31410012	move.w	d1,sub2_y_pos(a0)
00032784 31400016	move.w	d0,sub3_x_pos(a0)
00032788 31410018	move.w	d1,sub3_y_pos(a0)
0003278c 4e75	rts	
0003278e 6100014e	bsr.w	Obj54_CheckHit
00032792 0c28003f0014	cmpi.b	#$3F,boss_invulnerable_time(a0)
00032798 6638	bne.s	++
0003279a 50e80038	st.b	objoff_38(a0)
0003279e 43f8f740	lea	(Boss_AnimationArray).w,a1
000327a2 022900f00002	andi.b	#$F0,2(a1)
000327a8 002900050002	ori.b	#5,2(a1)
000327ae 4a28003e	tst.b	objoff_3E(a0)
000327b2 6716	beq.s	+
000327b4 117c000a0026	move.b	#$A,boss_routine(a0)
000327ba 31fcfe80f75a	move.w	#-$180,(Boss_Y_vel).w
000327c0 5328003e	subq.b	#1,objoff_3E(a0)
000327c4 31fc0000f758	move.w	#0,(Boss_X_vel).w
000327ca 31fc0000f758	move.w	#0,(Boss_X_vel).w
000327d0 4e75	rts	
000327d2 0c380004b024	cmpi.b	#4,(MainCharacter+routine).w
000327d8 6708	beq.s	+
000327da 0c380004b064	cmpi.b	#4,(Sidekick+routine).w
000327e0 661e	bne.s	++
000327e2 43f8f740	lea	(Boss_AnimationArray).w,a1
000327e6 10290002	move.b	2(a1),d0
000327ea 0200000f	andi.b	#$F,d0
000327ee 0c000004	cmpi.b	#4,d0
000327f2 670c	beq.s	+
000327f4 022900f00002	andi.b	#$F0,2(a1)
000327fa 002900040002	ori.b	#4,2(a1)
00032800 4e75	rts	
00032802 5378f75c	subq.w	#1,(Boss_Countdown).w
00032806 0c78003cf75c	cmpi.w	#60,(Boss_Countdown).w
0003280c 6538	blo.s	++
0003280e 6b10	bmi.s	+
00032810 6100aeba	bsr.w	Boss_LoadExplosion
00032814 43f8f740	lea	(Boss_AnimationArray).w,a1
00032818 137c00070002	move.b	#7,2(a1)
0003281e 6026	bra.s	++
00032820 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00032826 4278f758	clr.w	(Boss_X_vel).w
0003282a 4278f75a	clr.w	(Boss_Y_vel).w
0003282e 54280026	addq.b	#2,boss_routine(a0)
00032832 31fcffeef75c	move.w	#-$12,(Boss_Countdown).w
00032838 43f8f740	lea	(Boss_AnimationArray).w,a1
0003283c 137c00030002	move.b	#3,2(a1)
00032846 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
0003284c 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
00032852 43f900032d7a	lea	(Ani_obj53).l,a1
00032858 6100adaa	bsr.w	AnimateBoss
0003285c 6100ff16	bsr.w	Obj54_AlignSprites
00032864 31fc0400f758	move.w	#$400,(Boss_X_vel).w
0003286a 31fcffc0f75a	move.w	#-$40,(Boss_Y_vel).w
00032870 0c782bf0eeca	cmpi.w	#$2BF0,(Camera_Max_X_pos).w
00032876 6406	bhs.s	+
00032878 5478eeca	addq.w	#2,(Camera_Max_X_pos).w
0003287c 6006	bra.s	++
0003287e 4a280001	tst.b	render_flags(a0)
00032882 6a36	bpl.s	JmpTo60_DeleteObject
00032884 4a38f7a7	tst.b	(Boss_defeated_flag).w
00032888 660a	bne.s	+
0003288a 11fc0001f7a7	move.b	#1,(Boss_defeated_flag).w
00032894 6100ad48	bsr.w	Boss_MoveObject
00032898 61000026	bsr.w	loc_328C0
0003289c 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
000328a2 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
000328a8 43f900032d7a	lea	(Ani_obj53).l,a1
000328ae 6100ad54	bsr.w	AnimateBoss
000328b2 6100fec0	bsr.w	Obj54_AlignSprites
000328ba 4ef9000164e6	jmp	(DeleteObject).l
000328c0 1028001a	move.b	boss_sine_count(a0),d0
000328c4 4eb9000033b6	jsr	(CalcSine).l
000328ca ec40	asr.w	#6,d0
000328cc d078f754	add.w	(Boss_Y_pos).w,d0
000328d0 3140000c	move.w	d0,y_pos(a0)
000328d4 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
000328da 5428001a	addq.b	#2,boss_sine_count(a0)
000328de 0c2800100026	cmpi.b	#$10,boss_routine(a0)
000328e4 643e	bhs.s	return_32924
000328e6 4a280032	tst.b	boss_hitcount2(a0)
000328ea 673a	beq.s	Obj54_Defeated
000328ec 4a280020	tst.b	collision_flags(a0)
000328f0 6632	bne.s	return_32924
000328f2 4a280014	tst.b	boss_invulnerable_time(a0)
000328f6 6610	bne.s	+
000328f8 117c00400014	move.b	#$40,boss_invulnerable_time(a0)
000328fe 303c00ac	move.w	#SndID_BossHit,d0
00032902 4eb900001370	jsr	(PlaySound).l
00032908 43f8fb22	lea	(Normal_palette_line2+2).w,a1
0003290c 7000	moveq	#0,d0
0003290e 4a51	tst.w	(a1)
00032910 6604	bne.s	+
00032912 303c0eee	move.w	#$EEE,d0
00032916 3280	move.w	d0,(a1)
00032918 53280014	subq.b	#1,boss_invulnerable_time(a0)
0003291c 6606	bne.s	return_32924
0003291e 117c000f0020	move.b	#$F,collision_flags(a0)
00032924 4e75	rts	
00032926 7064	moveq	#100,d0
0003292c 31fc00eff75c	move.w	#$EF,(Boss_Countdown).w
00032932 117c00100026	move.b	#$10,boss_routine(a0)
00032938 7040	moveq	#PLCID_Capsule,d0
0003293e 4e75	rts	
00032940 7000	moveq	#0,d0
00032942 10280024	move.b	routine(a0),d0
00032946 323b0006	move.w	Obj53_Index(pc,d0.w),d1
0003294a 4efb1002	jmp	Obj53_Index(pc,d1.w)
00032958 2248	movea.l	a0,a1
0003295a 7606	moveq	#6,d3
0003295c 7400	moveq	#0,d2
0003295e 6006	bra.s	+
00032964 6664	bne.s	++
00032966 137c00200019	move.b	#$20,width_pixels(a1)
0003296c 236800340034	move.l	objoff_34(a0),objoff_34(a1)
00032972 12bc0053	move.b	#ObjID_MTZBossOrb,id(a1)
00032976 237c00032dc60004	move.l	#Obj54_MapUnc_32DC6,mappings(a1)
0003297e 337c037c0002	move.w	#make_art_tile(ArtTile_ArtNem_MTZBoss,0,0),art_tile(a1)
00032984 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
0003298a 137c00030018	move.b	#3,priority(a1)
00032990 54290024	addq.b	#2,routine(a1)
00032994 137c0005001a	move.b	#5,mapping_frame(a1)
0003299a 137b20300028	move.b	byte_329CC(pc,d2.w),objoff_28(a1)
000329a0 137b202a003b	move.b	byte_329CC(pc,d2.w),objoff_3B(a1)
000329a6 137b202b003a	move.b	byte_329D3(pc,d2.w),objoff_3A(a1)
000329ac 137c00400029	move.b	#$40,objoff_29(a1)
000329b2 137c00870020	move.b	#$87,collision_flags(a1)
000329b8 137c00020021	move.b	#2,collision_property(a1)
000329be 137c0000003c	move.b	#0,objoff_3C(a1)
000329c4 5242	addq.w	#1,d2
000329c6 51cbff98	dbf	d3,-
000329ca 4e75	rts	
000329da 22680034	movea.l	objoff_34(a0),a1
000329de 3169000c002a	move.w	y_pos(a1),objoff_2A(a0)
000329ea 316900080038	move.w	x_pos(a1),objoff_38(a0)
000329f0 4a290038	tst.b	objoff_38(a1)
000329f4 6760	beq.s	Obj53_ClearBossCollision
000329f6 137c00000038	move.b	#0,objoff_38(a1)
00032a02 54280024	addq.b	#2,routine(a0)
00032a06 117c003c0032	move.b	#60,objoff_32(a0)
00032a0c 117c0002001c	move.b	#2,anim(a0)
00032a12 317cfc000012	move.w	#-$400,y_vel(a0)
00032a18 323cff80	move.w	#-$80,d1
00032a1c 3038b008	move.w	(MainCharacter+x_pos).w,d0
00032a20 90680008	sub.w	x_pos(a0),d0
00032a24 6a02	bpl.s	+
00032a26 4441	neg.w	d1
00032a28 0c682af00008	cmpi.w	#$2AF0,x_pos(a0)
00032a2e 6404	bhs.s	+
00032a30 323c0080	move.w	#$80,d1
00032a34 0c682bb00008	cmpi.w	#$2BB0,x_pos(a0)
00032a3a 6504	blo.s	+
00032a3c 323cff80	move.w	#-$80,d1
00032a40 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
00032a46 4a41	tst.w	d1
00032a48 6b06	bmi.s	+
00032a4a 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00032a50 31410010	move.w	d1,x_vel(a0)
00032a54 600e	bra.s	+
00032a56 0c2800020021	cmpi.b	#2,collision_property(a0)
00032a5c 6706	beq.s	+
00032a5e 137c00000020	move.b	#0,collision_flags(a1)
00032a64 6100000a	bsr.w	Obj53_OrbitBoss
00032a68 610000b0	bsr.w	Obj53_SetAnimPriority
00032a70 10280029	move.b	objoff_29(a0),d0
00032a74 4eb9000033b6	jsr	(CalcSine).l
00032a7a 3600	move.w	d0,d3
00032a7c 7200	moveq	#0,d1
00032a7e 12290033	move.b	objoff_33(a1),d1
00032a82 c1c1	muls.w	d1,d0
00032a84 3a00	move.w	d0,d5
00032a86 3800	move.w	d0,d4
00032a88 14290039	move.b	objoff_39(a1),d2
00032a8c 4a29003a	tst.b	objoff_3A(a1)
00032a90 6704	beq.s	+
00032a92 343c0010	move.w	#$10,d2
00032a96 c5c3	muls.w	d3,d2
00032a98 3c280038	move.w	objoff_38(a0),d6
00032a9c 10280028	move.b	objoff_28(a0),d0
00032aa0 4eb9000033b6	jsr	(CalcSine).l
00032aa6 cbc0	muls.w	d0,d5
00032aa8 4845	swap	d5
00032aaa da46	add.w	d6,d5
00032aac 31450008	move.w	d5,x_pos(a0)
00032ab0 c9c1	muls.w	d1,d4
00032ab2 4844	swap	d4
00032ab4 31440030	move.w	d4,objoff_30(a0)
00032ab8 3c28002a	move.w	objoff_2A(a0),d6
00032abc 1028003b	move.b	objoff_3B(a0),d0
00032ac0 4a29003a	tst.b	objoff_3A(a1)
00032ac4 6704	beq.s	+
00032ac6 1028003c	move.b	objoff_3C(a0),d0
00032aca 4eb9000033b6	jsr	(CalcSine).l
00032ad0 c5c0	muls.w	d0,d2
00032ad2 4842	swap	d2
00032ad4 d446	add.w	d6,d2
00032ad6 3142000c	move.w	d2,y_pos(a0)
00032ada 58280028	addq.b	#4,objoff_28(a0)
00032ade 4a29003a	tst.b	objoff_3A(a1)
00032ae2 6606	bne.s	+
00032ae4 5028003b	addq.b	#8,objoff_3B(a0)
00032ae8 4e75	rts	
00032aea 0c2900ff003a	cmpi.b	#-1,objoff_3A(a1)
00032af0 671a	beq.s	++
00032af2 0c290080003a	cmpi.b	#$80,objoff_3A(a1)
00032af8 660a	bne.s	+
00032afa 5528003c	subq.b	#2,objoff_3C(a0)
00032afe 6a18	bpl.s	return_32B18
00032b00 4228003c	clr.b	objoff_3C(a0)
00032b04 137c0000003a	move.b	#0,objoff_3A(a1)
00032b0a 4e75	rts	
00032b0c 0c280040003c	cmpi.b	#$40,objoff_3C(a0)
00032b12 6404	bhs.s	return_32B18
00032b14 5428003c	addq.b	#2,objoff_3C(a0)
00032b18 4e75	rts	
00032b1a 30280030	move.w	objoff_30(a0),d0
00032b1e 6b22	bmi.s	++
00032b20 0c40000c	cmpi.w	#$C,d0
00032b24 6d0e	blt.s	+
00032b26 117c0003001a	move.b	#3,mapping_frame(a0)
00032b2c 117c00010018	move.b	#1,priority(a0)
00032b32 4e75	rts	
00032b34 117c0004001a	move.b	#4,mapping_frame(a0)
00032b3a 117c00020018	move.b	#2,priority(a0)
00032b40 4e75	rts	
00032b42 0c40fff4	cmpi.w	#-$C,d0
00032b46 6d0e	blt.s	+
00032b48 117c0004001a	move.b	#4,mapping_frame(a0)
00032b4e 117c00060018	move.b	#6,priority(a0)
00032b54 4e75	rts	
00032b56 117c0005001a	move.b	#5,mapping_frame(a0)
00032b5c 117c00070018	move.b	#7,priority(a0)
00032b62 4e75	rts	
00032b64 4a280032	tst.b	objoff_32(a0)
00032b68 6b0c	bmi.s	+
00032b6a 53280032	subq.b	#1,objoff_32(a0)
00032b6e 6a06	bpl.s	+
00032b70 117c00da0020	move.b	#$DA,collision_flags(a0)
00032b7a 046800200012	subi.w	#$20,y_vel(a0)
00032b80 0c6801800012	cmpi.w	#$180,y_vel(a0)
00032b86 6d06	blt.s	+
00032b88 317c01800012	move.w	#$180,y_vel(a0)
00032b8e 0c6804ac000c	cmpi.w	#$4AC,y_pos(a0)
00032b94 651a	blo.s	Obj53_Animate
00032b96 317c04ac000c	move.w	#$4AC,y_pos(a0)
00032b9c 317c04ac002e	move.w	#$4AC,objoff_2E(a0)
00032ba2 117c0001002c	move.b	#1,objoff_2C(a0)
00032ba8 54280024	addq.b	#2,routine(a0)
00032bac 6100009e	bsr.w	Obj53_FaceLeader
00032bb0 61000010	bsr.w	+
00032bb4 43f900032d7a	lea	(Ani_obj53).l,a1
00032bc2 0c2800fe0021	cmpi.b	#-2,collision_property(a0)
00032bc8 6e10	bgt.s	+
00032bca 117c0014001a	move.b	#$14,mapping_frame(a0)
00032bd0 117c0006001c	move.b	#6,anim(a0)
00032bd6 54280024	addq.b	#2,routine(a0)
00032bda 4e75	rts	
00032bdc 4a280032	tst.b	objoff_32(a0)
00032be0 6b0c	bmi.s	+
00032be2 53280032	subq.b	#1,objoff_32(a0)
00032be6 6a06	bpl.s	+
00032be8 117c00da0020	move.b	#$DA,collision_flags(a0)
00032bee 61000076	bsr.w	Obj53_CheckPlayerHit
00032bf2 0c28000b001a	cmpi.b	#$B,mapping_frame(a0)
00032bf8 66b6	bne.s	Obj53_Animate
00032bfa 1028002c	move.b	objoff_2C(a0),d0
00032bfe 4eb9000033b6	jsr	(CalcSine).l
00032c04 4440	neg.w	d0
00032c06 e440	asr.w	#2,d0
00032c08 d068002e	add.w	objoff_2E(a0),d0
00032c0c 0c4004ac	cmpi.w	#$4AC,d0
00032c10 6426	bhs.s	++
00032c12 3140000c	move.w	d0,y_pos(a0)
00032c16 5228002c	addq.b	#1,objoff_2C(a0)
00032c1a 08280000002c	btst	#0,objoff_2C(a0)
00032c20 6700032a	beq.w	JmpTo40_DisplaySprite
00032c24 70ff	moveq	#-1,d0
00032c26 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00032c2c 6702	beq.s	+
00032c2e 4440	neg.w	d0
00032c30 d1680008	add.w	d0,x_pos(a0)
00032c38 317c04ac000c	move.w	#$4AC,y_pos(a0)
00032c3e 6100000c	bsr.w	Obj53_FaceLeader
00032c42 117c0001002c	move.b	#1,objoff_2C(a0)
00032c4c 3038b008	move.w	(MainCharacter+x_pos).w,d0
00032c50 90680008	sub.w	x_pos(a0),d0
00032c54 6a08	bpl.s	+
00032c56 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
00032c5c 4e75	rts	
00032c5e 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00032c64 4e75	rts	
00032c66 0c380004b024	cmpi.b	#4,(MainCharacter+routine).w
00032c6c 6708	beq.s	+
00032c6e 0c380004b064	cmpi.b	#4,(Sidekick+routine).w
00032c74 660c	bne.s	++
00032c76 117c0014001a	move.b	#$14,mapping_frame(a0)
00032c7c 117c0006001c	move.b	#6,anim(a0)
00032c82 0c2800fe0021	cmpi.b	#-2,collision_property(a0)
00032c88 6e0c	bgt.s	+
00032c8a 117c0014001a	move.b	#$14,mapping_frame(a0)
00032c90 117c0006001c	move.b	#6,anim(a0)
00032c96 4e75	rts	
00032c98 103c00c4	move.b	#SndID_BossExplosion,d0
00032ca0 22680034	movea.l	objoff_34(a0),a1
00032cae 7000	moveq	#0,d0
00032cb0 10280025	move.b	routine_secondary(a0),d0
00032cb4 303b0006	move.w	off_32CBC(pc,d0.w),d0
00032cb8 4efb0002	jmp	off_32CBC(pc,d0.w)
00032cc0 217c00032dc60004	move.l	#Obj54_MapUnc_32DC6,mappings(a0)
00032cc8 317c037c0002	move.w	#make_art_tile(ArtTile_ArtNem_MTZBoss,0,0),art_tile(a0)
00032cce 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00032cd4 117c00050018	move.b	#5,priority(a0)
00032cda 117c0012001a	move.b	#$12,mapping_frame(a0)
00032ce0 54280025	addq.b	#2,routine_secondary(a0)
00032ce4 22680034	movea.l	objoff_34(a0),a1
00032ce8 117c00500019	move.b	#$50,width_pixels(a0)
00032cee 316900080008	move.w	x_pos(a1),x_pos(a0)
00032cf4 3169000c000c	move.w	y_pos(a1),y_pos(a0)
00032d06 303cfc00	move.w	#-$400,d0
00032d0a 082900000001	btst	#render_flags.x_flip,render_flags(a1)
00032d10 6708	beq.s	+
00032d12 4440	neg.w	d0
00032d1a 31400010	move.w	d0,x_vel(a0)
00032d1e 117c00990020	move.b	#$99,collision_flags(a0)
00032d24 103c00ea	move.b	#SndID_LaserBurst,d0
00032d30 0c682ab00008	cmpi.w	#$2AB0,x_pos(a0)
00032d36 6500021a	blo.w	JmpTo61_DeleteObject
00032d3a 0c682bf00008	cmpi.w	#$2BF0,x_pos(a0)
00032d40 64000210	bhs.w	JmpTo61_DeleteObject
00032d48 22680034	movea.l	objoff_34(a0),a1
00032d4c 0c110054	cmpi.b	#ObjID_MTZBoss,id(a1)
00032d50 66000200	bne.w	JmpTo61_DeleteObject
00032d54 316900080008	move.w	x_pos(a1),x_pos(a0)
00032d5a 3169000c000c	move.w	y_pos(a1),y_pos(a0)
00032d60 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
00032d66 082900000001	btst	#render_flags.x_flip,render_flags(a1)
00032d6c 670001de	beq.w	JmpTo40_DisplaySprite
00032d70 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00032f4c 4ef9000164f4	jmp	(extractJmpToName("JmpTo40_DisplaySprite")).l
00032f52 4ef9000164e6	jmp	(extractJmpToName("JmpTo61_DeleteObject")).l
00032f58 4ef900017fda	jmp	(extractJmpToName("JmpTo17_AllocateObject")).l
00032f5e 4ef900001370	jmp	(extractJmpToName("JmpTo10_PlaySound")).l
00032f64 4ef900016544	jmp	(extractJmpToName("JmpTo21_AnimateSprite")).l
00032f6a 4ef90000161e	jmp	(extractJmpToName("JmpTo11_LoadPLC")).l
00032f70 4ef900040d06	jmp	(extractJmpToName("JmpTo8_AddPoints")).l
00032f76 4ef90000f626	jmp	(extractJmpToName("JmpTo7_PlayLevelMusic")).l
00032f7c 4ef90000f62e	jmp	(extractJmpToName("JmpTo7_LoadPLC_AnimalExplosion")).l
00032f82 4ef900016380	jmp	(extractJmpToName("JmpTo6_ObjectMoveAndFall")).l
00032f88 4ef9000163ac	jmp	(extractJmpToName("JmpTo24_ObjectMove")).l
00032f90 7000	moveq	#0,d0
00032f92 1028000a	move.b	boss_subtype(a0),d0
00032f96 323b0006	move.w	Obj55_Index(pc,d0.w),d1
00032f9a 4efb1002	jmp	Obj55_Index(pc,d1.w)
00032fa8 217c000337560004	move.l	#Obj55_MapUnc_33756,mappings(a0)
00032fb0 317c038c0002	move.w	#make_art_tile(ArtTile_ArtNem_OOZBoss,0,0),art_tile(a0)
00032fb6 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
00032fbc 117c00030018	move.b	#3,priority(a0)
00032fc2 08e800060001	bset	#render_flags.multi_sprite,render_flags(a0)
00032fc8 117c0000000f	move.b	#0,mainspr_childsprites(a0)
00032fce 5428000a	addq.b	#2,boss_subtype(a0)
00032fd2 117c000f0020	move.b	#$F,collision_flags(a0)
00032fd8 117c00080032	move.b	#8,boss_hitcount2(a0)
00032fde 117c0040000e	move.b	#$40,mainspr_width(a0)
00032fe4 4e75	rts	
00032fe6 7000	moveq	#0,d0
00032fe8 10280026	move.b	boss_routine(a0),d0
00032fec 323b0006	move.w	Obj55_Main_Index(pc,d0.w),d1
00032ff0 4efb1002	jmp	Obj55_Main_Index(pc,d1.w)
00032ffe 31fc2940f750	move.w	#$2940,(Boss_X_pos).w
00033004 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
0003300a 3238b008	move.w	(MainCharacter+x_pos).w,d1
0003300e 0c41293a	cmpi.w	#$293A,d1
00033012 6406	bhs.s	+
00033014 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
0003301a 317c02d0000c	move.w	#$2D0,y_pos(a0)
00033020 31fc02d0f754	move.w	#$2D0,(Boss_Y_pos).w
00033026 117c0008000b	move.b	#8,mainspr_mapframe(a0)
0003302c 117c0001000f	move.b	#1,mainspr_childsprites(a0)
00033032 54280026	addq.b	#2,boss_routine(a0)
00033036 31fcff80f75a	move.w	#-$80,(Boss_Y_vel).w
0003303c 117c000f0020	move.b	#$F,collision_flags(a0)
00033042 316800080010	move.w	x_pos(a0),sub2_x_pos(a0)
00033048 3168000c0012	move.w	y_pos(a0),sub2_y_pos(a0)
0003304e 4228001a	clr.b	boss_sine_count(a0)
00033052 4228002a	clr.b	Obj55_status(a0)
00033056 117c00080015	move.b	#8,sub2_mapframe(a0)
0003305c 45f8f740	lea	(Boss_AnimationArray).w,a2
00033060 14fc0005	move.b	#5,(a2)+
00033064 14fc0000	move.b	#0,(a2)+
00033068 14fc0001	move.b	#1,(a2)+
0003306c 14bc0000	move.b	#0,(a2)
00033070 11fc0000f73f	move.b	#0,(Boss_CollisionRoutine).w
00033076 4e75	rts	
00033078 6100a564	bsr.w	Boss_MoveObject
0003307c 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
00033082 61000066	bsr.w	Obj55_HoverPos
00033086 0c780290f754	cmpi.w	#$290,(Boss_Y_pos).w
0003308c 640000d0	bhs.w	Obj55_Main_End
00033090 31fc0290f754	move.w	#$290,(Boss_Y_pos).w
00033096 54280026	addq.b	#2,boss_routine(a0)
0003309a 31fc00a8f75c	move.w	#$A8,(Boss_Countdown).w
000330a0 08280007002a	btst	#7,Obj55_status(a0)
000330a6 660000b6	bne.w	Obj55_Main_End
000330aa 45f8f740	lea	(Boss_AnimationArray).w,a2
000330ae 14fc0010	move.b	#$10,(a2)+
000330b2 14bc0000	move.b	#0,(a2)
000330b6 600000a6	bra.w	Obj55_Main_End
000330ba 08280007002a	btst	#7,Obj55_status(a0)
000330c0 661a	bne.s	+
000330c2 61000026	bsr.w	Obj55_HoverPos
000330cc 6a000090	bpl.w	Obj55_Main_End
000330d0 45f8f740	lea	(Boss_AnimationArray).w,a2
000330d4 14fc0005	move.b	#5,(a2)+
000330d8 14bc0000	move.b	#0,(a2)
000330dc 54280026	addq.b	#2,boss_routine(a0)
000330e0 31fcffc0f75a	move.w	#-$40,(Boss_Y_vel).w
000330e6 60000076	bra.w	Obj55_Main_End
000330ea 1028001a	move.b	boss_sine_count(a0),d0
000330ee 4eb9000033b6	jsr	(CalcSine).l
000330f4 ee41	asr.w	#7,d1
000330f6 d278f754	add.w	(Boss_Y_pos).w,d1
000330fa 3141000c	move.w	d1,y_pos(a0)
000330fe 5828001a	addq.b	#4,boss_sine_count(a0)
00033102 4e75	rts	
00033104 6100a4d8	bsr.w	Boss_MoveObject
00033108 3178f754000c	move.w	(Boss_Y_pos).w,y_pos(a0)
0003310e 3178f7500008	move.w	(Boss_X_pos).w,x_pos(a0)
00033114 08280006002a	btst	#6,Obj55_status(a0)
0003311a 6620	bne.s	Obj55_Main_Dive_Part2
0003311c 0c78028cf754	cmpi.w	#$28C,(Boss_Y_pos).w
00033122 6400003a	bhs.w	Obj55_Main_End
00033126 31fc028cf754	move.w	#$28C,(Boss_Y_pos).w
0003312c 31fc0080f75a	move.w	#$80,(Boss_Y_vel).w
00033132 00280040002a	ori.b	#$40,Obj55_status(a0)
00033138 60000024	bra.w	Obj55_Main_End
0003313c 0c7802d0f754	cmpi.w	#$2D0,(Boss_Y_pos).w
00033142 651a	blo.s	Obj55_Main_End
00033144 31fc02d0f754	move.w	#$2D0,(Boss_Y_pos).w
0003314a 42280026	clr.b	boss_routine(a0)
0003314e 5428000a	addq.b	#2,boss_subtype(a0)
00033152 08280007002a	btst	#7,Obj55_status(a0)
00033158 6704	beq.s	Obj55_Main_End
0003315a 5428000a	addq.b	#2,boss_subtype(a0)
0003315e 61000014	bsr.w	Obj55_HandleHits
00033162 43f900033712	lea	(Ani_obj55).l,a1
00033168 6100a49a	bsr.w	AnimateBoss
0003316c 61000026	bsr.w	Obj55_AlignSprites
00033174 6100a406	bsr.w	Boss_HandleHits
00033178 0c28001f0014	cmpi.b	#$1F,boss_invulnerable_time(a0)
0003317e 6612	bne.s	return_33192
00033180 43f8f740	lea	(Boss_AnimationArray).w,a1
00033184 021100f0	andi.b	#$F0,(a1)
00033188 00110003	ori.b	#3,(a1)
0003318c 00280080002a	ori.b	#$80,Obj55_status(a0)
00033192 4e75	rts	
00033194 30280008	move.w	x_pos(a0),d0
00033198 3228000c	move.w	y_pos(a0),d1
0003319c 31400010	move.w	d0,sub2_x_pos(a0)
000331a0 31410012	move.w	d1,sub2_y_pos(a0)
000331a4 4e75	rts	
000331a6 4278fb22	clr.w	(Normal_palette_line2+2).w
000331aa 5378f75c	subq.w	#1,(Boss_Countdown).w
000331ae 6b1a	bmi.s	Obj55_Main_Defeated_Part2
000331b0 0c78001ef75c	cmpi.w	#$1E,(Boss_Countdown).w
000331b6 640a	bhs.s	Obj55_Explode
000331b8 117c000b000b	move.b	#$B,mainspr_mapframe(a0)
000331c2 6100a508	bsr.w	Boss_LoadExplosion
000331ca 4a38f7a7	tst.b	(Boss_defeated_flag).w
000331ce 660e	bne.s	Obj55_ReleaseCamera
000331d8 11fc0001f7a7	move.b	#1,(Boss_defeated_flag).w
000331de 0c782a20eeca	cmpi.w	#$2A20,(Camera_Max_X_pos).w
000331e4 6406	bhs.s	Obj55_ChkDelete
000331e6 5478eeca	addq.w	#2,(Camera_Max_X_pos).w
000331ea 600e	bra.s	Obj55_Defeated_Sink
000331ec 31fc2a20eeca	move.w	#$2A20,(Camera_Max_X_pos).w
000331f2 0c6802d0000c	cmpi.w	#$2D0,y_pos(a0)
000331f8 640c	bhs.s	BranchTo_JmpTo62_DeleteObject
00033200 6192	bsr.s	Obj55_AlignSprites
0003320a 7000	moveq	#0,d0
0003320c 10280026	move.b	boss_routine(a0),d0
00033210 323b0006	move.w	Obj55_LaserShooter_Index(pc,d0.w),d1
00033214 4efb1002	jmp	Obj55_LaserShooter_Index(pc,d1.w)
00033222 4278fb22	clr.w	(Normal_palette_line2+2).w
00033226 31fc2940f750	move.w	#$2940,(Boss_X_pos).w
0003322c 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
00033232 3238b008	move.w	(MainCharacter+x_pos).w,d1
00033236 0c41293a	cmpi.w	#$293A,d1
0003323a 6506	blo.s	+
0003323c 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
00033242 31fc02b0f754	move.w	#$2B0,(Boss_Y_pos).w
00033248 317c02b0000c	move.w	#$2B0,y_pos(a0)
0003324e 117c00020026	move.b	#2,boss_routine(a0)
00033254 117c008a0020	move.b	#$8A,collision_flags(a0)
0003325a 117c0005000b	move.b	#5,mainspr_mapframe(a0)
00033260 7007	moveq	#7,d0
00033262 7407	moveq	#7,d2
00033264 7800	moveq	#0,d4
00033266 3a38f754	move.w	(Boss_Y_pos).w,d5
0003326a 0645000f	addi.w	#$F,d5
0003326e 11804015	move.b	d0,sub2_mapframe(a0,d4.w)
00033272 31854012	move.w	d5,sub2_y_pos(a0,d4.w)
00033276 5c44	addq.w	#next_subspr,d4
00033278 51cafff0	dbf	d2,-
0003327c 117c0008000f	move.b	#8,mainspr_childsprites(a0)
00033282 31fcff80f75a	move.w	#-$80,(Boss_Y_vel).w
00033288 117c0000003e	move.b	#0,Obj55_laser_pos(a0)
0003328e 11fc0001f73f	move.b	#1,(Boss_CollisionRoutine).w
00033294 4e75	rts	
00033296 6100a346	bsr.w	Boss_MoveObject
0003329a 0c780240f754	cmpi.w	#$240,(Boss_Y_pos).w
000332a0 64000118	bhs.w	Obj55_LaserShooter_End
000332a4 31fc0240f754	move.w	#$240,(Boss_Y_pos).w
000332aa 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
000332b6 31fc0080f75c	move.w	#$80,(Boss_Countdown).w
000332bc 117c00030038	move.b	#3,Obj55_shot_count(a0)
000332c2 600000f6	bra.w	Obj55_LaserShooter_End
000332c6 5328002c	subq.b	#1,Obj55_anim_frame_duration(a0)
000332ca 6606	bne.s	+
000332cc 117c0005000b	move.b	#5,mainspr_mapframe(a0)
000332d8 660000e0	bne.w	Obj55_LaserShooter_End
000332e2 6b28	bmi.s	Obj55_LaserShooter_DoneShooting
000332e8 5200	addq.b	#1,d0
000332ea 02400003	andi.w	#3,d0
000332ee 0128003e	btst	d0,Obj55_laser_pos(a0)
000332f2 66f4	bne.s	-
000332f4 01e8003e	bset	d0,Obj55_laser_pos(a0)
000332f8 d040	add.w	d0,d0
000332fa 31fb0020f75c	move.w	Obj55_LaserTargets(pc,d0.w),(Boss_Countdown).w
00033300 54280026	addq.b	#2,boss_routine(a0)
00033304 610000c0	bsr.w	Obj55_MoveTowardTarget
00033308 600000b0	bra.w	Obj55_LaserShooter_End
0003330c 31fc0080f75a	move.w	#$80,(Boss_Y_vel).w
00033312 117c00080026	move.b	#8,boss_routine(a0)
00033318 600000a0	bra.w	Obj55_LaserShooter_End
00033324 6100a2b8	bsr.w	Boss_MoveObject
00033328 3038f75c	move.w	(Boss_Countdown).w,d0
0003332c 4a78f75a	tst.w	(Boss_Y_vel).w
00033330 6b0a	bmi.s	Obj55_LaserShooter_Aim_MovingUp
00033332 b078f754	cmp.w	(Boss_Y_pos).w,d0
00033336 650a	blo.s	Obj55_LaserShooter_Fire
00033338 60000080	bra.w	Obj55_LaserShooter_End
0003333c b078f754	cmp.w	(Boss_Y_pos).w,d0
00033340 6578	blo.s	Obj55_LaserShooter_End
00033342 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
00033348 117c0008002c	move.b	#8,Obj55_anim_frame_duration(a0)
0003334e 117c0006000b	move.b	#6,mainspr_mapframe(a0)
00033358 66000060	bne.w	Obj55_LaserShooter_End
0003335c 12bc0055	move.b	#ObjID_OOZBoss,id(a1)
00033360 137c0008000a	move.b	#8,boss_subtype(a1)
00033366 23480034	move.l	a0,Obj55_Wave_parent(a1)
0003336a 103c00ea	move.b	#SndID_LaserBurst,d0
00033372 117c00040026	move.b	#4,boss_routine(a0)
00033378 31fc0028f75c	move.w	#$28,(Boss_Countdown).w
0003337e 31fcff80f75a	move.w	#-$80,(Boss_Y_vel).w
00033384 60000034	bra.w	Obj55_LaserShooter_End
00033388 5328002c	subq.b	#1,Obj55_anim_frame_duration(a0)
0003338c 6606	bne.s	+
0003338e 117c0005000b	move.b	#5,mainspr_mapframe(a0)
00033394 6100a248	bsr.w	Boss_MoveObject
00033398 0c7802b0f754	cmpi.w	#$2B0,(Boss_Y_pos).w
0003339e 651a	blo.s	Obj55_LaserShooter_End
000333a0 31fc02b0f754	move.w	#$2B0,(Boss_Y_pos).w
000333a6 31fc0000f75a	move.w	#0,(Boss_Y_vel).w
000333ac 117c00000026	move.b	#0,boss_routine(a0)
000333b2 117c0002000a	move.b	#2,boss_subtype(a0)
000333b8 4e75	rts	
000333ba 61000024	bsr.w	Obj55_LaserShooter_FacePlayer
000333be 61000046	bsr.w	Obj55_LaserShooter_Wind
000333c6 3038f75c	move.w	(Boss_Countdown).w,d0
000333ca 9078f754	sub.w	(Boss_Y_pos).w,d0
000333ce 6a08	bpl.s	Obj55_LaserShooter_MoveUp
000333d0 31fcff80f75a	move.w	#-$80,(Boss_Y_vel).w
000333d6 4e75	rts	
000333d8 31fc0080f75a	move.w	#$80,(Boss_Y_vel).w
000333de 4e75	rts	
000333e0 3038b008	move.w	(MainCharacter+x_pos).w,d0
000333e4 90680008	sub.w	x_pos(a0),d0
000333e8 6d0e	blt.s	Obj55_LaserShooter_FaceLeft
000333ee 6d06	blt.s	return_333F6
000333f0 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
000333f6 4e75	rts	
000333fc 6ef8	bgt.s	return_333F6
000333fe 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
00033404 4e75	rts	
00033406 3a38f750	move.w	(Boss_X_pos).w,d5
0003340a 3c38f754	move.w	(Boss_Y_pos).w,d6
0003340e 1628001a	move.b	boss_sine_count(a0),d3
00033412 1003	move.b	d3,d0
00033414 61000030	bsr.w	Obj55_LaserShooter_CalcSineRelative
00033418 31410008	move.w	d1,x_pos(a0)
0003341c 3140000c	move.w	d0,y_pos(a0)
00033426 7407	moveq	#7,d2
00033428 7800	moveq	#0,d4
0003342e 04030010	subi.b	#$10,d3
00033432 61000012	bsr.w	Obj55_LaserShooter_CalcSineRelative
00033436 31814010	move.w	d1,sub2_x_pos(a0,d4.w)
0003343a 31804012	move.w	d0,sub2_y_pos(a0,d4.w)
0003343e 5c44	addq.w	#next_subspr,d4
00033440 51caffe8	dbf	d2,-
00033444 4e75	rts	
00033446 1003	move.b	d3,d0
0003344c e841	asr.w	#4,d1
0003344e d245	add.w	d5,d1
00033450 ec40	asr.w	#6,d0
00033452 d046	add.w	d6,d0
00033454 4e75	rts	
00033456 7000	moveq	#0,d0
00033458 10280026	move.b	boss_routine(a0),d0
0003345c 323b0006	move.w	Obj55_SpikeChain_Index(pc,d0.w),d1
00033460 4efb1002	jmp	Obj55_SpikeChain_Index(pc,d1.w)
00033468 4278fb22	clr.w	(Normal_palette_line2+2).w
0003346c 31fc28c0f750	move.w	#$28C0,(Boss_X_pos).w
00033472 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
00033478 3238b008	move.w	(MainCharacter+x_pos).w,d1
0003347c 0c41293a	cmpi.w	#$293A,d1
00033480 650c	blo.s	+
00033482 31fc29c0f750	move.w	#$29C0,(Boss_X_pos).w
00033488 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
0003348e 31fc02a0f754	move.w	#$2A0,(Boss_Y_pos).w
00033494 117c0002000b	move.b	#2,mainspr_mapframe(a0)
0003349a 117c008a0020	move.b	#$8A,collision_flags(a0)
000334a0 54280026	addq.b	#2,boss_routine(a0)
000334a4 117c0080000e	move.b	#$80,mainspr_width(a0)
000334aa 4228001a	clr.b	boss_sine_count(a0)
000334ae 7007	moveq	#7,d0
000334b0 7207	moveq	#7,d1
000334b2 7400	moveq	#0,d2
000334b8 5c42	addq.w	#next_subspr,d2
000334ba 51c8fff8	dbf	d0,-
000334be 117c0008000f	move.b	#8,mainspr_childsprites(a0)
000334c4 11fc0002f73f	move.b	#2,(Boss_CollisionRoutine).w
000334ca 4e75	rts	
000334cc 61000020	bsr.w	Obj55_SpikeChain_Move
000334d0 0c2800fe001a	cmpi.b	#$FE,boss_sine_count(a0)
000334d6 650e	blo.s	Obj55_SpikeChain_End
000334d8 117c00000026	move.b	#0,boss_routine(a0)
000334de 117c0004000a	move.b	#4,boss_subtype(a0)
000334e4 4e75	rts	
000334e6 61000064	bsr.w	Obj55_SpikeChain_SetAnimFrame
000334ee 1028001a	move.b	boss_sine_count(a0),d0
000334f2 06000040	addi.b	#$40,d0
000334f6 1600	move.b	d0,d3
000334f8 6100002c	bsr.w	Obj55_SpikeChain_Rotate
000334fc 31410008	move.w	d1,x_pos(a0)
00033500 3140000c	move.w	d0,y_pos(a0)
0003350a 7407	moveq	#7,d2
0003350c 7800	moveq	#0,d4
00033512 61000012	bsr.w	Obj55_SpikeChain_Rotate
00033516 31814010	move.w	d1,sub2_x_pos(a0,d4.w)
0003351a 31804012	move.w	d0,sub2_y_pos(a0,d4.w)
0003351e 5c44	addq.w	#next_subspr,d4
00033520 51caffec	dbf	d2,-
00033524 4e75	rts	
00033526 1003	move.b	d3,d0
0003352c c3fc0068	muls.w	#$68,d1
00033530 e081	asr.l	#8,d1
00033532 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00033538 6602	bne.s	+
0003353a 4441	neg.w	d1
0003353c d278f750	add.w	(Boss_X_pos).w,d1
00033540 c1fc0068	muls.w	#$68,d0
00033544 e080	asr.l	#8,d0
00033546 d078f754	add.w	(Boss_Y_pos).w,d0
0003354a 4e75	rts	
0003354c 1028001a	move.b	boss_sine_count(a0),d0
00033550 7215	moveq	#$15,d1
00033552 0c000052	cmpi.b	#$52,d0
00033556 6512	blo.s	+
00033558 7203	moveq	#3,d1
0003355a 0c00006b	cmpi.b	#$6B,d0
0003355e 650a	blo.s	+
00033560 7202	moveq	#2,d1
00033562 0c000092	cmpi.b	#-$6E,d0
00033566 6502	blo.s	+
00033568 7204	moveq	#4,d1
0003356a 1141000b	move.b	d1,mainspr_mapframe(a0)
0003356e 4e75	rts	
00033570 7000	moveq	#0,d0
00033572 10280025	move.b	routine_secondary(a0),d0
00033576 303b0006	move.w	Obj55_Laser_Index(pc,d0.w),d0
0003357a 4efb0002	jmp	Obj55_Laser_Index(pc,d0.w)
00033586 54280025	addq.b	#2,routine_secondary(a0)
0003358a 217c000337560004	move.l	#Obj55_MapUnc_33756,mappings(a0)
00033592 317c038c0002	move.w	#make_art_tile(ArtTile_ArtNem_OOZBoss,0,0),art_tile(a0)
00033598 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0003359e 117c00040018	move.b	#4,priority(a0)
000335a4 22680034	movea.l	Obj55_Wave_parent(a0),a1
000335a8 316900080008	move.w	x_pos(a1),x_pos(a0)
000335ae 3169000c000c	move.w	y_pos(a1),y_pos(a0)
000335b4 117c000c001a	move.b	#$C,mapping_frame(a0)
000335ba 303cffe0	move.w	#-$20,d0
000335be 317cfc000010	move.w	#-$400,x_vel(a0)
000335c4 082900000001	btst	#render_flags.x_flip,render_flags(a1)
000335ca 6706	beq.s	+
000335cc 4440	neg.w	d0
000335ce 44680010	neg.w	x_vel(a0)
000335d2 d1680008	add.w	d0,x_pos(a0)
000335d6 117c00af0020	move.b	#$AF,collision_flags(a0)
000335dc 4e75	rts	
000335de 6100001e	bsr.w	Obj55_Laser_ChkGround
000335e6 0c6828700008	cmpi.w	#$2870,x_pos(a0)
000335ec 650002b4	blo.w	JmpTo62_DeleteObject
000335f0 0c682a100008	cmpi.w	#$2A10,x_pos(a0)
000335f6 640002aa	bhs.w	JmpTo62_DeleteObject
000335fe 0c680250000c	cmpi.w	#$250,y_pos(a0)
00033604 6520	blo.s	return_33626
00033606 4a680010	tst.w	x_vel(a0)
0003360a 6b00001c	bmi.w	Obj55_Laser_ChkGroundLeft
0003360e 30280008	move.w	x_pos(a0),d0
00033612 0c402980	cmpi.w	#$2980,d0
00033616 640e	bhs.s	return_33626
00033618 0c40297c	cmpi.w	#$297C,d0
0003361c 65000008	blo.w	return_33626
00033620 323c2988	move.w	#$2988,d1
00033624 601a	bra.s	Obj55_Laser_CreateWave
00033626 4e75	rts	
00033628 30280008	move.w	x_pos(a0),d0
0003362c 0c402900	cmpi.w	#$2900,d0
00033630 650c	blo.s	return_3363E
00033632 0c402904	cmpi.w	#$2904,d0
00033636 6406	bhs.s	return_3363E
00033638 323c28f8	move.w	#$28F8,d1
0003363c 6002	bra.s	Obj55_Laser_CreateWave
0003363e 4e75	rts	
00033644 666a	bne.s	return_336B0
00033646 12bc0055	move.b	#ObjID_OOZBoss,id(a1)
0003364a 137c0008000a	move.b	#8,boss_subtype(a1)
00033650 137c00040025	move.b	#4,routine_secondary(a1)
00033656 137c008b0020	move.b	#$8B,collision_flags(a1)
0003365c 137c0002001c	move.b	#2,anim(a1)
00033662 137c000d001a	move.b	#$D,mapping_frame(a1)
00033668 337c00000012	move.w	#0,y_vel(a1)
0003366e 237c000337560004	move.l	#Obj55_MapUnc_33756,mappings(a1)
00033676 337c038c0002	move.w	#make_art_tile(ArtTile_ArtNem_OOZBoss,0,0),art_tile(a1)
00033680 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
00033686 137c00020018	move.b	#2,priority(a1)
0003368c 337c00050032	move.w	#5,Obj55_Wave_delay(a1)
00033692 137c00070036	move.b	#7,Obj55_Wave_count(a1)
00033698 336800100010	move.w	x_vel(a0),x_vel(a1)
0003369e 33410008	move.w	d1,x_pos(a1)
000336a2 337c0250000c	move.w	#$250,y_pos(a1)
000336a8 103c00eb	move.b	#SndID_LaserFloor,d0
000336b0 4e75	rts	
000336b2 53680032	subq.w	#1,Obj55_Wave_delay(a0)
000336b6 6a48	bpl.s	Obj55_Wave_End
000336b8 317c00c70032	move.w	#$C7,Obj55_Wave_delay(a0)
000336be 53280036	subq.b	#1,Obj55_Wave_count(a0)
000336c2 6b3c	bmi.s	Obj55_Wave_End
000336c8 6636	bne.s	Obj55_Wave_End
000336ca 7000	moveq	#0,d0
000336cc 323c000f	move.w	#bytesToLcnt(object_size),d1
000336d6 5840	addq.w	#4,d0
000336d8 51c9fff6	dbf	d1,-
000336dc 337c00050032	move.w	#5,Obj55_Wave_delay(a1)
000336e2 337c0200001c	move.w	#(2<<8)|(0<<0),anim(a1)
000336e8 303c0010	move.w	#$10,d0
000336ec 4a690010	tst.w	x_vel(a1)
000336f0 6a02	bpl.s	+
000336f2 4440	neg.w	d0
000336f4 d1690008	add.w	d0,x_pos(a1)
000336f8 103c00eb	move.b	#SndID_LaserFloor,d0
00033700 43f900033712	lea	(Ani_obj55).l,a1
0003389c 4ef9000164f4	jmp	(extractJmpToName("JmpTo41_DisplaySprite")).l
000338a2 4ef9000164e6	jmp	(extractJmpToName("JmpTo62_DeleteObject")).l
000338a8 4ef900017fda	jmp	(extractJmpToName("JmpTo18_AllocateObject")).l
000338ae 4ef9000163d2	jmp	(extractJmpToName("JmpTo38_MarkObjGone")).l
000338b4 4ef900001370	jmp	(extractJmpToName("JmpTo11_PlaySound")).l
000338ba 4ef900017ffa	jmp	(extractJmpToName("JmpTo24_AllocateObjectAfterCurrent")).l
000338c0 4ef900016544	jmp	(extractJmpToName("JmpTo22_AnimateSprite")).l
000338c6 4ef900003390	jmp	(extractJmpToName("JmpTo5_RandomNumber")).l
000338cc 4ef900016d6e	jmp	(extractJmpToName("JmpTo63_Adjust2PArtPointer")).l
000338d2 4ef9000033b6	jmp	(extractJmpToName("JmpTo13_CalcSine")).l
000338d8 4ef90000f626	jmp	(extractJmpToName("JmpTo8_PlayLevelMusic")).l
000338de 4ef90000f62e	jmp	(extractJmpToName("JmpTo8_LoadPLC_AnimalExplosion")).l
000338e4 4ef9000163ac	jmp	(extractJmpToName("JmpTo25_ObjectMove")).l
000338ec 6100001a	bsr.w	loc_33908
000338f0 7000	moveq	#0,d0
000338f2 10280024	move.b	routine(a0),d0
000338f6 323b0006	move.w	Obj09_Index(pc,d0.w),d1
000338fa 4efb1002	jmp	Obj09_Index(pc,d1.w)
00033908 43f8db82	lea	(SS_Ctrl_Record_Buf_End).w,a1
0003390c 700e	moveq	#bytesToWcnt(SS_Ctrl_Record_Buf_End-SS_Ctrl_Record_Buf)-1,d0
00033912 51c8fffa	dbf	d0,-
00033916 3338f602	move.w	(Ctrl_1_Logical).w,-(a1)
0003391a 4e75	rts	
0003391c 117c00020024	move.b	#2,routine(a0)
00033922 7000	moveq	#0,d0
00033924 2140002a	move.l	d0,ss_x_pos(a0)
00033928 323c0080	move.w	#$80,d1
0003392c 3141002e	move.w	d1,ss_y_pos(a0)
00033930 31400030	move.w	d0,ss_y_sub(a0)
00033934 d078f73e	add.w	(SS_Offset_X).w,d0
00033938 31400008	move.w	d0,x_pos(a0)
0003393c d278f740	add.w	(SS_Offset_Y).w,d1
00033940 3141000c	move.w	d1,y_pos(a0)
00033944 117c000e0016	move.b	#$E,y_radius(a0)
0003394a 117c00070017	move.b	#7,x_radius(a0)
00033950 217c000342120004	move.l	#Obj09_MapUnc_34212,mappings(a0)
00033958 317c22e50002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialSonic,1,0),art_tile(a0)
0003395e 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00033964 117c00030018	move.b	#3,priority(a0)
0003396a 317c006e0034	move.w	#$6E,ss_z_pos(a0)
00033970 4238f742	clr.b	(SS_Swap_Positions_Flag).w
00033974 317c04000032	move.w	#$400,ss_init_flip_timer(a0)
0003397a 117c00400026	move.b	#$40,angle(a0)
00033980 11fc0001f766	move.b	#1,(Sonic_LastLoadedDPLC).w
00033986 42280037	clr.b	ss_slide_timer(a0)
0003398a 08a800060022	bclr	#status.player.ss.slowing,status(a0)
00033990 42280021	clr.b	collision_property(a0)
00033994 42280023	clr.b	ss_dplc_timer(a0)
00033998 227cffffb140	movea.l	#SpecialStageShadow_Sonic,a1
0003399e 12bc0063	move.b	#ObjID_SSShadow,id(a1)
000339a2 336800080008	move.w	x_pos(a0),x_pos(a1)
000339a8 3368000c000c	move.w	y_pos(a0),y_pos(a1)
000339ae 06690018000c	addi.w	#$18,y_pos(a1)
000339b4 237c000344920004	move.l	#Obj63_MapUnc_34492,mappings(a1)
000339bc 337c623c0002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialFlatShadow,3,0),art_tile(a1)
000339c2 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
000339c8 137c00040018	move.b	#4,priority(a1)
000339ce 23480038	move.l	a0,ss_parent(a1)
000339d2 600000de	bra.w	LoadSSSonicDynPLC
000339d6 4a280025	tst.b	routine_secondary(a0)
000339da 6632	bne.s	Obj09_Hurt
000339dc 45f8f602	lea	(Ctrl_1_Held_Logical).w,a2
000339e0 610005a8	bsr.w	SSPlayer_Move
000339e4 61000624	bsr.w	SSPlayer_Traction
000339e8 6100045a	bsr.w	SSPlayerSwapPositions
000339ec 6100065c	bsr.w	SSObjectMove
000339f0 61000692	bsr.w	SSAnglePos
000339f4 6100014a	bsr.w	SSSonic_Jump
000339f8 610004a6	bsr.w	SSPlayer_SetAnimation
000339fc 43f9000341e4	lea	(off_341E4).l,a1
00033a02 610004fc	bsr.w	SSPlayer_Animate
00033a06 610003f4	bsr.w	SSPlayer_Collision
00033a0a 600000a6	bra.w	LoadSSSonicDynPLC
00033a0e 61000012	bsr.w	SSHurt_Animation
00033a12 61000430	bsr.w	SSPlayerSwapPositions
00033a16 61000632	bsr.w	SSObjectMove
00033a1a 61000668	bsr.w	SSAnglePos
00033a1e 60000092	bra.w	LoadSSSonicDynPLC
00033a22 7000	moveq	#0,d0
00033a24 10280036	move.b	ss_hurt_timer(a0),d0
00033a2c 11400036	move.b	d0,ss_hurt_timer(a0)
00033a30 660c	bne.s	+
00033a32 117c00000025	move.b	#0,routine_secondary(a0)
00033a38 117c001e0023	move.b	#$1E,ss_dplc_timer(a0)
00033a3e d0280026	add.b	angle(a0),d0
00033a42 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
00033a48 04000010	subi.b	#$10,d0
00033a4c ea08	lsr.b	#5,d0
00033a4e d040	add.w	d0,d0
00033a50 117b0040001a	move.b	byte_33A92(pc,d0.w),mapping_frame(a0)
00033a56 103b003b	move.b	byte_33A92+1(pc,d0.w),d0
00033a5a 81280001	or.b	d0,render_flags(a0)
00033a5e 10280036	move.b	ss_hurt_timer(a0),d0
00033a66 6628	bne.s	return_33A90
00033a68 11400021	move.b	d0,collision_property(a0)
00033a6c b1fcffffb000	cmpa.l	#MainCharacter,a0
00033a72 6608	bne.s	+
00033a74 4a78fe20	tst.w	(Ring_count).w
00033a78 6716	beq.s	return_33A90
00033a7a 6006	bra.s	++
00033a7c 4a78fed0	tst.w	(Ring_count_2P).w
00033a80 670e	beq.s	return_33A90
00033a86 6608	bne.s	return_33A90
00033a88 23480038	move.l	a0,ss_parent(a1)
00033a8c 12bc005b	move.b	#ObjID_SSRingSpill,id(a1)
00033a90 4e75	rts	
00033ab2 10280023	move.b	ss_dplc_timer(a0),d0
00033ab6 670e	beq.s	+
00033ab8 5300	subq.b	#1,d0
00033aba 11400023	move.b	d0,ss_dplc_timer(a0)
00033abe 02000001	andi.b	#1,d0
00033ac2 6702	beq.s	+
00033ac4 4e75	rts	
00033aca 47faffd6	lea	dword_33AA2(pc),a3
00033ace 49f8f766	lea	(Sonic_LastLoadedDPLC).w,a4
00033ad2 383c5ca0	move.w	#tiles_to_bytes(ArtTile_ArtNem_SpecialSonic),d4
00033ad6 7200	moveq	#0,d1
00033ad8 7000	moveq	#0,d0
00033ada 1028001a	move.b	mapping_frame(a0),d0
00033ade b014	cmp.b	(a4),d0
00033ae0 675c	beq.s	return_33B3E
00033ae2 1880	move.b	d0,(a4)
00033ae4 7c00	moveq	#0,d6
00033ae6 0c000004	cmpi.b	#4,d0
00033aea 6d12	blt.s	loc_33AFE
00033aec 5846	addq.w	#4,d6
00033aee 0c00000c	cmpi.b	#$C,d0
00033af2 6d0a	blt.s	loc_33AFE
00033af4 5846	addq.w	#4,d6
00033af6 0c000010	cmpi.b	#$10,d0
00033afa 6d02	blt.s	loc_33AFE
00033afc 5806	addq.b	#4,d6
00033afe 2c336000	move.l	(a3,d6.w),d6
00033b02 d041	add.w	d1,d0
00033b04 d040	add.w	d0,d0
00033b06 45f9000345fa	lea	(Obj09_MapRUnc_345FA).l,a2
00033b0c d4f20000	adda.w	(a2,d0.w),a2
00033b10 3a1a	move.w	(a2)+,d5
00033b12 5345	subq.w	#1,d5
00033b14 6b28	bmi.s	return_33B3E
00033b16 7200	moveq	#0,d1
00033b18 321a	move.w	(a2)+,d1
00033b1a 3601	move.w	d1,d3
00033b1c e04b	lsr.w	#8,d3
00033b1e 024300f0	andi.w	#$F0,d3
00033b22 06430010	addi.w	#$10,d3
00033b26 02410fff	andi.w	#$FFF,d1
00033b2a e349	lsl.w	#1,d1
00033b2c d286	add.l	d6,d1
00033b2e 3404	move.w	d4,d2
00033b30 d843	add.w	d3,d4
00033b32 d843	add.w	d3,d4
00033b34 4eb90000144e	jsr	(QueueDMATransfer).l
00033b3a 51cdffda	dbf	d5,SSPLC_ReadEntry
00033b3e 4e75	rts	
00033b40 45f8f603	lea	(Ctrl_1_Press_Logical).w,a2
00033b44 1012	move.b	(a2),d0
00033b46 02000070	andi.b	#button_B_mask|button_C_mask|button_A_mask,d0
00033b4a 67000060	beq.w	return_33BAC
00033b4e 343c0780	move.w	#$780,d2
00033b52 7000	moveq	#0,d0
00033b54 10280026	move.b	angle(a0),d0
00033b58 06000080	addi.b	#$80,d0
00033b5c 4eb9000033b6	jsr	(CalcSine).l
00033b62 c3c2	muls.w	d2,d1
00033b64 e081	asr.l	#8,d1
00033b66 d3680010	add.w	d1,x_vel(a0)
00033b6a c1c2	muls.w	d2,d0
00033b6c ee80	asr.l	#7,d0
00033b6e d1680012	add.w	d0,y_vel(a0)
00033b72 08e800020022	bset	#status.player.ss.jumping,status(a0)
00033b78 117c00040024	move.b	#4,routine(a0)
00033b7e 117c0003001c	move.b	#3,anim(a0)
00033b84 7000	moveq	#0,d0
00033b86 1140001e	move.b	d0,anim_frame_duration(a0)
00033b8a 1140001b	move.b	d0,anim_frame(a0)
00033b8e 11400021	move.b	d0,collision_property(a0)
00033b92 4a38fe00	tst.b	(SS_2p_Flag).w
00033b96 6606	bne.s	loc_33B9E
00033b98 4a78ff70	tst.w	(Player_mode).w
00033b9c 6604	bne.s	loc_33BA2
00033b9e 4638f742	not.b	(SS_Swap_Positions_Flag).w
00033ba2 303c00a0	move.w	#SndID_Jump,d0
00033ba6 4eb900001370	jsr	(PlaySound).l
00033bac 4e75	rts	
00033bae 45f8f602	lea	(Ctrl_1_Held_Logical).w,a2
00033bb2 6100007e	bsr.w	SSPlayer_ChgJumpDir
00033bb6 6100004e	bsr.w	SSObjectMoveAndFall
00033bba 61000098	bsr.w	SSPlayer_JumpAngle
00033bbe 610001f4	bsr.w	SSPlayer_DoLevelCollision
00033bc2 61000280	bsr.w	SSPlayerSwapPositions
00033bc6 610004bc	bsr.w	SSAnglePos
00033bca 43f9000341e4	lea	(off_341E4).l,a1
00033bd0 6100032e	bsr.w	SSPlayer_Animate
00033bd4 6000fedc	bra.w	LoadSSSonicDynPLC
00033bd8 45f8f602	lea	(Ctrl_1_Held_Logical).w,a2
00033bdc 61000054	bsr.w	SSPlayer_ChgJumpDir
00033be0 61000024	bsr.w	SSObjectMoveAndFall
00033be4 6100006e	bsr.w	SSPlayer_JumpAngle
00033be8 610001ca	bsr.w	SSPlayer_DoLevelCollision
00033bec 61000256	bsr.w	SSPlayerSwapPositions
00033bf0 61000492	bsr.w	SSAnglePos
00033bf4 610002aa	bsr.w	SSPlayer_SetAnimation
00033bf8 43f9000341e4	lea	(off_341E4).l,a1
00033bfe 61000300	bsr.w	SSPlayer_Animate
00033c02 6000feae	bra.w	LoadSSSonicDynPLC
00033c06 2428002a	move.l	ss_x_pos(a0),d2
00033c0a 2628002e	move.l	ss_y_pos(a0),d3
00033c0e 30280010	move.w	x_vel(a0),d0
00033c12 48c0	ext.l	d0
00033c14 e180	asl.l	#8,d0
00033c16 d480	add.l	d0,d2
00033c18 30280012	move.w	y_vel(a0),d0
00033c1c 066800a80012	addi.w	#$A8,y_vel(a0)
00033c22 48c0	ext.l	d0
00033c24 e180	asl.l	#8,d0
00033c26 d680	add.l	d0,d3
00033c28 2142002a	move.l	d2,ss_x_pos(a0)
00033c2c 2143002e	move.l	d3,ss_y_pos(a0)
00033c30 4e75	rts	
00033c32 1012	move.b	(a2),d0
00033c34 08000002	btst	#button_left,d0
00033c38 660a	bne.s	+
00033c3a 08000003	btst	#button_right,d0
00033c3e 6600000c	bne.w	++
00033c42 4e75	rts	
00033c44 046800400010	subi.w	#$40,x_vel(a0)
00033c4a 4e75	rts	
00033c4c 066800400010	addi.w	#$40,x_vel(a0)
00033c52 4e75	rts	
00033c54 7400	moveq	#0,d2
00033c56 7600	moveq	#0,d3
00033c58 3428002e	move.w	ss_y_pos(a0),d2
00033c5c 6b56	bmi.s	SSPlayer_JumpAngle_above_screen
00033c5e 3628002a	move.w	ss_x_pos(a0),d3
00033c62 6b2c	bmi.s	+++
00033c64 b642	cmp.w	d2,d3
00033c66 6518	blo.s	++
00033c68 660c	bne.s	+
00033c6a 4a43	tst.w	d3
00033c6c 6608	bne.s	+
00033c6e 117c00400026	move.b	#$40,angle(a0)
00033c74 4e75	rts	
00033c76 eb8a	lsl.l	#5,d2
00033c78 84c3	divu.w	d3,d2
00033c7a 11420026	move.b	d2,angle(a0)
00033c7e 4e75	rts	
00033c80 eb8b	lsl.l	#5,d3
00033c82 86c2	divu.w	d2,d3
00033c84 04430040	subi.w	#$40,d3
00033c88 4443	neg.w	d3
00033c8a 11430026	move.b	d3,angle(a0)
00033c8e 4e75	rts	
00033c90 4443	neg.w	d3
00033c92 b642	cmp.w	d2,d3
00033c94 640e	bhs.s	+
00033c96 eb8b	lsl.l	#5,d3
00033c98 86c2	divu.w	d2,d3
00033c9a 06430040	addi.w	#$40,d3
00033c9e 11430026	move.b	d3,angle(a0)
00033ca2 4e75	rts	
00033ca4 eb8a	lsl.l	#5,d2
00033ca6 84c3	divu.w	d3,d2
00033ca8 04420080	subi.w	#$80,d2
00033cac 4442	neg.w	d2
00033cae 11420026	move.b	d2,angle(a0)
00033cb2 4e75	rts	
00033cb4 4442	neg.w	d2
00033cb6 3628002a	move.w	ss_x_pos(a0),d3
00033cba 6a24	bpl.s	++
00033cbc 4443	neg.w	d3
00033cbe b642	cmp.w	d2,d3
00033cc0 650e	blo.s	+
00033cc2 eb8a	lsl.l	#5,d2
00033cc4 84c3	divu.w	d3,d2
00033cc6 06420080	addi.w	#$80,d2
00033cca 11420026	move.b	d2,angle(a0)
00033cce 4e75	rts	
00033cd0 eb8b	lsl.l	#5,d3
00033cd2 86c2	divu.w	d2,d3
00033cd4 044300c0	subi.w	#$C0,d3
00033cd8 4443	neg.w	d3
00033cda 11430026	move.b	d3,angle(a0)
00033cde 4e75	rts	
00033ce0 b642	cmp.w	d2,d3
00033ce2 640e	bhs.s	+
00033ce4 eb8b	lsl.l	#5,d3
00033ce6 86c2	divu.w	d2,d3
00033ce8 064300c0	addi.w	#$C0,d3
00033cec 11430026	move.b	d3,angle(a0)
00033cf0 4e75	rts	
00033cf2 eb8a	lsl.l	#5,d2
00033cf4 84c3	divu.w	d3,d2
00033cf6 04420100	subi.w	#$100,d2
00033cfa 4442	neg.w	d2
00033cfc 11420026	move.b	d2,angle(a0)
00033d00 4e75	rts	
00033d02 7c00	moveq	#0,d6
00033d04 7000	moveq	#0,d0
00033d06 3029002a	move.w	ss_x_pos(a1),d0
00033d0a 6a04	bpl.s	loc_33D10
00033d0c 50c6	st.b	d6
00033d0e 4440	neg.w	d0
00033d10 ef88	lsl.l	#7,d0
00033d12 80e90034	divu.w	ss_z_pos(a1),d0
00033d16 103b001a	move.b	byte_33D32(pc,d0.w),d0
00033d1a 4a06	tst.b	d6
00033d1c 6606	bne.s	loc_33D24
00033d1e 04000080	subi.b	#$80,d0
00033d22 4400	neg.b	d0
00033d24 4a69002e	tst.w	ss_y_pos(a1)
00033d28 6a02	bpl.s	loc_33D2C
00033d2a 4400	neg.b	d0
00033d2c 11400026	move.b	d0,angle(a0)
00033d30 4e75	rts	
00033db4 3028002e	move.w	ss_y_pos(a0),d0
00033db8 6f40	ble.s	+
00033dba c1c0	muls.w	d0,d0
00033dbc 3228002a	move.w	ss_x_pos(a0),d1
00033dc0 c3c1	muls.w	d1,d1
00033dc2 d041	add.w	d1,d0
00033dc4 32280034	move.w	ss_z_pos(a0),d1
00033dc8 c2c1	mulu.w	d1,d1
00033dca b081	cmp.l	d1,d0
00033dcc 652c	blo.s	+
00033dce 117c00020024	move.b	#2,routine(a0)
00033dd4 08a800020022	bclr	#status.player.ss.jumping,status(a0)
00033dda 7000	moveq	#0,d0
00033ddc 31400010	move.w	d0,x_vel(a0)
00033de0 31400012	move.w	d0,y_vel(a0)
00033de4 31400014	move.w	d0,inertia(a0)
00033de8 11400037	move.b	d0,ss_slide_timer(a0)
00033dec 08e800060022	bset	#status.player.ss.slowing,status(a0)
00033df2 61000256	bsr.w	SSObjectMove
00033df6 6100028c	bsr.w	SSAnglePos
00033dfa 4e75	rts	
00033dfc 4a280021	tst.b	collision_property(a0)
00033e00 6740	beq.s	return_33E42
00033e02 42280021	clr.b	collision_property(a0)
00033e06 4a280023	tst.b	ss_dplc_timer(a0)
00033e0a 6636	bne.s	return_33E42
00033e0c 42280014	clr.b	inertia(a0)
00033e10 b1fcffffb000	cmpa.l	#MainCharacter,a0
00033e16 660c	bne.s	+
00033e18 50f8f742	st.b	(SS_Swap_Positions_Flag).w
00033e1c 4a78fe20	tst.w	(Ring_count).w
00033e20 6716	beq.s	loc_33E38
00033e22 600a	bra.s	++
00033e24 4238f742	clr.b	(SS_Swap_Positions_Flag).w
00033e28 4a78fed0	tst.w	(Ring_count_2P).w
00033e2c 670a	beq.s	loc_33E38
00033e2e 303c00c6	move.w	#SndID_RingSpill,d0
00033e32 4eb900001370	jsr	(PlaySound).l
00033e38 117c00020025	move.b	#2,routine_secondary(a0)
00033e3e 42280036	clr.b	ss_hurt_timer(a0)
00033e42 4e75	rts	
00033e44 4a78ff70	tst.w	(Player_mode).w
00033e48 6644	bne.s	return_33E8E
00033e4a 30280034	move.w	ss_z_pos(a0),d0
00033e4e b1fcffffb000	cmpa.l	#MainCharacter,a0
00033e54 6608	bne.s	loc_33E5E
00033e56 4a38f742	tst.b	(SS_Swap_Positions_Flag).w
00033e5a 6712	beq.s	loc_33E6E
00033e5c 6006	bra.s	loc_33E64
00033e5e 4a38f742	tst.b	(SS_Swap_Positions_Flag).w
00033e62 660a	bne.s	loc_33E6E
00033e64 0c400080	cmpi.w	#$80,d0
00033e68 6724	beq.s	return_33E8E
00033e6a 5240	addq.w	#1,d0
00033e6c 6008	bra.s	loc_33E76
00033e6e 0c40006e	cmpi.w	#$6E,d0
00033e72 671a	beq.s	return_33E8E
00033e74 5340	subq.w	#1,d0
00033e76 31400034	move.w	d0,ss_z_pos(a0)
00033e7a 0c400077	cmpi.w	#$77,d0
00033e7e 6408	bhs.s	loc_33E88
00033e80 117c00030018	move.b	#3,priority(a0)
00033e86 4e75	rts	
00033e88 117c00020018	move.b	#2,priority(a0)
00033e8e 4e75	rts	
00033ea0 082800020022	btst	#status.player.ss.jumping,status(a0)
00033ea6 670e	beq.s	+
00033ea8 117c0003001c	move.b	#3,anim(a0)
00033eae 022800fc0022	andi.b	#~(1<<status.player.ss.x_flip|1<<status.player.ss.y_flip),status(a0)
00033eb4 4e75	rts	
00033eb6 7000	moveq	#0,d0
00033eb8 10280026	move.b	angle(a0),d0
00033ebc 04000010	subi.b	#$10,d0
00033ec0 ea08	lsr.b	#5,d0
00033ec2 1200	move.b	d0,d1
00033ec4 d040	add.w	d0,d0
00033ec6 143b00c8	move.b	byte_33E90(pc,d0.w),d2
00033eca b428001c	cmp.b	anim(a0),d2
00033ece 6606	bne.s	+
00033ed0 b228003f	cmp.b	ss_last_angle_index(a0),d1
00033ed4 6728	beq.s	return_33EFE
00033ed6 1141003f	move.b	d1,ss_last_angle_index(a0)
00033eda 1142001c	move.b	d2,anim(a0)
00033ede 103b00b1	move.b	byte_33E90+1(pc,d0.w),d0
00033ee2 022800fc0022	andi.b	#~(1<<status.player.ss.x_flip|1<<status.player.ss.y_flip),status(a0)
00033ee8 81280022	or.b	d0,status(a0)
00033eec 0c010001	cmpi.b	#1,d1
00033ef0 6706	beq.s	loc_33EF8
00033ef2 0c010005	cmpi.b	#5,d1
00033ef6 6606	bne.s	return_33EFE
00033ef8 317c04000032	move.w	#$400,ss_init_flip_timer(a0)
00033efe 4e75	rts	
00033f00 7000	moveq	#0,d0
00033f02 1028001c	move.b	anim(a0),d0
00033f06 b028001d	cmp.b	prev_anim(a0),d0
00033f0a 6710	beq.s	SSAnim_Do
00033f0c 117c0000001b	move.b	#0,anim_frame(a0)
00033f12 1140001d	move.b	d0,prev_anim(a0)
00033f16 117c0000001e	move.b	#0,anim_frame_duration(a0)
00033f1c 5328001e	subq.b	#1,anim_frame_duration(a0)
00033f20 6a66	bpl.s	SSAnim_Delay
00033f22 d040	add.w	d0,d0
00033f24 d2f10000	adda.w	(a1,d0.w),a1
00033f28 1038db21	move.b	(SS_player_anim_frame_timer).w,d0
00033f2c e208	lsr.b	#1,d0
00033f2e 1140001e	move.b	d0,anim_frame_duration(a0)
00033f32 0c280000001c	cmpi.b	#0,anim(a0)
00033f38 661a	bne.s	+
00033f40 6e12	bgt.s	+
00033f42 086800000022	bchg	#status.player.ss.x_flip,status(a0)
00033f48 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
00033f4e 116800320033	move.b	ss_init_flip_timer(a0),ss_flip_timer(a0)
00033f54 7200	moveq	#0,d1
00033f56 1228001b	move.b	anim_frame(a0),d1
00033f5a 10311001	move.b	1(a1,d1.w),d0
00033f5e 6a0a	bpl.s	+
00033f60 117c0000001b	move.b	#0,anim_frame(a0)
00033f66 10290001	move.b	1(a1),d0
00033f6a 0200007f	andi.b	#$7F,d0
00033f6e 1140001a	move.b	d0,mapping_frame(a0)
00033f72 12280022	move.b	status(a0),d1
00033f76 02010003	andi.b	#1<<status.player.ss.x_flip|1<<status.player.ss.y_flip,d1
00033f7a 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
00033f80 83280001	or.b	d1,render_flags(a0)
00033f84 5228001b	addq.b	#1,anim_frame(a0)
00033f88 4e75	rts	
00033f8a 34280014	move.w	inertia(a0),d2
00033f8e 1012	move.b	(a2),d0
00033f90 08000002	btst	#button_left,d0
00033f94 6646	bne.s	SSPlayer_MoveLeft
00033f96 08000003	btst	#button_right,d0
00033f9a 66000050	bne.w	SSPlayer_MoveRight
00033f9e 08e800060022	bset	#status.player.ss.slowing,status(a0)
00033fa4 6606	bne.s	+
00033fa6 117c001e0037	move.b	#$1E,ss_slide_timer(a0)
00033fac 10280026	move.b	angle(a0),d0
00033fb0 6b12	bmi.s	+
00033fb2 04000038	subi.b	#$38,d0
00033fb6 0c000010	cmpi.b	#$10,d0
00033fba 6408	bhs.s	+
00033fbc 3202	move.w	d2,d1
00033fbe e641	asr.w	#3,d1
00033fc0 9441	sub.w	d1,d2
00033fc2 6006	bra.s	++
00033fc4 3202	move.w	d2,d1
00033fc6 e641	asr.w	#3,d1
00033fc8 9441	sub.w	d1,d2
00033fca 31420014	move.w	d2,inertia(a0)
00033fce 10280037	move.b	ss_slide_timer(a0),d0
00033fd2 6706	beq.s	+
00033fd4 5300	subq.b	#1,d0
00033fd6 11400037	move.b	d0,ss_slide_timer(a0)
00033fda 4e75	rts	
00033fdc 06420060	addi.w	#$60,d2
00033fe0 0c420600	cmpi.w	#$600,d2
00033fe4 6f14	ble.s	+
00033fe6 343c0600	move.w	#$600,d2
00033fea 600e	bra.s	+
00033fec 04420060	subi.w	#$60,d2
00033ff0 0c42fa00	cmpi.w	#-$600,d2
00033ff4 6c04	bge.s	+
00033ff6 343cfa00	move.w	#-$600,d2
00033ffa 31420014	move.w	d2,inertia(a0)
00033ffe 08a800060022	bclr	#status.player.ss.slowing,status(a0)
00034004 42280037	clr.b	ss_slide_timer(a0)
00034008 4e75	rts	
0003400a 4a280037	tst.b	ss_slide_timer(a0)
0003400e 6614	bne.s	+
00034010 10280026	move.b	angle(a0),d0
00034014 4eb9000033b6	jsr	(CalcSine).l
0003401a c3fc0050	muls.w	#$50,d1
0003401e e081	asr.l	#8,d1
00034020 d3680014	add.w	d1,inertia(a0)
00034024 10280026	move.b	angle(a0),d0
00034028 6a1e	bpl.s	return_34048
0003402e 0c000088	cmpi.b	#-$78,d0
00034032 6514	blo.s	return_34048
00034034 30280014	move.w	inertia(a0),d0
00034038 6a02	bpl.s	.skip
0003403a 4440	neg.w	d0
0003403c 0c400100	cmpi.w	#$100,d0
00034040 6406	bhs.s	return_34048
00034042 117c00080024	move.b	#8,routine(a0)
00034048 4e75	rts	
0003404a 7000	moveq	#0,d0
0003404c 7200	moveq	#0,d1
0003404e 34280014	move.w	inertia(a0),d2
00034052 6a0a	bpl.s	+
00034054 4442	neg.w	d2
00034056 e04a	lsr.w	#8,d2
00034058 95280026	sub.b	d2,angle(a0)
0003405c 6006	bra.s	++
0003405e e04a	lsr.w	#8,d2
00034060 d5280026	add.b	d2,angle(a0)
00034064 10280026	move.b	angle(a0),d0
00034068 4eb9000033b6	jsr	(CalcSine).l
0003406e c3e80034	muls.w	ss_z_pos(a0),d1
00034072 e081	asr.l	#8,d1
00034074 3141002a	move.w	d1,ss_x_pos(a0)
00034078 c1e80034	muls.w	ss_z_pos(a0),d0
0003407c e080	asr.l	#8,d0
0003407e 3140002e	move.w	d0,ss_y_pos(a0)
00034082 4e75	rts	
00034084 3028002a	move.w	ss_x_pos(a0),d0
00034088 c1fc00cc	muls.w	#$CC,d0
0003408c e080	asr.l	#8,d0
0003408e d078f73e	add.w	(SS_Offset_X).w,d0
00034092 31400008	move.w	d0,x_pos(a0)
00034096 3028002e	move.w	ss_y_pos(a0),d0
0003409a d078f740	add.w	(SS_Offset_Y).w,d0
0003409e 3140000c	move.w	d0,y_pos(a0)
000340a2 4e75	rts	
000340a4 22680038	movea.l	ss_parent(a0),a1
000340a8 b3fcffffb000	cmpa.l	#MainCharacter,a1
000340ae 660c	bne.s	loc_340BC
000340b0 227cffffb000	movea.l	#MainCharacter,a1
000340b6 6114	bsr.s	loc_340CC
000340bc 227cffffb040	movea.l	#Sidekick,a1
000340c2 6108	bsr.s	loc_340CC
000340c4 610000f4	bsr.w	loc_341BA
000340cc 0c2900020024	cmpi.b	#2,routine(a1)
000340d2 67000034	beq.w	loc_34108
000340d6 6100fc2a	bsr.w	loc_33D02
000340da 10280026	move.b	angle(a0),d0
000340de 4eb9000033b6	jsr	(CalcSine).l
000340e4 c3e90034	muls.w	ss_z_pos(a1),d1
000340e8 c3fc00cc	muls.w	#$CC,d1
000340ec 4841	swap	d1
000340ee d278f73e	add.w	(SS_Offset_X).w,d1
000340f2 31410008	move.w	d1,x_pos(a0)
000340f6 c1e90034	muls.w	ss_z_pos(a1),d0
000340fa e080	asr.l	#8,d0
000340fc d078f740	add.w	(SS_Offset_Y).w,d0
00034100 3140000c	move.w	d0,y_pos(a0)
00034104 60000014	bra.w	loc_3411A
00034108 316900080008	move.w	x_pos(a1),x_pos(a0)
0003410e 3169000c000c	move.w	y_pos(a1),y_pos(a0)
00034114 116900260026	move.b	angle(a1),angle(a0)
0003411a 7000	moveq	#0,d0
0003411c 10280026	move.b	angle(a0),d0
00034120 04000010	subi.b	#$10,d0
00034124 ea08	lsr.b	#5,d0
00034126 1200	move.b	d0,d1
00034128 e748	lsl.w	#3,d0
0003412a 45fa004e	lea	word_3417A(pc),a2
0003412e d4c0	adda.w	d0,a2
00034130 315a0002	move.w	(a2)+,art_tile(a0)
00034134 301a	move.w	(a2)+,d0
00034136 d1680008	add.w	d0,x_pos(a0)
0003413a 301a	move.w	(a2)+,d0
0003413c d168000c	add.w	d0,y_pos(a0)
00034140 115a001a	move.b	(a2)+,mapping_frame(a0)
00034144 10280001	move.b	render_flags(a0),d0
00034148 020000fc	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),d0
0003414c 801a	or.b	(a2)+,d0
0003414e 11400001	move.b	d0,render_flags(a0)
00034152 4a280026	tst.b	angle(a0)
00034156 6a20	bpl.s	return_34178
00034158 0c010003	cmpi.b	#3,d1
0003415c 6706	beq.s	loc_34164
0003415e 0c010007	cmpi.b	#7,d1
00034162 6606	bne.s	loc_3416A
0003416a 3238f740	move.w	(SS_Offset_Y).w,d1
0003416e 9268000c	sub.w	y_pos(a0),d1
00034172 d241	add.w	d1,d1
00034174 d368000c	add.w	d1,y_pos(a0)
00034178 4e75	rts	
000341ba 0c290001001c	cmpi.b	#1,anim(a1)
000341c0 661e	bne.s	return_341E0
000341c2 12290022	move.b	status(a1),d1
000341c6 02410003	andi.w	#1<<status.npc.x_flip|1<<status.npc.y_flip,d1
000341ca 0c010002	cmpi.b	#1<<status.npc.y_flip,d1
000341ce 6410	bhs.s	return_341E0
000341d0 103b1010	move.b	byte_341E2(pc,d1.w),d0
000341d4 4880	ext.w	d0
000341d6 d1680008	add.w	d0,x_pos(a0)
000341e0 4e75	rts	
000347e0 4ef9000164f4	jmp	(extractJmpToName("JmpTo42_DisplaySprite")).l
000347e6 4ef900006f8e	jmp	(extractJmpToName("JmpTo_SSAllocateObject")).l
000347ec 7000	moveq	#0,d0
000347ee 10280024	move.b	routine(a0),d0
000347f2 323b0006	move.w	Obj10_Index(pc,d0.w),d1
000347f6 4efb1002	jmp	Obj10_Index(pc,d1.w)
00034804 54280024	addq.b	#2,routine(a0)
00034808 7000	moveq	#0,d0
0003480a 3140002a	move.w	d0,ss_x_pos(a0)
0003480e 323c0080	move.w	#$80,d1
00034812 3141002e	move.w	d1,ss_y_pos(a0)
00034816 d078f73e	add.w	(SS_Offset_X).w,d0
0003481a 31400008	move.w	d0,x_pos(a0)
0003481e d278f740	add.w	(SS_Offset_Y).w,d1
00034822 3141000c	move.w	d1,y_pos(a0)
00034826 117c000e0016	move.b	#$E,y_radius(a0)
0003482c 117c00070017	move.b	#7,x_radius(a0)
00034832 217c00034b3e0004	move.l	#Obj10_MapUnc_34B3E,mappings(a0)
0003483a 317c43000002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialTails,2,0),art_tile(a0)
00034840 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00034846 117c00020018	move.b	#2,priority(a0)
0003484c 317c00800034	move.w	#$80,ss_z_pos(a0)
00034852 4a78ff70	tst.w	(Player_mode).w
00034856 670c	beq.s	loc_34864
00034858 117c00030018	move.b	#3,priority(a0)
0003485e 317c006e0034	move.w	#$6E,ss_z_pos(a0)
00034864 317c04000032	move.w	#$400,ss_init_flip_timer(a0)
0003486a 117c00400026	move.b	#$40,angle(a0)
00034870 11fc0001f7de	move.b	#1,(Tails_LastLoadedDPLC).w
00034876 42280021	clr.b	collision_property(a0)
0003487a 42280023	clr.b	ss_dplc_timer(a0)
0003487e 61000148	bsr.w	LoadSSTailsDynPLC
00034882 227cffffb180	movea.l	#SpecialStageShadow_Tails,a1
00034888 12bc0063	move.b	#ObjID_SSShadow,id(a1)
0003488c 336800080008	move.w	x_pos(a0),x_pos(a1)
00034892 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00034898 06690018000c	addi.w	#$18,y_pos(a1)
0003489e 237c000344920004	move.l	#Obj63_MapUnc_34492,mappings(a1)
000348a6 337c623c0002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialFlatShadow,3,0),art_tile(a1)
000348ac 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
000348b2 137c00040018	move.b	#4,priority(a1)
000348b8 23480038	move.l	a0,ss_parent(a1)
000348bc 227cffffb1c0	movea.l	#SpecialStageTails_Tails,a1
000348c2 12bc0088	move.b	#ObjID_SSTailsTails,id(a1)
000348c6 336800080008	move.w	x_pos(a0),x_pos(a1)
000348cc 3368000c000c	move.w	y_pos(a0),y_pos(a1)
000348d2 237c00034da80004	move.l	#Obj88_MapUnc_34DA8,mappings(a1)
000348da 337c43160002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialTails_Tails,2,0),art_tile(a1)
000348e0 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
000348e6 136800180018	move.b	priority(a0),priority(a1)
000348f2 23480038	move.l	a0,ss_parent(a1)
000348f6 2049	movea.l	a1,a0
000348f8 11fc0001f7df	move.b	#1,(TailsTails_LastLoadedDPLC).w
000348fe 42280023	clr.b	ss_dplc_timer(a0)
00034902 20680038	movea.l	ss_parent(a0),a0
00034906 4e75	rts	
00034908 4a280025	tst.b	routine_secondary(a0)
0003490c 6650	bne.s	Obj10_Hurt
0003490e 61000062	bsr.w	SSTailsCPU_Control
00034912 45f8f66a	lea	(Ctrl_2_Held_Logical).w,a2
00034916 4a78ff70	tst.w	(Player_mode).w
0003491a 6704	beq.s	+
0003491c 45f8f602	lea	(Ctrl_1_Held_Logical).w,a2
00034920 6100f668	bsr.w	SSPlayer_Move
00034924 6100f6e4	bsr.w	SSPlayer_Traction
00034928 7001	moveq	#1,d0
0003492a 6100f518	bsr.w	SSPlayerSwapPositions
0003492e 6100f71a	bsr.w	SSObjectMove
00034932 6100f750	bsr.w	SSAnglePos
00034936 45f8f66b	lea	(Ctrl_2_Press_Logical).w,a2
0003493a 4a78ff70	tst.w	(Player_mode).w
0003493e 6704	beq.s	+
00034940 45f8f603	lea	(Ctrl_1_Press_Logical).w,a2
00034944 6100f1fe	bsr.w	SSPlayer_Jump
00034948 6100f556	bsr.w	SSPlayer_SetAnimation
0003494c 43f900034b1c	lea	(off_34B1C).l,a1
00034952 6100f5ac	bsr.w	SSPlayer_Animate
00034956 6100f4a4	bsr.w	SSPlayer_Collision
0003495a 6000006c	bra.w	LoadSSTailsDynPLC
0003495e 6100f0c2	bsr.w	SSHurt_Animation
00034962 6100f4e0	bsr.w	SSPlayerSwapPositions
00034966 6100f6e2	bsr.w	SSObjectMove
0003496a 6100f718	bsr.w	SSAnglePos
0003496e 60000058	bra.w	LoadSSTailsDynPLC
00034972 4a38fe00	tst.b	(SS_2p_Flag).w
00034976 6606	bne.s	+
00034978 4a78ff70	tst.w	(Player_mode).w
0003497c 6702	beq.s	++
0003497e 4e75	rts	
00034980 1038f66a	move.b	(Ctrl_2_Held_Logical).w,d0
00034984 0200007f	andi.b	#button_up_mask|button_down_mask|button_left_mask|button_right_mask|button_B_mask|button_C_mask|button_A_mask,d0
00034988 6718	beq.s	+
0003498a 7000	moveq	#0,d0
0003498c 7203	moveq	#bytesToXcnt(SS_Ctrl_Record_Buf_End-SS_Ctrl_Record_Buf,4*2),d1
0003498e 43f8db62	lea	(SS_Ctrl_Record_Buf).w,a1
00034992 2280	move.l	d0,(a1)
00034994 2280	move.l	d0,(a1)
00034996 51c9fffa	dbf	d1,-
0003499a 31fc00b4f702	move.w	#$B4,(Tails_control_counter).w
000349a0 4e75	rts	
000349a2 4a78f702	tst.w	(Tails_control_counter).w
000349a6 6706	beq.s	+
000349a8 5378f702	subq.w	#1,(Tails_control_counter).w
000349ac 4e75	rts	
000349ae 43f8db80	lea	(SS_Ctrl_Record_Buf_End-2).w,a1
000349b2 31d1f66a	move.w	(a1),(Ctrl_2_Logical).w
000349b6 4e75	rts	
000349c8 10280023	move.b	ss_dplc_timer(a0),d0
000349cc 670e	beq.s	+
000349ce 5300	subq.b	#1,d0
000349d0 11400023	move.b	d0,ss_dplc_timer(a0)
000349d4 02000001	andi.b	#1,d0
000349d8 6702	beq.s	+
000349da 4e75	rts	
000349e0 47faffd6	lea	dword_349B8(pc),a3
000349e4 49f8f7de	lea	(Tails_LastLoadedDPLC).w,a4
000349e8 383c6000	move.w	#tiles_to_bytes(ArtTile_ArtNem_SpecialTails),d4
000349ec 7212	moveq	#$12,d1
000349ee 6000f0e8	bra.w	LoadSSPlayerDynPLC
000349f2 45f8f66a	lea	(Ctrl_2_Held_Logical).w,a2
000349f6 4a78ff70	tst.w	(Player_mode).w
000349fa 6704	beq.s	+
000349fc 45f8f602	lea	(Ctrl_1_Held_Logical).w,a2
00034a00 6100f230	bsr.w	SSPlayer_ChgJumpDir
00034a04 6100f200	bsr.w	SSObjectMoveAndFall
00034a08 6100f3aa	bsr.w	SSPlayer_DoLevelCollision
00034a0c 6100f436	bsr.w	SSPlayerSwapPositions
00034a10 6100f672	bsr.w	SSAnglePos
00034a14 6100f23e	bsr.w	SSPlayer_JumpAngle
00034a18 43f900034b1c	lea	(off_34B1C).l,a1
00034a1e 6100f4e0	bsr.w	SSPlayer_Animate
00034a22 60a4	bra.s	LoadSSTailsDynPLC
00034a24 45f8f66a	lea	(Ctrl_2_Held_Logical).w,a2
00034a28 4a78ff70	tst.w	(Player_mode).w
00034a2c 6704	beq.s	+
00034a2e 45f8f602	lea	(Ctrl_1_Held_Logical).w,a2
00034a32 6100f1fe	bsr.w	SSPlayer_ChgJumpDir
00034a36 6100f1ce	bsr.w	SSObjectMoveAndFall
00034a3a 6100f218	bsr.w	SSPlayer_JumpAngle
00034a3e 6100f374	bsr.w	SSPlayer_DoLevelCollision
00034a42 6100f400	bsr.w	SSPlayerSwapPositions
00034a46 6100f63c	bsr.w	SSAnglePos
00034a4a 6100f454	bsr.w	SSPlayer_SetAnimation
00034a4e 43f900034b1c	lea	(off_34B1C).l,a1
00034a54 6100f4aa	bsr.w	SSPlayer_Animate
00034a58 6000ff6e	bra.w	LoadSSTailsDynPLC
00034a5c 22680038	movea.l	ss_parent(a0),a1
00034a60 316900080008	move.w	x_pos(a1),x_pos(a0)
00034a66 3169000c000c	move.w	y_pos(a1),y_pos(a0)
00034a6c 116900010001	move.b	render_flags(a1),render_flags(a0)
00034a72 116900220022	move.b	status(a1),status(a0)
00034a78 1169001c001c	move.b	anim(a1),anim(a0)
00034a7e 10290018	move.b	priority(a1),d0
00034a82 5300	subq.b	#1,d0
00034a84 11400018	move.b	d0,priority(a0)
00034a88 0c280003001c	cmpi.b	#3,anim(a0)
00034a8e 640e	bhs.s	return_34A9E
00034a90 43f900034d86	lea	(Ani_obj88).l,a1
00034a9a 60000010	bra.w	LoadSSTailsTailsDynPLC
00034a9e 4e75	rts	
00034aac 22680038	movea.l	ss_parent(a0),a1
00034ab0 10290023	move.b	ss_dplc_timer(a1),d0
00034ab4 6708	beq.s	+
00034ab6 02000001	andi.b	#1,d0
00034aba 6702	beq.s	+
00034abc 4e75	rts	
00034ac2 7000	moveq	#0,d0
00034ac4 1028001a	move.b	mapping_frame(a0),d0
00034ac8 b038f7df	cmp.b	(TailsTails_LastLoadedDPLC).w,d0
00034acc 674c	beq.s	return_34B1A
00034ace 11c0f7df	move.b	d0,(TailsTails_LastLoadedDPLC).w
00034ad2 7c00	moveq	#0,d6
00034ad4 0c000007	cmpi.b	#7,d0
00034ad8 6d0a	blt.s	loc_34AE4
00034ada 5846	addq.w	#4,d6
00034adc 0c00000e	cmpi.b	#$E,d0
00034ae0 6d02	blt.s	loc_34AE4
00034ae2 5846	addq.w	#4,d6
00034ae4 2c3b60ba	move.l	dword_34AA0(pc,d6.w),d6
00034ae8 06400024	addi.w	#$24,d0
00034aec d040	add.w	d0,d0
00034aee 45f9000345fa	lea	(Obj09_MapRUnc_345FA).l,a2
00034af4 d4f20000	adda.w	(a2,d0.w),a2
00034af8 343c62c0	move.w	#tiles_to_bytes(ArtTile_ArtNem_SpecialTails_Tails),d2
00034afc 7200	moveq	#0,d1
00034afe 321a	move.w	(a2)+,d1
00034b00 3601	move.w	d1,d3
00034b02 e04b	lsr.w	#8,d3
00034b04 024300f0	andi.w	#$F0,d3
00034b08 06430010	addi.w	#$10,d3
00034b0c 02410fff	andi.w	#$FFF,d1
00034b10 e349	lsl.w	#1,d1
00034b12 d286	add.l	d6,d1
00034b14 4eb90000144e	jsr	(QueueDMATransfer).l
00034b1a 4e75	rts	
00034ea4 4ef9000164f4	jmp	(extractJmpToName("JmpTo43_DisplaySprite")).l
00034eaa 4ef900016544	jmp	(extractJmpToName("JmpTo23_AnimateSprite")).l
00034eb0 7000	moveq	#0,d0
00034eb2 10280024	move.b	routine(a0),d0
00034eb6 323b0006	move.w	Obj61_Index(pc,d0.w),d1
00034eba 4efb1002	jmp	Obj61_Index(pc,d1.w)
00034ec6 54280024	addq.b	#2,routine(a0)
00034eca 317c007f0008	move.w	#$7F,x_pos(a0)
00034ed0 317c0058000c	move.w	#$58,y_pos(a0)
00034ed6 217c000365080004	move.l	#Obj61_MapUnc_36508,mappings(a0)
00034ede 317c238a0002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialBomb,1,0),art_tile(a0)
00034ee4 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00034eea 117c00030018	move.b	#3,priority(a0)
00034ef0 117c00020020	move.b	#2,collision_flags(a0)
00034ef6 11fc00ffdb4d	move.b	#-1,(SS_unk_DB4D).w
00034efc 4a280026	tst.b	angle(a0)
00034f00 6b04	bmi.s	loc_34F06
00034f02 61000398	bsr.w	loc_3529C
00034f06 61000222	bsr.w	loc_3512A
00034f0a 61000294	bsr.w	loc_351A0
00034f0e 43f9000364ce	lea	(Ani_obj61).l,a1
00034f14 61000488	bsr.w	loc_3539E
00034f18 4a280001	tst.b	render_flags(a0)
00034f1c 6a08	bpl.s	return_34F26
00034f1e 61000008	bsr.w	loc_34F28
00034f26 4e75	rts	
00034f28 3c3c0008	move.w	#8,d6
00034f2c 61000172	bsr.w	Obj61_TestCollision
00034f30 6436	bcc.s	return_34F68
00034f32 137c00010021	move.b	#1,collision_property(a1)
00034f38 303c00cb	move.w	#SndID_SlowSmash,d0
00034f3c 4eb900001376	jsr	(PlaySound2).l
00034f42 117c00060024	move.b	#6,routine(a0)
00034f48 117c0000001b	move.b	#0,anim_frame(a0)
00034f4e 117c0000001e	move.b	#0,anim_frame_duration(a0)
00034f54 20280034	move.l	objoff_34(a0),d0
00034f58 670e	beq.s	return_34F68
00034f5a 217c000000000034	move.l	#0,objoff_34(a0)
00034f62 2240	movea.l	d0,a1
00034f64 50e9002a	st.b	objoff_2A(a1)
00034f68 4e75	rts	
00034f6a 117c000a001c	move.b	#$A,anim(a0)
00034f70 317c42b50002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialExplosion,2,0),art_tile(a0)
00034f76 61000018	bsr.w	loc_34F90
00034f7a 610001ae	bsr.w	loc_3512A
00034f7e 61000220	bsr.w	loc_351A0
00034f82 43f9000364ce	lea	(Ani_obj61).l,a1
00034f90 0c6800040030	cmpi.w	#4,objoff_30(a0)
00034f96 6406	bhs.s	return_34F9E
00034f98 117c00010018	move.b	#1,priority(a0)
00034f9e 4e75	rts	
00034fa0 7000	moveq	#0,d0
00034fa2 10280024	move.b	routine(a0),d0
00034fa6 323b0006	move.w	Obj60_Index(pc,d0.w),d1
00034faa 4efb1002	jmp	Obj60_Index(pc,d1.w)
00034fb6 54280024	addq.b	#2,routine(a0)
00034fba 317c007f0008	move.w	#$7F,x_pos(a0)
00034fc0 317c0058000c	move.w	#$58,y_pos(a0)
00034fc6 217c0003632a0004	move.l	#Obj5A_Obj5B_Obj60_MapUnc_3632A,mappings(a0)
00034fce 317c63220002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialRings,3,0),art_tile(a0)
00034fd4 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
00034fda 117c00030018	move.b	#3,priority(a0)
00034fe0 117c00010020	move.b	#1,collision_flags(a0)
00034fe6 4a280026	tst.b	angle(a0)
00034fea 6b04	bmi.s	loc_34FF0
00034fec 610002ae	bsr.w	loc_3529C
00034ff0 61000138	bsr.w	loc_3512A
00034ff4 610001aa	bsr.w	loc_351A0
00034ff8 6100003c	bsr.w	loc_35036
00034ffc 43f9000362d2	lea	(Ani_obj5B_obj60).l,a1
00035002 6100039a	bsr.w	loc_3539E
00035006 4a280001	tst.b	render_flags(a0)
0003500a 6b0015b0	bmi.w	JmpTo44_DisplaySprite
0003500e 4e75	rts	
00035010 117c000a001c	move.b	#$A,anim(a0)
00035016 317c477f0002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialStars,2,0),art_tile(a0)
0003501c 6100ff72	bsr.w	loc_34F90
00035020 61000108	bsr.w	loc_3512A
00035024 6100017a	bsr.w	loc_351A0
00035028 43f9000362d2	lea	(Ani_obj5B_obj60).l,a1
00035036 3c3c000a	move.w	#$A,d6
0003503a 61000064	bsr.w	Obj61_TestCollision
0003503e 645e	bcc.s	return_3509E
00035040 b3fcffffb000	cmpa.l	#MainCharacter,a1
00035046 6606	bne.s	loc_3504E
00035048 5278fe20	addq.w	#1,(Ring_count).w
0003504c 6004	bra.s	loc_35052
0003504e 5278fed0	addq.w	#1,(Ring_count_2P).w
00035052 5229003e	addq.b	#1,ss_rings_units(a1)
00035056 0c29000a003e	cmpi.b	#$A,ss_rings_units(a1)
0003505c 6d1c	blt.s	loc_3507A
0003505e 5229003d	addq.b	#1,ss_rings_tens(a1)
00035062 137c0000003e	move.b	#0,ss_rings_units(a1)
00035068 0c29000a003d	cmpi.b	#$A,ss_rings_tens(a1)
0003506e 6d0a	blt.s	loc_3507A
00035070 5229003c	addq.b	#1,ss_rings_hundreds(a1)
00035074 137c0000003d	move.b	#0,ss_rings_tens(a1)
0003507a 117c00060024	move.b	#6,routine(a0)
00035080 20280034	move.l	objoff_34(a0),d0
00035084 670e	beq.s	loc_35094
00035086 217c000000000034	move.l	#0,objoff_34(a0)
0003508e 2240	movea.l	d0,a1
00035090 50e9002a	st.b	objoff_2A(a1)
00035094 303c00b5	move.w	#SndID_Ring,d0
00035098 4eb900001376	jsr	(PlaySound2).l
0003509e 4e75	rts	
000350a0 0c280008001c	cmpi.b	#8,anim(a0)
000350a6 6634	bne.s	loc_350DC
000350a8 4a280020	tst.b	collision_flags(a0)
000350ac 672e	beq.s	loc_350DC
000350ae 45f8b000	lea	(MainCharacter).w,a2
000350b2 47f8b040	lea	(Sidekick).w,a3
000350b6 302a0034	move.w	objoff_34(a2),d0
000350ba b06b0034	cmp.w	objoff_34(a3),d0
000350be 650e	blo.s	loc_350CE
000350c0 224b	movea.l	a3,a1
000350c2 6100001e	bsr.w	loc_350E2
000350c6 6518	bcs.s	return_350E0
000350c8 224a	movea.l	a2,a1
000350ca 60000016	bra.w	loc_350E2
000350ce 224a	movea.l	a2,a1
000350d0 61000010	bsr.w	loc_350E2
000350d4 650a	bcs.s	return_350E0
000350d6 224b	movea.l	a3,a1
000350d8 60000008	bra.w	loc_350E2
000350dc 44fc0000	move	#0,ccr
000350e0 4e75	rts	
000350e2 4a11	tst.b	id(a1)
000350e4 6734	beq.s	loc_3511A
000350e6 0c2900020024	cmpi.b	#2,routine(a1)
000350ec 662c	bne.s	loc_3511A
000350ee 4a290025	tst.b	routine_secondary(a1)
000350f2 6626	bne.s	loc_3511A
000350f4 10290026	move.b	angle(a1),d0
000350f8 12280026	move.b	angle(a0),d1
000350fc 1401	move.b	d1,d2
000350fe d206	add.b	d6,d1
00035100 650e	bcs.s	loc_35110
00035102 9406	sub.b	d6,d2
00035104 650c	bcs.s	loc_35112
00035106 b001	cmp.b	d1,d0
00035108 6410	bhs.s	loc_3511A
0003510a b002	cmp.b	d2,d0
0003510c 6412	bhs.s	loc_35120
0003510e 600a	bra.s	loc_3511A
00035110 9406	sub.b	d6,d2
00035112 b001	cmp.b	d1,d0
00035114 650a	blo.s	loc_35120
00035116 b002	cmp.b	d2,d0
00035118 6406	bhs.s	loc_35120
0003511a 44fc0000	move	#0,ccr
0003511e 4e75	rts	
00035120 42280020	clr.b	collision_flags(a0)
00035124 44fc0001	move	#1,ccr
00035128 4e75	rts	
0003512a 082800070022	btst	#status.npc.no_balancing,status(a0)
00035130 663a	bne.s	loc_3516C
00035132 0c380004db0d	cmpi.b	#4,(SSTrack_drawing_index).w
00035138 660c	bne.s	loc_35146
0003513a 04a80000cccc0030	subi.l	#$CCCC,objoff_30(a0)
00035142 6f28	ble.s	loc_3516C
00035144 600a	bra.s	loc_35150
00035146 04a80000cccd0030	subi.l	#$CCCD,objoff_30(a0)
0003514e 6f1c	ble.s	loc_3516C
00035150 0c28000a001c	cmpi.b	#$A,anim(a0)
00035156 6712	beq.s	return_3516A
00035158 30280030	move.w	objoff_30(a0),d0
0003515c 0c40001d	cmpi.w	#$1D,d0
00035160 6f02	ble.s	loc_35164
00035162 701e	moveq	#$1E,d0
00035164 117b001a001c	move.b	byte_35180(pc,d0.w),anim(a0)
0003516a 4e75	rts	
0003516c 201f	move.l	(sp)+,d0
0003516e 20280034	move.l	objoff_34(a0),d0
00035172 6700144e	beq.w	JmpTo63_DeleteObject
00035176 2240	movea.l	d0,a1
00035178 50e9002a	st.b	objoff_2A(a1)
000351a0 3f07	move.w	d7,-(sp)
000351a2 7400	moveq	#0,d2
000351a4 7600	moveq	#0,d3
000351a6 7800	moveq	#0,d4
000351a8 7a00	moveq	#0,d5
000351aa 7c00	moveq	#0,d6
000351ac 7e00	moveq	#0,d7
000351ae 2278db82	movea.l	(SS_CurrentPerspective).w,a1
000351b2 30280030	move.w	objoff_30(a0),d0
000351b6 670000a0	beq.w	loc_35258
000351ba b059	cmp.w	(a1)+,d0
000351bc 6e00009a	bgt.w	loc_35258
000351c0 5340	subq.w	#1,d0
000351c2 d040	add.w	d0,d0
000351c4 3200	move.w	d0,d1
000351c6 d040	add.w	d0,d0
000351c8 d041	add.w	d1,d0
000351ca 4a38db0e	tst.b	(SSTrack_Orientation).w
000351ce 66000090	bne.w	loc_35260
000351d2 1c310004	move.b	4(a1,d0.w),d6
000351d6 1e310005	move.b	5(a1,d0.w),d7
000351da 670c	beq.s	loc_351E8
000351dc 12280026	move.b	angle(a0),d1
000351e0 b206	cmp.b	d6,d1
000351e2 6504	blo.s	loc_351E8
000351e4 b207	cmp.b	d7,d1
000351e6 6570	blo.s	loc_35258
000351e8 14310000	move.b	(a1,d0.w),d2
000351ec 18310002	move.b	2(a1,d0.w),d4
000351f0 1a310003	move.b	3(a1,d0.w),d5
000351f4 16310001	move.b	1(a1,d0.w),d3
000351f8 6a08	bpl.s	loc_35202
000351fa 0c030048	cmpi.b	#$48,d3
000351fe 6502	blo.s	loc_35202
00035200 4883	ext.w	d3
00035202 10280026	move.b	angle(a0),d0
0003520a c3c4	muls.w	d4,d1
0003520c c1c5	muls.w	d5,d0
0003520e e080	asr.l	#8,d0
00035210 e081	asr.l	#8,d1
00035212 d242	add.w	d2,d1
00035214 d043	add.w	d3,d0
00035216 31410008	move.w	d1,x_pos(a0)
0003521a 3140000c	move.w	d0,y_pos(a0)
0003521e 20280034	move.l	objoff_34(a0),d0
00035222 672a	beq.s	loc_3524E
00035224 2240	movea.l	d0,a1
00035226 10280026	move.b	angle(a0),d0
0003522e 3e04	move.w	d4,d7
00035230 e44f	lsr.w	#2,d7
00035232 d847	add.w	d7,d4
00035234 c3c4	muls.w	d4,d1
00035236 3e05	move.w	d5,d7
00035238 e447	asr.w	#2,d7
0003523a da47	add.w	d7,d5
0003523c c1c5	muls.w	d5,d0
0003523e e080	asr.l	#8,d0
00035240 e081	asr.l	#8,d1
00035242 d242	add.w	d2,d1
00035244 d043	add.w	d3,d0
00035246 33410008	move.w	d1,x_pos(a1)
0003524a 3340000c	move.w	d0,y_pos(a1)
0003524e 002800800001	ori.b	#1<<render_flags.on_screen,render_flags(a0)
00035254 3e1f	move.w	(sp)+,d7
00035256 4e75	rts	
00035258 0228007f0001	andi.b	#~(1<<render_flags.on_screen)&$FF,render_flags(a0)
0003525e 60f4	bra.s	loc_35254
00035260 123c0080	move.b	#$80,d1
00035264 1c310004	move.b	4(a1,d0.w),d6
00035268 1e310005	move.b	5(a1,d0.w),d7
0003526c 6714	beq.s	loc_35282
0003526e 9c41	sub.w	d1,d6
00035270 9e41	sub.w	d1,d7
00035272 4446	neg.w	d6
00035274 4447	neg.w	d7
00035276 12280026	move.b	angle(a0),d1
0003527a b207	cmp.b	d7,d1
0003527c 6504	blo.s	loc_35282
0003527e b206	cmp.b	d6,d1
00035280 65d6	blo.s	loc_35258
00035282 14310000	move.b	(a1,d0.w),d2
00035286 18310002	move.b	2(a1,d0.w),d4
0003528a 1a310003	move.b	3(a1,d0.w),d5
0003528e 04420100	subi.w	#$100,d2
00035292 4442	neg.w	d2
00035294 16310001	move.b	1(a1,d0.w),d3
00035298 6000ff5e	bra.w	loc_351F8
000352a0 6600008a	bne.w	return_3532C
000352a4 23480034	move.l	a0,objoff_34(a1)
000352a8 1290	move.b	id(a0),id(a1)
000352aa 137c00040024	move.b	#4,routine(a1)
000352b0 237c000344920004	move.l	#Obj63_MapUnc_34492,mappings(a1)
000352b8 337c623c0002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialFlatShadow,3,0),art_tile(a1)
000352be 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
000352c4 137c00050018	move.b	#5,priority(a1)
000352ca 10280026	move.b	angle(a0),d0
000352ce 0c000010	cmpi.b	#$10,d0
000352d2 6e12	bgt.s	loc_352E6
000352d4 08e900000001	bset	#render_flags.x_flip,render_flags(a1)
000352da 137c0002002b	move.b	#2,objoff_2B(a1)
000352e0 21490034	move.l	a1,objoff_34(a0)
000352e4 4e75	rts	
000352e6 0c000030	cmpi.b	#$30,d0
000352ea 6e12	bgt.s	loc_352FE
000352ec 08e900000001	bset	#render_flags.x_flip,render_flags(a1)
000352f2 137c0001002b	move.b	#1,objoff_2B(a1)
000352f8 21490034	move.l	a1,objoff_34(a0)
000352fc 4e75	rts	
000352fe 0c000050	cmpi.b	#$50,d0
00035302 6e0c	bgt.s	loc_35310
00035304 137c0000002b	move.b	#0,objoff_2B(a1)
0003530a 21490034	move.l	a1,objoff_34(a0)
0003530e 4e75	rts	
00035310 0c000070	cmpi.b	#$70,d0
00035314 6e0c	bgt.s	loc_35322
00035316 137c0001002b	move.b	#1,objoff_2B(a1)
0003531c 21490034	move.l	a1,objoff_34(a0)
00035320 4e75	rts	
00035322 137c0002002b	move.b	#2,objoff_2B(a1)
00035328 21490034	move.l	a1,objoff_34(a0)
0003532c 4e75	rts	
0003533a 4a28002a	tst.b	objoff_2A(a0)
0003533e 6600005a	bne.w	BranchTo_JmpTo63_DeleteObject
00035342 22680034	movea.l	objoff_34(a0),a1
00035346 4a290001	tst.b	render_flags(a1)
0003534a 6b02	bmi.s	loc_3534E
0003534c 4e75	rts	
0003534e 7009	moveq	#9,d0
00035350 9029001c	sub.b	anim(a1),d0
00035358 0c00000a	cmpi.b	#$A,d0
0003535c 6604	bne.s	loc_35362
0003535e 303c0009	move.w	#9,d0
00035362 3200	move.w	d0,d1
00035364 d040	add.w	d0,d0
00035366 d041	add.w	d1,d0
00035368 7200	moveq	#0,d1
0003536a 1228002b	move.b	objoff_2B(a0),d1
0003536e 671a	beq.s	loc_3538A
00035370 0c010001	cmpi.b	#1,d1
00035374 670a	beq.s	loc_35380
00035376 d041	add.w	d1,d0
00035378 317c629c0002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialSideShadow,3,0),art_tile(a0)
0003537e 6012	bra.s	loc_35392
00035380 d041	add.w	d1,d0
00035382 317c62620002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialDiagShadow,3,0),art_tile(a0)
00035388 6008	bra.s	loc_35392
0003538a d041	add.w	d1,d0
0003538c 317c623c0002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialFlatShadow,3,0),art_tile(a0)
00035392 1140001a	move.b	d0,mapping_frame(a0)
0003539e 5328001e	subq.b	#1,anim_frame_duration(a0)
000353a2 6a44	bpl.s	return_353E8
000353a4 7000	moveq	#0,d0
000353a6 1028001c	move.b	anim(a0),d0
000353aa d040	add.w	d0,d0
000353ac d2f10000	adda.w	(a1,d0.w),a1
000353b0 1151001e	move.b	(a1),anim_frame_duration(a0)
000353b4 7200	moveq	#0,d1
000353b6 1228001b	move.b	anim_frame(a0),d1
000353ba 10311001	move.b	1(a1,d1.w),d0
000353be 6a0a	bpl.s	loc_353CA
000353c0 117c0000001b	move.b	#0,anim_frame(a0)
000353c6 10290001	move.b	1(a1),d0
000353ca 0200007f	andi.b	#$7F,d0
000353ce 1140001a	move.b	d0,mapping_frame(a0)
000353d2 12280022	move.b	status(a0),d1
000353d6 02010003	andi.b	#1<<status.npc.x_flip|1<<status.npc.y_flip,d1
000353da 022800fc0001	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),render_flags(a0)
000353e0 83280001	or.b	d1,render_flags(a0)
000353e4 5228001b	addq.b	#1,anim_frame(a0)
000353e8 4e75	rts	
000353fe 7000	moveq	#0,d0
00035400 10280024	move.b	routine(a0),d0
00035404 323b0006	move.w	Obj5B_Index(pc,d0.w),d1
00035408 4efb1002	jmp	Obj5B_Index(pc,d1.w)
00035410 26680038	movea.l	ss_parent(a0),a3
00035414 7200	moveq	#0,d1
00035416 122b003d	move.b	ss_rings_tens(a3),d1
0003541a 670c	beq.s	loc_35428
00035422 323c000a	move.w	#$A,d1
00035426 6030	bra.s	loc_35458
00035428 122b003c	move.b	ss_rings_hundreds(a3),d1
0003542c 6712	beq.s	loc_35440
00035434 177c0009003d	move.b	#9,ss_rings_tens(a3)
0003543a 323c000a	move.w	#$A,d1
0003543e 6018	bra.s	loc_35458
00035440 122b003e	move.b	ss_rings_units(a3),d1
00035444 6716	beq.s	loc_3545C
00035446 177c0000003e	move.b	#0,ss_rings_units(a3)
0003544c 08010000	btst	#0,d1
00035450 6706	beq.s	loc_35458
00035456 6004	bra.s	loc_3545C
0003545c 0c130009	cmpi.b	#ObjID_SonicSS,id(a3)
00035460 6606	bne.s	loc_35468
00035462 9378fe20	sub.w	d1,(Ring_count).w
00035466 6004	bra.s	loc_3546C
00035468 9378fed0	sub.w	d1,(Ring_count_2P).w
0003546c 3401	move.w	d1,d2
0003546e 5342	subq.w	#1,d2
00035470 6b001150	bmi.w	JmpTo63_DeleteObject
00035474 2248	movea.l	a0,a1
00035476 6006	bra.s	loc_3547E
0003547c 6660	bne.s	loc_354DE
0003547e 12bc005b	move.b	#ObjID_SSRingSpill,id(a1)
00035482 137c00020024	move.b	#2,routine(a1)
00035488 237c0003632a0004	move.l	#Obj5A_Obj5B_Obj60_MapUnc_3632A,mappings(a1)
00035490 337c63220002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialRings,3,0),art_tile(a1)
00035496 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
0003549c 137c00050018	move.b	#5,priority(a1)
000354a2 137c00000020	move.b	#0,collision_flags(a1)
000354a8 137c0008001c	move.b	#8,anim(a1)
000354ae 336b00080008	move.w	x_pos(a3),x_pos(a1)
000354b4 336b000c000c	move.w	y_pos(a3),y_pos(a1)
000354ba 102b0026	move.b	angle(a3),d0
000354be 06000040	addi.b	#$40,d0
000354c2 d01a	add.b	(a2)+,d0
000354c4 4eb9000033b6	jsr	(CalcSine).l
000354ca c3fc0400	muls.w	#$400,d1
000354ce e081	asr.l	#8,d1
000354d0 33410010	move.w	d1,x_vel(a1)
000354d4 c1fc1000	muls.w	#$1000,d0
000354d8 e080	asr.l	#8,d0
000354da 33400012	move.w	d0,y_vel(a1)
000354de 51caff98	dbf	d2,loc_35478
000354e2 4e75	rts	
000354e8 066800800012	addi.w	#$80,y_vel(a0)
000354ee 6100002c	bsr.w	loc_3551C
000354f2 4a680008	tst.w	x_pos(a0)
000354f6 6b0010ca	bmi.w	JmpTo63_DeleteObject
000354fa 0c6801000008	cmpi.w	#screen_width_ss,x_pos(a0)
00035500 640010c0	bhs.w	JmpTo63_DeleteObject
00035504 0c6800e0000c	cmpi.w	#screen_height_ss,y_pos(a0)
0003550a 6e0010b6	bgt.w	JmpTo63_DeleteObject
0003550e 43f9000362d2	lea	(Ani_obj5B_obj60).l,a1
0003551c 4a680012	tst.w	y_vel(a0)
00035520 6b00000e	bmi.w	+
00035524 117c00000018	move.b	#0,priority(a0)
0003552a 117c0009001c	move.b	#9,anim(a0)
00035530 4e75	rts	
00035532 4e75	rts	
00035534 31fb0012fb76	move.w	word_35548(pc,d0.w),(Normal_palette_line4+$16).w
0003553a 31fb000efb78	move.w	word_35548+2(pc,d0.w),(Normal_palette_line4+$18).w
00035540 31fb000afb7a	move.w	word_35548+4(pc,d0.w),(Normal_palette_line4+$1A).w
00035546 4e75	rts	
00035554 7000	moveq	#0,d0
00035556 10280024	move.b	routine(a0),d0
0003555a 323b0006	move.w	Obj5A_Index(pc,d0.w),d1
0003555e 4efb1002	jmp	Obj5A_Index(pc,d1.w)
00035578 4a38db95	tst.b	(SS_NoCheckpoint_flag).w
0003557c 6662	bne.s	Obj5A_RingsMessageInit
0003557e 2278db28	movea.l	(SSTrack_last_mappings_copy).w,a1
00035582 b3fc000d1400	cmpa.l	#MapSpec_Straight4,a1
00035588 6d54	blt.s	++
0003558a b3fc000d19fc	cmpa.l	#MapSpec_Drop1,a1
00035590 6c4c	bge.s	++
00035592 7006	moveq	#6,d0
00035594 619e	bsr.s	SSRainbowPaletteColors
00035596 50f8db98	st.b	(SS_Checkpoint_Rainbow_flag).w
0003559a 7006	moveq	#6,d0
000355a0 6634	bne.s	+
000355a2 12bc005a	move.b	#ObjID_SSMessage,id(a1)
000355a6 137c00020024	move.b	#2,routine(a1)
000355ac 237c0003632a0004	move.l	#Obj5A_Obj5B_Obj60_MapUnc_3632A,mappings(a1)
000355b4 337c63220002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialRings,3,0),art_tile(a1)
000355ba 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
000355c0 137c00050018	move.b	#5,priority(a1)
000355c6 1340002a	move.b	d0,objoff_2A(a1)
000355ca 337c00000030	move.w	#0,objoff_30(a1)
000355d0 137c00ff001a	move.b	#-1,mapping_frame(a1)
000355de 4e75	rts	
000355e0 51f8db95	sf.b	(SS_NoCheckpoint_flag).w
000355e4 4a38fe00	tst.b	(SS_2p_Flag).w
000355e8 66000fd8	bne.w	JmpTo63_DeleteObject
000355ec 51f8dba6	sf.b	(SS_HideRingsToGo).w
000355f0 51f8dba7	sf.b	(SS_TriggerRingsToGo).w
000355f4 31fc0000dba2	move.w	#0,(SS_NoRingsTogoLifetime).w
000355fa 117c0000003a	move.b	#0,objoff_3A(a0)
0003561e 50f8dba7	st.b	(SS_TriggerRingsToGo).w
00035626 660000bc	bne.w	return_356E4
0003562a 237c000072d20004	move.l	#Obj5F_MapUnc_72D2,mappings(a1)
00035632 337c41fa0002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialHUD,2,0),art_tile(a1)
00035638 12bc005a	move.b	#ObjID_SSMessage,id(a1)
0003563c 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
00035642 137c00010018	move.b	#1,priority(a1)
00035648 08e900060001	bset	#render_flags.multi_sprite,render_flags(a1)
0003564e 137c0000000f	move.b	#0,mainspr_childsprites(a1)
00035654 137c000e0024	move.b	#$E,routine(a1)
0003565a 45e90010	lea	subspr_data(a1),a2
0003565e 323c005a	move.w	#$5A,d1
00035662 343c0038	move.w	#$38,d2
00035666 7000	moveq	#0,d0
00035668 7602	moveq	#2,d3
0003566c 34c2	move.w	d2,(a2)+
0003566e 34c0	move.w	d0,(a2)+
00035670 5141	subq.w	#8,d1
00035672 51cbfff6	dbf	d3,-
00035676 47faff8c	lea	Obj5A_RingsToGoText(pc),a3
0003567a 323c0068	move.w	#$68,d1
0003567e 343c0038	move.w	#$38,d2
00035684 6b1e	bmi.s	+
0003568a 6658	bne.s	return_356E4
0003568c 6158	bsr.s	Init_Obj5A
0003568e 137c00100024	move.b	#$10,routine(a1)
00035694 33410008	move.w	d1,x_pos(a1)
00035698 3342000c	move.w	d2,y_pos(a1)
0003569c 1340001a	move.b	d0,mapping_frame(a1)
000356a0 5041	addq.w	#8,d1
000356a2 60de	bra.s	-
000356a4 45faff6c	lea	Obj5A_ToGoOffsets(pc),a2
000356aa 6b1c	bmi.s	+
000356b0 6632	bne.s	return_356E4
000356b2 6132	bsr.s	Init_Obj5A
000356b4 137c00120024	move.b	#$12,routine(a1)
000356ba 335a002a	move.w	(a2)+,objoff_2A(a1)
000356be 3342000c	move.w	d2,y_pos(a1)
000356c2 1340001a	move.b	d0,mapping_frame(a1)
000356c6 60e0	bra.s	-
000356c8 101b	move.b	(a3)+,d0
000356ce 6614	bne.s	return_356E4
000356d0 6114	bsr.s	Init_Obj5A
000356d2 137c00140024	move.b	#$14,routine(a1)
000356d8 335a0008	move.w	(a2)+,x_pos(a1)
000356dc 3342000c	move.w	d2,y_pos(a1)
000356e0 1340001a	move.b	d0,mapping_frame(a1)
000356e4 4e75	rts	
000356e6 12bc005a	move.b	#ObjID_SSMessage,id(a1)
000356ea 237c00035e1e0004	move.l	#Obj5A_MapUnc_35E1E,mappings(a1)
000356f2 337c41a20002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialMessages,2,0),art_tile(a1)
000356f8 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
000356fe 137c00010018	move.b	#1,priority(a1)
00035704 4e75	rts	
00035706 11f8dba7dba6	move.b	(SS_TriggerRingsToGo).w,(SS_HideRingsToGo).w
0003570c 6606	bne.s	+
0003570e 6106	bsr.s	++
00035710 600000a0	bra.w	Obj5A_FlashMessage
00035714 4e75	rts	
00035716 3038fe20	move.w	(Ring_count).w,d0
0003571a 0c780001ff70	cmpi.w	#1,(Player_mode).w
00035720 6d08	blt.s	+
00035722 670a	beq.s	++
00035724 3038fed0	move.w	(Ring_count_2P).w,d0
00035728 6004	bra.s	++
0003572a d078fed0	add.w	(Ring_count_2P).w,d0
0003572e 9078db8c	sub.w	(SS_Ring_Requirement).w,d0
00035732 4440	neg.w	d0
00035734 6e18	bgt.s	+
00035736 7000	moveq	#0,d0
00035738 7401	moveq	#1,d2
00035740 0c78000cdba2	cmpi.w	#$C,(SS_NoRingsTogoLifetime).w
00035746 6532	blo.s	loc_3577A
00035748 50f8dba6	st.b	(SS_HideRingsToGo).w
0003574c 602c	bra.s	loc_3577A
0003574e 7200	moveq	#0,d1
00035750 3200	move.w	d0,d1
00035752 7000	moveq	#0,d0
00035754 0c410064	cmpi.w	#100,d1
00035758 6d0a	blt.s	+
0003575e 04410064	subi.w	#100,d1
00035762 6ef6	bgt.s	-
00035764 82fc000a	divu.w	#10,d1
00035768 e949	lsl.w	#4,d1
0003576a 8001	or.b	d1,d0
0003576c 4841	swap	d1
0003576e 8001	or.b	d1,d0
00035770 31fc0000dba2	move.w	#0,(SS_NoRingsTogoLifetime).w
00035776 51f8dba6	sf.b	(SS_HideRingsToGo).w
0003577a 7401	moveq	#1,d2
0003577c 43e80010	lea	subspr_data(a0),a1
00035780 31c0dba4	move.w	d0,(SS_RingsToGoBCD).w
00035784 3200	move.w	d0,d1
00035786 0241000f	andi.w	#$F,d1
0003578a 13410005	move.b	d1,sub2_mapframe-sub2_x_pos(a1)
0003578e e848	lsr.w	#4,d0
00035790 671a	beq.s	+
00035792 5242	addq.w	#1,d2
00035794 3200	move.w	d0,d1
00035796 0241000f	andi.w	#$F,d1
0003579a 1341000b	move.b	d1,sub3_mapframe-sub2_x_pos(a1)
0003579e e848	lsr.w	#4,d0
000357a0 670a	beq.s	+
000357a2 5242	addq.w	#1,d2
000357a4 0240000f	andi.w	#$F,d0
000357a8 13400011	move.b	d0,sub4_mapframe-sub2_x_pos(a1)
000357ac 1142000f	move.b	d2,mainspr_childsprites(a0)
000357b0 4e75	rts	
000357b2 4a38dba0	tst.b	(SS_NoCheckpointMsg_flag).w
000357b6 66000018	bne.w	+
000357ba 4a38dba6	tst.b	(SS_HideRingsToGo).w
000357be 6610	bne.s	+
000357c0 1038fe0f	move.b	(Vint_runcount+3).w,d0
000357c4 02000007	andi.b	#7,d0
000357c8 0c000006	cmpi.b	#6,d0
000357cc 65000dee	blo.w	JmpTo44_DisplaySprite
000357d0 4e75	rts	
000357d2 7000	moveq	#0,d0
000357d4 0c780002dba4	cmpi.w	#2,(SS_RingsToGoBCD).w
000357da 6402	bhs.s	+
000357dc 70f8	moveq	#-8,d0
000357de d068002a	add.w	objoff_2A(a0),d0
000357e2 31400008	move.w	d0,x_pos(a0)
000357e6 60ca	bra.s	Obj5A_FlashMessage
000357e8 7000	moveq	#0,d0
000357ea 0c780002dba4	cmpi.w	#2,(SS_RingsToGoBCD).w
000357f0 64c0	bhs.s	Obj5A_FlashMessage
000357f2 4e75	rts	
000357fe 0c380004db0d	cmpi.b	#4,(SSTrack_drawing_index).w
00035804 6636	bne.s	+
00035806 3028002c	move.w	objoff_2C(a0),d0
0003580a 117b00e8001a	move.b	Obj5A_Rainbow_Frames(pc,d0.w),mapping_frame(a0)
00035810 6b0000b2	bmi.w	++
0003581a 7000	moveq	#0,d0
0003581c 1028002a	move.b	objoff_2A(a0),d0
00035820 d040	add.w	d0,d0
00035822 d0680030	add.w	objoff_30(a0),d0
00035826 117b001e0009	move.b	Obj5A_Rainbow_Positions(pc,d0.w),1+x_pos(a0)
0003582c 117b0019000d	move.b	Obj5A_Rainbow_Positions+1(pc,d0.w),1+y_pos(a0)
00035832 0668000e0030	addi.w	#$E,objoff_30(a0)
0003583c 4a28001a	tst.b	mapping_frame(a0)
00035840 6a000d7a	bpl.w	JmpTo44_DisplaySprite
00035844 4e75	rts	
000358c4 0c6800e80008	cmpi.w	#$E8,x_pos(a0)
000358ca 66000cf6	bne.w	JmpTo63_DeleteObject
000358ce 7000	moveq	#0,d0
000358d0 6100fc62	bsr.w	SSRainbowPaletteColors
000358d4 51f8db98	sf.b	(SS_Checkpoint_Rainbow_flag).w
000358d8 50f8dba0	st.b	(SS_NoCheckpointMsg_flag).w
000358dc 4a38fe00	tst.b	(SS_2p_Flag).w
000358e0 67000096	beq.w	loc_35978
000358e4 303c00a1	move.w	#SndID_Checkpoint,d0
000358e8 4eb900001370	jsr	(PlaySound).l
000358ee 06380010db93	addi.b	#$10,(SS_2P_BCD_Score).w
000358f4 7c00	moveq	#0,d6
000358fc 303c000c	move.w	#$C,d0
00035900 3438fe20	move.w	(Ring_count).w,d2
00035904 b478fed0	cmp.w	(Ring_count_2P).w,d2
00035908 6e20	bgt.s	++
0003590a 6736	beq.s	+++
0003590c 04380010db93	subi.b	#$10,(SS_2P_BCD_Score).w
00035918 303c000e	move.w	#$E,d0
0003591c 4a38fff8	tst.b	(Graphics_Flags).w
00035920 6a04	bpl.s	+
00035922 303c0014	move.w	#$14,d0
00035926 3c3c2000	move.w	#palette_line_1,d6
0003592a 363c0080	move.w	#$80,d3
0003592e 61000186	bsr.w	Obj5A_CreateCheckpointWingedHand
00035932 dd690002	add.w	d6,art_tile(a1)
00035936 dd6a0002	add.w	d6,art_tile(a2)
0003593a 6100046e	bsr.w	Obj5A_PrintPhrase
00035942 04380010db93	subi.b	#$10,(SS_2P_BCD_Score).w
00035948 303c0010	move.w	#$10,d0
0003594c 6100045c	bsr.w	Obj5A_PrintPhrase
00035950 0c380003fe17	cmpi.b	#3,(Current_Special_Act).w
00035956 670e	beq.s	+
00035958 317c0046002a	move.w	#$46,objoff_2A(a0)
0003595e 117c000a0024	move.b	#$A,routine(a0)
00035964 4e75	rts	
00035966 61000112	bsr.w	Obj5A_VSReset
0003596a 317c0046002a	move.w	#$46,objoff_2A(a0)
00035970 117c000c0024	move.b	#$C,routine(a0)
00035976 4e75	rts	
00035978 323c0006	move.w	#6,d1
0003597c 303c00ed	move.w	#SndID_Error,d0
00035980 3438fe20	move.w	(Ring_count).w,d2
00035984 d478fed0	add.w	(Ring_count_2P).w,d2
00035988 b478db8c	cmp.w	(SS_Ring_Requirement).w,d2
0003598c 6d08	blt.s	+
0003598e 323c0004	move.w	#4,d1
00035992 303c00a1	move.w	#SndID_Checkpoint,d0
00035996 4eb900001370	jsr	(PlaySound).l
0003599c 3001	move.w	d1,d0
0003599e 610003b2	bsr.w	Obj5A_PrintCheckpointMessage
000359ac 6702	beq.s	+
000359ae 4e75	rts	
000359b0 303c000a	move.w	#$A,d0
000359b4 610003f4	bsr.w	Obj5A_PrintPhrase
000359c2 6702	beq.s	+
000359c4 4e75	rts	
000359c6 50f8db86	st.b	(SS_Check_Rings_flag).w
000359ca 60000800	bra.w	SSClearObjs
000359ce 0c280015001a	cmpi.b	#$15,mapping_frame(a0)
000359d4 6644	bne.s	++
000359d6 30280030	move.w	objoff_30(a0),d0
000359da 4a28002e	tst.b	objoff_2E(a0)
000359de 661e	bne.s	+
000359ea b068000c	cmp.w	y_pos(a0),d0
000359ee 6d2a	blt.s	++
000359f4 3140000c	move.w	d0,y_pos(a0)
000359f8 50e8002e	st.b	objoff_2E(a0)
000359fc 601c	bra.s	++
00035a08 b068000c	cmp.w	y_pos(a0),d0
00035a0c 6e0c	bgt.s	+
00035a12 3140000c	move.w	d0,y_pos(a0)
00035a16 51e8002e	sf.b	objoff_2E(a0)
00035a20 66000b9a	bne.w	JmpTo44_DisplaySprite
00035a24 4a28002f	tst.b	objoff_2F(a0)
00035a28 6718	beq.s	+
00035a2a 303c00f9	move.w	#MusID_FadeOut,d0
00035a2e 4eb90000135e	jsr	(PlayMusic).l
00035a34 317c0030002a	move.w	#$30,objoff_2A(a0)
00035a3a 117c000c0024	move.b	#$C,routine(a0)
00035a40 4e75	rts	
00035a42 0c280015001a	cmpi.b	#$15,mapping_frame(a0)
00035a48 66000b78	bne.w	JmpTo63_DeleteObject
00035a4c 4a680030	tst.w	objoff_30(a0)
00035a50 67000b70	beq.w	JmpTo63_DeleteObject
00035a54 4a38fe00	tst.b	(SS_2p_Flag).w
00035a58 6718	beq.s	+
00035a5a 6100001e	bsr.w	Obj5A_VSReset
00035a5e 0c380003fe17	cmpi.b	#3,(Current_Special_Act).w
00035a64 67c4	beq.s	-
00035a66 303c000a	move.w	#$A,d0
00035a6a 6100033e	bsr.w	Obj5A_PrintPhrase
00035a72 6100026e	bsr.w	Obj5A_CreateRingReqMessage
00035a7a 47f8ffa0	lea	(SS2p_RingBuffer).w,a3
00035a7e 7000	moveq	#0,d0
00035a80 1038fe17	move.b	(Current_Special_Act).w,d0
00035a84 5340	subq.w	#1,d0
00035a86 d040	add.w	d0,d0
00035a88 d040	add.w	d0,d0
00035a8a 37b8fe200000	move.w	(Ring_count).w,(a3,d0.w)
00035a90 37b8fed00002	move.w	(Ring_count_2P).w,2(a3,d0.w)
00035a96 31fc0000fe20	move.w	#0,(Ring_count).w
00035a9c 31fc0000fed0	move.w	#0,(Ring_count_2P).w
00035aa2 7000	moveq	#0,d0
00035aa4 31c0b03c	move.w	d0,(MainCharacter+ss_rings_base).w
00035aa8 11c0b03e	move.b	d0,(MainCharacter+ss_rings_units).w
00035aac 31c0b07c	move.w	d0,(Sidekick+ss_rings_base).w
00035ab0 11c0b07e	move.b	d0,(Sidekick+ss_rings_units).w
00035ab4 4e75	rts	
00035ab6 383c0048	move.w	#$48,d4
00035aba 4a38fe00	tst.b	(SS_2p_Flag).w
00035abe 6704	beq.s	+
00035ac0 383c001c	move.w	#$1C,d4
00035ac8 6600008e	bne.w	+
00035acc 12bc005a	move.b	#ObjID_SSMessage,id(a1)
00035ad0 137c00060024	move.b	#6,routine(a1)
00035ad6 237c00035e1e0004	move.l	#Obj5A_MapUnc_35E1E,mappings(a1)
00035ade 337c21a20002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialMessages,1,0),art_tile(a1)
00035ae4 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
00035aea 137c00010018	move.b	#1,priority(a1)
00035af0 33430008	move.w	d3,x_pos(a1)
00035af4 3344000c	move.w	d4,y_pos(a1)
00035af8 337c0046002a	move.w	#$46,objoff_2A(a1)
00035afe 137c0014001a	move.b	#$14,mapping_frame(a1)
00035b04 2449	movea.l	a1,a2
00035b0a 664c	bne.s	+
00035b0c 12bc005a	move.b	#ObjID_SSMessage,id(a1)
00035b10 137c00060024	move.b	#6,routine(a1)
00035b16 237c00035e1e0004	move.l	#Obj5A_MapUnc_35E1E,mappings(a1)
00035b1e 337c21a20002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialMessages,1,0),art_tile(a1)
00035b24 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
00035b2a 137c00000018	move.b	#0,priority(a1)
00035b30 33430008	move.w	d3,x_pos(a1)
00035b34 3344000c	move.w	d4,y_pos(a1)
00035b38 33440030	move.w	d4,objoff_30(a1)
00035b3c 337c0046002a	move.w	#$46,objoff_2A(a1)
00035b42 137c0015001a	move.b	#$15,mapping_frame(a1)
00035b48 0c400006	cmpi.w	#6,d0
00035b4c 660a	bne.s	+
00035b4e 50e9002f	st.b	objoff_2F(a1)
00035b52 08e900010001	bset	#render_flags.y_flip,render_flags(a1)
00035b58 4e75	rts	
00035b60 66000a5a	bne.w	JmpTo44_DisplaySprite
00035b64 0c280013001a	cmpi.b	#$13,mapping_frame(a0)
00035b6a 6e000a56	bgt.w	JmpTo63_DeleteObject
00035b6e 117c00080024	move.b	#8,routine(a0)
00035b74 317c00080014	move.w	#8,objoff_14(a0)
00035b7a 32280008	move.w	x_pos(a0),d1
00035b7e 04410080	subi.w	#$80,d1
00035b82 3428000c	move.w	y_pos(a0),d2
00035b86 04420070	subi.w	#$70,d2
00035b8e 11400026	move.b	d0,angle(a0)
00035b96 7000	moveq	#0,d0
00035b98 10280026	move.b	angle(a0),d0
00035ba0 c1e80014	muls.w	objoff_14(a0),d0
00035ba4 c3e80014	muls.w	objoff_14(a0),d1
00035ba8 e040	asr.w	#8,d0
00035baa e041	asr.w	#8,d1
00035bac d3680008	add.w	d1,x_pos(a0)
00035bb0 d168000c	add.w	d0,y_pos(a0)
00035bb4 0c6800000008	cmpi.w	#0,x_pos(a0)
00035bba 6d000a06	blt.w	JmpTo63_DeleteObject
00035bbe 0c6801000008	cmpi.w	#$100,x_pos(a0)
00035bc4 6e0009fc	bgt.w	JmpTo63_DeleteObject
00035bc8 0c680000000c	cmpi.w	#0,y_pos(a0)
00035bce 6d0009f2	blt.w	JmpTo63_DeleteObject
00035bda 6636	bne.s	+
00035bdc 1340001a	move.b	d0,mapping_frame(a1)
00035be0 237c000072d20004	move.l	#Obj5F_MapUnc_72D2,mappings(a1)
00035be8 337c41fa0002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialHUD,2,0),art_tile(a1)
00035bee 12bc005a	move.b	#ObjID_SSMessage,id(a1)
00035bf2 137c00040024	move.b	#4,routine(a1)
00035bf8 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
00035bfe 137c00010018	move.b	#1,priority(a1)
00035c04 33410008	move.w	d1,x_pos(a1)
00035c08 3342000c	move.w	d2,y_pos(a1)
00035c0c 337c0046002a	move.w	#$46,objoff_2A(a1)
00035c12 4e75	rts	
00035c14 47fa004c	lea	SSMessage_TextFrames(pc),a3
00035c18 d6f30000	adda.w	(a3,d0.w),a3
00035c1e 6b40	bmi.s	+
00035c24 663a	bne.s	+
00035c26 1340001a	move.b	d0,mapping_frame(a1)
00035c2a 237c00035e1e0004	move.l	#Obj5A_MapUnc_35E1E,mappings(a1)
00035c32 337c41a20002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialMessages,2,0),art_tile(a1)
00035c38 12bc005a	move.b	#ObjID_SSMessage,id(a1)
00035c3c 137c00040024	move.b	#4,routine(a1)
00035c42 137c00040001	move.b	#1<<render_flags.level_fg,render_flags(a1)
00035c48 137c00010018	move.b	#1,priority(a1)
00035c4e 33410008	move.w	d1,x_pos(a1)
00035c52 3342000c	move.w	d2,y_pos(a1)
00035c56 337c0046002a	move.w	#$46,objoff_2A(a1)
00035c5c 5041	addq.w	#8,d1
00035c5e 60bc	bra.s	-
00035c60 4e75	rts	
00035ce2 7000	moveq	#0,d0
00035ce4 323c0054	move.w	#$54,d1
00035ce8 343c006c	move.w	#$6C,d2
00035cec 6100ff26	bsr.w	Obj5A_PrintWord
00035cf4 3801	move.w	d1,d4
00035cf6 3a02	move.w	d2,d5
00035cf8 3642	movea.w	d2,a3
00035cfa 323c0080	move.w	#$80,d1
00035cfe 0c420002	cmpi.w	#2,d2
00035d02 6704	beq.s	+
00035d0e e84c	lsr.w	#4,d4
00035d10 0246000f	andi.w	#$F,d6
00035d14 1006	move.b	d6,d0
00035d16 4845	swap	d5
00035d18 6100febc	bsr.w	Obj5A_PrintNumber
00035d20 4845	swap	d5
00035d22 51cdffe8	dbf	d5,-
00035d26 7002	moveq	#2,d0
00035d28 45f900035dde	lea	(SSMessage_TextPhrases).l,a2
00035d2e d4f20000	adda.w	(a2,d0.w),a2
00035d32 343c006c	move.w	#$6C,d2
00035d36 323c0084	move.w	#$84,d1
00035d3a b6fc0002	cmpa.w	#2,a3
00035d3e 6604	bne.s	+
00035d46 101a	move.b	(a2)+,d0
00035d48 6b06	bmi.s	+
00035d4a 6100fec8	bsr.w	Obj5A_PrintWord
00035d4e 60f4	bra.s	-
00035d50 4e75	rts	
00035d52 363c0080	move.w	#$80,d3
00035d56 6100fd5e	bsr.w	Obj5A_CreateCheckpointWingedHand
00035d5a 0c780001ff70	cmpi.w	#1,(Player_mode).w
00035d60 6f0c	ble.s	loc_35D6E
00035d62 066920000002	addi.w	#palette_line_1,art_tile(a1)
00035d68 066a20000002	addi.w	#palette_line_1,art_tile(a2)
00035d6e 323c0074	move.w	#$74,d1
00035d72 343c0068	move.w	#$68,d2
00035d76 45f900035dde	lea	(SSMessage_TextPhrases).l,a2
00035d7c d4f20000	adda.w	(a2,d0.w),a2
00035d80 0c000004	cmpi.b	#4,d0
00035d84 6704	beq.s	+
00035d86 323c005e	move.w	#$5E,d1
00035d8c 101a	move.b	(a2)+,d0
00035d8e 6b18	bmi.s	++
00035d90 0c000002	cmpi.b	#2,d0
00035d94 6608	bne.s	+
00035d96 323c005e	move.w	#$5E,d1
00035d9a 343c007e	move.w	#$7E,d2
00035d9e 6100fe74	bsr.w	Obj5A_PrintWord
00035da6 60e2	bra.s	-
00035da8 4e75	rts	
00035daa 3600	move.w	d0,d3
00035dac 5143	subq.w	#8,d3
00035dae e24b	lsr.w	#1,d3
00035db0 7200	moveq	#0,d1
00035db2 123b3022	move.b	byte_35DD6(pc,d3.w),d1
00035db6 343c0048	move.w	#$48,d2
00035dba 45f900035dde	lea	(SSMessage_TextPhrases).l,a2
00035dc0 d4f20000	adda.w	(a2,d0.w),a2
00035dc6 101a	move.b	(a2)+,d0
00035dc8 6b0a	bmi.s	+
00035dca 6100fe48	bsr.w	Obj5A_PrintWord
00035dd2 60f0	bra.s	-
00035dd4 4e75	rts	
00035f76 d040	add.w	d0,d0
00035f78 3200	move.w	d0,d1
00035f7a d040	add.w	d0,d0
00035f7c d041	add.w	d1,d0
00035f7e 31fb0012fb76	move.w	word_35F92(pc,d0.w),(Normal_palette_line4+$16).w
00035f84 31fb000efb78	move.w	word_35F92+2(pc,d0.w),(Normal_palette_line4+$18).w
00035f8a 31fb000afb7a	move.w	word_35F92+4(pc,d0.w),(Normal_palette_line4+$1A).w
00035f90 4e75	rts	
00035fbc 7000	moveq	#0,d0
00035fbe 10280024	move.b	routine(a0),d0
00035fc2 323b0006	move.w	Obj59_Index(pc,d0.w),d1
00035fc6 4efb1002	jmp	Obj59_Index(pc,d1.w)
00035fd4 50f8dba0	st.b	(SS_NoCheckpointMsg_flag).w
00035fd8 50f8db87	st.b	(SS_Pause_Only_flag).w
00035fe2 0c68ffc4002a	cmpi.w	#-$3C,objoff_2A(a0)
00035fe8 6702	beq.s	+
00035fea 4e75	rts	
00035fec 7000	moveq	#0,d0
00035fee 1038fe16	move.b	(Current_Special_Stage).w,d0
00035ff2 6182	bsr.s	loc_35F76
00035ff4 54280024	addq.b	#2,routine(a0)
00035ff8 217c0003625a0004	move.l	#Obj59_MapUnc_3625A,mappings(a0)
00036000 317c61740002	move.w	#make_art_tile(ArtTile_ArtNem_SpecialEmerald,3,0),art_tile(a0)
00036006 117c00040001	move.b	#1<<render_flags.level_fg,render_flags(a0)
0003600c 117c00040018	move.b	#4,priority(a0)
00036012 317c00360030	move.w	#$36,objoff_30(a0)
00036018 117c00400026	move.b	#$40,angle(a0)
0003601e 6100f27c	bsr.w	loc_3529C
00036022 610000cc	bsr.w	loc_360F0
00036026 6100f102	bsr.w	loc_3512A
0003602a 61000010	bsr.w	loc_3603C
0003602e 43f900036228	lea	(off_36228).l,a1
00036034 6100f368	bsr.w	loc_3539E
0003603c 3f07	move.w	d7,-(sp)
0003603e 7400	moveq	#0,d2
00036040 7600	moveq	#0,d3
00036042 7800	moveq	#0,d4
00036044 7a00	moveq	#0,d5
00036046 7c00	moveq	#0,d6
00036048 7e00	moveq	#0,d7
0003604a 2278db82	movea.l	(SS_CurrentPerspective).w,a1
00036054 30280030	move.w	objoff_30(a0),d0
00036058 5340	subq.w	#1,d0
0003605a d040	add.w	d0,d0
0003605c 3200	move.w	d0,d1
0003605e d040	add.w	d0,d0
00036060 d041	add.w	d1,d0
00036062 14310000	move.b	(a1,d0.w),d2
00036066 16310001	move.b	1(a1,d0.w),d3
0003606a 18310002	move.b	2(a1,d0.w),d4
0003606e 1a310003	move.b	3(a1,d0.w),d5
00036072 3c05	move.w	d5,d6
00036074 4845	swap	d5
00036076 3a06	move.w	d6,d5
00036078 3c04	move.w	d4,d6
0003607a 4844	swap	d4
0003607c 3806	move.w	d6,d4
0003607e 6a08	bpl.s	loc_36088
00036080 0c030048	cmpi.b	#$48,d3
00036084 6502	blo.s	loc_36088
00036086 4883	ext.w	d3
00036088 3c04	move.w	d4,d6
0003608a d844	add.w	d4,d4
0003608c d846	add.w	d6,d4
0003608e e44c	lsr.w	#2,d4
00036090 3c05	move.w	d5,d6
00036092 da45	add.w	d5,d5
00036094 da46	add.w	d6,d5
00036096 e44d	lsr.w	#2,d5
00036098 10280026	move.b	angle(a0),d0
000360a0 c3c4	muls.w	d4,d1
000360a2 c1c5	muls.w	d5,d0
000360a4 e080	asr.l	#8,d0
000360a6 e081	asr.l	#8,d1
000360a8 d242	add.w	d2,d1
000360aa d043	add.w	d3,d0
000360ac 31410008	move.w	d1,x_pos(a0)
000360b0 3140000c	move.w	d0,y_pos(a0)
000360b4 1141003a	move.b	d1,objoff_3A(a0)
000360b8 1140003b	move.b	d0,objoff_3B(a0)
000360bc 4844	swap	d4
000360be 4845	swap	d5
000360c0 22680034	movea.l	objoff_34(a0),a1
000360c4 10280026	move.b	angle(a0),d0
000360cc 3c04	move.w	d4,d6
000360ce e44e	lsr.w	#2,d6
000360d0 d846	add.w	d6,d4
000360d2 c3c4	muls.w	d4,d1
000360d4 3c05	move.w	d5,d6
000360d6 e446	asr.w	#2,d6
000360d8 da46	add.w	d6,d5
000360da c1c5	muls.w	d5,d0
000360dc e080	asr.l	#8,d0
000360de e081	asr.l	#8,d1
000360e0 d242	add.w	d2,d1
000360e2 d043	add.w	d3,d0
000360e4 33410008	move.w	d1,x_pos(a1)
000360e8 3340000c	move.w	d0,y_pos(a1)
000360ec 3e1f	move.w	(sp)+,d7
000360ee 4e75	rts	
000360f0 0c280003001c	cmpi.b	#3,anim(a0)
000360f6 6548	blo.s	return_36140
000360f8 4a28003e	tst.b	objoff_3E(a0)
000360fc 660e	bne.s	loc_3610C
000360fe 303c00f9	move.w	#MusID_FadeOut,d0
00036102 4eb90000135e	jsr	(PlayMusic).l
00036108 50e8003e	st.b	objoff_3E(a0)
0003610c 0c280006001c	cmpi.b	#6,anim(a0)
00036112 652c	blo.s	return_36140
00036114 3438fe20	move.w	(Ring_count).w,d2
00036118 d478fed0	add.w	(Ring_count_2P).w,d2
0003611c b478db8c	cmp.w	(SS_Ring_Requirement).w,d2
00036120 6d20	blt.s	loc_36142
00036122 0c280009001c	cmpi.b	#9,anim(a0)
00036128 6516	blo.s	return_36140
0003612a 317c0063002a	move.w	#$63,objoff_2A(a0)
00036130 117c00080024	move.b	#8,routine(a0)
00036136 303c009d	move.w	#MusID_Emerald,d0
0003613a 4eb90000135e	jsr	(PlayMusic).l
00036140 4e75	rts	
00036142 21fc00000000db12	move.l	#0,(SS_New_Speed_Factor).w
0003614a 117c00060024	move.b	#6,routine(a0)
00036150 317c004f002a	move.w	#$4F,objoff_2A(a0)
00036156 303c0006	move.w	#6,d0
0003615a 6100fc12	bsr.w	loc_35D6E
0003615e 4e75	rts	
00036166 6a000454	bpl.w	JmpTo44_DisplaySprite
0003616a 50f8db86	st.b	(SS_Check_Rings_flag).w
0003616e 6000005c	bra.w	SSClearObjs
00036178 6a2a	bpl.s	loc_361A4
0003617a 7000	moveq	#0,d0
0003617c 1038fe16	move.b	(Current_Special_Stage).w,d0
00036180 41f8ffb2	lea	(Got_Emeralds_array).w,a0
00036184 50f00000	st.b	(a0,d0.w)
00036188 50f8ffb0	st.b	(Got_Emerald).w
00036198 50f8db86	st.b	(SS_Check_Rings_flag).w
0003619c 6100002e	bsr.w	SSClearObjs
000361a0 201f	move.l	(sp)+,d0
000361a2 4e75	rts	
000361aa 7000	moveq	#0,d0
000361ac 7400	moveq	#0,d2
000361ae 1428003b	move.b	objoff_3B(a0),d2
000361b2 1028003c	move.b	objoff_3C(a0),d0
000361b6 e448	lsr.w	#2,d0
000361b8 02400003	andi.w	#3,d0
000361bc d43b000a	add.b	byte_361C8(pc,d0.w),d2
000361c0 3142000c	move.w	d2,y_pos(a0)
000361cc 227c00ffb000	movea.l	#(Object_RAM&$FFFFFF),a1
000361d2 303c01ff	move.w	#(Object_RAM_End-Object_RAM)/$10-1,d0
000361d6 7200	moveq	#0,d1
000361d8 22c1	move.l	d1,(a1)+
000361da 22c1	move.l	d1,(a1)+
000361dc 22c1	move.l	d1,(a1)+
000361de 22c1	move.l	d1,(a1)+
000361e0 51c8fff6	dbf	d0,loc_361D8
000361e4 43f8f800	lea	(Sprite_Table).w,a1
000361e8 7000	moveq	#0,d0
000361ea 323c00a0	move.w	#bytesToLcnt((Sprite_Table_End+4-Sprite_Table) - ((Sprite_Table)&1)),d1
000361ee 22c0	move.l	d0,(a1)+
000361f0 51c9fffc	dbf	d1,.loop
000361f4 4e75	rts	
000361f6 0c38000bdb0d	cmpi.b	#$B,(SSTrack_drawing_index).w
000361fc 650a	blo.s	loc_36208
000361fe 04a8000044450030	subi.l	#$4445,objoff_30(a0)
00036206 6008	bra.s	loc_36210
00036208 04a8000044440030	subi.l	#$4444,objoff_30(a0)
00036210 30280030	move.w	objoff_30(a0),d0
00036214 0c40001d	cmpi.w	#$1D,d0
00036218 6f02	ble.s	+
0003621a 701e	moveq	#$1E,d0
00036220 11710000001c	move.b	(a1,d0.w),anim(a0)
00036226 4e75	rts	
000365bc 4ef9000164f4	jmp	(extractJmpToName("JmpTo44_DisplaySprite")).l
000365c2 4ef9000164e6	jmp	(extractJmpToName("JmpTo63_DeleteObject")).l
000365c8 4ef900016544	jmp	(extractJmpToName("JmpTo24_AnimateSprite")).l
000365ce 4ef9000076fa	jmp	(extractJmpToName("JmpTo_SSStartNewAct")).l
000365d4 4ef90000364e	jmp	(extractJmpToName("JmpTo_CalcAngle")).l
000365da 4ef9000033b6	jmp	(extractJmpToName("JmpTo14_CalcSine")).l
000365e0 4ef900016380	jmp	(extractJmpToName("JmpTo7_ObjectMoveAndFall")).l
000365e6 4ef900006fa4	jmp	(extractJmpToName("JmpTo_SSAllocateObjectAfterCurrent")).l
000365ec 4ef900006f8e	jmp	(extractJmpToName("JmpTo2_SSAllocateObject")).l
000365f4 7000	moveq	#0,d0
000365f6 10280028	move.b	subtype(a0),d0
000365fa 303b002c	move.w	SubObjData_Index(pc,d0.w),d0
000365fe 43fb0028	lea	SubObjData_Index(pc,d0.w),a1
00036602 21590004	move.l	(a1)+,mappings(a0)
00036606 31590002	move.w	(a1)+,art_tile(a0)
0003660a 4eb900016d6e	jsr	(Adjust2PArtPointer).l
00036610 1019	move.b	(a1)+,d0
00036612 81280001	or.b	d0,render_flags(a0)
00036616 11590018	move.b	(a1)+,priority(a0)
0003661a 11590019	move.b	(a1)+,width_pixels(a0)
0003661e 11510020	move.b	(a1),collision_flags(a0)
00036622 54280024	addq.b	#2,routine(a0)
00036626 4e75	rts	
000366d6 7000	moveq	#0,d0
000366d8 7200	moveq	#0,d1
000366da 43f8b000	lea	(MainCharacter).w,a1
000366de 34280008	move.w	x_pos(a0),d2
000366e2 94690008	sub.w	x_pos(a1),d2
000366e6 3802	move.w	d2,d4
000366e8 6a02	bpl.s	.skip
000366ea 4444	neg.w	d4
000366ec 45f8b040	lea	(Sidekick).w,a2
000366f0 36280008	move.w	x_pos(a0),d3
000366f4 966a0008	sub.w	x_pos(a2),d3
000366f8 3a03	move.w	d3,d5
000366fa 6a02	bpl.s	.skip
000366fc 4445	neg.w	d5
000366fe b845	cmp.w	d5,d4
00036700 6304	bls.s	+
00036702 224a	movea.l	a2,a1
00036704 3403	move.w	d3,d2
00036706 4a42	tst.w	d2
00036708 6a02	bpl.s	+
0003670a 5440	addq.w	#2,d0
0003670c 3628000c	move.w	y_pos(a0),d3
00036710 9669000c	sub.w	y_pos(a1),d3
00036714 6402	bhs.s	+
00036716 5441	addq.w	#2,d1
00036718 4e75	rts	
0003671a 34280010	move.w	x_vel(a0),d2
0003671e 6a0c	bpl.s	+
00036720 4440	neg.w	d0
00036722 b440	cmp.w	d0,d2
00036724 640c	bhs.s	++
00036726 3400	move.w	d0,d2
00036728 60000008	bra.w	++
0003672c b440	cmp.w	d0,d2
0003672e 6302	bls.s	+
00036730 3400	move.w	d0,d2
00036732 36280012	move.w	y_vel(a0),d3
00036736 6a0c	bpl.s	+
00036738 4441	neg.w	d1
0003673a b641	cmp.w	d1,d3
0003673c 640c	bhs.s	++
0003673e 3601	move.w	d1,d3
00036740 60000008	bra.w	++
00036744 b641	cmp.w	d1,d3
00036746 6302	bls.s	+
00036748 3601	move.w	d1,d3
0003674a 31420010	move.w	d2,x_vel(a0)
0003674e 31430012	move.w	d3,y_vel(a0)
00036752 4e75	rts	
00036754 7000	moveq	#0,d0
00036756 31400010	move.w	d0,x_vel(a0)
0003675a 31400012	move.w	d0,y_vel(a0)
0003675e 4e75	rts	
00036760 34280008	move.w	x_pos(a0),d2
00036764 d440	add.w	d0,d2
00036766 33420008	move.w	d2,x_pos(a1)
0003676a 3628000c	move.w	y_pos(a0),d3
0003676e d641	add.w	d1,d3
00036770 3343000c	move.w	d3,y_pos(a1)
00036774 4e75	rts	
00036776 3038f736	move.w	(Tornado_Velocity_X).w,d0
0003677a d1680008	add.w	d0,x_pos(a0)
0003677e 3038f738	move.w	(Tornado_Velocity_Y).w,d0
00036782 d168000c	add.w	d0,y_pos(a0)
00036786 4e75	rts	
00036788 4a78ffd8	tst.w	(Two_player_mode).w
0003678c 6706	beq.s	+
0003678e 4ef9000164f4	jmp	(DisplaySprite).l
00036794 30280008	move.w	x_pos(a0),d0
00036798 0240ff80	andi.w	#$FF80,d0
0003679c 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
000367a0 6b00017c	bmi.w	JmpTo64_DeleteObject
000367a4 4ef9000164f4	jmp	(DisplaySprite).l
000367aa 10280001	move.b	render_flags(a0),d0
000367ae 020000fc	andi.b	#~(1<<render_flags.x_flip|1<<render_flags.y_flip),d0
000367b2 14280022	move.b	status(a0),d2
000367b6 020200fc	andi.b	#~(1<<status.npc.x_flip|1<<status.npc.y_flip),d2
000367ba 12290001	move.b	render_flags(a1),d1
000367be 02010003	andi.b	#1<<render_flags.x_flip|1<<render_flags.y_flip,d1
000367c2 8001	or.b	d1,d0
000367c4 8401	or.b	d1,d2
000367c6 11400001	move.b	d0,render_flags(a0)
000367ca 11420022	move.b	d2,status(a0)
000367ce 4e75	rts	
000367d0 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
000367d6 661e	bne.s	+
000367d8 301a	move.w	(a2)+,d0
000367da 31890000	move.w	a1,(a0,d0.w)
000367e2 135a0028	move.b	(a2)+,subtype(a1)
000367e6 3348002c	move.w	a0,objoff_2C(a1)
000367ea 336800080008	move.w	x_pos(a0),x_pos(a1)
000367f0 3368000c000c	move.w	y_pos(a0),y_pos(a1)
000367f6 4e75	rts	
000367f8 6100fedc	bsr.w	Obj_GetOrientationToPlayer
000367fc 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
00036802 08a800000022	bclr	#status.npc.x_flip,status(a0)
00036808 4a40	tst.w	d0
0003680a 670c	beq.s	return_36818
0003680c 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00036812 08e800000022	bset	#status.npc.x_flip,status(a0)
00036818 4e75	rts	
0003681a 7200	moveq	#0,d1
0003681c 4eb900017ffa	jsr	(AllocateObjectAfterCurrent).l
00036822 664a	bne.s	return_3686E
0003682a 13420028	move.b	d2,subtype(a1)
0003682e 336800080008	move.w	x_pos(a0),x_pos(a1)
00036834 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0003683a 47f9000163ac	lea	(ObjectMove).l,a3
00036840 234b002a	move.l	a3,objoff_2A(a1)
00036844 47f21000	lea	(a2,d1.w),a3
00036848 101b	move.b	(a3)+,d0
0003684a 4880	ext.w	d0
0003684c d1690008	add.w	d0,x_pos(a1)
00036850 101b	move.b	(a3)+,d0
00036852 4880	ext.w	d0
00036854 d169000c	add.w	d0,y_pos(a1)
00036858 135b0010	move.b	(a3)+,x_vel(a1)
0003685c 135b0012	move.b	(a3)+,y_vel(a1)
00036860 135b001a	move.b	(a3)+,mapping_frame(a1)
00036864 135b0001	move.b	(a3)+,render_flags(a1)
00036868 5c41	addq.w	#6,d1
0003686a 51ceffb0	dbf	d6,-
0003686e 4e75	rts	
00036870 7000	moveq	#0,d0
00036872 1028001c	move.b	anim(a0),d0
00036876 b028001d	cmp.b	prev_anim(a0),d0
0003687a 6710	beq.s	AnimChk_Run
0003687c 1140001d	move.b	d0,prev_anim(a0)
00036880 117c0000001b	move.b	#0,anim_frame(a0)
00036886 117c0000001e	move.b	#0,anim_frame_duration(a0)
0003688c 5328001e	subq.b	#1,anim_frame_duration(a0)
00036890 6a1e	bpl.s	AnimChk_Wait
00036892 d040	add.w	d0,d0
00036894 d2f10000	adda.w	(a1,d0.w),a1
00036898 1151001e	move.b	(a1),anim_frame_duration(a0)
0003689c 7200	moveq	#0,d1
0003689e 1228001b	move.b	anim_frame(a0),d1
000368a2 10311001	move.b	1(a1,d1.w),d0
000368a6 6b0c	bmi.s	AnimChk_End_FF
000368a8 1140001a	move.b	d0,mapping_frame(a0)
000368ac 5228001b	addq.b	#1,anim_frame(a0)
000368b0 7000	moveq	#0,d0
000368b2 4e75	rts	
000368b4 5200	addq.b	#1,d0
000368b6 6610	bne.s	AnimChk_End_FE
000368b8 117c0000001b	move.b	#0,anim_frame(a0)
000368be 10290001	move.b	1(a1),d0
000368c2 61e4	bsr.s	AnimChk_Next
000368c4 7001	moveq	#1,d0
000368c6 4e75	rts	
000368c8 5200	addq.b	#1,d0
000368ca 6612	bne.s	AnimChk_End_FD
000368cc 54280024	addq.b	#2,routine(a0)
000368d0 117c0000001e	move.b	#0,anim_frame_duration(a0)
000368d6 5228001b	addq.b	#1,anim_frame(a0)
000368da 7001	moveq	#1,d0
000368dc 4e75	rts	
000368de 5200	addq.b	#1,d0
000368e0 6608	bne.s	AnimChk_End_FC
000368e2 54280025	addq.b	#2,routine_secondary(a0)
000368e6 7001	moveq	#1,d0
000368e8 4e75	rts	
000368ea 5200	addq.b	#1,d0
000368ec 6608	bne.s	AnimChk_End
000368ee 117c0001001e	move.b	#1,anim_frame_duration(a0)
000368f4 7001	moveq	#1,d0
000368f6 4e75	rts	
000368f8 4a78ffd8	tst.w	(Two_player_mode).w
000368fc 6706	beq.s	+
000368fe 4ef9000164f4	jmp	(DisplaySprite).l
00036904 30280008	move.w	x_pos(a0),d0
00036908 0240ff80	andi.w	#$FF80,d0
0003690c 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00036910 0c400280	cmpi.w	#$280,d0
00036914 62000008	bhi.w	JmpTo64_DeleteObject
00036918 4ef9000164f4	jmp	(DisplaySprite).l
0003691e 4ef9000164e6	jmp	(DeleteObject).l
00036924 7000	moveq	#0,d0
00036926 10280024	move.b	routine(a0),d0
0003692a 323b0006	move.w	Obj8C_Index(pc,d0.w),d1
0003692e 4efb1002	jmp	Obj8C_Index(pc,d1.w)
0003693c 6100fcb6	bsr.w	LoadSubObject
00036940 117c0010002a	move.b	#$10,obj8C_timer(a0)
00036946 117c0004002b	move.b	#4,obj8C_attacks_remaining(a0)
0003694c 4e75	rts	
0003694e 4a280001	tst.b	render_flags(a0)
00036952 6b1c	bmi.s	loc_36970
00036954 60000008	bra.w	Obj8C_Animate
00036958 5328002a	subq.b	#1,obj8C_timer(a0)
0003695c 6b12	bmi.s	loc_36970
0003695e 43f900036a48	lea	(Ani_obj8C).l,a1
00036964 4eb900016544	jsr	(AnimateSprite).l
0003696a 4ef9000163d2	jmp	(MarkObjGone).l
00036970 5328002b	subq.b	#1,obj8C_attacks_remaining(a0)
00036974 6a20	bpl.s	loc_36996
00036976 117c00080024	move.b	#8,routine(a0)
0003697c 08a800000022	bclr	#status.npc.x_flip,status(a0)
00036982 42680012	clr.w	y_vel(a0)
00036986 317cfe000010	move.w	#-$200,x_vel(a0)
0003698c 317cfe000012	move.w	#-$200,y_vel(a0)
00036992 60000092	bra.w	Obj8C_FlyAway
00036996 117c00040024	move.b	#4,routine(a0)
0003699c 317cff000012	move.w	#-$100,y_vel(a0)
000369a2 117c0060002a	move.b	#96,obj8C_timer(a0)
000369a8 5328002a	subq.b	#1,obj8C_timer(a0)
000369ac 6b4a	bmi.s	loc_369F8
000369ae 6100fd26	bsr.w	Obj_GetOrientationToPlayer
000369b2 08a800000022	bclr	#status.npc.x_flip,status(a0)
000369b8 4a40	tst.w	d0
000369ba 6706	beq.s	loc_369C2
000369bc 08e800000022	bset	#status.npc.x_flip,status(a0)
000369c2 343b0030	move.w	Obj8C_MovementDeltas(pc,d0.w),d2
000369c6 d5680010	add.w	d2,x_vel(a0)
000369ca 343b1028	move.w	Obj8C_MovementDeltas(pc,d1.w),d2
000369ce d5680012	add.w	d2,y_vel(a0)
000369d2 303c0200	move.w	#$200,d0
000369d6 3200	move.w	d0,d1
000369d8 6100fd40	bsr.w	Obj_CapSpeed
000369dc 4eb9000163ac	jsr	(ObjectMove).l
000369e2 43f900036a48	lea	(Ani_obj8C).l,a1
000369e8 4eb900016544	jsr	(AnimateSprite).l
000369ee 4ef9000163d2	jmp	(MarkObjGone).l
000369f8 117c00060024	move.b	#6,routine(a0)
000369fe 4eb900003390	jsr	(RandomNumber).l
00036a04 2038f636	move.l	(RNG_seed).w,d0
00036a08 0200001f	andi.b	#$1F,d0
00036a0c 1140002a	move.b	d0,obj8C_timer(a0)
00036a10 6100fd42	bsr.w	Obj_MoveStop
00036a14 43f900036a48	lea	(Ani_obj8C).l,a1
00036a1a 4eb900016544	jsr	(AnimateSprite).l
00036a20 4ef9000163d2	jmp	(MarkObjGone).l
00036a26 4eb9000163ac	jsr	(ObjectMove).l
00036a2c 43f900036a48	lea	(Ani_obj8C).l,a1
00036a32 4eb900016544	jsr	(AnimateSprite).l
00036a38 4ef9000163d2	jmp	(MarkObjGone).l
00036a76 7000	moveq	#0,d0
00036a78 10280024	move.b	routine(a0),d0
00036a7c 323b0006	move.w	Obj8D_Index(pc,d0.w),d1
00036a80 4efb1002	jmp	Obj8D_Index(pc,d1.w)
00036a90 6100fb62	bsr.w	LoadSubObject
00036a94 08a800010001	bclr	#render_flags.y_flip,render_flags(a0)
00036a9a 670c	beq.s	+
00036a9c 08a800010022	bclr	#status.npc.y_flip,status(a0)
00036aa2 02687fff0002	andi.w	#drawing_mask,art_tile(a0)
00036aa8 117c00140016	move.b	#$14,y_radius(a0)
00036aae 117c00100017	move.b	#$10,x_radius(a0)
00036ab4 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00036aba 4a41	tst.w	d1
00036abc 6a0a	bpl.s	+
00036abe d368000c	add.w	d1,y_pos(a0)
00036ac2 317c00000012	move.w	#0,y_vel(a0)
00036acc 0400008d	subi.b	#ObjID_GrounderInWall,d0
00036ad0 67000192	beq.w	loc_36C64
00036ad4 117c00060024	move.b	#6,routine(a0)
00036ada 4e75	rts	
00036adc 6100fbf8	bsr.w	Obj_GetOrientationToPlayer
00036ae0 4a42	tst.w	d2
00036ae2 6a02	bpl.s	.skip
00036ae4 4442	neg.w	d2
00036ae6 0c420060	cmpi.w	#$60,d2
00036aea 6304	bls.s	+
00036af0 54280024	addq.b	#2,routine(a0)
00036af4 50e8002b	st.b	objoff_2B(a0)
00036af8 61000132	bsr.w	loc_36C2C
00036b00 43f900036cea	lea	(Ani_obj8D_b).l,a1
00036b0e 54280024	addq.b	#2,routine(a0)
00036b12 6100fbc2	bsr.w	Obj_GetOrientationToPlayer
00036b16 317b00180010	move.w	Obj8D_Directions(pc,d0.w),x_vel(a0)
00036b1c 08a800000022	bclr	#status.npc.x_flip,status(a0)
00036b22 4a40	tst.w	d0
00036b24 6706	beq.s	+
00036b26 08e800000022	bset	#status.npc.x_flip,status(a0)
00036b38 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00036b3e 0c41ffff	cmpi.w	#-1,d1
00036b42 6d18	blt.s	loc_36B5C
00036b44 0c41000c	cmpi.w	#$C,d1
00036b48 6c12	bge.s	loc_36B5C
00036b4a d368000c	add.w	d1,y_pos(a0)
00036b4e 43f900036ce2	lea	(Ani_obj8D_a).l,a1
00036b5c 54280024	addq.b	#2,routine(a0)
00036b60 117c003b002a	move.b	#$3B,objoff_2A(a0)
00036b6a 5328002a	subq.b	#1,objoff_2A(a0)
00036b6e 6b04	bmi.s	loc_36B74
00036b74 117c00080024	move.b	#8,routine(a0)
00036b7a 44680010	neg.w	x_vel(a0)
00036b7e 086800000022	bchg	#status.npc.x_flip,status(a0)
00036b88 7000	moveq	#0,d0
00036b8a 10280024	move.b	routine(a0),d0
00036b8e 323b0006	move.w	Obj8F_Index(pc,d0.w),d1
00036b92 4efb1002	jmp	Obj8F_Index(pc,d1.w)
00036b9c 6100fa56	bsr.w	LoadSubObject
00036ba0 42680002	clr.w	art_tile(a0)
00036ba4 4e75	rts	
00036ba6 3268002c	movea.w	objoff_2C(a0),a1
00036baa 4a29002b	tst.b	objoff_2B(a1)
00036bae 6604	bne.s	+
00036bb4 54280024	addq.b	#2,routine(a0)
00036bb8 3028002e	move.w	objoff_2E(a0),d0
00036bbc 117b000e0010	move.b	Obj8F_Directions(pc,d0.w),x_vel(a0)
00036bc2 117b00090012	move.b	Obj8F_Directions+1(pc,d0.w),y_vel(a0)
00036bd4 7000	moveq	#0,d0
00036bd6 10280024	move.b	routine(a0),d0
00036bda 323b0006	move.w	Obj90_Index(pc,d0.w),d1
00036bde 4efb1002	jmp	Obj90_Index(pc,d1.w)
00036be6 6100fa0c	bsr.w	LoadSubObject
00036bea 317c45090002	move.w	#make_art_tile(ArtTile_ArtNem_Grounder,2,0),art_tile(a0)
00036bf0 3028002e	move.w	objoff_2E(a0),d0
00036bf4 117b001c0010	move.b	Obj90_Directions(pc,d0.w),x_vel(a0)
00036bfa 117b00170012	move.b	Obj90_Directions+1(pc,d0.w),y_vel(a0)
00036c00 e248	lsr.w	#1,d0
00036c02 117b0008001a	move.b	Obj90_Frames(pc,d0.w),mapping_frame(a0)
00036c1c 4a280001	tst.b	render_flags(a0)
00036c20 6a007e26	bpl.w	JmpTo65_DeleteObject
00036c2c 7200	moveq	#0,d1
00036c2e 7c04	moveq	#4,d6
00036c34 6608	bne.s	+
00036c36 61000008	bsr.w	loc_36C40
00036c3a 51cefff4	dbf	d6,-
00036c3e 4e75	rts	
00036c46 137c00060028	move.b	#6,subtype(a1)
00036c4c 3348002c	move.w	a0,objoff_2C(a1)
00036c50 3341002e	move.w	d1,objoff_2E(a1)
00036c54 336800080008	move.w	x_pos(a0),x_pos(a1)
00036c5a 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00036c60 5441	addq.w	#2,d1
00036c62 4e75	rts	
00036c64 7200	moveq	#0,d1
00036c66 7c03	moveq	#3,d6
00036c6c 6608	bne.s	+
00036c6e 61000008	bsr.w	loc_36C78
00036c72 51cefff4	dbf	d6,-
00036c76 4e75	rts	
00036c7e 137c00040028	move.b	#4,subtype(a1)
00036c84 3348002c	move.w	a0,objoff_2C(a1)
00036c88 3341002e	move.w	d1,objoff_2E(a1)
00036c8c 20280008	move.l	x_pos(a0),d0
00036c90 4840	swap	d0
00036c92 7400	moveq	#0,d2
00036c94 143b1026	move.b	byte_36CBC(pc,d1.w),d2
00036c98 4882	ext.w	d2
00036c9a d042	add.w	d2,d0
00036c9c 4840	swap	d0
00036c9e 23400008	move.l	d0,x_pos(a1)
00036ca2 2028000c	move.l	y_pos(a0),d0
00036ca6 4840	swap	d0
00036ca8 7400	moveq	#0,d2
00036caa 143b1011	move.b	byte_36CBC+1(pc,d1.w),d2
00036cae 4882	ext.w	d2
00036cb0 d042	add.w	d2,d0
00036cb2 4840	swap	d0
00036cb4 2340000c	move.l	d0,y_pos(a1)
00036cb8 5441	addq.w	#2,d1
00036cba 4e75	rts	
00036dac 7000	moveq	#0,d0
00036dae 10280024	move.b	routine(a0),d0
00036db2 323b0006	move.w	Obj91_Index(pc,d0.w),d1
00036db6 4efb1002	jmp	Obj91_Index(pc,d1.w)
00036dc2 6100f830	bsr.w	LoadSubObject
00036dc6 317c0200002a	move.w	#$200,Obj91_move_timer(a0)
00036dcc 317c0050002c	move.w	#$50,Obj91_bubble_timer(a0)
00036dd2 7040	moveq	#$40,d0
00036dd4 082800000022	btst	#status.npc.x_flip,status(a0)
00036dda 6602	bne.s	+
00036ddc 4440	neg.w	d0
00036dde 31400010	move.w	d0,x_vel(a0)
00036de2 4e75	rts	
00036de4 5328002c	subq.b	#1,Obj91_bubble_timer(a0)
00036de8 6604	bne.s	+
00036dea 6100008c	bsr.w	Obj91_MakeBubble
00036dee 5368002a	subq.w	#1,Obj91_move_timer(a0)
00036df2 6a16	bpl.s	+
00036df4 317c0200002a	move.w	#$200,Obj91_move_timer(a0)
00036dfa 086800000022	bchg	#status.npc.x_flip,status(a0)
00036e00 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
00036e06 44680010	neg.w	x_vel(a0)
00036e0e 6100f8c6	bsr.w	Obj_GetOrientationToPlayer
00036e12 3802	move.w	d2,d4
00036e14 3a03	move.w	d3,d5
00036e16 6100009a	bsr.w	Obj91_TestCharacterPos
00036e1a 6604	bne.s	Obj91_PrepareCharge
00036e20 54280024	addq.b	#2,routine(a0)
00036e24 117c0010002a	move.b	#$10,Obj91_move_timer(a0)
00036e2a 42680010	clr.w	x_vel(a0)
00036e32 5328002a	subq.b	#1,Obj91_move_timer(a0)
00036e36 6b04	bmi.s	Obj91_MoveTowardsPlayer
00036e38 60000030	bra.w	Obj91_Animate
00036e3c 54280024	addq.b	#2,routine(a0)
00036e40 6100f894	bsr.w	Obj_GetOrientationToPlayer
00036e44 e248	lsr.w	#1,d0
00036e46 117b001a0010	move.b	Obj91_HorizontalSpeeds(pc,d0.w),x_vel(a0)
00036e4c 06430010	addi.w	#$10,d3
00036e50 0c430020	cmpi.w	#$20,d3
00036e54 6508	blo.s	+
00036e56 e249	lsr.w	#1,d1
00036e58 117b100a0013	move.b	Obj91_VerticalSpeeds(pc,d1.w),1+y_vel(a0)
00036e5e 6000000a	bra.w	Obj91_Animate
00036e6a 43f900036ef0	lea	(Ani_obj91).l,a1
00036e78 317c0050002c	move.w	#$50,Obj91_bubble_timer(a0)
00036e82 662c	bne.s	return_36EB0
00036e8a 137c00060028	move.b	#6,subtype(a1)
00036e90 336800080008	move.w	x_pos(a0),x_pos(a1)
00036e96 7014	moveq	#$14,d0
00036e98 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00036e9e 6702	beq.s	+
00036ea0 4440	neg.w	d0
00036ea2 d1690008	add.w	d0,x_pos(a1)
00036ea6 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00036eac 5c69000c	addq.w	#6,y_pos(a1)
00036eb0 4e75	rts	
00036eb2 06430020	addi.w	#$20,d3
00036eb6 0c430040	cmpi.w	#$40,d3
00036eba 6422	bhs.s	Obj91_DoNotCharge
00036ebc 4a42	tst.w	d2
00036ebe 6b0a	bmi.s	Obj91_TestPosLeft
00036ec0 4a680010	tst.w	x_vel(a0)
00036ec4 6a18	bpl.s	Obj91_DoNotCharge
00036ec6 6000000a	bra.w	Obj91_TestHorizontalDist
00036eca 4a680010	tst.w	x_vel(a0)
00036ece 6b0e	bmi.s	Obj91_DoNotCharge
00036ed0 4442	neg.w	d2
00036ed2 0c420020	cmpi.w	#$20,d2
00036ed6 6506	blo.s	Obj91_DoNotCharge
00036ed8 0c4200a0	cmpi.w	#$A0,d2
00036edc 6504	blo.s	Obj91_PlayerInRange
00036ede 7400	moveq	#0,d2
00036ee0 4e75	rts	
00036ee2 7401	moveq	#1,d2
00036ee4 4e75	rts	
00036f0e 7000	moveq	#0,d0
00036f10 10280024	move.b	routine(a0),d0
00036f14 323b0006	move.w	Obj92_Index(pc,d0.w),d1
00036f18 4efb1002	jmp	Obj92_Index(pc,d1.w)
00036f24 6100f6ce	bsr.w	LoadSubObject
00036f28 117c0040002a	move.b	#$40,objoff_2A(a0)
00036f2e 317c00800010	move.w	#$80,x_vel(a0)
00036f34 086800000022	bchg	#status.npc.x_flip,status(a0)
00036f3a 4e75	rts	
00036f3c 61000100	bsr.w	loc_3703E
00036f40 6606	bne.s	loc_36F48
00036f42 5328002a	subq.b	#1,objoff_2A(a0)
00036f46 6b12	bmi.s	loc_36F5A
00036f4c 43f900037086	lea	(Ani_obj92).l,a1
00036f5a 54280024	addq.b	#2,routine(a0)
00036f5e 117c0010002a	move.b	#$10,objoff_2A(a0)
00036f68 610000d4	bsr.w	loc_3703E
00036f6c 6606	bne.s	+
00036f6e 5328002a	subq.b	#1,objoff_2A(a0)
00036f72 6b04	bmi.s	loc_36F78
00036f78 55280024	subq.b	#2,routine(a0)
00036f7c 117c0040002a	move.b	#$40,objoff_2A(a0)
00036f82 44680010	neg.w	x_vel(a0)
00036f86 086800000022	bchg	#status.npc.x_flip,status(a0)
00036f90 1028002e	move.b	objoff_2E(a0),d0
00036f94 0c000008	cmpi.b	#8,d0
00036f98 670a	beq.s	loc_36FA4
00036f9a 5300	subq.b	#1,d0
00036f9c 1140002e	move.b	d0,objoff_2E(a0)
00036fa8 6632	bne.s	loc_36FDC
00036faa 50e8002b	st.b	objoff_2B(a0)
00036fb4 136800280028	move.b	subtype(a0),subtype(a1)
00036fba 3348002c	move.w	a0,objoff_2C(a1)
00036fbe 336800080008	move.w	x_pos(a0),x_pos(a1)
00036fc4 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00036fca 137c0004001a	move.b	#4,mapping_frame(a1)
00036fd0 117c0002001a	move.b	#2,mapping_frame(a0)
00036fd6 117c0001001c	move.b	#1,anim(a0)
00036fdc 1168002f0024	move.b	objoff_2F(a0),routine(a0)
00036fe6 7000	moveq	#0,d0
00036fe8 10280024	move.b	routine(a0),d0
00036fec 323b0006	move.w	Obj93_Index(pc,d0.w),d1
00036ff0 4efb1002	jmp	Obj93_Index(pc,d1.w)
00036ff8 6100f5fa	bsr.w	LoadSubObject
00036ffc 002800800001	ori.b	#1<<render_flags.on_screen,render_flags(a0)
00037002 002800800020	ori.b	#$80,collision_flags(a0)
00037008 3268002c	movea.w	objoff_2C(a0),a1
0003700c 10290001	move.b	render_flags(a1),d0
00037010 02000003	andi.b	#3,d0
00037014 81280001	or.b	d0,render_flags(a0)
00037018 7202	moveq	#2,d1
0003701a 08000001	btst	#1,d0
0003701e 6602	bne.s	+
00037020 4441	neg.w	d1
00037022 11410012	move.b	d1,y_vel(a0)
00037026 4e75	rts	
00037028 4a280001	tst.b	render_flags(a0)
0003702c 6a007a1a	bpl.w	JmpTo65_DeleteObject
00037030 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
0003703e 4a28002b	tst.b	objoff_2B(a0)
00037042 661e	bne.s	loc_37062
00037044 4a280001	tst.b	render_flags(a0)
00037048 6a18	bpl.s	loc_37062
0003704a 6100f68a	bsr.w	Obj_GetOrientationToPlayer
0003704e 06420020	addi.w	#$20,d2
00037052 0c420040	cmpi.w	#$40,d2
00037056 640a	bhs.s	loc_37062
00037058 06430080	addi.w	#$80,d3
0003705c 0c430100	cmpi.w	#$100,d3
00037060 6504	blo.s	loc_37066
00037062 7000	moveq	#0,d0
00037064 4e75	rts	
00037066 11680024002f	move.b	routine(a0),objoff_2F(a0)
0003706c 117c00060024	move.b	#6,routine(a0)
00037072 117c0010002e	move.b	#$10,objoff_2E(a0)
00037078 7001	moveq	#1,d0
0003707a 4e75	rts	
000370fe 7000	moveq	#0,d0
00037100 10280024	move.b	routine(a0),d0
00037104 323b0006	move.w	Obj95_Index(pc,d0.w),d1
00037108 4efb1002	jmp	Obj95_Index(pc,d1.w)
00037116 217c000372e60004	move.l	#Obj95_MapUnc_372E6,mappings(a0)
0003711e 317c00000002	move.w	#make_art_tile(ArtTile_ArtKos_LevelArt,0,0),art_tile(a0)
00037128 002800040001	ori.b	#1<<render_flags.level_fg,render_flags(a0)
0003712e 117c00040018	move.b	#4,priority(a0)
00037134 117c000b0020	move.b	#$B,collision_flags(a0)
0003713a 117c000c0019	move.b	#$C,width_pixels(a0)
00037140 317cffc00010	move.w	#-$40,x_vel(a0)
00037146 7400	moveq	#0,d2
00037148 45e80037	lea	objoff_37(a0),a2
0003714c 264a	movea.l	a2,a3
0003714e 524a	addq.w	#1,a2
00037150 7203	moveq	#3,d1
00037156 6656	bne.s	loc_371AE
00037158 5213	addq.b	#1,(a3)
0003715a 3a09	move.w	a1,d5
0003715c 0445b000	subi.w	#MainCharacter,d5
00037160 ec4d	lsr.w	#object_size_bits,d5
00037162 0245007f	andi.w	#$7F,d5
00037166 14c5	move.b	d5,(a2)+
0003716e 137c00060024	move.b	#6,routine(a1)
00037174 236800040004	move.l	mappings(a0),mappings(a1)
0003717a 336800020002	move.w	art_tile(a0),art_tile(a1)
00037180 002900040001	ori.b	#1<<render_flags.level_fg,render_flags(a1)
00037186 137c00040018	move.b	#4,priority(a1)
0003718c 137c00080019	move.b	#8,width_pixels(a1)
00037192 137c0003001a	move.b	#3,mapping_frame(a1)
00037198 137c00980020	move.b	#$98,collision_flags(a1)
0003719e 13420026	move.b	d2,angle(a1)
000371a2 06020040	addi.b	#$40,d2
000371a6 2348003c	move.l	a0,objoff_3C(a1)
000371aa 51c9ffa6	dbf	d1,Obj95_NextFireball
000371ae 7001	moveq	#1,d0
000371b0 082800000022	btst	#status.npc.x_flip,status(a0)
000371b6 6702	beq.s	loc_371BA
000371b8 4440	neg.w	d0
000371ba 11400036	move.b	d0,objoff_36(a0)
000371be 116800280024	move.b	subtype(a0),routine(a0)
000371c4 54280024	addq.b	#2,routine(a0)
000371c8 317cffc00010	move.w	#-$40,x_vel(a0)
000371ce 082800000022	btst	#status.npc.x_flip,status(a0)
000371d4 6704	beq.s	return_371DA
000371d6 44680010	neg.w	x_vel(a0)
000371da 4e75	rts	
000371dc 3038b008	move.w	(MainCharacter+x_pos).w,d0
000371e0 90680008	sub.w	x_pos(a0),d0
000371e4 6402	bcc.s	loc_371E8
000371e6 4440	neg.w	d0
000371e8 0c4000a0	cmpi.w	#$A0,d0
000371ec 641e	bhs.s	loc_3720C
000371ee 3038b00c	move.w	(MainCharacter+y_pos).w,d0
000371f2 9068000c	sub.w	y_pos(a0),d0
000371f6 6402	bcc.s	loc_371FA
000371f8 4440	neg.w	d0
000371fa 0c400050	cmpi.w	#$50,d0
000371fe 640c	bhs.s	loc_3720C
00037200 4a78fe08	tst.w	(Debug_placement_mode).w
00037204 6606	bne.s	loc_3720C
00037206 117c0001001c	move.b	#1,anim(a0)
00037210 43f9000372d2	lea	(Ani_obj95_a).l,a1
0003721a 02280003001a	andi.b	#3,mapping_frame(a0)
00037228 43f9000372e0	lea	(Ani_obj95_b).l,a1
00037232 02280003001a	andi.b	#3,mapping_frame(a0)
0003723c 43f9000372e0	lea	(Ani_obj95_b).l,a1
00037246 2268003c	movea.l	objoff_3C(a0),a1
00037250 660077f6	bne.w	JmpTo65_DeleteObject
00037254 0c290002001a	cmpi.b	#2,mapping_frame(a1)
0003725a 6632	bne.s	Obj95_FireballOrbit
0003725c 0c2800400026	cmpi.b	#$40,angle(a0)
00037262 662a	bne.s	Obj95_FireballOrbit
00037264 54280024	addq.b	#2,routine(a0)
00037268 117c0000001c	move.b	#0,anim(a0)
0003726e 53290037	subq.b	#1,objoff_37(a1)
00037272 6604	bne.s	loc_37278
00037274 54290024	addq.b	#2,routine(a1)
00037278 317cfe000010	move.w	#-$200,x_vel(a0)
0003727e 082900000022	btst	#status.npc.x_flip,status(a1)
00037284 6704	beq.s	+
00037286 44680010	neg.w	x_vel(a0)
0003728e 10280026	move.b	angle(a0),d0
00037292 4eb9000033b6	jsr	(CalcSine).l
00037298 e841	asr.w	#4,d1
0003729a d2690008	add.w	x_pos(a1),d1
0003729e 31410008	move.w	d1,x_pos(a0)
000372a2 e840	asr.w	#4,d0
000372a4 d069000c	add.w	y_pos(a1),d0
000372a8 3140000c	move.w	d0,y_pos(a0)
000372ac 10290036	move.b	objoff_36(a1),d0
000372b0 d1280026	add.b	d0,angle(a0)
000372bc 4a280001	tst.b	render_flags(a0)
000372c0 6a007786	bpl.w	JmpTo65_DeleteObject
000372c4 43f9000372e0	lea	(Ani_obj95_b).l,a1
00037322 7000	moveq	#0,d0
00037324 10280024	move.b	routine(a0),d0
00037328 323b0006	move.w	Obj94_Index(pc,d0.w),d1
0003732c 4efb1002	jmp	Obj94_Index(pc,d1.w)
00037338 6100f2ba	bsr.w	LoadSubObject
0003733c 117c0002001a	move.b	#2,mapping_frame(a0)
00037342 317cffe00010	move.w	#-$20,x_vel(a0)
00037348 117c0080002a	move.b	#$80,objoff_2A(a0)
0003734e 4e75	rts	
00037350 6100f384	bsr.w	Obj_GetOrientationToPlayer
00037354 06420060	addi.w	#$60,d2
00037358 0c420100	cmpi.w	#$100,d2
0003735c 6404	bhs.s	loc_37362
0003735e 6100024c	bsr.w	Obj94_CreateHead
00037362 3f280008	move.w	x_pos(a0),-(sp)
00037366 61000018	bsr.w	Obj94_CheckTurnAround
0003736a 323c001b	move.w	#$1B,d1
0003736e 343c0008	move.w	#8,d2
00037372 363c0011	move.w	#$11,d3
00037376 381f	move.w	(sp)+,d4
00037380 5328002a	subq.b	#1,objoff_2A(a0)
00037384 6a10	bpl.s	loc_37396
00037386 117c0080002a	move.b	#$80,objoff_2A(a0)
0003738c 44680010	neg.w	x_vel(a0)
00037390 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
0003739a 4e75	rts	
0003739c 6100f338	bsr.w	Obj_GetOrientationToPlayer
000373a0 06420060	addi.w	#$60,d2
000373a4 0c420100	cmpi.w	#$100,d2
000373a8 6404	bhs.s	loc_373AE
000373aa 61000200	bsr.w	Obj94_CreateHead
000373ae 61000006	bsr.w	Obj94_SolidCollision
000373b6 323c001b	move.w	#$1B,d1
000373ba 343c0008	move.w	#8,d2
000373be 363c0008	move.w	#8,d3
000373c2 38280008	move.w	x_pos(a0),d4
000373ca 61ea	bsr.s	Obj94_SolidCollision
000373d0 7000	moveq	#0,d0
000373d2 10280024	move.b	routine(a0),d0
000373d6 323b0006	move.w	Obj97_Index(pc,d0.w),d1
000373da 4efb1002	jmp	Obj97_Index(pc,d1.w)
000373e8 6100f20a	bsr.w	LoadSubObject
000373ec 117c00080019	move.b	#8,width_pixels(a0)
000373f2 7028	moveq	#$28,d0
000373f4 082800000001	btst	#render_flags.x_flip,render_flags(a0)
000373fa 6602	bne.s	+
000373fc 70e8	moveq	#-$18,d0
000373fe d1680008	add.w	d0,x_pos(a0)
00037402 06680010000c	addi.w	#$10,y_pos(a0)
00037408 117c00010038	move.b	#1,objoff_38(a0)
0003740e 3268002c	movea.w	objoff_2C(a0),a1
00037412 43e9002e	lea	objoff_2E(a1),a1
00037416 117c000b0020	move.b	#$B,collision_flags(a0)
0003741c 7000	moveq	#0,d0
0003741e 3028002e	move.w	objoff_2E(a0),d0
00037422 0c400008	cmpi.w	#8,d0
00037426 6712	beq.s	+
00037428 117c0001001a	move.b	#1,mapping_frame(a0)
0003742e 117c008b0020	move.b	#$8B,collision_flags(a0)
00037434 317100000030	move.w	(a1,d0.w),objoff_30(a0)
0003743a 316900060032	move.w	6(a1),objoff_32(a0)
00037440 e248	lsr.w	#1,d0
00037442 117b000a002a	move.b	byte_3744E(pc,d0.w),objoff_2A(a0)
00037448 11400039	move.b	d0,objoff_39(a0)
0003744c 4e75	rts	
00037454 610000b6	bsr.w	Obj97_CheckHeadIsAlive
00037458 5328002a	subq.b	#1,objoff_2A(a0)
0003745c 6b04	bmi.s	Obj97_StartRaise
00037462 54280024	addq.b	#2,routine(a0)
00037466 317cfee00010	move.w	#-$120,x_vel(a0)
0003746c 317cfe000012	move.w	#-$200,y_vel(a0)
00037472 3028002e	move.w	objoff_2E(a0),d0
0003747a 4440	neg.w	d0
0003747c e248	lsr.w	#1,d0
0003747e 117b00ce002a	move.b	byte_3744E(pc,d0.w),objoff_2A(a0)
00037488 61000082	bsr.w	Obj97_CheckHeadIsAlive
0003748c 7010	moveq	#$10,d0
0003748e d1680010	add.w	d0,x_vel(a0)
00037492 5328002a	subq.b	#1,objoff_2A(a0)
00037496 6b08	bmi.s	Obj97_StartNormalState
000374a0 54280024	addq.b	#2,routine(a0)
000374a4 6100f2ae	bsr.w	Obj_MoveStop
000374a8 117c0020002a	move.b	#$20,objoff_2A(a0)
000374ae 3028002e	move.w	objoff_2E(a0),d0
000374b2 e248	lsr.w	#1,d0
000374b4 117b0008002b	move.b	byte_374BE(pc,d0.w),objoff_2B(a0)
000374c2 61000048	bsr.w	Obj97_CheckHeadIsAlive
000374c6 0c680008002e	cmpi.w	#8,objoff_2E(a0)
000374cc 660a	bne.s	loc_374D8
000374ce 5328002a	subq.b	#1,objoff_2A(a0)
000374d2 6a04	bpl.s	loc_374D8
000374d4 6100005c	bsr.w	Obj97_FireProjectile
000374d8 10280039	move.b	objoff_39(a0),d0
000374dc 5200	addq.b	#1,d0
000374de 11400039	move.b	d0,objoff_39(a0)
000374e2 02000003	andi.b	#3,d0
000374e6 6608	bne.s	+
000374e8 610000a0	bsr.w	loc_3758A
000374ec 61000116	bsr.w	Obj97_Oscillate
000374f4 3038eece	move.w	(Camera_Max_Y_pos).w,d0
000374f8 064000e0	addi.w	#screen_height,d0
000374fc b068000c	cmp.w	y_pos(a0),d0
00037500 65007546	blo.w	JmpTo65_DeleteObject
0003750c 32680032	movea.w	objoff_32(a0),a1
00037510 0c110097	cmpi.b	#ObjID_RexonHead,id(a1)
00037514 6710	beq.s	+
00037516 117c00080024	move.b	#8,routine(a0)
0003751c 3028002e	move.w	objoff_2E(a0),d0
00037520 317b00060010	move.w	word_37528(pc,d0.w),x_vel(a0)
00037526 4e75	rts	
00037532 117c007f002a	move.b	#$7F,objoff_2A(a0)
0003753c 664a	bne.s	++
00037544 137c0003001a	move.b	#3,mapping_frame(a1)
0003754a 137c00100028	move.b	#$10,subtype(a1)
00037550 336800080008	move.w	x_pos(a0),x_pos(a1)
00037556 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0003755c 45f9000163ac	lea	(ObjectMove).l,a2
00037562 234a002a	move.l	a2,objoff_2A(a1)
00037566 7001	moveq	#1,d0
00037568 7210	moveq	#$10,d1
0003756a 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00037570 6604	bne.s	+
00037572 4440	neg.w	d0
00037574 4441	neg.w	d1
00037576 13400010	move.b	d0,x_vel(a1)
0003757a d3690008	add.w	d1,x_pos(a1)
0003757e 5869000c	addq.w	#4,y_pos(a1)
00037582 137c00800013	move.b	#$80,1+y_vel(a1)
00037588 4e75	rts	
0003758a 1028002b	move.b	objoff_2B(a0),d0
0003758e 12280038	move.b	objoff_38(a0),d1
00037592 d001	add.b	d1,d0
00037594 1140002b	move.b	d0,objoff_2B(a0)
00037598 04000018	subi.b	#$18,d0
0003759c 6708	beq.s	+
0003759e 6506	bcs.s	+
000375a0 0c000010	cmpi.b	#$10,d0
000375a4 6504	blo.s	++
000375a6 44280038	neg.b	objoff_38(a0)
000375aa 4e75	rts	
000375ac 117c00060024	move.b	#6,routine(a0)
000375b2 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
000375b8 4a40	tst.w	d0
000375ba 6706	beq.s	+
000375bc 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
000375c2 6100f190	bsr.w	Obj_MoveStop
000375c6 45e8002c	lea	objoff_2C(a0),a2
000375ca 7200	moveq	#0,d1
000375cc 7c04	moveq	#4,d6
000375d2 662e	bne.s	+
000375da 136800010001	move.b	render_flags(a0),render_flags(a1)
000375e0 136800280028	move.b	subtype(a0),subtype(a1)
000375e6 3348002c	move.w	a0,objoff_2C(a1)
000375ea 34c9	move.w	a1,(a2)+
000375ec 3341002e	move.w	d1,objoff_2E(a1)
000375f0 336800080008	move.w	x_pos(a0),x_pos(a1)
000375f6 3368000c000c	move.w	y_pos(a0),y_pos(a1)
000375fc 5441	addq.w	#2,d1
000375fe 51ceffce	dbf	d6,loc_375CE
00037602 4e75	rts	
00037604 30280030	move.w	objoff_30(a0),d0
00037608 6746	beq.s	+
0003760a 3240	movea.w	d0,a1
0003760c 45fa009a	lea	byte_376A8(pc),a2
00037610 7000	moveq	#0,d0
00037612 1028002b	move.b	objoff_2B(a0),d0
00037616 0200007f	andi.b	#$7F,d0
0003761a 3200	move.w	d0,d1
0003761c 0240001f	andi.w	#$1F,d0
00037620 d040	add.w	d0,d0
00037622 14320000	move.b	(a2,d0.w),d2
00037626 4882	ext.w	d2
00037628 16320001	move.b	1(a2,d0.w),d3
0003762c 4883	ext.w	d3
0003762e e849	lsr.w	#4,d1
00037630 02410006	andi.w	#6,d1
00037634 323b101c	move.w	off_37652(pc,d1.w),d1
00037638 4ebb1018	jsr	off_37652(pc,d1.w)
0003763c 38280008	move.w	x_pos(a0),d4
00037640 d842	add.w	d2,d4
00037642 33440008	move.w	d4,x_pos(a1)
00037646 1a28000d	move.b	1+y_pos(a0),d5
0003764a da03	add.b	d3,d5
0003764c 1345000d	move.b	d5,1+y_pos(a1)
00037650 4e75	rts	
0003765a 4e75	rts	
0003765c c543	exg	d2,d3
0003765e 4443	neg.w	d3
00037660 4e75	rts	
00037662 4442	neg.w	d2
00037664 4443	neg.w	d3
00037666 4e75	rts	
00037668 c543	exg	d2,d3
0003766a 4442	neg.w	d2
0003766c 4e75	rts	
000376e8 7000	moveq	#0,d0
000376ea 10280024	move.b	routine(a0),d0
000376ee 323b0006	move.w	Obj98_Index(pc,d0.w),d1
000376f2 4efb1002	jmp	Obj98_Index(pc,d1.w)
000376fa 6000eef8	bra.w	LoadSubObject
000376fe 4a280001	tst.b	render_flags(a0)
00037702 6a007344	bpl.w	JmpTo65_DeleteObject
00037706 2268002a	movea.l	objoff_2A(a0),a1
0003770a 4e91	jsr	(a1)
00037710 086800050002	bchg	#palette_bit_0,art_tile(a0)
0003771e 43f900037b50	lea	(Ani_TurtloidShot).l,a1
00037728 066800200012	addi.w	#$20,y_vel(a0)
00037732 4e75	rts	
00037738 43f9000395a8	lea	(Ani_CluckerShot).l,a1
00037742 066800200012	addi.w	#$20,y_vel(a0)
0003774c 43f900038cc4	lea	(Ani_SpinyShot).l,a1
0003775a 43f90003ba40	lea	(Ani_WallTurretShot).l,a1
000377c8 7000	moveq	#0,d0
000377ca 10280024	move.b	routine(a0),d0
000377ce 323b0006	move.w	Obj99_Index(pc,d0.w),d1
000377d2 4efb1002	jmp	Obj99_Index(pc,d1.w)
000377dc 6100ee16	bsr.w	LoadSubObject
000377e0 317cff400010	move.w	#-$C0,x_vel(a0)
000377e6 4e75	rts	
000377e8 6100eeec	bsr.w	Obj_GetOrientationToPlayer
000377ec 4a40	tst.w	d0
000377ee 660a	bne.s	loc_377FA
000377f0 0c420080	cmpi.w	#$80,d2
000377f4 6404	bhs.s	loc_377FA
000377f6 61000018	bsr.w	loc_37810
000377fe 6100ef76	bsr.w	loc_36776
00037802 43f900037892	lea	(Ani_obj99).l,a1
0003780c 6000ef7a	bra.w	Obj_DeleteBehindScreen
00037810 54280024	addq.b	#2,routine(a0)
00037814 317cff600012	move.w	#-$A0,y_vel(a0)
0003781a 4e75	rts	
0003781c 4a28002a	tst.b	objoff_2A(a0)
00037820 6612	bne.s	loc_37834
00037822 6100eeb2	bsr.w	Obj_GetOrientationToPlayer
0003782a 0c420010	cmpi.w	#$10,d2
0003782e 6404	bhs.s	loc_37834
00037830 6100001e	bsr.w	loc_37850
0003783e 6100ef36	bsr.w	loc_36776
00037842 43f900037892	lea	(Ani_obj99).l,a1
0003784c 6000ef3a	bra.w	Obj_DeleteBehindScreen
00037850 50e8002a	st.b	objoff_2A(a0)
00037858 662c	bne.s	return_37886
00037860 137c0004001a	move.b	#4,mapping_frame(a1)
00037866 137c00140028	move.b	#$14,subtype(a1)
0003786c 336800080008	move.w	x_pos(a0),x_pos(a1)
00037872 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00037878 06690018000c	addi.w	#$18,y_pos(a1)
00037882 234a002a	move.l	a2,objoff_2A(a1)
00037886 4e75	rts	
00037936 7000	moveq	#0,d0
00037938 10280024	move.b	routine(a0),d0
0003793c 323b0006	move.w	Obj9A_Index(pc,d0.w),d1
00037940 4efb1002	jmp	Obj9A_Index(pc,d1.w)
00037948 6100ecaa	bsr.w	LoadSubObject
0003794c 317cff800010	move.w	#-$80,x_vel(a0)
00037952 610000f6	bsr.w	loc_37A4A
00037956 43f900037b56	lea	(Ani_obj9A).l,a1
0003795c 2149002e	move.l	a1,objoff_2E(a0)
00037960 6000015c	bra.w	loc_37ABE
00037964 7000	moveq	#0,d0
00037966 10280025	move.b	routine_secondary(a0),d0
0003796a 323b000e	move.w	off_3797A(pc,d0.w),d1
0003796e 4ebb100a	jsr	off_3797A(pc,d1.w)
00037972 6100000e	bsr.w	loc_37982
00037976 6000ee10	bra.w	Obj_DeleteBehindScreen
00037982 3f280008	move.w	x_pos(a0),-(sp)
0003798a 6100edea	bsr.w	loc_36776
0003798e 323c0018	move.w	#$18,d1
00037992 343c0008	move.w	#8,d2
00037996 363c000e	move.w	#$E,d3
0003799a 381f	move.w	(sp)+,d4
000379a0 6100ed34	bsr.w	Obj_GetOrientationToPlayer
000379a4 4a40	tst.w	d0
000379a6 6b0000a0	bmi.w	return_37A48
000379aa 0c420080	cmpi.w	#$80,d2
000379ae 64000098	bhs.w	return_37A48
000379b2 54280025	addq.b	#2,routine_secondary(a0)
000379b6 317c00000010	move.w	#0,x_vel(a0)
000379bc 117c0004002a	move.b	#4,objoff_2A(a0)
000379c2 117c0001001a	move.b	#1,mapping_frame(a0)
000379c8 4e75	rts	
000379ca 5328002a	subq.b	#1,objoff_2A(a0)
000379ce 6a000078	bpl.w	return_37A48
000379d2 54280025	addq.b	#2,routine_secondary(a0)
000379d6 117c0008002a	move.b	#8,objoff_2A(a0)
000379dc 3268002c	movea.w	objoff_2C(a0),a1
000379e0 137c0003001a	move.b	#3,mapping_frame(a1)
000379e6 6000010a	bra.w	loc_37AF2
000379ea 5328002a	subq.b	#1,objoff_2A(a0)
000379ee 6a12	bpl.s	return_37A02
000379f0 54280025	addq.b	#2,routine_secondary(a0)
000379f4 317cff800010	move.w	#-$80,x_vel(a0)
000379fa 4228001a	clr.b	mapping_frame(a0)
000379fe 3268002c	movea.w	objoff_2C(a0),a1
00037a02 4e75	rts	
00037a04 4e75	rts	
00037a06 7000	moveq	#0,d0
00037a08 10280024	move.b	routine(a0),d0
00037a0c 323b0006	move.w	Obj9B_Index(pc,d0.w),d1
00037a10 4efb1002	jmp	Obj9B_Index(pc,d1.w)
00037a18 6000ebda	bra.w	LoadSubObject
00037a1c 3268002c	movea.w	objoff_2C(a0),a1
00037a20 45fa000a	lea	word_37A2C(pc),a2
00037a24 6100000a	bsr.w	loc_37A30
00037a28 6000ed5e	bra.w	Obj_DeleteBehindScreen
00037a30 216900080008	move.l	x_pos(a1),x_pos(a0)
00037a36 2169000c000c	move.l	y_pos(a1),y_pos(a0)
00037a3c 301a	move.w	(a2)+,d0
00037a3e d1680008	add.w	d0,x_pos(a0)
00037a42 301a	move.w	(a2)+,d0
00037a44 d168000c	add.w	d0,y_pos(a0)
00037a48 4e75	rts	
00037a4e 6630	bne.s	return_37A80
00037a56 137c0002001a	move.b	#2,mapping_frame(a1)
00037a5c 137c00180028	move.b	#$18,subtype(a1)
00037a62 3348002c	move.w	a0,objoff_2C(a1)
00037a66 3149002c	move.w	a1,objoff_2C(a0)
00037a6a 336800080008	move.w	x_pos(a0),x_pos(a1)
00037a70 58690008	addq.w	#4,x_pos(a1)
00037a74 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00037a7a 04690018000c	subi.w	#$18,y_pos(a1)
00037a80 4e75	rts	
00037a82 7000	moveq	#0,d0
00037a84 10280024	move.b	routine(a0),d0
00037a88 323b0006	move.w	Obj9C_Index(pc,d0.w),d1
00037a8c 4efb1002	jmp	Obj9C_Index(pc,d1.w)
00037a94 6000eb5e	bra.w	LoadSubObject
00037a98 3268002c	movea.w	objoff_2C(a0),a1
00037a9c 10280032	move.b	objoff_32(a0),d0
00037aa0 b011	cmp.b	id(a1),d0
00037aa2 66006fa4	bne.w	JmpTo65_DeleteObject
00037aa6 216900080008	move.l	x_pos(a1),x_pos(a0)
00037aac 2169000c000c	move.l	y_pos(a1),y_pos(a0)
00037ab2 2268002e	movea.l	objoff_2E(a0),a1
00037aba 6000eccc	bra.w	Obj_DeleteBehindScreen
00037ac2 662c	bne.s	+
00037aca 137c0006001a	move.b	#6,mapping_frame(a1)
00037ad0 137c001a0028	move.b	#$1A,subtype(a1)
00037ad6 3348002c	move.w	a0,objoff_2C(a1)
00037ada 336800080008	move.w	x_pos(a0),x_pos(a1)
00037ae0 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00037ae6 2368002e002e	move.l	objoff_2E(a0),objoff_2E(a1)
00037aec 13500032	move.b	id(a0),objoff_32(a1)
00037af0 4e75	rts	
00037af6 6638	bne.s	+
00037afe 137c0006001a	move.b	#6,mapping_frame(a1)
00037b04 137c001c0028	move.b	#$1C,subtype(a1)
00037b0a 336800080008	move.w	x_pos(a0),x_pos(a1)
00037b10 046900140008	subi.w	#$14,x_pos(a1)
00037b16 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00037b1c 0669000a000c	addi.w	#$A,y_pos(a1)
00037b22 337cff000010	move.w	#-$100,x_vel(a1)
00037b2c 234a002a	move.l	a2,objoff_2A(a1)
00037b30 4e75	rts	
00037bfa 7000	moveq	#0,d0
00037bfc 10280024	move.b	routine(a0),d0
00037c00 323b0006	move.w	Obj9D_Index(pc,d0.w),d1
00037c04 4efb1002	jmp	Obj9D_Index(pc,d1.w)
00037c10 6100e9e2	bsr.w	LoadSubObject
00037c14 117c0010002a	move.b	#$10,Obj9D_timer(a0)
00037c1a 4e75	rts	
00037c1c 6100eab8	bsr.w	Obj_GetOrientationToPlayer
00037c20 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
00037c26 08a800000022	bclr	#status.npc.x_flip,status(a0)
00037c2c 4a40	tst.w	d0
00037c2e 670c	beq.s	+
00037c30 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00037c36 08e800000022	bset	#status.npc.x_flip,status(a0)
00037c3c 06420060	addi.w	#$60,d2
00037c40 0c4200c0	cmpi.w	#$C0,d2
00037c44 640a	bcc.s	+
00037c46 4a28002e	tst.b	Obj9D_attack_timer(a0)
00037c4a 671a	beq.s	Obj9D_StartThrowing
00037c4c 5328002e	subq.b	#1,Obj9D_attack_timer(a0)
00037c50 5328002a	subq.b	#1,Obj9D_timer(a0)
00037c54 6b04	bmi.s	Obj9D_StartClimbing
00037c5a 54280024	addq.b	#2,routine(a0)
00037c5e 61000022	bsr.w	Obj9D_SetClimbingDirection
00037c66 117c00060024	move.b	#6,routine(a0)
00037c6c 117c0001001a	move.b	#1,mapping_frame(a0)
00037c72 117c0008002a	move.b	#8,Obj9D_timer(a0)
00037c78 117c0020002e	move.b	#$20,Obj9D_attack_timer(a0)
00037c82 3028002c	move.w	Obj9D_climb_table_index(a0),d0
00037c86 0c40000c	cmpi.w	#$C,d0
00037c8a 6502	blo.s	+
00037c8c 7000	moveq	#0,d0
00037c8e 43fb0012	lea	Obj9D_ClimbData(pc,d0.w),a1
00037c92 5440	addq.w	#2,d0
00037c94 3140002c	move.w	d0,Obj9D_climb_table_index(a0)
00037c98 11590012	move.b	(a1)+,y_vel(a0)
00037c9c 1159002a	move.b	(a1)+,Obj9D_timer(a0)
00037ca0 4e75	rts	
00037cae 5328002a	subq.b	#1,Obj9D_timer(a0)
00037cb2 6712	beq.s	Obj9D_StopClimbing
00037cb8 43f900037d88	lea	(Ani_obj09).l,a1
00037cc6 55280024	subq.b	#2,routine(a0)
00037cca 117c0010002a	move.b	#$10,Obj9D_timer(a0)
00037cd4 7000	moveq	#0,d0
00037cd6 10280025	move.b	routine_secondary(a0),d0
00037cda 323b000a	move.w	Obj9D_ThrowingStates(pc,d0.w),d1
00037cde 4ebb1006	jsr	Obj9D_ThrowingStates(pc,d1.w)
00037cea 5328002a	subq.b	#1,Obj9D_timer(a0)
00037cee 6b02	bmi.s	+
00037cf0 4e75	rts	
00037cf6 117c0008002a	move.b	#8,Obj9D_timer(a0)
00037cfc 117c0002001a	move.b	#2,mapping_frame(a0)
00037d02 6000001e	bra.w	Obj9D_CreateCoconut
00037d06 5328002a	subq.b	#1,Obj9D_timer(a0)
00037d0a 6b02	bmi.s	+
00037d0c 4e75	rts	
00037d12 117c00040024	move.b	#4,routine(a0)
00037d18 117c0008002a	move.b	#8,Obj9D_timer(a0)
00037d1e 6000ff62	bra.w	Obj9D_SetClimbingDirection
00037d26 664c	bne.s	return_37D74
00037d2e 137c0003001a	move.b	#3,mapping_frame(a1)
00037d34 137c00200028	move.b	#$20,subtype(a1)
00037d3a 336800080008	move.w	x_pos(a0),x_pos(a1)
00037d40 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00037d46 0669fff3000c	addi.w	#-$D,y_pos(a1)
00037d4c 7000	moveq	#0,d0
00037d4e 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00037d54 6602	bne.s	+
00037d56 7004	moveq	#4,d0
00037d58 45fb001c	lea	Obj9D_ThrowData(pc,d0.w),a2
00037d5c 301a	move.w	(a2)+,d0
00037d5e d1690008	add.w	d0,x_pos(a1)
00037d62 335a0010	move.w	(a2)+,x_vel(a1)
00037d66 337cff000012	move.w	#-$100,y_vel(a1)
00037d70 234a002a	move.l	a2,objoff_2A(a1)
00037d74 4e75	rts	
00037e16 7000	moveq	#0,d0
00037e18 1028003b	move.b	objoff_3B(a0),d0
00037e1c 323b0006	move.w	Obj9E_Index(pc,d0.w),d1
00037e20 4efb1002	jmp	Obj9E_Index(pc,d1.w)
00037e30 6100e7c2	bsr.w	LoadSubObject
00037e34 117c00800016	move.b	#$80,y_radius(a0)
00037e3a 5428003b	addq.b	#2,objoff_3B(a0)
00037e3e 60000134	bra.w	loc_37F74
00037e42 6100e892	bsr.w	Obj_GetOrientationToPlayer
00037e46 3802	move.w	d2,d4
00037e48 3a03	move.w	d3,d5
00037e4a 06420080	addi.w	#$80,d2
00037e4e 0c420100	cmpi.w	#$100,d2
00037e52 640a	bhs.s	+
00037e54 06430080	addi.w	#$80,d3
00037e58 0c430100	cmpi.w	#$100,d3
00037e5c 6504	blo.s	loc_37E62
00037e62 5428003b	addq.b	#2,objoff_3B(a0)
00037e66 117c0010003a	move.b	#$10,objoff_3A(a0)
00037e6c 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
00037e72 4a40	tst.w	d0
00037e74 6706	beq.s	+
00037e76 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00037e7c 4444	neg.w	d4
00037e7e e74c	lsl.w	#3,d4
00037e80 0244ff00	andi.w	#$FF00,d4
00037e84 31440010	move.w	d4,x_vel(a0)
00037e88 4445	neg.w	d5
00037e8a e74d	lsl.w	#3,d5
00037e8c 0245ff00	andi.w	#$FF00,d5
00037e90 31450012	move.w	d5,y_vel(a0)
00037e98 5328003a	subq.b	#1,objoff_3A(a0)
00037e9c 6b04	bmi.s	+
00037ea2 5428003b	addq.b	#2,objoff_3B(a0)
00037ea6 117c00080039	move.b	#8,objoff_39(a0)
00037eac 117c001c003a	move.b	#$1C,objoff_3A(a0)
00037eb6 5328003a	subq.b	#1,objoff_3A(a0)
00037eba 6708	beq.s	+
00037ec4 11680039003b	move.b	objoff_39(a0),objoff_3B(a0)
00037eca 117c0020003a	move.b	#$20,objoff_3A(a0)
00037ed4 5328003a	subq.b	#1,objoff_3A(a0)
00037ed8 6704	beq.s	+
00037ede 117c0006003b	move.b	#6,objoff_3B(a0)
00037ee4 117c00020039	move.b	#2,objoff_39(a0)
00037eea 117c001c003a	move.b	#$1C,objoff_3A(a0)
00037ef0 44680010	neg.w	x_vel(a0)
00037ef4 44680012	neg.w	y_vel(a0)
00037efc 3268003e	movea.w	parent(a0),a1
00037f00 0c11009e	cmpi.b	#ObjID_Crawlton,id(a1)
00037f04 66006b42	bne.w	JmpTo65_DeleteObject
00037f08 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
00037f0e 082900000001	btst	#render_flags.x_flip,render_flags(a1)
00037f14 6706	beq.s	+
00037f16 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
00037f1c 117c00800014	move.b	#$80,objoff_14(a0)
00037f22 316900080008	move.w	x_pos(a1),x_pos(a0)
00037f28 3169000c000c	move.w	y_pos(a1),y_pos(a0)
00037f2e 0c290006003b	cmpi.b	#6,objoff_3B(a1)
00037f34 6636	bne.s	loc_37F6C
00037f36 34290010	move.w	x_vel(a1),d2
00037f3a e042	asr.w	#8,d2
00037f3c 36290012	move.w	y_vel(a1),d3
00037f40 e043	asr.w	#8,d3
00037f42 45e80010	lea	subspr_data(a0),a2
00037f46 1029003a	move.b	objoff_3A(a1),d0
00037f4a 7218	moveq	#$18,d1
00037f4c 7c06	moveq	#6,d6
00037f50 3a2a0002	move.w	2(a2),d5
00037f54 b001	cmp.b	d1,d0
00037f56 6404	bhs.s	+
00037f58 d842	add.w	d2,d4
00037f5a da43	add.w	d3,d5
00037f5c 34c4	move.w	d4,(a2)+
00037f5e 34c5	move.w	d5,(a2)+
00037f64 6506	bcs.s	loc_37F6C
00037f66 544a	addq.w	#next_subspr-4,a2
00037f68 51ceffe4	dbf	d6,-
00037f6c 303c0280	move.w	#object_display_list_size*5,d0
00037f78 666c	bne.s	+
00037f80 136800010001	move.b	render_flags(a0),render_flags(a1)
00037f86 08e900060001	bset	#render_flags.multi_sprite,render_flags(a1)
00037f8c 236800040004	move.l	mappings(a0),mappings(a1)
00037f92 336800020002	move.w	art_tile(a0),art_tile(a1)
00037f98 137c000a003b	move.b	#$A,objoff_3B(a1)
00037f9e 137c0000000b	move.b	#0,mainspr_mapframe(a1)
00037fa4 137c0080000e	move.b	#$80,mainspr_width(a1)
00037faa 137c0007000f	move.b	#7,mainspr_childsprites(a1)
00037fb0 3348003e	move.w	a0,parent(a1)
00037fb4 34280008	move.w	x_pos(a0),d2
00037fb8 33420008	move.w	d2,x_pos(a1)
00037fbc 3628000c	move.w	y_pos(a0),d3
00037fc0 3343000c	move.w	d3,y_pos(a1)
00037fc4 137c00800014	move.b	#$80,objoff_14(a1)
00037fca 08e900040001	bset	#render_flags.explicit_height,render_flags(a1)
00037fd0 45e90010	lea	subspr_data(a1),a2
00037fd4 7c06	moveq	#6,d6
00037fd8 34c3	move.w	d3,(a2)+
00037fda 34fc0002	move.w	#2,(a2)+
00037fde 06410010	addi.w	#$10,d1
00037fe2 51cefff2	dbf	d6,-
00037fe6 4e75	rts	
0003800c 7000	moveq	#0,d0
0003800e 10280024	move.b	routine(a0),d0
00038012 323b0006	move.w	Obj9F_Index(pc,d0.w),d1
00038016 4efb1002	jmp	Obj9F_Index(pc,d1.w)
00038022 6100e5d0	bsr.w	LoadSubObject
00038026 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0003802c 6706	beq.s	+
0003802e 08e800000022	bset	#status.npc.x_flip,status(a0)
00038034 317cffc00010	move.w	#-$40,x_vel(a0)
0003803a 117c000c0016	move.b	#$C,y_radius(a0)
00038040 117c00180017	move.b	#$18,x_radius(a0)
00038046 317c0140002a	move.w	#$140,objoff_2A(a0)
0003804c 4e75	rts	
0003804e 6100e686	bsr.w	Obj_GetOrientationToPlayer
00038052 4a40	tst.w	d0
00038054 6708	beq.s	loc_3805E
00038056 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0003805c 670a	beq.s	loc_38068
0003805e 06420060	addi.w	#$60,d2
00038062 0c4200c0	cmpi.w	#$C0,d2
00038066 6546	blo.s	loc_380AE
0003806c 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00038072 0c41fff8	cmpi.w	#-8,d1
00038076 6d1e	blt.s	loc_38096
00038078 0c41000c	cmpi.w	#$C,d1
0003807c 6c18	bge.s	loc_38096
0003807e d368000c	add.w	d1,y_pos(a0)
00038082 5368002a	subq.w	#1,objoff_2A(a0)
00038086 6b12	bmi.s	loc_3809A
00038088 43f900038304	lea	(Ani_obj9F).l,a1
00038096 44680010	neg.w	x_vel(a0)
0003809a 54280024	addq.b	#2,routine(a0)
0003809e 117c0000001a	move.b	#0,mapping_frame(a0)
000380a4 317c003b002a	move.w	#$3B,objoff_2A(a0)
000380ae 117c00060024	move.b	#6,routine(a0)
000380b4 117c0000001a	move.b	#0,mapping_frame(a0)
000380ba 317c0008002a	move.w	#8,objoff_2A(a0)
000380c4 4a280001	tst.b	render_flags(a0)
000380c8 6a1a	bpl.s	loc_380E4
000380ca 6100e60a	bsr.w	Obj_GetOrientationToPlayer
000380ce 4a40	tst.w	d0
000380d0 6708	beq.s	loc_380DA
000380d2 082800000001	btst	#render_flags.x_flip,render_flags(a0)
000380d8 670a	beq.s	loc_380E4
000380da 06420060	addi.w	#$60,d2
000380de 0c4200c0	cmpi.w	#$C0,d2
000380e2 65ca	blo.s	loc_380AE
000380e4 5368002a	subq.w	#1,objoff_2A(a0)
000380e8 6b04	bmi.s	loc_380EE
000380ee 55280024	subq.b	#2,routine(a0)
000380f2 317c0140002a	move.w	#$140,objoff_2A(a0)
000380fc 7000	moveq	#0,d0
000380fe 10280025	move.b	routine_secondary(a0),d0
00038102 323b000a	move.w	off_3810E(pc,d0.w),d1
00038106 4ebb1006	jsr	off_3810E(pc,d1.w)
00038114 5368002a	subq.w	#1,objoff_2A(a0)
00038118 6b02	bmi.s	loc_3811C
0003811a 4e75	rts	
0003811c 54280025	addq.b	#2,routine_secondary(a0)
00038120 117c0003001a	move.b	#3,mapping_frame(a0)
00038126 6000016a	bra.w	loc_38292
0003812a 4a28002c	tst.b	objoff_2C(a0)
0003812e 6602	bne.s	loc_38132
00038130 4e75	rts	
00038132 54280025	addq.b	#2,routine_secondary(a0)
00038136 317c0020002a	move.w	#$20,objoff_2A(a0)
0003813c 4e75	rts	
0003813e 5368002a	subq.w	#1,objoff_2A(a0)
00038142 6b02	bmi.s	loc_38146
00038144 4e75	rts	
00038146 42280025	clr.b	routine_secondary(a0)
0003814a 4228002c	clr.b	objoff_2C(a0)
0003814e 117c00020024	move.b	#2,routine(a0)
00038154 317c0140002a	move.w	#$140,objoff_2A(a0)
0003815a 4e75	rts	
0003815c 7000	moveq	#0,d0
0003815e 10280024	move.b	routine(a0),d0
00038162 323b0006	move.w	ObjA0_Index(pc,d0.w),d1
00038166 4efb1002	jmp	ObjA0_Index(pc,d1.w)
00038170 6100e482	bsr.w	LoadSubObject
00038174 3268002c	movea.w	objoff_2C(a0),a1
00038178 10290001	move.b	render_flags(a1),d0
0003817c 02000001	andi.b	#1,d0
00038180 81280001	or.b	d0,render_flags(a0)
00038184 3028002e	move.w	objoff_2E(a0),d0
00038188 670e	beq.s	loc_38198
0003818a 117c0004001a	move.b	#4,mapping_frame(a0)
00038190 5c680008	addq.w	#6,x_pos(a0)
00038194 5c68000c	addq.w	#6,y_pos(a0)
00038198 e248	lsr.w	#1,d0
0003819a 117b0008002a	move.b	byte_381A4(pc,d0.w),objoff_2A(a0)
000381ac 3268002c	movea.w	objoff_2C(a0),a1
000381b0 0c11009f	cmpi.b	#ObjID_Shellcracker,id(a1)
000381b4 661a	bne.s	loc_381D0
000381b6 7000	moveq	#0,d0
000381b8 10280025	move.b	routine_secondary(a0),d0
000381bc 323b000a	move.w	off_381C8(pc,d0.w),d1
000381c0 4ebb1006	jsr	off_381C8(pc,d1.w)
000381d0 117c00040024	move.b	#4,routine(a0)
000381d6 317c0040002a	move.w	#$40,objoff_2A(a0)
000381e0 5328002a	subq.b	#1,objoff_2A(a0)
000381e4 6704	beq.s	loc_381EA
000381e6 6b02	bmi.s	loc_381EA
000381e8 4e75	rts	
000381ea 54280025	addq.b	#2,routine_secondary(a0)
000381ee 3028002e	move.w	objoff_2E(a0),d0
000381f2 0c40000e	cmpi.w	#$E,d0
000381f6 6422	bhs.s	loc_3821A
000381f8 343cfc00	move.w	#-$400,d2
000381fc 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00038202 6702	beq.s	loc_38206
00038204 4442	neg.w	d2
00038206 31420010	move.w	d2,x_vel(a0)
0003820a e248	lsr.w	#1,d0
0003820c 123b0014	move.b	byte_38222(pc,d0.w),d1
00038210 1141002a	move.b	d1,objoff_2A(a0)
00038214 1141002b	move.b	d1,objoff_2B(a0)
00038218 4e75	rts	
0003821a 317c000b002a	move.w	#$B,objoff_2A(a0)
00038220 4e75	rts	
0003822e 5328002a	subq.b	#1,objoff_2A(a0)
00038232 6704	beq.s	loc_38238
00038234 6b02	bmi.s	loc_38238
00038236 4e75	rts	
00038238 54280025	addq.b	#2,routine_secondary(a0)
0003823c 117c0008002a	move.b	#8,objoff_2A(a0)
00038242 4e75	rts	
00038244 5328002a	subq.b	#1,objoff_2A(a0)
00038248 6704	beq.s	loc_3824E
0003824a 6b02	bmi.s	loc_3824E
0003824c 4e75	rts	
0003824e 54280025	addq.b	#2,routine_secondary(a0)
00038252 44680010	neg.w	x_vel(a0)
00038256 4e75	rts	
0003825c 5328002b	subq.b	#1,objoff_2B(a0)
00038260 6704	beq.s	loc_38266
00038262 6b02	bmi.s	loc_38266
00038264 4e75	rts	
00038266 4a68002e	tst.w	objoff_2E(a0)
0003826a 660e	bne.s	loc_3827A
0003826c 3268002c	movea.w	objoff_2C(a0),a1
00038270 137c0000001a	move.b	#0,mapping_frame(a1)
00038276 50e9002c	st.b	objoff_2C(a1)
0003827a 584f	addq.w	#4,sp
0003828a 6b0067bc	bmi.w	JmpTo65_DeleteObject
00038292 7200	moveq	#0,d1
00038294 7c07	moveq	#7,d6
0003829a 6652	bne.s	return_382EE
000382a2 137c00260028	move.b	#$26,subtype(a1)
000382a8 137c0005001a	move.b	#5,mapping_frame(a1)
000382ae 137c00040018	move.b	#4,priority(a1)
000382b4 3348002c	move.w	a0,objoff_2C(a1)
000382b8 3341002e	move.w	d1,objoff_2E(a1)
000382bc 336800080008	move.w	x_pos(a0),x_pos(a1)
000382c2 343cffec	move.w	#-$14,d2
000382c6 082800000001	btst	#render_flags.x_flip,render_flags(a0)
000382cc 670a	beq.s	loc_382D8
000382ce 4442	neg.w	d2
000382d0 4a41	tst.w	d1
000382d2 6704	beq.s	loc_382D8
000382d4 0442000c	subi.w	#$C,d2
000382d8 d5690008	add.w	d2,x_pos(a1)
000382dc 3368000c000c	move.w	y_pos(a0),y_pos(a1)
000382e8 5441	addq.w	#2,d1
000382ea 51ceffaa	dbf	d6,loc_38296
000382ee 4e75	rts	
000383b4 7000	moveq	#0,d0
000383b6 10280024	move.b	routine(a0),d0
000383ba 323b0006	move.w	ObjA1_Index(pc,d0.w),d1
000383be 4efb1002	jmp	ObjA1_Index(pc,d1.w)
000383cc 6100e226	bsr.w	LoadSubObject
000383d0 303cffc0	move.w	#-$40,d0
000383d4 082800000001	btst	#render_flags.x_flip,render_flags(a0)
000383da 6702	beq.s	loc_383DE
000383dc 4440	neg.w	d0
000383de 31400010	move.w	d0,x_vel(a0)
000383e2 117c00100016	move.b	#$10,y_radius(a0)
000383e8 117c00100017	move.b	#$10,x_radius(a0)
000383ee 4e75	rts	
000383f0 4a280001	tst.b	render_flags(a0)
000383f4 6a26	bpl.s	loc_3841C
000383f6 6100e2de	bsr.w	Obj_GetOrientationToPlayer
000383fa 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00038400 6702	beq.s	loc_38404
00038402 5540	subq.w	#2,d0
00038404 4a40	tst.w	d0
00038406 6614	bne.s	loc_3841C
00038408 06420080	addi.w	#$80,d2
0003840c 0c420100	cmpi.w	#$100,d2
00038410 640a	bhs.s	loc_3841C
00038412 06430040	addi.w	#$40,d3
00038416 0c430080	cmpi.w	#$80,d3
0003841a 6536	blo.s	loc_38452
00038420 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00038426 0c41fff8	cmpi.w	#-8,d1
0003842a 6d18	blt.s	loc_38444
0003842c 0c41000c	cmpi.w	#$C,d1
00038430 6c12	bge.s	loc_38444
00038432 d368000c	add.w	d1,y_pos(a0)
00038436 43f9000385d4	lea	(Ani_objA1).l,a1
00038444 54280024	addq.b	#2,routine(a0)
00038448 117c003b002a	move.b	#$3B,objoff_2A(a0)
00038452 58280024	addq.b	#4,routine(a0)
00038456 117c0003001a	move.b	#3,mapping_frame(a0)
0003845c 117c0008002a	move.b	#8,objoff_2A(a0)
00038466 5328002a	subq.b	#1,objoff_2A(a0)
0003846a 6b04	bmi.s	loc_38470
00038470 55280024	subq.b	#2,routine(a0)
00038474 44680010	neg.w	x_vel(a0)
00038478 086800000022	bchg	#status.npc.x_flip,status(a0)
00038482 5328002a	subq.b	#1,objoff_2A(a0)
00038486 6b04	bmi.s	loc_3848C
0003848c 54280024	addq.b	#2,routine(a0)
00038490 117c0004001a	move.b	#4,mapping_frame(a0)
00038496 610000a6	bsr.w	ObjA1_LoadPincers
000384a2 7000	moveq	#0,d0
000384a4 10280024	move.b	routine(a0),d0
000384a8 323b0006	move.w	ObjA2_Index(pc,d0.w),d1
000384ac 4efb1002	jmp	ObjA2_Index(pc,d1.w)
000384b6 6100e13c	bsr.w	LoadSubObject
000384be 4a280001	tst.b	render_flags(a0)
000384c2 6a006584	bpl.w	JmpTo65_DeleteObject
000384c6 5368002a	subq.w	#1,objoff_2A(a0)
000384ca 6b4e	bmi.s	loc_3851A
000384cc 3268002c	movea.w	objoff_2C(a0),a1
000384d0 0c1100a1	cmpi.b	#ObjID_Slicer,id(a1)
000384d4 6644	bne.s	loc_3851A
000384d6 7000	moveq	#0,d0
000384d8 10280025	move.b	routine_secondary(a0),d0
000384dc 323b0018	move.w	off_384F6(pc,d0.w),d1
000384e0 4ebb1014	jsr	off_384F6(pc,d1.w)
000384e8 43f9000385da	lea	(Ani_objA2).l,a1
000384f8 6100e1dc	bsr.w	Obj_GetOrientationToPlayer
000384fc 343b0018	move.w	ObjA2_acceleration(pc,d0.w),d2
00038500 d5680010	add.w	d2,x_vel(a0)
00038504 343b1010	move.w	ObjA2_acceleration(pc,d1.w),d2
00038508 d5680012	add.w	d2,y_vel(a0)
0003850c 303c0200	move.w	#$200,d0
00038510 3200	move.w	d0,d1
00038512 6000e206	bra.w	Obj_CapSpeed
0003851a 54280024	addq.b	#2,routine(a0)
0003851e 317c0060002a	move.w	#$60,objoff_2A(a0)
00038524 5368002a	subq.w	#1,objoff_2A(a0)
00038528 6b00651e	bmi.w	JmpTo65_DeleteObject
00038530 43f9000385da	lea	(Ani_objA2).l,a1
0003853e 45e8003c	lea	objoff_3C(a0),a2
00038542 7200	moveq	#0,d1
00038544 7c01	moveq	#1,d6
0003854a 666e	bne.s	return_385BA
00038552 137c002a0028	move.b	#$2A,subtype(a1)
00038558 136800010001	move.b	render_flags(a0),render_flags(a1)
0003855e 137c0005001a	move.b	#5,mapping_frame(a1)
00038564 137c00040018	move.b	#4,priority(a1)
0003856a 337c0078002a	move.w	#$78,objoff_2A(a1)
00038570 3348002c	move.w	a0,objoff_2C(a1)
00038574 34c9	move.w	a1,(a2)+
00038576 303cfe00	move.w	#-$200,d0
0003857a 082900000001	btst	#render_flags.x_flip,render_flags(a1)
00038580 6708	beq.s	loc_3858A
00038582 4440	neg.w	d0
00038584 08e900000022	bset	#status.npc.x_flip,status(a1)
0003858a 33400010	move.w	d0,x_vel(a1)
0003858e 47fb102c	lea	ObjA1_Pincer_Offsets(pc,d1.w),a3
00038592 101b	move.b	(a3)+,d0
00038594 4880	ext.w	d0
00038596 082900000001	btst	#render_flags.x_flip,render_flags(a1)
0003859c 6702	beq.s	loc_385A0
0003859e 4440	neg.w	d0
000385a0 d0680008	add.w	x_pos(a0),d0
000385a4 33400008	move.w	d0,x_pos(a1)
000385a8 101b	move.b	(a3)+,d0
000385aa 4880	ext.w	d0
000385ac d068000c	add.w	y_pos(a0),d0
000385b0 3340000c	move.w	d0,y_pos(a1)
000385b4 5441	addq.w	#2,d1
000385b6 51ceff8e	dbf	d6,loc_38546
000385ba 4e75	rts	
0003873e 7000	moveq	#0,d0
00038740 10280024	move.b	routine(a0),d0
00038744 323b0006	move.w	ObjA3_Index(pc,d0.w),d1
00038748 4efb1002	jmp	ObjA3_Index(pc,d1.w)
0003875a 6100de98	bsr.w	LoadSubObject
0003875e 317c0040002a	move.w	#$40,objoff_2A(a0)
00038764 4e75	rts	
00038766 5368002a	subq.w	#1,objoff_2A(a0)
0003876a 6b04	bmi.s	loc_38770
00038770 54280024	addq.b	#2,routine(a0)
00038774 317cff000010	move.w	#-$100,x_vel(a0)
0003877a 317c00400012	move.w	#$40,y_vel(a0)
00038780 317c0002002e	move.w	#2,objoff_2E(a0)
00038786 4268002a	clr.w	objoff_2A(a0)
0003878a 317c00800030	move.w	#$80,objoff_30(a0)
00038794 53680030	subq.w	#1,objoff_30(a0)
00038798 6b62	bmi.s	loc_387FC
0003879a 3028002a	move.w	objoff_2A(a0),d0
0003879e 6b0062a8	bmi.w	JmpTo65_DeleteObject
000387a2 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
000387a8 08a800000022	bclr	#status.npc.x_flip,status(a0)
000387ae 4a680010	tst.w	x_vel(a0)
000387b2 6b0c	bmi.s	loc_387C0
000387b4 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
000387ba 08e800000022	bset	#status.npc.x_flip,status(a0)
000387c0 5240	addq.w	#1,d0
000387c2 3140002a	move.w	d0,objoff_2A(a0)
000387c6 3228002c	move.w	objoff_2C(a0),d1
000387ca 343b1044	move.w	word_38810(pc,d1.w),d2
000387ce b042	cmp.w	d2,d0
000387d0 651a	blo.s	loc_387EC
000387d2 5441	addq.w	#2,d1
000387d4 3141002c	move.w	d1,objoff_2C(a0)
000387d8 43fb1046	lea	byte_38820(pc,d1.w),a1
000387dc 4a19	tst.b	(a1)+
000387de 6704	beq.s	loc_387E4
000387e0 4468002e	neg.w	objoff_2E(a0)
000387e4 4a19	tst.b	(a1)+
000387e6 6704	beq.s	loc_387EC
000387e8 44680012	neg.w	y_vel(a0)
000387ec 3028002e	move.w	objoff_2E(a0),d0
000387f0 d1680010	add.w	d0,x_vel(a0)
000387fc 54280024	addq.b	#2,routine(a0)
00038800 317c00800030	move.w	#$80,objoff_30(a0)
00038806 002800800020	ori.b	#$80,collision_flags(a0)
00038832 14280024	move.b	routine(a0),d2
00038836 43f9000388b6	lea	(Ani_objA3_a).l,a1
00038840 b4280024	cmp.b	routine(a0),d2
00038844 6604	bne.s	loc_3884A
0003884a 42a8001a	clr.l	mapping_frame(a0)
0003884e 4268001e	clr.w	anim_frame_duration(a0)
00038852 117c0003001a	move.b	#3,mapping_frame(a0)
0003885c 53680030	subq.w	#1,objoff_30(a0)
00038860 6b0e	bmi.s	loc_38870
00038862 43f9000388da	lea	(Ani_objA3_b).l,a1
00038870 54280024	addq.b	#2,routine(a0)
00038874 42a8001a	clr.l	mapping_frame(a0)
00038878 4268001e	clr.w	anim_frame_duration(a0)
00038880 43f9000388e6	lea	(Ani_objA3_c).l,a1
0003888e 117c00040024	move.b	#4,routine(a0)
00038894 317c00800030	move.w	#$80,objoff_30(a0)
0003889a 0228007f0020	andi.b	#$7F,collision_flags(a0)
000388a0 42a8001a	clr.l	mapping_frame(a0)
000388a4 4268001e	clr.w	anim_frame_duration(a0)
0003899c 7000	moveq	#0,d0
0003899e 10280024	move.b	routine(a0),d0
000389a2 323b0006	move.w	ObjA4_Index(pc,d0.w),d1
000389a6 4efb1002	jmp	ObjA4_Index(pc,d1.w)
000389b2 6000dc40	bra.w	LoadSubObject
000389b6 6100dd1e	bsr.w	Obj_GetOrientationToPlayer
000389ba 06420060	addi.w	#$60,d2
000389be 0c4200c0	cmpi.w	#$C0,d2
000389c2 640a	bhs.s	BranchTo6_JmpTo39_MarkObjGone
000389c4 06430040	addi.w	#$40,d3
000389c8 0c430080	cmpi.w	#$80,d3
000389cc 6504	blo.s	loc_389D2
000389d2 54280024	addq.b	#2,routine(a0)
000389da 6100dcfa	bsr.w	Obj_GetOrientationToPlayer
000389de 4a42	tst.w	d2
000389e0 6a02	bpl.s	.skip
000389e2 4442	neg.w	d2
000389e4 0c420010	cmpi.w	#$10,d2
000389e8 6510	blo.s	loc_389FA
000389ea 0c420060	cmpi.w	#$60,d2
000389ee 640a	bhs.s	loc_389FA
000389f0 317b00280010	move.w	word_38A1A(pc,d0.w),x_vel(a0)
000389f6 61000026	bsr.w	loc_38A1E
000389fa 4a43	tst.w	d3
000389fc 6a02	bpl.s	.skip
000389fe 4443	neg.w	d3
00038a00 0c430010	cmpi.w	#$10,d3
00038a04 6510	blo.s	BranchTo7_JmpTo39_MarkObjGone
00038a06 0c430060	cmpi.w	#$60,d3
00038a0a 640a	bhs.s	BranchTo7_JmpTo39_MarkObjGone
00038a0c 317b100c0012	move.w	word_38A1A(pc,d1.w),y_vel(a0)
00038a12 6100000a	bsr.w	loc_38A1E
00038a1e 117c00060024	move.b	#6,routine(a0)
00038a24 117c0040002a	move.b	#$40,objoff_2A(a0)
00038a2a 4e75	rts	
00038a2c 5328002a	subq.b	#1,objoff_2A(a0)
00038a30 6b12	bmi.s	loc_38A44
00038a36 43f900038a90	lea	(Ani_objA4).l,a1
00038a4a 117c00020024	move.b	#2,routine(a0)
00038a50 61000006	bsr.w	loc_38A58
00038a58 143c0030	move.b	#$30,d2
00038a5c 7c04	moveq	#word_38A68.counter,d6
00038a5e 45f900038a68	lea	(word_38A68).l,a2
00038a64 6000ddb4	bra.w	Obj_CreateProjectiles
00038aea 7000	moveq	#0,d0
00038aec 10280024	move.b	routine(a0),d0
00038af0 323b0006	move.w	ObjA5_Index(pc,d0.w),d1
00038af4 4efb1002	jmp	ObjA5_Index(pc,d1.w)
00038afe 6100daf4	bsr.w	LoadSubObject
00038b02 317cffc00010	move.w	#-$40,x_vel(a0)
00038b08 317c0080002a	move.w	#$80,objoff_2A(a0)
00038b0e 4e75	rts	
00038b10 4a28002b	tst.b	objoff_2B(a0)
00038b14 6708	beq.s	loc_38B1E
00038b16 5328002b	subq.b	#1,objoff_2B(a0)
00038b1a 60000010	bra.w	loc_38B2C
00038b1e 6100dbb6	bsr.w	Obj_GetOrientationToPlayer
00038b22 06420060	addi.w	#$60,d2
00038b26 0c4200c0	cmpi.w	#$C0,d2
00038b2a 6522	blo.s	loc_38B4E
00038b2c 5328002a	subq.b	#1,objoff_2A(a0)
00038b30 660a	bne.s	loc_38B3C
00038b32 317c0080002a	move.w	#$80,objoff_2A(a0)
00038b38 44680010	neg.w	x_vel(a0)
00038b40 43f900038cb8	lea	(Ani_objA5).l,a1
00038b4e 54280024	addq.b	#2,routine(a0)
00038b52 117c0028002b	move.b	#$28,objoff_2B(a0)
00038b58 117c0002001a	move.b	#2,mapping_frame(a0)
00038b62 5328002b	subq.b	#1,objoff_2B(a0)
00038b66 6b10	bmi.s	loc_38B78
00038b68 0c280014002b	cmpi.b	#$14,objoff_2B(a0)
00038b6e 6604	bne.s	+
00038b70 610000b0	bsr.w	loc_38C22
00038b78 55280024	subq.b	#2,routine(a0)
00038b7c 117c0040002b	move.b	#$40,objoff_2B(a0)
00038b86 7000	moveq	#0,d0
00038b88 10280024	move.b	routine(a0),d0
00038b8c 323b0006	move.w	ObjA6_Index(pc,d0.w),d1
00038b90 4efb1002	jmp	ObjA6_Index(pc,d1.w)
00038b9a 6100da58	bsr.w	LoadSubObject
00038b9e 317cffc00012	move.w	#-$40,y_vel(a0)
00038ba4 317c0080002a	move.w	#$80,objoff_2A(a0)
00038baa 4e75	rts	
00038bac 4a28002b	tst.b	objoff_2B(a0)
00038bb0 6708	beq.s	loc_38BBA
00038bb2 5328002b	subq.b	#1,objoff_2B(a0)
00038bb6 60000010	bra.w	loc_38BC8
00038bba 6100db1a	bsr.w	Obj_GetOrientationToPlayer
00038bbe 06420060	addi.w	#$60,d2
00038bc2 0c4200c0	cmpi.w	#$C0,d2
00038bc6 6522	blo.s	loc_38BEA
00038bc8 5328002a	subq.b	#1,objoff_2A(a0)
00038bcc 660a	bne.s	+
00038bce 317c0080002a	move.w	#$80,objoff_2A(a0)
00038bd4 44680012	neg.w	y_vel(a0)
00038bdc 43f900038cbe	lea	(Ani_objA6).l,a1
00038bea 54280024	addq.b	#2,routine(a0)
00038bee 117c0028002b	move.b	#$28,objoff_2B(a0)
00038bf4 117c0005001a	move.b	#5,mapping_frame(a0)
00038bfe 5328002b	subq.b	#1,objoff_2B(a0)
00038c02 6b10	bmi.s	loc_38C14
00038c04 0c280014002b	cmpi.b	#$14,objoff_2B(a0)
00038c0a 6604	bne.s	+
00038c0c 61000060	bsr.w	loc_38C6E
00038c14 55280024	subq.b	#2,routine(a0)
00038c18 117c0040002b	move.b	#$40,objoff_2B(a0)
00038c26 6644	bne.s	++
00038c2e 137c0006001a	move.b	#6,mapping_frame(a1)
00038c34 137c00340028	move.b	#$34,subtype(a1)
00038c3a 336800080008	move.w	x_pos(a0),x_pos(a1)
00038c40 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00038c46 337cfd000012	move.w	#-$300,y_vel(a1)
00038c4c 323c0100	move.w	#$100,d1
00038c50 45f8b000	lea	(MainCharacter).w,a2
00038c54 30280008	move.w	x_pos(a0),d0
00038c58 b06a0008	cmp.w	x_pos(a2),d0
00038c5c 6502	blo.s	+
00038c5e 4441	neg.w	d1
00038c60 33410010	move.w	d1,x_vel(a1)
00038c68 234a002a	move.l	a2,objoff_2A(a1)
00038c6c 4e75	rts	
00038c72 6638	bne.s	++
00038c7a 137c0006001a	move.b	#6,mapping_frame(a1)
00038c80 137c00340028	move.b	#$34,subtype(a1)
00038c86 336800080008	move.w	x_pos(a0),x_pos(a1)
00038c8c 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00038c92 323c0300	move.w	#$300,d1
00038c96 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00038c9c 6702	beq.s	+
00038c9e 4441	neg.w	d1
00038ca0 33410010	move.w	d1,x_vel(a1)
00038ca8 234a002a	move.l	a2,objoff_2A(a1)
00038cac 4e75	rts	
00038dba 7000	moveq	#0,d0
00038dbc 10280024	move.b	routine(a0),d0
00038dc0 323b0006	move.w	ObjA7_Index(pc,d0.w),d1
00038dc4 4efb1002	jmp	ObjA7_Index(pc,d1.w)
00038dcc 6100d826	bsr.w	LoadSubObject
00038dd0 303cffc0	move.w	#-$40,d0
00038dd4 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00038dda 6702	beq.s	+
00038ddc 4440	neg.w	d0
00038dde 31400010	move.w	d0,x_vel(a0)
00038de2 317c00ff002a	move.w	#$FF,objoff_2A(a0)
00038de8 117c0002002d	move.b	#2,objoff_2D(a0)
00038dee 45f9000391e0	lea	(ChildObject_391E0).l,a2
00038df4 6100d9da	bsr.w	LoadChildObject
00038df8 45f9000391e4	lea	(ChildObject_391E4).l,a2
00038dfe 6100d9d0	bsr.w	LoadChildObject
00038e02 45f9000391e8	lea	(ChildObject_391E8).l,a2
00038e08 6000d9c6	bra.w	LoadChildObject
00038e0c 7000	moveq	#0,d0
00038e0e 10280025	move.b	routine_secondary(a0),d0
00038e12 323b0032	move.w	off_38E46(pc,d0.w),d1
00038e16 4ebb102e	jsr	off_38E46(pc,d1.w)
00038e1e 7000	moveq	#0,d0
00038e20 7210	moveq	#$10,d1
00038e22 3268003c	movea.w	objoff_3C(a0),a1
00038e26 6100d938	bsr.w	Obj_AlignChildXY
00038e2a 3268003e	movea.w	parent(a0),a1
00038e2e 336800080008	move.w	x_pos(a0),x_pos(a1)
00038e34 3268003a	movea.w	objoff_3A(a0),a1
00038e38 336800080008	move.w	x_pos(a0),x_pos(a1)
00038e3e 45e8003a	lea	objoff_3A(a0),a2
00038e42 6000033e	bra.w	loc_39182
00038e52 6100d882	bsr.w	Obj_GetOrientationToPlayer
00038e56 06420040	addi.w	#$40,d2
00038e5a 0c420080	cmpi.w	#$80,d2
00038e5e 6406	bhs.s	loc_38E66
00038e60 0c43ff80	cmpi.w	#-$80,d3
00038e64 621e	bhi.s	loc_38E84
00038e66 5368002a	subq.w	#1,objoff_2A(a0)
00038e6a 6a16	bpl.s	return_38E82
00038e6c 317c00ff002a	move.w	#$FF,objoff_2A(a0)
00038e72 44680010	neg.w	x_vel(a0)
00038e76 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
00038e7c 086800000022	bchg	#status.npc.x_flip,status(a0)
00038e82 4e75	rts	
00038e84 54280025	addq.b	#2,routine_secondary(a0)
00038e88 31680010002e	move.w	x_vel(a0),objoff_2E(a0)
00038e8e 42680010	clr.w	x_vel(a0)
00038e92 117c0010002c	move.b	#$10,objoff_2C(a0)
00038e98 4e75	rts	
00038e9a 5328002c	subq.b	#1,objoff_2C(a0)
00038e9e 6b02	bmi.s	loc_38EA2
00038ea0 4e75	rts	
00038ea2 54280025	addq.b	#2,routine_secondary(a0)
00038ea6 317c02000012	move.w	#$200,y_vel(a0)
00038eac 117c0040002c	move.b	#$40,objoff_2C(a0)
00038eb2 4e75	rts	
00038eb4 4a280030	tst.b	objoff_30(a0)
00038eb8 6634	bne.s	ObjA7_GrabCharacter
00038eba 5328002c	subq.b	#1,objoff_2C(a0)
00038ebe 6716	beq.s	loc_38ED6
00038ec0 0c280020002c	cmpi.b	#$20,objoff_2C(a0)
00038ec6 6604	bne.s	loc_38ECC
00038ec8 44680012	neg.w	y_vel(a0)
00038ecc 43f900039214	lea	(Ani_objA7).l,a1
00038ed6 117c00000025	move.b	#0,routine_secondary(a0)
00038edc 42680012	clr.w	y_vel(a0)
00038ee0 3168002e0010	move.w	objoff_2E(a0),x_vel(a0)
00038ee6 117c0000001a	move.b	#0,mapping_frame(a0)
00038eec 4e75	rts	
00038eee 54280025	addq.b	#2,routine_secondary(a0)
00038ef2 32680032	movea.w	objoff_32(a0),a1
00038ef6 137c0081002a	move.b	#$81,obj_control(a1)
00038efc 42690010	clr.w	x_vel(a1)
00038f00 42690012	clr.w	y_vel(a1)
00038f04 137c000e001c	move.b	#AniIDSonAni_Float,anim(a1)
00038f0a 117c0001001a	move.b	#1,mapping_frame(a0)
00038f10 4a680012	tst.w	y_vel(a0)
00038f14 6b14	bmi.s	loc_38F2A
00038f16 44680012	neg.w	y_vel(a0)
00038f1a 1028002c	move.b	objoff_2C(a0),d0
00038f1e 04000040	subi.b	#$40,d0
00038f22 4440	neg.w	d0
00038f24 5200	addq.b	#1,d0
00038f26 1140002c	move.b	d0,objoff_2C(a0)
00038f2a 117c0001002a	move.b	#1,objoff_2A(a0)
00038f30 117c0010002b	move.b	#$10,objoff_2B(a0)
00038f36 117c00200037	move.b	#$20,objoff_37(a0)
00038f3c 4e75	rts	
00038f3e 610001fa	bsr.w	ObjA7_CheckExplode
00038f42 61000178	bsr.w	loc_390BC
00038f46 5328002c	subq.b	#1,objoff_2C(a0)
00038f4a 6702	beq.s	loc_38F4E
00038f4c 4e75	rts	
00038f4e 54280025	addq.b	#2,routine_secondary(a0)
00038f52 42680012	clr.w	y_vel(a0)
00038f56 4e75	rts	
00038f58 610001e0	bsr.w	ObjA7_CheckExplode
00038f5c 6000015e	bra.w	loc_390BC
00038f60 4e75	rts	
00038f62 600001d6	bra.w	ObjA7_CheckExplode
00038f66 7000	moveq	#0,d0
00038f68 10280024	move.b	routine(a0),d0
00038f6c 323b0006	move.w	ObjA8_Index(pc,d0.w),d1
00038f70 4efb1002	jmp	ObjA8_Index(pc,d1.w)
00038f7c 6100d676	bsr.w	LoadSubObject
00038f80 117c0003001a	move.b	#3,mapping_frame(a0)
00038f86 4e75	rts	
00038f88 3268002c	movea.w	objoff_2C(a0),a1
00038f8c 0c1100a7	cmpi.b	#ObjID_Grabber,id(a1)
00038f90 66005ab6	bne.w	JmpTo65_DeleteObject
00038f94 6100d814	bsr.w	InheritParentXYFlip
00038f98 3268002c	movea.w	objoff_2C(a0),a1
00038f9c 1029001a	move.b	mapping_frame(a1),d0
00038fa0 5600	addq.b	#3,d0
00038fa2 1140001a	move.b	d0,mapping_frame(a0)
00038fa6 10280021	move.b	collision_property(a0),d0
00038faa 672c	beq.s	BranchTo2_JmpTo45_DisplaySprite
00038fac 42280021	clr.b	collision_property(a0)
00038fb0 0c2900040025	cmpi.b	#4,routine_secondary(a1)
00038fb6 6620	bne.s	BranchTo2_JmpTo45_DisplaySprite
00038fb8 02000003	andi.b	#3,d0
00038fbc 671a	beq.s	BranchTo2_JmpTo45_DisplaySprite
00038fbe 42280020	clr.b	collision_flags(a0)
00038fc2 54280024	addq.b	#2,routine(a0)
00038fc6 d040	add.w	d0,d0
00038fc8 50e90030	st.b	objoff_30(a1)
00038fcc 337b000c0032	move.w	word_38FE0-6(pc,d0.w),objoff_32(a1)
00038fd2 337b000c0034	move.w	word_38FE0(pc,d0.w),objoff_34(a1)
00038fe8 3268002c	movea.w	objoff_2C(a0),a1
00038fec 30290032	move.w	objoff_32(a1),d0
00038ff0 6728	beq.s	loc_3901A
00038ff2 3440	movea.w	d0,a2
00038ff4 0c1100a7	cmpi.b	#ObjID_Grabber,id(a1)
00038ff8 6610	bne.s	loc_3900A
00038ffa 356800080008	move.w	x_pos(a0),x_pos(a2)
00039000 3568000c000c	move.w	y_pos(a0),y_pos(a2)
0003900a 157c0000002a	move.b	#0,obj_control(a2)
00039010 08ea00010022	bset	#status.player.in_air,status(a2)
0003901a 54280024	addq.b	#2,routine(a0)
00039022 3268002c	movea.w	objoff_2C(a0),a1
00039026 0c1100a7	cmpi.b	#ObjID_Grabber,id(a1)
0003902a 66005a1c	bne.w	JmpTo65_DeleteObject
00039032 7000	moveq	#0,d0
00039034 10280024	move.b	routine(a0),d0
00039038 323b0006	move.w	ObjA9_Index(pc,d0.w),d1
0003903c 4efb1002	jmp	ObjA9_Index(pc,d1.w)
00039044 6100d5ae	bsr.w	LoadSubObject
00039048 117c0002001a	move.b	#2,mapping_frame(a0)
0003904e 0468000c000c	subi.w	#$C,y_pos(a0)
00039054 4e75	rts	
00039056 3268002c	movea.w	objoff_2C(a0),a1
0003905a 0c1100a7	cmpi.b	#ObjID_Grabber,id(a1)
0003905e 660059e8	bne.w	JmpTo65_DeleteObject
00039066 7000	moveq	#0,d0
00039068 10280024	move.b	routine(a0),d0
0003906c 323b0006	move.w	ObjAA_Index(pc,d0.w),d1
00039070 4efb1002	jmp	ObjAA_Index(pc,d1.w)
00039078 6100d57a	bsr.w	LoadSubObject
0003907c 5168000c	subq.w	#8,y_pos(a0)
00039080 4e75	rts	
00039082 3268002c	movea.w	objoff_2C(a0),a1
00039086 0c1100a7	cmpi.b	#ObjID_Grabber,id(a1)
0003908a 660059bc	bne.w	JmpTo65_DeleteObject
0003908e 3029000c	move.w	y_pos(a1),d0
00039092 9068000c	sub.w	y_pos(a0),d0
00039096 6b06	bmi.s	+
00039098 e848	lsr.w	#4,d0
0003909a 1140001a	move.b	d0,mapping_frame(a0)
000390a2 7000	moveq	#0,d0
000390a4 10280024	move.b	routine(a0),d0
000390a8 323b0006	move.w	ObjAB_Index(pc,d0.w),d1
000390ac 4efb1002	jmp	ObjAB_Index(pc,d1.w)
000390b4 6000d53e	bra.w	LoadSubObject
000390bc 32680034	movea.w	objoff_34(a0),a1
000390c0 3011	move.w	(a1),d0
000390c2 4a280031	tst.b	objoff_31(a0)
000390c6 671e	beq.s	loc_390E6
000390c8 53280037	subq.b	#1,objoff_37(a0)
000390cc 672c	beq.s	loc_390FA
000390ce 12280036	move.b	objoff_36(a0),d1
000390d2 0200000c	andi.b	#$C,d0
000390d6 670c	beq.s	return_390E4
000390d8 b001	cmp.b	d1,d0
000390da 6708	beq.s	return_390E4
000390dc 11400036	move.b	d0,objoff_36(a0)
000390e0 52280038	addq.b	#1,objoff_38(a0)
000390e4 4e75	rts	
000390e6 0200000c	andi.b	#$C,d0
000390ea 67f8	beq.s	return_390E4
000390ec 4e71	nop	
000390ee 50e80031	st.b	objoff_31(a0)
000390f2 11400036	move.b	d0,objoff_36(a0)
000390f6 4e71	nop	
000390f8 4e75	rts	
000390fa 0c2800040038	cmpi.b	#4,objoff_38(a0)
00039100 6528	blo.s	+
00039102 117c000a0025	move.b	#$A,routine_secondary(a0)
00039108 42680012	clr.w	y_vel(a0)
0003910c 42280020	clr.b	collision_flags(a0)
00039110 34680032	movea.w	objoff_32(a0),a2
00039114 157c0000002a	move.b	#0,obj_control(a2)
0003911a 08ea00010022	bset	#status.player.in_air,status(a2)
00039120 157c0000001c	move.b	#AniIDSonAni_Walk,anim(a2)
00039126 42680032	clr.w	objoff_32(a0)
0003912a 117c00200037	move.b	#$20,objoff_37(a0)
00039130 42280031	clr.b	objoff_31(a0)
00039134 42280038	clr.b	objoff_38(a0)
00039138 4e75	rts	
0003913a 5328002a	subq.b	#1,objoff_2A(a0)
0003913e 6612	bne.s	+
00039140 1168002b002a	move.b	objoff_2B(a0),objoff_2A(a0)
00039146 5328002b	subq.b	#1,objoff_2B(a0)
0003914a 6708	beq.s	ObjA7_Poof
0003914c 086800050002	bchg	#palette_bit_0,art_tile(a0)
00039152 4e75	rts	
0003915a 117c00020024	move.b	#2,routine(a0)
00039160 08e800050002	bset	#palette_bit_0,art_tile(a0)
00039166 30280032	move.w	objoff_32(a0),d0
0003916a 6714	beq.s	+
0003916c 3440	movea.w	d0,a2
0003916e 157c0000002a	move.b	#0,obj_control(a2)
00039174 08ea00010022	bset	#status.player.in_air,status(a2)
0003917a 117c000b0020	move.b	#$B,collision_flags(a0)
00039180 4e75	rts	
00039182 4a78ffd8	tst.w	(Two_player_mode).w
00039186 6704	beq.s	+
00039190 0240ff80	andi.w	#$FF80,d0
00039194 9078f7da	sub.w	(Camera_X_pos_coarse).w,d0
00039198 0c400280	cmpi.w	#$280,d0
0003919c 62000006	bhi.w	+
000391a8 7000	moveq	#0,d0
000391aa 10280023	move.b	respawn_index(a0),d0
000391ae 6706	beq.s	+
000391b0 08b300070002	bclr	#7,Obj_respawn_data-Object_Respawn_Table(a3,d0.w)
000391b6 4a280030	tst.b	objoff_30(a0)
000391ba 6710	beq.s	+
000391bc 36680032	movea.w	objoff_32(a0),a3
000391c0 177c0000002a	move.b	#0,obj_control(a3)
000391c6 08eb00010022	bset	#status.player.in_air,status(a3)
000391cc 7c00	moveq	#0,d6
000391ce 1c28002d	move.b	objoff_2D(a0),d6
000391d8 51cefff8	dbf	d6,-
0003937a 7000	moveq	#0,d0
0003937c 10280024	move.b	routine(a0),d0
00039380 323b0006	move.w	ObjAC_Index(pc,d0.w),d1
00039384 4efb1002	jmp	ObjAC_Index(pc,d1.w)
0003938c 6100d266	bsr.w	LoadSubObject
00039390 117c0001001a	move.b	#1,mapping_frame(a0)
00039396 317cfd000010	move.w	#-$300,x_vel(a0)
0003939c 08a800010001	bclr	#render_flags.y_flip,render_flags(a0)
000393a2 6706	beq.s	+
000393a4 317cfb000010	move.w	#-$500,x_vel(a0)
000393ae 2149002e	move.l	a1,objoff_2E(a0)
000393b2 6000e70a	bra.w	loc_37ABE
000393ba 6100d3ba	bsr.w	loc_36776
000393be 6000d3c8	bra.w	Obj_DeleteBehindScreen
0003941c 7000	moveq	#0,d0
0003941e 10280024	move.b	routine(a0),d0
00039422 323b0006	move.w	ObjAD_Index(pc,d0.w),d1
00039426 4efb1002	jmp	ObjAD_Index(pc,d1.w)
0003942e 6100d1c4	bsr.w	LoadSubObject
00039432 117c000c001a	move.b	#$C,mapping_frame(a0)
00039438 4e75	rts	
0003943a 323c001b	move.w	#$1B,d1
0003943e 343c0008	move.w	#8,d2
00039442 363c0008	move.w	#8,d3
00039446 38280008	move.w	x_pos(a0),d4
00039452 7000	moveq	#0,d0
00039454 10280024	move.b	routine(a0),d0
00039458 323b0006	move.w	ObjAE_Index(pc,d0.w),d1
0003945c 4efb1002	jmp	ObjAE_Index(pc,d1.w)
0003946e 6100d184	bsr.w	LoadSubObject
00039472 117c0015001a	move.b	#$15,mapping_frame(a0)
00039478 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0003947e 6706	beq.s	+
00039480 08e800000022	bset	#status.npc.x_flip,status(a0)
00039486 4e75	rts	
00039488 6100d24c	bsr.w	Obj_GetOrientationToPlayer
0003948c 06420080	addi.w	#$80,d2
00039490 0c420100	cmpi.w	#$100,d2
00039494 6504	blo.s	+
0003949a 54280024	addq.b	#2,routine(a0)
000394a2 14280024	move.b	routine(a0),d2
000394a6 43f90003958a	lea	(Ani_objAE_a).l,a1
000394b0 b4280024	cmp.b	routine(a0),d2
000394b4 6604	bne.s	+
000394ba 43e8001a	lea	mapping_frame(a0),a1
000394be 4291	clr.l	(a1)
000394c0 42690004	clr.w	anim_frame_duration-mapping_frame(a1)
000394c4 12bc0008	move.b	#8,(a1)
000394c8 117c00060020	move.b	#6,collision_flags(a0)
000394d2 43f900039596	lea	(Ani_objAE_b).l,a1
000394e0 4a28002a	tst.b	objoff_2A(a0)
000394e4 6708	beq.s	+
000394e6 5328002a	subq.b	#1,objoff_2A(a0)
000394ee 54280024	addq.b	#2,routine(a0)
000394f2 43e8001a	lea	mapping_frame(a0),a1
000394f6 4291	clr.l	(a1)
000394f8 42690004	clr.w	anim_frame_duration-mapping_frame(a1)
000394fc 12bc000b	move.b	#$B,(a1)
00039500 61000024	bsr.w	loc_39526
00039508 43f9000395a2	lea	(Ani_objAE_c).l,a1
00039516 117c00080024	move.b	#8,routine(a0)
0003951c 117c0040002a	move.b	#$40,objoff_2A(a0)
0003952a 6648	bne.s	++
00039532 137c000d001a	move.b	#$D,mapping_frame(a1)
00039538 137c00460028	move.b	#$46,subtype(a1)
0003953e 336800080008	move.w	x_pos(a0),x_pos(a1)
00039544 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0003954a 0669000b000c	addi.w	#$B,y_pos(a1)
00039550 303cfe00	move.w	#-$200,d0
00039554 323cfff8	move.w	#-8,d1
00039558 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0003955e 6704	beq.s	+
00039560 4440	neg.w	d0
00039562 4441	neg.w	d1
00039564 33400010	move.w	d0,x_vel(a1)
00039568 d3690008	add.w	d1,x_pos(a1)
00039570 234a002a	move.l	a2,objoff_2A(a1)
00039574 4e75	rts	
0003972c 7000	moveq	#0,d0
0003972e 10280024	move.b	routine(a0),d0
00039732 323b0006	move.w	ObjAF_Index(pc,d0.w),d1
00039736 4efb1002	jmp	ObjAF_Index(pc,d1.w)
0003975e 6100ce94	bsr.w	LoadSubObject
00039762 117c001b0016	move.b	#$1B,y_radius(a0)
00039768 117c00100017	move.b	#$10,x_radius(a0)
0003976e 117c00000020	move.b	#0,collision_flags(a0)
00039774 117c00080021	move.b	#8,collision_property(a0)
0003977a 45f900039dc2	lea	(ChildObject_39DC2).l,a2
00039780 6100d04e	bsr.w	LoadChildObject
00039784 137c000e0024	move.b	#$E,routine(a1)
0003978a 45f900039dc6	lea	(ChildObject_39DC6).l,a2
00039790 6100d03e	bsr.w	LoadChildObject
00039794 137c00140024	move.b	#$14,routine(a1)
0003979a 45f900039dca	lea	(ChildObject_39DCA).l,a2
000397a0 6100d02e	bsr.w	LoadChildObject
000397a4 137c001a0024	move.b	#$1A,routine(a1)
000397aa 4e75	rts	
000397ac 3038ee00	move.w	(Camera_X_pos).w,d0
000397b0 0c400224	cmpi.w	#$224,d0
000397b4 6404	bhs.s	loc_397BA
000397ba 54280024	addq.b	#2,routine(a0)
000397be 317c003c002a	move.w	#60,objoff_2A(a0)
000397c4 317c01000012	move.w	#$100,y_vel(a0)
000397ca 303c0224	move.w	#$224,d0
000397ce 31c0eec8	move.w	d0,(Camera_Min_X_pos).w
000397d2 31c0eeca	move.w	d0,(Camera_Max_X_pos).w
000397d6 11fc0009f7aa	move.b	#9,(Current_Boss_ID).w
000397dc 70f9	moveq	#signextendB(MusID_FadeOut),d0
000397e6 5368002a	subq.w	#1,objoff_2A(a0)
000397ea 6b04	bmi.s	loc_397F0
000397f0 54280024	addq.b	#2,routine(a0)
000397f4 7093	moveq	#signextendB(MusID_Boss),d0
000397fe 1038fe0f	move.b	(Vint_runcount+3).w,d0
00039802 0200001f	andi.b	#$1F,d0
00039806 6606	bne.s	loc_3980E
00039808 70dc	moveq	#signextendB(SndID_Fire),d0
0003980e 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00039814 4a41	tst.w	d1
00039816 6b18	bmi.s	loc_39830
0003981c 7000	moveq	#0,d0
0003981e 7200	moveq	#0,d1
00039820 3268003e	movea.w	parent(a0),a1
00039824 6100cf3a	bsr.w	Obj_AlignChildXY
00039828 61000520	bsr.w	loc_39D4A
00039830 d368000c	add.w	d1,y_pos(a0)
00039834 317c00000012	move.w	#0,y_vel(a0)
0003983a 117c001a0020	move.b	#$1A,collision_flags(a0)
00039840 08e800010022	bset	#status.npc.y_flip,status(a0)
00039846 6000018e	bra.w	loc_399D6
0003984a 61000462	bsr.w	loc_39CAE
0003984e 610004cc	bsr.w	loc_39D1C
00039852 5328002a	subq.b	#1,objoff_2A(a0)
00039856 672e	beq.s	loc_39886
00039858 0c280032002a	cmpi.b	#$32,objoff_2A(a0)
0003985e 660a	bne.s	loc_3986A
00039860 70ee	moveq	#signextendB(SndID_MechaSonicBuzz),d0
0003986a 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00039870 d368000c	add.w	d1,y_pos(a0)
00039874 43f900039de2	lea	(off_39DE2).l,a1
0003987a 6100cff4	bsr.w	AnimateSprite_Checked
0003987e 610004ca	bsr.w	loc_39D4A
00039886 54280024	addq.b	#2,routine(a0)
0003988a 7000	moveq	#0,d0
0003988c 1028002f	move.b	objoff_2F(a0),d0
00039890 0200000f	andi.b	#$F,d0
00039894 117b001a0025	move.b	byte_398B0(pc,d0.w),routine_secondary(a0)
0003989a 5228002f	addq.b	#1,objoff_2F(a0)
0003989e 4228002e	clr.b	objoff_2E(a0)
000398a2 3268003c	movea.w	objoff_3C(a0),a1
000398a6 137c00160024	move.b	#$16,routine(a1)
000398c0 610003ec	bsr.w	loc_39CAE
000398c4 61000456	bsr.w	loc_39D1C
000398c8 7000	moveq	#0,d0
000398ca 10280025	move.b	routine_secondary(a0),d0
000398ce 323b0022	move.w	off_398F2(pc,d0.w),d1
000398d2 4ebb101e	jsr	off_398F2(pc,d1.w)
000398d6 7000	moveq	#0,d0
000398d8 7200	moveq	#0,d1
000398da 3268003e	movea.w	parent(a0),a1
000398de 6100ce80	bsr.w	Obj_AlignChildXY
000398e2 61000466	bsr.w	loc_39D4A
000398e6 6100ce78	bsr.w	Obj_AlignChildXY
0003991e 54280025	addq.b	#2,routine_secondary(a0)
00039922 117c0003001a	move.b	#3,mapping_frame(a0)
00039928 117c0002002c	move.b	#2,objoff_2C(a0)
0003992e 117c0020002a	move.b	#$20,objoff_2A(a0)
00039934 3268003e	movea.w	parent(a0),a1
00039938 137c00100024	move.b	#$10,routine(a1)
0003993e 137c0001001c	move.b	#1,anim(a1)
00039944 4e75	rts	
00039946 5328002a	subq.b	#1,objoff_2A(a0)
0003994a 6b02	bmi.s	loc_3994E
0003994c 4e75	rts	
0003994e 54280025	addq.b	#2,routine_secondary(a0)
00039952 117c0040002a	move.b	#$40,objoff_2A(a0)
00039958 117c0001001c	move.b	#1,anim(a0)
0003995e 303c0800	move.w	#$800,d0
00039962 610003fc	bsr.w	loc_39D60
00039966 3268003e	movea.w	parent(a0),a1
0003996a 137c0002001c	move.b	#2,anim(a1)
00039970 70bc	moveq	#signextendB(SndID_SpindashRelease),d0
00039976 5328002a	subq.b	#1,objoff_2A(a0)
0003997a 6b46	bmi.s	loc_399C2
0003997c 0c280020002a	cmpi.b	#$20,objoff_2A(a0)
00039982 6610	bne.s	loc_39994
00039984 117c0002001c	move.b	#2,anim(a0)
0003998a 3268003e	movea.w	parent(a0),a1
0003998e 137c00120024	move.b	#$12,routine(a1)
00039994 610003dc	bsr.w	loc_39D72
00039998 43f900039de2	lea	(off_39DE2).l,a1
0003999e 6100ced0	bsr.w	AnimateSprite_Checked
000399a2 0c280002001c	cmpi.b	#2,anim(a0)
000399a8 6616	bne.s	return_399C0
000399aa 0c280002001b	cmpi.b	#2,anim_frame(a0)
000399b0 660e	bne.s	return_399C0
000399b2 0c280003001e	cmpi.b	#3,anim_frame_duration(a0)
000399b8 6606	bne.s	return_399C0
000399ba 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
000399c0 4e75	rts	
000399c2 5328002c	subq.b	#1,objoff_2C(a0)
000399c6 670e	beq.s	loc_399D6
000399c8 117c00020025	move.b	#2,routine_secondary(a0)
000399ce 42680010	clr.w	x_vel(a0)
000399d2 6000ff5a	bra.w	loc_3992E
000399d6 117c00080024	move.b	#8,routine(a0)
000399dc 117c0000001c	move.b	#0,anim(a0)
000399e2 117c0064002a	move.b	#$64,objoff_2A(a0)
000399e8 42680010	clr.w	x_vel(a0)
000399ec 3268003e	movea.w	parent(a0),a1
000399f0 137c00120024	move.b	#$12,routine(a1)
000399f6 3268003c	movea.w	objoff_3C(a0),a1
000399fa 137c00180024	move.b	#$18,routine(a1)
00039a00 70ee	moveq	#signextendB(SndID_MechaSonicBuzz),d0
00039a0a 54280025	addq.b	#2,routine_secondary(a0)
00039a0e 117c0003001a	move.b	#3,mapping_frame(a0)
00039a14 117c0003001c	move.b	#3,anim(a0)
00039a1a 4e75	rts	
00039a1c 43f900039de2	lea	(off_39DE2).l,a1
00039a22 6100ce4c	bsr.w	AnimateSprite_Checked
00039a26 6602	bne.s	loc_39A2A
00039a28 4e75	rts	
00039a2a 54280025	addq.b	#2,routine_secondary(a0)
00039a2e 117c0020002a	move.b	#$20,objoff_2A(a0)
00039a34 117c0004001c	move.b	#4,anim(a0)
00039a3a 70b0	moveq	#signextendB(SndID_LaserBeam),d0
00039a44 5328002a	subq.b	#1,objoff_2A(a0)
00039a48 6b0c	bmi.s	loc_39A56
00039a4a 43f900039de2	lea	(off_39DE2).l,a1
00039a50 6100ce1e	bsr.w	AnimateSprite_Checked
00039a54 4e75	rts	
00039a56 54280025	addq.b	#2,routine_secondary(a0)
00039a5a 117c0040002a	move.b	#$40,objoff_2A(a0)
00039a60 303c0800	move.w	#$800,d0
00039a64 600002fa	bra.w	loc_39D60
00039a68 5328002a	subq.b	#1,objoff_2A(a0)
00039a6c 6b0e	bmi.s	loc_39A7C
00039a6e 61000302	bsr.w	loc_39D72
00039a72 43f900039de2	lea	(off_39DE2).l,a1
00039a78 6000cdf6	bra.w	AnimateSprite_Checked
00039a7c 54280025	addq.b	#2,routine_secondary(a0)
00039a80 117c0005001c	move.b	#5,anim(a0)
00039a86 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
00039a8c 42680010	clr.w	x_vel(a0)
00039a90 42680012	clr.w	y_vel(a0)
00039a94 4e75	rts	
00039a96 43f900039de2	lea	(off_39DE2).l,a1
00039a9c 6100cdd2	bsr.w	AnimateSprite_Checked
00039aa0 66000004	bne.w	BranchTo_loc_399D6
00039aa4 4e75	rts	
00039aa6 6000ff2e	bra.w	loc_399D6
00039aaa 5328002a	subq.b	#1,objoff_2A(a0)
00039aae 6b0c	bmi.s	loc_39ABC
00039ab0 43f900039de2	lea	(off_39DE2).l,a1
00039ab6 6100cdb8	bsr.w	AnimateSprite_Checked
00039aba 4e75	rts	
00039abc 54280025	addq.b	#2,routine_secondary(a0)
00039ac0 117c0040002a	move.b	#$40,objoff_2A(a0)
00039ac6 303c0400	move.w	#$400,d0
00039aca 60000294	bra.w	loc_39D60
00039ace 5328002a	subq.b	#1,objoff_2A(a0)
00039ad2 0c28003c002a	cmpi.b	#60,objoff_2A(a0)
00039ad8 6604	bne.s	loc_39ADE
00039ada 6100000c	bsr.w	loc_39AE8
00039ade 43f900039de2	lea	(off_39DE2).l,a1
00039ae4 6000cd8a	bra.w	AnimateSprite_Checked
00039ae8 54280025	addq.b	#2,routine_secondary(a0)
00039aec 317cfa000012	move.w	#-$600,y_vel(a0)
00039af2 4e75	rts	
00039af4 5328002a	subq.b	#1,objoff_2A(a0)
00039af8 6b00ff82	bmi.w	loc_39A7C
00039afc 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00039b02 4a41	tst.w	d1
00039b04 6a04	bpl.s	loc_39B0A
00039b06 61000012	bsr.w	loc_39B1A
00039b0a 066800380012	addi.w	#$38,y_vel(a0)
00039b10 43f900039de2	lea	(off_39DE2).l,a1
00039b16 6000cd58	bra.w	AnimateSprite_Checked
00039b1a 54280025	addq.b	#2,routine_secondary(a0)
00039b1e d368000c	add.w	d1,y_pos(a0)
00039b22 42680012	clr.w	y_vel(a0)
00039b26 4e75	rts	
00039b28 5328002a	subq.b	#1,objoff_2A(a0)
00039b2c 6b00ff4e	bmi.w	loc_39A7C
00039b30 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00039b36 d368000c	add.w	d1,y_pos(a0)
00039b3a 43f900039de2	lea	(off_39DE2).l,a1
00039b40 6000cd2e	bra.w	AnimateSprite_Checked
00039b44 5328002a	subq.b	#1,objoff_2A(a0)
00039b48 6b00ff32	bmi.w	loc_39A7C
00039b4c 4a28002e	tst.b	objoff_2E(a0)
00039b50 6614	bne.s	loc_39B66
00039b52 4a680012	tst.w	y_vel(a0)
00039b56 6b0e	bmi.s	loc_39B66
00039b58 50e8002e	st.b	objoff_2E(a0)
00039b5c 61000224	bsr.w	loc_39D82
00039b60 70a2	moveq	#signextendB(SndID_SpikeSwitch),d0
00039b66 4eb90001edfa	jsr	(ObjCheckFloorDist).l
00039b6c 4a41	tst.w	d1
00039b6e 6a04	bpl.s	loc_39B74
00039b70 61000012	bsr.w	loc_39B84
00039b74 066800380012	addi.w	#$38,y_vel(a0)
00039b7a 43f900039de2	lea	(off_39DE2).l,a1
00039b80 6000ccee	bra.w	AnimateSprite_Checked
00039b84 54280025	addq.b	#2,routine_secondary(a0)
00039b88 d368000c	add.w	d1,y_pos(a0)
00039b8c 42680012	clr.w	y_vel(a0)
00039b90 4e75	rts	
00039b92 42280020	clr.b	collision_flags(a0)
00039b96 53680032	subq.w	#1,objoff_32(a0)
00039b9a 6b08	bmi.s	loc_39BA4
00039ba4 31fc1000eeca	move.w	#$1000,(Camera_Max_X_pos).w
00039baa 5438eedf	addq.b	#2,(Dynamic_Resize_Routine).w
00039bae 1038ff90	move.b	(Level_Music).w,d0
00039bba 6100ca38	bsr.w	LoadSubObject
00039bbe 117c00080019	move.b	#8,width_pixels(a0)
00039bc4 117c00000020	move.b	#0,collision_flags(a0)
00039bca 4e75	rts	
00039bcc 3268002c	movea.w	objoff_2C(a0),a1
00039bd0 6100cbd8	bsr.w	InheritParentXYFlip
00039bd4 43f900039e30	lea	(off_39E30).l,a1
00039bda 6100cc94	bsr.w	AnimateSprite_Checked
00039be2 0228007f0001	andi.b	#~(1<<render_flags.on_screen)&$FF,render_flags(a0)
00039be8 4e75	rts	
00039bea 6100ca08	bsr.w	LoadSubObject
00039bee 117c00080019	move.b	#8,width_pixels(a0)
00039bf4 117c000b001a	move.b	#$B,mapping_frame(a0)
00039bfa 117c00030018	move.b	#3,priority(a0)
00039c00 4e75	rts	
00039c02 117c00000020	move.b	#0,collision_flags(a0)
00039c08 4e75	rts	
00039c0a 117c00980020	move.b	#$98,collision_flags(a0)
00039c10 4e75	rts	
00039c12 6100c9e0	bsr.w	LoadSubObject
00039c16 117c0004001a	move.b	#4,mapping_frame(a0)
00039c1c 317c02c00008	move.w	#$2C0,x_pos(a0)
00039c22 317c0139000c	move.w	#$139,y_pos(a0)
00039c28 4e75	rts	
00039c2a 3268002c	movea.w	objoff_2C(a0),a1
00039c2e 08a900010022	bclr	#status.npc.y_flip,status(a1)
00039c34 6604	bne.s	loc_39C3A
00039c3a 54280024	addq.b	#2,routine(a0)
00039c42 43f900039e42	lea	(Ani_objAF_c).l,a1
00039c50 3268002c	movea.w	objoff_2C(a0),a1
00039c54 45f8b000	lea	(MainCharacter).w,a2
00039c58 082900020022	btst	#status.npc.misc,status(a1)
00039c5e 6632	bne.s	loc_39C92
00039c60 117c0002001c	move.b	#2,anim(a0)
00039c66 0c2a00040024	cmpi.b	#4,routine(a2)
00039c6c 660a	bne.s	loc_39C78
00039c6e 117c0003001c	move.b	#3,anim(a0)
00039c74 6000000e	bra.w	loc_39C84
00039c78 4a290020	tst.b	collision_flags(a1)
00039c7c 6606	bne.s	loc_39C84
00039c7e 117c0004001c	move.b	#4,anim(a0)
00039c84 43f900039e42	lea	(Ani_objAF_c).l,a1
00039c92 54280024	addq.b	#2,routine(a0)
00039c96 117c0001001c	move.b	#1,anim(a0)
00039ca0 43f900039e42	lea	(Ani_objAF_c).l,a1
00039cae 4a280021	tst.b	collision_property(a0)
00039cb2 673c	beq.s	loc_39CF0
00039cb4 4a280020	tst.b	collision_flags(a0)
00039cb8 6634	bne.s	return_39CEE
00039cba 4a280030	tst.b	objoff_30(a0)
00039cbe 6610	bne.s	loc_39CD0
00039cc0 117c00200030	move.b	#$20,objoff_30(a0)
00039cc6 303c00ac	move.w	#SndID_BossHit,d0
00039cca 4eb900001370	jsr	(PlaySound).l
00039cd0 43f8fb22	lea	(Normal_palette_line2+2).w,a1
00039cd4 7000	moveq	#0,d0
00039cd6 4a51	tst.w	(a1)
00039cd8 6604	bne.s	loc_39CDE
00039cda 303c0eee	move.w	#$EEE,d0
00039cde 3280	move.w	d0,(a1)
00039ce0 53280030	subq.b	#1,objoff_30(a0)
00039ce4 6608	bne.s	return_39CEE
00039ce6 4278fb22	clr.w	(Normal_palette_line2+2).w
00039cea 61000038	bsr.w	loc_39D24
00039cee 4e75	rts	
00039cf0 7064	moveq	#100,d0
00039cf2 61007012	bsr.w	AddPoints
00039cf6 317c00ff0032	move.w	#$FF,objoff_32(a0)
00039cfc 117c000c0024	move.b	#$C,routine(a0)
00039d02 42280020	clr.b	collision_flags(a0)
00039d06 08e800020022	bset	#status.npc.misc,status(a0)
00039d0c 3268003c	movea.w	objoff_3C(a0),a1
00039d14 3268003e	movea.w	parent(a0),a1
00039d1c 4a280020	tst.b	collision_flags(a0)
00039d20 6700dd26	beq.w	return_37A48
00039d24 1028001a	move.b	mapping_frame(a0),d0
00039d28 0c000006	cmpi.b	#6,d0
00039d2c 6714	beq.s	loc_39D42
00039d2e 0c000007	cmpi.b	#7,d0
00039d32 670e	beq.s	loc_39D42
00039d34 0c000008	cmpi.b	#8,d0
00039d38 6708	beq.s	loc_39D42
00039d3a 117c001a0020	move.b	#$1A,collision_flags(a0)
00039d40 4e75	rts	
00039d42 117c009a0020	move.b	#$9A,collision_flags(a0)
00039d48 4e75	rts	
00039d4a 700c	moveq	#$C,d0
00039d4c 72f4	moveq	#-$C,d1
00039d4e 082800000001	btst	#render_flags.x_flip,render_flags(a0)
00039d54 6702	beq.s	loc_39D58
00039d56 4440	neg.w	d0
00039d58 3268003c	movea.w	objoff_3C(a0),a1
00039d5c 6000ca02	bra.w	Obj_AlignChildXY
00039d60 4a28002d	tst.b	objoff_2D(a0)
00039d64 6602	bne.s	loc_39D68
00039d66 4440	neg.w	d0
00039d68 4628002d	not.b	objoff_2D(a0)
00039d6c 31400010	move.w	d0,x_vel(a0)
00039d70 4e75	rts	
00039d72 7020	moveq	#$20,d0
00039d74 4a680010	tst.w	x_vel(a0)
00039d78 6b02	bmi.s	loc_39D7C
00039d7a 4440	neg.w	d0
00039d7c d1680010	add.w	d0,x_vel(a0)
00039d80 4e75	rts	
00039d82 143c004a	move.b	#$4A,d2
00039d86 7c07	moveq	#byte_39D92.counter,d6
00039d88 45f900039d92	lea	(byte_39D92).l,a2
00039d8e 6000ca8a	bra.w	Obj_CreateProjectiles
0003a1dc 7000	moveq	#0,d0
0003a1de 10280024	move.b	routine(a0),d0
0003a1e2 323b0006	move.w	ObjB0_Index(pc,d0.w),d1
0003a1e6 4efb1002	jmp	ObjB0_Index(pc,d1.w)
0003a1f6 6100c3fc	bsr.w	LoadSubObject
0003a1fa 317c01e80008	move.w	#spriteScreenPositionX(screen_width+40),x_pixel(a0)
0003a200 317c00f0000a	move.w	#spriteScreenPositionYCentered(0),y_pixel(a0)
0003a206 317c000b002a	move.w	#$B,objoff_2A(a0)
0003a20c 31fc0002f662	move.w	#2,(SegaScr_VInt_Subrout).w
0003a212 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
0003a218 08e800000022	bset	#status.npc.x_flip,status(a0)
0003a21e 43f8e138	lea	(Horiz_Scroll_Buf + 2 * 2 * (9 * 8 + 6)).w,a1
0003a222 45fa0548	lea	Streak_Horizontal_offsets(pc),a2
0003a226 7000	moveq	#0,d0
0003a228 7c22	moveq	#35-1,d6
0003a22c d151	add.w	d0,(a1)
0003a22e 5049	addq.w	#2 * 2 * 2,a1
0003a230 51cefff8	dbf	d6,-
0003a234 43fa005e	lea	off_3A294(pc),a1
0003a238 47f900050000	lea	(ArtUnc_Sonic).l,a3
0003a23e 4bf9ffff0000	lea	(Chunk_Table).l,a5
0003a244 7a03	moveq	#4-1,d5
0003a248 3c1a	move.w	(a2)+,d6
0003a24a 5346	subq.w	#1,d6
0003a24e 3200	move.w	d0,d1
0003a250 02400fff	andi.w	#$FFF,d0
0003a254 eb48	lsl.w	#5,d0
0003a256 49f30000	lea	(a3,d0.w),a4
0003a25a 0241f000	andi.w	#$F000,d1
0003a25e e959	rol.w	#4,d1
0003a260 5241	addq.w	#1,d1
0003a262 e749	lsl.w	#3,d1
0003a264 5341	subq.w	#1,d1
0003a268 51c9fffc	dbf	d1,-
0003a26c 51ceffde	dbf	d6,--
0003a270 51cdffd4	dbf	d5,---
0003a274 3f07	move.w	d7,-(sp)
0003a276 7000	moveq	#0,d0
0003a278 7200	moveq	#0,d1
0003a27a 4dfa0028	lea	SonicRunningSpriteScaleData(pc),a6
0003a27e 7e07	moveq	#4*2-1,d7
0003a282 245e	movea.l	(a6)+,a2
0003a284 101e	move.b	(a6)+,d0
0003a286 121e	move.b	(a6)+,d1
0003a288 61004614	bsr.w	Scale_2x
0003a28c 51cffff2	dbf	d7,-
0003a290 3e1f	move.w	(sp)+,d7
0003a292 4e75	rts	
0003a2f4 046800200008	subi.w	#$20,x_pos(a0)
0003a2fa 5368002a	subq.w	#1,objoff_2A(a0)
0003a2fe 6b12	bmi.s	loc_3A312
0003a300 61000124	bsr.w	ObjB0_Move_Streaks_Left
0003a304 43f90003a59e	lea	(Ani_objB0).l,a1
0003a312 54280024	addq.b	#2,routine(a0)
0003a316 317c000c002a	move.w	#$C,objoff_2A(a0)
0003a31c 117c0001002c	move.b	#1,objoff_2C(a0)
0003a322 117c00ff002d	move.b	#-1,objoff_2D(a0)
0003a32c 4a68002a	tst.w	objoff_2A(a0)
0003a330 6708	beq.s	loc_3A33A
0003a332 5368002a	subq.w	#1,objoff_2A(a0)
0003a336 610000ee	bsr.w	ObjB0_Move_Streaks_Left
0003a33a 43fa0162	lea	word_3A49E(pc),a1
0003a33e 6100010e	bsr.w	loc_3A44E
0003a342 6602	bne.s	loc_3A346
0003a344 4e75	rts	
0003a346 54280024	addq.b	#2,routine(a0)
0003a34a 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
0003a350 317c000b002a	move.w	#$B,objoff_2A(a0)
0003a356 31fc0004f662	move.w	#4,(SegaScr_VInt_Subrout).w
0003a35c 046800280008	subi.w	#$28,x_pos(a0)
0003a362 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
0003a368 086800000022	bchg	#status.npc.x_flip,status(a0)
0003a36e 43f8e000	lea	(Horiz_Scroll_Buf).w,a1
0003a372 7000	moveq	#0,d0
0003a374 323c0400	move.w	#bytesToLcnt((Horiz_Scroll_Buf+(HorizontalScrollBuffer.len*4+4)-Horiz_Scroll_Buf) - ((Horiz_Scroll_Buf)&1)),d1
0003a378 22c0	move.l	d0,(a1)+
0003a37a 51c9fffc	dbf	d1,.loop
0003a37e 43f8e13c	lea	(Horiz_Scroll_Buf + 2 * 2 * (9 * 8 + 7)).w,a1
0003a382 45fa03e8	lea	Streak_Horizontal_offsets(pc),a2
0003a386 7000	moveq	#0,d0
0003a388 7c22	moveq	#35-1,d6
0003a38a 101a	move.b	(a2)+,d0
0003a38c 9151	sub.w	d0,(a1)
0003a38e 5049	addq.w	#2 * 2 * 2,a1
0003a390 51cefff8	dbf	d6,loc_3A38A
0003a394 4e75	rts	
0003a396 5368002a	subq.w	#1,objoff_2A(a0)
0003a39a 6b18	bmi.s	loc_3A3B4
0003a39c 066800200008	addi.w	#$20,x_pos(a0)
0003a3a2 61000096	bsr.w	ObjB0_Move_Streaks_Right
0003a3a6 43f90003a59e	lea	(Ani_objB0).l,a1
0003a3b4 54280024	addq.b	#2,routine(a0)
0003a3b8 317c000c002a	move.w	#$C,objoff_2A(a0)
0003a3be 117c0001002c	move.b	#1,objoff_2C(a0)
0003a3c4 117c00ff002d	move.b	#-1,objoff_2D(a0)
0003a3ca 4e75	rts	
0003a3cc 4a68002a	tst.w	objoff_2A(a0)
0003a3d0 6708	beq.s	loc_3A3DA
0003a3d2 5368002a	subq.w	#1,objoff_2A(a0)
0003a3d6 61000062	bsr.w	ObjB0_Move_Streaks_Right
0003a3da 43fa0138	lea	word_3A514(pc),a1
0003a3de 6100006e	bsr.w	loc_3A44E
0003a3e2 6602	bne.s	loc_3A3E6
0003a3e4 4e75	rts	
0003a3e6 54280024	addq.b	#2,routine(a0)
0003a3ea 50f8f660	st.b	(SegaScr_PalDone_Flag).w
0003a3ee 103c00fa	move.b	#SndID_SegaSound,d0
0003a3f6 4e75	rts	
0003a3f8 7000	moveq	#0,d0
0003a3fa 10280024	move.b	routine(a0),d0
0003a3fe 323b0006	move.w	ObjB1_Index(pc,d0.w),d1
0003a402 4efb1002	jmp	ObjB1_Index(pc,d1.w)
0003a40a 6100c1e8	bsr.w	LoadSubObject
0003a40e 117c0004001a	move.b	#4,mapping_frame(a0)
0003a414 317c01740008	move.w	#spriteScreenPositionXCentered(84),x_pixel(a0)
0003a41a 317c00d8000a	move.w	#spriteScreenPositionYCentered(-24),y_pixel(a0)
0003a420 4e75	rts	
0003a426 43f8e138	lea	(Horiz_Scroll_Buf + 2 * 2 * (9 * 8 + 6)).w,a1
0003a42a 3c3c0022	move.w	#35-1,d6
0003a432 5049	addq.w	#2 * 2 * 2,a1
0003a434 51cefff8	dbf	d6,-
0003a438 4e75	rts	
0003a43a 43f8e13c	lea	(Horiz_Scroll_Buf + 2 * 2 * (9 * 8 + 7)).w,a1
0003a43e 3c3c0022	move.w	#35-1,d6
0003a446 5049	addq.w	#2 * 2 * 2,a1
0003a448 51cefff8	dbf	d6,-
0003a44c 4e75	rts	
0003a44e 5328002c	subq.b	#1,objoff_2C(a0)
0003a452 6642	bne.s	loc_3A496
0003a454 7000	moveq	#0,d0
0003a456 1028002d	move.b	objoff_2D(a0),d0
0003a45a 5200	addq.b	#1,d0
0003a45c b0290001	cmp.b	1(a1),d0
0003a460 6506	blo.s	loc_3A468
0003a462 4a290003	tst.b	3(a1)
0003a466 6632	bne.s	loc_3A49A
0003a468 1140002d	move.b	d0,objoff_2D(a0)
0003a472 45e90006	lea	6(a1),a2
0003a476 7200	moveq	#0,d1
0003a478 12290002	move.b	2(a1),d1
0003a47c 3401	move.w	d1,d2
0003a47e 4a40	tst.w	d0
0003a480 670a	beq.s	loc_3A48C
0003a482 5300	subq.b	#1,d0
0003a484 6704	beq.s	loc_3A48A
0003a486 d242	add.w	d2,d1
0003a488 60f8	bra.s	loc_3A482
0003a48a d4c1	adda.w	d1,a2
0003a48c 36690004	movea.w	4(a1),a3
0003a490 36da	move.w	(a2)+,(a3)+
0003a492 5542	subq.w	#2,d2
0003a494 66fa	bne.s	loc_3A490
0003a496 7000	moveq	#0,d0
0003a498 4e75	rts	
0003a49a 7001	moveq	#1,d0
0003a49c 4e75	rts	
0003a68a 3038f662	move.w	(SegaScr_VInt_Subrout).w,d0
0003a68e 6700d3b8	beq.w	return_37A48
0003a692 4278f662	clr.w	(SegaScr_VInt_Subrout).w
0003a696 303b0004	move.w	off_3A69E-2(pc,d0.w),d0
0003a69a 4efb0002	jmp	off_3A69E(pc,d0.w)
0003a6a2 4bf900c00004	lea	(VDP_control_port).l,a5
0003a6a8 2abc94169300	move.l	#(($9400|((((SegaScreenScaledSpriteDataEnd-SegaScreenScaledSpriteDataStart)>>1)&$FF00)>>8))<<16)|($9300|(((SegaScreenScaledSpriteDataEnd-SegaScreenScaledSpriteDataStart)>>1)&$FF)),(a5)
0003a6ae 2abc96859580	move.l	#(($9600|((((SegaScreenScaledSpriteDataStart)>>1)&$FF00)>>8))<<16)|($9500|(((SegaScreenScaledSpriteDataStart)>>1)&$FF)),(a5)
0003a6b4 3abc977f	move.w	#$9700|(((((SegaScreenScaledSpriteDataStart)>>1)&$FF0000)>>16)&$7F),(a5)
0003a6b8 3abc5100	move.w	#((vdpComm(tiles_to_bytes(ArtTile_ArtUnc_Giant_Sonic),VRAM,DMA)>>16)&$FFFF),(a5)
0003a6bc 31fc0080f640	move.w	#(vdpComm(tiles_to_bytes(ArtTile_ArtUnc_Giant_Sonic),VRAM,DMA)&$FFFF),(DMA_data_thunk).w
0003a6c2 3ab8f640	move.w	(DMA_data_thunk).w,(a5)
0003a6c6 43fa0084	lea	ObjB1_Streak_fade_to_right(pc),a1
0003a6ca 203c49500003	move.l	#vdpComm(VRAM_SegaScr_Plane_A_Name_Table + planeLoc(128,40,9),VRAM,WRITE),d0
0003a6d0 6000003e	bra.w	loc_3A710
0003a6d4 4bf900c00004	lea	(VDP_control_port).l,a5
0003a6da 3abc8f01	move.w	#$8F01,(a5)
0003a6de 2abc941f93ff	move.l	#(($9400|((((VRAM_SegaScr_Plane_Table_Size)-1)&$FF00)>>8))<<16)|($9300|(((VRAM_SegaScr_Plane_Table_Size)-1)&$FF)),(a5)
0003a6e4 3abc9780	move.w	#$9780,(a5)
0003a6e8 2abc40000083	move.l	#vdpComm(VRAM_SegaScr_Plane_A_Name_Table,VRAM,DMA),(a5)
0003a6ee 33fc000000c00000	move.w	#(0)|((0)<<8),(VDP_data_port).l
0003a6f6 3215	move.w	(a5),d1
0003a6f8 08010001	btst	#1,d1
0003a6fc 66f8	bne.s	.loop
0003a6fe 3abc8f02	move.w	#$8F02,(a5)
0003a702 43fa0058	lea	ObjB1_Streak_fade_to_left(pc),a1
0003a706 203c49a00003	move.l	#vdpComm(VRAM_SegaScr_Plane_A_Name_Table + planeLoc(128,80,9),VRAM,WRITE),d0
0003a70c 60000002	bra.w	loc_3A710
0003a710 4df900c00000	lea	(VDP_data_port).l,a6
0003a716 2c3c01000000	move.l	#vdpCommDelta(planeLoc(128,0,1)),d6
0003a71c 7207	moveq	#7,d1
0003a71e 7409	moveq	#9,d2
0003a720 2d400004	move.l	d0,4(a6)
0003a724 3601	move.w	d1,d3
0003a726 2449	movea.l	a1,a2
0003a728 381a	move.w	(a2)+,d4
0003a72a 0884000a	bclr	#$A,d4
0003a72e 6704	beq.s	+
0003a730 61000010	bsr.w	loc_3A742
0003a734 3c84	move.w	d4,(a6)
0003a736 51cbfff0	dbf	d3,-
0003a73a d086	add.l	d6,d0
0003a73c 51caffe2	dbf	d2,--
0003a740 4e75	rts	
0003a742 7a28	moveq	#$28,d5
0003a744 3c84	move.w	d4,(a6)
0003a746 51cdfffc	dbf	d5,-
0003a74a 4e75	rts	
0003a790 7000	moveq	#0,d0
0003a792 10280024	move.b	routine(a0),d0
0003a796 323b0006	move.w	ObjB2_Index(pc,d0.w),d1
0003a79a 4efb1002	jmp	ObjB2_Index(pc,d1.w)
0003a7ae 6100be44	bsr.w	LoadSubObject
0003a7b2 7000	moveq	#0,d0
0003a7b4 10280028	move.b	subtype(a0),d0
0003a7b8 0400004e	subi.b	#$4E,d0
0003a7bc 11400024	move.b	d0,routine(a0)
0003a7c0 0c780002ff70	cmpi.w	#2,(Player_mode).w
0003a7c6 6612	bne.s	+
0003a7c8 0c000008	cmpi.b	#8,d0
0003a7cc 640c	bhs.s	+
0003a7ce 117c0004001a	move.b	#4,mapping_frame(a0)
0003a7d4 117c0001001c	move.b	#1,anim(a0)
0003a7de 61000778	bsr.w	ObjB2_Animate_Pilot
0003a7e2 4a78fe08	tst.w	(Debug_placement_mode).w
0003a7e6 66000098	bne.w	ObjB2_animate
0003a7ea 43f8b000	lea	(MainCharacter).w,a1
0003a7ee 30290002	move.w	art_tile(a1),d0
0003a7f2 02408000	andi.w	#high_priority,d0
0003a7f6 32280002	move.w	art_tile(a0),d1
0003a7fa 02417fff	andi.w	#drawing_mask,d1
0003a7fe 8240	or.w	d0,d1
0003a800 31410002	move.w	d1,art_tile(a0)
0003a804 3f280008	move.w	x_pos(a0),-(sp)
0003a808 610005a0	bsr.w	ObjB2_Move_with_player
0003a80c 11680022002e	move.b	status(a0),objoff_2E(a0)
0003a812 323c001b	move.w	#$1B,d1
0003a816 343c0008	move.w	#8,d2
0003a81a 363c0009	move.w	#9,d3
0003a81e 381f	move.w	(sp)+,d4
0003a824 61000614	bsr.w	ObjB2_Move_obbey_player
0003a828 1028002e	move.b	objoff_2E(a0),d0
0003a82c 12280022	move.b	status(a0),d1
0003a830 02000008	andi.b	#p1_standing,d0
0003a834 02010008	andi.b	#p1_standing,d1
0003a838 b101	eor.b	d0,d1
0003a83a 1141002e	move.b	d1,objoff_2E(a0)
0003a83e 43f8b000	lea	(MainCharacter).w,a1
0003a842 32290008	move.w	x_pos(a1),d1
0003a846 3038ee00	move.w	(Camera_X_pos).w,d0
0003a84a 31c0eec8	move.w	d0,(Camera_Min_X_pos).w
0003a84e 3400	move.w	d0,d2
0003a850 06420011	addi.w	#$11,d2
0003a854 b242	cmp.w	d2,d1
0003a856 6206	bhi.s	+
0003a858 5241	addq.w	#1,d1
0003a85a 33410008	move.w	d1,x_pos(a1)
0003a85e 0c401400	cmpi.w	#$1400,d0
0003a862 6514	blo.s	loc_3A878
0003a864 0c411568	cmpi.w	#$1568,d1
0003a868 6424	bhs.s	ObjB2_SCZ_Finished
0003a86a 50f8f7cc	st.b	(Control_Locked).w
0003a86e 31fc0808f602	move.w	#(button_right_mask<<8)|button_right_mask,(Ctrl_1_Logical).w
0003a874 60000006	bra.w	loc_3A87C
0003a878 04400040	subi.w	#$40,d0
0003a87c 31c0eeca	move.w	d0,(Camera_Max_X_pos).w
0003a880 43f90003afdc	lea	(Ani_objB2_a).l,a1
0003a88e 610003b6	bsr.w	ObjB2_Deactivate_level
0003a892 31fc0600fe10	move.w	#wing_fortress_zone_act_1,(Current_ZoneAndAct).w
0003a898 60e6	bra.s	ObjB2_animate
0003a89a 610006bc	bsr.w	ObjB2_Animate_Pilot
0003a89e 7000	moveq	#0,d0
0003a8a0 10280025	move.b	routine_secondary(a0),d0
0003a8a4 323b0014	move.w	off_3A8BA(pc,d0.w),d1
0003a8a8 4ebb1010	jsr	off_3A8BA(pc,d1.w)
0003a8ac 43f90003afdc	lea	(Ani_objB2_a).l,a1
0003a8b6 6000c040	bra.w	Obj_DeleteOffScreen
0003a8c2 54280025	addq.b	#2,routine_secondary(a0)
0003a8c6 317c00c00032	move.w	#$C0,objoff_32(a0)
0003a8cc 317c01000010	move.w	#$100,x_vel(a0)
0003a8d2 4e75	rts	
0003a8d4 53680032	subq.w	#1,objoff_32(a0)
0003a8d8 6b22	bmi.s	+
0003a8da 3f280008	move.w	x_pos(a0),-(sp)
0003a8e2 6100be92	bsr.w	loc_36776
0003a8e6 323c001b	move.w	#$1B,d1
0003a8ea 343c0008	move.w	#8,d2
0003a8ee 363c0009	move.w	#9,d3
0003a8f2 381f	move.w	(sp)+,d4
0003a8f8 600005f2	bra.w	ObjB2_Horizontal_limit
0003a8fc 54280025	addq.b	#2,routine_secondary(a0)
0003a900 317c0060002a	move.w	#$60,objoff_2A(a0)
0003a906 317c00010032	move.w	#1,objoff_32(a0)
0003a90c 317c01000010	move.w	#$100,x_vel(a0)
0003a912 317c01000012	move.w	#$100,y_vel(a0)
0003a918 4e75	rts	
0003a91a 1038fe0f	move.b	(Vint_runcount+3).w,d0
0003a91e 0200001f	andi.b	#$1F,d0
0003a922 6606	bne.s	+
0003a924 70eb	moveq	#signextendB(SndID_Scatter),d0
0003a92a 5368002a	subq.w	#1,objoff_2A(a0)
0003a92e 6b16	bmi.s	+
0003a930 6100045a	bsr.w	ObjB2_Align_plane
0003a934 53680032	subq.w	#1,objoff_32(a0)
0003a938 6600d10e	bne.w	return_37A48
0003a93c 317c000e0032	move.w	#$E,objoff_32(a0)
0003a942 600005f0	bra.w	ObjB2_Main_WFZ_Start_load_smoke
0003a946 54280025	addq.b	#2,routine_secondary(a0)
0003a94a 60000e70	bra.w	loc_3B7BC
0003a952 60dc	bra.s	-
0003a954 61000602	bsr.w	ObjB2_Animate_Pilot
0003a958 7000	moveq	#0,d0
0003a95a 10280025	move.b	routine_secondary(a0),d0
0003a95e 323b0010	move.w	ObjB2_Main_WFZ_states(pc,d0.w),d1
0003a962 4ebb100c	jsr	ObjB2_Main_WFZ_states(pc,d1.w)
0003a966 43f90003afdc	lea	(Ani_objB2_a).l,a1
0003a982 43f8b000	lea	(MainCharacter).w,a1
0003a986 0c6905ec000c	cmpi.w	#$5EC,y_pos(a1)
0003a98c 6510	blo.s	+
0003a98e 4278f602	clr.w	(Ctrl_1_Logical).w
0003a992 5268002e	addq.w	#1,objoff_2E(a0)
0003a996 0c680040002e	cmpi.w	#$40,objoff_2E(a0)
0003a99c 6402	bhs.s	++
0003a99e 4e75	rts	
0003a9a0 54280025	addq.b	#2,routine_secondary(a0)
0003a9a4 317c2e580008	move.w	#$2E58,x_pos(a0)
0003a9aa 317c066c000c	move.w	#$66C,y_pos(a0)
0003a9b0 43f8b000	lea	(MainCharacter).w,a1
0003a9b4 610002a0	bsr.w	ObjB2_Waiting_animation
0003a9b8 45f90003afbc	lea	(ChildObject_3AFBC).l,a2
0003a9be 6100be10	bsr.w	LoadChildObject
0003a9c2 337c31180008	move.w	#$3118,x_pos(a1)
0003a9c8 337c03f0000c	move.w	#$3F0,y_pos(a1)
0003a9ce 45f90003afb8	lea	(ChildObject_3AFB8).l,a2
0003a9d4 6100bdfa	bsr.w	LoadChildObject
0003a9d8 337c30700008	move.w	#$3070,x_pos(a1)
0003a9de 337c03b0000c	move.w	#$3B0,y_pos(a1)
0003a9e4 45f90003afb8	lea	(ChildObject_3AFB8).l,a2
0003a9ea 6100bde4	bsr.w	LoadChildObject
0003a9ee 337c30700008	move.w	#$3070,x_pos(a1)
0003a9f4 337c0430000c	move.w	#$430,y_pos(a1)
0003a9fa 45f90003afc0	lea	(ChildObject_3AFC0).l,a2
0003aa00 6100bdce	bsr.w	LoadChildObject
0003aa04 42690008	clr.w	x_pos(a1)
0003aa08 4269000c	clr.w	y_pos(a1)
0003aa0c 4e75	rts	
0003aa0e 43f8b000	lea	(MainCharacter).w,a1
0003aa12 0c692e300008	cmpi.w	#$2E30,x_pos(a1)
0003aa18 6408	bhs.s	+
0003aa1a 31fc0808f602	move.w	#(button_right_mask<<8)|button_right_mask,(Ctrl_1_Logical).w
0003aa20 4e75	rts	
0003aa22 54280025	addq.b	#2,routine_secondary(a0)
0003aa26 4278f602	clr.w	(Ctrl_1_Logical).w
0003aa2a 42690010	clr.w	x_vel(a1)
0003aa2e 42690012	clr.w	y_vel(a1)
0003aa32 42690014	clr.w	inertia(a1)
0003aa36 31fc0600f760	move.w	#$600,(Sonic_top_speed).w
0003aa3c 31fc000cf762	move.w	#$C,(Sonic_acceleration).w
0003aa42 31fc0080f764	move.w	#$80,(Sonic_deceleration).w
0003aa48 6000020c	bra.w	ObjB2_Waiting_animation
0003aa4c 0c780380eee2	cmpi.w	#$380,(Camera_BG_X_offset).w
0003aa52 6408	bhs.s	+
0003aa54 4278f602	clr.w	(Ctrl_1_Logical).w
0003aa58 600001fc	bra.w	ObjB2_Waiting_animation
0003aa5c 54280025	addq.b	#2,routine_secondary(a0)
0003aa60 317c01000010	move.w	#$100,x_vel(a0)
0003aa66 317cff000012	move.w	#-$100,y_vel(a0)
0003aa6c 4268002a	clr.w	objoff_2A(a0)
0003aa70 600001e4	bra.w	ObjB2_Waiting_animation
0003aa74 610001e0	bsr.w	ObjB2_Waiting_animation
0003aa78 5268002a	addq.w	#1,objoff_2A(a0)
0003aa7c 0c680030002a	cmpi.w	#$30,objoff_2A(a0)
0003aa82 661c	bne.s	+
0003aa84 54280025	addq.b	#2,routine_secondary(a0)
0003aa88 31fc4040f602	move.w	#(button_A_mask<<8)|button_A_mask,(Ctrl_1_Logical).w
0003aa8e 317c0038002e	move.w	#$38,objoff_2E(a0)
0003aa94 4a38fe19	tst.b	(Super_Sonic_flag).w
0003aa98 6706	beq.s	+
0003aa9a 317c0028002e	move.w	#$28,objoff_2E(a0)
0003aaa0 610002ea	bsr.w	ObjB2_Align_plane
0003aaa8 4278f602	clr.w	(Ctrl_1_Logical).w
0003aaac 5268002a	addq.w	#1,objoff_2A(a0)
0003aab0 5368002e	subq.w	#1,objoff_2E(a0)
0003aab4 6b06	bmi.s	+
0003aab6 31fc4848f602	move.w	#((button_right_mask|button_A_mask)<<8)|button_right_mask|button_A_mask,(Ctrl_1_Logical).w
0003aabc 610002ce	bsr.w	ObjB2_Align_plane
0003aac0 082800030022	btst	#p1_standing_bit,status(a0)
0003aac6 6732	beq.s	+
0003aac8 54280025	addq.b	#2,routine_secondary(a0)
0003aacc 317c0020002e	move.w	#$20,objoff_2E(a0)
0003aad2 43f880d2	lea	(Level_Layout+$0D2).w,a1
0003aad6 22fc501f0025	move.l	#$501F0025,(a1)+
0003aadc 43f881d2	lea	(Level_Layout+$1D2).w,a1
0003aae0 22fc25001f50	move.l	#$25001F50,(a1)+
0003aae6 43f88bd6	lea	(Level_Layout+$BD6).w,a1
0003aaea 22fc501f0025	move.l	#$501F0025,(a1)+
0003aaf0 43f88cd6	lea	(Level_Layout+$CD6).w,a1
0003aaf4 22fc25001f50	move.l	#$25001F50,(a1)+
0003aafe 5268002a	addq.w	#1,objoff_2A(a0)
0003ab02 0c680100002a	cmpi.w	#$100,objoff_2A(a0)
0003ab08 650e	blo.s	loc_3AB18
0003ab0a 54280025	addq.b	#2,routine_secondary(a0)
0003ab0e 3268003a	movea.w	objoff_3A(a0),a1
0003ab12 137c00020025	move.b	#2,routine_secondary(a1)
0003ab18 4278f602	clr.w	(Ctrl_1_Logical).w
0003ab1c 43f8b000	lea	(MainCharacter).w,a1
0003ab20 336800080008	move.w	x_pos(a0),x_pos(a1)
0003ab26 42690010	clr.w	x_vel(a1)
0003ab2a 42690012	clr.w	y_vel(a1)
0003ab2e 42690014	clr.w	inertia(a1)
0003ab32 08a900010022	bclr	#status.player.in_air,status(a1)
0003ab38 08a900020022	bclr	#status.player.rolling,status(a1)
0003ab3e 237c01000505001a	move.l	#(1<<24)|(0<<16)|(AniIDSonAni_Wait<<8)|(AniIDSonAni_Wait<<0),mapping_frame(a1)
0003ab46 337c0100001e	move.w	#$100,anim_frame_duration(a1)
0003ab4c 137c00130016	move.b	#$13,y_radius(a1)
0003ab52 0c780002ff70	cmpi.w	#2,(Player_mode).w
0003ab58 6606	bne.s	+
0003ab5a 137c000f0016	move.b	#$F,y_radius(a1)
0003ab60 6100022a	bsr.w	ObjB2_Align_plane
0003ab68 4278f602	clr.w	(Ctrl_1_Logical).w
0003ab6c 610000e8	bsr.w	ObjB2_Waiting_animation
0003ab70 0c680437002a	cmpi.w	#$437,objoff_2A(a0)
0003ab76 6512	blo.s	loc_3AB8A
0003ab78 54280025	addq.b	#2,routine_secondary(a0)
0003ab7c 0c680447002a	cmpi.w	#$447,objoff_2A(a0)
0003ab82 6406	bhs.s	loc_3AB8A
0003ab84 31fc4040f602	move.w	#(button_A_mask<<8)|button_A_mask,(Ctrl_1_Logical).w
0003ab8a 0c680460002a	cmpi.w	#$460,objoff_2A(a0)
0003ab90 654c	blo.s	ObjB2_Dock_on_DEZ
0003ab92 11fc0006eedf	move.b	#6,(Dynamic_Resize_Routine).w
0003ab98 54280025	addq.b	#2,routine_secondary(a0)
0003ab9c 45f90003afb8	lea	(ChildObject_3AFB8).l,a2
0003aba2 6100bc2c	bsr.w	LoadChildObject
0003aba6 337c30900008	move.w	#$3090,x_pos(a1)
0003abac 337c03d0000c	move.w	#$3D0,y_pos(a1)
0003abb2 45f90003afb8	lea	(ChildObject_3AFB8).l,a2
0003abb8 6100bc16	bsr.w	LoadChildObject
0003abbc 337c30c00008	move.w	#$30C0,x_pos(a1)
0003abc2 337c03f0000c	move.w	#$3F0,y_pos(a1)
0003abc8 45f90003afb8	lea	(ChildObject_3AFB8).l,a2
0003abce 6100bc00	bsr.w	LoadChildObject
0003abd2 337c30900008	move.w	#$3090,x_pos(a1)
0003abd8 337c0410000c	move.w	#$410,y_pos(a1)
0003abde 0c6809c0002a	cmpi.w	#$9C0,objoff_2A(a0)
0003abe4 645a	bhs.s	ObjB2_Start_DEZ
0003abe6 3028002a	move.w	objoff_2A(a0),d0
0003abea 5240	addq.w	#1,d0
0003abec 3140002a	move.w	d0,objoff_2A(a0)
0003abf0 32280034	move.w	objoff_34(a0),d1
0003abf4 343b1020	move.w	word_3AC16(pc,d1.w),d2
0003abf8 b042	cmp.w	d2,d0
0003abfa 6512	blo.s	loc_3AC0E
0003abfc 5441	addq.w	#2,d1
0003abfe 31410034	move.w	d1,objoff_34(a0)
0003ac02 43fb1026	lea	byte_3AC2A(pc,d1.w),a1
0003ac06 11590010	move.b	(a1)+,x_vel(a0)
0003ac0a 11590012	move.b	(a1)+,y_vel(a0)
0003ac0e 6100017c	bsr.w	ObjB2_Align_plane
0003ac40 31fc0e00fe10	move.w	#death_egg_zone_act_1,(Current_ZoneAndAct).w
0003ac46 31fc0001fe02	move.w	#1,(Level_Inactive_flag).w
0003ac4c 4238fe30	clr.b	(Last_star_pole_hit).w
0003ac50 4238fee0	clr.b	(Last_star_pole_hit_2P).w
0003ac54 4e75	rts	
0003ac56 43f8b000	lea	(MainCharacter).w,a1
0003ac5a 237c01000505001a	move.l	#(1<<24)|(0<<16)|(AniIDSonAni_Wait<<8)|(AniIDSonAni_Wait<<0),mapping_frame(a1)
0003ac62 337c0100001e	move.w	#$100,anim_frame_duration(a1)
0003ac68 4e75	rts	
0003ac6a 7000	moveq	#0,d0
0003ac6c 10280025	move.b	routine_secondary(a0),d0
0003ac70 323b0006	move.w	off_3AC78(pc,d0.w),d1
0003ac74 4efb1002	jmp	off_3AC78(pc,d1.w)
0003ac7e 117c00c70020	move.b	#$C7,collision_flags(a0)
0003ac84 4a280021	tst.b	collision_property(a0)
0003ac88 6766	beq.s	return_3ACF0
0003ac8a 54280025	addq.b	#2,routine_secondary(a0)
0003ac8e 42280020	clr.b	collision_flags(a0)
0003ac92 31fc0078eed8	move.w	#(screen_height/2)+8,(Camera_Y_pos_bias).w
0003ac98 3268002c	movea.w	objoff_2C(a0),a1
0003ac9c 08e900060022	bset	#status.npc.p2_pushing,status(a1)
0003aca2 43f8b000	lea	(MainCharacter).w,a1
0003aca6 42690010	clr.w	x_vel(a1)
0003acaa 42690012	clr.w	y_vel(a1)
0003acae 30280008	move.w	x_pos(a0),d0
0003acb2 04400010	subi.w	#$10,d0
0003acb6 33400008	move.w	d0,x_pos(a1)
0003acba 0c780002ff70	cmpi.w	#2,(Player_mode).w
0003acc0 6606	bne.s	loc_3ACC8
0003acc2 04690010000c	subi.w	#$10,y_pos(a1)
0003acc8 08e900000022	bset	#status.player.x_flip,status(a1)
0003acce 08a900010022	bclr	#status.player.in_air,status(a1)
0003acd4 08a900020022	bclr	#status.player.rolling,status(a1)
0003acda 137c0011001c	move.b	#AniIDSonAni_Hang,anim(a1)
0003ace0 11fc0001b02a	move.b	#1,(MainCharacter+obj_control).w
0003ace6 11fc0001f7c9	move.b	#1,(WindTunnel_holding_flag).w
0003acec 4278f602	clr.w	(Ctrl_1_Logical).w
0003acf0 4e75	rts	
0003acf2 43f8b000	lea	(MainCharacter).w,a1
0003acf6 42690010	clr.w	x_vel(a1)
0003acfa 42690012	clr.w	y_vel(a1)
0003acfe 30280008	move.w	x_pos(a0),d0
0003ad02 04400010	subi.w	#$10,d0
0003ad06 33400008	move.w	d0,x_pos(a1)
0003ad0a 4e75	rts	
0003ad0c 7000	moveq	#0,d0
0003ad0e 10280025	move.b	routine_secondary(a0),d0
0003ad12 323b0006	move.w	off_3AD1A(pc,d0.w),d1
0003ad16 4efb1002	jmp	off_3AD1A(pc,d1.w)
0003ad1c 086800020022	bchg	#status.npc.misc,status(a0)
0003ad22 6600cd24	bne.w	return_37A48
0003ad2a 7000	moveq	#0,d0
0003ad2c 10280025	move.b	routine_secondary(a0),d0
0003ad30 323b0006	move.w	off_3AD38(pc,d0.w),d1
0003ad34 4efb1002	jmp	off_3AD38(pc,d1.w)
0003ad42 7000	moveq	#0,d0
0003ad44 10280025	move.b	routine_secondary(a0),d0
0003ad48 323b0006	move.w	off_3AD50(pc,d0.w),d1
0003ad4c 4efb1002	jmp	off_3AD50(pc,d1.w)
0003ad54 61000018	bsr.w	loc_3AD6E
0003ad5c 61000010	bsr.w	loc_3AD6E
0003ad60 43f90003afec	lea	(Ani_objB2_b).l,a1
0003ad6e 3268002c	movea.w	objoff_2C(a0),a1
0003ad72 30290008	move.w	x_pos(a1),d0
0003ad76 0440000c	subi.w	#$C,d0
0003ad7a 31400008	move.w	d0,x_pos(a0)
0003ad7e 3029000c	move.w	y_pos(a1),d0
0003ad82 06400028	addi.w	#$28,d0
0003ad86 3140000c	move.w	d0,y_pos(a0)
0003ad8a 4e75	rts	
0003ad8c 3f280008	move.w	x_pos(a0),-(sp)
0003ad94 6100b9e0	bsr.w	loc_36776
0003ad98 323c001b	move.w	#$1B,d1
0003ad9c 343c0008	move.w	#8,d2
0003ada0 363c0009	move.w	#9,d3
0003ada4 381f	move.w	(sp)+,d4
0003adaa 43f8b000	lea	(MainCharacter).w,a1
0003adae 082900030022	btst	#status.player.on_object,status(a1)
0003adb4 6710	beq.s	ObjB2_Move_below_player
0003adb6 6100003e	bsr.w	ObjB2_Move_vert
0003adba 61000150	bsr.w	ObjB2_Vertical_limit
0003adc2 6000b9b2	bra.w	loc_36776
0003adc6 4a28002e	tst.b	objoff_2E(a0)
0003adca 6708	beq.s	loc_3ADD4
0003adcc 6100b908	bsr.w	Obj_GetOrientationToPlayer
0003add0 31420038	move.w	d2,objoff_38(a0)
0003add4 303c0001	move.w	#1,d0
0003add8 36280038	move.w	objoff_38(a0),d3
0003addc 670a	beq.s	loc_3ADE8
0003adde 6b02	bmi.s	loc_3ADE2
0003ade0 4440	neg.w	d0
0003ade2 d640	add.w	d0,d3
0003ade4 31430038	move.w	d3,objoff_38(a0)
0003ade8 32290008	move.w	x_pos(a1),d1
0003adec d243	add.w	d3,d1
0003adee 31410008	move.w	d1,x_pos(a0)
0003adf2 6000b982	bra.w	loc_36776
0003adf6 4a28002f	tst.b	objoff_2F(a0)
0003adfa 661a	bne.s	loc_3AE16
0003adfc 4a28002e	tst.b	objoff_2E(a0)
0003ae00 6736	beq.s	return_3AE38
0003ae02 50e8002f	st.b	objoff_2F(a0)
0003ae06 42280030	clr.b	objoff_30(a0)
0003ae0a 317c02000012	move.w	#$200,y_vel(a0)
0003ae10 117c00140031	move.b	#$14,objoff_31(a0)
0003ae16 53280031	subq.b	#1,objoff_31(a0)
0003ae1a 6a0a	bpl.s	loc_3AE26
0003ae1c 4228002f	clr.b	objoff_2F(a0)
0003ae20 42680012	clr.w	y_vel(a0)
0003ae24 4e75	rts	
0003ae26 30280012	move.w	y_vel(a0),d0
0003ae2a 0c40ff00	cmpi.w	#-$100,d0
0003ae2e 6f04	ble.s	loc_3AE34
0003ae30 0640ffe0	addi.w	#-$20,d0
0003ae34 31400012	move.w	d0,y_vel(a0)
0003ae38 4e75	rts	
0003ae3a 43f8b000	lea	(MainCharacter).w,a1
0003ae3e 082900030022	btst	#status.player.on_object,status(a1)
0003ae44 675a	beq.s	ObjB2_Move_vert2
0003ae46 4a28002f	tst.b	objoff_2F(a0)
0003ae4a 6626	bne.s	loc_3AE72
0003ae4c 42680012	clr.w	y_vel(a0)
0003ae50 3438f604	move.w	(Ctrl_1).w,d2
0003ae54 363c0080	move.w	#$80,d3
0003ae58 02420300	andi.w	#(button_up_mask|button_down_mask)<<8,d2
0003ae5c 6714	beq.s	loc_3AE72
0003ae5e 02420200	andi.w	#button_down_mask<<8,d2
0003ae62 6602	bne.s	loc_3AE66
0003ae64 4443	neg.w	d3
0003ae66 31430012	move.w	d3,y_vel(a0)
0003ae6a 610000a0	bsr.w	ObjB2_Vertical_limit
0003ae72 6100b862	bsr.w	Obj_GetOrientationToPlayer
0003ae76 7610	moveq	#$10,d3
0003ae78 d443	add.w	d3,d2
0003ae7a 0c420020	cmpi.w	#$20,d2
0003ae7e 651e	blo.s	return_3AE9E
0003ae80 34290014	move.w	inertia(a1),d2
0003ae84 6a02	bpl.s	.skip
0003ae86 4442	neg.w	d2
0003ae88 0c420900	cmpi.w	#$900,d2
0003ae8c 6410	bhs.s	return_3AE9E
0003ae8e 4a40	tst.w	d0
0003ae90 6702	beq.s	loc_3AE94
0003ae92 4443	neg.w	d3
0003ae94 32290008	move.w	x_pos(a1),d1
0003ae98 d243	add.w	d3,d1
0003ae9a 31410008	move.w	d1,x_pos(a0)
0003ae9e 4e75	rts	
0003aea0 4a280030	tst.b	objoff_30(a0)
0003aea4 661a	bne.s	loc_3AEC0
0003aea6 4a28002e	tst.b	objoff_2E(a0)
0003aeaa 67f2	beq.s	return_3AE9E
0003aeac 50e80030	st.b	objoff_30(a0)
0003aeb0 4228002f	clr.b	objoff_2F(a0)
0003aeb4 317c02000012	move.w	#$200,y_vel(a0)
0003aeba 117c002b0031	move.b	#$2B,objoff_31(a0)
0003aec0 53280031	subq.b	#1,objoff_31(a0)
0003aec4 6a0a	bpl.s	loc_3AED0
0003aec6 42280030	clr.b	objoff_30(a0)
0003aeca 42680012	clr.w	y_vel(a0)
0003aece 4e75	rts	
0003aed0 30280012	move.w	y_vel(a0),d0
0003aed4 0c40ff00	cmpi.w	#-$100,d0
0003aed8 6f04	ble.s	loc_3AEDE
0003aeda 0640ffe0	addi.w	#-$20,d0
0003aede 31400012	move.w	d0,y_vel(a0)
0003aee2 61000028	bsr.w	ObjB2_Vertical_limit
0003aeea 4e75	rts	
0003aeec 6100b7e8	bsr.w	Obj_GetOrientationToPlayer
0003aef0 7610	moveq	#$10,d3
0003aef2 d443	add.w	d3,d2
0003aef4 0c420020	cmpi.w	#$20,d2
0003aef8 6510	blo.s	return_3AF0A
0003aefa 4a40	tst.w	d0
0003aefc 6702	beq.s	loc_3AF00
0003aefe 4443	neg.w	d3
0003af00 32280008	move.w	x_pos(a0),d1
0003af04 9243	sub.w	d3,d1
0003af06 33410008	move.w	d1,x_pos(a1)
0003af0a 4e75	rts	
0003af0c 3038ee04	move.w	(Camera_Y_pos).w,d0
0003af10 3228000c	move.w	y_pos(a0),d1
0003af14 34280012	move.w	y_vel(a0),d2
0003af18 6718	beq.s	return_3AF32
0003af1a 6a0a	bpl.s	loc_3AF26
0003af1c 06400034	addi.w	#$34,d0
0003af20 b240	cmp.w	d0,d1
0003af22 650a	blo.s	loc_3AF2E
0003af24 4e75	rts	
0003af26 064000a8	addi.w	#$A8,d0
0003af2a b240	cmp.w	d0,d1
0003af2c 6504	blo.s	return_3AF32
0003af2e 42680012	clr.w	y_vel(a0)
0003af32 4e75	rts	
0003af38 661c	bne.s	+
0003af40 137c00900028	move.b	#$90,subtype(a1)
0003af46 3348002c	move.w	a0,objoff_2C(a1)
0003af4a 336800080008	move.w	x_pos(a0),x_pos(a1)
0003af50 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0003af56 4e75	rts	
0003af58 53280037	subq.b	#1,objoff_37(a0)
0003af5c 6b02	bmi.s	+
0003af5e 4e75	rts	
0003af60 117c00080037	move.b	#8,objoff_37(a0)
0003af66 7000	moveq	#0,d0
0003af68 10280036	move.b	objoff_36(a0),d0
0003af6c 7218	moveq	#Tails_pilot_frames_end-Tails_pilot_frames,d1
0003af6e 0c780002ff70	cmpi.w	#2,(Player_mode).w
0003af74 6602	bne.s	+
0003af76 7204	moveq	#Sonic_pilot_frames_end-Sonic_pilot_frames,d1
0003af78 5200	addq.b	#1,d0
0003af7a b041	cmp.w	d1,d0
0003af7c 6502	blo.s	+
0003af7e 7000	moveq	#0,d0
0003af80 11400036	move.b	d0,objoff_36(a0)
0003af84 0c780002ff70	cmpi.w	#2,(Player_mode).w
0003af8a 6608	bne.s	+
0003af8c 103b000e	move.b	Sonic_pilot_frames(pc,d0.w),d0
0003af94 103b000a	move.b	Tails_pilot_frames(pc,d0.w),d0
0003b2de 7000	moveq	#0,d0
0003b2e0 10280024	move.b	routine(a0),d0
0003b2e4 323b0006	move.w	ObjB3_Index(pc,d0.w),d1
0003b2e8 4efb1002	jmp	ObjB3_Index(pc,d1.w)
0003b2f0 6100b302	bsr.w	LoadSubObject
0003b2f4 7000	moveq	#0,d0
0003b2f6 10280028	move.b	subtype(a0),d0
0003b2fa 0400005e	subi.b	#$5E,d0
0003b2fe 317b000c0010	move.w	word_3B30C(pc,d0.w),x_vel(a0)
0003b304 e248	lsr.w	#1,d0
0003b306 1140001a	move.b	d0,mapping_frame(a0)
0003b30a 4e75	rts	
0003b316 3038f736	move.w	(Tornado_Velocity_X).w,d0
0003b31a d1680008	add.w	d0,x_pos(a0)
0003b31e 6000b468	bra.w	Obj_DeleteBehindScreen
0003b36a 7000	moveq	#0,d0
0003b36c 10280024	move.b	routine(a0),d0
0003b370 323b0006	move.w	ObjB4_Index(pc,d0.w),d1
0003b374 4efb1002	jmp	ObjB4_Index(pc,d1.w)
0003b37c 6100b276	bsr.w	LoadSubObject
0003b380 08a800010001	bclr	#render_flags.y_flip,render_flags(a0)
0003b386 6704	beq.s	+
0003b388 42280020	clr.b	collision_flags(a0)
0003b38c 4e75	rts	
0003b38e 43f90003b3b6	lea	(Ani_objB4).l,a1
0003b398 1038fe0f	move.b	(Vint_runcount+3).w,d0
0003b39c 0200001f	andi.b	#$1F,d0
0003b3a0 6606	bne.s	+
0003b3a2 70de	moveq	#signextendB(SndID_Helicopter),d0
0003b3fa 7000	moveq	#0,d0
0003b3fc 10280024	move.b	routine(a0),d0
0003b400 323b0006	move.w	ObjB5_Index(pc,d0.w),d1
0003b404 4efb1002	jmp	ObjB5_Index(pc,d1.w)
0003b40e 6100b1e4	bsr.w	LoadSubObject
0003b412 117c0004001c	move.b	#4,anim(a0)
0003b418 10280028	move.b	subtype(a0),d0
0003b41c 04000064	subi.b	#$64,d0
0003b420 11400024	move.b	d0,routine(a0)
0003b424 4e75	rts	
0003b426 7000	moveq	#0,d0
0003b428 10280025	move.b	routine_secondary(a0),d0
0003b42c 323b0014	move.w	off_3B442(pc,d0.w),d1
0003b430 4ebb1010	jsr	off_3B442(pc,d1.w)
0003b434 43f90003b4e8	lea	(Ani_objB5).l,a1
0003b448 43f90003b4e8	lea	(Ani_objB5).l,a1
0003b456 0c280004001c	cmpi.b	#4,anim(a0)
0003b45c 667e	bne.s	++
0003b45e 43f8b000	lea	(MainCharacter).w,a1
0003b462 61000006	bsr.w	ObjB5_CheckPlayer
0003b466 43f8b040	lea	(Sidekick).w,a1
0003b46a 30290008	move.w	x_pos(a1),d0
0003b46e 90680008	sub.w	x_pos(a0),d0
0003b472 06400040	addi.w	#$40,d0
0003b476 0c400080	cmpi.w	#$80,d0
0003b47a 6460	bhs.s	++
0003b47c 7200	moveq	#0,d1
0003b47e 1238fe74	move.b	(Oscillating_Data+$14).w,d1
0003b482 d269000c	add.w	y_pos(a1),d1
0003b486 06410060	addi.w	#$60,d1
0003b48a 9268000c	sub.w	y_pos(a0),d1
0003b48e 654c	bcs.s	++
0003b490 0c410090	cmpi.w	#$90,d1
0003b494 6446	bhs.s	++
0003b496 04410060	subi.w	#$60,d1
0003b49a 6504	bcs.s	+
0003b49c 4641	not.w	d1
0003b49e d241	add.w	d1,d1
0003b4a0 06410060	addi.w	#$60,d1
0003b4a4 4441	neg.w	d1
0003b4a6 e841	asr.w	#4,d1
0003b4a8 d369000c	add.w	d1,y_pos(a1)
0003b4ac 08e900010022	bset	#status.player.in_air,status(a1)
0003b4b2 337c00000012	move.w	#0,y_vel(a1)
0003b4b8 337c00010014	move.w	#1,inertia(a1)
0003b4be 4a290027	tst.b	flip_angle(a1)
0003b4c2 6618	bne.s	+
0003b4c4 137c00010027	move.b	#1,flip_angle(a1)
0003b4ca 137c000f001c	move.b	#AniIDSonAni_Float2,anim(a1)
0003b4d0 137c007f002c	move.b	#$7F,flips_remaining(a1)
0003b4d6 137c0008002d	move.b	#8,flip_speed(a1)
0003b4dc 4e75	rts	
0003b5d0 7000	moveq	#0,d0
0003b5d2 10280024	move.b	routine(a0),d0
0003b5d6 323b0006	move.w	ObjB6_Index(pc,d0.w),d1
0003b5da 4efb1002	jmp	ObjB6_Index(pc,d1.w)
0003b5e8 7000	moveq	#0,d0
0003b5ea 103c006a	move.b	#($35<<1),d0
0003b5ee 6100b00a	bsr.w	LoadSubObject_Part2
0003b5f2 10280028	move.b	subtype(a0),d0
0003b5f6 02000006	andi.b	#6,d0
0003b5fa 5400	addq.b	#2,d0
0003b5fc 11400024	move.b	d0,routine(a0)
0003b600 4e75	rts	
0003b602 7000	moveq	#0,d0
0003b604 10280025	move.b	routine_secondary(a0),d0
0003b608 323b000a	move.w	off_3B614(pc,d0.w),d1
0003b60c 4ebb1006	jsr	off_3B614(pc,d1.w)
0003b61c 54280025	addq.b	#2,routine_secondary(a0)
0003b620 6000015c	bra.w	loc_3B77E
0003b624 6100016a	bsr.w	loc_3B790
0003b628 1038fe0f	move.b	(Vint_runcount+3).w,d0
0003b62c 020000f0	andi.b	#$F0,d0
0003b630 b0280028	cmp.b	subtype(a0),d0
0003b634 6702	beq.s	loc_3B638
0003b636 4e75	rts	
0003b638 54280025	addq.b	#2,routine_secondary(a0)
0003b63c 4228001c	clr.b	anim(a0)
0003b640 6000017a	bra.w	loc_3B7BC
0003b644 43f90003b822	lea	(Ani_objB6).l,a1
0003b64e 117c00020025	move.b	#2,routine_secondary(a0)
0003b654 317c00c0002a	move.w	#$C0,objoff_2A(a0)
0003b65a 4e75	rts	
0003b65c 7000	moveq	#0,d0
0003b65e 10280025	move.b	routine_secondary(a0),d0
0003b662 323b000a	move.w	off_3B66E(pc,d0.w),d1
0003b666 4ebb1006	jsr	off_3B66E(pc,d1.w)
0003b674 6100011a	bsr.w	loc_3B790
0003b678 5368002a	subq.w	#1,objoff_2A(a0)
0003b67c 6b02	bmi.s	+
0003b67e 4e75	rts	
0003b680 54280025	addq.b	#2,routine_secondary(a0)
0003b684 117c0020002a	move.b	#$20,objoff_2A(a0)
0003b68a 117c0003001c	move.b	#3,anim(a0)
0003b690 4228001b	clr.b	anim_frame(a0)
0003b694 4228001e	clr.b	anim_frame_duration(a0)
0003b698 61000122	bsr.w	loc_3B7BC
0003b69c 6100015a	bsr.w	loc_3B7F8
0003b6a0 70dc	moveq	#signextendB(SndID_Fire),d0
0003b6a6 5328002a	subq.b	#1,objoff_2A(a0)
0003b6aa 6b0a	bmi.s	+
0003b6ac 43f90003b822	lea	(Ani_objB6).l,a1
0003b6b6 117c00020025	move.b	#2,routine_secondary(a0)
0003b6bc 4228001a	clr.b	mapping_frame(a0)
0003b6c0 317c00c0002a	move.w	#$C0,objoff_2A(a0)
0003b6c6 4e75	rts	
0003b6c8 7000	moveq	#0,d0
0003b6ca 10280025	move.b	routine_secondary(a0),d0
0003b6ce 323b000a	move.w	off_3B6DA(pc,d0.w),d1
0003b6d2 4ebb1006	jsr	off_3B6DA(pc,d1.w)
0003b6e2 610000ac	bsr.w	loc_3B790
0003b6e6 10280022	move.b	status(a0),d0
0003b6ea 02000018	andi.b	#standing_mask,d0
0003b6ee 6602	bne.s	+
0003b6f0 4e75	rts	
0003b6f2 54280025	addq.b	#2,routine_secondary(a0)
0003b6f6 317c0010002a	move.w	#$10,objoff_2A(a0)
0003b6fc 4e75	rts	
0003b6fe 61000090	bsr.w	loc_3B790
0003b702 5368002a	subq.w	#1,objoff_2A(a0)
0003b706 6b02	bmi.s	+
0003b708 4e75	rts	
0003b70a 54280025	addq.b	#2,routine_secondary(a0)
0003b70e 117c0000001c	move.b	#0,anim(a0)
0003b714 6100afc0	bsr.w	Obj_GetOrientationToPlayer
0003b718 08a800000022	bclr	#status.npc.x_flip,status(a0)
0003b71e 4a40	tst.w	d0
0003b720 6606	bne.s	+
0003b722 08e800000022	bset	#status.npc.x_flip,status(a0)
0003b728 60000092	bra.w	loc_3B7BC
0003b72c 43f90003b822	lea	(Ani_objB6).l,a1
0003b736 42280025	clr.b	routine_secondary(a0)
0003b73a 4e75	rts	
0003b73c 7000	moveq	#0,d0
0003b73e 10280025	move.b	routine_secondary(a0),d0
0003b742 323b000a	move.w	off_3B74E(pc,d0.w),d1
0003b746 4ebb1006	jsr	off_3B74E(pc,d1.w)
0003b756 54280025	addq.b	#2,routine_secondary(a0)
0003b75a 117c0002001a	move.b	#2,mapping_frame(a0)
0003b760 6000001c	bra.w	loc_3B77E
0003b764 61000040	bsr.w	loc_3B7A6
0003b768 5368002a	subq.w	#1,objoff_2A(a0)
0003b76c 6b02	bmi.s	loc_3B770
0003b76e 4e75	rts	
0003b770 54280025	addq.b	#2,routine_secondary(a0)
0003b774 117c0004001c	move.b	#4,anim(a0)
0003b77a 60000040	bra.w	loc_3B7BC
0003b77e 10280028	move.b	subtype(a0),d0
0003b782 024000f0	andi.w	#$F0,d0
0003b786 11400028	move.b	d0,subtype(a0)
0003b78a 3140002a	move.w	d0,objoff_2A(a0)
0003b78e 4e75	rts	
0003b790 3f280008	move.w	x_pos(a0),-(sp)
0003b794 323c0023	move.w	#$23,d1
0003b798 343c0004	move.w	#4,d2
0003b79c 363c0004	move.w	#4,d3
0003b7a0 381f	move.w	(sp)+,d4
0003b7a6 3f280008	move.w	x_pos(a0),-(sp)
0003b7aa 323c000f	move.w	#$F,d1
0003b7ae 343c0018	move.w	#$18,d2
0003b7b2 363c0018	move.w	#$18,d3
0003b7b6 381f	move.w	(sp)+,d4
0003b7bc 10280022	move.b	status(a0),d0
0003b7c0 02000018	andi.b	#standing_mask,d0
0003b7c4 6730	beq.s	return_3B7F6
0003b7c6 08a800030022	bclr	#p1_standing_bit,status(a0)
0003b7cc 6710	beq.s	loc_3B7DE
0003b7ce 43f8b000	lea	(MainCharacter).w,a1
0003b7d2 08a900030022	bclr	#status.npc.p1_standing,status(a1)
0003b7d8 08e900010022	bset	#status.player.in_air,status(a1)
0003b7de 08a800040022	bclr	#p2_standing_bit,status(a0)
0003b7e4 6710	beq.s	return_3B7F6
0003b7e6 43f8b040	lea	(Sidekick).w,a1
0003b7ea 08a900040022	bclr	#status.npc.p2_standing,status(a1)
0003b7f0 08e900010022	bset	#status.player.in_air,status(a1)
0003b7f6 4e75	rts	
0003b7fc 6618	bne.s	+
0003b804 137c00720028	move.b	#$72,subtype(a1)
0003b80a 336800080008	move.w	x_pos(a0),x_pos(a1)
0003b810 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0003b816 4e75	rts	
0003b8a6 7000	moveq	#0,d0
0003b8a8 10280024	move.b	routine(a0),d0
0003b8ac 323b0006	move.w	ObjB7_Index(pc,d0.w),d1
0003b8b0 4efb1002	jmp	ObjB7_Index(pc,d1.w)
0003b8b8 6100ad3a	bsr.w	LoadSubObject
0003b8bc 117c0020002a	move.b	#$20,objoff_2A(a0)
0003b8c2 4e75	rts	
0003b8c4 5328002a	subq.b	#1,objoff_2A(a0)
0003b8c8 6700317e	beq.w	JmpTo65_DeleteObject
0003b8cc 08680000002b	bchg	#0,objoff_2B(a0)
0003b8d2 6700c174	beq.w	return_37A48
0003b968 7000	moveq	#0,d0
0003b96a 10280024	move.b	routine(a0),d0
0003b96e 323b0006	move.w	ObjB8_Index(pc,d0.w),d1
0003b972 4efb1002	jmp	ObjB8_Index(pc,d1.w)
0003b97c 6000ac76	bra.w	LoadSubObject
0003b980 4a280001	tst.b	render_flags(a0)
0003b984 6a12	bpl.s	+
0003b986 6100ad4e	bsr.w	Obj_GetOrientationToPlayer
0003b98a 4a41	tst.w	d1
0003b98c 670a	beq.s	+
0003b98e 06420060	addi.w	#$60,d2
0003b992 0c4200c0	cmpi.w	#$C0,d2
0003b996 6504	blo.s	++
0003b99c 54280024	addq.b	#2,routine(a0)
0003b9a0 317c0002002a	move.w	#2,objoff_2A(a0)
0003b9aa 6100ad2a	bsr.w	Obj_GetOrientationToPlayer
0003b9ae 7c00	moveq	#0,d6
0003b9b0 06420020	addi.w	#$20,d2
0003b9b4 0c420040	cmpi.w	#$40,d2
0003b9b8 6506	blo.s	loc_3B9C0
0003b9ba 3c00	move.w	d0,d6
0003b9bc e24e	lsr.w	#1,d6
0003b9be 5246	addq.w	#1,d6
0003b9c0 1146001a	move.b	d6,mapping_frame(a0)
0003b9c4 5368002a	subq.w	#1,objoff_2A(a0)
0003b9c8 660a	bne.s	+
0003b9ca 317c0060002a	move.w	#$60,objoff_2A(a0)
0003b9d0 61000006	bsr.w	loc_3B9D8
0003b9dc 664a	bne.s	+
0003b9e4 137c0003001a	move.b	#3,mapping_frame(a1)
0003b9ea 137c008e0028	move.b	#$8E,subtype(a1)
0003b9f0 336800080008	move.w	x_pos(a0),x_pos(a1)
0003b9f6 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0003ba00 234a002a	move.l	a2,objoff_2A(a1)
0003ba04 7000	moveq	#0,d0
0003ba06 1028001a	move.b	mapping_frame(a0),d0
0003ba0a e548	lsl.w	#2,d0
0003ba0c 45fb001c	lea	byte_3BA2A(pc,d0.w),a2
0003ba10 101a	move.b	(a2)+,d0
0003ba12 4880	ext.w	d0
0003ba14 d1690008	add.w	d0,x_pos(a1)
0003ba18 101a	move.b	(a2)+,d0
0003ba1a 4880	ext.w	d0
0003ba1c d169000c	add.w	d0,y_pos(a1)
0003ba20 135a0010	move.b	(a2)+,x_vel(a1)
0003ba24 135a0012	move.b	(a2)+,y_vel(a1)
0003ba28 4e75	rts	
0003baba 7000	moveq	#0,d0
0003babc 10280024	move.b	routine(a0),d0
0003bac0 323b0006	move.w	ObjB9_Index(pc,d0.w),d1
0003bac4 4efb1002	jmp	ObjB9_Index(pc,d1.w)
0003bace 6000ab24	bra.w	LoadSubObject
0003bad2 4a280001	tst.b	render_flags(a0)
0003bad6 6b04	bmi.s	+
0003bad8 6000001e	bra.w	loc_3BAF8
0003badc 54280024	addq.b	#2,routine(a0)
0003bae0 317cf0000010	move.w	#-$1000,x_vel(a0)
0003bae6 70ef	moveq	#signextendB(SndID_LargeLaser),d0
0003baec 6000000a	bra.w	loc_3BAF8
0003baf4 60000002	bra.w	loc_3BAF8
0003baf8 30280008	move.w	x_pos(a0),d0
0003bafc 3238ee00	move.w	(Camera_X_pos).w,d1
0003bb00 04410040	subi.w	#$40,d1
0003bb04 b041	cmp.w	d1,d0
0003bb06 6d002f40	blt.w	JmpTo65_DeleteObject
0003bb4c 7000	moveq	#0,d0
0003bb4e 10280024	move.b	routine(a0),d0
0003bb52 323b0006	move.w	ObjBA_Index(pc,d0.w),d1
0003bb56 4efb1002	jmp	ObjBA_Index(pc,d1.w)
0003bb5e 6000aa94	bra.w	LoadSubObject
0003bb7c 7000	moveq	#0,d0
0003bb7e 10280024	move.b	routine(a0),d0
0003bb82 323b0006	move.w	ObjBB_Index(pc,d0.w),d1
0003bb86 4efb1002	jmp	ObjBB_Index(pc,d1.w)
0003bb8e 6000aa64	bra.w	LoadSubObject
0003bbbc 7000	moveq	#0,d0
0003bbbe 10280024	move.b	routine(a0),d0
0003bbc2 323b0006	move.w	ObjBC_Index(pc,d0.w),d1
0003bbc6 4efb1002	jmp	ObjBC_Index(pc,d1.w)
0003bbce 6100aa24	bsr.w	LoadSubObject
0003bbd2 31680008002c	move.w	x_pos(a0),objoff_2C(a0)
0003bbd8 4e75	rts	
0003bbda 3028002c	move.w	objoff_2C(a0),d0
0003bbde 3238eee2	move.w	(Camera_BG_X_offset).w,d1
0003bbe2 0c410380	cmpi.w	#$380,d1
0003bbe6 64002e60	bhs.w	JmpTo65_DeleteObject
0003bbea d041	add.w	d1,d0
0003bbec 31400008	move.w	d0,x_pos(a0)
0003bbf0 08680000002a	bchg	#0,objoff_2A(a0)
0003bbf6 6700be50	beq.w	return_37A48
0003bc1c 7000	moveq	#0,d0
0003bc1e 10280024	move.b	routine(a0),d0
0003bc22 323b0006	move.w	ObjBD_Index(pc,d0.w),d1
0003bc26 4efb1002	jmp	ObjBD_Index(pc,d1.w)
0003bc30 54280024	addq.b	#2,routine(a0)
0003bc34 317c0001002a	move.w	#1,objoff_2A(a0)
0003bc3a 4e75	rts	
0003bc3c 5368002a	subq.w	#1,objoff_2A(a0)
0003bc40 660a	bne.s	+
0003bc42 317c0040002a	move.w	#$40,objoff_2A(a0)
0003bc48 610000ae	bsr.w	loc_3BCF8
0003bc50 7000	moveq	#0,d0
0003bc52 10280025	move.b	routine_secondary(a0),d0
0003bc56 323b000a	move.w	off_3BC62(pc,d0.w),d1
0003bc5a 4ebb1006	jsr	off_3BC62(pc,d1.w)
0003bc6c 6100a986	bsr.w	LoadSubObject
0003bc70 117c0002001a	move.b	#2,mapping_frame(a0)
0003bc76 55280024	subq.b	#2,routine(a0)
0003bc7a 54280025	addq.b	#2,routine_secondary(a0)
0003bc7e 317c00c7002a	move.w	#$C7,objoff_2A(a0)
0003bc84 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0003bc8a 6706	beq.s	loc_3BC92
0003bc8c 317c01c7002a	move.w	#$1C7,objoff_2A(a0)
0003bc92 7000	moveq	#0,d0
0003bc94 10280028	move.b	subtype(a0),d0
0003bc98 0400007e	subi.b	#$7E,d0
0003bc9c 11400028	move.b	d0,subtype(a0)
0003bca0 317b00060012	move.w	word_3BCA8(pc,d0.w),y_vel(a0)
0003bca6 4e75	rts	
0003bcac 43f90003bd2e	lea	(Ani_objBD).l,a1
0003bcb6 5368002a	subq.w	#1,objoff_2A(a0)
0003bcba 6b04	bmi.s	loc_3BCC0
0003bcbc 60000020	bra.w	loc_3BCDE
0003bcc0 54280025	addq.b	#2,routine_secondary(a0)
0003bcc4 117c0001001c	move.b	#1,anim(a0)
0003bcca 4e75	rts	
0003bccc 43f90003bd2e	lea	(Ani_objBD).l,a1
0003bcd6 6100fae4	bsr.w	loc_3B7BC
0003bcde 3f280008	move.w	x_pos(a0),-(sp)
0003bce6 323c0023	move.w	#$23,d1
0003bcea 343c0004	move.w	#4,d2
0003bcee 363c0005	move.w	#5,d3
0003bcf2 381f	move.w	(sp)+,d4
0003bcfc 6624	bne.s	+
0003bd04 336800080008	move.w	x_pos(a0),x_pos(a1)
0003bd0a 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0003bd10 137c00040024	move.b	#4,routine(a1)
0003bd16 136800280028	move.b	subtype(a0),subtype(a1)
0003bd1c 136800010001	move.b	render_flags(a0),render_flags(a1)
0003bd22 4e75	rts	
0003bd7a 7000	moveq	#0,d0
0003bd7c 10280024	move.b	routine(a0),d0
0003bd80 323b0006	move.w	ObjBE_Index(pc,d0.w),d1
0003bd84 4efb1002	jmp	ObjBE_Index(pc,d1.w)
0003bd94 7000	moveq	#0,d0
0003bd96 103c0082	move.b	#($41<<1),d0
0003bd9a 6100a85e	bsr.w	LoadSubObject_Part2
0003bd9e 6000f9de	bra.w	loc_3B77E
0003bda2 1038fe0f	move.b	(Vint_runcount+3).w,d0
0003bda6 020000f0	andi.b	#$F0,d0
0003bdaa b0280028	cmp.b	subtype(a0),d0
0003bdae 6704	beq.s	+
0003bdb4 54280024	addq.b	#2,routine(a0)
0003bdb8 4228001c	clr.b	anim(a0)
0003bdbc 317c00a0002a	move.w	#$A0,objoff_2A(a0)
0003bdc6 43f90003be36	lea	(Ani_objBE).l,a1
0003bdd4 5368002a	subq.w	#1,objoff_2A(a0)
0003bdd8 6708	beq.s	+
0003bdda 61000028	bsr.w	loc_3BE04
0003bde2 54280024	addq.b	#2,routine(a0)
0003bde6 117c0001001c	move.b	#1,anim(a0)
0003bdec 6100f9ce	bsr.w	loc_3B7BC
0003bdf4 117c00020024	move.b	#2,routine(a0)
0003bdfa 317c0040002a	move.w	#$40,objoff_2A(a0)
0003be04 1028001a	move.b	mapping_frame(a0),d0
0003be08 0c000003	cmpi.b	#3,d0
0003be0c 6708	beq.s	+
0003be0e 0c000004	cmpi.b	#4,d0
0003be12 6600f9a8	bne.w	loc_3B7BC
0003be16 3f280008	move.w	x_pos(a0),-(sp)
0003be1a 323c0023	move.w	#$23,d1
0003be1e 343c0018	move.w	#$18,d2
0003be22 363c0019	move.w	#$19,d3
0003be26 381f	move.w	(sp)+,d4
0003beaa 7000	moveq	#0,d0
0003beac 10280024	move.b	routine(a0),d0
0003beb0 323b0006	move.w	ObjBF_Index(pc,d0.w),d1
0003beb4 4efb1002	jmp	ObjBF_Index(pc,d1.w)
0003bebc 6000a736	bra.w	LoadSubObject
0003bec0 43f90003bed8	lea	(Ani_objBF).l,a1
0003bf04 7000	moveq	#0,d0
0003bf06 10280024	move.b	routine(a0),d0
0003bf0a 323b0006	move.w	ObjC0_Index(pc,d0.w),d1
0003bf0e 4efb1002	jmp	ObjC0_Index(pc,d1.w)
0003bf16 303c0086	move.w	#($43<<1),d0
0003bf1a 6100a6de	bsr.w	LoadSubObject_Part2
0003bf1e 7000	moveq	#0,d0
0003bf20 10280028	move.b	subtype(a0),d0
0003bf24 e948	lsl.w	#4,d0
0003bf26 082800000022	btst	#status.npc.x_flip,status(a0)
0003bf2c 6602	bne.s	+
0003bf2e 4440	neg.w	d0
0003bf30 32280008	move.w	x_pos(a0),d1
0003bf34 31410034	move.w	d1,objoff_34(a0)
0003bf38 d041	add.w	d1,d0
0003bf3a 31400032	move.w	d0,objoff_32(a0)
0003bf3e 7000	moveq	#0,d0
0003bf40 10280025	move.b	routine_secondary(a0),d0
0003bf44 323b001a	move.w	off_3BF60(pc,d0.w),d1
0003bf48 4ebb1016	jsr	off_3BF60(pc,d1.w)
0003bf4c 323c0010	move.w	#$10,d1
0003bf50 363c0011	move.w	#$11,d3
0003bf54 38280008	move.w	x_pos(a0),d4
0003bf66 10280022	move.b	status(a0),d0
0003bf6a 02000018	andi.b	#standing_mask,d0
0003bf6e 6742	beq.s	+++
0003bf70 54280025	addq.b	#2,routine_secondary(a0)
0003bf74 317c0c000010	move.w	#$C00,x_vel(a0)
0003bf7a 317c00800030	move.w	#$80,objoff_30(a0)
0003bf80 082800000022	btst	#status.npc.x_flip,status(a0)
0003bf86 6608	bne.s	+
0003bf88 44680010	neg.w	x_vel(a0)
0003bf8c 44680030	neg.w	objoff_30(a0)
0003bf94 10280022	move.b	status(a0),d0
0003bf98 1200	move.b	d0,d1
0003bf9a 02010008	andi.b	#p1_standing,d1
0003bf9e 6706	beq.s	+
0003bfa0 43f8b000	lea	(MainCharacter).w,a1
0003bfa4 610e	bsr.s	loc_3BFB4
0003bfa6 02000010	andi.b	#p2_standing,d0
0003bfaa 6706	beq.s	+
0003bfac 43f8b040	lea	(Sidekick).w,a1
0003bfb0 6102	bsr.s	loc_3BFB4
0003bfb2 4e75	rts	
0003bfb4 42690014	clr.w	inertia(a1)
0003bfb8 42690010	clr.w	x_vel(a1)
0003bfbc 336800080008	move.w	x_pos(a0),x_pos(a1)
0003bfc2 08a900000022	bclr	#status.player.x_flip,status(a1)
0003bfc8 082800000022	btst	#status.npc.x_flip,status(a0)
0003bfce 6606	bne.s	+
0003bfd0 08e900000022	bset	#status.player.x_flip,status(a1)
0003bfd6 4e75	rts	
0003bfd8 30280030	move.w	objoff_30(a0),d0
0003bfdc d1680010	add.w	d0,x_vel(a0)
0003bfe4 30280032	move.w	objoff_32(a0),d0
0003bfe8 90680008	sub.w	x_pos(a0),d0
0003bfec 082800000022	btst	#status.npc.x_flip,status(a0)
0003bff2 6702	beq.s	+
0003bff4 4440	neg.w	d0
0003bff6 4a40	tst.w	d0
0003bff8 6a3a	bpl.s	loc_3C034
0003bffa 10280022	move.b	status(a0),d0
0003bffe 02000018	andi.b	#standing_mask,d0
0003c002 671a	beq.s	return_3C01E
0003c004 1200	move.b	d0,d1
0003c006 02010008	andi.b	#p1_standing,d1
0003c00a 6706	beq.s	+
0003c00c 43f8b000	lea	(MainCharacter).w,a1
0003c010 61a2	bsr.s	loc_3BFB4
0003c012 02000010	andi.b	#p2_standing,d0
0003c016 6706	beq.s	return_3C01E
0003c018 43f8b040	lea	(Sidekick).w,a1
0003c01c 6196	bsr.s	loc_3BFB4
0003c01e 4e75	rts	
0003c020 336800100010	move.w	x_vel(a0),x_vel(a1)
0003c026 337cfc000012	move.w	#-$400,y_vel(a1)
0003c02c 08e900010022	bset	#status.player.in_air,status(a1)
0003c032 4e75	rts	
0003c034 54280025	addq.b	#2,routine_secondary(a0)
0003c038 316800320008	move.w	objoff_32(a0),x_pos(a0)
0003c03e 10280022	move.b	status(a0),d0
0003c042 02000018	andi.b	#standing_mask,d0
0003c046 671a	beq.s	loc_3C062
0003c048 1200	move.b	d0,d1
0003c04a 02010008	andi.b	#p1_standing,d1
0003c04e 6706	beq.s	loc_3C056
0003c050 43f8b000	lea	(MainCharacter).w,a1
0003c054 61ca	bsr.s	loc_3C020
0003c056 02000010	andi.b	#p2_standing,d0
0003c05a 6706	beq.s	loc_3C062
0003c05c 43f8b040	lea	(Sidekick).w,a1
0003c060 61be	bsr.s	loc_3C020
0003c062 30280008	move.w	x_pos(a0),d0
0003c066 7204	moveq	#4,d1
0003c068 4a680030	tst.w	objoff_30(a0)
0003c06c 5ac2	spl	d2
0003c06e 6b02	bmi.s	+
0003c070 4441	neg.w	d1
0003c072 d041	add.w	d1,d0
0003c074 b0680034	cmp.w	objoff_34(a0),d0
0003c078 6402	bhs.s	+
0003c07a 4602	not.b	d2
0003c07c 4a02	tst.b	d2
0003c07e 6608	bne.s	+
0003c080 42280025	clr.b	routine_secondary(a0)
0003c084 30280034	move.w	objoff_34(a0),d0
0003c088 31400008	move.w	d0,x_pos(a0)
0003c08c 4e75	rts	
0003c0ac 7000	moveq	#0,d0
0003c0ae 10280024	move.b	routine(a0),d0
0003c0b2 323b0006	move.w	ObjC1_Index(pc,d0.w),d1
0003c0b6 4efb1002	jmp	ObjC1_Index(pc,d1.w)
0003c0c0 303c0088	move.w	#($44<<1),d0
0003c0c4 6100a534	bsr.w	LoadSubObject_Part2
0003c0c8 7000	moveq	#0,d0
0003c0ca 10280028	move.b	subtype(a0),d0
0003c0ce c0fc003c	mulu.w	#60,d0
0003c0d2 31400030	move.w	d0,plating_time(a0)
0003c0d6 4a280032	tst.b	plating_grabbed(a0)
0003c0da 6764	beq.s	ObjC1_Grab
0003c0dc 4a680030	tst.w	plating_time(a0)
0003c0e0 6706	beq.s	+
0003c0e2 53680030	subq.w	#1,plating_time(a0)
0003c0e6 6746	beq.s	ObjC1_Release
0003c0e8 43f8b000	lea	(MainCharacter).w,a1
0003c0ec 3028000c	move.w	y_pos(a0),d0
0003c0f0 04400018	subi.w	#$18,d0
0003c0f4 08380000f604	btst	#button_up,(Ctrl_1_Held).w
0003c0fa 670e	beq.s	+
0003c0fc 5369000c	subq.w	#1,y_pos(a1)
0003c100 b069000c	cmp.w	y_pos(a1),d0
0003c104 6504	blo.s	+
0003c106 3340000c	move.w	d0,y_pos(a1)
0003c10a 06400030	addi.w	#$30,d0
0003c10e 08380001f604	btst	#button_down,(Ctrl_1_Held).w
0003c114 670e	beq.s	+
0003c116 5269000c	addq.w	#1,y_pos(a1)
0003c11a b069000c	cmp.w	y_pos(a1),d0
0003c11e 6404	bhs.s	+
0003c120 3340000c	move.w	d0,y_pos(a1)
0003c124 1038f603	move.b	(Ctrl_1_Press_Logical).w,d0
0003c128 02400070	andi.w	#button_B_mask|button_C_mask|button_A_mask,d0
0003c12c 6768	beq.s	BranchTo16_JmpTo39_MarkObjGone
0003c12e 42280020	clr.b	collision_flags(a0)
0003c132 4238b02a	clr.b	(MainCharacter+obj_control).w
0003c136 4238f7c9	clr.b	(WindTunnel_holding_flag).w
0003c13a 42280032	clr.b	plating_grabbed(a0)
0003c13e 605a	bra.s	ObjC1_BeginBreakup
0003c140 4a280021	tst.b	collision_property(a0)
0003c144 6750	beq.s	BranchTo16_JmpTo39_MarkObjGone
0003c146 43f8b000	lea	(MainCharacter).w,a1
0003c14a 30280008	move.w	x_pos(a0),d0
0003c14e 04400014	subi.w	#$14,d0
0003c152 b0690008	cmp.w	x_pos(a1),d0
0003c156 643e	bhs.s	BranchTo16_JmpTo39_MarkObjGone
0003c158 42280021	clr.b	collision_property(a0)
0003c15c 0c2900040024	cmpi.b	#4,routine(a1)
0003c162 6432	bhs.s	BranchTo16_JmpTo39_MarkObjGone
0003c164 42690010	clr.w	x_vel(a1)
0003c168 42690012	clr.w	y_vel(a1)
0003c16c 30280008	move.w	x_pos(a0),d0
0003c170 04400014	subi.w	#$14,d0
0003c174 33400008	move.w	d0,x_pos(a1)
0003c178 08e900000022	bset	#status.player.x_flip,status(a1)
0003c17e 137c0011001c	move.b	#AniIDSonAni_Hang,anim(a1)
0003c184 11fc0001b02a	move.b	#1,(MainCharacter+obj_control).w
0003c18a 11fc0001f7c9	move.b	#1,(WindTunnel_holding_flag).w
0003c190 117c00010032	move.b	#1,plating_grabbed(a0)
0003c19a 49f90003c1e4	lea	(ObjC1_Positions).l,a4
0003c1a0 45f90003c1e0	lea	(ObjC1_BreakTimes).l,a2
0003c1a6 6100004c	bsr.w	loc_3C1F4
0003c1aa 4a28003f	tst.b	plating_unk(a0)
0003c1ae 6706	beq.s	+
0003c1b0 5328003f	subq.b	#1,plating_unk(a0)
0003c1b4 6014	bra.s	++
0003c1c0 43f90003c1d6	lea	(Ani_objC1).l,a1
0003c1ca 4a280001	tst.b	render_flags(a0)
0003c1ce 6a002878	bpl.w	JmpTo65_DeleteObject
0003c1f4 34280008	move.w	x_pos(a0),d2
0003c1f8 3628000c	move.w	y_pos(a0),d3
0003c1fc 18280018	move.b	priority(a0),d4
0003c200 5304	subq.b	#1,d4
0003c202 7203	moveq	#3,d1
0003c204 2248	movea.l	a0,a1
0003c206 6006	bra.s	loc_3C20E
0003c20c 665e	bne.s	loc_3C26C
0003c20e 137c00040024	move.b	#4,routine(a1)
0003c21a 236800040004	move.l	mappings(a0),mappings(a1)
0003c220 336800020002	move.w	art_tile(a0),art_tile(a1)
0003c226 137c00840001	move.b	#1<<render_flags.on_screen|1<<render_flags.level_fg,render_flags(a1)
0003c22c 336800080008	move.w	x_pos(a0),x_pos(a1)
0003c232 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0003c238 301c	move.w	(a4)+,d0
0003c23a d042	add.w	d2,d0
0003c23c 33400008	move.w	d0,x_pos(a1)
0003c240 301c	move.w	(a4)+,d0
0003c242 d043	add.w	d3,d0
0003c244 3340000c	move.w	d0,y_pos(a1)
0003c248 13440018	move.b	d4,priority(a1)
0003c24c 137c00100019	move.b	#$10,width_pixels(a1)
0003c252 137c0001001a	move.b	#1,mapping_frame(a1)
0003c258 337cfc000010	move.w	#-$400,x_vel(a1)
0003c25e 337c00000012	move.w	#0,y_vel(a1)
0003c264 135a003f	move.b	(a2)+,plating_unk(a1)
0003c268 51c9ff9e	dbf	d1,loc_3C208
0003c26c 303c00cb	move.w	#SndID_SlowSmash,d0
0003c270 4ef900001370	jmp	(PlaySound).l
0003c328 7000	moveq	#0,d0
0003c32a 10280024	move.b	routine(a0),d0
0003c32e 323b0006	move.w	ObjC2_Index(pc,d0.w),d1
0003c332 4efb1002	jmp	ObjC2_Index(pc,d1.w)
0003c33a 6000a2b8	bra.w	LoadSubObject
0003c33e 1178b01c0030	move.b	(MainCharacter+anim).w,objoff_30(a0)
0003c344 3f280008	move.w	x_pos(a0),-(sp)
0003c348 323c001b	move.w	#$1B,d1
0003c34c 343c0008	move.w	#8,d2
0003c350 363c0009	move.w	#9,d3
0003c354 381f	move.w	(sp)+,d4
0003c35a 082800030022	btst	#p1_standing_bit,status(a0)
0003c360 6604	bne.s	ObjC2_Bust
0003c366 0c2800020030	cmpi.b	#2,objoff_30(a0)
0003c36c 6646	bne.s	+
0003c36e 31fc2880eec8	move.w	#$2880,(Camera_Min_X_pos).w
0003c374 08a800030022	bclr	#p1_standing_bit,status(a0)
0003c380 117c00020024	move.b	#2,routine(a0)
0003c386 08f80001b022	bset	#status.player.in_air,(MainCharacter+status).w
0003c38c 08b80003b022	bclr	#status.player.on_object,(MainCharacter+status).w
0003c392 43f88850	lea	(Level_Layout+$850).w,a1
0003c396 22fc8a707172	move.l	#$8A707172,(a1)+
0003c39c 32fc7374	move.w	#$7374,(a1)+
0003c3a0 43f88950	lea	(Level_Layout+$950).w,a1
0003c3a4 22fc6e787978	move.l	#$6E787978,(a1)+
0003c3aa 32fc787a	move.w	#$787A,(a1)+
0003c3ae 11fc0001f72c	move.b	#1,(Screen_redraw_flag).w
0003c3d6 7000	moveq	#0,d0
0003c3d8 10280024	move.b	routine(a0),d0
0003c3dc 323b0006	move.w	ObjC3_Index(pc,d0.w),d1
0003c3e0 4efb1002	jmp	ObjC3_Index(pc,d1.w)
0003c3e8 6100a20a	bsr.w	LoadSubObject
0003c3ec 117c0007001e	move.b	#7,anim_frame_duration(a0)
0003c3f6 3038f636	move.w	(RNG_seed).w,d0
0003c3fa 0240001c	andi.w	#$1C,d0
0003c3fe 91680008	sub.w	d0,x_pos(a0)
0003c402 06680010000c	addi.w	#$10,y_pos(a0)
0003c408 317cff000012	move.w	#-$100,y_vel(a0)
0003c40e 317cff000010	move.w	#-$100,x_vel(a0)
0003c414 4e75	rts	
0003c41a 5328001e	subq.b	#1,anim_frame_duration(a0)
0003c41e 6a14	bpl.s	+
0003c420 117c0007001e	move.b	#7,anim_frame_duration(a0)
0003c426 5228001a	addq.b	#1,mapping_frame(a0)
0003c42a 0c280005001a	cmpi.b	#5,mapping_frame(a0)
0003c430 67002616	beq.w	JmpTo65_DeleteObject
0003c442 7000	moveq	#0,d0
0003c444 10280024	move.b	routine(a0),d0
0003c448 323b0006	move.w	ObjC5_Index(pc,d0.w),d1
0003c44c 4efb1002	jmp	ObjC5_Index(pc,d1.w)
0003c464 6100a18e	bsr.w	LoadSubObject
0003c468 10280028	move.b	subtype(a0),d0
0003c46c 04000090	subi.b	#$90,d0
0003c470 11400024	move.b	d0,routine(a0)
0003c474 4e75	rts	
0003c476 7000	moveq	#0,d0
0003c478 10280025	move.b	routine_secondary(a0),d0
0003c47c 323b000a	move.w	ObjC5_CaseIndex(pc,d0.w),d1
0003c480 4ebb1006	jsr	ObjC5_CaseIndex(pc,d1.w)
0003c484 60000766	bra.w	ObjC5_HandleHits
0003c4a8 54280025	addq.b	#2,routine_secondary(a0)
0003c4ac 117c00000020	move.b	#0,collision_flags(a0)
0003c4b2 117c00080021	move.b	#8,collision_property(a0)
0003c4b8 303c0442	move.w	#$442,d0
0003c4bc 31c0eece	move.w	d0,(Camera_Max_Y_pos).w
0003c4c0 31c0eec6	move.w	d0,(Camera_Max_Y_pos_target).w
0003c4c4 30280008	move.w	x_pos(a0),d0
0003c4c8 04400060	subi.w	#$60,d0
0003c4cc 31400034	move.w	d0,objoff_34(a0)
0003c4d0 064000c0	addi.w	#$C0,d0
0003c4d4 31400036	move.w	d0,objoff_36(a0)
0003c4dc 6100a1f8	bsr.w	Obj_GetOrientationToPlayer
0003c4e0 06420020	addi.w	#$20,d2
0003c4e4 0c420040	cmpi.w	#$40,d2
0003c4e8 6504	blo.s	ObjC5_CaseStart
0003c4ee 54280025	addq.b	#2,routine_secondary(a0)
0003c4f2 317c00400012	move.w	#$40,y_vel(a0)
0003c4f8 45f90003cc60	lea	(ChildObject_ObjC5LaserWall).l,a2
0003c4fe 6100a2d0	bsr.w	LoadChildObject
0003c502 046900880008	subi.w	#$88,x_pos(a1)
0003c508 06690060000c	addi.w	#$60,y_pos(a1)
0003c50e 45f90003cc60	lea	(ChildObject_ObjC5LaserWall).l,a2
0003c514 6100a2ba	bsr.w	LoadChildObject
0003c518 066900880008	addi.w	#$88,x_pos(a1)
0003c51e 06690060000c	addi.w	#$60,y_pos(a1)
0003c524 45f90003cc6c	lea	(ChildObject_ObjC5LaserShooter).l,a2
0003c52a 6100a2a4	bsr.w	LoadChildObject
0003c52e 45f90003cc70	lea	(ChildObject_ObjC5PlatformReleaser).l,a2
0003c534 6100a29a	bsr.w	LoadChildObject
0003c538 45f90003cc78	lea	(ChildObject_ObjC5Robotnik).l,a2
0003c53e 6100a290	bsr.w	LoadChildObject
0003c542 317c005a002a	move.w	#$5A,objoff_2A(a0)
0003c548 70f9	moveq	#signextendB(MusID_FadeOut),d0
0003c552 5368002a	subq.w	#1,objoff_2A(a0)
0003c556 6b04	bmi.s	ObjC5_CaseSpeedDown
0003c55c 54280025	addq.b	#2,routine_secondary(a0)
0003c560 317c0060002a	move.w	#$60,objoff_2A(a0)
0003c566 7093	moveq	#signextendB(MusID_Boss),d0
0003c570 5368002a	subq.w	#1,objoff_2A(a0)
0003c574 6708	beq.s	ObjC5_CaseStopDown
0003c57e 54280025	addq.b	#2,routine_secondary(a0)
0003c582 42680012	clr.w	y_vel(a0)
0003c58a 54280025	addq.b	#2,routine_secondary(a0)
0003c58e 6100a146	bsr.w	Obj_GetOrientationToPlayer
0003c592 323c0100	move.w	#$100,d1
0003c596 4a40	tst.w	d0
0003c598 6602	bne.s	ObjC5_CasePMLoader
0003c59a 4441	neg.w	d1
0003c59c 31410010	move.w	d1,x_vel(a0)
0003c5a0 08e800020022	bset	#status.npc.misc,status(a0)
0003c5a6 317c0070002a	move.w	#$70,objoff_2A(a0)
0003c5b0 5368002a	subq.w	#1,objoff_2A(a0)
0003c5b4 6b26	bmi.s	ObjC5_CaseOpeningAnim
0003c5b6 30280008	move.w	x_pos(a0),d0
0003c5ba 4a680010	tst.w	x_vel(a0)
0003c5be 6b0a	bmi.s	ObjC5_CaseBoundaryChk2
0003c5c0 b0680036	cmp.w	objoff_36(a0),d0
0003c5c4 640a	bhs.s	ObjC5_CaseNegSpeed
0003c5c6 6000000c	bra.w	ObjC5_CaseMoveDisplay
0003c5ca b0680034	cmp.w	objoff_34(a0),d0
0003c5ce 6404	bhs.s	ObjC5_CaseMoveDisplay
0003c5d0 44680010	neg.w	x_vel(a0)
0003c5dc 54280025	addq.b	#2,routine_secondary(a0)
0003c5e0 4228001c	clr.b	anim(a0)
0003c5e8 43f90003ccb2	lea	(Ani_objC5).l,a1
0003c5f6 54280025	addq.b	#2,routine_secondary(a0)
0003c5fa 317c000e002a	move.w	#$E,objoff_2A(a0)
0003c600 3268003c	movea.w	objoff_3C(a0),a1
0003c604 137c00040025	move.b	#4,routine_secondary(a1)
0003c60e 5368002a	subq.w	#1,objoff_2A(a0)
0003c612 670c	beq.s	ObjC5_CaseAddCollision
0003c614 3268003c	movea.w	objoff_3C(a0),a1
0003c618 5269000c	addq.w	#1,y_pos(a1)
0003c620 54280025	addq.b	#2,routine_secondary(a0)
0003c624 317c0040002a	move.w	#$40,objoff_2A(a0)
0003c62a 08e800040022	bset	#status.npc.p2_standing,status(a0)
0003c630 08e800060022	bset	#status.npc.p2_pushing,status(a0)
0003c636 117c00060020	move.b	#6,collision_flags(a0)
0003c640 5368002a	subq.w	#1,objoff_2A(a0)
0003c644 6b04	bmi.s	ObjC5_CaseLoadLaser
0003c64a 54280025	addq.b	#2,routine_secondary(a0)
0003c64e 45f90003cc74	lea	(ChildObject_ObjC5Laser).l,a2
0003c654 6100a17a	bsr.w	LoadChildObject
0003c65c 3268003e	movea.w	parent(a0),a1
0003c660 082900020022	btst	#status.npc.misc,status(a1)
0003c666 6604	bne.s	ObjC5_CaseLaserSpeed
0003c66c 54280025	addq.b	#2,routine_secondary(a0)
0003c670 317c0080002a	move.w	#$80,objoff_2A(a0)
0003c676 6100a05e	bsr.w	Obj_GetOrientationToPlayer
0003c67a 323c0080	move.w	#$80,d1
0003c67e 4a40	tst.w	d0
0003c680 6602	bne.s	ObjC5_CaseLaserSpeedSet
0003c682 4441	neg.w	d1
0003c684 31410010	move.w	d1,x_vel(a0)
0003c68c 5368002a	subq.w	#1,objoff_2A(a0)
0003c690 6b26	bmi.s	ObjC5_CaseStopLaserDelete
0003c692 30280008	move.w	x_pos(a0),d0
0003c696 4a680010	tst.w	x_vel(a0)
0003c69a 6b0a	bmi.s	ObjC5_CaseBoundaryLaserChk2
0003c69c b0680036	cmp.w	objoff_36(a0),d0
0003c6a0 640a	bhs.s	ObjC5_CaseLaserStopMove
0003c6a2 6000000c	bra.w	ObjC5_CaseLaserMoveDisplay
0003c6a6 b0680034	cmp.w	objoff_34(a0),d0
0003c6aa 6404	bhs.s	ObjC5_CaseLaserMoveDisplay
0003c6ac 42680010	clr.w	x_vel(a0)
0003c6b8 54280025	addq.b	#2,routine_secondary(a0)
0003c6bc 317c000e002a	move.w	#$E,objoff_2A(a0)
0003c6c2 08a800030022	bclr	#status.npc.p1_standing,status(a0)
0003c6c8 08a800040022	bclr	#status.npc.p2_standing,status(a0)
0003c6ce 08a800060022	bclr	#status.npc.p2_pushing,status(a0)
0003c6d4 42280020	clr.b	collision_flags(a0)
0003c6d8 3268003e	movea.w	parent(a0),a1
0003c6e4 5368002a	subq.w	#1,objoff_2A(a0)
0003c6e8 670c	beq.s	ObjC5_CaseClosingAnim
0003c6ea 3268003c	movea.w	objoff_3C(a0),a1
0003c6ee 5369000c	subq.w	#1,y_pos(a1)
0003c6f6 54280025	addq.b	#2,routine_secondary(a0)
0003c6fa 117c0001001c	move.b	#1,anim(a0)
0003c704 117c00080025	move.b	#8,routine_secondary(a0)
0003c70a 6100fe7e	bsr.w	ObjC5_CaseXSpeed
0003c712 42280020	clr.b	collision_flags(a0)
0003c716 50e80021	st.b	collision_property(a0)
0003c71a 08a800060022	bclr	#status.npc.p2_pushing,status(a0)
0003c720 53680030	subq.w	#1,objoff_30(a0)
0003c724 6b08	bmi.s	ObjC5_End
0003c72e 708f	moveq	#signextendB(MusID_WFZ),d0
0003c734 303c0720	move.w	#$720,d0
0003c738 31c0eece	move.w	d0,(Camera_Max_Y_pos).w
0003c73c 31c0eec6	move.w	d0,(Camera_Max_Y_pos_target).w
0003c744 584f	addq.w	#4,sp
0003c746 4e75	rts	
0003c748 7000	moveq	#0,d0
0003c74a 10280025	move.b	routine_secondary(a0),d0
0003c74e 323b0022	move.w	ObjC5_LaserWallIndex(pc,d0.w),d1
0003c752 4ebb101e	jsr	ObjC5_LaserWallIndex(pc,d1.w)
0003c756 4a10	tst.b	(a0)
0003c758 6700b2ee	beq.w	return_37A48
0003c75c 3f280008	move.w	x_pos(a0),-(sp)
0003c760 323c0013	move.w	#$13,d1
0003c764 343c0040	move.w	#$40,d2
0003c768 363c0080	move.w	#$80,d3
0003c76c 381f	move.w	(sp)+,d4
0003c778 54280025	addq.b	#2,routine_secondary(a0)
0003c77c 117c000c001a	move.b	#$C,mapping_frame(a0)
0003c786 3268002c	movea.w	objoff_2C(a0),a1
0003c78a 082900050022	btst	#status.npc.p1_pushing,status(a1)
0003c790 660e	bne.s	ObjC5_LaserWallTimerSet
0003c792 08680000002f	bchg	#0,objoff_2F(a0)
0003c798 6600b2ae	bne.w	return_37A48
0003c7a0 54280025	addq.b	#2,routine_secondary(a0)
0003c7a4 117c00040030	move.b	#4,objoff_30(a0)
0003c7ae 5328001e	subq.b	#1,anim_frame_duration(a0)
0003c7b2 6a00b294	bpl.w	return_37A48
0003c7b6 1028001e	move.b	anim_frame_duration(a0),d0
0003c7ba 1228001b	move.b	anim_frame(a0),d1
0003c7be 5400	addq.b	#2,d0
0003c7c0 6a22	bpl.s	ObjC5_LaserWallDisplay
0003c7c2 1141001e	move.b	d1,anim_frame_duration(a0)
0003c7c6 53280030	subq.b	#1,objoff_30(a0)
0003c7ca 6a18	bpl.s	ObjC5_LaserWallDisplay
0003c7cc 117c00100030	move.b	#$10,objoff_30(a0)
0003c7d2 5201	addq.b	#1,d1
0003c7d4 0c010005	cmpi.b	#5,d1
0003c7d8 6400226e	bhs.w	JmpTo65_DeleteObject
0003c7dc 1141001b	move.b	d1,anim_frame(a0)
0003c7e0 1141001e	move.b	d1,anim_frame_duration(a0)
0003c7e4 08a80000002f	bclr	#0,objoff_2F(a0)
0003c7ee 7000	moveq	#0,d0
0003c7f0 10280025	move.b	routine_secondary(a0),d0
0003c7f4 323b0006	move.w	ObjC5_PlatformReleaserIndex(pc,d0.w),d1
0003c7f8 4efb1002	jmp	ObjC5_PlatformReleaserIndex(pc,d1.w)
0003c806 54280025	addq.b	#2,routine_secondary(a0)
0003c80a 117c0005001a	move.b	#5,mapping_frame(a0)
0003c810 5068000c	addq.w	#8,y_pos(a0)
0003c818 3268002c	movea.w	objoff_2C(a0),a1
0003c81c 082900020022	btst	#status.npc.misc,status(a1)
0003c822 6604	bne.s	ObjC5_PlatformReleaserSetDown
0003c828 54280025	addq.b	#2,routine_secondary(a0)
0003c82c 317c0040002a	move.w	#$40,objoff_2A(a0)
0003c832 317c00400012	move.w	#$40,y_vel(a0)
0003c83c 5368002a	subq.w	#1,objoff_2A(a0)
0003c840 6708	beq.s	ObjC5_PlatformReleaserStop
0003c84a 54280025	addq.b	#2,routine_secondary(a0)
0003c84e 42680012	clr.w	y_vel(a0)
0003c852 317c0010002a	move.w	#$10,objoff_2A(a0)
0003c85c 3268002c	movea.w	objoff_2C(a0),a1
0003c860 082900050022	btst	#status.npc.p1_pushing,status(a1)
0003c866 663e	bne.s	ObjC5_PlatformReleaserDestroyP
0003c868 5368002a	subq.w	#1,objoff_2A(a0)
0003c86c 6634	bne.s	BranchTo8_JmpTo45_DisplaySprite
0003c86e 317c0080002a	move.w	#$80,objoff_2A(a0)
0003c874 7000	moveq	#0,d0
0003c876 1028002e	move.b	objoff_2E(a0),d0
0003c87a 5200	addq.b	#1,d0
0003c87c 0c000003	cmpi.b	#3,d0
0003c880 6502	blo.s	ObjC5_PlatformReleaserLoadP
0003c882 7000	moveq	#0,d0
0003c884 1140002e	move.b	d0,objoff_2E(a0)
0003c888 4a300030	tst.b	objoff_30(a0,d0.w)
0003c88c 6614	bne.s	BranchTo8_JmpTo45_DisplaySprite
0003c88e 50f00030	st.b	objoff_30(a0,d0.w)
0003c892 45f90003cc64	lea	(ChildObject_ObjC5Platform).l,a2
0003c898 61009f36	bsr.w	LoadChildObject
0003c89c 1368002e002e	move.b	objoff_2E(a0),objoff_2E(a1)
0003c8a6 54280025	addq.b	#2,routine_secondary(a0)
0003c8aa 08e800050022	bset	#status.npc.p1_pushing,status(a0)
0003c8b4 3268002c	movea.w	objoff_2C(a0),a1
0003c8b8 0c1100c5	cmpi.b	#ObjID_WFZBoss,id(a1)
0003c8bc 6600218a	bne.w	JmpTo65_DeleteObject
0003c8c8 7000	moveq	#0,d0
0003c8ca 10280025	move.b	routine_secondary(a0),d0
0003c8ce 323b001a	move.w	ObjC5_PlatformIndex(pc,d0.w),d1
0003c8d2 4ebb1016	jsr	ObjC5_PlatformIndex(pc,d1.w)
0003c8d6 43f90003ccb2	lea	(Ani_objC5).l,a1
0003c8e0 4a10	tst.b	(a0)
0003c8e2 6700b164	beq.w	return_37A48
0003c8f0 54280025	addq.b	#2,routine_secondary(a0)
0003c8f4 117c0003001c	move.b	#3,anim(a0)
0003c8fa 117c0007001a	move.b	#7,mapping_frame(a0)
0003c900 317c01000012	move.w	#$100,y_vel(a0)
0003c906 317c0060002a	move.w	#$60,objoff_2A(a0)
0003c90c 45f90003cc68	lea	(ChildObject_ObjC5PlatformHurt).l,a2
0003c912 60009ebc	bra.w	LoadChildObject
0003c916 6100006a	bsr.w	ObjC5_PlatformCheckExplode
0003c91a 5368002a	subq.w	#1,objoff_2A(a0)
0003c91e 6704	beq.s	ObjC5_PlatformLeft
0003c920 60000046	bra.w	ObjC5_PlatformMakeSolid
0003c924 54280025	addq.b	#2,routine_secondary(a0)
0003c928 317c0060002a	move.w	#$60,objoff_2A(a0)
0003c92e 317cff000010	move.w	#-$100,x_vel(a0)
0003c934 3168000c0034	move.w	y_pos(a0),objoff_34(a0)
0003c93a 6000002c	bra.w	ObjC5_PlatformMakeSolid
0003c93e 61000042	bsr.w	ObjC5_PlatformCheckExplode
0003c942 5368002a	subq.w	#1,objoff_2A(a0)
0003c946 660a	bne.s	ObjC5_PlatformTestLeftRight
0003c948 317c00c0002a	move.w	#$C0,objoff_2A(a0)
0003c94e 44680010	neg.w	x_vel(a0)
0003c952 7004	moveq	#4,d0
0003c954 3228000c	move.w	y_pos(a0),d1
0003c958 b2680034	cmp.w	objoff_34(a0),d1
0003c95c 6502	blo.s	ObjC5_PlatformChangeY
0003c95e 4440	neg.w	d0
0003c960 d1680012	add.w	d0,y_vel(a0)
0003c964 60000002	bra.w	ObjC5_PlatformMakeSolid
0003c968 3f280008	move.w	x_pos(a0),-(sp)
0003c970 323c0010	move.w	#$10,d1
0003c974 343c0008	move.w	#8,d2
0003c978 363c0008	move.w	#8,d3
0003c97c 381f	move.w	(sp)+,d4
0003c982 3268002c	movea.w	objoff_2C(a0),a1
0003c986 082900050022	btst	#status.npc.p1_pushing,status(a1)
0003c98c 66000004	bne.w	ObjC5_PlatformExplode
0003c990 4e75	rts	
0003c992 6100ee28	bsr.w	loc_3B7BC
0003c996 10bc0058	move.b	#ObjID_BossExplosion,id(a0)
0003c99a 42280024	clr.b	routine(a0)
0003c99e 3268003c	movea.w	objoff_3C(a0),a1
0003c9a6 584f	addq.w	#4,sp
0003c9a8 4e75	rts	
0003c9aa 7000	moveq	#0,d0
0003c9ac 10280025	move.b	routine_secondary(a0),d0
0003c9b0 323b0006	move.w	ObjC5_PlatformHurtIndex(pc,d0.w),d1
0003c9b4 4efb1002	jmp	ObjC5_PlatformHurtIndex(pc,d1.w)
0003c9bc 54280025	addq.b	#2,routine_secondary(a0)
0003c9c0 117c00980020	move.b	#$98,collision_flags(a0)
0003c9c6 4e75	rts	
0003c9c8 3268002c	movea.w	objoff_2C(a0),a1
0003c9cc 082900050022	btst	#status.npc.p1_pushing,status(a1)
0003c9d2 66002074	bne.w	JmpTo65_DeleteObject
0003c9d6 316900080008	move.w	x_pos(a1),x_pos(a0)
0003c9dc 3029000c	move.w	y_pos(a1),d0
0003c9e0 0640000c	addi.w	#$C,d0
0003c9e4 3140000c	move.w	d0,y_pos(a0)
0003c9e8 4e75	rts	
0003c9ea 3268002c	movea.w	objoff_2C(a0),a1
0003c9ee 082900050022	btst	#status.npc.p1_pushing,status(a1)
0003c9f4 66002052	bne.w	JmpTo65_DeleteObject
0003c9f8 7000	moveq	#0,d0
0003c9fa 10280025	move.b	routine_secondary(a0),d0
0003c9fe 323b0006	move.w	ObjC5_LaserShooterIndex(pc,d0.w),d1
0003ca02 4efb1002	jmp	ObjC5_LaserShooterIndex(pc,d1.w)
0003ca0c 54280025	addq.b	#2,routine_secondary(a0)
0003ca10 117c0004001a	move.b	#4,mapping_frame(a0)
0003ca1a 3268002c	movea.w	objoff_2C(a0),a1
0003ca1e 316900080008	move.w	x_pos(a1),x_pos(a0)
0003ca24 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0003ca2e 3268002c	movea.w	objoff_2C(a0),a1
0003ca32 316900080008	move.w	x_pos(a1),x_pos(a0)
0003ca3c 3268002c	movea.w	objoff_2C(a0),a1
0003ca40 082900050022	btst	#status.npc.p1_pushing,status(a1)
0003ca46 66002000	bne.w	JmpTo65_DeleteObject
0003ca4a 7000	moveq	#0,d0
0003ca4c 10280025	move.b	routine_secondary(a0),d0
0003ca50 323b0014	move.w	ObjC5_LaserIndex(pc,d0.w),d1
0003ca54 4ebb1010	jsr	ObjC5_LaserIndex(pc,d1.w)
0003ca58 08680000002f	bchg	#0,objoff_2F(a0)
0003ca5e 6600afe8	bne.w	return_37A48
0003ca70 54280025	addq.b	#2,routine_secondary(a0)
0003ca74 117c000d001a	move.b	#$D,mapping_frame(a0)
0003ca7a 117c00040018	move.b	#4,priority(a0)
0003ca80 117c00000020	move.b	#0,collision_flags(a0)
0003ca86 06680010000c	addi.w	#$10,y_pos(a0)
0003ca8c 117c000c001b	move.b	#$C,anim_frame(a0)
0003ca92 5768000c	subq.w	#3,y_pos(a0)
0003ca96 4e75	rts	
0003ca98 08e80000002f	bset	#0,objoff_2F(a0)
0003ca9e 5328001e	subq.b	#1,anim_frame_duration(a0)
0003caa2 6a1e	bpl.s	ObjC5_LaserNoLaser
0003caa4 1028001e	move.b	anim_frame_duration(a0),d0
0003caa8 5400	addq.b	#2,d0
0003caaa 6a10	bpl.s	ObjC5_LaserFlicker
0003caac 1028001b	move.b	anim_frame(a0),d0
0003cab0 5300	subq.b	#1,d0
0003cab2 6710	beq.s	ObjC5_LaseNext
0003cab4 1140001b	move.b	d0,anim_frame(a0)
0003cab8 1140001e	move.b	d0,anim_frame_duration(a0)
0003cabc 08a80000002f	bclr	#0,objoff_2F(a0)
0003cac2 4e75	rts	
0003cac4 54280025	addq.b	#2,routine_secondary(a0)
0003cac8 317c0040002a	move.w	#$40,objoff_2A(a0)
0003cace 4e75	rts	
0003cad0 5368002a	subq.w	#1,objoff_2A(a0)
0003cad4 6b02	bmi.s	ObjC5_LaseStartShooting
0003cad6 4e75	rts	
0003cad8 54280025	addq.b	#2,routine_secondary(a0)
0003cadc 06680010000c	addi.w	#$10,y_pos(a0)
0003cae2 4e75	rts	
0003cae4 7000	moveq	#0,d0
0003cae6 1028002e	move.b	objoff_2E(a0),d0
0003caea 5200	addq.b	#1,d0
0003caec 0c000005	cmpi.b	#5,d0
0003caf0 6418	bhs.s	ObjC5_LaseShotOut
0003caf2 06680010000c	addi.w	#$10,y_pos(a0)
0003caf8 1140002e	move.b	d0,objoff_2E(a0)
0003cafc 117b0028001a	move.b	ObjC5_LaserMappingsData(pc,d0.w),mapping_frame(a0)
0003cb02 117b00280020	move.b	ObjC5_LaserCollisionData(pc,d0.w),collision_flags(a0)
0003cb08 4e75	rts	
0003cb0a 54280025	addq.b	#2,routine_secondary(a0)
0003cb0e 317c0080002a	move.w	#$80,objoff_2A(a0)
0003cb14 08e800020022	bset	#status.npc.misc,status(a0)
0003cb1a 3268002c	movea.w	objoff_2C(a0),a1
0003cb1e 08e900030022	bset	#status.npc.p1_standing,status(a1)
0003cb24 4e75	rts	
0003cb32 3268002c	movea.w	objoff_2C(a0),a1
0003cb36 316900080008	move.w	x_pos(a1),x_pos(a0)
0003cb3c 4e75	rts	
0003cb3e 7000	moveq	#0,d0
0003cb40 10280025	move.b	routine_secondary(a0),d0
0003cb44 323b0006	move.w	ObjC5_RobotnikIndex(pc,d0.w),d1
0003cb48 4efb1002	jmp	ObjC5_RobotnikIndex(pc,d1.w)
0003cb52 54280025	addq.b	#2,routine_secondary(a0)
0003cb56 117c0000001a	move.b	#0,mapping_frame(a0)
0003cb5c 117c0001001c	move.b	#1,anim(a0)
0003cb62 317c2c600008	move.w	#$2C60,x_pos(a0)
0003cb68 317c04e6000c	move.w	#$4E6,y_pos(a0)
0003cb6e 45f90003cc7c	lea	(ChildObject_ObjC5RobotnikPlatform).l,a2
0003cb74 61009c5a	bsr.w	LoadChildObject
0003cb7c 3268002c	movea.w	objoff_2C(a0),a1
0003cb80 082900050022	btst	#status.npc.p1_pushing,status(a1)
0003cb86 660e	bne.s	ObjC5_RobotnikTimer
0003cb88 43f90003d0d8	lea	(Ani_objC5_objC6).l,a1
0003cb96 54280025	addq.b	#2,routine_secondary(a0)
0003cb9a 317c00c0002a	move.w	#$C0,objoff_2A(a0)
0003cba4 5368002a	subq.w	#1,objoff_2A(a0)
0003cba8 6b08	bmi.s	ObjC5_RobotnikDelete
0003cbaa 5268000c	addq.w	#1,y_pos(a0)
0003cbb2 3268003e	movea.w	parent(a0),a1
0003cbbe 3268002c	movea.w	objoff_2C(a0),a1
0003cbc2 3029000c	move.w	y_pos(a1),d0
0003cbc6 06400026	addi.w	#$26,d0
0003cbca 3140000c	move.w	d0,y_pos(a0)
0003cbd2 3f280008	move.w	x_pos(a0),-(sp)
0003cbda 323c000f	move.w	#$F,d1
0003cbde 343c0008	move.w	#8,d2
0003cbe2 363c0008	move.w	#8,d3
0003cbe6 381f	move.w	(sp)+,d4
0003cbec 4a280021	tst.b	collision_property(a0)
0003cbf0 674a	beq.s	ObjC5_NoHitPointsLeft
0003cbf2 4a280020	tst.b	collision_flags(a0)
0003cbf6 6642	bne.s	return_3CC3A
0003cbf8 4a280030	tst.b	objoff_30(a0)
0003cbfc 6618	bne.s	ObjC5_FlashSetUp
0003cbfe 082800060022	btst	#status.npc.p2_pushing,status(a0)
0003cc04 6734	beq.s	return_3CC3A
0003cc06 117c00200030	move.b	#$20,objoff_30(a0)
0003cc0c 303c00ac	move.w	#SndID_BossHit,d0
0003cc10 4eb900001370	jsr	(PlaySound).l
0003cc16 43f8fb22	lea	(Normal_palette_line2+2).w,a1
0003cc1a 7000	moveq	#0,d0
0003cc1c 4a51	tst.w	(a1)
0003cc1e 6604	bne.s	ObjC5_FlashCollisionRestore
0003cc20 303c0eee	move.w	#$EEE,d0
0003cc24 3280	move.w	d0,(a1)
0003cc26 53280030	subq.b	#1,objoff_30(a0)
0003cc2a 660e	bne.s	return_3CC3A
0003cc2c 082800040022	btst	#status.npc.p2_standing,status(a0)
0003cc32 6706	beq.s	return_3CC3A
0003cc34 117c00060020	move.b	#6,collision_flags(a0)
0003cc3a 4e75	rts	
0003cc3c 7064	moveq	#100,d0
0003cc3e 610040c6	bsr.w	AddPoints
0003cc42 42280020	clr.b	collision_flags(a0)
0003cc46 317c00ef0030	move.w	#$EF,objoff_30(a0)
0003cc4c 117c001e0025	move.b	#$1E,routine_secondary(a0)
0003cc52 08e800050022	bset	#status.npc.p1_pushing,status(a0)
0003cc58 08a800060022	bclr	#status.npc.p2_pushing,status(a0)
0003cc5e 4e75	rts	
0003ced0 7000	moveq	#0,d0
0003ced2 10280024	move.b	routine(a0),d0
0003ced6 323b0006	move.w	ObjC6_Index(pc,d0.w),d1
0003ceda 4efb1002	jmp	ObjC6_Index(pc,d1.w)
0003cee6 6100970c	bsr.w	LoadSubObject
0003ceea 10280028	move.b	subtype(a0),d0
0003ceee 040000a4	subi.b	#$A4,d0
0003cef2 11400024	move.b	d0,routine(a0)
0003cef6 4e75	rts	
0003cef8 7000	moveq	#0,d0
0003cefa 10280025	move.b	routine_secondary(a0),d0
0003cefe 323b0006	move.w	ObjC6_State2_States(pc,d0.w),d1
0003cf02 4efb1002	jmp	ObjC6_State2_States(pc,d1.w)
0003cf10 54280025	addq.b	#2,routine_secondary(a0)
0003cf14 45f90003d0d0	lea	(ChildObject_3D0D0).l,a2
0003cf1a 610098b4	bsr.w	LoadChildObject
0003cf1e 337c03f80008	move.w	#$3F8,x_pos(a1)
0003cf24 337c0160000c	move.w	#$160,y_pos(a1)
0003cf2a 31c8f660	move.w	a0,(DEZ_Eggman).w
0003cf32 610097a2	bsr.w	Obj_GetOrientationToPlayer
0003cf36 0642005c	addi.w	#$5C,d2
0003cf3a 0c4200b8	cmpi.w	#$B8,d2
0003cf3e 6504	blo.s	loc_3CF44
0003cf44 54280025	addq.b	#2,routine_secondary(a0)
0003cf48 317c0018002a	move.w	#$18,objoff_2A(a0)
0003cf4e 117c0001001a	move.b	#1,mapping_frame(a0)
0003cf58 5368002a	subq.w	#1,objoff_2A(a0)
0003cf5c 6b04	bmi.s	loc_3CF62
0003cf62 54280025	addq.b	#2,routine_secondary(a0)
0003cf66 08e800020022	bset	#status.npc.misc,status(a0)
0003cf6c 317c02000010	move.w	#$200,x_vel(a0)
0003cf72 317c0010002a	move.w	#$10,objoff_2A(a0)
0003cf7c 0c6808100008	cmpi.w	#$810,x_pos(a0)
0003cf82 643c	bhs.s	loc_3CFC0
0003cf84 61009750	bsr.w	Obj_GetOrientationToPlayer
0003cf88 06420050	addi.w	#$50,d2
0003cf8c 0c4200a0	cmpi.w	#$A0,d2
0003cf90 640c	bhs.s	+
0003cf92 30290008	move.w	x_pos(a1),d0
0003cf96 06400050	addi.w	#$50,d0
0003cf9a 31400008	move.w	d0,x_pos(a0)
0003cf9e 5368002a	subq.w	#1,objoff_2A(a0)
0003cfa2 6a0a	bpl.s	+
0003cfa4 317c0020002a	move.w	#$20,objoff_2A(a0)
0003cfaa 61000060	bsr.w	loc_3D00C
0003cfb2 43f90003d0d8	lea	(Ani_objC5_objC6).l,a1
0003cfc0 117c0002001a	move.b	#2,mapping_frame(a0)
0003cfc6 42680010	clr.w	x_vel(a0)
0003cfca 4a280001	tst.b	render_flags(a0)
0003cfce 6a22	bpl.s	+
0003cfd0 54280025	addq.b	#2,routine_secondary(a0)
0003cfd4 317c00800010	move.w	#$80,x_vel(a0)
0003cfda 317cfe000012	move.w	#-$200,y_vel(a0)
0003cfe0 117c0002001a	move.b	#2,mapping_frame(a0)
0003cfe6 317c0050002a	move.w	#$50,objoff_2A(a0)
0003cfec 08e800030022	bset	#status.npc.p1_standing,status(a0)
0003cff6 5368002a	subq.w	#1,objoff_2A(a0)
0003cffa 6b001a4c	bmi.w	JmpTo65_DeleteObject
0003cffe 066800100012	addi.w	#$10,y_vel(a0)
0003d00c 45f90003d0d4	lea	(ChildObject_3D0D4).l,a2
0003d012 610097bc	bsr.w	LoadChildObject
0003d016 137c00aa0028	move.b	#$AA,subtype(a1)
0003d01c 137c0005001a	move.b	#5,mapping_frame(a1)
0003d022 337cff000010	move.w	#-$100,x_vel(a1)
0003d028 04690018000c	subi.w	#$18,y_pos(a1)
0003d02e 337c0008002a	move.w	#8,objoff_2A(a1)
0003d034 4e75	rts	
0003d036 7000	moveq	#0,d0
0003d038 10280025	move.b	routine_secondary(a0),d0
0003d03c 323b0006	move.w	ObjC6_State3_States(pc,d0.w),d1
0003d040 4efb1002	jmp	ObjC6_State3_States(pc,d1.w)
0003d04a 3268002c	movea.w	objoff_2C(a0),a1
0003d04e 082900020022	btst	#status.npc.misc,status(a1)
0003d054 6608	bne.s	loc_3D05E
0003d056 6100002e	bsr.w	loc_3D086
0003d05e 54280025	addq.b	#2,routine_secondary(a0)
0003d066 6100001e	bsr.w	loc_3D086
0003d06a 43f90003d0e6	lea	(Ani_objC6).l,a1
0003d078 43f8b000	lea	(MainCharacter).w,a1
0003d07c 08a900050022	bclr	#status.npc.p1_pushing,status(a1)
0003d086 3f280008	move.w	x_pos(a0),-(sp)
0003d08a 323c0013	move.w	#$13,d1
0003d08e 343c0020	move.w	#$20,d2
0003d092 363c0020	move.w	#$20,d3
0003d096 381f	move.w	(sp)+,d4
0003d09c 5368002a	subq.w	#1,objoff_2A(a0)
0003d0a0 6b0019a6	bmi.w	JmpTo65_DeleteObject
0003d0a4 066800100012	addi.w	#$10,y_vel(a0)
0003d23e 7000	moveq	#0,d0
0003d240 10280024	move.b	routine(a0),d0
0003d244 323b0006	move.w	ObjC8_Index(pc,d0.w),d1
0003d248 4efb1002	jmp	ObjC8_Index(pc,d1.w)
0003d254 6100939e	bsr.w	LoadSubObject
0003d258 317c0200002a	move.w	#$200,objoff_2A(a0)
0003d25e 7020	moveq	#$20,d0
0003d260 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0003d266 6602	bne.s	+
0003d268 4440	neg.w	d0
0003d26a 31400010	move.w	d0,x_vel(a0)
0003d26e 117c000f0016	move.b	#$F,y_radius(a0)
0003d274 117c00100017	move.b	#$10,x_radius(a0)
0003d27a 4e75	rts	
0003d27c 5368002a	subq.w	#1,objoff_2A(a0)
0003d280 6716	beq.s	+
0003d286 6100018e	bsr.w	loc_3D416
0003d28a 43f90003d44a	lea	(Ani_objC8).l,a1
0003d298 54280024	addq.b	#2,routine(a0)
0003d29c 317c003b002a	move.w	#$3B,objoff_2A(a0)
0003d2a6 5368002a	subq.w	#1,objoff_2A(a0)
0003d2aa 6b08	bmi.s	+
0003d2ac 61000168	bsr.w	loc_3D416
0003d2b4 117c00020024	move.b	#2,routine(a0)
0003d2ba 317c0200002a	move.w	#$200,objoff_2A(a0)
0003d2c0 44680010	neg.w	x_vel(a0)
0003d2c4 086800000001	bchg	#render_flags.x_flip,render_flags(a0)
0003d2ca 086800000022	bchg	#status.npc.x_flip,status(a0)
0003d2d4 117c00d70020	move.b	#$D7,collision_flags(a0)
0003d2da 610093fa	bsr.w	Obj_GetOrientationToPlayer
0003d2de 3802	move.w	d2,d4
0003d2e0 06420040	addi.w	#$40,d2
0003d2e4 0c420080	cmpi.w	#$80,d2
0003d2e8 640000b0	bhs.w	loc_3D39A
0003d2ec 06430040	addi.w	#$40,d3
0003d2f0 0c430080	cmpi.w	#$80,d3
0003d2f4 640000a4	bhs.w	loc_3D39A
0003d2f8 08a800030022	bclr	#status.npc.p1_standing,status(a0)
0003d2fe 66000086	bne.w	loc_3D386
0003d302 10280021	move.b	collision_property(a0),d0
0003d306 6760	beq.s	BranchTo18_JmpTo39_MarkObjGone
0003d308 08a800000021	bclr	#0,collision_property(a0)
0003d30e 6724	beq.s	+++
0003d310 0c290002001c	cmpi.b	#AniIDSonAni_Roll,anim(a1)
0003d316 6654	bne.s	loc_3D36C
0003d318 082900010022	btst	#status.player.in_air,status(a1)
0003d31e 6612	bne.s	++
0003d320 610093b4	bsr.w	Obj_GetOrientationToPlayer
0003d324 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0003d32a 6702	beq.s	+
0003d32c 5540	subq.w	#2,d0
0003d32e 4a40	tst.w	d0
0003d330 665e	bne.s	loc_3D390
0003d332 6170	bsr.s	loc_3D3A4
0003d334 43f8b040	lea	(Sidekick).w,a1
0003d338 08a800010021	bclr	#1,collision_property(a0)
0003d33e 6724	beq.s	+++
0003d340 0c290002001c	cmpi.b	#AniIDSonAni_Roll,anim(a1)
0003d346 6624	bne.s	loc_3D36C
0003d348 082900010022	btst	#status.player.in_air,status(a1)
0003d34e 6612	bne.s	++
0003d350 61009384	bsr.w	Obj_GetOrientationToPlayer
0003d354 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0003d35a 6702	beq.s	+
0003d35c 5540	subq.w	#2,d0
0003d35e 4a40	tst.w	d0
0003d360 662e	bne.s	loc_3D390
0003d362 6140	bsr.s	loc_3D3A4
0003d364 42280021	clr.b	collision_property(a0)
0003d36c 117c00970020	move.b	#$97,collision_flags(a0)
0003d372 08290001002b	btst	#status_secondary.invincible,status_secondary(a1)
0003d378 6706	beq.s	+
0003d37a 117c00170020	move.b	#$17,collision_flags(a0)
0003d380 08e800030022	bset	#status.npc.p1_standing,status(a0)
0003d386 117c0001001a	move.b	#1,mapping_frame(a0)
0003d390 117c00170020	move.b	#$17,collision_flags(a0)
0003d39a 1168002c0024	move.b	objoff_2C(a0),routine(a0)
0003d3a4 117c0002001a	move.b	#2,mapping_frame(a0)
0003d3aa 082900010022	btst	#status.player.in_air,status(a1)
0003d3b0 6706	beq.s	+
0003d3b2 117c0003001a	move.b	#3,mapping_frame(a0)
0003d3b8 32280008	move.w	x_pos(a0),d1
0003d3bc 3428000c	move.w	y_pos(a0),d2
0003d3c0 92690008	sub.w	x_pos(a1),d1
0003d3c4 9469000c	sub.w	y_pos(a1),d2
0003d3c8 4eb90000364e	jsr	(CalcAngle).l
0003d3ce 1238fe04	move.b	(Level_frame_counter).w,d1
0003d3d2 02410003	andi.w	#3,d1
0003d3d6 d041	add.w	d1,d0
0003d3d8 4eb9000033b6	jsr	(CalcSine).l
0003d3de c3fcf900	muls.w	#-$700,d1
0003d3e2 e081	asr.l	#8,d1
0003d3e4 33410010	move.w	d1,x_vel(a1)
0003d3e8 c1fcf900	muls.w	#-$700,d0
0003d3ec e080	asr.l	#8,d0
0003d3ee 33400012	move.w	d0,y_vel(a1)
0003d3f2 08e900010022	bset	#status.player.in_air,status(a1)
0003d3f8 08a900040022	bclr	#status.player.rolljumping,status(a1)
0003d3fe 08a900050022	bclr	#status.player.pushing,status(a1)
0003d404 4229003c	clr.b	jumping(a1)
0003d408 303c00b4	move.w	#SndID_Bumper,d0
0003d40c 4eb900001370	jsr	(PlaySound).l
0003d412 4e75	rts	
0003d414 4e75	rts	
0003d416 610092be	bsr.w	Obj_GetOrientationToPlayer
0003d41a 06420040	addi.w	#$40,d2
0003d41e 0c420080	cmpi.w	#$80,d2
0003d422 641a	bhs.s	+
0003d424 06430040	addi.w	#$40,d3
0003d428 0c430080	cmpi.w	#$80,d3
0003d42c 6410	bhs.s	+
0003d42e 11680024002c	move.b	routine(a0),objoff_2C(a0)
0003d434 117c00060024	move.b	#6,routine(a0)
0003d43a 4228001a	clr.b	mapping_frame(a0)
0003d43e 4e75	rts	
0003d4c8 7000	moveq	#0,d0
0003d4ca 10280024	move.b	routine(a0),d0
0003d4ce 323b0006	move.w	ObjC7_Index(pc,d0.w),d1
0003d4d2 4efb1002	jmp	ObjC7_Index(pc,d1.w)
0003d4f8 43fa1096	lea	ObjC7_SubObjData(pc),a1
0003d4fc 61009104	bsr.w	LoadSubObject_Part3
0003d500 116800280024	move.b	subtype(a0),routine(a0)
0003d506 4e75	rts	
0003d508 7000	moveq	#0,d0
0003d50a 10280025	move.b	routine_secondary(a0),d0
0003d50e 323b000a	move.w	off_3D51A(pc,d0.w),d1
0003d512 4ebb1006	jsr	off_3D51A(pc,d1.w)
0003d52a 54280025	addq.b	#2,routine_secondary(a0)
0003d52e 117c0003001a	move.b	#3,mapping_frame(a0)
0003d534 117c00050018	move.b	#5,priority(a0)
0003d53a 45f90003e55c	lea	(ChildObjC7_Shoulder).l,a2
0003d540 6100928e	bsr.w	LoadChildObject
0003d544 45f90003e564	lea	(ChildObjC7_FrontForearm).l,a2
0003d54a 61009284	bsr.w	LoadChildObject
0003d54e 45f90003e560	lea	(ChildObjC7_FrontLowerLeg).l,a2
0003d554 6100927a	bsr.w	LoadChildObject
0003d558 45f90003e568	lea	(ChildObjC7_Arm).l,a2
0003d55e 61009270	bsr.w	LoadChildObject
0003d562 45f90003e56c	lea	(ChildObjC7_FrontThigh).l,a2
0003d568 61009266	bsr.w	LoadChildObject
0003d56c 45f90003e570	lea	(ChildObjC7_Head).l,a2
0003d572 6100925c	bsr.w	LoadChildObject
0003d576 45f90003e574	lea	(ChildObjC7_Jet).l,a2
0003d57c 61009252	bsr.w	LoadChildObject
0003d580 45f90003e578	lea	(ChildObjC7_BackLowerLeg).l,a2
0003d586 61009248	bsr.w	LoadChildObject
0003d58a 45f90003e57c	lea	(ChildObjC7_BackForearm).l,a2
0003d590 6100923e	bsr.w	LoadChildObject
0003d594 45f90003e580	lea	(ChildObjC7_BackThigh).l,a2
0003d59a 61009234	bsr.w	LoadChildObject
0003d59e 43f90003e2e0	lea	(ObjC7_ChildDeltas).l,a1
0003d5a4 60000d02	bra.w	ObjC7_PositionChildren
0003d5a8 082800020022	btst	#status.npc.misc,status(a0)
0003d5ae 6602	bne.s	+
0003d5b0 4e75	rts	
0003d5b2 54280025	addq.b	#2,routine_secondary(a0)
0003d5b6 117c003c001e	move.b	#60,anim_frame_duration(a0)
0003d5bc 70f9	moveq	#signextendB(MusID_FadeOut),d0
0003d5c2 5328001e	subq.b	#1,anim_frame_duration(a0)
0003d5c6 6b02	bmi.s	+
0003d5c8 4e75	rts	
0003d5ca 54280025	addq.b	#2,routine_secondary(a0)
0003d5ce 117c0079001e	move.b	#$79,anim_frame_duration(a0)
0003d5d4 317cff000012	move.w	#-$100,y_vel(a0)
0003d5da 32680038	movea.w	objoff_38(a0),a1
0003d5de 137c00040025	move.b	#4,routine_secondary(a1)
0003d5e4 7094	moveq	#signextendB(MusID_EndBoss),d0
0003d5ea 5328001e	subq.b	#1,anim_frame_duration(a0)
0003d5ee 6714	beq.s	+
0003d5f0 70b7	moveq	#signextendB(SndID_Rumbling),d0
0003d5fa 43f90003e2e0	lea	(ObjC7_ChildDeltas).l,a1
0003d600 60000ca6	bra.w	ObjC7_PositionChildren
0003d604 54280025	addq.b	#2,routine_secondary(a0)
0003d608 42680012	clr.w	y_vel(a0)
0003d60c 117c001f001e	move.b	#$1F,anim_frame_duration(a0)
0003d612 117c00160020	move.b	#$16,collision_flags(a0)
0003d618 117c000c0021	move.b	#$C,collision_property(a0)
0003d61e 61000ace	bsr.w	ObjC7_InitCollision
0003d622 32680038	movea.w	objoff_38(a0),a1
0003d626 137c00060025	move.b	#6,routine_secondary(a1)
0003d62c 4e75	rts	
0003d62e 610009c8	bsr.w	ObjC7_CheckHit
0003d632 5328001e	subq.b	#1,anim_frame_duration(a0)
0003d636 6b02	bmi.s	+
0003d638 4e75	rts	
0003d63a 54280025	addq.b	#2,routine_secondary(a0)
0003d63e 4e75	rts	
0003d640 610009b6	bsr.w	ObjC7_CheckHit
0003d644 54280025	addq.b	#2,routine_secondary(a0)
0003d648 117c0020001e	move.b	#$20,anim_frame_duration(a0)
0003d64e 10280026	move.b	angle(a0),d0
0003d652 5200	addq.b	#1,d0
0003d654 11400026	move.b	d0,angle(a0)
0003d658 02400003	andi.w	#3,d0
0003d65c 103b0022	move.b	byte_3D680(pc,d0.w),d0
0003d660 1140001c	move.b	d0,anim(a0)
0003d664 4228001d	clr.b	prev_anim(a0)
0003d668 0c000002	cmpi.b	#2,d0
0003d66c 6610	bne.s	+
0003d66e 32680038	movea.w	objoff_38(a0),a1
0003d672 137c00040025	move.b	#4,routine_secondary(a1)
0003d678 137c0002001c	move.b	#2,anim(a1)
0003d67e 4e75	rts	
0003d684 61000972	bsr.w	ObjC7_CheckHit
0003d688 7000	moveq	#0,d0
0003d68a 1028001c	move.b	anim(a0),d0
0003d68e 323b0006	move.w	off_3D696(pc,d0.w),d1
0003d692 4efb1002	jmp	off_3D696(pc,d1.w)
0003d69c 5328001e	subq.b	#1,anim_frame_duration(a0)
0003d6a0 6b02	bmi.s	+
0003d6a2 4e75	rts	
0003d6a4 5428001c	addq.b	#2,anim(a0)
0003d6a8 4e75	rts	
0003d6aa 7000	moveq	#0,d0
0003d6ac 1028001d	move.b	prev_anim(a0),d0
0003d6b0 323b0006	move.w	off_3D6B8(pc,d0.w),d1
0003d6b4 4efb1002	jmp	off_3D6B8(pc,d1.w)
0003d6c0 5328001e	subq.b	#1,anim_frame_duration(a0)
0003d6c4 6b02	bmi.s	+
0003d6c6 4e75	rts	
0003d6c8 5428001d	addq.b	#2,prev_anim(a0)
0003d6cc 4e75	rts	
0003d6ce 43f90003e40c	lea	(off_3E40C).l,a1
0003d6d4 61000ad4	bsr.w	loc_3E1AA
0003d6d8 6602	bne.s	+
0003d6da 4e75	rts	
0003d6dc 5428001d	addq.b	#2,prev_anim(a0)
0003d6e0 117c0040001e	move.b	#$40,anim_frame_duration(a0)
0003d6e6 4e75	rts	
0003d6e8 43f90003e42c	lea	(off_3E42C).l,a1
0003d6ee 61000aba	bsr.w	loc_3E1AA
0003d6f2 6602	bne.s	+
0003d6f4 4e75	rts	
0003d6f6 55280025	subq.b	#2,routine_secondary(a0)
0003d6fa 117c0040001e	move.b	#$40,anim_frame_duration(a0)
0003d700 4e75	rts	
0003d702 7000	moveq	#0,d0
0003d704 1028001d	move.b	prev_anim(a0),d0
0003d708 323b0006	move.w	off_3D710(pc,d0.w),d1
0003d70c 4efb1002	jmp	off_3D710(pc,d1.w)
0003d720 43f90003e3d0	lea	(off_3E3D0).l,a1
0003d726 61000a82	bsr.w	loc_3E1AA
0003d72a 6602	bne.s	+
0003d72c 4e75	rts	
0003d72e 5428001d	addq.b	#2,prev_anim(a0)
0003d732 117c0080001e	move.b	#$80,anim_frame_duration(a0)
0003d738 42680010	clr.w	x_vel(a0)
0003d73c 317cfe000012	move.w	#-$200,y_vel(a0)
0003d742 4e75	rts	
0003d744 5328001e	subq.b	#1,anim_frame_duration(a0)
0003d748 6b1e	bmi.s	++
0003d74a 1038fe0f	move.b	(Vint_runcount+3).w,d0
0003d74e 0200001f	andi.b	#$1F,d0
0003d752 6606	bne.s	+
0003d754 70dc	moveq	#signextendB(SndID_Fire),d0
0003d75e 43f90003e2e0	lea	(ObjC7_ChildDeltas).l,a1
0003d764 60000b42	bra.w	ObjC7_PositionChildren
0003d768 5428001d	addq.b	#2,prev_anim(a0)
0003d76c 42680012	clr.w	y_vel(a0)
0003d770 45f90003e584	lea	(ChildObjC7_TargettingSensor).l,a2
0003d776 61009058	bsr.w	LoadChildObject
0003d77a 42680010	clr.w	x_vel(a0)
0003d77e 42680028	clr.w	objoff_28(a0)
0003d782 4e75	rts	
0003d784 30280028	move.w	objoff_28(a0),d0
0003d788 6602	bne.s	+
0003d78a 4e75	rts	
0003d78c 5428001d	addq.b	#2,prev_anim(a0)
0003d790 31400008	move.w	d0,x_pos(a0)
0003d794 08a800000001	bclr	#render_flags.x_flip,render_flags(a0)
0003d79a 0c400780	cmpi.w	#$780,d0
0003d79e 6406	bhs.s	+
0003d7a0 08e800000001	bset	#render_flags.x_flip,render_flags(a0)
0003d7a6 610009c0	bsr.w	loc_3E168
0003d7aa 317c08000012	move.w	#$800,y_vel(a0)
0003d7b0 117c0020001e	move.b	#$20,anim_frame_duration(a0)
0003d7b6 4e75	rts	
0003d7b8 5328001e	subq.b	#1,anim_frame_duration(a0)
0003d7bc 6b0e	bmi.s	+
0003d7c2 43f90003e2e0	lea	(ObjC7_ChildDeltas).l,a1
0003d7c8 60000ade	bra.w	ObjC7_PositionChildren
0003d7cc 5428001d	addq.b	#2,prev_anim(a0)
0003d7d0 42680012	clr.w	y_vel(a0)
0003d7d4 11fc0001eebd	move.b	#1,(Screen_Shaking_Flag).w
0003d7da 31fc0040f660	move.w	#$40,(DEZ_Shake_Timer).w
0003d7e0 32680038	movea.w	objoff_38(a0),a1
0003d7e4 137c00060025	move.b	#6,routine_secondary(a1)
0003d7ea 70b9	moveq	#signextendB(SndID_Smash),d0
0003d7f0 43f90003e30a	lea	(off_3E30A).l,a1
0003d7f6 610009b2	bsr.w	loc_3E1AA
0003d7fa 6602	bne.s	+
0003d7fc 4e75	rts	
0003d7fe 43f90003e2e0	lea	(ObjC7_ChildDeltas).l,a1
0003d804 61000aa2	bsr.w	ObjC7_PositionChildren
0003d808 61008ecc	bsr.w	Obj_GetOrientationToPlayer
0003d80c 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0003d812 6702	beq.s	+
0003d814 5540	subq.w	#2,d0
0003d816 4a40	tst.w	d0
0003d818 6606	bne.s	+
0003d81a 55280025	subq.b	#2,routine_secondary(a0)
0003d81e 4e75	rts	
0003d820 5428001d	addq.b	#2,prev_anim(a0)
0003d824 117c0060001e	move.b	#$60,anim_frame_duration(a0)
0003d82a 6000090a	bra.w	CreateEggmanBombs
0003d82e 5328001e	subq.b	#1,anim_frame_duration(a0)
0003d832 6b02	bmi.s	+
0003d834 4e75	rts	
0003d836 55280025	subq.b	#2,routine_secondary(a0)
0003d83a 4e75	rts	
0003d83c 7000	moveq	#0,d0
0003d83e 1028001d	move.b	prev_anim(a0),d0
0003d842 323b0006	move.w	off_3D84A(pc,d0.w),d1
0003d846 4efb1002	jmp	off_3D84A(pc,d1.w)
0003d856 08e800060022	bset	#status.npc.p2_pushing,status(a0)
0003d85c 43f90003e2f6	lea	(off_3E2F6).l,a1
0003d862 61000946	bsr.w	loc_3E1AA
0003d866 6602	bne.s	+
0003d868 4e75	rts	
0003d86a 61008e6a	bsr.w	Obj_GetOrientationToPlayer
0003d86e 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0003d874 6702	beq.s	+
0003d876 5540	subq.w	#2,d0
0003d878 4a40	tst.w	d0
0003d87a 6612	bne.s	+
0003d87c 5428001d	addq.b	#2,prev_anim(a0)
0003d880 117c0040001e	move.b	#$40,anim_frame_duration(a0)
0003d886 08e800040022	bset	#status.npc.p2_standing,status(a0)
0003d88c 4e75	rts	
0003d88e 117c0008001d	move.b	#8,prev_anim(a0)
0003d894 117c0020001e	move.b	#$20,anim_frame_duration(a0)
0003d89a 6000089a	bra.w	CreateEggmanBombs
0003d89e 5328001e	subq.b	#1,anim_frame_duration(a0)
0003d8a2 6b02	bmi.s	+
0003d8a4 4e75	rts	
0003d8a6 5428001d	addq.b	#2,prev_anim(a0)
0003d8aa 08e800050022	bset	#status.npc.p1_pushing,status(a0)
0003d8b0 117c0040001e	move.b	#$40,anim_frame_duration(a0)
0003d8b6 4e75	rts	
0003d8b8 43f90003e300	lea	(off_3E300).l,a1
0003d8be 610008ea	bsr.w	loc_3E1AA
0003d8c2 6602	bne.s	+
0003d8c4 4e75	rts	
0003d8c6 55280025	subq.b	#2,routine_secondary(a0)
0003d8ca 08a800060022	bclr	#status.npc.p2_pushing,status(a0)
0003d8d0 4e75	rts	
0003d8d2 7000	moveq	#0,d0
0003d8d4 1028001c	move.b	anim(a0),d0
0003d8d8 323b0006	move.w	off_3D8E0(pc,d0.w),d1
0003d8dc 4efb1002	jmp	off_3D8E0(pc,d1.w)
0003d8ee 3028000c	move.w	y_pos(a0),d0
0003d8f2 0c40015c	cmpi.w	#$15C,d0
0003d8f6 6402	bhs.s	+
0003d8f8 4e75	rts	
0003d8fa 317c015c000c	move.w	#$15C,y_pos(a0)
0003d900 30280012	move.w	y_vel(a0),d0
0003d904 6b10	bmi.s	+
0003d906 e448	lsr.w	#2,d0
0003d908 0c400100	cmpi.w	#$100,d0
0003d90c 6508	blo.s	+
0003d90e 4440	neg.w	d0
0003d910 31400012	move.w	d0,y_vel(a0)
0003d914 4e75	rts	
0003d916 5428001c	addq.b	#2,anim(a0)
0003d91a 117c0040001e	move.b	#$40,anim_frame_duration(a0)
0003d920 4e75	rts	
0003d922 5328001e	subq.b	#1,anim_frame_duration(a0)
0003d926 6b04	bmi.s	+
0003d92c 5428001c	addq.b	#2,anim(a0)
0003d930 50f8f7cc	st.b	(Control_Locked).w
0003d934 31fc1000eeca	move.w	#$1000,(Camera_Max_X_pos).w
0003d93a 4e75	rts	
0003d93c 31fc0808f602	move.w	#(button_right_mask<<8)|button_right_mask,(Ctrl_1_Logical).w
0003d942 0c780840ee00	cmpi.w	#$840,(Camera_X_pos).w
0003d948 6402	bhs.s	+
0003d94a 4e75	rts	
0003d94c 117c00200024	move.b	#$20,routine(a0)
0003d952 42280025	clr.b	routine_secondary(a0)
0003d956 317c0020002a	move.w	#$20,objoff_2A(a0)
0003d95c 11fc0001eebd	move.b	#1,(Screen_Shaking_Flag).w
0003d962 31fc1000f660	move.w	#$1000,(DEZ_Shake_Timer).w
0003d968 32680036	movea.w	objoff_36(a0),a1
0003d970 1038fe0f	move.b	(Vint_runcount+3).w,d0
0003d974 0200001f	andi.b	#$1F,d0
0003d978 660a	bne.s	+
0003d97a 70e1	moveq	#signextendB(SndID_Rumbling2),d0
0003d980 5368002a	subq.w	#1,objoff_2A(a0)
0003d984 43f8b000	lea	(MainCharacter).w,a1
0003d988 30290008	move.w	x_pos(a1),d0
0003d98c 9068002a	sub.w	objoff_2A(a0),d0
0003d990 31400008	move.w	d0,x_pos(a0)
0003d994 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0003d99a 6100061e	bsr.w	loc_3DFBA
0003d99e 7000	moveq	#0,d0
0003d9a0 10280025	move.b	routine_secondary(a0),d0
0003d9a4 323b0006	move.w	off_3D9AC(pc,d0.w),d1
0003d9a8 4efb1002	jmp	off_3D9AC(pc,d1.w)
0003d9b0 43f8b000	lea	(MainCharacter).w,a1
0003d9b4 0c690ec00008	cmpi.w	#$EC0,x_pos(a1)
0003d9ba 6402	bhs.s	loc_3D9BE
0003d9bc 4e75	rts	
0003d9be 54280025	addq.b	#2,routine_secondary(a0)
0003d9c2 31fc003ff626	move.w	#$3F,(Palette_fade_range).w
0003d9c8 117c0016001e	move.b	#$16,anim_frame_duration(a0)
0003d9ce 31fc7ffff634	move.w	#$7FFF,(PalCycle_Timer).w
0003d9d4 4e75	rts	
0003d9d6 5328001e	subq.b	#1,anim_frame_duration(a0)
0003d9da 67000016	beq.w	+
0003d9de 2248	movea.l	a0,a1
0003d9e0 41f8fb00	lea	(Normal_palette).w,a0
0003d9e4 703f	moveq	#$3F,d0
0003d9ea 51c8fffa	dbf	d0,-
0003d9ee 2049	movea.l	a1,a0
0003d9f0 4e75	rts	
0003d9f2 203c0eee0eee	move.l	#$EEE0EEE,d0
0003d9f8 43f8fb00	lea	(Normal_palette).w,a1
0003d9fc 7c1f	moveq	#$1F,d6
0003da00 51cefffc	dbf	d6,-
0003da04 70f9	moveq	#signextendB(MusID_FadeOut),d0
0003da0a 11fc0020f600	move.b	#GameModeID_EndingSequence,(Game_Mode).w
0003da14 7000	moveq	#0,d0
0003da16 10280025	move.b	routine_secondary(a0),d0
0003da1a 323b0018	move.w	off_3DA34(pc,d0.w),d1
0003da1e 4ebb1014	jsr	off_3DA34(pc,d1.w)
0003da22 43fa0014	lea	byte_3DA38(pc),a1
0003da26 6100085a	bsr.w	loc_3E282
0003da2a 4a10	tst.b	id(a0)
0003da2c 6700a01a	beq.w	return_37A48
0003da3c 54280025	addq.b	#2,routine_secondary(a0)
0003da40 117c0004001a	move.b	#4,mapping_frame(a0)
0003da46 4e75	rts	
0003da48 4e75	rts	
0003da4a 7000	moveq	#0,d0
0003da4c 10280025	move.b	routine_secondary(a0),d0
0003da50 323b0010	move.w	off_3DA62(pc,d0.w),d1
0003da54 4ebb100c	jsr	off_3DA62(pc,d1.w)
0003da58 4a10	tst.b	id(a0)
0003da5a 67009fec	beq.w	return_37A48
0003da66 54280025	addq.b	#2,routine_secondary(a0)
0003da6a 117c000b001a	move.b	#$B,mapping_frame(a0)
0003da70 4e75	rts	
0003da72 4e75	rts	
0003da74 7000	moveq	#0,d0
0003da76 10280025	move.b	routine_secondary(a0),d0
0003da7a 323b001a	move.w	off_3DA96(pc,d0.w),d1
0003da7e 4ebb1016	jsr	off_3DA96(pc,d1.w)
0003da82 4a10	tst.b	id(a0)
0003da84 67009fc2	beq.w	return_37A48
0003da88 082800060022	btst	#status.npc.p2_pushing,status(a0)
0003da8e 66009fb8	bne.w	return_37A48
0003daa0 54280025	addq.b	#2,routine_secondary(a0)
0003daa4 117c0006001a	move.b	#6,mapping_frame(a0)
0003daaa 4e75	rts	
0003daac 3268002c	movea.w	objoff_2C(a0),a1
0003dab0 08a900040022	bclr	#status.npc.p2_standing,status(a1)
0003dab6 6602	bne.s	+
0003dab8 4e75	rts	
0003daba 54280025	addq.b	#2,routine_secondary(a0)
0003dabe 317c0010002a	move.w	#$10,objoff_2A(a0)
0003dac4 3168000c002e	move.w	y_pos(a0),objoff_2E(a0)
0003daca 4e75	rts	
0003dacc 5368002a	subq.w	#1,objoff_2A(a0)
0003dad0 6b0a	bmi.s	+
0003dad2 066800200012	addi.w	#$20,y_vel(a0)
0003dadc 54280025	addq.b	#2,routine_secondary(a0)
0003dae0 317c0020002a	move.w	#$20,objoff_2A(a0)
0003dae6 61008bee	bsr.w	Obj_GetOrientationToPlayer
0003daea 4a42	tst.w	d2
0003daec 6a02	bpl.s	.skip
0003daee 4442	neg.w	d2
0003daf0 0c420100	cmpi.w	#$100,d2
0003daf4 6504	blo.s	+
0003daf6 343c00ff	move.w	#$FF,d2
0003dafa 024200c0	andi.w	#$C0,d2
0003dafe ea4a	lsr.w	#5,d2
0003db00 343b2028	move.w	word_3DB2A(pc,d2.w),d2
0003db04 4a41	tst.w	d1
0003db06 6602	bne.s	+
0003db08 4442	neg.w	d2
0003db0a 31420012	move.w	d2,y_vel(a0)
0003db0e 343c0800	move.w	#$800,d2
0003db12 3268002c	movea.w	objoff_2C(a0),a1
0003db16 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0003db1c 6602	bne.s	+
0003db1e 4442	neg.w	d2
0003db20 31420010	move.w	d2,x_vel(a0)
0003db24 70bc	moveq	#signextendB(SndID_SpindashRelease),d0
0003db32 5368002a	subq.w	#1,objoff_2A(a0)
0003db36 6b04	bmi.s	+
0003db3c 54280025	addq.b	#2,routine_secondary(a0)
0003db40 44680010	neg.w	x_vel(a0)
0003db44 317c0020002a	move.w	#$20,objoff_2A(a0)
0003db4a 3028002e	move.w	objoff_2E(a0),d0
0003db4e 9068000c	sub.w	y_pos(a0),d0
0003db52 e740	asl.w	#3,d0
0003db54 31400012	move.w	d0,y_vel(a0)
0003db58 4e75	rts	
0003db5a 5368002a	subq.w	#1,objoff_2A(a0)
0003db5e 6b04	bmi.s	+
0003db64 117c00020025	move.b	#2,routine_secondary(a0)
0003db6a 42680010	clr.w	x_vel(a0)
0003db6e 42680012	clr.w	y_vel(a0)
0003db72 4e75	rts	
0003db74 7000	moveq	#0,d0
0003db76 10280025	move.b	routine_secondary(a0),d0
0003db7a 323b0010	move.w	off_3DB8C(pc,d0.w),d1
0003db7e 4ebb100c	jsr	off_3DB8C(pc,d1.w)
0003db82 4a10	tst.b	id(a0)
0003db84 67009ec2	beq.w	return_37A48
0003db90 54280025	addq.b	#2,routine_secondary(a0)
0003db94 117c0005001a	move.b	#5,mapping_frame(a0)
0003db9a 4e75	rts	
0003db9c 4e75	rts	
0003db9e 7000	moveq	#0,d0
0003dba0 10280025	move.b	routine_secondary(a0),d0
0003dba4 323b0010	move.w	off_3DBB6(pc,d0.w),d1
0003dba8 4ebb100c	jsr	off_3DBB6(pc,d1.w)
0003dbac 4a10	tst.b	id(a0)
0003dbae 67009e98	beq.w	return_37A48
0003dbba 54280025	addq.b	#2,routine_secondary(a0)
0003dbbe 117c000a001a	move.b	#$A,mapping_frame(a0)
0003dbc4 4e75	rts	
0003dbc6 4e75	rts	
0003dbc8 7000	moveq	#0,d0
0003dbca 10280025	move.b	routine_secondary(a0),d0
0003dbce 323b0018	move.w	off_3DBE8(pc,d0.w),d1
0003dbd2 4ebb1014	jsr	off_3DBE8(pc,d1.w)
0003dbd6 43fa001a	lea	byte_3DBF2(pc),a1
0003dbda 610006a6	bsr.w	loc_3E282
0003dbde 4a10	tst.b	id(a0)
0003dbe0 67009e66	beq.w	return_37A48
0003dbf6 54280025	addq.b	#2,routine_secondary(a0)
0003dbfa 117c0015001a	move.b	#$15,mapping_frame(a0)
0003dc00 4e75	rts	
0003dc02 3278f660	movea.w	(DEZ_Eggman).w,a1
0003dc06 082900030022	btst	#status.npc.p1_standing,status(a1)
0003dc0c 6602	bne.s	+
0003dc0e 4e75	rts	
0003dc10 54280025	addq.b	#2,routine_secondary(a0)
0003dc14 317c0040002a	move.w	#$40,objoff_2A(a0)
0003dc1a 4e75	rts	
0003dc1c 43f90003e59a	lea	(Ani_objC7_a).l,a1
0003dc2a 5368002a	subq.w	#1,objoff_2A(a0)
0003dc2e 6b04	bmi.s	+
0003dc34 54280025	addq.b	#2,routine_secondary(a0)
0003dc38 3268002c	movea.w	objoff_2C(a0),a1
0003dc3c 08e900020022	bset	#status.npc.misc,status(a1)
0003dc46 117c00ff0021	move.b	#-1,collision_property(a0)
0003dc50 7000	moveq	#0,d0
0003dc52 10280025	move.b	routine_secondary(a0),d0
0003dc56 323b000e	move.w	off_3DC66(pc,d0.w),d1
0003dc5a 4ebb100a	jsr	off_3DC66(pc,d1.w)
0003dc5e 43fa0010	lea	byte_3DC70(pc),a1
0003dc62 6000061e	bra.w	loc_3E282
0003dc74 54280025	addq.b	#2,routine_secondary(a0)
0003dc78 117c000c001a	move.b	#$C,mapping_frame(a0)
0003dc7e 4e75	rts	
0003dc80 117c0003001c	move.b	#3,anim(a0)
0003dc86 43f90003e5aa	lea	(Ani_objC7_b).l,a1
0003dc94 117c0001001c	move.b	#1,anim(a0)
0003dc9a 60ea	bra.s	loc_3DC86
0003dc9c 7000	moveq	#0,d0
0003dc9e 10280025	move.b	routine_secondary(a0),d0
0003dca2 323b0010	move.w	off_3DCB4(pc,d0.w),d1
0003dca6 4ebb100c	jsr	off_3DCB4(pc,d1.w)
0003dcaa 4a10	tst.b	id(a0)
0003dcac 67009d9a	beq.w	return_37A48
0003dcb8 54280025	addq.b	#2,routine_secondary(a0)
0003dcbc 117c000b001a	move.b	#$B,mapping_frame(a0)
0003dcc2 117c00050018	move.b	#5,priority(a0)
0003dcc8 4e75	rts	
0003dcca 4e75	rts	
0003dccc 7000	moveq	#0,d0
0003dcce 10280025	move.b	routine_secondary(a0),d0
0003dcd2 323b0010	move.w	off_3DCE4(pc,d0.w),d1
0003dcd6 4ebb100c	jsr	off_3DCE4(pc,d1.w)
0003dcda 4a10	tst.b	id(a0)
0003dcdc 67009d6a	beq.w	return_37A48
0003dcee 54280025	addq.b	#2,routine_secondary(a0)
0003dcf2 117c0006001a	move.b	#6,mapping_frame(a0)
0003dcf8 117c00050018	move.b	#5,priority(a0)
0003dcfe 4e75	rts	
0003dd00 3268002c	movea.w	objoff_2C(a0),a1
0003dd04 08a900050022	bclr	#status.npc.p1_pushing,status(a1)
0003dd0a 6602	bne.s	+
0003dd0c 4e75	rts	
0003dd0e 54280025	addq.b	#2,routine_secondary(a0)
0003dd12 317c0010002a	move.w	#$10,objoff_2A(a0)
0003dd18 3168000c002e	move.w	y_pos(a0),objoff_2E(a0)
0003dd1e 4e75	rts	
0003dd20 7000	moveq	#0,d0
0003dd22 10280025	move.b	routine_secondary(a0),d0
0003dd26 323b0010	move.w	off_3DD38(pc,d0.w),d1
0003dd2a 4ebb100c	jsr	off_3DD38(pc,d1.w)
0003dd2e 4a10	tst.b	id(a0)
0003dd30 67009d16	beq.w	return_37A48
0003dd3c 54280025	addq.b	#2,routine_secondary(a0)
0003dd40 117c000a001a	move.b	#$A,mapping_frame(a0)
0003dd46 117c00050018	move.b	#5,priority(a0)
0003dd4c 4e75	rts	
0003dd4e 4e75	rts	
0003dd50 7000	moveq	#0,d0
0003dd52 10280025	move.b	routine_secondary(a0),d0
0003dd56 323b0006	move.w	off_3DD5E(pc,d0.w),d1
0003dd5a 4efb1002	jmp	off_3DD5E(pc,d1.w)
0003dd64 54280025	addq.b	#2,routine_secondary(a0)
0003dd68 117c0010001a	move.b	#$10,mapping_frame(a0)
0003dd6e 006880000002	ori.w	#high_priority,art_tile(a0)
0003dd74 117c00010018	move.b	#1,priority(a0)
0003dd7a 317c00a0002a	move.w	#$A0,objoff_2A(a0)
0003dd80 43f8b000	lea	(MainCharacter).w,a1
0003dd84 316900080008	move.w	x_pos(a1),x_pos(a0)
0003dd8a 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0003dd90 316900100030	move.w	x_vel(a1),objoff_30(a0)
0003dd96 316900120032	move.w	y_vel(a1),objoff_32(a0)
0003dd9c 317c00180026	move.w	#$18,angle(a0)
0003dda6 5368002a	subq.w	#1,objoff_2A(a0)
0003ddaa 6b5e	bmi.s	loc_3DE0A
0003ddac 43e80040	lea	next_object(a0),a1
0003ddb0 2449	movea.l	a1,a2
0003ddb2 31610012	move.w	-(a1),y_vel(a0)
0003ddb6 31610010	move.w	-(a1),x_vel(a0)
0003ddba 7c02	moveq	#2,d6
0003ddbe 51cefffc	dbf	d6,-
0003ddc2 45f8b000	lea	(MainCharacter).w,a2
0003ddc6 302a0010	move.w	x_vel(a2),d0
0003ddca 6606	bne.s	+
0003ddcc 316a00080008	move.w	x_pos(a2),x_pos(a0)
0003ddd2 32c0	move.w	d0,(a1)+
0003ddd4 302a0012	move.w	y_vel(a2),d0
0003ddd8 6606	bne.s	+
0003ddda 316a000c000c	move.w	y_pos(a2),y_pos(a0)
0003dde0 32c0	move.w	d0,(a1)+
0003dde6 43f90003e5ee	lea	(Ani_objC7_c).l,a1
0003ddf0 53280026	subq.b	#1,angle(a0)
0003ddf4 6a10	bpl.s	+
0003ddf6 53280027	subq.b	#1,objoff_27(a0)
0003ddfa 116800270026	move.b	objoff_27(a0),angle(a0)
0003de00 70a8	moveq	#signextendB(SndID_Beep),d0
0003de0a 54280025	addq.b	#2,routine_secondary(a0)
0003de0e 317c0040002a	move.w	#$40,objoff_2A(a0)
0003de14 117c00040026	move.b	#4,angle(a0)
0003de1a 43f8b000	lea	(MainCharacter).w,a1
0003de1e 316900080008	move.w	x_pos(a1),x_pos(a0)
0003de24 3169000c000c	move.w	y_pos(a1),y_pos(a0)
0003de2a 45f90003e588	lea	(ChildObjC7_TargettingLock).l,a2
0003de30 6100899e	bsr.w	LoadChildObject
0003de34 42680010	clr.w	x_vel(a0)
0003de3c 5368002a	subq.w	#1,objoff_2A(a0)
0003de40 6b20	bmi.s	loc_3DE62
0003de42 43f90003e5ee	lea	(Ani_objC7_c).l,a1
0003de4c 53280026	subq.b	#1,angle(a0)
0003de50 6a0c	bpl.s	+
0003de52 117c00040026	move.b	#4,angle(a0)
0003de58 70a8	moveq	#signextendB(SndID_Beep),d0
0003de62 3268002c	movea.w	objoff_2C(a0),a1
0003de66 336800080028	move.w	x_pos(a0),objoff_28(a1)
0003de70 7000	moveq	#0,d0
0003de72 10280025	move.b	routine_secondary(a0),d0
0003de76 323b0006	move.w	off_3DE7E(pc,d0.w),d1
0003de7a 4efb1002	jmp	off_3DE7E(pc,d1.w)
0003de82 54280025	addq.b	#2,routine_secondary(a0)
0003de86 117c0014001a	move.b	#$14,mapping_frame(a0)
0003de8c 117c00010018	move.b	#1,priority(a0)
0003de92 006880000002	ori.w	#high_priority,art_tile(a0)
0003de98 317c0004002a	move.w	#4,objoff_2A(a0)
0003dea2 3268002c	movea.w	objoff_2C(a0),a1
0003dea6 4a11	tst.b	(a1)
0003dea8 67000b9e	beq.w	JmpTo65_DeleteObject
0003deac 5368002a	subq.w	#1,objoff_2A(a0)
0003deb0 660c	bne.s	+
0003deb2 317c0004002a	move.w	#4,objoff_2A(a0)
0003deb8 086800050002	bchg	#palette_bit_0,art_tile(a0)
0003dec2 7000	moveq	#0,d0
0003dec4 10280025	move.b	routine_secondary(a0),d0
0003dec8 323b0006	move.w	off_3DED0(pc,d0.w),d1
0003decc 4efb1002	jmp	off_3DED0(pc,d1.w)
0003ded8 54280025	addq.b	#2,routine_secondary(a0)
0003dedc 117c000e001a	move.b	#$E,mapping_frame(a0)
0003dee2 117c00890020	move.b	#$89,collision_flags(a0)
0003dee8 117c00050018	move.b	#5,priority(a0)
0003deee 117c000c0019	move.b	#$C,width_pixels(a0)
0003def4 43fa000a	lea	byte_3DF00(pc),a1
0003def8 61000388	bsr.w	loc_3E282
0003df04 3268002c	movea.w	objoff_2C(a0),a1
0003df08 082900070022	btst	#status.npc.no_balancing,status(a1)
0003df0e 663c	bne.s	loc_3DF4C
0003df14 3028000c	move.w	y_pos(a0),d0
0003df18 0c400170	cmpi.w	#$170,d0
0003df1c 6404	bhs.s	+
0003df22 54280025	addq.b	#2,routine_secondary(a0)
0003df26 317c0170000c	move.w	#$170,y_pos(a0)
0003df2c 317c0040002a	move.w	#$40,objoff_2A(a0)
0003df36 3268002c	movea.w	objoff_2C(a0),a1
0003df3a 082900070022	btst	#status.npc.no_balancing,status(a1)
0003df40 660a	bne.s	loc_3DF4C
0003df42 5368002a	subq.w	#1,objoff_2A(a0)
0003df46 6b04	bmi.s	loc_3DF4C
0003df4c 117c00060025	move.b	#6,routine_secondary(a0)
0003df52 217c0002d50a0004	move.l	#Obj58_MapUnc_2D50A,mappings(a0)
0003df5a 317c05800002	move.w	#make_art_tile(ArtTile_ArtNem_FieryExplosion,0,0),art_tile(a0)
0003df60 117c00010018	move.b	#1,priority(a0)
0003df66 117c0007001e	move.b	#7,anim_frame_duration(a0)
0003df6c 117c0000001a	move.b	#0,mapping_frame(a0)
0003df72 303c00c4	move.w	#SndID_BossExplosion,d0
0003df76 4eb900001370	jsr	(PlaySound).l
0003df80 5328001e	subq.b	#1,anim_frame_duration(a0)
0003df84 6a20	bpl.s	+
0003df86 117c0007001e	move.b	#7,anim_frame_duration(a0)
0003df8c 5228001a	addq.b	#1,mapping_frame(a0)
0003df90 0c280005001a	cmpi.b	#5,mapping_frame(a0)
0003df96 650e	blo.s	+
0003df98 42280020	clr.b	collision_flags(a0)
0003df9c 0c280007001a	cmpi.b	#7,mapping_frame(a0)
0003dfa2 67000aa4	beq.w	JmpTo65_DeleteObject
0003dfaa 5368002a	subq.w	#1,objoff_2A(a0)
0003dfae 6b000a98	bmi.w	JmpTo65_DeleteObject
0003dfba 4eb900017fda	jsr	(AllocateObject).l
0003dfc0 6634	bne.s	+
0003dfc8 336800080008	move.w	x_pos(a0),x_pos(a1)
0003dfce 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0003dfd4 4eb900003390	jsr	(RandomNumber).l
0003dfda 3200	move.w	d0,d1
0003dfdc 7200	moveq	#0,d1
0003dfde 1200	move.b	d0,d1
0003dfe0 e409	lsr.b	#2,d1
0003dfe2 04410030	subi.w	#$30,d1
0003dfe6 d3690008	add.w	d1,x_pos(a1)
0003dfea e048	lsr.w	#8,d0
0003dfec e408	lsr.b	#2,d0
0003dfee 04400030	subi.w	#$30,d0
0003dff2 d169000c	add.w	d0,y_pos(a1)
0003dff6 4e75	rts	
0003dff8 4a280021	tst.b	collision_property(a0)
0003dffc 675c	beq.s	ObjC7_Beaten
0003dffe 4a28002a	tst.b	objoff_2A(a0)
0003e002 662a	bne.s	ObjC7_Flashing
0003e004 4a280020	tst.b	collision_flags(a0)
0003e008 6714	beq.s	+
0003e00a 32680036	movea.w	objoff_36(a0),a1
0003e00e 4a290020	tst.b	collision_flags(a1)
0003e012 6644	bne.s	+++
0003e014 42280020	clr.b	collision_flags(a0)
0003e018 53280021	subq.b	#1,collision_property(a0)
0003e01c 673c	beq.s	ObjC7_Beaten
0003e01e 117c003c002a	move.b	#60,objoff_2A(a0)
0003e024 303c00ac	move.w	#SndID_BossHit,d0
0003e028 4eb900001370	jsr	(PlaySound).l
0003e02e 43f8fb22	lea	(Normal_palette_line2+2).w,a1
0003e032 7000	moveq	#0,d0
0003e034 4a51	tst.w	(a1)
0003e036 6604	bne.s	+
0003e038 303c0eee	move.w	#$EEE,d0
0003e03c 3280	move.w	d0,(a1)
0003e03e 5328002a	subq.b	#1,objoff_2A(a0)
0003e042 6614	bne.s	+
0003e044 4278fb22	clr.w	(Normal_palette_line2+2).w
0003e048 117c00160020	move.b	#$16,collision_flags(a0)
0003e04e 32680036	movea.w	objoff_36(a0),a1
0003e052 137c002a0020	move.b	#$2A,collision_flags(a1)
0003e058 4e75	rts	
0003e05a 7064	moveq	#100,d0
0003e05c 61002ca8	bsr.w	AddPoints
0003e060 4228001e	clr.b	anim_frame_duration(a0)
0003e064 117c000e0025	move.b	#$E,routine_secondary(a0)
0003e06a 08e800070022	bset	#status.npc.no_balancing,status(a0)
0003e070 4228001c	clr.b	anim(a0)
0003e074 42280020	clr.b	collision_flags(a0)
0003e078 42680010	clr.w	x_vel(a0)
0003e07c 42680012	clr.w	y_vel(a0)
0003e080 6100009c	bsr.w	ObjC7_RemoveCollision
0003e084 6100000e	bsr.w	ObjC7_Break
0003e088 32680038	movea.w	objoff_38(a0),a1
0003e090 584f	addq.w	#4,sp
0003e092 4e75	rts	
0003e094 43f90003e0e6	lea	(ObjC7_BreakOffsets).l,a1
0003e09a 45fa002a	lea	ObjC7_BreakSpeeds(pc),a2
0003e09e 7000	moveq	#0,d0
0003e0a0 7c07	moveq	#ObjC7_BreakOffsets_End-ObjC7_BreakOffsets-1,d6
0003e0a4 36700000	movea.w	(a0,d0.w),a3
0003e0a8 177c001e0024	move.b	#$1E,routine(a3)
0003e0ae 422b0025	clr.b	routine_secondary(a3)
0003e0b2 377c0080002a	move.w	#$80,objoff_2A(a3)
0003e0b8 375a0010	move.w	(a2)+,x_vel(a3)
0003e0bc 375a0012	move.w	(a2)+,y_vel(a3)
0003e0c0 51ceffe0	dbf	d6,-
0003e0c4 4e75	rts	
0003e0ee 43fa0024	lea	ObjC7_ChildOffsets(pc),a1
0003e0f2 45fa0016	lea	ObjC7_ChildCollision(pc),a2
0003e0f6 7000	moveq	#0,d0
0003e0f8 7c09	moveq	#ObjC7_ChildCollision_End-ObjC7_ChildCollision-1,d6
0003e0fc 36700000	movea.w	(a0,d0.w),a3
0003e100 175a0020	move.b	(a2)+,collision_flags(a3)
0003e104 51cefff4	dbf	d6,-
0003e108 4e75	rts	
0003e11e 43fafff4	lea	ObjC7_ChildOffsets(pc),a1
0003e122 7000	moveq	#0,d0
0003e124 7c09	moveq	#ObjC7_ChildOffsets_End-ObjC7_ChildOffsets-1,d6
0003e128 36700000	movea.w	(a0,d0.w),a3
0003e12c 422b0020	clr.b	collision_flags(a3)
0003e130 51cefff4	dbf	d6,-
0003e134 4e75	rts	
0003e136 47fa0028	lea	EggmanBomb_InitSpeeds(pc),a3
0003e13a 7c01	moveq	#1,d6
0003e142 6100868c	bsr.w	LoadChildObject
0003e146 301b	move.w	(a3)+,d0
0003e148 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0003e14e 6702	beq.s	+
0003e150 4440	neg.w	d0
0003e152 33400010	move.w	d0,x_vel(a1)
0003e156 335b0012	move.w	(a3)+,y_vel(a1)
0003e15a 51ceffe0	dbf	d6,-
0003e15e 4e75	rts	
0003e168 10280001	move.b	render_flags(a0),d0
0003e16c 02000001	andi.b	#1,d0
0003e170 7200	moveq	#0,d1
0003e172 43fa002a	lea	byte_3E19E(pc),a1
0003e178 670098ce	beq.w	return_37A48
0003e17c 34701000	movea.w	(a0,d1.w),a2
0003e180 142a0001	move.b	render_flags(a2),d2
0003e184 020200fe	andi.b	#$FE,d2
0003e188 8400	or.b	d0,d2
0003e18a 15420001	move.b	d2,render_flags(a2)
0003e18e 142a0022	move.b	status(a2),d2
0003e192 020200fe	andi.b	#~(1<<status.npc.x_flip),d2
0003e196 8400	or.b	d0,d2
0003e198 15420022	move.b	d2,status(a2)
0003e19c 60d8	bra.s	-
0003e1aa 2459	movea.l	(a1)+,a2
0003e1ac 7000	moveq	#0,d0
0003e1ae 1028001b	move.b	anim_frame(a0),d0
0003e1b2 10310000	move.b	(a1,d0.w),d0
0003e1b6 1200	move.b	d0,d1
0003e1b8 7800	moveq	#0,d4
0003e1ba 024100c0	andi.w	#$C0,d1
0003e1be 6704	beq.s	+
0003e1c0 6100007c	bsr.w	loc_3E23E
0003e1c4 d040	add.w	d0,d0
0003e1c6 d4f20000	adda.w	(a2,d0.w),a2
0003e1ca 101a	move.b	(a2)+,d0
0003e1cc 161a	move.b	(a2)+,d3
0003e1ce 1428001f	move.b	objoff_1F(a0),d2
0003e1d2 5202	addq.b	#1,d2
0003e1d4 b403	cmp.b	d3,d2
0003e1d6 6506	blo.s	+
0003e1d8 5228001b	addq.b	#1,anim_frame(a0)
0003e1dc 7400	moveq	#0,d2
0003e1de 1142001f	move.b	d2,objoff_1F(a0)
0003e1e2 7a00	moveq	#0,d5
0003e1e6 36705000	movea.w	(a0,d5.w),a3
0003e1ea 4a45	tst.w	d5
0003e1ec 6602	bne.s	+
0003e1ee 2648	movea.l	a0,a3
0003e1f0 242b0008	move.l	x_pos(a3),d2
0003e1f4 121a	move.b	(a2)+,d1
0003e1f6 4881	ext.w	d1
0003e1f8 e941	asl.w	#4,d1
0003e1fa 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0003e200 6702	beq.s	+
0003e202 4441	neg.w	d1
0003e204 4a44	tst.w	d4
0003e206 6702	beq.s	+
0003e208 4441	neg.w	d1
0003e20a 48c1	ext.l	d1
0003e20c e181	asl.l	#8,d1
0003e20e d481	add.l	d1,d2
0003e210 27420008	move.l	d2,x_pos(a3)
0003e214 262b000c	move.l	y_pos(a3),d3
0003e218 121a	move.b	(a2)+,d1
0003e21a 4881	ext.w	d1
0003e21c e941	asl.w	#4,d1
0003e21e 4a44	tst.w	d4
0003e220 6702	beq.s	+
0003e222 4441	neg.w	d1
0003e224 48c1	ext.l	d1
0003e226 e181	asl.l	#8,d1
0003e228 d681	add.l	d1,d3
0003e22a 2743000c	move.l	d3,y_pos(a3)
0003e22e 51c8ffb4	dbf	d0,-
0003e232 7200	moveq	#0,d1
0003e234 4e75	rts	
0003e236 4228001b	clr.b	anim_frame(a0)
0003e23a 7201	moveq	#1,d1
0003e23c 4e75	rts	
0003e23e 0200003f	andi.b	#$3F,d0
0003e242 e719	rol.b	#3,d1
0003e244 323b1004	move.w	off_3E24C-2(pc,d1.w),d1
0003e248 4efb1002	jmp	off_3E24C(pc,d1.w)
0003e252 4a28001f	tst.b	objoff_1F(a0)
0003e256 66e4	bne.s	return_3E23C
0003e258 1228001b	move.b	anim_frame(a0),d1
0003e25c 5201	addq.b	#1,d1
0003e25e 10311000	move.b	(a1,d1.w),d0
0003e266 5201	addq.b	#1,d1
0003e268 1141001b	move.b	d1,anim_frame(a0)
0003e26c 10311000	move.b	(a1,d1.w),d0
0003e270 1200	move.b	d0,d1
0003e272 020100c0	andi.b	#$C0,d1
0003e276 66c6	bne.s	loc_3E23E
0003e278 4e75	rts	
0003e27a 7801	moveq	#1,d4
0003e27c 4e75	rts	
0003e27e 584f	addq.w	#4,sp
0003e280 60b4	bra.s	loc_3E236
0003e282 3468002c	movea.w	objoff_2C(a0),a2
0003e286 302a0008	move.w	x_pos(a2),d0
0003e28a 3219	move.w	(a1)+,d1
0003e28c 082a00000001	btst	#render_flags.x_flip,render_flags(a2)
0003e292 6702	beq.s	+
0003e294 4441	neg.w	d1
0003e296 d041	add.w	d1,d0
0003e298 31400008	move.w	d0,x_pos(a0)
0003e29c 302a000c	move.w	y_pos(a2),d0
0003e2a0 d059	add.w	(a1)+,d0
0003e2a2 3140000c	move.w	d0,y_pos(a0)
0003e2a6 4e75	rts	
0003e2a8 7000	moveq	#0,d0
0003e2aa 7c00	moveq	#0,d6
0003e2ac 1c19	move.b	(a1)+,d6
0003e2b0 34700000	movea.w	(a0,d0.w),a2
0003e2b4 32280008	move.w	x_pos(a0),d1
0003e2b8 1419	move.b	(a1)+,d2
0003e2ba 4882	ext.w	d2
0003e2bc 082800000001	btst	#render_flags.x_flip,render_flags(a0)
0003e2c2 6702	beq.s	+
0003e2c4 4442	neg.w	d2
0003e2c6 d242	add.w	d2,d1
0003e2c8 35410008	move.w	d1,x_pos(a2)
0003e2cc 3228000c	move.w	y_pos(a0),d1
0003e2d0 1419	move.b	(a1)+,d2
0003e2d2 4882	ext.w	d2
0003e2d4 d242	add.w	d2,d1
0003e2d6 3541000c	move.w	d1,y_pos(a2)
0003e2da 51ceffd2	dbf	d6,-
0003e2de 4e75	rts	
0003e89e 3401	move.w	d1,d2
0003e8a0 02420001	andi.w	#1,d2
0003e8a4 5242	addq.w	#1,d2
0003e8a6 ed4a	lsl.w	#6,d2
0003e8a8 4842	swap	d2
0003e8aa 3601	move.w	d1,d3
0003e8ac e24b	lsr.w	#1,d3
0003e8ae 5243	addq.w	#1,d3
0003e8b0 ed4b	lsl.w	#6,d3
0003e8b2 4843	swap	d3
0003e8b4 61000014	bsr.w	.upscale_part1
0003e8b8 08000001	btst	#1,d0
0003e8bc 6700918a	beq.w	return_37A48
0003e8c0 08010001	btst	#1,d1
0003e8c4 6602	bne.s	.set_dest
0003e8c6 2a4b	movea.l	a3,a5
0003e8c8 244d	movea.l	a5,a2
0003e8ca 284a	movea.l	a2,a4
0003e8cc 4842	swap	d2
0003e8ce 47f22000	lea	(a2,d2.w),a3
0003e8d2 4842	swap	d2
0003e8d4 3a01	move.w	d1,d5
0003e8d6 02450001	andi.w	#1,d5
0003e8da 61000068	bsr.w	Scale2x_SingleTile
0003e8de 08010001	btst	#1,d1
0003e8e2 6722	beq.s	.done_cols
0003e8e4 4842	swap	d2
0003e8e6 3802	move.w	d2,d4
0003e8e8 4842	swap	d2
0003e8ea d844	add.w	d4,d4
0003e8ec 3600	move.w	d0,d3
0003e8ee 02430001	andi.w	#1,d3
0003e8f2 e76c	lsl.w	d3,d4
0003e8f4 d8c4	adda.w	d4,a4
0003e8f6 3a01	move.w	d1,d5
0003e8f8 e24d	lsr.w	#1,d5
0003e8fa 4843	swap	d3
0003e8fc 4bf43000	lea	(a4,d3.w),a5
0003e900 4843	swap	d3
0003e902 61000058	bsr.w	Scale2x_SingleTile2
0003e906 08000000	btst	#0,d0
0003e90a 6606	bne.s	.keep_upscaling
0003e90c 08000001	btst	#1,d0
0003e910 6730	beq.s	.done
0003e912 4842	swap	d2
0003e914 45f22000	lea	(a2,d2.w),a2
0003e918 47f22000	lea	(a2,d2.w),a3
0003e91c 4842	swap	d2
0003e91e 3a01	move.w	d1,d5
0003e920 02450001	andi.w	#1,d5
0003e924 6100001e	bsr.w	Scale2x_SingleTile
0003e928 08010001	btst	#1,d1
0003e92c 6714	beq.s	.done
0003e92e 3a01	move.w	d1,d5
0003e930 e24d	lsr.w	#1,d5
0003e932 4843	swap	d3
0003e934 49f43000	lea	(a4,d3.w),a4
0003e938 4bf43000	lea	(a4,d3.w),a5
0003e93c 4843	swap	d3
0003e93e 6100001c	bsr.w	Scale2x_SingleTile2
0003e942 4e75	rts	
0003e944 7c07	moveq	#7,d6
0003e946 6100002c	bsr.w	Scale_2x_LeftPixels
0003e94a 584a	addq.w	#4,a2
0003e94c 61000050	bsr.w	Scale_2x_RightPixels
0003e950 584b	addq.w	#4,a3
0003e952 51cefff2	dbf	d6,.loop
0003e956 51cdffec	dbf	d5,Scale2x_SingleTile
0003e95a 4e75	rts	
0003e95c 7c07	moveq	#7,d6
0003e95e 61000068	bsr.w	Scale_2x_LeftPixels2
0003e962 584c	addq.w	#4,a4
0003e964 6100008c	bsr.w	Scale_2x_RightPixels2
0003e968 584d	addq.w	#4,a5
0003e96a 51cefff2	dbf	d6,.loop
0003e96e 51cdffec	dbf	d5,Scale2x_SingleTile2
0003e972 4e75	rts	
0003e974 61000002	bsr.w	.upscale_pixel_pair
0003e978 1419	move.b	(a1)+,d2
0003e97a 1602	move.b	d2,d3
0003e97c 020200f0	andi.b	#$F0,d2
0003e980 1802	move.b	d2,d4
0003e982 e80c	lsr.b	#4,d4
0003e984 8802	or.b	d2,d4
0003e986 14c4	move.b	d4,(a2)+
0003e988 15440003	move.b	d4,3(a2)
0003e98c 0203000f	andi.b	#$F,d3
0003e990 1803	move.b	d3,d4
0003e992 e90c	lsl.b	#4,d4
0003e994 8803	or.b	d3,d4
0003e996 14c4	move.b	d4,(a2)+
0003e998 15440003	move.b	d4,3(a2)
0003e99c 4e75	rts	
0003e99e 61000002	bsr.w	.upscale_pixel_pair
0003e9a2 1419	move.b	(a1)+,d2
0003e9a4 1602	move.b	d2,d3
0003e9a6 020200f0	andi.b	#$F0,d2
0003e9aa 1802	move.b	d2,d4
0003e9ac e80c	lsr.b	#4,d4
0003e9ae 8802	or.b	d2,d4
0003e9b0 16c4	move.b	d4,(a3)+
0003e9b2 17440003	move.b	d4,3(a3)
0003e9b6 0203000f	andi.b	#$F,d3
0003e9ba 1803	move.b	d3,d4
0003e9bc e90c	lsl.b	#4,d4
0003e9be 8803	or.b	d3,d4
0003e9c0 16c4	move.b	d4,(a3)+
0003e9c2 17440003	move.b	d4,3(a3)
0003e9c6 4e75	rts	
0003e9c8 61000002	bsr.w	.upscale_pixel_pair
0003e9cc 1419	move.b	(a1)+,d2
0003e9ce 1602	move.b	d2,d3
0003e9d0 020200f0	andi.b	#$F0,d2
0003e9d4 1802	move.b	d2,d4
0003e9d6 e80c	lsr.b	#4,d4
0003e9d8 8802	or.b	d2,d4
0003e9da 18c4	move.b	d4,(a4)+
0003e9dc 19440003	move.b	d4,3(a4)
0003e9e0 0203000f	andi.b	#$F,d3
0003e9e4 1803	move.b	d3,d4
0003e9e6 e90c	lsl.b	#4,d4
0003e9e8 8803	or.b	d3,d4
0003e9ea 18c4	move.b	d4,(a4)+
0003e9ec 19440003	move.b	d4,3(a4)
0003e9f0 4e75	rts	
0003e9f2 61000002	bsr.w	.upscale_pixel_pair
0003e9f6 1419	move.b	(a1)+,d2
0003e9f8 1602	move.b	d2,d3
0003e9fa 020200f0	andi.b	#$F0,d2
0003e9fe 1802	move.b	d2,d4
0003ea00 e80c	lsr.b	#4,d4
0003ea02 8802	or.b	d2,d4
0003ea04 1ac4	move.b	d4,(a5)+
0003ea06 1b440003	move.b	d4,3(a5)
0003ea0a 0203000f	andi.b	#$F,d3
0003ea0e 1803	move.b	d3,d4
0003ea10 e90c	lsl.b	#4,d4
0003ea12 8803	or.b	d3,d4
0003ea14 1ac4	move.b	d4,(a5)+
0003ea16 1b440003	move.b	d4,3(a5)
0003ea1a 4e75	rts	
0003ea3c 4ef900016530	jmp	(extractJmpToName("JmpTo5_DisplaySprite3")).l
0003ea42 4ef9000164f4	jmp	(extractJmpToName("JmpTo45_DisplaySprite")).l
0003ea48 4ef9000164e6	jmp	(extractJmpToName("JmpTo65_DeleteObject")).l
0003ea4e 4ef900017fda	jmp	(extractJmpToName("JmpTo19_AllocateObject")).l
0003ea54 4ef9000163d2	jmp	(extractJmpToName("JmpTo39_MarkObjGone")).l
0003ea5a 4ef9000164e8	jmp	(extractJmpToName("JmpTo6_DeleteObject2")).l
0003ea60 4ef900001370	jmp	(extractJmpToName("JmpTo12_PlaySound")).l
0003ea66 4ef900017ffa	jmp	(extractJmpToName("JmpTo25_AllocateObjectAfterCurrent")).l
0003ea6c 4ef900016544	jmp	(extractJmpToName("JmpTo25_AnimateSprite")).l
0003ea72 4ef90000137c	jmp	(extractJmpToName("JmpTo_PlaySoundLocal")).l
0003ea78 4ef900003390	jmp	(extractJmpToName("JmpTo6_RandomNumber")).l
0003ea7e 4ef900016472	jmp	(extractJmpToName("JmpTo2_MarkObjGone_P1")).l
0003ea84 4ef9000025e0	jmp	(extractJmpToName("JmpTo_Pal_FadeToWhite.UpdateColour")).l
0003ea8a 4ef90001d1b2	jmp	(extractJmpToName("JmpTo_LoadTailsDynPLC_Part2")).l
0003ea90 4ef90001b84e	jmp	(extractJmpToName("JmpTo_LoadSonicDynPLC_Part2")).l
0003ea96 4ef90001643e	jmp	(extractJmpToName("JmpTo8_MarkObjGone3")).l
0003ea9c 4ef900016d6e	jmp	(extractJmpToName("JmpTo64_Adjust2PArtPointer")).l
0003eaa2 4ef90000135e	jmp	(extractJmpToName("JmpTo5_PlayMusic")).l
0003eaa8 4ef90002d6cc	jmp	(extractJmpToName("JmpTo_Boss_LoadExplosion")).l
0003eaae 4ef900019c32	jmp	(extractJmpToName("JmpTo9_PlatformObject")).l
0003eab4 4ef900019718	jmp	(extractJmpToName("JmpTo27_SolidObject")).l
0003eaba 4ef900016380	jmp	(extractJmpToName("JmpTo8_ObjectMoveAndFall")).l
0003eac0 4ef9000163ac	jmp	(extractJmpToName("JmpTo26_ObjectMove")).l
0003eac8 7000	moveq	#0,d0
0003eaca 10280024	move.b	routine(a0),d0
0003eace 323b0006	move.w	Obj8A_Index(pc,d0.w),d1
0003ead2 4efb1002	jmp	Obj8A_Index(pc,d1.w)
0003eada 54280024	addq.b	#2,routine(a0)
0003eade 317c01200008	move.w	#spriteScreenPositionXCentered(0),x_pixel(a0)
0003eae4 317c00f0000a	move.w	#spriteScreenPositionYCentered(0),y_pixel(a0)
0003eaea 217c0003eb4e0004	move.l	#Obj8A_MapUnc_3EB4E,mappings(a0)
0003eaf2 317c05a00002	move.w	#make_art_tile($05A0,0,0),art_tile(a0)
0003eafc 3038fff4	move.w	(Ending_demo_number).w,d0
0003eb00 1140001a	move.b	d0,mapping_frame(a0)
0003eb04 117c00000001	move.b	#0,render_flags(a0)
0003eb0a 117c00000018	move.b	#0,priority(a0)
0003eb10 0c380004f600	cmpi.b	#GameModeID_TitleScreen,(Game_Mode).w
0003eb16 6630	bne.s	Obj8A_Display
0003eb18 317c03000002	move.w	#make_art_tile($0300,0,0),art_tile(a0)
0003eb22 117c000a001a	move.b	#$A,mapping_frame(a0)
0003eb28 4a38ffd3	tst.b	(S1_hidden_credits_flag).w
0003eb2c 671a	beq.s	Obj8A_Display
0003eb2e 0c380072f604	cmpi.b	#button_down_mask|button_B_mask|button_C_mask|button_A_mask,(Ctrl_1_Held).w
0003eb34 6612	bne.s	Obj8A_Display
0003eb36 31fc0eeefbc0	move.w	#$EEE,(Target_palette_line3).w
0003eb3c 31fc0880fbc2	move.w	#$880,(Target_palette_line3+2).w
0003eb42 4ef9000164e6	jmp	(DeleteObject).l
0003eb48 4ef9000164f4	jmp	(DisplaySprite).l
0003f1da 4e71	nop	
0003f1dc 4ef900016d6e	jmp	(extractJmpToName("JmpTo65_Adjust2PArtPointer")).l
0003f1e4 7000	moveq	#0,d0
0003f1e6 10280024	move.b	routine(a0),d0
0003f1ea 323b0006	move.w	Obj3E_Index(pc,d0.w),d1
0003f1ee 4efb1002	jmp	Obj3E_Index(pc,d1.w)
0003f212 2248	movea.l	a0,a1
0003f214 47e80038	lea	objoff_38(a0),a3
0003f218 45faffe4	lea	Obj3E_ObjLoadData(pc),a2
0003f21c 7203	moveq	#3,d1
0003f21e 6008	bra.s	loc_3F228
0003f224 664c	bne.s	loc_3F272
0003f226 36c9	move.w	a1,(a3)+
0003f22e 336800080008	move.w	x_pos(a0),x_pos(a1)
0003f234 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0003f23a 3368000c0030	move.w	y_pos(a0),objoff_30(a1)
0003f240 237c0003f4360004	move.l	#Obj3E_MapUnc_3F436,mappings(a1)
0003f248 337c26800002	move.w	#make_art_tile(ArtTile_ArtNem_Capsule,1,0),art_tile(a1)
0003f24e 137c00840001	move.b	#1<<render_flags.on_screen|1<<render_flags.level_fg,render_flags(a1)
0003f254 7000	moveq	#0,d0
0003f256 101a	move.b	(a2)+,d0
0003f258 9169000c	sub.w	d0,y_pos(a1)
0003f25c 3369000c0030	move.w	y_pos(a1),objoff_30(a1)
0003f262 135a0024	move.b	(a2)+,routine(a1)
0003f266 135a0019	move.b	(a2)+,width_pixels(a1)
0003f26a 135a0018	move.b	(a2)+,priority(a1)
0003f26e 135a001a	move.b	(a2)+,mapping_frame(a1)
0003f272 51c9ffac	dbf	d1,loc_3F220
0003f276 4e75	rts	
0003f278 7000	moveq	#0,d0
0003f27a 10280025	move.b	routine_secondary(a0),d0
0003f27e 323b002e	move.w	off_3F2AE(pc,d0.w),d1
0003f282 4ebb102a	jsr	off_3F2AE(pc,d1.w)
0003f286 323c002b	move.w	#$2B,d1
0003f28a 343c0018	move.w	#$18,d2
0003f28e 363c0018	move.w	#$18,d3
0003f292 38280008	move.w	x_pos(a0),d4
0003f296 4eb900019718	jsr	(SolidObject).l
0003f29c 43f90003f428	lea	(Ani_obj3E).l,a1
0003f2a2 4eb900016544	jsr	(AnimateSprite).l
0003f2a8 4ef9000163d2	jmp	(MarkObjGone).l
0003f2b4 32680038	movea.w	objoff_38(a0),a1
0003f2b8 4a690032	tst.w	objoff_32(a1)
0003f2bc 673c	beq.s	++
0003f2be 3468003a	movea.w	objoff_3A(a0),a2
0003f2c2 4eb900017fda	jsr	(AllocateObject).l
0003f2c8 6616	bne.s	+
0003f2d0 54290024	addq.b	#2,routine(a1)
0003f2d4 336a00080008	move.w	x_pos(a2),x_pos(a1)
0003f2da 336a000c000c	move.w	y_pos(a2),y_pos(a1)
0003f2e0 357cfc000012	move.w	#-$400,y_vel(a2)
0003f2e6 357c08000010	move.w	#$800,x_vel(a2)
0003f2ec 542a0025	addq.b	#2,routine_secondary(a2)
0003f2f0 317c001d0034	move.w	#$1D,objoff_34(a0)
0003f2f6 54280025	addq.b	#2,routine_secondary(a0)
0003f2fa 4e75	rts	
0003f2fc 53680034	subq.w	#1,objoff_34(a0)
0003f300 6a50	bpl.s	return_3F352
0003f302 117c0001001c	move.b	#1,anim(a0)
0003f308 7c07	moveq	#7,d6
0003f30a 3a3c009a	move.w	#$9A,d5
0003f30e 78e4	moveq	#-$1C,d4
0003f316 6628	bne.s	+
0003f31e 336800080008	move.w	x_pos(a0),x_pos(a1)
0003f324 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0003f32a d9690008	add.w	d4,x_pos(a1)
0003f32e 137c00010038	move.b	#1,objoff_38(a1)
0003f334 5e44	addq.w	#7,d4
0003f336 33450036	move.w	d5,objoff_36(a1)
0003f33a 5145	subq.w	#8,d5
0003f33c 51ceffd2	dbf	d6,-
0003f340 3468003c	movea.w	objoff_3C(a0),a2
0003f344 357c00b4001e	move.w	#$B4,anim_frame_duration(a2)
0003f34a 542a0025	addq.b	#2,routine_secondary(a2)
0003f34e 54280025	addq.b	#2,routine_secondary(a0)
0003f352 4e75	rts	
0003f354 323c001b	move.w	#$1B,d1
0003f358 343c0008	move.w	#8,d2
0003f35c 363c0008	move.w	#8,d3
0003f360 38280008	move.w	x_pos(a0),d4
0003f364 4eb900019718	jsr	(SolidObject).l
0003f36a 31680030000c	move.w	objoff_30(a0),y_pos(a0)
0003f370 10280022	move.b	status(a0),d0
0003f374 02000018	andi.b	#standing_mask,d0
0003f378 670e	beq.s	+
0003f37a 5068000c	addq.w	#8,y_pos(a0)
0003f37e 4238fe1e	clr.b	(Update_HUD_timer).w
0003f382 317c00010032	move.w	#1,objoff_32(a0)
0003f388 4ef9000163d2	jmp	(MarkObjGone).l
0003f38e 4a280025	tst.b	routine_secondary(a0)
0003f392 670e	beq.s	+
0003f394 4a280001	tst.b	render_flags(a0)
0003f398 6a0001ae	bpl.w	JmpTo66_DeleteObject
0003f39c 4eb900016380	jsr	(ObjectMoveAndFall).l
0003f3a2 4ef9000163d2	jmp	(MarkObjGone).l
0003f3a8 4a280025	tst.b	routine_secondary(a0)
0003f3ac 6756	beq.s	return_3F404
0003f3ae 1038fe0f	move.b	(Vint_runcount+3).w,d0
0003f3b2 02000007	andi.b	#7,d0
0003f3b6 663c	bne.s	loc_3F3F4
0003f3b8 4eb900017fda	jsr	(AllocateObject).l
0003f3be 6634	bne.s	loc_3F3F4
0003f3c6 336800080008	move.w	x_pos(a0),x_pos(a1)
0003f3cc 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0003f3d2 4eb900003390	jsr	(RandomNumber).l
0003f3d8 0240001f	andi.w	#$1F,d0
0003f3dc 5d40	subq.w	#6,d0
0003f3de 4a41	tst.w	d1
0003f3e0 6a02	bpl.s	+
0003f3e2 4440	neg.w	d0
0003f3e4 d1690008	add.w	d0,x_pos(a1)
0003f3e8 137c00010038	move.b	#1,objoff_38(a1)
0003f3ee 337c000c0036	move.w	#$C,objoff_36(a1)
0003f3f4 5368001e	subq.w	#1,anim_frame_duration(a0)
0003f3f8 660a	bne.s	return_3F404
0003f3fa 54280024	addq.b	#2,routine(a0)
0003f3fe 317c00b4001e	move.w	#$B4,anim_frame_duration(a0)
0003f404 4e75	rts	
0003f406 706f	moveq	#(Dynamic_Object_RAM_End-Dynamic_Object_RAM)/object_size-1,d0
0003f408 7228	moveq	#ObjID_Animal,d1
0003f40a 43f8b400	lea	(Dynamic_Object_RAM).w,a1
0003f410 6714	beq.s	+
0003f412 43e90040	lea	next_object(a1),a1
0003f416 51c8fff6	dbf	d0,-
0003f41a 4eb900019452	jsr	(Load_EndOfAct).l
0003f420 4ef9000164e6	jmp	(DeleteObject).l
0003f546 4e71	nop	
0003f548 4ef9000164e6	jmp	(extractJmpToName("JmpTo66_DeleteObject")).l
0003f54e 4ef900017fda	jmp	(extractJmpToName("JmpTo20_AllocateObject")).l
0003f554 4e71	nop	
0003f55a 0c38000cfe10	cmpi.b	#casino_night_zone,(Current_Zone).w
0003f560 6604	bne.s	+
0003f566 4a38f7aa	tst.b	(Current_Boss_ID).w
0003f56a 660000fa	bne.w	Touch_Boss
0003f56e 34280008	move.w	x_pos(a0),d2
0003f572 3628000c	move.w	y_pos(a0),d3
0003f57a 7a00	moveq	#0,d5
0003f57c 1a280016	move.b	y_radius(a0),d5
0003f580 5705	subq.b	#3,d5
0003f582 9645	sub.w	d5,d3
0003f584 0c28004d001a	cmpi.b	#$4D,mapping_frame(a0)
0003f58a 6606	bne.s	Touch_NoDuck
0003f58c 0643000c	addi.w	#$C,d3
0003f590 7a0a	moveq	#$A,d5
0003f592 383c0010	move.w	#$10,d4
0003f596 da45	add.w	d5,d5
0003f598 43f8b400	lea	(Dynamic_Object_RAM).w,a1
0003f59c 3c3c006f	move.w	#(Dynamic_Object_RAM_End-Dynamic_Object_RAM)/object_size-1,d6
0003f5a0 10290020	move.b	collision_flags(a1),d0
0003f5a4 6600000e	bne.w	Touch_CheckCollision
0003f5a8 43e90040	lea	next_object(a1),a1
0003f5ac 51cefff2	dbf	d6,Touch_Loop
0003f5b0 7000	moveq	#0,d0
0003f5b2 4e75	rts	
0003f5b4 0240003f	andi.w	#$3F,d0
0003f5b8 d040	add.w	d0,d0
0003f5ba 45fb0044	lea	Touch_Sizes(pc,d0.w),a2
0003f5be 7200	moveq	#0,d1
0003f5c0 121a	move.b	(a2)+,d1
0003f5c2 30290008	move.w	x_pos(a1),d0
0003f5c6 9041	sub.w	d1,d0
0003f5c8 9042	sub.w	d2,d0
0003f5ca 640a	bcc.s	loc_3F5D6
0003f5cc d241	add.w	d1,d1
0003f5ce d041	add.w	d1,d0
0003f5d0 650a	bcs.s	Touch_CheckHeight
0003f5d2 6000ffd4	bra.w	Touch_NextObj
0003f5d6 b044	cmp.w	d4,d0
0003f5d8 6200ffce	bhi.w	Touch_NextObj
0003f5dc 7200	moveq	#0,d1
0003f5de 121a	move.b	(a2)+,d1
0003f5e0 3029000c	move.w	y_pos(a1),d0
0003f5e4 9041	sub.w	d1,d0
0003f5e6 9043	sub.w	d3,d0
0003f5e8 640c	bcc.s	loc_3F5F6
0003f5ea d241	add.w	d1,d1
0003f5ec d041	add.w	d1,d0
0003f5ee 65000102	bcs.w	Touch_ChkValue
0003f5f2 6000ffb4	bra.w	Touch_NextObj
0003f5f6 b045	cmp.w	d5,d0
0003f5f8 6200ffae	bhi.w	Touch_NextObj
0003f5fc 600000f4	bra.w	Touch_ChkValue
0003f666 47faff98	lea	Touch_Sizes(pc),a3
0003f66a 34280008	move.w	x_pos(a0),d2
0003f66e 3628000c	move.w	y_pos(a0),d3
0003f676 7a00	moveq	#0,d5
0003f678 1a280016	move.b	y_radius(a0),d5
0003f67c 5705	subq.b	#3,d5
0003f67e 9645	sub.w	d5,d3
0003f680 0c28004d001a	cmpi.b	#$4D,mapping_frame(a0)
0003f686 6606	bne.s	+
0003f688 0643000c	addi.w	#$C,d3
0003f68c 7a0a	moveq	#$A,d5
0003f68e 383c0010	move.w	#$10,d4
0003f692 da45	add.w	d5,d5
0003f694 43f8b400	lea	(Dynamic_Object_RAM).w,a1
0003f698 3c3c006f	move.w	#(Dynamic_Object_RAM_End-Dynamic_Object_RAM)/object_size-1,d6
0003f69c 10290020	move.b	collision_flags(a1),d0
0003f6a0 660c	bne.s	Touch_Boss_CheckCollision
0003f6a2 43e90040	lea	next_object(a1),a1
0003f6a6 51cefff4	dbf	d6,Touch_Boss_Loop
0003f6aa 7000	moveq	#0,d0
0003f6ac 4e75	rts	
0003f6ae 6100037c	bsr.w	BossSpecificCollision
0003f6b2 0240003f	andi.w	#$3F,d0
0003f6b6 67ea	beq.s	Touch_Boss_NextObj
0003f6b8 d040	add.w	d0,d0
0003f6ba 45f30000	lea	(a3,d0.w),a2
0003f6be 7200	moveq	#0,d1
0003f6c0 121a	move.b	(a2)+,d1
0003f6c2 30290008	move.w	x_pos(a1),d0
0003f6c6 9041	sub.w	d1,d0
0003f6c8 9042	sub.w	d2,d0
0003f6ca 6408	bcc.s	loc_3F6D4
0003f6cc d241	add.w	d1,d1
0003f6ce d041	add.w	d1,d0
0003f6d0 6506	bcs.s	Touch_Boss_CheckHeight
0003f6d2 60ce	bra.s	Touch_Boss_NextObj
0003f6d4 b044	cmp.w	d4,d0
0003f6d6 62ca	bhi.s	Touch_Boss_NextObj
0003f6d8 7200	moveq	#0,d1
0003f6da 121a	move.b	(a2)+,d1
0003f6dc 3029000c	move.w	y_pos(a1),d0
0003f6e0 9041	sub.w	d1,d0
0003f6e2 9043	sub.w	d3,d0
0003f6e4 6408	bcc.s	loc_3F6EE
0003f6e6 d241	add.w	d1,d1
0003f6e8 d041	add.w	d1,d0
0003f6ea 6506	bcs.s	Touch_ChkValue
0003f6ec 60b4	bra.s	Touch_Boss_NextObj
0003f6ee b045	cmp.w	d5,d0
0003f6f0 62b0	bhi.s	Touch_Boss_NextObj
0003f6f2 12290020	move.b	collision_flags(a1),d1
0003f6f6 020100c0	andi.b	#$C0,d1
0003f6fa 67000090	beq.w	Touch_Enemy
0003f6fe 0c0100c0	cmpi.b	#$C0,d1
0003f702 67000272	beq.w	Touch_Special
0003f706 4a01	tst.b	d1
0003f708 6b000158	bmi.w	Touch_ChkHurt
0003f70c 10290020	move.b	collision_flags(a1),d0
0003f710 0200003f	andi.b	#$3F,d0
0003f714 0c000006	cmpi.b	#6,d0
0003f718 6722	beq.s	Touch_Monitor
0003f71a 3038b030	move.w	(MainCharacter+invulnerable_time).w,d0
0003f71e 4a78ffd8	tst.w	(Two_player_mode).w
0003f722 6704	beq.s	+
0003f724 30280030	move.w	invulnerable_time(a0),d0
0003f728 0c40005a	cmpi.w	#90,d0
0003f72c 6400000c	bhs.w	+
0003f730 137c00040024	move.b	#4,routine(a1)
0003f736 3348003e	move.w	a0,parent(a1)
0003f73a 4e75	rts	
0003f73c 4a680012	tst.w	y_vel(a0)
0003f740 6a26	bpl.s	.breakMonitor
0003f742 3028000c	move.w	y_pos(a0),d0
0003f746 04400010	subi.w	#$10,d0
0003f74a b069000c	cmp.w	y_pos(a1),d0
0003f74e 653a	blo.s	return_3F78A
0003f750 44680012	neg.w	y_vel(a0)
0003f754 337cfe800012	move.w	#-$180,y_vel(a1)
0003f75a 4a290025	tst.b	routine_secondary(a1)
0003f75e 662a	bne.s	return_3F78A
0003f760 137c00040025	move.b	#4,routine_secondary(a1)
0003f766 4e75	rts	
0003f768 b0fcb000	cmpa.w	#MainCharacter,a0
0003f76c 6706	beq.s	+
0003f76e 4a78ffd8	tst.w	(Two_player_mode).w
0003f772 6716	beq.s	return_3F78A
0003f774 0c280002001c	cmpi.b	#AniIDSonAni_Roll,anim(a0)
0003f77a 660e	bne.s	return_3F78A
0003f77c 44680012	neg.w	y_vel(a0)
0003f780 137c00040024	move.b	#4,routine(a1)
0003f786 3348003e	move.w	a0,parent(a1)
0003f78a 4e75	rts	
0003f78c 08280001002b	btst	#status_secondary.invincible,status_secondary(a0)
0003f792 6612	bne.s	+
0003f794 0c280009001c	cmpi.b	#AniIDSonAni_Spindash,anim(a0)
0003f79a 670a	beq.s	+
0003f79c 0c280002001c	cmpi.b	#AniIDSonAni_Roll,anim(a0)
0003f7a2 660000be	bne.w	Touch_ChkHurt
0003f7a6 082900060001	btst	#render_flags.multi_sprite,render_flags(a1)
0003f7ac 671a	beq.s	Touch_Enemy_Part2
0003f7ae 4a290032	tst.b	boss_hitcount2(a1)
0003f7b2 6712	beq.s	return_3F7C6
0003f7b4 44680010	neg.w	x_vel(a0)
0003f7b8 44680012	neg.w	y_vel(a0)
0003f7bc 137c00000020	move.b	#0,collision_flags(a1)
0003f7c2 53290032	subq.b	#1,boss_hitcount2(a1)
0003f7c6 4e75	rts	
0003f7c8 4a290021	tst.b	collision_property(a1)
0003f7cc 671c	beq.s	Touch_KillEnemy
0003f7ce 44680010	neg.w	x_vel(a0)
0003f7d2 44680012	neg.w	y_vel(a0)
0003f7d6 137c00000020	move.b	#0,collision_flags(a1)
0003f7dc 53290021	subq.b	#1,collision_property(a1)
0003f7e0 6606	bne.s	return_3F7E8
0003f7e2 08e900070022	bset	#status.npc.no_balancing,status(a1)
0003f7e8 4e75	rts	
0003f7ea 08e900070022	bset	#status.npc.no_balancing,status(a1)
0003f7f0 7000	moveq	#0,d0
0003f7f2 3038f7d0	move.w	(Chain_Bonus_counter).w,d0
0003f7f6 5478f7d0	addq.w	#2,(Chain_Bonus_counter).w
0003f7fa 0c400006	cmpi.w	#6,d0
0003f7fe 6502	blo.s	loc_3F802
0003f800 7006	moveq	#6,d0
0003f802 3340003e	move.w	d0,objoff_3E(a1)
0003f806 303b004c	move.w	Enemy_Points(pc,d0.w),d0
0003f80a 0c780020f7d0	cmpi.w	#$20,(Chain_Bonus_counter).w
0003f810 650a	blo.s	loc_3F81C
0003f812 303c03e8	move.w	#1000,d0
0003f816 337c000a003e	move.w	#$A,objoff_3E(a1)
0003f81c 3648	movea.w	a0,a3
0003f81e 61001522	bsr.w	AddPoints2
0003f828 137c00000024	move.b	#0,routine(a1)
0003f82e 4a680012	tst.w	y_vel(a0)
0003f832 6b10	bmi.s	loc_3F844
0003f834 3028000c	move.w	y_pos(a0),d0
0003f838 b069000c	cmp.w	y_pos(a1),d0
0003f83c 640e	bhs.s	loc_3F84C
0003f83e 44680012	neg.w	y_vel(a0)
0003f842 4e75	rts	
0003f844 066801000012	addi.w	#$100,y_vel(a0)
0003f84a 4e75	rts	
0003f84c 046801000012	subi.w	#$100,y_vel(a0)
0003f852 4e75	rts	
0003f85c 08e900070022	bset	#status.npc.no_balancing,status(a1)
0003f862 08280001002b	btst	#status_secondary.invincible,status_secondary(a0)
0003f868 6704	beq.s	Touch_Hurt
0003f86a 70ff	moveq	#-1,d0
0003f86c 4e75	rts	
0003f86e 4e71	nop	
0003f870 4a680030	tst.w	invulnerable_time(a0)
0003f874 66f4	bne.s	Touch_NoHurt
0003f876 2449	movea.l	a1,a2
0003f878 3038fe20	move.w	(Ring_count).w,d0
0003f87c b0fcb000	cmpa.w	#MainCharacter,a0
0003f880 670a	beq.s	loc_3F88C
0003f882 4a78ffd8	tst.w	(Two_player_mode).w
0003f886 6736	beq.s	Hurt_Sidekick
0003f888 3038fed0	move.w	(Ring_count_2P).w,d0
0003f88c 08280000002b	btst	#status_secondary.shield,status_secondary(a0)
0003f892 6624	bne.s	Hurt_Shield
0003f894 4a40	tst.w	d0
0003f896 6700008e	beq.w	KillCharacter
0003f89a 4eb900017fda	jsr	(AllocateObject).l
0003f8a0 6616	bne.s	Hurt_Shield
0003f8a8 336800080008	move.w	x_pos(a0),x_pos(a1)
0003f8ae 3368000c000c	move.w	y_pos(a0),y_pos(a1)
0003f8b4 3348003e	move.w	a0,parent(a1)
0003f8b8 08a80000002b	bclr	#status_secondary.shield,status_secondary(a0)
0003f8be 117c00040024	move.b	#4,routine(a0)
0003f8c8 08e800010022	bset	#status.player.in_air,status(a0)
0003f8ce 317cfc000012	move.w	#-$400,y_vel(a0)
0003f8d4 317cfe000010	move.w	#-$200,x_vel(a0)
0003f8da 082800060022	btst	#status.player.underwater,status(a0)
0003f8e0 670c	beq.s	Hurt_Reverse
0003f8e2 317cfe000012	move.w	#-$200,y_vel(a0)
0003f8e8 317cff000010	move.w	#-$100,x_vel(a0)
0003f8ee 30280008	move.w	x_pos(a0),d0
0003f8f2 b06a0008	cmp.w	x_pos(a2),d0
0003f8f6 6504	blo.s	Hurt_ChkSpikes
0003f8f8 44680010	neg.w	x_vel(a0)
0003f8fc 317c00000014	move.w	#0,inertia(a0)
0003f902 117c001a001c	move.b	#AniIDSonAni_Hurt2,anim(a0)
0003f908 317c00780030	move.w	#$78,invulnerable_time(a0)
0003f90e 303c00a3	move.w	#SndID_Hurt,d0
0003f912 0c120036	cmpi.b	#ObjID_Spikes,id(a2)
0003f916 6604	bne.s	Hurt_Sound
0003f918 303c00a6	move.w	#SndID_HurtBySpikes,d0
0003f91c 4eb900001370	jsr	(PlaySound).l
0003f922 70ff	moveq	#-1,d0
0003f924 4e75	rts	
0003f926 4a78fe08	tst.w	(Debug_placement_mode).w
0003f92a 6646	bne.s	++
0003f92c 4228002b	clr.b	status_secondary(a0)
0003f930 117c00060024	move.b	#6,routine(a0)
0003f93a 08e800010022	bset	#status.player.in_air,status(a0)
0003f940 317cf9000012	move.w	#-$700,y_vel(a0)
0003f946 317c00000010	move.w	#0,x_vel(a0)
0003f94c 317c00000014	move.w	#0,inertia(a0)
0003f952 117c0018001c	move.b	#AniIDSonAni_Death,anim(a0)
0003f958 08e800070002	bset	#high_priority_bit,art_tile(a0)
0003f95e 303c00a3	move.w	#SndID_Hurt,d0
0003f962 0c120036	cmpi.b	#ObjID_Spikes,id(a2)
0003f966 6604	bne.s	+
0003f968 303c00a6	move.w	#SndID_HurtBySpikes,d0
0003f96c 4eb900001370	jsr	(PlaySound).l
0003f972 70ff	moveq	#-1,d0
0003f974 4e75	rts	
0003f976 12290020	move.b	collision_flags(a1),d1
0003f97a 0201003f	andi.b	#$3F,d1
0003f97e 0c010006	cmpi.b	#6,d1
0003f982 677c	beq.s	loc_3FA00
0003f984 0c010007	cmpi.b	#7,d1
0003f988 6700008e	beq.w	loc_3FA18
0003f98c 0c01000b	cmpi.b	#$B,d1
0003f990 6738	beq.s	BranchTo_loc_3F85C
0003f992 0c01000a	cmpi.b	#$A,d1
0003f996 6768	beq.s	loc_3FA00
0003f998 0c01000c	cmpi.b	#$C,d1
0003f99c 6730	beq.s	loc_3F9CE
0003f99e 0c010014	cmpi.b	#$14,d1
0003f9a2 675c	beq.s	loc_3FA00
0003f9a4 0c010015	cmpi.b	#$15,d1
0003f9a8 6756	beq.s	loc_3FA00
0003f9aa 0c010016	cmpi.b	#$16,d1
0003f9ae 6750	beq.s	loc_3FA00
0003f9b0 0c010017	cmpi.b	#$17,d1
0003f9b4 674a	beq.s	loc_3FA00
0003f9b6 0c010018	cmpi.b	#$18,d1
0003f9ba 6744	beq.s	loc_3FA00
0003f9bc 0c01001a	cmpi.b	#$1A,d1
0003f9c0 6760	beq.s	loc_3FA22
0003f9c2 0c010021	cmpi.b	#$21,d1
0003f9c6 674a	beq.s	loc_3FA12
0003f9c8 4e75	rts	
0003f9ca 6000fe90	bra.w	loc_3F85C
0003f9ce 9a40	sub.w	d0,d5
0003f9d0 0c450008	cmpi.w	#8,d5
0003f9d4 6426	bhs.s	BranchTo_Touch_Enemy
0003f9d6 30290008	move.w	x_pos(a1),d0
0003f9da 5940	subq.w	#4,d0
0003f9dc 082900000022	btst	#status.npc.x_flip,status(a1)
0003f9e2 6704	beq.s	loc_3F9E8
0003f9e4 04400010	subi.w	#$10,d0
0003f9e8 9042	sub.w	d2,d0
0003f9ea 6408	bcc.s	loc_3F9F4
0003f9ec 06400018	addi.w	#$18,d0
0003f9f0 6506	bcs.s	BranchTo_Touch_ChkHurt
0003f9f2 6008	bra.s	BranchTo_Touch_Enemy
0003f9f4 b044	cmp.w	d4,d0
0003f9f6 6204	bhi.s	BranchTo_Touch_Enemy
0003f9f8 6000fe68	bra.w	Touch_ChkHurt
0003f9fc 6000fd8e	bra.w	Touch_Enemy
0003fa00 3208	move.w	a0,d1
0003fa02 0441b000	subi.w	#MainCharacter,d1
0003fa06 6704	beq.s	+
0003fa08 52290021	addq.b	#1,collision_property(a1)
0003fa0c 52290021	addq.b	#1,collision_property(a1)
0003fa10 4e75	rts	
0003fa12 52290021	addq.b	#1,collision_property(a1)
0003fa16 4e75	rts	
0003fa18 137c00020021	move.b	#2,collision_property(a1)
0003fa1e 6000fd6c	bra.w	Touch_Enemy
0003fa22 137c00ff0021	move.b	#-1,collision_property(a1)
0003fa28 6000fd62	bra.w	Touch_Enemy
0003fa2c 0c00000f	cmpi.b	#$F,d0
0003fa30 6614	bne.s	+
0003fa32 7000	moveq	#0,d0
0003fa34 1038f7aa	move.b	(Current_Boss_ID).w,d0
0003fa38 670c	beq.s	+
0003fa3a 5340	subq.w	#1,d0
0003fa3c d040	add.w	d0,d0
0003fa3e 303b0008	move.w	BossCollision_Index(pc,d0.w),d0
0003fa42 4efb0004	jmp	BossCollision_Index(pc,d0.w)
0003fa5a 10290020	move.b	collision_flags(a1),d0
0003fa5e 4e75	rts	
0003fa60 4a38f73f	tst.b	(Boss_CollisionRoutine).w
0003fa64 6602	bne.s	+
0003fa66 4e75	rts	
0003fa68 3f07	move.w	d7,-(sp)
0003fa6a 7200	moveq	#0,d1
0003fa6c 12290015	move.b	objoff_15(a1),d1
0003fa70 5501	subq.b	#2,d1
0003fa72 0c010007	cmpi.b	#7,d1
0003fa76 6e30	bgt.s	loc_3FAA8
0003fa78 3e01	move.w	d1,d7
0003fa7a de47	add.w	d7,d7
0003fa7c 30290008	move.w	x_pos(a1),d0
0003fa80 082900000001	btst	#render_flags.x_flip,render_flags(a1)
0003fa86 6706	beq.s	loc_3FA8E
0003fa88 d07b7026	add.w	word_3FAB0(pc,d7.w),d0
0003fa8c 6004	bra.s	loc_3FA92
0003fa8e 907b7020	sub.w	word_3FAB0(pc,d7.w),d0
0003fa92 123b102c	move.b	byte_3FAC0(pc,d1.w),d1
0003fa96 008100040000	ori.l	#$40000,d1
0003fa9c 3e29000c	move.w	y_pos(a1),d7
0003faa0 0447001c	subi.w	#$1C,d7
0003faa4 610001a6	bsr.w	Boss_DoCollision
0003faa8 3e1f	move.w	(sp)+,d7
0003faaa 10290020	move.b	collision_flags(a1),d0
0003faae 4e75	rts	
0003fac8 3f07	move.w	d7,-(sp)
0003faca 30290008	move.w	x_pos(a1),d0
0003face 3e29000c	move.w	y_pos(a1),d7
0003fad2 4a38f73f	tst.b	(Boss_CollisionRoutine).w
0003fad6 671e	beq.s	++
0003fadc 04400050	subi.w	#$50,d0
0003fae0 082900000001	btst	#render_flags.x_flip,render_flags(a1)
0003fae6 6704	beq.s	+
0003fae8 064000a0	addi.w	#$A0,d0
0003faec 223c00140010	move.l	#$140010,d1
0003faf2 61000158	bsr.w	Boss_DoCollision
0003faf6 3e1f	move.w	(sp)+,d7
0003faf8 10290020	move.b	collision_flags(a1),d0
0003fafc 4e75	rts	
0003fafe 51e90038	sf	boss_hurt_sonic(a1)
0003fb02 0c380001f73f	cmpi.b	#1,(Boss_CollisionRoutine).w
0003fb08 6d3c	blt.s	BossCollision_MCZ2
0003fb0a 3f07	move.w	d7,-(sp)
0003fb0c 30290008	move.w	x_pos(a1),d0
0003fb10 3e29000c	move.w	y_pos(a1),d7
0003fb18 04400030	subi.w	#$30,d0
0003fb1c 082900000001	btst	#render_flags.x_flip,render_flags(a1)
0003fb22 6704	beq.s	+
0003fb24 06400060	addi.w	#$60,d0
0003fb28 223c00040004	move.l	#$40004,d1
0003fb2e 6100011c	bsr.w	Boss_DoCollision
0003fb32 3e1f	move.w	(sp)+,d7
0003fb34 10290020	move.b	collision_flags(a1),d0
0003fb38 0c6800780030	cmpi.w	#$78,invulnerable_time(a0)
0003fb3e 6604	bne.s	+
0003fb40 50e90038	st.b	boss_hurt_sonic(a1)
0003fb44 4e75	rts	
0003fb46 3f07	move.w	d7,-(sp)
0003fb48 3a7c0014	movea.w	#$14,a5
0003fb4c 387c0000	movea.w	#0,a4
0003fb54 3e29000c	move.w	y_pos(a1),d7
0003fb58 04470020	subi.w	#$20,d7
0003fb5c d04d	add.w	a5,d0
0003fb5e 223c00100004	move.l	#$100004,d1
0003fb64 610000e6	bsr.w	Boss_DoCollision
0003fb68 3a7cffec	movea.w	#-$14,a5
0003fb70 b8fc0001	cmpa.w	#1,a4
0003fb74 67da	beq.s	-
0003fb76 3e1f	move.w	(sp)+,d7
0003fb78 10290020	move.b	collision_flags(a1),d0
0003fb7c 0c6800780030	cmpi.w	#$78,invulnerable_time(a0)
0003fb82 6604	bne.s	+
0003fb84 50e90038	st.b	boss_hurt_sonic(a1)
0003fb88 4e75	rts	
0003fb8a 4a38f73f	tst.b	(Boss_CollisionRoutine).w
0003fb8e 672e	beq.s	++
0003fb90 3f07	move.w	d7,-(sp)
0003fb92 30290008	move.w	x_pos(a1),d0
0003fb96 3e29000c	move.w	y_pos(a1),d7
0003fb9a 06470028	addi.w	#$28,d7
0003fb9e 223c00080010	move.l	#$80010,d1
0003fba4 0c380001f73f	cmpi.b	#1,(Boss_CollisionRoutine).w
0003fbaa 670c	beq.s	+
0003fbac 323c0020	move.w	#$20,d1
0003fbb8 61000092	bsr.w	Boss_DoCollision
0003fbbc 3e1f	move.w	(sp)+,d7
0003fbbe 10290020	move.b	collision_flags(a1),d0
0003fbc2 4e75	rts	
0003fbc4 10290020	move.b	collision_flags(a1),d0
0003fbc8 4e75	rts	
0003fbca 0c380001f73f	cmpi.b	#1,(Boss_CollisionRoutine).w
0003fbd0 6d74	blt.s	loc_3FC46
0003fbd2 6748	beq.s	loc_3FC1C
0003fbd4 3f07	move.w	d7,-(sp)
0003fbd6 30290008	move.w	x_pos(a1),d0
0003fbda 3e29000c	move.w	y_pos(a1),d7
0003fbde 7200	moveq	#0,d1
0003fbe0 1229000b	move.b	mainspr_mapframe(a1),d1
0003fbe4 5501	subq.b	#2,d1
0003fbe6 d241	add.w	d1,d1
0003fbe8 082900000001	btst	#render_flags.x_flip,render_flags(a1)
0003fbee 6706	beq.s	loc_3FBF6
0003fbf0 d07b101e	add.w	word_3FC10(pc,d1.w),d0
0003fbf4 6004	bra.s	loc_3FBFA
0003fbf6 907b1018	sub.w	word_3FC10(pc,d1.w),d0
0003fbfa 9e7b1016	sub.w	word_3FC10+2(pc,d1.w),d7
0003fbfe 223c00060008	move.l	#$60008,d1
0003fc04 61000046	bsr.w	Boss_DoCollision
0003fc08 3e1f	move.w	(sp)+,d7
0003fc0a 303c0000	move.w	#0,d0
0003fc0e 4e75	rts	
0003fc1c 3f07	move.w	d7,-(sp)
0003fc1e 30290008	move.w	x_pos(a1),d0
0003fc22 3e29000c	move.w	y_pos(a1),d7
0003fc26 7210	moveq	#$10,d1
0003fc28 082900000001	btst	#render_flags.x_flip,render_flags(a1)
0003fc2e 6702	beq.s	+
0003fc30 4441	neg.w	d1
0003fc32 9041	sub.w	d1,d0
0003fc34 223c0008000c	move.l	#$8000C,d1
0003fc3a 6100003e	bsr.w	loc_3FC7A
0003fc3e 3e1f	move.w	(sp)+,d7
0003fc40 103c0000	move.b	#0,d0
0003fc44 4e75	rts	
0003fc46 10290020	move.b	collision_flags(a1),d0
0003fc4a 4e75	rts	
0003fc4c 9041	sub.w	d1,d0
0003fc4e 9042	sub.w	d2,d0
0003fc50 6408	bcc.s	loc_3FC5A
0003fc52 d241	add.w	d1,d1
0003fc54 d041	add.w	d1,d0
0003fc56 6506	bcs.s	loc_3FC5E
0003fc58 4e75	rts	
0003fc5a b044	cmp.w	d4,d0
0003fc5c 62fa	bhi.s	return_3FC58
0003fc5e 4841	swap	d1
0003fc60 9e41	sub.w	d1,d7
0003fc62 9e43	sub.w	d3,d7
0003fc64 640a	bcc.s	loc_3FC70
0003fc66 d241	add.w	d1,d1
0003fc68 de41	add.w	d1,d7
0003fc6a 6500fbf6	bcs.w	Touch_ChkHurt
0003fc6e 60e8	bra.s	return_3FC58
0003fc70 be45	cmp.w	d5,d7
0003fc72 6200ffe4	bhi.w	return_3FC58
0003fc76 6000fbea	bra.w	Touch_ChkHurt
0003fc7a 9041	sub.w	d1,d0
0003fc7c 9042	sub.w	d2,d0
0003fc7e 6408	bcc.s	loc_3FC88
0003fc80 d241	add.w	d1,d1
0003fc82 d041	add.w	d1,d0
0003fc84 6506	bcs.s	loc_3FC8C
0003fc86 4e75	rts	
0003fc88 b044	cmp.w	d4,d0
0003fc8a 62fa	bhi.s	return_3FC86
0003fc8c 4841	swap	d1
0003fc8e 9e41	sub.w	d1,d7
0003fc90 9e43	sub.w	d3,d7
0003fc92 640a	bcc.s	loc_3FC9E
0003fc94 d241	add.w	d1,d1
0003fc96 de41	add.w	d1,d7
0003fc98 6500000a	bcs.w	loc_3FCA4
0003fc9c 60e8	bra.s	return_3FC86
0003fc9e be45	cmp.w	d5,d7
0003fca0 6200ffe4	bhi.w	return_3FC86
0003fca4 44680010	neg.w	x_vel(a0)
0003fca8 44680012	neg.w	y_vel(a0)
0003fcac 4e75	rts	
0003fcae 4e71	nop	
0003fcb0 4ef90001b0ac	jmp	(extractJmpToName("JmpTo_Sonic_ResetOnFloor_Part2")).l
0003fcb6 4ef9000174c8	jmp	(extractJmpToName("JmpTo_Check_CNZ_bumpers")).l
0003fcbc 4ef9000170ba	jmp	(extractJmpToName("JmpTo_Touch_Rings")).l
0003fcc4 7000	moveq	#0,d0
0003fcc6 1038fe10	move.b	(Current_Zone).w,d0
0003fcca d040	add.w	d0,d0
0003fccc d040	add.w	d0,d0
0003fcce 323b0012	move.w	PLC_DYNANM+2(pc,d0.w),d1
0003fcd2 45fb100c	lea	PLC_DYNANM(pc,d1.w),a2
0003fcd6 303b0008	move.w	PLC_DYNANM(pc,d0.w),d0
0003fcda 4efb0004	jmp	PLC_DYNANM(pc,d0.w)
0003fcde 4e75	rts	
0003fd24 4e75	rts	
0003fd26 4a78ffd8	tst.w	(Two_player_mode).w
0003fd2a 66000200	bne.w	Dynamic_Normal
0003fd2e 47f8f7f0	lea	(Anim_Counters).w,a3
0003fd32 7000	moveq	#0,d0
0003fd34 3238ee00	move.w	(Camera_X_pos).w,d1
0003fd38 4441	neg.w	d1
0003fd3a e641	asr.w	#3,d1
0003fd3c 3038ee00	move.w	(Camera_X_pos).w,d0
0003fd40 e848	lsr.w	#4,d0
0003fd42 d041	add.w	d1,d0
0003fd44 04400010	subi.w	#$10,d0
0003fd48 80fc0030	divu.w	#$30,d0
0003fd4c 4840	swap	d0
0003fd4e b02b0001	cmp.b	1(a3),d0
0003fd52 6744	beq.s	.skipMountainArt
0003fd54 17400001	move.b	d0,1(a3)
0003fd58 3400	move.w	d0,d2
0003fd5a 02400007	andi.w	#7,d0
0003fd5e d040	add.w	d0,d0
0003fd60 d040	add.w	d0,d0
0003fd62 d040	add.w	d0,d0
0003fd64 3200	move.w	d0,d1
0003fd66 d040	add.w	d0,d0
0003fd68 d041	add.w	d1,d0
0003fd6a 02420038	andi.w	#$38,d2
0003fd6e e44a	lsr.w	#2,d2
0003fd70 d042	add.w	d2,d0
0003fd72 49fb0028	lea	.offsets(pc,d0.w),a4
0003fd76 7a05	moveq	#5,d5
0003fd78 383ca000	move.w	#tiles_to_bytes(ArtTile_ArtUnc_HTZMountains),d4
0003fd7c 72ff	moveq	#-1,d1
0003fd7e 321c	move.w	(a4)+,d1
0003fd80 028100ffffff	andi.l	#$FFFFFF,d1
0003fd86 3404	move.w	d4,d2
0003fd88 7640	moveq	#tiles_to_words(4),d3
0003fd8a 4eb90000144e	jsr	(QueueDMATransfer).l
0003fd90 06440080	addi.w	#$80,d4
0003fd94 51cdffe6	dbf	d5,.mountainLoop
0003fd98 600000c2	bra.w	.doCloudArt
0003fe5c 43f8a800	lea	(TempArray_LayerDef).w,a1
0003fe60 3438ee00	move.w	(Camera_X_pos).w,d2
0003fe64 4442	neg.w	d2
0003fe66 e642	asr.w	#3,d2
0003fe68 2f0a	move.l	a2,-(sp)
0003fe6a 41f90004a33e	lea	(ArtUnc_HTZClouds).l,a0
0003fe70 45f9ffff7c00	lea	(Chunk_Table+$7C00).l,a2
0003fe76 720f	moveq	#16-1,d1
0003fe78 3019	move.w	(a1)+,d0
0003fe7a 4440	neg.w	d0
0003fe7c d042	add.w	d2,d0
0003fe7e 0240001f	andi.w	#$1F,d0
0003fe82 e248	lsr.w	#1,d0
0003fe84 6404	bcc.s	+
0003fe86 06400200	addi.w	#$200,d0
0003fe8a 49f00000	lea	(a0,d0.w),a4
0003fe8e e248	lsr.w	#1,d0
0003fe90 6522	bcs.s	.odd
0003fe92 24dc	move.l	(a4)+,(a2)+
0003fe94 d4fc003c	adda.w	#$40-4,a2
0003fe98 24dc	move.l	(a4)+,(a2)+
0003fe9a d4fc003c	adda.w	#$40-4,a2
0003fe9e 24dc	move.l	(a4)+,(a2)+
0003fea0 d4fc003c	adda.w	#$40-4,a2
0003fea4 24dc	move.l	(a4)+,(a2)+
0003fea6 94fc00c0	suba.w	#$40*3,a2
0003feaa d0fc0020	adda.w	#$20,a0
0003feae 51c9ffc8	dbf	d1,.cloudLoop
0003feb2 6038	bra.s	.done
0003feb4 14dc	move.b	(a4)+,(a2)+
0003feb6 14dc	move.b	(a4)+,(a2)+
0003feb8 14dc	move.b	(a4)+,(a2)+
0003feba 14dc	move.b	(a4)+,(a2)+
0003febc d4fc003c	adda.w	#$40-4,a2
0003fec0 14dc	move.b	(a4)+,(a2)+
0003fec2 14dc	move.b	(a4)+,(a2)+
0003fec4 14dc	move.b	(a4)+,(a2)+
0003fec6 14dc	move.b	(a4)+,(a2)+
0003fec8 d4fc003c	adda.w	#$40-4,a2
0003fecc 14dc	move.b	(a4)+,(a2)+
0003fece 14dc	move.b	(a4)+,(a2)+
0003fed0 14dc	move.b	(a4)+,(a2)+
0003fed2 14dc	move.b	(a4)+,(a2)+
0003fed4 d4fc003c	adda.w	#$40-4,a2
0003fed8 14dc	move.b	(a4)+,(a2)+
0003feda 14dc	move.b	(a4)+,(a2)+
0003fedc 14dc	move.b	(a4)+,(a2)+
0003fede 14dc	move.b	(a4)+,(a2)+
0003fee0 94fc00c0	suba.w	#$40*3,a2
0003fee4 d0fc0020	adda.w	#$20,a0
0003fee8 51c9ff8e	dbf	d1,.cloudLoop
0003feec 223c00ff7c00	move.l	#(Chunk_Table+$7C00) & $FFFFFF,d1
0003fef2 343ca300	move.w	#tiles_to_bytes(ArtTile_ArtUnc_HTZClouds),d2
0003fef6 363c0080	move.w	#tiles_to_words(8),d3
0003fefa 4eb90000144e	jsr	(QueueDMATransfer).l
0003ff00 245f	movea.l	(sp)+,a2
0003ff02 544b	addq.w	#2,a3
0003ff04 6000002a	bra.w	Dynamic_Normal.customCounters
0003ff08 4a38f7aa	tst.b	(Current_Boss_ID).w
0003ff0c 6702	beq.s	+
0003ff0e 4e75	rts	
0003ff10 45f90004010e	lea	(Animated_CNZ).l,a2
0003ff16 4a78ffd8	tst.w	(Two_player_mode).w
0003ff1a 6710	beq.s	Dynamic_Normal
0003ff1c 45f900040160	lea	(Animated_CNZ_2P).l,a2
0003ff22 6008	bra.s	Dynamic_Normal
0003ff24 4a38f7aa	tst.b	(Current_Boss_ID).w
0003ff28 6702	beq.s	Dynamic_Normal
0003ff2a 4e75	rts	
0003ff2c 47f8f7f0	lea	(Anim_Counters).w,a3
0003ff30 3c1a	move.w	(a2)+,d6
0003ff32 5313	subq.b	#1,(a3)
0003ff34 6442	bcc.s	.nextscript
0003ff36 7000	moveq	#0,d0
0003ff38 102b0001	move.b	1(a3),d0
0003ff3c b02a0006	cmp.b	6(a2),d0
0003ff40 6506	blo.s	.notlastframe
0003ff42 7000	moveq	#0,d0
0003ff44 17400001	move.b	d0,1(a3)
0003ff48 522b0001	addq.b	#1,1(a3)
0003ff4c 1692	move.b	(a2),(a3)
0003ff4e 6a06	bpl.s	.globalduration
0003ff50 d040	add.w	d0,d0
0003ff52 16b20009	move.b	9(a2,d0.w),(a3)
0003ff56 10320008	move.b	8(a2,d0.w),d0
0003ff5a eb48	lsl.w	#5,d0
0003ff5c 342a0004	move.w	4(a2),d2
0003ff60 2212	move.l	(a2),d1
0003ff62 028100ffffff	andi.l	#$FFFFFF,d1
0003ff68 d280	add.l	d0,d1
0003ff6a 7600	moveq	#0,d3
0003ff6c 162a0007	move.b	7(a2),d3
0003ff70 e94b	lsl.w	#4,d3
0003ff72 4eb90000144e	jsr	(QueueDMATransfer).l
0003ff78 102a0006	move.b	6(a2),d0
0003ff7c 4a12	tst.b	(a2)
0003ff7e 6a02	bpl.s	.globalduration2
0003ff80 d000	add.b	d0,d0
0003ff82 5200	addq.b	#1,d0
0003ff84 024000fe	andi.w	#$FE,d0
0003ff88 45f20008	lea	8(a2,d0.w),a2
0003ff8c 544b	addq.w	#2,a3
0003ff8e 51ceffa2	dbf	d6,.loop
0003ff92 4e75	rts	
00040200 0c38000dfe10	cmpi.b	#chemical_plant_zone,(Current_Zone).w
00040206 6702	beq.s	+
0004020a 3038ee00	move.w	(Camera_X_pos).w,d0
0004020e 0c401940	cmpi.w	#$1940,d0
00040212 65f4	blo.s	-
00040214 0c401f80	cmpi.w	#$1F80,d0
00040218 64ee	bhs.s	-
0004021a 5338f72d	subq.b	#1,(CPZ_UnkScroll_Timer).w
0004021e 6ae8	bpl.s	-
00040220 11fc0007f72d	move.b	#7,(CPZ_UnkScroll_Timer).w
00040226 11fc0001f72c	move.b	#1,(Screen_redraw_flag).w
0004022c 43f9ffff7500	lea	(Chunk_Table+$EA*$80).l,a1
00040232 6106	bsr.s	+
00040234 43f9ffff7d00	lea	(Chunk_Table+$FA*$80).l,a1
0004023a 323c0007	move.w	#8-1,d1
00040240 32e90002	move.w	2(a1),(a1)+
00040244 32e90002	move.w	2(a1),(a1)+
00040248 32e90002	move.w	2(a1),(a1)+
0004024c 32e90002	move.w	2(a1),(a1)+
00040250 32e90002	move.w	2(a1),(a1)+
00040254 32e90002	move.w	2(a1),(a1)+
00040258 32e90002	move.w	2(a1),(a1)+
0004025c 32e90072	move.w	$72(a1),(a1)+
00040260 d2fc0070	adda.w	#$70,a1
00040264 32e90002	move.w	2(a1),(a1)+
00040268 32e90002	move.w	2(a1),(a1)+
0004026c 32e90002	move.w	2(a1),(a1)+
00040270 32e90002	move.w	2(a1),(a1)+
00040274 32e90002	move.w	2(a1),(a1)+
00040278 32e90002	move.w	2(a1),(a1)+
0004027c 32e90002	move.w	2(a1),(a1)+
00040280 32e90072	move.w	$72(a1),(a1)+
00040284 d2fc0070	adda.w	#$70,a1
00040288 32e90002	move.w	2(a1),(a1)+
0004028c 32e90002	move.w	2(a1),(a1)+
00040290 32e90002	move.w	2(a1),(a1)+
00040294 32e90002	move.w	2(a1),(a1)+
00040298 32e90002	move.w	2(a1),(a1)+
0004029c 32e90002	move.w	2(a1),(a1)+
000402a0 32e90002	move.w	2(a1),(a1)+
000402a4 32e90072	move.w	$72(a1),(a1)+
000402a8 d2fc0070	adda.w	#$70,a1
000402ac 32e90002	move.w	2(a1),(a1)+
000402b0 32e90002	move.w	2(a1),(a1)+
000402b4 32e90002	move.w	2(a1),(a1)+
000402b8 32e90002	move.w	2(a1),(a1)+
000402bc 32e90002	move.w	2(a1),(a1)+
000402c0 32e90002	move.w	2(a1),(a1)+
000402c4 32e90002	move.w	2(a1),(a1)+
000402c8 32c0	move.w	d0,(a1)+
000402ca 92fc0180	suba.w	#$180,a1
000402ce 51c9ff6e	dbf	d1,-
000402d2 4e75	rts	
000402d4 0c380007fe10	cmpi.b	#hill_top_zone,(Current_Zone).w
000402da 6610	bne.s	+
000402dc 610004e2	bsr.w	PatchHTZTiles
000402e0 11fc00fff7f1	move.b	#-1,(Anim_Counters+1).w
000402e6 31fcffffa820	move.w	#-1,(TempArray_LayerDef+$20).w
000402ec 0c38000dfe10	cmpi.b	#chemical_plant_zone,(Current_Zone).w
000402f2 6606	bne.s	+
000402f4 11fc00fff7f1	move.b	#-1,(Anim_Counters+1).w
000402fa 7000	moveq	#0,d0
000402fc 1038fe10	move.b	(Current_Zone).w,d0
00040300 d040	add.w	d0,d0
00040302 303b004c	move.w	AnimPatMaps(pc,d0.w),d0
00040306 41fb0048	lea	AnimPatMaps(pc,d0.w),a0
0004030a 4a78ffd8	tst.w	(Two_player_mode).w
0004030e 670e	beq.s	+
00040310 0c38000cfe10	cmpi.b	#casino_night_zone,(Current_Zone).w
00040316 6606	bne.s	+
00040318 41f9000406be	lea	(APM_CNZ2P).l,a0
0004031e 4a50	tst.w	(a0)
00040320 6714	beq.s	+
00040322 43f89000	lea	(Block_Table).w,a1
00040326 d2d8	adda.w	(a0)+,a1
00040328 3218	move.w	(a0)+,d1
0004032a 4a78ffd8	tst.w	(Two_player_mode).w
0004032e 6608	bne.s	LoadLevelBlocks_2P
00040330 32d8	move.w	(a0)+,(a1)+
00040332 51c9fffc	dbf	d1,LoadLevelBlocks
00040336 4e75	rts	
00040338 3018	move.w	(a0)+,d0
0004033a 3200	move.w	d0,d1
0004033c 0240f800	andi.w	#nontile_mask,d0
00040340 024107ff	andi.w	#tile_mask,d1
00040344 e249	lsr.w	#1,d1
00040346 8041	or.w	d1,d0
00040348 32c0	move.w	d0,(a1)+
0004034a 51c9ffec	dbf	d1,LoadLevelBlocks_2P
0004034e 4e75	rts	
000407c0 41f900049a14	lea	(ArtNem_HTZCliffs).l,a0
000407c6 49f8b800	lea	(Dynamic_Object_RAM_End-$1800).w,a4
000407ce 43f8b800	lea	(Dynamic_Object_RAM_End-$1800).w,a1
000407d6 7400	moveq	#0,d2
000407d8 7807	moveq	#8-1,d4
000407da 7605	moveq	#6-1,d3
000407dc 70ff	moveq	#-1,d0
000407de 301c	move.w	(a4)+,d0
000407e0 2440	movea.l	d0,a2
000407e2 721f	moveq	#32-1,d1
000407e4 24d1	move.l	(a1),(a2)+
000407e6 22c2	move.l	d2,(a1)+
000407e8 51c9fffa	dbf	d1,loc_407E4
000407ec 51cbffee	dbf	d3,loc_407DC
000407f0 d8fc000c	adda.w	#6*2,a4
000407f4 51ccffe4	dbf	d4,loc_407DA
000407f8 4e75	rts	
000407fa 4e71	nop	
000407fc 4ef9000014f0	jmp	(extractJmpToName("JmpTo2_NemDecToRAM")).l
00040804 4a78fe20	tst.w	(Ring_count).w
00040808 6716	beq.s	++
0004080a 7200	moveq	#0,d1
0004080c 08380003fe05	btst	#3,(Level_frame_counter+1).w
00040812 660a	bne.s	+
00040814 0c380009fe23	cmpi.b	#9,(Timer_minute).w
0004081a 6602	bne.s	+
0004081c 5441	addq.w	#2,d1
0004081e 6016	bra.s	++
00040820 7200	moveq	#0,d1
00040822 08380003fe05	btst	#3,(Level_frame_counter+1).w
00040828 660c	bne.s	+
0004082a 5241	addq.w	#1,d1
0004082c 0c380009fe23	cmpi.b	#9,(Timer_minute).w
00040832 6602	bne.s	+
00040834 5441	addq.w	#2,d1
00040836 363c0090	move.w	#spriteScreenPositionX(16),d3
0004083a 343c0108	move.w	#spriteScreenPositionYCentered(24),d2
0004083e 43f900040a9a	lea	(HUD_MapUnc_40A9A).l,a1
00040844 367c86ca	movea.w	#make_art_tile(ArtTile_ArtNem_HUD,0,1),a3
00040848 d241	add.w	d1,d1
0004084a d2f11000	adda.w	(a1,d1.w),a1
0004084e 3219	move.w	(a1)+,d1
00040850 5341	subq.w	#1,d1
00040852 6b04	bmi.s	+
00040858 4e75	rts	
0004085a 4a78fe20	tst.w	(Ring_count).w
0004085e 6716	beq.s	BuildHUD_P1_NoRings
00040860 7200	moveq	#0,d1
00040862 08380003fe05	btst	#3,(Level_frame_counter+1).w
00040868 660a	bne.s	+
0004086a 0c380009fe23	cmpi.b	#9,(Timer_minute).w
00040870 6602	bne.s	+
00040872 5441	addq.w	#2,d1
00040874 6016	bra.s	BuildHUD_P1_Continued
00040876 7200	moveq	#0,d1
00040878 08380003fe05	btst	#3,(Level_frame_counter+1).w
0004087e 660c	bne.s	BuildHUD_P1_Continued
00040880 5241	addq.w	#1,d1
00040882 0c380009fe23	cmpi.b	#9,(Timer_minute).w
00040888 6602	bne.s	BuildHUD_P1_Continued
0004088a 5441	addq.w	#2,d1
0004088c 363c0090	move.w	#spriteScreenPositionX(16),d3
00040890 343c0188	move.w	#spriteScreenPositionY2P(screen_height/2+24),d2
00040894 43f900040bea	lea	(HUD_MapUnc_40BEA).l,a1
0004089a 367c8365	movea.w	#make_art_tile_2p(ArtTile_Art_HUD_Text_2P,0,1),a3
0004089e d241	add.w	d1,d1
000408a0 d2f11000	adda.w	(a1,d1.w),a1
000408a4 3219	move.w	(a1)+,d1
000408a6 5341	subq.w	#1,d1
000408ac 363c00b8	move.w	#spriteScreenPositionX(56),d3
000408b0 343c0108	move.w	#spriteScreenPositionY2P(screen_height/2-104),d2
000408b4 367c8371	movea.w	#make_art_tile_2p(ArtTile_Art_HUD_Numbers_2P,0,1),a3
000408b8 7e00	moveq	#0,d7
000408ba 1e38fe23	move.b	(Timer_minute).w,d7
000408be 6100006e	bsr.w	sub_4092E
000408c2 610000a6	bsr.w	sub_4096A
000408c6 7e00	moveq	#0,d7
000408c8 1e38fe24	move.b	(Timer_second).w,d7
000408cc 6100006a	bsr.w	loc_40938
000408d0 363c00c0	move.w	#spriteScreenPositionX(64),d3
000408d4 343c0118	move.w	#spriteScreenPositionY2P(screen_height/2-88),d2
000408d8 367c8371	movea.w	#make_art_tile_2p(ArtTile_Art_HUD_Numbers_2P,0,1),a3
000408dc 7e00	moveq	#0,d7
000408de 3e38fe20	move.w	(Ring_count).w,d7
000408e2 610000a0	bsr.w	sub_40984
000408e6 4a38feca	tst.b	(Update_HUD_timer_2P).w
000408ea 661c	bne.s	+
000408ec 4a38fe1e	tst.b	(Update_HUD_timer).w
000408f0 6716	beq.s	+
000408f2 363c0110	move.w	#spriteScreenPositionX(144),d3
000408f6 343c01b8	move.w	#spriteScreenPositionY2P(screen_height/2+72),d2
000408fa 367c8371	movea.w	#make_art_tile_2p(ArtTile_Art_HUD_Numbers_2P,0,1),a3
000408fe 7e00	moveq	#0,d7
00040900 1e38fef8	move.b	(Loser_Time_Left).w,d7
00040904 61000032	bsr.w	loc_40938
00040908 7204	moveq	#4,d1
0004090a 363c0090	move.w	#spriteScreenPositionX(16),d3
0004090e 343c0188	move.w	#spriteScreenPositionY2P(screen_height/2+24),d2
00040912 43f900040bea	lea	(HUD_MapUnc_40BEA).l,a1
00040918 367c8365	movea.w	#make_art_tile_2p(ArtTile_Art_HUD_Text_2P,0,1),a3
0004091c d241	add.w	d1,d1
0004091e d2f11000	adda.w	(a1,d1.w),a1
00040922 3219	move.w	(a1)+,d1
00040924 5341	subq.w	#1,d1
0004092a 7800	moveq	#0,d4
0004092c 4e75	rts	
0004092e 49f900041210	lea	(Hud_1).l,a4
00040934 7c00	moveq	#Hud_1.loop_counter,d6
00040936 6008	bra.s	loc_40940
00040938 49f90004120c	lea	(Hud_10).l,a4
0004093e 7c01	moveq	#Hud_10.loop_counter,d6
00040940 7200	moveq	#0,d1
00040942 281c	move.l	(a4)+,d4
00040944 9e84	sub.l	d4,d7
00040946 6504	bcs.s	loc_4094C
00040948 5241	addq.w	#1,d1
0004094a 60f8	bra.s	loc_40944
0004094c de84	add.l	d4,d7
0004094e 43f900040c82	lea	(HUD_MapUnc_40C82).l,a1
00040954 d241	add.w	d1,d1
00040956 d2f11000	adda.w	(a1,d1.w),a1
0004095a 3219	move.w	(a1)+,d1
0004095c 5341	subq.w	#1,d1
00040962 5043	addq.w	#8,d3
00040964 51ceffda	dbf	d6,loc_40940
00040968 4e75	rts	
0004096a 720a	moveq	#$A,d1
0004096c 43f900040c82	lea	(HUD_MapUnc_40C82).l,a1
00040972 d241	add.w	d1,d1
00040974 d2f11000	adda.w	(a1,d1.w),a1
00040978 3219	move.w	(a1)+,d1
0004097a 5341	subq.w	#1,d1
00040980 5043	addq.w	#8,d3
00040982 4e75	rts	
00040984 49f900041208	lea	(Hud_100).l,a4
0004098a 7c02	moveq	#Hud_100.loop_counter,d6
0004098c 7200	moveq	#0,d1
0004098e 281c	move.l	(a4)+,d4
00040990 9e84	sub.l	d4,d7
00040992 6504	bcs.s	loc_40998
00040994 5241	addq.w	#1,d1
00040996 60f8	bra.s	loc_40990
00040998 de84	add.l	d4,d7
0004099a 4a46	tst.w	d6
0004099c 670c	beq.s	loc_409AA
0004099e 4a41	tst.w	d1
000409a0 6704	beq.s	loc_409A6
000409a2 08c6001f	bset	#$1F,d6
000409a6 4a86	tst.l	d6
000409a8 6a14	bpl.s	loc_409BE
000409aa 43f900040c82	lea	(HUD_MapUnc_40C82).l,a1
000409b0 d241	add.w	d1,d1
000409b2 d2f11000	adda.w	(a1,d1.w),a1
000409b6 3219	move.w	(a1)+,d1
000409b8 5341	subq.w	#1,d1
000409be 5043	addq.w	#8,d3
000409c0 51ceffca	dbf	d6,loc_4098C
000409c4 4e75	rts	
000409c6 4a78fed0	tst.w	(Ring_count_2P).w
000409ca 6716	beq.s	BuildHUD_P2_NoRings
000409cc 7200	moveq	#0,d1
000409ce 08380003fe05	btst	#3,(Level_frame_counter+1).w
000409d4 660a	bne.s	+
000409d6 0c380009fed3	cmpi.b	#9,(Timer_minute_2P).w
000409dc 6602	bne.s	+
000409de 5441	addq.w	#2,d1
000409e0 6016	bra.s	BuildHUD_P2_Continued
000409e2 7200	moveq	#0,d1
000409e4 08380003fe05	btst	#3,(Level_frame_counter+1).w
000409ea 660c	bne.s	BuildHUD_P2_Continued
000409ec 5241	addq.w	#1,d1
000409ee 0c380009fed3	cmpi.b	#9,(Timer_minute_2P).w
000409f4 6602	bne.s	BuildHUD_P2_Continued
000409f6 5441	addq.w	#2,d1
000409f8 363c0090	move.w	#spriteScreenPositionX(16),d3
000409fc 343c0268	move.w	#spriteScreenPositionY2P(screen_height/2+24)+screen_height,d2
00040a00 43f900040bea	lea	(HUD_MapUnc_40BEA).l,a1
00040a06 367c8365	movea.w	#make_art_tile_2p(ArtTile_Art_HUD_Text_2P,0,1),a3
00040a0a d241	add.w	d1,d1
00040a0c d2f11000	adda.w	(a1,d1.w),a1
00040a10 3219	move.w	(a1)+,d1
00040a12 5341	subq.w	#1,d1
00040a18 363c00b8	move.w	#spriteScreenPositionX(56),d3
00040a1c 343c01e8	move.w	#spriteScreenPositionY2P(screen_height/2-104)+screen_height,d2
00040a20 367c8371	movea.w	#make_art_tile_2p(ArtTile_Art_HUD_Numbers_2P,0,1),a3
00040a24 7e00	moveq	#0,d7
00040a26 1e38fed3	move.b	(Timer_minute_2P).w,d7
00040a2a 6100ff02	bsr.w	sub_4092E
00040a2e 6100ff3a	bsr.w	sub_4096A
00040a32 7e00	moveq	#0,d7
00040a34 1e38fed4	move.b	(Timer_second_2P).w,d7
00040a38 6100fefe	bsr.w	loc_40938
00040a3c 363c00c0	move.w	#spriteScreenPositionX(64),d3
00040a40 343c01f8	move.w	#spriteScreenPositionY2P(screen_height/2-88)+screen_height,d2
00040a44 367c8371	movea.w	#make_art_tile_2p(ArtTile_Art_HUD_Numbers_2P,0,1),a3
00040a48 7e00	moveq	#0,d7
00040a4a 3e38fed0	move.w	(Ring_count_2P).w,d7
00040a4e 6100ff34	bsr.w	sub_40984
00040a52 4a38fe1e	tst.b	(Update_HUD_timer).w
00040a56 661c	bne.s	+
00040a58 4a38feca	tst.b	(Update_HUD_timer_2P).w
00040a5c 6716	beq.s	+
00040a5e 363c0110	move.w	#spriteScreenPositionX(144),d3
00040a62 343c0298	move.w	#spriteScreenPositionY2P(screen_height/2+72)+screen_height,d2
00040a66 367c8371	movea.w	#make_art_tile_2p(ArtTile_Art_HUD_Numbers_2P,0,1),a3
00040a6a 7e00	moveq	#0,d7
00040a6c 1e38fef8	move.b	(Loser_Time_Left).w,d7
00040a70 6100fec6	bsr.w	loc_40938
00040a74 7205	moveq	#5,d1
00040a76 363c0090	move.w	#spriteScreenPositionX(16),d3
00040a7a 343c0268	move.w	#spriteScreenPositionY2P(screen_height/2+24)+screen_height,d2
00040a7e 43f900040bea	lea	(HUD_MapUnc_40BEA).l,a1
00040a84 367c8340	movea.w	#make_art_tile_2p(ArtTile_ArtNem_Powerups,0,1),a3
00040a88 d241	add.w	d1,d1
00040a8a d2f11000	adda.w	(a1,d1.w),a1
00040a8e 3219	move.w	(a1)+,d1
00040a90 5341	subq.w	#1,d1
00040a96 7800	moveq	#0,d4
00040a98 4e75	rts	
00040d06 11fc0001fe1f	move.b	#1,(Update_HUD_score).w
00040d0c 47f8fe26	lea	(Score).w,a3
00040d10 d193	add.l	d0,(a3)
00040d12 223c000f423f	move.l	#999999,d1
00040d18 b293	cmp.l	(a3),d1
00040d1a 6202	bhi.s	+
00040d1c 2681	move.l	d1,(a3)
00040d1e 2013	move.l	(a3),d0
00040d20 b0b8ffc0	cmp.l	(Next_Extra_life_score).w,d0
00040d24 651a	blo.s	+
00040d26 06b800001388ffc0	addi.l	#5000,(Next_Extra_life_score).w
00040d2e 5238fe12	addq.b	#1,(Life_count).w
00040d32 5238fe1c	addq.b	#1,(Update_HUD_lives).w
00040d36 303c0098	move.w	#MusID_ExtraLife,d0
00040d3a 4ef90000135e	jmp	(PlayMusic).l
00040d42 4a78ffd8	tst.w	(Two_player_mode).w
00040d46 67be	beq.s	AddPoints
00040d48 b6fcb000	cmpa.w	#MainCharacter,a3
00040d4c 67b8	beq.s	AddPoints
00040d4e 11fc0001fecb	move.b	#1,(Update_HUD_score_2P).w
00040d54 47f8fed6	lea	(Score_2P).w,a3
00040d58 d193	add.l	d0,(a3)
00040d5a 223c000f423f	move.l	#999999,d1
00040d60 b293	cmp.l	(a3),d1
00040d62 6202	bhi.s	+
00040d64 2681	move.l	d1,(a3)
00040d66 2013	move.l	(a3),d0
00040d68 b0b8ffc4	cmp.l	(Next_Extra_life_score_2P).w,d0
00040d6c 651a	blo.s	+
00040d6e 06b800001388ffc4	addi.l	#5000,(Next_Extra_life_score_2P).w
00040d76 5238fec6	addq.b	#1,(Life_count_2P).w
00040d7a 5238fec8	addq.b	#1,(Update_HUD_lives_2P).w
00040d7e 303c0098	move.w	#MusID_ExtraLife,d0
00040d82 4ef90000135e	jmp	(PlayMusic).l
00040d8a 4e71	nop	
00040d8c 4df900c00000	lea	(VDP_data_port).l,a6
00040d92 4a78ffd8	tst.w	(Two_player_mode).w
00040d96 660001b8	bne.w	loc_40F50
00040d9a 4a78fffa	tst.w	(Debug_mode_flag).w
00040d9e 660000fa	bne.w	loc_40E9A
00040da2 4a38fe1f	tst.b	(Update_HUD_score).w
00040da6 6712	beq.s	Hud_ChkRings
00040da8 4238fe1f	clr.b	(Update_HUD_score).w
00040dac 203c5c800003	move.l	#vdpComm(tiles_to_bytes(ArtTile_HUD_Score),VRAM,WRITE),d0
00040db2 2238fe26	move.l	(Score).w,d1
00040db6 6100038e	bsr.w	Hud_Score
00040dba 4a38fe1d	tst.b	(Update_HUD_rings).w
00040dbe 671a	beq.s	Hud_ChkTime
00040dc0 6a04	bpl.s	loc_40DC6
00040dc2 61000296	bsr.w	Hud_InitRings
00040dc6 4238fe1d	clr.b	(Update_HUD_rings).w
00040dca 203c5f400003	move.l	#vdpComm(tiles_to_bytes(ArtTile_HUD_Rings),VRAM,WRITE),d0
00040dd0 7200	moveq	#0,d1
00040dd2 3238fe20	move.w	(Ring_count).w,d1
00040dd6 61000364	bsr.w	Hud_Rings
00040dda 4a38fe1e	tst.b	(Update_HUD_timer).w
00040dde 6758	beq.s	Hud_ChkLives
00040de0 4a78f63a	tst.w	(Game_paused).w
00040de4 6652	bne.s	Hud_ChkLives
00040de6 43f8fe22	lea	(Timer).w,a1
00040dea 0c9900093b3b	cmpi.l	#(9<<(8*2))|(59<<(8*1))|(59<<(8*0)),(a1)+
00040df0 67000092	beq.w	loc_40E84
00040df4 5221	addq.b	#1,-(a1)
00040df6 0c11003c	cmpi.b	#60,(a1)
00040dfa 653c	blo.s	Hud_ChkLives
00040dfc 12bc0000	move.b	#0,(a1)
00040e00 5221	addq.b	#1,-(a1)
00040e02 0c11003c	cmpi.b	#60,(a1)
00040e06 6510	blo.s	+
00040e08 12bc0000	move.b	#0,(a1)
00040e0c 5221	addq.b	#1,-(a1)
00040e0e 0c110009	cmpi.b	#9,(a1)
00040e12 6504	blo.s	+
00040e14 12bc0009	move.b	#9,(a1)
00040e18 203c5e400003	move.l	#vdpComm(tiles_to_bytes(ArtTile_HUD_Minutes),VRAM,WRITE),d0
00040e1e 7200	moveq	#0,d1
00040e20 1238fe23	move.b	(Timer_minute).w,d1
00040e24 610003ee	bsr.w	Hud_Mins
00040e28 203c5ec00003	move.l	#vdpComm(tiles_to_bytes(ArtTile_HUD_Seconds),VRAM,WRITE),d0
00040e2e 7200	moveq	#0,d1
00040e30 1238fe24	move.b	(Timer_second).w,d1
00040e34 610003e6	bsr.w	Hud_Secs
00040e38 4a38fe1c	tst.b	(Update_HUD_lives).w
00040e3c 6708	beq.s	Hud_ChkBonus
00040e3e 4238fe1c	clr.b	(Update_HUD_lives).w
00040e42 6100049e	bsr.w	Hud_Lives
00040e46 4a38f7d6	tst.b	(Update_Bonus_score).w
00040e4a 6736	beq.s	Hud_End
00040e4c 4238f7d6	clr.b	(Update_Bonus_score).w
00040e50 23fc6400000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_HUD_Bonus_Score),VRAM,WRITE),(VDP_control_port).l
00040e5a 7200	moveq	#0,d1
00040e5c 3238ff8e	move.w	(Total_Bonus_Countdown).w,d1
00040e60 61000412	bsr.w	Hud_TimeRingBonus
00040e64 7200	moveq	#0,d1
00040e66 3238f7d2	move.w	(Bonus_Countdown_1).w,d1
00040e6a 61000408	bsr.w	Hud_TimeRingBonus
00040e6e 7200	moveq	#0,d1
00040e70 3238f7d4	move.w	(Bonus_Countdown_2).w,d1
00040e74 610003fe	bsr.w	Hud_TimeRingBonus
00040e78 7200	moveq	#0,d1
00040e7a 3238ff92	move.w	(Bonus_Countdown_3).w,d1
00040e7e 610003f4	bsr.w	Hud_TimeRingBonus
00040e82 4e75	rts	
00040e84 4238fe1e	clr.b	(Update_HUD_timer).w
00040e88 41f8b000	lea	(MainCharacter).w,a0
00040e8c 2448	movea.l	a0,a2
00040e8e 6100ea96	bsr.w	KillCharacter
00040e92 11fc0001fe1a	move.b	#1,(Time_Over_flag).w
00040e98 4e75	rts	
00040e9a 61000248	bsr.w	HudDb_XY
00040e9e 4a38fe1d	tst.b	(Update_HUD_rings).w
00040ea2 671a	beq.s	loc_40EBE
00040ea4 6a04	bpl.s	loc_40EAA
00040ea6 610001b2	bsr.w	Hud_InitRings
00040eaa 4238fe1d	clr.b	(Update_HUD_rings).w
00040eae 203c5f400003	move.l	#vdpComm(tiles_to_bytes(ArtTile_HUD_Rings),VRAM,WRITE),d0
00040eb4 7200	moveq	#0,d1
00040eb6 3238fe20	move.w	(Ring_count).w,d1
00040eba 61000280	bsr.w	Hud_Rings
00040ebe 203c5ec00003	move.l	#vdpComm(tiles_to_bytes(ArtTile_HUD_Seconds),VRAM,WRITE),d0
00040ec4 7200	moveq	#0,d1
00040ec6 1238f62c	move.b	(Sprite_count).w,d1
00040eca 61000350	bsr.w	Hud_Secs
00040ece 4a38fe1c	tst.b	(Update_HUD_lives).w
00040ed2 6708	beq.s	loc_40EDC
00040ed4 4238fe1c	clr.b	(Update_HUD_lives).w
00040ed8 61000408	bsr.w	Hud_Lives
00040edc 4a38f7d6	tst.b	(Update_Bonus_score).w
00040ee0 6736	beq.s	loc_40F18
00040ee2 4238f7d6	clr.b	(Update_Bonus_score).w
00040ee6 23fc6400000200c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_HUD_Bonus_Score),VRAM,WRITE),(VDP_control_port).l
00040ef0 7200	moveq	#0,d1
00040ef2 3238ff8e	move.w	(Total_Bonus_Countdown).w,d1
00040ef6 6100037c	bsr.w	Hud_TimeRingBonus
00040efa 7200	moveq	#0,d1
00040efc 3238f7d2	move.w	(Bonus_Countdown_1).w,d1
00040f00 61000372	bsr.w	Hud_TimeRingBonus
00040f04 7200	moveq	#0,d1
00040f06 3238f7d4	move.w	(Bonus_Countdown_2).w,d1
00040f0a 61000368	bsr.w	Hud_TimeRingBonus
00040f0e 7200	moveq	#0,d1
00040f10 3238ff92	move.w	(Bonus_Countdown_3).w,d1
00040f14 6100035e	bsr.w	Hud_TimeRingBonus
00040f18 4a78f63a	tst.w	(Game_paused).w
00040f1c 6630	bne.s	return_40F4E
00040f1e 43f8fe22	lea	(Timer).w,a1
00040f22 0c9900093b3b	cmpi.l	#(9<<(8*2))|(59<<(8*1))|(59<<(8*0)),(a1)+
00040f28 4e71	nop	
00040f2a 5221	addq.b	#1,-(a1)
00040f2c 0c11003c	cmpi.b	#60,(a1)
00040f30 651c	blo.s	return_40F4E
00040f32 12bc0000	move.b	#0,(a1)
00040f36 5221	addq.b	#1,-(a1)
00040f38 0c11003c	cmpi.b	#60,(a1)
00040f3c 6510	blo.s	return_40F4E
00040f3e 12bc0000	move.b	#0,(a1)
00040f42 5221	addq.b	#1,-(a1)
00040f44 0c110009	cmpi.b	#9,(a1)
00040f48 6504	blo.s	return_40F4E
00040f4a 12bc0009	move.b	#9,(a1)
00040f4e 4e75	rts	
00040f50 4a78f63a	tst.w	(Game_paused).w
00040f54 660000c4	bne.w	return_4101A
00040f58 4a38fe1e	tst.b	(Update_HUD_timer).w
00040f5c 6732	beq.s	loc_40F90
00040f5e 43f8fe22	lea	(Timer).w,a1
00040f62 0c9900093b3b	cmpi.l	#(9<<(8*2))|(59<<(8*1))|(59<<(8*0)),(a1)+
00040f68 670000c0	beq.w	TimeOver
00040f6c 5221	addq.b	#1,-(a1)
00040f6e 0c11003c	cmpi.b	#60,(a1)
00040f72 651c	blo.s	loc_40F90
00040f74 12bc0000	move.b	#0,(a1)
00040f78 5221	addq.b	#1,-(a1)
00040f7a 0c11003c	cmpi.b	#60,(a1)
00040f7e 6510	blo.s	loc_40F90
00040f80 12bc0000	move.b	#0,(a1)
00040f84 5221	addq.b	#1,-(a1)
00040f86 0c110009	cmpi.b	#9,(a1)
00040f8a 6504	blo.s	loc_40F90
00040f8c 12bc0009	move.b	#9,(a1)
00040f90 4a38feca	tst.b	(Update_HUD_timer_2P).w
00040f94 6732	beq.s	loc_40FC8
00040f96 43f8fed2	lea	(Timer_2P).w,a1
00040f9a 0c9900093b3b	cmpi.l	#(9<<(8*2))|(59<<(8*1))|(59<<(8*0)),(a1)+
00040fa0 670000a2	beq.w	TimeOver2
00040fa4 5221	addq.b	#1,-(a1)
00040fa6 0c11003c	cmpi.b	#60,(a1)
00040faa 651c	blo.s	loc_40FC8
00040fac 12bc0000	move.b	#0,(a1)
00040fb0 5221	addq.b	#1,-(a1)
00040fb2 0c11003c	cmpi.b	#60,(a1)
00040fb6 6510	blo.s	loc_40FC8
00040fb8 12bc0000	move.b	#0,(a1)
00040fbc 5221	addq.b	#1,-(a1)
00040fbe 0c110009	cmpi.b	#9,(a1)
00040fc2 6504	blo.s	loc_40FC8
00040fc4 12bc0009	move.b	#9,(a1)
00040fc8 4a38fe1c	tst.b	(Update_HUD_lives).w
00040fcc 6708	beq.s	loc_40FD6
00040fce 4238fe1c	clr.b	(Update_HUD_lives).w
00040fd2 6100030e	bsr.w	Hud_Lives
00040fd6 4a38fec8	tst.b	(Update_HUD_lives_2P).w
00040fda 6708	beq.s	loc_40FE4
00040fdc 4238fec8	clr.b	(Update_HUD_lives_2P).w
00040fe0 610002f2	bsr.w	Hud_Lives2
00040fe4 1038fe1e	move.b	(Update_HUD_timer).w,d0
00040fe8 8038feca	or.b	(Update_HUD_timer_2P).w,d0
00040fec 672c	beq.s	return_4101A
00040fee 43f8fef8	lea	(Loser_Time_Left).w,a1
00040ff2 4a59	tst.w	(a1)+
00040ff4 6724	beq.s	return_4101A
00040ff6 5321	subq.b	#1,-(a1)
00040ff8 6220	bhi.s	return_4101A
00040ffa 12bc003c	move.b	#60,(a1)
00040ffe 0c29000cffff	cmpi.b	#12,-1(a1)
00041004 660a	bne.s	loc_41010
00041006 303c009f	move.w	#MusID_Countdown,d0
0004100a 4eb90000135e	jsr	(PlayMusic).l
00041010 5321	subq.b	#1,-(a1)
00041012 6406	bcc.s	return_4101A
00041014 32bc0000	move.w	#0,(a1)
00041018 6102	bsr.s	TimeOver0
0004101a 4e75	rts	
0004101c 4a38fe1e	tst.b	(Update_HUD_timer).w
00041020 6608	bne.s	TimeOver
00041022 4a38feca	tst.b	(Update_HUD_timer_2P).w
00041026 661c	bne.s	TimeOver2
00041028 4e75	rts	
0004102a 4238fe1e	clr.b	(Update_HUD_timer).w
0004102e 41f8b000	lea	(MainCharacter).w,a0
00041032 2448	movea.l	a0,a2
00041034 6100e8f0	bsr.w	KillCharacter
00041038 11fc0001fe1a	move.b	#1,(Time_Over_flag).w
0004103e 4a38feca	tst.b	(Update_HUD_timer_2P).w
00041042 6714	beq.s	+
00041044 4238feca	clr.b	(Update_HUD_timer_2P).w
00041048 41f8b040	lea	(Sidekick).w,a0
0004104c 2448	movea.l	a0,a2
0004104e 6100e8d6	bsr.w	KillCharacter
00041052 11fc0001fecc	move.b	#1,(Time_Over_flag_2P).w
00041058 4e75	rts	
0004105a 23fc5f40000300c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_HUD_Rings),VRAM,WRITE),(VDP_control_port).l
00041064 45fa007a	lea	Hud_TilesRings(pc),a2
00041068 343c0002	move.w	#(Hud_TilesBase_End-Hud_TilesRings)-1,d2
0004106c 6022	bra.s	loc_41090
0004106e 4df900c00000	lea	(VDP_data_port).l,a6
00041074 6100026c	bsr.w	Hud_Lives
00041078 4a78ffd8	tst.w	(Two_player_mode).w
0004107c 663e	bne.s	loc_410BC
0004107e 23fc5c40000300c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_HUD_Score_E),VRAM,WRITE),(VDP_control_port).l
00041088 45fa004a	lea	Hud_TilesBase(pc),a2
0004108c 343c000e	move.w	#(Hud_TilesBase_End-Hud_TilesBase)-1,d2
00041090 43fa02ba	lea	Art_Hud(pc),a1
00041094 323c000f	move.w	#bytesToLcnt(tiles_to_bytes(hud_letter_num_tiles)),d1
00041098 101a	move.b	(a2)+,d0
0004109a 6b14	bmi.s	loc_410B0
0004109c 4880	ext.w	d0
0004109e eb48	lsl.w	#5,d0
000410a0 47f10000	lea	(a1,d0.w),a3
000410a4 2c9b	move.l	(a3)+,(a6)
000410a6 51c9fffc	dbf	d1,loc_410A4
000410aa 51caffe8	dbf	d2,loc_41094
000410ae 4e75	rts	
000410b0 2cbc00000000	move.l	#0,(a6)
000410b6 51c9fff8	dbf	d1,loc_410B0
000410ba 60ee	bra.s	loc_410AA
000410bc 61000216	bsr.w	Hud_Lives2
000410c0 223c0004134c	move.l	#Art_Hud,d1
000410c6 343cdc40	move.w	#tiles_to_bytes(ArtTile_Art_HUD_Numbers_2P),d2
000410ca 363c0160	move.w	#tiles_to_words(22),d3
000410ce 4ef90000144e	jmp	(QueueDMATransfer).l
000410e4 23fc5c40000300c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_HUD_Score_E),VRAM,WRITE),(VDP_control_port).l
000410ee 3238ee00	move.w	(Camera_X_pos).w,d1
000410f2 4841	swap	d1
000410f4 3238b008	move.w	(MainCharacter+x_pos).w,d1
000410f8 610a	bsr.s	HudDb_XY2
000410fa 3238ee04	move.w	(Camera_Y_pos).w,d1
000410fe 4841	swap	d1
00041100 3238b00c	move.w	(MainCharacter+y_pos).w,d1
00041104 7c07	moveq	#8-1,d6
00041106 43f90004178c	lea	(Art_Text).l,a1
0004110c e959	rol.w	#4,d1
0004110e 3401	move.w	d1,d2
00041110 0242000f	andi.w	#$F,d2
00041114 0c42000a	cmpi.w	#$A,d2
00041118 6504	blo.s	loc_4111E
0004111e eb4a	lsl.w	#5,d2
00041120 47f12000	lea	(a1,d2.w),a3
00041124 2c9b	move.l	(a3)+,(a6)
00041126 2c9b	move.l	(a3)+,(a6)
00041128 2c9b	move.l	(a3)+,(a6)
0004112a 2c9b	move.l	(a3)+,(a6)
0004112c 2c9b	move.l	(a3)+,(a6)
0004112e 2c9b	move.l	(a3)+,(a6)
00041130 2c9b	move.l	(a3)+,(a6)
00041132 2c9b	move.l	(a3)+,(a6)
00041134 4841	swap	d1
00041136 51ceffd4	dbf	d6,HudDb_XYLoop
0004113a 4e75	rts	
0004113c 45f900041208	lea	(Hud_100).l,a2
00041142 7c02	moveq	#Hud_100.loop_counter,d6
00041144 6008	bra.s	Hud_LoadArt
00041146 45f9000411fc	lea	(Hud_100000).l,a2
0004114c 7c05	moveq	#Hud_100000.loop_counter,d6
0004114e 7800	moveq	#0,d4
00041150 43fa01fa	lea	Art_Hud(pc),a1
00041154 7400	moveq	#0,d2
00041156 261a	move.l	(a2)+,d3
00041158 9283	sub.l	d3,d1
0004115a 6504	bcs.s	loc_41160
0004115c 5242	addq.w	#1,d2
0004115e 60f8	bra.s	loc_41158
00041160 d283	add.l	d3,d1
00041162 4a42	tst.w	d2
00041164 6704	beq.s	loc_4116A
00041166 383c0001	move.w	#1,d4
0004116a 4a44	tst.w	d4
0004116c 672a	beq.s	loc_41198
0004116e ed4a	lsl.w	#6,d2
00041170 2d400004	move.l	d0,4(a6)
00041174 47f12000	lea	(a1,d2.w),a3
00041178 2c9b	move.l	(a3)+,(a6)
0004117a 2c9b	move.l	(a3)+,(a6)
0004117c 2c9b	move.l	(a3)+,(a6)
0004117e 2c9b	move.l	(a3)+,(a6)
00041180 2c9b	move.l	(a3)+,(a6)
00041182 2c9b	move.l	(a3)+,(a6)
00041184 2c9b	move.l	(a3)+,(a6)
00041186 2c9b	move.l	(a3)+,(a6)
00041188 2c9b	move.l	(a3)+,(a6)
0004118a 2c9b	move.l	(a3)+,(a6)
0004118c 2c9b	move.l	(a3)+,(a6)
0004118e 2c9b	move.l	(a3)+,(a6)
00041190 2c9b	move.l	(a3)+,(a6)
00041192 2c9b	move.l	(a3)+,(a6)
00041194 2c9b	move.l	(a3)+,(a6)
00041196 2c9b	move.l	(a3)+,(a6)
00041198 068000400000	addi.l	#hud_letter_vdp_delta,d0
0004119e 51ceffb4	dbf	d6,Hud_ScoreLoop
000411a2 4e75	rts	
000411a4 23fc5f80000300c00004	move.l	#vdpComm(tiles_to_bytes(ArtTile_ContinueCountdown),VRAM,WRITE),(VDP_control_port).l
000411ae 4df900c00000	lea	(VDP_data_port).l,a6
000411b4 45f90004120c	lea	(Hud_10).l,a2
000411ba 7c01	moveq	#Hud_10.loop_counter,d6
000411bc 7800	moveq	#0,d4
000411be 43fa018c	lea	Art_Hud(pc),a1
000411c2 7400	moveq	#0,d2
000411c4 261a	move.l	(a2)+,d3
000411c6 9283	sub.l	d3,d1
000411c8 6504	bcs.s	loc_411CE
000411ca 5242	addq.w	#1,d2
000411cc 60f8	bra.s	loc_411C6
000411ce d283	add.l	d3,d1
000411d0 ed4a	lsl.w	#6,d2
000411d2 47f12000	lea	(a1,d2.w),a3
000411d6 2c9b	move.l	(a3)+,(a6)
000411d8 2c9b	move.l	(a3)+,(a6)
000411da 2c9b	move.l	(a3)+,(a6)
000411dc 2c9b	move.l	(a3)+,(a6)
000411de 2c9b	move.l	(a3)+,(a6)
000411e0 2c9b	move.l	(a3)+,(a6)
000411e2 2c9b	move.l	(a3)+,(a6)
000411e4 2c9b	move.l	(a3)+,(a6)
000411e6 2c9b	move.l	(a3)+,(a6)
000411e8 2c9b	move.l	(a3)+,(a6)
000411ea 2c9b	move.l	(a3)+,(a6)
000411ec 2c9b	move.l	(a3)+,(a6)
000411ee 2c9b	move.l	(a3)+,(a6)
000411f0 2c9b	move.l	(a3)+,(a6)
000411f2 2c9b	move.l	(a3)+,(a6)
000411f4 2c9b	move.l	(a3)+,(a6)
000411f6 51ceffca	dbf	d6,ContScr_Loop
000411fa 4e75	rts	
00041218 7c00	moveq	#Hud_1.loop_counter,d6
0004121a 6006	bra.s	loc_41222
00041220 7c01	moveq	#Hud_10.loop_counter,d6
00041222 7800	moveq	#0,d4
00041224 43fa0126	lea	Art_Hud(pc),a1
00041228 7400	moveq	#0,d2
0004122a 261a	move.l	(a2)+,d3
0004122c 9283	sub.l	d3,d1
0004122e 6504	bcs.s	loc_41234
00041230 5242	addq.w	#1,d2
00041232 60f8	bra.s	loc_4122C
00041234 d283	add.l	d3,d1
00041236 4a42	tst.w	d2
00041238 6704	beq.s	loc_4123E
0004123a 383c0001	move.w	#1,d4
0004123e ed4a	lsl.w	#6,d2
00041240 2d400004	move.l	d0,4(a6)
00041244 47f12000	lea	(a1,d2.w),a3
00041248 2c9b	move.l	(a3)+,(a6)
0004124a 2c9b	move.l	(a3)+,(a6)
0004124c 2c9b	move.l	(a3)+,(a6)
0004124e 2c9b	move.l	(a3)+,(a6)
00041250 2c9b	move.l	(a3)+,(a6)
00041252 2c9b	move.l	(a3)+,(a6)
00041254 2c9b	move.l	(a3)+,(a6)
00041256 2c9b	move.l	(a3)+,(a6)
00041258 2c9b	move.l	(a3)+,(a6)
0004125a 2c9b	move.l	(a3)+,(a6)
0004125c 2c9b	move.l	(a3)+,(a6)
0004125e 2c9b	move.l	(a3)+,(a6)
00041260 2c9b	move.l	(a3)+,(a6)
00041262 2c9b	move.l	(a3)+,(a6)
00041264 2c9b	move.l	(a3)+,(a6)
00041266 2c9b	move.l	(a3)+,(a6)
00041268 068000400000	addi.l	#hud_letter_vdp_delta,d0
0004126e 51ceffb8	dbf	d6,Hud_TimeLoop
00041272 4e75	rts	
00041278 7c03	moveq	#Hud_1000.loop_counter,d6
0004127a 7800	moveq	#0,d4
0004127c 43fa00ce	lea	Art_Hud(pc),a1
00041280 7400	moveq	#0,d2
00041282 261a	move.l	(a2)+,d3
00041284 9283	sub.l	d3,d1
00041286 6504	bcs.s	loc_4128C
00041288 5242	addq.w	#1,d2
0004128a 60f8	bra.s	loc_41284
0004128c d283	add.l	d3,d1
0004128e 4a42	tst.w	d2
00041290 6704	beq.s	loc_41296
00041292 383c0001	move.w	#1,d4
00041296 4a44	tst.w	d4
00041298 672c	beq.s	Hud_ClrBonus
0004129a ed4a	lsl.w	#6,d2
0004129c 47f12000	lea	(a1,d2.w),a3
000412a0 2c9b	move.l	(a3)+,(a6)
000412a2 2c9b	move.l	(a3)+,(a6)
000412a4 2c9b	move.l	(a3)+,(a6)
000412a6 2c9b	move.l	(a3)+,(a6)
000412a8 2c9b	move.l	(a3)+,(a6)
000412aa 2c9b	move.l	(a3)+,(a6)
000412ac 2c9b	move.l	(a3)+,(a6)
000412ae 2c9b	move.l	(a3)+,(a6)
000412b0 2c9b	move.l	(a3)+,(a6)
000412b2 2c9b	move.l	(a3)+,(a6)
000412b4 2c9b	move.l	(a3)+,(a6)
000412b6 2c9b	move.l	(a3)+,(a6)
000412b8 2c9b	move.l	(a3)+,(a6)
000412ba 2c9b	move.l	(a3)+,(a6)
000412bc 2c9b	move.l	(a3)+,(a6)
000412be 2c9b	move.l	(a3)+,(a6)
000412c0 51ceffbe	dbf	d6,Hud_BonusLoop
000412c4 4e75	rts	
000412c6 7a0f	moveq	#bytesToLcnt(tiles_to_bytes(hud_letter_num_tiles)),d5
000412c8 2cbc00000000	move.l	#0,(a6)
000412ce 51cdfff8	dbf	d5,Hud_ClrBonusLoop
000412d2 60ec	bra.s	loc_412C0
000412d4 203c5fa00003	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_2p_life_counter_lives),VRAM,WRITE),d0
000412da 7200	moveq	#0,d1
000412dc 1238fec6	move.b	(Life_count_2P).w,d1
000412e0 600c	bra.s	loc_412EE
000412e2 203c7ba00003	move.l	#vdpComm(tiles_to_bytes(ArtTile_ArtNem_life_counter_lives),VRAM,WRITE),d0
000412e8 7200	moveq	#0,d1
000412ea 1238fe12	move.b	(Life_count).w,d1
000412f2 7c01	moveq	#Hud_10.loop_counter,d6
000412f4 7800	moveq	#0,d4
000412f6 43fa0354	lea	Art_LivesNums(pc),a1
000412fa 2d400004	move.l	d0,4(a6)
000412fe 7400	moveq	#0,d2
00041300 261a	move.l	(a2)+,d3
00041304 6504	bcs.s	loc_4130A
00041306 5242	addq.w	#1,d2
00041308 60f8	bra.s	-
0004130a d283	add.l	d3,d1
0004130c 4a42	tst.w	d2
0004130e 6704	beq.s	loc_41314
00041310 383c0001	move.w	#1,d4
00041314 4a44	tst.w	d4
00041316 6722	beq.s	Hud_ClrLives
00041318 eb4a	lsl.w	#5,d2
0004131a 47f12000	lea	(a1,d2.w),a3
0004131e 2c9b	move.l	(a3)+,(a6)
00041320 2c9b	move.l	(a3)+,(a6)
00041322 2c9b	move.l	(a3)+,(a6)
00041324 2c9b	move.l	(a3)+,(a6)
00041326 2c9b	move.l	(a3)+,(a6)
00041328 2c9b	move.l	(a3)+,(a6)
0004132a 2c9b	move.l	(a3)+,(a6)
0004132c 2c9b	move.l	(a3)+,(a6)
0004132e 068000400000	addi.l	#hud_letter_vdp_delta,d0
00041334 51ceffc4	dbf	d6,Hud_LivesLoop
00041338 4e75	rts	
0004133a 4a46	tst.w	d6
0004133c 67da	beq.s	loc_41318
0004133e 7a07	moveq	#7,d5
00041340 2cbc00000000	move.l	#0,(a6)
00041346 51cdfff8	dbf	d5,Hud_ClrLivesLoop
0004134a 60e2	bra.s	loc_4132E
00041a6c 4ef900016dc6	jmp	(extractJmpToName("JmpTo_DrawSprite_2P_Loop")).l
00041a72 4ef90001682a	jmp	(extractJmpToName("JmpTo_DrawSprite_Loop")).l
00041a78 7000	moveq	#0,d0
00041a7a 1038fe08	move.b	(Debug_placement_mode).w,d0
00041a7e 323b0006	move.w	Debug_Index(pc,d0.w),d1
00041a82 4efb1002	jmp	Debug_Index(pc,d1.w)
00041a8a 5438fe08	addq.b	#2,(Debug_placement_mode).w
00041a8e 31f8eeccffcc	move.w	(Camera_Min_Y_pos).w,(Camera_Min_Y_pos_Debug_Copy).w
00041a94 31f8eec6ffce	move.w	(Camera_Max_Y_pos_target).w,(Camera_Max_Y_pos_Debug_Copy).w
00041a9a 0c380010fe10	cmpi.b	#sky_chase_zone,(Current_Zone).w
00041aa0 660c	bne.s	+
00041aa2 31fc0000eec8	move.w	#0,(Camera_Min_X_pos).w
00041aa8 31fc3fffeeca	move.w	#$3FFF,(Camera_Max_X_pos).w
00041aae 027807ffb00c	andi.w	#$7FF,(MainCharacter+y_pos).w
00041ab4 027807ffee04	andi.w	#$7FF,(Camera_Y_pos).w
00041aba 027807ffee0c	andi.w	#$7FF,(Camera_BG_Y_pos).w
00041ac0 4238eebe	clr.b	(Scroll_lock).w
00041ac4 117c0000001a	move.b	#0,mapping_frame(a0)
00041aca 117c0000001c	move.b	#AniIDSonAni_Walk,anim(a0)
00041ad0 0c380010f600	cmpi.b	#GameModeID_SpecialStage,(Game_Mode).w
00041ad6 6604	bne.s	.islevel
00041ad8 7006	moveq	#6,d0
00041ada 6006	bra.s	.selectlist
00041adc 7000	moveq	#0,d0
00041ade 1038fe10	move.b	(Current_Zone).w,d0
00041ae2 45f900041d0c	lea	(DebugObjectLists).l,a2
00041ae8 d040	add.w	d0,d0
00041aea d4f20000	adda.w	(a2,d0.w),a2
00041aee 3c1a	move.w	(a2)+,d6
00041af0 bc38fe06	cmp.b	(Debug_object).w,d6
00041af4 6206	bhi.s	+
00041af6 11fc0000fe06	move.b	#0,(Debug_object).w
00041afc 610001ee	bsr.w	LoadDebugObjectSprite
00041b00 11fc000cfe0a	move.b	#$C,(Debug_Accel_Timer).w
00041b06 11fc0001fe0b	move.b	#1,(Debug_Speed).w
00041b0c 7006	moveq	#6,d0
00041b0e 0c380010f600	cmpi.b	#GameModeID_SpecialStage,(Game_Mode).w
00041b14 6706	beq.s	.isntlevel
00041b16 7000	moveq	#0,d0
00041b18 1038fe10	move.b	(Current_Zone).w,d0
00041b1c 45f900041d0c	lea	(DebugObjectLists).l,a2
00041b22 d040	add.w	d0,d0
00041b24 d4f20000	adda.w	(a2,d0.w),a2
00041b28 3c1a	move.w	(a2)+,d6
00041b2a 61000008	bsr.w	Debug_Control
00041b2e 4ef9000164f4	jmp	(DisplaySprite).l
00041b34 7800	moveq	#0,d4
00041b36 323c0001	move.w	#1,d1
00041b3a 1838f605	move.b	(Ctrl_1_Press).w,d4
00041b3e 0244000f	andi.w	#button_up_mask|button_down_mask|button_left_mask|button_right_mask,d4
00041b42 6632	bne.s	Debug_Move
00041b44 1038f604	move.b	(Ctrl_1_Held).w,d0
00041b48 0240000f	andi.w	#button_up_mask|button_down_mask|button_left_mask|button_right_mask,d0
00041b4c 6610	bne.s	Debug_ContinueMoving
00041b4e 11fc000cfe0a	move.b	#$C,(Debug_Accel_Timer).w
00041b54 11fc000ffe0b	move.b	#$F,(Debug_Speed).w
00041b5a 6000007e	bra.w	Debug_ControlObjects
00041b5e 5338fe0a	subq.b	#1,(Debug_Accel_Timer).w
00041b62 6616	bne.s	Debug_TimerNotOver
00041b64 11fc0001fe0a	move.b	#1,(Debug_Accel_Timer).w
00041b6a 5238fe0b	addq.b	#1,(Debug_Speed).w
00041b6e 6606	bne.s	Debug_Move
00041b70 11fc00fffe0b	move.b	#-1,(Debug_Speed).w
00041b76 1838f604	move.b	(Ctrl_1_Held).w,d4
00041b7a 7200	moveq	#0,d1
00041b7c 1238fe0b	move.b	(Debug_Speed).w,d1
00041b80 5241	addq.w	#1,d1
00041b82 4841	swap	d1
00041b84 e881	asr.l	#4,d1
00041b86 2428000c	move.l	y_pos(a0),d2
00041b8a 26280008	move.l	x_pos(a0),d3
00041b8e 08040000	btst	#button_up,d4
00041b92 6710	beq.s	.upNotHeld
00041b94 9481	sub.l	d1,d2
00041b96 7000	moveq	#0,d0
00041b98 3038eecc	move.w	(Camera_Min_Y_pos).w,d0
00041b9c 4840	swap	d0
00041b9e b480	cmp.l	d0,d2
00041ba0 6c02	bge.s	.minYPosNotReached
00041ba2 2400	move.l	d0,d2
00041ba4 08040001	btst	#button_down,d4
00041ba8 6714	beq.s	.downNotHeld
00041baa d481	add.l	d1,d2
00041bac 7000	moveq	#0,d0
00041bae 3038eec6	move.w	(Camera_Max_Y_pos_target).w,d0
00041bb2 064000df	addi.w	#screen_height-1,d0
00041bb6 4840	swap	d0
00041bb8 b480	cmp.l	d0,d2
00041bba 6d02	blt.s	.maxYPosNotReached
00041bbc 2400	move.l	d0,d2
00041bbe 08040002	btst	#button_left,d4
00041bc2 6706	beq.s	.leftNotHeld
00041bc4 9681	sub.l	d1,d3
00041bc6 6402	bcc.s	.minXPosNotReached
00041bc8 7600	moveq	#0,d3
00041bca 08040003	btst	#button_right,d4
00041bce 6702	beq.s	.rightNotHeld
00041bd0 d681	add.l	d1,d3
00041bd2 2142000c	move.l	d2,y_pos(a0)
00041bd6 21430008	move.l	d3,x_pos(a0)
00041bda 08380006f604	btst	#button_A,(Ctrl_1_Held).w
00041be0 6730	beq.s	Debug_SpawnObject
00041be2 08380005f605	btst	#button_C,(Ctrl_1_Press).w
00041be8 670c	beq.s	Debug_CycleObjects
00041bea 5338fe06	subq.b	#1,(Debug_object).w
00041bee 641e	bcc.s	BranchTo_LoadDebugObjectSprite
00041bf0 dd38fe06	add.b	d6,(Debug_object).w
00041bf4 6018	bra.s	BranchTo_LoadDebugObjectSprite
00041bf6 08380006f605	btst	#button_A,(Ctrl_1_Press).w
00041bfc 6714	beq.s	Debug_SpawnObject
00041bfe 5238fe06	addq.b	#1,(Debug_object).w
00041c02 bc38fe06	cmp.b	(Debug_object).w,d6
00041c06 6206	bhi.s	BranchTo_LoadDebugObjectSprite
00041c08 11fc0000fe06	move.b	#0,(Debug_object).w
00041c0e 600000dc	bra.w	LoadDebugObjectSprite
00041c12 08380005f605	btst	#button_C,(Ctrl_1_Press).w
00041c18 673c	beq.s	Debug_ExitDebugMode
00041c1a 4eb900017fda	jsr	(AllocateObject).l
00041c20 6634	bne.s	Debug_ExitDebugMode
00041c22 336800080008	move.w	x_pos(a0),x_pos(a1)
00041c28 3368000c000c	move.w	y_pos(a0),y_pos(a1)
00041c34 136800010001	move.b	render_flags(a0),render_flags(a1)
00041c3a 136800010022	move.b	render_flags(a0),status(a1)
00041c40 0229007f0022	andi.b	#~(1<<status.npc.no_balancing)&$FF,status(a1)
00041c46 7000	moveq	#0,d0
00041c48 1038fe06	move.b	(Debug_object).w,d0
00041c4c e748	lsl.w	#3,d0
00041c4e 137200040028	move.b	4(a2,d0.w),subtype(a1)
00041c54 4e75	rts	
00041c56 08380004f605	btst	#button_B,(Ctrl_1_Press).w
00041c5c 6758	beq.s	return_41CB6
00041c5e 7000	moveq	#0,d0
00041c60 31c0fe08	move.w	d0,(Debug_placement_mode).w
00041c64 43f8b000	lea	(MainCharacter).w,a1
00041c68 237c0006fbe00004	move.l	#MapUnc_Sonic,mappings(a1)
00041c70 337c07800002	move.w	#make_art_tile(ArtTile_ArtUnc_Sonic,0,0),art_tile(a1)
00041c76 4a78ffd8	tst.w	(Two_player_mode).w
00041c7a 6706	beq.s	.notTwoPlayerMode
00041c7c 337c03c00002	move.w	#make_art_tile_2p(ArtTile_ArtUnc_Sonic,0,0),art_tile(a1)
00041c82 6134	bsr.s	Debug_ResetPlayerStats
00041c84 137c00130016	move.b	#$13,y_radius(a1)
00041c8a 137c00090017	move.b	#9,x_radius(a1)
00041c90 31f8ffcceecc	move.w	(Camera_Min_Y_pos_Debug_Copy).w,(Camera_Min_Y_pos).w
00041c96 31f8ffceeec6	move.w	(Camera_Max_Y_pos_Debug_Copy).w,(Camera_Max_Y_pos_target).w
00041c9c 0c380010f600	cmpi.b	#GameModeID_SpecialStage,(Game_Mode).w
00041ca2 6612	bne.s	return_41CB6
00041ca4 11fc0002b01c	move.b	#AniIDSonAni_Roll,(MainCharacter+anim).w
00041caa 08f80002b022	bset	#status.player.rolling,(MainCharacter+status).w
00041cb0 08f80001b022	bset	#status.player.in_air,(MainCharacter+status).w
00041cb6 4e75	rts	
00041cb8 1340001c	move.b	d0,anim(a1)
00041cbc 3340000a	move.w	d0,x_sub(a1)
00041cc0 3340000e	move.w	d0,y_sub(a1)
00041cc4 1340002a	move.b	d0,obj_control(a1)
00041cc8 13400039	move.b	d0,spindash_flag(a1)
00041ccc 33400010	move.w	d0,x_vel(a1)
00041cd0 33400012	move.w	d0,y_vel(a1)
00041cd4 33400014	move.w	d0,inertia(a1)
00041cd8 137c00020022	move.b	#1<<status.player.in_air,status(a1)
00041cde 137c00020024	move.b	#2,routine(a1)
00041ce4 137c00000025	move.b	#0,routine_secondary(a1)
00041cea 4e75	rts	
00041cec 7000	moveq	#0,d0
00041cee 1038fe06	move.b	(Debug_object).w,d0
00041cf2 e748	lsl.w	#3,d0
00041cf4 217200000004	move.l	(a2,d0.w),mappings(a0)
00041cfa 317200060002	move.w	6(a2,d0.w),art_tile(a0)
00041d00 11720005001a	move.b	5(a2,d0.w),mapping_frame(a0)
00041d0a 4e75	rts	
0004258c 4ef900016d6e	jmp	(extractJmpToName("JmpTo66_Adjust2PArtPointer")).l
000ec000 40e7	move	sr,-(sp)
000ec002 48e7fffe	movem.l	d0-a6,-(sp)
000ec006 46fc2700	move	#$2700,sr
000ec00a 47f900a11100	lea	(Z80_Bus_Request).l,a3
000ec010 45f900a11200	lea	(Z80_Reset).l,a2
000ec016 7400	moveq	#0,d2
000ec018 323c0100	move.w	#$100,d1
000ec01c 3681	move.w	d1,(a3)
000ec01e 3481	move.w	d1,(a2)
000ec022 66fc	bne.s	-
000ec024 4eba0024	jsr	DecompressSoundDriver(pc)
000ec028 0839000000c00005	btst	#0,(VDP_control_port+1).l
000ec030 56f900a00007	sne	(Z80_RAM+zPalModeByte).l
000ec036 3482	move.w	d2,(a2)
000ec038 3682	move.w	d2,(a3)
000ec03a 70e6	moveq	#signextendB($E6),d0
000ec040 3481	move.w	d1,(a2)
000ec042 4cdf7fff	movem.l	(sp)+,d0-a6
000ec046 46df	move	(sp)+,sr
000ec048 4e75	rts	
000ec04a 4dfa009c	lea	Snd_Driver(pc),a6
000ec04e 3e3c0f64	move.w	#Snd_Driver_End-Snd_Driver,d7
000ec052 7c00	moveq	#0,d6
000ec054 4bf900a00000	lea	(Z80_RAM).l,a5
000ec05a 7a00	moveq	#0,d5
000ec05c 49f900a00000	lea	(Z80_RAM).l,a4
000ec062 e24e	lsr.w	#1,d6
000ec064 08060008	btst	#8,d6
000ec068 660a	bne.s	+
000ec06a 4eba0072	jsr	SaxDec_GetByte(pc)
000ec06e 1c00	move.b	d0,d6
000ec070 0046ff00	ori.w	#$FF00,d6
000ec074 08060000	btst	#0,d6
000ec078 670c	beq.s	SaxDec_ReadCompressed
000ec07a 4eba0062	jsr	SaxDec_GetByte(pc)
000ec07e 1ac0	move.b	d0,(a5)+
000ec080 5245	addq.w	#1,d5
000ec082 6000ffde	bra.w	SaxDec_Loop
000ec086 4eba0056	jsr	SaxDec_GetByte(pc)
000ec08a 7800	moveq	#0,d4
000ec08c 1800	move.b	d0,d4
000ec08e 4eba004e	jsr	SaxDec_GetByte(pc)
000ec092 1600	move.b	d0,d3
000ec094 0243000f	andi.w	#$F,d3
000ec098 5443	addq.w	#2,d3
000ec09a 024000f0	andi.w	#$F0,d0
000ec09e e948	lsl.w	#4,d0
000ec0a0 d840	add.w	d0,d4
000ec0a2 06440012	addi.w	#$12,d4
000ec0a6 02440fff	andi.w	#$FFF,d4
000ec0aa 3005	move.w	d5,d0
000ec0ac 0240f000	andi.w	#$F000,d0
000ec0b0 d840	add.w	d0,d4
000ec0b2 ba44	cmp.w	d4,d5
000ec0b4 6416	bhs.s	SaxDec_IsDictionaryReference
000ec0b6 04441000	subi.w	#$1000,d4
000ec0ba 6410	bcc.s	SaxDec_IsDictionaryReference
000ec0bc da43	add.w	d3,d5
000ec0be 5245	addq.w	#1,d5
000ec0c4 51cbfffa	dbf	d3,-
000ec0c8 6000ff98	bra.w	SaxDec_Loop
000ec0cc da43	add.w	d3,d5
000ec0ce 5245	addq.w	#1,d5
000ec0d4 5244	addq.w	#1,d4
000ec0d6 51cbfff8	dbf	d3,-
000ec0da 6000ff86	bra.w	SaxDec_Loop
000ec0de 101e	move.b	(a6)+,d0
000ec0e0 5347	subq.w	#1,d7
000ec0e2 6602	bne.s	+
000ec0e4 584f	addq.w	#4,sp
000ec0e6 4e75	rts	
